diff --git a/bsp/bluetrum/ab32vg1-ab-prougen/board/board.c b/bsp/bluetrum/ab32vg1-ab-prougen/board/board.c index 734b2243779fa431ec17ae334434e9689b49baea..ec128bb1f02d1345cbbba9b718a21c26e3ed32e8 100644 --- a/bsp/bluetrum/ab32vg1-ab-prougen/board/board.c +++ b/bsp/bluetrum/ab32vg1-ab-prougen/board/board.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: @@ -65,16 +65,16 @@ void timer0_isr(int vector, void *param) void timer0_init(void) { - TMR0CON = BIT(7); //TIE - TMR0CNT = 0; + TMR0CON = BIT(7); //TIE + TMR0CNT = 0; - rt_hw_interrupt_install(IRQ_TMR0_VECTOR, timer0_isr, RT_NULL, "tick"); + rt_hw_interrupt_install(IRQ_TMR0_VECTOR, timer0_isr, RT_NULL, "tick"); } void timer0_cfg(uint32_t ticks) { - TMR0PR = (uint32_t)(ticks - 1UL); //1ms interrupt - TMR0CON |= BIT(0); // EN + TMR0PR = (uint32_t)(ticks - 1UL); //1ms interrupt + TMR0CON |= BIT(0); // EN } void hal_mdelay(uint32_t ms) @@ -127,3 +127,8 @@ void rt_hw_board_init(void) rt_components_board_init(); #endif } + +void rt_hw_us_delay(rt_uint32_t us) +{ + +} diff --git a/bsp/bluetrum/ab32vg1-ab-prougen/board/board.h b/bsp/bluetrum/ab32vg1-ab-prougen/board/board.h index a4ad7daed483c405a78b5fe0a7d979b558ad8449..37383063ba2590d978708f468a9292b079834831 100644 --- a/bsp/bluetrum/ab32vg1-ab-prougen/board/board.h +++ b/bsp/bluetrum/ab32vg1-ab-prougen/board/board.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: @@ -12,7 +12,13 @@ #define BOARD_H__ #include -#include "ab32vgx.h" -#include "drv_gpio.h" +#include +#ifdef RT_USING_PIN +#include +#endif +#ifdef RT_USING_WDT +#include +#endif + #endif diff --git a/bsp/bluetrum/ab32vg1-ab-prougen/board/ports/audio/drv_sound.c b/bsp/bluetrum/ab32vg1-ab-prougen/board/ports/audio/drv_sound.c index 10307cb3250e01ab011721d363f249276963dc23..10dbcf63fb1944bef507dd41588a21c59e29a12b 100644 --- a/bsp/bluetrum/ab32vg1-ab-prougen/board/ports/audio/drv_sound.c +++ b/bsp/bluetrum/ab32vg1-ab-prougen/board/ports/audio/drv_sound.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Date Author Notes @@ -139,7 +139,7 @@ void saia_volume_set(rt_uint8_t volume) { if (volume > 100) volume = 100; - + uint32_t dvol = volume * 327; // max is 0x7ffff LOG_D("dvol=0x%x", dvol); DACVOLCON = dvol | (0x02 << 16); // dac fade in @@ -155,7 +155,7 @@ static rt_err_t sound_getcaps(struct rt_audio_device *audio, struct rt_audio_cap rt_err_t result = RT_EOK; struct sound_device *snd_dev = RT_NULL; - RT_ASSERT(audio != RT_NULL); + RT_ASSERT(audio != RT_NULL); snd_dev = (struct sound_device *)audio->parent.user_data; switch (caps->main_type) @@ -231,7 +231,7 @@ static rt_err_t sound_getcaps(struct rt_audio_device *audio, struct rt_audio_cap break; } - return RT_EOK; + return RT_EOK; } static rt_err_t sound_configure(struct rt_audio_device *audio, struct rt_audio_caps *caps) @@ -320,14 +320,14 @@ static rt_err_t sound_configure(struct rt_audio_device *audio, struct rt_audio_c break; } - return RT_EOK; + return RT_EOK; } static rt_err_t sound_init(struct rt_audio_device *audio) { struct sound_device *snd_dev = RT_NULL; - RT_ASSERT(audio != RT_NULL); + RT_ASSERT(audio != RT_NULL); snd_dev = (struct sound_device *)audio->parent.user_data; adpll_init(0); @@ -337,14 +337,14 @@ static rt_err_t sound_init(struct rt_audio_device *audio) saia_frequency_set(snd_dev->replay_config.samplerate); saia_channels_set(snd_dev->replay_config.channels); - return RT_EOK; + return RT_EOK; } static rt_err_t sound_start(struct rt_audio_device *audio, int stream) { struct sound_device *snd_dev = RT_NULL; - RT_ASSERT(audio != RT_NULL); + RT_ASSERT(audio != RT_NULL); snd_dev = (struct sound_device *)audio->parent.user_data; if (stream == AUDIO_STREAM_REPLAY) @@ -369,8 +369,8 @@ static rt_err_t sound_stop(struct rt_audio_device *audio, int stream) { struct sound_device *snd_dev = RT_NULL; - RT_ASSERT(audio != RT_NULL); - snd_dev = (struct sound_device *)audio->parent.user_data; + RT_ASSERT(audio != RT_NULL); + snd_dev = (struct sound_device *)audio->parent.user_data; if (stream == AUDIO_STREAM_REPLAY) { @@ -387,7 +387,7 @@ rt_size_t sound_transmit(struct rt_audio_device *audio, const void *writeBuf, vo rt_size_t tmp_size = size / 4; rt_size_t count = 0; - RT_ASSERT(audio != RT_NULL); + RT_ASSERT(audio != RT_NULL); snd_dev = (struct sound_device *)audio->parent.user_data; while (tmp_size-- > 0) { @@ -395,14 +395,14 @@ rt_size_t sound_transmit(struct rt_audio_device *audio, const void *writeBuf, vo AUBUFDATA = ((const uint32_t *)writeBuf)[count++]; } - return size; + return size; } static void sound_buffer_info(struct rt_audio_device *audio, struct rt_audio_buf_info *info) { struct sound_device *snd_dev = RT_NULL; - RT_ASSERT(audio != RT_NULL); + RT_ASSERT(audio != RT_NULL); snd_dev = (struct sound_device *)audio->parent.user_data; /** @@ -425,7 +425,7 @@ static struct rt_audio_ops ops = .init = sound_init, .start = sound_start, .stop = sound_stop, - .transmit = sound_transmit, + .transmit = sound_transmit, .buffer_info = sound_buffer_info, }; @@ -443,11 +443,11 @@ void audio_isr(int vector, void *param) static int rt_hw_sound_init(void) { - rt_uint8_t *tx_fifo = RT_NULL; - rt_uint8_t *rx_fifo = RT_NULL; + rt_uint8_t *tx_fifo = RT_NULL; + rt_uint8_t *rx_fifo = RT_NULL; - /* 分配 DMA 搬运 buffer */ - tx_fifo = rt_calloc(1, TX_FIFO_SIZE); + /* 分配 DMA 搬运 buffer */ + tx_fifo = rt_calloc(1, TX_FIFO_SIZE); if(tx_fifo == RT_NULL) { return -RT_ENOMEM; @@ -455,8 +455,8 @@ static int rt_hw_sound_init(void) snd_dev.tx_fifo = tx_fifo; - /* 分配 DMA 搬运 buffer */ - rx_fifo = rt_calloc(1, TX_FIFO_SIZE); + /* 分配 DMA 搬运 buffer */ + rx_fifo = rt_calloc(1, TX_FIFO_SIZE); if(rx_fifo == RT_NULL) { return -RT_ENOMEM; diff --git a/bsp/bluetrum/libcpu/cpu/cpuport.c b/bsp/bluetrum/libcpu/cpu/cpuport.c index ec3f9cdbc9e4bfda451aa4dd43e72585a2fee2e1..a2d405ccddab980c8d32cd2cdbad503664d6d00d 100644 --- a/bsp/bluetrum/libcpu/cpu/cpuport.c +++ b/bsp/bluetrum/libcpu/cpu/cpuport.c @@ -41,9 +41,9 @@ rt_uint8_t *rt_hw_stack_init(void *tentry, stk--; *stk = (rt_uint32_t)0x10003; /* Start address */ stk--; - *stk = (rt_uint32_t)tentry; /* Start address */ + *stk = (rt_uint32_t)tentry; /* Start address */ stk -= 22; - *stk = (rt_uint32_t)parameter; /* Register a0 parameter*/ + *stk = (rt_uint32_t)parameter; /* Register a0 parameter*/ stk -= 6; *stk = (rt_uint32_t)tp; /* Register thread pointer */ stk --; diff --git a/bsp/bluetrum/libcpu/cpu/interrupt.c b/bsp/bluetrum/libcpu/cpu/interrupt.c index 3e7dbdb553efb7fa900cee01e83d36647e16d591..64fedde2f9f492f5ed4b7e35b98fbed644673d86 100644 --- a/bsp/bluetrum/libcpu/cpu/interrupt.c +++ b/bsp/bluetrum/libcpu/cpu/interrupt.c @@ -24,16 +24,16 @@ void set_cpu_irq_comm(void (*irq_hook)(void)) void cpu_irq_comm_do(void) { - void (*pfnct)(void); + void (*pfnct)(void); uint32_t irq_pend = PICPND & irq_mask; - for (int i = 0; i < IRQ_TOTAL_NUM; i++) { + for (int i = 0; i < IRQ_TOTAL_NUM; i++) { if (irq_pend & BIT(i)) { pfnct = tbl_irq_vector[i]; if (pfnct) { - pfnct(); /* call ISR */ + pfnct(); /* call ISR */ } } - } + } } void rt_hw_irq_enable(int vector) @@ -56,12 +56,12 @@ void rt_hw_interrupt_init(void) /** * @brief This function will install a interrupt service routine to a interrupt. - * - * @param vector - * @param handler - * @param param - * @param name - * @return rt_isr_handler_t + * + * @param vector + * @param handler + * @param param + * @param name + * @return rt_isr_handler_t */ rt_isr_handler_t rt_hw_interrupt_install(int vector, rt_isr_handler_t handler, diff --git a/bsp/bluetrum/libraries/hal_drivers/config/adc_config.h b/bsp/bluetrum/libraries/hal_drivers/config/adc_config.h index 9fc2df3a8a6118730ef08c984b9e63add8315e6b..22cd84da5bcfb4655933ab796dfece6000f09ee0 100644 --- a/bsp/bluetrum/libraries/hal_drivers/config/adc_config.h +++ b/bsp/bluetrum/libraries/hal_drivers/config/adc_config.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/config/tim_config.h b/bsp/bluetrum/libraries/hal_drivers/config/tim_config.h index c9f192a9de4a8d9e2f7a8dfb34c3343d2c020284..b1c29ae1e8005a0133a6c7342771c411edcb0528 100644 --- a/bsp/bluetrum/libraries/hal_drivers/config/tim_config.h +++ b/bsp/bluetrum/libraries/hal_drivers/config/tim_config.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_adc.c b/bsp/bluetrum/libraries/hal_drivers/drv_adc.c index 5f300ebe58c0fb14989edb5372b9bf0179c6bc82..d9c5bf768ddd5b5e651711170784c86d0a44d673 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_adc.c +++ b/bsp/bluetrum/libraries/hal_drivers/drv_adc.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: @@ -45,7 +45,7 @@ static rt_err_t ab32_adc_enabled(struct rt_adc_device *device, rt_uint32_t chann { RT_ASSERT(device != RT_NULL); - hal_adc_enable(enabled); + hal_adc_enable(enabled); return RT_EOK; } @@ -53,7 +53,7 @@ static rt_err_t ab32_adc_enabled(struct rt_adc_device *device, rt_uint32_t chann static rt_uint32_t ab32_adc_get_channel(rt_uint32_t channel) { rt_uint32_t ab32_channel = 0; - + switch (channel) { case 0: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_common.h b/bsp/bluetrum/libraries/hal_drivers/drv_common.h index 93c77a9d93cd659a36d6a05bf1b5a2d5f5d223b8..0696bb17f3b84170f34363a886e308666c2def51 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_common.h +++ b/bsp/bluetrum/libraries/hal_drivers/drv_common.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_gpio.c b/bsp/bluetrum/libraries/hal_drivers/drv_gpio.c index d8bc51d91e6edc78a4accc62c81c9c6ac60b8c70..4e0f96a794a1a64878bca4aed09882ef52632134 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_gpio.c +++ b/bsp/bluetrum/libraries/hal_drivers/drv_gpio.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_gpio.h b/bsp/bluetrum/libraries/hal_drivers/drv_gpio.h index 525702e75a1facdb87d83484a7e35a4f30216c38..7955a47d11f4cd2251dc5b99cbacb094699c9d43 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_gpio.h +++ b/bsp/bluetrum/libraries/hal_drivers/drv_gpio.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_hwtimer.c b/bsp/bluetrum/libraries/hal_drivers/drv_hwtimer.c index 0015afbc5d0563bb5b6603029158d976e46c0af5..aaa3ddbea21e101ae4e18dc3e6c395f7570a89b3 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_hwtimer.c +++ b/bsp/bluetrum/libraries/hal_drivers/drv_hwtimer.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_log.h b/bsp/bluetrum/libraries/hal_drivers/drv_log.h index 0491ee177e932c656b6eaaf3c6fd30b2c38f1a01..398014a52746b128cc8bf62659ed1eadfd8a4e12 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_log.h +++ b/bsp/bluetrum/libraries/hal_drivers/drv_log.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_sdio.c b/bsp/bluetrum/libraries/hal_drivers/drv_sdio.c index 5fe2bf8d1e17d23b3244f47dcfc72a39cab2dfe5..a9ca1a2b6de828f89e53458a009a14385c7ad320 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_sdio.c +++ b/bsp/bluetrum/libraries/hal_drivers/drv_sdio.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_sdio.h b/bsp/bluetrum/libraries/hal_drivers/drv_sdio.h index 0a8360db7d507e2023b12d6642076b553fe2ac94..09c1d04f521e60469e19daaad6511af0bc2f027d 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_sdio.h +++ b/bsp/bluetrum/libraries/hal_drivers/drv_sdio.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c b/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c index 94dfa6c5f1330e466a618defaf8ffbd1fc0a12fc..d2045b863f2376500366b68b76fd686b45317194 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c +++ b/bsp/bluetrum/libraries/hal_drivers/drv_soft_i2c.c @@ -235,8 +235,8 @@ int rt_hw_i2c_init(void) ab32_i2c_bus_unlock(&soft_i2c_config[i]); LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, + soft_i2c_config[i].bus_name, + soft_i2c_config[i].scl, soft_i2c_config[i].sda); } diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_usart.c b/bsp/bluetrum/libraries/hal_drivers/drv_usart.c index ee6c5791a34eaddefe659acf69f9cf2401bee284..8758058c85488c44d46096b906228a83e68b1b3d 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_usart.c +++ b/bsp/bluetrum/libraries/hal_drivers/drv_usart.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_usart.h b/bsp/bluetrum/libraries/hal_drivers/drv_usart.h index 8bcf9c3bcc8b970defa51131a00fc210f2245639..1c48cf77d2a68470d68aaca967ce344b7cfd6f30 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_usart.h +++ b/bsp/bluetrum/libraries/hal_drivers/drv_usart.h @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_wdt.c b/bsp/bluetrum/libraries/hal_drivers/drv_wdt.c index fc2bc0279bf6e372a12ea15447f4ace227098b0d..28299897d13ed7b9eb2462786085aa9d4edd8417 100644 --- a/bsp/bluetrum/libraries/hal_drivers/drv_wdt.c +++ b/bsp/bluetrum/libraries/hal_drivers/drv_wdt.c @@ -1,6 +1,6 @@ /* * Copyright (c) 2020-2021, Bluetrum Development Team - * + * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: @@ -12,6 +12,8 @@ #ifdef RT_USING_WDT +#include + // #define DRV_DEBUG #define LOG_TAG "drv.wdt" #include @@ -49,35 +51,35 @@ static rt_err_t wdt_control(rt_watchdog_t *wdt, int cmd, void *arg) switch (*((rt_uint32_t *)arg)) { - case 0: + case AB32_WDT_TIMEOUT_1MS: LOG_I("The watchdog timeout is set to 1ms"); tmp |= (0xa << 24) | (0x00 << 20); break; - case 1: + case AB32_WDT_TIMEOUT_256MS: LOG_I("The watchdog timeout is set to 256ms"); tmp |= (0xa << 24) | (0x01 << 20); break; - case 2: + case AB32_WDT_TIMEOUT_512MS: LOG_I("The watchdog timeout is set to 512ms"); tmp |= (0xa << 24) | (0x02 << 20); break; - case 3: + case AB32_WDT_TIMEOUT_1024MS: LOG_I("The watchdog timeout is set to 1024ms"); tmp |= (0xa << 24) | (0x03 << 20); break; - case 4: + case AB32_WDT_TIMEOUT_2048MS: LOG_I("The watchdog timeout is set to 2048ms"); tmp |= (0xa << 24) | (0x04 << 20); break; - case 5: + case AB32_WDT_TIMEOUT_4096MS: LOG_I("The watchdog timeout is set to 4096ms"); tmp |= (0xa << 24) | (0x05 << 20); break; - case 6: + case AB32_WDT_TIMEOUT_8192MS: LOG_I("The watchdog timeout is set to 8192ms"); tmp |= (0xa << 24) | (0x06 << 20); break; - case 7: + case AB32_WDT_TIMEOUT_16384MS: LOG_I("The watchdog timeout is set to 16384ms"); tmp |= (0xa << 24) | (0x07 << 20); break; @@ -92,28 +94,28 @@ static rt_err_t wdt_control(rt_watchdog_t *wdt, int cmd, void *arg) case RT_DEVICE_CTRL_WDT_GET_TIMEOUT: switch ((WDTCON >> 20) & 0x7) { - case 0: + case AB32_WDT_TIMEOUT_1MS: LOG_D("The watchdog timeout is set to 1ms"); break; - case 1: + case AB32_WDT_TIMEOUT_256MS: LOG_D("The watchdog timeout is set to 256ms"); break; - case 2: + case AB32_WDT_TIMEOUT_512MS: LOG_D("The watchdog timeout is set to 512ms"); break; - case 3: + case AB32_WDT_TIMEOUT_1024MS: LOG_D("The watchdog timeout is set to 1024ms"); break; - case 4: + case AB32_WDT_TIMEOUT_2048MS: LOG_D("The watchdog timeout is set to 2048ms"); break; - case 5: + case AB32_WDT_TIMEOUT_4096MS: LOG_D("The watchdog timeout is set to 4096ms"); break; - case 6: + case AB32_WDT_TIMEOUT_8192MS: LOG_D("The watchdog timeout is set to 8192ms"); break; - case 7: + case AB32_WDT_TIMEOUT_16384MS: LOG_D("The watchdog timeout is set to 16384ms"); break; default: diff --git a/bsp/bluetrum/libraries/hal_drivers/drv_wdt.h b/bsp/bluetrum/libraries/hal_drivers/drv_wdt.h new file mode 100644 index 0000000000000000000000000000000000000000..5f8d61aaff7be626052fbe489e486e96cb5b3c5c --- /dev/null +++ b/bsp/bluetrum/libraries/hal_drivers/drv_wdt.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2020-2021, Bluetrum Development Team + * + * SPDX-License-Identifier: Apache-2.0 + * + * Change Logs: + * Date Author Notes + * 2021-03-11 Meco Man first version + */ + +#ifndef DRV_WDT_H__ +#define DRV_WDT_H__ + +#define AB32_WDT_TIMEOUT_1MS 0 +#define AB32_WDT_TIMEOUT_256MS 1 +#define AB32_WDT_TIMEOUT_512MS 2 +#define AB32_WDT_TIMEOUT_1024MS 3 +#define AB32_WDT_TIMEOUT_2048MS 4 +#define AB32_WDT_TIMEOUT_4096MS 5 +#define AB32_WDT_TIMEOUT_8192MS 6 +#define AB32_WDT_TIMEOUT_16384MS 7 + +#endif diff --git a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_adc.h b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_adc.h index 038355864695e38682be929d414eeea4d7f8ad7e..b1b68b844bfed116f5cc3deeeea5664803880bec 100644 --- a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_adc.h +++ b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_adc.h @@ -31,28 +31,28 @@ #define ADC_CHANNEL_15 (1u << 15) /** * @} - * + * */ /** * @brief Enable ADC - * - * @param enable + * + * @param enable */ void hal_adc_enable(uint8_t enable); /** * @brief Starts conversion of the channels - * + * * @param channel @ref ADC_channels */ void hal_adc_start(uint32_t channel); /** * @brief Poll for conversion complete - * + * * @param timeout Timeout value in millisecond - * @return hal_error_t + * @return hal_error_t */ hal_error_t hal_adc_poll_for_conversion(uint32_t timeout); diff --git a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_gpio.h b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_gpio.h index ea039cbbd28afc5d253062760dc0943a0eb41d59..0202566e70c0aeb044e6fe5d603760aea9c9660c 100644 --- a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_gpio.h +++ b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_gpio.h @@ -13,7 +13,7 @@ struct gpio_init { uint8_t pin; uint8_t dir; - uint8_t de; + uint8_t de; uint8_t pull; uint32_t alternate; uint32_t af_con; /*!< Alternate function control diff --git a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_gpio_ex.h b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_gpio_ex.h index f2a94d65ac7cbfbd16caf5d7cb3da83f3f5cf5fb..9f41619be801c97158a9d81aa9b20a308355df51 100644 --- a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_gpio_ex.h +++ b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_gpio_ex.h @@ -28,7 +28,7 @@ * G5: tx:PA1 rx:PA0 * G6: tx:PE0 rx:PE1 * G7: tx:PF2 rx:map to tx - * + * * UART1: * G1: tx:PA7 rx:PA6 * G2: tx:PA4 rx:PA3 @@ -52,17 +52,17 @@ * G1: PE7 * G2: PF2 * G3: PA3 - * + * * LPWM2: * G1: PE6 * G2: PE0 * G3: PA2 - * + * * LPWM1: * G1: PE5 * G2: PB4 * G3: PA1 - * + * * LPWM0: * G1: PE4 * G2: PB3 @@ -76,10 +76,10 @@ /** * TMR5: * G1: PE1 PE2 PE3 - * + * * TMR4: * G1: PA5 PA6 PA7 - * + * * TMR3: * G1: PB0 PB1 PB2 */ diff --git a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_uart.h b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_uart.h index 6802bfc61fa1deca95b99e97841e67f54c46e5bd..c2eed3c51e1fc55f0d2880106fc97c8b877d0b76 100644 --- a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_uart.h +++ b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/include/ab32vg1_hal_uart.h @@ -39,7 +39,7 @@ struct uart_init /** * @brief UART handle struction definition - * + * */ struct uart_handle { @@ -76,8 +76,8 @@ struct uart_handle /** @defgroup UART_Mode UART Transfer Mode * @{ */ -#define UART_MODE_TX (0x00u) /*!< TX mode */ -#define UART_MODE_TX_RX (0x01u) /*!< RX and TX mode */ +#define UART_MODE_TX (0x00u) /*!< TX mode */ +#define UART_MODE_TX_RX (0x01u) /*!< RX and TX mode */ /** * @} diff --git a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_gpio.c b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_gpio.c index 3e06595986684b30a4f8257fa09aa9621722d6d0..0a3fe3184410fb8d0384d151ba4c481f88276866 100644 --- a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_gpio.c +++ b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_gpio.c @@ -105,7 +105,7 @@ void hal_gpio_init(hal_sfr_t gpiox, gpio_init_t gpio_init) /** * @brief Read the specified input port pin. - * + * * @param port GPIO port(GPIOAN, GPIOBN, GPIOEN, GPIOFN). * @param pin This parameter can be GPIO_PIN_x where x can be (0.15). * @return uint8_t The input port pin value. @@ -117,7 +117,7 @@ uint8_t hal_gpio_read(hal_sfr_t gpiox, uint8_t pin) /** * @brief Set or clear the selected data port bit. - * + * * @param port GPIO port(GPIOAN, GPIOBN, GPIOEN, GPIOFN). * @param pin This parameter can be GPIO_PIN_x where x can be (0.15). * @param state specifies the value to be written to the selected bit. @@ -135,7 +135,7 @@ void hal_gpio_write(hal_sfr_t gpiox, uint8_t pin, uint8_t state) /** * @brief Toggle the specified GPIO pin. - * + * * @param port GPIO port(GPIOAN, GPIOBN, GPIOEN, GPIOFN). * @param pin This parameter can be GPIO_PIN_x where x can be (0.15). */ diff --git a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_sd.c b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_sd.c index 6ed02005df025682c7ef60ea4290682e077f63ab..e0d3a549502b45eb9c73fb2a353bdd9ae1dba82e 100644 --- a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_sd.c +++ b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_sd.c @@ -232,7 +232,7 @@ static bool sd_go_ready_try(sd_handle_t hsd) case CARD_V1: sdmmc_acmd_op_cond(hsd, 0x00ff8000); break; - + case CARD_V2: sdmmc_acmd_op_cond(hsd, 0x40ff8000); break; @@ -389,8 +389,8 @@ bool hal_sd_read(sd_handle_t hsd, void *buf, uint32_t lba) return true; } } - hsd->sdcard.state = HAL_SD_STATE_INVAL; - + hsd->sdcard.state = HAL_SD_STATE_INVAL; + hal_mdelay(20); } diff --git a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_uart.c b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_uart.c index bef740f89f40fec3a9be42ee1722e713472a87d0..3d3ecc3fe029c11c714cd4d553aea52df19bad34 100644 --- a/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_uart.c +++ b/bsp/bluetrum/libraries/hal_libraries/ab32vg1_hal/source/ab32vg1_hal_uart.c @@ -18,7 +18,7 @@ enum /** * @brief Set the UART baud rate. - * + * * @param uartx This parameter can be UARTxN where x can be (0.2). * @param baud Baud rate. */ @@ -33,9 +33,9 @@ void hal_uart_setbaud(hal_sfr_t uartx, uint32_t baud) /** * @brief Initialize the UART mode. - * + * * @param huart UART handle. - * @return hal_error_t + * @return hal_error_t */ hal_error_t hal_uart_init(struct uart_handle *huart) { @@ -51,7 +51,7 @@ hal_error_t hal_uart_init(struct uart_handle *huart) /** * @brief DeInitialize the UART peripheral. - * + * * @param uartx This parameter can be UARTxN where x can be (0.2). */ void hal_uart_deinit(hal_sfr_t uartx) @@ -61,7 +61,7 @@ void hal_uart_deinit(hal_sfr_t uartx) /** * @brief Initialize the UART MSP. - * + * * @param huart UART handle. */ WEAK void HAL_UART_MspInit(struct uart_handle *huart) @@ -69,9 +69,9 @@ WEAK void HAL_UART_MspInit(struct uart_handle *huart) /** * @brief Control the UART peripheral. - * + * * @param uartx This parameter can be UARTxN where x can be (0.2). - * @param cntl + * @param cntl * @arg UART_MODULE_ENABLE * @arg UART_BIT9_ENABLE * @arg UART_RXIT_ENABLE @@ -80,7 +80,7 @@ WEAK void HAL_UART_MspInit(struct uart_handle *huart) * @arg UART_CLK_SRC1 * @arg UART_1LINE_ENABLE * @arg UART_RX_ENABLE - * @param param + * @param param * @arg HAL_DISABLE * @arg HAL_ENABLE */ @@ -95,7 +95,7 @@ void hal_uart_control(hal_sfr_t uartx, uint32_t cntl, uint32_t param) /** * @brief Send a character - * + * * @param uartx This parameter can be UARTxN where x can be (0.2). * @param data The characters that need to be sent */ @@ -106,7 +106,7 @@ void hal_uart_write(hal_sfr_t uartx, uint8_t data) /** * @brief Receive a character. - * + * * @param uartx This parameter can be UARTxN where x can be (0.2). * @return uint8_t Received character. */ @@ -117,12 +117,12 @@ uint8_t hal_uart_read(hal_sfr_t uartx) /** * @brief Get the UART flag. - * + * * @param uartx This parameter can be UARTxN where x can be (0.2). - * @param flag + * @param flag * @arg UART_FLAG_RXPND * @arg UART_FLAG_TXPND - * @return uint32_t + * @return uint32_t */ uint32_t hal_uart_getflag(hal_sfr_t uartx, uint32_t flag) { @@ -132,9 +132,9 @@ uint32_t hal_uart_getflag(hal_sfr_t uartx, uint32_t flag) /** * @brief Clear the UART flag. - * + * * @param uartx This parameter can be UARTxN where x can be (0.2). - * @param flag + * @param flag * @arg UART_FLAG_RXPND * @arg UART_FLAG_TXPND */ @@ -145,7 +145,7 @@ void hal_uart_clrflag(hal_sfr_t uartx, uint32_t flag) /** * @brief Configure the UART peripheral. - * + * * @param huart UART handle. */ void uart_config_all(struct uart_handle *huart) diff --git a/bsp/bluetrum/libraries/hal_libraries/bmsis/include/ab32vg1.h b/bsp/bluetrum/libraries/hal_libraries/bmsis/include/ab32vg1.h index 9830369288a8a42d94fd7b042ebd2d96bc54d105..c436572b3497ddf37e2fc7c0b707629d307d5952 100644 --- a/bsp/bluetrum/libraries/hal_libraries/bmsis/include/ab32vg1.h +++ b/bsp/bluetrum/libraries/hal_libraries/bmsis/include/ab32vg1.h @@ -17,18 +17,18 @@ typedef enum IRQ_SW_VECTOR = 2, IRQ_TMR0_VECTOR = 3, IRQ_TMR1_VECTOR = 4, - IRQ_TMR2_4_5_VECTOR = 5, /*!< Timer 2, 4 and 5 Interrupt */ - IRQ_IRRX_VECTOR = 6, /*!< Timer 3 and IR receiver Interrupt */ + IRQ_TMR2_4_5_VECTOR = 5, /*!< Timer 2, 4 and 5 Interrupt */ + IRQ_IRRX_VECTOR = 6, /*!< Timer 3 and IR receiver Interrupt */ IRQ_USB_VECTOR = 7, IRQ_SD_VECTOR = 8, - IRQ_AUBUF0_1_VECTOR = 9, /*!< Audio buffer 0 and 1 Interrupt */ + IRQ_AUBUF0_1_VECTOR = 9, /*!< Audio buffer 0 and 1 Interrupt */ IRQ_SDADC_VECTOR = 10, IRQ_AUDEC_VECTOR = 11, /*!< Audio codec, SBC encode and AEC FFT Interrupt */ - IRQ_SRC_VECTOR = 12, /*!< SRC, PLC and CVSD Interrupt */ - IRQ_FM_SPDIF_VECTOR = 13, /*!< FM TX, RX and SPDIF RX Interrupt */ - IRQ_UART0_2_VECTOR = 14, /*!< UART 0 to 2 Interrupt */ + IRQ_SRC_VECTOR = 12, /*!< SRC, PLC and CVSD Interrupt */ + IRQ_FM_SPDIF_VECTOR = 13, /*!< FM TX, RX and SPDIF RX Interrupt */ + IRQ_UART0_2_VECTOR = 14, /*!< UART 0 to 2 Interrupt */ IRQ_HSUART_VECTOR = 15, - IRQ_RTC_VECTOR = 16, /*!< RTC, LVD and WDT Interrupt */ + IRQ_RTC_VECTOR = 16, /*!< RTC, LVD and WDT Interrupt */ IRQ_I2S_VECTOR = 17, IRQ_TOTAL_NUM = 23, } irq_type; diff --git a/bsp/gd32103c-eval/drivers/drv_gpio.h b/bsp/gd32103c-eval/drivers/drv_gpio.h index 1240cc4cb263e23ad67047df1b6f7db1415ce141..34d30d63d44e1eb4522d6639902fcf85d642beed 100644 --- a/bsp/gd32103c-eval/drivers/drv_gpio.h +++ b/bsp/gd32103c-eval/drivers/drv_gpio.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2020, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32303e-eval/drivers/board.c b/bsp/gd32303e-eval/drivers/board.c index 9ca024ec48ed61a78ec0f275d5fb3bd6968e38e5..d4091d32dc7c7075639d05edc5c99ceff5507f38 100644 --- a/bsp/gd32303e-eval/drivers/board.c +++ b/bsp/gd32303e-eval/drivers/board.c @@ -79,7 +79,7 @@ void rt_hw_board_init() rt_console_set_device(RT_CONSOLE_DEVICE_NAME); #endif -#ifdef RT_USING_HEAP +#ifdef RT_USING_HEAP rt_system_heap_init((void*)HEAP_BEGIN, (void*)HEAP_END); #endif } diff --git a/bsp/gd32303e-eval/drivers/board.h b/bsp/gd32303e-eval/drivers/board.h index 5e1f15cd5de7af10a54141e9f43c64563d18201f..4e97fce72714b03cdb9c766b275c5109aa10daec 100644 --- a/bsp/gd32303e-eval/drivers/board.h +++ b/bsp/gd32303e-eval/drivers/board.h @@ -19,7 +19,7 @@ #include // Internal SRAM memory size[Kbytes] <8-64> -// Default: 64 +// Default: 64 #ifdef __ICCARM__ // Use *.icf ram symbal, to avoid hardcode. extern char __ICFEDIT_region_RAM_end__; diff --git a/bsp/gd32303e-eval/drivers/drv_gpio.c b/bsp/gd32303e-eval/drivers/drv_gpio.c index b7285513d37c64397d0e32fe6cfc425272032484..700a11d3dfff729de78fb60bc7578215c1e97b9b 100644 --- a/bsp/gd32303e-eval/drivers/drv_gpio.c +++ b/bsp/gd32303e-eval/drivers/drv_gpio.c @@ -261,7 +261,7 @@ void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode) /* GPIO Periph clock enable */ rcu_periph_clock_enable(index->clk); pin_mode = GPIO_MODE_OUT_PP; - + switch(mode) { case PIN_MODE_OUTPUT: @@ -442,7 +442,7 @@ rt_err_t gd32_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_ return RT_EINVAL; } irqmap = &pin_irq_map[hdr_index]; - + switch (pin_irq_hdr_tab[hdr_index].mode) { case PIN_IRQ_MODE_RISING: @@ -463,14 +463,14 @@ rt_err_t gd32_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_ /* enable and set interrupt priority */ nvic_irq_enable(irqmap->irqno, 5U, 0U); - + /* connect EXTI line to GPIO pin */ gpio_exti_source_select(index->port_src, index->pin_src); /* configure EXTI line */ exti_init((exti_line_enum)(index->pin), EXTI_INTERRUPT, trigger_mode); exti_interrupt_flag_clear((exti_line_enum)(index->pin)); - + rt_hw_interrupt_enable(level); } else if (enabled == PIN_IRQ_DISABLE) @@ -505,7 +505,7 @@ int rt_hw_pin_init(void) int result; result = rt_device_pin_register("pin", &_gd32_pin_ops, RT_NULL); - + return result; } INIT_BOARD_EXPORT(rt_hw_pin_init); @@ -524,7 +524,7 @@ void GD32_GPIO_EXTI_IRQHandler(rt_int8_t exti_line) { pin_irq_hdr(exti_line); exti_interrupt_flag_clear((exti_line_enum)(1 << exti_line)); - } + } } void EXTI0_IRQHandler(void) { diff --git a/bsp/gd32303e-eval/drivers/drv_i2c.c b/bsp/gd32303e-eval/drivers/drv_i2c.c index 059b211c0176a916ad69c091fc9effee10e0439f..0cca20e1d011ed0154dd4737290f69449cbc5979 100644 --- a/bsp/gd32303e-eval/drivers/drv_i2c.c +++ b/bsp/gd32303e-eval/drivers/drv_i2c.c @@ -168,7 +168,7 @@ static int gd32_i2c_read(rt_uint32_t i2c_periph, rt_uint16_t slave_address, rt_u *p_buffer = i2c_data_receive(i2c_periph); /* point to the next location where the byte read will be saved */ - p_buffer++; + p_buffer++; /* decrement the read bytes counter */ data_byte--; @@ -277,7 +277,7 @@ static rt_size_t gd32_i2c_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg } } } - + ret = i; out: @@ -287,7 +287,7 @@ out: } static const struct rt_i2c_bus_device_ops i2c_ops = -{ +{ gd32_i2c_xfer, RT_NULL, RT_NULL @@ -324,7 +324,7 @@ int rt_hw_i2c_init(void) i2c_device.priv = (void *)&_i2c_bit_ops; rt_i2c_bit_add_bus(&i2c_device, I2C_BUS_NAME); - } + } #else /* register hardware I2C */ diff --git a/bsp/gd32303e-eval/drivers/drv_spi.c b/bsp/gd32303e-eval/drivers/drv_spi.c index e5df557ae82ea091fbbc93a3a98cebd56c4bb6f5..78ff99d4233a1ca23fcb98eb85d3cc274b01324c 100644 --- a/bsp/gd32303e-eval/drivers/drv_spi.c +++ b/bsp/gd32303e-eval/drivers/drv_spi.c @@ -119,7 +119,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat spi_init_struct.prescale = SPI_PSC_256; } } /* baudrate */ - + switch(configuration->mode & RT_SPI_MODE_3) { case RT_SPI_MODE_0: @@ -135,7 +135,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE; break; } - + /* MSB or LSB */ if(configuration->mode & RT_SPI_MSB) { @@ -145,7 +145,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat { spi_init_struct.endian = SPI_ENDIAN_LSB; } - + spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX; spi_init_struct.device_mode = SPI_MASTER; spi_init_struct.nss = SPI_NSS_SOFT; @@ -181,7 +181,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes const rt_uint8_t * send_ptr = message->send_buf; rt_uint8_t * recv_ptr = message->recv_buf; rt_uint32_t size = message->length; - + DEBUG_PRINTF("spi poll transfer start: %d\n", size); while(size--) @@ -192,7 +192,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes { data = *send_ptr++; } - + // Todo: replace register read/write by gd32f3 lib //Wait until the transmit buffer is empty while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_TBE)); @@ -267,8 +267,8 @@ int gd32_hw_spi_init(void) rcu_periph_clock_enable(RCU_SPI0); /* SPI0_SCK(PA5), SPI0_MISO(PA6) and SPI0_MOSI(PA7) GPIO pin configuration */ gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_5 | GPIO_PIN_7); - gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6); - + gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_6); + #endif #ifdef RT_USING_SPI1 static struct rt_spi_bus spi_bus1; @@ -287,7 +287,7 @@ int gd32_hw_spi_init(void) static struct rt_spi_bus spi_bus2; spi_bus2.parent.user_data = (void *)SPI2; - result = rt_spi_bus_register(&spi_bus2, "spi2", &gd32_spi_ops); + result = rt_spi_bus_register(&spi_bus2, "spi2", &gd32_spi_ops); rcu_periph_clock_enable(RCU_SPI2); rcu_periph_clock_enable(RCU_GPIOB); diff --git a/bsp/gd32303e-eval/drivers/drv_spi_flash.c b/bsp/gd32303e-eval/drivers/drv_spi_flash.c index 54e6be30efa54f469e33e9c81e0fdc815d8456d7..d4a3dafc1b0765fe01c00428cb51e37852e8d0a9 100644 --- a/bsp/gd32303e-eval/drivers/drv_spi_flash.c +++ b/bsp/gd32303e-eval/drivers/drv_spi_flash.c @@ -30,7 +30,7 @@ static int rt_hw_gd25q40_init(void) static rt_base_t gd25q_cs_pin; /* SPI设备CS片选引脚 */ gd25q_cs_pin = GD25Q_SPI_CS_PIN; - + rt_pin_mode(GD25Q_SPI_CS_PIN, GPIO_MODE_OUT_PP); res = rt_spi_bus_attach_device(&spi_dev_gd25q, SPI_DEVICE_NAME, SPI_BUS_NAME, (void*)gd25q_cs_pin); diff --git a/bsp/gd32303e-eval/drivers/drv_usart.c b/bsp/gd32303e-eval/drivers/drv_usart.c index 436f86fcb6d371f0abc67f748c9f959d8d9d4e57..33430a5a31013521aaac1c9343010cd632b9d55b 100644 --- a/bsp/gd32303e-eval/drivers/drv_usart.c +++ b/bsp/gd32303e-eval/drivers/drv_usart.c @@ -44,7 +44,7 @@ struct gd32_uart uint32_t tx_port; uint16_t tx_pin; uint32_t rx_port; - uint16_t rx_pin; + uint16_t rx_pin; struct rt_serial_device * serial; char *device_name; @@ -143,7 +143,7 @@ static const struct gd32_uart uarts[] = { "uart0", }, #endif - + #ifdef RT_USING_USART1 { USART1, // uart peripheral index @@ -155,7 +155,7 @@ static const struct gd32_uart uarts[] = { "uart1", }, #endif - + #ifdef RT_USING_USART2 { USART2, // uart peripheral index @@ -167,7 +167,7 @@ static const struct gd32_uart uarts[] = { "uart2", }, #endif - + #ifdef RT_USING_UART3 { UART3, // uart peripheral index @@ -179,7 +179,7 @@ static const struct gd32_uart uarts[] = { "uart3", }, #endif - + #ifdef RT_USING_UART4 { UART4, // uart peripheral index @@ -228,9 +228,9 @@ static rt_err_t gd32_configure(struct rt_serial_device *serial, struct serial_co RT_ASSERT(cfg != RT_NULL); uart = (struct gd32_uart *)serial->parent.user_data; - + gd32_uart_gpio_init(uart); - + usart_baudrate_set(uart->uart_periph, cfg->baud_rate); switch (cfg->data_bits) @@ -310,7 +310,7 @@ static int gd32_putc(struct rt_serial_device *serial, char ch) usart_data_transmit(uart->uart_periph, ch); while((usart_flag_get(uart->uart_periph, USART_FLAG_TC) == RESET)); - + return 1; } diff --git a/bsp/gd32303e-eval/drivers/gd32f303e_eval.c b/bsp/gd32303e-eval/drivers/gd32f303e_eval.c index 0829f0bf00209697af83352c60984063d4125c92..c8982455a2efc60fece057da37b6b3af1c4fdfbe 100644 --- a/bsp/gd32303e-eval/drivers/gd32f303e_eval.c +++ b/bsp/gd32303e-eval/drivers/gd32f303e_eval.c @@ -23,15 +23,15 @@ static uint32_t COM_RX_PIN[COMn] = {EVAL_COM1_RX_PIN, EVAL_COM2_RX_PIN}; static uint32_t COM_GPIO_PORT[COMn] = {EVAL_COM1_GPIO_PORT, EVAL_COM2_GPIO_PORT}; static rcu_periph_enum COM_GPIO_CLK[COMn] = {EVAL_COM1_GPIO_CLK, EVAL_COM2_GPIO_CLK}; -static rcu_periph_enum GPIO_CLK[LEDn] = {LED2_GPIO_CLK, LED3_GPIO_CLK, +static rcu_periph_enum GPIO_CLK[LEDn] = {LED2_GPIO_CLK, LED3_GPIO_CLK, LED4_GPIO_CLK, LED5_GPIO_CLK}; -static uint32_t KEY_PORT[KEYn] = {WAKEUP_KEY_GPIO_PORT, +static uint32_t KEY_PORT[KEYn] = {WAKEUP_KEY_GPIO_PORT, TAMPER_KEY_GPIO_PORT, USER_KEY1_GPIO_PORT, USER_KEY2_GPIO_PORT}; static uint32_t KEY_PIN[KEYn] = {WAKEUP_KEY_PIN, TAMPER_KEY_PIN,USER_KEY1_PIN,USER_KEY2_PIN}; -static rcu_periph_enum KEY_CLK[KEYn] = {WAKEUP_KEY_GPIO_CLK, +static rcu_periph_enum KEY_CLK[KEYn] = {WAKEUP_KEY_GPIO_CLK, TAMPER_KEY_GPIO_CLK, USER_KEY1_GPIO_CLK, USER_KEY2_GPIO_CLK}; @@ -47,7 +47,7 @@ static uint8_t KEY_PIN_SOURCE[KEYn] = {WAKEUP_KEY_EXTI_PIN_SOURCE, TAMPER_KEY_EXTI_PIN_SOURCE, USER_KEY1_EXTI_PIN_SOURCE, USER_KEY2_EXTI_PIN_SOURCE}; -static uint8_t KEY_IRQn[KEYn] = {WAKEUP_KEY_EXTI_IRQn, +static uint8_t KEY_IRQn[KEYn] = {WAKEUP_KEY_EXTI_IRQn, TAMPER_KEY_EXTI_IRQn, USER_KEY1_EXTI_IRQn, USER_KEY2_EXTI_IRQn}; @@ -66,7 +66,7 @@ void gd_eval_led_init (led_typedef_enum lednum) { /* enable the led clock */ rcu_periph_clock_enable(GPIO_CLK[lednum]); - /* configure led GPIO port */ + /* configure led GPIO port */ gpio_init(GPIO_PORT[lednum], GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ,GPIO_PIN[lednum]); GPIO_BC(GPIO_PORT[lednum]) = GPIO_PIN[lednum]; @@ -114,7 +114,7 @@ void gd_eval_led_off(led_typedef_enum lednum) */ void gd_eval_led_toggle(led_typedef_enum lednum) { - gpio_bit_write(GPIO_PORT[lednum], GPIO_PIN[lednum], + gpio_bit_write(GPIO_PORT[lednum], GPIO_PIN[lednum], (bit_status)(1-gpio_input_bit_get(GPIO_PORT[lednum], GPIO_PIN[lednum]))); } @@ -184,7 +184,7 @@ void gd_eval_com_init(uint32_t com) }else if(EVAL_COM2 == com){ com_id = 1U; } - + /* enable GPIO clock */ rcu_periph_clock_enable(COM_GPIO_CLK[com_id]); diff --git a/bsp/gd32303e-eval/drivers/gd32f303e_eval.h b/bsp/gd32303e-eval/drivers/gd32f303e_eval.h index e841fb00f4895826c88c0c669b109f2c74885c7d..932102cbd7ff7533b084271e4a574e03d69b20d4 100644 --- a/bsp/gd32303e-eval/drivers/gd32f303e_eval.h +++ b/bsp/gd32303e-eval/drivers/gd32f303e_eval.h @@ -17,9 +17,9 @@ #endif #include "gd32f30x.h" - + /* exported types */ -typedef enum +typedef enum { LED2 = 0, LED3 = 1, @@ -27,7 +27,7 @@ typedef enum LED5 = 3 } led_typedef_enum; -typedef enum +typedef enum { KEY_WAKEUP = 0, KEY_TAMPER = 1, @@ -35,7 +35,7 @@ typedef enum KEY_USER2 = 3 } key_typedef_enum; -typedef enum +typedef enum { KEY_MODE_GPIO = 0, KEY_MODE_EXTI = 1 @@ -47,15 +47,15 @@ typedef enum #define LED2_PIN GPIO_PIN_0 #define LED2_GPIO_PORT GPIOF #define LED2_GPIO_CLK RCU_GPIOF - + #define LED3_PIN GPIO_PIN_1 #define LED3_GPIO_PORT GPIOF #define LED3_GPIO_CLK RCU_GPIOF - + #define LED4_PIN GPIO_PIN_2 #define LED4_GPIO_PORT GPIOF #define LED4_GPIO_CLK RCU_GPIOF - + #define LED5_PIN GPIO_PIN_3 #define LED5_GPIO_PORT GPIOF #define LED5_GPIO_CLK RCU_GPIOF @@ -85,7 +85,7 @@ typedef enum #define WAKEUP_KEY_EXTI_LINE EXTI_0 #define WAKEUP_KEY_EXTI_PORT_SOURCE GPIO_PORT_SOURCE_GPIOA #define WAKEUP_KEY_EXTI_PIN_SOURCE GPIO_PIN_SOURCE_0 -#define WAKEUP_KEY_EXTI_IRQn EXTI0_IRQn +#define WAKEUP_KEY_EXTI_IRQn EXTI0_IRQn /* tamper push-button */ #define TAMPER_KEY_PIN GPIO_PIN_13 diff --git a/bsp/gd32303e-eval/drivers/gd32f303e_lcd_eval.c b/bsp/gd32303e-eval/drivers/gd32f303e_lcd_eval.c index 228feafdf8ba1ca16fbd2125d6be54110cb6bd4c..3ca126e87e2a55b66bd696169d94232f7d8eeb17 100644 --- a/bsp/gd32303e-eval/drivers/gd32f303e_lcd_eval.c +++ b/bsp/gd32303e-eval/drivers/gd32f303e_lcd_eval.c @@ -15,7 +15,7 @@ /*! \brief lcd peripheral initialize - \param[in] none + \param[in] none \param[out] none \retval none */ @@ -37,15 +37,15 @@ void exmc_lcd_init(void) gpio_init(GPIOD, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1| GPIO_PIN_8 | GPIO_PIN_9 | GPIO_PIN_10 | GPIO_PIN_14 | GPIO_PIN_15); - /* PE7(EXMC_D4), PE8(EXMC_D5), PE9(EXMC_D6), PE10(EXMC_D7), PE11(EXMC_D8), PE12(EXMC_D9), + /* PE7(EXMC_D4), PE8(EXMC_D5), PE9(EXMC_D6), PE10(EXMC_D7), PE11(EXMC_D8), PE12(EXMC_D9), PE13(EXMC_D10), PE14(EXMC_D11), PE15(EXMC_D12) */ - gpio_init(GPIOE, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | - GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | + gpio_init(GPIOE, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_7 | GPIO_PIN_8 | GPIO_PIN_9 | + GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); - /* configure PE2(EXMC_A23) */ + /* configure PE2(EXMC_A23) */ gpio_init(GPIOE, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_2); - + /* configure NOE and NWE */ gpio_init(GPIOD, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_4 | GPIO_PIN_5); @@ -106,7 +106,7 @@ uint16_t lcd_register_read(uint8_t register_id) { uint16_t data; *(__IO uint16_t *) (BANK0_LCD_C)= register_id; - data = *(__IO uint16_t *) (BANK0_LCD_D); + data = *(__IO uint16_t *) (BANK0_LCD_D); return data; } @@ -154,13 +154,13 @@ void lcd_gram_write(uint16_t rgb_code) uint16_t lcd_gram_read(void) { uint16_t data; - + /* write GRAM register (R22h) */ *(__IO uint16_t *) (BANK0_LCD_C) = 0x0022; /* dummy read (invalid data) */ - *(__IO uint16_t *) (BANK0_LCD_D); + *(__IO uint16_t *) (BANK0_LCD_D); - data = *(__IO uint16_t *) (BANK0_LCD_D); + data = *(__IO uint16_t *) (BANK0_LCD_D); return data; } @@ -219,7 +219,7 @@ void lcd_init(void) }else{ return; } - + for(i=50000;i>0;i--); } @@ -277,16 +277,16 @@ void lcd_point_set(uint16_t x,uint16_t y,uint16_t point) \param[in] x: the row-coordinate \param[in] y: the column-coordinate \param[out] none - \retval GRAM value of point + \retval GRAM value of point */ uint16_t lcd_point_get(uint16_t x,uint16_t y) { uint16_t data; - + if ((x > 240)||(y > 320)){ return 0; } - + lcd_cursor_set(x,y); data = lcd_gram_read(); @@ -410,7 +410,7 @@ void lcd_picture_draw(uint16_t start_x,uint16_t start_y,uint16_t end_x,uint16_t y = start_y; total = (end_x - start_x + 1) * (end_y - start_y + 1); - + for(i = 0; i < total; i ++){ /* set point according to the specified position and color */ lcd_point_set(x,y,*picturepointer++); @@ -441,7 +441,7 @@ void lcd_char_display(uint16_t x,uint16_t y,uint8_t c,char_format_struct c_forma uint16_t i = 0, j = 0; uint8_t temp_char = 0; uint16_t temp_char_16 = 0; - + if(CHAR_FONT_8_16 == c_format.font){ /* 8x16 ASCII */ for (i = 0; i < 16; i++) { temp_char = ascii_8x16[((c - 0x20) * 16) + i]; diff --git a/bsp/gd32303e-eval/drivers/gd32f303e_lcd_eval.h b/bsp/gd32303e-eval/drivers/gd32f303e_lcd_eval.h index 800a02c8c56b10180e91079b4e6ac7370f416041..db76bc17d5ec624549f62f0af9fa245de9f0a07d 100644 --- a/bsp/gd32303e-eval/drivers/gd32f303e_lcd_eval.h +++ b/bsp/gd32303e-eval/drivers/gd32f303e_lcd_eval.h @@ -155,7 +155,7 @@ /* char format struct definitions */ typedef struct -{ +{ uint16_t font; /*!< the type of font */ uint16_t direction; /*!< the direction of char */ uint16_t char_color; /*!< the color of char */ diff --git a/bsp/gd32450z-eval/drivers/board.h b/bsp/gd32450z-eval/drivers/board.h index d6384ae820e3a1d9ab7a141288b313ab376da0ff..49e9bf56c44f43c4502e4c8c29604c8876ecea7c 100644 --- a/bsp/gd32450z-eval/drivers/board.h +++ b/bsp/gd32450z-eval/drivers/board.h @@ -22,7 +22,7 @@ #define EXT_SDRAM_END (EXT_SDRAM_BEGIN + (32U * 1024 * 1024)) /* the end address of external SDRAM */ // Internal SRAM memory size[Kbytes] <8-64> -// Default: 64 +// Default: 64 #ifdef __ICCARM__ // Use *.icf ram symbal, to avoid hardcode. extern char __ICFEDIT_region_RAM_end__; diff --git a/bsp/gd32450z-eval/drivers/drv_enet.c b/bsp/gd32450z-eval/drivers/drv_enet.c index b1bf632f54d061a2ff88c265585b5c27ad83a0cd..66a6f9d516f420e1034104ea13133800e1bbcb05 100644 --- a/bsp/gd32450z-eval/drivers/drv_enet.c +++ b/bsp/gd32450z-eval/drivers/drv_enet.c @@ -35,16 +35,16 @@ //#define EMAC_TX_DUMP #ifdef EMAC_DEBUG -#define EMAC_TRACE rt_kprintf +#define EMAC_TRACE rt_kprintf #else #define EMAC_TRACE(...) #endif -#define EMAC_RXBUFNB 4 -#define EMAC_TXBUFNB 2 +#define EMAC_RXBUFNB 4 +#define EMAC_TXBUFNB 2 -#define EMAC_PHY_AUTO 0 -#define EMAC_PHY_10MBIT 1 +#define EMAC_PHY_AUTO 0 +#define EMAC_PHY_10MBIT 1 #define EMAC_PHY_100MBIT 2 #define MAX_ADDR_LEN 6 @@ -55,14 +55,14 @@ struct gd32_emac rt_uint8_t phy_mode; /* interface address info. */ - rt_uint8_t dev_addr[MAX_ADDR_LEN]; /* hw address */ + rt_uint8_t dev_addr[MAX_ADDR_LEN]; /* hw address */ struct rt_synopsys_eth * ETHERNET_MAC; IRQn_Type ETHER_MAC_IRQ; - + EMAC_DMADESCTypeDef *DMATxDescToSet; EMAC_DMADESCTypeDef *DMARxDescToGet; - + #pragma pack(4) EMAC_DMADESCTypeDef DMARxDscrTab[EMAC_RXBUFNB]; #pragma pack(4) @@ -71,7 +71,7 @@ struct gd32_emac rt_uint8_t Rx_Buff[EMAC_RXBUFNB][EMAC_MAX_PACKET_SIZE]; #pragma pack(4) rt_uint8_t Tx_Buff[EMAC_TXBUFNB][EMAC_MAX_PACKET_SIZE]; - + struct rt_semaphore tx_buf_free; }; @@ -548,14 +548,14 @@ static void enet_gpio_config(void) rcu_periph_clock_enable(RCU_GPIOG); rcu_periph_clock_enable(RCU_GPIOH); rcu_periph_clock_enable(RCU_GPIOI); - + gpio_af_set(GPIOA, GPIO_AF_0, GPIO_PIN_8); gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_8); gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_8); - + /* enable SYSCFG clock */ rcu_periph_clock_enable(RCU_SYSCFG); - + /* choose DIV2 to get 50MHz from 200MHz on CKOUT0 pin (PA8) to clock the PHY */ rcu_ckout0_config(RCU_CKOUT0SRC_PLLP, RCU_CKOUT0_DIV4); syscfg_enet_phy_interface_config(SYSCFG_ENET_PHY_RMII); @@ -563,31 +563,31 @@ static void enet_gpio_config(void) /* PA1: ETH_RMII_REF_CLK */ gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1); gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_1); - + /* PA2: ETH_MDIO */ gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_2); gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_2); - + /* PA7: ETH_RMII_CRS_DV */ gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_7); - gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_7); - + gpio_output_options_set(GPIOA, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_7); + gpio_af_set(GPIOA, GPIO_AF_11, GPIO_PIN_1); gpio_af_set(GPIOA, GPIO_AF_11, GPIO_PIN_2); gpio_af_set(GPIOA, GPIO_AF_11, GPIO_PIN_7); - + /* PB11: ETH_RMII_TX_EN */ gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_11); gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_11); - + /* PB12: ETH_RMII_TXD0 */ gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_12); gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_12); - + /* PB13: ETH_RMII_TXD1 */ gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_13); - gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_13); - + gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_13); + gpio_af_set(GPIOB, GPIO_AF_11, GPIO_PIN_11); gpio_af_set(GPIOB, GPIO_AF_11, GPIO_PIN_12); gpio_af_set(GPIOB, GPIO_AF_11, GPIO_PIN_13); @@ -599,11 +599,11 @@ static void enet_gpio_config(void) /* PC4: ETH_RMII_RXD0 */ gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_4); gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_4); - + /* PC5: ETH_RMII_RXD1 */ gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_5); - gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_5); - + gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ,GPIO_PIN_5); + gpio_af_set(GPIOC, GPIO_AF_11, GPIO_PIN_1); gpio_af_set(GPIOC, GPIO_AF_11, GPIO_PIN_4); gpio_af_set(GPIOC, GPIO_AF_11, GPIO_PIN_5); @@ -613,17 +613,17 @@ static void enet_gpio_config(void) int rt_hw_gd32_eth_init(void) { rt_kprintf("rt_gd32_eth_init...\n"); - + /* enable ethernet clock */ rcu_periph_clock_enable(RCU_ENET); rcu_periph_clock_enable(RCU_ENETTX); rcu_periph_clock_enable(RCU_ENETRX); - + nvic_configuration(); - + /* configure the GPIO ports for ethernet pins */ enet_gpio_config(); - + /* set autonegotiation mode */ gd32_emac_device0.phy_mode = EMAC_PHY_AUTO; gd32_emac_device0.ETHERNET_MAC = ETHERNET_MAC0; @@ -638,16 +638,16 @@ int rt_hw_gd32_eth_init(void) gd32_emac_device0.dev_addr[4] = 0x34; gd32_emac_device0.dev_addr[5] = 0x56; - gd32_emac_device0.parent.parent.init = gd32_emac_init; - gd32_emac_device0.parent.parent.open = gd32_emac_open; - gd32_emac_device0.parent.parent.close = gd32_emac_close; - gd32_emac_device0.parent.parent.read = gd32_emac_read; - gd32_emac_device0.parent.parent.write = gd32_emac_write; - gd32_emac_device0.parent.parent.control = gd32_emac_control; + gd32_emac_device0.parent.parent.init = gd32_emac_init; + gd32_emac_device0.parent.parent.open = gd32_emac_open; + gd32_emac_device0.parent.parent.close = gd32_emac_close; + gd32_emac_device0.parent.parent.read = gd32_emac_read; + gd32_emac_device0.parent.parent.write = gd32_emac_write; + gd32_emac_device0.parent.parent.control = gd32_emac_control; gd32_emac_device0.parent.parent.user_data = RT_NULL; - gd32_emac_device0.parent.eth_rx = gd32_emac_rx; - gd32_emac_device0.parent.eth_tx = gd32_emac_tx; + gd32_emac_device0.parent.eth_rx = gd32_emac_rx; + gd32_emac_device0.parent.eth_tx = gd32_emac_tx; /* init tx buffer free semaphore */ rt_sem_init(&gd32_emac_device0.tx_buf_free, "tx_buf0", EMAC_TXBUFNB, RT_IPC_FLAG_FIFO); diff --git a/bsp/gd32450z-eval/drivers/drv_exmc_sdram.c b/bsp/gd32450z-eval/drivers/drv_exmc_sdram.c index 41355987b54226d90e2df3a6d15946c312f3ad68..3fe8866dfb34c3f9674f0d2bfd9a2072012151d2 100644 --- a/bsp/gd32450z-eval/drivers/drv_exmc_sdram.c +++ b/bsp/gd32450z-eval/drivers/drv_exmc_sdram.c @@ -47,7 +47,7 @@ static void delay_1ms(volatile uint32_t count) /*! \brief sdram peripheral initialize - \param[in] sdram_device: specifie the SDRAM device + \param[in] sdram_device: specifie the SDRAM device \param[out] none \retval none */ @@ -71,7 +71,7 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device) rcu_periph_clock_enable(RCU_GPIOH); /* common GPIO configuration */ - /* SDNWE(PC0),SDNE0(PC2),SDCKE0(PC3) pin configuration */ + /* SDNWE(PC0),SDNE0(PC2),SDCKE0(PC3) pin configuration */ gpio_af_set(GPIOC, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3); gpio_mode_set(GPIOC, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3); gpio_output_options_set(GPIOC, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3); @@ -107,11 +107,11 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device) GPIO_PIN_13 | GPIO_PIN_14 | GPIO_PIN_15); /* A10(PG0),A11(PG1),A12(PG2),A14(PG4),A15(PG5),SDCLK(PG8),NCAS(PG15) pin configuration */ - gpio_af_set(GPIOG, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 | + gpio_af_set(GPIOG, GPIO_AF_12, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_15); - gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 | + gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_PULLUP, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_15); - gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 | + gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_8 | GPIO_PIN_15); /* specify which SDRAM to read and write */ @@ -126,7 +126,7 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device) /* LMRD: 2 clock cycles */ sdram_timing_init_struct.load_mode_register_delay = 2; /* XSRD: min = 67ns */ - sdram_timing_init_struct.exit_selfrefresh_delay = 7; + sdram_timing_init_struct.exit_selfrefresh_delay = 7; /* RASD: min=42ns , max=120k (ns) */ sdram_timing_init_struct.row_address_select_delay = 5; /* ARFD: min=60ns */ @@ -144,9 +144,9 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device) sdram_init_struct.row_address_width = EXMC_SDRAM_ROW_ADDRESS_13; sdram_init_struct.data_width = EXMC_SDRAM_DATABUS_WIDTH_16B; sdram_init_struct.internal_bank_number = EXMC_SDRAM_4_INTER_BANK; - sdram_init_struct.cas_latency = EXMC_CAS_LATENCY_3_SDCLK; + sdram_init_struct.cas_latency = EXMC_CAS_LATENCY_3_SDCLK; sdram_init_struct.write_protection = DISABLE; - sdram_init_struct.sdclock_config = EXMC_SDCLK_PERIODS_2_HCLK; + sdram_init_struct.sdclock_config = EXMC_SDCLK_PERIODS_2_HCLK; sdram_init_struct.brust_read_switch = ENABLE; sdram_init_struct.pipeline_read_delay = EXMC_PIPELINE_DELAY_1_HCLK; sdram_init_struct.timing = &sdram_timing_init_struct; @@ -158,7 +158,7 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device) sdram_command_init_struct.bank_select = bank_select; sdram_command_init_struct.auto_refresh_number = EXMC_SDRAM_AUTO_REFLESH_1_SDCLK; sdram_command_init_struct.mode_register_content = 0; - /* wait until the SDRAM controller is ready */ + /* wait until the SDRAM controller is ready */ while((exmc_flag_get(sdram_device, EXMC_SDRAM_FLAG_NREADY) != RESET) && (timeout > 0)){ timeout--; } @@ -174,7 +174,7 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device) sdram_command_init_struct.auto_refresh_number = EXMC_SDRAM_AUTO_REFLESH_1_SDCLK; sdram_command_init_struct.mode_register_content = 0; /* wait until the SDRAM controller is ready */ - timeout = SDRAM_TIMEOUT; + timeout = SDRAM_TIMEOUT; while((exmc_flag_get(sdram_device, EXMC_SDRAM_FLAG_NREADY) != RESET) && (timeout > 0)){ timeout--; } @@ -186,8 +186,8 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device) sdram_command_init_struct.bank_select = bank_select; sdram_command_init_struct.auto_refresh_number = EXMC_SDRAM_AUTO_REFLESH_8_SDCLK; sdram_command_init_struct.mode_register_content = 0; - /* wait until the SDRAM controller is ready */ - timeout = SDRAM_TIMEOUT; + /* wait until the SDRAM controller is ready */ + timeout = SDRAM_TIMEOUT; while((exmc_flag_get(sdram_device, EXMC_SDRAM_FLAG_NREADY) != RESET) && (timeout > 0)){ timeout--; } @@ -207,8 +207,8 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device) sdram_command_init_struct.auto_refresh_number = EXMC_SDRAM_AUTO_REFLESH_1_SDCLK; sdram_command_init_struct.mode_register_content = command_content; - /* wait until the SDRAM controller is ready */ - timeout = SDRAM_TIMEOUT; + /* wait until the SDRAM controller is ready */ + timeout = SDRAM_TIMEOUT; while((exmc_flag_get(sdram_device, EXMC_SDRAM_FLAG_NREADY) != RESET) && (timeout > 0)){ timeout--; } @@ -221,8 +221,8 @@ void exmc_synchronous_dynamic_ram_init(uint32_t sdram_device) /* (7.81 us * SDCLK_Freq) - 20 */ exmc_sdram_refresh_count_set(761); - /* wait until the SDRAM controller is ready */ - timeout = SDRAM_TIMEOUT; + /* wait until the SDRAM controller is ready */ + timeout = SDRAM_TIMEOUT; while((exmc_flag_get(sdram_device, EXMC_SDRAM_FLAG_NREADY) != RESET) && (timeout > 0)){ timeout--; } @@ -258,20 +258,20 @@ void fill_buffer(uint8_t *pbuffer, uint16_t buffer_lengh, uint16_t offset) void sdram_writebuffer_8(uint32_t sdram_device,uint8_t* pbuffer, uint32_t writeaddr, uint32_t numbytetowrite) { uint32_t temp_addr; - + /* Select the base address according to EXMC_Bank */ if(sdram_device == EXMC_SDRAM_DEVICE0){ temp_addr = SDRAM_DEVICE0_ADDR; }else{ temp_addr = SDRAM_DEVICE1_ADDR; } - + /* While there is data to write */ for(; numbytetowrite != 0; numbytetowrite--) { /* Transfer data to the memory */ *(uint8_t *) (temp_addr + writeaddr) = *pbuffer++; - /* Increment the address*/ + /* Increment the address*/ writeaddr += 1; } } @@ -288,19 +288,19 @@ void sdram_writebuffer_8(uint32_t sdram_device,uint8_t* pbuffer, uint32_t writea void sdram_readbuffer_8(uint32_t sdram_device,uint8_t* pbuffer, uint32_t readaddr, uint32_t numbytetoread) { uint32_t temp_addr; - + /* select the base address according to EXMC_Bank */ if(sdram_device == EXMC_SDRAM_DEVICE0){ temp_addr = SDRAM_DEVICE0_ADDR; }else{ temp_addr = SDRAM_DEVICE1_ADDR; } - + /* while there is data to read */ for(; numbytetoread != 0; numbytetoread--){ /* read a byte from the memory */ *pbuffer++ = *(uint8_t*) (temp_addr + readaddr); - + /* increment the address */ readaddr += 1; } diff --git a/bsp/gd32450z-eval/drivers/drv_lcd.c b/bsp/gd32450z-eval/drivers/drv_lcd.c index 50d5c685c59770069259eb46a71b1e264d294a4a..8f9e65c26611d0e146dc5c016b7f16dc85abcd83 100644 --- a/bsp/gd32450z-eval/drivers/drv_lcd.c +++ b/bsp/gd32450z-eval/drivers/drv_lcd.c @@ -41,7 +41,7 @@ static struct rt_device_graphic_info _lcd_info; static struct rt_device lcd; /*! - \brief configure TLI GPIO + \brief configure TLI GPIO \param[in] none \param[out] none \retval none @@ -57,34 +57,34 @@ static void tli_gpio_config(void) rcu_periph_clock_enable(RCU_GPIOG); /* configure HSYNC(PC6), VSYNC(PA4), PCLK(PG7), DE(PF10) */ - /* configure LCD_R7(PG6), LCD_R6(PA8), LCD_R5(PA12), LCD_R4(PA11), LCD_R3(PB0), + /* configure LCD_R7(PG6), LCD_R6(PA8), LCD_R5(PA12), LCD_R4(PA11), LCD_R3(PB0), LCD_G7(PD3), LCD_G6(PC7), LCD_G5(PB11), LCD_G4(PB10), LCD_G3(PG10), LCD_G2(PA6), LCD_B7(PB9), LCD_B6(PB8), LCD_B5(PA3), LCD_B4(PG12), LCD_B3(PG11) */ - gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_3); + gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_3); gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_4); - gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_6); - gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_12); - gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_11); - gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_8); - - gpio_af_set(GPIOB,GPIO_AF_9,GPIO_PIN_0); - gpio_af_set(GPIOB,GPIO_AF_14,GPIO_PIN_10); + gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_6); + gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_12); + gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_11); + gpio_af_set(GPIOA,GPIO_AF_14,GPIO_PIN_8); + + gpio_af_set(GPIOB,GPIO_AF_9,GPIO_PIN_0); + gpio_af_set(GPIOB,GPIO_AF_14,GPIO_PIN_10); //gpio_af_set(GPIOB,GPIO_AF_14,GPIO_PIN_11); - gpio_af_set(GPIOB,GPIO_AF_14,GPIO_PIN_8); + gpio_af_set(GPIOB,GPIO_AF_14,GPIO_PIN_8); gpio_af_set(GPIOB,GPIO_AF_14,GPIO_PIN_9); - - gpio_af_set(GPIOC,GPIO_AF_14,GPIO_PIN_6); + + gpio_af_set(GPIOC,GPIO_AF_14,GPIO_PIN_6); gpio_af_set(GPIOC,GPIO_AF_14,GPIO_PIN_7); - - gpio_af_set(GPIOD,GPIO_AF_14,GPIO_PIN_3); - gpio_af_set(GPIOF,GPIO_AF_14,GPIO_PIN_10); - - gpio_af_set(GPIOG,GPIO_AF_14,GPIO_PIN_6); + gpio_af_set(GPIOD,GPIO_AF_14,GPIO_PIN_3); + + gpio_af_set(GPIOF,GPIO_AF_14,GPIO_PIN_10); + + gpio_af_set(GPIOG,GPIO_AF_14,GPIO_PIN_6); gpio_af_set(GPIOG,GPIO_AF_14,GPIO_PIN_7); gpio_af_set(GPIOG,GPIO_AF_9,GPIO_PIN_10); - gpio_af_set(GPIOG,GPIO_AF_14,GPIO_PIN_11); - gpio_af_set(GPIOG,GPIO_AF_9,GPIO_PIN_12); + gpio_af_set(GPIOG,GPIO_AF_14,GPIO_PIN_11); + gpio_af_set(GPIOG,GPIO_AF_9,GPIO_PIN_12); gpio_mode_set(GPIOA, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_6 |GPIO_PIN_8|GPIO_PIN_11|GPIO_PIN_12); @@ -123,15 +123,15 @@ static void lcd_config(void) lcd_ctrl_line_config(); lcd_disable(); lcd_enable(); - + /* configure the GPIO of TLI */ tli_gpio_config(); /* configure the LCD_SPI */ - lcd_spi_config(); + lcd_spi_config(); /* power on the LCD */ //lcd_power_on(); - lcd_power_on3(); //New Version 3.5" TFT RGB Hardware needs use this initilize funtion ---By xufei 2016.10.21 + lcd_power_on3(); //New Version 3.5" TFT RGB Hardware needs use this initilize funtion ---By xufei 2016.10.21 } /*! @@ -144,7 +144,7 @@ static void tli_config(void) { tli_parameter_struct tli_init_struct; tli_layer_parameter_struct tli_layer_init_struct; - + rcu_periph_clock_enable(RCU_TLI); /* configure the PLLSAI clock to generate lcd clock */ @@ -156,52 +156,52 @@ static void tli_config(void) if(ERROR == rcu_osci_stab_wait(RCU_PLLSAI_CK)){ while(1); } - + /* TLI initialization */ tli_init_struct.signalpolarity_hs = TLI_HSYN_ACTLIVE_LOW; tli_init_struct.signalpolarity_vs = TLI_VSYN_ACTLIVE_LOW; tli_init_struct.signalpolarity_de = TLI_DE_ACTLIVE_LOW; tli_init_struct.signalpolarity_pixelck = TLI_PIXEL_CLOCK_TLI; - + /* LCD display timing configuration */ tli_init_struct.synpsz_hpsz = LCD_480_320_HSYNC; tli_init_struct.synpsz_vpsz = LCD_480_320_VSYNC; - tli_init_struct.backpsz_hbpsz = LCD_480_320_HSYNC + LCD_480_320_HBP; - tli_init_struct.backpsz_vbpsz = LCD_480_320_VSYNC + LCD_480_320_VBP; + tli_init_struct.backpsz_hbpsz = LCD_480_320_HSYNC + LCD_480_320_HBP; + tli_init_struct.backpsz_vbpsz = LCD_480_320_VSYNC + LCD_480_320_VBP; tli_init_struct.activesz_hasz = RT_HW_LCD_WIDTH + LCD_480_320_HSYNC + LCD_480_320_HBP; tli_init_struct.activesz_vasz = RT_HW_LCD_HEIGHT + LCD_480_320_VSYNC + LCD_480_320_VBP; - tli_init_struct.totalsz_htsz = RT_HW_LCD_WIDTH + LCD_480_320_HSYNC + LCD_480_320_HBP + LCD_480_320_HFP; + tli_init_struct.totalsz_htsz = RT_HW_LCD_WIDTH + LCD_480_320_HSYNC + LCD_480_320_HBP + LCD_480_320_HFP; tli_init_struct.totalsz_vtsz = RT_HW_LCD_HEIGHT + LCD_480_320_VSYNC + LCD_480_320_VBP + LCD_480_320_VFP; - + /* LCD background color configure*/ tli_init_struct.backcolor_red = 0x00; tli_init_struct.backcolor_green = 0x00; - tli_init_struct.backcolor_blue = 0x00; + tli_init_struct.backcolor_blue = 0x00; tli_init(&tli_init_struct); - + lcd_framebuffer = rt_malloc(sizeof(rt_uint16_t) * RT_HW_LCD_HEIGHT * RT_HW_LCD_WIDTH); RT_ASSERT(lcd_framebuffer != NULL); rt_memset(lcd_framebuffer, 0, sizeof(rt_uint16_t) * RT_HW_LCD_WIDTH * RT_HW_LCD_HEIGHT); /* TLI layer0 configuration */ tli_layer_init_struct.layer_window_leftpos = tli_init_struct.backpsz_hbpsz + 1; - tli_layer_init_struct.layer_window_rightpos = tli_init_struct.backpsz_hbpsz + RT_HW_LCD_WIDTH; + tli_layer_init_struct.layer_window_rightpos = tli_init_struct.backpsz_hbpsz + RT_HW_LCD_WIDTH; tli_layer_init_struct.layer_window_toppos = tli_init_struct.backpsz_vbpsz + 1; tli_layer_init_struct.layer_window_bottompos = tli_init_struct.backpsz_vbpsz + RT_HW_LCD_HEIGHT; - + tli_layer_init_struct.layer_ppf = LAYER_PPF_RGB565; tli_layer_init_struct.layer_sa = 0xFF; - tli_layer_init_struct.layer_default_blue = 0x00; - tli_layer_init_struct.layer_default_green = 0x00; - tli_layer_init_struct.layer_default_red = 0x00; + tli_layer_init_struct.layer_default_blue = 0x00; + tli_layer_init_struct.layer_default_green = 0x00; + tli_layer_init_struct.layer_default_red = 0x00; tli_layer_init_struct.layer_default_alpha = 0x00; - tli_layer_init_struct.layer_acf1 = LAYER_ACF1_PASA; + tli_layer_init_struct.layer_acf1 = LAYER_ACF1_PASA; tli_layer_init_struct.layer_acf2 = LAYER_ACF2_PASA; - tli_layer_init_struct.layer_frame_bufaddr = (uint32_t)lcd_framebuffer; - tli_layer_init_struct.layer_frame_line_length = ((RT_HW_LCD_WIDTH * 2) + 3); + tli_layer_init_struct.layer_frame_bufaddr = (uint32_t)lcd_framebuffer; + tli_layer_init_struct.layer_frame_line_length = ((RT_HW_LCD_WIDTH * 2) + 3); tli_layer_init_struct.layer_frame_buf_stride_offset = (RT_HW_LCD_WIDTH * 2); - tli_layer_init_struct.layer_frame_total_line_number = RT_HW_LCD_HEIGHT; - + tli_layer_init_struct.layer_frame_total_line_number = RT_HW_LCD_HEIGHT; + tli_layer_init(LAYER0, &tli_layer_init_struct); } @@ -210,21 +210,21 @@ static rt_err_t rt_lcd_control(rt_device_t dev, int cmd, void *args) switch (cmd) { case RTGRAPHIC_CTRL_RECT_UPDATE: - { + { memcpy((void *)lcd_framebuffer, _rt_framebuffer, sizeof(rt_uint16_t)*RT_HW_LCD_HEIGHT * RT_HW_LCD_WIDTH); } break; - + case RTGRAPHIC_CTRL_POWERON: break; - + case RTGRAPHIC_CTRL_POWEROFF: break; - + case RTGRAPHIC_CTRL_GET_INFO: memcpy(args, &_lcd_info, sizeof(_lcd_info)); break; - + case RTGRAPHIC_CTRL_SET_MODE: break; } @@ -235,21 +235,21 @@ static rt_err_t rt_lcd_control(rt_device_t dev, int cmd, void *args) int gd32_hw_lcd_init(void) { _rt_framebuffer = rt_malloc_align(sizeof(rt_uint16_t) * RT_HW_LCD_WIDTH * RT_HW_LCD_HEIGHT, 32); - if (_rt_framebuffer == RT_NULL) + if (_rt_framebuffer == RT_NULL) return -1; /* no memory yet */ - + lcd_config(); tli_config(); - tli_layer_enable(LAYER0); + tli_layer_enable(LAYER0); tli_reload_config(TLI_FRAME_BLANK_RELOAD_EN); tli_enable(); - + _lcd_info.bits_per_pixel = LCD_BITS_PER_PIXEL; _lcd_info.pixel_format = RTGRAPHIC_PIXEL_FORMAT_RGB565; _lcd_info.framebuffer = (void *)_rt_framebuffer; _lcd_info.width = RT_HW_LCD_WIDTH; _lcd_info.height = RT_HW_LCD_HEIGHT; - + lcd.type = RT_Device_Class_Graphic; lcd.init = NULL; lcd.open = NULL; @@ -258,10 +258,10 @@ int gd32_hw_lcd_init(void) lcd.write = NULL; lcd.control = rt_lcd_control; lcd.user_data = (void *)&_lcd_info; - + /* register lcd device to RT-Thread */ rt_device_register(&lcd, "lcd", RT_DEVICE_FLAG_RDWR); - + return 0; } INIT_DEVICE_EXPORT(gd32_hw_lcd_init); diff --git a/bsp/gd32450z-eval/drivers/drv_spi.c b/bsp/gd32450z-eval/drivers/drv_spi.c index f4e56e1a8c2b677d77272d8385de23c48506c9c8..a1fc143cf26842ebad61119efbd95ddcada937d0 100644 --- a/bsp/gd32450z-eval/drivers/drv_spi.c +++ b/bsp/gd32450z-eval/drivers/drv_spi.c @@ -11,7 +11,7 @@ * Date Author Notes * 2017-06-05 tanek first implementation. */ - + #include "drv_spi.h" #include @@ -32,7 +32,7 @@ #ifdef DEBUG #define DEBUG_PRINTF(...) rt_kprintf(__VA_ARGS__) #else -#define DEBUG_PRINTF(...) +#define DEBUG_PRINTF(...) #endif /* private rt-thread spi ops function */ @@ -48,16 +48,16 @@ static struct rt_spi_ops gd32_spi_ops = static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configuration* configuration) { - struct rt_spi_bus * spi_bus = (struct rt_spi_bus *)device->bus; + struct rt_spi_bus * spi_bus = (struct rt_spi_bus *)device->bus; struct gd32f4_spi *f4_spi = (struct gd32f4_spi *)spi_bus->parent.user_data; - + spi_parameter_struct spi_init_struct; uint32_t spi_periph = f4_spi->spi_periph; - RT_ASSERT(device != RT_NULL); - RT_ASSERT(configuration != RT_NULL); + RT_ASSERT(device != RT_NULL); + RT_ASSERT(configuration != RT_NULL); /* data_width */ if(configuration->data_width <= 8) @@ -129,7 +129,7 @@ static rt_err_t configure(struct rt_spi_device* device, spi_init_struct.prescale = SPI_PSC_256; } } /* baudrate */ - + switch(configuration->mode & RT_SPI_MODE_3) { case RT_SPI_MODE_0: @@ -137,15 +137,15 @@ static rt_err_t configure(struct rt_spi_device* device, break; case RT_SPI_MODE_1: spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_2EDGE; - break; + break; case RT_SPI_MODE_2: spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_1EDGE; - break; + break; case RT_SPI_MODE_3: spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE; break; } - + /* MSB or LSB */ if(configuration->mode & RT_SPI_MSB) { @@ -155,18 +155,18 @@ static rt_err_t configure(struct rt_spi_device* device, { spi_init_struct.endian = SPI_ENDIAN_LSB; } - + spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX; spi_init_struct.device_mode = SPI_MASTER; spi_init_struct.nss = SPI_NSS_SOFT; - + spi_crc_off(spi_periph); /* init SPI */ spi_init(spi_periph, &spi_init_struct); /* Enable SPI_MASTER */ - spi_enable(spi_periph); - + spi_enable(spi_periph); + return RT_EOK; }; @@ -178,9 +178,9 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes struct gd32_spi_cs * gd32_spi_cs = device->parent.user_data; uint32_t spi_periph = f4_spi->spi_periph; - RT_ASSERT(device != NULL); - RT_ASSERT(message != NULL); - + RT_ASSERT(device != NULL); + RT_ASSERT(message != NULL); + /* take CS */ if(message->cs_take) { @@ -194,7 +194,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes const rt_uint8_t * send_ptr = message->send_buf; rt_uint8_t * recv_ptr = message->recv_buf; rt_uint32_t size = message->length; - + DEBUG_PRINTF("spi poll transfer start: %d\n", size); while(size--) @@ -205,12 +205,12 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes { data = *send_ptr++; } - + // Todo: replace register read/write by gd32f4 lib //Wait until the transmit buffer is empty while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_TBE)); // Send the byte - spi_i2s_data_transmit(spi_periph, data); + spi_i2s_data_transmit(spi_periph, data); //Wait until a data is received while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_RBNE)); @@ -242,7 +242,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes //Wait until the transmit buffer is empty while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_TBE)); // Send the byte - spi_i2s_data_transmit(spi_periph, data); + spi_i2s_data_transmit(spi_periph, data); //Wait until a data is received while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_RBNE)); @@ -260,7 +260,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes /* release CS */ if(message->cs_release) { - gpio_bit_set(gd32_spi_cs->GPIOx, gd32_spi_cs->GPIO_Pin); + gpio_bit_set(gd32_spi_cs->GPIOx, gd32_spi_cs->GPIO_Pin); DEBUG_PRINTF("spi release cs\n"); } @@ -274,7 +274,7 @@ static const struct gd32f4_spi spis[] = { #ifdef RT_USING_SPI0 {SPI0, RCU_SPI0, &spi_bus[0]}, #endif - + #ifdef RT_USING_SPI1 {SPI1, RCU_SPI1, &spi_bus[1]}, #endif @@ -286,11 +286,11 @@ static const struct gd32f4_spi spis[] = { #ifdef RT_USING_SPI3 {SPI3, RCU_SPI3, &spi_bus[3]}, #endif - + #ifdef RT_USING_SPI4 {SPI4, RCU_SPI4, &spi_bus[4]}, #endif - + #ifdef RT_USING_SPI5 {SPI5, RCU_SPI5, &spi_bus[5]}, #endif @@ -310,9 +310,9 @@ rt_err_t gd32_spi_bus_register(uint32_t spi_periph, const char * spi_bus_name) { int i; - + RT_ASSERT(spi_bus_name != RT_NULL); - + for (i = 0; i < ARR_LEN(spis); i++) { if (spi_periph == spis[i].spi_periph) @@ -323,7 +323,7 @@ rt_err_t gd32_spi_bus_register(uint32_t spi_periph, return RT_EOK; } } - + return RT_ERROR; } #endif diff --git a/bsp/gd32450z-eval/drivers/drv_spi.h b/bsp/gd32450z-eval/drivers/drv_spi.h index c97cbba880292879e691b4a67e3ed4452060b666..692da41cbec97d0c52d6e269500b14ecd6e7242a 100644 --- a/bsp/gd32450z-eval/drivers/drv_spi.h +++ b/bsp/gd32450z-eval/drivers/drv_spi.h @@ -36,7 +36,7 @@ struct gd32_spi_cs /* public function */ rt_err_t gd32_spi_bus_register(uint32_t spi_periph, - //struct gd32_spi_bus * gd32_spi, - const char * spi_bus_name); + //struct gd32_spi_bus * gd32_spi, + const char * spi_bus_name); #endif // gd32F20X_40X_SPI_H_INCLUDED diff --git a/bsp/gd32450z-eval/drivers/drv_spi_flash.c b/bsp/gd32450z-eval/drivers/drv_spi_flash.c index 9b6075347201c5f54242e4ca6468569a4e180399..1731d1499b3c94d5f031cfbe35723c0fa3cbc9ba 100644 --- a/bsp/gd32450z-eval/drivers/drv_spi_flash.c +++ b/bsp/gd32450z-eval/drivers/drv_spi_flash.c @@ -32,8 +32,8 @@ static int rt_hw_spi5_init(void) { /* register spi bus */ { - rt_err_t result; - + rt_err_t result; + rcu_periph_clock_enable(RCU_GPIOG); rcu_periph_clock_enable(RCU_SPI5); @@ -42,36 +42,36 @@ static int rt_hw_spi5_init(void) gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_10|GPIO_PIN_11| GPIO_PIN_12|GPIO_PIN_13| GPIO_PIN_14); gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_200MHZ, GPIO_PIN_10|GPIO_PIN_11| GPIO_PIN_12|GPIO_PIN_13| GPIO_PIN_14); - result = gd32_spi_bus_register(SPI5, SPI_BUS_NAME); + result = gd32_spi_bus_register(SPI5, SPI_BUS_NAME); if (result != RT_EOK) - { - return result; - } + { + return result; + } } /* attach cs */ { static struct rt_spi_device spi_device; static struct gd32_spi_cs spi_cs; - rt_err_t result; - + rt_err_t result; + spi_cs.GPIOx = GPIOG; spi_cs.GPIO_Pin = GPIO_PIN_9; - + /* SPI5_CS(PG9) GPIO pin configuration */ gpio_mode_set(GPIOG, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, GPIO_PIN_9); gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9); - + gpio_bit_set(GPIOG,GPIO_PIN_9); result = rt_spi_bus_attach_device(&spi_device, SPI_FLASH_DEVICE_NAME, SPI_BUS_NAME, (void*)&spi_cs); - if (result != RT_EOK) - { - return result; - } + if (result != RT_EOK) + { + return result; + } } - return RT_EOK; + return RT_EOK; } INIT_DEVICE_EXPORT(rt_hw_spi5_init); @@ -83,7 +83,7 @@ static int rt_hw_spi_flash_with_sfud_init(void) return RT_ERROR; }; - return RT_EOK; + return RT_EOK; } INIT_COMPONENT_EXPORT(rt_hw_spi_flash_with_sfud_init) #endif diff --git a/bsp/gd32450z-eval/drivers/drv_usart.c b/bsp/gd32450z-eval/drivers/drv_usart.c index 2b0b9c84b0cce29a1788dffa4caafa6fdb5f86a0..226c6fd1216c08c9017770edb0bda543fdc0fd03 100644 --- a/bsp/gd32450z-eval/drivers/drv_usart.c +++ b/bsp/gd32450z-eval/drivers/drv_usart.c @@ -37,7 +37,7 @@ struct gd32_uart { uint32_t uart_periph; //Todo: 3bits - IRQn_Type irqn; //Todo: 7bits + IRQn_Type irqn; //Todo: 7bits rcu_periph_enum per_clk; //Todo: 5bits rcu_periph_enum tx_gpio_clk; //Todo: 5bits rcu_periph_enum rx_gpio_clk; //Todo: 5bits @@ -48,7 +48,7 @@ struct gd32_uart uint16_t rx_af; //Todo: 4bits uint16_t rx_pin; //Todo: 4bits - struct rt_serial_device * serial; + struct rt_serial_device * serial; char *device_name; }; @@ -193,7 +193,7 @@ static const struct gd32_uart uarts[] = { "uart0", }, #endif - + #ifdef BSP_USING_UART1 { USART1, // uart peripheral index @@ -205,7 +205,7 @@ static const struct gd32_uart uarts[] = { "uart1", }, #endif - + #ifdef BSP_USING_UART2 { USART2, // uart peripheral index @@ -217,7 +217,7 @@ static const struct gd32_uart uarts[] = { "uart2", }, #endif - + #ifdef BSP_USING_UART3 { UART3, // uart peripheral index @@ -229,7 +229,7 @@ static const struct gd32_uart uarts[] = { "uart3", }, #endif - + #ifdef BSP_USING_UART4 { UART4, // uart peripheral index @@ -253,7 +253,7 @@ static const struct gd32_uart uarts[] = { "uart5", }, #endif - + #ifdef BSP_USING_UART6 { UART6, // uart peripheral index @@ -309,7 +309,7 @@ void gd32_uart_gpio_init(struct gd32_uart *uart) /* configure USART Rx as alternate function push-pull */ gpio_mode_set(uart->rx_port, GPIO_MODE_AF, GPIO_PUPD_PULLUP, uart->rx_pin); gpio_output_options_set(uart->rx_port, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, uart->rx_pin); - + NVIC_SetPriority(uart->irqn, 0); NVIC_EnableIRQ(uart->irqn); } @@ -322,9 +322,9 @@ static rt_err_t gd32_configure(struct rt_serial_device *serial, struct serial_co RT_ASSERT(cfg != RT_NULL); uart = (struct gd32_uart *)serial->parent.user_data; - + gd32_uart_gpio_init(uart); - + usart_baudrate_set(uart->uart_periph, cfg->baud_rate); switch (cfg->data_bits) @@ -404,7 +404,7 @@ static int gd32_putc(struct rt_serial_device *serial, char ch) usart_data_transmit(uart->uart_periph, ch); while((usart_flag_get(uart->uart_periph, USART_FLAG_TC) == RESET)); - + return 1; } @@ -456,7 +456,7 @@ int gd32_hw_usart_init(void) struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; int i; - + for (i = 0; i < sizeof(uarts) / sizeof(uarts[0]); i++) { uarts[i].serial->ops = &gd32_uart_ops; diff --git a/bsp/gd32450z-eval/drivers/gd32f450z_eval.h b/bsp/gd32450z-eval/drivers/gd32f450z_eval.h index 73ea9baaa495f65e84e9ae2acde77c6992ef5e5b..6eb91aee0132d5174e7e508fa3d0c8442f8426e7 100644 --- a/bsp/gd32450z-eval/drivers/gd32f450z_eval.h +++ b/bsp/gd32450z-eval/drivers/gd32f450z_eval.h @@ -17,23 +17,23 @@ #endif #include "gd32f4xx.h" - + /* exported types */ -typedef enum +typedef enum { LED1 = 0, LED2 = 1, LED3 = 2 } led_typedef_enum; -typedef enum +typedef enum { KEY_WAKEUP = 0, KEY_TAMPER = 1, KEY_USER = 2 } key_typedef_enum; -typedef enum +typedef enum { KEY_MODE_GPIO = 0, KEY_MODE_EXTI = 1 @@ -45,11 +45,11 @@ typedef enum #define LED1_PIN GPIO_PIN_4 #define LED1_GPIO_PORT GPIOD #define LED1_GPIO_CLK RCU_GPIOD - + #define LED2_PIN GPIO_PIN_5 #define LED2_GPIO_PORT GPIOD #define LED2_GPIO_CLK RCU_GPIOD - + #define LED3_PIN GPIO_PIN_3 #define LED3_GPIO_PORT GPIOG #define LED3_GPIO_CLK RCU_GPIOG @@ -83,7 +83,7 @@ typedef enum #define WAKEUP_KEY_EXTI_LINE EXTI_0 #define WAKEUP_KEY_EXTI_PORT_SOURCE EXTI_SOURCE_GPIOA #define WAKEUP_KEY_EXTI_PIN_SOURCE EXTI_SOURCE_PIN0 -#define WAKEUP_KEY_EXTI_IRQn EXTI0_IRQn +#define WAKEUP_KEY_EXTI_IRQn EXTI0_IRQn /* user push-button */ #define USER_KEY_PIN GPIO_PIN_14 diff --git a/bsp/gd32450z-eval/drivers/gd32f450z_lcd_eval.c b/bsp/gd32450z-eval/drivers/gd32f450z_lcd_eval.c index 8a309a1a7506d72278a16dda3ff07f071f8af0d7..b71005b6ddd265d69f12a4d93b7b5e8b2885b807 100644 --- a/bsp/gd32450z-eval/drivers/gd32f450z_lcd_eval.c +++ b/bsp/gd32450z-eval/drivers/gd32f450z_lcd_eval.c @@ -108,8 +108,8 @@ void lcd_spi_config(void) gpio_mode_set(GPIOG, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_13|GPIO_PIN_14); gpio_output_options_set(GPIOG, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_13|GPIO_PIN_14); spi_i2s_deinit(SPI5); - - if(0 == (SPI_CTL0(LCD_SPI) & SPI_CTL0_SPIEN)){ + + if(0 == (SPI_CTL0(LCD_SPI) & SPI_CTL0_SPIEN)){ spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX; spi_init_struct.device_mode = SPI_MASTER; spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT; @@ -155,7 +155,7 @@ void lcd_data_write(uint8_t value) /* set LCD_RS to send data */ lcd_ctrl_line_set(LCD_RS_GPIO_PORT, LCD_RS_PIN); - /* reset LCD control line and send data */ + /* reset LCD control line and send data */ lcd_disable(); while(RESET == spi_i2s_flag_get(LCD_SPI, SPI_FLAG_TBE)) ; @@ -228,80 +228,80 @@ void lcd_power_on(void) } /** * @brief New Version 3.5" TFT RGB Hardware needs add this initilize funtion ---By xufei 2016.10.21 - Modified by GAO HAIYANG, test pass, 17, Nov, 2016 + Modified by GAO HAIYANG, test pass, 17, Nov, 2016 * @param None * @retval None */ void lcd_power_on3(void) { - lcd_command_write(0xC0);//power control1 command/w/ - lcd_data_write(0x0A); // P-Gamma level//4.1875v - lcd_data_write(0x0A); // N-Gamma level - lcd_command_write(0xC1); // BT & VC Setting//power contrl2 command/w/ - lcd_data_write(0x41); - lcd_data_write(0x07); // VCI1 = 2.5V - lcd_command_write(0xC2); // DC1.DC0 Setting//power control3 for normal mode - lcd_data_write(0x33); - lcd_command_write(0xC5);//VCOM control - lcd_data_write(0x00); //NV memory is not programmed - lcd_data_write(0x42); // VCM Setting - lcd_data_write(0x80); // VCM Register Enable - lcd_command_write(0xB0); //interface mode control //Polarity Setting - lcd_data_write(0x02); - lcd_command_write(0xB1);//frame rate control for normal mode - lcd_data_write(0xB0); // Frame Rate Setting//70 frame per second//no division for internal clocks - lcd_data_write(0x11);//17 clocks per line period for idle mode at cpu interface - lcd_command_write(0xB4);//dispaly inversion control - lcd_data_write(0x00); // disable Z-inversion , column inversion - lcd_command_write(0xB6); //display function control// RM.DM Setting - lcd_data_write(0x70);////0xF0 - lcd_data_write(0x02);//direction of gate scan: G1->G480 one by one, source scan: S1->S960, scan cycle if interval scan in non-display area - lcd_data_write(0x3B); // number of lines to drive LCD: 8*(0x3C) = 480 - lcd_command_write(0xB7); // Entry Mode - lcd_data_write(0x07); // disable low voltage detection, normal display, - lcd_command_write(0xF0); // Enter ENG , must be set before gamma setting - lcd_data_write(0x36); - lcd_data_write(0xA5); - lcd_data_write(0xD3); - lcd_command_write(0xE5); // Open gamma function , must be set before gamma setting - lcd_data_write(0x80); - lcd_command_write(0xE5); // Page 1 - lcd_data_write(0x01); - lcd_command_write(0XB3); // WEMODE=0(Page 1) , pixels over window setting will be ignored.//frame rate control in partial mode/full colors - lcd_data_write(0x00); - lcd_command_write(0xE5); // Page 0 - lcd_data_write(0x00); - lcd_command_write(0xF0); // Exit ENG , must be set before gamma setting - lcd_data_write(0x36); - lcd_data_write(0xA5); - lcd_data_write(0x53); - lcd_command_write(0xE0); // Gamma setting - //y fine adjustment register for positive polarity - lcd_data_write(0x00); - lcd_data_write(0x35); - lcd_data_write(0x33); - //y gradient adjustment register for positive polarity - lcd_data_write(0x00); - //y amplitude adjustment register for positive polarity - lcd_data_write(0x00); - lcd_data_write(0x00); - //y fine adjustment register for negative polarity - lcd_data_write(0x00); - lcd_data_write(0x35); - lcd_data_write(0x33); - //y gradient adjustment register for negative polarity - lcd_data_write(0x00); - //y amplitude adjustment register for negative polarity - lcd_data_write(0x00); - lcd_data_write(0x00); - lcd_command_write(0x36); // memory data access control // - lcd_data_write(0x48);// - lcd_command_write(0x3A); // interface pixel format setting - lcd_data_write(0x55);//16-bits - lcd_command_write(0x11); // Exit sleep mode - lcd_command_write(0x29); // Display on + lcd_command_write(0xC0);//power control1 command/w/ + lcd_data_write(0x0A); // P-Gamma level//4.1875v + lcd_data_write(0x0A); // N-Gamma level + lcd_command_write(0xC1); // BT & VC Setting//power contrl2 command/w/ + lcd_data_write(0x41); + lcd_data_write(0x07); // VCI1 = 2.5V + lcd_command_write(0xC2); // DC1.DC0 Setting//power control3 for normal mode + lcd_data_write(0x33); + lcd_command_write(0xC5);//VCOM control + lcd_data_write(0x00); //NV memory is not programmed + lcd_data_write(0x42); // VCM Setting + lcd_data_write(0x80); // VCM Register Enable + lcd_command_write(0xB0); //interface mode control //Polarity Setting + lcd_data_write(0x02); + lcd_command_write(0xB1);//frame rate control for normal mode + lcd_data_write(0xB0); // Frame Rate Setting//70 frame per second//no division for internal clocks + lcd_data_write(0x11);//17 clocks per line period for idle mode at cpu interface + lcd_command_write(0xB4);//dispaly inversion control + lcd_data_write(0x00); // disable Z-inversion , column inversion + lcd_command_write(0xB6); //display function control// RM.DM Setting + lcd_data_write(0x70);////0xF0 + lcd_data_write(0x02);//direction of gate scan: G1->G480 one by one, source scan: S1->S960, scan cycle if interval scan in non-display area + lcd_data_write(0x3B); // number of lines to drive LCD: 8*(0x3C) = 480 + lcd_command_write(0xB7); // Entry Mode + lcd_data_write(0x07); // disable low voltage detection, normal display, + lcd_command_write(0xF0); // Enter ENG , must be set before gamma setting + lcd_data_write(0x36); + lcd_data_write(0xA5); + lcd_data_write(0xD3); + lcd_command_write(0xE5); // Open gamma function , must be set before gamma setting + lcd_data_write(0x80); + lcd_command_write(0xE5); // Page 1 + lcd_data_write(0x01); + lcd_command_write(0XB3); // WEMODE=0(Page 1) , pixels over window setting will be ignored.//frame rate control in partial mode/full colors + lcd_data_write(0x00); + lcd_command_write(0xE5); // Page 0 + lcd_data_write(0x00); + lcd_command_write(0xF0); // Exit ENG , must be set before gamma setting + lcd_data_write(0x36); + lcd_data_write(0xA5); + lcd_data_write(0x53); + lcd_command_write(0xE0); // Gamma setting + //y fine adjustment register for positive polarity + lcd_data_write(0x00); + lcd_data_write(0x35); + lcd_data_write(0x33); + //y gradient adjustment register for positive polarity + lcd_data_write(0x00); + //y amplitude adjustment register for positive polarity + lcd_data_write(0x00); + lcd_data_write(0x00); + //y fine adjustment register for negative polarity + lcd_data_write(0x00); + lcd_data_write(0x35); + lcd_data_write(0x33); + //y gradient adjustment register for negative polarity + lcd_data_write(0x00); + //y amplitude adjustment register for negative polarity + lcd_data_write(0x00); + lcd_data_write(0x00); + lcd_command_write(0x36); // memory data access control // + lcd_data_write(0x48);// + lcd_command_write(0x3A); // interface pixel format setting + lcd_data_write(0x55);//16-bits + lcd_command_write(0x11); // Exit sleep mode + lcd_command_write(0x29); // Display on - delay(10); + delay(10); } /*! \brief insert a delay time diff --git a/bsp/gd32450z-eval/drivers/gd32f450z_lcd_eval.h b/bsp/gd32450z-eval/drivers/gd32f450z_lcd_eval.h index 815925a1700e06caf6115b40c33cdf3188d382f3..00b7f51cb24f6910abe8e9a26e7a8e2e2e5f5b88 100644 --- a/bsp/gd32450z-eval/drivers/gd32f450z_lcd_eval.h +++ b/bsp/gd32450z-eval/drivers/gd32f450z_lcd_eval.h @@ -13,10 +13,10 @@ #define GD32F450Z_LCD_EVAL_H #include "gd32f450z_eval.h" - + #define LCD_CS_PIN GPIO_PIN_11 #define LCD_CS_GPIO_PORT GPIOD -#define LCD_CS_GPIO_CLK RCU_GPIOD +#define LCD_CS_GPIO_CLK RCU_GPIOD #define LCD_RS_PIN GPIO_PIN_3 #define LCD_RS_GPIO_PORT GPIOE @@ -28,7 +28,7 @@ #define LCD_SPI_MOSI_PIN GPIO_PIN_14 #define LCD_SPI_MOSI_GPIO_PORT GPIOG -#define LCD_SPI_MOSI_GPIO_CLK RCU_GPIOG +#define LCD_SPI_MOSI_GPIO_CLK RCU_GPIOG #define LCD_SPI SPI5 #define LCD_SPI_CLK RCU_SPI5 @@ -52,4 +52,4 @@ void lcd_data_write(uint8_t value); /* configure the LCD based on the power on sequence */ void lcd_power_on(void); void lcd_power_on3(void); -#endif /* GD32F450Z_LCD_EVAL_H */ +#endif /* GD32F450Z_LCD_EVAL_H */ diff --git a/bsp/gd32450z-eval/drivers/synopsys_emac.h b/bsp/gd32450z-eval/drivers/synopsys_emac.h index cb0d62122fb96cdca424282952f4bb878aed02fe..1610f1954064935b6aa6d9025abab9a930bfa15a 100644 --- a/bsp/gd32450z-eval/drivers/synopsys_emac.h +++ b/bsp/gd32450z-eval/drivers/synopsys_emac.h @@ -22,7 +22,7 @@ #define __SYNOPSYS_EMAC_H__ #include - + /******************************************************************************/ /* Ethernet MAC Registers bits definitions */ @@ -48,8 +48,8 @@ #define EMAC_MACCR_RD ((rt_uint32_t)0x00000200) /* Retry disable */ #define EMAC_MACCR_APCS ((rt_uint32_t)0x00000080) /* Automatic Pad/CRC stripping */ #define EMAC_MACCR_BL ((rt_uint32_t)0x00000060) /* Back-off limit: random integer number (r) of slot time delays before rescheduling - a transmission attempt during retries after a collision: 0 =< r <2^k */ -#define EMAC_MACCR_BL_10 ((rt_uint32_t)0x00000000) /* k = min (n, 10) */ + a transmission attempt during retries after a collision: 0 =< r <2^k */ +#define EMAC_MACCR_BL_10 ((rt_uint32_t)0x00000000) /* k = min (n, 10) */ #define EMAC_MACCR_BL_8 ((rt_uint32_t)0x00000020) /* k = min (n, 8) */ #define EMAC_MACCR_BL_4 ((rt_uint32_t)0x00000040) /* k = min (n, 4) */ #define EMAC_MACCR_BL_1 ((rt_uint32_t)0x00000060) /* k = min (n, 1) */ @@ -60,45 +60,45 @@ /* Bit definition for Ethernet MAC Frame Filter Register */ #define EMAC_MACFFR_RA ((rt_uint32_t)0x80000000) /* Receive all */ #define EMAC_MACFFR_HPF ((rt_uint32_t)0x00000400) /* Hash or perfect filter */ -#define EMAC_MACFFR_SAF ((rt_uint32_t)0x00000200) /* Source address filter enable */ +#define EMAC_MACFFR_SAF ((rt_uint32_t)0x00000200) /* Source address filter enable */ #define EMAC_MACFFR_SAIF ((rt_uint32_t)0x00000100) /* SA inverse filtering */ #define EMAC_MACFFR_PCF ((rt_uint32_t)0x000000C0) /* Pass control frames: 3 cases */ #define EMAC_MACFFR_PCF_BlockAll ((rt_uint32_t)0x00000040) /* MAC filters all control frames from reaching the application */ #define EMAC_MACFFR_PCF_ForwardAll ((rt_uint32_t)0x00000080) /* MAC forwards all control frames to application even if they fail the Address Filter */ #define EMAC_MACFFR_PCF_ForwardPassedAddrFilter ((rt_uint32_t)0x000000C0) /* MAC forwards control frames that pass the Address Filter. */ #define EMAC_MACFFR_BFD ((rt_uint32_t)0x00000020) /* Broadcast frame disable */ -#define EMAC_MACFFR_PAM ((rt_uint32_t)0x00000010) /* Pass all mutlicast */ +#define EMAC_MACFFR_PAM ((rt_uint32_t)0x00000010) /* Pass all mutlicast */ #define EMAC_MACFFR_DAIF ((rt_uint32_t)0x00000008) /* DA Inverse filtering */ -#define EMAC_MACFFR_HM ((rt_uint32_t)0x00000004) /* Hash multicast */ -#define EMAC_MACFFR_HU ((rt_uint32_t)0x00000002) /* Hash unicast */ -#define EMAC_MACFFR_PM ((rt_uint32_t)0x00000001) /* Promiscuous mode */ +#define EMAC_MACFFR_HM ((rt_uint32_t)0x00000004) /* Hash multicast */ +#define EMAC_MACFFR_HU ((rt_uint32_t)0x00000002) /* Hash unicast */ +#define EMAC_MACFFR_PM ((rt_uint32_t)0x00000001) /* Promiscuous mode */ /* Bit definition for Ethernet MAC Hash Table High Register */ -#define EMAC_MACHTHR_HTH ((rt_uint32_t)0xFFFFFFFF) /* Hash table high */ +#define EMAC_MACHTHR_HTH ((rt_uint32_t)0xFFFFFFFF) /* Hash table high */ /* Bit definition for Ethernet MAC Hash Table Low Register */ -#define EMAC_MACHTLR_HTL ((rt_uint32_t)0xFFFFFFFF) /* Hash table low */ +#define EMAC_MACHTLR_HTL ((rt_uint32_t)0xFFFFFFFF) /* Hash table low */ /* Bit definition for Ethernet MAC MII Address Register */ -#define EMAC_MACMIIAR_PA ((rt_uint32_t)0x0000F800) /* Physical layer address */ -#define EMAC_MACMIIAR_MR ((rt_uint32_t)0x000007C0) /* MII register in the selected PHY */ -#define EMAC_MACMIIAR_CR ((rt_uint32_t)0x0000001C) /* CR clock range: 6 cases */ +#define EMAC_MACMIIAR_PA ((rt_uint32_t)0x0000F800) /* Physical layer address */ +#define EMAC_MACMIIAR_MR ((rt_uint32_t)0x000007C0) /* MII register in the selected PHY */ +#define EMAC_MACMIIAR_CR ((rt_uint32_t)0x0000001C) /* CR clock range: 6 cases */ #define EMAC_MACMIIAR_CR_Div42 ((rt_uint32_t)0x00000000) /* HCLK:60-100 MHz; MDC clock= HCLK/42 */ #define EMAC_MACMIIAR_CR_Div62 ((rt_uint32_t)0x00000004) /* HCLK:100-150 MHz; MDC clock= HCLK/62 */ #define EMAC_MACMIIAR_CR_Div16 ((rt_uint32_t)0x00000008) /* HCLK:20-35 MHz; MDC clock= HCLK/16 */ #define EMAC_MACMIIAR_CR_Div26 ((rt_uint32_t)0x0000000C) /* HCLK:35-60 MHz; MDC clock= HCLK/26 */ #define EMAC_MACMIIAR_CR_Div102 ((rt_uint32_t)0x00000010) /* HCLK:150-250 MHz; MDC clock= HCLK/102 */ #define EMAC_MACMIIAR_CR_Div122 ((rt_uint32_t)0x00000014) /* HCLK:250-300 MHz; MDC clock= HCLK/122*/ -#define EMAC_MACMIIAR_MW ((rt_uint32_t)0x00000002) /* MII write */ -#define EMAC_MACMIIAR_MB ((rt_uint32_t)0x00000001) /* MII busy */ +#define EMAC_MACMIIAR_MW ((rt_uint32_t)0x00000002) /* MII write */ +#define EMAC_MACMIIAR_MB ((rt_uint32_t)0x00000001) /* MII busy */ /* Bit definition for Ethernet MAC MII Data Register */ -#define EMAC_MACMIIDR_MD ((rt_uint32_t)0x0000FFFF) /* MII data: read/write data from/to PHY */ +#define EMAC_MACMIIDR_MD ((rt_uint32_t)0x0000FFFF) /* MII data: read/write data from/to PHY */ /* Bit definition for Ethernet MAC Flow Control Register */ -#define EMAC_MACFCR_PT ((rt_uint32_t)0xFFFF0000) /* Pause time */ -#define EMAC_MACFCR_ZQPD ((rt_uint32_t)0x00000080) /* Zero-quanta pause disable */ -#define EMAC_MACFCR_PLT ((rt_uint32_t)0x00000030) /* Pause low threshold: 4 cases */ +#define EMAC_MACFCR_PT ((rt_uint32_t)0xFFFF0000) /* Pause time */ +#define EMAC_MACFCR_ZQPD ((rt_uint32_t)0x00000080) /* Zero-quanta pause disable */ +#define EMAC_MACFCR_PLT ((rt_uint32_t)0x00000030) /* Pause low threshold: 4 cases */ #define EMAC_MACFCR_PLT_Minus4 ((rt_uint32_t)0x00000000) /* Pause time minus 4 slot times */ #define EMAC_MACFCR_PLT_Minus28 ((rt_uint32_t)0x00000010) /* Pause time minus 28 slot times */ #define EMAC_MACFCR_PLT_Minus144 ((rt_uint32_t)0x00000020) /* Pause time minus 144 slot times */ @@ -441,7 +441,7 @@ #define EMAC_DMACHRBAR_HRBAP ((rt_uint32_t)0xFFFFFFFF) /* Host receive buffer address pointer */ //typedef enum { -// RESET = 0, SET = !RESET +// RESET = 0, SET = !RESET //} FlagStatus, ITStatus; //typedef enum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState; @@ -450,165 +450,165 @@ */ typedef struct { - /** - * MAC - */ - rt_uint32_t EMAC_AutoNegotiation; /* Selects or not the AutoNegotiation mode for the external PHY - The AutoNegotiation allows an automatic setting of the Speed (10/100Mbps) - and the mode (half/full-duplex). - This parameter can be a value of @ref EMAC_AutoNegotiation */ + /** + * MAC + */ + rt_uint32_t EMAC_AutoNegotiation; /* Selects or not the AutoNegotiation mode for the external PHY + The AutoNegotiation allows an automatic setting of the Speed (10/100Mbps) + and the mode (half/full-duplex). + This parameter can be a value of @ref EMAC_AutoNegotiation */ - rt_uint32_t EMAC_Watchdog; /* Selects or not the Watchdog timer - When enabled, the MAC allows no more then 2048 bytes to be received. - When disabled, the MAC can receive up to 16384 bytes. - This parameter can be a value of @ref EMAC_watchdog */ + rt_uint32_t EMAC_Watchdog; /* Selects or not the Watchdog timer + When enabled, the MAC allows no more then 2048 bytes to be received. + When disabled, the MAC can receive up to 16384 bytes. + This parameter can be a value of @ref EMAC_watchdog */ - rt_uint32_t EMAC_Jabber; /* Selects or not Jabber timer - When enabled, the MAC allows no more then 2048 bytes to be sent. - When disabled, the MAC can send up to 16384 bytes. - This parameter can be a value of @ref EMAC_Jabber */ + rt_uint32_t EMAC_Jabber; /* Selects or not Jabber timer + When enabled, the MAC allows no more then 2048 bytes to be sent. + When disabled, the MAC can send up to 16384 bytes. + This parameter can be a value of @ref EMAC_Jabber */ - rt_uint32_t EMAC_InterFrameGap; /* Selects the minimum IFG between frames during transmission - This parameter can be a value of @ref EMAC_Inter_Frame_Gap */ + rt_uint32_t EMAC_InterFrameGap; /* Selects the minimum IFG between frames during transmission + This parameter can be a value of @ref EMAC_Inter_Frame_Gap */ - rt_uint32_t EMAC_CarrierSense; /* Selects or not the Carrier Sense - This parameter can be a value of @ref EMAC_Carrier_Sense */ + rt_uint32_t EMAC_CarrierSense; /* Selects or not the Carrier Sense + This parameter can be a value of @ref EMAC_Carrier_Sense */ - rt_uint32_t EMAC_Speed; /* Sets the Ethernet speed: 10/100 Mbps - This parameter can be a value of @ref EMAC_Speed */ + rt_uint32_t EMAC_Speed; /* Sets the Ethernet speed: 10/100 Mbps + This parameter can be a value of @ref EMAC_Speed */ - rt_uint32_t EMAC_ReceiveOwn; /* Selects or not the ReceiveOwn - ReceiveOwn allows the reception of frames when the TX_EN signal is asserted - in Half-Duplex mode - This parameter can be a value of @ref EMAC_Receive_Own */ + rt_uint32_t EMAC_ReceiveOwn; /* Selects or not the ReceiveOwn + ReceiveOwn allows the reception of frames when the TX_EN signal is asserted + in Half-Duplex mode + This parameter can be a value of @ref EMAC_Receive_Own */ - rt_uint32_t EMAC_LoopbackMode; /* Selects or not the internal MAC MII Loopback mode - This parameter can be a value of @ref EMAC_Loop_Back_Mode */ + rt_uint32_t EMAC_LoopbackMode; /* Selects or not the internal MAC MII Loopback mode + This parameter can be a value of @ref EMAC_Loop_Back_Mode */ - rt_uint32_t EMAC_Mode; /* Selects the MAC duplex mode: Half-Duplex or Full-Duplex mode - This parameter can be a value of @ref EMAC_Duplex_Mode */ + rt_uint32_t EMAC_Mode; /* Selects the MAC duplex mode: Half-Duplex or Full-Duplex mode + This parameter can be a value of @ref EMAC_Duplex_Mode */ - rt_uint32_t EMAC_ChecksumOffload; /* Selects or not the IPv4 checksum checking for received frame payloads' TCP/UDP/ICMP headers. - This parameter can be a value of @ref EMAC_Checksum_Offload */ + rt_uint32_t EMAC_ChecksumOffload; /* Selects or not the IPv4 checksum checking for received frame payloads' TCP/UDP/ICMP headers. + This parameter can be a value of @ref EMAC_Checksum_Offload */ - rt_uint32_t EMAC_RetryTransmission; /* Selects or not the MAC attempt retries transmission, based on the settings of BL, - when a colision occurs (Half-Duplex mode) - This parameter can be a value of @ref EMAC_Retry_Transmission */ + rt_uint32_t EMAC_RetryTransmission; /* Selects or not the MAC attempt retries transmission, based on the settings of BL, + when a colision occurs (Half-Duplex mode) + This parameter can be a value of @ref EMAC_Retry_Transmission */ - rt_uint32_t EMAC_AutomaticPadCRCStrip; /* Selects or not the Automatic MAC Pad/CRC Stripping - This parameter can be a value of @ref EMAC_Automatic_Pad_CRC_Strip */ + rt_uint32_t EMAC_AutomaticPadCRCStrip; /* Selects or not the Automatic MAC Pad/CRC Stripping + This parameter can be a value of @ref EMAC_Automatic_Pad_CRC_Strip */ - rt_uint32_t EMAC_BackOffLimit; /* Selects the BackOff limit value - This parameter can be a value of @ref EMAC_Back_Off_Limit */ + rt_uint32_t EMAC_BackOffLimit; /* Selects the BackOff limit value + This parameter can be a value of @ref EMAC_Back_Off_Limit */ - rt_uint32_t EMAC_DeferralCheck; /* Selects or not the deferral check function (Half-Duplex mode) - This parameter can be a value of @ref EMAC_Deferral_Check */ + rt_uint32_t EMAC_DeferralCheck; /* Selects or not the deferral check function (Half-Duplex mode) + This parameter can be a value of @ref EMAC_Deferral_Check */ - rt_uint32_t EMAC_ReceiveAll; /* Selects or not all frames reception by the MAC (No fitering) - This parameter can be a value of @ref EMAC_Receive_All */ + rt_uint32_t EMAC_ReceiveAll; /* Selects or not all frames reception by the MAC (No fitering) + This parameter can be a value of @ref EMAC_Receive_All */ - rt_uint32_t EMAC_SourceAddrFilter; /* Selects the Source Address Filter mode - This parameter can be a value of @ref EMAC_Source_Addr_Filter */ + rt_uint32_t EMAC_SourceAddrFilter; /* Selects the Source Address Filter mode + This parameter can be a value of @ref EMAC_Source_Addr_Filter */ - rt_uint32_t EMAC_PassControlFrames; /* Sets the forwarding mode of the control frames (including unicast and multicast PAUSE frames) - This parameter can be a value of @ref EMAC_Pass_Control_Frames */ + rt_uint32_t EMAC_PassControlFrames; /* Sets the forwarding mode of the control frames (including unicast and multicast PAUSE frames) + This parameter can be a value of @ref EMAC_Pass_Control_Frames */ - rt_uint32_t EMAC_BroadcastFramesReception; /* Selects or not the reception of Broadcast Frames - This parameter can be a value of @ref EMAC_Broadcast_Frames_Reception */ + rt_uint32_t EMAC_BroadcastFramesReception; /* Selects or not the reception of Broadcast Frames + This parameter can be a value of @ref EMAC_Broadcast_Frames_Reception */ - rt_uint32_t EMAC_DestinationAddrFilter; /* Sets the destination filter mode for both unicast and multicast frames - This parameter can be a value of @ref EMAC_Destination_Addr_Filter */ + rt_uint32_t EMAC_DestinationAddrFilter; /* Sets the destination filter mode for both unicast and multicast frames + This parameter can be a value of @ref EMAC_Destination_Addr_Filter */ - rt_uint32_t EMAC_PromiscuousMode; /* Selects or not the Promiscuous Mode - This parameter can be a value of @ref EMAC_Promiscuous_Mode */ + rt_uint32_t EMAC_PromiscuousMode; /* Selects or not the Promiscuous Mode + This parameter can be a value of @ref EMAC_Promiscuous_Mode */ - rt_uint32_t EMAC_MulticastFramesFilter; /* Selects the Multicast Frames filter mode: None/HashTableFilter/PerfectFilter/PerfectHashTableFilter - This parameter can be a value of @ref EMAC_Multicast_Frames_Filter */ + rt_uint32_t EMAC_MulticastFramesFilter; /* Selects the Multicast Frames filter mode: None/HashTableFilter/PerfectFilter/PerfectHashTableFilter + This parameter can be a value of @ref EMAC_Multicast_Frames_Filter */ - rt_uint32_t EMAC_UnicastFramesFilter; /* Selects the Unicast Frames filter mode: HashTableFilter/PerfectFilter/PerfectHashTableFilter - This parameter can be a value of @ref EMAC_Unicast_Frames_Filter */ + rt_uint32_t EMAC_UnicastFramesFilter; /* Selects the Unicast Frames filter mode: HashTableFilter/PerfectFilter/PerfectHashTableFilter + This parameter can be a value of @ref EMAC_Unicast_Frames_Filter */ - rt_uint32_t EMAC_HashTableHigh; /* This field holds the higher 32 bits of Hash table. */ + rt_uint32_t EMAC_HashTableHigh; /* This field holds the higher 32 bits of Hash table. */ - rt_uint32_t EMAC_HashTableLow; /* This field holds the lower 32 bits of Hash table. */ + rt_uint32_t EMAC_HashTableLow; /* This field holds the lower 32 bits of Hash table. */ - rt_uint32_t EMAC_PauseTime; /* This field holds the value to be used in the Pause Time field in the - transmit control frame */ + rt_uint32_t EMAC_PauseTime; /* This field holds the value to be used in the Pause Time field in the + transmit control frame */ - rt_uint32_t EMAC_ZeroQuantaPause; /* Selects or not the automatic generation of Zero-Quanta Pause Control frames - This parameter can be a value of @ref EMAC_Zero_Quanta_Pause */ + rt_uint32_t EMAC_ZeroQuantaPause; /* Selects or not the automatic generation of Zero-Quanta Pause Control frames + This parameter can be a value of @ref EMAC_Zero_Quanta_Pause */ - rt_uint32_t EMAC_PauseLowThreshold; /* This field configures the threshold of the PAUSE to be checked for - automatic retransmission of PAUSE Frame - This parameter can be a value of @ref EMAC_Pause_Low_Threshold */ + rt_uint32_t EMAC_PauseLowThreshold; /* This field configures the threshold of the PAUSE to be checked for + automatic retransmission of PAUSE Frame + This parameter can be a value of @ref EMAC_Pause_Low_Threshold */ - rt_uint32_t EMAC_UnicastPauseFrameDetect; /* Selects or not the MAC detection of the Pause frames (with MAC Address0 - unicast address and unique multicast address) - This parameter can be a value of @ref EMAC_Unicast_Pause_Frame_Detect */ + rt_uint32_t EMAC_UnicastPauseFrameDetect; /* Selects or not the MAC detection of the Pause frames (with MAC Address0 + unicast address and unique multicast address) + This parameter can be a value of @ref EMAC_Unicast_Pause_Frame_Detect */ - rt_uint32_t EMAC_ReceiveFlowControl; /* Enables or disables the MAC to decode the received Pause frame and - disable its transmitter for a specified time (Pause Time) - This parameter can be a value of @ref EMAC_Receive_Flow_Control */ + rt_uint32_t EMAC_ReceiveFlowControl; /* Enables or disables the MAC to decode the received Pause frame and + disable its transmitter for a specified time (Pause Time) + This parameter can be a value of @ref EMAC_Receive_Flow_Control */ - rt_uint32_t EMAC_TransmitFlowControl; /* Enables or disables the MAC to transmit Pause frames (Full-Duplex mode) - or the MAC back-pressure operation (Half-Duplex mode) - This parameter can be a value of @ref EMAC_Transmit_Flow_Control */ + rt_uint32_t EMAC_TransmitFlowControl; /* Enables or disables the MAC to transmit Pause frames (Full-Duplex mode) + or the MAC back-pressure operation (Half-Duplex mode) + This parameter can be a value of @ref EMAC_Transmit_Flow_Control */ - rt_uint32_t EMAC_VLANTagComparison; /* Selects the 12-bit VLAN identifier or the complete 16-bit VLAN tag for - comparison and filtering - This parameter can be a value of @ref EMAC_VLAN_Tag_Comparison */ + rt_uint32_t EMAC_VLANTagComparison; /* Selects the 12-bit VLAN identifier or the complete 16-bit VLAN tag for + comparison and filtering + This parameter can be a value of @ref EMAC_VLAN_Tag_Comparison */ - rt_uint32_t EMAC_VLANTagIdentifier; /* Holds the VLAN tag identifier for receive frames */ + rt_uint32_t EMAC_VLANTagIdentifier; /* Holds the VLAN tag identifier for receive frames */ - /** - * DMA - */ + /** + * DMA + */ - rt_uint32_t EMAC_DropTCPIPChecksumErrorFrame; /* Selects or not the Dropping of TCP/IP Checksum Error Frames - This parameter can be a value of @ref EMAC_Drop_TCP_IP_Checksum_Error_Frame */ + rt_uint32_t EMAC_DropTCPIPChecksumErrorFrame; /* Selects or not the Dropping of TCP/IP Checksum Error Frames + This parameter can be a value of @ref EMAC_Drop_TCP_IP_Checksum_Error_Frame */ - rt_uint32_t EMAC_ReceiveStoreForward; /* Enables or disables the Receive store and forward mode - This parameter can be a value of @ref EMAC_Receive_Store_Forward */ + rt_uint32_t EMAC_ReceiveStoreForward; /* Enables or disables the Receive store and forward mode + This parameter can be a value of @ref EMAC_Receive_Store_Forward */ - rt_uint32_t EMAC_FlushReceivedFrame; /* Enables or disables the flushing of received frames - This parameter can be a value of @ref EMAC_Flush_Received_Frame */ + rt_uint32_t EMAC_FlushReceivedFrame; /* Enables or disables the flushing of received frames + This parameter can be a value of @ref EMAC_Flush_Received_Frame */ - rt_uint32_t EMAC_TransmitStoreForward; /* Enables or disables Transmit store and forward mode - This parameter can be a value of @ref EMAC_Transmit_Store_Forward */ + rt_uint32_t EMAC_TransmitStoreForward; /* Enables or disables Transmit store and forward mode + This parameter can be a value of @ref EMAC_Transmit_Store_Forward */ - rt_uint32_t EMAC_TransmitThresholdControl; /* Selects or not the Transmit Threshold Control - This parameter can be a value of @ref EMAC_Transmit_Threshold_Control */ + rt_uint32_t EMAC_TransmitThresholdControl; /* Selects or not the Transmit Threshold Control + This parameter can be a value of @ref EMAC_Transmit_Threshold_Control */ - rt_uint32_t EMAC_ForwardErrorFrames; /* Selects or not the forward to the DMA of erroneous frames - This parameter can be a value of @ref EMAC_Forward_Error_Frames */ + rt_uint32_t EMAC_ForwardErrorFrames; /* Selects or not the forward to the DMA of erroneous frames + This parameter can be a value of @ref EMAC_Forward_Error_Frames */ - rt_uint32_t EMAC_ForwardUndersizedGoodFrames; /* Enables or disables the Rx FIFO to forward Undersized frames (frames with no Error - and length less than 64 bytes) including pad-bytes and CRC) - This parameter can be a value of @ref EMAC_Forward_Undersized_Good_Frames */ + rt_uint32_t EMAC_ForwardUndersizedGoodFrames; /* Enables or disables the Rx FIFO to forward Undersized frames (frames with no Error + and length less than 64 bytes) including pad-bytes and CRC) + This parameter can be a value of @ref EMAC_Forward_Undersized_Good_Frames */ - rt_uint32_t EMAC_ReceiveThresholdControl; /* Selects the threshold level of the Receive FIFO - This parameter can be a value of @ref EMAC_Receive_Threshold_Control */ + rt_uint32_t EMAC_ReceiveThresholdControl; /* Selects the threshold level of the Receive FIFO + This parameter can be a value of @ref EMAC_Receive_Threshold_Control */ - rt_uint32_t EMAC_SecondFrameOperate; /* Selects or not the Operate on second frame mode, which allows the DMA to process a second - frame of Transmit data even before obtaining the status for the first frame. - This parameter can be a value of @ref EMAC_Second_Frame_Operate */ + rt_uint32_t EMAC_SecondFrameOperate; /* Selects or not the Operate on second frame mode, which allows the DMA to process a second + frame of Transmit data even before obtaining the status for the first frame. + This parameter can be a value of @ref EMAC_Second_Frame_Operate */ - rt_uint32_t EMAC_AddressAlignedBeats; /* Enables or disables the Address Aligned Beats - This parameter can be a value of @ref EMAC_Address_Aligned_Beats */ + rt_uint32_t EMAC_AddressAlignedBeats; /* Enables or disables the Address Aligned Beats + This parameter can be a value of @ref EMAC_Address_Aligned_Beats */ - rt_uint32_t EMAC_FixedBurst; /* Enables or disables the AHB Master interface fixed burst transfers - This parameter can be a value of @ref EMAC_Fixed_Burst */ + rt_uint32_t EMAC_FixedBurst; /* Enables or disables the AHB Master interface fixed burst transfers + This parameter can be a value of @ref EMAC_Fixed_Burst */ - rt_uint32_t EMAC_RxDMABurstLength; /* Indicates the maximum number of beats to be transferred in one Rx DMA transaction - This parameter can be a value of @ref EMAC_Rx_DMA_Burst_Length */ + rt_uint32_t EMAC_RxDMABurstLength; /* Indicates the maximum number of beats to be transferred in one Rx DMA transaction + This parameter can be a value of @ref EMAC_Rx_DMA_Burst_Length */ - rt_uint32_t EMAC_TxDMABurstLength; /* Indicates sthe maximum number of beats to be transferred in one Tx DMA transaction - This parameter can be a value of @ref EMAC_Tx_DMA_Burst_Length */ + rt_uint32_t EMAC_TxDMABurstLength; /* Indicates sthe maximum number of beats to be transferred in one Tx DMA transaction + This parameter can be a value of @ref EMAC_Tx_DMA_Burst_Length */ - rt_uint32_t EMAC_DescriptorSkipLength; /* Specifies the number of word to skip between two unchained int (Ring mode) */ + rt_uint32_t EMAC_DescriptorSkipLength; /* Specifies the number of word to skip between two unchained int (Ring mode) */ - rt_uint32_t EMAC_DMAArbitration; /* Selects the DMA Tx/Rx arbitration - This parameter can be a value of @ref EMAC_DMA_Arbitration */ + rt_uint32_t EMAC_DMAArbitration; /* Selects the DMA Tx/Rx arbitration + This parameter can be a value of @ref EMAC_DMA_Arbitration */ } EMAC_InitTypeDef; /**--------------------------------------------------------------------------**/ @@ -622,10 +622,10 @@ typedef struct */ typedef struct { - rt_uint32_t Status; /* Status */ - rt_uint32_t ControlBufferSize; /* Control and Buffer1, Buffer2 lengths */ - rt_uint32_t Buffer1Addr; /* Buffer1 address pointer */ - rt_uint32_t Buffer2NextDescAddr; /* Buffer2 or next descriptor address pointer */ + rt_uint32_t Status; /* Status */ + rt_uint32_t ControlBufferSize; /* Control and Buffer1, Buffer2 lengths */ + rt_uint32_t Buffer1Addr; /* Buffer1 address pointer */ + rt_uint32_t Buffer2NextDescAddr; /* Buffer2 or next descriptor address pointer */ } EMAC_DMADESCTypeDef; /**--------------------------------------------------------------------------**/ @@ -634,14 +634,14 @@ typedef struct */ /**--------------------------------------------------------------------------**/ -#define EMAC_MAX_PACKET_SIZE 1520 /* EMAC_HEADER + EMAC_EXTRA + MAX_EMAC_PAYLOAD + EMAC_CRC */ -#define EMAC_HEADER 14 /* 6 byte Dest addr, 6 byte Src addr, 2 byte length/type */ -#define EMAC_CRC 4 /* Ethernet CRC */ -#define EMAC_EXTRA 2 /* Extra bytes in some cases */ -#define VLAN_TAG 4 /* optional 802.1q VLAN Tag */ -#define MIN_EMAC_PAYLOAD 46 /* Minimum Ethernet payload size */ -#define MAX_EMAC_PAYLOAD 1500 /* Maximum Ethernet payload size */ -#define JUMBO_FRAME_PAYLOAD 9000 /* Jumbo frame payload size */ +#define EMAC_MAX_PACKET_SIZE 1520 /* EMAC_HEADER + EMAC_EXTRA + MAX_EMAC_PAYLOAD + EMAC_CRC */ +#define EMAC_HEADER 14 /* 6 byte Dest addr, 6 byte Src addr, 2 byte length/type */ +#define EMAC_CRC 4 /* Ethernet CRC */ +#define EMAC_EXTRA 2 /* Extra bytes in some cases */ +#define VLAN_TAG 4 /* optional 802.1q VLAN Tag */ +#define MIN_EMAC_PAYLOAD 46 /* Minimum Ethernet payload size */ +#define MAX_EMAC_PAYLOAD 1500 /* Maximum Ethernet payload size */ +#define JUMBO_FRAME_PAYLOAD 9000 /* Jumbo frame payload size */ /**--------------------------------------------------------------------------**/ /** @@ -1098,7 +1098,7 @@ struct rt_synopsys_eth volatile rt_uint32_t FCR; volatile rt_uint32_t VTR; rt_uint8_t RESERVED0[8]; - + volatile rt_uint32_t RWFFR; volatile rt_uint32_t PMTR; volatile rt_uint32_t LPICSR; diff --git a/bsp/gd32e230k-start/applications/main.c b/bsp/gd32e230k-start/applications/main.c index cabddf36d61e182a3873c9f11a479135a773d9f1..999becd3296f20c4cb0ad42440213d6cd9b4956b 100644 --- a/bsp/gd32e230k-start/applications/main.c +++ b/bsp/gd32e230k-start/applications/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32e230k-start/drivers/board.c b/bsp/gd32e230k-start/drivers/board.c index ea91fd7eb818cc8b5c462251514f88398ac6c0c3..5910ec4124a689ce5eacaccda6793b020e054151 100644 --- a/bsp/gd32e230k-start/drivers/board.c +++ b/bsp/gd32e230k-start/drivers/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -75,7 +75,7 @@ void rt_hw_board_init() rt_console_set_device(RT_CONSOLE_DEVICE_NAME); #endif -#ifdef RT_USING_HEAP +#ifdef RT_USING_HEAP rt_system_heap_init((void*)HEAP_BEGIN, (void*)HEAP_END); #endif } diff --git a/bsp/gd32e230k-start/drivers/board.h b/bsp/gd32e230k-start/drivers/board.h index abc8743562d315e9b13770cb70e0879e871f7ba2..7d491aeaa830337be560989484e6a698b1e7a5aa 100644 --- a/bsp/gd32e230k-start/drivers/board.h +++ b/bsp/gd32e230k-start/drivers/board.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -15,7 +15,7 @@ #include // Internal SRAM memory size[Kbytes] <8-64> -// Default: 64 +// Default: 64 #ifdef __ICCARM__ // Use *.icf ram symbal, to avoid hardcode. extern char __ICFEDIT_region_RAM_end__; diff --git a/bsp/gd32e230k-start/drivers/drv_gpio.c b/bsp/gd32e230k-start/drivers/drv_gpio.c index 4176798cfd1a973d6a2542da0bd3888c580baaa1..752f1489d7d96cb7c15bb9869317041afa1e42f9 100644 --- a/bsp/gd32e230k-start/drivers/drv_gpio.c +++ b/bsp/gd32e230k-start/drivers/drv_gpio.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -29,8 +29,8 @@ struct pin_index rcu_periph_enum clk; rt_uint32_t gpio_periph; rt_uint32_t pin; - rt_uint32_t port_src; - rt_uint32_t pin_src; + rt_uint32_t port_src; + rt_uint32_t pin_src; }; static const struct pin_index pins[] = @@ -38,8 +38,8 @@ static const struct pin_index pins[] = __GD32_PIN_DEFAULT, __GD32_PIN(2, F, 0), __GD32_PIN(3, F, 1), - __GD32_PIN_DEFAULT, - __GD32_PIN_DEFAULT, + __GD32_PIN_DEFAULT, + __GD32_PIN_DEFAULT, __GD32_PIN(6, A, 0), __GD32_PIN(7, A, 1), __GD32_PIN(8, A, 2), @@ -51,7 +51,7 @@ static const struct pin_index pins[] = __GD32_PIN(14, B, 0), __GD32_PIN(15, B, 1), __GD32_PIN(16, B, 2), - __GD32_PIN_DEFAULT, + __GD32_PIN_DEFAULT, __GD32_PIN(18, A, 8), __GD32_PIN(19, A, 9), __GD32_PIN(20, A, 10), @@ -136,8 +136,8 @@ void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode) { const struct pin_index *index; rt_uint32_t pin_mode; - rt_uint32_t otype; - rt_uint32_t pull_up_down; + rt_uint32_t otype; + rt_uint32_t pull_up_down; index = get_pin(pin); if (index == RT_NULL) { @@ -147,9 +147,9 @@ void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode) /* GPIO Periph clock enable */ rcu_periph_clock_enable(index->clk); pin_mode = GPIO_MODE_OUTPUT; - otype = GPIO_OTYPE_PP; - pull_up_down = GPIO_PUPD_NONE; - + otype = GPIO_OTYPE_PP; + pull_up_down = GPIO_PUPD_NONE; + switch(mode) { case PIN_MODE_OUTPUT: @@ -157,7 +157,7 @@ void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode) break; case PIN_MODE_OUTPUT_OD: /* output setting: od. */ - otype = GPIO_OTYPE_OD; + otype = GPIO_OTYPE_OD; break; case PIN_MODE_INPUT: /* input setting: not pull. */ @@ -166,20 +166,20 @@ void gd32_pin_mode(rt_device_t dev, rt_base_t pin, rt_base_t mode) case PIN_MODE_INPUT_PULLUP: /* input setting: pull up. */ pin_mode = GPIO_MODE_INPUT; - pull_up_down = GPIO_PUPD_PULLUP; + pull_up_down = GPIO_PUPD_PULLUP; break; case PIN_MODE_INPUT_PULLDOWN: /* input setting: pull down. */ - pin_mode = GPIO_MODE_INPUT; - pull_up_down = GPIO_PUPD_PULLDOWN; + pin_mode = GPIO_MODE_INPUT; + pull_up_down = GPIO_PUPD_PULLDOWN; break; default: break; } - gpio_mode_set(index->gpio_periph, pin_mode, pull_up_down, index->pin); + gpio_mode_set(index->gpio_periph, pin_mode, pull_up_down, index->pin); gpio_output_options_set(index->gpio_periph, otype, GPIO_OSPEED_50MHZ, index->pin); - + } void gd32_pin_write(rt_device_t dev, rt_base_t pin, rt_base_t value) @@ -333,7 +333,7 @@ rt_err_t gd32_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_ return RT_EINVAL; } irqmap = &pin_irq_map[hdr_index]; - + switch (pin_irq_hdr_tab[hdr_index].mode) { case PIN_IRQ_MODE_RISING: @@ -354,14 +354,14 @@ rt_err_t gd32_pin_irq_enable(struct rt_device *device, rt_base_t pin, rt_uint32_ /* enable and set interrupt priority */ nvic_irq_enable(irqmap->irqno, 5U); - + /* connect EXTI line to GPIO pin */ - syscfg_exti_line_config(index->port_src, index->pin_src); + syscfg_exti_line_config(index->port_src, index->pin_src); /* configure EXTI line */ exti_init((exti_line_enum)(index->pin), EXTI_INTERRUPT, trigger_mode); exti_interrupt_flag_clear((exti_line_enum)(index->pin)); - + rt_hw_interrupt_enable(level); } else if (enabled == PIN_IRQ_DISABLE) @@ -396,7 +396,7 @@ int rt_hw_pin_init(void) int result; result = rt_device_pin_register("pin", &_gd32_pin_ops, RT_NULL); - + return result; } INIT_BOARD_EXPORT(rt_hw_pin_init); @@ -415,7 +415,7 @@ void GD32_GPIO_EXTI_IRQHandler(rt_int8_t exti_line) { pin_irq_hdr(exti_line); exti_interrupt_flag_clear((exti_line_enum)(1 << exti_line)); - } + } } void EXTI0_IRQHandler(void) { diff --git a/bsp/gd32e230k-start/drivers/drv_gpio.h b/bsp/gd32e230k-start/drivers/drv_gpio.h index 3c758b27132c085bcca723c946a4f2b7500dcf88..ae9bda7dce0ee313be3e815ee6df888a98380be8 100644 --- a/bsp/gd32e230k-start/drivers/drv_gpio.h +++ b/bsp/gd32e230k-start/drivers/drv_gpio.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32e230k-start/drivers/drv_i2c.c b/bsp/gd32e230k-start/drivers/drv_i2c.c index 57f49e4633d9ef50d061df89e13e518f936ecb5e..62cd4eb973bf37047ca8cc0307f5ea9df8732407 100644 --- a/bsp/gd32e230k-start/drivers/drv_i2c.c +++ b/bsp/gd32e230k-start/drivers/drv_i2c.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -155,7 +155,7 @@ static int gd32_i2c_read(rt_uint32_t i2c_periph, rt_uint16_t slave_address, rt_u *p_buffer = i2c_data_receive(i2c_periph); /* point to the next location where the byte read will be saved */ - p_buffer++; + p_buffer++; /* decrement the read bytes counter */ data_byte--; @@ -264,7 +264,7 @@ static rt_size_t gd32_i2c_xfer(struct rt_i2c_bus_device *bus, struct rt_i2c_msg } } } - + ret = i; out: @@ -274,7 +274,7 @@ out: } static const struct rt_i2c_bus_device_ops i2c_ops = -{ +{ gd32_i2c_xfer, RT_NULL, RT_NULL @@ -311,7 +311,7 @@ int rt_hw_i2c_init(void) i2c_device.priv = (void *)&_i2c_bit_ops; rt_i2c_bit_add_bus(&i2c_device, I2C_BUS_NAME); - } + } #else /* register hardware I2C */ diff --git a/bsp/gd32e230k-start/drivers/drv_i2c.h b/bsp/gd32e230k-start/drivers/drv_i2c.h index 6e7de45260befeb2460a4b908a3a87b1843e1d65..c4b321594c20e6d061373607b9ed28feaef1f871 100644 --- a/bsp/gd32e230k-start/drivers/drv_i2c.h +++ b/bsp/gd32e230k-start/drivers/drv_i2c.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32e230k-start/drivers/drv_spi.c b/bsp/gd32e230k-start/drivers/drv_spi.c index 706756d3de93ba9617271b08a18b95bb7206e07a..8efc2a4664cc31112f9f50d7dc833c2771c1ed88 100644 --- a/bsp/gd32e230k-start/drivers/drv_spi.c +++ b/bsp/gd32e230k-start/drivers/drv_spi.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -115,7 +115,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat spi_init_struct.prescale = SPI_PSC_256; } } /* baudrate */ - + switch(configuration->mode & RT_SPI_MODE_3) { case RT_SPI_MODE_0: @@ -131,7 +131,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat spi_init_struct.clock_polarity_phase = SPI_CK_PL_HIGH_PH_2EDGE; break; } - + /* MSB or LSB */ if(configuration->mode & RT_SPI_MSB) { @@ -141,7 +141,7 @@ static rt_err_t configure(struct rt_spi_device* device, struct rt_spi_configurat { spi_init_struct.endian = SPI_ENDIAN_LSB; } - + spi_init_struct.trans_mode = SPI_TRANSMODE_FULLDUPLEX; spi_init_struct.device_mode = SPI_MASTER; spi_init_struct.nss = SPI_NSS_SOFT; @@ -177,7 +177,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes const rt_uint8_t * send_ptr = message->send_buf; rt_uint8_t * recv_ptr = message->recv_buf; rt_uint32_t size = message->length; - + DEBUG_PRINTF("spi poll transfer start: %d\n", size); while(size--) @@ -188,7 +188,7 @@ static rt_uint32_t xfer(struct rt_spi_device* device, struct rt_spi_message* mes { data = *send_ptr++; } - + // Todo: replace register read/write by gd32f3 lib //Wait until the transmit buffer is empty while(RESET == spi_i2s_flag_get(spi_periph, SPI_FLAG_TBE)); diff --git a/bsp/gd32e230k-start/drivers/drv_spi.h b/bsp/gd32e230k-start/drivers/drv_spi.h index 01bafb9964de814870046517f1280ded38aeaa20..ba8e55916ade3b116caca1555e6d54a9bf5176a4 100644 --- a/bsp/gd32e230k-start/drivers/drv_spi.h +++ b/bsp/gd32e230k-start/drivers/drv_spi.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32e230k-start/drivers/drv_usart.c b/bsp/gd32e230k-start/drivers/drv_usart.c index bf1f6b68a75d63393128caf4d61f99a03425837e..204ffa1ca1e3966d18306b83ef87bd781c80c182 100644 --- a/bsp/gd32e230k-start/drivers/drv_usart.c +++ b/bsp/gd32e230k-start/drivers/drv_usart.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -41,7 +41,7 @@ struct gd32_uart uint16_t tx_pin; uint32_t rx_port; uint32_t rx_af; - uint16_t rx_pin; + uint16_t rx_pin; struct rt_serial_device * serial; char *device_name; @@ -93,7 +93,7 @@ static const struct gd32_uart uarts[] = { "uart0", }, #endif - + #ifdef RT_USING_USART1 { USART1, // uart peripheral index @@ -122,18 +122,18 @@ void gd32_uart_gpio_init(struct gd32_uart *uart) /* enable USART clock */ rcu_periph_clock_enable(uart->tx_gpio_clk); rcu_periph_clock_enable(uart->rx_gpio_clk); - rcu_periph_clock_enable(uart->per_clk); + rcu_periph_clock_enable(uart->per_clk); /* connect port to USARTx_Tx */ gpio_af_set(uart->tx_port, uart->tx_af, uart->tx_pin); gpio_mode_set(uart->tx_port, GPIO_MODE_AF, GPIO_PUPD_NONE, uart->tx_pin); gpio_output_options_set(uart->tx_port, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, uart->tx_pin); - + /* connect port to USARTx_Rx */ gpio_af_set(uart->rx_port, uart->rx_af, uart->rx_pin); gpio_mode_set(uart->rx_port, GPIO_MODE_AF, GPIO_PUPD_NONE, uart->rx_pin); gpio_output_options_set(uart->rx_port, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, uart->rx_pin); - + NVIC_SetPriority(uart->irqn, 0); NVIC_EnableIRQ(uart->irqn); } @@ -146,9 +146,9 @@ static rt_err_t gd32_configure(struct rt_serial_device *serial, struct serial_co RT_ASSERT(cfg != RT_NULL); uart = (struct gd32_uart *)serial->parent.user_data; - + gd32_uart_gpio_init(uart); - + usart_baudrate_set(uart->uart_periph, cfg->baud_rate); switch (cfg->data_bits) @@ -228,7 +228,7 @@ static int gd32_putc(struct rt_serial_device *serial, char ch) usart_data_transmit(uart->uart_periph, ch); while((usart_flag_get(uart->uart_periph, USART_FLAG_TC) == RESET)); - + return 1; } diff --git a/bsp/gd32e230k-start/drivers/drv_usart.h b/bsp/gd32e230k-start/drivers/drv_usart.h index 0fb15bee6f8e363b4b7779598427bee817f19521..405909270625f30d0b2757ddec0b01debdf51b6b 100644 --- a/bsp/gd32e230k-start/drivers/drv_usart.h +++ b/bsp/gd32e230k-start/drivers/drv_usart.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32e230k-start/drivers/gd32e230_libopt.h b/bsp/gd32e230k-start/drivers/gd32e230_libopt.h index 61010d794fd7ee533a3c81cb45f71123965f22c5..767e929d8fc29474493c7241a328c18aca2391c9 100644 --- a/bsp/gd32e230k-start/drivers/gd32e230_libopt.h +++ b/bsp/gd32e230k-start/drivers/gd32e230_libopt.h @@ -1,7 +1,7 @@ /*! \file gd32e230_libopt.h \brief library optional for gd32e230 - + \version 2018-06-19, V1.0.0, firmware for GD32E230 */ @@ -10,27 +10,27 @@ All rights reserved. - Redistribution and use in source and binary forms, with or without modification, + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright notice, this + 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation + 2. Redistributions in binary form must reproduce 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 copyright holder nor the names of its contributors - may be used to endorse or promote products derived from this software without + 3. Neither the name of the copyright holder 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 HOLDER 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 + 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 HOLDER 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. */ diff --git a/bsp/gd32vf103v-eval/applications/main.c b/bsp/gd32vf103v-eval/applications/main.c index c411937c18148e62011da7be9b56af725d76a577..9d7d2edafe70e8365f25d98c20e9ddafe61991f6 100644 --- a/bsp/gd32vf103v-eval/applications/main.c +++ b/bsp/gd32vf103v-eval/applications/main.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32vf103v-eval/board/board.c b/bsp/gd32vf103v-eval/board/board.c index de2907c79b4a466791d76d03048ffd50ea14403c..5df6fa722f84d8f35a8518b4e90ff8798c2b4010 100644 --- a/bsp/gd32vf103v-eval/board/board.c +++ b/bsp/gd32vf103v-eval/board/board.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32vf103v-eval/board/board.h b/bsp/gd32vf103v-eval/board/board.h index 422634fc3845a9c08a8731fe43c384b370a52358..860d71698bdfc77209438b3ff6f7807b7ec77f1f 100644 --- a/bsp/gd32vf103v-eval/board/board.h +++ b/bsp/gd32vf103v-eval/board/board.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/gd32vf103v-eval/board/gd32vf103_libopt.h b/bsp/gd32vf103v-eval/board/gd32vf103_libopt.h index ca292d265930bcc41dd0b50c8f13a64240cd45c7..58ef8869003b1043c6219d37647bed22ade28231 100644 --- a/bsp/gd32vf103v-eval/board/gd32vf103_libopt.h +++ b/bsp/gd32vf103v-eval/board/gd32vf103_libopt.h @@ -8,27 +8,27 @@ /* Copyright (c) 2019, GigaDevice Semiconductor Inc. - Redistribution and use in source and binary forms, with or without modification, + Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - 1. Redistributions of source code must retain the above copyright notice, this + 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation + 2. Redistributions in binary form must reproduce 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 copyright holder nor the names of its contributors - may be used to endorse or promote products derived from this software without + 3. Neither the name of the copyright holder 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 HOLDER 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 + 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 HOLDER 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. */ diff --git a/bsp/gd32vf103v-eval/drivers/drv_gpio.c b/bsp/gd32vf103v-eval/drivers/drv_gpio.c index 95393cd4f2679e4e17ef7f36e24a3dda0aeb3bbd..ca56bf54a249cc5c6c6f089c63d560b5c367d441 100644 --- a/bsp/gd32vf103v-eval/drivers/drv_gpio.c +++ b/bsp/gd32vf103v-eval/drivers/drv_gpio.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -15,7 +15,7 @@ #define EXTI_(x) BIT(x) -static const struct pin_index pins[] = +static const struct pin_index pins[] = { #if defined(GPIOA) __GD32VF_PIN(0 , A, 0 ), @@ -126,7 +126,7 @@ static const struct pin_irq_map pin_irq_map[] = {GPIO_PIN_12, EXTI10_15_IRQn}, {GPIO_PIN_13, EXTI10_15_IRQn}, {GPIO_PIN_14, EXTI10_15_IRQn}, - {GPIO_PIN_15, EXTI10_15_IRQn}, + {GPIO_PIN_15, EXTI10_15_IRQn}, }; static struct rt_pin_irq_hdr pin_irq_hdr_tab[] = @@ -406,11 +406,11 @@ static rt_err_t gd32vf_pin_irq_enable(struct rt_device *device, rt_base_t pin, gpio_bit_reset(index->gpio_periph, index->pin); pin_irq_enable_mask &= ~irqmap->pinbit; - + eclic_irq_disable(irqmap->irqno); exti_interrupt_flag_clear(EXTI_(index->pin)); - - rt_hw_interrupt_enable(level); + + rt_hw_interrupt_enable(level); } else { diff --git a/bsp/gd32vf103v-eval/drivers/drv_gpio.h b/bsp/gd32vf103v-eval/drivers/drv_gpio.h index ccb8ea92a3e647d502ff43e650552b144f0ea81d..af1094e97dd9b2a980c8f94f15886e2aa7b96324 100644 --- a/bsp/gd32vf103v-eval/drivers/drv_gpio.h +++ b/bsp/gd32vf103v-eval/drivers/drv_gpio.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -38,4 +38,4 @@ int rt_hw_gpio_init(void); #endif /* __DRV_GPIO__H__ */ -/******************* end of file *******************/ \ No newline at end of file +/******************* end of file *******************/ diff --git a/bsp/gd32vf103v-eval/drivers/drv_usart.c b/bsp/gd32vf103v-eval/drivers/drv_usart.c index 9a15eca93364b859f456fdad7e6fd908b2af42b1..313440329c1ece04d6d325e698fa357ad1160dac 100644 --- a/bsp/gd32vf103v-eval/drivers/drv_usart.c +++ b/bsp/gd32vf103v-eval/drivers/drv_usart.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -15,7 +15,7 @@ #if !defined(BSP_USING_UART0) && !defined(BSP_USING_UART1) && !defined(BSP_USING_UART2) \ && !defined(BSP_USING_UART3) && !defined(BSP_USING_UART4) && !defined(BSP_USING_UART5) #error "Please define at least one BSP_USING_UARTx" - /* this driver can be disabled at menuconfig RT-Thread Components Device Drivers */ + /* this driver can be disabled at menuconfig → RT-Thread Components → Device Drivers */ #endif struct gd32_usart { diff --git a/bsp/maxim/MAX32660_EVSYS/board/board.c b/bsp/maxim/MAX32660_EVSYS/board/board.c index 5bc5a5f67947103b8075c42089bb4dbe121fccb5..d34b786c984e2c220f9e56b02d38f6f59b2f7f7c 100644 --- a/bsp/maxim/MAX32660_EVSYS/board/board.c +++ b/bsp/maxim/MAX32660_EVSYS/board/board.c @@ -66,3 +66,16 @@ void rt_hw_board_init(void) #endif } +void rt_hw_us_delay(rt_uint32_t us) +{ + rt_uint32_t start, now, delta, reload, us_tick; + start = SysTick->VAL; + reload = SysTick->LOAD; + us_tick = SystemCoreClock / 1000000UL; + do + { + now = SysTick->VAL; + delta = start >= now ? start - now : reload + start - now; + } + while (delta < us_tick * us); +} diff --git a/bsp/maxim/MAX32660_EVSYS/rtconfig.py b/bsp/maxim/MAX32660_EVSYS/rtconfig.py index 70faf43ff9f233caf26271b428a779f498a11dd1..48273268f4aa743bce189f6fbcadb1a246b27b16 100644 --- a/bsp/maxim/MAX32660_EVSYS/rtconfig.py +++ b/bsp/maxim/MAX32660_EVSYS/rtconfig.py @@ -62,6 +62,7 @@ if PLATFORM == 'gcc': elif PLATFORM == 'armcc': # toolchains CC = 'armcc' + CXX = 'armcc' AS = 'armasm' AR = 'armar' LINK = 'armlink' diff --git a/bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_h7.c b/bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_h7.c index 3e58cb7c54596602b172976c75929e3c8cb00fdb..2b8a4e1b3e89dabbe1a1eee363dbcc57f5842868 100644 --- a/bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_h7.c +++ b/bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_h7.c @@ -9,6 +9,7 @@ * 2019-3-2 jinsheng add Macro judgment * 2020-1-6 duminmin support single bank mode * 2020-5-17 yufanyufan77 support support H7 + * 2021-3-3 zhuyf233 fix some bugs */ #include "board.h" @@ -24,110 +25,6 @@ //#define DRV_DEBUG #define LOG_TAG "drv.flash" #include -#define ADDR_FLASH_SECTOR_0 ((rt_uint32_t)0x08000000) /* Base address of Sector 0, 128 Kbytes */ -#define ADDR_FLASH_SECTOR_1 ((rt_uint32_t)0x08020000) /* Base address of Sector 1, 128 Kbytes */ -#define ADDR_FLASH_SECTOR_2 ((rt_uint32_t)0x08040000) /* Base address of Sector 2, 128 Kbytes */ -#define ADDR_FLASH_SECTOR_3 ((rt_uint32_t)0x08060000) /* Base address of Sector 3, 128 Kbytes */ -#define ADDR_FLASH_SECTOR_4 ((rt_uint32_t)0x08080000) /* Base address of Sector 4, 128 Kbytes */ -#define ADDR_FLASH_SECTOR_5 ((rt_uint32_t)0x080A0000) /* Base address of Sector 5, 128 Kbytes */ -#define ADDR_FLASH_SECTOR_6 ((rt_uint32_t)0x080C0000) /* Base address of Sector 6, 128 Kbytes */ -#define ADDR_FLASH_SECTOR_7 ((rt_uint32_t)0x080E0000) /* Base address of Sector 7, 128 Kbytes */ -#define ADDR_FLASH_SECTOR_8 ((rt_uint32_t)0x08100000) /* Base address of Sector 8, 128 Kbytes */ - -#define FLASH_SECTOR_0 0U /* Sector Number 0 */ -#define FLASH_SECTOR_1 1U /* Sector Number 1 */ -#define FLASH_SECTOR_2 2U /* Sector Number 2 */ -#define FLASH_SECTOR_3 3U /* Sector Number 3 */ -#define FLASH_SECTOR_4 4U /* Sector Number 4 */ -#define FLASH_SECTOR_5 5U /* Sector Number 5 */ -#define FLASH_SECTOR_6 6U /* Sector Number 6 */ -#define FLASH_SECTOR_7 7U /* Sector Number 7 */ -/** - * @brief Gets the sector of a given address - * @param addr flash address - * @param flash bank - * @param flash sector - * @retval The sector of a given address - */ -static void GetSector(rt_uint32_t Address,uint32_t* bank,uint32_t* sector) -{ -#if defined (FLASH_OPTCR_nDBANK) - FLASH_OBProgramInitTypeDef OBInit; - uint32_t nbank = 0; - - /* get duel bank ability:nDBANK(Bit29) */ - HAL_FLASHEx_OBGetConfig(&OBInit); - nbank = ((OBInit.USERConfig & 0x20000000U) >> 29); - /* 1:single bank mode */ - if (1 == nbank) - { - if ((Address < ADDR_FLASH_SECTOR_1) && (Address >= ADDR_FLASH_SECTOR_0)) - { - sector = FLASH_SECTOR_0; - } - else if ((Address < ADDR_FLASH_SECTOR_2) && (Address >= ADDR_FLASH_SECTOR_1)) - { - sector = FLASH_SECTOR_1; - } - else if ((Address < ADDR_FLASH_SECTOR_3) && (Address >= ADDR_FLASH_SECTOR_2)) - { - sector = FLASH_SECTOR_2; - } - else if ((Address < ADDR_FLASH_SECTOR_4) && (Address >= ADDR_FLASH_SECTOR_3)) - { - sector = FLASH_SECTOR_3; - } - else if ((Address < ADDR_FLASH_SECTOR_5) && (Address >= ADDR_FLASH_SECTOR_4)) - { - sector = FLASH_SECTOR_4; - } - else if ((Address < ADDR_FLASH_SECTOR_6) && (Address >= ADDR_FLASH_SECTOR_5)) - { - sector = FLASH_SECTOR_5; - } - else if ((Address < ADDR_FLASH_SECTOR_7) && (Address >= ADDR_FLASH_SECTOR_6)) - { - sector = FLASH_SECTOR_6; - } - else if ((Address < ADDR_FLASH_SECTOR_8) && (Address >= ADDR_FLASH_SECTOR_7)) - { - sector = FLASH_SECTOR_7; - } - else if ((Address < ADDR_FLASH_SECTOR_9) && (Address >= ADDR_FLASH_SECTOR_8)) - { - sector = FLASH_SECTOR_8; - } - else if ((Address < ADDR_FLASH_SECTOR_10) && (Address >= ADDR_FLASH_SECTOR_9)) - { - sector = FLASH_SECTOR_9; - } - else if ((Address < ADDR_FLASH_SECTOR_11) && (Address >= ADDR_FLASH_SECTOR_10)) - { - sector = FLASH_SECTOR_10; - } - else - { - sector = FLASH_SECTOR_11; - } - } - else /* 0:dual bank mode */ - { - LOG_E("rtthread doesn't support duel bank mode yet!"); - RT_ASSERT(0); - } -#else /* no dual bank ability */ - *sector = (Address&0xffffff)/FLASH_SIZE_GRANULARITY_128K; - if(*sector>7) - { - *bank = FLASH_BANK_1; - *sector = *sector/2; - } - else - { - *bank = FLASH_BANK_2; - } -#endif -} /** * Read data from flash. @@ -137,16 +34,16 @@ static void GetSector(rt_uint32_t Address,uint32_t* bank,uint32_t* sector) * @param buf buffer to store read data * @param size read bytes size * - * @return result + * @retval The length of bytes that have been read */ int stm32_flash_read(rt_uint32_t addr, rt_uint8_t *buf, size_t size) { size_t i; - if ((addr + size) > STM32_FLASH_END_ADDRESS) + if ((addr + size - 1) > FLASH_END) { LOG_E("read outrange flash size! addr is (0x%p)", (void *)(addr + size)); - return -1; + return -RT_ERROR; } for (i = 0; i < size; i++, buf++, addr++) @@ -166,47 +63,68 @@ int stm32_flash_read(rt_uint32_t addr, rt_uint8_t *buf, size_t size) * @param buf the write data buffer * @param size write bytes size * - * @return result + * @return The length of bytes that have been written */ int stm32_flash_write(rt_uint32_t addr, const rt_uint8_t *buf, size_t size) { rt_err_t result = RT_EOK; - rt_uint32_t end_addr = addr + size; - rt_uint32_t bank = addr/ADDR_FLASH_SECTOR_8;; + rt_uint32_t end_addr = addr + size - 1, write_addr; + rt_uint32_t write_granularity = FLASH_NB_32BITWORD_IN_FLASHWORD * 4; + rt_uint32_t write_size = write_granularity; + rt_uint8_t write_buffer[32] = {0}; - if ((end_addr) > STM32_FLASH_END_ADDRESS) + if ((end_addr) > FLASH_END) { LOG_E("write outrange flash size! addr is (0x%p)", (void *)(addr + size)); return -RT_EINVAL; } + + if(addr % 32 != 0) + { + LOG_E("write addr must be 32-byte alignment"); + return -RT_EINVAL; + } if (size < 1) { return -RT_EINVAL; } - /* Unlock the Flash to enable the flash control register access */ HAL_FLASH_Unlock(); - __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR ); - - for (size_t i = 0; i < size/32; i++, addr+=32, buf+=32) + write_addr = (uint32_t)buf; + __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR); + while (addr < end_addr) { - /* write data to flash */ - if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, addr, (uint64_t)((uint32_t)buf)) == HAL_OK) + if(end_addr - addr + 1 < write_granularity) { - if (*(rt_uint8_t *)addr != *buf) + write_size = end_addr - addr + 1; + for(size_t i = 0; i < write_size; i++) { - result = -RT_ERROR; - break; + write_buffer[i] = *((uint8_t *)(write_addr + i)); } + write_addr = (uint32_t)((rt_uint32_t *)write_buffer); + } + if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD, addr, write_addr) == HAL_OK) + { + for(rt_uint8_t i = 0; i < write_size; i++) + { + if (*(rt_uint8_t *)(addr + i) != *(rt_uint8_t *)(write_addr + i)) + { + result = -RT_ERROR; + goto __exit; + } + } + addr += write_granularity; + write_addr += write_granularity; } else { result = -RT_ERROR; - break; + goto __exit; } } +__exit: HAL_FLASH_Lock(); if (result != RT_EOK) @@ -230,42 +148,74 @@ int stm32_flash_write(rt_uint32_t addr, const rt_uint8_t *buf, size_t size) int stm32_flash_erase(rt_uint32_t addr, size_t size) { rt_err_t result = RT_EOK; - rt_uint32_t FirstSector = 0, NbOfSectors = 0; rt_uint32_t SECTORError = 0; - rt_uint32_t bank = 0; - if ((addr + size) > STM32_FLASH_END_ADDRESS) + if ((addr + size - 1) > FLASH_END) { LOG_E("ERROR: erase outrange flash size! addr is (0x%p)\n", (void *)(addr + size)); return -RT_EINVAL; } + rt_uint32_t addr_bank1 = 0; + rt_uint32_t size_bank1 = 0; + rt_uint32_t addr_bank2 = 0; + rt_uint32_t size_bank2 = 0; + + if((addr + size) < FLASH_BANK2_BASE) + { + addr_bank1 = addr; + size_bank1 = size; + size_bank2 = 0; + } + else if(addr >= FLASH_BANK2_BASE) + { + size_bank1 = 0; + addr_bank2 = addr; + size_bank2 = size; + } + else + { + addr_bank1 = addr; + size_bank1 = FLASH_BANK2_BASE - addr_bank1; + addr_bank2 = FLASH_BANK2_BASE; + size_bank2 = addr + size - FLASH_BANK2_BASE; + } + /*Variable used for Erase procedure*/ FLASH_EraseInitTypeDef EraseInitStruct; - /* Unlock the Flash to enable the flash control register access */ HAL_FLASH_Unlock(); - - /* Get the 1st sector to erase */ - GetSector(addr,&bank,&FirstSector); - /* Get the number of sector to erase from 1st sector */ - GetSector(addr + size,0,&NbOfSectors); - NbOfSectors = NbOfSectors - FirstSector + 1; - /* Fill EraseInit structure */ EraseInitStruct.TypeErase = FLASH_TYPEERASE_SECTORS; EraseInitStruct.VoltageRange = FLASH_VOLTAGE_RANGE_3; - EraseInitStruct.Sector = FirstSector; - EraseInitStruct.NbSectors = NbOfSectors; - EraseInitStruct.Banks = bank; + SCB_DisableDCache(); + + if(size_bank1) + { + EraseInitStruct.Sector = (addr_bank1 - FLASH_BANK1_BASE) / FLASH_SECTOR_SIZE; + EraseInitStruct.NbSectors = (addr_bank1 + size_bank1 -1 - FLASH_BANK1_BASE) / FLASH_SECTOR_SIZE - EraseInitStruct.Sector + 1; + EraseInitStruct.Banks = FLASH_BANK_1; + if (HAL_FLASHEx_Erase(&EraseInitStruct, &SECTORError) != HAL_OK) + { + result = -RT_ERROR; + goto __exit; + } + } - if (HAL_FLASHEx_Erase(&EraseInitStruct, &SECTORError) != HAL_OK) + if(size_bank2) { - result = -RT_ERROR; - goto __exit; + EraseInitStruct.Sector = (addr_bank2 - FLASH_BANK2_BASE) / FLASH_SECTOR_SIZE; + EraseInitStruct.NbSectors = (addr_bank2 + size_bank2 -1 - FLASH_BANK2_BASE) / FLASH_SECTOR_SIZE - EraseInitStruct.Sector + 1; + EraseInitStruct.Banks = FLASH_BANK_2; + if (HAL_FLASHEx_Erase(&EraseInitStruct, &SECTORError) != HAL_OK) + { + result = -RT_ERROR; + goto __exit; + } } __exit: + SCB_EnableDCache(); HAL_FLASH_Lock(); if (result != RT_EOK) diff --git a/bsp/w60x/drivers/board.c b/bsp/w60x/drivers/board.c index e4e2ccde47a2208ce2d515dfd7be234b71002dee..188c698ba9ef5a4835bd345113748019e3cd5144 100644 --- a/bsp/w60x/drivers/board.c +++ b/bsp/w60x/drivers/board.c @@ -98,14 +98,14 @@ void disp_version_info(void) void wm_gpio_config(void) { - /* must call first */ - wm_gpio_af_disable(); - - /*MASTER SPI configuratioin*/ - wm_spi_cs_config(WM_IO_PA_02); - wm_spi_ck_config(WM_IO_PA_11); - wm_spi_di_config(WM_IO_PA_03); - wm_spi_do_config(WM_IO_PA_09); + /* must call first */ + wm_gpio_af_disable(); + + /*MASTER SPI configuratioin*/ + wm_spi_cs_config(WM_IO_PA_02); + wm_spi_ck_config(WM_IO_PA_11); + wm_spi_di_config(WM_IO_PA_03); + wm_spi_do_config(WM_IO_PA_09); } static int wm_infsl_init(void) diff --git a/bsp/w60x/drivers/drv_crypto.c b/bsp/w60x/drivers/drv_crypto.c index 4335e42b50ae45b70929e1b6a90ef2f414042f86..1e0db82cdef7b4269f7ce4cb95ba84e14539d5b3 100644 --- a/bsp/w60x/drivers/drv_crypto.c +++ b/bsp/w60x/drivers/drv_crypto.c @@ -465,25 +465,25 @@ static rt_err_t _bignum_exptmod(struct hwcrypto_bignum *bignum_ctx, const struct hw_bignum_mpi *b, const struct hw_bignum_mpi *c) { - pstm_int pa, pb, pm, pres; + pstm_int pa, pb, pm, pres; u32 * buff_a = NULL; - u32 * buff_b = NULL; - u32 * buff_m = NULL; - int err = -1; + u32 * buff_b = NULL; + u32 * buff_m = NULL; + int err = -1; void *buff; int buff_len; pstm_init(NULL, &pres); buff_a = tls_mem_alloc(a->total); - if(buff_a == NULL) - goto out; - buff_b = tls_mem_alloc(b->total); - if(buff_b == NULL) - goto out; - buff_m = tls_mem_alloc(c->total); - if(buff_m == NULL) - goto out; + if(buff_a == NULL) + goto out; + buff_b = tls_mem_alloc(b->total); + if(buff_b == NULL) + goto out; + buff_m = tls_mem_alloc(c->total); + if(buff_m == NULL) + goto out; memset(buff_a, 0, a->total); memset(buff_b, 0, b->total); @@ -494,29 +494,29 @@ static rt_err_t _bignum_exptmod(struct hwcrypto_bignum *bignum_ctx, memcpy(buff_m, c->p, c->total); pstm_reverse((unsigned char *)buff_a, a->total); - pstm_reverse((unsigned char *)buff_b, b->total); - pstm_reverse((unsigned char *)buff_m, c->total); + pstm_reverse((unsigned char *)buff_b, b->total); + pstm_reverse((unsigned char *)buff_m, c->total); // *((volatile unsigned int *)0x40000710) = *((volatile unsigned int *)0x40000710) | (0x1 << 28); - if ((err = pstm_init_for_read_unsigned_bin(NULL, &pa, a->total)) != PS_SUCCESS){ - goto out; - } - if ((err = pstm_read_unsigned_bin(&pa, (unsigned char *)buff_a, a->total)) != PS_SUCCESS) { - goto out; - } - if ((err = pstm_init_for_read_unsigned_bin(NULL, &pb, b->total)) != PS_SUCCESS){ - goto out; - } - if ((err = pstm_read_unsigned_bin(&pb, (unsigned char *)buff_b, b->total)) != PS_SUCCESS) { - goto out; - } - if ((err = pstm_init_for_read_unsigned_bin(NULL, &pm, c->total)) != PS_SUCCESS){ - goto out; - } - if ((err = pstm_read_unsigned_bin(&pm, (unsigned char *)buff_m, c->total)) != PS_SUCCESS) { - goto out; - } + if ((err = pstm_init_for_read_unsigned_bin(NULL, &pa, a->total)) != PS_SUCCESS){ + goto out; + } + if ((err = pstm_read_unsigned_bin(&pa, (unsigned char *)buff_a, a->total)) != PS_SUCCESS) { + goto out; + } + if ((err = pstm_init_for_read_unsigned_bin(NULL, &pb, b->total)) != PS_SUCCESS){ + goto out; + } + if ((err = pstm_read_unsigned_bin(&pb, (unsigned char *)buff_b, b->total)) != PS_SUCCESS) { + goto out; + } + if ((err = pstm_init_for_read_unsigned_bin(NULL, &pm, c->total)) != PS_SUCCESS){ + goto out; + } + if ((err = pstm_read_unsigned_bin(&pm, (unsigned char *)buff_m, c->total)) != PS_SUCCESS) { + goto out; + } tls_crypto_exptmod(&pa, &pb, &pm, &pres); buff_len = pstm_unsigned_bin_size(&pres); @@ -528,16 +528,16 @@ static rt_err_t _bignum_exptmod(struct hwcrypto_bignum *bignum_ctx, out: if(buff_a) - tls_mem_free(buff_a); - if(buff_b) - tls_mem_free(buff_b); - if(buff_m) - tls_mem_free(buff_m); + tls_mem_free(buff_a); + if(buff_b) + tls_mem_free(buff_b); + if(buff_m) + tls_mem_free(buff_m); - pstm_clear(&pa); - pstm_clear(&pb); - pstm_clear(&pm); - pstm_clear(&pres); + pstm_clear(&pa); + pstm_clear(&pb); + pstm_clear(&pm); + pstm_clear(&pres); if (a->sign < 0) { @@ -583,7 +583,7 @@ static const struct hwcrypto_crc_ops crc_ops = .update = _crc_update, }; -static const struct hwcrypto_bignum_ops bignum_ops = +static const struct hwcrypto_bignum_ops bignum_ops = { .add = RT_NULL, .sub = RT_NULL, @@ -722,7 +722,7 @@ int wm_hw_crypto_device_init(void) _crypto_dev.dev.ops = &_ops; _crypto_dev.dev.id = 0; - rt_memcpy(&_crypto_dev.dev.id, wpa_supplicant_get_mac(), + rt_memcpy(&_crypto_dev.dev.id, wpa_supplicant_get_mac(), sizeof(_crypto_dev.dev.id) > 6 ? 6 : sizeof(_crypto_dev.dev.id)); _crypto_dev.dev.user_data = &_crypto_dev; diff --git a/bsp/w60x/drivers/drv_rtc.c b/bsp/w60x/drivers/drv_rtc.c index fa0aee498c2ad99b524dc5c30af2a38897c08ac3..38da5aec58dce6a74a987211bcb7be021716fe49 100644 --- a/bsp/w60x/drivers/drv_rtc.c +++ b/bsp/w60x/drivers/drv_rtc.c @@ -172,7 +172,7 @@ static rt_size_t wm_rtc_write(rt_device_t dev, rt_off_t pos, const void *buffer, } #ifdef RT_USING_DEVICE_OPS -const static struct rt_device_ops _ops = +const static struct rt_device_ops _ops = { .init = wm_rtc_init, .open = wm_rtc_open, diff --git a/bsp/w60x/drivers/drv_soft_i2c.c b/bsp/w60x/drivers/drv_soft_i2c.c index b2e0b5b5083bcb22e44623643288b3bc26dbd8c1..1e44d5266291d471fa98dbc4a8c5a6b1a28783c3 100644 --- a/bsp/w60x/drivers/drv_soft_i2c.c +++ b/bsp/w60x/drivers/drv_soft_i2c.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -198,8 +198,8 @@ int rt_soft_i2c_init(void) w60x_i2c_bus_unlock(&soft_i2c_config[i]); LOG_D("software simulation %s init done, pin scl: %d, pin sda %d", - soft_i2c_config[i].bus_name, - soft_i2c_config[i].scl, + soft_i2c_config[i].bus_name, + soft_i2c_config[i].scl, soft_i2c_config[i].sda); } diff --git a/bsp/w60x/drivers/drv_soft_i2c.h b/bsp/w60x/drivers/drv_soft_i2c.h index ee50abea71e252be0e7fd20279a1921ab4fc79a3..9901a5958f64e3f1d4c2b1f1ba781681e644b1c2 100644 --- a/bsp/w60x/drivers/drv_soft_i2c.h +++ b/bsp/w60x/drivers/drv_soft_i2c.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/w60x/drivers/drv_standby.c b/bsp/w60x/drivers/drv_standby.c index 1c3de4bc3ab63611b5c5d609a983020264a42541..dfe699bf326238611fddd88e6657dae76b5a135d 100644 --- a/bsp/w60x/drivers/drv_standby.c +++ b/bsp/w60x/drivers/drv_standby.c @@ -33,7 +33,7 @@ extern void standby_idr(void); #if (1 == GCC_COMPILE) void wm_pm_standby(void) { - __asm volatile ( + __asm volatile ( " cpsid i \n" /* disable irq*/ " dsb \n" " ldr r0, =0X499 \n" @@ -76,7 +76,7 @@ void sys_start_standby(int ms) { return; } - tls_irq_enable(PMU_GPIO_WAKEUP_INT); //Open interrupt by default to clear the interrupt flag for IO wake-up + tls_irq_enable(PMU_GPIO_WAKEUP_INT); //Open interrupt by default to clear the interrupt flag for IO wake-up val = tls_reg_read32(HR_PMU_PS_CR); val |= 0x01; tls_reg_write32(HR_PMU_PS_CR, val); diff --git a/bsp/w60x/drivers/drv_uart.c b/bsp/w60x/drivers/drv_uart.c index 6a3c4c40fcdd7f2ef5d686aca2b6ee73d62de189..e2c0f0d1923f52031772761c90f849892b796422 100644 --- a/bsp/w60x/drivers/drv_uart.c +++ b/bsp/w60x/drivers/drv_uart.c @@ -208,7 +208,7 @@ static int wm_uart_flow_ctrl_set(TLS_UART_REGS_T *UARTx, TLS_UART_FLOW_CTRL_MODE case TLS_UART_FLOW_CTRL_HARDWARE: UARTx->UR_FC = (1UL << 0) | (6UL << 2); - break; + break; default: break; diff --git a/bsp/w60x/drivers/pin_config.h b/bsp/w60x/drivers/pin_config.h index cf1eb774c35af339dac2b2886096dfa0e8361b25..c704fafb22bcd998101b2bc44775e5d07dd32943 100644 --- a/bsp/w60x/drivers/pin_config.h +++ b/bsp/w60x/drivers/pin_config.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2019, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/w60x/oneshot/oneshot.c b/bsp/w60x/oneshot/oneshot.c index ee60a0b90726b5e9b0126a9f2f4f88e2a033dc5d..21beeeb90dfb1bc1c9fdf8a89ccacbc26e88feec 100644 --- a/bsp/w60x/oneshot/oneshot.c +++ b/bsp/w60x/oneshot/oneshot.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -16,37 +16,37 @@ /* start oneshot */ int wm_oneshot_start(WM_ONESHOT_MODE mode, wm_oneshot_callback callback) { - tls_wifi_oneshot_callback_register(callback); - if(mode == WM_UDP) - { - tls_wifi_set_oneshot_config_mode(0); - } + tls_wifi_oneshot_callback_register(callback); + if(mode == WM_UDP) + { + tls_wifi_set_oneshot_config_mode(0); + } else if (mode == WM_APSOCKET) { tls_wifi_set_oneshot_config_mode(1); - } - else if(mode == WM_APWEB) - { - tls_wifi_set_oneshot_config_mode(2); - } - else - { - return -1; - } - tls_wifi_set_oneshot_flag(1); - return 0; + } + else if(mode == WM_APWEB) + { + tls_wifi_set_oneshot_config_mode(2); + } + else + { + return -1; + } + tls_wifi_set_oneshot_flag(1); + return 0; } /* stop oneshot */ int wm_oneshot_stop(void) { - tls_wifi_oneshot_callback_delete(); - tls_wifi_set_oneshot_flag(0); - return 0; + tls_wifi_oneshot_callback_delete(); + tls_wifi_set_oneshot_flag(0); + return 0; } /* get status */ int wm_oneshot_get(void) { - return tls_wifi_get_oneshot_flag(); + return tls_wifi_get_oneshot_flag(); } diff --git a/bsp/w60x/oneshot/oneshot.h b/bsp/w60x/oneshot/oneshot.h index f9bd638c1a6e2d0cd392389ac9e64a961a7b4796..26f25d0735b9a23ccb7c63ec105fdd4c771959ea 100644 --- a/bsp/w60x/oneshot/oneshot.h +++ b/bsp/w60x/oneshot/oneshot.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -12,9 +12,9 @@ #define DRV_ONESHOT_H__ typedef enum{ - WM_UDP, + WM_UDP, WM_APSOCKET, - WM_APWEB + WM_APWEB }WM_ONESHOT_MODE; diff --git a/bsp/w60x/oneshot/oneshot_demo.c b/bsp/w60x/oneshot/oneshot_demo.c index 7012b5af5beb92716fde284f5f8201b961016345..b40e121f161ed8ce18bbbc71390cc3677316af33 100644 --- a/bsp/w60x/oneshot/oneshot_demo.c +++ b/bsp/w60x/oneshot/oneshot_demo.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * diff --git a/bsp/x86/drivers/console.c b/bsp/x86/drivers/console.c index b783872bae7ba80a4b35a63c0de965ae2156f321..4fe1daeeede40252f9c7a45530061ae359ed96b2 100644 --- a/bsp/x86/drivers/console.c +++ b/bsp/x86/drivers/console.c @@ -87,7 +87,7 @@ static void rt_cga_putc(int c) break; case '\n': crt_pos += CRT_COLS; - /* cascade */ + /* cascade */ case '\r': crt_pos -= (crt_pos % CRT_COLS); break; @@ -99,7 +99,7 @@ static void rt_cga_putc(int c) rt_console_putc(' '); break; default: - crt_buf[crt_pos++] = c; /* write the character */ + crt_buf[crt_pos++] = c; /* write the character */ break; } @@ -289,14 +289,14 @@ int rt_hw_console_init(void) rt_hw_interrupt_install(INTUART0_RX, rt_console_isr, RT_NULL, "COM1"); rt_hw_interrupt_umask(INTUART0_RX); - console_device.type = RT_Device_Class_Char; + console_device.type = RT_Device_Class_Char; console_device.rx_indicate = RT_NULL; console_device.tx_complete = RT_NULL; - console_device.init = rt_console_init; - console_device.open = rt_console_open; - console_device.close = rt_console_close; - console_device.read = rt_console_read; - console_device.write = rt_console_write; + console_device.init = rt_console_init; + console_device.open = rt_console_open; + console_device.close = rt_console_close; + console_device.read = rt_console_read; + console_device.write = rt_console_write; console_device.control = rt_console_control; console_device.user_data = RT_NULL; @@ -316,8 +316,8 @@ INIT_DEVICE_EXPORT(rt_hw_console_init); * @param str the displayed string * * Modified: - * caoxl 2009-10-14 - * the name is change to rt_hw_console_output in the v0.3.0 + * caoxl 2009-10-14 + * the name is change to rt_hw_console_output in the v0.3.0 * */ void rt_hw_console_output(const char* str) diff --git a/bsp/x86/drivers/dma.h b/bsp/x86/drivers/dma.h index 3e5e9b08d13f48d383182e04c15b61b52034bd34..9b87a309bbd890bae6bca1295bcef9900646eb65 100644 --- a/bsp/x86/drivers/dma.h +++ b/bsp/x86/drivers/dma.h @@ -101,7 +101,7 @@ static __inline__ void ClearDmaFF(unsigned int dmanr) OUTB(0, DMA2_CLEAR_FF_REG); } -/* +/* * 清空DMA 晶体计数器 */ static __inline__ void SetDmaMode(unsigned int dmanr, char mode) diff --git a/bsp/x86/drivers/floppy.c b/bsp/x86/drivers/floppy.c index f4675b9194915664446b8d884ac1e66c9eb9e97e..c144eb02eb561cf21a7d1ab6aed84bc9b0431ba2 100644 --- a/bsp/x86/drivers/floppy.c +++ b/bsp/x86/drivers/floppy.c @@ -31,7 +31,7 @@ typedef rt_int32_t s32; static u8 floppy_buffer[512]; /* 软盘高速缓冲区地址指针 */ -#define MAX_REPLIES 7 +#define MAX_REPLIES 7 static u8 floppy_reply_buffer[MAX_REPLIES]; /* 软驱回应缓冲区 */ #define ST0 (floppy_reply_buffer[0]) /* 软驱回应0号字节 */ #define ST1 (floppy_reply_buffer[1]) /* 软驱回应1号字节 */ @@ -114,7 +114,7 @@ u32 floppy_get_info(void) u8 CmType, FdType; floppy_sendbyte(0x10); - i = floppy_getbyte(); + i = floppy_getbyte(); switch (i) { @@ -180,7 +180,7 @@ void floppy_motorOff( void ) void floppy_setmode(void) -{ +{ floppy_sendbyte (FD_SPECIFY); floppy_sendbyte (0xcf); floppy_sendbyte (0x06); @@ -197,7 +197,7 @@ void block_to_hts(u32 block, u32 *head, u32 *track, u32 *sector ) void floppy_setupDMA(void) -{ +{ u32 eflags; _local_irq_save(eflags); DisableDma(2); @@ -235,7 +235,7 @@ void floppy_read_cmd(u32 blk) floppy_sendbyte (18); //floppy_sendbyte (sector+secs-1); /* Last sector in track:here are sectors count */ floppy_sendbyte (0x1B); - floppy_sendbyte (0xff); + floppy_sendbyte (0xff); return; } @@ -282,12 +282,12 @@ static rt_size_t rt_floppy_read(rt_device_t device, rt_off_t position, void *buf { panic("ST0 %d ST1 %d ST2 %d\n",ST0,ST1,ST2); } - + rt_memcpy(buffer, floppy_buffer, 512); floppy_motorOff(); io_delay(); - + position += 1; size -= 1; } diff --git a/bsp/x86/drivers/include/bsp.h b/bsp/x86/drivers/include/bsp.h index 93e409dbfaeddb3b58b7416864e776db5c00973c..fecb884ee8b4e6a7176288a69110ce210c0b920f 100644 --- a/bsp/x86/drivers/include/bsp.h +++ b/bsp/x86/drivers/include/bsp.h @@ -15,127 +15,127 @@ #ifdef __cplusplus extern "C" { #endif - + /*******************************************************************/ /* Timer Register */ /*******************************************************************/ -#define TIMER_CNTR0 (IO_TIMER1 + 0) /* timer 0 counter port */ -#define TIMER_CNTR1 (IO_TIMER1 + 1) /* timer 1 counter port */ -#define TIMER_CNTR2 (IO_TIMER1 + 2) /* timer 2 counter port */ -#define TIMER_MODE (IO_TIMER1 + 3) /* timer mode port */ -#define TIMER_SEL0 0x00 /* select counter 0 */ -#define TIMER_SEL1 0x40 /* select counter 1 */ -#define TIMER_INTTC 0x00 /* mode 0, intr on terminal cnt */ -#define TIMER_ONESHOT 0x02 /* mode 1, one shot */ -#define TIMER_RATEGEN 0x04 /* mode 2, rate generator */ -#define TIMER_SQWAVE 0x06 /* mode 3, square wave */ -#define TIMER_SWSTROBE 0x08 /* mode 4, s/w triggered strobe */ -#define TIMER_HWSTROBE 0x0a /* mode 5, h/w triggered strobe */ -#define TIMER_LATCH 0x00 /* latch counter for reading */ -#define TIMER_LSB 0x10 /* r/w counter LSB */ -#define TIMER_MSB 0x20 /* r/w counter MSB */ -#define TIMER_16BIT 0x30 /* r/w counter 16 bits, LSB first */ -#define TIMER_BCD 0x01 /* count in BCD */ - -#define TIMER_FREQ 1193182 -#define TIMER_DIV(x) ((TIMER_FREQ+(x)/2)/(x)) - -#define IO_TIMER1 0x040 /* 8253 Timer #1 */ +#define TIMER_CNTR0 (IO_TIMER1 + 0) /* timer 0 counter port */ +#define TIMER_CNTR1 (IO_TIMER1 + 1) /* timer 1 counter port */ +#define TIMER_CNTR2 (IO_TIMER1 + 2) /* timer 2 counter port */ +#define TIMER_MODE (IO_TIMER1 + 3) /* timer mode port */ +#define TIMER_SEL0 0x00 /* select counter 0 */ +#define TIMER_SEL1 0x40 /* select counter 1 */ +#define TIMER_INTTC 0x00 /* mode 0, intr on terminal cnt */ +#define TIMER_ONESHOT 0x02 /* mode 1, one shot */ +#define TIMER_RATEGEN 0x04 /* mode 2, rate generator */ +#define TIMER_SQWAVE 0x06 /* mode 3, square wave */ +#define TIMER_SWSTROBE 0x08 /* mode 4, s/w triggered strobe */ +#define TIMER_HWSTROBE 0x0a /* mode 5, h/w triggered strobe */ +#define TIMER_LATCH 0x00 /* latch counter for reading */ +#define TIMER_LSB 0x10 /* r/w counter LSB */ +#define TIMER_MSB 0x20 /* r/w counter MSB */ +#define TIMER_16BIT 0x30 /* r/w counter 16 bits, LSB first */ +#define TIMER_BCD 0x01 /* count in BCD */ + +#define TIMER_FREQ 1193182 +#define TIMER_DIV(x) ((TIMER_FREQ+(x)/2)/(x)) + +#define IO_TIMER1 0x040 /* 8253 Timer #1 */ /*******************************************************************/ /* Interrupt Controller */ /*******************************************************************/ /* these are processor defined */ -#define T_DIVIDE 0 /* divide error */ -#define T_DEBUG 1 /* debug exception */ -#define T_NMI 2 /* non-maskable interrupt */ -#define T_BRKPT 3 /* breakpoint */ -#define T_OFLOW 4 /* overflow */ -#define T_BOUND 5 /* bounds check */ -#define T_ILLOP 6 /* illegal opcode */ -#define T_DEVICE 7 /* device not available */ -#define T_DBLFLT 8 /* double fault */ +#define T_DIVIDE 0 /* divide error */ +#define T_DEBUG 1 /* debug exception */ +#define T_NMI 2 /* non-maskable interrupt */ +#define T_BRKPT 3 /* breakpoint */ +#define T_OFLOW 4 /* overflow */ +#define T_BOUND 5 /* bounds check */ +#define T_ILLOP 6 /* illegal opcode */ +#define T_DEVICE 7 /* device not available */ +#define T_DBLFLT 8 /* double fault */ /* 9 is reserved */ -#define T_TSS 10 /* invalid task switch segment */ -#define T_SEGNP 11 /* segment not present */ -#define T_STACK 12 /* stack exception */ -#define T_GPFLT 13 /* genernal protection fault */ -#define T_PGFLT 14 /* page fault */ +#define T_TSS 10 /* invalid task switch segment */ +#define T_SEGNP 11 /* segment not present */ +#define T_STACK 12 /* stack exception */ +#define T_GPFLT 13 /* genernal protection fault */ +#define T_PGFLT 14 /* page fault */ /* 15 is reserved */ -#define T_FPERR 16 /* floating point error */ -#define T_ALIGN 17 /* aligment check */ -#define T_MCHK 18 /* machine check */ -#define T_DEFAULT 500 /* catchall */ - -#define INTTIMER0 0 -#define INTKEYBOARD 1 -#define INTUART0_RX 4 -#define CLOCK_IRQ 0 -#define KEYBOARD_IRQ 1 -#define CASCADE_IRQ 2 /* cascade enable for 2nd AT controller */ -#define ETHER_IRQ 3 /* default ethernet interrupt vector */ -#define SECONDARY_IRQ 3 /* RS232 interrupt vector for port 2 */ -#define RS232_IRQ 4 /* RS232 interrupt vector for port 1 */ -#define XT_WINI_IRQ 5 /* xt winchester */ -#define FLOPPY_IRQ 6 /* floppy disk */ -#define PRINTER_IRQ 7 -#define AT_WINI_IRQ 14 /* at winchester */ +#define T_FPERR 16 /* floating point error */ +#define T_ALIGN 17 /* aligment check */ +#define T_MCHK 18 /* machine check */ +#define T_DEFAULT 500 /* catchall */ + +#define INTTIMER0 0 +#define INTKEYBOARD 1 +#define INTUART0_RX 4 +#define CLOCK_IRQ 0 +#define KEYBOARD_IRQ 1 +#define CASCADE_IRQ 2 /* cascade enable for 2nd AT controller */ +#define ETHER_IRQ 3 /* default ethernet interrupt vector */ +#define SECONDARY_IRQ 3 /* RS232 interrupt vector for port 2 */ +#define RS232_IRQ 4 /* RS232 interrupt vector for port 1 */ +#define XT_WINI_IRQ 5 /* xt winchester */ +#define FLOPPY_IRQ 6 /* floppy disk */ +#define PRINTER_IRQ 7 +#define AT_WINI_IRQ 14 /* at winchester */ /* I/O Addresses of the two 8259A programmable interrupt controllers */ -#define IO_PIC1 0x20 /* Master(IRQs 0-7) */ -#define IO_PIC2 0xa0 /* Slave(IRQs 8-15) */ -#define IRQ_SLAVE 0x2 /* IRQ at which slave connects to master */ -#define IRQ_OFFSET 0x20 /* IRQ 0 corresponds to int IRQ_OFFSET */ +#define IO_PIC1 0x20 /* Master(IRQs 0-7) */ +#define IO_PIC2 0xa0 /* Slave(IRQs 8-15) */ +#define IRQ_SLAVE 0x2 /* IRQ at which slave connects to master */ +#define IRQ_OFFSET 0x20 /* IRQ 0 corresponds to int IRQ_OFFSET */ -#define MAX_HANDLERS 16 /*max number of isr handler*/ +#define MAX_HANDLERS 16 /*max number of isr handler*/ /*******************************************************************/ /* CRT Register */ /*******************************************************************/ -#define MONO_BASE 0x3b4 -#define MONO_BUF 0xb0000 -#define CGA_BASE 0x3d4 -#define CGA_BUF 0xb8000 +#define MONO_BASE 0x3b4 +#define MONO_BUF 0xb0000 +#define CGA_BASE 0x3d4 +#define CGA_BUF 0xb8000 -#define CRT_ROWS 25 -#define CRT_COLS 80 -#define CRT_SIZE (CRT_ROWS * CRT_COLS) +#define CRT_ROWS 25 +#define CRT_COLS 80 +#define CRT_SIZE (CRT_ROWS * CRT_COLS) /*******************************************************************/ /* Keyboard Register */ /*******************************************************************/ -#define KBSTATP 0x64 /* kbd controller status port(I) */ -#define KBS_DIB 0x01 /* kbd data in buffer */ -#define KBDATAP 0x60 /* kbd data port(I) */ +#define KBSTATP 0x64 /* kbd controller status port(I) */ +#define KBS_DIB 0x01 /* kbd data in buffer */ +#define KBDATAP 0x60 /* kbd data port(I) */ /* AT keyboard */ /* 8042 ports */ -#define KB_DATA 0x60 /* I/O port for keyboard data - * Read : Read Output Buffer +#define KB_DATA 0x60 /* I/O port for keyboard data + * Read : Read Output Buffer * Write: Write Input Buffer(8042 Data&8048 Command) */ -#define KB_CMD 0x64 /* I/O port for keyboard command +#define KB_CMD 0x64 /* I/O port for keyboard command * Read : Read Status Register * Write: Write Input Buffer(8042 Command) */ -#define LED_CODE 0xED -#define KB_ACK 0xFA +#define LED_CODE 0xED +#define KB_ACK 0xFA /*******************************************************************/ /* Serial Register */ /*******************************************************************/ /*Serial I/O code */ -#define COM1 0x3F8 -#define COMSTATUS 5 -#define COMDATA 0x01 -#define COMREAD 0 -#define COMWRITE 0 +#define COM1 0x3F8 +#define COMSTATUS 5 +#define COMDATA 0x01 +#define COMREAD 0 +#define COMWRITE 0 /* Bits definition of the Line Status Register (LSR)*/ -#define DR 0x01 /* Data Ready */ -#define OE 0x02 /* Overrun Error */ -#define PE 0x04 /* Parity Error */ -#define FE 0x08 /* Framing Error */ -#define BI 0x10 /* Break Interrupt */ -#define THRE 0x20 /* Transmitter Holding Register Empty */ -#define TEMT 0x40 /* Transmitter Empty */ -#define ERFIFO 0x80 /* Error receive Fifo */ +#define DR 0x01 /* Data Ready */ +#define OE 0x02 /* Overrun Error */ +#define PE 0x04 /* Parity Error */ +#define FE 0x08 /* Framing Error */ +#define BI 0x10 /* Break Interrupt */ +#define THRE 0x20 /* Transmitter Holding Register Empty */ +#define TEMT 0x40 /* Transmitter Empty */ +#define ERFIFO 0x80 /* Error receive Fifo */ #ifdef __cplusplus } diff --git a/bsp/x86/drivers/include/grub.h b/bsp/x86/drivers/include/grub.h index d5a84a48da6d07a9d3a302f76801587d6b3eefcc..96d4533c3f7b2b1b12076bee5a4698bfed12b1c9 100644 --- a/bsp/x86/drivers/include/grub.h +++ b/bsp/x86/drivers/include/grub.h @@ -5,7 +5,7 @@ * * Change Logs: * Date Author Notes - * 2006-10-09 Bernard the grub related definitions + * 2006-10-09 Bernard the grub related definitions * (multiboot) */ @@ -13,13 +13,13 @@ #define __GRUB_H__ /* the magic number for the multiboot header. */ -#define MULTIBOOT_HEADER_MAGIC 0x1BADB002 +#define MULTIBOOT_HEADER_MAGIC 0x1BADB002 /* the flags for the multiboot header. */ -#define MULTIBOOT_HEADER_FLAGS 0x00000003 +#define MULTIBOOT_HEADER_FLAGS 0x00000003 /* the magic number passed by a multiboot-compliant boot loader. */ -#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002 +#define MULTIBOOT_BOOTLOADER_MAGIC 0x2BADB002 #ifndef __ASM__ /* the multiboot header. */ diff --git a/bsp/x86/drivers/include/i386.h b/bsp/x86/drivers/include/i386.h index bde4a95c3bca6d15bbca5507173046a9795e6be4..7d002393e71dc0212f6d6bc4d0fac03daec5157e 100644 --- a/bsp/x86/drivers/include/i386.h +++ b/bsp/x86/drivers/include/i386.h @@ -44,9 +44,9 @@ static __inline unsigned int inl(int port) static __inline void insl(int port, void *addr, int cnt) { - __asm __volatile("cld\n\trepne\n\tinsl" : - "=D" (addr), "=c" (cnt) : - "d" (port), "0" (addr), "1" (cnt) : + __asm __volatile("cld\n\trepne\n\tinsl" : + "=D" (addr), "=c" (cnt) : + "d" (port), "0" (addr), "1" (cnt) : "memory", "cc"); } diff --git a/bsp/x86/drivers/keyboard.c b/bsp/x86/drivers/keyboard.c index b4ae626261150dab0589d72a69b9ed7fc5d302c2..4890db380b4696d58aa42899cde25f3741264500 100644 --- a/bsp/x86/drivers/keyboard.c +++ b/bsp/x86/drivers/keyboard.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -19,290 +19,290 @@ #define FALSE RT_FALSE #define TRUE RT_TRUE #define PRIVATE static -#define PUBLIC +#define PUBLIC #define t_bool rt_bool_t #define t_8 rt_uint8_t #define t_32 rt_uint32_t -PRIVATE KB_INPUT kb_in; -PRIVATE t_bool code_with_E0 = FALSE; -PRIVATE t_bool shift_l; /* l shift state */ -PRIVATE t_bool shift_r; /* r shift state */ -PRIVATE t_bool alt_l; /* l alt state */ -PRIVATE t_bool alt_r; /* r left state */ -PRIVATE t_bool ctrl_l; /* l ctrl state */ -PRIVATE t_bool ctrl_r; /* l ctrl state */ -PRIVATE t_bool caps_lock; /* Caps Lock */ -PRIVATE t_bool num_lock; /* Num Lock */ -PRIVATE t_bool scroll_lock; /* Scroll Lock */ -PRIVATE int column = 0; /* keyrow[column] is one value of keymap */ - -PRIVATE t_8 get_byte_from_kb_buf(); -PRIVATE void set_leds(); -PRIVATE void kb_wait(); -PRIVATE void kb_ack(); +PRIVATE KB_INPUT kb_in; +PRIVATE t_bool code_with_E0 = FALSE; +PRIVATE t_bool shift_l; /* l shift state */ +PRIVATE t_bool shift_r; /* r shift state */ +PRIVATE t_bool alt_l; /* l alt state */ +PRIVATE t_bool alt_r; /* r left state */ +PRIVATE t_bool ctrl_l; /* l ctrl state */ +PRIVATE t_bool ctrl_r; /* l ctrl state */ +PRIVATE t_bool caps_lock; /* Caps Lock */ +PRIVATE t_bool num_lock; /* Num Lock */ +PRIVATE t_bool scroll_lock; /* Scroll Lock */ +PRIVATE int column = 0; /* keyrow[column] is one value of keymap */ + +PRIVATE t_8 get_byte_from_kb_buf(); +PRIVATE void set_leds(); +PRIVATE void kb_wait(); +PRIVATE void kb_ack(); PUBLIC void init_keyboard() { - kb_in.count = 0; - kb_in.p_head = kb_in.p_tail = kb_in.buf; + kb_in.count = 0; + kb_in.p_head = kb_in.p_tail = kb_in.buf; - caps_lock = 0; - num_lock = 1; - scroll_lock = 0; + caps_lock = 0; + num_lock = 1; + scroll_lock = 0; - set_leds(); + set_leds(); } PUBLIC rt_bool_t keyboard_read(rt_uint32_t *pkey) { - t_8 scan_code; - t_bool make; /* TRUE : make */ - /* FALSE: break */ - t_32 key = 0; - t_32* keyrow; - - if(kb_in.count > 0){ - code_with_E0 = FALSE; - scan_code = get_byte_from_kb_buf(); - - /* start scan */ - if (scan_code == 0xE1) { - int i; - static const t_8 pausebreak_scan_code[] = {0xE1, 0x1D, 0x45, 0xE1, 0x9D, 0xC5}; - t_bool is_pausebreak = TRUE; - for(i=1;i<6;i++){ - if (get_byte_from_kb_buf() != pausebreak_scan_code[i]) { - is_pausebreak = FALSE; - break; - } - } - if (is_pausebreak) { - key = PAUSEBREAK; - } - } - else if (scan_code == 0xE0) { - code_with_E0 = TRUE; - scan_code = get_byte_from_kb_buf(); - - /* PrintScreen pressed */ - if (scan_code == 0x2A) { - code_with_E0 = FALSE; - if ((scan_code = get_byte_from_kb_buf()) == 0xE0) { - code_with_E0 = TRUE; - if ((scan_code = get_byte_from_kb_buf()) == 0x37) { - key = PRINTSCREEN; - make = TRUE; - } - } - } - /* PrintScreen released */ - else if (scan_code == 0xB7) { - code_with_E0 = FALSE; - if ((scan_code = get_byte_from_kb_buf()) == 0xE0) { - code_with_E0 = TRUE; - if ((scan_code = get_byte_from_kb_buf()) == 0xAA) { - key = PRINTSCREEN; - make = FALSE; - } - } - } - } /* if is not PrintScreen, scan_code is the one after 0xE0 */ - if ((key != PAUSEBREAK) && (key != PRINTSCREEN)) { - /* is Make Code or Break Code */ - make = (scan_code & FLAG_BREAK ? FALSE : TRUE); - - keyrow = &keymap[(scan_code & 0x7F) * MAP_COLS]; - - column = 0; - - t_bool caps = shift_l || shift_r; - if (caps_lock) { - if ((keyrow[0] >= 'a') && (keyrow[0] <= 'z')){ - caps = !caps; - } - } - if (caps) { - column = 1; - } - - if (code_with_E0) { - column = 2; - } - - key = keyrow[column]; - - switch(key) { - case SHIFT_L: - shift_l = make; - break; - case SHIFT_R: - shift_r = make; - break; - case CTRL_L: - ctrl_l = make; - break; - case CTRL_R: - ctrl_r = make; - break; - case ALT_L: - alt_l = make; - break; - case ALT_R: - alt_l = make; - break; - case CAPS_LOCK: - if (make) { - caps_lock = !caps_lock; - set_leds(); - } - break; - case NUM_LOCK: - if (make) { - num_lock = !num_lock; - set_leds(); - } - break; - case SCROLL_LOCK: - if (make) { - scroll_lock = !scroll_lock; - set_leds(); - } - break; - default: - break; - } - } - - if(make){ /* ignore Break Code */ - t_bool pad = FALSE; - - /* handle the small pad first */ - if ((key >= PAD_SLASH) && (key <= PAD_9)) { - pad = TRUE; - switch(key) { /* '/', '*', '-', '+', and 'Enter' in num pad */ - case PAD_SLASH: - key = '/'; - break; - case PAD_STAR: - key = '*'; - break; - case PAD_MINUS: - key = '-'; - break; - case PAD_PLUS: - key = '+'; - break; - case PAD_ENTER: - key = ENTER; - break; - default: /* keys whose value depends on the NumLock */ - if (num_lock) { /* '0' ~ '9' and '.' in num pad */ - if ((key >= PAD_0) && (key <= PAD_9)) { - key = key - PAD_0 + '0'; - } - else if (key == PAD_DOT) { - key = '.'; - } - } - else{ - switch(key) { - case PAD_HOME: - key = HOME; - break; - case PAD_END: - key = END; - break; - case PAD_PAGEUP: - key = PAGEUP; - break; - case PAD_PAGEDOWN: - key = PAGEDOWN; - break; - case PAD_INS: - key = INSERT; - break; - case PAD_UP: - key = UP; - break; - case PAD_DOWN: - key = DOWN; - break; - case PAD_LEFT: - key = LEFT; - break; - case PAD_RIGHT: - key = RIGHT; - break; - case PAD_DOT: - key = DELETE; - break; - default: - break; - } - } - break; - } - } - key |= shift_l ? FLAG_SHIFT_L : 0; - key |= shift_r ? FLAG_SHIFT_R : 0; - key |= ctrl_l ? FLAG_CTRL_L : 0; - key |= ctrl_r ? FLAG_CTRL_R : 0; - key |= alt_l ? FLAG_ALT_L : 0; - key |= alt_r ? FLAG_ALT_R : 0; - key |= pad ? FLAG_PAD : 0; - - *pkey = key; - return TRUE; - } - } - - return FALSE; + t_8 scan_code; + t_bool make; /* TRUE : make */ + /* FALSE: break */ + t_32 key = 0; + t_32* keyrow; + + if(kb_in.count > 0){ + code_with_E0 = FALSE; + scan_code = get_byte_from_kb_buf(); + + /* start scan */ + if (scan_code == 0xE1) { + int i; + static const t_8 pausebreak_scan_code[] = {0xE1, 0x1D, 0x45, 0xE1, 0x9D, 0xC5}; + t_bool is_pausebreak = TRUE; + for(i=1;i<6;i++){ + if (get_byte_from_kb_buf() != pausebreak_scan_code[i]) { + is_pausebreak = FALSE; + break; + } + } + if (is_pausebreak) { + key = PAUSEBREAK; + } + } + else if (scan_code == 0xE0) { + code_with_E0 = TRUE; + scan_code = get_byte_from_kb_buf(); + + /* PrintScreen pressed */ + if (scan_code == 0x2A) { + code_with_E0 = FALSE; + if ((scan_code = get_byte_from_kb_buf()) == 0xE0) { + code_with_E0 = TRUE; + if ((scan_code = get_byte_from_kb_buf()) == 0x37) { + key = PRINTSCREEN; + make = TRUE; + } + } + } + /* PrintScreen released */ + else if (scan_code == 0xB7) { + code_with_E0 = FALSE; + if ((scan_code = get_byte_from_kb_buf()) == 0xE0) { + code_with_E0 = TRUE; + if ((scan_code = get_byte_from_kb_buf()) == 0xAA) { + key = PRINTSCREEN; + make = FALSE; + } + } + } + } /* if is not PrintScreen, scan_code is the one after 0xE0 */ + if ((key != PAUSEBREAK) && (key != PRINTSCREEN)) { + /* is Make Code or Break Code */ + make = (scan_code & FLAG_BREAK ? FALSE : TRUE); + + keyrow = &keymap[(scan_code & 0x7F) * MAP_COLS]; + + column = 0; + + t_bool caps = shift_l || shift_r; + if (caps_lock) { + if ((keyrow[0] >= 'a') && (keyrow[0] <= 'z')){ + caps = !caps; + } + } + if (caps) { + column = 1; + } + + if (code_with_E0) { + column = 2; + } + + key = keyrow[column]; + + switch(key) { + case SHIFT_L: + shift_l = make; + break; + case SHIFT_R: + shift_r = make; + break; + case CTRL_L: + ctrl_l = make; + break; + case CTRL_R: + ctrl_r = make; + break; + case ALT_L: + alt_l = make; + break; + case ALT_R: + alt_l = make; + break; + case CAPS_LOCK: + if (make) { + caps_lock = !caps_lock; + set_leds(); + } + break; + case NUM_LOCK: + if (make) { + num_lock = !num_lock; + set_leds(); + } + break; + case SCROLL_LOCK: + if (make) { + scroll_lock = !scroll_lock; + set_leds(); + } + break; + default: + break; + } + } + + if(make){ /* ignore Break Code */ + t_bool pad = FALSE; + + /* handle the small pad first */ + if ((key >= PAD_SLASH) && (key <= PAD_9)) { + pad = TRUE; + switch(key) { /* '/', '*', '-', '+', and 'Enter' in num pad */ + case PAD_SLASH: + key = '/'; + break; + case PAD_STAR: + key = '*'; + break; + case PAD_MINUS: + key = '-'; + break; + case PAD_PLUS: + key = '+'; + break; + case PAD_ENTER: + key = ENTER; + break; + default: /* keys whose value depends on the NumLock */ + if (num_lock) { /* '0' ~ '9' and '.' in num pad */ + if ((key >= PAD_0) && (key <= PAD_9)) { + key = key - PAD_0 + '0'; + } + else if (key == PAD_DOT) { + key = '.'; + } + } + else{ + switch(key) { + case PAD_HOME: + key = HOME; + break; + case PAD_END: + key = END; + break; + case PAD_PAGEUP: + key = PAGEUP; + break; + case PAD_PAGEDOWN: + key = PAGEDOWN; + break; + case PAD_INS: + key = INSERT; + break; + case PAD_UP: + key = UP; + break; + case PAD_DOWN: + key = DOWN; + break; + case PAD_LEFT: + key = LEFT; + break; + case PAD_RIGHT: + key = RIGHT; + break; + case PAD_DOT: + key = DELETE; + break; + default: + break; + } + } + break; + } + } + key |= shift_l ? FLAG_SHIFT_L : 0; + key |= shift_r ? FLAG_SHIFT_R : 0; + key |= ctrl_l ? FLAG_CTRL_L : 0; + key |= ctrl_r ? FLAG_CTRL_R : 0; + key |= alt_l ? FLAG_ALT_L : 0; + key |= alt_r ? FLAG_ALT_R : 0; + key |= pad ? FLAG_PAD : 0; + + *pkey = key; + return TRUE; + } + } + + return FALSE; } PRIVATE t_8 get_byte_from_kb_buf() { - t_8 scan_code; + t_8 scan_code; - RT_ASSERT(kb_in.count>0); - scan_code = *(kb_in.p_tail); - kb_in.p_tail++; - if (kb_in.p_tail == kb_in.buf + KB_IN_BYTES) { - kb_in.p_tail = kb_in.buf; - } - kb_in.count--; + RT_ASSERT(kb_in.count>0); + scan_code = *(kb_in.p_tail); + kb_in.p_tail++; + if (kb_in.p_tail == kb_in.buf + KB_IN_BYTES) { + kb_in.p_tail = kb_in.buf; + } + kb_in.count--; - return scan_code; + return scan_code; } PRIVATE void kb_wait() /* wait inpit cache of 8042 */ { - t_8 kb_stat; + t_8 kb_stat; - do { - kb_stat = inb(KB_CMD); - } while (kb_stat & 0x02); + do { + kb_stat = inb(KB_CMD); + } while (kb_stat & 0x02); } PRIVATE void kb_ack() { - t_8 kb_read; + t_8 kb_read; - do { - kb_read = inb(KB_DATA); - } while (kb_read != KB_ACK); + do { + kb_read = inb(KB_DATA); + } while (kb_read != KB_ACK); } PRIVATE void set_leds() { - t_8 leds = (caps_lock << 2) | (num_lock << 1) | scroll_lock; + t_8 leds = (caps_lock << 2) | (num_lock << 1) | scroll_lock; - kb_wait(); - outb(KB_DATA, LED_CODE); - kb_ack(); + kb_wait(); + outb(KB_DATA, LED_CODE); + kb_ack(); - kb_wait(); - outb(KB_DATA, leds); - kb_ack(); + kb_wait(); + outb(KB_DATA, leds); + kb_ack(); } /** @@ -312,51 +312,51 @@ PRIVATE void set_leds() void rt_keyboard_isr(void) { - rt_uint8_t data; + rt_uint8_t data; - if ((inb(KBSTATP) & KBS_DIB) == 0) - return ; + if ((inb(KBSTATP) & KBS_DIB) == 0) + return ; - data = inb(KBDATAP); + data = inb(KBDATAP); - if (kb_in.count < KB_IN_BYTES) { - *(kb_in.p_head) = data; - kb_in.p_head++; - if (kb_in.p_head == kb_in.buf + KB_IN_BYTES) { - kb_in.p_head = kb_in.buf; - } - kb_in.count++; - } + if (kb_in.count < KB_IN_BYTES) { + *(kb_in.p_head) = data; + kb_in.p_head++; + if (kb_in.p_head == kb_in.buf + KB_IN_BYTES) { + kb_in.p_head = kb_in.buf; + } + kb_in.count++; + } } /* generally, this should be called in task level for all key inpit support, but here only support a key that is composed of 2 bytes */ rt_bool_t rt_keyboard_getc(char* c) { - if(kb_in.count>=2) - { - rt_uint32_t key = 0; - rt_bool_t rv=keyboard_read(&key); - - switch(key) - { - case TAB: - *c = '\t'; - break; - case ENTER: - *c = '\n'; - break; - case BACKSPACE: - *c = '\b'; - break; - default: - *c = key; - break; - } - - return rv; - } - - return RT_FALSE; + if(kb_in.count>=2) + { + rt_uint32_t key = 0; + rt_bool_t rv=keyboard_read(&key); + + switch(key) + { + case TAB: + *c = '\t'; + break; + case ENTER: + *c = '\n'; + break; + case BACKSPACE: + *c = '\b'; + break; + default: + *c = key; + break; + } + + return rv; + } + + return RT_FALSE; } /*@}*/ diff --git a/bsp/x86/drivers/keyboard.h b/bsp/x86/drivers/keyboard.h index 437d9dfc9f859f3592c117dd6355663d201ee711..3fec24c4e81bb03668f3f7e4043a0c240e179899 100644 --- a/bsp/x86/drivers/keyboard.h +++ b/bsp/x86/drivers/keyboard.h @@ -12,115 +12,115 @@ Forrest Yu, 2005 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/ -#ifndef _TINIX_KEYBOARD_H_ -#define _TINIX_KEYBOARD_H_ +#ifndef _TINIX_KEYBOARD_H_ +#define _TINIX_KEYBOARD_H_ /************************************************************************/ /* Macros Declaration */ /************************************************************************/ -#define KB_IN_BYTES 32 /* size of keyboard input buffer */ -#define MAP_COLS 3 /* Number of columns in keymap */ -#define NR_SCAN_CODES 0x80 /* Number of scan codes (rows in keymap) */ - -#define FLAG_BREAK 0x0080 /* Break Code */ -#define FLAG_EXT 0x0100 /* Normal function keys */ -#define FLAG_SHIFT_L 0x0200 /* Shift key */ -#define FLAG_SHIFT_R 0x0400 /* Shift key */ -#define FLAG_CTRL_L 0x0800 /* Control key */ -#define FLAG_CTRL_R 0x1000 /* Control key */ -#define FLAG_ALT_L 0x2000 /* Alternate key */ -#define FLAG_ALT_R 0x4000 /* Alternate key */ -#define FLAG_PAD 0x8000 /* keys in num pad */ - -#define MASK_RAW 0x01FF /* raw key value = code passed to tty & MASK_RAW - the value can be found either in the keymap column 0 - or in the list below */ +#define KB_IN_BYTES 32 /* size of keyboard input buffer */ +#define MAP_COLS 3 /* Number of columns in keymap */ +#define NR_SCAN_CODES 0x80 /* Number of scan codes (rows in keymap) */ + +#define FLAG_BREAK 0x0080 /* Break Code */ +#define FLAG_EXT 0x0100 /* Normal function keys */ +#define FLAG_SHIFT_L 0x0200 /* Shift key */ +#define FLAG_SHIFT_R 0x0400 /* Shift key */ +#define FLAG_CTRL_L 0x0800 /* Control key */ +#define FLAG_CTRL_R 0x1000 /* Control key */ +#define FLAG_ALT_L 0x2000 /* Alternate key */ +#define FLAG_ALT_R 0x4000 /* Alternate key */ +#define FLAG_PAD 0x8000 /* keys in num pad */ + +#define MASK_RAW 0x01FF /* raw key value = code passed to tty & MASK_RAW + the value can be found either in the keymap column 0 + or in the list below */ /* Special keys */ -#define ESC (0x01 + FLAG_EXT) /* Esc */ -#define TAB (0x02 + FLAG_EXT) /* Tab */ -#define ENTER (0x03 + FLAG_EXT) /* Enter */ -#define BACKSPACE (0x04 + FLAG_EXT) /* BackSpace */ +#define ESC (0x01 + FLAG_EXT) /* Esc */ +#define TAB (0x02 + FLAG_EXT) /* Tab */ +#define ENTER (0x03 + FLAG_EXT) /* Enter */ +#define BACKSPACE (0x04 + FLAG_EXT) /* BackSpace */ -#define GUI_L (0x05 + FLAG_EXT) /* L GUI */ -#define GUI_R (0x06 + FLAG_EXT) /* R GUI */ -#define APPS (0x07 + FLAG_EXT) /* APPS */ +#define GUI_L (0x05 + FLAG_EXT) /* L GUI */ +#define GUI_R (0x06 + FLAG_EXT) /* R GUI */ +#define APPS (0x07 + FLAG_EXT) /* APPS */ /* Shift, Ctrl, Alt */ -#define SHIFT_L (0x08 + FLAG_EXT) /* L Shift */ -#define SHIFT_R (0x09 + FLAG_EXT) /* R Shift */ -#define CTRL_L (0x0A + FLAG_EXT) /* L Ctrl */ -#define CTRL_R (0x0B + FLAG_EXT) /* R Ctrl */ -#define ALT_L (0x0C + FLAG_EXT) /* L Alt */ -#define ALT_R (0x0D + FLAG_EXT) /* R Alt */ +#define SHIFT_L (0x08 + FLAG_EXT) /* L Shift */ +#define SHIFT_R (0x09 + FLAG_EXT) /* R Shift */ +#define CTRL_L (0x0A + FLAG_EXT) /* L Ctrl */ +#define CTRL_R (0x0B + FLAG_EXT) /* R Ctrl */ +#define ALT_L (0x0C + FLAG_EXT) /* L Alt */ +#define ALT_R (0x0D + FLAG_EXT) /* R Alt */ /* Lock keys */ -#define CAPS_LOCK (0x0E + FLAG_EXT) /* Caps Lock */ -#define NUM_LOCK (0x0F + FLAG_EXT) /* Number Lock */ -#define SCROLL_LOCK (0x10 + FLAG_EXT) /* Scroll Lock */ +#define CAPS_LOCK (0x0E + FLAG_EXT) /* Caps Lock */ +#define NUM_LOCK (0x0F + FLAG_EXT) /* Number Lock */ +#define SCROLL_LOCK (0x10 + FLAG_EXT) /* Scroll Lock */ /* Function keys */ -#define F1 (0x11 + FLAG_EXT) /* F1 */ -#define F2 (0x12 + FLAG_EXT) /* F2 */ -#define F3 (0x13 + FLAG_EXT) /* F3 */ -#define F4 (0x14 + FLAG_EXT) /* F4 */ -#define F5 (0x15 + FLAG_EXT) /* F5 */ -#define F6 (0x16 + FLAG_EXT) /* F6 */ -#define F7 (0x17 + FLAG_EXT) /* F7 */ -#define F8 (0x18 + FLAG_EXT) /* F8 */ -#define F9 (0x19 + FLAG_EXT) /* F9 */ -#define F10 (0x1A + FLAG_EXT) /* F10 */ -#define F11 (0x1B + FLAG_EXT) /* F11 */ -#define F12 (0x1C + FLAG_EXT) /* F12 */ +#define F1 (0x11 + FLAG_EXT) /* F1 */ +#define F2 (0x12 + FLAG_EXT) /* F2 */ +#define F3 (0x13 + FLAG_EXT) /* F3 */ +#define F4 (0x14 + FLAG_EXT) /* F4 */ +#define F5 (0x15 + FLAG_EXT) /* F5 */ +#define F6 (0x16 + FLAG_EXT) /* F6 */ +#define F7 (0x17 + FLAG_EXT) /* F7 */ +#define F8 (0x18 + FLAG_EXT) /* F8 */ +#define F9 (0x19 + FLAG_EXT) /* F9 */ +#define F10 (0x1A + FLAG_EXT) /* F10 */ +#define F11 (0x1B + FLAG_EXT) /* F11 */ +#define F12 (0x1C + FLAG_EXT) /* F12 */ /* Control Pad */ -#define PRINTSCREEN (0x1D + FLAG_EXT) /* Print Screen */ -#define PAUSEBREAK (0x1E + FLAG_EXT) /* Pause/Break */ -#define INSERT (0x1F + FLAG_EXT) /* Insert */ -#define DELETE (0x20 + FLAG_EXT) /* Delete */ -#define HOME (0x21 + FLAG_EXT) /* Home */ -#define END (0x22 + FLAG_EXT) /* End */ -#define PAGEUP (0x23 + FLAG_EXT) /* Page Up */ -#define PAGEDOWN (0x24 + FLAG_EXT) /* Page Down */ -#define UP (0x25 + FLAG_EXT) /* Up */ -#define DOWN (0x26 + FLAG_EXT) /* Down */ -#define LEFT (0x27 + FLAG_EXT) /* Left */ -#define RIGHT (0x28 + FLAG_EXT) /* Right */ +#define PRINTSCREEN (0x1D + FLAG_EXT) /* Print Screen */ +#define PAUSEBREAK (0x1E + FLAG_EXT) /* Pause/Break */ +#define INSERT (0x1F + FLAG_EXT) /* Insert */ +#define DELETE (0x20 + FLAG_EXT) /* Delete */ +#define HOME (0x21 + FLAG_EXT) /* Home */ +#define END (0x22 + FLAG_EXT) /* End */ +#define PAGEUP (0x23 + FLAG_EXT) /* Page Up */ +#define PAGEDOWN (0x24 + FLAG_EXT) /* Page Down */ +#define UP (0x25 + FLAG_EXT) /* Up */ +#define DOWN (0x26 + FLAG_EXT) /* Down */ +#define LEFT (0x27 + FLAG_EXT) /* Left */ +#define RIGHT (0x28 + FLAG_EXT) /* Right */ /* ACPI keys */ -#define POWER (0x29 + FLAG_EXT) /* Power */ -#define SLEEP (0x2A + FLAG_EXT) /* Sleep */ -#define WAKE (0x2B + FLAG_EXT) /* Wake Up */ +#define POWER (0x29 + FLAG_EXT) /* Power */ +#define SLEEP (0x2A + FLAG_EXT) /* Sleep */ +#define WAKE (0x2B + FLAG_EXT) /* Wake Up */ /* Num Pad */ -#define PAD_SLASH (0x2C + FLAG_EXT) /* / */ -#define PAD_STAR (0x2D + FLAG_EXT) /* * */ -#define PAD_MINUS (0x2E + FLAG_EXT) /* - */ -#define PAD_PLUS (0x2F + FLAG_EXT) /* + */ -#define PAD_ENTER (0x30 + FLAG_EXT) /* Enter */ -#define PAD_DOT (0x31 + FLAG_EXT) /* . */ -#define PAD_0 (0x32 + FLAG_EXT) /* 0 */ -#define PAD_1 (0x33 + FLAG_EXT) /* 1 */ -#define PAD_2 (0x34 + FLAG_EXT) /* 2 */ -#define PAD_3 (0x35 + FLAG_EXT) /* 3 */ -#define PAD_4 (0x36 + FLAG_EXT) /* 4 */ -#define PAD_5 (0x37 + FLAG_EXT) /* 5 */ -#define PAD_6 (0x38 + FLAG_EXT) /* 6 */ -#define PAD_7 (0x39 + FLAG_EXT) /* 7 */ -#define PAD_8 (0x3A + FLAG_EXT) /* 8 */ -#define PAD_9 (0x3B + FLAG_EXT) /* 9 */ -#define PAD_UP PAD_8 /* Up */ -#define PAD_DOWN PAD_2 /* Down */ -#define PAD_LEFT PAD_4 /* Left */ -#define PAD_RIGHT PAD_6 /* Right */ -#define PAD_HOME PAD_7 /* Home */ -#define PAD_END PAD_1 /* End */ -#define PAD_PAGEUP PAD_9 /* Page Up */ -#define PAD_PAGEDOWN PAD_3 /* Page Down */ -#define PAD_INS PAD_0 /* Ins */ -#define PAD_MID PAD_5 /* Middle key */ -#define PAD_DEL PAD_DOT /* Del */ +#define PAD_SLASH (0x2C + FLAG_EXT) /* / */ +#define PAD_STAR (0x2D + FLAG_EXT) /* * */ +#define PAD_MINUS (0x2E + FLAG_EXT) /* - */ +#define PAD_PLUS (0x2F + FLAG_EXT) /* + */ +#define PAD_ENTER (0x30 + FLAG_EXT) /* Enter */ +#define PAD_DOT (0x31 + FLAG_EXT) /* . */ +#define PAD_0 (0x32 + FLAG_EXT) /* 0 */ +#define PAD_1 (0x33 + FLAG_EXT) /* 1 */ +#define PAD_2 (0x34 + FLAG_EXT) /* 2 */ +#define PAD_3 (0x35 + FLAG_EXT) /* 3 */ +#define PAD_4 (0x36 + FLAG_EXT) /* 4 */ +#define PAD_5 (0x37 + FLAG_EXT) /* 5 */ +#define PAD_6 (0x38 + FLAG_EXT) /* 6 */ +#define PAD_7 (0x39 + FLAG_EXT) /* 7 */ +#define PAD_8 (0x3A + FLAG_EXT) /* 8 */ +#define PAD_9 (0x3B + FLAG_EXT) /* 9 */ +#define PAD_UP PAD_8 /* Up */ +#define PAD_DOWN PAD_2 /* Down */ +#define PAD_LEFT PAD_4 /* Left */ +#define PAD_RIGHT PAD_6 /* Right */ +#define PAD_HOME PAD_7 /* Home */ +#define PAD_END PAD_1 /* End */ +#define PAD_PAGEUP PAD_9 /* Page Up */ +#define PAD_PAGEDOWN PAD_3 /* Page Down */ +#define PAD_INS PAD_0 /* Ins */ +#define PAD_MID PAD_5 /* Middle key */ +#define PAD_DEL PAD_DOT /* Del */ /************************************************************************/ @@ -128,10 +128,10 @@ /************************************************************************/ /* Keyboard structure, 1 per console. */ typedef struct s_kb { - char* p_head; /* input cache pointer */ - char* p_tail; /* read cache pointer */ - int count; - char buf[KB_IN_BYTES]; + char* p_head; /* input cache pointer */ + char* p_tail; /* read cache pointer */ + int count; + char buf[KB_IN_BYTES]; }KB_INPUT; diff --git a/bsp/x86/drivers/keymap.h b/bsp/x86/drivers/keymap.h index aa9880e295bc11910282423bf2814b4648521b33..e141fa0d6e3e50a66be2db5f6ccb981f54985233 100644 --- a/bsp/x86/drivers/keymap.h +++ b/bsp/x86/drivers/keymap.h @@ -17,227 +17,227 @@ /* It should be and can only be included by keyboard.c! */ /********************************************************************/ -#ifndef _TINIX_KEYMAP_H_ -#define _TINIX_KEYMAP_H_ +#ifndef _TINIX_KEYMAP_H_ +#define _TINIX_KEYMAP_H_ /* Keymap for US MF-2 keyboard. */ rt_uint32_t keymap[NR_SCAN_CODES * MAP_COLS] = { -/* scan-code !Shift Shift E0 XX */ +/* scan-code !Shift Shift E0 XX */ /* ==================================================================== */ -/* 0x00 - none */ 0, 0, 0, -/* 0x01 - ESC */ ESC, ESC, 0, -/* 0x02 - '1' */ '1', '!', 0, -/* 0x03 - '2' */ '2', '@', 0, -/* 0x04 - '3' */ '3', '#', 0, -/* 0x05 - '4' */ '4', '$', 0, -/* 0x06 - '5' */ '5', '%', 0, -/* 0x07 - '6' */ '6', '^', 0, -/* 0x08 - '7' */ '7', '&', 0, -/* 0x09 - '8' */ '8', '*', 0, -/* 0x0A - '9' */ '9', '(', 0, -/* 0x0B - '0' */ '0', ')', 0, -/* 0x0C - '-' */ '-', '_', 0, -/* 0x0D - '=' */ '=', '+', 0, -/* 0x0E - BS */ BACKSPACE, BACKSPACE, 0, -/* 0x0F - TAB */ TAB, TAB, 0, -/* 0x10 - 'q' */ 'q', 'Q', 0, -/* 0x11 - 'w' */ 'w', 'W', 0, -/* 0x12 - 'e' */ 'e', 'E', 0, -/* 0x13 - 'r' */ 'r', 'R', 0, -/* 0x14 - 't' */ 't', 'T', 0, -/* 0x15 - 'y' */ 'y', 'Y', 0, -/* 0x16 - 'u' */ 'u', 'U', 0, -/* 0x17 - 'i' */ 'i', 'I', 0, -/* 0x18 - 'o' */ 'o', 'O', 0, -/* 0x19 - 'p' */ 'p', 'P', 0, -/* 0x1A - '[' */ '[', '{', 0, -/* 0x1B - ']' */ ']', '}', 0, -/* 0x1C - CR/LF */ ENTER, ENTER, PAD_ENTER, -/* 0x1D - l. Ctrl */ CTRL_L, CTRL_L, CTRL_R, -/* 0x1E - 'a' */ 'a', 'A', 0, -/* 0x1F - 's' */ 's', 'S', 0, -/* 0x20 - 'd' */ 'd', 'D', 0, -/* 0x21 - 'f' */ 'f', 'F', 0, -/* 0x22 - 'g' */ 'g', 'G', 0, -/* 0x23 - 'h' */ 'h', 'H', 0, -/* 0x24 - 'j' */ 'j', 'J', 0, -/* 0x25 - 'k' */ 'k', 'K', 0, -/* 0x26 - 'l' */ 'l', 'L', 0, -/* 0x27 - ';' */ ';', ':', 0, -/* 0x28 - '\'' */ '\'', '"', 0, -/* 0x29 - '`' */ '`', '~', 0, -/* 0x2A - l. SHIFT */ SHIFT_L, SHIFT_L, 0, -/* 0x2B - '\' */ '\\', '|', 0, -/* 0x2C - 'z' */ 'z', 'Z', 0, -/* 0x2D - 'x' */ 'x', 'X', 0, -/* 0x2E - 'c' */ 'c', 'C', 0, -/* 0x2F - 'v' */ 'v', 'V', 0, -/* 0x30 - 'b' */ 'b', 'B', 0, -/* 0x31 - 'n' */ 'n', 'N', 0, -/* 0x32 - 'm' */ 'm', 'M', 0, -/* 0x33 - ',' */ ',', '<', 0, -/* 0x34 - '.' */ '.', '>', 0, -/* 0x35 - '/' */ '/', '?', PAD_SLASH, -/* 0x36 - r. SHIFT */ SHIFT_R, SHIFT_R, 0, -/* 0x37 - '*' */ '*', '*', 0, -/* 0x38 - ALT */ ALT_L, ALT_L, ALT_R, -/* 0x39 - ' ' */ ' ', ' ', 0, -/* 0x3A - CapsLock */ CAPS_LOCK, CAPS_LOCK, 0, -/* 0x3B - F1 */ F1, F1, 0, -/* 0x3C - F2 */ F2, F2, 0, -/* 0x3D - F3 */ F3, F3, 0, -/* 0x3E - F4 */ F4, F4, 0, -/* 0x3F - F5 */ F5, F5, 0, -/* 0x40 - F6 */ F6, F6, 0, -/* 0x41 - F7 */ F7, F7, 0, -/* 0x42 - F8 */ F8, F8, 0, -/* 0x43 - F9 */ F9, F9, 0, -/* 0x44 - F10 */ F10, F10, 0, -/* 0x45 - NumLock */ NUM_LOCK, NUM_LOCK, 0, -/* 0x46 - ScrLock */ SCROLL_LOCK, SCROLL_LOCK, 0, -/* 0x47 - Home */ PAD_HOME, '7', HOME, -/* 0x48 - CurUp */ PAD_UP, '8', UP, -/* 0x49 - PgUp */ PAD_PAGEUP, '9', PAGEUP, -/* 0x4A - '-' */ PAD_MINUS, '-', 0, -/* 0x4B - Left */ PAD_LEFT, '4', LEFT, -/* 0x4C - MID */ PAD_MID, '5', 0, -/* 0x4D - Right */ PAD_RIGHT, '6', RIGHT, -/* 0x4E - '+' */ PAD_PLUS, '+', 0, -/* 0x4F - End */ PAD_END, '1', END, -/* 0x50 - Down */ PAD_DOWN, '2', DOWN, -/* 0x51 - PgDown */ PAD_PAGEDOWN, '3', PAGEDOWN, -/* 0x52 - Insert */ PAD_INS, '0', INSERT, -/* 0x53 - Delete */ PAD_DOT, '.', DELETE, -/* 0x54 - Enter */ 0, 0, 0, -/* 0x55 - ??? */ 0, 0, 0, -/* 0x56 - ??? */ 0, 0, 0, -/* 0x57 - F11 */ F11, F11, 0, -/* 0x58 - F12 */ F12, F12, 0, -/* 0x59 - ??? */ 0, 0, 0, -/* 0x5A - ??? */ 0, 0, 0, -/* 0x5B - ??? */ 0, 0, GUI_L, -/* 0x5C - ??? */ 0, 0, GUI_R, -/* 0x5D - ??? */ 0, 0, APPS, -/* 0x5E - ??? */ 0, 0, 0, -/* 0x5F - ??? */ 0, 0, 0, -/* 0x60 - ??? */ 0, 0, 0, -/* 0x61 - ??? */ 0, 0, 0, -/* 0x62 - ??? */ 0, 0, 0, -/* 0x63 - ??? */ 0, 0, 0, -/* 0x64 - ??? */ 0, 0, 0, -/* 0x65 - ??? */ 0, 0, 0, -/* 0x66 - ??? */ 0, 0, 0, -/* 0x67 - ??? */ 0, 0, 0, -/* 0x68 - ??? */ 0, 0, 0, -/* 0x69 - ??? */ 0, 0, 0, -/* 0x6A - ??? */ 0, 0, 0, -/* 0x6B - ??? */ 0, 0, 0, -/* 0x6C - ??? */ 0, 0, 0, -/* 0x6D - ??? */ 0, 0, 0, -/* 0x6E - ??? */ 0, 0, 0, -/* 0x6F - ??? */ 0, 0, 0, -/* 0x70 - ??? */ 0, 0, 0, -/* 0x71 - ??? */ 0, 0, 0, -/* 0x72 - ??? */ 0, 0, 0, -/* 0x73 - ??? */ 0, 0, 0, -/* 0x74 - ??? */ 0, 0, 0, -/* 0x75 - ??? */ 0, 0, 0, -/* 0x76 - ??? */ 0, 0, 0, -/* 0x77 - ??? */ 0, 0, 0, -/* 0x78 - ??? */ 0, 0, 0, -/* 0x78 - ??? */ 0, 0, 0, -/* 0x7A - ??? */ 0, 0, 0, -/* 0x7B - ??? */ 0, 0, 0, -/* 0x7C - ??? */ 0, 0, 0, -/* 0x7D - ??? */ 0, 0, 0, -/* 0x7E - ??? */ 0, 0, 0, -/* 0x7F - ??? */ 0, 0, 0 +/* 0x00 - none */ 0, 0, 0, +/* 0x01 - ESC */ ESC, ESC, 0, +/* 0x02 - '1' */ '1', '!', 0, +/* 0x03 - '2' */ '2', '@', 0, +/* 0x04 - '3' */ '3', '#', 0, +/* 0x05 - '4' */ '4', '$', 0, +/* 0x06 - '5' */ '5', '%', 0, +/* 0x07 - '6' */ '6', '^', 0, +/* 0x08 - '7' */ '7', '&', 0, +/* 0x09 - '8' */ '8', '*', 0, +/* 0x0A - '9' */ '9', '(', 0, +/* 0x0B - '0' */ '0', ')', 0, +/* 0x0C - '-' */ '-', '_', 0, +/* 0x0D - '=' */ '=', '+', 0, +/* 0x0E - BS */ BACKSPACE, BACKSPACE, 0, +/* 0x0F - TAB */ TAB, TAB, 0, +/* 0x10 - 'q' */ 'q', 'Q', 0, +/* 0x11 - 'w' */ 'w', 'W', 0, +/* 0x12 - 'e' */ 'e', 'E', 0, +/* 0x13 - 'r' */ 'r', 'R', 0, +/* 0x14 - 't' */ 't', 'T', 0, +/* 0x15 - 'y' */ 'y', 'Y', 0, +/* 0x16 - 'u' */ 'u', 'U', 0, +/* 0x17 - 'i' */ 'i', 'I', 0, +/* 0x18 - 'o' */ 'o', 'O', 0, +/* 0x19 - 'p' */ 'p', 'P', 0, +/* 0x1A - '[' */ '[', '{', 0, +/* 0x1B - ']' */ ']', '}', 0, +/* 0x1C - CR/LF */ ENTER, ENTER, PAD_ENTER, +/* 0x1D - l. Ctrl */ CTRL_L, CTRL_L, CTRL_R, +/* 0x1E - 'a' */ 'a', 'A', 0, +/* 0x1F - 's' */ 's', 'S', 0, +/* 0x20 - 'd' */ 'd', 'D', 0, +/* 0x21 - 'f' */ 'f', 'F', 0, +/* 0x22 - 'g' */ 'g', 'G', 0, +/* 0x23 - 'h' */ 'h', 'H', 0, +/* 0x24 - 'j' */ 'j', 'J', 0, +/* 0x25 - 'k' */ 'k', 'K', 0, +/* 0x26 - 'l' */ 'l', 'L', 0, +/* 0x27 - ';' */ ';', ':', 0, +/* 0x28 - '\'' */ '\'', '"', 0, +/* 0x29 - '`' */ '`', '~', 0, +/* 0x2A - l. SHIFT */ SHIFT_L, SHIFT_L, 0, +/* 0x2B - '\' */ '\\', '|', 0, +/* 0x2C - 'z' */ 'z', 'Z', 0, +/* 0x2D - 'x' */ 'x', 'X', 0, +/* 0x2E - 'c' */ 'c', 'C', 0, +/* 0x2F - 'v' */ 'v', 'V', 0, +/* 0x30 - 'b' */ 'b', 'B', 0, +/* 0x31 - 'n' */ 'n', 'N', 0, +/* 0x32 - 'm' */ 'm', 'M', 0, +/* 0x33 - ',' */ ',', '<', 0, +/* 0x34 - '.' */ '.', '>', 0, +/* 0x35 - '/' */ '/', '?', PAD_SLASH, +/* 0x36 - r. SHIFT */ SHIFT_R, SHIFT_R, 0, +/* 0x37 - '*' */ '*', '*', 0, +/* 0x38 - ALT */ ALT_L, ALT_L, ALT_R, +/* 0x39 - ' ' */ ' ', ' ', 0, +/* 0x3A - CapsLock */ CAPS_LOCK, CAPS_LOCK, 0, +/* 0x3B - F1 */ F1, F1, 0, +/* 0x3C - F2 */ F2, F2, 0, +/* 0x3D - F3 */ F3, F3, 0, +/* 0x3E - F4 */ F4, F4, 0, +/* 0x3F - F5 */ F5, F5, 0, +/* 0x40 - F6 */ F6, F6, 0, +/* 0x41 - F7 */ F7, F7, 0, +/* 0x42 - F8 */ F8, F8, 0, +/* 0x43 - F9 */ F9, F9, 0, +/* 0x44 - F10 */ F10, F10, 0, +/* 0x45 - NumLock */ NUM_LOCK, NUM_LOCK, 0, +/* 0x46 - ScrLock */ SCROLL_LOCK, SCROLL_LOCK, 0, +/* 0x47 - Home */ PAD_HOME, '7', HOME, +/* 0x48 - CurUp */ PAD_UP, '8', UP, +/* 0x49 - PgUp */ PAD_PAGEUP, '9', PAGEUP, +/* 0x4A - '-' */ PAD_MINUS, '-', 0, +/* 0x4B - Left */ PAD_LEFT, '4', LEFT, +/* 0x4C - MID */ PAD_MID, '5', 0, +/* 0x4D - Right */ PAD_RIGHT, '6', RIGHT, +/* 0x4E - '+' */ PAD_PLUS, '+', 0, +/* 0x4F - End */ PAD_END, '1', END, +/* 0x50 - Down */ PAD_DOWN, '2', DOWN, +/* 0x51 - PgDown */ PAD_PAGEDOWN, '3', PAGEDOWN, +/* 0x52 - Insert */ PAD_INS, '0', INSERT, +/* 0x53 - Delete */ PAD_DOT, '.', DELETE, +/* 0x54 - Enter */ 0, 0, 0, +/* 0x55 - ??? */ 0, 0, 0, +/* 0x56 - ??? */ 0, 0, 0, +/* 0x57 - F11 */ F11, F11, 0, +/* 0x58 - F12 */ F12, F12, 0, +/* 0x59 - ??? */ 0, 0, 0, +/* 0x5A - ??? */ 0, 0, 0, +/* 0x5B - ??? */ 0, 0, GUI_L, +/* 0x5C - ??? */ 0, 0, GUI_R, +/* 0x5D - ??? */ 0, 0, APPS, +/* 0x5E - ??? */ 0, 0, 0, +/* 0x5F - ??? */ 0, 0, 0, +/* 0x60 - ??? */ 0, 0, 0, +/* 0x61 - ??? */ 0, 0, 0, +/* 0x62 - ??? */ 0, 0, 0, +/* 0x63 - ??? */ 0, 0, 0, +/* 0x64 - ??? */ 0, 0, 0, +/* 0x65 - ??? */ 0, 0, 0, +/* 0x66 - ??? */ 0, 0, 0, +/* 0x67 - ??? */ 0, 0, 0, +/* 0x68 - ??? */ 0, 0, 0, +/* 0x69 - ??? */ 0, 0, 0, +/* 0x6A - ??? */ 0, 0, 0, +/* 0x6B - ??? */ 0, 0, 0, +/* 0x6C - ??? */ 0, 0, 0, +/* 0x6D - ??? */ 0, 0, 0, +/* 0x6E - ??? */ 0, 0, 0, +/* 0x6F - ??? */ 0, 0, 0, +/* 0x70 - ??? */ 0, 0, 0, +/* 0x71 - ??? */ 0, 0, 0, +/* 0x72 - ??? */ 0, 0, 0, +/* 0x73 - ??? */ 0, 0, 0, +/* 0x74 - ??? */ 0, 0, 0, +/* 0x75 - ??? */ 0, 0, 0, +/* 0x76 - ??? */ 0, 0, 0, +/* 0x77 - ??? */ 0, 0, 0, +/* 0x78 - ??? */ 0, 0, 0, +/* 0x78 - ??? */ 0, 0, 0, +/* 0x7A - ??? */ 0, 0, 0, +/* 0x7B - ??? */ 0, 0, 0, +/* 0x7C - ??? */ 0, 0, 0, +/* 0x7D - ??? */ 0, 0, 0, +/* 0x7E - ??? */ 0, 0, 0, +/* 0x7F - ??? */ 0, 0, 0 }; /*====================================================================================* - Appendix: Scan code set 1 + Appendix: Scan code set 1 *====================================================================================* -KEY MAKE BREAK ----- KEY MAKE BREAK ----- KEY MAKE BREAK +KEY MAKE BREAK ----- KEY MAKE BREAK ----- KEY MAKE BREAK -------------------------------------------------------------------------------------- -A 1E 9E 9 0A 8A [ 1A 9A -B 30 B0 ` 29 89 INSERT E0,52 E0,D2 -C 2E AE - 0C 8C HOME E0,47 E0,C7 -D 20 A0 = 0D 8D PG UP E0,49 E0,C9 -E 12 92 \ 2B AB DELETE E0,53 E0,D3 -F 21 A1 BKSP 0E 8E END E0,4F E0,CF -G 22 A2 SPACE 39 B9 PG DN E0,51 E0,D1 -H 23 A3 TAB 0F 8F U ARROW E0,48 E0,C8 -I 17 97 CAPS 3A BA L ARROW E0,4B E0,CB -J 24 A4 L SHFT 2A AA D ARROW E0,50 E0,D0 -K 25 A5 L CTRL 1D 9D R ARROW E0,4D E0,CD -L 26 A6 L GUI E0,5B E0,DB NUM 45 C5 -M 32 B2 L ALT 38 B8 KP / E0,35 E0,B5 -N 31 B1 R SHFT 36 B6 KP * 37 B7 -O 18 98 R CTRL E0,1D E0,9D KP - 4A CA -P 19 99 R GUI E0,5C E0,DC KP + 4E CE -Q 10 19 R ALT E0,38 E0,B8 KP EN E0,1C E0,9C -R 13 93 APPS E0,5D E0,DD KP . 53 D3 -S 1F 9F ENTER 1C 9C KP 0 52 D2 -T 14 94 ESC 01 81 KP 1 4F CF -U 16 96 F1 3B BB KP 2 50 D0 -V 2F AF F2 3C BC KP 3 51 D1 -W 11 91 F3 3D BD KP 4 4B CB -X 2D AD F4 3E BE KP 5 4C CC -Y 15 95 F5 3F BF KP 6 4D CD -Z 2C AC F6 40 C0 KP 7 47 C7 -0 0B 8B F7 41 C1 KP 8 48 C8 -1 02 82 F8 42 C2 KP 9 49 C9 -2 03 83 F9 43 C3 ] 1B 9B -3 04 84 F10 44 C4 ; 27 A7 -4 05 85 F11 57 D7 ' 28 A8 -5 06 86 F12 58 D8 , 33 B3 - -6 07 87 PRTSCRN E0,2A E0,B7 . 34 B4 - E0,37 E0,AA - -7 08 88 SCROLL 46 C6 / 35 B5 - -8 09 89 PAUSE E1,1D,45 -NONE- - E1,9D,C5 +A 1E 9E 9 0A 8A [ 1A 9A +B 30 B0 ` 29 89 INSERT E0,52 E0,D2 +C 2E AE - 0C 8C HOME E0,47 E0,C7 +D 20 A0 = 0D 8D PG UP E0,49 E0,C9 +E 12 92 \ 2B AB DELETE E0,53 E0,D3 +F 21 A1 BKSP 0E 8E END E0,4F E0,CF +G 22 A2 SPACE 39 B9 PG DN E0,51 E0,D1 +H 23 A3 TAB 0F 8F U ARROW E0,48 E0,C8 +I 17 97 CAPS 3A BA L ARROW E0,4B E0,CB +J 24 A4 L SHFT 2A AA D ARROW E0,50 E0,D0 +K 25 A5 L CTRL 1D 9D R ARROW E0,4D E0,CD +L 26 A6 L GUI E0,5B E0,DB NUM 45 C5 +M 32 B2 L ALT 38 B8 KP / E0,35 E0,B5 +N 31 B1 R SHFT 36 B6 KP * 37 B7 +O 18 98 R CTRL E0,1D E0,9D KP - 4A CA +P 19 99 R GUI E0,5C E0,DC KP + 4E CE +Q 10 19 R ALT E0,38 E0,B8 KP EN E0,1C E0,9C +R 13 93 APPS E0,5D E0,DD KP . 53 D3 +S 1F 9F ENTER 1C 9C KP 0 52 D2 +T 14 94 ESC 01 81 KP 1 4F CF +U 16 96 F1 3B BB KP 2 50 D0 +V 2F AF F2 3C BC KP 3 51 D1 +W 11 91 F3 3D BD KP 4 4B CB +X 2D AD F4 3E BE KP 5 4C CC +Y 15 95 F5 3F BF KP 6 4D CD +Z 2C AC F6 40 C0 KP 7 47 C7 +0 0B 8B F7 41 C1 KP 8 48 C8 +1 02 82 F8 42 C2 KP 9 49 C9 +2 03 83 F9 43 C3 ] 1B 9B +3 04 84 F10 44 C4 ; 27 A7 +4 05 85 F11 57 D7 ' 28 A8 +5 06 86 F12 58 D8 , 33 B3 + +6 07 87 PRTSCRN E0,2A E0,B7 . 34 B4 + E0,37 E0,AA + +7 08 88 SCROLL 46 C6 / 35 B5 + +8 09 89 PAUSE E1,1D,45 -NONE- + E1,9D,C5 ----------------- ACPI Scan Codes: ------------------------------------------- -Key Make Code Break Code +Key Make Code Break Code ------------------------------------------- -Power E0, 5E E0, DE -Sleep E0, 5F E0, DF -Wake E0, 63 E0, E3 +Power E0, 5E E0, DE +Sleep E0, 5F E0, DF +Wake E0, 63 E0, E3 ------------------------------- Windows Multimedia Scan Codes: ------------------------------------------- -Key Make Code Break Code +Key Make Code Break Code ------------------------------------------- -Next Track E0, 19 E0, 99 -Previous Track E0, 10 E0, 90 -Stop E0, 24 E0, A4 -Play/Pause E0, 22 E0, A2 -Mute E0, 20 E0, A0 -Volume Up E0, 30 E0, B0 -Volume Down E0, 2E E0, AE -Media Select E0, 6D E0, ED -E-Mail E0, 6C E0, EC -Calculator E0, 21 E0, A1 -My Computer E0, 6B E0, EB -WWW Search E0, 65 E0, E5 -WWW Home E0, 32 E0, B2 -WWW Back E0, 6A E0, EA -WWW Forward E0, 69 E0, E9 -WWW Stop E0, 68 E0, E8 -WWW Refresh E0, 67 E0, E7 -WWW Favorites E0, 66 E0, E6 +Next Track E0, 19 E0, 99 +Previous Track E0, 10 E0, 90 +Stop E0, 24 E0, A4 +Play/Pause E0, 22 E0, A2 +Mute E0, 20 E0, A0 +Volume Up E0, 30 E0, B0 +Volume Down E0, 2E E0, AE +Media Select E0, 6D E0, ED +E-Mail E0, 6C E0, EC +Calculator E0, 21 E0, A1 +My Computer E0, 6B E0, EB +WWW Search E0, 65 E0, E5 +WWW Home E0, 32 E0, B2 +WWW Back E0, 6A E0, EA +WWW Forward E0, 69 E0, E9 +WWW Stop E0, 68 E0, E8 +WWW Refresh E0, 67 E0, E7 +WWW Favorites E0, 66 E0, E6 *=====================================================================================*/ diff --git a/bsp/x86/drivers/serial.c b/bsp/x86/drivers/serial.c index 64830135fc4b19853ce284923bde4a83ddcb0872..58cc9dee90d95a322d8dfe523d7bf615c4176cf4 100644 --- a/bsp/x86/drivers/serial.c +++ b/bsp/x86/drivers/serial.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006-2018, RT-Thread Development Team + * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * @@ -24,17 +24,17 @@ */ void rt_serial_init(void) { - outb(COM1+3,0x80); /* set DLAB of line control reg */ - outb(COM1,0x0c); /* LS of divisor (48 -> 2400 bps */ - outb(COM1+1,0x00); /* MS of divisor */ - outb(COM1+3,0x03); /* reset DLAB */ - outb(COM1+4,0x0b); /* set DTR,RTS, OUT_2 */ - outb(COM1+1,0x0d); /* enable all intrs but writes */ - inb(COM1); /* read data port to reset things (?) */ + outb(COM1+3,0x80); /* set DLAB of line control reg */ + outb(COM1,0x0c); /* LS of divisor (48 -> 2400 bps */ + outb(COM1+1,0x00); /* MS of divisor */ + outb(COM1+3,0x03); /* reset DLAB */ + outb(COM1+4,0x0b); /* set DTR,RTS, OUT_2 */ + outb(COM1+1,0x0d); /* enable all intrs but writes */ + inb(COM1); /* read data port to reset things (?) */ } /** - * This function read a character from serial without interrupt enable mode + * This function read a character from serial without interrupt enable mode * * @return the read char */ @@ -53,13 +53,13 @@ char rt_serial_getc(void) void rt_serial_putc(const char c) { int val; - + while(1) { - if ((val = inb(COM1+COMSTATUS)) & THRE) + if ((val = inb(COM1+COMSTATUS)) & THRE) break; } - + outb(COM1+COMWRITE, c&0xff); } diff --git a/bsp/x86/src/hello.c b/bsp/x86/src/hello.c index a075f18ef1c829e1ae6ae671843040579eca6d5f..b4018617b54e4d718a9e30e33bb4e8302880c4c0 100644 --- a/bsp/x86/src/hello.c +++ b/bsp/x86/src/hello.c @@ -9,28 +9,28 @@ extern void rt_kprintf(const char* fmt,...); int add(int a, int b) { - return a+b; + return a+b; } int main(int argc, char* argv[]) { - int i; - char str[32] = "Hello World\n"; + int i; + char str[32] = "Hello World\n"; - for(i=0; iws_col, p_winsize->ws_row); - rt_exit_critical(); + } + break; + case TIOCGWINSZ: + { + struct winsize* p_winsize; + + p_winsize = (struct winsize*)args; + /* TODO: get windows size from console */ + p_winsize->ws_col = 80; + p_winsize->ws_row = 24; + p_winsize->ws_xpixel = 0;/*unused*/ + p_winsize->ws_ypixel = 0;/*unused*/ } break; #endif /*RT_USING_POSIX_TERMIOS*/ diff --git a/components/net/uip/README b/components/net/uip/README deleted file mode 100644 index b5015386787325ed22a450f6a4651e0f8853a004..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/README b/components/net/uip/apps/README deleted file mode 100644 index 0096c4e4fd11ea690be0a2b5d6b745508162620b..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/dhcpc/Makefile.dhcpc b/components/net/uip/apps/dhcpc/Makefile.dhcpc deleted file mode 100644 index f84c84ff4632856c5952ed2a9b2871fb6c9f9517..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/dhcpc/Makefile.dhcpc +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += dhcpc.c timer.c diff --git a/components/net/uip/apps/dhcpc/dhcpc.c b/components/net/uip/apps/dhcpc/dhcpc.c deleted file mode 100644 index ac738e7e24794acfce979e7d7652f57983af0900..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/dhcpc/dhcpc.c +++ /dev/null @@ -1,356 +0,0 @@ -/* - * Copyright (c) 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 - * - * @(#)$Id: dhcpc.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - */ - -#include -#include - -#include "uip.h" -#include "dhcpc.h" -#include "timer.h" -#include "pt.h" - -#define STATE_INITIAL 0 -#define STATE_SENDING 1 -#define STATE_OFFER_RECEIVED 2 -#define STATE_CONFIG_RECEIVED 3 - -static struct dhcpc_state s; - -struct dhcp_msg { - u8_t op, htype, hlen, hops; - u8_t xid[4]; - u16_t secs, flags; - u8_t ciaddr[4]; - u8_t yiaddr[4]; - u8_t siaddr[4]; - u8_t giaddr[4]; - u8_t chaddr[16]; -#ifndef UIP_CONF_DHCP_LIGHT - u8_t sname[64]; - u8_t file[128]; -#endif - u8_t options[312]; -}; - -#define BOOTP_BROADCAST 0x8000 - -#define DHCP_REQUEST 1 -#define DHCP_REPLY 2 -#define DHCP_HTYPE_ETHERNET 1 -#define DHCP_HLEN_ETHERNET 6 -#define DHCP_MSG_LEN 236 - -#define DHCPC_SERVER_PORT 67 -#define DHCPC_CLIENT_PORT 68 - -#define DHCPDISCOVER 1 -#define DHCPOFFER 2 -#define DHCPREQUEST 3 -#define DHCPDECLINE 4 -#define DHCPACK 5 -#define DHCPNAK 6 -#define DHCPRELEASE 7 - -#define DHCP_OPTION_SUBNET_MASK 1 -#define DHCP_OPTION_ROUTER 3 -#define DHCP_OPTION_DNS_SERVER 6 -#define DHCP_OPTION_REQ_IPADDR 50 -#define DHCP_OPTION_LEASE_TIME 51 -#define DHCP_OPTION_MSG_TYPE 53 -#define DHCP_OPTION_SERVER_ID 54 -#define DHCP_OPTION_REQ_LIST 55 -#define DHCP_OPTION_END 255 - -static const u8_t xid[4] = {0xad, 0xde, 0x12, 0x23}; -static const u8_t magic_cookie[4] = {99, 130, 83, 99}; -/*---------------------------------------------------------------------------*/ -static u8_t * -add_msg_type(u8_t *optptr, u8_t type) -{ - *optptr++ = DHCP_OPTION_MSG_TYPE; - *optptr++ = 1; - *optptr++ = type; - return optptr; -} -/*---------------------------------------------------------------------------*/ -static u8_t * -add_server_id(u8_t *optptr) -{ - *optptr++ = DHCP_OPTION_SERVER_ID; - *optptr++ = 4; - memcpy(optptr, s.serverid, 4); - return optptr + 4; -} -/*---------------------------------------------------------------------------*/ -static u8_t * -add_req_ipaddr(u8_t *optptr) -{ - *optptr++ = DHCP_OPTION_REQ_IPADDR; - *optptr++ = 4; - memcpy(optptr, s.ipaddr, 4); - return optptr + 4; -} -/*---------------------------------------------------------------------------*/ -static u8_t * -add_req_options(u8_t *optptr) -{ - *optptr++ = DHCP_OPTION_REQ_LIST; - *optptr++ = 3; - *optptr++ = DHCP_OPTION_SUBNET_MASK; - *optptr++ = DHCP_OPTION_ROUTER; - *optptr++ = DHCP_OPTION_DNS_SERVER; - return optptr; -} -/*---------------------------------------------------------------------------*/ -static u8_t * -add_end(u8_t *optptr) -{ - *optptr++ = DHCP_OPTION_END; - return optptr; -} -/*---------------------------------------------------------------------------*/ -static void -create_msg(register struct dhcp_msg *m) -{ - m->op = DHCP_REQUEST; - m->htype = DHCP_HTYPE_ETHERNET; - m->hlen = s.mac_len; - m->hops = 0; - memcpy(m->xid, xid, sizeof(m->xid)); - m->secs = 0; - m->flags = HTONS(BOOTP_BROADCAST); /* Broadcast bit. */ - /* uip_ipaddr_copy(m->ciaddr, uip_hostaddr);*/ - memcpy(m->ciaddr, uip_hostaddr, sizeof(m->ciaddr)); - memset(m->yiaddr, 0, sizeof(m->yiaddr)); - memset(m->siaddr, 0, sizeof(m->siaddr)); - memset(m->giaddr, 0, sizeof(m->giaddr)); - memcpy(m->chaddr, s.mac_addr, s.mac_len); - memset(&m->chaddr[s.mac_len], 0, sizeof(m->chaddr) - s.mac_len); -#ifndef UIP_CONF_DHCP_LIGHT - memset(m->sname, 0, sizeof(m->sname)); - memset(m->file, 0, sizeof(m->file)); -#endif - - memcpy(m->options, magic_cookie, sizeof(magic_cookie)); -} -/*---------------------------------------------------------------------------*/ -static void -send_discover(void) -{ - u8_t *end; - struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata; - - create_msg(m); - - end = add_msg_type(&m->options[4], DHCPDISCOVER); - end = add_req_options(end); - end = add_end(end); - - uip_send(uip_appdata, end - (u8_t *)uip_appdata); -} -/*---------------------------------------------------------------------------*/ -static void -send_request(void) -{ - u8_t *end; - struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata; - - create_msg(m); - - end = add_msg_type(&m->options[4], DHCPREQUEST); - end = add_server_id(end); - end = add_req_ipaddr(end); - end = add_end(end); - - uip_send(uip_appdata, end - (u8_t *)uip_appdata); -} -/*---------------------------------------------------------------------------*/ -static u8_t -parse_options(u8_t *optptr, int len) -{ - u8_t *end = optptr + len; - u8_t type = 0; - - while(optptr < end) { - switch(*optptr) { - case DHCP_OPTION_SUBNET_MASK: - memcpy(s.netmask, optptr + 2, 4); - break; - case DHCP_OPTION_ROUTER: - memcpy(s.default_router, optptr + 2, 4); - break; - case DHCP_OPTION_DNS_SERVER: - memcpy(s.dnsaddr, optptr + 2, 4); - break; - case DHCP_OPTION_MSG_TYPE: - type = *(optptr + 2); - break; - case DHCP_OPTION_SERVER_ID: - memcpy(s.serverid, optptr + 2, 4); - break; - case DHCP_OPTION_LEASE_TIME: - memcpy(s.lease_time, optptr + 2, 4); - break; - case DHCP_OPTION_END: - return type; - } - - optptr += optptr[1] + 2; - } - return type; -} -/*---------------------------------------------------------------------------*/ -static u8_t -parse_msg(void) -{ - struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata; - - if(m->op == DHCP_REPLY && - memcmp(m->xid, xid, sizeof(xid)) == 0 && - memcmp(m->chaddr, s.mac_addr, s.mac_len) == 0) { - memcpy(s.ipaddr, m->yiaddr, 4); - return parse_options(&m->options[4], uip_datalen()); - } - return 0; -} -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(handle_dhcp(void)) -{ - PT_BEGIN(&s.pt); - - /* try_again:*/ - s.state = STATE_SENDING; - s.ticks = CLOCK_SECOND; - - do { - send_discover(); - timer_set(&s.timer, s.ticks); - PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer)); - - if(uip_newdata() && parse_msg() == DHCPOFFER) { - s.state = STATE_OFFER_RECEIVED; - break; - } - - if(s.ticks < CLOCK_SECOND * 60) { - s.ticks *= 2; - } - } while(s.state != STATE_OFFER_RECEIVED); - - s.ticks = CLOCK_SECOND; - - do { - send_request(); - timer_set(&s.timer, s.ticks); - PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer)); - - if(uip_newdata() && parse_msg() == DHCPACK) { - s.state = STATE_CONFIG_RECEIVED; - break; - } - - if(s.ticks <= CLOCK_SECOND * 10) { - s.ticks += CLOCK_SECOND; - } else { - PT_RESTART(&s.pt); - } - } while(s.state != STATE_CONFIG_RECEIVED); - -#if 0 - printf("Got IP address %d.%d.%d.%d\n", - uip_ipaddr1(s.ipaddr), uip_ipaddr2(s.ipaddr), - uip_ipaddr3(s.ipaddr), uip_ipaddr4(s.ipaddr)); - printf("Got netmask %d.%d.%d.%d\n", - uip_ipaddr1(s.netmask), uip_ipaddr2(s.netmask), - uip_ipaddr3(s.netmask), uip_ipaddr4(s.netmask)); - printf("Got DNS server %d.%d.%d.%d\n", - uip_ipaddr1(s.dnsaddr), uip_ipaddr2(s.dnsaddr), - uip_ipaddr3(s.dnsaddr), uip_ipaddr4(s.dnsaddr)); - printf("Got default router %d.%d.%d.%d\n", - uip_ipaddr1(s.default_router), uip_ipaddr2(s.default_router), - uip_ipaddr3(s.default_router), uip_ipaddr4(s.default_router)); - printf("Lease expires in %ld seconds\n", - ntohs(s.lease_time[0])*65536ul + ntohs(s.lease_time[1])); -#endif - - dhcpc_configured(&s); - - /* timer_stop(&s.timer);*/ - - /* - * PT_END restarts the thread so we do this instead. Eventually we - * should reacquire expired leases here. - */ - while(1) { - PT_YIELD(&s.pt); - } - - PT_END(&s.pt); -} -/*---------------------------------------------------------------------------*/ -void -dhcpc_init(const void *mac_addr, int mac_len) -{ - uip_ipaddr_t addr; - - s.mac_addr = mac_addr; - s.mac_len = mac_len; - - s.state = STATE_INITIAL; - uip_ipaddr(addr, 255,255,255,255); - s.conn = uip_udp_new(&addr, HTONS(DHCPC_SERVER_PORT)); - if(s.conn != NULL) { - uip_udp_bind(s.conn, HTONS(DHCPC_CLIENT_PORT)); - } - PT_INIT(&s.pt); -} -/*---------------------------------------------------------------------------*/ -void -dhcpc_appcall(void) -{ - handle_dhcp(); -} -/*---------------------------------------------------------------------------*/ -void -dhcpc_request(void) -{ - u16_t ipaddr[2]; - - if(s.state == STATE_INITIAL) { - uip_ipaddr(ipaddr, 0,0,0,0); - uip_sethostaddr(ipaddr); - /* handle_dhcp(PROCESS_EVENT_NONE, NULL);*/ - } -} -/*---------------------------------------------------------------------------*/ diff --git a/components/net/uip/apps/dhcpc/dhcpc.h b/components/net/uip/apps/dhcpc/dhcpc.h deleted file mode 100644 index c6550ec5860de6d5c979a3e36df47220a213c51c..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/dhcpc/dhcpc.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (c) 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 - * - * @(#)$Id: dhcpc.h,v 1.3 2006/06/11 21:46:37 adam Exp $ - */ -#ifndef __DHCPC_H__ -#define __DHCPC_H__ - -#include "timer.h" -#include "pt.h" - -struct dhcpc_state { - struct pt pt; - char state; - struct uip_udp_conn *conn; - struct timer timer; - u16_t ticks; - const void *mac_addr; - int mac_len; - - u8_t serverid[4]; - - u16_t lease_time[2]; - u16_t ipaddr[2]; - u16_t netmask[2]; - u16_t dnsaddr[2]; - u16_t default_router[2]; -}; - -void dhcpc_init(const void *mac_addr, int mac_len); -void dhcpc_request(void); - -void dhcpc_appcall(void); - -void dhcpc_configured(const struct dhcpc_state *s); - -typedef struct dhcpc_state uip_udp_appstate_t; -#define UIP_UDP_APPCALL dhcpc_appcall - - -#endif /* __DHCPC_H__ */ diff --git a/components/net/uip/apps/hello-world/Makefile.hello-world b/components/net/uip/apps/hello-world/Makefile.hello-world deleted file mode 100644 index e34aaf51ab9b9eff330af0712d1a1ff78169bd73..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/hello-world/Makefile.hello-world +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += hello-world.c diff --git a/components/net/uip/apps/hello-world/hello-world.c b/components/net/uip/apps/hello-world/hello-world.c deleted file mode 100644 index b7f329e745b6700f430014179ef96bd883d57e29..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/hello-world/hello-world.c +++ /dev/null @@ -1,115 +0,0 @@ -/** - * \addtogroup helloworld - * @{ - */ - -/** - * \file - * An example of how to write uIP applications - * with protosockets. - * \author - * Adam Dunkels - */ - -/* - * This is a short example of how to write uIP applications using - * protosockets. - */ - -/* - * We define the application state (struct hello_world_state) in the - * hello-world.h file, so we need to include it here. We also include - * uip.h (since this cannot be included in hello-world.h) and - * , since we use the memcpy() function in the code. - */ -#include "hello-world.h" -#include "uip.h" -#include - -/* - * Declaration of the protosocket function that handles the connection - * (defined at the end of the code). - */ -static int handle_connection(struct hello_world_state *s); -static int rt_show_info(struct hello_world_state *s); -/*---------------------------------------------------------------------------*/ -/* - * The initialization function. We must explicitly call this function - * from the system initialization code, some time after uip_init() is - * called. - */ -void -hello_world_init(void) -{ - /* We start to listen for connections on TCP port 1000. */ - uip_listen(HTONS(1000)); -} -/*---------------------------------------------------------------------------*/ -/* - * In hello-world.h we have defined the UIP_APPCALL macro to - * hello_world_appcall so that this funcion is uIP's application - * function. This function is called whenever an uIP event occurs - * (e.g. when a new connection is established, new data arrives, sent - * data is acknowledged, data needs to be retransmitted, etc.). - */ -void -hello_world_appcall(void) -{ - /* - * The uip_conn structure has a field called "appstate" that holds - * the application state of the connection. We make a pointer to - * this to access it easier. - */ - struct hello_world_state *s = &(uip_conn->appstate); - - /* - * If a new connection was just established, we should initialize - * the protosocket in our applications' state structure. - */ - if(uip_connected()) { - PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer)); - rt_show_info(s); - } - - /* - * Finally, we run the protosocket function that actually handles - * the communication. We pass it a pointer to the application state - * of the current connection. - */ - handle_connection(s); -} -/*---------------------------------------------------------------------------*/ -/* - * This is the protosocket function that handles the communication. A - * protosocket function must always return an int, but must never - * explicitly return - all return statements are hidden in the PSOCK - * macros. - */ -static int rt_show_info(struct hello_world_state *s) -{ - PSOCK_BEGIN(&s->p); - PSOCK_SEND_STR(&s->p,"RT-Thread RTOS"); - PSOCK_READTO(&s->p, '\n'); - PSOCK_END(&s->p); - -} -static int -handle_connection(struct hello_world_state *s) -{ - int i; - for (i=0;iname[i] = 0; - s->inputbuffer[i] = 0; - } - PSOCK_BEGIN(&s->p); - //PSOCK_SEND_STR(&s->p, "Hello. What is your name?\n"); - PSOCK_READTO(&s->p, '\n'); - strncpy(s->name, s->inputbuffer, sizeof(s->name)); - //PSOCK_SEND_STR(&s->p, "Hello "); - PSOCK_SEND_STR(&s->p, s->name); - //PSOCK_CLOSE(&s->p); - - PSOCK_END(&s->p); -} -/*---------------------------------------------------------------------------*/ diff --git a/components/net/uip/apps/hello-world/hello-world.h b/components/net/uip/apps/hello-world/hello-world.h deleted file mode 100644 index 4f2e6d93e90684e73c7772ccab1c2127dfcea3bd..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/hello-world/hello-world.h +++ /dev/null @@ -1,53 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup helloworld Hello, world - * @{ - * - * A small example showing how to write applications with - * \ref psock "protosockets". - */ - -/** - * \file - * Header file for an example of how to write uIP applications - * with protosockets. - * \author - * Adam Dunkels - */ - -#ifndef __HELLO_WORLD_H__ -#define __HELLO_WORLD_H__ - -/* Since this file will be included by uip.h, we cannot include uip.h - here. But we might need to include uipopt.h if we need the u8_t and - u16_t datatypes. */ -#include "uipopt.h" - -#include "psock.h" - -/* Next, we define the uip_tcp_appstate_t datatype. This is the state - of our application, and the memory required for this state is - allocated together with each TCP connection. One application state - for each TCP connection. */ -#define BUF_SIZE 200 -typedef struct hello_world_state { - struct psock p; - char inputbuffer[BUF_SIZE]; - char name[BUF_SIZE]; -} uip_tcp_appstate_t; - -/* Finally we define the application function to be called by uIP. */ -void hello_world_appcall(void); -#ifndef UIP_APPCALL -#define UIP_APPCALL hello_world_appcall -#endif /* UIP_APPCALL */ - -void hello_world_init(void); - -#endif /* __HELLO_WORLD_H__ */ -/** @} */ -/** @} */ diff --git a/components/net/uip/apps/resolv/Makefile.resolv b/components/net/uip/apps/resolv/Makefile.resolv deleted file mode 100644 index 94c37d8c861f2584879f93dc7f973e2580b7fcd5..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/resolv/Makefile.resolv +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += resolv.c diff --git a/components/net/uip/apps/resolv/resolv.c b/components/net/uip/apps/resolv/resolv.c deleted file mode 100644 index 8afbca6c552beac27d5755101bf183468c047dda..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/resolv/resolv.c +++ /dev/null @@ -1,464 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup resolv DNS resolver - * @{ - * - * The uIP DNS resolver functions are used to lookup a hostname and - * map it to a numerical IP address. It maintains a list of resolved - * hostnames that can be queried with the resolv_lookup() - * function. New hostnames can be resolved using the resolv_query() - * function. - * - * When a hostname has been resolved (or found to be non-existant), - * the resolver code calls a callback function called resolv_found() - * that must be implemented by the module that uses the resolver. - */ - -/** - * \file - * DNS host name to IP address resolver. - * \author Adam Dunkels - * - * This file implements a DNS host name to IP address resolver. - */ - -/* - * Copyright (c) 2002-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: resolv.c,v 1.5 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "resolv.h" -#include "uip.h" - -#include - -#ifndef NULL -#define NULL (void *)0 -#endif /* NULL */ - -/** \internal The maximum number of retries when asking for a name. */ -#define MAX_RETRIES 8 - -/** \internal The DNS message header. */ -struct dns_hdr { - u16_t id; - u8_t flags1, flags2; -#define DNS_FLAG1_RESPONSE 0x80 -#define DNS_FLAG1_OPCODE_STATUS 0x10 -#define DNS_FLAG1_OPCODE_INVERSE 0x08 -#define DNS_FLAG1_OPCODE_STANDARD 0x00 -#define DNS_FLAG1_AUTHORATIVE 0x04 -#define DNS_FLAG1_TRUNC 0x02 -#define DNS_FLAG1_RD 0x01 -#define DNS_FLAG2_RA 0x80 -#define DNS_FLAG2_ERR_MASK 0x0f -#define DNS_FLAG2_ERR_NONE 0x00 -#define DNS_FLAG2_ERR_NAME 0x03 - u16_t numquestions; - u16_t numanswers; - u16_t numauthrr; - u16_t numextrarr; -}; - -/** \internal The DNS answer message structure. */ -struct dns_answer { - /* DNS answer record starts with either a domain name or a pointer - to a name already present somewhere in the packet. */ - u16_t type; - u16_t class; - u16_t ttl[2]; - u16_t len; - uip_ipaddr_t ipaddr; -}; - -struct namemap { -#define STATE_UNUSED 0 -#define STATE_NEW 1 -#define STATE_ASKING 2 -#define STATE_DONE 3 -#define STATE_ERROR 4 - u8_t state; - u8_t tmr; - u8_t retries; - u8_t seqno; - u8_t err; - char name[32]; - uip_ipaddr_t ipaddr; -}; - -#ifndef UIP_CONF_RESOLV_ENTRIES -#define RESOLV_ENTRIES 4 -#else /* UIP_CONF_RESOLV_ENTRIES */ -#define RESOLV_ENTRIES UIP_CONF_RESOLV_ENTRIES -#endif /* UIP_CONF_RESOLV_ENTRIES */ - - -static struct namemap names[RESOLV_ENTRIES]; - -static u8_t seqno; - -static struct uip_udp_conn *resolv_conn = NULL; - - -/*---------------------------------------------------------------------------*/ -/** \internal - * Walk through a compact encoded DNS name and return the end of it. - * - * \return The end of the name. - */ -/*---------------------------------------------------------------------------*/ -static unsigned char * -parse_name(unsigned char *query) -{ - unsigned char n; - - do { - n = *query++; - - while(n > 0) { - /* printf("%c", *query);*/ - ++query; - --n; - }; - /* printf(".");*/ - } while(*query != 0); - /* printf("\n");*/ - return query + 1; -} -/*---------------------------------------------------------------------------*/ -/** \internal - * Runs through the list of names to see if there are any that have - * not yet been queried and, if so, sends out a query. - */ -/*---------------------------------------------------------------------------*/ -static void -check_entries(void) -{ - register struct dns_hdr *hdr; - char *query, *nptr, *nameptr; - static u8_t i; - static u8_t n; - register struct namemap *namemapptr; - - for(i = 0; i < RESOLV_ENTRIES; ++i) { - namemapptr = &names[i]; - if(namemapptr->state == STATE_NEW || - namemapptr->state == STATE_ASKING) { - if(namemapptr->state == STATE_ASKING) { - if(--namemapptr->tmr == 0) { - if(++namemapptr->retries == MAX_RETRIES) { - namemapptr->state = STATE_ERROR; - resolv_found(namemapptr->name, NULL); - continue; - } - namemapptr->tmr = namemapptr->retries; - } else { - /* printf("Timer %d\n", namemapptr->tmr);*/ - /* Its timer has not run out, so we move on to next - entry. */ - continue; - } - } else { - namemapptr->state = STATE_ASKING; - namemapptr->tmr = 1; - namemapptr->retries = 0; - } - hdr = (struct dns_hdr *)uip_appdata; - memset(hdr, 0, sizeof(struct dns_hdr)); - hdr->id = htons(i); - hdr->flags1 = DNS_FLAG1_RD; - hdr->numquestions = HTONS(1); - query = (char *)uip_appdata + 12; - nameptr = namemapptr->name; - --nameptr; - /* Convert hostname into suitable query format. */ - do { - ++nameptr; - nptr = query; - ++query; - for(n = 0; *nameptr != '.' && *nameptr != 0; ++nameptr) { - *query = *nameptr; - ++query; - ++n; - } - *nptr = n; - } while(*nameptr != 0); - { - static unsigned char endquery[] = - {0,0,1,0,1}; - memcpy(query, endquery, 5); - } - uip_udp_send((unsigned char)(query + 5 - (char *)uip_appdata)); - break; - } - } -} -/*---------------------------------------------------------------------------*/ -/** \internal - * Called when new UDP data arrives. - */ -/*---------------------------------------------------------------------------*/ -static void -newdata(void) -{ - char *nameptr; - struct dns_answer *ans; - struct dns_hdr *hdr; - static u8_t nquestions, nanswers; - static u8_t i; - register struct namemap *namemapptr; - - hdr = (struct dns_hdr *)uip_appdata; - /* printf("ID %d\n", htons(hdr->id)); - printf("Query %d\n", hdr->flags1 & DNS_FLAG1_RESPONSE); - printf("Error %d\n", hdr->flags2 & DNS_FLAG2_ERR_MASK); - printf("Num questions %d, answers %d, authrr %d, extrarr %d\n", - htons(hdr->numquestions), - htons(hdr->numanswers), - htons(hdr->numauthrr), - htons(hdr->numextrarr)); - */ - - /* The ID in the DNS header should be our entry into the name - table. */ - i = htons(hdr->id); - namemapptr = &names[i]; - if(i < RESOLV_ENTRIES && - namemapptr->state == STATE_ASKING) { - - /* This entry is now finished. */ - namemapptr->state = STATE_DONE; - namemapptr->err = hdr->flags2 & DNS_FLAG2_ERR_MASK; - - /* Check for error. If so, call callback to inform. */ - if(namemapptr->err != 0) { - namemapptr->state = STATE_ERROR; - resolv_found(namemapptr->name, NULL); - return; - } - - /* We only care about the question(s) and the answers. The authrr - and the extrarr are simply discarded. */ - nquestions = htons(hdr->numquestions); - nanswers = htons(hdr->numanswers); - - /* Skip the name in the question. XXX: This should really be - checked agains the name in the question, to be sure that they - match. */ - nameptr = parse_name((char *)uip_appdata + 12) + 4; - - while(nanswers > 0) { - /* The first byte in the answer resource record determines if it - is a compressed record or a normal one. */ - if(*nameptr & 0xc0) { - /* Compressed name. */ - nameptr +=2; - /* printf("Compressed anwser\n");*/ - } else { - /* Not compressed name. */ - nameptr = parse_name((char *)nameptr); - } - - ans = (struct dns_answer *)nameptr; - /* printf("Answer: type %x, class %x, ttl %x, length %x\n", - htons(ans->type), htons(ans->class), (htons(ans->ttl[0]) - << 16) | htons(ans->ttl[1]), htons(ans->len));*/ - - /* Check for IP address type and Internet class. Others are - discarded. */ - if(ans->type == HTONS(1) && - ans->class == HTONS(1) && - ans->len == HTONS(4)) { - /* printf("IP address %d.%d.%d.%d\n", - htons(ans->ipaddr[0]) >> 8, - htons(ans->ipaddr[0]) & 0xff, - htons(ans->ipaddr[1]) >> 8, - htons(ans->ipaddr[1]) & 0xff);*/ - /* XXX: we should really check that this IP address is the one - we want. */ - namemapptr->ipaddr[0] = ans->ipaddr[0]; - namemapptr->ipaddr[1] = ans->ipaddr[1]; - - resolv_found(namemapptr->name, namemapptr->ipaddr); - return; - } else { - nameptr = nameptr + 10 + htons(ans->len); - } - --nanswers; - } - } - -} -/*---------------------------------------------------------------------------*/ -/** \internal - * The main UDP function. - */ -/*---------------------------------------------------------------------------*/ -void -resolv_appcall(void) -{ - if(uip_udp_conn->rport == HTONS(53)) { - if(uip_poll()) { - check_entries(); - } - if(uip_newdata()) { - newdata(); - } - } -} -/*---------------------------------------------------------------------------*/ -/** - * Queues a name so that a question for the name will be sent out. - * - * \param name The hostname that is to be queried. - */ -/*---------------------------------------------------------------------------*/ -void -resolv_query(char *name) -{ - static u8_t i; - static u8_t lseq, lseqi; - register struct namemap *nameptr; - - lseq = lseqi = 0; - - for(i = 0; i < RESOLV_ENTRIES; ++i) { - nameptr = &names[i]; - if(nameptr->state == STATE_UNUSED) { - break; - } - if(seqno - nameptr->seqno > lseq) { - lseq = seqno - nameptr->seqno; - lseqi = i; - } - } - - if(i == RESOLV_ENTRIES) { - i = lseqi; - nameptr = &names[i]; - } - - /* printf("Using entry %d\n", i);*/ - - strcpy(nameptr->name, name); - nameptr->state = STATE_NEW; - nameptr->seqno = seqno; - ++seqno; -} -/*---------------------------------------------------------------------------*/ -/** - * Look up a hostname in the array of known hostnames. - * - * \note This function only looks in the internal array of known - * hostnames, it does not send out a query for the hostname if none - * was found. The function resolv_query() can be used to send a query - * for a hostname. - * - * \return A pointer to a 4-byte representation of the hostname's IP - * address, or NULL if the hostname was not found in the array of - * hostnames. - */ -/*---------------------------------------------------------------------------*/ -u16_t * -resolv_lookup(char *name) -{ - static u8_t i; - struct namemap *nameptr; - - /* Walk through the list to see if the name is in there. If it is - not, we return NULL. */ - for(i = 0; i < RESOLV_ENTRIES; ++i) { - nameptr = &names[i]; - if(nameptr->state == STATE_DONE && - strcmp(name, nameptr->name) == 0) { - return nameptr->ipaddr; - } - } - return NULL; -} -/*---------------------------------------------------------------------------*/ -/** - * Obtain the currently configured DNS server. - * - * \return A pointer to a 4-byte representation of the IP address of - * the currently configured DNS server or NULL if no DNS server has - * been configured. - */ -/*---------------------------------------------------------------------------*/ -u16_t * -resolv_getserver(void) -{ - if(resolv_conn == NULL) { - return NULL; - } - return resolv_conn->ripaddr; -} -/*---------------------------------------------------------------------------*/ -/** - * Configure which DNS server to use for queries. - * - * \param dnsserver A pointer to a 4-byte representation of the IP - * address of the DNS server to be configured. - */ -/*---------------------------------------------------------------------------*/ -void -resolv_conf(u16_t *dnsserver) -{ - if(resolv_conn != NULL) { - uip_udp_remove(resolv_conn); - } - - resolv_conn = uip_udp_new(dnsserver, HTONS(53)); -} -/*---------------------------------------------------------------------------*/ -/** - * Initalize the resolver. - */ -/*---------------------------------------------------------------------------*/ -void -resolv_init(void) -{ - static u8_t i; - - for(i = 0; i < RESOLV_ENTRIES; ++i) { - names[i].state = STATE_DONE; - } - -} -/*---------------------------------------------------------------------------*/ - -/** @} */ -/** @} */ diff --git a/components/net/uip/apps/resolv/resolv.h b/components/net/uip/apps/resolv/resolv.h deleted file mode 100644 index abab34e12753db9e0ca6fa89e01ba602298d577f..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/resolv/resolv.h +++ /dev/null @@ -1,75 +0,0 @@ -/** - * \addtogroup resolv - * @{ - */ -/** - * \file - * DNS resolver code header file. - * \author Adam Dunkels - */ - -/* - * Copyright (c) 2002-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: resolv.h,v 1.4 2006/06/11 21:46:37 adam Exp $ - * - */ -#ifndef __RESOLV_H__ -#define __RESOLV_H__ - -typedef int uip_udp_appstate_t; -void resolv_appcall(void); -#define UIP_UDP_APPCALL resolv_appcall - -#include "uipopt.h" - -/** - * Callback function which is called when a hostname is found. - * - * This function must be implemented by the module that uses the DNS - * resolver. It is called when a hostname is found, or when a hostname - * was not found. - * - * \param name A pointer to the name that was looked up. \param - * ipaddr A pointer to a 4-byte array containing the IP address of the - * hostname, or NULL if the hostname could not be found. - */ -void resolv_found(char *name, u16_t *ipaddr); - -/* Functions. */ -void resolv_conf(u16_t *dnsserver); -u16_t *resolv_getserver(void); -void resolv_init(void); -u16_t *resolv_lookup(char *name); -void resolv_query(char *name); - -#endif /* __RESOLV_H__ */ - -/** @} */ diff --git a/components/net/uip/apps/smtp/Makefile.smtp b/components/net/uip/apps/smtp/Makefile.smtp deleted file mode 100644 index 8b3a5aa45c5abb86670221ca412e93eb611e8a78..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/smtp/Makefile.smtp +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += smtp.c smtp-strings.c memb.c diff --git a/components/net/uip/apps/smtp/makestrings b/components/net/uip/apps/smtp/makestrings deleted file mode 100644 index bea18a6c3489bc8b74fc9b309dbbf58325416074..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/smtp/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("smtp-strings"); - -exit 0; - diff --git a/components/net/uip/apps/smtp/smtp-strings b/components/net/uip/apps/smtp/smtp-strings deleted file mode 100644 index 27f639c2eb0cc0ceb775fefda9bc9cae570d1ebc..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/smtp/smtp-strings +++ /dev/null @@ -1,11 +0,0 @@ -smtp_220 "220" -smtp_helo "HELO " -smtp_mail_from "MAIL FROM: " -smtp_rcpt_to "RCPT TO: " -smtp_data "DATA\r\n" -smtp_to "To: " -smtp_from "From: " -smtp_subject "Subject: " -smtp_quit "QUIT\r\n" -smtp_crnl "\r\n" -smtp_crnlperiodcrnl "\r\n.\r\n" \ No newline at end of file diff --git a/components/net/uip/apps/smtp/smtp-strings.c b/components/net/uip/apps/smtp/smtp-strings.c deleted file mode 100644 index f3981a17bf1f2d6ad45efd3d099009e811d5cc5d..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/smtp/smtp-strings.c +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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: smtp-strings.c,v 1.3 2006/06/11 21:46:37 adam Exp $ - */ -const char smtp_220[4] = -/* "220" */ -{0x32, 0x32, 0x30, }; -const char smtp_helo[6] = -/* "HELO " */ -{0x48, 0x45, 0x4c, 0x4f, 0x20, }; -const char smtp_mail_from[12] = -/* "MAIL FROM: " */ -{0x4d, 0x41, 0x49, 0x4c, 0x20, 0x46, 0x52, 0x4f, 0x4d, 0x3a, 0x20, }; -const char smtp_rcpt_to[10] = -/* "RCPT TO: " */ -{0x52, 0x43, 0x50, 0x54, 0x20, 0x54, 0x4f, 0x3a, 0x20, }; -const char smtp_data[7] = -/* "DATA\r\n" */ -{0x44, 0x41, 0x54, 0x41, 0xd, 0xa, }; -const char smtp_to[5] = -/* "To: " */ -{0x54, 0x6f, 0x3a, 0x20, }; -const char smtp_cc[5] = -/* "Cc: " */ -{0x43, 0x63, 0x3a, 0x20, }; -const char smtp_from[7] = -/* "From: " */ -{0x46, 0x72, 0x6f, 0x6d, 0x3a, 0x20, }; -const char smtp_subject[10] = -/* "Subject: " */ -{0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x3a, 0x20, }; -const char smtp_quit[7] = -/* "QUIT\r\n" */ -{0x51, 0x55, 0x49, 0x54, 0xd, 0xa, }; -const char smtp_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, }; -const char smtp_crnlperiodcrnl[6] = -/* "\r\n.\r\n" */ -{0xd, 0xa, 0x2e, 0xd, 0xa, }; diff --git a/components/net/uip/apps/smtp/smtp-strings.h b/components/net/uip/apps/smtp/smtp-strings.h deleted file mode 100644 index f5ae68c89479138eb7fb8bf593cff4cecb28fc63..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/smtp/smtp-strings.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * 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: smtp-strings.h,v 1.3 2006/06/11 21:46:37 adam Exp $ - */ -extern const char smtp_220[4]; -extern const char smtp_helo[6]; -extern const char smtp_mail_from[12]; -extern const char smtp_rcpt_to[10]; -extern const char smtp_data[7]; -extern const char smtp_to[5]; -extern const char smtp_cc[5]; -extern const char smtp_from[7]; -extern const char smtp_subject[10]; -extern const char smtp_quit[7]; -extern const char smtp_crnl[3]; -extern const char smtp_crnlperiodcrnl[6]; diff --git a/components/net/uip/apps/smtp/smtp.c b/components/net/uip/apps/smtp/smtp.c deleted file mode 100644 index a860006ad0885e38fefa70a68a6a48f2fb0868a3..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/smtp/smtp.c +++ /dev/null @@ -1,262 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup smtp SMTP E-mail sender - * @{ - * - * The Simple Mail Transfer Protocol (SMTP) as defined by RFC821 is - * the standard way of sending and transfering e-mail on the - * Internet. This simple example implementation is intended as an - * example of how to implement protocols in uIP, and is able to send - * out e-mail but has not been extensively tested. - */ - -/** - * \file - * SMTP example implementation - * \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: smtp.c,v 1.4 2006/06/11 21:46:37 adam Exp $ - */ -#include "smtp.h" - -#include "smtp-strings.h" -#include "psock.h" -#include "uip.h" - -#include - -static struct smtp_state s; - -static char *localhostname; -static uip_ipaddr_t smtpserver; - -#define ISO_nl 0x0a -#define ISO_cr 0x0d - -#define ISO_period 0x2e - -#define ISO_2 0x32 -#define ISO_3 0x33 -#define ISO_4 0x34 -#define ISO_5 0x35 - - -/*---------------------------------------------------------------------------*/ -static -PT_THREAD(smtp_thread(void)) -{ - PSOCK_BEGIN(&s.psock); - - PSOCK_READTO(&s.psock, ISO_nl); - - if(strncmp(s.inputbuffer, smtp_220, 3) != 0) { - PSOCK_CLOSE(&s.psock); - smtp_done(2); - PSOCK_EXIT(&s.psock); - } - - PSOCK_SEND_STR(&s.psock, (char *)smtp_helo); - PSOCK_SEND_STR(&s.psock, localhostname); - PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); - - PSOCK_READTO(&s.psock, ISO_nl); - - if(s.inputbuffer[0] != ISO_2) { - PSOCK_CLOSE(&s.psock); - smtp_done(3); - PSOCK_EXIT(&s.psock); - } - - PSOCK_SEND_STR(&s.psock, (char *)smtp_mail_from); - PSOCK_SEND_STR(&s.psock, s.from); - PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); - - PSOCK_READTO(&s.psock, ISO_nl); - - if(s.inputbuffer[0] != ISO_2) { - PSOCK_CLOSE(&s.psock); - smtp_done(4); - PSOCK_EXIT(&s.psock); - } - - PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to); - PSOCK_SEND_STR(&s.psock, s.to); - PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); - - PSOCK_READTO(&s.psock, ISO_nl); - - if(s.inputbuffer[0] != ISO_2) { - PSOCK_CLOSE(&s.psock); - smtp_done(5); - PSOCK_EXIT(&s.psock); - } - - if(s.cc != 0) { - PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to); - PSOCK_SEND_STR(&s.psock, s.cc); - PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); - - PSOCK_READTO(&s.psock, ISO_nl); - - if(s.inputbuffer[0] != ISO_2) { - PSOCK_CLOSE(&s.psock); - smtp_done(6); - PSOCK_EXIT(&s.psock); - } - } - - PSOCK_SEND_STR(&s.psock, (char *)smtp_data); - - PSOCK_READTO(&s.psock, ISO_nl); - - if(s.inputbuffer[0] != ISO_3) { - PSOCK_CLOSE(&s.psock); - smtp_done(7); - PSOCK_EXIT(&s.psock); - } - - PSOCK_SEND_STR(&s.psock, (char *)smtp_to); - PSOCK_SEND_STR(&s.psock, s.to); - PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); - - if(s.cc != 0) { - PSOCK_SEND_STR(&s.psock, (char *)smtp_cc); - PSOCK_SEND_STR(&s.psock, s.cc); - PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); - } - - PSOCK_SEND_STR(&s.psock, (char *)smtp_from); - PSOCK_SEND_STR(&s.psock, s.from); - PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); - - PSOCK_SEND_STR(&s.psock, (char *)smtp_subject); - PSOCK_SEND_STR(&s.psock, s.subject); - PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl); - - PSOCK_SEND(&s.psock, s.msg, s.msglen); - - PSOCK_SEND_STR(&s.psock, (char *)smtp_crnlperiodcrnl); - - PSOCK_READTO(&s.psock, ISO_nl); - if(s.inputbuffer[0] != ISO_2) { - PSOCK_CLOSE(&s.psock); - smtp_done(8); - PSOCK_EXIT(&s.psock); - } - - PSOCK_SEND_STR(&s.psock, (char *)smtp_quit); - smtp_done(SMTP_ERR_OK); - PSOCK_END(&s.psock); -} -/*---------------------------------------------------------------------------*/ -void -smtp_appcall(void) -{ - if(uip_closed()) { - s.connected = 0; - return; - } - if(uip_aborted() || uip_timedout()) { - s.connected = 0; - smtp_done(1); - return; - } - smtp_thread(); -} -/*---------------------------------------------------------------------------*/ -/** - * Specificy an SMTP server and hostname. - * - * This function is used to configure the SMTP module with an SMTP - * server and the hostname of the host. - * - * \param lhostname The hostname of the uIP host. - * - * \param server A pointer to a 4-byte array representing the IP - * address of the SMTP server to be configured. - */ -void -smtp_configure(char *lhostname, void *server) -{ - localhostname = lhostname; - uip_ipaddr_copy(smtpserver, server); -} -/*---------------------------------------------------------------------------*/ -/** - * Send an e-mail. - * - * \param to The e-mail address of the receiver of the e-mail. - * \param cc The e-mail address of the CC: receivers of the e-mail. - * \param from The e-mail address of the sender of the e-mail. - * \param subject The subject of the e-mail. - * \param msg The actual e-mail message. - * \param msglen The length of the e-mail message. - */ -unsigned char -smtp_send(char *to, char *cc, char *from, - char *subject, char *msg, u16_t msglen) -{ - struct uip_conn *conn; - - conn = uip_connect(smtpserver, HTONS(25)); - if(conn == NULL) { - return 0; - } - s.connected = 1; - s.to = to; - s.cc = cc; - s.from = from; - s.subject = subject; - s.msg = msg; - s.msglen = msglen; - - PSOCK_INIT(&s.psock, s.inputbuffer, sizeof(s.inputbuffer)); - - return 1; -} -/*---------------------------------------------------------------------------*/ -void -smtp_init(void) -{ - s.connected = 0; -} -/*---------------------------------------------------------------------------*/ -/** @} */ -/** @} */ diff --git a/components/net/uip/apps/smtp/smtp.h b/components/net/uip/apps/smtp/smtp.h deleted file mode 100644 index 44d0766e10c730331b3ef570079b9cbe64a3445e..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/smtp/smtp.h +++ /dev/null @@ -1,103 +0,0 @@ - -/** - * \addtogroup smtp - * @{ - */ - - -/** - * \file - * SMTP header file - * \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: smtp.h,v 1.4 2006/06/11 21:46:37 adam Exp $ - * - */ -#ifndef __SMTP_H__ -#define __SMTP_H__ - -#include "uipopt.h" - -/** - * Error number that signifies a non-error condition. - */ -#define SMTP_ERR_OK 0 - -/** - * Callback function that is called when an e-mail transmission is - * done. - * - * This function must be implemented by the module that uses the SMTP - * module. - * - * \param error The number of the error if an error occured, or - * SMTP_ERR_OK. - */ -void smtp_done(unsigned char error); - -void smtp_init(void); - -/* Functions. */ -void smtp_configure(char *localhostname, u16_t *smtpserver); -unsigned char smtp_send(char *to, char *from, - char *subject, char *msg, - u16_t msglen); -#define SMTP_SEND(to, cc, from, subject, msg) \ - smtp_send(to, cc, from, subject, msg, strlen(msg)) - -void smtp_appcall(void); - -struct smtp_state { - u8_t state; - char *to; - char *from; - char *subject; - char *msg; - u16_t msglen; - - u16_t sentlen, textlen; - u16_t sendptr; - -}; - - -#ifndef UIP_APPCALL -#define UIP_APPCALL smtp_appcall -#endif -typedef struct smtp_state uip_tcp_appstate_t; - - -#endif /* __SMTP_H__ */ - -/** @} */ diff --git a/components/net/uip/apps/telnetd/Makefile.telnetd b/components/net/uip/apps/telnetd/Makefile.telnetd deleted file mode 100644 index afb1b593c89ce23351eae1ac385c48fe6f8fa756..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/telnetd/Makefile.telnetd +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += telnetd.c shell.c memb.c diff --git a/components/net/uip/apps/telnetd/telnetd.c b/components/net/uip/apps/telnetd/telnetd.c deleted file mode 100644 index 7a5ae858d7bc5ac4d3e8c47b49f645eae840f6fd..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/telnetd/telnetd.c +++ /dev/null @@ -1,350 +0,0 @@ -/* - * Copyright (c) 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: telnetd.c,v 1.2 2006/06/07 09:43:54 adam Exp $ - * - */ - -#include "uip.h" -#include "telnetd.h" -#include "memb.h" -#include "shell.h" - -#include - -#define ISO_nl 0x0a -#define ISO_cr 0x0d - -struct telnetd_line { - char line[TELNETD_CONF_LINELEN]; -}; -MEMB(linemem, struct telnetd_line, TELNETD_CONF_NUMLINES); - -#define STATE_NORMAL 0 -#define STATE_IAC 1 -#define STATE_WILL 2 -#define STATE_WONT 3 -#define STATE_DO 4 -#define STATE_DONT 5 -#define STATE_CLOSE 6 - -static struct telnetd_state s; - -#define TELNET_IAC 255 -#define TELNET_WILL 251 -#define TELNET_WONT 252 -#define TELNET_DO 253 -#define TELNET_DONT 254 -/*---------------------------------------------------------------------------*/ -static char * -alloc_line(void) -{ - return memb_alloc(&linemem); -} -/*---------------------------------------------------------------------------*/ -static void -dealloc_line(char *line) -{ - memb_free(&linemem, line); -} -/*---------------------------------------------------------------------------*/ -void -shell_quit(char *str) -{ - s.state = STATE_CLOSE; -} -/*---------------------------------------------------------------------------*/ -static void -sendline(char *line) -{ - static unsigned int i; - - for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) { - if(s.lines[i] == NULL) { - s.lines[i] = line; - break; - } - } - if(i == TELNETD_CONF_NUMLINES) { - dealloc_line(line); - } -} -/*---------------------------------------------------------------------------*/ -void -shell_prompt(char *str) -{ - char *line; - line = alloc_line(); - if(line != NULL) { - strncpy(line, str, TELNETD_CONF_LINELEN); - /* petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/ - sendline(line); - } -} -/*---------------------------------------------------------------------------*/ -void -shell_output(char *str1, char *str2) -{ - static unsigned len; - char *line; - - line = alloc_line(); - if(line != NULL) { - len = strlen(str1); - strncpy(line, str1, TELNETD_CONF_LINELEN); - if(len < TELNETD_CONF_LINELEN) { - strncpy(line + len, str2, TELNETD_CONF_LINELEN - len); - } - len = strlen(line); - if(len < TELNETD_CONF_LINELEN - 2) { - line[len] = ISO_cr; - line[len+1] = ISO_nl; - line[len+2] = 0; - } - /* petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/ - sendline(line); - } -} -/*---------------------------------------------------------------------------*/ -void -telnetd_init(void) -{ - uip_listen(HTONS(23)); - memb_init(&linemem); - shell_init(); -} -/*---------------------------------------------------------------------------*/ -static void -acked(void) -{ - static unsigned int i; - - while(s.numsent > 0) { - dealloc_line(s.lines[0]); - for(i = 1; i < TELNETD_CONF_NUMLINES; ++i) { - s.lines[i - 1] = s.lines[i]; - } - s.lines[TELNETD_CONF_NUMLINES - 1] = NULL; - --s.numsent; - } -} -/*---------------------------------------------------------------------------*/ -static void -senddata(void) -{ - static char *bufptr, *lineptr; - static int buflen, linelen; - - bufptr = uip_appdata; - buflen = 0; - for(s.numsent = 0; s.numsent < TELNETD_CONF_NUMLINES && - s.lines[s.numsent] != NULL ; ++s.numsent) { - lineptr = s.lines[s.numsent]; - linelen = strlen(lineptr); - if(linelen > TELNETD_CONF_LINELEN) { - linelen = TELNETD_CONF_LINELEN; - } - if(buflen + linelen < uip_mss()) { - memcpy(bufptr, lineptr, linelen); - bufptr += linelen; - buflen += linelen; - } else { - break; - } - } - uip_send(uip_appdata, buflen); -} -/*---------------------------------------------------------------------------*/ -static void -closed(void) -{ - static unsigned int i; - - for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) { - if(s.lines[i] != NULL) { - dealloc_line(s.lines[i]); - } - } -} -/*---------------------------------------------------------------------------*/ -static void -get_char(u8_t c) -{ - if(c == ISO_cr) { - return; - } - - s.buf[(int)s.bufptr] = c; - if(s.buf[(int)s.bufptr] == ISO_nl || - s.bufptr == sizeof(s.buf) - 1) { - if(s.bufptr > 0) { - s.buf[(int)s.bufptr] = 0; - /* petsciiconv_topetscii(s.buf, TELNETD_CONF_LINELEN);*/ - } - shell_input(s.buf); - s.bufptr = 0; - } else { - ++s.bufptr; - } -} -/*---------------------------------------------------------------------------*/ -static void -sendopt(u8_t option, u8_t value) -{ - char *line; - line = alloc_line(); - if(line != NULL) { - line[0] = TELNET_IAC; - line[1] = option; - line[2] = value; - line[3] = 0; - sendline(line); - } -} -/*---------------------------------------------------------------------------*/ -static void -newdata(void) -{ - u16_t len; - u8_t c; - char *dataptr; - - - len = uip_datalen(); - dataptr = (char *)uip_appdata; - - while(len > 0 && s.bufptr < sizeof(s.buf)) { - c = *dataptr; - ++dataptr; - --len; - switch(s.state) { - case STATE_IAC: - if(c == TELNET_IAC) { - get_char(c); - s.state = STATE_NORMAL; - } else { - switch(c) { - case TELNET_WILL: - s.state = STATE_WILL; - break; - case TELNET_WONT: - s.state = STATE_WONT; - break; - case TELNET_DO: - s.state = STATE_DO; - break; - case TELNET_DONT: - s.state = STATE_DONT; - break; - default: - s.state = STATE_NORMAL; - break; - } - } - break; - case STATE_WILL: - /* Reply with a DONT */ - sendopt(TELNET_DONT, c); - s.state = STATE_NORMAL; - break; - - case STATE_WONT: - /* Reply with a DONT */ - sendopt(TELNET_DONT, c); - s.state = STATE_NORMAL; - break; - case STATE_DO: - /* Reply with a WONT */ - sendopt(TELNET_WONT, c); - s.state = STATE_NORMAL; - break; - case STATE_DONT: - /* Reply with a WONT */ - sendopt(TELNET_WONT, c); - s.state = STATE_NORMAL; - break; - case STATE_NORMAL: - if(c == TELNET_IAC) { - s.state = STATE_IAC; - } else { - get_char(c); - } - break; - } - - - } - -} -/*---------------------------------------------------------------------------*/ -void -telnetd_appcall(void) -{ - static unsigned int i; - if(uip_connected()) { - /* tcp_markconn(uip_conn, &s);*/ - for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) { - s.lines[i] = NULL; - } - s.bufptr = 0; - s.state = STATE_NORMAL; - - shell_start(); - } - - if(s.state == STATE_CLOSE) { - s.state = STATE_NORMAL; - uip_close(); - return; - } - - if(uip_closed() || - uip_aborted() || - uip_timedout()) { - closed(); - } - - if(uip_acked()) { - acked(); - } - - if(uip_newdata()) { - newdata(); - } - - if(uip_rexmit() || - uip_newdata() || - uip_acked() || - uip_connected() || - uip_poll()) { - senddata(); - } -} -/*---------------------------------------------------------------------------*/ diff --git a/components/net/uip/apps/telnetd/telnetd.h b/components/net/uip/apps/telnetd/telnetd.h deleted file mode 100644 index 2ee8acdb2de555114829d8cbfedc921709f4c24d..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/telnetd/telnetd.h +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Copyright (c) 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: telnetd.h,v 1.2 2006/06/07 09:43:54 adam Exp $ - * - */ -#ifndef __TELNETD_H__ -#define __TELNETD_H__ - -#include "uipopt.h" - -void telnetd_appcall(void); - -#ifndef TELNETD_CONF_LINELEN -#define TELNETD_CONF_LINELEN 40 -#endif -#ifndef TELNETD_CONF_NUMLINES -#define TELNETD_CONF_NUMLINES 16 -#endif - -struct telnetd_state { - char *lines[TELNETD_CONF_NUMLINES]; - char buf[TELNETD_CONF_LINELEN]; - char bufptr; - u8_t numsent; - u8_t state; -}; - -typedef struct telnetd_state uip_tcp_appstate_t; - -#ifndef UIP_APPCALL -#define UIP_APPCALL telnetd_appcall -#endif - -#endif /* __TELNETD_H__ */ diff --git a/components/net/uip/apps/telnetd/uip_shell.c b/components/net/uip/apps/telnetd/uip_shell.c deleted file mode 100644 index 0c43ae8e40f3de2c226b949163833253fc75ba23..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/telnetd/uip_shell.c +++ /dev/null @@ -1,123 +0,0 @@ - /* - * Copyright (c) 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: shell.c,v 1.1 2006/06/07 09:43:54 adam Exp $ - * - */ - -#include "uip_shell.h" - -#include - -struct ptentry { - char *commandstr; - void (* pfunc)(char *str); -}; - -#define SHELL_PROMPT "uIP 1.0> " - -/*---------------------------------------------------------------------------*/ -static void -parse(register char *str, struct ptentry *t) -{ - struct ptentry *p; - for(p = t; p->commandstr != NULL; ++p) { - if(strncmp(p->commandstr, str, strlen(p->commandstr)) == 0) { - break; - } - } - - p->pfunc(str); -} -/*---------------------------------------------------------------------------*/ -static void -inttostr(register char *str, unsigned int i) -{ - str[0] = '0' + i / 100; - if(str[0] == '0') { - str[0] = ' '; - } - str[1] = '0' + (i / 10) % 10; - if(str[0] == ' ' && str[1] == '0') { - str[1] = ' '; - } - str[2] = '0' + i % 10; - str[3] = ' '; - str[4] = 0; -} -/*---------------------------------------------------------------------------*/ -static void -help(char *str) -{ - shell_output("Available commands:", ""); - shell_output("stats - show network statistics", ""); - shell_output("conn - show TCP connections", ""); - shell_output("help, ? - show help", ""); - shell_output("exit - exit shell", ""); -} -/*---------------------------------------------------------------------------*/ -static void -unknown(char *str) -{ - if(strlen(str) > 0) { - shell_output("Unknown command: ", str); - } -} -/*---------------------------------------------------------------------------*/ -static struct ptentry parsetab[] = - {{"stats", help}, - {"conn", help}, - {"help", help}, - {"exit", shell_quit}, - {"?", help}, - - /* Default action */ - {NULL, unknown}}; -/*---------------------------------------------------------------------------*/ -void -shell_init(void) -{ -} -/*---------------------------------------------------------------------------*/ -void -shell_start(void) -{ - shell_output("uIP command shell", ""); - shell_output("Type '?' and return for help", ""); - shell_prompt(SHELL_PROMPT); -} -/*---------------------------------------------------------------------------*/ -void -shell_input(char *cmd) -{ - parse(cmd, parsetab); - shell_prompt(SHELL_PROMPT); -} -/*---------------------------------------------------------------------------*/ diff --git a/components/net/uip/apps/telnetd/uip_shell.h b/components/net/uip/apps/telnetd/uip_shell.h deleted file mode 100644 index b57d7be2934e457df3d5c54e49d0ec8c1dd65773..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/telnetd/uip_shell.h +++ /dev/null @@ -1,104 +0,0 @@ -/** - * \file - * Interface for the Contiki shell. - * \author Adam Dunkels - * - * Some of the functions declared in this file must be implemented as - * a shell back-end in the architecture specific files of a Contiki - * port. - */ - - -/* - * Copyright (c) 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 Contiki desktop OS. - * - * $Id: shell.h,v 1.1 2006/06/07 09:43:54 adam Exp $ - * - */ -#ifndef __SHELL_H__ -#define __SHELL_H__ - -/** - * Initialize the shell. - * - * Called when the shell front-end process starts. This function may - * be used to start listening for signals. - */ -void shell_init(void); - -/** - * Start the shell back-end. - * - * Called by the front-end when a new shell is started. - */ -void shell_start(void); - -/** - * Process a shell command. - * - * This function will be called by the shell GUI / telnet server whan - * a command has been entered that should be processed by the shell - * back-end. - * - * \param command The command to be processed. - */ -void shell_input(char *command); - -/** - * Quit the shell. - * - */ -void shell_quit(char *); - - -/** - * Print a string to the shell window. - * - * This function is implemented by the shell GUI / telnet server and - * can be called by the shell back-end to output a string in the - * shell window. The string is automatically appended with a linebreak. - * - * \param str1 The first half of the string to be output. - * \param str2 The second half of the string to be output. - */ -void shell_output(char *str1, char *str2); - -/** - * Print a prompt to the shell window. - * - * This function can be used by the shell back-end to print out a - * prompt to the shell window. - * - * \param prompt The prompt to be printed. - * - */ -void shell_prompt(char *prompt); - -#endif /* __SHELL_H__ */ diff --git a/components/net/uip/apps/webclient/Makefile.webclient b/components/net/uip/apps/webclient/Makefile.webclient deleted file mode 100644 index e6e7f0828ac000984d56a64943f9c1f63b94ae7a..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/webclient/Makefile.webclient +++ /dev/null @@ -1 +0,0 @@ -APP_SOURCES += webclient-strings.c webclient.c diff --git a/components/net/uip/apps/webclient/makestrings b/components/net/uip/apps/webclient/makestrings deleted file mode 100644 index 6dec075dd3fda836e8e7af9644eb4493b472958b..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/webclient/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 "0 };\n"); - - printf(OUTPUTH "extern const char $var\[%d];\n", length($datan) + 1); - - } - } - close(OUTPUTC); - close(OUTPUTH); -} -stringify("webclient-strings"); - -exit 0; - diff --git a/components/net/uip/apps/webclient/webclient-strings b/components/net/uip/apps/webclient/webclient-strings deleted file mode 100644 index a331397238e3a7ce48fe085d31c46db2d481f164..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/webclient/webclient-strings +++ /dev/null @@ -1,31 +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_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 ".text" -http_txt ".txt" -http_user_agent_fields "Connection: close\r\nUser-Agent: uIP/1.0 (; http://www.sics.se/~adam/uip/)\r\n\r\n" diff --git a/components/net/uip/apps/webclient/webclient-strings.c b/components/net/uip/apps/webclient/webclient-strings.c deleted file mode 100644 index 94723308e553bf64262b4e879f6e0ded61f170a6..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/webclient/webclient-strings.c +++ /dev/null @@ -1,93 +0,0 @@ -const char http_http[8] = -/* "http://" */ -{0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0 }; -const char http_200[5] = -/* "200 " */ -{0x32, 0x30, 0x30, 0x20, 0 }; -const char http_301[5] = -/* "301 " */ -{0x33, 0x30, 0x31, 0x20, 0 }; -const char http_302[5] = -/* "302 " */ -{0x33, 0x30, 0x32, 0x20, 0 }; -const char http_get[5] = -/* "GET " */ -{0x47, 0x45, 0x54, 0x20, 0 }; -const char http_10[9] = -/* "HTTP/1.0" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0 }; -const char http_11[9] = -/* "HTTP/1.1" */ -{0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x31, 0 }; -const char http_content_type[15] = -/* "content-type: " */ -{0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0 }; -const char http_texthtml[10] = -/* "text/html" */ -{0x74, 0x65, 0x78, 0x74, 0x2f, 0x68, 0x74, 0x6d, 0x6c, 0 }; -const char http_location[11] = -/* "location: " */ -{0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0 }; -const char http_host[7] = -/* "host: " */ -{0x68, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0 }; -const char http_crnl[3] = -/* "\r\n" */ -{0xd, 0xa, 0 }; -const char http_index_html[12] = -/* "/index.html" */ -{0x2f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0 }; -const char http_404_html[10] = -/* "/404.html" */ -{0x2f, 0x34, 0x30, 0x34, 0x2e, 0x68, 0x74, 0x6d, 0x6c, 0 }; -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, 0 }; -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, 0 }; -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, 0 }; -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, 0 }; -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, 0 }; -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, 0 }; -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, 0 }; -const char http_html[6] = -/* ".html" */ -{0x2e, 0x68, 0x74, 0x6d, 0x6c, 0 }; -const char http_shtml[7] = -/* ".shtml" */ -{0x2e, 0x73, 0x68, 0x74, 0x6d, 0x6c, 0 }; -const char http_htm[5] = -/* ".htm" */ -{0x2e, 0x68, 0x74, 0x6d, 0 }; -const char http_css[5] = -/* ".css" */ -{0x2e, 0x63, 0x73, 0x73, 0 }; -const char http_png[5] = -/* ".png" */ -{0x2e, 0x70, 0x6e, 0x67, 0 }; -const char http_gif[5] = -/* ".gif" */ -{0x2e, 0x67, 0x69, 0x66, 0 }; -const char http_jpg[5] = -/* ".jpg" */ -{0x2e, 0x6a, 0x70, 0x67, 0 }; -const char http_text[6] = -/* ".text" */ -{0x2e, 0x74, 0x65, 0x78, 0x74, 0 }; -const char http_txt[5] = -/* ".txt" */ -{0x2e, 0x74, 0x78, 0x74, 0 }; -const char http_user_agent_fields[77] = -/* "Connection: close\r\nUser-Agent: uIP/1.0 (; http://www.sics.se/~adam/uip/)\r\n\r\n" */ -{0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0xd, 0xa, 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x3a, 0x20, 0x75, 0x49, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x20, 0x28, 0x3b, 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, 0x29, 0xd, 0xa, 0xd, 0xa, 0 }; diff --git a/components/net/uip/apps/webclient/webclient-strings.h b/components/net/uip/apps/webclient/webclient-strings.h deleted file mode 100644 index 9e3ec93472c4b08eb45b3b97a5a8b8d0e110e426..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/webclient/webclient-strings.h +++ /dev/null @@ -1,31 +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_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[6]; -extern const char http_txt[5]; -extern const char http_user_agent_fields[77]; diff --git a/components/net/uip/apps/webclient/webclient.c b/components/net/uip/apps/webclient/webclient.c deleted file mode 100644 index 746c008c33afe8933d507c82d3209d81c516d495..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/webclient/webclient.c +++ /dev/null @@ -1,439 +0,0 @@ -/** - * \addtogroup apps - * @{ - */ - -/** - * \defgroup webclient Web client - * @{ - * - * This example shows a HTTP client that is able to download web pages - * and files from web servers. It requires a number of callback - * functions to be implemented by the module that utilizes the code: - * webclient_datahandler(), webclient_connected(), - * webclient_timedout(), webclient_aborted(), webclient_closed(). - */ - -/** - * \file - * Implementation of the HTTP client. - * \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: webclient.c,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ - -#include "uip.h" -#include "uiplib.h" -#include "webclient.h" -#include "resolv.h" - -#include - -#define WEBCLIENT_TIMEOUT 100 - -#define WEBCLIENT_STATE_STATUSLINE 0 -#define WEBCLIENT_STATE_HEADERS 1 -#define WEBCLIENT_STATE_DATA 2 -#define WEBCLIENT_STATE_CLOSE 3 - -#define HTTPFLAG_NONE 0 -#define HTTPFLAG_OK 1 -#define HTTPFLAG_MOVED 2 -#define HTTPFLAG_ERROR 3 - - -#define ISO_nl 0x0a -#define ISO_cr 0x0d -#define ISO_space 0x20 - - -static struct webclient_state s; - -/*-----------------------------------------------------------------------------------*/ -char * -webclient_mimetype(void) -{ - return s.mimetype; -} -/*-----------------------------------------------------------------------------------*/ -char * -webclient_filename(void) -{ - return s.file; -} -/*-----------------------------------------------------------------------------------*/ -char * -webclient_hostname(void) -{ - return s.host; -} -/*-----------------------------------------------------------------------------------*/ -unsigned short -webclient_port(void) -{ - return s.port; -} -/*-----------------------------------------------------------------------------------*/ -void -webclient_init(void) -{ - -} -/*-----------------------------------------------------------------------------------*/ -static void -init_connection(void) -{ - s.state = WEBCLIENT_STATE_STATUSLINE; - - s.getrequestleft = sizeof(http_get) - 1 + 1 + - sizeof(http_10) - 1 + - sizeof(http_crnl) - 1 + - sizeof(http_host) - 1 + - sizeof(http_crnl) - 1 + - strlen(http_user_agent_fields) + - strlen(s.file) + strlen(s.host); - s.getrequestptr = 0; - - s.httpheaderlineptr = 0; -} -/*-----------------------------------------------------------------------------------*/ -void -webclient_close(void) -{ - s.state = WEBCLIENT_STATE_CLOSE; -} -/*-----------------------------------------------------------------------------------*/ -unsigned char -webclient_get(char *host, u16_t port, char *file) -{ - struct uip_conn *conn; - uip_ipaddr_t *ipaddr; - static uip_ipaddr_t addr; - - /* First check if the host is an IP address. */ - ipaddr = &addr; - if(uiplib_ipaddrconv(host, (unsigned char *)addr) == 0) { - ipaddr = (uip_ipaddr_t *)resolv_lookup(host); - - if(ipaddr == NULL) { - return 0; - } - } - - conn = uip_connect(ipaddr, htons(port)); - - if(conn == NULL) { - return 0; - } - - s.port = port; - strncpy(s.file, file, sizeof(s.file)); - strncpy(s.host, host, sizeof(s.host)); - - init_connection(); - return 1; -} -/*-----------------------------------------------------------------------------------*/ -static unsigned char * -copy_string(unsigned char *dest, - const unsigned char *src, unsigned char len) -{ - strncpy(dest, src, len); - return dest + len; -} -/*-----------------------------------------------------------------------------------*/ -static void -senddata(void) -{ - u16_t len; - char *getrequest; - char *cptr; - - if(s.getrequestleft > 0) { - cptr = getrequest = (char *)uip_appdata; - - cptr = copy_string(cptr, http_get, sizeof(http_get) - 1); - cptr = copy_string(cptr, s.file, strlen(s.file)); - *cptr++ = ISO_space; - cptr = copy_string(cptr, http_10, sizeof(http_10) - 1); - - cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1); - - cptr = copy_string(cptr, http_host, sizeof(http_host) - 1); - cptr = copy_string(cptr, s.host, strlen(s.host)); - cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1); - - cptr = copy_string(cptr, http_user_agent_fields, - strlen(http_user_agent_fields)); - - len = s.getrequestleft > uip_mss()? - uip_mss(): - s.getrequestleft; - uip_send(&(getrequest[s.getrequestptr]), len); - } -} -/*-----------------------------------------------------------------------------------*/ -static void -acked(void) -{ - u16_t len; - - if(s.getrequestleft > 0) { - len = s.getrequestleft > uip_mss()? - uip_mss(): - s.getrequestleft; - s.getrequestleft -= len; - s.getrequestptr += len; - } -} -/*-----------------------------------------------------------------------------------*/ -static u16_t -parse_statusline(u16_t len) -{ - char *cptr; - - while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) { - s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata; - ++((char *)uip_appdata); - --len; - if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) { - - if((strncmp(s.httpheaderline, http_10, - sizeof(http_10) - 1) == 0) || - (strncmp(s.httpheaderline, http_11, - sizeof(http_11) - 1) == 0)) { - cptr = &(s.httpheaderline[9]); - s.httpflag = HTTPFLAG_NONE; - if(strncmp(cptr, http_200, sizeof(http_200) - 1) == 0) { - /* 200 OK */ - s.httpflag = HTTPFLAG_OK; - } else if(strncmp(cptr, http_301, sizeof(http_301) - 1) == 0 || - strncmp(cptr, http_302, sizeof(http_302) - 1) == 0) { - /* 301 Moved permanently or 302 Found. Location: header line - will contain thw new location. */ - s.httpflag = HTTPFLAG_MOVED; - } else { - s.httpheaderline[s.httpheaderlineptr - 1] = 0; - } - } else { - uip_abort(); - webclient_aborted(); - return 0; - } - - /* We're done parsing the status line, so we reset the pointer - and start parsing the HTTP headers.*/ - s.httpheaderlineptr = 0; - s.state = WEBCLIENT_STATE_HEADERS; - break; - } else { - ++s.httpheaderlineptr; - } - } - return len; -} -/*-----------------------------------------------------------------------------------*/ -static char -casecmp(char *str1, const char *str2, char len) -{ - static char c; - - while(len > 0) { - c = *str1; - /* Force lower-case characters. */ - if(c & 0x40) { - c |= 0x20; - } - if(*str2 != c) { - return 1; - } - ++str1; - ++str2; - --len; - } - return 0; -} -/*-----------------------------------------------------------------------------------*/ -static u16_t -parse_headers(u16_t len) -{ - char *cptr; - static unsigned char i; - - while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) { - s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata; - ++((char *)uip_appdata); - --len; - if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) { - /* We have an entire HTTP header line in s.httpheaderline, so - we parse it. */ - if(s.httpheaderline[0] == ISO_cr) { - /* This was the last header line (i.e., and empty "\r\n"), so - we are done with the headers and proceed with the actual - data. */ - s.state = WEBCLIENT_STATE_DATA; - return len; - } - - s.httpheaderline[s.httpheaderlineptr - 1] = 0; - /* Check for specific HTTP header fields. */ - if(casecmp(s.httpheaderline, http_content_type, - sizeof(http_content_type) - 1) == 0) { - /* Found Content-type field. */ - cptr = strchr(s.httpheaderline, ';'); - if(cptr != NULL) { - *cptr = 0; - } - strncpy(s.mimetype, s.httpheaderline + - sizeof(http_content_type) - 1, sizeof(s.mimetype)); - } else if(casecmp(s.httpheaderline, http_location, - sizeof(http_location) - 1) == 0) { - cptr = s.httpheaderline + - sizeof(http_location) - 1; - - if(strncmp(cptr, http_http, 7) == 0) { - cptr += 7; - for(i = 0; i < s.httpheaderlineptr - 7; ++i) { - if(*cptr == 0 || - *cptr == '/' || - *cptr == ' ' || - *cptr == ':') { - s.host[i] = 0; - break; - } - s.host[i] = *cptr; - ++cptr; - } - } - strncpy(s.file, cptr, sizeof(s.file)); - /* s.file[s.httpheaderlineptr - i] = 0;*/ - } - - - /* We're done parsing, so we reset the pointer and start the - next line. */ - s.httpheaderlineptr = 0; - } else { - ++s.httpheaderlineptr; - } - } - return len; -} -/*-----------------------------------------------------------------------------------*/ -static void -newdata(void) -{ - u16_t len; - - len = uip_datalen(); - - if(s.state == WEBCLIENT_STATE_STATUSLINE) { - len = parse_statusline(len); - } - - if(s.state == WEBCLIENT_STATE_HEADERS && len > 0) { - len = parse_headers(len); - } - - if(len > 0 && s.state == WEBCLIENT_STATE_DATA && - s.httpflag != HTTPFLAG_MOVED) { - webclient_datahandler((char *)uip_appdata, len); - } -} -/*-----------------------------------------------------------------------------------*/ -void -webclient_appcall(void) -{ - if(uip_connected()) { - s.timer = 0; - s.state = WEBCLIENT_STATE_STATUSLINE; - senddata(); - webclient_connected(); - return; - } - - if(s.state == WEBCLIENT_STATE_CLOSE) { - webclient_closed(); - uip_abort(); - return; - } - - if(uip_aborted()) { - webclient_aborted(); - } - if(uip_timedout()) { - webclient_timedout(); - } - - - if(uip_acked()) { - s.timer = 0; - acked(); - } - if(uip_newdata()) { - s.timer = 0; - newdata(); - } - if(uip_rexmit() || - uip_newdata() || - uip_acked()) { - senddata(); - } else if(uip_poll()) { - ++s.timer; - if(s.timer == WEBCLIENT_TIMEOUT) { - webclient_timedout(); - uip_abort(); - return; - } - /* senddata();*/ - } - - if(uip_closed()) { - if(s.httpflag != HTTPFLAG_MOVED) { - /* Send NULL data to signal EOF. */ - webclient_datahandler(NULL, 0); - } else { - if(resolv_lookup(s.host) == NULL) { - resolv_query(s.host); - } - webclient_get(s.host, s.port, s.file); - } - } -} -/*-----------------------------------------------------------------------------------*/ - -/** @} */ -/** @} */ diff --git a/components/net/uip/apps/webclient/webclient.h b/components/net/uip/apps/webclient/webclient.h deleted file mode 100644 index 44cb95caf8ecd5462ebf95264f35b2bc4f375d1b..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/webclient/webclient.h +++ /dev/null @@ -1,228 +0,0 @@ -/** - * \addtogroup webclient - * @{ - */ - -/** - * \file - * Header file for the HTTP client. - * \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: webclient.h,v 1.2 2006/06/11 21:46:37 adam Exp $ - * - */ -#ifndef __WEBCLIENT_H__ -#define __WEBCLIENT_H__ - - -#include "webclient-strings.h" -#include "uipopt.h" - -#define WEBCLIENT_CONF_MAX_URLLEN 100 - -struct webclient_state { - u8_t timer; - u8_t state; - u8_t httpflag; - - u16_t port; - char host[40]; - char file[WEBCLIENT_CONF_MAX_URLLEN]; - u16_t getrequestptr; - u16_t getrequestleft; - - char httpheaderline[200]; - u16_t httpheaderlineptr; - - char mimetype[32]; -}; - -typedef struct webclient_state uip_tcp_appstate_t; -#define UIP_APPCALL webclient_appcall - -/** - * Callback function that is called from the webclient code when HTTP - * data has been received. - * - * This function must be implemented by the module that uses the - * webclient code. The function is called from the webclient module - * when HTTP data has been received. The function is not called when - * HTTP headers are received, only for the actual data. - * - * \note This function is called many times, repetedly, when data is - * being received, and not once when all data has been received. - * - * \param data A pointer to the data that has been received. - * \param len The length of the data that has been received. - */ -void webclient_datahandler(char *data, u16_t len); - -/** - * Callback function that is called from the webclient code when the - * HTTP connection has been connected to the web server. - * - * This function must be implemented by the module that uses the - * webclient code. - */ -void webclient_connected(void); - -/** - * Callback function that is called from the webclient code if the - * HTTP connection to the web server has timed out. - * - * This function must be implemented by the module that uses the - * webclient code. - */ -void webclient_timedout(void); - -/** - * Callback function that is called from the webclient code if the - * HTTP connection to the web server has been aborted by the web - * server. - * - * This function must be implemented by the module that uses the - * webclient code. - */ -void webclient_aborted(void); - -/** - * Callback function that is called from the webclient code when the - * HTTP connection to the web server has been closed. - * - * This function must be implemented by the module that uses the - * webclient code. - */ -void webclient_closed(void); - - - -/** - * Initialize the webclient module. - */ -void webclient_init(void); - -/** - * Open an HTTP connection to a web server and ask for a file using - * the GET method. - * - * This function opens an HTTP connection to the specified web server - * and requests the specified file using the GET method. When the HTTP - * connection has been connected, the webclient_connected() callback - * function is called and when the HTTP data arrives the - * webclient_datahandler() callback function is called. - * - * The callback function webclient_timedout() is called if the web - * server could not be contacted, and the webclient_aborted() callback - * function is called if the HTTP connection is aborted by the web - * server. - * - * When the HTTP request has been completed and the HTTP connection is - * closed, the webclient_closed() callback function will be called. - * - * \note If the function is passed a host name, it must already be in - * the resolver cache in order for the function to connect to the web - * server. It is therefore up to the calling module to implement the - * resolver calls and the signal handler used for reporting a resolv - * query answer. - * - * \param host A pointer to a string containing either a host name or - * a numerical IP address in dotted decimal notation (e.g., 192.168.23.1). - * - * \param port The port number to which to connect, in host byte order. - * - * \param file A pointer to the name of the file to get. - * - * \retval 0 if the host name could not be found in the cache, or - * if a TCP connection could not be created. - * - * \retval 1 if the connection was initiated. - */ -unsigned char webclient_get(char *host, u16_t port, char *file); - -/** - * Close the currently open HTTP connection. - */ -void webclient_close(void); -void webclient_appcall(void); - -/** - * Obtain the MIME type of the current HTTP data stream. - * - * \return A pointer to a string contaning the MIME type. The string - * may be empty if no MIME type was reported by the web server. - */ -char *webclient_mimetype(void); - -/** - * Obtain the filename of the current HTTP data stream. - * - * The filename of an HTTP request may be changed by the web server, - * and may therefore not be the same as when the original GET request - * was made with webclient_get(). This function is used for obtaining - * the current filename. - * - * \return A pointer to the current filename. - */ -char *webclient_filename(void); - -/** - * Obtain the hostname of the current HTTP data stream. - * - * The hostname of the web server of an HTTP request may be changed - * by the web server, and may therefore not be the same as when the - * original GET request was made with webclient_get(). This function - * is used for obtaining the current hostname. - * - * \return A pointer to the current hostname. - */ -char *webclient_hostname(void); - -/** - * Obtain the port number of the current HTTP data stream. - * - * The port number of an HTTP request may be changed by the web - * server, and may therefore not be the same as when the original GET - * request was made with webclient_get(). This function is used for - * obtaining the current port number. - * - * \return The port number of the current HTTP data stream, in host byte order. - */ -unsigned short webclient_port(void); - - - -#endif /* __WEBCLIENT_H__ */ - -/** @} */ diff --git a/components/net/uip/apps/webserver/Makefile.webserver b/components/net/uip/apps/webserver/Makefile.webserver deleted file mode 100644 index 7d3e086955298705ae62b1f442d40daec6750655..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/http-strings b/components/net/uip/apps/webserver/http-strings deleted file mode 100644 index d0b9121be85d986088f8509b13db13851fbbaa74..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/http-strings.c b/components/net/uip/apps/webserver/http-strings.c deleted file mode 100644 index 0d822baf7e3dc4aab875d5df789a39b40cafe9d3..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/http-strings.h b/components/net/uip/apps/webserver/http-strings.h deleted file mode 100644 index f121dd73a8ff6e720d752dd1652b6b499b3d102a..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-cgi.c b/components/net/uip/apps/webserver/httpd-cgi.c deleted file mode 100644 index 62570359fbec1d0481df41a68933a33bfe24068b..0000000000000000000000000000000000000000 --- a/components/net/uip/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, - "%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); -} -/*---------------------------------------------------------------------------*/ -/** @} */ diff --git a/components/net/uip/apps/webserver/httpd-cgi.h b/components/net/uip/apps/webserver/httpd-cgi.h deleted file mode 100644 index e6ba51e73ed67c1432a30d2148bc08be9f3b3105..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-fs.c b/components/net/uip/apps/webserver/httpd-fs.c deleted file mode 100644 index 21185e87c7e7867c179385d54db27deb679d7183..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-fs.h b/components/net/uip/apps/webserver/httpd-fs.h deleted file mode 100644 index d80ed3dff07b7dac29940c35fa90ebd4c04fe8dd..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-fs/404.html b/components/net/uip/apps/webserver/httpd-fs/404.html deleted file mode 100644 index a17711d02e1cb3f7ad8b74add3768e552860478c..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-fs/fade.png b/components/net/uip/apps/webserver/httpd-fs/fade.png deleted file mode 100644 index a9e69f75deda76937ede6e5d6d3bc94b8d43375e..0000000000000000000000000000000000000000 Binary files a/components/net/uip/apps/webserver/httpd-fs/fade.png and /dev/null differ diff --git a/components/net/uip/apps/webserver/httpd-fs/files.shtml b/components/net/uip/apps/webserver/httpd-fs/files.shtml deleted file mode 100644 index 811e23032239a64bdfa3961c9c2b2e795d6a2753..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/webserver/httpd-fs/files.shtml +++ /dev/null @@ -1,35 +0,0 @@ -%!: /header.html -

File statistics

-
- - - - - - - - - - - - - - - -
/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/components/net/uip/apps/webserver/httpd-fs/footer.html b/components/net/uip/apps/webserver/httpd-fs/footer.html deleted file mode 100644 index 1fd5f4f290d6227f9f2c19fe0f7d10523cc0a75b..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/webserver/httpd-fs/footer.html +++ /dev/null @@ -1,2 +0,0 @@ - - \ No newline at end of file diff --git a/components/net/uip/apps/webserver/httpd-fs/header.html b/components/net/uip/apps/webserver/httpd-fs/header.html deleted file mode 100644 index 7b1a1fe7ee3a6727aa2acf22e057d804fc24fdfa..0000000000000000000000000000000000000000 --- a/components/net/uip/apps/webserver/httpd-fs/header.html +++ /dev/null @@ -1,18 +0,0 @@ - - - - Welcome to the uIP web server! - - - - - - -
diff --git a/components/net/uip/apps/webserver/httpd-fs/index.html b/components/net/uip/apps/webserver/httpd-fs/index.html deleted file mode 100644 index 27cbc93f5a1fe8a2751441a2fdbf47a7d0836dbd..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-fs/processes.shtml b/components/net/uip/apps/webserver/httpd-fs/processes.shtml deleted file mode 100644 index 2f93e35902c3f0cbab0ac0b10babd057cb20319d..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-fs/stats.shtml b/components/net/uip/apps/webserver/httpd-fs/stats.shtml deleted file mode 100644 index c63ed4afd709b00293eba8b6868c0ddb6df39ea9..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-fs/style.css b/components/net/uip/apps/webserver/httpd-fs/style.css deleted file mode 100644 index ba6df7f1576738129ed68283f87a5a2913f0ab53..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-fs/tcp.shtml b/components/net/uip/apps/webserver/httpd-fs/tcp.shtml deleted file mode 100644 index 4c4bffe97f28b1b421ff3589de0ef1cee7cfa06d..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-fsdata.c b/components/net/uip/apps/webserver/httpd-fsdata.c deleted file mode 100644 index 491095ec3033d63128fab131e689e1f5134d907d..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd-fsdata.h b/components/net/uip/apps/webserver/httpd-fsdata.h deleted file mode 100644 index 0ad2d6e785ffd7076d4f514869b0332f12db1954..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd.c b/components/net/uip/apps/webserver/httpd.c deleted file mode 100644 index 937e138252821bcfc5198f706fe23d59cb835cf7..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/httpd.h b/components/net/uip/apps/webserver/httpd.h deleted file mode 100644 index 270d49debdd911a9fb783cc63973a5cb2dda3e55..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/makefsdata b/components/net/uip/apps/webserver/makefsdata deleted file mode 100644 index b2109abdb7cbb856934d6b609bf65d7f522c3f46..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/makestrings b/components/net/uip/apps/webserver/makestrings deleted file mode 100644 index 20f0e24294ffa3c767ccf4e30859188e9ba2cc6b..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/apps/webserver/webserver.h b/components/net/uip/apps/webserver/webserver.h deleted file mode 100644 index 48753e690d4198e300fbb7aa050cdcca3929274f..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/doc/Doxyfile b/components/net/uip/doc/Doxyfile deleted file mode 100644 index 8c6223d5243e347ef95224cb850abe7223df37d7..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/Doxyfile +++ /dev/null @@ -1,279 +0,0 @@ -# Doxyfile 1.4.6 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = "uIP 1.0" -PROJECT_NUMBER = -OUTPUT_DIRECTORY = . -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = NO -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = YES -STRIP_FROM_PATH = ../ \ - ../../ -STRIP_FROM_INC_PATH = -SHORT_NAMES = YES -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = YES -INHERIT_DOCS = YES -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = YES -OPTIMIZE_OUTPUT_JAVA = NO -BUILTIN_STL_SUPPORT = NO -DISTRIBUTE_GROUP_DOC = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = NO -EXTRACT_PRIVATE = NO -EXTRACT_STATIC = NO -EXTRACT_LOCAL_CLASSES = NO -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = YES -HIDE_UNDOC_CLASSES = YES -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = YES -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = NO -GENERATE_DEPRECATEDLIST= NO -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = NO -SHOW_DIRECTORIES = NO -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = uip-doc.txt \ - pt-doc.txt \ - examples.txt \ - uip-code-style.txt \ - ../uip/uip.h \ - ../uip/uip.c \ - ../uip/uip_arch.h \ - ../uip/uip_arp.h \ - ../uip/uip_arp.c \ - ../unix/uip-conf.h \ - ../uip/uipopt.h \ - ../uip/uip-split.h \ - ../uip/uip-split.c \ - ../uip/uip-neighbor.h \ - ../uip/uip-neighbor.c \ - ../uip/pt.h \ - ../uip/lc.h \ - ../uip/lc-switch.h \ - ../uip/lc-addrlabels.h \ - ../uip/timer.h \ - ../uip/timer.c \ - ../uip/clock.h \ - ../uip/psock.h \ - ../uip/psock.c \ - ../lib/memb.c \ - ../lib/memb.h \ - ../apps/resolv/resolv.h \ - ../apps/resolv/resolv.c \ - ../apps/dhcpc/dhcpc.h \ - ../apps/dhcpc/dhcpc.c \ - ../apps/smtp/smtp.h \ - ../apps/smtp/smtp.c \ - ../apps/telnetd/telnetd.h \ - ../apps/telnetd/telnetd.c \ - ../apps/telnetd/shell.h \ - ../apps/telnetd/shell.c \ - ../apps/hello-world/hello-world.h \ - ../apps/hello-world/hello-world.c \ - ../apps/webclient/webclient.h \ - ../apps/webclient/webclient.c \ - ../apps/webserver/httpd.h \ - ../apps/webserver/httpd-cgi.h \ - ../apps/webserver/httpd-cgi.c \ - ../apps/webserver/httpd.c -FILE_PATTERNS = -RECURSIVE = NO -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = . ../apps/hello-world ../apps/smtp \ - ../apps/telnetd ../apps/resolv ../apps/webclient \ - ../apps/webserver ../unix ../apps/dhcpc -EXAMPLE_PATTERNS = -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = YES -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = NO -REFERENCED_BY_RELATION = YES -REFERENCES_RELATION = YES -USE_HTAGS = NO -VERBATIM_HEADERS = NO -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = YES -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = YES -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = YES -BINARY_TOC = YES -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = YES -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = YES -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = header.tex -PDF_HYPERLINKS = YES -USE_PDFLATEX = YES -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = UIP_UDP -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = NO -HIDE_UNDOC_RELATIONS = NO -HAVE_DOT = NO -CLASS_GRAPH = NO -COLLABORATION_GRAPH = NO -GROUP_GRAPHS = NO -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = NO -INCLUDED_BY_GRAPH = NO -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = NO -DIRECTORY_GRAPH = NO -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 0 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff --git a/components/net/uip/doc/Makefile b/components/net/uip/doc/Makefile deleted file mode 100644 index 249018aa4345f6e4f069ad535e2fcfe22fb3e99c..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/Makefile +++ /dev/null @@ -1,7 +0,0 @@ -all: htmldoc pdfdoc - -htmldoc: - doxygen Doxyfile - -pdfdoc: htmldoc - cd latex; make refman.pdf && mv refman.pdf ../uip-refman.pdf diff --git a/components/net/uip/doc/README b/components/net/uip/doc/README deleted file mode 100644 index 3a65aef96b76a55c7555ebf8b820f3ed2956ff06..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/README +++ /dev/null @@ -1,12 +0,0 @@ -The files in this directory comprise the uIP documentation. The files -are: - -html/ The uIP reference manual in HTML format. - -uip-refman.pdf The uIP reference manual in a printable PDF version. - -mobisys2003.pdf Conference paper about uIP from the First - International Conference on Mobile Systems, - Applications and Services (MobiSys), San - Francisco, May 2003. - diff --git a/components/net/uip/doc/doxygen.sty b/components/net/uip/doc/doxygen.sty deleted file mode 100644 index 15e4f66613b5217f17bf1a9bb3aeb423677b1071..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/doxygen.sty +++ /dev/null @@ -1,62 +0,0 @@ -\NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{doxygen} -\RequirePackage{calc} -\RequirePackage{array} -\pagestyle{fancyplain} -\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}\cleardoublepage}} -\renewcommand{\sectionmark}[1]{\markright{\thesection\ #1}} -\lhead[\fancyplain{}{\bfseries\thepage}] - {\fancyplain{}{\bfseries\rightmark}} -\rhead[\fancyplain{}{\bfseries\leftmark}] - {\fancyplain{}{\bfseries\thepage}} -\rfoot[\fancyplain{}{\bfseries\scriptsize Generated on Wed Jun 7 11:37:14 2006 for uIP 1.0-rc0 by doxygen\lfoot[]{\fancyplain{}{\bfseries\scriptsize Generated on Wed Jun 7 11:37:14 2006 for uIP 1.0-rc0 by doxygen}} -\cfoot{} -\newenvironment{CompactList} -{\begin{list}{}{ - \setlength{\leftmargin}{0.5cm} - \setlength{\itemsep}{0pt} - \setlength{\parsep}{0pt} - \setlength{\topsep}{0pt} - \renewcommand{\makelabel}{}}} -{\end{list}} -\newenvironment{CompactItemize} -{ - \begin{itemize} - \setlength{\itemsep}{-3pt} - \setlength{\parsep}{0pt} - \setlength{\topsep}{0pt} - \setlength{\partopsep}{0pt} -} -{\end{itemize}} -\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp} -\newlength{\tmplength} -\newenvironment{TabularC}[1] -{ -\setlength{\tmplength} - {\linewidth/(#1)-\tabcolsep*2-\arrayrulewidth*(#1+1)/(#1)} - \par\begin{tabular*}{\linewidth} - {*{#1}{|>{\PBS\raggedright\hspace{0pt}}p{\the\tmplength}}|} -} -{\end{tabular*}\par} -\newcommand{\entrylabel}[1]{ - {\parbox[b]{\labelwidth-4pt}{\makebox[0pt][l]{\textbf{#1}}\\}}} -\newenvironment{Desc} -{\begin{list}{} - { - \settowidth{\labelwidth}{40pt} - \setlength{\leftmargin}{\labelwidth} - \setlength{\parsep}{0pt} - \setlength{\itemsep}{-4pt} - \renewcommand{\makelabel}{\entrylabel} - } -} -{\end{list}} -\newenvironment{Indent} - {\begin{list}{}{\setlength{\leftmargin}{0.5cm}} - \item[]\ignorespaces} - {\unskip\end{list}} -\setlength{\parindent}{0cm} -\setlength{\parskip}{0.2cm} -\addtocounter{secnumdepth}{1} -\sloppy -\usepackage[T1]{fontenc} diff --git a/components/net/uip/doc/example-mainloop-with-arp.c b/components/net/uip/doc/example-mainloop-with-arp.c deleted file mode 100644 index 7ed72c538b9f284feac65b0dbea51b97a8cb1e19..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/example-mainloop-with-arp.c +++ /dev/null @@ -1,86 +0,0 @@ -#include "uip.h" -#include "uip_arp.h" -#include "network-device.h" -#include "httpd.h" -#include "timer.h" - -#define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - -/*---------------------------------------------------------------------------*/ -int -main(void) -{ - int i; - uip_ipaddr_t ipaddr; - struct timer periodic_timer, arp_timer; - - timer_set(&periodic_timer, CLOCK_SECOND / 2); - timer_set(&arp_timer, CLOCK_SECOND * 10); - - network_device_init(); - uip_init(); - - uip_ipaddr(ipaddr, 192,168,0,2); - uip_sethostaddr(ipaddr); - - httpd_init(); - - while(1) { - uip_len = network_device_read(); - if(uip_len > 0) { - if(BUF->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(); - network_device_send(); - } - } else if(BUF->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) { - network_device_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(); - network_device_send(); - } - } - -#if UIP_UDP - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_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(); - network_device_send(); - } - } -#endif /* UIP_UDP */ - - /* Call the ARP timer function every 10 seconds. */ - if(timer_expired(&arp_timer)) { - timer_reset(&arp_timer); - uip_arp_timer(); - } - } - } - return 0; -} -/*---------------------------------------------------------------------------*/ diff --git a/components/net/uip/doc/example-mainloop-without-arp.c b/components/net/uip/doc/example-mainloop-without-arp.c deleted file mode 100644 index 85800e3ae47c0b171b27ca0941459a66e6437a5e..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/example-mainloop-without-arp.c +++ /dev/null @@ -1,62 +0,0 @@ -#include "uip.h" -#include "uip_arp.h" -#include "network-device.h" -#include "httpd.h" -#include "timer.h" - -/*---------------------------------------------------------------------------*/ -int -main(void) -{ - int i; - uip_ipaddr_t ipaddr; - struct timer periodic_timer; - - timer_set(&periodic_timer, CLOCK_SECOND / 2); - - network_device_init(); - uip_init(); - - uip_ipaddr(ipaddr, 192,168,0,2); - uip_sethostaddr(ipaddr); - - httpd_init(); - - while(1) { - uip_len = network_device_read(); - if(uip_len > 0) { - 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) { - network_device_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) { - network_device_send(); - } - } - -#if UIP_UDP - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_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) { - network_device_send(); - } - } -#endif /* UIP_UDP */ - } - } - return 0; -} -/*---------------------------------------------------------------------------*/ diff --git a/components/net/uip/doc/examples.txt b/components/net/uip/doc/examples.txt deleted file mode 100644 index 31edddc381605fb19726cb5af8faf692938abb0d..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/examples.txt +++ /dev/null @@ -1,34 +0,0 @@ -/** -\defgroup apps Applications -@{ - -The uIP distribution contains a number of example applications that -can be either used directory or studied when learning to develop -applications for uIP. - -*/ - -/** \example hello-world.c */ -/** \example hello-world.h */ - -/** \example smtp.c */ -/** \example smtp.h */ - -/** \example webclient.c */ -/** \example webclient.h */ - -/** \example example-mainloop-with-arp.c */ -/** \example example-mainloop-without-arp.c */ - -/** \example telnetd.c */ -/** \example telnetd.h */ - -/** \example resolv.c */ -/** \example resolv.h */ - -/** \example dhcpc.c */ -/** \example dhcpc.h */ - -/** \example uip-conf.h */ - -/** @} */ diff --git a/components/net/uip/doc/header.tex b/components/net/uip/doc/header.tex deleted file mode 100644 index ce91c30f283a455de1a3aed94c9411c2280363a1..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/header.tex +++ /dev/null @@ -1,53 +0,0 @@ -\documentclass[a4paper]{book} -\usepackage{a4wide} -\usepackage{makeidx} -\usepackage{fancyhdr} -\usepackage{graphicx} -\usepackage{multicol} -\usepackage{float} -\usepackage{textcomp} -\usepackage{alltt} -\usepackage{times} -\ifx\pdfoutput\undefined -\usepackage[ps2pdf, - pagebackref=true, - colorlinks=true, - linkcolor=blue - ]{hyperref} -\usepackage{pspicture} -\else -\usepackage[pdftex, - pagebackref=true, - colorlinks=true, - linkcolor=blue - ]{hyperref} -\fi -\usepackage{doxygen} -\makeindex -\setcounter{tocdepth}{1} -\renewcommand{\footrulewidth}{0.4pt} -\begin{document} -\begin{titlepage} -\vspace*{5cm} -\begin{center} -{\Huge The uIP Embedded TCP/IP Stack}\\ -\vspace*{1cm} -{\LARGE The uIP 1.0 Reference Manual}\\ -\vspace*{3cm} -{\Large June 2006}\\ -\vspace*{2cm} -\includegraphics[width=6cm]{../sicslogo.pdf}\\ -\vspace*{1cm} -{\Large Adam Dunkels}\\ -{\Large \texttt{adam@sics.se}}\\ -\vspace*{1cm} -{\LARGE Swedish Institute of Computer Science}\\ -\vspace*{0.5cm} - -\end{center} -\end{titlepage} -\clearemptydoublepage -\pagenumbering{roman} -\tableofcontents -\clearemptydoublepage -\pagenumbering{arabic} diff --git a/components/net/uip/doc/html/a00036.html b/components/net/uip/doc/html/a00036.html deleted file mode 100644 index 9ee3cf2840f512f2eaab59bf9fdf61e587d4dacf..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00036.html +++ /dev/null @@ -1,120 +0,0 @@ - - -uIP 1.0: hello-world.c - - - - - -

hello-world.c

00001 /**
-00002  * \addtogroup helloworld
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \file
-00008  *         An example of how to write uIP applications
-00009  *         with protosockets.
-00010  * \author
-00011  *         Adam Dunkels <adam@sics.se>
-00012  */
-00013 
-00014 /*
-00015  * This is a short example of how to write uIP applications using
-00016  * protosockets.
-00017  */
-00018 
-00019 /*
-00020  * We define the application state (struct hello_world_state) in the
-00021  * hello-world.h file, so we need to include it here. We also include
-00022  * uip.h (since this cannot be included in hello-world.h) and
-00023  * <string.h>, since we use the memcpy() function in the code.
-00024  */
-00025 #include "hello-world.h"
-00026 #include "uip.h"
-00027 #include <string.h>
-00028 
-00029 /*
-00030  * Declaration of the protosocket function that handles the connection
-00031  * (defined at the end of the code).
-00032  */
-00033 static int handle_connection(struct hello_world_state *s);
-00034 /*---------------------------------------------------------------------------*/
-00035 /*
-00036  * The initialization function. We must explicitly call this function
-00037  * from the system initialization code, some time after uip_init() is
-00038  * called.
-00039  */
-00040 void
-00041 hello_world_init(void)
-00042 {
-00043   /* We start to listen for connections on TCP port 1000. */
-00044   uip_listen(HTONS(1000));
-00045 }
-00046 /*---------------------------------------------------------------------------*/
-00047 /*
-00048  * In hello-world.h we have defined the UIP_APPCALL macro to
-00049  * hello_world_appcall so that this funcion is uIP's application
-00050  * function. This function is called whenever an uIP event occurs
-00051  * (e.g. when a new connection is established, new data arrives, sent
-00052  * data is acknowledged, data needs to be retransmitted, etc.).
-00053  */
-00054 void
-00055 hello_world_appcall(void)
-00056 {
-00057   /*
-00058    * The uip_conn structure has a field called "appstate" that holds
-00059    * the application state of the connection. We make a pointer to
-00060    * this to access it easier.
-00061    */
-00062   struct hello_world_state *s = &(uip_conn->appstate);
-00063 
-00064   /*
-00065    * If a new connection was just established, we should initialize
-00066    * the protosocket in our applications' state structure.
-00067    */
-00068   if(uip_connected()) {
-00069     PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer));
-00070   }
-00071 
-00072   /*
-00073    * Finally, we run the protosocket function that actually handles
-00074    * the communication. We pass it a pointer to the application state
-00075    * of the current connection.
-00076    */
-00077   handle_connection(s);
-00078 }
-00079 /*---------------------------------------------------------------------------*/
-00080 /*
-00081  * This is the protosocket function that handles the communication. A
-00082  * protosocket function must always return an int, but must never
-00083  * explicitly return - all return statements are hidden in the PSOCK
-00084  * macros.
-00085  */
-00086 static int
-00087 handle_connection(struct hello_world_state *s)
-00088 {
-00089   PSOCK_BEGIN(&s->p);
-00090 
-00091   PSOCK_SEND_STR(&s->p, "Hello. What is your name?\n");
-00092   PSOCK_READTO(&s->p, '\n');
-00093   strncpy(s->name, s->inputbuffer, sizeof(s->name));
-00094   PSOCK_SEND_STR(&s->p, "Hello ");
-00095   PSOCK_SEND_STR(&s->p, s->name);
-00096   PSOCK_CLOSE(&s->p);
-00097   
-00098   PSOCK_END(&s->p);
-00099 }
-00100 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00037.html b/components/net/uip/doc/html/a00037.html deleted file mode 100644 index 13d709be48d1ac59934f6360d98cbeb1e25e7674..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00037.html +++ /dev/null @@ -1,72 +0,0 @@ - - -uIP 1.0: hello-world.h - - - - - -

hello-world.h

00001 /**
-00002  * \addtogroup apps
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \defgroup helloworld Hello, world
-00008  * @{
-00009  *
-00010  * A small example showing how to write applications with
-00011  * \ref psock "protosockets".
-00012  */
-00013 
-00014 /**
-00015  * \file
-00016  *         Header file for an example of how to write uIP applications
-00017  *         with protosockets.
-00018  * \author
-00019  *         Adam Dunkels <adam@sics.se>
-00020  */
-00021 
-00022 #ifndef __HELLO_WORLD_H__
-00023 #define __HELLO_WORLD_H__
-00024 
-00025 /* Since this file will be included by uip.h, we cannot include uip.h
-00026    here. But we might need to include uipopt.h if we need the u8_t and
-00027    u16_t datatypes. */
-00028 #include "uipopt.h"
-00029 
-00030 #include "psock.h"
-00031 
-00032 /* Next, we define the uip_tcp_appstate_t datatype. This is the state
-00033    of our application, and the memory required for this state is
-00034    allocated together with each TCP connection. One application state
-00035    for each TCP connection. */
-00036 typedef struct hello_world_state {
-00037   struct psock p;
-00038   char inputbuffer[10];
-00039   char name[40];
-00040 } uip_tcp_appstate_t;
-00041 
-00042 /* Finally we define the application function to be called by uIP. */
-00043 void hello_world_appcall(void);
-00044 #ifndef UIP_APPCALL
-00045 #define UIP_APPCALL hello_world_appcall
-00046 #endif /* UIP_APPCALL */
-00047 
-00048 void hello_world_init(void);
-00049 
-00050 #endif /* __HELLO_WORLD_H__ */
-00051 /** @} */
-00052 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00038.html b/components/net/uip/doc/html/a00038.html deleted file mode 100644 index f62a2738bcbff61f09c15a3b5cb73aa6dfedc7e8..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00038.html +++ /dev/null @@ -1,282 +0,0 @@ - - -uIP 1.0: smtp.c - - - - - -

smtp.c

00001 /**
-00002  * \addtogroup apps
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \defgroup smtp SMTP E-mail sender
-00008  * @{
-00009  *
-00010  * The Simple Mail Transfer Protocol (SMTP) as defined by RFC821 is
-00011  * the standard way of sending and transfering e-mail on the
-00012  * Internet. This simple example implementation is intended as an
-00013  * example of how to implement protocols in uIP, and is able to send
-00014  * out e-mail but has not been extensively tested.
-00015  */
-00016 
-00017 /**
-00018  * \file
-00019  * SMTP example implementation
-00020  * \author Adam Dunkels <adam@dunkels.com>
-00021  */
-00022 
-00023 /*
-00024  * Copyright (c) 2004, Adam Dunkels.
-00025  * All rights reserved.
-00026  *
-00027  * Redistribution and use in source and binary forms, with or without
-00028  * modification, are permitted provided that the following conditions
-00029  * are met:
-00030  * 1. Redistributions of source code must retain the above copyright
-00031  *    notice, this list of conditions and the following disclaimer.
-00032  * 2. Redistributions in binary form must reproduce the above copyright
-00033  *    notice, this list of conditions and the following disclaimer in the
-00034  *    documentation and/or other materials provided with the distribution.
-00035  * 3. Neither the name of the Institute nor the names of its contributors
-00036  *    may be used to endorse or promote products derived from this software
-00037  *    without specific prior written permission.
-00038  *
-00039  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00040  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00041  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00042  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00043  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00044  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00045  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00046  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00047  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00048  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00049  * SUCH DAMAGE.
-00050  *
-00051  * This file is part of the uIP TCP/IP stack.
-00052  *
-00053  * Author: Adam Dunkels <adam@sics.se>
-00054  *
-00055  * $Id: smtp.c,v 1.4 2006/06/11 21:46:37 adam Exp $
-00056  */
-00057 #include "smtp.h"
-00058 
-00059 #include "smtp-strings.h"
-00060 #include "psock.h"
-00061 #include "uip.h"
-00062 
-00063 #include <string.h>
-00064 
-00065 static struct smtp_state s;
-00066 
-00067 static char *localhostname;
-00068 static uip_ipaddr_t smtpserver;
-00069 
-00070 #define ISO_nl 0x0a
-00071 #define ISO_cr 0x0d
-00072 
-00073 #define ISO_period 0x2e
-00074 
-00075 #define ISO_2  0x32
-00076 #define ISO_3  0x33
-00077 #define ISO_4  0x34
-00078 #define ISO_5  0x35
-00079 
-00080 
-00081 /*---------------------------------------------------------------------------*/
-00082 static
-00083 PT_THREAD(smtp_thread(void))
-00084 {
-00085   PSOCK_BEGIN(&s.psock);
-00086 
-00087   PSOCK_READTO(&s.psock, ISO_nl);
-00088    
-00089   if(strncmp(s.inputbuffer, smtp_220, 3) != 0) {
-00090     PSOCK_CLOSE(&s.psock);
-00091     smtp_done(2);
-00092     PSOCK_EXIT(&s.psock);
-00093   }
-00094   
-00095   PSOCK_SEND_STR(&s.psock, (char *)smtp_helo);
-00096   PSOCK_SEND_STR(&s.psock, localhostname);
-00097   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00098 
-00099   PSOCK_READTO(&s.psock, ISO_nl);
-00100   
-00101   if(s.inputbuffer[0] != ISO_2) {
-00102     PSOCK_CLOSE(&s.psock);
-00103     smtp_done(3);
-00104     PSOCK_EXIT(&s.psock);
-00105   }
-00106 
-00107   PSOCK_SEND_STR(&s.psock, (char *)smtp_mail_from);
-00108   PSOCK_SEND_STR(&s.psock, s.from);
-00109   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00110 
-00111   PSOCK_READTO(&s.psock, ISO_nl);
-00112   
-00113   if(s.inputbuffer[0] != ISO_2) {
-00114     PSOCK_CLOSE(&s.psock);
-00115     smtp_done(4);
-00116     PSOCK_EXIT(&s.psock);
-00117   }
-00118 
-00119   PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to);
-00120   PSOCK_SEND_STR(&s.psock, s.to);
-00121   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00122 
-00123   PSOCK_READTO(&s.psock, ISO_nl);
-00124   
-00125   if(s.inputbuffer[0] != ISO_2) {
-00126     PSOCK_CLOSE(&s.psock);
-00127     smtp_done(5);
-00128     PSOCK_EXIT(&s.psock);
-00129   }
-00130   
-00131   if(s.cc != 0) {
-00132     PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to);
-00133     PSOCK_SEND_STR(&s.psock, s.cc);
-00134     PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00135 
-00136     PSOCK_READTO(&s.psock, ISO_nl);
-00137   
-00138     if(s.inputbuffer[0] != ISO_2) {
-00139       PSOCK_CLOSE(&s.psock);
-00140       smtp_done(6);
-00141       PSOCK_EXIT(&s.psock);
-00142     }
-00143   }
-00144   
-00145   PSOCK_SEND_STR(&s.psock, (char *)smtp_data);
-00146   
-00147   PSOCK_READTO(&s.psock, ISO_nl);
-00148   
-00149   if(s.inputbuffer[0] != ISO_3) {
-00150     PSOCK_CLOSE(&s.psock);
-00151     smtp_done(7);
-00152     PSOCK_EXIT(&s.psock);
-00153   }
-00154 
-00155   PSOCK_SEND_STR(&s.psock, (char *)smtp_to);
-00156   PSOCK_SEND_STR(&s.psock, s.to);
-00157   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00158   
-00159   if(s.cc != 0) {
-00160     PSOCK_SEND_STR(&s.psock, (char *)smtp_cc);
-00161     PSOCK_SEND_STR(&s.psock, s.cc);
-00162     PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00163   }
-00164   
-00165   PSOCK_SEND_STR(&s.psock, (char *)smtp_from);
-00166   PSOCK_SEND_STR(&s.psock, s.from);
-00167   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00168   
-00169   PSOCK_SEND_STR(&s.psock, (char *)smtp_subject);
-00170   PSOCK_SEND_STR(&s.psock, s.subject);
-00171   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00172 
-00173   PSOCK_SEND(&s.psock, s.msg, s.msglen);
-00174   
-00175   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnlperiodcrnl);
-00176 
-00177   PSOCK_READTO(&s.psock, ISO_nl);
-00178   if(s.inputbuffer[0] != ISO_2) {
-00179     PSOCK_CLOSE(&s.psock);
-00180     smtp_done(8);
-00181     PSOCK_EXIT(&s.psock);
-00182   }
-00183 
-00184   PSOCK_SEND_STR(&s.psock, (char *)smtp_quit);
-00185   smtp_done(SMTP_ERR_OK);
-00186   PSOCK_END(&s.psock);
-00187 }
-00188 /*---------------------------------------------------------------------------*/
-00189 void
-00190 smtp_appcall(void)
-00191 {
-00192   if(uip_closed()) {
-00193     s.connected = 0;
-00194     return;
-00195   }
-00196   if(uip_aborted() || uip_timedout()) {
-00197     s.connected = 0;
-00198     smtp_done(1);
-00199     return;
-00200   }
-00201   smtp_thread();
-00202 }
-00203 /*---------------------------------------------------------------------------*/
-00204 /**
-00205  * Specificy an SMTP server and hostname.
-00206  *
-00207  * This function is used to configure the SMTP module with an SMTP
-00208  * server and the hostname of the host.
-00209  *
-00210  * \param lhostname The hostname of the uIP host.
-00211  *
-00212  * \param server A pointer to a 4-byte array representing the IP
-00213  * address of the SMTP server to be configured.
-00214  */
-00215 void
-00216 smtp_configure(char *lhostname, void *server)
-00217 {
-00218   localhostname = lhostname;
-00219   uip_ipaddr_copy(smtpserver, server);
-00220 }
-00221 /*---------------------------------------------------------------------------*/
-00222 /**
-00223  * Send an e-mail.
-00224  *
-00225  * \param to The e-mail address of the receiver of the e-mail.
-00226  * \param cc The e-mail address of the CC: receivers of the e-mail.
-00227  * \param from The e-mail address of the sender of the e-mail.
-00228  * \param subject The subject of the e-mail.
-00229  * \param msg The actual e-mail message.
-00230  * \param msglen The length of the e-mail message.
-00231  */
-00232 unsigned char
-00233 smtp_send(char *to, char *cc, char *from,
-00234           char *subject, char *msg, u16_t msglen)
-00235 {
-00236   struct uip_conn *conn;
-00237 
-00238   conn = uip_connect(smtpserver, HTONS(25));
-00239   if(conn == NULL) {
-00240     return 0;
-00241   }
-00242   s.connected = 1;
-00243   s.to = to;
-00244   s.cc = cc;
-00245   s.from = from;
-00246   s.subject = subject;
-00247   s.msg = msg;
-00248   s.msglen = msglen;
-00249 
-00250   PSOCK_INIT(&s.psock, s.inputbuffer, sizeof(s.inputbuffer));
-00251   
-00252   return 1;
-00253 }
-00254 /*---------------------------------------------------------------------------*/
-00255 void
-00256 smtp_init(void)
-00257 {
-00258   s.connected = 0;
-00259 }
-00260 /*---------------------------------------------------------------------------*/
-00261 /** @} */
-00262 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00039.html b/components/net/uip/doc/html/a00039.html deleted file mode 100644 index fb02d5ad46660606bc5e57e9ba649a49434bfdad..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00039.html +++ /dev/null @@ -1,123 +0,0 @@ - - -uIP 1.0: smtp.h - - - - - -

smtp.h

00001 
-00002 /**
-00003  * \addtogroup smtp
-00004  * @{
-00005  */
-00006 
-00007 
-00008 /**
-00009  * \file
-00010  * SMTP header file
-00011  * \author Adam Dunkels <adam@dunkels.com>
-00012  */
-00013 
-00014 /*
-00015  * Copyright (c) 2002, Adam Dunkels.
-00016  * All rights reserved.
-00017  *
-00018  * Redistribution and use in source and binary forms, with or without
-00019  * modification, are permitted provided that the following conditions
-00020  * are met:
-00021  * 1. Redistributions of source code must retain the above copyright
-00022  *    notice, this list of conditions and the following disclaimer.
-00023  * 2. Redistributions in binary form must reproduce the above copyright
-00024  *    notice, this list of conditions and the following disclaimer in the
-00025  *    documentation and/or other materials provided with the distribution.
-00026  * 3. The name of the author may not be used to endorse or promote
-00027  *    products derived from this software without specific prior
-00028  *    written permission.
-00029  *
-00030  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00031  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00032  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00033  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00034  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00035  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00036  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00037  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00038  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00039  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00040  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00041  *
-00042  * This file is part of the uIP TCP/IP stack.
-00043  *
-00044  * $Id: smtp.h,v 1.4 2006/06/11 21:46:37 adam Exp $
-00045  *
-00046  */
-00047 #ifndef __SMTP_H__
-00048 #define __SMTP_H__
-00049 
-00050 #include "uipopt.h"
-00051 
-00052 /**
-00053  * Error number that signifies a non-error condition.
-00054  */
-00055 #define SMTP_ERR_OK 0
-00056 
-00057 /**
-00058  * Callback function that is called when an e-mail transmission is
-00059  * done.
-00060  *
-00061  * This function must be implemented by the module that uses the SMTP
-00062  * module.
-00063  *
-00064  * \param error The number of the error if an error occured, or
-00065  * SMTP_ERR_OK.
-00066  */
-00067 void smtp_done(unsigned char error);
-00068 
-00069 void smtp_init(void);
-00070 
-00071 /* Functions. */
-00072 void smtp_configure(char *localhostname, u16_t *smtpserver);
-00073 unsigned char smtp_send(char *to, char *from,
-00074                         char *subject, char *msg,
-00075                         u16_t msglen);
-00076 #define SMTP_SEND(to, cc, from, subject, msg) \
-00077         smtp_send(to, cc, from, subject, msg, strlen(msg))
-00078 
-00079 void smtp_appcall(void);
-00080 
-00081 struct smtp_state {
-00082   u8_t state;
-00083   char *to;
-00084   char *from;
-00085   char *subject;
-00086   char *msg;
-00087   u16_t msglen;
-00088   
-00089   u16_t sentlen, textlen;
-00090   u16_t sendptr;
-00091 
-00092 };
-00093 
-00094 
-00095 #ifndef UIP_APPCALL
-00096 #define UIP_APPCALL     smtp_appcall
-00097 #endif
-00098 typedef struct smtp_state uip_tcp_appstate_t;
-00099 
-00100 
-00101 #endif /* __SMTP_H__ */
-00102 
-00103 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00040.html b/components/net/uip/doc/html/a00040.html deleted file mode 100644 index 1b1f55425ad43b9061b06827d859d4fca7b51221..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00040.html +++ /dev/null @@ -1,459 +0,0 @@ - - -uIP 1.0: webclient.c - - - - - -

webclient.c

00001 /**
-00002  * \addtogroup apps
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \defgroup webclient Web client
-00008  * @{
-00009  *
-00010  * This example shows a HTTP client that is able to download web pages
-00011  * and files from web servers. It requires a number of callback
-00012  * functions to be implemented by the module that utilizes the code:
-00013  * webclient_datahandler(), webclient_connected(),
-00014  * webclient_timedout(), webclient_aborted(), webclient_closed().
-00015  */
-00016 
-00017 /**
-00018  * \file
-00019  * Implementation of the HTTP client.
-00020  * \author Adam Dunkels <adam@dunkels.com>
-00021  */
-00022 
-00023 /*
-00024  * Copyright (c) 2002, Adam Dunkels.
-00025  * All rights reserved.
-00026  *
-00027  * Redistribution and use in source and binary forms, with or without
-00028  * modification, are permitted provided that the following conditions
-00029  * are met:
-00030  * 1. Redistributions of source code must retain the above copyright
-00031  *    notice, this list of conditions and the following disclaimer.
-00032  * 2. Redistributions in binary form must reproduce the above
-00033  *    copyright notice, this list of conditions and the following
-00034  *    disclaimer in the documentation and/or other materials provided
-00035  *    with the distribution.
-00036  * 3. The name of the author may not be used to endorse or promote
-00037  *    products derived from this software without specific prior
-00038  *    written permission.
-00039  *
-00040  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00041  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00042  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00043  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00044  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00045  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00046  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00047  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00048  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00049  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00050  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00051  *
-00052  * This file is part of the uIP TCP/IP stack.
-00053  *
-00054  * $Id: webclient.c,v 1.2 2006/06/11 21:46:37 adam Exp $
-00055  *
-00056  */
-00057 
-00058 #include "uip.h"
-00059 #include "uiplib.h"
-00060 #include "webclient.h"
-00061 #include "resolv.h"
-00062 
-00063 #include <string.h>
-00064 
-00065 #define WEBCLIENT_TIMEOUT 100
-00066 
-00067 #define WEBCLIENT_STATE_STATUSLINE 0
-00068 #define WEBCLIENT_STATE_HEADERS    1
-00069 #define WEBCLIENT_STATE_DATA       2
-00070 #define WEBCLIENT_STATE_CLOSE      3
-00071 
-00072 #define HTTPFLAG_NONE   0
-00073 #define HTTPFLAG_OK     1
-00074 #define HTTPFLAG_MOVED  2
-00075 #define HTTPFLAG_ERROR  3
-00076 
-00077 
-00078 #define ISO_nl       0x0a
-00079 #define ISO_cr       0x0d
-00080 #define ISO_space    0x20
-00081 
-00082 
-00083 static struct webclient_state s;
-00084 
-00085 /*-----------------------------------------------------------------------------------*/
-00086 char *
-00087 webclient_mimetype(void)
-00088 {
-00089   return s.mimetype;
-00090 }
-00091 /*-----------------------------------------------------------------------------------*/
-00092 char *
-00093 webclient_filename(void)
-00094 {
-00095   return s.file;
-00096 }
-00097 /*-----------------------------------------------------------------------------------*/
-00098 char *
-00099 webclient_hostname(void)
-00100 {
-00101   return s.host;
-00102 }
-00103 /*-----------------------------------------------------------------------------------*/
-00104 unsigned short
-00105 webclient_port(void)
-00106 {
-00107   return s.port;
-00108 }
-00109 /*-----------------------------------------------------------------------------------*/
-00110 void
-00111 webclient_init(void)
-00112 {
-00113 
-00114 }
-00115 /*-----------------------------------------------------------------------------------*/
-00116 static void
-00117 init_connection(void)
-00118 {
-00119   s.state = WEBCLIENT_STATE_STATUSLINE;
-00120 
-00121   s.getrequestleft = sizeof(http_get) - 1 + 1 +
-00122     sizeof(http_10) - 1 +
-00123     sizeof(http_crnl) - 1 +
-00124     sizeof(http_host) - 1 +
-00125     sizeof(http_crnl) - 1 +
-00126     strlen(http_user_agent_fields) +
-00127     strlen(s.file) + strlen(s.host);
-00128   s.getrequestptr = 0;
-00129 
-00130   s.httpheaderlineptr = 0;
-00131 }
-00132 /*-----------------------------------------------------------------------------------*/
-00133 void
-00134 webclient_close(void)
-00135 {
-00136   s.state = WEBCLIENT_STATE_CLOSE;
-00137 }
-00138 /*-----------------------------------------------------------------------------------*/
-00139 unsigned char
-00140 webclient_get(char *host, u16_t port, char *file)
-00141 {
-00142   struct uip_conn *conn;
-00143   uip_ipaddr_t *ipaddr;
-00144   static uip_ipaddr_t addr;
-00145   
-00146   /* First check if the host is an IP address. */
-00147   ipaddr = &addr;
-00148   if(uiplib_ipaddrconv(host, (unsigned char *)addr) == 0) {
-00149     ipaddr = (uip_ipaddr_t *)resolv_lookup(host);
-00150     
-00151     if(ipaddr == NULL) {
-00152       return 0;
-00153     }
-00154   }
-00155   
-00156   conn = uip_connect(ipaddr, htons(port));
-00157   
-00158   if(conn == NULL) {
-00159     return 0;
-00160   }
-00161   
-00162   s.port = port;
-00163   strncpy(s.file, file, sizeof(s.file));
-00164   strncpy(s.host, host, sizeof(s.host));
-00165   
-00166   init_connection();
-00167   return 1;
-00168 }
-00169 /*-----------------------------------------------------------------------------------*/
-00170 static unsigned char *
-00171 copy_string(unsigned char *dest,
-00172             const unsigned char *src, unsigned char len)
-00173 {
-00174   strncpy(dest, src, len);
-00175   return dest + len;
-00176 }
-00177 /*-----------------------------------------------------------------------------------*/
-00178 static void
-00179 senddata(void)
-00180 {
-00181   u16_t len;
-00182   char *getrequest;
-00183   char *cptr;
-00184   
-00185   if(s.getrequestleft > 0) {
-00186     cptr = getrequest = (char *)uip_appdata;
-00187 
-00188     cptr = copy_string(cptr, http_get, sizeof(http_get) - 1);
-00189     cptr = copy_string(cptr, s.file, strlen(s.file));
-00190     *cptr++ = ISO_space;
-00191     cptr = copy_string(cptr, http_10, sizeof(http_10) - 1);
-00192 
-00193     cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1);
-00194     
-00195     cptr = copy_string(cptr, http_host, sizeof(http_host) - 1);
-00196     cptr = copy_string(cptr, s.host, strlen(s.host));
-00197     cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1);
-00198 
-00199     cptr = copy_string(cptr, http_user_agent_fields,
-00200                        strlen(http_user_agent_fields));
-00201     
-00202     len = s.getrequestleft > uip_mss()?
-00203       uip_mss():
-00204       s.getrequestleft;
-00205     uip_send(&(getrequest[s.getrequestptr]), len);
-00206   }
-00207 }
-00208 /*-----------------------------------------------------------------------------------*/
-00209 static void
-00210 acked(void)
-00211 {
-00212   u16_t len;
-00213   
-00214   if(s.getrequestleft > 0) {
-00215     len = s.getrequestleft > uip_mss()?
-00216       uip_mss():
-00217       s.getrequestleft;
-00218     s.getrequestleft -= len;
-00219     s.getrequestptr += len;
-00220   }
-00221 }
-00222 /*-----------------------------------------------------------------------------------*/
-00223 static u16_t
-00224 parse_statusline(u16_t len)
-00225 {
-00226   char *cptr;
-00227   
-00228   while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {
-00229     s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata;
-00230     ++((char *)uip_appdata);
-00231     --len;
-00232     if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {
-00233 
-00234       if((strncmp(s.httpheaderline, http_10,
-00235                   sizeof(http_10) - 1) == 0) ||
-00236          (strncmp(s.httpheaderline, http_11,
-00237                   sizeof(http_11) - 1) == 0)) {
-00238         cptr = &(s.httpheaderline[9]);
-00239         s.httpflag = HTTPFLAG_NONE;
-00240         if(strncmp(cptr, http_200, sizeof(http_200) - 1) == 0) {
-00241           /* 200 OK */
-00242           s.httpflag = HTTPFLAG_OK;
-00243         } else if(strncmp(cptr, http_301, sizeof(http_301) - 1) == 0 ||
-00244                   strncmp(cptr, http_302, sizeof(http_302) - 1) == 0) {
-00245           /* 301 Moved permanently or 302 Found. Location: header line
-00246              will contain thw new location. */
-00247           s.httpflag = HTTPFLAG_MOVED;
-00248         } else {
-00249           s.httpheaderline[s.httpheaderlineptr - 1] = 0;
-00250         }
-00251       } else {
-00252         uip_abort();
-00253         webclient_aborted();
-00254         return 0;
-00255       }
-00256       
-00257       /* We're done parsing the status line, so we reset the pointer
-00258          and start parsing the HTTP headers.*/
-00259       s.httpheaderlineptr = 0;
-00260       s.state = WEBCLIENT_STATE_HEADERS;
-00261       break;
-00262     } else {
-00263       ++s.httpheaderlineptr;
-00264     }
-00265   }
-00266   return len;
-00267 }
-00268 /*-----------------------------------------------------------------------------------*/
-00269 static char
-00270 casecmp(char *str1, const char *str2, char len)
-00271 {
-00272   static char c;
-00273   
-00274   while(len > 0) {
-00275     c = *str1;
-00276     /* Force lower-case characters. */
-00277     if(c & 0x40) {
-00278       c |= 0x20;
-00279     }
-00280     if(*str2 != c) {
-00281       return 1;
-00282     }
-00283     ++str1;
-00284     ++str2;
-00285     --len;
-00286   }
-00287   return 0;
-00288 }
-00289 /*-----------------------------------------------------------------------------------*/
-00290 static u16_t
-00291 parse_headers(u16_t len)
-00292 {
-00293   char *cptr;
-00294   static unsigned char i;
-00295   
-00296   while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {
-00297     s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata;
-00298     ++((char *)uip_appdata);
-00299     --len;
-00300     if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {
-00301       /* We have an entire HTTP header line in s.httpheaderline, so
-00302          we parse it. */
-00303       if(s.httpheaderline[0] == ISO_cr) {
-00304         /* This was the last header line (i.e., and empty "\r\n"), so
-00305            we are done with the headers and proceed with the actual
-00306            data. */
-00307         s.state = WEBCLIENT_STATE_DATA;
-00308         return len;
-00309       }
-00310 
-00311       s.httpheaderline[s.httpheaderlineptr - 1] = 0;
-00312       /* Check for specific HTTP header fields. */
-00313       if(casecmp(s.httpheaderline, http_content_type,
-00314                      sizeof(http_content_type) - 1) == 0) {
-00315         /* Found Content-type field. */
-00316         cptr = strchr(s.httpheaderline, ';');
-00317         if(cptr != NULL) {
-00318           *cptr = 0;
-00319         }
-00320         strncpy(s.mimetype, s.httpheaderline +
-00321                 sizeof(http_content_type) - 1, sizeof(s.mimetype));
-00322       } else if(casecmp(s.httpheaderline, http_location,
-00323                             sizeof(http_location) - 1) == 0) {
-00324         cptr = s.httpheaderline +
-00325           sizeof(http_location) - 1;
-00326         
-00327         if(strncmp(cptr, http_http, 7) == 0) {
-00328           cptr += 7;
-00329           for(i = 0; i < s.httpheaderlineptr - 7; ++i) {
-00330             if(*cptr == 0 ||
-00331                *cptr == '/' ||
-00332                *cptr == ' ' ||
-00333                *cptr == ':') {
-00334               s.host[i] = 0;
-00335               break;
-00336             }
-00337             s.host[i] = *cptr;
-00338             ++cptr;
-00339           }
-00340         }
-00341         strncpy(s.file, cptr, sizeof(s.file));
-00342         /*      s.file[s.httpheaderlineptr - i] = 0;*/
-00343       }
-00344 
-00345 
-00346       /* We're done parsing, so we reset the pointer and start the
-00347          next line. */
-00348       s.httpheaderlineptr = 0;
-00349     } else {
-00350       ++s.httpheaderlineptr;
-00351     }
-00352   }
-00353   return len;
-00354 }
-00355 /*-----------------------------------------------------------------------------------*/
-00356 static void
-00357 newdata(void)
-00358 {
-00359   u16_t len;
-00360 
-00361   len = uip_datalen();
-00362 
-00363   if(s.state == WEBCLIENT_STATE_STATUSLINE) {
-00364     len = parse_statusline(len);
-00365   }
-00366   
-00367   if(s.state == WEBCLIENT_STATE_HEADERS && len > 0) {
-00368     len = parse_headers(len);
-00369   }
-00370 
-00371   if(len > 0 && s.state == WEBCLIENT_STATE_DATA &&
-00372      s.httpflag != HTTPFLAG_MOVED) {
-00373     webclient_datahandler((char *)uip_appdata, len);
-00374   }
-00375 }
-00376 /*-----------------------------------------------------------------------------------*/
-00377 void
-00378 webclient_appcall(void)
-00379 {
-00380   if(uip_connected()) {
-00381     s.timer = 0;
-00382     s.state = WEBCLIENT_STATE_STATUSLINE;
-00383     senddata();
-00384     webclient_connected();
-00385     return;
-00386   }
-00387 
-00388   if(s.state == WEBCLIENT_STATE_CLOSE) {
-00389     webclient_closed();
-00390     uip_abort();
-00391     return;
-00392   }
-00393 
-00394   if(uip_aborted()) {
-00395     webclient_aborted();
-00396   }
-00397   if(uip_timedout()) {
-00398     webclient_timedout();
-00399   }
-00400 
-00401   
-00402   if(uip_acked()) {
-00403     s.timer = 0;
-00404     acked();
-00405   }
-00406   if(uip_newdata()) {
-00407     s.timer = 0;
-00408     newdata();
-00409   }
-00410   if(uip_rexmit() ||
-00411      uip_newdata() ||
-00412      uip_acked()) {
-00413     senddata();
-00414   } else if(uip_poll()) {
-00415     ++s.timer;
-00416     if(s.timer == WEBCLIENT_TIMEOUT) {
-00417       webclient_timedout();
-00418       uip_abort();
-00419       return;
-00420     }
-00421         /*    senddata();*/
-00422   }
-00423 
-00424   if(uip_closed()) {
-00425     if(s.httpflag != HTTPFLAG_MOVED) {
-00426       /* Send NULL data to signal EOF. */
-00427       webclient_datahandler(NULL, 0);
-00428     } else {
-00429       if(resolv_lookup(s.host) == NULL) {
-00430         resolv_query(s.host);
-00431       }
-00432       webclient_get(s.host, s.port, s.file);
-00433     }
-00434   }
-00435 }
-00436 /*-----------------------------------------------------------------------------------*/
-00437 
-00438 /** @} */
-00439 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00041.html b/components/net/uip/doc/html/a00041.html deleted file mode 100644 index f1f93ea8e36a58bdf4cb8b552d148d28ca5fe3a7..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00041.html +++ /dev/null @@ -1,248 +0,0 @@ - - -uIP 1.0: webclient.h - - - - - -

webclient.h

00001 /**
-00002  * \addtogroup webclient
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \file
-00008  * Header file for the HTTP client.
-00009  * \author Adam Dunkels <adam@dunkels.com>
-00010  */
-00011 
-00012 /*
-00013  * Copyright (c) 2002, Adam Dunkels.
-00014  * All rights reserved.
-00015  *
-00016  * Redistribution and use in source and binary forms, with or without
-00017  * modification, are permitted provided that the following conditions
-00018  * are met:
-00019  * 1. Redistributions of source code must retain the above copyright
-00020  *    notice, this list of conditions and the following disclaimer.
-00021  * 2. Redistributions in binary form must reproduce the above
-00022  *    copyright notice, this list of conditions and the following
-00023  *    disclaimer in the documentation and/or other materials provided
-00024  *    with the distribution.
-00025  * 3. The name of the author may not be used to endorse or promote
-00026  *    products derived from this software without specific prior
-00027  *    written permission.
-00028  *
-00029  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00030  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00031  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00032  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00033  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00034  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00035  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00036  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00037  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00038  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00039  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00040  *
-00041  * This file is part of the uIP TCP/IP stack.
-00042  *
-00043  * $Id: webclient.h,v 1.2 2006/06/11 21:46:37 adam Exp $
-00044  *
-00045  */
-00046 #ifndef __WEBCLIENT_H__
-00047 #define __WEBCLIENT_H__
-00048 
-00049 
-00050 #include "webclient-strings.h"
-00051 #include "uipopt.h"
-00052 
-00053 #define WEBCLIENT_CONF_MAX_URLLEN 100
-00054 
-00055 struct webclient_state {
-00056   u8_t timer;
-00057   u8_t state;
-00058   u8_t httpflag;
-00059 
-00060   u16_t port;
-00061   char host[40];
-00062   char file[WEBCLIENT_CONF_MAX_URLLEN];
-00063   u16_t getrequestptr;
-00064   u16_t getrequestleft;
-00065   
-00066   char httpheaderline[200];
-00067   u16_t httpheaderlineptr;
-00068 
-00069   char mimetype[32];
-00070 };
-00071 
-00072 typedef struct webclient_state uip_tcp_appstate_t;
-00073 #define UIP_APPCALL webclient_appcall
-00074 
-00075 /**
-00076  * Callback function that is called from the webclient code when HTTP
-00077  * data has been received.
-00078  *
-00079  * This function must be implemented by the module that uses the
-00080  * webclient code. The function is called from the webclient module
-00081  * when HTTP data has been received. The function is not called when
-00082  * HTTP headers are received, only for the actual data.
-00083  *
-00084  * \note This function is called many times, repetedly, when data is
-00085  * being received, and not once when all data has been received.
-00086  *
-00087  * \param data A pointer to the data that has been received.
-00088  * \param len The length of the data that has been received.
-00089  */
-00090 void webclient_datahandler(char *data, u16_t len);
-00091 
-00092 /**
-00093  * Callback function that is called from the webclient code when the
-00094  * HTTP connection has been connected to the web server.
-00095  *
-00096  * This function must be implemented by the module that uses the
-00097  * webclient code.
-00098  */
-00099 void webclient_connected(void);
-00100 
-00101 /**
-00102  * Callback function that is called from the webclient code if the
-00103  * HTTP connection to the web server has timed out.
-00104  *
-00105  * This function must be implemented by the module that uses the
-00106  * webclient code.
-00107  */
-00108 void webclient_timedout(void);
-00109 
-00110 /**
-00111  * Callback function that is called from the webclient code if the
-00112  * HTTP connection to the web server has been aborted by the web
-00113  * server.
-00114  *
-00115  * This function must be implemented by the module that uses the
-00116  * webclient code.
-00117  */
-00118 void webclient_aborted(void);
-00119 
-00120 /**
-00121  * Callback function that is called from the webclient code when the
-00122  * HTTP connection to the web server has been closed.
-00123  *
-00124  * This function must be implemented by the module that uses the
-00125  * webclient code.
-00126  */
-00127 void webclient_closed(void);
-00128 
-00129 
-00130 
-00131 /**
-00132  * Initialize the webclient module.
-00133  */
-00134 void webclient_init(void);
-00135 
-00136 /**
-00137  * Open an HTTP connection to a web server and ask for a file using
-00138  * the GET method.
-00139  *
-00140  * This function opens an HTTP connection to the specified web server
-00141  * and requests the specified file using the GET method. When the HTTP
-00142  * connection has been connected, the webclient_connected() callback
-00143  * function is called and when the HTTP data arrives the
-00144  * webclient_datahandler() callback function is called.
-00145  *
-00146  * The callback function webclient_timedout() is called if the web
-00147  * server could not be contacted, and the webclient_aborted() callback
-00148  * function is called if the HTTP connection is aborted by the web
-00149  * server.
-00150  *
-00151  * When the HTTP request has been completed and the HTTP connection is
-00152  * closed, the webclient_closed() callback function will be called.
-00153  *
-00154  * \note If the function is passed a host name, it must already be in
-00155  * the resolver cache in order for the function to connect to the web
-00156  * server. It is therefore up to the calling module to implement the
-00157  * resolver calls and the signal handler used for reporting a resolv
-00158  * query answer.
-00159  *
-00160  * \param host A pointer to a string containing either a host name or
-00161  * a numerical IP address in dotted decimal notation (e.g., 192.168.23.1).
-00162  *
-00163  * \param port The port number to which to connect, in host byte order.
-00164  *
-00165  * \param file A pointer to the name of the file to get.
-00166  *
-00167  * \retval 0 if the host name could not be found in the cache, or
-00168  * if a TCP connection could not be created.
-00169  *
-00170  * \retval 1 if the connection was initiated.
-00171  */
-00172 unsigned char webclient_get(char *host, u16_t port, char *file);
-00173 
-00174 /**
-00175  * Close the currently open HTTP connection.
-00176  */
-00177 void webclient_close(void);
-00178 void webclient_appcall(void);
-00179 
-00180 /**
-00181  * Obtain the MIME type of the current HTTP data stream.
-00182  *
-00183  * \return A pointer to a string contaning the MIME type. The string
-00184  * may be empty if no MIME type was reported by the web server.
-00185  */
-00186 char *webclient_mimetype(void);
-00187 
-00188 /**
-00189  * Obtain the filename of the current HTTP data stream.
-00190  *
-00191  * The filename of an HTTP request may be changed by the web server,
-00192  * and may therefore not be the same as when the original GET request
-00193  * was made with webclient_get(). This function is used for obtaining
-00194  * the current filename.
-00195  *
-00196  * \return A pointer to the current filename.
-00197  */
-00198 char *webclient_filename(void);
-00199 
-00200 /**
-00201  * Obtain the hostname of the current HTTP data stream.
-00202  *
-00203  * The hostname of the web server of an HTTP request may be changed
-00204  * by the web server, and may therefore not be the same as when the
-00205  * original GET request was made with webclient_get(). This function
-00206  * is used for obtaining the current hostname.
-00207  *
-00208  * \return A pointer to the current hostname.
-00209  */
-00210 char *webclient_hostname(void);
-00211 
-00212 /**
-00213  * Obtain the port number of the current HTTP data stream.
-00214  *
-00215  * The port number of an HTTP request may be changed by the web
-00216  * server, and may therefore not be the same as when the original GET
-00217  * request was made with webclient_get(). This function is used for
-00218  * obtaining the current port number.
-00219  *
-00220  * \return The port number of the current HTTP data stream, in host byte order.
-00221  */
-00222 unsigned short webclient_port(void);
-00223 
-00224 
-00225 
-00226 #endif /* __WEBCLIENT_H__ */
-00227 
-00228 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00042.html b/components/net/uip/doc/html/a00042.html deleted file mode 100644 index ecff751f8016ebe5e40c4405740f39bd54806782..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00042.html +++ /dev/null @@ -1,106 +0,0 @@ - - -uIP 1.0: example-mainloop-with-arp.c - - - - - -

example-mainloop-with-arp.c

00001 #include "uip.h"
-00002 #include "uip_arp.h"
-00003 #include "network-device.h"
-00004 #include "httpd.h"
-00005 #include "timer.h"
-00006 
-00007 #define BUF ((struct uip_eth_hdr *)&uip_buf[0])
-00008 
-00009 /*---------------------------------------------------------------------------*/
-00010 int
-00011 main(void)
-00012 {
-00013   int i;
-00014   uip_ipaddr_t ipaddr;
-00015   struct timer periodic_timer, arp_timer;
-00016   
-00017   timer_set(&periodic_timer, CLOCK_SECOND / 2);
-00018   timer_set(&arp_timer, CLOCK_SECOND * 10);
-00019   
-00020   network_device_init();
-00021   uip_init();
-00022 
-00023   uip_ipaddr(ipaddr, 192,168,0,2);
-00024   uip_sethostaddr(ipaddr);
-00025 
-00026   httpd_init();
-00027   
-00028   while(1) {
-00029     uip_len = network_device_read();
-00030     if(uip_len > 0) {
-00031       if(BUF->type == htons(UIP_ETHTYPE_IP)) {
-00032         uip_arp_ipin();
-00033         uip_input();
-00034         /* If the above function invocation resulted in data that
-00035            should be sent out on the network, the global variable
-00036            uip_len is set to a value > 0. */
-00037         if(uip_len > 0) {
-00038           uip_arp_out();
-00039           network_device_send();
-00040         }
-00041       } else if(BUF->type == htons(UIP_ETHTYPE_ARP)) {
-00042         uip_arp_arpin();
-00043         /* If the above function invocation resulted in data that
-00044            should be sent out on the network, the global variable
-00045            uip_len is set to a value > 0. */
-00046         if(uip_len > 0) {
-00047           network_device_send();
-00048         }
-00049       }
-00050 
-00051     } else if(timer_expired(&periodic_timer)) {
-00052       timer_reset(&periodic_timer);
-00053       for(i = 0; i < UIP_CONNS; i++) {
-00054         uip_periodic(i);
-00055         /* If the above function invocation resulted in data that
-00056            should be sent out on the network, the global variable
-00057            uip_len is set to a value > 0. */
-00058         if(uip_len > 0) {
-00059           uip_arp_out();
-00060           network_device_send();
-00061         }
-00062       }
-00063 
-00064 #if UIP_UDP
-00065       for(i = 0; i < UIP_UDP_CONNS; i++) {
-00066         uip_udp_periodic(i);
-00067         /* If the above function invocation resulted in data that
-00068            should be sent out on the network, the global variable
-00069            uip_len is set to a value > 0. */
-00070         if(uip_len > 0) {
-00071           uip_arp_out();
-00072           network_device_send();
-00073         }
-00074       }
-00075 #endif /* UIP_UDP */
-00076       
-00077       /* Call the ARP timer function every 10 seconds. */
-00078       if(timer_expired(&arp_timer)) {
-00079         timer_reset(&arp_timer);
-00080         uip_arp_timer();
-00081       }
-00082     }
-00083   }
-00084   return 0;
-00085 }
-00086 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00043.html b/components/net/uip/doc/html/a00043.html deleted file mode 100644 index be8d85ccf1d7fd067cebbeba9173dd0e38070cbf..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00043.html +++ /dev/null @@ -1,82 +0,0 @@ - - -uIP 1.0: example-mainloop-without-arp.c - - - - - -

example-mainloop-without-arp.c

00001 #include "uip.h"
-00002 #include "uip_arp.h"
-00003 #include "network-device.h"
-00004 #include "httpd.h"
-00005 #include "timer.h"
-00006 
-00007 /*---------------------------------------------------------------------------*/
-00008 int
-00009 main(void)
-00010 {
-00011   int i;
-00012   uip_ipaddr_t ipaddr;
-00013   struct timer periodic_timer;
-00014   
-00015   timer_set(&periodic_timer, CLOCK_SECOND / 2);
-00016   
-00017   network_device_init();
-00018   uip_init();
-00019 
-00020   uip_ipaddr(ipaddr, 192,168,0,2);
-00021   uip_sethostaddr(ipaddr);
-00022 
-00023   httpd_init();
-00024   
-00025   while(1) {
-00026     uip_len = network_device_read();
-00027     if(uip_len > 0) {
-00028       uip_input();
-00029       /* If the above function invocation resulted in data that
-00030          should be sent out on the network, the global variable
-00031          uip_len is set to a value > 0. */
-00032       if(uip_len > 0) {
-00033         network_device_send();
-00034       }
-00035     } else if(timer_expired(&periodic_timer)) {
-00036       timer_reset(&periodic_timer);
-00037       for(i = 0; i < UIP_CONNS; i++) {
-00038         uip_periodic(i);
-00039         /* If the above function invocation resulted in data that
-00040            should be sent out on the network, the global variable
-00041            uip_len is set to a value > 0. */
-00042         if(uip_len > 0) {
-00043           network_device_send();
-00044         }
-00045       }
-00046 
-00047 #if UIP_UDP
-00048       for(i = 0; i < UIP_UDP_CONNS; i++) {
-00049         uip_udp_periodic(i);
-00050         /* If the above function invocation resulted in data that
-00051            should be sent out on the network, the global variable
-00052            uip_len is set to a value > 0. */
-00053         if(uip_len > 0) {
-00054           network_device_send();
-00055         }
-00056       }
-00057 #endif /* UIP_UDP */
-00058     }
-00059   }
-00060   return 0;
-00061 }
-00062 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00044.html b/components/net/uip/doc/html/a00044.html deleted file mode 100644 index 63af613811897b69f8cca62f2d63e3d179c2e778..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00044.html +++ /dev/null @@ -1,370 +0,0 @@ - - -uIP 1.0: telnetd.c - - - - - -

telnetd.c

00001 /*
-00002  * Copyright (c) 2003, Adam Dunkels.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. The name of the author may not be used to endorse or promote
-00014  *    products derived from this software without specific prior
-00015  *    written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00018  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00019  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00021  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00023  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00025  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00026  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00027  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * $Id: telnetd.c,v 1.2 2006/06/07 09:43:54 adam Exp $
-00032  *
-00033  */
-00034 
-00035 #include "uip.h"
-00036 #include "telnetd.h"
-00037 #include "memb.h"
-00038 #include "shell.h"
-00039 
-00040 #include <string.h>
-00041 
-00042 #define ISO_nl       0x0a
-00043 #define ISO_cr       0x0d
-00044 
-00045 struct telnetd_line {
-00046   char line[TELNETD_CONF_LINELEN];
-00047 };
-00048 MEMB(linemem, struct telnetd_line, TELNETD_CONF_NUMLINES);
-00049 
-00050 #define STATE_NORMAL 0
-00051 #define STATE_IAC    1
-00052 #define STATE_WILL   2
-00053 #define STATE_WONT   3
-00054 #define STATE_DO     4
-00055 #define STATE_DONT   5
-00056 #define STATE_CLOSE  6
-00057 
-00058 static struct telnetd_state s;
-00059 
-00060 #define TELNET_IAC   255
-00061 #define TELNET_WILL  251
-00062 #define TELNET_WONT  252
-00063 #define TELNET_DO    253
-00064 #define TELNET_DONT  254
-00065 /*---------------------------------------------------------------------------*/
-00066 static char *
-00067 alloc_line(void)
-00068 {
-00069   return memb_alloc(&linemem);
-00070 }
-00071 /*---------------------------------------------------------------------------*/
-00072 static void
-00073 dealloc_line(char *line)
-00074 {
-00075   memb_free(&linemem, line);
-00076 }
-00077 /*---------------------------------------------------------------------------*/
-00078 void
-00079 shell_quit(char *str)
-00080 {
-00081   s.state = STATE_CLOSE;
-00082 }
-00083 /*---------------------------------------------------------------------------*/
-00084 static void
-00085 sendline(char *line)
-00086 {
-00087   static unsigned int i;
-00088   
-00089   for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
-00090     if(s.lines[i] == NULL) {
-00091       s.lines[i] = line;
-00092       break;
-00093     }
-00094   }
-00095   if(i == TELNETD_CONF_NUMLINES) {
-00096     dealloc_line(line);
-00097   }
-00098 }
-00099 /*---------------------------------------------------------------------------*/
-00100 void
-00101 shell_prompt(char *str)
-00102 {
-00103   char *line;
-00104   line = alloc_line();
-00105   if(line != NULL) {
-00106     strncpy(line, str, TELNETD_CONF_LINELEN);
-00107     /*    petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/
-00108     sendline(line);
-00109   }
-00110 }
-00111 /*---------------------------------------------------------------------------*/
-00112 void
-00113 shell_output(char *str1, char *str2)
-00114 {
-00115   static unsigned len;
-00116   char *line;
-00117 
-00118   line = alloc_line();
-00119   if(line != NULL) {
-00120     len = strlen(str1);
-00121     strncpy(line, str1, TELNETD_CONF_LINELEN);
-00122     if(len < TELNETD_CONF_LINELEN) {
-00123       strncpy(line + len, str2, TELNETD_CONF_LINELEN - len);
-00124     }
-00125     len = strlen(line);
-00126     if(len < TELNETD_CONF_LINELEN - 2) {
-00127       line[len] = ISO_cr;
-00128       line[len+1] = ISO_nl;
-00129       line[len+2] = 0;
-00130     }
-00131     /*    petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/
-00132     sendline(line);
-00133   }
-00134 }
-00135 /*---------------------------------------------------------------------------*/
-00136 void
-00137 telnetd_init(void)
-00138 {
-00139   uip_listen(HTONS(23));
-00140   memb_init(&linemem);
-00141   shell_init();
-00142 }
-00143 /*---------------------------------------------------------------------------*/
-00144 static void
-00145 acked(void)
-00146 {
-00147   static unsigned int i;
-00148   
-00149   while(s.numsent > 0) {
-00150     dealloc_line(s.lines[0]);
-00151     for(i = 1; i < TELNETD_CONF_NUMLINES; ++i) {
-00152       s.lines[i - 1] = s.lines[i];
-00153     }
-00154     s.lines[TELNETD_CONF_NUMLINES - 1] = NULL;
-00155     --s.numsent;
-00156   }
-00157 }
-00158 /*---------------------------------------------------------------------------*/
-00159 static void
-00160 senddata(void)
-00161 {
-00162   static char *bufptr, *lineptr;
-00163   static int buflen, linelen;
-00164   
-00165   bufptr = uip_appdata;
-00166   buflen = 0;
-00167   for(s.numsent = 0; s.numsent < TELNETD_CONF_NUMLINES &&
-00168         s.lines[s.numsent] != NULL ; ++s.numsent) {
-00169     lineptr = s.lines[s.numsent];
-00170     linelen = strlen(lineptr);
-00171     if(linelen > TELNETD_CONF_LINELEN) {
-00172       linelen = TELNETD_CONF_LINELEN;
-00173     }
-00174     if(buflen + linelen < uip_mss()) {
-00175       memcpy(bufptr, lineptr, linelen);
-00176       bufptr += linelen;
-00177       buflen += linelen;
-00178     } else {
-00179       break;
-00180     }
-00181   }
-00182   uip_send(uip_appdata, buflen);
-00183 }
-00184 /*---------------------------------------------------------------------------*/
-00185 static void
-00186 closed(void)
-00187 {
-00188   static unsigned int i;
-00189   
-00190   for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
-00191     if(s.lines[i] != NULL) {
-00192       dealloc_line(s.lines[i]);
-00193     }
-00194   }
-00195 }
-00196 /*---------------------------------------------------------------------------*/
-00197 static void
-00198 get_char(u8_t c)
-00199 {
-00200   if(c == ISO_cr) {
-00201     return;
-00202   }
-00203   
-00204   s.buf[(int)s.bufptr] = c;
-00205   if(s.buf[(int)s.bufptr] == ISO_nl ||
-00206      s.bufptr == sizeof(s.buf) - 1) {
-00207     if(s.bufptr > 0) {
-00208       s.buf[(int)s.bufptr] = 0;
-00209       /*      petsciiconv_topetscii(s.buf, TELNETD_CONF_LINELEN);*/
-00210     }
-00211     shell_input(s.buf);
-00212     s.bufptr = 0;
-00213   } else {
-00214     ++s.bufptr;
-00215   }
-00216 }
-00217 /*---------------------------------------------------------------------------*/
-00218 static void
-00219 sendopt(u8_t option, u8_t value)
-00220 {
-00221   char *line;
-00222   line = alloc_line();
-00223   if(line != NULL) {
-00224     line[0] = TELNET_IAC;
-00225     line[1] = option;
-00226     line[2] = value;
-00227     line[3] = 0;
-00228     sendline(line);
-00229   }
-00230 }
-00231 /*---------------------------------------------------------------------------*/
-00232 static void
-00233 newdata(void)
-00234 {
-00235   u16_t len;
-00236   u8_t c;
-00237   char *dataptr;
-00238     
-00239   
-00240   len = uip_datalen();
-00241   dataptr = (char *)uip_appdata;
-00242   
-00243   while(len > 0 && s.bufptr < sizeof(s.buf)) {
-00244     c = *dataptr;
-00245     ++dataptr;
-00246     --len;
-00247     switch(s.state) {
-00248     case STATE_IAC:
-00249       if(c == TELNET_IAC) {
-00250         get_char(c);
-00251         s.state = STATE_NORMAL;
-00252       } else {
-00253         switch(c) {
-00254         case TELNET_WILL:
-00255           s.state = STATE_WILL;
-00256           break;
-00257         case TELNET_WONT:
-00258           s.state = STATE_WONT;
-00259           break;
-00260         case TELNET_DO:
-00261           s.state = STATE_DO;
-00262           break;
-00263         case TELNET_DONT:
-00264           s.state = STATE_DONT;
-00265           break;
-00266         default:
-00267           s.state = STATE_NORMAL;
-00268           break;
-00269         }
-00270       }
-00271       break;
-00272     case STATE_WILL:
-00273       /* Reply with a DONT */
-00274       sendopt(TELNET_DONT, c);
-00275       s.state = STATE_NORMAL;
-00276       break;
-00277       
-00278     case STATE_WONT:
-00279       /* Reply with a DONT */
-00280       sendopt(TELNET_DONT, c);
-00281       s.state = STATE_NORMAL;
-00282       break;
-00283     case STATE_DO:
-00284       /* Reply with a WONT */
-00285       sendopt(TELNET_WONT, c);
-00286       s.state = STATE_NORMAL;
-00287       break;
-00288     case STATE_DONT:
-00289       /* Reply with a WONT */
-00290       sendopt(TELNET_WONT, c);
-00291       s.state = STATE_NORMAL;
-00292       break;
-00293     case STATE_NORMAL:
-00294       if(c == TELNET_IAC) {
-00295         s.state = STATE_IAC;
-00296       } else {
-00297         get_char(c);
-00298       }
-00299       break;
-00300     }
-00301 
-00302     
-00303   }
-00304   
-00305 }
-00306 /*---------------------------------------------------------------------------*/
-00307 void
-00308 telnetd_appcall(void)
-00309 {
-00310   static unsigned int i;
-00311   if(uip_connected()) {
-00312     /*    tcp_markconn(uip_conn, &s);*/
-00313     for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
-00314       s.lines[i] = NULL;
-00315     }
-00316     s.bufptr = 0;
-00317     s.state = STATE_NORMAL;
-00318 
-00319     shell_start();
-00320   }
-00321 
-00322   if(s.state == STATE_CLOSE) {
-00323     s.state = STATE_NORMAL;
-00324     uip_close();
-00325     return;
-00326   }
-00327   
-00328   if(uip_closed() ||
-00329      uip_aborted() ||
-00330      uip_timedout()) {
-00331     closed();
-00332   }
-00333   
-00334   if(uip_acked()) {
-00335     acked();
-00336   }
-00337   
-00338   if(uip_newdata()) {
-00339     newdata();
-00340   }
-00341   
-00342   if(uip_rexmit() ||
-00343      uip_newdata() ||
-00344      uip_acked() ||
-00345      uip_connected() ||
-00346      uip_poll()) {
-00347     senddata();
-00348   }
-00349 }
-00350 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00045.html b/components/net/uip/doc/html/a00045.html deleted file mode 100644 index 7ed6df90205e03a6b613e7cd93b9f7d81a2b305d..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00045.html +++ /dev/null @@ -1,83 +0,0 @@ - - -uIP 1.0: telnetd.h - - - - - -

telnetd.h

00001 /*
-00002  * Copyright (c) 2003, Adam Dunkels.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above
-00011  *    copyright notice, this list of conditions and the following
-00012  *    disclaimer in the documentation and/or other materials provided
-00013  *    with the distribution.
-00014  * 3. The name of the author may not be used to endorse or promote
-00015  *    products derived from this software without specific prior
-00016  *    written permission.
-00017  *
-00018  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00019  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00020  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00021  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00022  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00023  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00024  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00025  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00026  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00027  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00028  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00029  *
-00030  * This file is part of the uIP TCP/IP stack
-00031  *
-00032  * $Id: telnetd.h,v 1.2 2006/06/07 09:43:54 adam Exp $
-00033  *
-00034  */
-00035 #ifndef __TELNETD_H__
-00036 #define __TELNETD_H__
-00037 
-00038 #include "uipopt.h"
-00039 
-00040 void telnetd_appcall(void);
-00041 
-00042 #ifndef TELNETD_CONF_LINELEN
-00043 #define TELNETD_CONF_LINELEN 40
-00044 #endif
-00045 #ifndef TELNETD_CONF_NUMLINES
-00046 #define TELNETD_CONF_NUMLINES 16
-00047 #endif
-00048 
-00049 struct telnetd_state {
-00050   char *lines[TELNETD_CONF_NUMLINES];
-00051   char buf[TELNETD_CONF_LINELEN];
-00052   char bufptr;
-00053   u8_t numsent;
-00054   u8_t state;
-00055 };
-00056 
-00057 typedef struct telnetd_state uip_tcp_appstate_t;
-00058 
-00059 #ifndef UIP_APPCALL
-00060 #define UIP_APPCALL     telnetd_appcall
-00061 #endif
-00062 
-00063 #endif /* __TELNETD_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00046.html b/components/net/uip/doc/html/a00046.html deleted file mode 100644 index 9e877ea147b7c66ed61d69ce6cc4dbb6c64499ce..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00046.html +++ /dev/null @@ -1,484 +0,0 @@ - - -uIP 1.0: resolv.c - - - - - -

resolv.c

00001 /**
-00002  * \addtogroup apps
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \defgroup resolv DNS resolver
-00008  * @{
-00009  *
-00010  * The uIP DNS resolver functions are used to lookup a hostname and
-00011  * map it to a numerical IP address. It maintains a list of resolved
-00012  * hostnames that can be queried with the resolv_lookup()
-00013  * function. New hostnames can be resolved using the resolv_query()
-00014  * function.
-00015  *
-00016  * When a hostname has been resolved (or found to be non-existant),
-00017  * the resolver code calls a callback function called resolv_found()
-00018  * that must be implemented by the module that uses the resolver.
-00019  */
-00020 
-00021 /**
-00022  * \file
-00023  * DNS host name to IP address resolver.
-00024  * \author Adam Dunkels <adam@dunkels.com>
-00025  *
-00026  * This file implements a DNS host name to IP address resolver.
-00027  */
-00028 
-00029 /*
-00030  * Copyright (c) 2002-2003, Adam Dunkels.
-00031  * All rights reserved.
-00032  *
-00033  * Redistribution and use in source and binary forms, with or without
-00034  * modification, are permitted provided that the following conditions
-00035  * are met:
-00036  * 1. Redistributions of source code must retain the above copyright
-00037  *    notice, this list of conditions and the following disclaimer.
-00038  * 2. Redistributions in binary form must reproduce the above copyright
-00039  *    notice, this list of conditions and the following disclaimer in the
-00040  *    documentation and/or other materials provided with the distribution.
-00041  * 3. The name of the author may not be used to endorse or promote
-00042  *    products derived from this software without specific prior
-00043  *    written permission.
-00044  *
-00045  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00046  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00047  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00048  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00049  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00050  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00051  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00052  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00053  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00054  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00055  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00056  *
-00057  * This file is part of the uIP TCP/IP stack.
-00058  *
-00059  * $Id: resolv.c,v 1.5 2006/06/11 21:46:37 adam Exp $
-00060  *
-00061  */
-00062 
-00063 #include "resolv.h"
-00064 #include "uip.h"
-00065 
-00066 #include <string.h>
-00067 
-00068 #ifndef NULL
-00069 #define NULL (void *)0
-00070 #endif /* NULL */
-00071 
-00072 /** \internal The maximum number of retries when asking for a name. */
-00073 #define MAX_RETRIES 8
-00074 
-00075 /** \internal The DNS message header. */
-00076 struct dns_hdr {
-00077   u16_t id;
-00078   u8_t flags1, flags2;
-00079 #define DNS_FLAG1_RESPONSE        0x80
-00080 #define DNS_FLAG1_OPCODE_STATUS   0x10
-00081 #define DNS_FLAG1_OPCODE_INVERSE  0x08
-00082 #define DNS_FLAG1_OPCODE_STANDARD 0x00
-00083 #define DNS_FLAG1_AUTHORATIVE     0x04
-00084 #define DNS_FLAG1_TRUNC           0x02
-00085 #define DNS_FLAG1_RD              0x01
-00086 #define DNS_FLAG2_RA              0x80
-00087 #define DNS_FLAG2_ERR_MASK        0x0f
-00088 #define DNS_FLAG2_ERR_NONE        0x00
-00089 #define DNS_FLAG2_ERR_NAME        0x03
-00090   u16_t numquestions;
-00091   u16_t numanswers;
-00092   u16_t numauthrr;
-00093   u16_t numextrarr;
-00094 };
-00095 
-00096 /** \internal The DNS answer message structure. */
-00097 struct dns_answer {
-00098   /* DNS answer record starts with either a domain name or a pointer
-00099      to a name already present somewhere in the packet. */
-00100   u16_t type;
-00101   u16_t class;
-00102   u16_t ttl[2];
-00103   u16_t len;
-00104   uip_ipaddr_t ipaddr;
-00105 };
-00106 
-00107 struct namemap {
-00108 #define STATE_UNUSED 0
-00109 #define STATE_NEW    1
-00110 #define STATE_ASKING 2
-00111 #define STATE_DONE   3
-00112 #define STATE_ERROR  4
-00113   u8_t state;
-00114   u8_t tmr;
-00115   u8_t retries;
-00116   u8_t seqno;
-00117   u8_t err;
-00118   char name[32];
-00119   uip_ipaddr_t ipaddr;
-00120 };
-00121 
-00122 #ifndef UIP_CONF_RESOLV_ENTRIES
-00123 #define RESOLV_ENTRIES 4
-00124 #else /* UIP_CONF_RESOLV_ENTRIES */
-00125 #define RESOLV_ENTRIES UIP_CONF_RESOLV_ENTRIES
-00126 #endif /* UIP_CONF_RESOLV_ENTRIES */
-00127 
-00128 
-00129 static struct namemap names[RESOLV_ENTRIES];
-00130 
-00131 static u8_t seqno;
-00132 
-00133 static struct uip_udp_conn *resolv_conn = NULL;
-00134 
-00135 
-00136 /*---------------------------------------------------------------------------*/
-00137 /** \internal
-00138  * Walk through a compact encoded DNS name and return the end of it.
-00139  *
-00140  * \return The end of the name.
-00141  */
-00142 /*---------------------------------------------------------------------------*/
-00143 static unsigned char *
-00144 parse_name(unsigned char *query)
-00145 {
-00146   unsigned char n;
-00147 
-00148   do {
-00149     n = *query++;
-00150     
-00151     while(n > 0) {
-00152       /*      printf("%c", *query);*/
-00153       ++query;
-00154       --n;
-00155     };
-00156     /*    printf(".");*/
-00157   } while(*query != 0);
-00158   /*  printf("\n");*/
-00159   return query + 1;
-00160 }
-00161 /*---------------------------------------------------------------------------*/
-00162 /** \internal
-00163  * Runs through the list of names to see if there are any that have
-00164  * not yet been queried and, if so, sends out a query.
-00165  */
-00166 /*---------------------------------------------------------------------------*/
-00167 static void
-00168 check_entries(void)
-00169 {
-00170   register struct dns_hdr *hdr;
-00171   char *query, *nptr, *nameptr;
-00172   static u8_t i;
-00173   static u8_t n;
-00174   register struct namemap *namemapptr;
-00175   
-00176   for(i = 0; i < RESOLV_ENTRIES; ++i) {
-00177     namemapptr = &names[i];
-00178     if(namemapptr->state == STATE_NEW ||
-00179        namemapptr->state == STATE_ASKING) {
-00180       if(namemapptr->state == STATE_ASKING) {
-00181         if(--namemapptr->tmr == 0) {
-00182           if(++namemapptr->retries == MAX_RETRIES) {
-00183             namemapptr->state = STATE_ERROR;
-00184             resolv_found(namemapptr->name, NULL);
-00185             continue;
-00186           }
-00187           namemapptr->tmr = namemapptr->retries;
-00188         } else {
-00189           /*      printf("Timer %d\n", namemapptr->tmr);*/
-00190           /* Its timer has not run out, so we move on to next
-00191              entry. */
-00192           continue;
-00193         }
-00194       } else {
-00195         namemapptr->state = STATE_ASKING;
-00196         namemapptr->tmr = 1;
-00197         namemapptr->retries = 0;
-00198       }
-00199       hdr = (struct dns_hdr *)uip_appdata;
-00200       memset(hdr, 0, sizeof(struct dns_hdr));
-00201       hdr->id = htons(i);
-00202       hdr->flags1 = DNS_FLAG1_RD;
-00203       hdr->numquestions = HTONS(1);
-00204       query = (char *)uip_appdata + 12;
-00205       nameptr = namemapptr->name;
-00206       --nameptr;
-00207       /* Convert hostname into suitable query format. */
-00208       do {
-00209         ++nameptr;
-00210         nptr = query;
-00211         ++query;
-00212         for(n = 0; *nameptr != '.' && *nameptr != 0; ++nameptr) {
-00213           *query = *nameptr;
-00214           ++query;
-00215           ++n;
-00216         }
-00217         *nptr = n;
-00218       } while(*nameptr != 0);
-00219       {
-00220         static unsigned char endquery[] =
-00221           {0,0,1,0,1};
-00222         memcpy(query, endquery, 5);
-00223       }
-00224       uip_udp_send((unsigned char)(query + 5 - (char *)uip_appdata));
-00225       break;
-00226     }
-00227   }
-00228 }
-00229 /*---------------------------------------------------------------------------*/
-00230 /** \internal
-00231  * Called when new UDP data arrives.
-00232  */
-00233 /*---------------------------------------------------------------------------*/
-00234 static void
-00235 newdata(void)
-00236 {
-00237   char *nameptr;
-00238   struct dns_answer *ans;
-00239   struct dns_hdr *hdr;
-00240   static u8_t nquestions, nanswers;
-00241   static u8_t i;
-00242   register struct namemap *namemapptr;
-00243   
-00244   hdr = (struct dns_hdr *)uip_appdata;
-00245   /*  printf("ID %d\n", htons(hdr->id));
-00246       printf("Query %d\n", hdr->flags1 & DNS_FLAG1_RESPONSE);
-00247       printf("Error %d\n", hdr->flags2 & DNS_FLAG2_ERR_MASK);
-00248       printf("Num questions %d, answers %d, authrr %d, extrarr %d\n",
-00249       htons(hdr->numquestions),
-00250       htons(hdr->numanswers),
-00251       htons(hdr->numauthrr),
-00252       htons(hdr->numextrarr));
-00253   */
-00254 
-00255   /* The ID in the DNS header should be our entry into the name
-00256      table. */
-00257   i = htons(hdr->id);
-00258   namemapptr = &names[i];
-00259   if(i < RESOLV_ENTRIES &&
-00260      namemapptr->state == STATE_ASKING) {
-00261 
-00262     /* This entry is now finished. */
-00263     namemapptr->state = STATE_DONE;
-00264     namemapptr->err = hdr->flags2 & DNS_FLAG2_ERR_MASK;
-00265 
-00266     /* Check for error. If so, call callback to inform. */
-00267     if(namemapptr->err != 0) {
-00268       namemapptr->state = STATE_ERROR;
-00269       resolv_found(namemapptr->name, NULL);
-00270       return;
-00271     }
-00272 
-00273     /* We only care about the question(s) and the answers. The authrr
-00274        and the extrarr are simply discarded. */
-00275     nquestions = htons(hdr->numquestions);
-00276     nanswers = htons(hdr->numanswers);
-00277 
-00278     /* Skip the name in the question. XXX: This should really be
-00279        checked agains the name in the question, to be sure that they
-00280        match. */
-00281     nameptr = parse_name((char *)uip_appdata + 12) + 4;
-00282 
-00283     while(nanswers > 0) {
-00284       /* The first byte in the answer resource record determines if it
-00285          is a compressed record or a normal one. */
-00286       if(*nameptr & 0xc0) {
-00287         /* Compressed name. */
-00288         nameptr +=2;
-00289         /*      printf("Compressed anwser\n");*/
-00290       } else {
-00291         /* Not compressed name. */
-00292         nameptr = parse_name((char *)nameptr);
-00293       }
-00294 
-00295       ans = (struct dns_answer *)nameptr;
-00296       /*      printf("Answer: type %x, class %x, ttl %x, length %x\n",
-00297              htons(ans->type), htons(ans->class), (htons(ans->ttl[0])
-00298              << 16) | htons(ans->ttl[1]), htons(ans->len));*/
-00299 
-00300       /* Check for IP address type and Internet class. Others are
-00301          discarded. */
-00302       if(ans->type == HTONS(1) &&
-00303          ans->class == HTONS(1) &&
-00304          ans->len == HTONS(4)) {
-00305         /*      printf("IP address %d.%d.%d.%d\n",
-00306                htons(ans->ipaddr[0]) >> 8,
-00307                htons(ans->ipaddr[0]) & 0xff,
-00308                htons(ans->ipaddr[1]) >> 8,
-00309                htons(ans->ipaddr[1]) & 0xff);*/
-00310         /* XXX: we should really check that this IP address is the one
-00311            we want. */
-00312         namemapptr->ipaddr[0] = ans->ipaddr[0];
-00313         namemapptr->ipaddr[1] = ans->ipaddr[1];
-00314         
-00315         resolv_found(namemapptr->name, namemapptr->ipaddr);
-00316         return;
-00317       } else {
-00318         nameptr = nameptr + 10 + htons(ans->len);
-00319       }
-00320       --nanswers;
-00321     }
-00322   }
-00323 
-00324 }
-00325 /*---------------------------------------------------------------------------*/
-00326 /** \internal
-00327  * The main UDP function.
-00328  */
-00329 /*---------------------------------------------------------------------------*/
-00330 void
-00331 resolv_appcall(void)
-00332 {
-00333   if(uip_udp_conn->rport == HTONS(53)) {
-00334     if(uip_poll()) {
-00335       check_entries();
-00336     }
-00337     if(uip_newdata()) {
-00338       newdata();
-00339     }
-00340   }
-00341 }
-00342 /*---------------------------------------------------------------------------*/
-00343 /**
-00344  * Queues a name so that a question for the name will be sent out.
-00345  *
-00346  * \param name The hostname that is to be queried.
-00347  */
-00348 /*---------------------------------------------------------------------------*/
-00349 void
-00350 resolv_query(char *name)
-00351 {
-00352   static u8_t i;
-00353   static u8_t lseq, lseqi;
-00354   register struct namemap *nameptr;
-00355       
-00356   lseq = lseqi = 0;
-00357   
-00358   for(i = 0; i < RESOLV_ENTRIES; ++i) {
-00359     nameptr = &names[i];
-00360     if(nameptr->state == STATE_UNUSED) {
-00361       break;
-00362     }
-00363     if(seqno - nameptr->seqno > lseq) {
-00364       lseq = seqno - nameptr->seqno;
-00365       lseqi = i;
-00366     }
-00367   }
-00368 
-00369   if(i == RESOLV_ENTRIES) {
-00370     i = lseqi;
-00371     nameptr = &names[i];
-00372   }
-00373 
-00374   /*  printf("Using entry %d\n", i);*/
-00375 
-00376   strcpy(nameptr->name, name);
-00377   nameptr->state = STATE_NEW;
-00378   nameptr->seqno = seqno;
-00379   ++seqno;
-00380 }
-00381 /*---------------------------------------------------------------------------*/
-00382 /**
-00383  * Look up a hostname in the array of known hostnames.
-00384  *
-00385  * \note This function only looks in the internal array of known
-00386  * hostnames, it does not send out a query for the hostname if none
-00387  * was found. The function resolv_query() can be used to send a query
-00388  * for a hostname.
-00389  *
-00390  * \return A pointer to a 4-byte representation of the hostname's IP
-00391  * address, or NULL if the hostname was not found in the array of
-00392  * hostnames.
-00393  */
-00394 /*---------------------------------------------------------------------------*/
-00395 u16_t *
-00396 resolv_lookup(char *name)
-00397 {
-00398   static u8_t i;
-00399   struct namemap *nameptr;
-00400   
-00401   /* Walk through the list to see if the name is in there. If it is
-00402      not, we return NULL. */
-00403   for(i = 0; i < RESOLV_ENTRIES; ++i) {
-00404     nameptr = &names[i];
-00405     if(nameptr->state == STATE_DONE &&
-00406        strcmp(name, nameptr->name) == 0) {
-00407       return nameptr->ipaddr;
-00408     }
-00409   }
-00410   return NULL;
-00411 }
-00412 /*---------------------------------------------------------------------------*/
-00413 /**
-00414  * Obtain the currently configured DNS server.
-00415  *
-00416  * \return A pointer to a 4-byte representation of the IP address of
-00417  * the currently configured DNS server or NULL if no DNS server has
-00418  * been configured.
-00419  */
-00420 /*---------------------------------------------------------------------------*/
-00421 u16_t *
-00422 resolv_getserver(void)
-00423 {
-00424   if(resolv_conn == NULL) {
-00425     return NULL;
-00426   }
-00427   return resolv_conn->ripaddr;
-00428 }
-00429 /*---------------------------------------------------------------------------*/
-00430 /**
-00431  * Configure which DNS server to use for queries.
-00432  *
-00433  * \param dnsserver A pointer to a 4-byte representation of the IP
-00434  * address of the DNS server to be configured.
-00435  */
-00436 /*---------------------------------------------------------------------------*/
-00437 void
-00438 resolv_conf(u16_t *dnsserver)
-00439 {
-00440   if(resolv_conn != NULL) {
-00441     uip_udp_remove(resolv_conn);
-00442   }
-00443   
-00444   resolv_conn = uip_udp_new(dnsserver, HTONS(53));
-00445 }
-00446 /*---------------------------------------------------------------------------*/
-00447 /**
-00448  * Initalize the resolver.
-00449  */
-00450 /*---------------------------------------------------------------------------*/
-00451 void
-00452 resolv_init(void)
-00453 {
-00454   static u8_t i;
-00455   
-00456   for(i = 0; i < RESOLV_ENTRIES; ++i) {
-00457     names[i].state = STATE_DONE;
-00458   }
-00459 
-00460 }
-00461 /*---------------------------------------------------------------------------*/
-00462 
-00463 /** @} */
-00464 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00047.html b/components/net/uip/doc/html/a00047.html deleted file mode 100644 index 76d0ccc9c5b0df6862337ee595071671a1d6454b..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00047.html +++ /dev/null @@ -1,95 +0,0 @@ - - -uIP 1.0: resolv.h - - - - - -

resolv.h

00001 /**
-00002  * \addtogroup resolv
-00003  * @{
-00004  */
-00005 /**
-00006  * \file
-00007  * DNS resolver code header file.
-00008  * \author Adam Dunkels <adam@dunkels.com>
-00009  */
-00010 
-00011 /*
-00012  * Copyright (c) 2002-2003, Adam Dunkels.
-00013  * All rights reserved.
-00014  *
-00015  * Redistribution and use in source and binary forms, with or without
-00016  * modification, are permitted provided that the following conditions
-00017  * are met:
-00018  * 1. Redistributions of source code must retain the above copyright
-00019  *    notice, this list of conditions and the following disclaimer.
-00020  * 2. Redistributions in binary form must reproduce the above copyright
-00021  *    notice, this list of conditions and the following disclaimer in the
-00022  *    documentation and/or other materials provided with the distribution.
-00023  * 3. The name of the author may not be used to endorse or promote
-00024  *    products derived from this software without specific prior
-00025  *    written permission.
-00026  *
-00027  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00028  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00029  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00030  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00031  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00032  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00033  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00034  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00035  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00036  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00037  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00038  *
-00039  * This file is part of the uIP TCP/IP stack.
-00040  *
-00041  * $Id: resolv.h,v 1.4 2006/06/11 21:46:37 adam Exp $
-00042  *
-00043  */
-00044 #ifndef __RESOLV_H__
-00045 #define __RESOLV_H__
-00046 
-00047 typedef int uip_udp_appstate_t;
-00048 void resolv_appcall(void);
-00049 #define UIP_UDP_APPCALL resolv_appcall
-00050 
-00051 #include "uipopt.h"
-00052 
-00053 /**
-00054  * Callback function which is called when a hostname is found.
-00055  *
-00056  * This function must be implemented by the module that uses the DNS
-00057  * resolver. It is called when a hostname is found, or when a hostname
-00058  * was not found.
-00059  *
-00060  * \param name A pointer to the name that was looked up.  \param
-00061  * ipaddr A pointer to a 4-byte array containing the IP address of the
-00062  * hostname, or NULL if the hostname could not be found.
-00063  */
-00064 void resolv_found(char *name, u16_t *ipaddr);
-00065 
-00066 /* Functions. */
-00067 void resolv_conf(u16_t *dnsserver);
-00068 u16_t *resolv_getserver(void);
-00069 void resolv_init(void);
-00070 u16_t *resolv_lookup(char *name);
-00071 void resolv_query(char *name);
-00072 
-00073 #endif /* __RESOLV_H__ */
-00074 
-00075 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00048.html b/components/net/uip/doc/html/a00048.html deleted file mode 100644 index d19bf1353567a95fb555a2520eb98d73d4310c81..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00048.html +++ /dev/null @@ -1,376 +0,0 @@ - - -uIP 1.0: dhcpc.c - - - - - -

dhcpc.c

00001 /*
-00002  * Copyright (c) 2005, Swedish Institute of Computer Science
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * @(#)$Id: dhcpc.c,v 1.2 2006/06/11 21:46:37 adam Exp $
-00032  */
-00033 
-00034 #include <stdio.h>
-00035 #include <string.h>
-00036 
-00037 #include "uip.h"
-00038 #include "dhcpc.h"
-00039 #include "timer.h"
-00040 #include "pt.h"
-00041 
-00042 #define STATE_INITIAL         0
-00043 #define STATE_SENDING         1
-00044 #define STATE_OFFER_RECEIVED  2
-00045 #define STATE_CONFIG_RECEIVED 3
-00046 
-00047 static struct dhcpc_state s;
-00048 
-00049 struct dhcp_msg {
-00050   u8_t op, htype, hlen, hops;
-00051   u8_t xid[4];
-00052   u16_t secs, flags;
-00053   u8_t ciaddr[4];
-00054   u8_t yiaddr[4];
-00055   u8_t siaddr[4];
-00056   u8_t giaddr[4];
-00057   u8_t chaddr[16];
-00058 #ifndef UIP_CONF_DHCP_LIGHT
-00059   u8_t sname[64];
-00060   u8_t file[128];
-00061 #endif
-00062   u8_t options[312];
-00063 };
-00064 
-00065 #define BOOTP_BROADCAST 0x8000
-00066 
-00067 #define DHCP_REQUEST        1
-00068 #define DHCP_REPLY          2
-00069 #define DHCP_HTYPE_ETHERNET 1
-00070 #define DHCP_HLEN_ETHERNET  6
-00071 #define DHCP_MSG_LEN      236
-00072 
-00073 #define DHCPC_SERVER_PORT  67
-00074 #define DHCPC_CLIENT_PORT  68
-00075 
-00076 #define DHCPDISCOVER  1
-00077 #define DHCPOFFER     2
-00078 #define DHCPREQUEST   3
-00079 #define DHCPDECLINE   4
-00080 #define DHCPACK       5
-00081 #define DHCPNAK       6
-00082 #define DHCPRELEASE   7
-00083 
-00084 #define DHCP_OPTION_SUBNET_MASK   1
-00085 #define DHCP_OPTION_ROUTER        3
-00086 #define DHCP_OPTION_DNS_SERVER    6
-00087 #define DHCP_OPTION_REQ_IPADDR   50
-00088 #define DHCP_OPTION_LEASE_TIME   51
-00089 #define DHCP_OPTION_MSG_TYPE     53
-00090 #define DHCP_OPTION_SERVER_ID    54
-00091 #define DHCP_OPTION_REQ_LIST     55
-00092 #define DHCP_OPTION_END         255
-00093 
-00094 static const u8_t xid[4] = {0xad, 0xde, 0x12, 0x23};
-00095 static const u8_t magic_cookie[4] = {99, 130, 83, 99};
-00096 /*---------------------------------------------------------------------------*/
-00097 static u8_t *
-00098 add_msg_type(u8_t *optptr, u8_t type)
-00099 {
-00100   *optptr++ = DHCP_OPTION_MSG_TYPE;
-00101   *optptr++ = 1;
-00102   *optptr++ = type;
-00103   return optptr;
-00104 }
-00105 /*---------------------------------------------------------------------------*/
-00106 static u8_t *
-00107 add_server_id(u8_t *optptr)
-00108 {
-00109   *optptr++ = DHCP_OPTION_SERVER_ID;
-00110   *optptr++ = 4;
-00111   memcpy(optptr, s.serverid, 4);
-00112   return optptr + 4;
-00113 }
-00114 /*---------------------------------------------------------------------------*/
-00115 static u8_t *
-00116 add_req_ipaddr(u8_t *optptr)
-00117 {
-00118   *optptr++ = DHCP_OPTION_REQ_IPADDR;
-00119   *optptr++ = 4;
-00120   memcpy(optptr, s.ipaddr, 4);
-00121   return optptr + 4;
-00122 }
-00123 /*---------------------------------------------------------------------------*/
-00124 static u8_t *
-00125 add_req_options(u8_t *optptr)
-00126 {
-00127   *optptr++ = DHCP_OPTION_REQ_LIST;
-00128   *optptr++ = 3;
-00129   *optptr++ = DHCP_OPTION_SUBNET_MASK;
-00130   *optptr++ = DHCP_OPTION_ROUTER;
-00131   *optptr++ = DHCP_OPTION_DNS_SERVER;
-00132   return optptr;
-00133 }
-00134 /*---------------------------------------------------------------------------*/
-00135 static u8_t *
-00136 add_end(u8_t *optptr)
-00137 {
-00138   *optptr++ = DHCP_OPTION_END;
-00139   return optptr;
-00140 }
-00141 /*---------------------------------------------------------------------------*/
-00142 static void
-00143 create_msg(register struct dhcp_msg *m)
-00144 {
-00145   m->op = DHCP_REQUEST;
-00146   m->htype = DHCP_HTYPE_ETHERNET;
-00147   m->hlen = s.mac_len;
-00148   m->hops = 0;
-00149   memcpy(m->xid, xid, sizeof(m->xid));
-00150   m->secs = 0;
-00151   m->flags = HTONS(BOOTP_BROADCAST); /*  Broadcast bit. */
-00152   /*  uip_ipaddr_copy(m->ciaddr, uip_hostaddr);*/
-00153   memcpy(m->ciaddr, uip_hostaddr, sizeof(m->ciaddr));
-00154   memset(m->yiaddr, 0, sizeof(m->yiaddr));
-00155   memset(m->siaddr, 0, sizeof(m->siaddr));
-00156   memset(m->giaddr, 0, sizeof(m->giaddr));
-00157   memcpy(m->chaddr, s.mac_addr, s.mac_len);
-00158   memset(&m->chaddr[s.mac_len], 0, sizeof(m->chaddr) - s.mac_len);
-00159 #ifndef UIP_CONF_DHCP_LIGHT
-00160   memset(m->sname, 0, sizeof(m->sname));
-00161   memset(m->file, 0, sizeof(m->file));
-00162 #endif
-00163 
-00164   memcpy(m->options, magic_cookie, sizeof(magic_cookie));
-00165 }
-00166 /*---------------------------------------------------------------------------*/
-00167 static void
-00168 send_discover(void)
-00169 {
-00170   u8_t *end;
-00171   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
-00172 
-00173   create_msg(m);
-00174 
-00175   end = add_msg_type(&m->options[4], DHCPDISCOVER);
-00176   end = add_req_options(end);
-00177   end = add_end(end);
-00178 
-00179   uip_send(uip_appdata, end - (u8_t *)uip_appdata);
-00180 }
-00181 /*---------------------------------------------------------------------------*/
-00182 static void
-00183 send_request(void)
-00184 {
-00185   u8_t *end;
-00186   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
-00187 
-00188   create_msg(m);
-00189   
-00190   end = add_msg_type(&m->options[4], DHCPREQUEST);
-00191   end = add_server_id(end);
-00192   end = add_req_ipaddr(end);
-00193   end = add_end(end);
-00194   
-00195   uip_send(uip_appdata, end - (u8_t *)uip_appdata);
-00196 }
-00197 /*---------------------------------------------------------------------------*/
-00198 static u8_t
-00199 parse_options(u8_t *optptr, int len)
-00200 {
-00201   u8_t *end = optptr + len;
-00202   u8_t type = 0;
-00203 
-00204   while(optptr < end) {
-00205     switch(*optptr) {
-00206     case DHCP_OPTION_SUBNET_MASK:
-00207       memcpy(s.netmask, optptr + 2, 4);
-00208       break;
-00209     case DHCP_OPTION_ROUTER:
-00210       memcpy(s.default_router, optptr + 2, 4);
-00211       break;
-00212     case DHCP_OPTION_DNS_SERVER:
-00213       memcpy(s.dnsaddr, optptr + 2, 4);
-00214       break;
-00215     case DHCP_OPTION_MSG_TYPE:
-00216       type = *(optptr + 2);
-00217       break;
-00218     case DHCP_OPTION_SERVER_ID:
-00219       memcpy(s.serverid, optptr + 2, 4);
-00220       break;
-00221     case DHCP_OPTION_LEASE_TIME:
-00222       memcpy(s.lease_time, optptr + 2, 4);
-00223       break;
-00224     case DHCP_OPTION_END:
-00225       return type;
-00226     }
-00227 
-00228     optptr += optptr[1] + 2;
-00229   }
-00230   return type;
-00231 }
-00232 /*---------------------------------------------------------------------------*/
-00233 static u8_t
-00234 parse_msg(void)
-00235 {
-00236   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
-00237   
-00238   if(m->op == DHCP_REPLY &&
-00239      memcmp(m->xid, xid, sizeof(xid)) == 0 &&
-00240      memcmp(m->chaddr, s.mac_addr, s.mac_len) == 0) {
-00241     memcpy(s.ipaddr, m->yiaddr, 4);
-00242     return parse_options(&m->options[4], uip_datalen());
-00243   }
-00244   return 0;
-00245 }
-00246 /*---------------------------------------------------------------------------*/
-00247 static
-00248 PT_THREAD(handle_dhcp(void))
-00249 {
-00250   PT_BEGIN(&s.pt);
-00251   
-00252   /* try_again:*/
-00253   s.state = STATE_SENDING;
-00254   s.ticks = CLOCK_SECOND;
-00255 
-00256   do {
-00257     send_discover();
-00258     timer_set(&s.timer, s.ticks);
-00259     PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
-00260 
-00261     if(uip_newdata() && parse_msg() == DHCPOFFER) {
-00262       s.state = STATE_OFFER_RECEIVED;
-00263       break;
-00264     }
-00265 
-00266     if(s.ticks < CLOCK_SECOND * 60) {
-00267       s.ticks *= 2;
-00268     }
-00269   } while(s.state != STATE_OFFER_RECEIVED);
-00270   
-00271   s.ticks = CLOCK_SECOND;
-00272 
-00273   do {
-00274     send_request();
-00275     timer_set(&s.timer, s.ticks);
-00276     PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
-00277 
-00278     if(uip_newdata() && parse_msg() == DHCPACK) {
-00279       s.state = STATE_CONFIG_RECEIVED;
-00280       break;
-00281     }
-00282 
-00283     if(s.ticks <= CLOCK_SECOND * 10) {
-00284       s.ticks += CLOCK_SECOND;
-00285     } else {
-00286       PT_RESTART(&s.pt);
-00287     }
-00288   } while(s.state != STATE_CONFIG_RECEIVED);
-00289   
-00290 #if 0
-00291   printf("Got IP address %d.%d.%d.%d\n",
-00292          uip_ipaddr1(s.ipaddr), uip_ipaddr2(s.ipaddr),
-00293          uip_ipaddr3(s.ipaddr), uip_ipaddr4(s.ipaddr));
-00294   printf("Got netmask %d.%d.%d.%d\n",
-00295          uip_ipaddr1(s.netmask), uip_ipaddr2(s.netmask),
-00296          uip_ipaddr3(s.netmask), uip_ipaddr4(s.netmask));
-00297   printf("Got DNS server %d.%d.%d.%d\n",
-00298          uip_ipaddr1(s.dnsaddr), uip_ipaddr2(s.dnsaddr),
-00299          uip_ipaddr3(s.dnsaddr), uip_ipaddr4(s.dnsaddr));
-00300   printf("Got default router %d.%d.%d.%d\n",
-00301          uip_ipaddr1(s.default_router), uip_ipaddr2(s.default_router),
-00302          uip_ipaddr3(s.default_router), uip_ipaddr4(s.default_router));
-00303   printf("Lease expires in %ld seconds\n",
-00304          ntohs(s.lease_time[0])*65536ul + ntohs(s.lease_time[1]));
-00305 #endif
-00306 
-00307   dhcpc_configured(&s);
-00308   
-00309   /*  timer_stop(&s.timer);*/
-00310 
-00311   /*
-00312    * PT_END restarts the thread so we do this instead. Eventually we
-00313    * should reacquire expired leases here.
-00314    */
-00315   while(1) {
-00316     PT_YIELD(&s.pt);
-00317   }
-00318 
-00319   PT_END(&s.pt);
-00320 }
-00321 /*---------------------------------------------------------------------------*/
-00322 void
-00323 dhcpc_init(const void *mac_addr, int mac_len)
-00324 {
-00325   uip_ipaddr_t addr;
-00326   
-00327   s.mac_addr = mac_addr;
-00328   s.mac_len  = mac_len;
-00329 
-00330   s.state = STATE_INITIAL;
-00331   uip_ipaddr(addr, 255,255,255,255);
-00332   s.conn = uip_udp_new(&addr, HTONS(DHCPC_SERVER_PORT));
-00333   if(s.conn != NULL) {
-00334     uip_udp_bind(s.conn, HTONS(DHCPC_CLIENT_PORT));
-00335   }
-00336   PT_INIT(&s.pt);
-00337 }
-00338 /*---------------------------------------------------------------------------*/
-00339 void
-00340 dhcpc_appcall(void)
-00341 {
-00342   handle_dhcp();
-00343 }
-00344 /*---------------------------------------------------------------------------*/
-00345 void
-00346 dhcpc_request(void)
-00347 {
-00348   u16_t ipaddr[2];
-00349   
-00350   if(s.state == STATE_INITIAL) {
-00351     uip_ipaddr(ipaddr, 0,0,0,0);
-00352     uip_sethostaddr(ipaddr);
-00353     /*    handle_dhcp(PROCESS_EVENT_NONE, NULL);*/
-00354   }
-00355 }
-00356 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00049.html b/components/net/uip/doc/html/a00049.html deleted file mode 100644 index 5b5a7c036836a9b0f4d497221b96219445e90235..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00049.html +++ /dev/null @@ -1,88 +0,0 @@ - - -uIP 1.0: dhcpc.h - - - - - -

dhcpc.h

00001 /*
-00002  * Copyright (c) 2005, Swedish Institute of Computer Science
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * @(#)$Id: dhcpc.h,v 1.3 2006/06/11 21:46:37 adam Exp $
-00032  */
-00033 #ifndef __DHCPC_H__
-00034 #define __DHCPC_H__
-00035 
-00036 #include "timer.h"
-00037 #include "pt.h"
-00038 
-00039 struct dhcpc_state {
-00040   struct pt pt;
-00041   char state;
-00042   struct uip_udp_conn *conn;
-00043   struct timer timer;
-00044   u16_t ticks;
-00045   const void *mac_addr;
-00046   int mac_len;
-00047   
-00048   u8_t serverid[4];
-00049 
-00050   u16_t lease_time[2];
-00051   u16_t ipaddr[2];
-00052   u16_t netmask[2];
-00053   u16_t dnsaddr[2];
-00054   u16_t default_router[2];
-00055 };
-00056 
-00057 void dhcpc_init(const void *mac_addr, int mac_len);
-00058 void dhcpc_request(void);
-00059 
-00060 void dhcpc_appcall(void);
-00061 
-00062 void dhcpc_configured(const struct dhcpc_state *s);
-00063 
-00064 typedef struct dhcpc_state uip_udp_appstate_t;
-00065 #define UIP_UDP_APPCALL dhcpc_appcall
-00066 
-00067 
-00068 #endif /* __DHCPC_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00050.html b/components/net/uip/doc/html/a00050.html deleted file mode 100644 index ddfa65690d636e5aeeb93a56e6b9e15c5a713cf0..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00050.html +++ /dev/null @@ -1,177 +0,0 @@ - - -uIP 1.0: uip-conf.h - - - - - -

uip-conf.h

00001 /**
-00002  * \addtogroup uipopt
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \name Project-specific configuration options
-00008  * @{
-00009  *
-00010  * uIP has a number of configuration options that can be overridden
-00011  * for each project. These are kept in a project-specific uip-conf.h
-00012  * file and all configuration names have the prefix UIP_CONF.
-00013  */
-00014 
-00015 /*
-00016  * Copyright (c) 2006, Swedish Institute of Computer Science.
-00017  * All rights reserved.
-00018  *
-00019  * Redistribution and use in source and binary forms, with or without
-00020  * modification, are permitted provided that the following conditions
-00021  * are met:
-00022  * 1. Redistributions of source code must retain the above copyright
-00023  *    notice, this list of conditions and the following disclaimer.
-00024  * 2. Redistributions in binary form must reproduce the above copyright
-00025  *    notice, this list of conditions and the following disclaimer in the
-00026  *    documentation and/or other materials provided with the distribution.
-00027  * 3. Neither the name of the Institute nor the names of its contributors
-00028  *    may be used to endorse or promote products derived from this software
-00029  *    without specific prior written permission.
-00030  *
-00031  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00032  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00033  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00034  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00035  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00036  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00037  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00038  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00039  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00040  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00041  * SUCH DAMAGE.
-00042  *
-00043  * This file is part of the uIP TCP/IP stack
-00044  *
-00045  * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $
-00046  */
-00047 
-00048 /**
-00049  * \file
-00050  *         An example uIP configuration file
-00051  * \author
-00052  *         Adam Dunkels <adam@sics.se>
-00053  */
-00054 
-00055 #ifndef __UIP_CONF_H__
-00056 #define __UIP_CONF_H__
-00057 
-00058 #include <inttypes.h>
-00059 
-00060 /**
-00061  * 8 bit datatype
-00062  *
-00063  * This typedef defines the 8-bit type used throughout uIP.
-00064  *
-00065  * \hideinitializer
-00066  */
-00067 typedef uint8_t u8_t;
-00068 
-00069 /**
-00070  * 16 bit datatype
-00071  *
-00072  * This typedef defines the 16-bit type used throughout uIP.
-00073  *
-00074  * \hideinitializer
-00075  */
-00076 typedef uint16_t u16_t;
-00077 
-00078 /**
-00079  * Statistics datatype
-00080  *
-00081  * This typedef defines the dataype used for keeping statistics in
-00082  * uIP.
-00083  *
-00084  * \hideinitializer
-00085  */
-00086 typedef unsigned short uip_stats_t;
-00087 
-00088 /**
-00089  * Maximum number of TCP connections.
-00090  *
-00091  * \hideinitializer
-00092  */
-00093 #define UIP_CONF_MAX_CONNECTIONS 40
-00094 
-00095 /**
-00096  * Maximum number of listening TCP ports.
-00097  *
-00098  * \hideinitializer
-00099  */
-00100 #define UIP_CONF_MAX_LISTENPORTS 40
-00101 
-00102 /**
-00103  * uIP buffer size.
-00104  *
-00105  * \hideinitializer
-00106  */
-00107 #define UIP_CONF_BUFFER_SIZE     420
-00108 
-00109 /**
-00110  * CPU byte order.
-00111  *
-00112  * \hideinitializer
-00113  */
-00114 #define UIP_CONF_BYTE_ORDER      LITTLE_ENDIAN
-00115 
-00116 /**
-00117  * Logging on or off
-00118  *
-00119  * \hideinitializer
-00120  */
-00121 #define UIP_CONF_LOGGING         1
-00122 
-00123 /**
-00124  * UDP support on or off
-00125  *
-00126  * \hideinitializer
-00127  */
-00128 #define UIP_CONF_UDP             0
-00129 
-00130 /**
-00131  * UDP checksums on or off
-00132  *
-00133  * \hideinitializer
-00134  */
-00135 #define UIP_CONF_UDP_CHECKSUMS   1
-00136 
-00137 /**
-00138  * uIP statistics on or off
-00139  *
-00140  * \hideinitializer
-00141  */
-00142 #define UIP_CONF_STATISTICS      1
-00143 
-00144 /* Here we include the header file for the application(s) we use in
-00145    our project. */
-00146 /*#include "smtp.h"*/
-00147 /*#include "hello-world.h"*/
-00148 /*#include "telnetd.h"*/
-00149 #include "webserver.h"
-00150 /*#include "dhcpc.h"*/
-00151 /*#include "resolv.h"*/
-00152 /*#include "webclient.h"*/
-00153 
-00154 #endif /* __UIP_CONF_H__ */
-00155 
-00156 /** @} */
-00157 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00051.html b/components/net/uip/doc/html/a00051.html deleted file mode 100644 index e9197ffefa9e6406423b69b3840bfc8c362b3e3a..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00051.html +++ /dev/null @@ -1,138 +0,0 @@ - - -uIP 1.0: uip-code-style.c - - - - - -

uip-code-style.c

00001 /* This is the official code style of uIP. */
-00002 
-00003 /**
-00004  * \defgroup codestyle Coding style
-00005  *
-00006  * This is how a Doxygen module is documented - start with a \defgroup
-00007  * Doxygen keyword at the beginning of the file to define a module,
-00008  * and use the \addtogroup Doxygen keyword in all other files that
-00009  * belong to the same module. Typically, the \defgroup is placed in
-00010  * the .h file and \addtogroup in the .c file.
-00011  *
-00012  * @{
-00013  */
-00014 
-00015 /**
-00016  * \file
-00017  *         A brief description of what this file is.
-00018  * \author
-00019  *         Adam Dunkels <adam@sics.se>
-00020  *
-00021  *         Every file that is part of a documented module has to have
-00022  *         a \file block, else it will not show up in the Doxygen
-00023  *         "Modules" * section.
-00024  */
-00025 
-00026 /* Single line comments look like this. */
-00027 
-00028 /*
-00029  * Multi-line comments look like this. Comments should prefferably be
-00030  * full sentences, filled to look like real paragraphs.
-00031  */
-00032 
-00033 #include "uip.h"
-00034 
-00035 /*
-00036  * Make sure that non-global variables are all maked with the static
-00037  * keyword. This keeps the size of the symbol table down.
-00038  */
-00039 static int flag;
-00040 
-00041 /*
-00042  * All variables and functions that are visible outside of the file
-00043  * should have the module name prepended to them. This makes it easy
-00044  * to know where to look for function and variable definitions.
-00045  *
-00046  * Put dividers (a single-line comment consisting only of dashes)
-00047  * between functions.
-00048  */
-00049 /*---------------------------------------------------------------------------*/
-00050 /**
-00051  * \brief      Use Doxygen documentation for functions.
-00052  * \param c    Briefly describe all parameters.
-00053  * \return     Briefly describe the return value.
-00054  * \retval 0   Functions that return a few specified values
-00055  * \retval 1   can use the \retval keyword instead of \return.
-00056  *
-00057  *             Put a longer description of what the function does
-00058  *             after the preamble of Doxygen keywords.
-00059  *
-00060  *             This template should always be used to document
-00061  *             functions. The text following the introduction is used
-00062  *             as the function's documentation.
-00063  *
-00064  *             Function prototypes have the return type on one line,
-00065  *             the name and arguments on one line (with no space
-00066  *             between the name and the first parenthesis), followed
-00067  *             by a single curly bracket on its own line.
-00068  */
-00069 void
-00070 code_style_example_function(void)
-00071 {
-00072   /*
-00073    * Local variables should always be declared at the start of the
-00074    * function.
-00075    */
-00076   int i;                   /* Use short variable names for loop
-00077                               counters. */
-00078 
-00079   /*
-00080    * There should be no space between keywords and the first
-00081    * parenthesis. There should be spaces around binary operators, no
-00082    * spaces between a unary operator and its operand.
-00083    *
-00084    * Curly brackets following for(), if(), do, and case() statements
-00085    * should follow the statement on the same line.
-00086    */
-00087   for(i = 0; i < 10; ++i) {
-00088     /*
-00089      * Always use full blocks (curly brackets) after if(), for(), and
-00090      * while() statements, even though the statement is a single line
-00091      * of code. This makes the code easier to read and modifications
-00092      * are less error prone.
-00093      */
-00094     if(i == c) {
-00095       return c;           /* No parentesis around return values. */
-00096     } else {              /* The else keyword is placed inbetween
-00097                              curly brackers, always on its own line. */
-00098       c++;
-00099     }
-00100   }
-00101 }
-00102 /*---------------------------------------------------------------------------*/
-00103 /*
-00104  * Static (non-global) functions do not need Doxygen comments. The
-00105  * name should not be prepended with the module name - doing so would
-00106  * create confusion.
-00107  */
-00108 static void
-00109 an_example_function(void)
-00110 {
-00111   
-00112 }
-00113 /*---------------------------------------------------------------------------*/
-00114 
-00115 /* The following stuff ends the \defgroup block at the beginning of
-00116    the file: */
-00117 
-00118 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00077.html b/components/net/uip/doc/html/a00077.html deleted file mode 100644 index 824f4391339db1ba59a8fcf7e3e35e9c3bb3ee2d..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00077.html +++ /dev/null @@ -1,78 +0,0 @@ - - -uIP 1.0: dhcpc_state Struct Reference - - - - - - -

dhcpc_state Struct Reference


Detailed Description

-
Examples:
- -

-dhcpc.c, and dhcpc.h.

-

- -

-Definition at line 39 of file dhcpc.h.

LocalRemoteStateRetransmissionsTimerFlags
- - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Fields

-pt pt
-char state
-uip_udp_connconn
-timer timer
-u16_t ticks
-const void * mac_addr
-int mac_len
-u8_t serverid [4]
-u16_t lease_time [2]
-u16_t ipaddr [2]
-u16_t netmask [2]
-u16_t dnsaddr [2]
-u16_t default_router [2]
-
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00078.html b/components/net/uip/doc/html/a00078.html deleted file mode 100644 index ef60451c248ec6c07e19c734633e1a32d8de8394..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00078.html +++ /dev/null @@ -1,51 +0,0 @@ - - -uIP 1.0: hello_world_state Struct Reference - - - - - - -

hello_world_state Struct Reference
- -[Hello, world] -


Detailed Description

-
Examples:
- -

-hello-world.c, and hello-world.h.

-

- -

-Definition at line 36 of file hello-world.h. - - - - - - - - -

Data Fields

-psock p
-char inputbuffer [10]
-char name [40]
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00079.html b/components/net/uip/doc/html/a00079.html deleted file mode 100644 index 2701b54928fc0830f2924949d7190205d938a442..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00079.html +++ /dev/null @@ -1,45 +0,0 @@ - - -uIP 1.0: httpd_cgi_call Struct Reference - - - - - - -

httpd_cgi_call Struct Reference
- -[Web server] -


Detailed Description

- -

- -

-Definition at line 60 of file httpd-cgi.h. - - - - - - -

Data Fields

-const char * name
-const httpd_cgifunction function
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00080.html b/components/net/uip/doc/html/a00080.html deleted file mode 100644 index 737ea1318df3107e6864d703b805cb4521ec3051..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00080.html +++ /dev/null @@ -1,69 +0,0 @@ - - -uIP 1.0: httpd_state Struct Reference - - - - - - -

httpd_state Struct Reference


Detailed Description

- -

- -

-Definition at line 41 of file httpd.h. - - - - - - - - - - - - - - - - - - - - - - - - -

Data Fields

-unsigned char timer
-psock sin sout
-pt outputpt scriptpt
-char inputbuf [50]
-char filename [20]
-char state
-httpd_fs_file file
-int len
-char * scriptptr
-int scriptlen
-unsigned short count
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00081.html b/components/net/uip/doc/html/a00081.html deleted file mode 100644 index 821207bf72993971983bbf34902e9269ffcc3e05..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00081.html +++ /dev/null @@ -1,51 +0,0 @@ - - -uIP 1.0: memb_blocks Struct Reference - - - - - - -

memb_blocks Struct Reference
- -[Memory block management functions] -


Detailed Description

- -

- -

-Definition at line 105 of file memb.h. - - - - - - - - - - -

Data Fields

-unsigned short size
-unsigned short num
-char * count
-void * mem
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00082.html b/components/net/uip/doc/html/a00082.html deleted file mode 100644 index 0da540dd5de99120fff2585d11522dbe0c3a1ecd..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00082.html +++ /dev/null @@ -1,73 +0,0 @@ - - -uIP 1.0: psock Struct Reference - - - - - - -

psock Struct Reference
- -[Protosockets library] -

#include <psock.h> -

-


Detailed Description

-The representation of a protosocket. -

-The protosocket structrure is an opaque structure with no user-visible elements.

Examples:
- -

-hello-world.h.

-

- -

-Definition at line 106 of file psock.h. - - - - - - - - - - - - - - - - - - - - -

Data Fields

-pt pt psockpt
-const u8_tsendptr
-u8_treadptr
-char * bufptr
-u16_t sendlen
-u16_t readlen
-psock_buf buf
-unsigned int bufsize
-unsigned char state
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00083.html b/components/net/uip/doc/html/a00083.html deleted file mode 100644 index 2cfc0334835f9b20a62e740c5d62a9b33464be68..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00083.html +++ /dev/null @@ -1,45 +0,0 @@ - - -uIP 1.0: psock_buf Struct Reference - - - - - - -

psock_buf Struct Reference
- -[Protosockets library] -


Detailed Description

- -

- -

-Definition at line 95 of file psock.h. - - - - - - -

Data Fields

-u8_tptr
-unsigned short left
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00084.html b/components/net/uip/doc/html/a00084.html deleted file mode 100644 index 7a7741fdffd2526c3ad8a92325fe5d8262836d1f..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00084.html +++ /dev/null @@ -1,45 +0,0 @@ - - -uIP 1.0: pt Struct Reference - - - - - - -

pt Struct Reference
- -[Protothreads] -


Detailed Description

-
Examples:
- -

-dhcpc.h.

-

- -

-Definition at line 54 of file pt.h. - - - - -

Data Fields

-lc_t lc
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00085.html b/components/net/uip/doc/html/a00085.html deleted file mode 100644 index 4226e0ecbc15b18dd90b5b1b8f0296e7aca38f4e..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00085.html +++ /dev/null @@ -1,69 +0,0 @@ - - -uIP 1.0: smtp_state Struct Reference - - - - - - -

smtp_state Struct Reference
- -[SMTP E-mail sender] -


Detailed Description

-
Examples:
- -

-hello-world.h, smtp.c, and smtp.h.

-

- -

-Definition at line 81 of file smtp.h. - - - - - - - - - - - - - - - - - - - - -

Data Fields

-u8_t state
-char * to
-char * from
-char * subject
-char * msg
-u16_t msglen
-u16_t sentlen
-u16_t textlen
-u16_t sendptr
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00086.html b/components/net/uip/doc/html/a00086.html deleted file mode 100644 index 1611163d6ffebd5ad70f5a625e351a3123eda26b..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00086.html +++ /dev/null @@ -1,54 +0,0 @@ - - -uIP 1.0: telnetd_state Struct Reference - - - - - - -

telnetd_state Struct Reference


Detailed Description

-
Examples:
- -

-telnetd.c, and telnetd.h.

-

- -

-Definition at line 49 of file telnetd.h. - - - - - - - - - - - - -

Data Fields

-char * lines [TELNETD_CONF_NUMLINES]
-char buf [TELNETD_CONF_LINELEN]
-char bufptr
-u8_t numsent
-u8_t state
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00087.html b/components/net/uip/doc/html/a00087.html deleted file mode 100644 index 3b2fec3c87efb3d04b6768a2f966c8ec07a813a5..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00087.html +++ /dev/null @@ -1,52 +0,0 @@ - - -uIP 1.0: timer Struct Reference - - - - - - -

timer Struct Reference
- -[Timer library] -

#include <timer.h> -

-


Detailed Description

-A timer. -

-This structure is used for declaring a timer. The timer must be set with timer_set() before it can be used.

Examples:
- -

-dhcpc.h, example-mainloop-with-arp.c, example-mainloop-without-arp.c, and webclient.h.

-

- -

-Definition at line 74 of file timer.h. - - - - - - -

Data Fields

-clock_time_t start
-clock_time_t interval
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00088.html b/components/net/uip/doc/html/a00088.html deleted file mode 100644 index 7ca46ae6a441436b8e3e47aac8efa752fa26ee71..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00088.html +++ /dev/null @@ -1,103 +0,0 @@ - - -uIP 1.0: uip_conn Struct Reference - - - - - - -

uip_conn Struct Reference
- -[The uIP TCP/IP stack] -

#include <uip.h> -

-


Detailed Description

-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. -

- -

-Definition at line 1153 of file uip.h. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Fields

-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.
-uip_tcp_appstate_t appstate
 The application state.
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00089.html b/components/net/uip/doc/html/a00089.html deleted file mode 100644 index d935ccddff9340d44de5521c9197e5cdc7bf1901..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00089.html +++ /dev/null @@ -1,44 +0,0 @@ - - -uIP 1.0: uip_eth_addr Struct Reference - - - - - - -

uip_eth_addr Struct Reference
- -[The uIP TCP/IP stack] -

#include <uip.h> -

-


Detailed Description

-Representation of a 48-bit Ethernet address. -

- -

-Definition at line 1542 of file uip.h. - - - - -

Data Fields

-u8_t addr [6]
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00090.html b/components/net/uip/doc/html/a00090.html deleted file mode 100644 index ee37ca509971305f786784f8be594ece372f02ae..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00090.html +++ /dev/null @@ -1,50 +0,0 @@ - - -uIP 1.0: uip_eth_hdr Struct Reference - - - - - - -

uip_eth_hdr Struct Reference
- -[uIP Address Resolution Protocol] -

#include <uip_arp.h> -

-


Detailed Description

-The Ethernet header. -

- -

-Definition at line 63 of file uip_arp.h. - - - - - - - - -

Data Fields

-uip_eth_addr dest
-uip_eth_addr src
-u16_t type
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00091.html b/components/net/uip/doc/html/a00091.html deleted file mode 100644 index 63a2a523c5ed14eb264e56c442948fef74b3beba..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00091.html +++ /dev/null @@ -1,84 +0,0 @@ - - -uIP 1.0: uip_icmpip_hdr Struct Reference - - - - - - -

uip_icmpip_hdr Struct Reference
- -[The uIP TCP/IP stack] -


Detailed Description

- -

- -

-Definition at line 1423 of file uip.h. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Fields

-u8_t vhl
-u8_t tos
-u8_t len [2]
-u8_t ipid [2]
-u8_t ipoffset [2]
-u8_t ttl
-u8_t proto
-u16_t ipchksum
-u16_t srcipaddr [2]
-u16_t destipaddr [2]
-u8_t type
-u8_t icode
-u16_t icmpchksum
-u16_t id
-u16_t seqno
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00092.html b/components/net/uip/doc/html/a00092.html deleted file mode 100644 index 93c00c2a85452848fa63e1155b82404bd4f32c85..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00092.html +++ /dev/null @@ -1,39 +0,0 @@ - - -uIP 1.0: uip_neighbor_addr Struct Reference - - - - - - -

uip_neighbor_addr Struct Reference


Detailed Description

- -

- -

-Definition at line 47 of file uip-neighbor.h. - - - - -

Data Fields

-uip_eth_addr addr
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00093.html b/components/net/uip/doc/html/a00093.html deleted file mode 100644 index 2d3a91a40bb1277f21c97e52d9d2e40758cd7b70..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00093.html +++ /dev/null @@ -1,143 +0,0 @@ - - -uIP 1.0: uip_stats Struct Reference - - - - - - -

uip_stats Struct Reference
- -[The uIP TCP/IP stack] -

#include <uip.h> -

-


Detailed Description

-The structure holding the TCP/IP statistics that are gathered if UIP_STATISTICS is set to 1. -

- -

-Definition at line 1232 of file uip.h. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Fields

-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.
-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.
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00094.html b/components/net/uip/doc/html/a00094.html deleted file mode 100644 index 7d21f8c66fb00dc4c12cefa776771bad6bc3ece5..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00094.html +++ /dev/null @@ -1,99 +0,0 @@ - - -uIP 1.0: uip_tcpip_hdr Struct Reference - - - - - - -

uip_tcpip_hdr Struct Reference
- -[The uIP TCP/IP stack] -


Detailed Description

- -

- -

-Definition at line 1386 of file uip.h. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Fields

-u8_t vhl
-u8_t tos
-u8_t len [2]
-u8_t ipid [2]
-u8_t ipoffset [2]
-u8_t ttl
-u8_t proto
-u16_t ipchksum
-u16_t srcipaddr [2]
-u16_t destipaddr [2]
-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]
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00095.html b/components/net/uip/doc/html/a00095.html deleted file mode 100644 index f61d8975aac60ea970adbdf89810f40d6b7b1538..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00095.html +++ /dev/null @@ -1,64 +0,0 @@ - - -uIP 1.0: uip_udp_conn Struct Reference - - - - - - -

uip_udp_conn Struct Reference
- -[The uIP TCP/IP stack] -

#include <uip.h> -

-


Detailed Description

-Representation of a uIP UDP connection.
Examples:
- -

-dhcpc.h, and resolv.c.

-

- -

-Definition at line 1210 of file uip.h. - - - - - - - - - - - - - - - - - -

Data Fields

-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.
-uip_udp_appstate_t appstate
 The application state.
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00096.html b/components/net/uip/doc/html/a00096.html deleted file mode 100644 index 48d6bf35cd66c43dda27acebfcb69d0eb90cb511..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00096.html +++ /dev/null @@ -1,81 +0,0 @@ - - -uIP 1.0: uip_udpip_hdr Struct Reference - - - - - - -

uip_udpip_hdr Struct Reference
- -[The uIP TCP/IP stack] -


Detailed Description

- -

- -

-Definition at line 1460 of file uip.h. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Fields

-u8_t vhl
-u8_t tos
-u8_t len [2]
-u8_t ipid [2]
-u8_t ipoffset [2]
-u8_t ttl
-u8_t proto
-u16_t ipchksum
-u16_t srcipaddr [2]
-u16_t destipaddr [2]
-u16_t srcport
-u16_t destport
-u16_t udplen
-u16_t udpchksum
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00097.html b/components/net/uip/doc/html/a00097.html deleted file mode 100644 index da7b8527f6ddaf75fae9d4bc9ffd4542341594eb..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00097.html +++ /dev/null @@ -1,75 +0,0 @@ - - -uIP 1.0: webclient_state Struct Reference - - - - - - -

webclient_state Struct Reference
- -[Web client] -


Detailed Description

-
Examples:
- -

-webclient.c, and webclient.h.

-

- -

-Definition at line 55 of file webclient.h. - - - - - - - - - - - - - - - - - - - - - - - - -

Data Fields

-u8_t timer
-u8_t state
-u8_t httpflag
-u16_t port
-char host [40]
-char file [WEBCLIENT_CONF_MAX_URLLEN]
-u16_t getrequestptr
-u16_t getrequestleft
-char httpheaderline [200]
-u16_t httpheaderlineptr
-char mimetype [32]
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00100.html b/components/net/uip/doc/html/a00100.html deleted file mode 100644 index 8291183fb600a8c3959a3894c1e65db6263ca045..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00100.html +++ /dev/null @@ -1,48 +0,0 @@ - - -uIP 1.0: apps/hello-world/hello-world.c File Reference - - - - - - -

apps/hello-world/hello-world.c File Reference


Detailed Description

-An example of how to write uIP applications with protosockets. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file hello-world.c. -

-#include "hello-world.h"
-#include "uip.h"
-#include <string.h>
- -

-Go to the source code of this file. - - - - - - -

Functions

-void hello_world_init (void)
-void hello_world_appcall (void)
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00101.html b/components/net/uip/doc/html/a00101.html deleted file mode 100644 index f4761b8430a1ac1765f2ffcf4067046e12dce8e0..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00101.html +++ /dev/null @@ -1,54 +0,0 @@ - - -uIP 1.0: apps/hello-world/hello-world.h File Reference - - - - - - -

apps/hello-world/hello-world.h File Reference


Detailed Description

-Header file for an example of how to write uIP applications with protosockets. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file hello-world.h. -

-#include "uipopt.h"
-#include "psock.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - -

Data Structures

struct  hello_world_state

Defines

-#define UIP_APPCALL   hello_world_appcall

Functions

-void hello_world_appcall (void)
-void hello_world_init (void)
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00102.html b/components/net/uip/doc/html/a00102.html deleted file mode 100644 index 1f4e3fa79256e6242508e49aca8e0f142569ac3a..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00102.html +++ /dev/null @@ -1,119 +0,0 @@ - - -uIP 1.0: apps/resolv/resolv.c File Reference - - - - - - -

apps/resolv/resolv.c File Reference


Detailed Description

-DNS host name to IP address resolver. -

-

Author:
Adam Dunkels <adam@dunkels.com>
-This file implements a DNS host name to IP address resolver. -

-Definition in file resolv.c. -

-#include "resolv.h"
-#include "uip.h"
-#include <string.h>
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Defines

-#define NULL   (void *)0
-#define MAX_RETRIES   8
-#define DNS_FLAG1_RESPONSE   0x80
-#define DNS_FLAG1_OPCODE_STATUS   0x10
-#define DNS_FLAG1_OPCODE_INVERSE   0x08
-#define DNS_FLAG1_OPCODE_STANDARD   0x00
-#define DNS_FLAG1_AUTHORATIVE   0x04
-#define DNS_FLAG1_TRUNC   0x02
-#define DNS_FLAG1_RD   0x01
-#define DNS_FLAG2_RA   0x80
-#define DNS_FLAG2_ERR_MASK   0x0f
-#define DNS_FLAG2_ERR_NONE   0x00
-#define DNS_FLAG2_ERR_NAME   0x03
-#define STATE_UNUSED   0
-#define STATE_NEW   1
-#define STATE_ASKING   2
-#define STATE_DONE   3
-#define STATE_ERROR   4
-#define RESOLV_ENTRIES   4

Functions

-void resolv_appcall (void)
void resolv_query (char *name)
 Queues a name so that a question for the name will be sent out.
u16_tresolv_lookup (char *name)
 Look up a hostname in the array of known hostnames.
u16_tresolv_getserver (void)
 Obtain the currently configured DNS server.
void resolv_conf (u16_t *dnsserver)
 Configure which DNS server to use for queries.
-void resolv_init (void)
 Initalize the resolver.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00103.html b/components/net/uip/doc/html/a00103.html deleted file mode 100644 index cf6a03ad9cf1799dfb2ab9dc964b0a5127543b8d..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00103.html +++ /dev/null @@ -1,84 +0,0 @@ - - -uIP 1.0: apps/resolv/resolv.h File Reference - - - - - - -

apps/resolv/resolv.h File Reference


Detailed Description

-DNS resolver code header file. -

-

Author:
Adam Dunkels <adam@dunkels.com>
- -

-Definition in file resolv.h. -

-#include "uipopt.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

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.

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
-


typedef int uip_udp_appstate_t
 The type of the application state that is to be stored in the uip_conn structure.

Defines

-#define UIP_UDP_APPCALL   resolv_appcall

Functions

-void resolv_appcall (void)
void resolv_found (char *name, u16_t *ipaddr)
 Callback function which is called when a hostname is found.
void resolv_conf (u16_t *dnsserver)
 Configure which DNS server to use for queries.
u16_tresolv_getserver (void)
 Obtain the currently configured DNS server.
-void resolv_init (void)
 Initalize the resolver.
u16_tresolv_lookup (char *name)
 Look up a hostname in the array of known hostnames.
void resolv_query (char *name)
 Queues a name so that a question for the name will be sent out.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00104.html b/components/net/uip/doc/html/a00104.html deleted file mode 100644 index b769a45c732a24add012ecb2970ce87e54fd4a26..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00104.html +++ /dev/null @@ -1,78 +0,0 @@ - - -uIP 1.0: apps/smtp/smtp.c File Reference - - - - - - -

apps/smtp/smtp.c File Reference


Detailed Description

-SMTP example implementation. -

-

Author:
Adam Dunkels <adam@dunkels.com>
- -

-Definition in file smtp.c. -

-#include "smtp.h"
-#include "smtp-strings.h"
-#include "psock.h"
-#include "uip.h"
-#include <string.h>
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Defines

-#define ISO_nl   0x0a
-#define ISO_cr   0x0d
-#define ISO_period   0x2e
-#define ISO_2   0x32
-#define ISO_3   0x33
-#define ISO_4   0x34
-#define ISO_5   0x35

Functions

-void smtp_appcall (void)
void smtp_configure (char *lhostname, void *server)
 Specificy an SMTP server and hostname.
unsigned char smtp_send (char *to, char *cc, char *from, char *subject, char *msg, u16_t msglen)
 Send an e-mail.
-void smtp_init (void)
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00105.html b/components/net/uip/doc/html/a00105.html deleted file mode 100644 index 4a8d15b8dc2cc70dbc3616396badf6e8715eed2e..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00105.html +++ /dev/null @@ -1,82 +0,0 @@ - - -uIP 1.0: apps/smtp/smtp.h File Reference - - - - - - -

apps/smtp/smtp.h File Reference


Detailed Description

-SMTP header file. -

-

Author:
Adam Dunkels <adam@dunkels.com>
- -

-Definition in file smtp.h. -

-#include "uipopt.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Structures

struct  smtp_state

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.

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
-


-#define UIP_APPCALL   smtp_appcall
 The name of the application function that uIP should call in response to TCP/IP events.
typedef smtp_state uip_tcp_appstate_t
 The type of the application state that is to be stored in the uip_conn structure.

Defines

-#define SMTP_ERR_OK   0
 Error number that signifies a non-error condition.
-#define SMTP_SEND(to, cc, from, subject, msg)   smtp_send(to, cc, from, subject, msg, strlen(msg))

Functions

void smtp_done (unsigned char error)
 Callback function that is called when an e-mail transmission is done.
-void smtp_init (void)
-void smtp_appcall (void)
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00107.html b/components/net/uip/doc/html/a00107.html deleted file mode 100644 index 74d281601e27446bd1fc7884f17bf637c6945b63..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00107.html +++ /dev/null @@ -1,268 +0,0 @@ - - -uIP 1.0: apps/telnetd/shell.h File Reference - - - - - - -

apps/telnetd/shell.h File Reference


Detailed Description

-Interface for the Contiki shell. -

-

Author:
Adam Dunkels <adam@dunkels.com>
-Some of the functions declared in this file must be implemented as a shell back-end in the architecture specific files of a Contiki port. -

-Definition in file shell.h. -

- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - -

Functions

void shell_init (void)
 Initialize the shell.
void shell_start (void)
 Start the shell back-end.
void shell_input (char *command)
 Process a shell command.
-void shell_quit (char *)
 Quit the shell.
void shell_output (char *str1, char *str2)
 Print a string to the shell window.
void shell_prompt (char *prompt)
 Print a prompt to the shell window.
-


Function Documentation

-

- - - - -
- - - - - - - - - -
void shell_init void   ) 
-
- - - - - -
-   - - -

-Initialize the shell. -

-Called when the shell front-end process starts. This function may be used to start listening for signals.

Examples:
-telnetd.c.
-

-Definition at line 105 of file shell.c. -

-References shell_init(). -

-Referenced by shell_init().

-

- - - - -
- - - - - - - - - -
void shell_input char *  command  ) 
-
- - - - - -
-   - - -

-Process a shell command. -

-This function will be called by the shell GUI / telnet server whan a command has been entered that should be processed by the shell back-end.

-

Parameters:
- - -
command The command to be processed.
-
-
Examples:
-telnetd.c.
-

-Definition at line 118 of file shell.c. -

-References shell_input(). -

-Referenced by shell_input().

-

- - - - -
- - - - - - - - - - - - - - - - - - -
void shell_output char *  str1,
char *  str2
-
- - - - - -
-   - - -

-Print a string to the shell window. -

-This function is implemented by the shell GUI / telnet server and can be called by the shell back-end to output a string in the shell window. The string is automatically appended with a linebreak.

-

Parameters:
- - - -
str1 The first half of the string to be output.
str2 The second half of the string to be output.
-
-
Examples:
-telnetd.c.
-

-Definition at line 113 of file telnetd.c. -

-References ISO_cr, ISO_nl, and NULL.

-

- - - - -
- - - - - - - - - -
void shell_prompt char *  prompt  ) 
-
- - - - - -
-   - - -

-Print a prompt to the shell window. -

-This function can be used by the shell back-end to print out a prompt to the shell window.

-

Parameters:
- - -
prompt The prompt to be printed.
-
-
Examples:
-telnetd.c.
-

-Definition at line 101 of file telnetd.c. -

-References NULL.

-

- - - - -
- - - - - - - - - -
void shell_start void   ) 
-
- - - - - -
-   - - -

-Start the shell back-end. -

-Called by the front-end when a new shell is started.

Examples:
-telnetd.c.
-

-Definition at line 110 of file shell.c. -

-References shell_start(). -

-Referenced by shell_start().

-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00110.html b/components/net/uip/doc/html/a00110.html deleted file mode 100644 index 509e8130f237043243ad1cf388ee91d7f6ab31a7..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00110.html +++ /dev/null @@ -1,107 +0,0 @@ - - -uIP 1.0: apps/webclient/webclient.c File Reference - - - - - - -

apps/webclient/webclient.c File Reference


Detailed Description

-Implementation of the HTTP client. -

-

Author:
Adam Dunkels <adam@dunkels.com>
- -

-Definition in file webclient.c. -

-#include "uip.h"
-#include "uiplib.h"
-#include "webclient.h"
-#include "resolv.h"
-#include <string.h>
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Defines

-#define WEBCLIENT_TIMEOUT   100
-#define WEBCLIENT_STATE_STATUSLINE   0
-#define WEBCLIENT_STATE_HEADERS   1
-#define WEBCLIENT_STATE_DATA   2
-#define WEBCLIENT_STATE_CLOSE   3
-#define HTTPFLAG_NONE   0
-#define HTTPFLAG_OK   1
-#define HTTPFLAG_MOVED   2
-#define HTTPFLAG_ERROR   3
-#define ISO_nl   0x0a
-#define ISO_cr   0x0d
-#define ISO_space   0x20

Functions

char * webclient_mimetype (void)
 Obtain the MIME type of the current HTTP data stream.
char * webclient_filename (void)
 Obtain the filename of the current HTTP data stream.
char * webclient_hostname (void)
 Obtain the hostname of the current HTTP data stream.
unsigned short webclient_port (void)
 Obtain the port number of the current HTTP data stream.
-void webclient_init (void)
 Initialize the webclient module.
-void webclient_close (void)
 Close the currently open HTTP connection.
unsigned char webclient_get (char *host, u16_t port, char *file)
 Open an HTTP connection to a web server and ask for a file using the GET method.
-void webclient_appcall (void)
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00111.html b/components/net/uip/doc/html/a00111.html deleted file mode 100644 index 454dbfab0dec771d7a24e20b69d40012ba9199fc..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00111.html +++ /dev/null @@ -1,96 +0,0 @@ - - -uIP 1.0: apps/webclient/webclient.h File Reference - - - - - - -

apps/webclient/webclient.h File Reference


Detailed Description

-Header file for the HTTP client. -

-

Author:
Adam Dunkels <adam@dunkels.com>
- -

-Definition in file webclient.h. -

-#include "webclient-strings.h"
-#include "uipopt.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Structures

struct  webclient_state

Defines

-#define WEBCLIENT_CONF_MAX_URLLEN   100
-#define UIP_APPCALL   webclient_appcall

Typedefs

-typedef webclient_state uip_tcp_appstate_t

Functions

void webclient_datahandler (char *data, u16_t len)
 Callback function that is called from the webclient code when HTTP data has been received.
void webclient_connected (void)
 Callback function that is called from the webclient code when the HTTP connection has been connected to the web server.
void webclient_timedout (void)
 Callback function that is called from the webclient code if the HTTP connection to the web server has timed out.
void webclient_aborted (void)
 Callback function that is called from the webclient code if the HTTP connection to the web server has been aborted by the web server.
void webclient_closed (void)
 Callback function that is called from the webclient code when the HTTP connection to the web server has been closed.
-void webclient_init (void)
 Initialize the webclient module.
unsigned char webclient_get (char *host, u16_t port, char *file)
 Open an HTTP connection to a web server and ask for a file using the GET method.
-void webclient_close (void)
 Close the currently open HTTP connection.
-void webclient_appcall (void)
char * webclient_mimetype (void)
 Obtain the MIME type of the current HTTP data stream.
char * webclient_filename (void)
 Obtain the filename of the current HTTP data stream.
char * webclient_hostname (void)
 Obtain the hostname of the current HTTP data stream.
unsigned short webclient_port (void)
 Obtain the port number of the current HTTP data stream.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00112.html b/components/net/uip/doc/html/a00112.html deleted file mode 100644 index 213268557c958d3da0fcbbd9ef96499031fce895..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00112.html +++ /dev/null @@ -1,49 +0,0 @@ - - -uIP 1.0: apps/webserver/httpd-cgi.c File Reference - - - - - - -

apps/webserver/httpd-cgi.c File Reference


Detailed Description

-Web server script interface. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file httpd-cgi.c. -

-#include "uip.h"
-#include "psock.h"
-#include "httpd.h"
-#include "httpd-cgi.h"
-#include "httpd-fs.h"
-#include <stdio.h>
-#include <string.h>
- -

-Go to the source code of this file. - - - - -

Functions

-httpd_cgifunction httpd_cgi (char *name)
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00113.html b/components/net/uip/doc/html/a00113.html deleted file mode 100644 index 62dbfa62faae1a9eaf8d20c3ee684dcf803f1325..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00113.html +++ /dev/null @@ -1,51 +0,0 @@ - - -uIP 1.0: apps/webserver/httpd-cgi.h File Reference - - - - - - -

apps/webserver/httpd-cgi.h File Reference


Detailed Description

-Web server script interface header file. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file httpd-cgi.h. -

-#include "psock.h"
-#include "httpd.h"
- -

-Go to the source code of this file. - - - - - - - - - - - -

Data Structures

struct  httpd_cgi_call

Defines

#define HTTPD_CGI_CALL(name, str, function)
 HTTPD CGI function declaration.

Functions

-httpd_cgifunction httpd_cgi (char *name)
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00114.html b/components/net/uip/doc/html/a00114.html deleted file mode 100644 index 62d611fec117b634f63f0e11eaf50d489214222c..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00114.html +++ /dev/null @@ -1,79 +0,0 @@ - - -uIP 1.0: apps/webserver/httpd.c File Reference - - - - - - -

apps/webserver/httpd.c File Reference


Detailed Description

-Web server. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file httpd.c. -

-#include "uip.h"
-#include "httpd.h"
-#include "httpd-fs.h"
-#include "httpd-cgi.h"
-#include "http-strings.h"
-#include <string.h>
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - -

Defines

-#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

Functions

-void httpd_appcall (void)
void httpd_init (void)
 Initialize the web server.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00120.html b/components/net/uip/doc/html/a00120.html deleted file mode 100644 index 3043a5d44c65b041abe7e4cfaaa0c219d7a27f52..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00120.html +++ /dev/null @@ -1,50 +0,0 @@ - - -uIP 1.0: lib/memb.c File Reference - - - - - - -

lib/memb.c File Reference


Detailed Description

-Memory block allocation routines. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file memb.c. -

-#include <string.h>
-#include "memb.h"
- -

-Go to the source code of this file. - - - - - - - - - - - -

Functions

void memb_init (struct memb_blocks *m)
 Initialize a memory block that was declared with MEMB().
void * memb_alloc (struct memb_blocks *m)
 Allocate a memory block from a block of memory declared with MEMB().
char memb_free (struct memb_blocks *m, void *ptr)
 Deallocate a memory block from a memory block previously declared with MEMB().
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00121.html b/components/net/uip/doc/html/a00121.html deleted file mode 100644 index fd04d559295a3adcfd771f89ac1f9c8e366e4aa9..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00121.html +++ /dev/null @@ -1,61 +0,0 @@ - - -uIP 1.0: lib/memb.h File Reference - - - - - - -

lib/memb.h File Reference


Detailed Description

-Memory block allocation routines. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file memb.h. -

- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - -

Data Structures

struct  memb_blocks

Defines

-#define MEMB_CONCAT2(s1, s2)   s1##s2
-#define MEMB_CONCAT(s1, s2)   MEMB_CONCAT2(s1, s2)
#define MEMB(name, structure, num)
 Declare a memory block.

Functions

void memb_init (struct memb_blocks *m)
 Initialize a memory block that was declared with MEMB().
void * memb_alloc (struct memb_blocks *m)
 Allocate a memory block from a block of memory declared with MEMB().
char memb_free (struct memb_blocks *m, void *ptr)
 Deallocate a memory block from a memory block previously declared with MEMB().
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00123.html b/components/net/uip/doc/html/a00123.html deleted file mode 100644 index 6cbb1a8baa1e909e9ca10a246bfcef79bdcb74cd..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00123.html +++ /dev/null @@ -1,57 +0,0 @@ - - -uIP 1.0: uip/lc-addrlabels.h File Reference - - - - - - -

uip/lc-addrlabels.h File Reference


Detailed Description

-Implementation of local continuations based on the "Labels as values" feature of gcc. -

-

Author:
Adam Dunkels <adam@sics.se>
-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. -

-Definition in file lc-addrlabels.h. -

- -

-Go to the source code of this file. - - - - - - - - - - - - - -

Defines

-#define LC_INIT(s)   s = NULL
-#define LC_RESUME(s)
-#define LC_SET(s)   do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0)
-#define LC_END(s)

Typedefs

-typedef void * lc_t
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00124.html b/components/net/uip/doc/html/a00124.html deleted file mode 100644 index a338d450bdd014c47d2583260bc8a5e6da36765e..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00124.html +++ /dev/null @@ -1,59 +0,0 @@ - - -uIP 1.0: uip/lc-switch.h File Reference - - - - - - -

uip/lc-switch.h File Reference


Detailed Description

-Implementation of local continuations based on switch() statment. -

-

Author:
Adam Dunkels <adam@sics.se>
-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 -

-Definition in file lc-switch.h. -

- -

-Go to the source code of this file. - - - - - - - - - - - - - - - -

Defines

-#define __LC_SWTICH_H__
-#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)   }

Typedefs

-typedef unsigned short lc_t
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00125.html b/components/net/uip/doc/html/a00125.html deleted file mode 100644 index ddcb20b9b0302041b7600534db62eabed500879f..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00125.html +++ /dev/null @@ -1,39 +0,0 @@ - - -uIP 1.0: uip/lc.h File Reference - - - - - - -

uip/lc.h File Reference


Detailed Description

-Local continuations. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file lc.h. -

-#include "lc-switch.h"
- -

-Go to the source code of this file. - -
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00127.html b/components/net/uip/doc/html/a00127.html deleted file mode 100644 index c4cf5527975375b917fb58a05d8a7c8b5667a2f4..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00127.html +++ /dev/null @@ -1,99 +0,0 @@ - - -uIP 1.0: uip/psock.h File Reference - - - - - - -

uip/psock.h File Reference


Detailed Description

-Protosocket library header file. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file psock.h. -

-#include "uipopt.h"
-#include "pt.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Structures

struct  psock_buf
struct  psock
 The representation of a protosocket. More...

Defines

#define PSOCK_INIT(psock, buffer, buffersize)
 Initialize a protosocket.
#define PSOCK_BEGIN(psock)
 Start the protosocket protothread in a function.
#define PSOCK_SEND(psock, data, datalen)
 Send data.
#define PSOCK_SEND_STR(psock, str)
 Send a null-terminated string.
#define PSOCK_GENERATOR_SEND(psock, generator, arg)
 Generate data with a function and send it.
#define PSOCK_CLOSE(psock)
 Close a protosocket.
#define PSOCK_READBUF(psock)
 Read data until the buffer is full.
#define PSOCK_READTO(psock, c)
 Read data up to a specified character.
#define PSOCK_DATALEN(psock)
 The length of the data that was previously read.
#define PSOCK_EXIT(psock)
 Exit the protosocket's protothread.
#define PSOCK_CLOSE_EXIT(psock)
 Close a protosocket and exit the protosocket's protothread.
#define PSOCK_END(psock)
 Declare the end of a protosocket's protothread.
#define PSOCK_NEWDATA(psock)
 Check if new data has arrived on a protosocket.
#define PSOCK_WAIT_UNTIL(psock, condition)
 Wait until a condition is true.
-#define PSOCK_WAIT_THREAD(psock, condition)   PT_WAIT_THREAD(&((psock)->pt), (condition))

Functions

-u16_t psock_datalen (struct psock *psock)
-char psock_newdata (struct psock *s)
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00128.html b/components/net/uip/doc/html/a00128.html deleted file mode 100644 index 087b66848942e468518b029d5fa642f9a577fb00..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00128.html +++ /dev/null @@ -1,101 +0,0 @@ - - -uIP 1.0: uip/pt.h File Reference - - - - - - -

uip/pt.h File Reference


Detailed Description

-Protothreads implementation. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file pt.h. -

-#include "lc.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Structures

struct  pt

Initialization

#define PT_INIT(pt)
 Initialize a protothread.

Declaration and definition

#define PT_THREAD(name_args)
 Declaration of a protothread.
#define PT_BEGIN(pt)
 Declare the start of a protothread inside the C function implementing the protothread.
#define PT_END(pt)
 Declare the end of a protothread.

Blocked wait

#define PT_WAIT_UNTIL(pt, condition)
 Block and wait until condition is true.
#define PT_WAIT_WHILE(pt, cond)
 Block and wait while condition is true.

Hierarchical protothreads

#define PT_WAIT_THREAD(pt, thread)
 Block and wait until a child protothread completes.
#define PT_SPAWN(pt, child, thread)
 Spawn a child protothread and wait until it exits.

Exiting and restarting

#define PT_RESTART(pt)
 Restart the protothread.
#define PT_EXIT(pt)
 Exit the protothread.

Calling a protothread

#define PT_SCHEDULE(f)
 Schedule a protothread.

Yielding from a protothread

#define PT_YIELD(pt)
 Yield from the current protothread.
#define PT_YIELD_UNTIL(pt, cond)
 Yield from the protothread until a condition occurs.

Defines

-#define PT_WAITING   0
-#define PT_EXITED   1
-#define PT_ENDED   2
-#define PT_YIELDED   3
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00129.html b/components/net/uip/doc/html/a00129.html deleted file mode 100644 index 2d89eba3bd7ff15af43772fc912a8d94bdc5a0d0..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00129.html +++ /dev/null @@ -1,53 +0,0 @@ - - -uIP 1.0: uip/timer.c File Reference - - - - - - -

uip/timer.c File Reference


Detailed Description

-Timer library implementation. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file timer.c. -

-#include "clock.h"
-#include "timer.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - -

Functions

void timer_set (struct timer *t, clock_time_t interval)
 Set a timer.
void timer_reset (struct timer *t)
 Reset the timer with the same interval.
void timer_restart (struct timer *t)
 Restart the timer from the current point in time.
int timer_expired (struct timer *t)
 Check if a timer has expired.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00130.html b/components/net/uip/doc/html/a00130.html deleted file mode 100644 index 95da0338716d3723d428118b2595ddd62744ef64..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00130.html +++ /dev/null @@ -1,56 +0,0 @@ - - -uIP 1.0: uip/timer.h File Reference - - - - - - -

uip/timer.h File Reference


Detailed Description

-Timer library header file. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file timer.h. -

-#include "clock.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - -

Data Structures

struct  timer
 A timer. More...

Functions

void timer_set (struct timer *t, clock_time_t interval)
 Set a timer.
void timer_reset (struct timer *t)
 Reset the timer with the same interval.
void timer_restart (struct timer *t)
 Restart the timer from the current point in time.
int timer_expired (struct timer *t)
 Check if a timer has expired.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00131.html b/components/net/uip/doc/html/a00131.html deleted file mode 100644 index 8370948415d826ad6afe9c62a423a84e98c16ab8..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00131.html +++ /dev/null @@ -1,63 +0,0 @@ - - -uIP 1.0: uip/uip-neighbor.c File Reference - - - - - - -

uip/uip-neighbor.c File Reference


Detailed Description

-Database of link-local neighbors, used by IPv6 code and to be used by a future ARP code rewrite. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file uip-neighbor.c. -

-#include "uip-neighbor.h"
-#include <string.h>
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - -

Defines

-#define MAX_TIME   128
-#define ENTRIES   8

Functions

-void uip_neighbor_init (void)
-void uip_neighbor_periodic (void)
-void uip_neighbor_add (uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr)
-void uip_neighbor_update (uip_ipaddr_t ipaddr)
-uip_neighbor_addruip_neighbor_lookup (uip_ipaddr_t ipaddr)
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00132.html b/components/net/uip/doc/html/a00132.html deleted file mode 100644 index dc5b6496f93a4be7089cd878969b485931d1cbd9..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00132.html +++ /dev/null @@ -1,58 +0,0 @@ - - -uIP 1.0: uip/uip-neighbor.h File Reference - - - - - - -

uip/uip-neighbor.h File Reference


Detailed Description

-Header file for database of link-local neighbors, used by IPv6 code and to be used by future ARP code. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file uip-neighbor.h. -

-#include "uip.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - -

Data Structures

struct  uip_neighbor_addr

Functions

-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)
-uip_neighbor_addruip_neighbor_lookup (uip_ipaddr_t ipaddr)
-void uip_neighbor_periodic (void)
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00134.html b/components/net/uip/doc/html/a00134.html deleted file mode 100644 index 179ad8ff99d8e2945801e84e9718abc33bd31c71..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00134.html +++ /dev/null @@ -1,42 +0,0 @@ - - -uIP 1.0: uip/uip-split.h File Reference - - - - - - -

uip/uip-split.h File Reference


Detailed Description

-Module for splitting outbound TCP segments in two to avoid the delayed ACK throughput degradation. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file uip-split.h. -

- -

-Go to the source code of this file. - - - - - -

Functions

void uip_split_output (void)
 Handle outgoing packets.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00135.html b/components/net/uip/doc/html/a00135.html deleted file mode 100644 index 8cbccdcc946d2744334cef868e0b6f532babbf08..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00135.html +++ /dev/null @@ -1,215 +0,0 @@ - - -uIP 1.0: uip/uip.c File Reference - - - - - - -

uip/uip.c File Reference


Detailed Description

-The uIP TCP/IP stack code. -

-

Author:
Adam Dunkels <adam@dunkels.com>
- -

-Definition in file uip.c. -

-#include "uip.h"
-#include "uipopt.h"
-#include "uip_arch.h"
-#include <string.h>
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Defines

-#define DEBUG_PRINTF()
-#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
-#define TCP_OPT_NOOP   1
-#define TCP_OPT_MSS   2
-#define TCP_OPT_MSS_LEN   4
-#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
-#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])
-#define UIP_STAT(s)
-#define UIP_LOG(m)

Functions

void uip_setipid (u16_t id)
 uIP initialization function.
void uip_add32 (u8_t *op32, u16_t op16)
 Carry out a 32-bit addition.
u16_t uip_chksum (u16_t *buf, u16_t len)
 Calculate the Internet checksum over a buffer.
u16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf.
u16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
void uip_init (void)
 uIP initialization function.
uip_connuip_connect (uip_ipaddr_t *ripaddr, u16_t rport)
 Connect to a remote host using TCP.
uip_udp_connuip_udp_new (uip_ipaddr_t *ripaddr, u16_t rport)
 Set up a new UDP connection.
void uip_unlisten (u16_t port)
 Stop listening to the specified port.
void uip_listen (u16_t port)
 Start listening to the specified port.
-void uip_process (u8_t flag)
u16_t htons (u16_t val)
 Convert 16-bit quantity from host byte order to network byte order.
void uip_send (const void *data, int len)
 Send data on the current connection.

Variables

-uip_ipaddr_t uip_hostaddr
-uip_ipaddr_t uip_draddr
-uip_ipaddr_t uip_netmask
-uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}}
u8_t uip_buf [UIP_BUFSIZE+2]
 The uIP packet buffer.
void * uip_appdata
 Pointer to the application data in the packet buffer.
-void * uip_sappdata
u16_t uip_len
 The length of the packet in the uip_buf buffer.
-u16_t uip_slen
-u8_t uip_flags
uip_connuip_conn
 Pointer to the current TCP connection.
-uip_conn uip_conns [UIP_CONNS]
-u16_t uip_listenports [UIP_LISTENPORTS]
-uip_udp_connuip_udp_conn
 The current UDP connection.
-uip_udp_conn uip_udp_conns [UIP_UDP_CONNS]
-u8_t uip_acc32 [4]
 4-byte array used for the 32-bit sequence number calculations.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00136.html b/components/net/uip/doc/html/a00136.html deleted file mode 100644 index 341701bce64a4aeb5ac343812e27fcc295554862..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00136.html +++ /dev/null @@ -1,400 +0,0 @@ - - -uIP 1.0: uip/uip.h File Reference - - - - - - -

uip/uip.h File Reference


Detailed Description

-Header file for the uIP TCP/IP stack. -

-

Author:
Adam Dunkels <adam@dunkels.com>
-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. -

-Definition in file uip.h. -

-#include "uipopt.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Structures

struct  uip_conn
 Representation of a uIP TCP connection. More...
struct  uip_udp_conn
 Representation of a uIP UDP connection. More...
struct  uip_stats
 The structure holding the TCP/IP statistics that are gathered if UIP_STATISTICS is set to 1. More...
struct  uip_tcpip_hdr
struct  uip_icmpip_hdr
struct  uip_udpip_hdr
struct  uip_eth_addr
 Representation of a 48-bit Ethernet address. More...

Defines

#define uip_sethostaddr(addr)
 Set the IP address of this host.
#define uip_gethostaddr(addr)
 Get the IP address of this host.
#define uip_setdraddr(addr)
 Set the default router's IP address.
#define uip_setnetmask(addr)
 Set the netmask.
#define uip_getdraddr(addr)
 Get the default router's IP address.
#define uip_getnetmask(addr)
 Get the netmask.
#define uip_input()
 Process an incoming packet.
#define uip_periodic(conn)
 Periodic processing for a connection identified by its number.
-#define uip_conn_active(conn)   (uip_conns[conn].tcpstateflags != UIP_CLOSED)
#define uip_periodic_conn(conn)
 Perform periodic processing for a connection identified by a pointer to its structure.
#define uip_poll_conn(conn)
 Reuqest that a particular connection should be polled.
#define uip_udp_periodic(conn)
 Periodic processing for a UDP connection identified by its number.
#define uip_udp_periodic_conn(conn)
 Periodic processing for a UDP connection identified by a pointer to its structure.
-#define uip_outstanding(conn)   ((conn)->len)
#define uip_datalen()
 The length of any incoming data that is currently avaliable (if avaliable) in the uip_appdata buffer.
#define uip_urgdatalen()
 The length of any out-of-band data (urgent data) that has arrived on the connection.
#define uip_close()
 Close the current connection.
#define uip_abort()
 Abort the current connection.
#define uip_stop()
 Tell the sending host to stop sending data.
-#define uip_stopped(conn)
 Find out if the current connection has been previously stopped with uip_stop().
#define uip_restart()
 Restart the current connection, if is has previously been stopped with uip_stop().
#define uip_udpconnection()
 Is the current connection a UDP connection?
#define uip_newdata()
 Is new incoming data available?
#define uip_acked()
 Has previously sent data been acknowledged?
#define uip_connected()
 Has the connection just been connected?
#define uip_closed()
 Has the connection been closed by the other end?
#define uip_aborted()
 Has the connection been aborted by the other end?
#define uip_timedout()
 Has the connection timed out?
#define uip_rexmit()
 Do we need to retransmit previously data?
#define uip_poll()
 Is the connection being polled by uIP?
-#define uip_initialmss()
 Get the initial maxium segment size (MSS) of the current connection.
#define uip_mss()
 Get the current maxium segment size that can be sent on the current connection.
#define uip_udp_remove(conn)
 Removed a UDP connection.
#define uip_udp_bind(conn, port)
 Bind a UDP connection to a local port.
#define uip_udp_send(len)
 Send a UDP datagram of length len on the current connection.
#define uip_ipaddr(addr, addr0, addr1, addr2, addr3)
 Construct an IP address from four bytes.
#define uip_ip6addr(addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7)
 Construct an IPv6 address from eight 16-bit words.
#define uip_ipaddr_copy(dest, src)
 Copy an IP address to another IP address.
#define uip_ipaddr_cmp(addr1, addr2)
 Compare two IP addresses.
#define uip_ipaddr_maskcmp(addr1, addr2, mask)
 Compare two IP addresses with netmasks.
#define uip_ipaddr_mask(dest, src, mask)
 Mask out the network part of an IP address.
#define uip_ipaddr1(addr)
 Pick the first octet of an IP address.
#define uip_ipaddr2(addr)
 Pick the second octet of an IP address.
#define uip_ipaddr3(addr)
 Pick the third octet of an IP address.
#define uip_ipaddr4(addr)
 Pick the fourth octet of an IP address.
#define HTONS(n)
 Convert 16-bit quantity from host byte order to network byte order.
-#define ntohs   htons
-#define UIP_ACKDATA   1
-#define UIP_NEWDATA   2
-#define UIP_REXMIT   4
-#define UIP_POLL   8
-#define UIP_CLOSE   16
-#define UIP_ABORT   32
-#define UIP_CONNECTED   64
-#define UIP_TIMEDOUT   128
-#define UIP_DATA   1
-#define UIP_TIMER   2
-#define UIP_POLL_REQUEST   3
-#define UIP_UDP_SEND_CONN   4
-#define UIP_UDP_TIMER   5
-#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
#define UIP_APPDATA_SIZE
 The buffer size available for user data in the uip_buf buffer.
-#define UIP_PROTO_ICMP   1
-#define UIP_PROTO_TCP   6
-#define UIP_PROTO_UDP   17
-#define UIP_PROTO_ICMP6   58
-#define UIP_IPH_LEN   20
-#define UIP_UDPH_LEN   8
-#define UIP_TCPH_LEN   20
-#define UIP_IPUDPH_LEN   (UIP_UDPH_LEN + UIP_IPH_LEN)
-#define UIP_IPTCPH_LEN   (UIP_TCPH_LEN + UIP_IPH_LEN)
-#define UIP_TCPIP_HLEN   UIP_IPTCPH_LEN

Typedefs

-typedef u16_t uip_ip4addr_t [2]
 Repressentation of an IP address.
-typedef u16_t uip_ip6addr_t [8]
-typedef uip_ip4addr_t uip_ipaddr_t

Functions

void uip_init (void)
 uIP initialization function.
void uip_setipid (u16_t id)
 uIP initialization function.
void uip_listen (u16_t port)
 Start listening to the specified port.
void uip_unlisten (u16_t port)
 Stop listening to the specified port.
uip_connuip_connect (uip_ipaddr_t *ripaddr, u16_t port)
 Connect to a remote host using TCP.
void uip_send (const void *data, int len)
 Send data on the current connection.
uip_udp_connuip_udp_new (uip_ipaddr_t *ripaddr, u16_t rport)
 Set up a new UDP connection.
u16_t htons (u16_t val)
 Convert 16-bit quantity from host byte order to network byte order.
-void uip_process (u8_t flag)
u16_t uip_chksum (u16_t *buf, u16_t len)
 Calculate the Internet checksum over a buffer.
u16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf.
u16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
u16_t uip_udpchksum (void)
 Calculate the UDP checksum of the packet in uip_buf and uip_appdata.

Variables

u8_t uip_buf [UIP_BUFSIZE+2]
 The uIP packet buffer.
void * uip_appdata
 Pointer to the application data in the packet buffer.
u16_t uip_len
 The length of the packet in the uip_buf buffer.
uip_connuip_conn
 Pointer to the current TCP connection.
-uip_conn uip_conns [UIP_CONNS]
-u8_t uip_acc32 [4]
 4-byte array used for the 32-bit sequence number calculations.
-uip_udp_connuip_udp_conn
 The current UDP connection.
-uip_udp_conn uip_udp_conns [UIP_UDP_CONNS]
uip_stats uip_stat
 The uIP TCP/IP statistics.
-u8_t uip_flags
-uip_ipaddr_t uip_hostaddr
-uip_ipaddr_t uip_netmask
-uip_ipaddr_t uip_draddr
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00137.html b/components/net/uip/doc/html/a00137.html deleted file mode 100644 index 12938893695f554a3807f87cf8bbec797d0a1a0a..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00137.html +++ /dev/null @@ -1,52 +0,0 @@ - - -uIP 1.0: uip/uip_arch.h File Reference - - - - - - -

uip/uip_arch.h File Reference


Detailed Description

-Declarations of architecture specific functions. -

-

Author:
Adam Dunkels <adam@dunkels.com>
- -

-Definition in file uip_arch.h. -

-#include "uip.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - -

Functions

void uip_add32 (u8_t *op32, u16_t op16)
 Carry out a 32-bit addition.
u16_t uip_chksum (u16_t *buf, u16_t len)
 Calculate the Internet checksum over a buffer.
u16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf.
u16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00138.html b/components/net/uip/doc/html/a00138.html deleted file mode 100644 index b7845d551f9e1e8c16b4809e09ac24f7be162128..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00138.html +++ /dev/null @@ -1,70 +0,0 @@ - - -uIP 1.0: uip/uip_arp.c File Reference - - - - - - -

uip/uip_arp.c File Reference


Detailed Description

-Implementation of the ARP Address Resolution Protocol. -

-

Author:
Adam Dunkels <adam@dunkels.com>
- -

-Definition in file uip_arp.c. -

-#include "uip_arp.h"
-#include <string.h>
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - -

Defines

-#define ARP_REQUEST   1
-#define ARP_REPLY   2
-#define ARP_HWTYPE_ETH   1
-#define BUF   ((struct arp_hdr *)&uip_buf[0])
-#define IPBUF   ((struct ethip_hdr *)&uip_buf[0])

Functions

-void uip_arp_init (void)
 Initialize the ARP module.
void uip_arp_timer (void)
 Periodic ARP processing function.
void uip_arp_arpin (void)
 ARP processing for incoming ARP packets.
void uip_arp_out (void)
 Prepend Ethernet header to an outbound IP packet and see if we need to send out an ARP request.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00139.html b/components/net/uip/doc/html/a00139.html deleted file mode 100644 index 00cb3b75c0abf0027ca0355eca5f6bec1fd4df5f..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00139.html +++ /dev/null @@ -1,77 +0,0 @@ - - -uIP 1.0: uip/uip_arp.h File Reference - - - - - - -

uip/uip_arp.h File Reference


Detailed Description

-Macros and definitions for the ARP module. -

-

Author:
Adam Dunkels <adam@dunkels.com>
- -

-Definition in file uip_arp.h. -

-#include "uip.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Data Structures

struct  uip_eth_hdr
 The Ethernet header. More...

Defines

-#define UIP_ETHTYPE_ARP   0x0806
-#define UIP_ETHTYPE_IP   0x0800
-#define UIP_ETHTYPE_IP6   0x86dd
-#define uip_arp_ipin()
#define uip_setethaddr(eaddr)
 Specifiy the Ethernet MAC address.

Functions

-void uip_arp_init (void)
 Initialize the ARP module.
void uip_arp_arpin (void)
 ARP processing for incoming ARP packets.
void uip_arp_out (void)
 Prepend Ethernet header to an outbound IP packet and see if we need to send out an ARP request.
void uip_arp_timer (void)
 Periodic ARP processing function.

Variables

-uip_eth_addr uip_ethaddr
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00140.html b/components/net/uip/doc/html/a00140.html deleted file mode 100644 index a413b004472befab50597effad7c2a7f6164709f..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00140.html +++ /dev/null @@ -1,143 +0,0 @@ - - -uIP 1.0: uip/uipopt.h File Reference - - - - - - -

uip/uipopt.h File Reference


Detailed Description

-Configuration options for uIP. -

-

Author:
Adam Dunkels <adam@dunkels.com>
-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. -

-Definition in file uipopt.h. -

-#include "uip-conf.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

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.

#define UIP_FIXEDADDR
 Determines if uIP should use a fixed IP address or not.
#define UIP_PINGADDRCONF
 Ping IP address asignment.
#define UIP_FIXEDETHADDR
 Specifies if the uIP ARP module should be compiled with a fixed Ethernet MAC address or not.

IP configuration options

#define UIP_TTL   64
 The IP TTL (time to live) of IP packets sent by uIP.
#define UIP_REASSEMBLY
 Turn on support for IP packet reassembly.
-#define UIP_REASS_MAXAGE   40
 The maximum time an IP fragment should wait in the reassembly buffer before it is dropped.

UDP configuration options

-#define UIP_UDP
 Toggles wether UDP support should be compiled in or not.
#define UIP_UDP_CHECKSUMS
 Toggles if UDP checksums should be used or not.
-#define UIP_UDP_CONNS
 The maximum amount of concurrent UDP connections.

TCP configuration options

#define UIP_ACTIVE_OPEN
 Determines if support for opening connections from uIP should be compiled in.
#define UIP_CONNS
 The maximum number of simultaneously open TCP connections.
#define UIP_LISTENPORTS
 The maximum number of simultaneously listening TCP ports.
#define UIP_URGDATA
 Determines if support for TCP urgent data notification should be compiled in.
#define UIP_RTO   3
 The initial retransmission timeout counted in timer pulses.
#define UIP_MAXRTX   8
 The maximum number of times a segment should be retransmitted before the connection should be aborted.
#define UIP_MAXSYNRTX   5
 The maximum number of times a SYN segment should be retransmitted before a connection request should be deemed to have been unsuccessful.
#define UIP_TCP_MSS   (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
 The TCP maximum segment size.
#define UIP_RECEIVE_WINDOW
 The size of the advertised receiver's window.
#define UIP_TIME_WAIT_TIMEOUT   120
 How long a connection should stay in the TIME_WAIT state.

ARP configuration options

#define UIP_ARPTAB_SIZE
 The size of the ARP table.
#define UIP_ARP_MAXAGE   120
 The maxium age of ARP table entries measured in 10ths of seconds.

General configuration options

#define UIP_BUFSIZE
 The size of the uIP packet buffer.
#define UIP_STATISTICS
 Determines if statistics support should be compiled in.
#define UIP_LOGGING
 Determines if logging of certain events should be compiled in.
#define UIP_BROADCAST
 Broadcast support.
#define UIP_LLH_LEN
 The link level header length.
void uip_log (char *msg)
 Print out a uIP log message.

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.

#define UIP_BYTE_ORDER
 The byte order of the CPU architecture on which uIP is to be run.

Defines

-#define UIP_LITTLE_ENDIAN   3412
-#define UIP_BIG_ENDIAN   1234
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00141.html b/components/net/uip/doc/html/a00141.html deleted file mode 100644 index 4b0e595872e603dff4937fb89d5bedcd9e2aa157..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00141.html +++ /dev/null @@ -1,83 +0,0 @@ - - -uIP 1.0: unix/uip-conf.h File Reference - - - - - - -

unix/uip-conf.h File Reference


Detailed Description

-An example uIP configuration file. -

-

Author:
Adam Dunkels <adam@sics.se>
- -

-Definition in file uip-conf.h. -

-#include <inttypes.h>
-#include "webserver.h"
- -

-Go to the source code of this file. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

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.

-#define UIP_CONF_MAX_CONNECTIONS
 Maximum number of TCP connections.
-#define UIP_CONF_MAX_LISTENPORTS
 Maximum number of listening TCP ports.
-#define UIP_CONF_BUFFER_SIZE
 uIP buffer size.
-#define UIP_CONF_BYTE_ORDER
 CPU byte order.
-#define UIP_CONF_LOGGING
 Logging on or off.
-#define UIP_CONF_UDP
 UDP support on or off.
-#define UIP_CONF_UDP_CHECKSUMS
 UDP checksums on or off.
-#define UIP_CONF_STATISTICS
 uIP statistics on or off
typedef uint8_t u8_t
 8 bit datatype
typedef uint16_t u16_t
 16 bit datatype
typedef unsigned short uip_stats_t
 Statistics datatype.
-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00142.html b/components/net/uip/doc/html/a00142.html deleted file mode 100644 index c2db21d3c41c40dc029656a1c6d786cfd6589b75..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00142.html +++ /dev/null @@ -1,690 +0,0 @@ - - -uIP 1.0: Protothreads - - - - - -

Protothreads


Detailed Description

-Protothreads are a type of lightweight stackless threads designed for severly memory constrained systems such as deeply embedded systems or sensor network nodes. -

-Protothreads provides linear code execution for event-driven systems implemented in C. Protothreads can be used with or without an RTOS.

-Protothreads are a extremely lightweight, stackless type of threads that provides a blocking context on top of an event-driven system, without the overhead of per-thread stacks. The purpose of protothreads is to implement sequential flow of control without complex state machines or full multi-threading. Protothreads provides conditional blocking inside C functions.

-The advantage of protothreads over a purely event-driven approach is that protothreads provides a sequential code structure that allows for blocking functions. In purely event-driven systems, blocking must be implemented by manually breaking the function into two pieces - one for the piece of code before the blocking call and one for the code after the blocking call. This makes it hard to use control structures such as if() conditionals and while() loops.

-The advantage of protothreads over ordinary threads is that a protothread do not require a separate stack. In memory constrained systems, the overhead of allocating multiple stacks can consume large amounts of the available memory. In contrast, each protothread only requires between two and twelve bytes of state, depending on the architecture.

-

Note:
Because protothreads do not save the stack context across a blocking call, local variables are not preserved when the protothread blocks. This means that local variables should be used with utmost care - if in doubt, do not use local variables inside a protothread!
-Main features:

-

    -
  • No machine specific code - the protothreads library is pure C
-

-

    -
  • Does not use error-prone functions such as longjmp()
-

-

    -
  • Very small RAM overhead - only two bytes per protothread
-

-

    -
  • Can be used with or without an OS
-

-

    -
  • Provides blocking wait without full multi-threading or stack-switching
-

-Examples applications:

-

    -
  • Memory constrained systems
-

-

    -
  • Event-driven protocol stacks
-

-

    -
  • Deeply embedded systems
-

-

    -
  • Sensor network nodes
-

-The protothreads API consists of four basic operations: initialization: PT_INIT(), execution: PT_BEGIN(), conditional blocking: PT_WAIT_UNTIL() and exit: PT_END(). On top of these, two convenience functions are built: reversed condition blocking: PT_WAIT_WHILE() and protothread blocking: PT_WAIT_THREAD().

-

See also:
Protothreads API documentation
-The protothreads library is released under a BSD-style license that allows for both non-commercial and commercial usage. The only requirement is that credit is given.

-Authors

-The protothreads library was written by Adam Dunkels <adam@sics.se> with support from Oliver Schmidt <ol.sc@web.de>.

-Protothreads

-Protothreads are a extremely lightweight, stackless threads that provides a blocking context on top of an event-driven system, without the overhead of per-thread stacks. The purpose of protothreads is to implement sequential flow of control without using complex state machines or full multi-threading. Protothreads provides conditional blocking inside a C function.

-In memory constrained systems, such as deeply embedded systems, traditional multi-threading may have a too large memory overhead. In traditional multi-threading, each thread requires its own stack, that typically is over-provisioned. The stacks may use large parts of the available memory.

-The main advantage of protothreads over ordinary threads is that protothreads are very lightweight: a protothread does not require its own stack. Rather, all protothreads run on the same stack and context switching is done by stack rewinding. This is advantageous in memory constrained systems, where a stack for a thread might use a large part of the available memory. A protothread only requires only two bytes of memory per protothread. Moreover, protothreads are implemented in pure C and do not require any machine-specific assembler code.

-A protothread runs within a single C function and cannot span over other functions. A protothread may call normal C functions, but cannot block inside a called function. Blocking inside nested function calls is instead made by spawning a separate protothread for each potentially blocking function. The advantage of this approach is that blocking is explicit: the programmer knows exactly which functions that block that which functions the never blocks.

-Protothreads are similar to asymmetric co-routines. The main difference is that co-routines uses a separate stack for each co-routine, whereas protothreads are stackless. The most similar mechanism to protothreads are Python generators. These are also stackless constructs, but have a different purpose. Protothreads provides blocking contexts inside a C function, whereas Python generators provide multiple exit points from a generator function.

-Local variables

-
Note:
Because protothreads do not save the stack context across a blocking call, local variables are not preserved when the protothread blocks. This means that local variables should be used with utmost care - if in doubt, do not use local variables inside a protothread!
-

-Scheduling

-A protothread is driven by repeated calls to the function in which the protothread is running. Each time the function is called, the protothread will run until it blocks or exits. Thus the scheduling of protothreads is done by the application that uses protothreads.

-Implementation

-Protothreads are implemented using local continuations. A local continuation represents the current state of execution at a particular place in the program, but does not provide any call history or local variables. 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.

-Local continuations can be implemented in a variety of ways:

-

    -
  1. by using machine specific assembler code,
  2. by using standard C constructs, or
  3. by using compiler extensions.
-

-The first way works by saving and restoring the processor state, except for stack pointers, and requires between 16 and 32 bytes of memory per protothread. The exact amount of memory required depends on the architecture.

-The standard C implementation requires only two bytes of state per protothread and utilizes the C switch() statement in a non-obvious way that is similar to Duff's device. This implementation does, however, impose a slight restriction to the code that uses protothreads in that the code cannot use switch() statements itself.

-Certain compilers has C extensions that can be used to implement protothreads. GCC supports label pointers that can be used for this purpose. With this implementation, protothreads require 4 bytes of RAM per protothread. -

- - - - - - - -

-

- - - - -

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Files

file  pt.h
 Protothreads implementation.

Modules

 Local continuations
 Local continuations form the basis for implementing protothreads.

Data Structures

struct  pt

Initialization

#define PT_INIT(pt)
 Initialize a protothread.

Declaration and definition

#define PT_THREAD(name_args)
 Declaration of a protothread.
#define PT_BEGIN(pt)
 Declare the start of a protothread inside the C function implementing the protothread.
#define PT_END(pt)
 Declare the end of a protothread.

Blocked wait

#define PT_WAIT_UNTIL(pt, condition)
 Block and wait until condition is true.
#define PT_WAIT_WHILE(pt, cond)
 Block and wait while condition is true.

Hierarchical protothreads

#define PT_WAIT_THREAD(pt, thread)
 Block and wait until a child protothread completes.
#define PT_SPAWN(pt, child, thread)
 Spawn a child protothread and wait until it exits.

Exiting and restarting

#define PT_RESTART(pt)
 Restart the protothread.
#define PT_EXIT(pt)
 Exit the protothread.

Calling a protothread

#define PT_SCHEDULE(f)
 Schedule a protothread.

Yielding from a protothread

#define PT_YIELD(pt)
 Yield from the current protothread.
#define PT_YIELD_UNTIL(pt, cond)
 Yield from the protothread until a condition occurs.

Defines

-#define PT_WAITING   0
-#define PT_EXITED   1
-#define PT_ENDED   2
-#define PT_YIELDED   3
-


Define Documentation

-

- - - - -
- - - - - - - - - -
#define PT_BEGIN pt   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
pt A pointer to the protothread control structure.
-
-
Examples:
-dhcpc.c.
-

-Definition at line 115 of file pt.h.

-

- - - - -
- - - - - - - - - -
#define PT_END pt   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
pt A pointer to the protothread control structure.
-
-
Examples:
-dhcpc.c.
-

-Definition at line 127 of file pt.h.

-

- - - - -
- - - - - - - - - -
#define PT_EXIT pt   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
pt A pointer to the protothread control structure.
-
- -

-Definition at line 246 of file pt.h.

-

- - - - -
- - - - - - - - - -
#define PT_INIT pt   ) 
-
- - - - - -
-   - - -

-Initialize a protothread. -

-Initializes a protothread. Initialization must be done prior to starting to execute the protothread.

-

Parameters:
- - -
pt A pointer to the protothread control structure.
-
-
See also:
PT_SPAWN()
-
Examples:
-dhcpc.c.
-

-Definition at line 80 of file pt.h. -

-Referenced by httpd_appcall().

-

- - - - -
- - - - - - - - - -
#define PT_RESTART pt   ) 
-
- - - - - -
-   - - -

-Restart the protothread. -

-This macro will block and cause the running protothread to restart its execution at the place of the PT_BEGIN() call.

-

Parameters:
- - -
pt A pointer to the protothread control structure.
-
-
Examples:
-dhcpc.c.
-

-Definition at line 229 of file pt.h.

-

- - - - -
- - - - - - - - - -
#define PT_SCHEDULE  ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
f The call to the C function implementing the protothread to be scheduled
-
- -

-Definition at line 271 of file pt.h.

-

- - - - -
- - - - - - - - - - - - - - - -
#define PT_SPAWN pt,
child,
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.

-

Parameters:
- - - - -
pt A pointer to the protothread control structure.
child A pointer to the child protothread's control structure.
thread The child protothread with arguments
-
- -

-Definition at line 206 of file pt.h.

-

- - - - -
- - - - - - - - - -
#define PT_THREAD name_args   ) 
-
- - - - - -
-   - - -

-Declaration of a protothread. -

-This macro is used to declare a protothread. All protothreads must be declared with this macro.

-

Parameters:
- - -
name_args The name and arguments of the C function implementing the protothread.
-
-
Examples:
-dhcpc.c, and smtp.c.
-

-Definition at line 100 of file pt.h.

-

- - - - -
- - - - - - - - - - - - -
#define PT_WAIT_THREAD pt,
thread   ) 
-
- - - - - -
-   - - -

-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.
-
Parameters:
- - - -
pt A pointer to the protothread control structure.
thread The child protothread with arguments
-
-
See also:
PT_SPAWN()
- -

-Definition at line 192 of file pt.h.

-

- - - - -
- - - - - - - - - - - - -
#define PT_WAIT_UNTIL pt,
condition   ) 
-
- - - - - -
-   - - -

-Block and wait until condition is true. -

-This macro blocks the protothread until the specified condition is true.

-

Parameters:
- - - -
pt A pointer to the protothread control structure.
condition The condition.
-
-
Examples:
-dhcpc.c.
-

-Definition at line 148 of file pt.h.

-

- - - - -
- - - - - - - - - - - - -
#define PT_WAIT_WHILE pt,
cond   ) 
-
- - - - - -
-   - - -

-Block and wait while condition is true. -

-This function blocks and waits while condition is true. See PT_WAIT_UNTIL().

-

Parameters:
- - - -
pt A pointer to the protothread control structure.
cond The condition.
-
- -

-Definition at line 167 of file pt.h.

-

- - - - -
- - - - - - - - - -
#define PT_YIELD pt   ) 
-
- - - - - -
-   - - -

-Yield from the current protothread. -

-This function will yield the protothread, thereby allowing other processing to take place in the system.

-

Parameters:
- - -
pt A pointer to the protothread control structure.
-
-
Examples:
-dhcpc.c.
-

-Definition at line 290 of file pt.h.

-

- - - - -
- - - - - - - - - - - - -
#define PT_YIELD_UNTIL pt,
cond   ) 
-
- - - - - -
-   - - -

-Yield from the protothread until a condition occurs. -

-

Parameters:
- - - -
pt A pointer to the protothread control structure.
cond The condition.
-
-This function will yield the protothread, until the specified condition evaluates to true. -

-Definition at line 310 of file pt.h.

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00143.html b/components/net/uip/doc/html/a00143.html deleted file mode 100644 index 28224e073217ddbb8241ac18713de679b66bf641..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00143.html +++ /dev/null @@ -1,54 +0,0 @@ - - -uIP 1.0: Applications - - - - - -

Applications


Detailed Description

-The uIP distribution contains a number of example applications that can be either used directory or studied when learning to develop applications for uIP. -

- -

- - - - - - - -

-

- - - -

-

- - - -

-

- - - -

-

- - - -

-


Modules

 DNS resolver
 The uIP DNS resolver functions are used to lookup a hostname and map it to a numerical IP address.
 SMTP E-mail sender
 The Simple Mail Transfer Protocol (SMTP) as defined by RFC821 is the standard way of sending and transfering e-mail on the Internet.
 Hello, world
 A small example showing how to write applications with protosockets.
 Web client
 This example shows a HTTP client that is able to download web pages and files from web servers.
 Web server
 The uIP web server is a very simplistic implementation of an HTTP server.
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00144.html b/components/net/uip/doc/html/a00144.html deleted file mode 100644 index 5cca5bb290651536ceb5fc046dbb4b82685afa65..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00144.html +++ /dev/null @@ -1,328 +0,0 @@ - - -uIP 1.0: uIP configuration functions - - - - - -

uIP configuration functions
- -[The uIP TCP/IP stack] -


Detailed Description

-The uIP configuration functions are used for setting run-time parameters in uIP such as IP addresses. -

- -

- - - - - - - - - - - - - - - - - - - - - - - - -

Defines

#define uip_sethostaddr(addr)
 Set the IP address of this host.
#define uip_gethostaddr(addr)
 Get the IP address of this host.
#define uip_setdraddr(addr)
 Set the default router's IP address.
#define uip_setnetmask(addr)
 Set the netmask.
#define uip_getdraddr(addr)
 Get the default router's IP address.
#define uip_getnetmask(addr)
 Get the netmask.
#define uip_setethaddr(eaddr)
 Specifiy the Ethernet MAC address.
-


Define Documentation

-

- - - - -
- - - - - - - - - -
#define uip_getdraddr addr   ) 
-
- - - - - -
-   - - -

-Get the default router's IP address. -

-

Parameters:
- - -
addr A pointer to a uip_ipaddr_t variable that will be filled in with the IP address of the default router.
-
- -

-Definition at line 161 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_gethostaddr 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:

 uip_ipaddr_t hostaddr;
-
- uip_gethostaddr(&hostaddr);
-
Parameters:
- - -
addr A pointer to a uip_ipaddr_t variable that will be filled in with the currently configured IP address.
-
- -

-Definition at line 126 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_getnetmask addr   ) 
-
- - - - - -
-   - - -

-Get the netmask. -

-

Parameters:
- - -
addr A pointer to a uip_ipaddr_t variable that will be filled in with the value of the netmask.
-
- -

-Definition at line 171 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_setdraddr addr   ) 
-
- - - - - -
-   - - -

-Set the default router's IP address. -

-

Parameters:
- - -
addr A pointer to a uip_ipaddr_t variable containing the IP address of the default router.
-
-
See also:
uip_ipaddr()
- -

-Definition at line 138 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_setethaddr eaddr   ) 
-
- - - - - -
-   - - -

-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.
-
Parameters:
- - -
eaddr A pointer to a struct uip_eth_addr containing the Ethernet MAC address of the Ethernet card.
-
- -

-Definition at line 134 of file uip_arp.h.

-

- - - - -
- - - - - - - - - -
#define uip_sethostaddr addr   ) 
-
- - - - - -
-   - - -

-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:

 uip_ipaddr_t addr;
-
- uip_ipaddr(&addr, 192,168,1,2);
- uip_sethostaddr(&addr);
-
Parameters:
- - -
addr A pointer to an IP address of type uip_ipaddr_t;
-
-
See also:
uip_ipaddr()
-
Examples:
-dhcpc.c, example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 106 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_setnetmask addr   ) 
-
- - - - - -
-   - - -

-Set the netmask. -

-

Parameters:
- - -
addr A pointer to a uip_ipaddr_t variable containing the IP address of the netmask.
-
-
See also:
uip_ipaddr()
- -

-Definition at line 150 of file uip.h.

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00145.html b/components/net/uip/doc/html/a00145.html deleted file mode 100644 index d087f911b8174af749bece3340ae01c3a512d879..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00145.html +++ /dev/null @@ -1,106 +0,0 @@ - - -uIP 1.0: uIP initialization functions - - - - - -

uIP initialization functions
- -[The uIP TCP/IP stack] -


Detailed Description

-The uIP initialization functions are used for booting uIP. -

- -

- - - - - - - - - -

Functions

void uip_init (void)
 uIP initialization function.
void uip_setipid (u16_t id)
 uIP initialization function.
-


Function Documentation

-

- - - - -
- - - - - - - - - -
void uip_init void   ) 
-
- - - - - -
-   - - -

-uIP initialization function. -

-This function should be called at boot up to initilize the uIP TCP/IP stack.

Examples:
-example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 379 of file uip.c. -

-References UIP_LISTENPORTS.

-

- - - - -
- - - - - - - - - -
void uip_setipid u16_t  id  ) 
-
- - - - - -
-   - - -

-uIP initialization function. -

-This function may be used at boot time to set the initial ip_id. -

-Definition at line 181 of file uip.c.

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00146.html b/components/net/uip/doc/html/a00146.html deleted file mode 100644 index 33a3b5dd8403f140cff5224dad9f322e0c5f597f..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00146.html +++ /dev/null @@ -1,383 +0,0 @@ - - -uIP 1.0: uIP device driver functions - - - - - -

uIP device driver functions
- -[The uIP TCP/IP stack] -


Detailed Description

-These functions are used by a network device driver for interacting with uIP. -

- -

- - - - - - - - - - - - - - - - - - - - - - - - - - - -

Defines

#define uip_input()
 Process an incoming packet.
#define uip_periodic(conn)
 Periodic processing for a connection identified by its number.
-#define uip_conn_active(conn)   (uip_conns[conn].tcpstateflags != UIP_CLOSED)
#define uip_periodic_conn(conn)
 Perform periodic processing for a connection identified by a pointer to its structure.
#define uip_poll_conn(conn)
 Reuqest that a particular connection should be polled.
#define uip_udp_periodic(conn)
 Periodic processing for a UDP connection identified by its number.
#define uip_udp_periodic_conn(conn)
 Periodic processing for a UDP connection identified by a pointer to its structure.

Variables

u8_t uip_buf [UIP_BUFSIZE+2]
 The uIP packet buffer.
-


Define Documentation

-

- - - - -
- - - - -  - - - - -
#define uip_input  ) 
-
- - - - - -
-   - - -

-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.

  uip_len = devicedriver_poll();
-  if(uip_len > 0) {
-    uip_input();
-    if(uip_len > 0) {
-      devicedriver_send();
-    }
-  }
-

-

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:
  #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();
-      }
-    }
-
-
Examples:
-example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 257 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_periodic conn   ) 
-
- - - - - -
-   - - -

-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:

  for(i = 0; i < UIP_CONNS; ++i) {
-    uip_periodic(i);
-    if(uip_len > 0) {
-      devicedriver_send();
-    }
-  }
-

-

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:
  for(i = 0; i < UIP_CONNS; ++i) {
-    uip_periodic(i);
-    if(uip_len > 0) {
-      uip_arp_out();
-      ethernet_devicedriver_send();
-    }
-  }
-
-
Parameters:
- - -
conn The number of the connection which is to be periodically polled.
-
-
Examples:
-example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 301 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_periodic_conn conn   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
conn A pointer to the uip_conn struct for the connection to be processed.
-
- -

-Definition at line 323 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_poll_conn conn   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
conn A pointer to the uip_conn struct for the connection to be processed.
-
- -

-Definition at line 337 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_udp_periodic conn   ) 
-
- - - - - -
-   - - -

-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:

  for(i = 0; i < UIP_UDP_CONNS; i++) {
-    uip_udp_periodic(i);
-    if(uip_len > 0) {
-      devicedriver_send();
-    }
-  }
-

-

Note:
As for the uip_periodic() function, special care has to be taken when using uIP together with ARP and Ethernet:
  for(i = 0; i < UIP_UDP_CONNS; i++) {
-    uip_udp_periodic(i);
-    if(uip_len > 0) {
-      uip_arp_out();
-      ethernet_devicedriver_send();
-    }
-  }
-
-
Parameters:
- - -
conn The number of the UDP connection to be processed.
-
-
Examples:
-example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 373 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_udp_periodic_conn conn   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
conn A pointer to the uip_udp_conn struct for the connection to be processed.
-
- -

-Definition at line 390 of file uip.h.

-


Variable Documentation

-

- - - - -
- - - - -
u8_t uip_buf[UIP_BUFSIZE+2]
-
- - - - - -
-   - - -

-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:
 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);
-    }
- }
-
- -

-Definition at line 139 of file uip.c. -

-Referenced by uip_process().

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00147.html b/components/net/uip/doc/html/a00147.html deleted file mode 100644 index 8e7f247bb2569c3e99718a93f4cc464551bc74d7..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00147.html +++ /dev/null @@ -1,1046 +0,0 @@ - - -uIP 1.0: uIP application functions - - - - - -

uIP application functions
- -[The uIP TCP/IP stack] -


Detailed Description

-Functions used by an application running of top of uIP. -

- -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Defines

-#define uip_outstanding(conn)   ((conn)->len)
#define uip_datalen()
 The length of any incoming data that is currently avaliable (if avaliable) in the uip_appdata buffer.
#define uip_urgdatalen()
 The length of any out-of-band data (urgent data) that has arrived on the connection.
#define uip_close()
 Close the current connection.
#define uip_abort()
 Abort the current connection.
#define uip_stop()
 Tell the sending host to stop sending data.
-#define uip_stopped(conn)
 Find out if the current connection has been previously stopped with uip_stop().
#define uip_restart()
 Restart the current connection, if is has previously been stopped with uip_stop().
#define uip_udpconnection()
 Is the current connection a UDP connection?
#define uip_newdata()
 Is new incoming data available?
#define uip_acked()
 Has previously sent data been acknowledged?
#define uip_connected()
 Has the connection just been connected?
#define uip_closed()
 Has the connection been closed by the other end?
#define uip_aborted()
 Has the connection been aborted by the other end?
#define uip_timedout()
 Has the connection timed out?
#define uip_rexmit()
 Do we need to retransmit previously data?
#define uip_poll()
 Is the connection being polled by uIP?
-#define uip_initialmss()
 Get the initial maxium segment size (MSS) of the current connection.
#define uip_mss()
 Get the current maxium segment size that can be sent on the current connection.
#define uip_udp_remove(conn)
 Removed a UDP connection.
#define uip_udp_bind(conn, port)
 Bind a UDP connection to a local port.
#define uip_udp_send(len)
 Send a UDP datagram of length len on the current connection.

Functions

void uip_listen (u16_t port)
 Start listening to the specified port.
void uip_unlisten (u16_t port)
 Stop listening to the specified port.
uip_connuip_connect (uip_ipaddr_t *ripaddr, u16_t port)
 Connect to a remote host using TCP.
void uip_send (const void *data, int len)
 Send data on the current connection.
uip_udp_connuip_udp_new (uip_ipaddr_t *ripaddr, u16_t rport)
 Set up a new UDP connection.
-


Define Documentation

-

- - - - -
- - - - -  - - - - -
#define uip_abort  ) 
-
- - - - - -
-   - - -

-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.

Examples:
-webclient.c.
-

-Definition at line 581 of file uip.h. -

-Referenced by httpd_appcall(), and webclient_appcall().

-

- - - - -
- - - - -  - - - - -
#define uip_aborted  ) 
-
- - - - - -
-   - - -

-Has the connection been aborted by the other end? -

-Non-zero if the current connection has been aborted (reset) by the remote host.

Examples:
-smtp.c, telnetd.c, and webclient.c.
-

-Definition at line 680 of file uip.h. -

-Referenced by httpd_appcall(), smtp_appcall(), and webclient_appcall().

-

- - - - -
- - - - -  - - - - -
#define uip_acked  ) 
-
- - - - - -
-   - - -

-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.

Examples:
-telnetd.c, and webclient.c.
-

-Definition at line 648 of file uip.h. -

-Referenced by webclient_appcall().

-

- - - - -
- - - - -  - - - - -
#define uip_close  ) 
-
- - - - - -
-   - - -

-Close the current connection. -

-This function will close the current connection in a nice way.

Examples:
-telnetd.c.
-

-Definition at line 570 of file uip.h.

-

- - - - -
- - - - -  - - - - -
#define uip_closed  ) 
-
- - - - - -
-   - - -

-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.

Examples:
-smtp.c, telnetd.c, and webclient.c.
-

-Definition at line 670 of file uip.h. -

-Referenced by httpd_appcall(), smtp_appcall(), and webclient_appcall().

-

- - - - -
- - - - -  - - - - -
#define uip_connected  ) 
-
- - - - - -
-   - - -

-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()).

Examples:
-hello-world.c, telnetd.c, and webclient.c.
-

-Definition at line 660 of file uip.h. -

-Referenced by hello_world_appcall(), httpd_appcall(), and webclient_appcall().

-

- - - - -
- - - - -  - - - - -
#define uip_datalen  ) 
-
- - - - - -
-   - - -

-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.

Examples:
-dhcpc.c, telnetd.c, and webclient.c.
-

-Definition at line 550 of file uip.h.

-

- - - - -
- - - - -  - - - - -
#define uip_mss  ) 
-
- - - - - -
-   - - -

-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()).

Examples:
-telnetd.c, and webclient.c.
-

-Definition at line 737 of file uip.h.

-

- - - - -
- - - - -  - - - - -
#define uip_newdata  ) 
-
- - - - - -
-   - - -

-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.

Examples:
-dhcpc.c, resolv.c, telnetd.c, and webclient.c.
-

-Definition at line 637 of file uip.h. -

-Referenced by psock_newdata(), resolv_appcall(), and webclient_appcall().

-

- - - - -
- - - - -  - - - - -
#define uip_poll  ) 
-
- - - - - -
-   - - -

-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.

Examples:
-resolv.c, telnetd.c, and webclient.c.
-

-Definition at line 716 of file uip.h. -

-Referenced by httpd_appcall(), resolv_appcall(), and webclient_appcall().

-

- - - - -
- - - - -  - - - - -
#define uip_restart  ) 
-
- - - - - -
-   - - -

-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. -

-Definition at line 610 of file uip.h.

-

- - - - -
- - - - -  - - - - -
#define uip_rexmit  ) 
-
- - - - - -
-   - - -

-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.

Examples:
-telnetd.c, and webclient.c.
-

-Definition at line 702 of file uip.h. -

-Referenced by webclient_appcall().

-

- - - - -
- - - - -  - - - - -
#define uip_stop  ) 
-
- - - - - -
-   - - -

-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. -

-Definition at line 591 of file uip.h.

-

- - - - -
- - - - -  - - - - -
#define uip_timedout  ) 
-
- - - - - -
-   - - -

-Has the connection timed out? -

-Non-zero if the current connection has been aborted due to too many retransmissions.

Examples:
-smtp.c, telnetd.c, and webclient.c.
-

-Definition at line 690 of file uip.h. -

-Referenced by httpd_appcall(), smtp_appcall(), and webclient_appcall().

-

- - - - -
- - - - - - - - - - - - -
#define uip_udp_bind conn,
port   ) 
-
- - - - - -
-   - - -

-Bind a UDP connection to a local port. -

-

Parameters:
- - - -
conn A pointer to the uip_udp_conn structure for the connection.
port The local port number, in network byte order.
-
-
Examples:
-dhcpc.c.
-

-Definition at line 787 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_udp_remove conn   ) 
-
- - - - - -
-   - - -

-Removed a UDP connection. -

-

Parameters:
- - -
conn A pointer to the uip_udp_conn structure for the connection.
-
-
Examples:
-resolv.c.
-

-Definition at line 775 of file uip.h. -

-Referenced by resolv_conf().

-

- - - - -
- - - - - - - - - -
#define uip_udp_send len   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
len The length of the data in the uip_buf buffer.
-
-
Examples:
-resolv.c.
-

-Definition at line 800 of file uip.h.

-

- - - - -
- - - - -  - - - - -
#define uip_udpconnection  ) 
-
- - - - - -
-   - - -

-Is the current connection a UDP connection? -

-This function checks whether the current connection is a UDP connection. -

-Definition at line 626 of file uip.h.

-

- - - - -
- - - - -  - - - - -
#define uip_urgdatalen  ) 
-
- - - - - -
-   - - -

-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.
- -

-Definition at line 561 of file uip.h.

-


Function Documentation

-

- - - - -
- - - - - - - - - - - - - - - - - - -
struct uip_conn* uip_connect uip_ipaddr_t ripaddr,
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.

-Since this function requires the port number to be in network byte order, a conversion using HTONS() or htons() is necessary.

-
 uip_ipaddr_t ipaddr;
-
- uip_ipaddr(&ipaddr, 192,168,1,2);
- uip_connect(&ipaddr, HTONS(80));
-

-

Parameters:
- - - -
ripaddr The IP address of the remote hot.
port A 16-bit port number in network byte order.
-
-
Returns:
A pointer to the uIP connection identifier for the new connection, or NULL if no connection could be allocated.
-
Examples:
-smtp.c, and webclient.c.
-

-Definition at line 407 of file uip.c. -

-References htons(), uip_conn::lport, uip_conn::tcpstateflags, UIP_CLOSED, uip_conn, UIP_CONNS, and uip_conns. -

-Referenced by smtp_send(), and webclient_get().

-

- - - - -
- - - - - - - - - -
void uip_listen u16_t  port  ) 
-
- - - - - -
-   - - -

-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.
-
 uip_listen(HTONS(80));
-

-

Parameters:
- - -
port A 16-bit port number in network byte order.
-
-
Examples:
-hello-world.c, and telnetd.c.
-

-Definition at line 529 of file uip.c. -

-References UIP_LISTENPORTS. -

-Referenced by hello_world_init(), and httpd_init().

-

- - - - -
- - - - - - - - - - - - - - - - - - -
void uip_send const void *  data,
int  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.
-
Parameters:
- - - -
data A pointer to the data which is to be sent.
len The maximum amount of data bytes to be sent.
-
-
Examples:
-dhcpc.c, telnetd.c, and webclient.c.
-

-Definition at line 1888 of file uip.c. -

-References uip_sappdata, and uip_slen.

-

- - - - -
- - - - - - - - - - - - - - - - - - -
struct uip_udp_conn* uip_udp_new uip_ipaddr_t ripaddr,
u16_t  rport
-
- - - - - -
-   - - -

-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:

 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));
- }
-
Parameters:
- - - -
ripaddr The IP address of the remote host.
rport The remote port number in network byte order.
-
-
Returns:
The uip_udp_conn structure for the new connection or NULL if no connection could be allocated.
-
Examples:
-dhcpc.c, and resolv.c.
-

-Definition at line 473 of file uip.c. -

-References htons(), uip_udp_conn::lport, uip_udp_conn, UIP_UDP_CONNS, and uip_udp_conns. -

-Referenced by resolv_conf().

-

- - - - -
- - - - - - - - - -
void uip_unlisten 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.
-

-

Parameters:
- - -
port A 16-bit port number in network byte order.
-
- -

-Definition at line 518 of file uip.c. -

-References UIP_LISTENPORTS.

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00148.html b/components/net/uip/doc/html/a00148.html deleted file mode 100644 index 16158a41afb44902746e516d63bf8901e3148493..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00148.html +++ /dev/null @@ -1,634 +0,0 @@ - - -uIP 1.0: uIP conversion functions - - - - - -

uIP conversion functions
- -[The uIP TCP/IP stack] -


Detailed Description

-These functions can be used for converting between different data formats used by uIP. -

- -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Defines

#define uip_ipaddr(addr, addr0, addr1, addr2, addr3)
 Construct an IP address from four bytes.
#define uip_ip6addr(addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7)
 Construct an IPv6 address from eight 16-bit words.
#define uip_ipaddr_copy(dest, src)
 Copy an IP address to another IP address.
#define uip_ipaddr_cmp(addr1, addr2)
 Compare two IP addresses.
#define uip_ipaddr_maskcmp(addr1, addr2, mask)
 Compare two IP addresses with netmasks.
#define uip_ipaddr_mask(dest, src, mask)
 Mask out the network part of an IP address.
#define uip_ipaddr1(addr)
 Pick the first octet of an IP address.
#define uip_ipaddr2(addr)
 Pick the second octet of an IP address.
#define uip_ipaddr3(addr)
 Pick the third octet of an IP address.
#define uip_ipaddr4(addr)
 Pick the fourth octet of an IP address.
#define HTONS(n)
 Convert 16-bit quantity from host byte order to network byte order.
-#define ntohs   htons

Functions

u16_t htons (u16_t val)
 Convert 16-bit quantity from host byte order to network byte order.
-


Define Documentation

-

- - - - -
- - - - - - - - - -
#define HTONS  ) 
-
- - - - - -
-   - - -

-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.

Examples:
-dhcpc.c, hello-world.c, resolv.c, smtp.c, and telnetd.c.
-

-Definition at line 1070 of file uip.h. -

-Referenced by hello_world_init(), htons(), httpd_init(), resolv_appcall(), resolv_conf(), smtp_send(), uip_arp_arpin(), and uip_process().

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#define uip_ip6addr addr,
addr0,
addr1,
addr2,
addr3,
addr4,
addr5,
addr6,
addr7   ) 
-
- - - - - -
-   - - -

-Construct an IPv6 address from eight 16-bit words. -

-This function constructs an IPv6 address. -

-Definition at line 852 of file uip.h.

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - -
#define uip_ipaddr addr,
addr0,
addr1,
addr2,
addr3   ) 
-
- - - - - -
-   - - -

-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:

 uip_ipaddr_t ipaddr;
- struct uip_conn *c;
- 
- uip_ipaddr(&ipaddr, 192,168,1,2);
- c = uip_connect(&ipaddr, HTONS(80));
-

-

Parameters:
- - - - - - -
addr A pointer to a uip_ipaddr_t variable that will be filled in with the IP address.
addr0 The first octet of the IP address.
addr1 The second octet of the IP address.
addr2 The third octet of the IP address.
addr3 The forth octet of the IP address.
-
-
Examples:
-dhcpc.c, example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 840 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_ipaddr1 addr   ) 
-
- - - - - -
-   - - -

-Pick the first octet of an IP address. -

-Picks out the first octet of an IP address.

-Example:

 uip_ipaddr_t ipaddr;
- u8_t octet;
-
- uip_ipaddr(&ipaddr, 1,2,3,4);
- octet = uip_ipaddr1(&ipaddr);
-

-In the example above, the variable "octet" will contain the value 1.

Examples:
-dhcpc.c.
-

-Definition at line 995 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_ipaddr2 addr   ) 
-
- - - - - -
-   - - -

-Pick the second octet of an IP address. -

-Picks out the second octet of an IP address.

-Example:

 uip_ipaddr_t ipaddr;
- u8_t octet;
-
- uip_ipaddr(&ipaddr, 1,2,3,4);
- octet = uip_ipaddr2(&ipaddr);
-

-In the example above, the variable "octet" will contain the value 2.

Examples:
-dhcpc.c.
-

-Definition at line 1015 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_ipaddr3 addr   ) 
-
- - - - - -
-   - - -

-Pick the third octet of an IP address. -

-Picks out the third octet of an IP address.

-Example:

 uip_ipaddr_t ipaddr;
- u8_t octet;
-
- uip_ipaddr(&ipaddr, 1,2,3,4);
- octet = uip_ipaddr3(&ipaddr);
-

-In the example above, the variable "octet" will contain the value 3.

Examples:
-dhcpc.c.
-

-Definition at line 1035 of file uip.h.

-

- - - - -
- - - - - - - - - -
#define uip_ipaddr4 addr   ) 
-
- - - - - -
-   - - -

-Pick the fourth octet of an IP address. -

-Picks out the fourth octet of an IP address.

-Example:

 uip_ipaddr_t ipaddr;
- u8_t octet;
-
- uip_ipaddr(&ipaddr, 1,2,3,4);
- octet = uip_ipaddr4(&ipaddr);
-

-In the example above, the variable "octet" will contain the value 4.

Examples:
-dhcpc.c.
-

-Definition at line 1055 of file uip.h.

-

- - - - -
- - - - - - - - - - - - -
#define uip_ipaddr_cmp addr1,
addr2   ) 
-
- - - - - -
-   - - -

-Compare two IP addresses. -

-Compares two IP addresses.

-Example:

 uip_ipaddr_t ipaddr1, ipaddr2;
-
- uip_ipaddr(&ipaddr1, 192,16,1,2);
- if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) {
-    printf("They are the same");
- }
-

-

Parameters:
- - - -
addr1 The first IP address.
addr2 The second IP address.
-
- -

-Definition at line 911 of file uip.h. -

-Referenced by uip_arp_arpin(), uip_arp_out(), and uip_process().

-

- - - - -
- - - - - - - - - - - - -
#define uip_ipaddr_copy dest,
src   ) 
-
- - - - - -
-   - - -

-Copy an IP address to another IP address. -

-Copies an IP address from one place to another.

-Example:

 uip_ipaddr_t ipaddr1, ipaddr2;
-
- uip_ipaddr(&ipaddr1, 192,16,1,2);
- uip_ipaddr_copy(&ipaddr2, &ipaddr1);
-

-

Parameters:
- - - -
dest The destination for the copy.
src The source from where to copy.
-
-
Examples:
-smtp.c.
-

-Definition at line 882 of file uip.h. -

-Referenced by smtp_configure(), uip_arp_out(), and uip_process().

-

- - - - -
- - - - - - - - - - - - - - - -
#define uip_ipaddr_mask dest,
src,
mask   ) 
-
- - - - - -
-   - - -

-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:

 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);
-

-In the example above, the variable "ipaddr2" will contain the IP address 192.168.1.0.

-

Parameters:
- - - - -
dest Where the result is to be placed.
src The IP address.
mask The netmask.
-
- -

-Definition at line 972 of file uip.h.

-

- - - - -
- - - - - - - - - - - - - - - -
#define uip_ipaddr_maskcmp addr1,
addr2,
mask   ) 
-
- - - - - -
-   - - -

-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:

 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");
- }
-

-

Parameters:
- - - - -
addr1 The first IP address.
addr2 The second IP address.
mask The netmask.
-
- -

-Definition at line 941 of file uip.h. -

-Referenced by uip_arp_out().

-


Function Documentation

-

- - - - -
- - - - - - - - - -
u16_t htons u16_t  val  ) 
-
- - - - - -
-   - - -

-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.

Examples:
-example-mainloop-with-arp.c, resolv.c, and webclient.c.
-

-Definition at line 1882 of file uip.c. -

-References HTONS. -

-Referenced by uip_chksum(), uip_connect(), uip_ipchksum(), uip_udp_new(), and webclient_get().

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00149.html b/components/net/uip/doc/html/a00149.html deleted file mode 100644 index ad39b08344e0b94315eae7bc21236c82d2da47e1..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00149.html +++ /dev/null @@ -1,68 +0,0 @@ - - -uIP 1.0: Variables used in uIP device drivers - - - - - -

Variables used in uIP device drivers
- -[The uIP TCP/IP stack] -


Detailed Description

-uIP has a few global variables that are used in device drivers for uIP. -

- -

- - - - - - -

Variables

u16_t uip_len
 The length of the packet in the uip_buf buffer.
-


Variable Documentation

-

- - - - -
- - - - -
u16_t uip_len
-
- - - - - -
-   - - -

-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.

Examples:
-example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 155 of file uip.c. -

-Referenced by uip_arp_arpin(), uip_process(), and uip_split_output().

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00150.html b/components/net/uip/doc/html/a00150.html deleted file mode 100644 index 56806e01f6811027680292784b3cf99d113216da..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00150.html +++ /dev/null @@ -1,1248 +0,0 @@ - - -uIP 1.0: The uIP TCP/IP stack - - - - - -

The uIP TCP/IP stack


Detailed Description

-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. -

- - - - - - - -

-

- - - -

-

- - - - -

-

- - - -

-

- - - -

-

- - - -

-

- - - -

-

- - - -

-

- - - -

-

- - - -

-

- - - -

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Files

file  uip.h
 Header file for the uIP TCP/IP stack.
file  uip.c
 The uIP TCP/IP stack code.

Modules

 uIP configuration functions
 The uIP configuration functions are used for setting run-time parameters in uIP such as IP addresses.
 uIP initialization functions
 The uIP initialization functions are used for booting uIP.
 uIP device driver functions
 These functions are used by a network device driver for interacting with uIP.
 uIP application functions
 Functions used by an application running of top of uIP.
 uIP conversion functions
 These functions can be used for converting between different data formats used by uIP.
 Variables used in uIP device drivers
 uIP has a few global variables that are used in device drivers for uIP.
 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.
 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.
 Architecture specific uIP functions
 The functions in the architecture specific module implement the IP check sum and 32-bit additions.

Data Structures

struct  uip_conn
 Representation of a uIP TCP connection. More...
struct  uip_udp_conn
 Representation of a uIP UDP connection. More...
struct  uip_stats
 The structure holding the TCP/IP statistics that are gathered if UIP_STATISTICS is set to 1. More...
struct  uip_tcpip_hdr
struct  uip_icmpip_hdr
struct  uip_udpip_hdr
struct  uip_eth_addr
 Representation of a 48-bit Ethernet address. More...

Defines

-#define UIP_ACKDATA   1
-#define UIP_NEWDATA   2
-#define UIP_REXMIT   4
-#define UIP_POLL   8
-#define UIP_CLOSE   16
-#define UIP_ABORT   32
-#define UIP_CONNECTED   64
-#define UIP_TIMEDOUT   128
-#define UIP_DATA   1
-#define UIP_TIMER   2
-#define UIP_POLL_REQUEST   3
-#define UIP_UDP_SEND_CONN   4
-#define UIP_UDP_TIMER   5
-#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
#define UIP_APPDATA_SIZE
 The buffer size available for user data in the uip_buf buffer.
-#define UIP_PROTO_ICMP   1
-#define UIP_PROTO_TCP   6
-#define UIP_PROTO_UDP   17
-#define UIP_PROTO_ICMP6   58
-#define UIP_IPH_LEN   20
-#define UIP_UDPH_LEN   8
-#define UIP_TCPH_LEN   20
-#define UIP_IPUDPH_LEN   (UIP_UDPH_LEN + UIP_IPH_LEN)
-#define UIP_IPTCPH_LEN   (UIP_TCPH_LEN + UIP_IPH_LEN)
-#define UIP_TCPIP_HLEN   UIP_IPTCPH_LEN
-#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
-#define TCP_OPT_NOOP   1
-#define TCP_OPT_MSS   2
-#define TCP_OPT_MSS_LEN   4
-#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
-#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])
-#define UIP_STAT(s)
-#define UIP_LOG(m)

Typedefs

-typedef u16_t uip_ip4addr_t [2]
 Repressentation of an IP address.
-typedef u16_t uip_ip6addr_t [8]
-typedef uip_ip4addr_t uip_ipaddr_t

Functions

-void uip_process (u8_t flag)
u16_t uip_chksum (u16_t *buf, u16_t len)
 Calculate the Internet checksum over a buffer.
u16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf.
u16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
u16_t uip_udpchksum (void)
 Calculate the UDP checksum of the packet in uip_buf and uip_appdata.
void uip_setipid (u16_t id)
 uIP initialization function.
void uip_add32 (u8_t *op32, u16_t op16)
 Carry out a 32-bit addition.
void uip_init (void)
 uIP initialization function.
uip_connuip_connect (uip_ipaddr_t *ripaddr, u16_t rport)
 Connect to a remote host using TCP.
uip_udp_connuip_udp_new (uip_ipaddr_t *ripaddr, u16_t rport)
 Set up a new UDP connection.
void uip_unlisten (u16_t port)
 Stop listening to the specified port.
void uip_listen (u16_t port)
 Start listening to the specified port.
u16_t htons (u16_t val)
 Convert 16-bit quantity from host byte order to network byte order.
void uip_send (const void *data, int len)
 Send data on the current connection.

Variables

void * uip_appdata
 Pointer to the application data in the packet buffer.
uip_connuip_conn
 Pointer to the current TCP connection.
-uip_conn uip_conns [UIP_CONNS]
-uip_udp_connuip_udp_conn
 The current UDP connection.
-uip_udp_conn uip_udp_conns [UIP_UDP_CONNS]
uip_stats uip_stat
 The uIP TCP/IP statistics.
-u8_t uip_flags
-uip_ipaddr_t uip_hostaddr
-uip_ipaddr_t uip_netmask
-uip_ipaddr_t uip_draddr
-uip_ipaddr_t uip_hostaddr
-uip_ipaddr_t uip_draddr
-uip_ipaddr_t uip_netmask
-uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}}
u8_t uip_buf [UIP_BUFSIZE+2]
 The uIP packet buffer.
void * uip_appdata
 Pointer to the application data in the packet buffer.
-void * uip_sappdata
u16_t uip_len
 The length of the packet in the uip_buf buffer.
-u16_t uip_slen
-u8_t uip_flags
uip_connuip_conn
 Pointer to the current TCP connection.
-uip_conn uip_conns [UIP_CONNS]
-u16_t uip_listenports [UIP_LISTENPORTS]
-uip_udp_connuip_udp_conn
 The current UDP connection.
-uip_udp_conn uip_udp_conns [UIP_UDP_CONNS]
-u8_t uip_acc32 [4]
 4-byte array used for the 32-bit sequence number calculations.
-


Define Documentation

-

- - - - -
- - - - -
#define UIP_APPDATA_SIZE
-
- - - - - -
-   - - -

-The buffer size available for user data in the uip_buf buffer. -

-This macro holds the available size for user data in the uip_buf buffer. The macro is intended to be used for checking bounds of available user data.

-Example:

 snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i);
-
-

-Definition at line 1506 of file uip.h.

-


Function Documentation

-

- - - - -
- - - - - - - - - -
u16_t htons u16_t  val  ) 
-
- - - - - -
-   - - -

-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. -

-Definition at line 1882 of file uip.c. -

-References HTONS. -

-Referenced by uip_chksum(), uip_connect(), uip_ipchksum(), uip_udp_new(), and webclient_get().

-

- - - - -
- - - - - - - - - - - - - - - - - - -
void uip_add32 u8_t op32,
u16_t  op16
-
- - - - - -
-   - - -

-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).
-
Parameters:
- - - -
op32 A pointer to a 4-byte array representing a 32-bit integer in network byte order (big endian).
op16 A 16-bit integer in host byte order.
-
- -

-Definition at line 249 of file uip.c. -

-Referenced by uip_split_output().

-

- - - - -
- - - - - - - - - - - - - - - - - - -
u16_t uip_chksum u16_t buf,
u16_t  len
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - - -
buf A pointer to the buffer over which the checksum is to be computed.
len The length of the buffer over which the checksum is to be computed.
-
-
Returns:
The Internet checksum of the buffer.
- -

-Definition at line 311 of file uip.c. -

-References htons().

-

- - - - -
- - - - - - - - - - - - - - - - - - -
struct uip_conn* uip_connect uip_ipaddr_t ripaddr,
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.

-Since this function requires the port number to be in network byte order, a conversion using HTONS() or htons() is necessary.

-
 uip_ipaddr_t ipaddr;
-
- uip_ipaddr(&ipaddr, 192,168,1,2);
- uip_connect(&ipaddr, HTONS(80));
-

-

Parameters:
- - - -
ripaddr The IP address of the remote hot.
port A 16-bit port number in network byte order.
-
-
Returns:
A pointer to the uIP connection identifier for the new connection, or NULL if no connection could be allocated.
- -

-Definition at line 407 of file uip.c. -

-References htons(), uip_conn::lport, uip_conn::tcpstateflags, UIP_CLOSED, uip_conn, uip_conns, and UIP_CONNS. -

-Referenced by smtp_send(), and webclient_get().

-

- - - - -
- - - - - - - - - -
void uip_init void   ) 
-
- - - - - -
-   - - -

-uIP initialization function. -

-This function should be called at boot up to initilize the uIP TCP/IP stack. -

-Definition at line 379 of file uip.c. -

-References UIP_LISTENPORTS.

-

- - - - -
- - - - - - - - - -
u16_t uip_ipchksum void   ) 
-
- - - - - -
-   - - -

-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.

-

Returns:
The IP header checksum of the IP header in the uip_buf buffer.
- -

-Definition at line 318 of file uip.c. -

-References DEBUG_PRINTF, htons(), UIP_IPH_LEN, and UIP_LLH_LEN. -

-Referenced by uip_process(), and uip_split_output().

-

- - - - -
- - - - - - - - - -
void uip_listen u16_t  port  ) 
-
- - - - - -
-   - - -

-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.
-
 uip_listen(HTONS(80));
-

-

Parameters:
- - -
port A 16-bit port number in network byte order.
-
- -

-Definition at line 529 of file uip.c. -

-References UIP_LISTENPORTS. -

-Referenced by hello_world_init(), and httpd_init().

-

- - - - -
- - - - - - - - - - - - - - - - - - -
void uip_send const void *  data,
int  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.
-
Parameters:
- - - -
data A pointer to the data which is to be sent.
len The maximum amount of data bytes to be sent.
-
- -

-Definition at line 1888 of file uip.c. -

-References uip_sappdata, and uip_slen.

-

- - - - -
- - - - - - - - - -
void uip_setipid u16_t  id  ) 
-
- - - - - -
-   - - -

-uIP initialization function. -

-This function may be used at boot time to set the initial ip_id. -

-Definition at line 181 of file uip.c.

-

- - - - -
- - - - - - - - - -
u16_t uip_tcpchksum 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.

-

Returns:
The TCP checksum of the TCP segment in uip_buf and pointed to by uip_appdata.
- -

-Definition at line 364 of file uip.c. -

-References UIP_PROTO_TCP. -

-Referenced by uip_split_output().

-

- - - - -
- - - - - - - - - - - - - - - - - - -
struct uip_udp_conn* uip_udp_new uip_ipaddr_t ripaddr,
u16_t  rport
-
- - - - - -
-   - - -

-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:

 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));
- }
-
Parameters:
- - - -
ripaddr The IP address of the remote host.
rport The remote port number in network byte order.
-
-
Returns:
The uip_udp_conn structure for the new connection or NULL if no connection could be allocated.
- -

-Definition at line 473 of file uip.c. -

-References htons(), uip_udp_conn::lport, uip_udp_conn, uip_udp_conns, and UIP_UDP_CONNS. -

-Referenced by resolv_conf().

-

- - - - -
- - - - - - - - - -
u16_t uip_udpchksum 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.

-

Returns:
The UDP checksum of the UDP segment in uip_buf and pointed to by uip_appdata.
- -

-Referenced by uip_process().

-

- - - - -
- - - - - - - - - -
void uip_unlisten 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.
-

-

Parameters:
- - -
port A 16-bit port number in network byte order.
-
- -

-Definition at line 518 of file uip.c. -

-References UIP_LISTENPORTS.

-


Variable Documentation

-

- - - - -
- - - - -
void* uip_appdata
-
- - - - - -
-   - - -

-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(). -

-Definition at line 143 of file uip.c. -

-Referenced by uip_process(), and uip_split_output().

-

- - - - -
- - - - -
void* uip_appdata
-
- - - - - -
-   - - -

-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().

Examples:
-dhcpc.c, resolv.c, telnetd.c, and webclient.c.
-

-Definition at line 143 of file uip.c. -

-Referenced by uip_process(), and uip_split_output().

-

- - - - -
- - - - -
u8_t uip_buf[UIP_BUFSIZE+2]
-
- - - - - -
-   - - -

-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:
 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);
-    }
- }
-
- -

-Definition at line 139 of file uip.c. -

-Referenced by uip_process().

-

- - - - -
- - - - -
struct uip_conn* uip_conn
-
- - - - - -
-   - - -

-Pointer to the current TCP connection. -

-The uip_conn pointer can be used to access the current TCP connection. -

-Definition at line 163 of file uip.c. -

-Referenced by uip_connect().

-

- - - - -
- - - - -
struct uip_conn* uip_conn
-
- - - - - -
-   - - -

-Pointer to the current TCP connection. -

-The uip_conn pointer can be used to access the current TCP connection.

Examples:
-hello-world.c, smtp.c, and webclient.c.
-

-Definition at line 163 of file uip.c. -

-Referenced by uip_connect().

-

- - - - -
- - - - -
u16_t uip_len
-
- - - - - -
-   - - -

-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. -

-Definition at line 155 of file uip.c. -

-Referenced by uip_arp_arpin(), uip_process(), and uip_split_output().

-

- - - - -
- - - - -
struct uip_stats uip_stat
-
- - - - - -
-   - - -

-The uIP TCP/IP statistics. -

-This is the variable in which the uIP TCP/IP statistics are gathered. -

-Referenced by uip_process().

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00151.html b/components/net/uip/doc/html/a00151.html deleted file mode 100644 index aa144cf2d078282b38df5cb355bc79bf4f978748..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00151.html +++ /dev/null @@ -1,221 +0,0 @@ - - -uIP 1.0: Architecture specific uIP functions - - - - - -

Architecture specific uIP functions
- -[The uIP TCP/IP stack] -


Detailed Description

-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. -

- - - - - - - -

-

- - - - - - - - - - - - - - - - -

Files

file  uip_arch.h
 Declarations of architecture specific functions.

Functions

void uip_add32 (u8_t *op32, u16_t op16)
 Carry out a 32-bit addition.
u16_t uip_chksum (u16_t *buf, u16_t len)
 Calculate the Internet checksum over a buffer.
u16_t uip_ipchksum (void)
 Calculate the IP header checksum of the packet header in uip_buf.
u16_t uip_tcpchksum (void)
 Calculate the TCP checksum of the packet in uip_buf and uip_appdata.

Variables

-u8_t uip_acc32 [4]
 4-byte array used for the 32-bit sequence number calculations.
-


Function Documentation

-

- - - - -
- - - - - - - - - - - - - - - - - - -
void uip_add32 u8_t op32,
u16_t  op16
-
- - - - - -
-   - - -

-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).
-
Parameters:
- - - -
op32 A pointer to a 4-byte array representing a 32-bit integer in network byte order (big endian).
op16 A 16-bit integer in host byte order.
-
- -

-Definition at line 249 of file uip.c. -

-Referenced by uip_split_output().

-

- - - - -
- - - - - - - - - - - - - - - - - - -
u16_t uip_chksum u16_t buf,
u16_t  len
-
- - - - - -
-   - - -

-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.
-
Parameters:
- - - -
buf A pointer to the buffer over which the checksum is to be computed.
len The length of the buffer over which the checksum is to be computed.
-
-
Returns:
The Internet checksum of the buffer.
-
-

- - - - -
- - - - - - - - - -
u16_t uip_ipchksum void   ) 
-
- - - - - -
-   - - -

-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.

-

Returns:
The IP header checksum of the IP header in the uip_buf buffer.
-
-

- - - - -
- - - - - - - - - -
u16_t uip_tcpchksum 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.
-
Returns:
The TCP checksum of the TCP segment in uip_buf and pointed to by uip_appdata.
-
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00152.html b/components/net/uip/doc/html/a00152.html deleted file mode 100644 index b44513c477788677cb0a217b08ecb9094b0d3cf1..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00152.html +++ /dev/null @@ -1,205 +0,0 @@ - - -uIP 1.0: uIP Address Resolution Protocol - - - - - -

uIP Address Resolution Protocol
- -[The uIP TCP/IP stack] -


Detailed Description

-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.
- -

- - - - - - - -

-

- - - -

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Files

file  uip_arp.h
 Macros and definitions for the ARP module.
file  uip_arp.c
 Implementation of the ARP Address Resolution Protocol.

Data Structures

struct  uip_eth_hdr
 The Ethernet header. More...

Defines

-#define UIP_ETHTYPE_ARP   0x0806
-#define UIP_ETHTYPE_IP   0x0800
-#define UIP_ETHTYPE_IP6   0x86dd
-#define uip_arp_ipin()
-#define ARP_REQUEST   1
-#define ARP_REPLY   2
-#define ARP_HWTYPE_ETH   1
-#define BUF   ((struct arp_hdr *)&uip_buf[0])
-#define IPBUF   ((struct ethip_hdr *)&uip_buf[0])

Functions

-void uip_arp_init (void)
 Initialize the ARP module.
void uip_arp_arpin (void)
 ARP processing for incoming ARP packets.
void uip_arp_out (void)
 Prepend Ethernet header to an outbound IP packet and see if we need to send out an ARP request.
void uip_arp_timer (void)
 Periodic ARP processing function.

Variables

-uip_eth_addr uip_ethaddr
-


Function Documentation

-

- - - - -
- - - - - - - - - -
void uip_arp_arpin void   ) 
-
- - - - - -
-   - - -

-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.

Examples:
-example-mainloop-with-arp.c.
-

-Definition at line 278 of file uip_arp.c. -

-References uip_eth_addr::addr, ARP_REPLY, ARP_REQUEST, BUF, HTONS, uip_ethaddr, UIP_ETHTYPE_ARP, uip_hostaddr, uip_ipaddr_cmp, and uip_len.

-

- - - - -
- - - - - - - - - -
void uip_arp_out void   ) 
-
- - - - - -
-   - - -

-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.

Examples:
-example-mainloop-with-arp.c.
-

-Definition at line 354 of file uip_arp.c. -

-References uip_eth_addr::addr, IPBUF, UIP_ARPTAB_SIZE, uip_draddr, uip_hostaddr, uip_ipaddr_cmp, uip_ipaddr_copy, and uip_ipaddr_maskcmp.

-

- - - - -
- - - - - - - - - -
void uip_arp_timer void   ) 
-
- - - - - -
-   - - -

-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.

Examples:
-example-mainloop-with-arp.c.
-

-Definition at line 142 of file uip_arp.c. -

-References UIP_ARP_MAXAGE, and UIP_ARPTAB_SIZE.

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00153.html b/components/net/uip/doc/html/a00153.html deleted file mode 100644 index e30399531998d90847cf6ce053e094219f871f76..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00153.html +++ /dev/null @@ -1,1059 +0,0 @@ - - -uIP 1.0: Configuration options for uIP - - - - - -

Configuration options for uIP


Detailed Description

-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.
- -

- - - - - - - -

-

- - - -

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Files

file  uip-conf.h
 An example uIP configuration file.
file  uipopt.h
 Configuration options for uIP.

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.

-#define UIP_CONF_MAX_CONNECTIONS
 Maximum number of TCP connections.
-#define UIP_CONF_MAX_LISTENPORTS
 Maximum number of listening TCP ports.
-#define UIP_CONF_BUFFER_SIZE
 uIP buffer size.
-#define UIP_CONF_BYTE_ORDER
 CPU byte order.
-#define UIP_CONF_LOGGING
 Logging on or off.
-#define UIP_CONF_UDP
 UDP support on or off.
-#define UIP_CONF_UDP_CHECKSUMS
 UDP checksums on or off.
-#define UIP_CONF_STATISTICS
 uIP statistics on or off
typedef uint8_t u8_t
 8 bit datatype
typedef uint16_t u16_t
 16 bit datatype
typedef unsigned short uip_stats_t
 Statistics datatype.

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.

#define UIP_FIXEDADDR
 Determines if uIP should use a fixed IP address or not.
#define UIP_PINGADDRCONF
 Ping IP address asignment.
#define UIP_FIXEDETHADDR
 Specifies if the uIP ARP module should be compiled with a fixed Ethernet MAC address or not.

IP configuration options

#define UIP_TTL   64
 The IP TTL (time to live) of IP packets sent by uIP.
#define UIP_REASSEMBLY
 Turn on support for IP packet reassembly.
-#define UIP_REASS_MAXAGE   40
 The maximum time an IP fragment should wait in the reassembly buffer before it is dropped.

UDP configuration options

-#define UIP_UDP
 Toggles wether UDP support should be compiled in or not.
#define UIP_UDP_CHECKSUMS
 Toggles if UDP checksums should be used or not.
-#define UIP_UDP_CONNS
 The maximum amount of concurrent UDP connections.

TCP configuration options

#define UIP_ACTIVE_OPEN
 Determines if support for opening connections from uIP should be compiled in.
#define UIP_CONNS
 The maximum number of simultaneously open TCP connections.
#define UIP_LISTENPORTS
 The maximum number of simultaneously listening TCP ports.
#define UIP_URGDATA
 Determines if support for TCP urgent data notification should be compiled in.
#define UIP_RTO   3
 The initial retransmission timeout counted in timer pulses.
#define UIP_MAXRTX   8
 The maximum number of times a segment should be retransmitted before the connection should be aborted.
#define UIP_MAXSYNRTX   5
 The maximum number of times a SYN segment should be retransmitted before a connection request should be deemed to have been unsuccessful.
#define UIP_TCP_MSS   (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
 The TCP maximum segment size.
#define UIP_RECEIVE_WINDOW
 The size of the advertised receiver's window.
#define UIP_TIME_WAIT_TIMEOUT   120
 How long a connection should stay in the TIME_WAIT state.

ARP configuration options

#define UIP_ARPTAB_SIZE
 The size of the ARP table.
#define UIP_ARP_MAXAGE   120
 The maxium age of ARP table entries measured in 10ths of seconds.

General configuration options

#define UIP_BUFSIZE
 The size of the uIP packet buffer.
#define UIP_STATISTICS
 Determines if statistics support should be compiled in.
#define UIP_LOGGING
 Determines if logging of certain events should be compiled in.
#define UIP_BROADCAST
 Broadcast support.
#define UIP_LLH_LEN
 The link level header length.
void uip_log (char *msg)
 Print out a uIP log message.

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.

#define UIP_BYTE_ORDER
 The byte order of the CPU architecture on which uIP is to be run.

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.

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
-


-#define UIP_APPCALL   smtp_appcall
 The name of the application function that uIP should call in response to TCP/IP events.
typedef smtp_state uip_tcp_appstate_t
 The type of the application state that is to be stored in the uip_conn structure.
typedef int uip_udp_appstate_t
 The type of the application state that is to be stored in the uip_conn structure.

Defines

-#define UIP_LITTLE_ENDIAN   3412
-#define UIP_BIG_ENDIAN   1234
-


Define Documentation

-

- - - - -
- - - - -
#define UIP_ACTIVE_OPEN
-
- - - - - -
-   - - -

-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. -

-Definition at line 233 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_ARP_MAXAGE   120
-
- - - - - -
-   - - -

-The maxium age of ARP table entries measured in 10ths of seconds. -

-An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD default). -

-Definition at line 358 of file uipopt.h. -

-Referenced by uip_arp_timer().

-

- - - - -
- - - - -
#define UIP_ARPTAB_SIZE
-
- - - - - -
-   - - -

-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. -

-Definition at line 349 of file uipopt.h. -

-Referenced by uip_arp_init(), uip_arp_out(), and uip_arp_timer().

-

- - - - -
- - - - -
#define UIP_BROADCAST
-
- - - - - -
-   - - -

-Broadcast support. -

-This flag configures IP broadcast support. This is useful only together with UDP. -

-Definition at line 423 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_BUFSIZE
-
- - - - - -
-   - - -

-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. -

-Definition at line 379 of file uipopt.h. -

-Referenced by uip_split_output().

-

- - - - -
- - - - -
#define UIP_BYTE_ORDER
-
- - - - - -
-   - - -

-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). -

-Definition at line 475 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_CONNS
-
- - - - - -
-   - - -

-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.

Examples:
-example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 245 of file uipopt.h. -

-Referenced by uip_connect().

-

- - - - -
- - - - -
#define UIP_FIXEDADDR
-
- - - - - -
-   - - -

-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. -

-Definition at line 97 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_FIXEDETHADDR
-
- - - - - -
-   - - -

-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. -

-Definition at line 127 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_LISTENPORTS
-
- - - - - -
-   - - -

-The maximum number of simultaneously listening TCP ports. -

-Each listening TCP port requires 2 bytes of memory. -

-Definition at line 259 of file uipopt.h. -

-Referenced by uip_init(), uip_listen(), and uip_unlisten().

-

- - - - -
- - - - -
#define UIP_LLH_LEN
-
- - - - - -
-   - - -

-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. -

-Definition at line 448 of file uipopt.h. -

-Referenced by uip_ipchksum(), uip_process(), and uip_split_output().

-

- - - - -
- - - - -
#define UIP_LOGGING
-
- - - - - -
-   - - -

-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. -

-Definition at line 408 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_MAXRTX   8
-
- - - - - -
-   - - -

-The maximum number of times a segment should be retransmitted before the connection should be aborted. -

-This should not be changed. -

-Definition at line 288 of file uipopt.h. -

-Referenced by uip_process().

-

- - - - -
- - - - -
#define UIP_MAXSYNRTX   5
-
- - - - - -
-   - - -

-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. -

-Definition at line 297 of file uipopt.h. -

-Referenced by uip_process().

-

- - - - -
- - - - -
#define UIP_PINGADDRCONF
-
- - - - - -
-   - - -

-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.
- -

-Definition at line 114 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_REASSEMBLY
-
- - - - - -
-   - - -

-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.
- -

-Definition at line 156 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_RECEIVE_WINDOW
-
- - - - - -
-   - - -

-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. -

-Definition at line 317 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_RTO   3
-
- - - - - -
-   - - -

-The initial retransmission timeout counted in timer pulses. -

-This should not be changed. -

-Definition at line 280 of file uipopt.h. -

-Referenced by uip_process().

-

- - - - -
- - - - -
#define UIP_STATISTICS
-
- - - - - -
-   - - -

-Determines if statistics support should be compiled in. -

-The statistics is useful for debugging and to show the user. -

-Definition at line 393 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_TCP_MSS   (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
-
- - - - - -
-   - - -

-The TCP maximum segment size. -

-This is should not be to set to more than UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN. -

-Definition at line 305 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_TIME_WAIT_TIMEOUT   120
-
- - - - - -
-   - - -

-How long a connection should stay in the TIME_WAIT state. -

-This configiration option has no real implication, and it should be left untouched. -

-Definition at line 328 of file uipopt.h. -

-Referenced by uip_process().

-

- - - - -
- - - - -
#define UIP_TTL   64
-
- - - - - -
-   - - -

-The IP TTL (time to live) of IP packets sent by uIP. -

-This should normally not be changed. -

-Definition at line 141 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_UDP_CHECKSUMS
-
- - - - - -
-   - - -

-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.
- -

-Definition at line 195 of file uipopt.h.

-

- - - - -
- - - - -
#define UIP_URGDATA
-
- - - - - -
-   - - -

-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. -

-Definition at line 273 of file uipopt.h.

-


Typedef Documentation

-

- - - - -
- - - - -
typedef uint16_t u16_t
-
- - - - - -
-   - - -

-16 bit datatype -

-This typedef defines the 16-bit type used throughout uIP.

Examples:
-dhcpc.c, dhcpc.h, resolv.c, resolv.h, smtp.c, smtp.h, telnetd.c, and uip-conf.h.
-

-Definition at line 76 of file uip-conf.h.

-

- - - - -
- - - - -
typedef uint8_t u8_t
-
- - - - - -
-   - - -

-8 bit datatype -

-This typedef defines the 8-bit type used throughout uIP.

Examples:
-dhcpc.c, dhcpc.h, resolv.c, smtp.h, telnetd.c, telnetd.h, and uip-conf.h.
-

-Definition at line 67 of file uip-conf.h.

-

- - - - -
- - - - -
typedef unsigned short uip_stats_t
-
- - - - - -
-   - - -

-Statistics datatype. -

-This typedef defines the dataype used for keeping statistics in uIP. -

-Definition at line 86 of file uip-conf.h.

-

- - - - -
- - - - -
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.

Examples:
-smtp.h, telnetd.h, and webclient.h.
-

-Definition at line 98 of file smtp.h.

-

- - - - -
- - - - -
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.

Examples:
-dhcpc.h.
-

-Definition at line 47 of file resolv.h.

-


Function Documentation

-

- - - - -
- - - - - - - - - -
void uip_log char *  msg  ) 
-
- - - - - -
-   - - -

-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.

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00154.html b/components/net/uip/doc/html/a00154.html deleted file mode 100644 index 8c2a7bf27b690aea8cdcbce378b71b9362bd0960..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00154.html +++ /dev/null @@ -1,79 +0,0 @@ - - -uIP 1.0: uIP TCP throughput booster hack - - - - - -

uIP TCP throughput booster hack
- -[The uIP TCP/IP stack] -


Detailed Description

-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. -

- - - - - - - -

-

- - - -

Files

file  uip-split.h
 Module for splitting outbound TCP segments in two to avoid the delayed ACK throughput degradation.

Functions

void uip_split_output (void)
 Handle outgoing packets.
-


Function Documentation

-

- - - - -
- - - - - - - - - -
void uip_split_output void   ) 
-
- - - - - -
-   - - -

-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. -

-Definition at line 49 of file uip-split.c. -

-References BUF, uip_acc32, uip_add32(), uip_appdata, UIP_BUFSIZE, uip_ipchksum(), UIP_IPH_LEN, uip_len, UIP_LLH_LEN, UIP_PROTO_TCP, uip_tcpchksum(), and UIP_TCPIP_HLEN.

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00155.html b/components/net/uip/doc/html/a00155.html deleted file mode 100644 index 157811a53cb8bbc715be9eea9c927c3eea08df4e..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00155.html +++ /dev/null @@ -1,82 +0,0 @@ - - -uIP 1.0: Local continuations - - - - - -

Local continuations
- -[Protothreads] -


Detailed Description

-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. -

- - - - - - - -

-

- - - -

-

- - - -

-

- - - - - - - - - - - - - - - - - - - - - - - -

Files

file  lc.h
 Local continuations.
file  lc-switch.h
 Implementation of local continuations based on switch() statment.
file  lc-addrlabels.h
 Implementation of local continuations based on the "Labels as values" feature of gcc.

Defines

-#define __LC_SWTICH_H__
-#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)   }
-#define LC_INIT(s)   s = NULL
-#define LC_RESUME(s)
-#define LC_SET(s)   do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0)
-#define LC_END(s)

Typedefs

-typedef unsigned short lc_t
-typedef void * lc_t
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00156.html b/components/net/uip/doc/html/a00156.html deleted file mode 100644 index 9df0786dfd344ea576ab709ffaf69972834a8e88..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00156.html +++ /dev/null @@ -1,237 +0,0 @@ - - -uIP 1.0: Timer library - - - - - -

Timer library


Detailed Description

-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 struct timer and all access to the timer is made by a pointer to the declared timer.

-

Note:
The timer library uses the Clock library to measure time. Intervals should be specified in the format used by the clock library.
- -

- - - - - - - -

-

- - - -

-

- - - - - - - - - - - - - - - - -

Files

file  timer.h
 Timer library header file.
file  timer.c
 Timer library implementation.

Data Structures

struct  timer
 A timer. More...

Functions

void timer_set (struct timer *t, clock_time_t interval)
 Set a timer.
void timer_reset (struct timer *t)
 Reset the timer with the same interval.
void timer_restart (struct timer *t)
 Restart the timer from the current point in time.
int timer_expired (struct timer *t)
 Check if a timer has expired.
-


Function Documentation

-

- - - - -
- - - - - - - - - -
int timer_expired struct timer t  ) 
-
- - - - - -
-   - - -

-Check if a timer has expired. -

-This function tests if a timer has expired and returns true or false depending on its status.

-

Parameters:
- - -
t A pointer to the timer
-
-
Returns:
Non-zero if the timer has expired, zero otherwise.
-
Examples:
-dhcpc.c, example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 121 of file timer.c. -

-References clock_time(), interval, and start.

-

- - - - -
- - - - - - - - - -
void timer_reset struct timer t  ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
t A pointer to the timer.
-
-
See also:
timer_restart()
-
Examples:
-example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 84 of file timer.c. -

-References interval, and start.

-

- - - - -
- - - - - - - - - -
void timer_restart struct timer t  ) 
-
- - - - - -
-   - - -

-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.
-
Parameters:
- - -
t A pointer to the timer.
-
-
See also:
timer_reset()
- -

-Definition at line 104 of file timer.c. -

-References clock_time(), and start.

-

- - - - -
- - - - - - - - - - - - - - - - - - -
void timer_set struct timer t,
clock_time_t  interval
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - - -
t A pointer to the timer
interval The interval before the timer expires.
-
-
Examples:
-dhcpc.c, example-mainloop-with-arp.c, and example-mainloop-without-arp.c.
-

-Definition at line 64 of file timer.c. -

-References clock_time(), interval, and start.

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00157.html b/components/net/uip/doc/html/a00157.html deleted file mode 100644 index a89ac8d5a105428d9d00821c2df1ecf931b1fe70..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00157.html +++ /dev/null @@ -1,108 +0,0 @@ - - -uIP 1.0: Clock interface - - - - - -

Clock interface


Detailed Description

-The clock interface is the interface between the timer library and the platform specific clock functionality. -

-The clock interface must be implemented for each platform that uses the 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.

-

See also:
Timer library
- -

- - - - - - - - - - - - - -

Defines

-#define CLOCK_SECOND
 A second, measured in system clock time.

Functions

void clock_init (void)
 Initialize the clock library.
clock_time_t clock_time (void)
 Get the current clock time.
-


Function Documentation

-

- - - - -
- - - - - - - - - -
void clock_init void   ) 
-
- - - - - -
-   - - -

-Initialize the clock library. -

-This function initializes the clock library and should be called from the main() function of the system.

-

- - - - -
- - - - - - - - - -
clock_time_t clock_time void   ) 
-
- - - - - -
-   - - -

-Get the current clock time. -

-This function returns the current system clock time.

-

Returns:
The current clock time, measured in system ticks.
- -

-Referenced by timer_expired(), timer_restart(), and timer_set().

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00158.html b/components/net/uip/doc/html/a00158.html deleted file mode 100644 index 4d56cceeab8dfe7dbc1f91ea0f3fc1f24f729215..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00158.html +++ /dev/null @@ -1,693 +0,0 @@ - - -uIP 1.0: Protosockets library - - - - - -

Protosockets library


Detailed Description

-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 Protothreads 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(). -

- - - - - - - -

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Files

file  psock.h
 Protosocket library header file.

Data Structures

struct  psock_buf
struct  psock
 The representation of a protosocket. More...

Defines

#define PSOCK_INIT(psock, buffer, buffersize)
 Initialize a protosocket.
#define PSOCK_BEGIN(psock)
 Start the protosocket protothread in a function.
#define PSOCK_SEND(psock, data, datalen)
 Send data.
#define PSOCK_SEND_STR(psock, str)
 Send a null-terminated string.
#define PSOCK_GENERATOR_SEND(psock, generator, arg)
 Generate data with a function and send it.
#define PSOCK_CLOSE(psock)
 Close a protosocket.
#define PSOCK_READBUF(psock)
 Read data until the buffer is full.
#define PSOCK_READTO(psock, c)
 Read data up to a specified character.
#define PSOCK_DATALEN(psock)
 The length of the data that was previously read.
#define PSOCK_EXIT(psock)
 Exit the protosocket's protothread.
#define PSOCK_CLOSE_EXIT(psock)
 Close a protosocket and exit the protosocket's protothread.
#define PSOCK_END(psock)
 Declare the end of a protosocket's protothread.
#define PSOCK_NEWDATA(psock)
 Check if new data has arrived on a protosocket.
#define PSOCK_WAIT_UNTIL(psock, condition)
 Wait until a condition is true.
-#define PSOCK_WAIT_THREAD(psock, condition)   PT_WAIT_THREAD(&((psock)->pt), (condition))

Functions

-u16_t psock_datalen (struct psock *psock)
-char psock_newdata (struct psock *s)
-


Define Documentation

-

- - - - -
- - - - - - - - - -
#define PSOCK_BEGIN psock   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
psock (struct psock *) A pointer to the protosocket to be started.
-
-
Examples:
-hello-world.c, and smtp.c.
-

-Definition at line 158 of file psock.h.

-

- - - - -
- - - - - - - - - -
#define PSOCK_CLOSE psock   ) 
-
- - - - - -
-   - - -

-Close a protosocket. -

-This macro closes a protosocket and can only be called from within the protothread in which the protosocket lives.

-

Parameters:
- - -
psock (struct psock *) A pointer to the protosocket that is to be closed.
-
-
Examples:
-hello-world.c, and smtp.c.
-

-Definition at line 235 of file psock.h.

-

- - - - -
- - - - - - - - - -
#define PSOCK_CLOSE_EXIT psock   ) 
-
- - - - - -
-   - - -

-Close a protosocket and exit the protosocket's protothread. -

-This macro closes a protosocket and exits the protosocket's protothread.

-

Parameters:
- - -
psock (struct psock *) A pointer to the protosocket.
-
- -

-Definition at line 308 of file psock.h.

-

- - - - -
- - - - - - - - - -
#define PSOCK_DATALEN psock   ) 
-
- - - - - -
-   - - -

-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().

-

Parameters:
- - -
psock (struct psock *) A pointer to the protosocket holding the data.
-
- -

-Definition at line 281 of file psock.h.

-

- - - - -
- - - - - - - - - -
#define PSOCK_END psock   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
psock (struct psock *) A pointer to the protosocket.
-
-
Examples:
-hello-world.c, and smtp.c.
-

-Definition at line 325 of file psock.h.

-

- - - - -
- - - - - - - - - -
#define PSOCK_EXIT 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().

-

See also:
PSOCK_CLOSE_EXIT()
-
Parameters:
- - -
psock (struct psock *) A pointer to the protosocket.
-
-
Examples:
-smtp.c.
-

-Definition at line 297 of file psock.h.

-

- - - - -
- - - - - - - - - - - - - - - -
#define PSOCK_GENERATOR_SEND psock,
generator,
arg   ) 
-
- - - - - -
-   - - -

-Generate data with a function and send it. -

-

Parameters:
- - - - -
psock Pointer to the protosocket.
generator Pointer to the generator function
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. -

-Definition at line 219 of file psock.h.

-

- - - - -
- - - - - - - - - - - - - - - -
#define PSOCK_INIT psock,
buffer,
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.

-

Parameters:
- - - - -
psock (struct psock *) A pointer to the protosocket to be initialized
buffer (char *) A pointer to the input buffer for the protosocket.
buffersize (unsigned int) The size of the input buffer.
-
-
Examples:
-hello-world.c, and smtp.c.
-

-Definition at line 144 of file psock.h. -

-Referenced by hello_world_appcall(), httpd_appcall(), and smtp_send().

-

- - - - -
- - - - - - - - - -
#define PSOCK_NEWDATA psock   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - -
psock (struct psock *) A pointer to the protosocket.
-
- -

-Definition at line 339 of file psock.h.

-

- - - - -
- - - - - - - - - -
#define PSOCK_READBUF 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..

-

Parameters:
- - -
psock (struct psock *) A pointer to the protosocket from which data should be read.
-
- -

-Definition at line 250 of file psock.h.

-

- - - - -
- - - - - - - - - - - - -
#define PSOCK_READTO psock,
 ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - - -
psock (struct psock *) A pointer to the protosocket from which data should be read.
c (char) The character at which to stop reading.
-
-
Examples:
-hello-world.c, and smtp.c.
-

-Definition at line 268 of file psock.h.

-

- - - - -
- - - - - - - - - - - - - - - -
#define PSOCK_SEND psock,
data,
datalen   ) 
-
- - - - - -
-   - - -

-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.

-

Parameters:
- - - - -
psock (struct psock *) A pointer to the protosocket over which data is to be sent.
data (char *) A pointer to the data that is to be sent.
datalen (unsigned int) The length of the data that is to be sent.
-
-
Examples:
-smtp.c.
-

-Definition at line 178 of file psock.h.

-

- - - - -
- - - - - - - - - - - - -
#define PSOCK_SEND_STR psock,
str   ) 
-
- - - - - -
-   - - -

-Send a null-terminated string. -

-

Parameters:
- - - -
psock Pointer to the protosocket.
str The string to be sent.
-
-This function sends a null-terminated string over the protosocket.
Examples:
-hello-world.c, and smtp.c.
-

-Definition at line 191 of file psock.h.

-

- - - - -
- - - - - - - - - - - - -
#define PSOCK_WAIT_UNTIL psock,
condition   ) 
-
- - - - - -
-   - - -

-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:

-

 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);
- }
-

-

Parameters:
- - - -
psock (struct psock *) A pointer to the protosocket.
condition The condition to wait for.
-
- -

-Definition at line 372 of file psock.h.

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00159.html b/components/net/uip/doc/html/a00159.html deleted file mode 100644 index 3564fa91a19531a9e375b5689e3b6ea7652c023e..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00159.html +++ /dev/null @@ -1,251 +0,0 @@ - - -uIP 1.0: Memory block management functions - - - - - -

Memory block management functions


Detailed Description

-The memory block allocation routines provide a simple yet powerful set of functions for managing a set of memory blocks of fixed size. -

-A set of memory blocks is statically declared with the MEMB() macro. Memory blocks are allocated from the declared memory by the memb_alloc() function, and are deallocated with the memb_free() function.

-

Note:
Because of namespace clashes only one MEMB() can be declared per C module, and the name scope of a MEMB() memory block is local to each C module.
-The following example shows how to declare and use a memory block called "cmem" which has 8 chunks of memory with each memory chunk being 20 bytes large. -

- - - - - - - -

-

- - - -

-

- - - - - - - - - - - - - - - - - - - - -

Files

file  memb.c
 Memory block allocation routines.
file  memb.h
 Memory block allocation routines.

Data Structures

struct  memb_blocks

Defines

-#define MEMB_CONCAT2(s1, s2)   s1##s2
-#define MEMB_CONCAT(s1, s2)   MEMB_CONCAT2(s1, s2)
#define MEMB(name, structure, num)
 Declare a memory block.

Functions

void memb_init (struct memb_blocks *m)
 Initialize a memory block that was declared with MEMB().
void * memb_alloc (struct memb_blocks *m)
 Allocate a memory block from a block of memory declared with MEMB().
char memb_free (struct memb_blocks *m, void *ptr)
 Deallocate a memory block from a memory block previously declared with MEMB().
-


Define Documentation

-

- - - - -
- - - - - - - - - - - - - - - -
#define MEMB name,
structure,
num   ) 
-
- - - - - -
-   - - -

-Value:

static char MEMB_CONCAT(name,_memb_count)[num]; \
-        static structure MEMB_CONCAT(name,_memb_mem)[num]; \
-        static struct memb_blocks name = {sizeof(structure), num, \
-                                          MEMB_CONCAT(name,_memb_count), \
-                                          (void *)MEMB_CONCAT(name,_memb_mem)}
-
Declare a memory block. -

-This macro is used to staticall declare a block of memory that can be used by the block allocation functions. The macro statically declares a C array with a size that matches the specified number of blocks and their individual sizes.

-Example:

MEMB(connections, sizeof(struct connection), 16);
-

-

Parameters:
- - - - -
name The name of the memory block (later used with memb_init(), memb_alloc() and memb_free()).
size The size of each memory chunk, in bytes.
num The total number of memory chunks in the block.
-
-
Examples:
-telnetd.c.
-

-Definition at line 98 of file memb.h.

-


Function Documentation

-

- - - - -
- - - - - - - - - -
void * memb_alloc struct memb_blocks m  ) 
-
- - - - - -
-   - - -

-Allocate a memory block from a block of memory declared with MEMB(). -

-

Parameters:
- - -
m A memory block previosly declared with MEMB().
-
-
Examples:
-telnetd.c.
-

-Definition at line 59 of file memb.c. -

-References memb_blocks::count, memb_blocks::mem, memb_blocks::num, and memb_blocks::size.

-

- - - - -
- - - - - - - - - - - - - - - - - - -
char memb_free struct memb_blocks m,
void *  ptr
-
- - - - - -
-   - - -

-Deallocate a memory block from a memory block previously declared with MEMB(). -

-

Parameters:
- - - -
m m A memory block previosly declared with MEMB().
ptr A pointer to the memory block that is to be deallocated.
-
-
Returns:
The new reference count for the memory block (should be 0 if successfully deallocated) or -1 if the pointer "ptr" did not point to a legal memory block.
-
Examples:
-telnetd.c.
-

-Definition at line 79 of file memb.c. -

-References memb_blocks::count, memb_blocks::mem, and memb_blocks::size.

-

- - - - -
- - - - - - - - - -
void memb_init struct memb_blocks m  ) 
-
- - - - - -
-   - - -

-Initialize a memory block that was declared with MEMB(). -

-

Parameters:
- - -
m A memory block previosly declared with MEMB().
-
-
Examples:
-telnetd.c.
-

-Definition at line 52 of file memb.c. -

-References memb_blocks::count, memb_blocks::mem, memb_blocks::num, and memb_blocks::size.

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00160.html b/components/net/uip/doc/html/a00160.html deleted file mode 100644 index ffd42f9d8aa1147074a7065893ba8e11410482a2..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00160.html +++ /dev/null @@ -1,284 +0,0 @@ - - -uIP 1.0: DNS resolver - - - - - -

DNS resolver
- -[Applications] -


Detailed Description

-The uIP DNS resolver functions are used to lookup a hostname and map it to a numerical IP address. -

-It maintains a list of resolved hostnames that can be queried with the resolv_lookup() function. New hostnames can be resolved using the resolv_query() function.

-When a hostname has been resolved (or found to be non-existant), the resolver code calls a callback function called resolv_found() that must be implemented by the module that uses the resolver. -

- - - - - - - -

-

- - - -

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Files

file  resolv.h
 DNS resolver code header file.
file  resolv.c
 DNS host name to IP address resolver.

Defines

-#define UIP_UDP_APPCALL   resolv_appcall
-#define NULL   (void *)0
-#define MAX_RETRIES   8
-#define RESOLV_ENTRIES   4

Functions

-void resolv_appcall (void)
void resolv_found (char *name, u16_t *ipaddr)
 Callback function which is called when a hostname is found.
void resolv_conf (u16_t *dnsserver)
 Configure which DNS server to use for queries.
u16_tresolv_getserver (void)
 Obtain the currently configured DNS server.
-void resolv_init (void)
 Initalize the resolver.
u16_tresolv_lookup (char *name)
 Look up a hostname in the array of known hostnames.
void resolv_query (char *name)
 Queues a name so that a question for the name will be sent out.
-


Function Documentation

-

- - - - -
- - - - - - - - - -
void resolv_conf u16_t dnsserver  ) 
-
- - - - - -
-   - - -

-Configure which DNS server to use for queries. -

-

Parameters:
- - -
dnsserver A pointer to a 4-byte representation of the IP address of the DNS server to be configured.
-
-
Examples:
-resolv.c, and resolv.h.
-

-Definition at line 438 of file resolv.c. -

-References HTONS, NULL, uip_udp_new(), and uip_udp_remove.

-

- - - - -
- - - - - - - - - - - - - - - - - - -
void resolv_found char *  name,
u16_t ipaddr
-
- - - - - -
-   - - -

-Callback function which is called when a hostname is found. -

-This function must be implemented by the module that uses the DNS resolver. It is called when a hostname is found, or when a hostname was not found.

-

Parameters:
- - - -
name A pointer to the name that was looked up.
ipaddr A pointer to a 4-byte array containing the IP address of the hostname, or NULL if the hostname could not be found.
-
-
Examples:
-resolv.c, and resolv.h.
-

- - - - -
- - - - - - - - - -
u16_t * resolv_getserver void   ) 
-
- - - - - -
-   - - -

-Obtain the currently configured DNS server. -

-

Returns:
A pointer to a 4-byte representation of the IP address of the currently configured DNS server or NULL if no DNS server has been configured.
-
Examples:
-resolv.c, and resolv.h.
-

-Definition at line 422 of file resolv.c. -

-References NULL, and uip_udp_conn::ripaddr.

-

- - - - -
- - - - - - - - - -
u16_t * resolv_lookup char *  name  ) 
-
- - - - - -
-   - - -

-Look up a hostname in the array of known hostnames. -

-

Note:
This function only looks in the internal array of known hostnames, it does not send out a query for the hostname if none was found. The function resolv_query() can be used to send a query for a hostname.
-
Returns:
A pointer to a 4-byte representation of the hostname's IP address, or NULL if the hostname was not found in the array of hostnames.
-
Examples:
-resolv.c, resolv.h, and webclient.c.
-

-Definition at line 396 of file resolv.c. -

-References RESOLV_ENTRIES, and STATE_DONE. -

-Referenced by webclient_appcall(), and webclient_get().

-

- - - - -
- - - - - - - - - -
void resolv_query char *  name  ) 
-
- - - - - -
-   - - -

-Queues a name so that a question for the name will be sent out. -

-

Parameters:
- - -
name The hostname that is to be queried.
-
-
Examples:
-resolv.c, resolv.h, and webclient.c.
-

-Definition at line 350 of file resolv.c. -

-References RESOLV_ENTRIES, and STATE_UNUSED. -

-Referenced by webclient_appcall().

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00161.html b/components/net/uip/doc/html/a00161.html deleted file mode 100644 index 16d6fbb9198890530414c6f48b7770be96233905..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00161.html +++ /dev/null @@ -1,257 +0,0 @@ - - -uIP 1.0: SMTP E-mail sender - - - - - -

SMTP E-mail sender
- -[Applications] -


Detailed Description

-The Simple Mail Transfer Protocol (SMTP) as defined by RFC821 is the standard way of sending and transfering e-mail on the Internet. -

-This simple example implementation is intended as an example of how to implement protocols in uIP, and is able to send out e-mail but has not been extensively tested. -

- - - - - - - -

-

- - - -

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Files

file  smtp.h
 SMTP header file.
file  smtp.c
 SMTP example implementation.

Data Structures

struct  smtp_state

Defines

-#define SMTP_ERR_OK   0
 Error number that signifies a non-error condition.
-#define SMTP_SEND(to, cc, from, subject, msg)   smtp_send(to, cc, from, subject, msg, strlen(msg))
-#define ISO_nl   0x0a
-#define ISO_cr   0x0d
-#define ISO_period   0x2e
-#define ISO_2   0x32
-#define ISO_3   0x33
-#define ISO_4   0x34
-#define ISO_5   0x35

Functions

void smtp_done (unsigned char error)
 Callback function that is called when an e-mail transmission is done.
-void smtp_init (void)
-void smtp_appcall (void)
void smtp_configure (char *lhostname, void *server)
 Specificy an SMTP server and hostname.
unsigned char smtp_send (char *to, char *cc, char *from, char *subject, char *msg, u16_t msglen)
 Send an e-mail.
-


Function Documentation

-

- - - - -
- - - - - - - - - - - - - - - - - - -
void smtp_configure char *  lhostname,
void *  server
-
- - - - - -
-   - - -

-Specificy an SMTP server and hostname. -

-This function is used to configure the SMTP module with an SMTP server and the hostname of the host.

-

Parameters:
- - - -
lhostname The hostname of the uIP host.
server A pointer to a 4-byte array representing the IP address of the SMTP server to be configured.
-
- -

-Definition at line 216 of file smtp.c. -

-References uip_ipaddr_copy.

-

- - - - -
- - - - - - - - - -
void smtp_done unsigned char  error  ) 
-
- - - - - -
-   - - -

-Callback function that is called when an e-mail transmission is done. -

-This function must be implemented by the module that uses the SMTP module.

-

Parameters:
- - -
error The number of the error if an error occured, or SMTP_ERR_OK.
-
-
Examples:
-smtp.c, and smtp.h.
-

-Referenced by smtp_appcall().

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
unsigned char smtp_send char *  to,
char *  cc,
char *  from,
char *  subject,
char *  msg,
u16_t  msglen
-
- - - - - -
-   - - -

-Send an e-mail. -

-

Parameters:
- - - - - - - -
to The e-mail address of the receiver of the e-mail.
cc The e-mail address of the CC: receivers of the e-mail.
from The e-mail address of the sender of the e-mail.
subject The subject of the e-mail.
msg The actual e-mail message.
msglen The length of the e-mail message.
-
- -

-Definition at line 233 of file smtp.c. -

-References smtp_state::from, HTONS, smtp_state::msg, smtp_state::msglen, NULL, PSOCK_INIT, smtp_state::subject, smtp_state::to, and uip_connect().

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00162.html b/components/net/uip/doc/html/a00162.html deleted file mode 100644 index 8fada3bd13d01234854ae56e92cbd23f4b8de540..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00162.html +++ /dev/null @@ -1,56 +0,0 @@ - - -uIP 1.0: Hello, world - - - - - -

Hello, world
- -[Applications] -


Detailed Description

-A small example showing how to write applications with protosockets. -

- -

- - - - - - - -

-

- - - -

-

- - - - - - - - - - -

Files

file  hello-world.h
 Header file for an example of how to write uIP applications with protosockets.
file  hello-world.c
 An example of how to write uIP applications with protosockets.

Data Structures

struct  hello_world_state

Defines

-#define UIP_APPCALL   hello_world_appcall

Functions

-void hello_world_appcall (void)
-void hello_world_init (void)
-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00163.html b/components/net/uip/doc/html/a00163.html deleted file mode 100644 index 96515e2f4a0cda540ac7bfa6530c4b5a046ccdf3..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00163.html +++ /dev/null @@ -1,533 +0,0 @@ - - -uIP 1.0: Web client - - - - - -

Web client
- -[Applications] -


Detailed Description

-This example shows a HTTP client that is able to download web pages and files from web servers. -

-It requires a number of callback functions to be implemented by the module that utilizes the code: webclient_datahandler(), webclient_connected(), webclient_timedout(), webclient_aborted(), webclient_closed(). -

- - - - - - - -

-

- - - -

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Files

file  webclient.h
 Header file for the HTTP client.
file  webclient.c
 Implementation of the HTTP client.

Data Structures

struct  webclient_state

Defines

-#define WEBCLIENT_CONF_MAX_URLLEN   100
-#define UIP_APPCALL   webclient_appcall
-#define WEBCLIENT_TIMEOUT   100
-#define WEBCLIENT_STATE_STATUSLINE   0
-#define WEBCLIENT_STATE_HEADERS   1
-#define WEBCLIENT_STATE_DATA   2
-#define WEBCLIENT_STATE_CLOSE   3
-#define HTTPFLAG_NONE   0
-#define HTTPFLAG_OK   1
-#define HTTPFLAG_MOVED   2
-#define HTTPFLAG_ERROR   3
-#define ISO_nl   0x0a
-#define ISO_cr   0x0d
-#define ISO_space   0x20

Typedefs

-typedef webclient_state uip_tcp_appstate_t

Functions

void webclient_datahandler (char *data, u16_t len)
 Callback function that is called from the webclient code when HTTP data has been received.
void webclient_connected (void)
 Callback function that is called from the webclient code when the HTTP connection has been connected to the web server.
void webclient_timedout (void)
 Callback function that is called from the webclient code if the HTTP connection to the web server has timed out.
void webclient_aborted (void)
 Callback function that is called from the webclient code if the HTTP connection to the web server has been aborted by the web server.
void webclient_closed (void)
 Callback function that is called from the webclient code when the HTTP connection to the web server has been closed.
-void webclient_init (void)
 Initialize the webclient module.
unsigned char webclient_get (char *host, u16_t port, char *file)
 Open an HTTP connection to a web server and ask for a file using the GET method.
-void webclient_close (void)
 Close the currently open HTTP connection.
-void webclient_appcall (void)
char * webclient_mimetype (void)
 Obtain the MIME type of the current HTTP data stream.
char * webclient_filename (void)
 Obtain the filename of the current HTTP data stream.
char * webclient_hostname (void)
 Obtain the hostname of the current HTTP data stream.
unsigned short webclient_port (void)
 Obtain the port number of the current HTTP data stream.
-


Function Documentation

-

- - - - -
- - - - - - - - - -
void webclient_aborted void   ) 
-
- - - - - -
-   - - -

-Callback function that is called from the webclient code if the HTTP connection to the web server has been aborted by the web server. -

-This function must be implemented by the module that uses the webclient code.

Examples:
-webclient.c, and webclient.h.
-

-Referenced by webclient_appcall().

-

- - - - -
- - - - - - - - - -
void webclient_closed void   ) 
-
- - - - - -
-   - - -

-Callback function that is called from the webclient code when the HTTP connection to the web server has been closed. -

-This function must be implemented by the module that uses the webclient code.

Examples:
-webclient.c, and webclient.h.
-

-Referenced by webclient_appcall().

-

- - - - -
- - - - - - - - - -
void webclient_connected void   ) 
-
- - - - - -
-   - - -

-Callback function that is called from the webclient code when the HTTP connection has been connected to the web server. -

-This function must be implemented by the module that uses the webclient code.

Examples:
-webclient.c, and webclient.h.
-

-Referenced by webclient_appcall().

-

- - - - -
- - - - - - - - - - - - - - - - - - -
void webclient_datahandler char *  data,
u16_t  len
-
- - - - - -
-   - - -

-Callback function that is called from the webclient code when HTTP data has been received. -

-This function must be implemented by the module that uses the webclient code. The function is called from the webclient module when HTTP data has been received. The function is not called when HTTP headers are received, only for the actual data.

-

Note:
This function is called many times, repetedly, when data is being received, and not once when all data has been received.
-
Parameters:
- - - -
data A pointer to the data that has been received.
len The length of the data that has been received.
-
-
Examples:
-webclient.c, and webclient.h.
-

-Referenced by webclient_appcall().

-

- - - - -
- - - - - - - - - -
char * webclient_filename void   ) 
-
- - - - - -
-   - - -

-Obtain the filename of the current HTTP data stream. -

-The filename of an HTTP request may be changed by the web server, and may therefore not be the same as when the original GET request was made with webclient_get(). This function is used for obtaining the current filename.

-

Returns:
A pointer to the current filename.
-
Examples:
-webclient.c, and webclient.h.
-

-Definition at line 93 of file webclient.c. -

-References webclient_state::file.

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
unsigned char webclient_get char *  host,
u16_t  port,
char *  file
-
- - - - - -
-   - - -

-Open an HTTP connection to a web server and ask for a file using the GET method. -

-This function opens an HTTP connection to the specified web server and requests the specified file using the GET method. When the HTTP connection has been connected, the webclient_connected() callback function is called and when the HTTP data arrives the webclient_datahandler() callback function is called.

-The callback function webclient_timedout() is called if the web server could not be contacted, and the webclient_aborted() callback function is called if the HTTP connection is aborted by the web server.

-When the HTTP request has been completed and the HTTP connection is closed, the webclient_closed() callback function will be called.

-

Note:
If the function is passed a host name, it must already be in the resolver cache in order for the function to connect to the web server. It is therefore up to the calling module to implement the resolver calls and the signal handler used for reporting a resolv query answer.
-
Parameters:
- - - - -
host A pointer to a string containing either a host name or a numerical IP address in dotted decimal notation (e.g., 192.168.23.1).
port The port number to which to connect, in host byte order.
file A pointer to the name of the file to get.
-
-
Return values:
- - - -
0 if the host name could not be found in the cache, or if a TCP connection could not be created.
1 if the connection was initiated.
-
-
Examples:
-webclient.c, and webclient.h.
-

-Definition at line 140 of file webclient.c. -

-References webclient_state::file, webclient_state::host, htons(), NULL, webclient_state::port, resolv_lookup(), and uip_connect(). -

-Referenced by webclient_appcall().

-

- - - - -
- - - - - - - - - -
char * webclient_hostname void   ) 
-
- - - - - -
-   - - -

-Obtain the hostname of the current HTTP data stream. -

-The hostname of the web server of an HTTP request may be changed by the web server, and may therefore not be the same as when the original GET request was made with webclient_get(). This function is used for obtaining the current hostname.

-

Returns:
A pointer to the current hostname.
-
Examples:
-webclient.c, and webclient.h.
-

-Definition at line 99 of file webclient.c. -

-References webclient_state::host.

-

- - - - -
- - - - - - - - - -
char * webclient_mimetype void   ) 
-
- - - - - -
-   - - -

-Obtain the MIME type of the current HTTP data stream. -

-

Returns:
A pointer to a string contaning the MIME type. The string may be empty if no MIME type was reported by the web server.
-
Examples:
-webclient.c, and webclient.h.
-

-Definition at line 87 of file webclient.c. -

-References webclient_state::mimetype.

-

- - - - -
- - - - - - - - - -
unsigned short webclient_port void   ) 
-
- - - - - -
-   - - -

-Obtain the port number of the current HTTP data stream. -

-The port number of an HTTP request may be changed by the web server, and may therefore not be the same as when the original GET request was made with webclient_get(). This function is used for obtaining the current port number.

-

Returns:
The port number of the current HTTP data stream, in host byte order.
-
Examples:
-webclient.c, and webclient.h.
-

-Definition at line 105 of file webclient.c. -

-References webclient_state::port.

-

- - - - -
- - - - - - - - - -
void webclient_timedout void   ) 
-
- - - - - -
-   - - -

-Callback function that is called from the webclient code if the HTTP connection to the web server has timed out. -

-This function must be implemented by the module that uses the webclient code.

Examples:
-webclient.c, and webclient.h.
-

-Referenced by webclient_appcall().

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00164.html b/components/net/uip/doc/html/a00164.html deleted file mode 100644 index 67c80c701281cffed35a0c950e4164ddd5faa1bf..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00164.html +++ /dev/null @@ -1,172 +0,0 @@ - - -uIP 1.0: Web server - - - - - -

Web server
- -[Applications] -


Detailed Description

-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. -

- - - - - - - -

-

- - - -

-

- - - -

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Files

file  httpd-cgi.h
 Web server script interface header file.
file  httpd-cgi.c
 Web server script interface.
file  httpd.c
 Web server.

Data Structures

struct  httpd_cgi_call

Defines

#define HTTPD_CGI_CALL(name, str, function)
 HTTPD CGI function declaration.
-#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

Functions

-httpd_cgifunction httpd_cgi (char *name)
-void httpd_appcall (void)
void httpd_init (void)
 Initialize the web server.
-


Define Documentation

-

- - - - -
- - - - - - - - - - - - - - - -
#define HTTPD_CGI_CALL name,
str,
function   ) 
-
- - - - - -
-   - - -

-HTTPD CGI function declaration. -

-

Parameters:
- - - - -
name The C variable name of the function
str The string name of the function, used in the script file
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. -

-Definition at line 77 of file httpd-cgi.h.

-


Function Documentation

-

- - - - -
- - - - - - - - - -
void httpd_init void   ) 
-
- - - - - -
-   - - -

-Initialize the web server. -

-This function initializes the web server and should be called at system boot-up. -

-Definition at line 333 of file httpd.c. -

-References HTONS, and uip_listen().

-


Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00168.html b/components/net/uip/doc/html/a00168.html deleted file mode 100644 index 955e16759a1e73334cc5e57a85eb1543f51e46a3..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00168.html +++ /dev/null @@ -1,381 +0,0 @@ - - -uIP 1.0: apps/dhcpc/dhcpc.c Source File - - - - - - -

apps/dhcpc/dhcpc.c

00001 /*
-00002  * Copyright (c) 2005, Swedish Institute of Computer Science
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * @(#)$Id: dhcpc.c,v 1.2 2006/06/11 21:46:37 adam Exp $
-00032  */
-00033 
-00034 #include <stdio.h>
-00035 #include <string.h>
-00036 
-00037 #include "uip.h"
-00038 #include "dhcpc.h"
-00039 #include "timer.h"
-00040 #include "pt.h"
-00041 
-00042 #define STATE_INITIAL         0
-00043 #define STATE_SENDING         1
-00044 #define STATE_OFFER_RECEIVED  2
-00045 #define STATE_CONFIG_RECEIVED 3
-00046 
-00047 static struct dhcpc_state s;
-00048 
-00049 struct dhcp_msg {
-00050   u8_t op, htype, hlen, hops;
-00051   u8_t xid[4];
-00052   u16_t secs, flags;
-00053   u8_t ciaddr[4];
-00054   u8_t yiaddr[4];
-00055   u8_t siaddr[4];
-00056   u8_t giaddr[4];
-00057   u8_t chaddr[16];
-00058 #ifndef UIP_CONF_DHCP_LIGHT
-00059   u8_t sname[64];
-00060   u8_t file[128];
-00061 #endif
-00062   u8_t options[312];
-00063 };
-00064 
-00065 #define BOOTP_BROADCAST 0x8000
-00066 
-00067 #define DHCP_REQUEST        1
-00068 #define DHCP_REPLY          2
-00069 #define DHCP_HTYPE_ETHERNET 1
-00070 #define DHCP_HLEN_ETHERNET  6
-00071 #define DHCP_MSG_LEN      236
-00072 
-00073 #define DHCPC_SERVER_PORT  67
-00074 #define DHCPC_CLIENT_PORT  68
-00075 
-00076 #define DHCPDISCOVER  1
-00077 #define DHCPOFFER     2
-00078 #define DHCPREQUEST   3
-00079 #define DHCPDECLINE   4
-00080 #define DHCPACK       5
-00081 #define DHCPNAK       6
-00082 #define DHCPRELEASE   7
-00083 
-00084 #define DHCP_OPTION_SUBNET_MASK   1
-00085 #define DHCP_OPTION_ROUTER        3
-00086 #define DHCP_OPTION_DNS_SERVER    6
-00087 #define DHCP_OPTION_REQ_IPADDR   50
-00088 #define DHCP_OPTION_LEASE_TIME   51
-00089 #define DHCP_OPTION_MSG_TYPE     53
-00090 #define DHCP_OPTION_SERVER_ID    54
-00091 #define DHCP_OPTION_REQ_LIST     55
-00092 #define DHCP_OPTION_END         255
-00093 
-00094 static const u8_t xid[4] = {0xad, 0xde, 0x12, 0x23};
-00095 static const u8_t magic_cookie[4] = {99, 130, 83, 99};
-00096 /*---------------------------------------------------------------------------*/
-00097 static u8_t *
-00098 add_msg_type(u8_t *optptr, u8_t type)
-00099 {
-00100   *optptr++ = DHCP_OPTION_MSG_TYPE;
-00101   *optptr++ = 1;
-00102   *optptr++ = type;
-00103   return optptr;
-00104 }
-00105 /*---------------------------------------------------------------------------*/
-00106 static u8_t *
-00107 add_server_id(u8_t *optptr)
-00108 {
-00109   *optptr++ = DHCP_OPTION_SERVER_ID;
-00110   *optptr++ = 4;
-00111   memcpy(optptr, s.serverid, 4);
-00112   return optptr + 4;
-00113 }
-00114 /*---------------------------------------------------------------------------*/
-00115 static u8_t *
-00116 add_req_ipaddr(u8_t *optptr)
-00117 {
-00118   *optptr++ = DHCP_OPTION_REQ_IPADDR;
-00119   *optptr++ = 4;
-00120   memcpy(optptr, s.ipaddr, 4);
-00121   return optptr + 4;
-00122 }
-00123 /*---------------------------------------------------------------------------*/
-00124 static u8_t *
-00125 add_req_options(u8_t *optptr)
-00126 {
-00127   *optptr++ = DHCP_OPTION_REQ_LIST;
-00128   *optptr++ = 3;
-00129   *optptr++ = DHCP_OPTION_SUBNET_MASK;
-00130   *optptr++ = DHCP_OPTION_ROUTER;
-00131   *optptr++ = DHCP_OPTION_DNS_SERVER;
-00132   return optptr;
-00133 }
-00134 /*---------------------------------------------------------------------------*/
-00135 static u8_t *
-00136 add_end(u8_t *optptr)
-00137 {
-00138   *optptr++ = DHCP_OPTION_END;
-00139   return optptr;
-00140 }
-00141 /*---------------------------------------------------------------------------*/
-00142 static void
-00143 create_msg(register struct dhcp_msg *m)
-00144 {
-00145   m->op = DHCP_REQUEST;
-00146   m->htype = DHCP_HTYPE_ETHERNET;
-00147   m->hlen = s.mac_len;
-00148   m->hops = 0;
-00149   memcpy(m->xid, xid, sizeof(m->xid));
-00150   m->secs = 0;
-00151   m->flags = HTONS(BOOTP_BROADCAST); /*  Broadcast bit. */
-00152   /*  uip_ipaddr_copy(m->ciaddr, uip_hostaddr);*/
-00153   memcpy(m->ciaddr, uip_hostaddr, sizeof(m->ciaddr));
-00154   memset(m->yiaddr, 0, sizeof(m->yiaddr));
-00155   memset(m->siaddr, 0, sizeof(m->siaddr));
-00156   memset(m->giaddr, 0, sizeof(m->giaddr));
-00157   memcpy(m->chaddr, s.mac_addr, s.mac_len);
-00158   memset(&m->chaddr[s.mac_len], 0, sizeof(m->chaddr) - s.mac_len);
-00159 #ifndef UIP_CONF_DHCP_LIGHT
-00160   memset(m->sname, 0, sizeof(m->sname));
-00161   memset(m->file, 0, sizeof(m->file));
-00162 #endif
-00163 
-00164   memcpy(m->options, magic_cookie, sizeof(magic_cookie));
-00165 }
-00166 /*---------------------------------------------------------------------------*/
-00167 static void
-00168 send_discover(void)
-00169 {
-00170   u8_t *end;
-00171   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
-00172 
-00173   create_msg(m);
-00174 
-00175   end = add_msg_type(&m->options[4], DHCPDISCOVER);
-00176   end = add_req_options(end);
-00177   end = add_end(end);
-00178 
-00179   uip_send(uip_appdata, end - (u8_t *)uip_appdata);
-00180 }
-00181 /*---------------------------------------------------------------------------*/
-00182 static void
-00183 send_request(void)
-00184 {
-00185   u8_t *end;
-00186   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
-00187 
-00188   create_msg(m);
-00189   
-00190   end = add_msg_type(&m->options[4], DHCPREQUEST);
-00191   end = add_server_id(end);
-00192   end = add_req_ipaddr(end);
-00193   end = add_end(end);
-00194   
-00195   uip_send(uip_appdata, end - (u8_t *)uip_appdata);
-00196 }
-00197 /*---------------------------------------------------------------------------*/
-00198 static u8_t
-00199 parse_options(u8_t *optptr, int len)
-00200 {
-00201   u8_t *end = optptr + len;
-00202   u8_t type = 0;
-00203 
-00204   while(optptr < end) {
-00205     switch(*optptr) {
-00206     case DHCP_OPTION_SUBNET_MASK:
-00207       memcpy(s.netmask, optptr + 2, 4);
-00208       break;
-00209     case DHCP_OPTION_ROUTER:
-00210       memcpy(s.default_router, optptr + 2, 4);
-00211       break;
-00212     case DHCP_OPTION_DNS_SERVER:
-00213       memcpy(s.dnsaddr, optptr + 2, 4);
-00214       break;
-00215     case DHCP_OPTION_MSG_TYPE:
-00216       type = *(optptr + 2);
-00217       break;
-00218     case DHCP_OPTION_SERVER_ID:
-00219       memcpy(s.serverid, optptr + 2, 4);
-00220       break;
-00221     case DHCP_OPTION_LEASE_TIME:
-00222       memcpy(s.lease_time, optptr + 2, 4);
-00223       break;
-00224     case DHCP_OPTION_END:
-00225       return type;
-00226     }
-00227 
-00228     optptr += optptr[1] + 2;
-00229   }
-00230   return type;
-00231 }
-00232 /*---------------------------------------------------------------------------*/
-00233 static u8_t
-00234 parse_msg(void)
-00235 {
-00236   struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
-00237   
-00238   if(m->op == DHCP_REPLY &&
-00239      memcmp(m->xid, xid, sizeof(xid)) == 0 &&
-00240      memcmp(m->chaddr, s.mac_addr, s.mac_len) == 0) {
-00241     memcpy(s.ipaddr, m->yiaddr, 4);
-00242     return parse_options(&m->options[4], uip_datalen());
-00243   }
-00244   return 0;
-00245 }
-00246 /*---------------------------------------------------------------------------*/
-00247 static
-00248 PT_THREAD(handle_dhcp(void))
-00249 {
-00250   PT_BEGIN(&s.pt);
-00251   
-00252   /* try_again:*/
-00253   s.state = STATE_SENDING;
-00254   s.ticks = CLOCK_SECOND;
-00255 
-00256   do {
-00257     send_discover();
-00258     timer_set(&s.timer, s.ticks);
-00259     PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
-00260 
-00261     if(uip_newdata() && parse_msg() == DHCPOFFER) {
-00262       s.state = STATE_OFFER_RECEIVED;
-00263       break;
-00264     }
-00265 
-00266     if(s.ticks < CLOCK_SECOND * 60) {
-00267       s.ticks *= 2;
-00268     }
-00269   } while(s.state != STATE_OFFER_RECEIVED);
-00270   
-00271   s.ticks = CLOCK_SECOND;
-00272 
-00273   do {
-00274     send_request();
-00275     timer_set(&s.timer, s.ticks);
-00276     PT_WAIT_UNTIL(&s.pt, uip_newdata() || timer_expired(&s.timer));
-00277 
-00278     if(uip_newdata() && parse_msg() == DHCPACK) {
-00279       s.state = STATE_CONFIG_RECEIVED;
-00280       break;
-00281     }
-00282 
-00283     if(s.ticks <= CLOCK_SECOND * 10) {
-00284       s.ticks += CLOCK_SECOND;
-00285     } else {
-00286       PT_RESTART(&s.pt);
-00287     }
-00288   } while(s.state != STATE_CONFIG_RECEIVED);
-00289   
-00290 #if 0
-00291   printf("Got IP address %d.%d.%d.%d\n",
-00292          uip_ipaddr1(s.ipaddr), uip_ipaddr2(s.ipaddr),
-00293          uip_ipaddr3(s.ipaddr), uip_ipaddr4(s.ipaddr));
-00294   printf("Got netmask %d.%d.%d.%d\n",
-00295          uip_ipaddr1(s.netmask), uip_ipaddr2(s.netmask),
-00296          uip_ipaddr3(s.netmask), uip_ipaddr4(s.netmask));
-00297   printf("Got DNS server %d.%d.%d.%d\n",
-00298          uip_ipaddr1(s.dnsaddr), uip_ipaddr2(s.dnsaddr),
-00299          uip_ipaddr3(s.dnsaddr), uip_ipaddr4(s.dnsaddr));
-00300   printf("Got default router %d.%d.%d.%d\n",
-00301          uip_ipaddr1(s.default_router), uip_ipaddr2(s.default_router),
-00302          uip_ipaddr3(s.default_router), uip_ipaddr4(s.default_router));
-00303   printf("Lease expires in %ld seconds\n",
-00304          ntohs(s.lease_time[0])*65536ul + ntohs(s.lease_time[1]));
-00305 #endif
-00306 
-00307   dhcpc_configured(&s);
-00308   
-00309   /*  timer_stop(&s.timer);*/
-00310 
-00311   /*
-00312    * PT_END restarts the thread so we do this instead. Eventually we
-00313    * should reacquire expired leases here.
-00314    */
-00315   while(1) {
-00316     PT_YIELD(&s.pt);
-00317   }
-00318 
-00319   PT_END(&s.pt);
-00320 }
-00321 /*---------------------------------------------------------------------------*/
-00322 void
-00323 dhcpc_init(const void *mac_addr, int mac_len)
-00324 {
-00325   uip_ipaddr_t addr;
-00326   
-00327   s.mac_addr = mac_addr;
-00328   s.mac_len  = mac_len;
-00329 
-00330   s.state = STATE_INITIAL;
-00331   uip_ipaddr(addr, 255,255,255,255);
-00332   s.conn = uip_udp_new(&addr, HTONS(DHCPC_SERVER_PORT));
-00333   if(s.conn != NULL) {
-00334     uip_udp_bind(s.conn, HTONS(DHCPC_CLIENT_PORT));
-00335   }
-00336   PT_INIT(&s.pt);
-00337 }
-00338 /*---------------------------------------------------------------------------*/
-00339 void
-00340 dhcpc_appcall(void)
-00341 {
-00342   handle_dhcp();
-00343 }
-00344 /*---------------------------------------------------------------------------*/
-00345 void
-00346 dhcpc_request(void)
-00347 {
-00348   u16_t ipaddr[2];
-00349   
-00350   if(s.state == STATE_INITIAL) {
-00351     uip_ipaddr(ipaddr, 0,0,0,0);
-00352     uip_sethostaddr(ipaddr);
-00353     /*    handle_dhcp(PROCESS_EVENT_NONE, NULL);*/
-00354   }
-00355 }
-00356 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00169.html b/components/net/uip/doc/html/a00169.html deleted file mode 100644 index c3ed91306c2bc206b2c5b87f5cb353ba3f33dea3..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00169.html +++ /dev/null @@ -1,93 +0,0 @@ - - -uIP 1.0: apps/dhcpc/dhcpc.h Source File - - - - - - -

apps/dhcpc/dhcpc.h

00001 /*
-00002  * Copyright (c) 2005, Swedish Institute of Computer Science
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * @(#)$Id: dhcpc.h,v 1.3 2006/06/11 21:46:37 adam Exp $
-00032  */
-00033 #ifndef __DHCPC_H__
-00034 #define __DHCPC_H__
-00035 
-00036 #include "timer.h"
-00037 #include "pt.h"
-00038 
-00039 struct dhcpc_state {
-00040   struct pt pt;
-00041   char state;
-00042   struct uip_udp_conn *conn;
-00043   struct timer timer;
-00044   u16_t ticks;
-00045   const void *mac_addr;
-00046   int mac_len;
-00047   
-00048   u8_t serverid[4];
-00049 
-00050   u16_t lease_time[2];
-00051   u16_t ipaddr[2];
-00052   u16_t netmask[2];
-00053   u16_t dnsaddr[2];
-00054   u16_t default_router[2];
-00055 };
-00056 
-00057 void dhcpc_init(const void *mac_addr, int mac_len);
-00058 void dhcpc_request(void);
-00059 
-00060 void dhcpc_appcall(void);
-00061 
-00062 void dhcpc_configured(const struct dhcpc_state *s);
-00063 
-00064 typedef struct dhcpc_state uip_udp_appstate_t;
-00065 #define UIP_UDP_APPCALL dhcpc_appcall
-00066 
-00067 
-00068 #endif /* __DHCPC_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00170.html b/components/net/uip/doc/html/a00170.html deleted file mode 100644 index 20a39c092df0bfa4935449657f6ea16c43f57f02..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00170.html +++ /dev/null @@ -1,125 +0,0 @@ - - -uIP 1.0: apps/hello-world/hello-world.c Source File - - - - - - -

apps/hello-world/hello-world.c

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup helloworld
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \file
-00008  *         An example of how to write uIP applications
-00009  *         with protosockets.
-00010  * \author
-00011  *         Adam Dunkels <adam@sics.se>
-00012  */
-00013 
-00014 /*
-00015  * This is a short example of how to write uIP applications using
-00016  * protosockets.
-00017  */
-00018 
-00019 /*
-00020  * We define the application state (struct hello_world_state) in the
-00021  * hello-world.h file, so we need to include it here. We also include
-00022  * uip.h (since this cannot be included in hello-world.h) and
-00023  * <string.h>, since we use the memcpy() function in the code.
-00024  */
-00025 #include "hello-world.h"
-00026 #include "uip.h"
-00027 #include <string.h>
-00028 
-00029 /*
-00030  * Declaration of the protosocket function that handles the connection
-00031  * (defined at the end of the code).
-00032  */
-00033 static int handle_connection(struct hello_world_state *s);
-00034 /*---------------------------------------------------------------------------*/
-00035 /*
-00036  * The initialization function. We must explicitly call this function
-00037  * from the system initialization code, some time after uip_init() is
-00038  * called.
-00039  */
-00040 void
-00041 hello_world_init(void)
-00042 {
-00043   /* We start to listen for connections on TCP port 1000. */
-00044   uip_listen(HTONS(1000));
-00045 }
-00046 /*---------------------------------------------------------------------------*/
-00047 /*
-00048  * In hello-world.h we have defined the UIP_APPCALL macro to
-00049  * hello_world_appcall so that this funcion is uIP's application
-00050  * function. This function is called whenever an uIP event occurs
-00051  * (e.g. when a new connection is established, new data arrives, sent
-00052  * data is acknowledged, data needs to be retransmitted, etc.).
-00053  */
-00054 void
-00055 hello_world_appcall(void)
-00056 {
-00057   /*
-00058    * The uip_conn structure has a field called "appstate" that holds
-00059    * the application state of the connection. We make a pointer to
-00060    * this to access it easier.
-00061    */
-00062   struct hello_world_state *s = &(uip_conn->appstate);
-00063 
-00064   /*
-00065    * If a new connection was just established, we should initialize
-00066    * the protosocket in our applications' state structure.
-00067    */
-00068   if(uip_connected()) {
-00069     PSOCK_INIT(&s->p, s->inputbuffer, sizeof(s->inputbuffer));
-00070   }
-00071 
-00072   /*
-00073    * Finally, we run the protosocket function that actually handles
-00074    * the communication. We pass it a pointer to the application state
-00075    * of the current connection.
-00076    */
-00077   handle_connection(s);
-00078 }
-00079 /*---------------------------------------------------------------------------*/
-00080 /*
-00081  * This is the protosocket function that handles the communication. A
-00082  * protosocket function must always return an int, but must never
-00083  * explicitly return - all return statements are hidden in the PSOCK
-00084  * macros.
-00085  */
-00086 static int
-00087 handle_connection(struct hello_world_state *s)
-00088 {
-00089   PSOCK_BEGIN(&s->p);
-00090 
-00091   PSOCK_SEND_STR(&s->p, "Hello. What is your name?\n");
-00092   PSOCK_READTO(&s->p, '\n');
-00093   strncpy(s->name, s->inputbuffer, sizeof(s->name));
-00094   PSOCK_SEND_STR(&s->p, "Hello ");
-00095   PSOCK_SEND_STR(&s->p, s->name);
-00096   PSOCK_CLOSE(&s->p);
-00097   
-00098   PSOCK_END(&s->p);
-00099 }
-00100 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00171.html b/components/net/uip/doc/html/a00171.html deleted file mode 100644 index 768f61b64b7ac85de15d353c79cd201dcc4cf924..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00171.html +++ /dev/null @@ -1,77 +0,0 @@ - - -uIP 1.0: apps/hello-world/hello-world.h Source File - - - - - - -

apps/hello-world/hello-world.h

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup apps
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \defgroup helloworld Hello, world
-00008  * @{
-00009  *
-00010  * A small example showing how to write applications with
-00011  * \ref psock "protosockets".
-00012  */
-00013 
-00014 /**
-00015  * \file
-00016  *         Header file for an example of how to write uIP applications
-00017  *         with protosockets.
-00018  * \author
-00019  *         Adam Dunkels <adam@sics.se>
-00020  */
-00021 
-00022 #ifndef __HELLO_WORLD_H__
-00023 #define __HELLO_WORLD_H__
-00024 
-00025 /* Since this file will be included by uip.h, we cannot include uip.h
-00026    here. But we might need to include uipopt.h if we need the u8_t and
-00027    u16_t datatypes. */
-00028 #include "uipopt.h"
-00029 
-00030 #include "psock.h"
-00031 
-00032 /* Next, we define the uip_tcp_appstate_t datatype. This is the state
-00033    of our application, and the memory required for this state is
-00034    allocated together with each TCP connection. One application state
-00035    for each TCP connection. */
-00036 typedef struct hello_world_state {
-00037   struct psock p;
-00038   char inputbuffer[10];
-00039   char name[40];
-00040 } uip_tcp_appstate_t;
-00041 
-00042 /* Finally we define the application function to be called by uIP. */
-00043 void hello_world_appcall(void);
-00044 #ifndef UIP_APPCALL
-00045 #define UIP_APPCALL hello_world_appcall
-00046 #endif /* UIP_APPCALL */
-00047 
-00048 void hello_world_init(void);
-00049 
-00050 #endif /* __HELLO_WORLD_H__ */
-00051 /** @} */
-00052 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00172.html b/components/net/uip/doc/html/a00172.html deleted file mode 100644 index 1bf08f6dc34bce737b6974904919d2736eb339ab..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00172.html +++ /dev/null @@ -1,489 +0,0 @@ - - -uIP 1.0: apps/resolv/resolv.c Source File - - - - - - -

apps/resolv/resolv.c

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup apps
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \defgroup resolv DNS resolver
-00008  * @{
-00009  *
-00010  * The uIP DNS resolver functions are used to lookup a hostname and
-00011  * map it to a numerical IP address. It maintains a list of resolved
-00012  * hostnames that can be queried with the resolv_lookup()
-00013  * function. New hostnames can be resolved using the resolv_query()
-00014  * function.
-00015  *
-00016  * When a hostname has been resolved (or found to be non-existant),
-00017  * the resolver code calls a callback function called resolv_found()
-00018  * that must be implemented by the module that uses the resolver.
-00019  */
-00020 
-00021 /**
-00022  * \file
-00023  * DNS host name to IP address resolver.
-00024  * \author Adam Dunkels <adam@dunkels.com>
-00025  *
-00026  * This file implements a DNS host name to IP address resolver.
-00027  */
-00028 
-00029 /*
-00030  * Copyright (c) 2002-2003, Adam Dunkels.
-00031  * All rights reserved.
-00032  *
-00033  * Redistribution and use in source and binary forms, with or without
-00034  * modification, are permitted provided that the following conditions
-00035  * are met:
-00036  * 1. Redistributions of source code must retain the above copyright
-00037  *    notice, this list of conditions and the following disclaimer.
-00038  * 2. Redistributions in binary form must reproduce the above copyright
-00039  *    notice, this list of conditions and the following disclaimer in the
-00040  *    documentation and/or other materials provided with the distribution.
-00041  * 3. The name of the author may not be used to endorse or promote
-00042  *    products derived from this software without specific prior
-00043  *    written permission.
-00044  *
-00045  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00046  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00047  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00048  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00049  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00050  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00051  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00052  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00053  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00054  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00055  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00056  *
-00057  * This file is part of the uIP TCP/IP stack.
-00058  *
-00059  * $Id: resolv.c,v 1.5 2006/06/11 21:46:37 adam Exp $
-00060  *
-00061  */
-00062 
-00063 #include "resolv.h"
-00064 #include "uip.h"
-00065 
-00066 #include <string.h>
-00067 
-00068 #ifndef NULL
-00069 #define NULL (void *)0
-00070 #endif /* NULL */
-00071 
-00072 /** \internal The maximum number of retries when asking for a name. */
-00073 #define MAX_RETRIES 8
-00074 
-00075 /** \internal The DNS message header. */
-00076 struct dns_hdr {
-00077   u16_t id;
-00078   u8_t flags1, flags2;
-00079 #define DNS_FLAG1_RESPONSE        0x80
-00080 #define DNS_FLAG1_OPCODE_STATUS   0x10
-00081 #define DNS_FLAG1_OPCODE_INVERSE  0x08
-00082 #define DNS_FLAG1_OPCODE_STANDARD 0x00
-00083 #define DNS_FLAG1_AUTHORATIVE     0x04
-00084 #define DNS_FLAG1_TRUNC           0x02
-00085 #define DNS_FLAG1_RD              0x01
-00086 #define DNS_FLAG2_RA              0x80
-00087 #define DNS_FLAG2_ERR_MASK        0x0f
-00088 #define DNS_FLAG2_ERR_NONE        0x00
-00089 #define DNS_FLAG2_ERR_NAME        0x03
-00090   u16_t numquestions;
-00091   u16_t numanswers;
-00092   u16_t numauthrr;
-00093   u16_t numextrarr;
-00094 };
-00095 
-00096 /** \internal The DNS answer message structure. */
-00097 struct dns_answer {
-00098   /* DNS answer record starts with either a domain name or a pointer
-00099      to a name already present somewhere in the packet. */
-00100   u16_t type;
-00101   u16_t class;
-00102   u16_t ttl[2];
-00103   u16_t len;
-00104   uip_ipaddr_t ipaddr;
-00105 };
-00106 
-00107 struct namemap {
-00108 #define STATE_UNUSED 0
-00109 #define STATE_NEW    1
-00110 #define STATE_ASKING 2
-00111 #define STATE_DONE   3
-00112 #define STATE_ERROR  4
-00113   u8_t state;
-00114   u8_t tmr;
-00115   u8_t retries;
-00116   u8_t seqno;
-00117   u8_t err;
-00118   char name[32];
-00119   uip_ipaddr_t ipaddr;
-00120 };
-00121 
-00122 #ifndef UIP_CONF_RESOLV_ENTRIES
-00123 #define RESOLV_ENTRIES 4
-00124 #else /* UIP_CONF_RESOLV_ENTRIES */
-00125 #define RESOLV_ENTRIES UIP_CONF_RESOLV_ENTRIES
-00126 #endif /* UIP_CONF_RESOLV_ENTRIES */
-00127 
-00128 
-00129 static struct namemap names[RESOLV_ENTRIES];
-00130 
-00131 static u8_t seqno;
-00132 
-00133 static struct uip_udp_conn *resolv_conn = NULL;
-00134 
-00135 
-00136 /*---------------------------------------------------------------------------*/
-00137 /** \internal
-00138  * Walk through a compact encoded DNS name and return the end of it.
-00139  *
-00140  * \return The end of the name.
-00141  */
-00142 /*---------------------------------------------------------------------------*/
-00143 static unsigned char *
-00144 parse_name(unsigned char *query)
-00145 {
-00146   unsigned char n;
-00147 
-00148   do {
-00149     n = *query++;
-00150     
-00151     while(n > 0) {
-00152       /*      printf("%c", *query);*/
-00153       ++query;
-00154       --n;
-00155     };
-00156     /*    printf(".");*/
-00157   } while(*query != 0);
-00158   /*  printf("\n");*/
-00159   return query + 1;
-00160 }
-00161 /*---------------------------------------------------------------------------*/
-00162 /** \internal
-00163  * Runs through the list of names to see if there are any that have
-00164  * not yet been queried and, if so, sends out a query.
-00165  */
-00166 /*---------------------------------------------------------------------------*/
-00167 static void
-00168 check_entries(void)
-00169 {
-00170   register struct dns_hdr *hdr;
-00171   char *query, *nptr, *nameptr;
-00172   static u8_t i;
-00173   static u8_t n;
-00174   register struct namemap *namemapptr;
-00175   
-00176   for(i = 0; i < RESOLV_ENTRIES; ++i) {
-00177     namemapptr = &names[i];
-00178     if(namemapptr->state == STATE_NEW ||
-00179        namemapptr->state == STATE_ASKING) {
-00180       if(namemapptr->state == STATE_ASKING) {
-00181         if(--namemapptr->tmr == 0) {
-00182           if(++namemapptr->retries == MAX_RETRIES) {
-00183             namemapptr->state = STATE_ERROR;
-00184             resolv_found(namemapptr->name, NULL);
-00185             continue;
-00186           }
-00187           namemapptr->tmr = namemapptr->retries;
-00188         } else {
-00189           /*      printf("Timer %d\n", namemapptr->tmr);*/
-00190           /* Its timer has not run out, so we move on to next
-00191              entry. */
-00192           continue;
-00193         }
-00194       } else {
-00195         namemapptr->state = STATE_ASKING;
-00196         namemapptr->tmr = 1;
-00197         namemapptr->retries = 0;
-00198       }
-00199       hdr = (struct dns_hdr *)uip_appdata;
-00200       memset(hdr, 0, sizeof(struct dns_hdr));
-00201       hdr->id = htons(i);
-00202       hdr->flags1 = DNS_FLAG1_RD;
-00203       hdr->numquestions = HTONS(1);
-00204       query = (char *)uip_appdata + 12;
-00205       nameptr = namemapptr->name;
-00206       --nameptr;
-00207       /* Convert hostname into suitable query format. */
-00208       do {
-00209         ++nameptr;
-00210         nptr = query;
-00211         ++query;
-00212         for(n = 0; *nameptr != '.' && *nameptr != 0; ++nameptr) {
-00213           *query = *nameptr;
-00214           ++query;
-00215           ++n;
-00216         }
-00217         *nptr = n;
-00218       } while(*nameptr != 0);
-00219       {
-00220         static unsigned char endquery[] =
-00221           {0,0,1,0,1};
-00222         memcpy(query, endquery, 5);
-00223       }
-00224       uip_udp_send((unsigned char)(query + 5 - (char *)uip_appdata));
-00225       break;
-00226     }
-00227   }
-00228 }
-00229 /*---------------------------------------------------------------------------*/
-00230 /** \internal
-00231  * Called when new UDP data arrives.
-00232  */
-00233 /*---------------------------------------------------------------------------*/
-00234 static void
-00235 newdata(void)
-00236 {
-00237   char *nameptr;
-00238   struct dns_answer *ans;
-00239   struct dns_hdr *hdr;
-00240   static u8_t nquestions, nanswers;
-00241   static u8_t i;
-00242   register struct namemap *namemapptr;
-00243   
-00244   hdr = (struct dns_hdr *)uip_appdata;
-00245   /*  printf("ID %d\n", htons(hdr->id));
-00246       printf("Query %d\n", hdr->flags1 & DNS_FLAG1_RESPONSE);
-00247       printf("Error %d\n", hdr->flags2 & DNS_FLAG2_ERR_MASK);
-00248       printf("Num questions %d, answers %d, authrr %d, extrarr %d\n",
-00249       htons(hdr->numquestions),
-00250       htons(hdr->numanswers),
-00251       htons(hdr->numauthrr),
-00252       htons(hdr->numextrarr));
-00253   */
-00254 
-00255   /* The ID in the DNS header should be our entry into the name
-00256      table. */
-00257   i = htons(hdr->id);
-00258   namemapptr = &names[i];
-00259   if(i < RESOLV_ENTRIES &&
-00260      namemapptr->state == STATE_ASKING) {
-00261 
-00262     /* This entry is now finished. */
-00263     namemapptr->state = STATE_DONE;
-00264     namemapptr->err = hdr->flags2 & DNS_FLAG2_ERR_MASK;
-00265 
-00266     /* Check for error. If so, call callback to inform. */
-00267     if(namemapptr->err != 0) {
-00268       namemapptr->state = STATE_ERROR;
-00269       resolv_found(namemapptr->name, NULL);
-00270       return;
-00271     }
-00272 
-00273     /* We only care about the question(s) and the answers. The authrr
-00274        and the extrarr are simply discarded. */
-00275     nquestions = htons(hdr->numquestions);
-00276     nanswers = htons(hdr->numanswers);
-00277 
-00278     /* Skip the name in the question. XXX: This should really be
-00279        checked agains the name in the question, to be sure that they
-00280        match. */
-00281     nameptr = parse_name((char *)uip_appdata + 12) + 4;
-00282 
-00283     while(nanswers > 0) {
-00284       /* The first byte in the answer resource record determines if it
-00285          is a compressed record or a normal one. */
-00286       if(*nameptr & 0xc0) {
-00287         /* Compressed name. */
-00288         nameptr +=2;
-00289         /*      printf("Compressed anwser\n");*/
-00290       } else {
-00291         /* Not compressed name. */
-00292         nameptr = parse_name((char *)nameptr);
-00293       }
-00294 
-00295       ans = (struct dns_answer *)nameptr;
-00296       /*      printf("Answer: type %x, class %x, ttl %x, length %x\n",
-00297              htons(ans->type), htons(ans->class), (htons(ans->ttl[0])
-00298              << 16) | htons(ans->ttl[1]), htons(ans->len));*/
-00299 
-00300       /* Check for IP address type and Internet class. Others are
-00301          discarded. */
-00302       if(ans->type == HTONS(1) &&
-00303          ans->class == HTONS(1) &&
-00304          ans->len == HTONS(4)) {
-00305         /*      printf("IP address %d.%d.%d.%d\n",
-00306                htons(ans->ipaddr[0]) >> 8,
-00307                htons(ans->ipaddr[0]) & 0xff,
-00308                htons(ans->ipaddr[1]) >> 8,
-00309                htons(ans->ipaddr[1]) & 0xff);*/
-00310         /* XXX: we should really check that this IP address is the one
-00311            we want. */
-00312         namemapptr->ipaddr[0] = ans->ipaddr[0];
-00313         namemapptr->ipaddr[1] = ans->ipaddr[1];
-00314         
-00315         resolv_found(namemapptr->name, namemapptr->ipaddr);
-00316         return;
-00317       } else {
-00318         nameptr = nameptr + 10 + htons(ans->len);
-00319       }
-00320       --nanswers;
-00321     }
-00322   }
-00323 
-00324 }
-00325 /*---------------------------------------------------------------------------*/
-00326 /** \internal
-00327  * The main UDP function.
-00328  */
-00329 /*---------------------------------------------------------------------------*/
-00330 void
-00331 resolv_appcall(void)
-00332 {
-00333   if(uip_udp_conn->rport == HTONS(53)) {
-00334     if(uip_poll()) {
-00335       check_entries();
-00336     }
-00337     if(uip_newdata()) {
-00338       newdata();
-00339     }
-00340   }
-00341 }
-00342 /*---------------------------------------------------------------------------*/
-00343 /**
-00344  * Queues a name so that a question for the name will be sent out.
-00345  *
-00346  * \param name The hostname that is to be queried.
-00347  */
-00348 /*---------------------------------------------------------------------------*/
-00349 void
-00350 resolv_query(char *name)
-00351 {
-00352   static u8_t i;
-00353   static u8_t lseq, lseqi;
-00354   register struct namemap *nameptr;
-00355       
-00356   lseq = lseqi = 0;
-00357   
-00358   for(i = 0; i < RESOLV_ENTRIES; ++i) {
-00359     nameptr = &names[i];
-00360     if(nameptr->state == STATE_UNUSED) {
-00361       break;
-00362     }
-00363     if(seqno - nameptr->seqno > lseq) {
-00364       lseq = seqno - nameptr->seqno;
-00365       lseqi = i;
-00366     }
-00367   }
-00368 
-00369   if(i == RESOLV_ENTRIES) {
-00370     i = lseqi;
-00371     nameptr = &names[i];
-00372   }
-00373 
-00374   /*  printf("Using entry %d\n", i);*/
-00375 
-00376   strcpy(nameptr->name, name);
-00377   nameptr->state = STATE_NEW;
-00378   nameptr->seqno = seqno;
-00379   ++seqno;
-00380 }
-00381 /*---------------------------------------------------------------------------*/
-00382 /**
-00383  * Look up a hostname in the array of known hostnames.
-00384  *
-00385  * \note This function only looks in the internal array of known
-00386  * hostnames, it does not send out a query for the hostname if none
-00387  * was found. The function resolv_query() can be used to send a query
-00388  * for a hostname.
-00389  *
-00390  * \return A pointer to a 4-byte representation of the hostname's IP
-00391  * address, or NULL if the hostname was not found in the array of
-00392  * hostnames.
-00393  */
-00394 /*---------------------------------------------------------------------------*/
-00395 u16_t *
-00396 resolv_lookup(char *name)
-00397 {
-00398   static u8_t i;
-00399   struct namemap *nameptr;
-00400   
-00401   /* Walk through the list to see if the name is in there. If it is
-00402      not, we return NULL. */
-00403   for(i = 0; i < RESOLV_ENTRIES; ++i) {
-00404     nameptr = &names[i];
-00405     if(nameptr->state == STATE_DONE &&
-00406        strcmp(name, nameptr->name) == 0) {
-00407       return nameptr->ipaddr;
-00408     }
-00409   }
-00410   return NULL;
-00411 }
-00412 /*---------------------------------------------------------------------------*/
-00413 /**
-00414  * Obtain the currently configured DNS server.
-00415  *
-00416  * \return A pointer to a 4-byte representation of the IP address of
-00417  * the currently configured DNS server or NULL if no DNS server has
-00418  * been configured.
-00419  */
-00420 /*---------------------------------------------------------------------------*/
-00421 u16_t *
-00422 resolv_getserver(void)
-00423 {
-00424   if(resolv_conn == NULL) {
-00425     return NULL;
-00426   }
-00427   return resolv_conn->ripaddr;
-00428 }
-00429 /*---------------------------------------------------------------------------*/
-00430 /**
-00431  * Configure which DNS server to use for queries.
-00432  *
-00433  * \param dnsserver A pointer to a 4-byte representation of the IP
-00434  * address of the DNS server to be configured.
-00435  */
-00436 /*---------------------------------------------------------------------------*/
-00437 void
-00438 resolv_conf(u16_t *dnsserver)
-00439 {
-00440   if(resolv_conn != NULL) {
-00441     uip_udp_remove(resolv_conn);
-00442   }
-00443   
-00444   resolv_conn = uip_udp_new(dnsserver, HTONS(53));
-00445 }
-00446 /*---------------------------------------------------------------------------*/
-00447 /**
-00448  * Initalize the resolver.
-00449  */
-00450 /*---------------------------------------------------------------------------*/
-00451 void
-00452 resolv_init(void)
-00453 {
-00454   static u8_t i;
-00455   
-00456   for(i = 0; i < RESOLV_ENTRIES; ++i) {
-00457     names[i].state = STATE_DONE;
-00458   }
-00459 
-00460 }
-00461 /*---------------------------------------------------------------------------*/
-00462 
-00463 /** @} */
-00464 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00173.html b/components/net/uip/doc/html/a00173.html deleted file mode 100644 index 1b9f8dfb22aa44ef971daf44d39ab45fab6835f4..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00173.html +++ /dev/null @@ -1,100 +0,0 @@ - - -uIP 1.0: apps/resolv/resolv.h Source File - - - - - - -

apps/resolv/resolv.h

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup resolv
-00003  * @{
-00004  */
-00005 /**
-00006  * \file
-00007  * DNS resolver code header file.
-00008  * \author Adam Dunkels <adam@dunkels.com>
-00009  */
-00010 
-00011 /*
-00012  * Copyright (c) 2002-2003, Adam Dunkels.
-00013  * All rights reserved.
-00014  *
-00015  * Redistribution and use in source and binary forms, with or without
-00016  * modification, are permitted provided that the following conditions
-00017  * are met:
-00018  * 1. Redistributions of source code must retain the above copyright
-00019  *    notice, this list of conditions and the following disclaimer.
-00020  * 2. Redistributions in binary form must reproduce the above copyright
-00021  *    notice, this list of conditions and the following disclaimer in the
-00022  *    documentation and/or other materials provided with the distribution.
-00023  * 3. The name of the author may not be used to endorse or promote
-00024  *    products derived from this software without specific prior
-00025  *    written permission.
-00026  *
-00027  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00028  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00029  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00030  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00031  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00032  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00033  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00034  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00035  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00036  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00037  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00038  *
-00039  * This file is part of the uIP TCP/IP stack.
-00040  *
-00041  * $Id: resolv.h,v 1.4 2006/06/11 21:46:37 adam Exp $
-00042  *
-00043  */
-00044 #ifndef __RESOLV_H__
-00045 #define __RESOLV_H__
-00046 
-00047 typedef int uip_udp_appstate_t;
-00048 void resolv_appcall(void);
-00049 #define UIP_UDP_APPCALL resolv_appcall
-00050 
-00051 #include "uipopt.h"
-00052 
-00053 /**
-00054  * Callback function which is called when a hostname is found.
-00055  *
-00056  * This function must be implemented by the module that uses the DNS
-00057  * resolver. It is called when a hostname is found, or when a hostname
-00058  * was not found.
-00059  *
-00060  * \param name A pointer to the name that was looked up.  \param
-00061  * ipaddr A pointer to a 4-byte array containing the IP address of the
-00062  * hostname, or NULL if the hostname could not be found.
-00063  */
-00064 void resolv_found(char *name, u16_t *ipaddr);
-00065 
-00066 /* Functions. */
-00067 void resolv_conf(u16_t *dnsserver);
-00068 u16_t *resolv_getserver(void);
-00069 void resolv_init(void);
-00070 u16_t *resolv_lookup(char *name);
-00071 void resolv_query(char *name);
-00072 
-00073 #endif /* __RESOLV_H__ */
-00074 
-00075 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00174.html b/components/net/uip/doc/html/a00174.html deleted file mode 100644 index c535c4aec39f9fbcde8e0b99efdcc057a82ff240..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00174.html +++ /dev/null @@ -1,287 +0,0 @@ - - -uIP 1.0: apps/smtp/smtp.c Source File - - - - - - -

apps/smtp/smtp.c

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup apps
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \defgroup smtp SMTP E-mail sender
-00008  * @{
-00009  *
-00010  * The Simple Mail Transfer Protocol (SMTP) as defined by RFC821 is
-00011  * the standard way of sending and transfering e-mail on the
-00012  * Internet. This simple example implementation is intended as an
-00013  * example of how to implement protocols in uIP, and is able to send
-00014  * out e-mail but has not been extensively tested.
-00015  */
-00016 
-00017 /**
-00018  * \file
-00019  * SMTP example implementation
-00020  * \author Adam Dunkels <adam@dunkels.com>
-00021  */
-00022 
-00023 /*
-00024  * Copyright (c) 2004, Adam Dunkels.
-00025  * All rights reserved.
-00026  *
-00027  * Redistribution and use in source and binary forms, with or without
-00028  * modification, are permitted provided that the following conditions
-00029  * are met:
-00030  * 1. Redistributions of source code must retain the above copyright
-00031  *    notice, this list of conditions and the following disclaimer.
-00032  * 2. Redistributions in binary form must reproduce the above copyright
-00033  *    notice, this list of conditions and the following disclaimer in the
-00034  *    documentation and/or other materials provided with the distribution.
-00035  * 3. Neither the name of the Institute nor the names of its contributors
-00036  *    may be used to endorse or promote products derived from this software
-00037  *    without specific prior written permission.
-00038  *
-00039  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00040  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00041  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00042  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00043  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00044  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00045  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00046  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00047  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00048  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00049  * SUCH DAMAGE.
-00050  *
-00051  * This file is part of the uIP TCP/IP stack.
-00052  *
-00053  * Author: Adam Dunkels <adam@sics.se>
-00054  *
-00055  * $Id: smtp.c,v 1.4 2006/06/11 21:46:37 adam Exp $
-00056  */
-00057 #include "smtp.h"
-00058 
-00059 #include "smtp-strings.h"
-00060 #include "psock.h"
-00061 #include "uip.h"
-00062 
-00063 #include <string.h>
-00064 
-00065 static struct smtp_state s;
-00066 
-00067 static char *localhostname;
-00068 static uip_ipaddr_t smtpserver;
-00069 
-00070 #define ISO_nl 0x0a
-00071 #define ISO_cr 0x0d
-00072 
-00073 #define ISO_period 0x2e
-00074 
-00075 #define ISO_2  0x32
-00076 #define ISO_3  0x33
-00077 #define ISO_4  0x34
-00078 #define ISO_5  0x35
-00079 
-00080 
-00081 /*---------------------------------------------------------------------------*/
-00082 static
-00083 PT_THREAD(smtp_thread(void))
-00084 {
-00085   PSOCK_BEGIN(&s.psock);
-00086 
-00087   PSOCK_READTO(&s.psock, ISO_nl);
-00088    
-00089   if(strncmp(s.inputbuffer, smtp_220, 3) != 0) {
-00090     PSOCK_CLOSE(&s.psock);
-00091     smtp_done(2);
-00092     PSOCK_EXIT(&s.psock);
-00093   }
-00094   
-00095   PSOCK_SEND_STR(&s.psock, (char *)smtp_helo);
-00096   PSOCK_SEND_STR(&s.psock, localhostname);
-00097   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00098 
-00099   PSOCK_READTO(&s.psock, ISO_nl);
-00100   
-00101   if(s.inputbuffer[0] != ISO_2) {
-00102     PSOCK_CLOSE(&s.psock);
-00103     smtp_done(3);
-00104     PSOCK_EXIT(&s.psock);
-00105   }
-00106 
-00107   PSOCK_SEND_STR(&s.psock, (char *)smtp_mail_from);
-00108   PSOCK_SEND_STR(&s.psock, s.from);
-00109   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00110 
-00111   PSOCK_READTO(&s.psock, ISO_nl);
-00112   
-00113   if(s.inputbuffer[0] != ISO_2) {
-00114     PSOCK_CLOSE(&s.psock);
-00115     smtp_done(4);
-00116     PSOCK_EXIT(&s.psock);
-00117   }
-00118 
-00119   PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to);
-00120   PSOCK_SEND_STR(&s.psock, s.to);
-00121   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00122 
-00123   PSOCK_READTO(&s.psock, ISO_nl);
-00124   
-00125   if(s.inputbuffer[0] != ISO_2) {
-00126     PSOCK_CLOSE(&s.psock);
-00127     smtp_done(5);
-00128     PSOCK_EXIT(&s.psock);
-00129   }
-00130   
-00131   if(s.cc != 0) {
-00132     PSOCK_SEND_STR(&s.psock, (char *)smtp_rcpt_to);
-00133     PSOCK_SEND_STR(&s.psock, s.cc);
-00134     PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00135 
-00136     PSOCK_READTO(&s.psock, ISO_nl);
-00137   
-00138     if(s.inputbuffer[0] != ISO_2) {
-00139       PSOCK_CLOSE(&s.psock);
-00140       smtp_done(6);
-00141       PSOCK_EXIT(&s.psock);
-00142     }
-00143   }
-00144   
-00145   PSOCK_SEND_STR(&s.psock, (char *)smtp_data);
-00146   
-00147   PSOCK_READTO(&s.psock, ISO_nl);
-00148   
-00149   if(s.inputbuffer[0] != ISO_3) {
-00150     PSOCK_CLOSE(&s.psock);
-00151     smtp_done(7);
-00152     PSOCK_EXIT(&s.psock);
-00153   }
-00154 
-00155   PSOCK_SEND_STR(&s.psock, (char *)smtp_to);
-00156   PSOCK_SEND_STR(&s.psock, s.to);
-00157   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00158   
-00159   if(s.cc != 0) {
-00160     PSOCK_SEND_STR(&s.psock, (char *)smtp_cc);
-00161     PSOCK_SEND_STR(&s.psock, s.cc);
-00162     PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00163   }
-00164   
-00165   PSOCK_SEND_STR(&s.psock, (char *)smtp_from);
-00166   PSOCK_SEND_STR(&s.psock, s.from);
-00167   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00168   
-00169   PSOCK_SEND_STR(&s.psock, (char *)smtp_subject);
-00170   PSOCK_SEND_STR(&s.psock, s.subject);
-00171   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnl);
-00172 
-00173   PSOCK_SEND(&s.psock, s.msg, s.msglen);
-00174   
-00175   PSOCK_SEND_STR(&s.psock, (char *)smtp_crnlperiodcrnl);
-00176 
-00177   PSOCK_READTO(&s.psock, ISO_nl);
-00178   if(s.inputbuffer[0] != ISO_2) {
-00179     PSOCK_CLOSE(&s.psock);
-00180     smtp_done(8);
-00181     PSOCK_EXIT(&s.psock);
-00182   }
-00183 
-00184   PSOCK_SEND_STR(&s.psock, (char *)smtp_quit);
-00185   smtp_done(SMTP_ERR_OK);
-00186   PSOCK_END(&s.psock);
-00187 }
-00188 /*---------------------------------------------------------------------------*/
-00189 void
-00190 smtp_appcall(void)
-00191 {
-00192   if(uip_closed()) {
-00193     s.connected = 0;
-00194     return;
-00195   }
-00196   if(uip_aborted() || uip_timedout()) {
-00197     s.connected = 0;
-00198     smtp_done(1);
-00199     return;
-00200   }
-00201   smtp_thread();
-00202 }
-00203 /*---------------------------------------------------------------------------*/
-00204 /**
-00205  * Specificy an SMTP server and hostname.
-00206  *
-00207  * This function is used to configure the SMTP module with an SMTP
-00208  * server and the hostname of the host.
-00209  *
-00210  * \param lhostname The hostname of the uIP host.
-00211  *
-00212  * \param server A pointer to a 4-byte array representing the IP
-00213  * address of the SMTP server to be configured.
-00214  */
-00215 void
-00216 smtp_configure(char *lhostname, void *server)
-00217 {
-00218   localhostname = lhostname;
-00219   uip_ipaddr_copy(smtpserver, server);
-00220 }
-00221 /*---------------------------------------------------------------------------*/
-00222 /**
-00223  * Send an e-mail.
-00224  *
-00225  * \param to The e-mail address of the receiver of the e-mail.
-00226  * \param cc The e-mail address of the CC: receivers of the e-mail.
-00227  * \param from The e-mail address of the sender of the e-mail.
-00228  * \param subject The subject of the e-mail.
-00229  * \param msg The actual e-mail message.
-00230  * \param msglen The length of the e-mail message.
-00231  */
-00232 unsigned char
-00233 smtp_send(char *to, char *cc, char *from,
-00234           char *subject, char *msg, u16_t msglen)
-00235 {
-00236   struct uip_conn *conn;
-00237 
-00238   conn = uip_connect(smtpserver, HTONS(25));
-00239   if(conn == NULL) {
-00240     return 0;
-00241   }
-00242   s.connected = 1;
-00243   s.to = to;
-00244   s.cc = cc;
-00245   s.from = from;
-00246   s.subject = subject;
-00247   s.msg = msg;
-00248   s.msglen = msglen;
-00249 
-00250   PSOCK_INIT(&s.psock, s.inputbuffer, sizeof(s.inputbuffer));
-00251   
-00252   return 1;
-00253 }
-00254 /*---------------------------------------------------------------------------*/
-00255 void
-00256 smtp_init(void)
-00257 {
-00258   s.connected = 0;
-00259 }
-00260 /*---------------------------------------------------------------------------*/
-00261 /** @} */
-00262 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00175.html b/components/net/uip/doc/html/a00175.html deleted file mode 100644 index 98342be7afc752ef88a228cd2aa44dba122bde97..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00175.html +++ /dev/null @@ -1,128 +0,0 @@ - - -uIP 1.0: apps/smtp/smtp.h Source File - - - - - - -

apps/smtp/smtp.h

Go to the documentation of this file.
00001 
-00002 /**
-00003  * \addtogroup smtp
-00004  * @{
-00005  */
-00006 
-00007 
-00008 /**
-00009  * \file
-00010  * SMTP header file
-00011  * \author Adam Dunkels <adam@dunkels.com>
-00012  */
-00013 
-00014 /*
-00015  * Copyright (c) 2002, Adam Dunkels.
-00016  * All rights reserved.
-00017  *
-00018  * Redistribution and use in source and binary forms, with or without
-00019  * modification, are permitted provided that the following conditions
-00020  * are met:
-00021  * 1. Redistributions of source code must retain the above copyright
-00022  *    notice, this list of conditions and the following disclaimer.
-00023  * 2. Redistributions in binary form must reproduce the above copyright
-00024  *    notice, this list of conditions and the following disclaimer in the
-00025  *    documentation and/or other materials provided with the distribution.
-00026  * 3. The name of the author may not be used to endorse or promote
-00027  *    products derived from this software without specific prior
-00028  *    written permission.
-00029  *
-00030  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00031  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00032  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00033  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00034  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00035  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00036  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00037  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00038  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00039  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00040  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00041  *
-00042  * This file is part of the uIP TCP/IP stack.
-00043  *
-00044  * $Id: smtp.h,v 1.4 2006/06/11 21:46:37 adam Exp $
-00045  *
-00046  */
-00047 #ifndef __SMTP_H__
-00048 #define __SMTP_H__
-00049 
-00050 #include "uipopt.h"
-00051 
-00052 /**
-00053  * Error number that signifies a non-error condition.
-00054  */
-00055 #define SMTP_ERR_OK 0
-00056 
-00057 /**
-00058  * Callback function that is called when an e-mail transmission is
-00059  * done.
-00060  *
-00061  * This function must be implemented by the module that uses the SMTP
-00062  * module.
-00063  *
-00064  * \param error The number of the error if an error occured, or
-00065  * SMTP_ERR_OK.
-00066  */
-00067 void smtp_done(unsigned char error);
-00068 
-00069 void smtp_init(void);
-00070 
-00071 /* Functions. */
-00072 void smtp_configure(char *localhostname, u16_t *smtpserver);
-00073 unsigned char smtp_send(char *to, char *from,
-00074                         char *subject, char *msg,
-00075                         u16_t msglen);
-00076 #define SMTP_SEND(to, cc, from, subject, msg) \
-00077         smtp_send(to, cc, from, subject, msg, strlen(msg))
-00078 
-00079 void smtp_appcall(void);
-00080 
-00081 struct smtp_state {
-00082   u8_t state;
-00083   char *to;
-00084   char *from;
-00085   char *subject;
-00086   char *msg;
-00087   u16_t msglen;
-00088   
-00089   u16_t sentlen, textlen;
-00090   u16_t sendptr;
-00091 
-00092 };
-00093 
-00094 
-00095 #ifndef UIP_APPCALL
-00096 #define UIP_APPCALL     smtp_appcall
-00097 #endif
-00098 typedef struct smtp_state uip_tcp_appstate_t;
-00099 
-00100 
-00101 #endif /* __SMTP_H__ */
-00102 
-00103 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00176.html b/components/net/uip/doc/html/a00176.html deleted file mode 100644 index 100bf7aa627d0e0d459e4892330223c836f76bb8..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00176.html +++ /dev/null @@ -1,148 +0,0 @@ - - -uIP 1.0: apps/telnetd/shell.c Source File - - - - - - -

apps/telnetd/shell.c

00001  /*
-00002  * Copyright (c) 2003, Adam Dunkels.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. The name of the author may not be used to endorse or promote
-00014  *    products derived from this software without specific prior
-00015  *    written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00018  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00019  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00021  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00023  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00025  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00026  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00027  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack.
-00030  *
-00031  * $Id: shell.c,v 1.1 2006/06/07 09:43:54 adam Exp $
-00032  *
-00033  */
-00034 
-00035 #include "shell.h"
-00036 
-00037 #include <string.h>
-00038 
-00039 struct ptentry {
-00040   char *commandstr;
-00041   void (* pfunc)(char *str);
-00042 };
-00043 
-00044 #define SHELL_PROMPT "uIP 1.0> "
-00045 
-00046 /*---------------------------------------------------------------------------*/
-00047 static void
-00048 parse(register char *str, struct ptentry *t)
-00049 {
-00050   struct ptentry *p;
-00051   for(p = t; p->commandstr != NULL; ++p) {
-00052     if(strncmp(p->commandstr, str, strlen(p->commandstr)) == 0) {
-00053       break;
-00054     }
-00055   }
-00056 
-00057   p->pfunc(str);
-00058 }
-00059 /*---------------------------------------------------------------------------*/
-00060 static void
-00061 inttostr(register char *str, unsigned int i)
-00062 {
-00063   str[0] = '0' + i / 100;
-00064   if(str[0] == '0') {
-00065     str[0] = ' ';
-00066   }
-00067   str[1] = '0' + (i / 10) % 10;
-00068   if(str[0] == ' ' && str[1] == '0') {
-00069     str[1] = ' ';
-00070   }
-00071   str[2] = '0' + i % 10;
-00072   str[3] = ' ';
-00073   str[4] = 0;
-00074 }
-00075 /*---------------------------------------------------------------------------*/
-00076 static void
-00077 help(char *str)
-00078 {
-00079   shell_output("Available commands:", "");
-00080   shell_output("stats   - show network statistics", "");
-00081   shell_output("conn    - show TCP connections", "");
-00082   shell_output("help, ? - show help", "");
-00083   shell_output("exit    - exit shell", "");
-00084 }
-00085 /*---------------------------------------------------------------------------*/
-00086 static void
-00087 unknown(char *str)
-00088 {
-00089   if(strlen(str) > 0) {
-00090     shell_output("Unknown command: ", str);
-00091   }
-00092 }
-00093 /*---------------------------------------------------------------------------*/
-00094 static struct ptentry parsetab[] =
-00095   {{"stats", help},
-00096    {"conn", help},
-00097    {"help", help},
-00098    {"exit", shell_quit},
-00099    {"?", help},
-00100 
-00101    /* Default action */
-00102    {NULL, unknown}};
-00103 /*---------------------------------------------------------------------------*/
-00104 void
-00105 shell_init(void)
-00106 {
-00107 }
-00108 /*---------------------------------------------------------------------------*/
-00109 void
-00110 shell_start(void)
-00111 {
-00112   shell_output("uIP command shell", "");
-00113   shell_output("Type '?' and return for help", "");
-00114   shell_prompt(SHELL_PROMPT);
-00115 }
-00116 /*---------------------------------------------------------------------------*/
-00117 void
-00118 shell_input(char *cmd)
-00119 {
-00120   parse(cmd, parsetab);
-00121   shell_prompt(SHELL_PROMPT);
-00122 }
-00123 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00177.html b/components/net/uip/doc/html/a00177.html deleted file mode 100644 index 2126707f18f498d959142aba9b4ca95c2b6e3397..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00177.html +++ /dev/null @@ -1,129 +0,0 @@ - - -uIP 1.0: apps/telnetd/shell.h Source File - - - - - - -

apps/telnetd/shell.h

Go to the documentation of this file.
00001 /**
-00002  * \file
-00003  * Interface for the Contiki shell.
-00004  * \author Adam Dunkels <adam@dunkels.com>
-00005  *
-00006  * Some of the functions declared in this file must be implemented as
-00007  * a shell back-end in the architecture specific files of a Contiki
-00008  * port.
-00009  */
-00010 
-00011 
-00012 /*
-00013  * Copyright (c) 2003, Adam Dunkels.
-00014  * All rights reserved.
-00015  *
-00016  * Redistribution and use in source and binary forms, with or without
-00017  * modification, are permitted provided that the following conditions
-00018  * are met:
-00019  * 1. Redistributions of source code must retain the above copyright
-00020  *    notice, this list of conditions and the following disclaimer.
-00021  * 2. Redistributions in binary form must reproduce the above copyright
-00022  *    notice, this list of conditions and the following disclaimer in the
-00023  *    documentation and/or other materials provided with the distribution.
-00024  * 3. The name of the author may not be used to endorse or promote
-00025  *    products derived from this software without specific prior
-00026  *    written permission.
-00027  *
-00028  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00029  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00030  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00031  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00032  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00033  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00034  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00035  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00036  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00037  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00038  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00039  *
-00040  * This file is part of the Contiki desktop OS.
-00041  *
-00042  * $Id: shell.h,v 1.1 2006/06/07 09:43:54 adam Exp $
-00043  *
-00044  */
-00045 #ifndef __SHELL_H__
-00046 #define __SHELL_H__
-00047 
-00048 /**
-00049  * Initialize the shell.
-00050  *
-00051  * Called when the shell front-end process starts. This function may
-00052  * be used to start listening for signals.
-00053  */
-00054 void shell_init(void);
-00055 
-00056 /**
-00057  * Start the shell back-end.
-00058  *
-00059  * Called by the front-end when a new shell is started.
-00060  */
-00061 void shell_start(void);
-00062 
-00063 /**
-00064  * Process a shell command.
-00065  *
-00066  * This function will be called by the shell GUI / telnet server whan
-00067  * a command has been entered that should be processed by the shell
-00068  * back-end.
-00069  *
-00070  * \param command The command to be processed.
-00071  */
-00072 void shell_input(char *command);
-00073 
-00074 /**
-00075  * Quit the shell.
-00076  *
-00077  */
-00078 void shell_quit(char *);
-00079 
-00080 
-00081 /**
-00082  * Print a string to the shell window.
-00083  *
-00084  * This function is implemented by the shell GUI / telnet server and
-00085  * can be called by the shell back-end to output a string in the
-00086  * shell window. The string is automatically appended with a linebreak.
-00087  *
-00088  * \param str1 The first half of the string to be output.
-00089  * \param str2 The second half of the string to be output.
-00090  */
-00091 void shell_output(char *str1, char *str2);
-00092 
-00093 /**
-00094  * Print a prompt to the shell window.
-00095  *
-00096  * This function can be used by the shell back-end to print out a
-00097  * prompt to the shell window.
-00098  *
-00099  * \param prompt The prompt to be printed.
-00100  *
-00101  */
-00102 void shell_prompt(char *prompt);
-00103 
-00104 #endif /* __SHELL_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00178.html b/components/net/uip/doc/html/a00178.html deleted file mode 100644 index 9b19f4e723e81e39d7f0099c822f9fedbec7d3ee..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00178.html +++ /dev/null @@ -1,375 +0,0 @@ - - -uIP 1.0: apps/telnetd/telnetd.c Source File - - - - - - -

apps/telnetd/telnetd.c

00001 /*
-00002  * Copyright (c) 2003, Adam Dunkels.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. The name of the author may not be used to endorse or promote
-00014  *    products derived from this software without specific prior
-00015  *    written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00018  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00019  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00021  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00023  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00025  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00026  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00027  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * $Id: telnetd.c,v 1.2 2006/06/07 09:43:54 adam Exp $
-00032  *
-00033  */
-00034 
-00035 #include "uip.h"
-00036 #include "telnetd.h"
-00037 #include "memb.h"
-00038 #include "shell.h"
-00039 
-00040 #include <string.h>
-00041 
-00042 #define ISO_nl       0x0a
-00043 #define ISO_cr       0x0d
-00044 
-00045 struct telnetd_line {
-00046   char line[TELNETD_CONF_LINELEN];
-00047 };
-00048 MEMB(linemem, struct telnetd_line, TELNETD_CONF_NUMLINES);
-00049 
-00050 #define STATE_NORMAL 0
-00051 #define STATE_IAC    1
-00052 #define STATE_WILL   2
-00053 #define STATE_WONT   3
-00054 #define STATE_DO     4
-00055 #define STATE_DONT   5
-00056 #define STATE_CLOSE  6
-00057 
-00058 static struct telnetd_state s;
-00059 
-00060 #define TELNET_IAC   255
-00061 #define TELNET_WILL  251
-00062 #define TELNET_WONT  252
-00063 #define TELNET_DO    253
-00064 #define TELNET_DONT  254
-00065 /*---------------------------------------------------------------------------*/
-00066 static char *
-00067 alloc_line(void)
-00068 {
-00069   return memb_alloc(&linemem);
-00070 }
-00071 /*---------------------------------------------------------------------------*/
-00072 static void
-00073 dealloc_line(char *line)
-00074 {
-00075   memb_free(&linemem, line);
-00076 }
-00077 /*---------------------------------------------------------------------------*/
-00078 void
-00079 shell_quit(char *str)
-00080 {
-00081   s.state = STATE_CLOSE;
-00082 }
-00083 /*---------------------------------------------------------------------------*/
-00084 static void
-00085 sendline(char *line)
-00086 {
-00087   static unsigned int i;
-00088   
-00089   for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
-00090     if(s.lines[i] == NULL) {
-00091       s.lines[i] = line;
-00092       break;
-00093     }
-00094   }
-00095   if(i == TELNETD_CONF_NUMLINES) {
-00096     dealloc_line(line);
-00097   }
-00098 }
-00099 /*---------------------------------------------------------------------------*/
-00100 void
-00101 shell_prompt(char *str)
-00102 {
-00103   char *line;
-00104   line = alloc_line();
-00105   if(line != NULL) {
-00106     strncpy(line, str, TELNETD_CONF_LINELEN);
-00107     /*    petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/
-00108     sendline(line);
-00109   }
-00110 }
-00111 /*---------------------------------------------------------------------------*/
-00112 void
-00113 shell_output(char *str1, char *str2)
-00114 {
-00115   static unsigned len;
-00116   char *line;
-00117 
-00118   line = alloc_line();
-00119   if(line != NULL) {
-00120     len = strlen(str1);
-00121     strncpy(line, str1, TELNETD_CONF_LINELEN);
-00122     if(len < TELNETD_CONF_LINELEN) {
-00123       strncpy(line + len, str2, TELNETD_CONF_LINELEN - len);
-00124     }
-00125     len = strlen(line);
-00126     if(len < TELNETD_CONF_LINELEN - 2) {
-00127       line[len] = ISO_cr;
-00128       line[len+1] = ISO_nl;
-00129       line[len+2] = 0;
-00130     }
-00131     /*    petsciiconv_toascii(line, TELNETD_CONF_LINELEN);*/
-00132     sendline(line);
-00133   }
-00134 }
-00135 /*---------------------------------------------------------------------------*/
-00136 void
-00137 telnetd_init(void)
-00138 {
-00139   uip_listen(HTONS(23));
-00140   memb_init(&linemem);
-00141   shell_init();
-00142 }
-00143 /*---------------------------------------------------------------------------*/
-00144 static void
-00145 acked(void)
-00146 {
-00147   static unsigned int i;
-00148   
-00149   while(s.numsent > 0) {
-00150     dealloc_line(s.lines[0]);
-00151     for(i = 1; i < TELNETD_CONF_NUMLINES; ++i) {
-00152       s.lines[i - 1] = s.lines[i];
-00153     }
-00154     s.lines[TELNETD_CONF_NUMLINES - 1] = NULL;
-00155     --s.numsent;
-00156   }
-00157 }
-00158 /*---------------------------------------------------------------------------*/
-00159 static void
-00160 senddata(void)
-00161 {
-00162   static char *bufptr, *lineptr;
-00163   static int buflen, linelen;
-00164   
-00165   bufptr = uip_appdata;
-00166   buflen = 0;
-00167   for(s.numsent = 0; s.numsent < TELNETD_CONF_NUMLINES &&
-00168         s.lines[s.numsent] != NULL ; ++s.numsent) {
-00169     lineptr = s.lines[s.numsent];
-00170     linelen = strlen(lineptr);
-00171     if(linelen > TELNETD_CONF_LINELEN) {
-00172       linelen = TELNETD_CONF_LINELEN;
-00173     }
-00174     if(buflen + linelen < uip_mss()) {
-00175       memcpy(bufptr, lineptr, linelen);
-00176       bufptr += linelen;
-00177       buflen += linelen;
-00178     } else {
-00179       break;
-00180     }
-00181   }
-00182   uip_send(uip_appdata, buflen);
-00183 }
-00184 /*---------------------------------------------------------------------------*/
-00185 static void
-00186 closed(void)
-00187 {
-00188   static unsigned int i;
-00189   
-00190   for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
-00191     if(s.lines[i] != NULL) {
-00192       dealloc_line(s.lines[i]);
-00193     }
-00194   }
-00195 }
-00196 /*---------------------------------------------------------------------------*/
-00197 static void
-00198 get_char(u8_t c)
-00199 {
-00200   if(c == ISO_cr) {
-00201     return;
-00202   }
-00203   
-00204   s.buf[(int)s.bufptr] = c;
-00205   if(s.buf[(int)s.bufptr] == ISO_nl ||
-00206      s.bufptr == sizeof(s.buf) - 1) {
-00207     if(s.bufptr > 0) {
-00208       s.buf[(int)s.bufptr] = 0;
-00209       /*      petsciiconv_topetscii(s.buf, TELNETD_CONF_LINELEN);*/
-00210     }
-00211     shell_input(s.buf);
-00212     s.bufptr = 0;
-00213   } else {
-00214     ++s.bufptr;
-00215   }
-00216 }
-00217 /*---------------------------------------------------------------------------*/
-00218 static void
-00219 sendopt(u8_t option, u8_t value)
-00220 {
-00221   char *line;
-00222   line = alloc_line();
-00223   if(line != NULL) {
-00224     line[0] = TELNET_IAC;
-00225     line[1] = option;
-00226     line[2] = value;
-00227     line[3] = 0;
-00228     sendline(line);
-00229   }
-00230 }
-00231 /*---------------------------------------------------------------------------*/
-00232 static void
-00233 newdata(void)
-00234 {
-00235   u16_t len;
-00236   u8_t c;
-00237   char *dataptr;
-00238     
-00239   
-00240   len = uip_datalen();
-00241   dataptr = (char *)uip_appdata;
-00242   
-00243   while(len > 0 && s.bufptr < sizeof(s.buf)) {
-00244     c = *dataptr;
-00245     ++dataptr;
-00246     --len;
-00247     switch(s.state) {
-00248     case STATE_IAC:
-00249       if(c == TELNET_IAC) {
-00250         get_char(c);
-00251         s.state = STATE_NORMAL;
-00252       } else {
-00253         switch(c) {
-00254         case TELNET_WILL:
-00255           s.state = STATE_WILL;
-00256           break;
-00257         case TELNET_WONT:
-00258           s.state = STATE_WONT;
-00259           break;
-00260         case TELNET_DO:
-00261           s.state = STATE_DO;
-00262           break;
-00263         case TELNET_DONT:
-00264           s.state = STATE_DONT;
-00265           break;
-00266         default:
-00267           s.state = STATE_NORMAL;
-00268           break;
-00269         }
-00270       }
-00271       break;
-00272     case STATE_WILL:
-00273       /* Reply with a DONT */
-00274       sendopt(TELNET_DONT, c);
-00275       s.state = STATE_NORMAL;
-00276       break;
-00277       
-00278     case STATE_WONT:
-00279       /* Reply with a DONT */
-00280       sendopt(TELNET_DONT, c);
-00281       s.state = STATE_NORMAL;
-00282       break;
-00283     case STATE_DO:
-00284       /* Reply with a WONT */
-00285       sendopt(TELNET_WONT, c);
-00286       s.state = STATE_NORMAL;
-00287       break;
-00288     case STATE_DONT:
-00289       /* Reply with a WONT */
-00290       sendopt(TELNET_WONT, c);
-00291       s.state = STATE_NORMAL;
-00292       break;
-00293     case STATE_NORMAL:
-00294       if(c == TELNET_IAC) {
-00295         s.state = STATE_IAC;
-00296       } else {
-00297         get_char(c);
-00298       }
-00299       break;
-00300     }
-00301 
-00302     
-00303   }
-00304   
-00305 }
-00306 /*---------------------------------------------------------------------------*/
-00307 void
-00308 telnetd_appcall(void)
-00309 {
-00310   static unsigned int i;
-00311   if(uip_connected()) {
-00312     /*    tcp_markconn(uip_conn, &s);*/
-00313     for(i = 0; i < TELNETD_CONF_NUMLINES; ++i) {
-00314       s.lines[i] = NULL;
-00315     }
-00316     s.bufptr = 0;
-00317     s.state = STATE_NORMAL;
-00318 
-00319     shell_start();
-00320   }
-00321 
-00322   if(s.state == STATE_CLOSE) {
-00323     s.state = STATE_NORMAL;
-00324     uip_close();
-00325     return;
-00326   }
-00327   
-00328   if(uip_closed() ||
-00329      uip_aborted() ||
-00330      uip_timedout()) {
-00331     closed();
-00332   }
-00333   
-00334   if(uip_acked()) {
-00335     acked();
-00336   }
-00337   
-00338   if(uip_newdata()) {
-00339     newdata();
-00340   }
-00341   
-00342   if(uip_rexmit() ||
-00343      uip_newdata() ||
-00344      uip_acked() ||
-00345      uip_connected() ||
-00346      uip_poll()) {
-00347     senddata();
-00348   }
-00349 }
-00350 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00179.html b/components/net/uip/doc/html/a00179.html deleted file mode 100644 index 139d6f07f8a58bd09cc29ceb2036f70a012c8711..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00179.html +++ /dev/null @@ -1,88 +0,0 @@ - - -uIP 1.0: apps/telnetd/telnetd.h Source File - - - - - - -

apps/telnetd/telnetd.h

00001 /*
-00002  * Copyright (c) 2003, Adam Dunkels.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above
-00011  *    copyright notice, this list of conditions and the following
-00012  *    disclaimer in the documentation and/or other materials provided
-00013  *    with the distribution.
-00014  * 3. The name of the author may not be used to endorse or promote
-00015  *    products derived from this software without specific prior
-00016  *    written permission.
-00017  *
-00018  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00019  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00020  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00021  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00022  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00023  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00024  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00025  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00026  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00027  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00028  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00029  *
-00030  * This file is part of the uIP TCP/IP stack
-00031  *
-00032  * $Id: telnetd.h,v 1.2 2006/06/07 09:43:54 adam Exp $
-00033  *
-00034  */
-00035 #ifndef __TELNETD_H__
-00036 #define __TELNETD_H__
-00037 
-00038 #include "uipopt.h"
-00039 
-00040 void telnetd_appcall(void);
-00041 
-00042 #ifndef TELNETD_CONF_LINELEN
-00043 #define TELNETD_CONF_LINELEN 40
-00044 #endif
-00045 #ifndef TELNETD_CONF_NUMLINES
-00046 #define TELNETD_CONF_NUMLINES 16
-00047 #endif
-00048 
-00049 struct telnetd_state {
-00050   char *lines[TELNETD_CONF_NUMLINES];
-00051   char buf[TELNETD_CONF_LINELEN];
-00052   char bufptr;
-00053   u8_t numsent;
-00054   u8_t state;
-00055 };
-00056 
-00057 typedef struct telnetd_state uip_tcp_appstate_t;
-00058 
-00059 #ifndef UIP_APPCALL
-00060 #define UIP_APPCALL     telnetd_appcall
-00061 #endif
-00062 
-00063 #endif /* __TELNETD_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00180.html b/components/net/uip/doc/html/a00180.html deleted file mode 100644 index 6f1abbc686169cfa18cf3402ef390a0144d7b8a8..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00180.html +++ /dev/null @@ -1,464 +0,0 @@ - - -uIP 1.0: apps/webclient/webclient.c Source File - - - - - - -

apps/webclient/webclient.c

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup apps
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \defgroup webclient Web client
-00008  * @{
-00009  *
-00010  * This example shows a HTTP client that is able to download web pages
-00011  * and files from web servers. It requires a number of callback
-00012  * functions to be implemented by the module that utilizes the code:
-00013  * webclient_datahandler(), webclient_connected(),
-00014  * webclient_timedout(), webclient_aborted(), webclient_closed().
-00015  */
-00016 
-00017 /**
-00018  * \file
-00019  * Implementation of the HTTP client.
-00020  * \author Adam Dunkels <adam@dunkels.com>
-00021  */
-00022 
-00023 /*
-00024  * Copyright (c) 2002, Adam Dunkels.
-00025  * All rights reserved.
-00026  *
-00027  * Redistribution and use in source and binary forms, with or without
-00028  * modification, are permitted provided that the following conditions
-00029  * are met:
-00030  * 1. Redistributions of source code must retain the above copyright
-00031  *    notice, this list of conditions and the following disclaimer.
-00032  * 2. Redistributions in binary form must reproduce the above
-00033  *    copyright notice, this list of conditions and the following
-00034  *    disclaimer in the documentation and/or other materials provided
-00035  *    with the distribution.
-00036  * 3. The name of the author may not be used to endorse or promote
-00037  *    products derived from this software without specific prior
-00038  *    written permission.
-00039  *
-00040  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00041  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00042  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00043  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00044  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00045  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00046  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00047  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00048  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00049  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00050  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00051  *
-00052  * This file is part of the uIP TCP/IP stack.
-00053  *
-00054  * $Id: webclient.c,v 1.2 2006/06/11 21:46:37 adam Exp $
-00055  *
-00056  */
-00057 
-00058 #include "uip.h"
-00059 #include "uiplib.h"
-00060 #include "webclient.h"
-00061 #include "resolv.h"
-00062 
-00063 #include <string.h>
-00064 
-00065 #define WEBCLIENT_TIMEOUT 100
-00066 
-00067 #define WEBCLIENT_STATE_STATUSLINE 0
-00068 #define WEBCLIENT_STATE_HEADERS    1
-00069 #define WEBCLIENT_STATE_DATA       2
-00070 #define WEBCLIENT_STATE_CLOSE      3
-00071 
-00072 #define HTTPFLAG_NONE   0
-00073 #define HTTPFLAG_OK     1
-00074 #define HTTPFLAG_MOVED  2
-00075 #define HTTPFLAG_ERROR  3
-00076 
-00077 
-00078 #define ISO_nl       0x0a
-00079 #define ISO_cr       0x0d
-00080 #define ISO_space    0x20
-00081 
-00082 
-00083 static struct webclient_state s;
-00084 
-00085 /*-----------------------------------------------------------------------------------*/
-00086 char *
-00087 webclient_mimetype(void)
-00088 {
-00089   return s.mimetype;
-00090 }
-00091 /*-----------------------------------------------------------------------------------*/
-00092 char *
-00093 webclient_filename(void)
-00094 {
-00095   return s.file;
-00096 }
-00097 /*-----------------------------------------------------------------------------------*/
-00098 char *
-00099 webclient_hostname(void)
-00100 {
-00101   return s.host;
-00102 }
-00103 /*-----------------------------------------------------------------------------------*/
-00104 unsigned short
-00105 webclient_port(void)
-00106 {
-00107   return s.port;
-00108 }
-00109 /*-----------------------------------------------------------------------------------*/
-00110 void
-00111 webclient_init(void)
-00112 {
-00113 
-00114 }
-00115 /*-----------------------------------------------------------------------------------*/
-00116 static void
-00117 init_connection(void)
-00118 {
-00119   s.state = WEBCLIENT_STATE_STATUSLINE;
-00120 
-00121   s.getrequestleft = sizeof(http_get) - 1 + 1 +
-00122     sizeof(http_10) - 1 +
-00123     sizeof(http_crnl) - 1 +
-00124     sizeof(http_host) - 1 +
-00125     sizeof(http_crnl) - 1 +
-00126     strlen(http_user_agent_fields) +
-00127     strlen(s.file) + strlen(s.host);
-00128   s.getrequestptr = 0;
-00129 
-00130   s.httpheaderlineptr = 0;
-00131 }
-00132 /*-----------------------------------------------------------------------------------*/
-00133 void
-00134 webclient_close(void)
-00135 {
-00136   s.state = WEBCLIENT_STATE_CLOSE;
-00137 }
-00138 /*-----------------------------------------------------------------------------------*/
-00139 unsigned char
-00140 webclient_get(char *host, u16_t port, char *file)
-00141 {
-00142   struct uip_conn *conn;
-00143   uip_ipaddr_t *ipaddr;
-00144   static uip_ipaddr_t addr;
-00145   
-00146   /* First check if the host is an IP address. */
-00147   ipaddr = &addr;
-00148   if(uiplib_ipaddrconv(host, (unsigned char *)addr) == 0) {
-00149     ipaddr = (uip_ipaddr_t *)resolv_lookup(host);
-00150     
-00151     if(ipaddr == NULL) {
-00152       return 0;
-00153     }
-00154   }
-00155   
-00156   conn = uip_connect(ipaddr, htons(port));
-00157   
-00158   if(conn == NULL) {
-00159     return 0;
-00160   }
-00161   
-00162   s.port = port;
-00163   strncpy(s.file, file, sizeof(s.file));
-00164   strncpy(s.host, host, sizeof(s.host));
-00165   
-00166   init_connection();
-00167   return 1;
-00168 }
-00169 /*-----------------------------------------------------------------------------------*/
-00170 static unsigned char *
-00171 copy_string(unsigned char *dest,
-00172             const unsigned char *src, unsigned char len)
-00173 {
-00174   strncpy(dest, src, len);
-00175   return dest + len;
-00176 }
-00177 /*-----------------------------------------------------------------------------------*/
-00178 static void
-00179 senddata(void)
-00180 {
-00181   u16_t len;
-00182   char *getrequest;
-00183   char *cptr;
-00184   
-00185   if(s.getrequestleft > 0) {
-00186     cptr = getrequest = (char *)uip_appdata;
-00187 
-00188     cptr = copy_string(cptr, http_get, sizeof(http_get) - 1);
-00189     cptr = copy_string(cptr, s.file, strlen(s.file));
-00190     *cptr++ = ISO_space;
-00191     cptr = copy_string(cptr, http_10, sizeof(http_10) - 1);
-00192 
-00193     cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1);
-00194     
-00195     cptr = copy_string(cptr, http_host, sizeof(http_host) - 1);
-00196     cptr = copy_string(cptr, s.host, strlen(s.host));
-00197     cptr = copy_string(cptr, http_crnl, sizeof(http_crnl) - 1);
-00198 
-00199     cptr = copy_string(cptr, http_user_agent_fields,
-00200                        strlen(http_user_agent_fields));
-00201     
-00202     len = s.getrequestleft > uip_mss()?
-00203       uip_mss():
-00204       s.getrequestleft;
-00205     uip_send(&(getrequest[s.getrequestptr]), len);
-00206   }
-00207 }
-00208 /*-----------------------------------------------------------------------------------*/
-00209 static void
-00210 acked(void)
-00211 {
-00212   u16_t len;
-00213   
-00214   if(s.getrequestleft > 0) {
-00215     len = s.getrequestleft > uip_mss()?
-00216       uip_mss():
-00217       s.getrequestleft;
-00218     s.getrequestleft -= len;
-00219     s.getrequestptr += len;
-00220   }
-00221 }
-00222 /*-----------------------------------------------------------------------------------*/
-00223 static u16_t
-00224 parse_statusline(u16_t len)
-00225 {
-00226   char *cptr;
-00227   
-00228   while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {
-00229     s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata;
-00230     ++((char *)uip_appdata);
-00231     --len;
-00232     if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {
-00233 
-00234       if((strncmp(s.httpheaderline, http_10,
-00235                   sizeof(http_10) - 1) == 0) ||
-00236          (strncmp(s.httpheaderline, http_11,
-00237                   sizeof(http_11) - 1) == 0)) {
-00238         cptr = &(s.httpheaderline[9]);
-00239         s.httpflag = HTTPFLAG_NONE;
-00240         if(strncmp(cptr, http_200, sizeof(http_200) - 1) == 0) {
-00241           /* 200 OK */
-00242           s.httpflag = HTTPFLAG_OK;
-00243         } else if(strncmp(cptr, http_301, sizeof(http_301) - 1) == 0 ||
-00244                   strncmp(cptr, http_302, sizeof(http_302) - 1) == 0) {
-00245           /* 301 Moved permanently or 302 Found. Location: header line
-00246              will contain thw new location. */
-00247           s.httpflag = HTTPFLAG_MOVED;
-00248         } else {
-00249           s.httpheaderline[s.httpheaderlineptr - 1] = 0;
-00250         }
-00251       } else {
-00252         uip_abort();
-00253         webclient_aborted();
-00254         return 0;
-00255       }
-00256       
-00257       /* We're done parsing the status line, so we reset the pointer
-00258          and start parsing the HTTP headers.*/
-00259       s.httpheaderlineptr = 0;
-00260       s.state = WEBCLIENT_STATE_HEADERS;
-00261       break;
-00262     } else {
-00263       ++s.httpheaderlineptr;
-00264     }
-00265   }
-00266   return len;
-00267 }
-00268 /*-----------------------------------------------------------------------------------*/
-00269 static char
-00270 casecmp(char *str1, const char *str2, char len)
-00271 {
-00272   static char c;
-00273   
-00274   while(len > 0) {
-00275     c = *str1;
-00276     /* Force lower-case characters. */
-00277     if(c & 0x40) {
-00278       c |= 0x20;
-00279     }
-00280     if(*str2 != c) {
-00281       return 1;
-00282     }
-00283     ++str1;
-00284     ++str2;
-00285     --len;
-00286   }
-00287   return 0;
-00288 }
-00289 /*-----------------------------------------------------------------------------------*/
-00290 static u16_t
-00291 parse_headers(u16_t len)
-00292 {
-00293   char *cptr;
-00294   static unsigned char i;
-00295   
-00296   while(len > 0 && s.httpheaderlineptr < sizeof(s.httpheaderline)) {
-00297     s.httpheaderline[s.httpheaderlineptr] = *(char *)uip_appdata;
-00298     ++((char *)uip_appdata);
-00299     --len;
-00300     if(s.httpheaderline[s.httpheaderlineptr] == ISO_nl) {
-00301       /* We have an entire HTTP header line in s.httpheaderline, so
-00302          we parse it. */
-00303       if(s.httpheaderline[0] == ISO_cr) {
-00304         /* This was the last header line (i.e., and empty "\r\n"), so
-00305            we are done with the headers and proceed with the actual
-00306            data. */
-00307         s.state = WEBCLIENT_STATE_DATA;
-00308         return len;
-00309       }
-00310 
-00311       s.httpheaderline[s.httpheaderlineptr - 1] = 0;
-00312       /* Check for specific HTTP header fields. */
-00313       if(casecmp(s.httpheaderline, http_content_type,
-00314                      sizeof(http_content_type) - 1) == 0) {
-00315         /* Found Content-type field. */
-00316         cptr = strchr(s.httpheaderline, ';');
-00317         if(cptr != NULL) {
-00318           *cptr = 0;
-00319         }
-00320         strncpy(s.mimetype, s.httpheaderline +
-00321                 sizeof(http_content_type) - 1, sizeof(s.mimetype));
-00322       } else if(casecmp(s.httpheaderline, http_location,
-00323                             sizeof(http_location) - 1) == 0) {
-00324         cptr = s.httpheaderline +
-00325           sizeof(http_location) - 1;
-00326         
-00327         if(strncmp(cptr, http_http, 7) == 0) {
-00328           cptr += 7;
-00329           for(i = 0; i < s.httpheaderlineptr - 7; ++i) {
-00330             if(*cptr == 0 ||
-00331                *cptr == '/' ||
-00332                *cptr == ' ' ||
-00333                *cptr == ':') {
-00334               s.host[i] = 0;
-00335               break;
-00336             }
-00337             s.host[i] = *cptr;
-00338             ++cptr;
-00339           }
-00340         }
-00341         strncpy(s.file, cptr, sizeof(s.file));
-00342         /*      s.file[s.httpheaderlineptr - i] = 0;*/
-00343       }
-00344 
-00345 
-00346       /* We're done parsing, so we reset the pointer and start the
-00347          next line. */
-00348       s.httpheaderlineptr = 0;
-00349     } else {
-00350       ++s.httpheaderlineptr;
-00351     }
-00352   }
-00353   return len;
-00354 }
-00355 /*-----------------------------------------------------------------------------------*/
-00356 static void
-00357 newdata(void)
-00358 {
-00359   u16_t len;
-00360 
-00361   len = uip_datalen();
-00362 
-00363   if(s.state == WEBCLIENT_STATE_STATUSLINE) {
-00364     len = parse_statusline(len);
-00365   }
-00366   
-00367   if(s.state == WEBCLIENT_STATE_HEADERS && len > 0) {
-00368     len = parse_headers(len);
-00369   }
-00370 
-00371   if(len > 0 && s.state == WEBCLIENT_STATE_DATA &&
-00372      s.httpflag != HTTPFLAG_MOVED) {
-00373     webclient_datahandler((char *)uip_appdata, len);
-00374   }
-00375 }
-00376 /*-----------------------------------------------------------------------------------*/
-00377 void
-00378 webclient_appcall(void)
-00379 {
-00380   if(uip_connected()) {
-00381     s.timer = 0;
-00382     s.state = WEBCLIENT_STATE_STATUSLINE;
-00383     senddata();
-00384     webclient_connected();
-00385     return;
-00386   }
-00387 
-00388   if(s.state == WEBCLIENT_STATE_CLOSE) {
-00389     webclient_closed();
-00390     uip_abort();
-00391     return;
-00392   }
-00393 
-00394   if(uip_aborted()) {
-00395     webclient_aborted();
-00396   }
-00397   if(uip_timedout()) {
-00398     webclient_timedout();
-00399   }
-00400 
-00401   
-00402   if(uip_acked()) {
-00403     s.timer = 0;
-00404     acked();
-00405   }
-00406   if(uip_newdata()) {
-00407     s.timer = 0;
-00408     newdata();
-00409   }
-00410   if(uip_rexmit() ||
-00411      uip_newdata() ||
-00412      uip_acked()) {
-00413     senddata();
-00414   } else if(uip_poll()) {
-00415     ++s.timer;
-00416     if(s.timer == WEBCLIENT_TIMEOUT) {
-00417       webclient_timedout();
-00418       uip_abort();
-00419       return;
-00420     }
-00421         /*    senddata();*/
-00422   }
-00423 
-00424   if(uip_closed()) {
-00425     if(s.httpflag != HTTPFLAG_MOVED) {
-00426       /* Send NULL data to signal EOF. */
-00427       webclient_datahandler(NULL, 0);
-00428     } else {
-00429       if(resolv_lookup(s.host) == NULL) {
-00430         resolv_query(s.host);
-00431       }
-00432       webclient_get(s.host, s.port, s.file);
-00433     }
-00434   }
-00435 }
-00436 /*-----------------------------------------------------------------------------------*/
-00437 
-00438 /** @} */
-00439 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00181.html b/components/net/uip/doc/html/a00181.html deleted file mode 100644 index 4407232c44f79a53de55bd196b3cb16ef36f96b5..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00181.html +++ /dev/null @@ -1,253 +0,0 @@ - - -uIP 1.0: apps/webclient/webclient.h Source File - - - - - - -

apps/webclient/webclient.h

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup webclient
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \file
-00008  * Header file for the HTTP client.
-00009  * \author Adam Dunkels <adam@dunkels.com>
-00010  */
-00011 
-00012 /*
-00013  * Copyright (c) 2002, Adam Dunkels.
-00014  * All rights reserved.
-00015  *
-00016  * Redistribution and use in source and binary forms, with or without
-00017  * modification, are permitted provided that the following conditions
-00018  * are met:
-00019  * 1. Redistributions of source code must retain the above copyright
-00020  *    notice, this list of conditions and the following disclaimer.
-00021  * 2. Redistributions in binary form must reproduce the above
-00022  *    copyright notice, this list of conditions and the following
-00023  *    disclaimer in the documentation and/or other materials provided
-00024  *    with the distribution.
-00025  * 3. The name of the author may not be used to endorse or promote
-00026  *    products derived from this software without specific prior
-00027  *    written permission.
-00028  *
-00029  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00030  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00031  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00032  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00033  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00034  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00035  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00036  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00037  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00038  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00039  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00040  *
-00041  * This file is part of the uIP TCP/IP stack.
-00042  *
-00043  * $Id: webclient.h,v 1.2 2006/06/11 21:46:37 adam Exp $
-00044  *
-00045  */
-00046 #ifndef __WEBCLIENT_H__
-00047 #define __WEBCLIENT_H__
-00048 
-00049 
-00050 #include "webclient-strings.h"
-00051 #include "uipopt.h"
-00052 
-00053 #define WEBCLIENT_CONF_MAX_URLLEN 100
-00054 
-00055 struct webclient_state {
-00056   u8_t timer;
-00057   u8_t state;
-00058   u8_t httpflag;
-00059 
-00060   u16_t port;
-00061   char host[40];
-00062   char file[WEBCLIENT_CONF_MAX_URLLEN];
-00063   u16_t getrequestptr;
-00064   u16_t getrequestleft;
-00065   
-00066   char httpheaderline[200];
-00067   u16_t httpheaderlineptr;
-00068 
-00069   char mimetype[32];
-00070 };
-00071 
-00072 typedef struct webclient_state uip_tcp_appstate_t;
-00073 #define UIP_APPCALL webclient_appcall
-00074 
-00075 /**
-00076  * Callback function that is called from the webclient code when HTTP
-00077  * data has been received.
-00078  *
-00079  * This function must be implemented by the module that uses the
-00080  * webclient code. The function is called from the webclient module
-00081  * when HTTP data has been received. The function is not called when
-00082  * HTTP headers are received, only for the actual data.
-00083  *
-00084  * \note This function is called many times, repetedly, when data is
-00085  * being received, and not once when all data has been received.
-00086  *
-00087  * \param data A pointer to the data that has been received.
-00088  * \param len The length of the data that has been received.
-00089  */
-00090 void webclient_datahandler(char *data, u16_t len);
-00091 
-00092 /**
-00093  * Callback function that is called from the webclient code when the
-00094  * HTTP connection has been connected to the web server.
-00095  *
-00096  * This function must be implemented by the module that uses the
-00097  * webclient code.
-00098  */
-00099 void webclient_connected(void);
-00100 
-00101 /**
-00102  * Callback function that is called from the webclient code if the
-00103  * HTTP connection to the web server has timed out.
-00104  *
-00105  * This function must be implemented by the module that uses the
-00106  * webclient code.
-00107  */
-00108 void webclient_timedout(void);
-00109 
-00110 /**
-00111  * Callback function that is called from the webclient code if the
-00112  * HTTP connection to the web server has been aborted by the web
-00113  * server.
-00114  *
-00115  * This function must be implemented by the module that uses the
-00116  * webclient code.
-00117  */
-00118 void webclient_aborted(void);
-00119 
-00120 /**
-00121  * Callback function that is called from the webclient code when the
-00122  * HTTP connection to the web server has been closed.
-00123  *
-00124  * This function must be implemented by the module that uses the
-00125  * webclient code.
-00126  */
-00127 void webclient_closed(void);
-00128 
-00129 
-00130 
-00131 /**
-00132  * Initialize the webclient module.
-00133  */
-00134 void webclient_init(void);
-00135 
-00136 /**
-00137  * Open an HTTP connection to a web server and ask for a file using
-00138  * the GET method.
-00139  *
-00140  * This function opens an HTTP connection to the specified web server
-00141  * and requests the specified file using the GET method. When the HTTP
-00142  * connection has been connected, the webclient_connected() callback
-00143  * function is called and when the HTTP data arrives the
-00144  * webclient_datahandler() callback function is called.
-00145  *
-00146  * The callback function webclient_timedout() is called if the web
-00147  * server could not be contacted, and the webclient_aborted() callback
-00148  * function is called if the HTTP connection is aborted by the web
-00149  * server.
-00150  *
-00151  * When the HTTP request has been completed and the HTTP connection is
-00152  * closed, the webclient_closed() callback function will be called.
-00153  *
-00154  * \note If the function is passed a host name, it must already be in
-00155  * the resolver cache in order for the function to connect to the web
-00156  * server. It is therefore up to the calling module to implement the
-00157  * resolver calls and the signal handler used for reporting a resolv
-00158  * query answer.
-00159  *
-00160  * \param host A pointer to a string containing either a host name or
-00161  * a numerical IP address in dotted decimal notation (e.g., 192.168.23.1).
-00162  *
-00163  * \param port The port number to which to connect, in host byte order.
-00164  *
-00165  * \param file A pointer to the name of the file to get.
-00166  *
-00167  * \retval 0 if the host name could not be found in the cache, or
-00168  * if a TCP connection could not be created.
-00169  *
-00170  * \retval 1 if the connection was initiated.
-00171  */
-00172 unsigned char webclient_get(char *host, u16_t port, char *file);
-00173 
-00174 /**
-00175  * Close the currently open HTTP connection.
-00176  */
-00177 void webclient_close(void);
-00178 void webclient_appcall(void);
-00179 
-00180 /**
-00181  * Obtain the MIME type of the current HTTP data stream.
-00182  *
-00183  * \return A pointer to a string contaning the MIME type. The string
-00184  * may be empty if no MIME type was reported by the web server.
-00185  */
-00186 char *webclient_mimetype(void);
-00187 
-00188 /**
-00189  * Obtain the filename of the current HTTP data stream.
-00190  *
-00191  * The filename of an HTTP request may be changed by the web server,
-00192  * and may therefore not be the same as when the original GET request
-00193  * was made with webclient_get(). This function is used for obtaining
-00194  * the current filename.
-00195  *
-00196  * \return A pointer to the current filename.
-00197  */
-00198 char *webclient_filename(void);
-00199 
-00200 /**
-00201  * Obtain the hostname of the current HTTP data stream.
-00202  *
-00203  * The hostname of the web server of an HTTP request may be changed
-00204  * by the web server, and may therefore not be the same as when the
-00205  * original GET request was made with webclient_get(). This function
-00206  * is used for obtaining the current hostname.
-00207  *
-00208  * \return A pointer to the current hostname.
-00209  */
-00210 char *webclient_hostname(void);
-00211 
-00212 /**
-00213  * Obtain the port number of the current HTTP data stream.
-00214  *
-00215  * The port number of an HTTP request may be changed by the web
-00216  * server, and may therefore not be the same as when the original GET
-00217  * request was made with webclient_get(). This function is used for
-00218  * obtaining the current port number.
-00219  *
-00220  * \return The port number of the current HTTP data stream, in host byte order.
-00221  */
-00222 unsigned short webclient_port(void);
-00223 
-00224 
-00225 
-00226 #endif /* __WEBCLIENT_H__ */
-00227 
-00228 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00182.html b/components/net/uip/doc/html/a00182.html deleted file mode 100644 index cb9d145797f14e1ccca067a98a2e1792609ab1b9..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00182.html +++ /dev/null @@ -1,228 +0,0 @@ - - -uIP 1.0: apps/webserver/httpd-cgi.c Source File - - - - - - -

apps/webserver/httpd-cgi.c

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup httpd
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \file
-00008  *         Web server script interface
-00009  * \author
-00010  *         Adam Dunkels <adam@sics.se>
-00011  *
-00012  */
-00013 
-00014 /*
-00015  * Copyright (c) 2001-2006, Adam Dunkels.
-00016  * All rights reserved.
-00017  *
-00018  * Redistribution and use in source and binary forms, with or without
-00019  * modification, are permitted provided that the following conditions
-00020  * are met:
-00021  * 1. Redistributions of source code must retain the above copyright
-00022  *    notice, this list of conditions and the following disclaimer.
-00023  * 2. Redistributions in binary form must reproduce the above copyright
-00024  *    notice, this list of conditions and the following disclaimer in the
-00025  *    documentation and/or other materials provided with the distribution.
-00026  * 3. The name of the author may not be used to endorse or promote
-00027  *    products derived from this software without specific prior
-00028  *    written permission.
-00029  *
-00030  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00031  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00032  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00033  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00034  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00035  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00036  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00037  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00038  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00039  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00040  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00041  *
-00042  * This file is part of the uIP TCP/IP stack.
-00043  *
-00044  * $Id: httpd-cgi.c,v 1.2 2006/06/11 21:46:37 adam Exp $
-00045  *
-00046  */
-00047 
-00048 #include "uip.h"
-00049 #include "psock.h"
-00050 #include "httpd.h"
-00051 #include "httpd-cgi.h"
-00052 #include "httpd-fs.h"
-00053 
-00054 #include <stdio.h>
-00055 #include <string.h>
-00056 
-00057 HTTPD_CGI_CALL(file, "file-stats", file_stats);
-00058 HTTPD_CGI_CALL(tcp, "tcp-connections", tcp_stats);
-00059 HTTPD_CGI_CALL(net, "net-stats", net_stats);
-00060 
-00061 static const struct httpd_cgi_call *calls[] = { &file, &tcp, &net, NULL };
-00062 
-00063 /*---------------------------------------------------------------------------*/
-00064 static
-00065 PT_THREAD(nullfunction(struct httpd_state *s, char *ptr))
-00066 {
-00067   PSOCK_BEGIN(&s->sout);
-00068   PSOCK_END(&s->sout);
-00069 }
-00070 /*---------------------------------------------------------------------------*/
-00071 httpd_cgifunction
-00072 httpd_cgi(char *name)
-00073 {
-00074   const struct httpd_cgi_call **f;
-00075 
-00076   /* Find the matching name in the table, return the function. */
-00077   for(f = calls; *f != NULL; ++f) {
-00078     if(strncmp((*f)->name, name, strlen((*f)->name)) == 0) {
-00079       return (*f)->function;
-00080     }
-00081   }
-00082   return nullfunction;
-00083 }
-00084 /*---------------------------------------------------------------------------*/
-00085 static unsigned short
-00086 generate_file_stats(void *arg)
-00087 {
-00088   char *f = (char *)arg;
-00089   return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE, "%5u", httpd_fs_count(f));
-00090 }
-00091 /*---------------------------------------------------------------------------*/
-00092 static
-00093 PT_THREAD(file_stats(struct httpd_state *s, char *ptr))
-00094 {
-00095   PSOCK_BEGIN(&s->sout);
-00096 
-00097   PSOCK_GENERATOR_SEND(&s->sout, generate_file_stats, strchr(ptr, ' ') + 1);
-00098   
-00099   PSOCK_END(&s->sout);
-00100 }
-00101 /*---------------------------------------------------------------------------*/
-00102 static const char closed[] =   /*  "CLOSED",*/
-00103 {0x43, 0x4c, 0x4f, 0x53, 0x45, 0x44, 0};
-00104 static const char syn_rcvd[] = /*  "SYN-RCVD",*/
-00105 {0x53, 0x59, 0x4e, 0x2d, 0x52, 0x43, 0x56,
-00106  0x44,  0};
-00107 static const char syn_sent[] = /*  "SYN-SENT",*/
-00108 {0x53, 0x59, 0x4e, 0x2d, 0x53, 0x45, 0x4e,
-00109  0x54,  0};
-00110 static const char established[] = /*  "ESTABLISHED",*/
-00111 {0x45, 0x53, 0x54, 0x41, 0x42, 0x4c, 0x49, 0x53, 0x48,
-00112  0x45, 0x44, 0};
-00113 static const char fin_wait_1[] = /*  "FIN-WAIT-1",*/
-00114 {0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
-00115  0x54, 0x2d, 0x31, 0};
-00116 static const char fin_wait_2[] = /*  "FIN-WAIT-2",*/
-00117 {0x46, 0x49, 0x4e, 0x2d, 0x57, 0x41, 0x49,
-00118  0x54, 0x2d, 0x32, 0};
-00119 static const char closing[] = /*  "CLOSING",*/
-00120 {0x43, 0x4c, 0x4f, 0x53, 0x49,
-00121  0x4e, 0x47, 0};
-00122 static const char time_wait[] = /*  "TIME-WAIT,"*/
-00123 {0x54, 0x49, 0x4d, 0x45, 0x2d, 0x57, 0x41,
-00124  0x49, 0x54, 0};
-00125 static const char last_ack[] = /*  "LAST-ACK"*/
-00126 {0x4c, 0x41, 0x53, 0x54, 0x2d, 0x41, 0x43,
-00127  0x4b, 0};
-00128 
-00129 static const char *states[] = {
-00130   closed,
-00131   syn_rcvd,
-00132   syn_sent,
-00133   established,
-00134   fin_wait_1,
-00135   fin_wait_2,
-00136   closing,
-00137   time_wait,
-00138   last_ack};
-00139   
-00140 
-00141 static unsigned short
-00142 generate_tcp_stats(void *arg)
-00143 {
-00144   struct uip_conn *conn;
-00145   struct httpd_state *s = (struct httpd_state *)arg;
-00146     
-00147   conn = &uip_conns[s->count];
-00148   return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
-00149                  "<tr><td>%d</td><td>%u.%u.%u.%u:%u</td><td>%s</td><td>%u</td><td>%u</td><td>%c %c</td></tr>\r\n",
-00150                  htons(conn->lport),
-00151                  htons(conn->ripaddr[0]) >> 8,
-00152                  htons(conn->ripaddr[0]) & 0xff,
-00153                  htons(conn->ripaddr[1]) >> 8,
-00154                  htons(conn->ripaddr[1]) & 0xff,
-00155                  htons(conn->rport),
-00156                  states[conn->tcpstateflags & UIP_TS_MASK],
-00157                  conn->nrtx,
-00158                  conn->timer,
-00159                  (uip_outstanding(conn))? '*':' ',
-00160                  (uip_stopped(conn))? '!':' ');
-00161 }
-00162 /*---------------------------------------------------------------------------*/
-00163 static
-00164 PT_THREAD(tcp_stats(struct httpd_state *s, char *ptr))
-00165 {
-00166   
-00167   PSOCK_BEGIN(&s->sout);
-00168 
-00169   for(s->count = 0; s->count < UIP_CONNS; ++s->count) {
-00170     if((uip_conns[s->count].tcpstateflags & UIP_TS_MASK) != UIP_CLOSED) {
-00171       PSOCK_GENERATOR_SEND(&s->sout, generate_tcp_stats, s);
-00172     }
-00173   }
-00174 
-00175   PSOCK_END(&s->sout);
-00176 }
-00177 /*---------------------------------------------------------------------------*/
-00178 static unsigned short
-00179 generate_net_stats(void *arg)
-00180 {
-00181   struct httpd_state *s = (struct httpd_state *)arg;
-00182   return snprintf((char *)uip_appdata, UIP_APPDATA_SIZE,
-00183                   "%5u\n", ((uip_stats_t *)&uip_stat)[s->count]);
-00184 }
-00185 
-00186 static
-00187 PT_THREAD(net_stats(struct httpd_state *s, char *ptr))
-00188 {
-00189   PSOCK_BEGIN(&s->sout);
-00190 
-00191 #if UIP_STATISTICS
-00192 
-00193   for(s->count = 0; s->count < sizeof(uip_stat) / sizeof(uip_stats_t);
-00194       ++s->count) {
-00195     PSOCK_GENERATOR_SEND(&s->sout, generate_net_stats, s);
-00196   }
-00197   
-00198 #endif /* UIP_STATISTICS */
-00199   
-00200   PSOCK_END(&s->sout);
-00201 }
-00202 /*---------------------------------------------------------------------------*/
-00203 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00183.html b/components/net/uip/doc/html/a00183.html deleted file mode 100644 index 0c753470baa4a29a43c6003a88c4f2bd01d2109a..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00183.html +++ /dev/null @@ -1,109 +0,0 @@ - - -uIP 1.0: apps/webserver/httpd-cgi.h Source File - - - - - - -

apps/webserver/httpd-cgi.h

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup httpd
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \file
-00008  *         Web server script interface header file
-00009  * \author
-00010  *         Adam Dunkels <adam@sics.se>
-00011  *
-00012  */
-00013 
-00014 
-00015 
-00016 /*
-00017  * Copyright (c) 2001, Adam Dunkels.
-00018  * All rights reserved.
-00019  *
-00020  * Redistribution and use in source and binary forms, with or without
-00021  * modification, are permitted provided that the following conditions
-00022  * are met:
-00023  * 1. Redistributions of source code must retain the above copyright
-00024  *    notice, this list of conditions and the following disclaimer.
-00025  * 2. Redistributions in binary form must reproduce the above copyright
-00026  *    notice, this list of conditions and the following disclaimer in the
-00027  *    documentation and/or other materials provided with the distribution.
-00028  * 3. The name of the author may not be used to endorse or promote
-00029  *    products derived from this software without specific prior
-00030  *    written permission.
-00031  *
-00032  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00033  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00034  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00035  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00036  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00037  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00038  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00039  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00040  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00041  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00042  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00043  *
-00044  * This file is part of the uIP TCP/IP stack.
-00045  *
-00046  * $Id: httpd-cgi.h,v 1.2 2006/06/11 21:46:38 adam Exp $
-00047  *
-00048  */
-00049 
-00050 #ifndef __HTTPD_CGI_H__
-00051 #define __HTTPD_CGI_H__
-00052 
-00053 #include "psock.h"
-00054 #include "httpd.h"
-00055 
-00056 typedef PT_THREAD((* httpd_cgifunction)(struct httpd_state *, char *));
-00057 
-00058 httpd_cgifunction httpd_cgi(char *name);
-00059 
-00060 struct httpd_cgi_call {
-00061   const char *name;
-00062   const httpd_cgifunction function;
-00063 };
-00064 
-00065 /**
-00066  * \brief      HTTPD CGI function declaration
-00067  * \param name The C variable name of the function
-00068  * \param str  The string name of the function, used in the script file
-00069  * \param function A pointer to the function that implements it
-00070  *
-00071  *             This macro is used for declaring a HTTPD CGI
-00072  *             function. This function is then added to the list of
-00073  *             HTTPD CGI functions with the httpd_cgi_add() function.
-00074  *
-00075  * \hideinitializer
-00076  */
-00077 #define HTTPD_CGI_CALL(name, str, function) \
-00078 static PT_THREAD(function(struct httpd_state *, char *)); \
-00079 static const struct httpd_cgi_call name = {str, function}
-00080 
-00081 void httpd_cgi_init(void);
-00082 #endif /* __HTTPD_CGI_H__ */
-00083 
-00084 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00184.html b/components/net/uip/doc/html/a00184.html deleted file mode 100644 index f49fd5669d0d5010425bee8c4efd6b5213d4fbfb..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00184.html +++ /dev/null @@ -1,363 +0,0 @@ - - -uIP 1.0: apps/webserver/httpd.c Source File - - - - - - -

apps/webserver/httpd.c

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup apps
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \defgroup httpd Web server
-00008  * @{
-00009  * The uIP web server is a very simplistic implementation of an HTTP
-00010  * server. It can serve web pages and files from a read-only ROM
-00011  * filesystem, and provides a very small scripting language.
-00012 
-00013  */
-00014 
-00015 /**
-00016  * \file
-00017  *         Web server
-00018  * \author
-00019  *         Adam Dunkels <adam@sics.se>
-00020  */
-00021 
-00022 
-00023 /*
-00024  * Copyright (c) 2004, Adam Dunkels.
-00025  * All rights reserved.
-00026  *
-00027  * Redistribution and use in source and binary forms, with or without
-00028  * modification, are permitted provided that the following conditions
-00029  * are met:
-00030  * 1. Redistributions of source code must retain the above copyright
-00031  *    notice, this list of conditions and the following disclaimer.
-00032  * 2. Redistributions in binary form must reproduce the above copyright
-00033  *    notice, this list of conditions and the following disclaimer in the
-00034  *    documentation and/or other materials provided with the distribution.
-00035  * 3. Neither the name of the Institute nor the names of its contributors
-00036  *    may be used to endorse or promote products derived from this software
-00037  *    without specific prior written permission.
-00038  *
-00039  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00040  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00041  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00042  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00043  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00044  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00045  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00046  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00047  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00048  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00049  * SUCH DAMAGE.
-00050  *
-00051  * This file is part of the uIP TCP/IP stack.
-00052  *
-00053  * Author: Adam Dunkels <adam@sics.se>
-00054  *
-00055  * $Id: httpd.c,v 1.2 2006/06/11 21:46:38 adam Exp $
-00056  */
-00057 
-00058 #include "uip.h"
-00059 #include "httpd.h"
-00060 #include "httpd-fs.h"
-00061 #include "httpd-cgi.h"
-00062 #include "http-strings.h"
-00063 
-00064 #include <string.h>
-00065 
-00066 #define STATE_WAITING 0
-00067 #define STATE_OUTPUT  1
-00068 
-00069 #define ISO_nl      0x0a
-00070 #define ISO_space   0x20
-00071 #define ISO_bang    0x21
-00072 #define ISO_percent 0x25
-00073 #define ISO_period  0x2e
-00074 #define ISO_slash   0x2f
-00075 #define ISO_colon   0x3a
-00076 
-00077 
-00078 /*---------------------------------------------------------------------------*/
-00079 static unsigned short
-00080 generate_part_of_file(void *state)
-00081 {
-00082   struct httpd_state *s = (struct httpd_state *)state;
-00083 
-00084   if(s->file.len > uip_mss()) {
-00085     s->len = uip_mss();
-00086   } else {
-00087     s->len = s->file.len;
-00088   }
-00089   memcpy(uip_appdata, s->file.data, s->len);
-00090   
-00091   return s->len;
-00092 }
-00093 /*---------------------------------------------------------------------------*/
-00094 static
-00095 PT_THREAD(send_file(struct httpd_state *s))
-00096 {
-00097   PSOCK_BEGIN(&s->sout);
-00098   
-00099   do {
-00100     PSOCK_GENERATOR_SEND(&s->sout, generate_part_of_file, s);
-00101     s->file.len -= s->len;
-00102     s->file.data += s->len;
-00103   } while(s->file.len > 0);
-00104       
-00105   PSOCK_END(&s->sout);
-00106 }
-00107 /*---------------------------------------------------------------------------*/
-00108 static
-00109 PT_THREAD(send_part_of_file(struct httpd_state *s))
-00110 {
-00111   PSOCK_BEGIN(&s->sout);
-00112 
-00113   PSOCK_SEND(&s->sout, s->file.data, s->len);
-00114   
-00115   PSOCK_END(&s->sout);
-00116 }
-00117 /*---------------------------------------------------------------------------*/
-00118 static void
-00119 next_scriptstate(struct httpd_state *s)
-00120 {
-00121   char *p;
-00122   p = strchr(s->scriptptr, ISO_nl) + 1;
-00123   s->scriptlen -= (unsigned short)(p - s->scriptptr);
-00124   s->scriptptr = p;
-00125 }
-00126 /*---------------------------------------------------------------------------*/
-00127 static
-00128 PT_THREAD(handle_script(struct httpd_state *s))
-00129 {
-00130   char *ptr;
-00131   
-00132   PT_BEGIN(&s->scriptpt);
-00133 
-00134 
-00135   while(s->file.len > 0) {
-00136 
-00137     /* Check if we should start executing a script. */
-00138     if(*s->file.data == ISO_percent &&
-00139        *(s->file.data + 1) == ISO_bang) {
-00140       s->scriptptr = s->file.data + 3;
-00141       s->scriptlen = s->file.len - 3;
-00142       if(*(s->scriptptr - 1) == ISO_colon) {
-00143         httpd_fs_open(s->scriptptr + 1, &s->file);
-00144         PT_WAIT_THREAD(&s->scriptpt, send_file(s));
-00145       } else {
-00146         PT_WAIT_THREAD(&s->scriptpt,
-00147                        httpd_cgi(s->scriptptr)(s, s->scriptptr));
-00148       }
-00149       next_scriptstate(s);
-00150       
-00151       /* The script is over, so we reset the pointers and continue
-00152          sending the rest of the file. */
-00153       s->file.data = s->scriptptr;
-00154       s->file.len = s->scriptlen;
-00155     } else {
-00156       /* See if we find the start of script marker in the block of HTML
-00157          to be sent. */
-00158 
-00159       if(s->file.len > uip_mss()) {
-00160         s->len = uip_mss();
-00161       } else {
-00162         s->len = s->file.len;
-00163       }
-00164 
-00165       if(*s->file.data == ISO_percent) {
-00166         ptr = strchr(s->file.data + 1, ISO_percent);
-00167       } else {
-00168         ptr = strchr(s->file.data, ISO_percent);
-00169       }
-00170       if(ptr != NULL &&
-00171          ptr != s->file.data) {
-00172         s->len = (int)(ptr - s->file.data);
-00173         if(s->len >= uip_mss()) {
-00174           s->len = uip_mss();
-00175         }
-00176       }
-00177       PT_WAIT_THREAD(&s->scriptpt, send_part_of_file(s));
-00178       s->file.data += s->len;
-00179       s->file.len -= s->len;
-00180       
-00181     }
-00182   }
-00183   
-00184   PT_END(&s->scriptpt);
-00185 }
-00186 /*---------------------------------------------------------------------------*/
-00187 static
-00188 PT_THREAD(send_headers(struct httpd_state *s, const char *statushdr))
-00189 {
-00190   char *ptr;
-00191 
-00192   PSOCK_BEGIN(&s->sout);
-00193 
-00194   PSOCK_SEND_STR(&s->sout, statushdr);
-00195 
-00196   ptr = strrchr(s->filename, ISO_period);
-00197   if(ptr == NULL) {
-00198     PSOCK_SEND_STR(&s->sout, http_content_type_binary);
-00199   } else if(strncmp(http_html, ptr, 5) == 0 ||
-00200             strncmp(http_shtml, ptr, 6) == 0) {
-00201     PSOCK_SEND_STR(&s->sout, http_content_type_html);
-00202   } else if(strncmp(http_css, ptr, 4) == 0) {
-00203     PSOCK_SEND_STR(&s->sout, http_content_type_css);
-00204   } else if(strncmp(http_png, ptr, 4) == 0) {
-00205     PSOCK_SEND_STR(&s->sout, http_content_type_png);
-00206   } else if(strncmp(http_gif, ptr, 4) == 0) {
-00207     PSOCK_SEND_STR(&s->sout, http_content_type_gif);
-00208   } else if(strncmp(http_jpg, ptr, 4) == 0) {
-00209     PSOCK_SEND_STR(&s->sout, http_content_type_jpg);
-00210   } else {
-00211     PSOCK_SEND_STR(&s->sout, http_content_type_plain);
-00212   }
-00213   PSOCK_END(&s->sout);
-00214 }
-00215 /*---------------------------------------------------------------------------*/
-00216 static
-00217 PT_THREAD(handle_output(struct httpd_state *s))
-00218 {
-00219   char *ptr;
-00220   
-00221   PT_BEGIN(&s->outputpt);
-00222  
-00223   if(!httpd_fs_open(s->filename, &s->file)) {
-00224     httpd_fs_open(http_404_html, &s->file);
-00225     strcpy(s->filename, http_404_html);
-00226     PT_WAIT_THREAD(&s->outputpt,
-00227                    send_headers(s,
-00228                    http_header_404));
-00229     PT_WAIT_THREAD(&s->outputpt,
-00230                    send_file(s));
-00231   } else {
-00232     PT_WAIT_THREAD(&s->outputpt,
-00233                    send_headers(s,
-00234                    http_header_200));
-00235     ptr = strchr(s->filename, ISO_period);
-00236     if(ptr != NULL && strncmp(ptr, http_shtml, 6) == 0) {
-00237       PT_INIT(&s->scriptpt);
-00238       PT_WAIT_THREAD(&s->outputpt, handle_script(s));
-00239     } else {
-00240       PT_WAIT_THREAD(&s->outputpt,
-00241                      send_file(s));
-00242     }
-00243   }
-00244   PSOCK_CLOSE(&s->sout);
-00245   PT_END(&s->outputpt);
-00246 }
-00247 /*---------------------------------------------------------------------------*/
-00248 static
-00249 PT_THREAD(handle_input(struct httpd_state *s))
-00250 {
-00251   PSOCK_BEGIN(&s->sin);
-00252 
-00253   PSOCK_READTO(&s->sin, ISO_space);
-00254 
-00255   
-00256   if(strncmp(s->inputbuf, http_get, 4) != 0) {
-00257     PSOCK_CLOSE_EXIT(&s->sin);
-00258   }
-00259   PSOCK_READTO(&s->sin, ISO_space);
-00260 
-00261   if(s->inputbuf[0] != ISO_slash) {
-00262     PSOCK_CLOSE_EXIT(&s->sin);
-00263   }
-00264 
-00265   if(s->inputbuf[1] == ISO_space) {
-00266     strncpy(s->filename, http_index_html, sizeof(s->filename));
-00267   } else {
-00268     s->inputbuf[PSOCK_DATALEN(&s->sin) - 1] = 0;
-00269     strncpy(s->filename, &s->inputbuf[0], sizeof(s->filename));
-00270   }
-00271 
-00272   /*  httpd_log_file(uip_conn->ripaddr, s->filename);*/
-00273   
-00274   s->state = STATE_OUTPUT;
-00275 
-00276   while(1) {
-00277     PSOCK_READTO(&s->sin, ISO_nl);
-00278 
-00279     if(strncmp(s->inputbuf, http_referer, 8) == 0) {
-00280       s->inputbuf[PSOCK_DATALEN(&s->sin) - 2] = 0;
-00281       /*      httpd_log(&s->inputbuf[9]);*/
-00282     }
-00283   }
-00284   
-00285   PSOCK_END(&s->sin);
-00286 }
-00287 /*---------------------------------------------------------------------------*/
-00288 static void
-00289 handle_connection(struct httpd_state *s)
-00290 {
-00291   handle_input(s);
-00292   if(s->state == STATE_OUTPUT) {
-00293     handle_output(s);
-00294   }
-00295 }
-00296 /*---------------------------------------------------------------------------*/
-00297 void
-00298 httpd_appcall(void)
-00299 {
-00300   struct httpd_state *s = (struct httpd_state *)&(uip_conn->appstate);
-00301 
-00302   if(uip_closed() || uip_aborted() || uip_timedout()) {
-00303   } else if(uip_connected()) {
-00304     PSOCK_INIT(&s->sin, s->inputbuf, sizeof(s->inputbuf) - 1);
-00305     PSOCK_INIT(&s->sout, s->inputbuf, sizeof(s->inputbuf) - 1);
-00306     PT_INIT(&s->outputpt);
-00307     s->state = STATE_WAITING;
-00308     /*    timer_set(&s->timer, CLOCK_SECOND * 100);*/
-00309     s->timer = 0;
-00310     handle_connection(s);
-00311   } else if(s != NULL) {
-00312     if(uip_poll()) {
-00313       ++s->timer;
-00314       if(s->timer >= 20) {
-00315         uip_abort();
-00316       }
-00317     } else {
-00318       s->timer = 0;
-00319     }
-00320     handle_connection(s);
-00321   } else {
-00322     uip_abort();
-00323   }
-00324 }
-00325 /*---------------------------------------------------------------------------*/
-00326 /**
-00327  * \brief      Initialize the web server
-00328  *
-00329  *             This function initializes the web server and should be
-00330  *             called at system boot-up.
-00331  */
-00332 void
-00333 httpd_init(void)
-00334 {
-00335   uip_listen(HTONS(80));
-00336 }
-00337 /*---------------------------------------------------------------------------*/
-00338 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00185.html b/components/net/uip/doc/html/a00185.html deleted file mode 100644 index 7dea1e4df8c78c3b2a4b7162d529a194278b2f7f..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00185.html +++ /dev/null @@ -1,87 +0,0 @@ - - -uIP 1.0: apps/webserver/httpd.h Source File - - - - - - -

apps/webserver/httpd.h

00001 /*
-00002  * Copyright (c) 2001-2005, Adam Dunkels.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. The name of the author may not be used to endorse or promote
-00014  *    products derived from this software without specific prior
-00015  *    written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00018  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00019  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00021  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00023  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00024  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00025  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00026  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00027  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack.
-00030  *
-00031  * $Id: httpd.h,v 1.2 2006/06/11 21:46:38 adam Exp $
-00032  *
-00033  */
-00034 
-00035 #ifndef __HTTPD_H__
-00036 #define __HTTPD_H__
-00037 
-00038 #include "psock.h"
-00039 #include "httpd-fs.h"
-00040 
-00041 struct httpd_state {
-00042   unsigned char timer;
-00043   struct psock sin, sout;
-00044   struct pt outputpt, scriptpt;
-00045   char inputbuf[50];
-00046   char filename[20];
-00047   char state;
-00048   struct httpd_fs_file file;
-00049   int len;
-00050   char *scriptptr;
-00051   int scriptlen;
-00052   
-00053   unsigned short count;
-00054 };
-00055 
-00056 void httpd_init(void);
-00057 void httpd_appcall(void);
-00058 
-00059 void httpd_log(char *msg);
-00060 void httpd_log_file(u16_t *requester, char *file);
-00061 
-00062 #endif /* __HTTPD_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00186.html b/components/net/uip/doc/html/a00186.html deleted file mode 100644 index b56304029cc0b0c8ca8aecc8da0e7b4fcd6c4890..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00186.html +++ /dev/null @@ -1,129 +0,0 @@ - - -uIP 1.0: lib/memb.c Source File - - - - - - -

lib/memb.c

Go to the documentation of this file.
00001 /*
-00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * Author: Adam Dunkels <adam@sics.se>
-00032  *
-00033  * $Id: memb.c,v 1.1 2006/06/12 08:21:43 adam Exp $
-00034  */
-00035 
-00036 /**
-00037  * \addtogroup memb
-00038  * @{
-00039  */
-00040 
-00041  /**
-00042  * \file
-00043  * Memory block allocation routines.
-00044  * \author Adam Dunkels <adam@sics.se>
-00045  */
-00046 #include <string.h>
-00047 
-00048 #include "memb.h"
-00049 
-00050 /*---------------------------------------------------------------------------*/
-00051 void
-00052 memb_init(struct memb_blocks *m)
-00053 {
-00054   memset(m->count, 0, m->num);
-00055   memset(m->mem, 0, m->size * m->num);
-00056 }
-00057 /*---------------------------------------------------------------------------*/
-00058 void *
-00059 memb_alloc(struct memb_blocks *m)
-00060 {
-00061   int i;
-00062 
-00063   for(i = 0; i < m->num; ++i) {
-00064     if(m->count[i] == 0) {
-00065       /* If this block was unused, we increase the reference count to
-00066          indicate that it now is used and return a pointer to the
-00067          memory block. */
-00068       ++(m->count[i]);
-00069       return (void *)((char *)m->mem + (i * m->size));
-00070     }
-00071   }
-00072 
-00073   /* No free block was found, so we return NULL to indicate failure to
-00074      allocate block. */
-00075   return NULL;
-00076 }
-00077 /*---------------------------------------------------------------------------*/
-00078 char
-00079 memb_free(struct memb_blocks *m, void *ptr)
-00080 {
-00081   int i;
-00082   char *ptr2;
-00083 
-00084   /* Walk through the list of blocks and try to find the block to
-00085      which the pointer "ptr" points to. */
-00086   ptr2 = (char *)m->mem;
-00087   for(i = 0; i < m->num; ++i) {
-00088     
-00089     if(ptr2 == (char *)ptr) {
-00090       /* We've found to block to which "ptr" points so we decrease the
-00091          reference count and return the new value of it. */
-00092       if(m->count[i] > 0) {
-00093         /* Make sure that we don't deallocate free memory. */
-00094         --(m->count[i]);
-00095       }
-00096       return m->count[i];
-00097     }
-00098     ptr2 += m->size;
-00099   }
-00100   return -1;
-00101 }
-00102 /*---------------------------------------------------------------------------*/
-00103 
-00104 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00187.html b/components/net/uip/doc/html/a00187.html deleted file mode 100644 index cd6de306934f6183ae7d085d6ba7f1849368aa46..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00187.html +++ /dev/null @@ -1,167 +0,0 @@ - - -uIP 1.0: lib/memb.h Source File - - - - - - -

lib/memb.h

Go to the documentation of this file.
00001 /*
-00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * Author: Adam Dunkels <adam@sics.se>
-00032  *
-00033  * $Id: memb.h,v 1.1 2006/06/12 08:21:43 adam Exp $
-00034  */
-00035 
-00036 /**
-00037  * \defgroup memb Memory block management functions
-00038  *
-00039  * The memory block allocation routines provide a simple yet powerful
-00040  * set of functions for managing a set of memory blocks of fixed
-00041  * size. A set of memory blocks is statically declared with the
-00042  * MEMB() macro. Memory blocks are allocated from the declared
-00043  * memory by the memb_alloc() function, and are deallocated with the
-00044  * memb_free() function.
-00045  *
-00046  * \note Because of namespace clashes only one MEMB() can be
-00047  * declared per C module, and the name scope of a MEMB() memory
-00048  * block is local to each C module.
-00049  *
-00050  * The following example shows how to declare and use a memory block
-00051  * called "cmem" which has 8 chunks of memory with each memory chunk
-00052  * being 20 bytes large.
-00053  *
-00054  * @{
-00055  */
-00056 
-00057 
-00058 /**
-00059  * \file
-00060  *         Memory block allocation routines.
-00061  * \author
-00062  *         Adam Dunkels <adam@sics.se>
-00063  *
-00064  */
-00065 
-00066 #ifndef __MEMB_H__
-00067 #define __MEMB_H__
-00068 
-00069 /*
-00070  * Here we define a C preprocessing macro for concatenating to
-00071  * strings. We need use two macros in order to allow concatenation of
-00072  * two #defined macros.
-00073  */
-00074 #define MEMB_CONCAT2(s1, s2) s1##s2
-00075 #define MEMB_CONCAT(s1, s2) MEMB_CONCAT2(s1, s2)
-00076 
-00077 /**
-00078  * Declare a memory block.
-00079  *
-00080  * This macro is used to staticall declare a block of memory that can
-00081  * be used by the block allocation functions. The macro statically
-00082  * declares a C array with a size that matches the specified number of
-00083  * blocks and their individual sizes.
-00084  *
-00085  * Example:
-00086  \code
-00087 MEMB(connections, sizeof(struct connection), 16);
-00088  \endcode
-00089  *
-00090  * \param name The name of the memory block (later used with
-00091  * memb_init(), memb_alloc() and memb_free()).
-00092  *
-00093  * \param size The size of each memory chunk, in bytes.
-00094  *
-00095  * \param num The total number of memory chunks in the block.
-00096  *
-00097  */
-00098 #define MEMB(name, structure, num) \
-00099         static char MEMB_CONCAT(name,_memb_count)[num]; \
-00100         static structure MEMB_CONCAT(name,_memb_mem)[num]; \
-00101         static struct memb_blocks name = {sizeof(structure), num, \
-00102                                           MEMB_CONCAT(name,_memb_count), \
-00103                                           (void *)MEMB_CONCAT(name,_memb_mem)}
-00104 
-00105 struct memb_blocks {
-00106   unsigned short size;
-00107   unsigned short num;
-00108   char *count;
-00109   void *mem;
-00110 };
-00111 
-00112 /**
-00113  * Initialize a memory block that was declared with MEMB().
-00114  *
-00115  * \param m A memory block previosly declared with MEMB().
-00116  */
-00117 void  memb_init(struct memb_blocks *m);
-00118 
-00119 /**
-00120  * Allocate a memory block from a block of memory declared with MEMB().
-00121  *
-00122  * \param m A memory block previosly declared with MEMB().
-00123  */
-00124 void *memb_alloc(struct memb_blocks *m);
-00125 
-00126 /**
-00127  * Deallocate a memory block from a memory block previously declared
-00128  * with MEMB().
-00129  *
-00130  * \param m m A memory block previosly declared with MEMB().
-00131  *
-00132  * \param ptr A pointer to the memory block that is to be deallocated.
-00133  *
-00134  * \return The new reference count for the memory block (should be 0
-00135  * if successfully deallocated) or -1 if the pointer "ptr" did not
-00136  * point to a legal memory block.
-00137  */
-00138 char  memb_free(struct memb_blocks *m, void *ptr);
-00139 
-00140 /** @} */
-00141 
-00142 #endif /* __MEMB_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00188.html b/components/net/uip/doc/html/a00188.html deleted file mode 100644 index 383bcb3b39f5f384d1642c09c881b45a3bcb06d2..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00188.html +++ /dev/null @@ -1,113 +0,0 @@ - - -uIP 1.0: uip/clock.h Source File - - - - - - -

uip/clock.h

00001 /**
-00002  * \defgroup clock Clock interface
-00003  *
-00004  * The clock interface is the interface between the \ref timer "timer library"
-00005  * and the platform specific clock functionality. The clock
-00006  * interface must be implemented for each platform that uses the \ref
-00007  * timer "timer library".
-00008  *
-00009  * The clock interface does only one this: it measures time. The clock
-00010  * interface provides a macro, CLOCK_SECOND, which corresponds to one
-00011  * second of system time.
-00012  *
-00013  * \sa \ref timer "Timer library"
-00014  *
-00015  * @{
-00016  */
-00017 
-00018 /*
-00019  * Copyright (c) 2004, Swedish Institute of Computer Science.
-00020  * All rights reserved.
-00021  *
-00022  * Redistribution and use in source and binary forms, with or without
-00023  * modification, are permitted provided that the following conditions
-00024  * are met:
-00025  * 1. Redistributions of source code must retain the above copyright
-00026  *    notice, this list of conditions and the following disclaimer.
-00027  * 2. Redistributions in binary form must reproduce the above copyright
-00028  *    notice, this list of conditions and the following disclaimer in the
-00029  *    documentation and/or other materials provided with the distribution.
-00030  * 3. Neither the name of the Institute nor the names of its contributors
-00031  *    may be used to endorse or promote products derived from this software
-00032  *    without specific prior written permission.
-00033  *
-00034  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00035  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00036  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00037  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00038  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00039  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00040  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00041  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00042  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00043  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00044  * SUCH DAMAGE.
-00045  *
-00046  * This file is part of the uIP TCP/IP stack
-00047  *
-00048  * Author: Adam Dunkels <adam@sics.se>
-00049  *
-00050  * $Id: clock.h,v 1.3 2006/06/11 21:46:39 adam Exp $
-00051  */
-00052 #ifndef __CLOCK_H__
-00053 #define __CLOCK_H__
-00054 
-00055 #include "clock-arch.h"
-00056 
-00057 /**
-00058  * Initialize the clock library.
-00059  *
-00060  * This function initializes the clock library and should be called
-00061  * from the main() function of the system.
-00062  *
-00063  */
-00064 void clock_init(void);
-00065 
-00066 /**
-00067  * Get the current clock time.
-00068  *
-00069  * This function returns the current system clock time.
-00070  *
-00071  * \return The current clock time, measured in system ticks.
-00072  */
-00073 clock_time_t clock_time(void);
-00074 
-00075 /**
-00076  * A second, measured in system clock time.
-00077  *
-00078  * \hideinitializer
-00079  */
-00080 #ifdef CLOCK_CONF_SECOND
-00081 #define CLOCK_SECOND CLOCK_CONF_SECOND
-00082 #else
-00083 #define CLOCK_SECOND (clock_time_t)32
-00084 #endif
-00085 
-00086 #endif /* __CLOCK_H__ */
-00087 
-00088 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00189.html b/components/net/uip/doc/html/a00189.html deleted file mode 100644 index 16727d29753a47258e555a342e5e292eca653d8e..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00189.html +++ /dev/null @@ -1,108 +0,0 @@ - - -uIP 1.0: uip/lc-addrlabels.h Source File - - - - - - -

uip/lc-addrlabels.h

Go to the documentation of this file.
00001 /*
-00002  * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * Author: Adam Dunkels <adam@sics.se>
-00032  *
-00033  * $Id: lc-addrlabels.h,v 1.3 2006/06/12 08:00:30 adam Exp $
-00034  */
-00035 
-00036 /**
-00037  * \addtogroup lc
-00038  * @{
-00039  */
-00040 
-00041 /**
-00042  * \file
-00043  * Implementation of local continuations based on the "Labels as
-00044  * values" feature of gcc
-00045  * \author
-00046  * Adam Dunkels <adam@sics.se>
-00047  *
-00048  * This implementation of local continuations is based on a special
-00049  * feature of the GCC C compiler called "labels as values". This
-00050  * feature allows assigning pointers with the address of the code
-00051  * corresponding to a particular C label.
-00052  *
-00053  * For more information, see the GCC documentation:
-00054  * http://gcc.gnu.org/onlinedocs/gcc/Labels-as-Values.html
-00055  *
-00056  * Thanks to dividuum for finding the nice local scope label
-00057  * implementation.
-00058  */
-00059 
-00060 #ifndef __LC_ADDRLABELS_H__
-00061 #define __LC_ADDRLABELS_H__
-00062 
-00063 /** \hideinitializer */
-00064 typedef void * lc_t;
-00065 
-00066 #define LC_INIT(s) s = NULL
-00067 
-00068 
-00069 #define LC_RESUME(s)                            \
-00070   do {                                          \
-00071     if(s != NULL) {                             \
-00072       goto *s;                                  \
-00073     }                                           \
-00074   } while(0)
-00075 
-00076 #define LC_SET(s)                               \
-00077   do { ({ __label__ resume; resume: (s) = &&resume; }); }while(0)
-00078 
-00079 #define LC_END(s)
-00080 
-00081 #endif /* __LC_ADDRLABELS_H__ */
-00082 
-00083 /**  @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00190.html b/components/net/uip/doc/html/a00190.html deleted file mode 100644 index 5ce94dfad7b723a7fd756f3b76ae08ff4a187265..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00190.html +++ /dev/null @@ -1,101 +0,0 @@ - - -uIP 1.0: uip/lc-switch.h Source File - - - - - - -

uip/lc-switch.h

Go to the documentation of this file.
00001 /*
-00002  * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * Author: Adam Dunkels <adam@sics.se>
-00032  *
-00033  * $Id: lc-switch.h,v 1.2 2006/06/12 08:00:30 adam Exp $
-00034  */
-00035 
-00036 /**
-00037  * \addtogroup lc
-00038  * @{
-00039  */
-00040 
-00041 /**
-00042  * \file
-00043  * Implementation of local continuations based on switch() statment
-00044  * \author Adam Dunkels <adam@sics.se>
-00045  *
-00046  * This implementation of local continuations uses the C switch()
-00047  * statement to resume execution of a function somewhere inside the
-00048  * function's body. The implementation is based on the fact that
-00049  * switch() statements are able to jump directly into the bodies of
-00050  * control structures such as if() or while() statmenets.
-00051  *
-00052  * This implementation borrows heavily from Simon Tatham's coroutines
-00053  * implementation in C:
-00054  * http://www.chiark.greenend.org.uk/~sgtatham/coroutines.html
-00055  */
-00056 
-00057 #ifndef __LC_SWITCH_H__
-00058 #define __LC_SWTICH_H__
-00059 
-00060 /* WARNING! lc implementation using switch() does not work if an
-00061    LC_SET() is done within another switch() statement! */
-00062 
-00063 /** \hideinitializer */
-00064 typedef unsigned short lc_t;
-00065 
-00066 #define LC_INIT(s) s = 0;
-00067 
-00068 #define LC_RESUME(s) switch(s) { case 0:
-00069 
-00070 #define LC_SET(s) s = __LINE__; case __LINE__:
-00071 
-00072 #define LC_END(s) }
-00073 
-00074 #endif /* __LC_SWITCH_H__ */
-00075 
-00076 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00191.html b/components/net/uip/doc/html/a00191.html deleted file mode 100644 index 9b0f67671083a4a759139e6e688adf21c7d10b8a..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00191.html +++ /dev/null @@ -1,156 +0,0 @@ - - -uIP 1.0: uip/lc.h Source File - - - - - - -

uip/lc.h

Go to the documentation of this file.
00001 /*
-00002  * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * Author: Adam Dunkels <adam@sics.se>
-00032  *
-00033  * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $
-00034  */
-00035 
-00036 /**
-00037  * \addtogroup pt
-00038  * @{
-00039  */
-00040 
-00041 /**
-00042  * \defgroup lc Local continuations
-00043  * @{
-00044  *
-00045  * Local continuations form the basis for implementing protothreads. A
-00046  * local continuation can be <i>set</i> in a specific function to
-00047  * capture the state of the function. After a local continuation has
-00048  * been set can be <i>resumed</i> in order to restore the state of the
-00049  * function at the point where the local continuation was set.
-00050  *
-00051  *
-00052  */
-00053 
-00054 /**
-00055  * \file lc.h
-00056  * Local continuations
-00057  * \author
-00058  * Adam Dunkels <adam@sics.se>
-00059  *
-00060  */
-00061 
-00062 #ifdef DOXYGEN
-00063 /**
-00064  * Initialize a local continuation.
-00065  *
-00066  * This operation initializes the local continuation, thereby
-00067  * unsetting any previously set continuation state.
-00068  *
-00069  * \hideinitializer
-00070  */
-00071 #define LC_INIT(lc)
-00072 
-00073 /**
-00074  * Set a local continuation.
-00075  *
-00076  * The set operation saves the state of the function at the point
-00077  * where the operation is executed. As far as the set operation is
-00078  * concerned, the state of the function does <b>not</b> include the
-00079  * call-stack or local (automatic) variables, but only the program
-00080  * counter and such CPU registers that needs to be saved.
-00081  *
-00082  * \hideinitializer
-00083  */
-00084 #define LC_SET(lc)
-00085 
-00086 /**
-00087  * Resume a local continuation.
-00088  *
-00089  * The resume operation resumes a previously set local continuation, thus
-00090  * restoring the state in which the function was when the local
-00091  * continuation was set. If the local continuation has not been
-00092  * previously set, the resume operation does nothing.
-00093  *
-00094  * \hideinitializer
-00095  */
-00096 #define LC_RESUME(lc)
-00097 
-00098 /**
-00099  * Mark the end of local continuation usage.
-00100  *
-00101  * The end operation signifies that local continuations should not be
-00102  * used any more in the function. This operation is not needed for
-00103  * most implementations of local continuation, but is required by a
-00104  * few implementations.
-00105  *
-00106  * \hideinitializer
-00107  */
-00108 #define LC_END(lc)
-00109 
-00110 /**
-00111  * \var typedef lc_t;
-00112  *
-00113  * The local continuation type.
-00114  *
-00115  * \hideinitializer
-00116  */
-00117 #endif /* DOXYGEN */
-00118 
-00119 #ifndef __LC_H__
-00120 #define __LC_H__
-00121 
-00122 #ifdef LC_CONF_INCLUDE
-00123 #include LC_CONF_INCLUDE
-00124 #else
-00125 #include "lc-switch.h"
-00126 #endif /* LC_CONF_INCLUDE */
-00127 
-00128 #endif /* __LC_H__ */
-00129 
-00130 /** @} */
-00131 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00192.html b/components/net/uip/doc/html/a00192.html deleted file mode 100644 index 13543d50bdccfb00a780e64b1bd083f1c12d3f31..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00192.html +++ /dev/null @@ -1,363 +0,0 @@ - - -uIP 1.0: uip/psock.c Source File - - - - - - -

uip/psock.c

00001 /*
-00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * Author: Adam Dunkels <adam@sics.se>
-00032  *
-00033  * $Id: psock.c,v 1.2 2006/06/12 08:00:30 adam Exp $
-00034  */
-00035 
-00036 #include <stdio.h>
-00037 #include <string.h>
-00038 
-00039 #include "uipopt.h"
-00040 #include "psock.h"
-00041 #include "uip.h"
-00042 
-00043 #define STATE_NONE 0
-00044 #define STATE_ACKED 1
-00045 #define STATE_READ 2
-00046 #define STATE_BLOCKED_NEWDATA 3
-00047 #define STATE_BLOCKED_CLOSE 4
-00048 #define STATE_BLOCKED_SEND 5
-00049 #define STATE_DATA_SENT 6
-00050 
-00051 /*
-00052  * Return value of the buffering functions that indicates that a
-00053  * buffer was not filled by incoming data.
-00054  *
-00055  */
-00056 #define BUF_NOT_FULL 0
-00057 #define BUF_NOT_FOUND 0
-00058 
-00059 /*
-00060  * Return value of the buffering functions that indicates that a
-00061  * buffer was completely filled by incoming data.
-00062  *
-00063  */
-00064 #define BUF_FULL 1
-00065 
-00066 /*
-00067  * Return value of the buffering functions that indicates that an
-00068  * end-marker byte was found.
-00069  *
-00070  */
-00071 #define BUF_FOUND 2
-00072 
-00073 /*---------------------------------------------------------------------------*/
-00074 static void
-00075 buf_setup(struct psock_buf *buf,
-00076           u8_t *bufptr, u16_t bufsize)
-00077 {
-00078   buf->ptr = bufptr;
-00079   buf->left = bufsize;
-00080 }
-00081 /*---------------------------------------------------------------------------*/
-00082 static u8_t
-00083 buf_bufdata(struct psock_buf *buf, u16_t len,
-00084             u8_t **dataptr, u16_t *datalen)
-00085 {
-00086   if(*datalen < buf->left) {
-00087     memcpy(buf->ptr, *dataptr, *datalen);
-00088     buf->ptr += *datalen;
-00089     buf->left -= *datalen;
-00090     *dataptr += *datalen;
-00091     *datalen = 0;
-00092     return BUF_NOT_FULL;
-00093   } else if(*datalen == buf->left) {
-00094     memcpy(buf->ptr, *dataptr, *datalen);
-00095     buf->ptr += *datalen;
-00096     buf->left = 0;
-00097     *dataptr += *datalen;
-00098     *datalen = 0;
-00099     return BUF_FULL;
-00100   } else {
-00101     memcpy(buf->ptr, *dataptr, buf->left);
-00102     buf->ptr += buf->left;
-00103     *datalen -= buf->left;
-00104     *dataptr += buf->left;
-00105     buf->left = 0;
-00106     return BUF_FULL;
-00107   }
-00108 }
-00109 /*---------------------------------------------------------------------------*/
-00110 static u8_t
-00111 buf_bufto(register struct psock_buf *buf, u8_t endmarker,
-00112           register u8_t **dataptr, register u16_t *datalen)
-00113 {
-00114   u8_t c;
-00115   while(buf->left > 0 && *datalen > 0) {
-00116     c = *buf->ptr = **dataptr;
-00117     ++*dataptr;
-00118     ++buf->ptr;
-00119     --*datalen;
-00120     --buf->left;
-00121     
-00122     if(c == endmarker) {
-00123       return BUF_FOUND;
-00124     }
-00125   }
-00126 
-00127   if(*datalen == 0) {
-00128     return BUF_NOT_FOUND;
-00129   }
-00130 
-00131   while(*datalen > 0) {
-00132     c = **dataptr;
-00133     --*datalen;
-00134     ++*dataptr;
-00135     
-00136     if(c == endmarker) {
-00137       return BUF_FOUND | BUF_FULL;
-00138     }
-00139   }
-00140   
-00141   return BUF_FULL;
-00142 }
-00143 /*---------------------------------------------------------------------------*/
-00144 static char
-00145 send_data(register struct psock *s)
-00146 {
-00147   if(s->state != STATE_DATA_SENT || uip_rexmit()) {
-00148     if(s->sendlen > uip_mss()) {
-00149       uip_send(s->sendptr, uip_mss());
-00150     } else {
-00151       uip_send(s->sendptr, s->sendlen);
-00152     }
-00153     s->state = STATE_DATA_SENT;
-00154     return 1;
-00155   }
-00156   return 0;
-00157 }
-00158 /*---------------------------------------------------------------------------*/
-00159 static char
-00160 data_acked(register struct psock *s)
-00161 {
-00162   if(s->state == STATE_DATA_SENT && uip_acked()) {
-00163     if(s->sendlen > uip_mss()) {
-00164       s->sendlen -= uip_mss();
-00165       s->sendptr += uip_mss();
-00166     } else {
-00167       s->sendptr += s->sendlen;
-00168       s->sendlen = 0;
-00169     }
-00170     s->state = STATE_ACKED;
-00171     return 1;
-00172   }
-00173   return 0;
-00174 }
-00175 /*---------------------------------------------------------------------------*/
-00176 PT_THREAD(psock_send(register struct psock *s, const char *buf,
-00177                      unsigned int len))
-00178 {
-00179   PT_BEGIN(&s->psockpt);
-00180 
-00181   /* If there is no data to send, we exit immediately. */
-00182   if(len == 0) {
-00183     PT_EXIT(&s->psockpt);
-00184   }
-00185 
-00186   /* Save the length of and a pointer to the data that is to be
-00187      sent. */
-00188   s->sendptr = buf;
-00189   s->sendlen = len;
-00190 
-00191   s->state = STATE_NONE;
-00192 
-00193   /* We loop here until all data is sent. The s->sendlen variable is
-00194      updated by the data_sent() function. */
-00195   while(s->sendlen > 0) {
-00196 
-00197     /*
-00198      * The condition for this PT_WAIT_UNTIL is a little tricky: the
-00199      * protothread will wait here until all data has been acknowledged
-00200      * (data_acked() returns true) and until all data has been sent
-00201      * (send_data() returns true). The two functions data_acked() and
-00202      * send_data() must be called in succession to ensure that all
-00203      * data is sent. Therefore the & operator is used instead of the
-00204      * && operator, which would cause only the data_acked() function
-00205      * to be called when it returns false.
-00206      */
-00207     PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s));
-00208   }
-00209 
-00210   s->state = STATE_NONE;
-00211   
-00212   PT_END(&s->psockpt);
-00213 }
-00214 /*---------------------------------------------------------------------------*/
-00215 PT_THREAD(psock_generator_send(register struct psock *s,
-00216                                unsigned short (*generate)(void *), void *arg))
-00217 {
-00218   PT_BEGIN(&s->psockpt);
-00219 
-00220   /* Ensure that there is a generator function to call. */
-00221   if(generate == NULL) {
-00222     PT_EXIT(&s->psockpt);
-00223   }
-00224 
-00225   /* Call the generator function to generate the data in the
-00226      uip_appdata buffer. */
-00227   s->sendlen = generate(arg);
-00228   s->sendptr = uip_appdata;
-00229 
-00230   s->state = STATE_NONE;  
-00231   do {
-00232     /* Call the generator function again if we are called to perform a
-00233        retransmission. */
-00234     if(uip_rexmit()) {
-00235       generate(arg);
-00236     }
-00237     /* Wait until all data is sent and acknowledged. */
-00238     PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data(s));
-00239   } while(s->sendlen > 0);
-00240   
-00241   s->state = STATE_NONE;
-00242   
-00243   PT_END(&s->psockpt);
-00244 }
-00245 /*---------------------------------------------------------------------------*/
-00246 u16_t
-00247 psock_datalen(struct psock *psock)
-00248 {
-00249   return psock->bufsize - psock->buf.left;
-00250 }
-00251 /*---------------------------------------------------------------------------*/
-00252 char
-00253 psock_newdata(struct psock *s)
-00254 {
-00255   if(s->readlen > 0) {
-00256     /* There is data in the uip_appdata buffer that has not yet been
-00257        read with the PSOCK_READ functions. */
-00258     return 1;
-00259   } else if(s->state == STATE_READ) {
-00260     /* All data in uip_appdata buffer already consumed. */
-00261     s->state = STATE_BLOCKED_NEWDATA;
-00262     return 0;
-00263   } else if(uip_newdata()) {
-00264     /* There is new data that has not been consumed. */
-00265     return 1;
-00266   } else {
-00267     /* There is no new data. */
-00268     return 0;
-00269   }
-00270 }
-00271 /*---------------------------------------------------------------------------*/
-00272 PT_THREAD(psock_readto(register struct psock *psock, unsigned char c))
-00273 {
-00274   PT_BEGIN(&psock->psockpt);
-00275 
-00276   buf_setup(&psock->buf, psock->bufptr, psock->bufsize);
-00277   
-00278   /* XXX: Should add buf_checkmarker() before do{} loop, if
-00279      incoming data has been handled while waiting for a write. */
-00280 
-00281   do {
-00282     if(psock->readlen == 0) {
-00283       PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock));
-00284       psock->state = STATE_READ;
-00285       psock->readptr = (u8_t *)uip_appdata;
-00286       psock->readlen = uip_datalen();
-00287     }
-00288   } while((buf_bufto(&psock->buf, c,
-00289                      &psock->readptr,
-00290                      &psock->readlen) & BUF_FOUND) == 0);
-00291   
-00292   if(psock_datalen(psock) == 0) {
-00293     psock->state = STATE_NONE;
-00294     PT_RESTART(&psock->psockpt);
-00295   }
-00296   PT_END(&psock->psockpt);
-00297 }
-00298 /*---------------------------------------------------------------------------*/
-00299 PT_THREAD(psock_readbuf(register struct psock *psock))
-00300 {
-00301   PT_BEGIN(&psock->psockpt);
-00302 
-00303   buf_setup(&psock->buf, psock->bufptr, psock->bufsize);
-00304   
-00305   /* XXX: Should add buf_checkmarker() before do{} loop, if
-00306      incoming data has been handled while waiting for a write. */
-00307 
-00308   do {
-00309     if(psock->readlen == 0) {
-00310       PT_WAIT_UNTIL(&psock->psockpt, psock_newdata(psock));
-00311       printf("Waited for newdata\n");
-00312       psock->state = STATE_READ;
-00313       psock->readptr = (u8_t *)uip_appdata;
-00314       psock->readlen = uip_datalen();
-00315     }
-00316   } while(buf_bufdata(&psock->buf, psock->bufsize,
-00317                          &psock->readptr,
-00318                          &psock->readlen) != BUF_FULL);
-00319 
-00320   if(psock_datalen(psock) == 0) {
-00321     psock->state = STATE_NONE;
-00322     PT_RESTART(&psock->psockpt);
-00323   }
-00324   PT_END(&psock->psockpt);
-00325 }
-00326 /*---------------------------------------------------------------------------*/
-00327 void
-00328 psock_init(register struct psock *psock, char *buffer, unsigned int buffersize)
-00329 {
-00330   psock->state = STATE_NONE;
-00331   psock->readlen = 0;
-00332   psock->bufptr = buffer;
-00333   psock->bufsize = buffersize;
-00334   buf_setup(&psock->buf, buffer, buffersize);
-00335   PT_INIT(&psock->pt);
-00336   PT_INIT(&psock->psockpt);
-00337 }
-00338 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00193.html b/components/net/uip/doc/html/a00193.html deleted file mode 100644 index b0ea40f91d34192f2ab6b97f8588369181aabcc8..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00193.html +++ /dev/null @@ -1,405 +0,0 @@ - - -uIP 1.0: uip/psock.h Source File - - - - - - -

uip/psock.h

Go to the documentation of this file.
00001 /*
-00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * Author: Adam Dunkels <adam@sics.se>
-00032  *
-00033  * $Id: psock.h,v 1.3 2006/06/12 08:00:30 adam Exp $
-00034  */
-00035 
-00036 /**
-00037  * \defgroup psock Protosockets library
-00038  * @{
-00039  *
-00040  * The protosocket library provides an interface to the uIP stack that is
-00041  * similar to the traditional BSD socket interface. Unlike programs
-00042  * written for the ordinary uIP event-driven interface, programs
-00043  * written with the protosocket library are executed in a sequential
-00044  * fashion and does not have to be implemented as explicit state
-00045  * machines.
-00046  *
-00047  * Protosockets only work with TCP connections.
-00048  *
-00049  * The protosocket library uses \ref pt protothreads to provide
-00050  * sequential control flow. This makes the protosockets lightweight in
-00051  * terms of memory, but also means that protosockets inherits the
-00052  * functional limitations of protothreads. Each protosocket lives only
-00053  * within a single function. Automatic variables (stack variables) are
-00054  * not retained across a protosocket library function call.
-00055  *
-00056  * \note Because the protosocket library uses protothreads, local
-00057  * variables will not always be saved across a call to a protosocket
-00058  * library function. It is therefore advised that local variables are
-00059  * used with extreme care.
-00060  *
-00061  * The protosocket library provides functions for sending data without
-00062  * having to deal with retransmissions and acknowledgements, as well
-00063  * as functions for reading data without having to deal with data
-00064  * being split across more than one TCP segment.
-00065  *
-00066  * Because each protosocket runs as a protothread, the protosocket has to be
-00067  * started with a call to PSOCK_BEGIN() at the start of the function
-00068  * in which the protosocket is used. Similarly, the protosocket protothread can
-00069  * be terminated by a call to PSOCK_EXIT().
-00070  *
-00071  */
-00072 
-00073 /**
-00074  * \file
-00075  * Protosocket library header file
-00076  * \author
-00077  * Adam Dunkels <adam@sics.se>
-00078  *
-00079  */
-00080 
-00081 #ifndef __PSOCK_H__
-00082 #define __PSOCK_H__
-00083 
-00084 #include "uipopt.h"
-00085 #include "pt.h"
-00086 
-00087  /*
-00088  * The structure that holds the state of a buffer.
-00089  *
-00090  * This structure holds the state of a uIP buffer. The structure has
-00091  * no user-visible elements, but is used through the functions
-00092  * provided by the library.
-00093  *
-00094  */
-00095 struct psock_buf {
-00096   u8_t *ptr;
-00097   unsigned short left;
-00098 };
-00099 
-00100 /**
-00101  * The representation of a protosocket.
-00102  *
-00103  * The protosocket structrure is an opaque structure with no user-visible
-00104  * elements.
-00105  */
-00106 struct psock {
-00107   struct pt pt, psockpt; /* Protothreads - one that's using the psock
-00108                             functions, and one that runs inside the
-00109                             psock functions. */
-00110   const u8_t *sendptr;   /* Pointer to the next data to be sent. */
-00111   u8_t *readptr;         /* Pointer to the next data to be read. */
-00112   
-00113   char *bufptr;          /* Pointer to the buffer used for buffering
-00114                             incoming data. */
-00115   
-00116   u16_t sendlen;         /* The number of bytes left to be sent. */
-00117   u16_t readlen;         /* The number of bytes left to be read. */
-00118 
-00119   struct psock_buf buf;  /* The structure holding the state of the
-00120                             input buffer. */
-00121   unsigned int bufsize;  /* The size of the input buffer. */
-00122   
-00123   unsigned char state;   /* The state of the protosocket. */
-00124 };
-00125 
-00126 void psock_init(struct psock *psock, char *buffer, unsigned int buffersize);
-00127 /**
-00128  * Initialize a protosocket.
-00129  *
-00130  * This macro initializes a protosocket and must be called before the
-00131  * protosocket is used. The initialization also specifies the input buffer
-00132  * for the protosocket.
-00133  *
-00134  * \param psock (struct psock *) A pointer to the protosocket to be
-00135  * initialized
-00136  *
-00137  * \param buffer (char *) A pointer to the input buffer for the
-00138  * protosocket.
-00139  *
-00140  * \param buffersize (unsigned int) The size of the input buffer.
-00141  *
-00142  * \hideinitializer
-00143  */
-00144 #define PSOCK_INIT(psock, buffer, buffersize) \
-00145   psock_init(psock, buffer, buffersize)
-00146 
-00147 /**
-00148  * Start the protosocket protothread in a function.
-00149  *
-00150  * This macro starts the protothread associated with the protosocket and
-00151  * must come before other protosocket calls in the function it is used.
-00152  *
-00153  * \param psock (struct psock *) A pointer to the protosocket to be
-00154  * started.
-00155  *
-00156  * \hideinitializer
-00157  */
-00158 #define PSOCK_BEGIN(psock) PT_BEGIN(&((psock)->pt))
-00159 
-00160 PT_THREAD(psock_send(struct psock *psock, const char *buf, unsigned int len));
-00161 /**
-00162  * Send data.
-00163  *
-00164  * This macro sends data over a protosocket. The protosocket protothread blocks
-00165  * until all data has been sent and is known to have been received by
-00166  * the remote end of the TCP connection.
-00167  *
-00168  * \param psock (struct psock *) A pointer to the protosocket over which
-00169  * data is to be sent.
-00170  *
-00171  * \param data (char *) A pointer to the data that is to be sent.
-00172  *
-00173  * \param datalen (unsigned int) The length of the data that is to be
-00174  * sent.
-00175  *
-00176  * \hideinitializer
-00177  */
-00178 #define PSOCK_SEND(psock, data, datalen)                \
-00179     PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, data, datalen))
-00180 
-00181 /**
-00182  * \brief      Send a null-terminated string.
-00183  * \param psock Pointer to the protosocket.
-00184  * \param str  The string to be sent.
-00185  *
-00186  *             This function sends a null-terminated string over the
-00187  *             protosocket.
-00188  *
-00189  * \hideinitializer
-00190  */
-00191 #define PSOCK_SEND_STR(psock, str)                      \
-00192     PT_WAIT_THREAD(&((psock)->pt), psock_send(psock, str, strlen(str)))
-00193 
-00194 PT_THREAD(psock_generator_send(struct psock *psock,
-00195                                 unsigned short (*f)(void *), void *arg));
-00196 
-00197 /**
-00198  * \brief      Generate data with a function and send it
-00199  * \param psock Pointer to the protosocket.
-00200  * \param generator Pointer to the generator function
-00201  * \param arg   Argument to the generator function
-00202  *
-00203  *             This function generates data and sends it over the
-00204  *             protosocket. This can be used to dynamically generate
-00205  *             data for a transmission, instead of generating the data
-00206  *             in a buffer beforehand. This function reduces the need for
-00207  *             buffer memory. The generator function is implemented by
-00208  *             the application, and a pointer to the function is given
-00209  *             as an argument with the call to PSOCK_GENERATOR_SEND().
-00210  *
-00211  *             The generator function should place the generated data
-00212  *             directly in the uip_appdata buffer, and return the
-00213  *             length of the generated data. The generator function is
-00214  *             called by the protosocket layer when the data first is
-00215  *             sent, and once for every retransmission that is needed.
-00216  *
-00217  * \hideinitializer
-00218  */
-00219 #define PSOCK_GENERATOR_SEND(psock, generator, arg)     \
-00220     PT_WAIT_THREAD(&((psock)->pt),                                      \
-00221                    psock_generator_send(psock, generator, arg))
-00222 
-00223 
-00224 /**
-00225  * Close a protosocket.
-00226  *
-00227  * This macro closes a protosocket and can only be called from within the
-00228  * protothread in which the protosocket lives.
-00229  *
-00230  * \param psock (struct psock *) A pointer to the protosocket that is to
-00231  * be closed.
-00232  *
-00233  * \hideinitializer
-00234  */
-00235 #define PSOCK_CLOSE(psock) uip_close()
-00236 
-00237 PT_THREAD(psock_readbuf(struct psock *psock));
-00238 /**
-00239  * Read data until the buffer is full.
-00240  *
-00241  * This macro will block waiting for data and read the data into the
-00242  * input buffer specified with the call to PSOCK_INIT(). Data is read
-00243  * until the buffer is full..
-00244  *
-00245  * \param psock (struct psock *) A pointer to the protosocket from which
-00246  * data should be read.
-00247  *
-00248  * \hideinitializer
-00249  */
-00250 #define PSOCK_READBUF(psock)                            \
-00251   PT_WAIT_THREAD(&((psock)->pt), psock_readbuf(psock))
-00252 
-00253 PT_THREAD(psock_readto(struct psock *psock, unsigned char c));
-00254 /**
-00255  * Read data up to a specified character.
-00256  *
-00257  * This macro will block waiting for data and read the data into the
-00258  * input buffer specified with the call to PSOCK_INIT(). Data is only
-00259  * read until the specifieed character appears in the data stream.
-00260  *
-00261  * \param psock (struct psock *) A pointer to the protosocket from which
-00262  * data should be read.
-00263  *
-00264  * \param c (char) The character at which to stop reading.
-00265  *
-00266  * \hideinitializer
-00267  */
-00268 #define PSOCK_READTO(psock, c)                          \
-00269   PT_WAIT_THREAD(&((psock)->pt), psock_readto(psock, c))
-00270 
-00271 /**
-00272  * The length of the data that was previously read.
-00273  *
-00274  * This macro returns the length of the data that was previously read
-00275  * using PSOCK_READTO() or PSOCK_READ().
-00276  *
-00277  * \param psock (struct psock *) A pointer to the protosocket holding the data.
-00278  *
-00279  * \hideinitializer
-00280  */
-00281 #define PSOCK_DATALEN(psock) psock_datalen(psock)
-00282 
-00283 u16_t psock_datalen(struct psock *psock);
-00284 
-00285 /**
-00286  * Exit the protosocket's protothread.
-00287  *
-00288  * This macro terminates the protothread of the protosocket and should
-00289  * almost always be used in conjunction with PSOCK_CLOSE().
-00290  *
-00291  * \sa PSOCK_CLOSE_EXIT()
-00292  *
-00293  * \param psock (struct psock *) A pointer to the protosocket.
-00294  *
-00295  * \hideinitializer
-00296  */
-00297 #define PSOCK_EXIT(psock) PT_EXIT(&((psock)->pt))
-00298 
-00299 /**
-00300  * Close a protosocket and exit the protosocket's protothread.
-00301  *
-00302  * This macro closes a protosocket and exits the protosocket's protothread.
-00303  *
-00304  * \param psock (struct psock *) A pointer to the protosocket.
-00305  *
-00306  * \hideinitializer
-00307  */
-00308 #define PSOCK_CLOSE_EXIT(psock)         \
-00309   do {                                          \
-00310     PSOCK_CLOSE(psock);                 \
-00311     PSOCK_EXIT(psock);                  \
-00312   } while(0)
-00313 
-00314 /**
-00315  * Declare the end of a protosocket's protothread.
-00316  *
-00317  * This macro is used for declaring that the protosocket's protothread
-00318  * ends. It must always be used together with a matching PSOCK_BEGIN()
-00319  * macro.
-00320  *
-00321  * \param psock (struct psock *) A pointer to the protosocket.
-00322  *
-00323  * \hideinitializer
-00324  */
-00325 #define PSOCK_END(psock) PT_END(&((psock)->pt))
-00326 
-00327 char psock_newdata(struct psock *s);
-00328 
-00329 /**
-00330  * Check if new data has arrived on a protosocket.
-00331  *
-00332  * This macro is used in conjunction with the PSOCK_WAIT_UNTIL()
-00333  * macro to check if data has arrived on a protosocket.
-00334  *
-00335  * \param psock (struct psock *) A pointer to the protosocket.
-00336  *
-00337  * \hideinitializer
-00338  */
-00339 #define PSOCK_NEWDATA(psock) psock_newdata(psock)
-00340 
-00341 /**
-00342  * Wait until a condition is true.
-00343  *
-00344  * This macro blocks the protothread until the specified condition is
-00345  * true. The macro PSOCK_NEWDATA() can be used to check if new data
-00346  * arrives when the protosocket is waiting.
-00347  *
-00348  * Typically, this macro is used as follows:
-00349  *
-00350  \code
-00351  PT_THREAD(thread(struct psock *s, struct timer *t))
-00352  {
-00353    PSOCK_BEGIN(s);
-00354 
-00355    PSOCK_WAIT_UNTIL(s, PSOCK_NEWADATA(s) || timer_expired(t));
-00356    
-00357    if(PSOCK_NEWDATA(s)) {
-00358      PSOCK_READTO(s, '\n');
-00359    } else {
-00360      handle_timed_out(s);
-00361    }
-00362    
-00363    PSOCK_END(s);
-00364  }
-00365  \endcode
-00366  *
-00367  * \param psock (struct psock *) A pointer to the protosocket.
-00368  * \param condition The condition to wait for.
-00369  *
-00370  * \hideinitializer
-00371  */
-00372 #define PSOCK_WAIT_UNTIL(psock, condition)    \
-00373   PT_WAIT_UNTIL(&((psock)->pt), (condition));
-00374 
-00375 #define PSOCK_WAIT_THREAD(psock, condition)   \
-00376   PT_WAIT_THREAD(&((psock)->pt), (condition))
-00377 
-00378 #endif /* __PSOCK_H__ */
-00379 
-00380 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00194.html b/components/net/uip/doc/html/a00194.html deleted file mode 100644 index 5e303b897e9464f9cfc3498fab0297ab7080ddb7..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00194.html +++ /dev/null @@ -1,348 +0,0 @@ - - -uIP 1.0: uip/pt.h Source File - - - - - - -

uip/pt.h

Go to the documentation of this file.
00001 /*
-00002  * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * Author: Adam Dunkels <adam@sics.se>
-00032  *
-00033  * $Id: pt.h,v 1.2 2006/06/12 08:00:30 adam Exp $
-00034  */
-00035 
-00036 /**
-00037  * \addtogroup pt
-00038  * @{
-00039  */
-00040 
-00041 /**
-00042  * \file
-00043  * Protothreads implementation.
-00044  * \author
-00045  * Adam Dunkels <adam@sics.se>
-00046  *
-00047  */
-00048 
-00049 #ifndef __PT_H__
-00050 #define __PT_H__
-00051 
-00052 #include "lc.h"
-00053 
-00054 struct pt {
-00055   lc_t lc;
-00056 };
-00057 
-00058 #define PT_WAITING 0
-00059 #define PT_EXITED  1
-00060 #define PT_ENDED   2
-00061 #define PT_YIELDED 3
-00062 
-00063 /**
-00064  * \name Initialization
-00065  * @{
-00066  */
-00067 
-00068 /**
-00069  * Initialize a protothread.
-00070  *
-00071  * Initializes a protothread. Initialization must be done prior to
-00072  * starting to execute the protothread.
-00073  *
-00074  * \param pt A pointer to the protothread control structure.
-00075  *
-00076  * \sa PT_SPAWN()
-00077  *
-00078  * \hideinitializer
-00079  */
-00080 #define PT_INIT(pt)   LC_INIT((pt)->lc)
-00081 
-00082 /** @} */
-00083 
-00084 /**
-00085  * \name Declaration and definition
-00086  * @{
-00087  */
-00088 
-00089 /**
-00090  * Declaration of a protothread.
-00091  *
-00092  * This macro is used to declare a protothread. All protothreads must
-00093  * be declared with this macro.
-00094  *
-00095  * \param name_args The name and arguments of the C function
-00096  * implementing the protothread.
-00097  *
-00098  * \hideinitializer
-00099  */
-00100 #define PT_THREAD(name_args) char name_args
-00101 
-00102 /**
-00103  * Declare the start of a protothread inside the C function
-00104  * implementing the protothread.
-00105  *
-00106  * This macro is used to declare the starting point of a
-00107  * protothread. It should be placed at the start of the function in
-00108  * which the protothread runs. All C statements above the PT_BEGIN()
-00109  * invokation will be executed each time the protothread is scheduled.
-00110  *
-00111  * \param pt A pointer to the protothread control structure.
-00112  *
-00113  * \hideinitializer
-00114  */
-00115 #define PT_BEGIN(pt) { char PT_YIELD_FLAG = 1; LC_RESUME((pt)->lc)
-00116 
-00117 /**
-00118  * Declare the end of a protothread.
-00119  *
-00120  * This macro is used for declaring that a protothread ends. It must
-00121  * always be used together with a matching PT_BEGIN() macro.
-00122  *
-00123  * \param pt A pointer to the protothread control structure.
-00124  *
-00125  * \hideinitializer
-00126  */
-00127 #define PT_END(pt) LC_END((pt)->lc); PT_YIELD_FLAG = 0; \
-00128                    PT_INIT(pt); return PT_ENDED; }
-00129 
-00130 /** @} */
-00131 
-00132 /**
-00133  * \name Blocked wait
-00134  * @{
-00135  */
-00136 
-00137 /**
-00138  * Block and wait until condition is true.
-00139  *
-00140  * This macro blocks the protothread until the specified condition is
-00141  * true.
-00142  *
-00143  * \param pt A pointer to the protothread control structure.
-00144  * \param condition The condition.
-00145  *
-00146  * \hideinitializer
-00147  */
-00148 #define PT_WAIT_UNTIL(pt, condition)            \
-00149   do {                                          \
-00150     LC_SET((pt)->lc);                           \
-00151     if(!(condition)) {                          \
-00152       return PT_WAITING;                        \
-00153     }                                           \
-00154   } while(0)
-00155 
-00156 /**
-00157  * Block and wait while condition is true.
-00158  *
-00159  * This function blocks and waits while condition is true. See
-00160  * PT_WAIT_UNTIL().
-00161  *
-00162  * \param pt A pointer to the protothread control structure.
-00163  * \param cond The condition.
-00164  *
-00165  * \hideinitializer
-00166  */
-00167 #define PT_WAIT_WHILE(pt, cond)  PT_WAIT_UNTIL((pt), !(cond))
-00168 
-00169 /** @} */
-00170 
-00171 /**
-00172  * \name Hierarchical protothreads
-00173  * @{
-00174  */
-00175 
-00176 /**
-00177  * Block and wait until a child protothread completes.
-00178  *
-00179  * This macro schedules a child protothread. The current protothread
-00180  * will block until the child protothread completes.
-00181  *
-00182  * \note The child protothread must be manually initialized with the
-00183  * PT_INIT() function before this function is used.
-00184  *
-00185  * \param pt A pointer to the protothread control structure.
-00186  * \param thread The child protothread with arguments
-00187  *
-00188  * \sa PT_SPAWN()
-00189  *
-00190  * \hideinitializer
-00191  */
-00192 #define PT_WAIT_THREAD(pt, thread) PT_WAIT_WHILE((pt), PT_SCHEDULE(thread))
-00193 
-00194 /**
-00195  * Spawn a child protothread and wait until it exits.
-00196  *
-00197  * This macro spawns a child protothread and waits until it exits. The
-00198  * macro can only be used within a protothread.
-00199  *
-00200  * \param pt A pointer to the protothread control structure.
-00201  * \param child A pointer to the child protothread's control structure.
-00202  * \param thread The child protothread with arguments
-00203  *
-00204  * \hideinitializer
-00205  */
-00206 #define PT_SPAWN(pt, child, thread)             \
-00207   do {                                          \
-00208     PT_INIT((child));                           \
-00209     PT_WAIT_THREAD((pt), (thread));             \
-00210   } while(0)
-00211 
-00212 /** @} */
-00213 
-00214 /**
-00215  * \name Exiting and restarting
-00216  * @{
-00217  */
-00218 
-00219 /**
-00220  * Restart the protothread.
-00221  *
-00222  * This macro will block and cause the running protothread to restart
-00223  * its execution at the place of the PT_BEGIN() call.
-00224  *
-00225  * \param pt A pointer to the protothread control structure.
-00226  *
-00227  * \hideinitializer
-00228  */
-00229 #define PT_RESTART(pt)                          \
-00230   do {                                          \
-00231     PT_INIT(pt);                                \
-00232     return PT_WAITING;                  \
-00233   } while(0)
-00234 
-00235 /**
-00236  * Exit the protothread.
-00237  *
-00238  * This macro causes the protothread to exit. If the protothread was
-00239  * spawned by another protothread, the parent protothread will become
-00240  * unblocked and can continue to run.
-00241  *
-00242  * \param pt A pointer to the protothread control structure.
-00243  *
-00244  * \hideinitializer
-00245  */
-00246 #define PT_EXIT(pt)                             \
-00247   do {                                          \
-00248     PT_INIT(pt);                                \
-00249     return PT_EXITED;                   \
-00250   } while(0)
-00251 
-00252 /** @} */
-00253 
-00254 /**
-00255  * \name Calling a protothread
-00256  * @{
-00257  */
-00258 
-00259 /**
-00260  * Schedule a protothread.
-00261  *
-00262  * This function shedules a protothread. The return value of the
-00263  * function is non-zero if the protothread is running or zero if the
-00264  * protothread has exited.
-00265  *
-00266  * \param f The call to the C function implementing the protothread to
-00267  * be scheduled
-00268  *
-00269  * \hideinitializer
-00270  */
-00271 #define PT_SCHEDULE(f) ((f) == PT_WAITING)
-00272 
-00273 /** @} */
-00274 
-00275 /**
-00276  * \name Yielding from a protothread
-00277  * @{
-00278  */
-00279 
-00280 /**
-00281  * Yield from the current protothread.
-00282  *
-00283  * This function will yield the protothread, thereby allowing other
-00284  * processing to take place in the system.
-00285  *
-00286  * \param pt A pointer to the protothread control structure.
-00287  *
-00288  * \hideinitializer
-00289  */
-00290 #define PT_YIELD(pt)                            \
-00291   do {                                          \
-00292     PT_YIELD_FLAG = 0;                          \
-00293     LC_SET((pt)->lc);                           \
-00294     if(PT_YIELD_FLAG == 0) {                    \
-00295       return PT_YIELDED;                        \
-00296     }                                           \
-00297   } while(0)
-00298 
-00299 /**
-00300  * \brief      Yield from the protothread until a condition occurs.
-00301  * \param pt   A pointer to the protothread control structure.
-00302  * \param cond The condition.
-00303  *
-00304  *             This function will yield the protothread, until the
-00305  *             specified condition evaluates to true.
-00306  *
-00307  *
-00308  * \hideinitializer
-00309  */
-00310 #define PT_YIELD_UNTIL(pt, cond)                \
-00311   do {                                          \
-00312     PT_YIELD_FLAG = 0;                          \
-00313     LC_SET((pt)->lc);                           \
-00314     if((PT_YIELD_FLAG == 0) || !(cond)) {       \
-00315       return PT_YIELDED;                        \
-00316     }                                           \
-00317   } while(0)
-00318 
-00319 /** @} */
-00320 
-00321 #endif /* __PT_H__ */
-00322 
-00323 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00195.html b/components/net/uip/doc/html/a00195.html deleted file mode 100644 index fa2e608e8a1cadeab2d8ec49fe4047dddfd627fd..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00195.html +++ /dev/null @@ -1,152 +0,0 @@ - - -uIP 1.0: uip/timer.c Source File - - - - - - -

uip/timer.c

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup timer
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \file
-00008  * Timer library implementation.
-00009  * \author
-00010  * Adam Dunkels <adam@sics.se>
-00011  */
-00012 
-00013 /*
-00014  * Copyright (c) 2004, Swedish Institute of Computer Science.
-00015  * All rights reserved.
-00016  *
-00017  * Redistribution and use in source and binary forms, with or without
-00018  * modification, are permitted provided that the following conditions
-00019  * are met:
-00020  * 1. Redistributions of source code must retain the above copyright
-00021  *    notice, this list of conditions and the following disclaimer.
-00022  * 2. Redistributions in binary form must reproduce the above copyright
-00023  *    notice, this list of conditions and the following disclaimer in the
-00024  *    documentation and/or other materials provided with the distribution.
-00025  * 3. Neither the name of the Institute nor the names of its contributors
-00026  *    may be used to endorse or promote products derived from this software
-00027  *    without specific prior written permission.
-00028  *
-00029  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00030  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00031  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00032  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00033  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00034  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00035  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00036  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00037  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00038  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00039  * SUCH DAMAGE.
-00040  *
-00041  * This file is part of the uIP TCP/IP stack
-00042  *
-00043  * Author: Adam Dunkels <adam@sics.se>
-00044  *
-00045  * $Id: timer.c,v 1.2 2006/06/12 08:00:30 adam Exp $
-00046  */
-00047 
-00048 #include "clock.h"
-00049 #include "timer.h"
-00050 
-00051 /*---------------------------------------------------------------------------*/
-00052 /**
-00053  * Set a timer.
-00054  *
-00055  * This function is used to set a timer for a time sometime in the
-00056  * future. The function timer_expired() will evaluate to true after
-00057  * the timer has expired.
-00058  *
-00059  * \param t A pointer to the timer
-00060  * \param interval The interval before the timer expires.
-00061  *
-00062  */
-00063 void
-00064 timer_set(struct timer *t, clock_time_t interval)
-00065 {
-00066   t->interval = interval;
-00067   t->start = clock_time();
-00068 }
-00069 /*---------------------------------------------------------------------------*/
-00070 /**
-00071  * Reset the timer with the same interval.
-00072  *
-00073  * This function resets the timer with the same interval that was
-00074  * given to the timer_set() function. The start point of the interval
-00075  * is the exact time that the timer last expired. Therefore, this
-00076  * function will cause the timer to be stable over time, unlike the
-00077  * timer_rester() function.
-00078  *
-00079  * \param t A pointer to the timer.
-00080  *
-00081  * \sa timer_restart()
-00082  */
-00083 void
-00084 timer_reset(struct timer *t)
-00085 {
-00086   t->start += t->interval;
-00087 }
-00088 /*---------------------------------------------------------------------------*/
-00089 /**
-00090  * Restart the timer from the current point in time
-00091  *
-00092  * This function restarts a timer with the same interval that was
-00093  * given to the timer_set() function. The timer will start at the
-00094  * current time.
-00095  *
-00096  * \note A periodic timer will drift if this function is used to reset
-00097  * it. For preioric timers, use the timer_reset() function instead.
-00098  *
-00099  * \param t A pointer to the timer.
-00100  *
-00101  * \sa timer_reset()
-00102  */
-00103 void
-00104 timer_restart(struct timer *t)
-00105 {
-00106   t->start = clock_time();
-00107 }
-00108 /*---------------------------------------------------------------------------*/
-00109 /**
-00110  * Check if a timer has expired.
-00111  *
-00112  * This function tests if a timer has expired and returns true or
-00113  * false depending on its status.
-00114  *
-00115  * \param t A pointer to the timer
-00116  *
-00117  * \return Non-zero if the timer has expired, zero otherwise.
-00118  *
-00119  */
-00120 int
-00121 timer_expired(struct timer *t)
-00122 {
-00123   return (clock_time_t)(clock_time() - t->start) >= (clock_time_t)t->interval;
-00124 }
-00125 /*---------------------------------------------------------------------------*/
-00126 
-00127 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00196.html b/components/net/uip/doc/html/a00196.html deleted file mode 100644 index c72141b7253ba38eac1288c287db01e899cbdaf0..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00196.html +++ /dev/null @@ -1,111 +0,0 @@ - - -uIP 1.0: uip/timer.h Source File - - - - - - -

uip/timer.h

Go to the documentation of this file.
00001 /**
-00002  * \defgroup timer Timer library
-00003  *
-00004  * The timer library provides functions for setting, resetting and
-00005  * restarting timers, and for checking if a timer has expired. An
-00006  * application must "manually" check if its timers have expired; this
-00007  * is not done automatically.
-00008  *
-00009  * A timer is declared as a \c struct \c timer and all access to the
-00010  * timer is made by a pointer to the declared timer.
-00011  *
-00012  * \note The timer library uses the \ref clock "Clock library" to
-00013  * measure time. Intervals should be specified in the format used by
-00014  * the clock library.
-00015  *
-00016  * @{
-00017  */
-00018 
-00019 
-00020 /**
-00021  * \file
-00022  * Timer library header file.
-00023  * \author
-00024  * Adam Dunkels <adam@sics.se>
-00025  */
-00026 
-00027 /*
-00028  * Copyright (c) 2004, Swedish Institute of Computer Science.
-00029  * All rights reserved.
-00030  *
-00031  * Redistribution and use in source and binary forms, with or without
-00032  * modification, are permitted provided that the following conditions
-00033  * are met:
-00034  * 1. Redistributions of source code must retain the above copyright
-00035  *    notice, this list of conditions and the following disclaimer.
-00036  * 2. Redistributions in binary form must reproduce the above copyright
-00037  *    notice, this list of conditions and the following disclaimer in the
-00038  *    documentation and/or other materials provided with the distribution.
-00039  * 3. Neither the name of the Institute nor the names of its contributors
-00040  *    may be used to endorse or promote products derived from this software
-00041  *    without specific prior written permission.
-00042  *
-00043  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00044  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00045  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00046  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00047  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00048  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00049  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00050  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00051  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00052  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00053  * SUCH DAMAGE.
-00054  *
-00055  * This file is part of the uIP TCP/IP stack
-00056  *
-00057  * Author: Adam Dunkels <adam@sics.se>
-00058  *
-00059  * $Id: timer.h,v 1.3 2006/06/11 21:46:39 adam Exp $
-00060  */
-00061 #ifndef __TIMER_H__
-00062 #define __TIMER_H__
-00063 
-00064 #include "clock.h"
-00065 
-00066 /**
-00067  * A timer.
-00068  *
-00069  * This structure is used for declaring a timer. The timer must be set
-00070  * with timer_set() before it can be used.
-00071  *
-00072  * \hideinitializer
-00073  */
-00074 struct timer {
-00075   clock_time_t start;
-00076   clock_time_t interval;
-00077 };
-00078 
-00079 void timer_set(struct timer *t, clock_time_t interval);
-00080 void timer_reset(struct timer *t);
-00081 void timer_restart(struct timer *t);
-00082 int timer_expired(struct timer *t);
-00083 
-00084 #endif /* __TIMER_H__ */
-00085 
-00086 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00197.html b/components/net/uip/doc/html/a00197.html deleted file mode 100644 index d8f85aa30fc55c34dae54e618941dca6939f3d8c..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00197.html +++ /dev/null @@ -1,183 +0,0 @@ - - -uIP 1.0: uip/uip-neighbor.c Source File - - - - - - -

uip/uip-neighbor.c

Go to the documentation of this file.
00001 /*
-00002  * Copyright (c) 2006, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * $Id: uip-neighbor.c,v 1.2 2006/06/12 08:00:30 adam Exp $
-00032  */
-00033 
-00034 /**
-00035  * \file
-00036  *         Database of link-local neighbors, used by IPv6 code and
-00037  *         to be used by a future ARP code rewrite.
-00038  * \author
-00039  *         Adam Dunkels <adam@sics.se>
-00040  */
-00041 
-00042 #include "uip-neighbor.h"
-00043 
-00044 #include <string.h>
-00045 
-00046 #define MAX_TIME 128
-00047 
-00048 #ifdef UIP_NEIGHBOR_CONF_ENTRIES
-00049 #define ENTRIES UIP_NEIGHBOR_CONF_ENTRIES
-00050 #else /* UIP_NEIGHBOR_CONF_ENTRIES */
-00051 #define ENTRIES 8
-00052 #endif /* UIP_NEIGHBOR_CONF_ENTRIES */
-00053 
-00054 struct neighbor_entry {
-00055   uip_ipaddr_t ipaddr;
-00056   struct uip_neighbor_addr addr;
-00057   u8_t time;
-00058 };
-00059 static struct neighbor_entry entries[ENTRIES];
-00060 
-00061 /*---------------------------------------------------------------------------*/
-00062 void
-00063 uip_neighbor_init(void)
-00064 {
-00065   int i;
-00066 
-00067   for(i = 0; i < ENTRIES; ++i) {
-00068     entries[i].time = MAX_TIME;
-00069   }
-00070 }
-00071 /*---------------------------------------------------------------------------*/
-00072 void
-00073 uip_neighbor_periodic(void)
-00074 {
-00075   int i;
-00076 
-00077   for(i = 0; i < ENTRIES; ++i) {
-00078     if(entries[i].time < MAX_TIME) {
-00079       entries[i].time++;
-00080     }
-00081   }
-00082 }
-00083 /*---------------------------------------------------------------------------*/
-00084 void
-00085 uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr)
-00086 {
-00087   int i, oldest;
-00088   u8_t oldest_time;
-00089 
-00090   printf("Adding neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n",
-00091          addr->addr.addr[0], addr->addr.addr[1], addr->addr.addr[2], addr->addr.addr[3],
-00092          addr->addr.addr[4], addr->addr.addr[5]);
-00093   
-00094   /* Find the first unused entry or the oldest used entry. */
-00095   oldest_time = 0;
-00096   oldest = 0;
-00097   for(i = 0; i < ENTRIES; ++i) {
-00098     if(entries[i].time == MAX_TIME) {
-00099       oldest = i;
-00100       break;
-00101     }
-00102     if(uip_ipaddr_cmp(entries[i].ipaddr, addr)) {
-00103       oldest = i;
-00104       break;
-00105     }
-00106     if(entries[i].time > oldest_time) {
-00107       oldest = i;
-00108       oldest_time = entries[i].time;
-00109     }
-00110   }
-00111 
-00112   /* Use the oldest or first free entry (either pointed to by the
-00113      "oldest" variable). */
-00114   entries[oldest].time = 0;
-00115   uip_ipaddr_copy(entries[oldest].ipaddr, ipaddr);
-00116   memcpy(&entries[oldest].addr, addr, sizeof(struct uip_neighbor_addr));
-00117 }
-00118 /*---------------------------------------------------------------------------*/
-00119 static struct neighbor_entry *
-00120 find_entry(uip_ipaddr_t ipaddr)
-00121 {
-00122   int i;
-00123   
-00124   for(i = 0; i < ENTRIES; ++i) {
-00125     if(uip_ipaddr_cmp(entries[i].ipaddr, ipaddr)) {
-00126       return &entries[i];
-00127     }
-00128   }
-00129   return NULL;
-00130 }
-00131 /*---------------------------------------------------------------------------*/
-00132 void
-00133 uip_neighbor_update(uip_ipaddr_t ipaddr)
-00134 {
-00135   struct neighbor_entry *e;
-00136 
-00137   e = find_entry(ipaddr);
-00138   if(e != NULL) {
-00139     e->time = 0;
-00140   }
-00141 }
-00142 /*---------------------------------------------------------------------------*/
-00143 struct uip_neighbor_addr *
-00144 uip_neighbor_lookup(uip_ipaddr_t ipaddr)
-00145 {
-00146   struct neighbor_entry *e;
-00147 
-00148   e = find_entry(ipaddr);
-00149   if(e != NULL) {
-00150     /*    printf("Lookup neighbor with link address %02x:%02x:%02x:%02x:%02x:%02x\n",
-00151            e->addr.addr.addr[0], e->addr.addr.addr[1], e->addr.addr.addr[2], e->addr.addr.addr[3],
-00152            e->addr.addr.addr[4], e->addr.addr.addr[5]);*/
-00153 
-00154     return &e->addr;
-00155   }
-00156   return NULL;
-00157 }
-00158 /*---------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00198.html b/components/net/uip/doc/html/a00198.html deleted file mode 100644 index ce7cb56de73f6838a1628e9d05ddeabacdfbe516..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00198.html +++ /dev/null @@ -1,86 +0,0 @@ - - -uIP 1.0: uip/uip-neighbor.h Source File - - - - - - -

uip/uip-neighbor.h

Go to the documentation of this file.
00001 /*
-00002  * Copyright (c) 2006, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * $Id: uip-neighbor.h,v 1.2 2006/06/12 08:00:30 adam Exp $
-00032  */
-00033 
-00034 /**
-00035  * \file
-00036  *         Header file for database of link-local neighbors, used by
-00037  *         IPv6 code and to be used by future ARP code.
-00038  * \author
-00039  *         Adam Dunkels <adam@sics.se>
-00040  */
-00041 
-00042 #ifndef __UIP_NEIGHBOR_H__
-00043 #define __UIP_NEIGHBOR_H__
-00044 
-00045 #include "uip.h"
-00046 
-00047 struct uip_neighbor_addr {
-00048 #if UIP_NEIGHBOR_CONF_ADDRTYPE
-00049   UIP_NEIGHBOR_CONF_ADDRTYPE addr;
-00050 #else
-00051   struct uip_eth_addr addr;
-00052 #endif
-00053 };
-00054 
-00055 void uip_neighbor_init(void);
-00056 void uip_neighbor_add(uip_ipaddr_t ipaddr, struct uip_neighbor_addr *addr);
-00057 void uip_neighbor_update(uip_ipaddr_t ipaddr);
-00058 struct uip_neighbor_addr *uip_neighbor_lookup(uip_ipaddr_t ipaddr);
-00059 void uip_neighbor_periodic(void);
-00060 
-00061 #endif /* __UIP-NEIGHBOR_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00199.html b/components/net/uip/doc/html/a00199.html deleted file mode 100644 index f33889b58238b69fa71996ca143b10a2f26d08f4..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00199.html +++ /dev/null @@ -1,161 +0,0 @@ - - -uIP 1.0: uip/uip-split.c Source File - - - - - - -

uip/uip-split.c

00001 /*
-00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * Author: Adam Dunkels <adam@sics.se>
-00032  *
-00033  * $Id: uip-split.c,v 1.2 2006/06/12 08:00:30 adam Exp $
-00034  */
-00035 
-00036 #include <string.h>
-00037 
-00038 #include "uip-split.h"
-00039 #include "uip.h"
-00040 #include "uip-fw.h"
-00041 #include "uip_arch.h"
-00042 
-00043 
-00044 
-00045 #define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
-00046 
-00047 /*-----------------------------------------------------------------------------*/
-00048 void
-00049 uip_split_output(void)
-00050 {
-00051   u16_t tcplen, len1, len2;
-00052 
-00053   /* We only try to split maximum sized TCP segments. */
-00054   if(BUF->proto == UIP_PROTO_TCP &&
-00055      uip_len == UIP_BUFSIZE - UIP_LLH_LEN) {
-00056 
-00057     tcplen = uip_len - UIP_TCPIP_HLEN;
-00058     /* Split the segment in two. If the original packet length was
-00059        odd, we make the second packet one byte larger. */
-00060     len1 = len2 = tcplen / 2;
-00061     if(len1 + len2 < tcplen) {
-00062       ++len2;
-00063     }
-00064 
-00065     /* Create the first packet. This is done by altering the length
-00066        field of the IP header and updating the checksums. */
-00067     uip_len = len1 + UIP_TCPIP_HLEN;
-00068 #if UIP_CONF_IPV6
-00069     /* For IPv6, the IP length field does not include the IPv6 IP header
-00070        length. */
-00071     BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
-00072     BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
-00073 #else /* UIP_CONF_IPV6 */
-00074     BUF->len[0] = uip_len >> 8;
-00075     BUF->len[1] = uip_len & 0xff;
-00076 #endif /* UIP_CONF_IPV6 */
-00077     
-00078     /* Recalculate the TCP checksum. */
-00079     BUF->tcpchksum = 0;
-00080     BUF->tcpchksum = ~(uip_tcpchksum());
-00081 
-00082 #if !UIP_CONF_IPV6
-00083     /* Recalculate the IP checksum. */
-00084     BUF->ipchksum = 0;
-00085     BUF->ipchksum = ~(uip_ipchksum());
-00086 #endif /* UIP_CONF_IPV6 */
-00087     
-00088     /* Transmit the first packet. */
-00089     /*    uip_fw_output();*/
-00090     tcpip_output();
-00091 
-00092     /* Now, create the second packet. To do this, it is not enough to
-00093        just alter the length field, but we must also update the TCP
-00094        sequence number and point the uip_appdata to a new place in
-00095        memory. This place is detemined by the length of the first
-00096        packet (len1). */
-00097     uip_len = len2 + UIP_TCPIP_HLEN;
-00098 #if UIP_CONF_IPV6
-00099     /* For IPv6, the IP length field does not include the IPv6 IP header
-00100        length. */
-00101     BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
-00102     BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
-00103 #else /* UIP_CONF_IPV6 */
-00104     BUF->len[0] = uip_len >> 8;
-00105     BUF->len[1] = uip_len & 0xff;
-00106 #endif /* UIP_CONF_IPV6 */
-00107     
-00108     /*    uip_appdata += len1;*/
-00109     memcpy(uip_appdata, (u8_t *)uip_appdata + len1, len2);
-00110 
-00111     uip_add32(BUF->seqno, len1);
-00112     BUF->seqno[0] = uip_acc32[0];
-00113     BUF->seqno[1] = uip_acc32[1];
-00114     BUF->seqno[2] = uip_acc32[2];
-00115     BUF->seqno[3] = uip_acc32[3];
-00116     
-00117     /* Recalculate the TCP checksum. */
-00118     BUF->tcpchksum = 0;
-00119     BUF->tcpchksum = ~(uip_tcpchksum());
-00120 
-00121 #if !UIP_CONF_IPV6
-00122     /* Recalculate the IP checksum. */
-00123     BUF->ipchksum = 0;
-00124     BUF->ipchksum = ~(uip_ipchksum());
-00125 #endif /* UIP_CONF_IPV6 */
-00126 
-00127     /* Transmit the second packet. */
-00128     /*    uip_fw_output();*/
-00129     tcpip_output();
-00130   } else {
-00131     /*    uip_fw_output();*/
-00132     tcpip_output();
-00133   }
-00134      
-00135 }
-00136 /*-----------------------------------------------------------------------------*/
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00200.html b/components/net/uip/doc/html/a00200.html deleted file mode 100644 index 9371423f38f6cfe019aad9ed3507434ea9b0f23a..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00200.html +++ /dev/null @@ -1,121 +0,0 @@ - - -uIP 1.0: uip/uip-split.h Source File - - - - - - -

uip/uip-split.h

Go to the documentation of this file.
00001 /*
-00002  * Copyright (c) 2004, Swedish Institute of Computer Science.
-00003  * All rights reserved.
-00004  *
-00005  * Redistribution and use in source and binary forms, with or without
-00006  * modification, are permitted provided that the following conditions
-00007  * are met:
-00008  * 1. Redistributions of source code must retain the above copyright
-00009  *    notice, this list of conditions and the following disclaimer.
-00010  * 2. Redistributions in binary form must reproduce the above copyright
-00011  *    notice, this list of conditions and the following disclaimer in the
-00012  *    documentation and/or other materials provided with the distribution.
-00013  * 3. Neither the name of the Institute nor the names of its contributors
-00014  *    may be used to endorse or promote products derived from this software
-00015  *    without specific prior written permission.
-00016  *
-00017  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00018  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00019  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00020  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00021  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00022  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00023  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00024  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00025  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00026  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00027  * SUCH DAMAGE.
-00028  *
-00029  * This file is part of the uIP TCP/IP stack
-00030  *
-00031  * Author: Adam Dunkels <adam@sics.se>
-00032  *
-00033  * $Id: uip-split.h,v 1.2 2006/06/12 08:00:30 adam Exp $
-00034  */
-00035 /**
-00036  * \addtogroup uip
-00037  * @{
-00038  */
-00039 
-00040 /**
-00041  * \defgroup uipsplit uIP TCP throughput booster hack
-00042  * @{
-00043  *
-00044  * The basic uIP TCP implementation only allows each TCP connection to
-00045  * have a single TCP segment in flight at any given time. Because of
-00046  * the delayed ACK algorithm employed by most TCP receivers, uIP's
-00047  * limit on the amount of in-flight TCP segments seriously reduces the
-00048  * maximum achievable throughput for sending data from uIP.
-00049  *
-00050  * The uip-split module is a hack which tries to remedy this
-00051  * situation. By splitting maximum sized outgoing TCP segments into
-00052  * two, the delayed ACK algorithm is not invoked at TCP
-00053  * receivers. This improves the throughput when sending data from uIP
-00054  * by orders of magnitude.
-00055  *
-00056  * The uip-split module uses the uip-fw module (uIP IP packet
-00057  * forwarding) for sending packets. Therefore, the uip-fw module must
-00058  * be set up with the appropriate network interfaces for this module
-00059  * to work.
-00060  */
-00061 
-00062 
-00063 /**
-00064  * \file
-00065  * Module for splitting outbound TCP segments in two to avoid the
-00066  * delayed ACK throughput degradation.
-00067  * \author
-00068  * Adam Dunkels <adam@sics.se>
-00069  *
-00070  */
-00071 
-00072 #ifndef __UIP_SPLIT_H__
-00073 #define __UIP_SPLIT_H__
-00074 
-00075 /**
-00076  * Handle outgoing packets.
-00077  *
-00078  * This function inspects an outgoing packet in the uip_buf buffer and
-00079  * sends it out using the uip_fw_output() function. If the packet is a
-00080  * full-sized TCP segment it will be split into two segments and
-00081  * transmitted separately. This function should be called instead of
-00082  * the actual device driver output function, or the uip_fw_output()
-00083  * function.
-00084  *
-00085  * The headers of the outgoing packet is assumed to be in the uip_buf
-00086  * buffer and the payload is assumed to be wherever uip_appdata
-00087  * points. The length of the outgoing packet is assumed to be in the
-00088  * uip_len variable.
-00089  *
-00090  */
-00091 void uip_split_output(void);
-00092 
-00093 #endif /* __UIP_SPLIT_H__ */
-00094 
-00095 /** @} */
-00096 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00201.html b/components/net/uip/doc/html/a00201.html deleted file mode 100644 index bf6878fb74f40f778d5578f6810919db24f8e970..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00201.html +++ /dev/null @@ -1,1922 +0,0 @@ - - -uIP 1.0: uip/uip.c Source File - - - - - - -

uip/uip.c

Go to the documentation of this file.
00001 #define DEBUG_PRINTF(...) /*printf(__VA_ARGS__)*/
-00002 
-00003 /**
-00004  * \defgroup uip The uIP TCP/IP stack
-00005  * @{
-00006  *
-00007  * uIP is an implementation of the TCP/IP protocol stack intended for
-00008  * small 8-bit and 16-bit microcontrollers.
-00009  *
-00010  * uIP provides the necessary protocols for Internet communication,
-00011  * with a very small code footprint and RAM requirements - the uIP
-00012  * code size is on the order of a few kilobytes and RAM usage is on
-00013  * the order of a few hundred bytes.
-00014  */
-00015 
-00016 /**
-00017  * \file
-00018  * The uIP TCP/IP stack code.
-00019  * \author Adam Dunkels <adam@dunkels.com>
-00020  */
-00021 
-00022 /*
-00023  * Copyright (c) 2001-2003, Adam Dunkels.
-00024  * All rights reserved.
-00025  *
-00026  * Redistribution and use in source and binary forms, with or without
-00027  * modification, are permitted provided that the following conditions
-00028  * are met:
-00029  * 1. Redistributions of source code must retain the above copyright
-00030  *    notice, this list of conditions and the following disclaimer.
-00031  * 2. Redistributions in binary form must reproduce the above copyright
-00032  *    notice, this list of conditions and the following disclaimer in the
-00033  *    documentation and/or other materials provided with the distribution.
-00034  * 3. The name of the author may not be used to endorse or promote
-00035  *    products derived from this software without specific prior
-00036  *    written permission.
-00037  *
-00038  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00039  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00040  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00041  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00042  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00043  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00044  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00045  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00046  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00047  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00048  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00049  *
-00050  * This file is part of the uIP TCP/IP stack.
-00051  *
-00052  * $Id: uip.c,v 1.65 2006/06/11 21:46:39 adam Exp $
-00053  *
-00054  */
-00055 
-00056 /*
-00057  * uIP is a small implementation of the IP, UDP and TCP protocols (as
-00058  * well as some basic ICMP stuff). The implementation couples the IP,
-00059  * UDP, TCP and the application layers very tightly. To keep the size
-00060  * of the compiled code down, this code frequently uses the goto
-00061  * statement. While it would be possible to break the uip_process()
-00062  * function into many smaller functions, this would increase the code
-00063  * size because of the overhead of parameter passing and the fact that
-00064  * the optimier would not be as efficient.
-00065  *
-00066  * The principle is that we have a small buffer, called the uip_buf,
-00067  * in which the device driver puts an incoming packet. The TCP/IP
-00068  * stack parses the headers in the packet, and calls the
-00069  * application. If the remote host has sent data to the application,
-00070  * this data is present in the uip_buf and the application read the
-00071  * data from there. It is up to the application to put this data into
-00072  * a byte stream if needed. The application will not be fed with data
-00073  * that is out of sequence.
-00074  *
-00075  * If the application whishes to send data to the peer, it should put
-00076  * its data into the uip_buf. The uip_appdata pointer points to the
-00077  * first available byte. The TCP/IP stack will calculate the
-00078  * checksums, and fill in the necessary header fields and finally send
-00079  * the packet back to the peer.
-00080 */
-00081 
-00082 #include "uip.h"
-00083 #include "uipopt.h"
-00084 #include "uip_arch.h"
-00085 
-00086 #if UIP_CONF_IPV6
-00087 #include "uip-neighbor.h"
-00088 #endif /* UIP_CONF_IPV6 */
-00089 
-00090 #include <string.h>
-00091 
-00092 /*---------------------------------------------------------------------------*/
-00093 /* Variable definitions. */
-00094 
-00095 
-00096 /* The IP address of this host. If it is defined to be fixed (by
-00097    setting UIP_FIXEDADDR to 1 in uipopt.h), the address is set
-00098    here. Otherwise, the address */
-00099 #if UIP_FIXEDADDR > 0
-00100 const uip_ipaddr_t uip_hostaddr =
-00101   {HTONS((UIP_IPADDR0 << 8) | UIP_IPADDR1),
-00102    HTONS((UIP_IPADDR2 << 8) | UIP_IPADDR3)};
-00103 const uip_ipaddr_t uip_draddr =
-00104   {HTONS((UIP_DRIPADDR0 << 8) | UIP_DRIPADDR1),
-00105    HTONS((UIP_DRIPADDR2 << 8) | UIP_DRIPADDR3)};
-00106 const uip_ipaddr_t uip_netmask =
-00107   {HTONS((UIP_NETMASK0 << 8) | UIP_NETMASK1),
-00108    HTONS((UIP_NETMASK2 << 8) | UIP_NETMASK3)};
-00109 #else
-00110 uip_ipaddr_t uip_hostaddr, uip_draddr, uip_netmask;
-00111 #endif /* UIP_FIXEDADDR */
-00112 
-00113 static const uip_ipaddr_t all_ones_addr =
-00114 #if UIP_CONF_IPV6
-00115   {0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff};
-00116 #else /* UIP_CONF_IPV6 */
-00117   {0xffff,0xffff};
-00118 #endif /* UIP_CONF_IPV6 */
-00119 static const uip_ipaddr_t all_zeroes_addr =
-00120 #if UIP_CONF_IPV6
-00121   {0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000};
-00122 #else /* UIP_CONF_IPV6 */
-00123   {0x0000,0x0000};
-00124 #endif /* UIP_CONF_IPV6 */
-00125 
-00126 
-00127 #if UIP_FIXEDETHADDR
-00128 const struct uip_eth_addr uip_ethaddr = {{UIP_ETHADDR0,
-00129                                           UIP_ETHADDR1,
-00130                                           UIP_ETHADDR2,
-00131                                           UIP_ETHADDR3,
-00132                                           UIP_ETHADDR4,
-00133                                           UIP_ETHADDR5}};
-00134 #else
-00135 struct uip_eth_addr uip_ethaddr = {{0,0,0,0,0,0}};
-00136 #endif
-00137 
-00138 #ifndef UIP_CONF_EXTERNAL_BUFFER
-00139 u8_t uip_buf[UIP_BUFSIZE + 2];   /* The packet buffer that contains
-00140                                     incoming packets. */
-00141 #endif /* UIP_CONF_EXTERNAL_BUFFER */
-00142 
-00143 void *uip_appdata;               /* The uip_appdata pointer points to
-00144                                     application data. */
-00145 void *uip_sappdata;              /* The uip_appdata pointer points to
-00146                                     the application data which is to
-00147                                     be sent. */
-00148 #if UIP_URGDATA > 0
-00149 void *uip_urgdata;               /* The uip_urgdata pointer points to
-00150                                     urgent data (out-of-band data), if
-00151                                     present. */
-00152 u16_t uip_urglen, uip_surglen;
-00153 #endif /* UIP_URGDATA > 0 */
-00154 
-00155 u16_t uip_len, uip_slen;
-00156                              /* The uip_len is either 8 or 16 bits,
-00157                                 depending on the maximum packet
-00158                                 size. */
-00159 
-00160 u8_t uip_flags;     /* The uip_flags variable is used for
-00161                                 communication between the TCP/IP stack
-00162                                 and the application program. */
-00163 struct uip_conn *uip_conn;   /* uip_conn always points to the current
-00164                                 connection. */
-00165 
-00166 struct uip_conn uip_conns[UIP_CONNS];
-00167                              /* The uip_conns array holds all TCP
-00168                                 connections. */
-00169 u16_t uip_listenports[UIP_LISTENPORTS];
-00170                              /* The uip_listenports list all currently
-00171                                 listning ports. */
-00172 #if UIP_UDP
-00173 struct uip_udp_conn *uip_udp_conn;
-00174 struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS];
-00175 #endif /* UIP_UDP */
-00176 
-00177 static u16_t ipid;           /* Ths ipid variable is an increasing
-00178                                 number that is used for the IP ID
-00179                                 field. */
-00180 
-00181 void uip_setipid(u16_t id) { ipid = id; }
-00182 
-00183 static u8_t iss[4];          /* The iss variable is used for the TCP
-00184                                 initial sequence number. */
-00185 
-00186 #if UIP_ACTIVE_OPEN
-00187 static u16_t lastport;       /* Keeps track of the last port used for
-00188                                 a new connection. */
-00189 #endif /* UIP_ACTIVE_OPEN */
-00190 
-00191 /* Temporary variables. */
-00192 u8_t uip_acc32[4];
-00193 static u8_t c, opt;
-00194 static u16_t tmp16;
-00195 
-00196 /* Structures and definitions. */
-00197 #define TCP_FIN 0x01
-00198 #define TCP_SYN 0x02
-00199 #define TCP_RST 0x04
-00200 #define TCP_PSH 0x08
-00201 #define TCP_ACK 0x10
-00202 #define TCP_URG 0x20
-00203 #define TCP_CTL 0x3f
-00204 
-00205 #define TCP_OPT_END     0   /* End of TCP options list */
-00206 #define TCP_OPT_NOOP    1   /* "No-operation" TCP option */
-00207 #define TCP_OPT_MSS     2   /* Maximum segment size TCP option */
-00208 
-00209 #define TCP_OPT_MSS_LEN 4   /* Length of TCP MSS option. */
-00210 
-00211 #define ICMP_ECHO_REPLY 0
-00212 #define ICMP_ECHO       8
-00213 
-00214 #define ICMP6_ECHO_REPLY             129
-00215 #define ICMP6_ECHO                   128
-00216 #define ICMP6_NEIGHBOR_SOLICITATION  135
-00217 #define ICMP6_NEIGHBOR_ADVERTISEMENT 136
-00218 
-00219 #define ICMP6_FLAG_S (1 << 6)
-00220 
-00221 #define ICMP6_OPTION_SOURCE_LINK_ADDRESS 1
-00222 #define ICMP6_OPTION_TARGET_LINK_ADDRESS 2
-00223 
-00224 
-00225 /* Macros. */
-00226 #define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN])
-00227 #define FBUF ((struct uip_tcpip_hdr *)&uip_reassbuf[0])
-00228 #define ICMPBUF ((struct uip_icmpip_hdr *)&uip_buf[UIP_LLH_LEN])
-00229 #define UDPBUF ((struct uip_udpip_hdr *)&uip_buf[UIP_LLH_LEN])
-00230 
-00231 
-00232 #if UIP_STATISTICS == 1
-00233 struct uip_stats uip_stat;
-00234 #define UIP_STAT(s) s
-00235 #else
-00236 #define UIP_STAT(s)
-00237 #endif /* UIP_STATISTICS == 1 */
-00238 
-00239 #if UIP_LOGGING == 1
-00240 #include <stdio.h>
-00241 void uip_log(char *msg);
-00242 #define UIP_LOG(m) uip_log(m)
-00243 #else
-00244 #define UIP_LOG(m)
-00245 #endif /* UIP_LOGGING == 1 */
-00246 
-00247 #if ! UIP_ARCH_ADD32
-00248 void
-00249 uip_add32(u8_t *op32, u16_t op16)
-00250 {
-00251   uip_acc32[3] = op32[3] + (op16 & 0xff);
-00252   uip_acc32[2] = op32[2] + (op16 >> 8);
-00253   uip_acc32[1] = op32[1];
-00254   uip_acc32[0] = op32[0];
-00255   
-00256   if(uip_acc32[2] < (op16 >> 8)) {
-00257     ++uip_acc32[1];
-00258     if(uip_acc32[1] == 0) {
-00259       ++uip_acc32[0];
-00260     }
-00261   }
-00262   
-00263   
-00264   if(uip_acc32[3] < (op16 & 0xff)) {
-00265     ++uip_acc32[2];
-00266     if(uip_acc32[2] == 0) {
-00267       ++uip_acc32[1];
-00268       if(uip_acc32[1] == 0) {
-00269         ++uip_acc32[0];
-00270       }
-00271     }
-00272   }
-00273 }
-00274 
-00275 #endif /* UIP_ARCH_ADD32 */
-00276 
-00277 #if ! UIP_ARCH_CHKSUM
-00278 /*---------------------------------------------------------------------------*/
-00279 static u16_t
-00280 chksum(u16_t sum, const u8_t *data, u16_t len)
-00281 {
-00282   u16_t t;
-00283   const u8_t *dataptr;
-00284   const u8_t *last_byte;
-00285 
-00286   dataptr = data;
-00287   last_byte = data + len - 1;
-00288   
-00289   while(dataptr < last_byte) {  /* At least two more bytes */
-00290     t = (dataptr[0] << 8) + dataptr[1];
-00291     sum += t;
-00292     if(sum < t) {
-00293       sum++;            /* carry */
-00294     }
-00295     dataptr += 2;
-00296   }
-00297   
-00298   if(dataptr == last_byte) {
-00299     t = (dataptr[0] << 8) + 0;
-00300     sum += t;
-00301     if(sum < t) {
-00302       sum++;            /* carry */
-00303     }
-00304   }
-00305 
-00306   /* Return sum in host byte order. */
-00307   return sum;
-00308 }
-00309 /*---------------------------------------------------------------------------*/
-00310 u16_t
-00311 uip_chksum(u16_t *data, u16_t len)
-00312 {
-00313   return htons(chksum(0, (u8_t *)data, len));
-00314 }
-00315 /*---------------------------------------------------------------------------*/
-00316 #ifndef UIP_ARCH_IPCHKSUM
-00317 u16_t
-00318 uip_ipchksum(void)
-00319 {
-00320   u16_t sum;
-00321 
-00322   sum = chksum(0, &uip_buf[UIP_LLH_LEN], UIP_IPH_LEN);
-00323   DEBUG_PRINTF("uip_ipchksum: sum 0x%04x\n", sum);
-00324   return (sum == 0) ? 0xffff : htons(sum);
-00325 }
-00326 #endif
-00327 /*---------------------------------------------------------------------------*/
-00328 static u16_t
-00329 upper_layer_chksum(u8_t proto)
-00330 {
-00331   u16_t upper_layer_len;
-00332   u16_t sum;
-00333   
-00334 #if UIP_CONF_IPV6
-00335   upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]);
-00336 #else /* UIP_CONF_IPV6 */
-00337   upper_layer_len = (((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - UIP_IPH_LEN;
-00338 #endif /* UIP_CONF_IPV6 */
-00339   
-00340   /* First sum pseudoheader. */
-00341   
-00342   /* IP protocol and length fields. This addition cannot carry. */
-00343   sum = upper_layer_len + proto;
-00344   /* Sum IP source and destination addresses. */
-00345   sum = chksum(sum, (u8_t *)&BUF->srcipaddr[0], 2 * sizeof(uip_ipaddr_t));
-00346 
-00347   /* Sum TCP header and data. */
-00348   sum = chksum(sum, &uip_buf[UIP_IPH_LEN + UIP_LLH_LEN],
-00349                upper_layer_len);
-00350     
-00351   return (sum == 0) ? 0xffff : htons(sum);
-00352 }
-00353 /*---------------------------------------------------------------------------*/
-00354 #if UIP_CONF_IPV6
-00355 u16_t
-00356 uip_icmp6chksum(void)
-00357 {
-00358   return upper_layer_chksum(UIP_PROTO_ICMP6);
-00359   
-00360 }
-00361 #endif /* UIP_CONF_IPV6 */
-00362 /*---------------------------------------------------------------------------*/
-00363 u16_t
-00364 uip_tcpchksum(void)
-00365 {
-00366   return upper_layer_chksum(UIP_PROTO_TCP);
-00367 }
-00368 /*---------------------------------------------------------------------------*/
-00369 #if UIP_UDP_CHECKSUMS
-00370 u16_t
-00371 uip_udpchksum(void)
-00372 {
-00373   return upper_layer_chksum(UIP_PROTO_UDP);
-00374 }
-00375 #endif /* UIP_UDP_CHECKSUMS */
-00376 #endif /* UIP_ARCH_CHKSUM */
-00377 /*---------------------------------------------------------------------------*/
-00378 void
-00379 uip_init(void)
-00380 {
-00381   for(c = 0; c < UIP_LISTENPORTS; ++c) {
-00382     uip_listenports[c] = 0;
-00383   }
-00384   for(c = 0; c < UIP_CONNS; ++c) {
-00385     uip_conns[c].tcpstateflags = UIP_CLOSED;
-00386   }
-00387 #if UIP_ACTIVE_OPEN
-00388   lastport = 1024;
-00389 #endif /* UIP_ACTIVE_OPEN */
-00390 
-00391 #if UIP_UDP
-00392   for(c = 0; c < UIP_UDP_CONNS; ++c) {
-00393     uip_udp_conns[c].lport = 0;
-00394   }
-00395 #endif /* UIP_UDP */
-00396   
-00397 
-00398   /* IPv4 initialization. */
-00399 #if UIP_FIXEDADDR == 0
-00400   /*  uip_hostaddr[0] = uip_hostaddr[1] = 0;*/
-00401 #endif /* UIP_FIXEDADDR */
-00402 
-00403 }
-00404 /*---------------------------------------------------------------------------*/
-00405 #if UIP_ACTIVE_OPEN
-00406 struct uip_conn *
-00407 uip_connect(uip_ipaddr_t *ripaddr, u16_t rport)
-00408 {
-00409   register struct uip_conn *conn, *cconn;
-00410   
-00411   /* Find an unused local port. */
-00412  again:
-00413   ++lastport;
-00414 
-00415   if(lastport >= 32000) {
-00416     lastport = 4096;
-00417   }
-00418 
-00419   /* Check if this port is already in use, and if so try to find
-00420      another one. */
-00421   for(c = 0; c < UIP_CONNS; ++c) {
-00422     conn = &uip_conns[c];
-00423     if(conn->tcpstateflags != UIP_CLOSED &&
-00424        conn->lport == htons(lastport)) {
-00425       goto again;
-00426     }
-00427   }
-00428 
-00429   conn = 0;
-00430   for(c = 0; c < UIP_CONNS; ++c) {
-00431     cconn = &uip_conns[c];
-00432     if(cconn->tcpstateflags == UIP_CLOSED) {
-00433       conn = cconn;
-00434       break;
-00435     }
-00436     if(cconn->tcpstateflags == UIP_TIME_WAIT) {
-00437       if(conn == 0 ||
-00438          cconn->timer > conn->timer) {
-00439         conn = cconn;
-00440       }
-00441     }
-00442   }
-00443 
-00444   if(conn == 0) {
-00445     return 0;
-00446   }
-00447   
-00448   conn->tcpstateflags = UIP_SYN_SENT;
-00449 
-00450   conn->snd_nxt[0] = iss[0];
-00451   conn->snd_nxt[1] = iss[1];
-00452   conn->snd_nxt[2] = iss[2];
-00453   conn->snd_nxt[3] = iss[3];
-00454 
-00455   conn->initialmss = conn->mss = UIP_TCP_MSS;
-00456   
-00457   conn->len = 1;   /* TCP length of the SYN is one. */
-00458   conn->nrtx = 0;
-00459   conn->timer = 1; /* Send the SYN next time around. */
-00460   conn->rto = UIP_RTO;
-00461   conn->sa = 0;
-00462   conn->sv = 16;   /* Initial value of the RTT variance. */
-00463   conn->lport = htons(lastport);
-00464   conn->rport = rport;
-00465   uip_ipaddr_copy(&conn->ripaddr, ripaddr);
-00466   
-00467   return conn;
-00468 }
-00469 #endif /* UIP_ACTIVE_OPEN */
-00470 /*---------------------------------------------------------------------------*/
-00471 #if UIP_UDP
-00472 struct uip_udp_conn *
-00473 uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport)
-00474 {
-00475   register struct uip_udp_conn *conn;
-00476   
-00477   /* Find an unused local port. */
-00478  again:
-00479   ++lastport;
-00480 
-00481   if(lastport >= 32000) {
-00482     lastport = 4096;
-00483   }
-00484   
-00485   for(c = 0; c < UIP_UDP_CONNS; ++c) {
-00486     if(uip_udp_conns[c].lport == htons(lastport)) {
-00487       goto again;
-00488     }
-00489   }
-00490 
-00491 
-00492   conn = 0;
-00493   for(c = 0; c < UIP_UDP_CONNS; ++c) {
-00494     if(uip_udp_conns[c].lport == 0) {
-00495       conn = &uip_udp_conns[c];
-00496       break;
-00497     }
-00498   }
-00499 
-00500   if(conn == 0) {
-00501     return 0;
-00502   }
-00503   
-00504   conn->lport = HTONS(lastport);
-00505   conn->rport = rport;
-00506   if(ripaddr == NULL) {
-00507     memset(conn->ripaddr, 0, sizeof(uip_ipaddr_t));
-00508   } else {
-00509     uip_ipaddr_copy(&conn->ripaddr, ripaddr);
-00510   }
-00511   conn->ttl = UIP_TTL;
-00512   
-00513   return conn;
-00514 }
-00515 #endif /* UIP_UDP */
-00516 /*---------------------------------------------------------------------------*/
-00517 void
-00518 uip_unlisten(u16_t port)
-00519 {
-00520   for(c = 0; c < UIP_LISTENPORTS; ++c) {
-00521     if(uip_listenports[c] == port) {
-00522       uip_listenports[c] = 0;
-00523       return;
-00524     }
-00525   }
-00526 }
-00527 /*---------------------------------------------------------------------------*/
-00528 void
-00529 uip_listen(u16_t port)
-00530 {
-00531   for(c = 0; c < UIP_LISTENPORTS; ++c) {
-00532     if(uip_listenports[c] == 0) {
-00533       uip_listenports[c] = port;
-00534       return;
-00535     }
-00536   }
-00537 }
-00538 /*---------------------------------------------------------------------------*/
-00539 /* XXX: IP fragment reassembly: not well-tested. */
-00540 
-00541 #if UIP_REASSEMBLY && !UIP_CONF_IPV6
-00542 #define UIP_REASS_BUFSIZE (UIP_BUFSIZE - UIP_LLH_LEN)
-00543 static u8_t uip_reassbuf[UIP_REASS_BUFSIZE];
-00544 static u8_t uip_reassbitmap[UIP_REASS_BUFSIZE / (8 * 8)];
-00545 static const u8_t bitmap_bits[8] = {0xff, 0x7f, 0x3f, 0x1f,
-00546                                     0x0f, 0x07, 0x03, 0x01};
-00547 static u16_t uip_reasslen;
-00548 static u8_t uip_reassflags;
-00549 #define UIP_REASS_FLAG_LASTFRAG 0x01
-00550 static u8_t uip_reasstmr;
-00551 
-00552 #define IP_MF   0x20
-00553 
-00554 static u8_t
-00555 uip_reass(void)
-00556 {
-00557   u16_t offset, len;
-00558   u16_t i;
-00559 
-00560   /* If ip_reasstmr is zero, no packet is present in the buffer, so we
-00561      write the IP header of the fragment into the reassembly
-00562      buffer. The timer is updated with the maximum age. */
-00563   if(uip_reasstmr == 0) {
-00564     memcpy(uip_reassbuf, &BUF->vhl, UIP_IPH_LEN);
-00565     uip_reasstmr = UIP_REASS_MAXAGE;
-00566     uip_reassflags = 0;
-00567     /* Clear the bitmap. */
-00568     memset(uip_reassbitmap, 0, sizeof(uip_reassbitmap));
-00569   }
-00570 
-00571   /* Check if the incoming fragment matches the one currently present
-00572      in the reasembly buffer. If so, we proceed with copying the
-00573      fragment into the buffer. */
-00574   if(BUF->srcipaddr[0] == FBUF->srcipaddr[0] &&
-00575      BUF->srcipaddr[1] == FBUF->srcipaddr[1] &&
-00576      BUF->destipaddr[0] == FBUF->destipaddr[0] &&
-00577      BUF->destipaddr[1] == FBUF->destipaddr[1] &&
-00578      BUF->ipid[0] == FBUF->ipid[0] &&
-00579      BUF->ipid[1] == FBUF->ipid[1]) {
-00580 
-00581     len = (BUF->len[0] << 8) + BUF->len[1] - (BUF->vhl & 0x0f) * 4;
-00582     offset = (((BUF->ipoffset[0] & 0x3f) << 8) + BUF->ipoffset[1]) * 8;
-00583 
-00584     /* If the offset or the offset + fragment length overflows the
-00585        reassembly buffer, we discard the entire packet. */
-00586     if(offset > UIP_REASS_BUFSIZE ||
-00587        offset + len > UIP_REASS_BUFSIZE) {
-00588       uip_reasstmr = 0;
-00589       goto nullreturn;
-00590     }
-00591 
-00592     /* Copy the fragment into the reassembly buffer, at the right
-00593        offset. */
-00594     memcpy(&uip_reassbuf[UIP_IPH_LEN + offset],
-00595            (char *)BUF + (int)((BUF->vhl & 0x0f) * 4),
-00596            len);
-00597       
-00598     /* Update the bitmap. */
-00599     if(offset / (8 * 8) == (offset + len) / (8 * 8)) {
-00600       /* If the two endpoints are in the same byte, we only update
-00601          that byte. */
-00602              
-00603       uip_reassbitmap[offset / (8 * 8)] |=
-00604              bitmap_bits[(offset / 8 ) & 7] &
-00605              ~bitmap_bits[((offset + len) / 8 ) & 7];
-00606     } else {
-00607       /* If the two endpoints are in different bytes, we update the
-00608          bytes in the endpoints and fill the stuff inbetween with
-00609          0xff. */
-00610       uip_reassbitmap[offset / (8 * 8)] |=
-00611         bitmap_bits[(offset / 8 ) & 7];
-00612       for(i = 1 + offset / (8 * 8); i < (offset + len) / (8 * 8); ++i) {
-00613         uip_reassbitmap[i] = 0xff;
-00614       }
-00615       uip_reassbitmap[(offset + len) / (8 * 8)] |=
-00616         ~bitmap_bits[((offset + len) / 8 ) & 7];
-00617     }
-00618     
-00619     /* If this fragment has the More Fragments flag set to zero, we
-00620        know that this is the last fragment, so we can calculate the
-00621        size of the entire packet. We also set the
-00622        IP_REASS_FLAG_LASTFRAG flag to indicate that we have received
-00623        the final fragment. */
-00624 
-00625     if((BUF->ipoffset[0] & IP_MF) == 0) {
-00626       uip_reassflags |= UIP_REASS_FLAG_LASTFRAG;
-00627       uip_reasslen = offset + len;
-00628     }
-00629     
-00630     /* Finally, we check if we have a full packet in the buffer. We do
-00631        this by checking if we have the last fragment and if all bits
-00632        in the bitmap are set. */
-00633     if(uip_reassflags & UIP_REASS_FLAG_LASTFRAG) {
-00634       /* Check all bytes up to and including all but the last byte in
-00635          the bitmap. */
-00636       for(i = 0; i < uip_reasslen / (8 * 8) - 1; ++i) {
-00637         if(uip_reassbitmap[i] != 0xff) {
-00638           goto nullreturn;
-00639         }
-00640       }
-00641       /* Check the last byte in the bitmap. It should contain just the
-00642          right amount of bits. */
-00643       if(uip_reassbitmap[uip_reasslen / (8 * 8)] !=
-00644          (u8_t)~bitmap_bits[uip_reasslen / 8 & 7]) {
-00645         goto nullreturn;
-00646       }
-00647 
-00648       /* If we have come this far, we have a full packet in the
-00649          buffer, so we allocate a pbuf and copy the packet into it. We
-00650          also reset the timer. */
-00651       uip_reasstmr = 0;
-00652       memcpy(BUF, FBUF, uip_reasslen);
-00653 
-00654       /* Pretend to be a "normal" (i.e., not fragmented) IP packet
-00655          from now on. */
-00656       BUF->ipoffset[0] = BUF->ipoffset[1] = 0;
-00657       BUF->len[0] = uip_reasslen >> 8;
-00658       BUF->len[1] = uip_reasslen & 0xff;
-00659       BUF->ipchksum = 0;
-00660       BUF->ipchksum = ~(uip_ipchksum());
-00661 
-00662       return uip_reasslen;
-00663     }
-00664   }
-00665 
-00666  nullreturn:
-00667   return 0;
-00668 }
-00669 #endif /* UIP_REASSEMBLY */
-00670 /*---------------------------------------------------------------------------*/
-00671 static void
-00672 uip_add_rcv_nxt(u16_t n)
-00673 {
-00674   uip_add32(uip_conn->rcv_nxt, n);
-00675   uip_conn->rcv_nxt[0] = uip_acc32[0];
-00676   uip_conn->rcv_nxt[1] = uip_acc32[1];
-00677   uip_conn->rcv_nxt[2] = uip_acc32[2];
-00678   uip_conn->rcv_nxt[3] = uip_acc32[3];
-00679 }
-00680 /*---------------------------------------------------------------------------*/
-00681 void
-00682 uip_process(u8_t flag)
-00683 {
-00684   register struct uip_conn *uip_connr = uip_conn;
-00685 
-00686 #if UIP_UDP
-00687   if(flag == UIP_UDP_SEND_CONN) {
-00688     goto udp_send;
-00689   }
-00690 #endif /* UIP_UDP */
-00691   
-00692   uip_sappdata = uip_appdata = &uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN];
-00693 
-00694   /* Check if we were invoked because of a poll request for a
-00695      particular connection. */
-00696   if(flag == UIP_POLL_REQUEST) {
-00697     if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED &&
-00698        !uip_outstanding(uip_connr)) {
-00699         uip_flags = UIP_POLL;
-00700         UIP_APPCALL();
-00701         goto appsend;
-00702     }
-00703     goto drop;
-00704     
-00705     /* Check if we were invoked because of the perodic timer fireing. */
-00706   } else if(flag == UIP_TIMER) {
-00707 #if UIP_REASSEMBLY
-00708     if(uip_reasstmr != 0) {
-00709       --uip_reasstmr;
-00710     }
-00711 #endif /* UIP_REASSEMBLY */
-00712     /* Increase the initial sequence number. */
-00713     if(++iss[3] == 0) {
-00714       if(++iss[2] == 0) {
-00715         if(++iss[1] == 0) {
-00716           ++iss[0];
-00717         }
-00718       }
-00719     }
-00720 
-00721     /* Reset the length variables. */
-00722     uip_len = 0;
-00723     uip_slen = 0;
-00724 
-00725     /* Check if the connection is in a state in which we simply wait
-00726        for the connection to time out. If so, we increase the
-00727        connection's timer and remove the connection if it times
-00728        out. */
-00729     if(uip_connr->tcpstateflags == UIP_TIME_WAIT ||
-00730        uip_connr->tcpstateflags == UIP_FIN_WAIT_2) {
-00731       ++(uip_connr->timer);
-00732       if(uip_connr->timer == UIP_TIME_WAIT_TIMEOUT) {
-00733         uip_connr->tcpstateflags = UIP_CLOSED;
-00734       }
-00735     } else if(uip_connr->tcpstateflags != UIP_CLOSED) {
-00736       /* If the connection has outstanding data, we increase the
-00737          connection's timer and see if it has reached the RTO value
-00738          in which case we retransmit. */
-00739       if(uip_outstanding(uip_connr)) {
-00740         if(uip_connr->timer-- == 0) {
-00741           if(uip_connr->nrtx == UIP_MAXRTX ||
-00742              ((uip_connr->tcpstateflags == UIP_SYN_SENT ||
-00743                uip_connr->tcpstateflags == UIP_SYN_RCVD) &&
-00744               uip_connr->nrtx == UIP_MAXSYNRTX)) {
-00745             uip_connr->tcpstateflags = UIP_CLOSED;
-00746 
-00747             /* We call UIP_APPCALL() with uip_flags set to
-00748                UIP_TIMEDOUT to inform the application that the
-00749                connection has timed out. */
-00750             uip_flags = UIP_TIMEDOUT;
-00751             UIP_APPCALL();
-00752 
-00753             /* We also send a reset packet to the remote host. */
-00754             BUF->flags = TCP_RST | TCP_ACK;
-00755             goto tcp_send_nodata;
-00756           }
-00757 
-00758           /* Exponential backoff. */
-00759           uip_connr->timer = UIP_RTO << (uip_connr->nrtx > 4?
-00760                                          4:
-00761                                          uip_connr->nrtx);
-00762           ++(uip_connr->nrtx);
-00763           
-00764           /* Ok, so we need to retransmit. We do this differently
-00765              depending on which state we are in. In ESTABLISHED, we
-00766              call upon the application so that it may prepare the
-00767              data for the retransmit. In SYN_RCVD, we resend the
-00768              SYNACK that we sent earlier and in LAST_ACK we have to
-00769              retransmit our FINACK. */
-00770           UIP_STAT(++uip_stat.tcp.rexmit);
-00771           switch(uip_connr->tcpstateflags & UIP_TS_MASK) {
-00772           case UIP_SYN_RCVD:
-00773             /* In the SYN_RCVD state, we should retransmit our
-00774                SYNACK. */
-00775             goto tcp_send_synack;
-00776             
-00777 #if UIP_ACTIVE_OPEN
-00778           case UIP_SYN_SENT:
-00779             /* In the SYN_SENT state, we retransmit out SYN. */
-00780             BUF->flags = 0;
-00781             goto tcp_send_syn;
-00782 #endif /* UIP_ACTIVE_OPEN */
-00783             
-00784           case UIP_ESTABLISHED:
-00785             /* In the ESTABLISHED state, we call upon the application
-00786                to do the actual retransmit after which we jump into
-00787                the code for sending out the packet (the apprexmit
-00788                label). */
-00789             uip_flags = UIP_REXMIT;
-00790             UIP_APPCALL();
-00791             goto apprexmit;
-00792             
-00793           case UIP_FIN_WAIT_1:
-00794           case UIP_CLOSING:
-00795           case UIP_LAST_ACK:
-00796             /* In all these states we should retransmit a FINACK. */
-00797             goto tcp_send_finack;
-00798             
-00799           }
-00800         }
-00801       } else if((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_ESTABLISHED) {
-00802         /* If there was no need for a retransmission, we poll the
-00803            application for new data. */
-00804         uip_flags = UIP_POLL;
-00805         UIP_APPCALL();
-00806         goto appsend;
-00807       }
-00808     }
-00809     goto drop;
-00810   }
-00811 #if UIP_UDP
-00812   if(flag == UIP_UDP_TIMER) {
-00813     if(uip_udp_conn->lport != 0) {
-00814       uip_conn = NULL;
-00815       uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
-00816       uip_len = uip_slen = 0;
-00817       uip_flags = UIP_POLL;
-00818       UIP_UDP_APPCALL();
-00819       goto udp_send;
-00820     } else {
-00821       goto drop;
-00822     }
-00823   }
-00824 #endif
-00825 
-00826   /* This is where the input processing starts. */
-00827   UIP_STAT(++uip_stat.ip.recv);
-00828 
-00829   /* Start of IP input header processing code. */
-00830   
-00831 #if UIP_CONF_IPV6
-00832   /* Check validity of the IP header. */
-00833   if((BUF->vtc & 0xf0) != 0x60)  { /* IP version and header length. */
-00834     UIP_STAT(++uip_stat.ip.drop);
-00835     UIP_STAT(++uip_stat.ip.vhlerr);
-00836     UIP_LOG("ipv6: invalid version.");
-00837     goto drop;
-00838   }
-00839 #else /* UIP_CONF_IPV6 */
-00840   /* Check validity of the IP header. */
-00841   if(BUF->vhl != 0x45)  { /* IP version and header length. */
-00842     UIP_STAT(++uip_stat.ip.drop);
-00843     UIP_STAT(++uip_stat.ip.vhlerr);
-00844     UIP_LOG("ip: invalid version or header length.");
-00845     goto drop;
-00846   }
-00847 #endif /* UIP_CONF_IPV6 */
-00848   
-00849   /* Check the size of the packet. If the size reported to us in
-00850      uip_len is smaller the size reported in the IP header, we assume
-00851      that the packet has been corrupted in transit. If the size of
-00852      uip_len is larger than the size reported in the IP packet header,
-00853      the packet has been padded and we set uip_len to the correct
-00854      value.. */
-00855 
-00856   if((BUF->len[0] << 8) + BUF->len[1] <= uip_len) {
-00857     uip_len = (BUF->len[0] << 8) + BUF->len[1];
-00858 #if UIP_CONF_IPV6
-00859     uip_len += 40; /* The length reported in the IPv6 header is the
-00860                       length of the payload that follows the
-00861                       header. However, uIP uses the uip_len variable
-00862                       for holding the size of the entire packet,
-00863                       including the IP header. For IPv4 this is not a
-00864                       problem as the length field in the IPv4 header
-00865                       contains the length of the entire packet. But
-00866                       for IPv6 we need to add the size of the IPv6
-00867                       header (40 bytes). */
-00868 #endif /* UIP_CONF_IPV6 */
-00869   } else {
-00870     UIP_LOG("ip: packet shorter than reported in IP header.");
-00871     goto drop;
-00872   }
-00873 
-00874 #if !UIP_CONF_IPV6
-00875   /* Check the fragment flag. */
-00876   if((BUF->ipoffset[0] & 0x3f) != 0 ||
-00877      BUF->ipoffset[1] != 0) {
-00878 #if UIP_REASSEMBLY
-00879     uip_len = uip_reass();
-00880     if(uip_len == 0) {
-00881       goto drop;
-00882     }
-00883 #else /* UIP_REASSEMBLY */
-00884     UIP_STAT(++uip_stat.ip.drop);
-00885     UIP_STAT(++uip_stat.ip.fragerr);
-00886     UIP_LOG("ip: fragment dropped.");
-00887     goto drop;
-00888 #endif /* UIP_REASSEMBLY */
-00889   }
-00890 #endif /* UIP_CONF_IPV6 */
-00891 
-00892   if(uip_ipaddr_cmp(uip_hostaddr, all_zeroes_addr)) {
-00893     /* If we are configured to use ping IP address configuration and
-00894        hasn't been assigned an IP address yet, we accept all ICMP
-00895        packets. */
-00896 #if UIP_PINGADDRCONF && !UIP_CONF_IPV6
-00897     if(BUF->proto == UIP_PROTO_ICMP) {
-00898       UIP_LOG("ip: possible ping config packet received.");
-00899       goto icmp_input;
-00900     } else {
-00901       UIP_LOG("ip: packet dropped since no address assigned.");
-00902       goto drop;
-00903     }
-00904 #endif /* UIP_PINGADDRCONF */
-00905 
-00906   } else {
-00907     /* If IP broadcast support is configured, we check for a broadcast
-00908        UDP packet, which may be destined to us. */
-00909 #if UIP_BROADCAST
-00910     DEBUG_PRINTF("UDP IP checksum 0x%04x\n", uip_ipchksum());
-00911     if(BUF->proto == UIP_PROTO_UDP &&
-00912        uip_ipaddr_cmp(BUF->destipaddr, all_ones_addr)
-00913        /*&&
-00914          uip_ipchksum() == 0xffff*/) {
-00915       goto udp_input;
-00916     }
-00917 #endif /* UIP_BROADCAST */
-00918     
-00919     /* Check if the packet is destined for our IP address. */
-00920 #if !UIP_CONF_IPV6
-00921     if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr)) {
-00922       UIP_STAT(++uip_stat.ip.drop);
-00923       goto drop;
-00924     }
-00925 #else /* UIP_CONF_IPV6 */
-00926     /* For IPv6, packet reception is a little trickier as we need to
-00927        make sure that we listen to certain multicast addresses (all
-00928        hosts multicast address, and the solicited-node multicast
-00929        address) as well. However, we will cheat here and accept all
-00930        multicast packets that are sent to the ff02::/16 addresses. */
-00931     if(!uip_ipaddr_cmp(BUF->destipaddr, uip_hostaddr) &&
-00932        BUF->destipaddr[0] != HTONS(0xff02)) {
-00933       UIP_STAT(++uip_stat.ip.drop);
-00934       goto drop;
-00935     }
-00936 #endif /* UIP_CONF_IPV6 */
-00937   }
-00938 
-00939 #if !UIP_CONF_IPV6
-00940   if(uip_ipchksum() != 0xffff) { /* Compute and check the IP header
-00941                                     checksum. */
-00942     UIP_STAT(++uip_stat.ip.drop);
-00943     UIP_STAT(++uip_stat.ip.chkerr);
-00944     UIP_LOG("ip: bad checksum.");
-00945     goto drop;
-00946   }
-00947 #endif /* UIP_CONF_IPV6 */
-00948 
-00949   if(BUF->proto == UIP_PROTO_TCP) { /* Check for TCP packet. If so,
-00950                                        proceed with TCP input
-00951                                        processing. */
-00952     goto tcp_input;
-00953   }
-00954 
-00955 #if UIP_UDP
-00956   if(BUF->proto == UIP_PROTO_UDP) {
-00957     goto udp_input;
-00958   }
-00959 #endif /* UIP_UDP */
-00960 
-00961 #if !UIP_CONF_IPV6
-00962   /* ICMPv4 processing code follows. */
-00963   if(BUF->proto != UIP_PROTO_ICMP) { /* We only allow ICMP packets from
-00964                                         here. */
-00965     UIP_STAT(++uip_stat.ip.drop);
-00966     UIP_STAT(++uip_stat.ip.protoerr);
-00967     UIP_LOG("ip: neither tcp nor icmp.");
-00968     goto drop;
-00969   }
-00970 
-00971 #if UIP_PINGADDRCONF
-00972  icmp_input:
-00973 #endif /* UIP_PINGADDRCONF */
-00974   UIP_STAT(++uip_stat.icmp.recv);
-00975 
-00976   /* ICMP echo (i.e., ping) processing. This is simple, we only change
-00977      the ICMP type from ECHO to ECHO_REPLY and adjust the ICMP
-00978      checksum before we return the packet. */
-00979   if(ICMPBUF->type != ICMP_ECHO) {
-00980     UIP_STAT(++uip_stat.icmp.drop);
-00981     UIP_STAT(++uip_stat.icmp.typeerr);
-00982     UIP_LOG("icmp: not icmp echo.");
-00983     goto drop;
-00984   }
-00985 
-00986   /* If we are configured to use ping IP address assignment, we use
-00987      the destination IP address of this ping packet and assign it to
-00988      ourself. */
-00989 #if UIP_PINGADDRCONF
-00990   if((uip_hostaddr[0] | uip_hostaddr[1]) == 0) {
-00991     uip_hostaddr[0] = BUF->destipaddr[0];
-00992     uip_hostaddr[1] = BUF->destipaddr[1];
-00993   }
-00994 #endif /* UIP_PINGADDRCONF */
-00995 
-00996   ICMPBUF->type = ICMP_ECHO_REPLY;
-00997 
-00998   if(ICMPBUF->icmpchksum >= HTONS(0xffff - (ICMP_ECHO << 8))) {
-00999     ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8) + 1;
-01000   } else {
-01001     ICMPBUF->icmpchksum += HTONS(ICMP_ECHO << 8);
-01002   }
-01003 
-01004   /* Swap IP addresses. */
-01005   uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
-01006   uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
-01007 
-01008   UIP_STAT(++uip_stat.icmp.sent);
-01009   goto send;
-01010 
-01011   /* End of IPv4 input header processing code. */
-01012 #else /* !UIP_CONF_IPV6 */
-01013 
-01014   /* This is IPv6 ICMPv6 processing code. */
-01015   DEBUG_PRINTF("icmp6_input: length %d\n", uip_len);
-01016 
-01017   if(BUF->proto != UIP_PROTO_ICMP6) { /* We only allow ICMPv6 packets from
-01018                                          here. */
-01019     UIP_STAT(++uip_stat.ip.drop);
-01020     UIP_STAT(++uip_stat.ip.protoerr);
-01021     UIP_LOG("ip: neither tcp nor icmp6.");
-01022     goto drop;
-01023   }
-01024 
-01025   UIP_STAT(++uip_stat.icmp.recv);
-01026 
-01027   /* If we get a neighbor solicitation for our address we should send
-01028      a neighbor advertisement message back. */
-01029   if(ICMPBUF->type == ICMP6_NEIGHBOR_SOLICITATION) {
-01030     if(uip_ipaddr_cmp(ICMPBUF->icmp6data, uip_hostaddr)) {
-01031 
-01032       if(ICMPBUF->options[0] == ICMP6_OPTION_SOURCE_LINK_ADDRESS) {
-01033         /* Save the sender's address in our neighbor list. */
-01034         uip_neighbor_add(ICMPBUF->srcipaddr, &(ICMPBUF->options[2]));
-01035       }
-01036       
-01037       /* We should now send a neighbor advertisement back to where the
-01038          neighbor solicication came from. */
-01039       ICMPBUF->type = ICMP6_NEIGHBOR_ADVERTISEMENT;
-01040       ICMPBUF->flags = ICMP6_FLAG_S; /* Solicited flag. */
-01041       
-01042       ICMPBUF->reserved1 = ICMPBUF->reserved2 = ICMPBUF->reserved3 = 0;
-01043       
-01044       uip_ipaddr_copy(ICMPBUF->destipaddr, ICMPBUF->srcipaddr);
-01045       uip_ipaddr_copy(ICMPBUF->srcipaddr, uip_hostaddr);
-01046       ICMPBUF->options[0] = ICMP6_OPTION_TARGET_LINK_ADDRESS;
-01047       ICMPBUF->options[1] = 1;  /* Options length, 1 = 8 bytes. */
-01048       memcpy(&(ICMPBUF->options[2]), &uip_ethaddr, sizeof(uip_ethaddr));
-01049       ICMPBUF->icmpchksum = 0;
-01050       ICMPBUF->icmpchksum = ~uip_icmp6chksum();
-01051       goto send;
-01052       
-01053     }
-01054     goto drop;
-01055   } else if(ICMPBUF->type == ICMP6_ECHO) {
-01056     /* ICMP echo (i.e., ping) processing. This is simple, we only
-01057        change the ICMP type from ECHO to ECHO_REPLY and update the
-01058        ICMP checksum before we return the packet. */
-01059 
-01060     ICMPBUF->type = ICMP6_ECHO_REPLY;
-01061     
-01062     uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
-01063     uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
-01064     ICMPBUF->icmpchksum = 0;
-01065     ICMPBUF->icmpchksum = ~uip_icmp6chksum();
-01066     
-01067     UIP_STAT(++uip_stat.icmp.sent);
-01068     goto send;
-01069   } else {
-01070     DEBUG_PRINTF("Unknown icmp6 message type %d\n", ICMPBUF->type);
-01071     UIP_STAT(++uip_stat.icmp.drop);
-01072     UIP_STAT(++uip_stat.icmp.typeerr);
-01073     UIP_LOG("icmp: unknown ICMP message.");
-01074     goto drop;
-01075   }
-01076 
-01077   /* End of IPv6 ICMP processing. */
-01078   
-01079 #endif /* !UIP_CONF_IPV6 */
-01080 
-01081 #if UIP_UDP
-01082   /* UDP input processing. */
-01083  udp_input:
-01084   /* UDP processing is really just a hack. We don't do anything to the
-01085      UDP/IP headers, but let the UDP application do all the hard
-01086      work. If the application sets uip_slen, it has a packet to
-01087      send. */
-01088 #if UIP_UDP_CHECKSUMS
-01089   uip_len = uip_len - UIP_IPUDPH_LEN;
-01090   uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
-01091   if(UDPBUF->udpchksum != 0 && uip_udpchksum() != 0xffff) {
-01092     UIP_STAT(++uip_stat.udp.drop);
-01093     UIP_STAT(++uip_stat.udp.chkerr);
-01094     UIP_LOG("udp: bad checksum.");
-01095     goto drop;
-01096   }
-01097 #else /* UIP_UDP_CHECKSUMS */
-01098   uip_len = uip_len - UIP_IPUDPH_LEN;
-01099 #endif /* UIP_UDP_CHECKSUMS */
-01100 
-01101   /* Demultiplex this UDP packet between the UDP "connections". */
-01102   for(uip_udp_conn = &uip_udp_conns[0];
-01103       uip_udp_conn < &uip_udp_conns[UIP_UDP_CONNS];
-01104       ++uip_udp_conn) {
-01105     /* If the local UDP port is non-zero, the connection is considered
-01106        to be used. If so, the local port number is checked against the
-01107        destination port number in the received packet. If the two port
-01108        numbers match, the remote port number is checked if the
-01109        connection is bound to a remote port. Finally, if the
-01110        connection is bound to a remote IP address, the source IP
-01111        address of the packet is checked. */
-01112     if(uip_udp_conn->lport != 0 &&
-01113        UDPBUF->destport == uip_udp_conn->lport &&
-01114        (uip_udp_conn->rport == 0 ||
-01115         UDPBUF->srcport == uip_udp_conn->rport) &&
-01116        (uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_zeroes_addr) ||
-01117         uip_ipaddr_cmp(uip_udp_conn->ripaddr, all_ones_addr) ||
-01118         uip_ipaddr_cmp(BUF->srcipaddr, uip_udp_conn->ripaddr))) {
-01119       goto udp_found;
-01120     }
-01121   }
-01122   UIP_LOG("udp: no matching connection found");
-01123   goto drop;
-01124   
-01125  udp_found:
-01126   uip_conn = NULL;
-01127   uip_flags = UIP_NEWDATA;
-01128   uip_sappdata = uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPUDPH_LEN];
-01129   uip_slen = 0;
-01130   UIP_UDP_APPCALL();
-01131  udp_send:
-01132   if(uip_slen == 0) {
-01133     goto drop;
-01134   }
-01135   uip_len = uip_slen + UIP_IPUDPH_LEN;
-01136 
-01137 #if UIP_CONF_IPV6
-01138   /* For IPv6, the IP length field does not include the IPv6 IP header
-01139      length. */
-01140   BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
-01141   BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
-01142 #else /* UIP_CONF_IPV6 */
-01143   BUF->len[0] = (uip_len >> 8);
-01144   BUF->len[1] = (uip_len & 0xff);
-01145 #endif /* UIP_CONF_IPV6 */
-01146 
-01147   BUF->ttl = uip_udp_conn->ttl;
-01148   BUF->proto = UIP_PROTO_UDP;
-01149 
-01150   UDPBUF->udplen = HTONS(uip_slen + UIP_UDPH_LEN);
-01151   UDPBUF->udpchksum = 0;
-01152 
-01153   BUF->srcport  = uip_udp_conn->lport;
-01154   BUF->destport = uip_udp_conn->rport;
-01155 
-01156   uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
-01157   uip_ipaddr_copy(BUF->destipaddr, uip_udp_conn->ripaddr);
-01158    
-01159   uip_appdata = &uip_buf[UIP_LLH_LEN + UIP_IPTCPH_LEN];
-01160 
-01161 #if UIP_UDP_CHECKSUMS
-01162   /* Calculate UDP checksum. */
-01163   UDPBUF->udpchksum = ~(uip_udpchksum());
-01164   if(UDPBUF->udpchksum == 0) {
-01165     UDPBUF->udpchksum = 0xffff;
-01166   }
-01167 #endif /* UIP_UDP_CHECKSUMS */
-01168   
-01169   goto ip_send_nolen;
-01170 #endif /* UIP_UDP */
-01171   
-01172   /* TCP input processing. */
-01173  tcp_input:
-01174   UIP_STAT(++uip_stat.tcp.recv);
-01175 
-01176   /* Start of TCP input header processing code. */
-01177   
-01178   if(uip_tcpchksum() != 0xffff) {   /* Compute and check the TCP
-01179                                        checksum. */
-01180     UIP_STAT(++uip_stat.tcp.drop);
-01181     UIP_STAT(++uip_stat.tcp.chkerr);
-01182     UIP_LOG("tcp: bad checksum.");
-01183     goto drop;
-01184   }
-01185   
-01186   
-01187   /* Demultiplex this segment. */
-01188   /* First check any active connections. */
-01189   for(uip_connr = &uip_conns[0]; uip_connr <= &uip_conns[UIP_CONNS - 1];
-01190       ++uip_connr) {
-01191     if(uip_connr->tcpstateflags != UIP_CLOSED &&
-01192        BUF->destport == uip_connr->lport &&
-01193        BUF->srcport == uip_connr->rport &&
-01194        uip_ipaddr_cmp(BUF->srcipaddr, uip_connr->ripaddr)) {
-01195       goto found;
-01196     }
-01197   }
-01198 
-01199   /* If we didn't find and active connection that expected the packet,
-01200      either this packet is an old duplicate, or this is a SYN packet
-01201      destined for a connection in LISTEN. If the SYN flag isn't set,
-01202      it is an old packet and we send a RST. */
-01203   if((BUF->flags & TCP_CTL) != TCP_SYN) {
-01204     goto reset;
-01205   }
-01206   
-01207   tmp16 = BUF->destport;
-01208   /* Next, check listening connections. */
-01209   for(c = 0; c < UIP_LISTENPORTS; ++c) {
-01210     if(tmp16 == uip_listenports[c])
-01211       goto found_listen;
-01212   }
-01213   
-01214   /* No matching connection found, so we send a RST packet. */
-01215   UIP_STAT(++uip_stat.tcp.synrst);
-01216  reset:
-01217 
-01218   /* We do not send resets in response to resets. */
-01219   if(BUF->flags & TCP_RST) {
-01220     goto drop;
-01221   }
-01222 
-01223   UIP_STAT(++uip_stat.tcp.rst);
-01224   
-01225   BUF->flags = TCP_RST | TCP_ACK;
-01226   uip_len = UIP_IPTCPH_LEN;
-01227   BUF->tcpoffset = 5 << 4;
-01228 
-01229   /* Flip the seqno and ackno fields in the TCP header. */
-01230   c = BUF->seqno[3];
-01231   BUF->seqno[3] = BUF->ackno[3];
-01232   BUF->ackno[3] = c;
-01233   
-01234   c = BUF->seqno[2];
-01235   BUF->seqno[2] = BUF->ackno[2];
-01236   BUF->ackno[2] = c;
-01237   
-01238   c = BUF->seqno[1];
-01239   BUF->seqno[1] = BUF->ackno[1];
-01240   BUF->ackno[1] = c;
-01241   
-01242   c = BUF->seqno[0];
-01243   BUF->seqno[0] = BUF->ackno[0];
-01244   BUF->ackno[0] = c;
-01245 
-01246   /* We also have to increase the sequence number we are
-01247      acknowledging. If the least significant byte overflowed, we need
-01248      to propagate the carry to the other bytes as well. */
-01249   if(++BUF->ackno[3] == 0) {
-01250     if(++BUF->ackno[2] == 0) {
-01251       if(++BUF->ackno[1] == 0) {
-01252         ++BUF->ackno[0];
-01253       }
-01254     }
-01255   }
-01256  
-01257   /* Swap port numbers. */
-01258   tmp16 = BUF->srcport;
-01259   BUF->srcport = BUF->destport;
-01260   BUF->destport = tmp16;
-01261   
-01262   /* Swap IP addresses. */
-01263   uip_ipaddr_copy(BUF->destipaddr, BUF->srcipaddr);
-01264   uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
-01265   
-01266   /* And send out the RST packet! */
-01267   goto tcp_send_noconn;
-01268 
-01269   /* This label will be jumped to if we matched the incoming packet
-01270      with a connection in LISTEN. In that case, we should create a new
-01271      connection and send a SYNACK in return. */
-01272  found_listen:
-01273   /* First we check if there are any connections avaliable. Unused
-01274      connections are kept in the same table as used connections, but
-01275      unused ones have the tcpstate set to CLOSED. Also, connections in
-01276      TIME_WAIT are kept track of and we'll use the oldest one if no
-01277      CLOSED connections are found. Thanks to Eddie C. Dost for a very
-01278      nice algorithm for the TIME_WAIT search. */
-01279   uip_connr = 0;
-01280   for(c = 0; c < UIP_CONNS; ++c) {
-01281     if(uip_conns[c].tcpstateflags == UIP_CLOSED) {
-01282       uip_connr = &uip_conns[c];
-01283       break;
-01284     }
-01285     if(uip_conns[c].tcpstateflags == UIP_TIME_WAIT) {
-01286       if(uip_connr == 0 ||
-01287          uip_conns[c].timer > uip_connr->timer) {
-01288         uip_connr = &uip_conns[c];
-01289       }
-01290     }
-01291   }
-01292 
-01293   if(uip_connr == 0) {
-01294     /* All connections are used already, we drop packet and hope that
-01295        the remote end will retransmit the packet at a time when we
-01296        have more spare connections. */
-01297     UIP_STAT(++uip_stat.tcp.syndrop);
-01298     UIP_LOG("tcp: found no unused connections.");
-01299     goto drop;
-01300   }
-01301   uip_conn = uip_connr;
-01302   
-01303   /* Fill in the necessary fields for the new connection. */
-01304   uip_connr->rto = uip_connr->timer = UIP_RTO;
-01305   uip_connr->sa = 0;
-01306   uip_connr->sv = 4;
-01307   uip_connr->nrtx = 0;
-01308   uip_connr->lport = BUF->destport;
-01309   uip_connr->rport = BUF->srcport;
-01310   uip_ipaddr_copy(uip_connr->ripaddr, BUF->srcipaddr);
-01311   uip_connr->tcpstateflags = UIP_SYN_RCVD;
-01312 
-01313   uip_connr->snd_nxt[0] = iss[0];
-01314   uip_connr->snd_nxt[1] = iss[1];
-01315   uip_connr->snd_nxt[2] = iss[2];
-01316   uip_connr->snd_nxt[3] = iss[3];
-01317   uip_connr->len = 1;
-01318 
-01319   /* rcv_nxt should be the seqno from the incoming packet + 1. */
-01320   uip_connr->rcv_nxt[3] = BUF->seqno[3];
-01321   uip_connr->rcv_nxt[2] = BUF->seqno[2];
-01322   uip_connr->rcv_nxt[1] = BUF->seqno[1];
-01323   uip_connr->rcv_nxt[0] = BUF->seqno[0];
-01324   uip_add_rcv_nxt(1);
-01325 
-01326   /* Parse the TCP MSS option, if present. */
-01327   if((BUF->tcpoffset & 0xf0) > 0x50) {
-01328     for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
-01329       opt = uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + c];
-01330       if(opt == TCP_OPT_END) {
-01331         /* End of options. */
-01332         break;
-01333       } else if(opt == TCP_OPT_NOOP) {
-01334         ++c;
-01335         /* NOP option. */
-01336       } else if(opt == TCP_OPT_MSS &&
-01337                 uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) {
-01338         /* An MSS option with the right option length. */
-01339         tmp16 = ((u16_t)uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
-01340           (u16_t)uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + 3 + c];
-01341         uip_connr->initialmss = uip_connr->mss =
-01342           tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16;
-01343         
-01344         /* And we are done processing options. */
-01345         break;
-01346       } else {
-01347         /* All other options have a length field, so that we easily
-01348            can skip past them. */
-01349         if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
-01350           /* If the length field is zero, the options are malformed
-01351              and we don't process them further. */
-01352           break;
-01353         }
-01354         c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
-01355       }
-01356     }
-01357   }
-01358   
-01359   /* Our response will be a SYNACK. */
-01360 #if UIP_ACTIVE_OPEN
-01361  tcp_send_synack:
-01362   BUF->flags = TCP_ACK;
-01363   
-01364  tcp_send_syn:
-01365   BUF->flags |= TCP_SYN;
-01366 #else /* UIP_ACTIVE_OPEN */
-01367  tcp_send_synack:
-01368   BUF->flags = TCP_SYN | TCP_ACK;
-01369 #endif /* UIP_ACTIVE_OPEN */
-01370   
-01371   /* We send out the TCP Maximum Segment Size option with our
-01372      SYNACK. */
-01373   BUF->optdata[0] = TCP_OPT_MSS;
-01374   BUF->optdata[1] = TCP_OPT_MSS_LEN;
-01375   BUF->optdata[2] = (UIP_TCP_MSS) / 256;
-01376   BUF->optdata[3] = (UIP_TCP_MSS) & 255;
-01377   uip_len = UIP_IPTCPH_LEN + TCP_OPT_MSS_LEN;
-01378   BUF->tcpoffset = ((UIP_TCPH_LEN + TCP_OPT_MSS_LEN) / 4) << 4;
-01379   goto tcp_send;
-01380 
-01381   /* This label will be jumped to if we found an active connection. */
-01382  found:
-01383   uip_conn = uip_connr;
-01384   uip_flags = 0;
-01385   /* We do a very naive form of TCP reset processing; we just accept
-01386      any RST and kill our connection. We should in fact check if the
-01387      sequence number of this reset is wihtin our advertised window
-01388      before we accept the reset. */
-01389   if(BUF->flags & TCP_RST) {
-01390     uip_connr->tcpstateflags = UIP_CLOSED;
-01391     UIP_LOG("tcp: got reset, aborting connection.");
-01392     uip_flags = UIP_ABORT;
-01393     UIP_APPCALL();
-01394     goto drop;
-01395   }
-01396   /* Calculated the length of the data, if the application has sent
-01397      any data to us. */
-01398   c = (BUF->tcpoffset >> 4) << 2;
-01399   /* uip_len will contain the length of the actual TCP data. This is
-01400      calculated by subtracing the length of the TCP header (in
-01401      c) and the length of the IP header (20 bytes). */
-01402   uip_len = uip_len - c - UIP_IPH_LEN;
-01403 
-01404   /* First, check if the sequence number of the incoming packet is
-01405      what we're expecting next. If not, we send out an ACK with the
-01406      correct numbers in. */
-01407   if(!(((uip_connr->tcpstateflags & UIP_TS_MASK) == UIP_SYN_SENT) &&
-01408        ((BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)))) {
-01409     if((uip_len > 0 || ((BUF->flags & (TCP_SYN | TCP_FIN)) != 0)) &&
-01410        (BUF->seqno[0] != uip_connr->rcv_nxt[0] ||
-01411         BUF->seqno[1] != uip_connr->rcv_nxt[1] ||
-01412         BUF->seqno[2] != uip_connr->rcv_nxt[2] ||
-01413         BUF->seqno[3] != uip_connr->rcv_nxt[3])) {
-01414       goto tcp_send_ack;
-01415     }
-01416   }
-01417 
-01418   /* Next, check if the incoming segment acknowledges any outstanding
-01419      data. If so, we update the sequence number, reset the length of
-01420      the outstanding data, calculate RTT estimations, and reset the
-01421      retransmission timer. */
-01422   if((BUF->flags & TCP_ACK) && uip_outstanding(uip_connr)) {
-01423     uip_add32(uip_connr->snd_nxt, uip_connr->len);
-01424 
-01425     if(BUF->ackno[0] == uip_acc32[0] &&
-01426        BUF->ackno[1] == uip_acc32[1] &&
-01427        BUF->ackno[2] == uip_acc32[2] &&
-01428        BUF->ackno[3] == uip_acc32[3]) {
-01429       /* Update sequence number. */
-01430       uip_connr->snd_nxt[0] = uip_acc32[0];
-01431       uip_connr->snd_nxt[1] = uip_acc32[1];
-01432       uip_connr->snd_nxt[2] = uip_acc32[2];
-01433       uip_connr->snd_nxt[3] = uip_acc32[3];
-01434         
-01435 
-01436       /* Do RTT estimation, unless we have done retransmissions. */
-01437       if(uip_connr->nrtx == 0) {
-01438         signed char m;
-01439         m = uip_connr->rto - uip_connr->timer;
-01440         /* This is taken directly from VJs original code in his paper */
-01441         m = m - (uip_connr->sa >> 3);
-01442         uip_connr->sa += m;
-01443         if(m < 0) {
-01444           m = -m;
-01445         }
-01446         m = m - (uip_connr->sv >> 2);
-01447         uip_connr->sv += m;
-01448         uip_connr->rto = (uip_connr->sa >> 3) + uip_connr->sv;
-01449 
-01450       }
-01451       /* Set the acknowledged flag. */
-01452       uip_flags = UIP_ACKDATA;
-01453       /* Reset the retransmission timer. */
-01454       uip_connr->timer = uip_connr->rto;
-01455 
-01456       /* Reset length of outstanding data. */
-01457       uip_connr->len = 0;
-01458     }
-01459     
-01460   }
-01461 
-01462   /* Do different things depending on in what state the connection is. */
-01463   switch(uip_connr->tcpstateflags & UIP_TS_MASK) {
-01464     /* CLOSED and LISTEN are not handled here. CLOSE_WAIT is not
-01465         implemented, since we force the application to close when the
-01466         peer sends a FIN (hence the application goes directly from
-01467         ESTABLISHED to LAST_ACK). */
-01468   case UIP_SYN_RCVD:
-01469     /* In SYN_RCVD we have sent out a SYNACK in response to a SYN, and
-01470        we are waiting for an ACK that acknowledges the data we sent
-01471        out the last time. Therefore, we want to have the UIP_ACKDATA
-01472        flag set. If so, we enter the ESTABLISHED state. */
-01473     if(uip_flags & UIP_ACKDATA) {
-01474       uip_connr->tcpstateflags = UIP_ESTABLISHED;
-01475       uip_flags = UIP_CONNECTED;
-01476       uip_connr->len = 0;
-01477       if(uip_len > 0) {
-01478         uip_flags |= UIP_NEWDATA;
-01479         uip_add_rcv_nxt(uip_len);
-01480       }
-01481       uip_slen = 0;
-01482       UIP_APPCALL();
-01483       goto appsend;
-01484     }
-01485     goto drop;
-01486 #if UIP_ACTIVE_OPEN
-01487   case UIP_SYN_SENT:
-01488     /* In SYN_SENT, we wait for a SYNACK that is sent in response to
-01489        our SYN. The rcv_nxt is set to sequence number in the SYNACK
-01490        plus one, and we send an ACK. We move into the ESTABLISHED
-01491        state. */
-01492     if((uip_flags & UIP_ACKDATA) &&
-01493        (BUF->flags & TCP_CTL) == (TCP_SYN | TCP_ACK)) {
-01494 
-01495       /* Parse the TCP MSS option, if present. */
-01496       if((BUF->tcpoffset & 0xf0) > 0x50) {
-01497         for(c = 0; c < ((BUF->tcpoffset >> 4) - 5) << 2 ;) {
-01498           opt = uip_buf[UIP_IPTCPH_LEN + UIP_LLH_LEN + c];
-01499           if(opt == TCP_OPT_END) {
-01500             /* End of options. */
-01501             break;
-01502           } else if(opt == TCP_OPT_NOOP) {
-01503             ++c;
-01504             /* NOP option. */
-01505           } else if(opt == TCP_OPT_MSS &&
-01506                     uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == TCP_OPT_MSS_LEN) {
-01507             /* An MSS option with the right option length. */
-01508             tmp16 = (uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 2 + c] << 8) |
-01509               uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 3 + c];
-01510             uip_connr->initialmss =
-01511               uip_connr->mss = tmp16 > UIP_TCP_MSS? UIP_TCP_MSS: tmp16;
-01512 
-01513             /* And we are done processing options. */
-01514             break;
-01515           } else {
-01516             /* All other options have a length field, so that we easily
-01517                can skip past them. */
-01518             if(uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c] == 0) {
-01519               /* If the length field is zero, the options are malformed
-01520                  and we don't process them further. */
-01521               break;
-01522             }
-01523             c += uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN + 1 + c];
-01524           }
-01525         }
-01526       }
-01527       uip_connr->tcpstateflags = UIP_ESTABLISHED;
-01528       uip_connr->rcv_nxt[0] = BUF->seqno[0];
-01529       uip_connr->rcv_nxt[1] = BUF->seqno[1];
-01530       uip_connr->rcv_nxt[2] = BUF->seqno[2];
-01531       uip_connr->rcv_nxt[3] = BUF->seqno[3];
-01532       uip_add_rcv_nxt(1);
-01533       uip_flags = UIP_CONNECTED | UIP_NEWDATA;
-01534       uip_connr->len = 0;
-01535       uip_len = 0;
-01536       uip_slen = 0;
-01537       UIP_APPCALL();
-01538       goto appsend;
-01539     }
-01540     /* Inform the application that the connection failed */
-01541     uip_flags = UIP_ABORT;
-01542     UIP_APPCALL();
-01543     /* The connection is closed after we send the RST */
-01544     uip_conn->tcpstateflags = UIP_CLOSED;
-01545     goto reset;
-01546 #endif /* UIP_ACTIVE_OPEN */
-01547     
-01548   case UIP_ESTABLISHED:
-01549     /* In the ESTABLISHED state, we call upon the application to feed
-01550     data into the uip_buf. If the UIP_ACKDATA flag is set, the
-01551     application should put new data into the buffer, otherwise we are
-01552     retransmitting an old segment, and the application should put that
-01553     data into the buffer.
-01554 
-01555     If the incoming packet is a FIN, we should close the connection on
-01556     this side as well, and we send out a FIN and enter the LAST_ACK
-01557     state. We require that there is no outstanding data; otherwise the
-01558     sequence numbers will be screwed up. */
-01559 
-01560     if(BUF->flags & TCP_FIN && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
-01561       if(uip_outstanding(uip_connr)) {
-01562         goto drop;
-01563       }
-01564       uip_add_rcv_nxt(1 + uip_len);
-01565       uip_flags |= UIP_CLOSE;
-01566       if(uip_len > 0) {
-01567         uip_flags |= UIP_NEWDATA;
-01568       }
-01569       UIP_APPCALL();
-01570       uip_connr->len = 1;
-01571       uip_connr->tcpstateflags = UIP_LAST_ACK;
-01572       uip_connr->nrtx = 0;
-01573     tcp_send_finack:
-01574       BUF->flags = TCP_FIN | TCP_ACK;
-01575       goto tcp_send_nodata;
-01576     }
-01577 
-01578     /* Check the URG flag. If this is set, the segment carries urgent
-01579        data that we must pass to the application. */
-01580     if((BUF->flags & TCP_URG) != 0) {
-01581 #if UIP_URGDATA > 0
-01582       uip_urglen = (BUF->urgp[0] << 8) | BUF->urgp[1];
-01583       if(uip_urglen > uip_len) {
-01584         /* There is more urgent data in the next segment to come. */
-01585         uip_urglen = uip_len;
-01586       }
-01587       uip_add_rcv_nxt(uip_urglen);
-01588       uip_len -= uip_urglen;
-01589       uip_urgdata = uip_appdata;
-01590       uip_appdata += uip_urglen;
-01591     } else {
-01592       uip_urglen = 0;
-01593 #else /* UIP_URGDATA > 0 */
-01594       uip_appdata = ((char *)uip_appdata) + ((BUF->urgp[0] << 8) | BUF->urgp[1]);
-01595       uip_len -= (BUF->urgp[0] << 8) | BUF->urgp[1];
-01596 #endif /* UIP_URGDATA > 0 */
-01597     }
-01598 
-01599     /* If uip_len > 0 we have TCP data in the packet, and we flag this
-01600        by setting the UIP_NEWDATA flag and update the sequence number
-01601        we acknowledge. If the application has stopped the dataflow
-01602        using uip_stop(), we must not accept any data packets from the
-01603        remote host. */
-01604     if(uip_len > 0 && !(uip_connr->tcpstateflags & UIP_STOPPED)) {
-01605       uip_flags |= UIP_NEWDATA;
-01606       uip_add_rcv_nxt(uip_len);
-01607     }
-01608 
-01609     /* Check if the available buffer space advertised by the other end
-01610        is smaller than the initial MSS for this connection. If so, we
-01611        set the current MSS to the window size to ensure that the
-01612        application does not send more data than the other end can
-01613        handle.
-01614 
-01615        If the remote host advertises a zero window, we set the MSS to
-01616        the initial MSS so that the application will send an entire MSS
-01617        of data. This data will not be acknowledged by the receiver,
-01618        and the application will retransmit it. This is called the
-01619        "persistent timer" and uses the retransmission mechanim.
-01620     */
-01621     tmp16 = ((u16_t)BUF->wnd[0] << 8) + (u16_t)BUF->wnd[1];
-01622     if(tmp16 > uip_connr->initialmss ||
-01623        tmp16 == 0) {
-01624       tmp16 = uip_connr->initialmss;
-01625     }
-01626     uip_connr->mss = tmp16;
-01627 
-01628     /* If this packet constitutes an ACK for outstanding data (flagged
-01629        by the UIP_ACKDATA flag, we should call the application since it
-01630        might want to send more data. If the incoming packet had data
-01631        from the peer (as flagged by the UIP_NEWDATA flag), the
-01632        application must also be notified.
-01633 
-01634        When the application is called, the global variable uip_len
-01635        contains the length of the incoming data. The application can
-01636        access the incoming data through the global pointer
-01637        uip_appdata, which usually points UIP_IPTCPH_LEN + UIP_LLH_LEN
-01638        bytes into the uip_buf array.
-01639 
-01640        If the application wishes to send any data, this data should be
-01641        put into the uip_appdata and the length of the data should be
-01642        put into uip_len. If the application don't have any data to
-01643        send, uip_len must be set to 0. */
-01644     if(uip_flags & (UIP_NEWDATA | UIP_ACKDATA)) {
-01645       uip_slen = 0;
-01646       UIP_APPCALL();
-01647 
-01648     appsend:
-01649       
-01650       if(uip_flags & UIP_ABORT) {
-01651         uip_slen = 0;
-01652         uip_connr->tcpstateflags = UIP_CLOSED;
-01653         BUF->flags = TCP_RST | TCP_ACK;
-01654         goto tcp_send_nodata;
-01655       }
-01656 
-01657       if(uip_flags & UIP_CLOSE) {
-01658         uip_slen = 0;
-01659         uip_connr->len = 1;
-01660         uip_connr->tcpstateflags = UIP_FIN_WAIT_1;
-01661         uip_connr->nrtx = 0;
-01662         BUF->flags = TCP_FIN | TCP_ACK;
-01663         goto tcp_send_nodata;
-01664       }
-01665 
-01666       /* If uip_slen > 0, the application has data to be sent. */
-01667       if(uip_slen > 0) {
-01668 
-01669         /* If the connection has acknowledged data, the contents of
-01670            the ->len variable should be discarded. */
-01671         if((uip_flags & UIP_ACKDATA) != 0) {
-01672           uip_connr->len = 0;
-01673         }
-01674 
-01675         /* If the ->len variable is non-zero the connection has
-01676            already data in transit and cannot send anymore right
-01677            now. */
-01678         if(uip_connr->len == 0) {
-01679 
-01680           /* The application cannot send more than what is allowed by
-01681              the mss (the minumum of the MSS and the available
-01682              window). */
-01683           if(uip_slen > uip_connr->mss) {
-01684             uip_slen = uip_connr->mss;
-01685           }
-01686 
-01687           /* Remember how much data we send out now so that we know
-01688              when everything has been acknowledged. */
-01689           uip_connr->len = uip_slen;
-01690         } else {
-01691 
-01692           /* If the application already had unacknowledged data, we
-01693              make sure that the application does not send (i.e.,
-01694              retransmit) out more than it previously sent out. */
-01695           uip_slen = uip_connr->len;
-01696         }
-01697       }
-01698       uip_connr->nrtx = 0;
-01699     apprexmit:
-01700       uip_appdata = uip_sappdata;
-01701       
-01702       /* If the application has data to be sent, or if the incoming
-01703          packet had new data in it, we must send out a packet. */
-01704       if(uip_slen > 0 && uip_connr->len > 0) {
-01705         /* Add the length of the IP and TCP headers. */
-01706         uip_len = uip_connr->len + UIP_TCPIP_HLEN;
-01707         /* We always set the ACK flag in response packets. */
-01708         BUF->flags = TCP_ACK | TCP_PSH;
-01709         /* Send the packet. */
-01710         goto tcp_send_noopts;
-01711       }
-01712       /* If there is no data to send, just send out a pure ACK if
-01713          there is newdata. */
-01714       if(uip_flags & UIP_NEWDATA) {
-01715         uip_len = UIP_TCPIP_HLEN;
-01716         BUF->flags = TCP_ACK;
-01717         goto tcp_send_noopts;
-01718       }
-01719     }
-01720     goto drop;
-01721   case UIP_LAST_ACK:
-01722     /* We can close this connection if the peer has acknowledged our
-01723        FIN. This is indicated by the UIP_ACKDATA flag. */
-01724     if(uip_flags & UIP_ACKDATA) {
-01725       uip_connr->tcpstateflags = UIP_CLOSED;
-01726       uip_flags = UIP_CLOSE;
-01727       UIP_APPCALL();
-01728     }
-01729     break;
-01730     
-01731   case UIP_FIN_WAIT_1:
-01732     /* The application has closed the connection, but the remote host
-01733        hasn't closed its end yet. Thus we do nothing but wait for a
-01734        FIN from the other side. */
-01735     if(uip_len > 0) {
-01736       uip_add_rcv_nxt(uip_len);
-01737     }
-01738     if(BUF->flags & TCP_FIN) {
-01739       if(uip_flags & UIP_ACKDATA) {
-01740         uip_connr->tcpstateflags = UIP_TIME_WAIT;
-01741         uip_connr->timer = 0;
-01742         uip_connr->len = 0;
-01743       } else {
-01744         uip_connr->tcpstateflags = UIP_CLOSING;
-01745       }
-01746       uip_add_rcv_nxt(1);
-01747       uip_flags = UIP_CLOSE;
-01748       UIP_APPCALL();
-01749       goto tcp_send_ack;
-01750     } else if(uip_flags & UIP_ACKDATA) {
-01751       uip_connr->tcpstateflags = UIP_FIN_WAIT_2;
-01752       uip_connr->len = 0;
-01753       goto drop;
-01754     }
-01755     if(uip_len > 0) {
-01756       goto tcp_send_ack;
-01757     }
-01758     goto drop;
-01759       
-01760   case UIP_FIN_WAIT_2:
-01761     if(uip_len > 0) {
-01762       uip_add_rcv_nxt(uip_len);
-01763     }
-01764     if(BUF->flags & TCP_FIN) {
-01765       uip_connr->tcpstateflags = UIP_TIME_WAIT;
-01766       uip_connr->timer = 0;
-01767       uip_add_rcv_nxt(1);
-01768       uip_flags = UIP_CLOSE;
-01769       UIP_APPCALL();
-01770       goto tcp_send_ack;
-01771     }
-01772     if(uip_len > 0) {
-01773       goto tcp_send_ack;
-01774     }
-01775     goto drop;
-01776 
-01777   case UIP_TIME_WAIT:
-01778     goto tcp_send_ack;
-01779     
-01780   case UIP_CLOSING:
-01781     if(uip_flags & UIP_ACKDATA) {
-01782       uip_connr->tcpstateflags = UIP_TIME_WAIT;
-01783       uip_connr->timer = 0;
-01784     }
-01785   }
-01786   goto drop;
-01787   
-01788 
-01789   /* We jump here when we are ready to send the packet, and just want
-01790      to set the appropriate TCP sequence numbers in the TCP header. */
-01791  tcp_send_ack:
-01792   BUF->flags = TCP_ACK;
-01793  tcp_send_nodata:
-01794   uip_len = UIP_IPTCPH_LEN;
-01795  tcp_send_noopts:
-01796   BUF->tcpoffset = (UIP_TCPH_LEN / 4) << 4;
-01797  tcp_send:
-01798   /* We're done with the input processing. We are now ready to send a
-01799      reply. Our job is to fill in all the fields of the TCP and IP
-01800      headers before calculating the checksum and finally send the
-01801      packet. */
-01802   BUF->ackno[0] = uip_connr->rcv_nxt[0];
-01803   BUF->ackno[1] = uip_connr->rcv_nxt[1];
-01804   BUF->ackno[2] = uip_connr->rcv_nxt[2];
-01805   BUF->ackno[3] = uip_connr->rcv_nxt[3];
-01806   
-01807   BUF->seqno[0] = uip_connr->snd_nxt[0];
-01808   BUF->seqno[1] = uip_connr->snd_nxt[1];
-01809   BUF->seqno[2] = uip_connr->snd_nxt[2];
-01810   BUF->seqno[3] = uip_connr->snd_nxt[3];
-01811 
-01812   BUF->proto = UIP_PROTO_TCP;
-01813   
-01814   BUF->srcport  = uip_connr->lport;
-01815   BUF->destport = uip_connr->rport;
-01816 
-01817   uip_ipaddr_copy(BUF->srcipaddr, uip_hostaddr);
-01818   uip_ipaddr_copy(BUF->destipaddr, uip_connr->ripaddr);
-01819 
-01820   if(uip_connr->tcpstateflags & UIP_STOPPED) {
-01821     /* If the connection has issued uip_stop(), we advertise a zero
-01822        window so that the remote host will stop sending data. */
-01823     BUF->wnd[0] = BUF->wnd[1] = 0;
-01824   } else {
-01825     BUF->wnd[0] = ((UIP_RECEIVE_WINDOW) >> 8);
-01826     BUF->wnd[1] = ((UIP_RECEIVE_WINDOW) & 0xff);
-01827   }
-01828 
-01829  tcp_send_noconn:
-01830   BUF->ttl = UIP_TTL;
-01831 #if UIP_CONF_IPV6
-01832   /* For IPv6, the IP length field does not include the IPv6 IP header
-01833      length. */
-01834   BUF->len[0] = ((uip_len - UIP_IPH_LEN) >> 8);
-01835   BUF->len[1] = ((uip_len - UIP_IPH_LEN) & 0xff);
-01836 #else /* UIP_CONF_IPV6 */
-01837   BUF->len[0] = (uip_len >> 8);
-01838   BUF->len[1] = (uip_len & 0xff);
-01839 #endif /* UIP_CONF_IPV6 */
-01840 
-01841   BUF->urgp[0] = BUF->urgp[1] = 0;
-01842   
-01843   /* Calculate TCP checksum. */
-01844   BUF->tcpchksum = 0;
-01845   BUF->tcpchksum = ~(uip_tcpchksum());
-01846   
-01847  ip_send_nolen:
-01848 
-01849 #if UIP_CONF_IPV6
-01850   BUF->vtc = 0x60;
-01851   BUF->tcflow = 0x00;
-01852   BUF->flow = 0x00;
-01853 #else /* UIP_CONF_IPV6 */
-01854   BUF->vhl = 0x45;
-01855   BUF->tos = 0;
-01856   BUF->ipoffset[0] = BUF->ipoffset[1] = 0;
-01857   ++ipid;
-01858   BUF->ipid[0] = ipid >> 8;
-01859   BUF->ipid[1] = ipid & 0xff;
-01860   /* Calculate IP checksum. */
-01861   BUF->ipchksum = 0;
-01862   BUF->ipchksum = ~(uip_ipchksum());
-01863   DEBUG_PRINTF("uip ip_send_nolen: chkecum 0x%04x\n", uip_ipchksum());
-01864 #endif /* UIP_CONF_IPV6 */
-01865    
-01866   UIP_STAT(++uip_stat.tcp.sent);
-01867  send:
-01868   DEBUG_PRINTF("Sending packet with length %d (%d)\n", uip_len,
-01869                (BUF->len[0] << 8) | BUF->len[1]);
-01870   
-01871   UIP_STAT(++uip_stat.ip.sent);
-01872   /* Return and let the caller do the actual transmission. */
-01873   uip_flags = 0;
-01874   return;
-01875  drop:
-01876   uip_len = 0;
-01877   uip_flags = 0;
-01878   return;
-01879 }
-01880 /*---------------------------------------------------------------------------*/
-01881 u16_t
-01882 htons(u16_t val)
-01883 {
-01884   return HTONS(val);
-01885 }
-01886 /*---------------------------------------------------------------------------*/
-01887 void
-01888 uip_send(const void *data, int len)
-01889 {
-01890   if(len > 0) {
-01891     uip_slen = len;
-01892     if(data != uip_sappdata) {
-01893       memcpy(uip_sappdata, (data), uip_slen);
-01894     }
-01895   }
-01896 }
-01897 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00202.html b/components/net/uip/doc/html/a00202.html deleted file mode 100644 index ff2306c0bc6b378645b8001d33aafa7c1fda85ea..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00202.html +++ /dev/null @@ -1,1626 +0,0 @@ - - -uIP 1.0: uip/uip.h Source File - - - - - - -

uip/uip.h

Go to the documentation of this file.
00001 
-00002 /**
-00003  * \addtogroup uip
-00004  * @{
-00005  */
-00006 
-00007 /**
-00008  * \file
-00009  * Header file for the uIP TCP/IP stack.
-00010  * \author Adam Dunkels <adam@dunkels.com>
-00011  *
-00012  * The uIP TCP/IP stack header file contains definitions for a number
-00013  * of C macros that are used by uIP programs as well as internal uIP
-00014  * structures, TCP/IP header structures and function declarations.
-00015  *
-00016  */
-00017 
-00018 
-00019 /*
-00020  * Copyright (c) 2001-2003, Adam Dunkels.
-00021  * All rights reserved.
-00022  *
-00023  * Redistribution and use in source and binary forms, with or without
-00024  * modification, are permitted provided that the following conditions
-00025  * are met:
-00026  * 1. Redistributions of source code must retain the above copyright
-00027  *    notice, this list of conditions and the following disclaimer.
-00028  * 2. Redistributions in binary form must reproduce the above copyright
-00029  *    notice, this list of conditions and the following disclaimer in the
-00030  *    documentation and/or other materials provided with the distribution.
-00031  * 3. The name of the author may not be used to endorse or promote
-00032  *    products derived from this software without specific prior
-00033  *    written permission.
-00034  *
-00035  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00036  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00037  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00038  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00039  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00040  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00041  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00042  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00043  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00044  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00045  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00046  *
-00047  * This file is part of the uIP TCP/IP stack.
-00048  *
-00049  * $Id: uip.h,v 1.40 2006/06/08 07:12:07 adam Exp $
-00050  *
-00051  */
-00052 
-00053 #ifndef __UIP_H__
-00054 #define __UIP_H__
-00055 
-00056 #include "uipopt.h"
-00057 
-00058 /**
-00059  * Repressentation of an IP address.
-00060  *
-00061  */
-00062 typedef u16_t uip_ip4addr_t[2];
-00063 typedef u16_t uip_ip6addr_t[8];
-00064 #if UIP_CONF_IPV6
-00065 typedef uip_ip6addr_t uip_ipaddr_t;
-00066 #else /* UIP_CONF_IPV6 */
-00067 typedef uip_ip4addr_t uip_ipaddr_t;
-00068 #endif /* UIP_CONF_IPV6 */
-00069 
-00070 /*---------------------------------------------------------------------------*/
-00071 /* First, the functions that should be called from the
-00072  * system. Initialization, the periodic timer and incoming packets are
-00073  * handled by the following three functions.
-00074  */
-00075 
-00076 /**
-00077  * \defgroup uipconffunc uIP configuration functions
-00078  * @{
-00079  *
-00080  * The uIP configuration functions are used for setting run-time
-00081  * parameters in uIP such as IP addresses.
-00082  */
-00083 
-00084 /**
-00085  * Set the IP address of this host.
-00086  *
-00087  * The IP address is represented as a 4-byte array where the first
-00088  * octet of the IP address is put in the first member of the 4-byte
-00089  * array.
-00090  *
-00091  * Example:
-00092  \code
-00093 
-00094  uip_ipaddr_t addr;
-00095 
-00096  uip_ipaddr(&addr, 192,168,1,2);
-00097  uip_sethostaddr(&addr);
-00098  
-00099  \endcode
-00100  * \param addr A pointer to an IP address of type uip_ipaddr_t;
-00101  *
-00102  * \sa uip_ipaddr()
-00103  *
-00104  * \hideinitializer
-00105  */
-00106 #define uip_sethostaddr(addr) uip_ipaddr_copy(uip_hostaddr, (addr))
-00107 
-00108 /**
-00109  * Get the IP address of this host.
-00110  *
-00111  * The IP address is represented as a 4-byte array where the first
-00112  * octet of the IP address is put in the first member of the 4-byte
-00113  * array.
-00114  *
-00115  * Example:
-00116  \code
-00117  uip_ipaddr_t hostaddr;
-00118 
-00119  uip_gethostaddr(&hostaddr);
-00120  \endcode
-00121  * \param addr A pointer to a uip_ipaddr_t variable that will be
-00122  * filled in with the currently configured IP address.
-00123  *
-00124  * \hideinitializer
-00125  */
-00126 #define uip_gethostaddr(addr) uip_ipaddr_copy((addr), uip_hostaddr)
-00127 
-00128 /**
-00129  * Set the default router's IP address.
-00130  *
-00131  * \param addr A pointer to a uip_ipaddr_t variable containing the IP
-00132  * address of the default router.
-00133  *
-00134  * \sa uip_ipaddr()
-00135  *
-00136  * \hideinitializer
-00137  */
-00138 #define uip_setdraddr(addr) uip_ipaddr_copy(uip_draddr, (addr))
-00139 
-00140 /**
-00141  * Set the netmask.
-00142  *
-00143  * \param addr A pointer to a uip_ipaddr_t variable containing the IP
-00144  * address of the netmask.
-00145  *
-00146  * \sa uip_ipaddr()
-00147  *
-00148  * \hideinitializer
-00149  */
-00150 #define uip_setnetmask(addr) uip_ipaddr_copy(uip_netmask, (addr))
-00151 
-00152 
-00153 /**
-00154  * Get the default router's IP address.
-00155  *
-00156  * \param addr A pointer to a uip_ipaddr_t variable that will be
-00157  * filled in with the IP address of the default router.
-00158  *
-00159  * \hideinitializer
-00160  */
-00161 #define uip_getdraddr(addr) uip_ipaddr_copy((addr), uip_draddr)
-00162 
-00163 /**
-00164  * Get the netmask.
-00165  *
-00166  * \param addr A pointer to a uip_ipaddr_t variable that will be
-00167  * filled in with the value of the netmask.
-00168  *
-00169  * \hideinitializer
-00170  */
-00171 #define uip_getnetmask(addr) uip_ipaddr_copy((addr), uip_netmask)
-00172 
-00173 /** @} */
-00174 
-00175 /**
-00176  * \defgroup uipinit uIP initialization functions
-00177  * @{
-00178  *
-00179  * The uIP initialization functions are used for booting uIP.
-00180  */
-00181 
-00182 /**
-00183  * uIP initialization function.
-00184  *
-00185  * This function should be called at boot up to initilize the uIP
-00186  * TCP/IP stack.
-00187  */
-00188 void uip_init(void);
-00189 
-00190 /**
-00191  * uIP initialization function.
-00192  *
-00193  * This function may be used at boot time to set the initial ip_id.
-00194  */
-00195 void uip_setipid(u16_t id);
-00196 
-00197 /** @} */
-00198 
-00199 /**
-00200  * \defgroup uipdevfunc uIP device driver functions
-00201  * @{
-00202  *
-00203  * These functions are used by a network device driver for interacting
-00204  * with uIP.
-00205  */
-00206 
-00207 /**
-00208  * Process an incoming packet.
-00209  *
-00210  * This function should be called when the device driver has received
-00211  * a packet from the network. The packet from the device driver must
-00212  * be present in the uip_buf buffer, and the length of the packet
-00213  * should be placed in the uip_len variable.
-00214  *
-00215  * When the function returns, there may be an outbound packet placed
-00216  * in the uip_buf packet buffer. If so, the uip_len variable is set to
-00217  * the length of the packet. If no packet is to be sent out, the
-00218  * uip_len variable is set to 0.
-00219  *
-00220  * The usual way of calling the function is presented by the source
-00221  * code below.
-00222  \code
-00223   uip_len = devicedriver_poll();
-00224   if(uip_len > 0) {
-00225     uip_input();
-00226     if(uip_len > 0) {
-00227       devicedriver_send();
-00228     }
-00229   }
-00230  \endcode
-00231  *
-00232  * \note If you are writing a uIP device driver that needs ARP
-00233  * (Address Resolution Protocol), e.g., when running uIP over
-00234  * Ethernet, you will need to call the uIP ARP code before calling
-00235  * this function:
-00236  \code
-00237   #define BUF ((struct uip_eth_hdr *)&uip_buf[0])
-00238   uip_len = ethernet_devicedrver_poll();
-00239   if(uip_len > 0) {
-00240     if(BUF->type == HTONS(UIP_ETHTYPE_IP)) {
-00241       uip_arp_ipin();
-00242       uip_input();
-00243       if(uip_len > 0) {
-00244         uip_arp_out();
-00245         ethernet_devicedriver_send();
-00246       }
-00247     } else if(BUF->type == HTONS(UIP_ETHTYPE_ARP)) {
-00248       uip_arp_arpin();
-00249       if(uip_len > 0) {
-00250         ethernet_devicedriver_send();
-00251       }
-00252     }
-00253  \endcode
-00254  *
-00255  * \hideinitializer
-00256  */
-00257 #define uip_input()        uip_process(UIP_DATA)
-00258 
-00259 /**
-00260  * Periodic processing for a connection identified by its number.
-00261  *
-00262  * This function does the necessary periodic processing (timers,
-00263  * polling) for a uIP TCP conneciton, and should be called when the
-00264  * periodic uIP timer goes off. It should be called for every
-00265  * connection, regardless of whether they are open of closed.
-00266  *
-00267  * When the function returns, it may have an outbound packet waiting
-00268  * for service in the uIP packet buffer, and if so the uip_len
-00269  * variable is set to a value larger than zero. The device driver
-00270  * should be called to send out the packet.
-00271  *
-00272  * The ususal way of calling the function is through a for() loop like
-00273  * this:
-00274  \code
-00275   for(i = 0; i < UIP_CONNS; ++i) {
-00276     uip_periodic(i);
-00277     if(uip_len > 0) {
-00278       devicedriver_send();
-00279     }
-00280   }
-00281  \endcode
-00282  *
-00283  * \note If you are writing a uIP device driver that needs ARP
-00284  * (Address Resolution Protocol), e.g., when running uIP over
-00285  * Ethernet, you will need to call the uip_arp_out() function before
-00286  * calling the device driver:
-00287  \code
-00288   for(i = 0; i < UIP_CONNS; ++i) {
-00289     uip_periodic(i);
-00290     if(uip_len > 0) {
-00291       uip_arp_out();
-00292       ethernet_devicedriver_send();
-00293     }
-00294   }
-00295  \endcode
-00296  *
-00297  * \param conn The number of the connection which is to be periodically polled.
-00298  *
-00299  * \hideinitializer
-00300  */
-00301 #define uip_periodic(conn) do { uip_conn = &uip_conns[conn]; \
-00302                                 uip_process(UIP_TIMER); } while (0)
-00303 
-00304 /**
-00305  *
-00306  *
-00307  */
-00308 #define uip_conn_active(conn) (uip_conns[conn].tcpstateflags != UIP_CLOSED)
-00309 
-00310 /**
-00311  * Perform periodic processing for a connection identified by a pointer
-00312  * to its structure.
-00313  *
-00314  * Same as uip_periodic() but takes a pointer to the actual uip_conn
-00315  * struct instead of an integer as its argument. This function can be
-00316  * used to force periodic processing of a specific connection.
-00317  *
-00318  * \param conn A pointer to the uip_conn struct for the connection to
-00319  * be processed.
-00320  *
-00321  * \hideinitializer
-00322  */
-00323 #define uip_periodic_conn(conn) do { uip_conn = conn; \
-00324                                      uip_process(UIP_TIMER); } while (0)
-00325 
-00326 /**
-00327  * Reuqest that a particular connection should be polled.
-00328  *
-00329  * Similar to uip_periodic_conn() but does not perform any timer
-00330  * processing. The application is polled for new data.
-00331  *
-00332  * \param conn A pointer to the uip_conn struct for the connection to
-00333  * be processed.
-00334  *
-00335  * \hideinitializer
-00336  */
-00337 #define uip_poll_conn(conn) do { uip_conn = conn; \
-00338                                  uip_process(UIP_POLL_REQUEST); } while (0)
-00339 
-00340 
-00341 #if UIP_UDP
-00342 /**
-00343  * Periodic processing for a UDP connection identified by its number.
-00344  *
-00345  * This function is essentially the same as uip_periodic(), but for
-00346  * UDP connections. It is called in a similar fashion as the
-00347  * uip_periodic() function:
-00348  \code
-00349   for(i = 0; i < UIP_UDP_CONNS; i++) {
-00350     uip_udp_periodic(i);
-00351     if(uip_len > 0) {
-00352       devicedriver_send();
-00353     }
-00354   }
-00355  \endcode
-00356  *
-00357  * \note As for the uip_periodic() function, special care has to be
-00358  * taken when using uIP together with ARP and Ethernet:
-00359  \code
-00360   for(i = 0; i < UIP_UDP_CONNS; i++) {
-00361     uip_udp_periodic(i);
-00362     if(uip_len > 0) {
-00363       uip_arp_out();
-00364       ethernet_devicedriver_send();
-00365     }
-00366   }
-00367  \endcode
-00368  *
-00369  * \param conn The number of the UDP connection to be processed.
-00370  *
-00371  * \hideinitializer
-00372  */
-00373 #define uip_udp_periodic(conn) do { uip_udp_conn = &uip_udp_conns[conn]; \
-00374                                 uip_process(UIP_UDP_TIMER); } while (0)
-00375 
-00376 /**
-00377  * Periodic processing for a UDP connection identified by a pointer to
-00378  * its structure.
-00379  *
-00380  * Same as uip_udp_periodic() but takes a pointer to the actual
-00381  * uip_conn struct instead of an integer as its argument. This
-00382  * function can be used to force periodic processing of a specific
-00383  * connection.
-00384  *
-00385  * \param conn A pointer to the uip_udp_conn struct for the connection
-00386  * to be processed.
-00387  *
-00388  * \hideinitializer
-00389  */
-00390 #define uip_udp_periodic_conn(conn) do { uip_udp_conn = conn; \
-00391                                          uip_process(UIP_UDP_TIMER); } while (0)
-00392 
-00393 
-00394 #endif /* UIP_UDP */
-00395 
-00396 /**
-00397  * The uIP packet buffer.
-00398  *
-00399  * The uip_buf array is used to hold incoming and outgoing
-00400  * packets. The device driver should place incoming data into this
-00401  * buffer. When sending data, the device driver should read the link
-00402  * level headers and the TCP/IP headers from this buffer. The size of
-00403  * the link level headers is configured by the UIP_LLH_LEN define.
-00404  *
-00405  * \note The application data need not be placed in this buffer, so
-00406  * the device driver must read it from the place pointed to by the
-00407  * uip_appdata pointer as illustrated by the following example:
-00408  \code
-00409  void
-00410  devicedriver_send(void)
-00411  {
-00412     hwsend(&uip_buf[0], UIP_LLH_LEN);
-00413     if(uip_len <= UIP_LLH_LEN + UIP_TCPIP_HLEN) {
-00414       hwsend(&uip_buf[UIP_LLH_LEN], uip_len - UIP_LLH_LEN);
-00415     } else {
-00416       hwsend(&uip_buf[UIP_LLH_LEN], UIP_TCPIP_HLEN);
-00417       hwsend(uip_appdata, uip_len - UIP_TCPIP_HLEN - UIP_LLH_LEN);
-00418     }
-00419  }
-00420  \endcode
-00421  */
-00422 extern u8_t uip_buf[UIP_BUFSIZE+2];
-00423 
-00424 /** @} */
-00425 
-00426 /*---------------------------------------------------------------------------*/
-00427 /* Functions that are used by the uIP application program. Opening and
-00428  * closing connections, sending and receiving data, etc. is all
-00429  * handled by the functions below.
-00430 */
-00431 /**
-00432  * \defgroup uipappfunc uIP application functions
-00433  * @{
-00434  *
-00435  * Functions used by an application running of top of uIP.
-00436  */
-00437 
-00438 /**
-00439  * Start listening to the specified port.
-00440  *
-00441  * \note Since this function expects the port number in network byte
-00442  * order, a conversion using HTONS() or htons() is necessary.
-00443  *
-00444  \code
-00445  uip_listen(HTONS(80));
-00446  \endcode
-00447  *
-00448  * \param port A 16-bit port number in network byte order.
-00449  */
-00450 void uip_listen(u16_t port);
-00451 
-00452 /**
-00453  * Stop listening to the specified port.
-00454  *
-00455  * \note Since this function expects the port number in network byte
-00456  * order, a conversion using HTONS() or htons() is necessary.
-00457  *
-00458  \code
-00459  uip_unlisten(HTONS(80));
-00460  \endcode
-00461  *
-00462  * \param port A 16-bit port number in network byte order.
-00463  */
-00464 void uip_unlisten(u16_t port);
-00465 
-00466 /**
-00467  * Connect to a remote host using TCP.
-00468  *
-00469  * This function is used to start a new connection to the specified
-00470  * port on the specied host. It allocates a new connection identifier,
-00471  * sets the connection to the SYN_SENT state and sets the
-00472  * retransmission timer to 0. This will cause a TCP SYN segment to be
-00473  * sent out the next time this connection is periodically processed,
-00474  * which usually is done within 0.5 seconds after the call to
-00475  * uip_connect().
-00476  *
-00477  * \note This function is avaliable only if support for active open
-00478  * has been configured by defining UIP_ACTIVE_OPEN to 1 in uipopt.h.
-00479  *
-00480  * \note Since this function requires the port number to be in network
-00481  * byte order, a conversion using HTONS() or htons() is necessary.
-00482  *
-00483  \code
-00484  uip_ipaddr_t ipaddr;
-00485 
-00486  uip_ipaddr(&ipaddr, 192,168,1,2);
-00487  uip_connect(&ipaddr, HTONS(80));
-00488  \endcode
-00489  *
-00490  * \param ripaddr The IP address of the remote hot.
-00491  *
-00492  * \param port A 16-bit port number in network byte order.
-00493  *
-00494  * \return A pointer to the uIP connection identifier for the new connection,
-00495  * or NULL if no connection could be allocated.
-00496  *
-00497  */
-00498 struct uip_conn *uip_connect(uip_ipaddr_t *ripaddr, u16_t port);
-00499 
-00500 
-00501 
-00502 /**
-00503  * \internal
-00504  *
-00505  * Check if a connection has outstanding (i.e., unacknowledged) data.
-00506  *
-00507  * \param conn A pointer to the uip_conn structure for the connection.
-00508  *
-00509  * \hideinitializer
-00510  */
-00511 #define uip_outstanding(conn) ((conn)->len)
-00512 
-00513 /**
-00514  * Send data on the current connection.
-00515  *
-00516  * This function is used to send out a single segment of TCP
-00517  * data. Only applications that have been invoked by uIP for event
-00518  * processing can send data.
-00519  *
-00520  * The amount of data that actually is sent out after a call to this
-00521  * funcion is determined by the maximum amount of data TCP allows. uIP
-00522  * will automatically crop the data so that only the appropriate
-00523  * amount of data is sent. The function uip_mss() can be used to query
-00524  * uIP for the amount of data that actually will be sent.
-00525  *
-00526  * \note This function does not guarantee that the sent data will
-00527  * arrive at the destination. If the data is lost in the network, the
-00528  * application will be invoked with the uip_rexmit() event being
-00529  * set. The application will then have to resend the data using this
-00530  * function.
-00531  *
-00532  * \param data A pointer to the data which is to be sent.
-00533  *
-00534  * \param len The maximum amount of data bytes to be sent.
-00535  *
-00536  * \hideinitializer
-00537  */
-00538 void uip_send(const void *data, int len);
-00539 
-00540 /**
-00541  * The length of any incoming data that is currently avaliable (if avaliable)
-00542  * in the uip_appdata buffer.
-00543  *
-00544  * The test function uip_data() must first be used to check if there
-00545  * is any data available at all.
-00546  *
-00547  * \hideinitializer
-00548  */
-00549 /*void uip_datalen(void);*/
-00550 #define uip_datalen()       uip_len
-00551 
-00552 /**
-00553  * The length of any out-of-band data (urgent data) that has arrived
-00554  * on the connection.
-00555  *
-00556  * \note The configuration parameter UIP_URGDATA must be set for this
-00557  * function to be enabled.
-00558  *
-00559  * \hideinitializer
-00560  */
-00561 #define uip_urgdatalen()    uip_urglen
-00562 
-00563 /**
-00564  * Close the current connection.
-00565  *
-00566  * This function will close the current connection in a nice way.
-00567  *
-00568  * \hideinitializer
-00569  */
-00570 #define uip_close()         (uip_flags = UIP_CLOSE)
-00571 
-00572 /**
-00573  * Abort the current connection.
-00574  *
-00575  * This function will abort (reset) the current connection, and is
-00576  * usually used when an error has occured that prevents using the
-00577  * uip_close() function.
-00578  *
-00579  * \hideinitializer
-00580  */
-00581 #define uip_abort()         (uip_flags = UIP_ABORT)
-00582 
-00583 /**
-00584  * Tell the sending host to stop sending data.
-00585  *
-00586  * This function will close our receiver's window so that we stop
-00587  * receiving data for the current connection.
-00588  *
-00589  * \hideinitializer
-00590  */
-00591 #define uip_stop()          (uip_conn->tcpstateflags |= UIP_STOPPED)
-00592 
-00593 /**
-00594  * Find out if the current connection has been previously stopped with
-00595  * uip_stop().
-00596  *
-00597  * \hideinitializer
-00598  */
-00599 #define uip_stopped(conn)   ((conn)->tcpstateflags & UIP_STOPPED)
-00600 
-00601 /**
-00602  * Restart the current connection, if is has previously been stopped
-00603  * with uip_stop().
-00604  *
-00605  * This function will open the receiver's window again so that we
-00606  * start receiving data for the current connection.
-00607  *
-00608  * \hideinitializer
-00609  */
-00610 #define uip_restart()         do { uip_flags |= UIP_NEWDATA; \
-00611                                    uip_conn->tcpstateflags &= ~UIP_STOPPED; \
-00612                               } while(0)
-00613 
-00614 
-00615 /* uIP tests that can be made to determine in what state the current
-00616    connection is, and what the application function should do. */
-00617 
-00618 /**
-00619  * Is the current connection a UDP connection?
-00620  *
-00621  * This function checks whether the current connection is a UDP connection.
-00622  *
-00623  * \hideinitializer
-00624  *
-00625  */
-00626 #define uip_udpconnection() (uip_conn == NULL)
-00627 
-00628 /**
-00629  * Is new incoming data available?
-00630  *
-00631  * Will reduce to non-zero if there is new data for the application
-00632  * present at the uip_appdata pointer. The size of the data is
-00633  * avaliable through the uip_len variable.
-00634  *
-00635  * \hideinitializer
-00636  */
-00637 #define uip_newdata()   (uip_flags & UIP_NEWDATA)
-00638 
-00639 /**
-00640  * Has previously sent data been acknowledged?
-00641  *
-00642  * Will reduce to non-zero if the previously sent data has been
-00643  * acknowledged by the remote host. This means that the application
-00644  * can send new data.
-00645  *
-00646  * \hideinitializer
-00647  */
-00648 #define uip_acked()   (uip_flags & UIP_ACKDATA)
-00649 
-00650 /**
-00651  * Has the connection just been connected?
-00652  *
-00653  * Reduces to non-zero if the current connection has been connected to
-00654  * a remote host. This will happen both if the connection has been
-00655  * actively opened (with uip_connect()) or passively opened (with
-00656  * uip_listen()).
-00657  *
-00658  * \hideinitializer
-00659  */
-00660 #define uip_connected() (uip_flags & UIP_CONNECTED)
-00661 
-00662 /**
-00663  * Has the connection been closed by the other end?
-00664  *
-00665  * Is non-zero if the connection has been closed by the remote
-00666  * host. The application may then do the necessary clean-ups.
-00667  *
-00668  * \hideinitializer
-00669  */
-00670 #define uip_closed()    (uip_flags & UIP_CLOSE)
-00671 
-00672 /**
-00673  * Has the connection been aborted by the other end?
-00674  *
-00675  * Non-zero if the current connection has been aborted (reset) by the
-00676  * remote host.
-00677  *
-00678  * \hideinitializer
-00679  */
-00680 #define uip_aborted()    (uip_flags & UIP_ABORT)
-00681 
-00682 /**
-00683  * Has the connection timed out?
-00684  *
-00685  * Non-zero if the current connection has been aborted due to too many
-00686  * retransmissions.
-00687  *
-00688  * \hideinitializer
-00689  */
-00690 #define uip_timedout()    (uip_flags & UIP_TIMEDOUT)
-00691 
-00692 /**
-00693  * Do we need to retransmit previously data?
-00694  *
-00695  * Reduces to non-zero if the previously sent data has been lost in
-00696  * the network, and the application should retransmit it. The
-00697  * application should send the exact same data as it did the last
-00698  * time, using the uip_send() function.
-00699  *
-00700  * \hideinitializer
-00701  */
-00702 #define uip_rexmit()     (uip_flags & UIP_REXMIT)
-00703 
-00704 /**
-00705  * Is the connection being polled by uIP?
-00706  *
-00707  * Is non-zero if the reason the application is invoked is that the
-00708  * current connection has been idle for a while and should be
-00709  * polled.
-00710  *
-00711  * The polling event can be used for sending data without having to
-00712  * wait for the remote host to send data.
-00713  *
-00714  * \hideinitializer
-00715  */
-00716 #define uip_poll()       (uip_flags & UIP_POLL)
-00717 
-00718 /**
-00719  * Get the initial maxium segment size (MSS) of the current
-00720  * connection.
-00721  *
-00722  * \hideinitializer
-00723  */
-00724 #define uip_initialmss()             (uip_conn->initialmss)
-00725 
-00726 /**
-00727  * Get the current maxium segment size that can be sent on the current
-00728  * connection.
-00729  *
-00730  * The current maxiumum segment size that can be sent on the
-00731  * connection is computed from the receiver's window and the MSS of
-00732  * the connection (which also is available by calling
-00733  * uip_initialmss()).
-00734  *
-00735  * \hideinitializer
-00736  */
-00737 #define uip_mss()             (uip_conn->mss)
-00738 
-00739 /**
-00740  * Set up a new UDP connection.
-00741  *
-00742  * This function sets up a new UDP connection. The function will
-00743  * automatically allocate an unused local port for the new
-00744  * connection. However, another port can be chosen by using the
-00745  * uip_udp_bind() call, after the uip_udp_new() function has been
-00746  * called.
-00747  *
-00748  * Example:
-00749  \code
-00750  uip_ipaddr_t addr;
-00751  struct uip_udp_conn *c;
-00752  
-00753  uip_ipaddr(&addr, 192,168,2,1);
-00754  c = uip_udp_new(&addr, HTONS(12345));
-00755  if(c != NULL) {
-00756    uip_udp_bind(c, HTONS(12344));
-00757  }
-00758  \endcode
-00759  * \param ripaddr The IP address of the remote host.
-00760  *
-00761  * \param rport The remote port number in network byte order.
-00762  *
-00763  * \return The uip_udp_conn structure for the new connection or NULL
-00764  * if no connection could be allocated.
-00765  */
-00766 struct uip_udp_conn *uip_udp_new(uip_ipaddr_t *ripaddr, u16_t rport);
-00767 
-00768 /**
-00769  * Removed a UDP connection.
-00770  *
-00771  * \param conn A pointer to the uip_udp_conn structure for the connection.
-00772  *
-00773  * \hideinitializer
-00774  */
-00775 #define uip_udp_remove(conn) (conn)->lport = 0
-00776 
-00777 /**
-00778  * Bind a UDP connection to a local port.
-00779  *
-00780  * \param conn A pointer to the uip_udp_conn structure for the
-00781  * connection.
-00782  *
-00783  * \param port The local port number, in network byte order.
-00784  *
-00785  * \hideinitializer
-00786  */
-00787 #define uip_udp_bind(conn, port) (conn)->lport = port
-00788 
-00789 /**
-00790  * Send a UDP datagram of length len on the current connection.
-00791  *
-00792  * This function can only be called in response to a UDP event (poll
-00793  * or newdata). The data must be present in the uip_buf buffer, at the
-00794  * place pointed to by the uip_appdata pointer.
-00795  *
-00796  * \param len The length of the data in the uip_buf buffer.
-00797  *
-00798  * \hideinitializer
-00799  */
-00800 #define uip_udp_send(len) uip_send((char *)uip_appdata, len)
-00801 
-00802 /** @} */
-00803 
-00804 /* uIP convenience and converting functions. */
-00805 
-00806 /**
-00807  * \defgroup uipconvfunc uIP conversion functions
-00808  * @{
-00809  *
-00810  * These functions can be used for converting between different data
-00811  * formats used by uIP.
-00812  */
-00813  
-00814 /**
-00815  * Construct an IP address from four bytes.
-00816  *
-00817  * This function constructs an IP address of the type that uIP handles
-00818  * internally from four bytes. The function is handy for specifying IP
-00819  * addresses to use with e.g. the uip_connect() function.
-00820  *
-00821  * Example:
-00822  \code
-00823  uip_ipaddr_t ipaddr;
-00824  struct uip_conn *c;
-00825  
-00826  uip_ipaddr(&ipaddr, 192,168,1,2);
-00827  c = uip_connect(&ipaddr, HTONS(80));
-00828  \endcode
-00829  *
-00830  * \param addr A pointer to a uip_ipaddr_t variable that will be
-00831  * filled in with the IP address.
-00832  *
-00833  * \param addr0 The first octet of the IP address.
-00834  * \param addr1 The second octet of the IP address.
-00835  * \param addr2 The third octet of the IP address.
-00836  * \param addr3 The forth octet of the IP address.
-00837  *
-00838  * \hideinitializer
-00839  */
-00840 #define uip_ipaddr(addr, addr0,addr1,addr2,addr3) do { \
-00841                      ((u16_t *)(addr))[0] = HTONS(((addr0) << 8) | (addr1)); \
-00842                      ((u16_t *)(addr))[1] = HTONS(((addr2) << 8) | (addr3)); \
-00843                   } while(0)
-00844 
-00845 /**
-00846  * Construct an IPv6 address from eight 16-bit words.
-00847  *
-00848  * This function constructs an IPv6 address.
-00849  *
-00850  * \hideinitializer
-00851  */
-00852 #define uip_ip6addr(addr, addr0,addr1,addr2,addr3,addr4,addr5,addr6,addr7) do { \
-00853                      ((u16_t *)(addr))[0] = HTONS((addr0)); \
-00854                      ((u16_t *)(addr))[1] = HTONS((addr1)); \
-00855                      ((u16_t *)(addr))[2] = HTONS((addr2)); \
-00856                      ((u16_t *)(addr))[3] = HTONS((addr3)); \
-00857                      ((u16_t *)(addr))[4] = HTONS((addr4)); \
-00858                      ((u16_t *)(addr))[5] = HTONS((addr5)); \
-00859                      ((u16_t *)(addr))[6] = HTONS((addr6)); \
-00860                      ((u16_t *)(addr))[7] = HTONS((addr7)); \
-00861                   } while(0)
-00862 
-00863 /**
-00864  * Copy an IP address to another IP address.
-00865  *
-00866  * Copies an IP address from one place to another.
-00867  *
-00868  * Example:
-00869  \code
-00870  uip_ipaddr_t ipaddr1, ipaddr2;
-00871 
-00872  uip_ipaddr(&ipaddr1, 192,16,1,2);
-00873  uip_ipaddr_copy(&ipaddr2, &ipaddr1);
-00874  \endcode
-00875  *
-00876  * \param dest The destination for the copy.
-00877  * \param src The source from where to copy.
-00878  *
-00879  * \hideinitializer
-00880  */
-00881 #if !UIP_CONF_IPV6
-00882 #define uip_ipaddr_copy(dest, src) do { \
-00883                      ((u16_t *)dest)[0] = ((u16_t *)src)[0]; \
-00884                      ((u16_t *)dest)[1] = ((u16_t *)src)[1]; \
-00885                   } while(0)
-00886 #else /* !UIP_CONF_IPV6 */
-00887 #define uip_ipaddr_copy(dest, src) memcpy(dest, src, sizeof(uip_ip6addr_t))
-00888 #endif /* !UIP_CONF_IPV6 */
-00889 
-00890 /**
-00891  * Compare two IP addresses
-00892  *
-00893  * Compares two IP addresses.
-00894  *
-00895  * Example:
-00896  \code
-00897  uip_ipaddr_t ipaddr1, ipaddr2;
-00898 
-00899  uip_ipaddr(&ipaddr1, 192,16,1,2);
-00900  if(uip_ipaddr_cmp(&ipaddr2, &ipaddr1)) {
-00901     printf("They are the same");
-00902  }
-00903  \endcode
-00904  *
-00905  * \param addr1 The first IP address.
-00906  * \param addr2 The second IP address.
-00907  *
-00908  * \hideinitializer
-00909  */
-00910 #if !UIP_CONF_IPV6
-00911 #define uip_ipaddr_cmp(addr1, addr2) (((u16_t *)addr1)[0] == ((u16_t *)addr2)[0] && \
-00912                                       ((u16_t *)addr1)[1] == ((u16_t *)addr2)[1])
-00913 #else /* !UIP_CONF_IPV6 */
-00914 #define uip_ipaddr_cmp(addr1, addr2) (memcmp(addr1, addr2, sizeof(uip_ip6addr_t)) == 0)
-00915 #endif /* !UIP_CONF_IPV6 */
-00916 
-00917 /**
-00918  * Compare two IP addresses with netmasks
-00919  *
-00920  * Compares two IP addresses with netmasks. The masks are used to mask
-00921  * out the bits that are to be compared.
-00922  *
-00923  * Example:
-00924  \code
-00925  uip_ipaddr_t ipaddr1, ipaddr2, mask;
-00926 
-00927  uip_ipaddr(&mask, 255,255,255,0);
-00928  uip_ipaddr(&ipaddr1, 192,16,1,2);
-00929  uip_ipaddr(&ipaddr2, 192,16,1,3);
-00930  if(uip_ipaddr_maskcmp(&ipaddr1, &ipaddr2, &mask)) {
-00931     printf("They are the same");
-00932  }
-00933  \endcode
-00934  *
-00935  * \param addr1 The first IP address.
-00936  * \param addr2 The second IP address.
-00937  * \param mask The netmask.
-00938  *
-00939  * \hideinitializer
-00940  */
-00941 #define uip_ipaddr_maskcmp(addr1, addr2, mask) \
-00942                           (((((u16_t *)addr1)[0] & ((u16_t *)mask)[0]) == \
-00943                             (((u16_t *)addr2)[0] & ((u16_t *)mask)[0])) && \
-00944                            ((((u16_t *)addr1)[1] & ((u16_t *)mask)[1]) == \
-00945                             (((u16_t *)addr2)[1] & ((u16_t *)mask)[1])))
-00946 
-00947 
-00948 /**
-00949  * Mask out the network part of an IP address.
-00950  *
-00951  * Masks out the network part of an IP address, given the address and
-00952  * the netmask.
-00953  *
-00954  * Example:
-00955  \code
-00956  uip_ipaddr_t ipaddr1, ipaddr2, netmask;
-00957 
-00958  uip_ipaddr(&ipaddr1, 192,16,1,2);
-00959  uip_ipaddr(&netmask, 255,255,255,0);
-00960  uip_ipaddr_mask(&ipaddr2, &ipaddr1, &netmask);
-00961  \endcode
-00962  *
-00963  * In the example above, the variable "ipaddr2" will contain the IP
-00964  * address 192.168.1.0.
-00965  *
-00966  * \param dest Where the result is to be placed.
-00967  * \param src The IP address.
-00968  * \param mask The netmask.
-00969  *
-00970  * \hideinitializer
-00971  */
-00972 #define uip_ipaddr_mask(dest, src, mask) do { \
-00973                      ((u16_t *)dest)[0] = ((u16_t *)src)[0] & ((u16_t *)mask)[0]; \
-00974                      ((u16_t *)dest)[1] = ((u16_t *)src)[1] & ((u16_t *)mask)[1]; \
-00975                   } while(0)
-00976 
-00977 /**
-00978  * Pick the first octet of an IP address.
-00979  *
-00980  * Picks out the first octet of an IP address.
-00981  *
-00982  * Example:
-00983  \code
-00984  uip_ipaddr_t ipaddr;
-00985  u8_t octet;
-00986 
-00987  uip_ipaddr(&ipaddr, 1,2,3,4);
-00988  octet = uip_ipaddr1(&ipaddr);
-00989  \endcode
-00990  *
-00991  * In the example above, the variable "octet" will contain the value 1.
-00992  *
-00993  * \hideinitializer
-00994  */
-00995 #define uip_ipaddr1(addr) (htons(((u16_t *)(addr))[0]) >> 8)
-00996 
-00997 /**
-00998  * Pick the second octet of an IP address.
-00999  *
-01000  * Picks out the second octet of an IP address.
-01001  *
-01002  * Example:
-01003  \code
-01004  uip_ipaddr_t ipaddr;
-01005  u8_t octet;
-01006 
-01007  uip_ipaddr(&ipaddr, 1,2,3,4);
-01008  octet = uip_ipaddr2(&ipaddr);
-01009  \endcode
-01010  *
-01011  * In the example above, the variable "octet" will contain the value 2.
-01012  *
-01013  * \hideinitializer
-01014  */
-01015 #define uip_ipaddr2(addr) (htons(((u16_t *)(addr))[0]) & 0xff)
-01016 
-01017 /**
-01018  * Pick the third octet of an IP address.
-01019  *
-01020  * Picks out the third octet of an IP address.
-01021  *
-01022  * Example:
-01023  \code
-01024  uip_ipaddr_t ipaddr;
-01025  u8_t octet;
-01026 
-01027  uip_ipaddr(&ipaddr, 1,2,3,4);
-01028  octet = uip_ipaddr3(&ipaddr);
-01029  \endcode
-01030  *
-01031  * In the example above, the variable "octet" will contain the value 3.
-01032  *
-01033  * \hideinitializer
-01034  */
-01035 #define uip_ipaddr3(addr) (htons(((u16_t *)(addr))[1]) >> 8)
-01036 
-01037 /**
-01038  * Pick the fourth octet of an IP address.
-01039  *
-01040  * Picks out the fourth octet of an IP address.
-01041  *
-01042  * Example:
-01043  \code
-01044  uip_ipaddr_t ipaddr;
-01045  u8_t octet;
-01046 
-01047  uip_ipaddr(&ipaddr, 1,2,3,4);
-01048  octet = uip_ipaddr4(&ipaddr);
-01049  \endcode
-01050  *
-01051  * In the example above, the variable "octet" will contain the value 4.
-01052  *
-01053  * \hideinitializer
-01054  */
-01055 #define uip_ipaddr4(addr) (htons(((u16_t *)(addr))[1]) & 0xff)
-01056 
-01057 /**
-01058  * Convert 16-bit quantity from host byte order to network byte order.
-01059  *
-01060  * This macro is primarily used for converting constants from host
-01061  * byte order to network byte order. For converting variables to
-01062  * network byte order, use the htons() function instead.
-01063  *
-01064  * \hideinitializer
-01065  */
-01066 #ifndef HTONS
-01067 #   if UIP_BYTE_ORDER == UIP_BIG_ENDIAN
-01068 #      define HTONS(n) (n)
-01069 #   else /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */
-01070 #      define HTONS(n) (u16_t)((((u16_t) (n)) << 8) | (((u16_t) (n)) >> 8))
-01071 #   endif /* UIP_BYTE_ORDER == UIP_BIG_ENDIAN */
-01072 #else
-01073 #error "HTONS already defined!"
-01074 #endif /* HTONS */
-01075 
-01076 /**
-01077  * Convert 16-bit quantity from host byte order to network byte order.
-01078  *
-01079  * This function is primarily used for converting variables from host
-01080  * byte order to network byte order. For converting constants to
-01081  * network byte order, use the HTONS() macro instead.
-01082  */
-01083 #ifndef htons
-01084 u16_t htons(u16_t val);
-01085 #endif /* htons */
-01086 #ifndef ntohs
-01087 #define ntohs htons
-01088 #endif
-01089 
-01090 /** @} */
-01091 
-01092 /**
-01093  * Pointer to the application data in the packet buffer.
-01094  *
-01095  * This pointer points to the application data when the application is
-01096  * called. If the application wishes to send data, the application may
-01097  * use this space to write the data into before calling uip_send().
-01098  */
-01099 extern void *uip_appdata;
-01100 
-01101 #if UIP_URGDATA > 0
-01102 /* u8_t *uip_urgdata:
-01103  *
-01104  * This pointer points to any urgent data that has been received. Only
-01105  * present if compiled with support for urgent data (UIP_URGDATA).
-01106  */
-01107 extern void *uip_urgdata;
-01108 #endif /* UIP_URGDATA > 0 */
-01109 
-01110 
-01111 /**
-01112  * \defgroup uipdrivervars Variables used in uIP device drivers
-01113  * @{
-01114  *
-01115  * uIP has a few global variables that are used in device drivers for
-01116  * uIP.
-01117  */
-01118 
-01119 /**
-01120  * The length of the packet in the uip_buf buffer.
-01121  *
-01122  * The global variable uip_len holds the length of the packet in the
-01123  * uip_buf buffer.
-01124  *
-01125  * When the network device driver calls the uIP input function,
-01126  * uip_len should be set to the length of the packet in the uip_buf
-01127  * buffer.
-01128  *
-01129  * When sending packets, the device driver should use the contents of
-01130  * the uip_len variable to determine the length of the outgoing
-01131  * packet.
-01132  *
-01133  */
-01134 extern u16_t uip_len;
-01135 
-01136 /** @} */
-01137 
-01138 #if UIP_URGDATA > 0
-01139 extern u16_t uip_urglen, uip_surglen;
-01140 #endif /* UIP_URGDATA > 0 */
-01141 
-01142 
-01143 /**
-01144  * Representation of a uIP TCP connection.
-01145  *
-01146  * The uip_conn structure is used for identifying a connection. All
-01147  * but one field in the structure are to be considered read-only by an
-01148  * application. The only exception is the appstate field whos purpose
-01149  * is to let the application store application-specific state (e.g.,
-01150  * file pointers) for the connection. The type of this field is
-01151  * configured in the "uipopt.h" header file.
-01152  */
-01153 struct uip_conn {
-01154   uip_ipaddr_t ripaddr;   /**< The IP address of the remote host. */
-01155   
-01156   u16_t lport;        /**< The local TCP port, in network byte order. */
-01157   u16_t rport;        /**< The local remote TCP port, in network byte
-01158                          order. */
-01159   
-01160   u8_t rcv_nxt[4];    /**< The sequence number that we expect to
-01161                          receive next. */
-01162   u8_t snd_nxt[4];    /**< The sequence number that was last sent by
-01163                          us. */
-01164   u16_t len;          /**< Length of the data that was previously sent. */
-01165   u16_t mss;          /**< Current maximum segment size for the
-01166                          connection. */
-01167   u16_t initialmss;   /**< Initial maximum segment size for the
-01168                          connection. */
-01169   u8_t sa;            /**< Retransmission time-out calculation state
-01170                          variable. */
-01171   u8_t sv;            /**< Retransmission time-out calculation state
-01172                          variable. */
-01173   u8_t rto;           /**< Retransmission time-out. */
-01174   u8_t tcpstateflags; /**< TCP state and flags. */
-01175   u8_t timer;         /**< The retransmission timer. */
-01176   u8_t nrtx;          /**< The number of retransmissions for the last
-01177                          segment sent. */
-01178 
-01179   /** The application state. */
-01180   uip_tcp_appstate_t appstate;
-01181 };
-01182 
-01183 
-01184 /**
-01185  * Pointer to the current TCP connection.
-01186  *
-01187  * The uip_conn pointer can be used to access the current TCP
-01188  * connection.
-01189  */
-01190 extern struct uip_conn *uip_conn;
-01191 /* The array containing all uIP connections. */
-01192 extern struct uip_conn uip_conns[UIP_CONNS];
-01193 /**
-01194  * \addtogroup uiparch
-01195  * @{
-01196  */
-01197 
-01198 /**
-01199  * 4-byte array used for the 32-bit sequence number calculations.
-01200  */
-01201 extern u8_t uip_acc32[4];
-01202 
-01203 /** @} */
-01204 
-01205 
-01206 #if UIP_UDP
-01207 /**
-01208  * Representation of a uIP UDP connection.
-01209  */
-01210 struct uip_udp_conn {
-01211   uip_ipaddr_t ripaddr;   /**< The IP address of the remote peer. */
-01212   u16_t lport;        /**< The local port number in network byte order. */
-01213   u16_t rport;        /**< The remote port number in network byte order. */
-01214   u8_t  ttl;          /**< Default time-to-live. */
-01215 
-01216   /** The application state. */
-01217   uip_udp_appstate_t appstate;
-01218 };
-01219 
-01220 /**
-01221  * The current UDP connection.
-01222  */
-01223 extern struct uip_udp_conn *uip_udp_conn;
-01224 extern struct uip_udp_conn uip_udp_conns[UIP_UDP_CONNS];
-01225 #endif /* UIP_UDP */
-01226 
-01227 /**
-01228  * The structure holding the TCP/IP statistics that are gathered if
-01229  * UIP_STATISTICS is set to 1.
-01230  *
-01231  */
-01232 struct uip_stats {
-01233   struct {
-01234     uip_stats_t drop;     /**< Number of dropped packets at the IP
-01235                              layer. */
-01236     uip_stats_t recv;     /**< Number of received packets at the IP
-01237                              layer. */
-01238     uip_stats_t sent;     /**< Number of sent packets at the IP
-01239                              layer. */
-01240     uip_stats_t vhlerr;   /**< Number of packets dropped due to wrong
-01241                              IP version or header length. */
-01242     uip_stats_t hblenerr; /**< Number of packets dropped due to wrong
-01243                              IP length, high byte. */
-01244     uip_stats_t lblenerr; /**< Number of packets dropped due to wrong
-01245                              IP length, low byte. */
-01246     uip_stats_t fragerr;  /**< Number of packets dropped since they
-01247                              were IP fragments. */
-01248     uip_stats_t chkerr;   /**< Number of packets dropped due to IP
-01249                              checksum errors. */
-01250     uip_stats_t protoerr; /**< Number of packets dropped since they
-01251                              were neither ICMP, UDP nor TCP. */
-01252   } ip;                   /**< IP statistics. */
-01253   struct {
-01254     uip_stats_t drop;     /**< Number of dropped ICMP packets. */
-01255     uip_stats_t recv;     /**< Number of received ICMP packets. */
-01256     uip_stats_t sent;     /**< Number of sent ICMP packets. */
-01257     uip_stats_t typeerr;  /**< Number of ICMP packets with a wrong
-01258                              type. */
-01259   } icmp;                 /**< ICMP statistics. */
-01260   struct {
-01261     uip_stats_t drop;     /**< Number of dropped TCP segments. */
-01262     uip_stats_t recv;     /**< Number of recived TCP segments. */
-01263     uip_stats_t sent;     /**< Number of sent TCP segments. */
-01264     uip_stats_t chkerr;   /**< Number of TCP segments with a bad
-01265                              checksum. */
-01266     uip_stats_t ackerr;   /**< Number of TCP segments with a bad ACK
-01267                              number. */
-01268     uip_stats_t rst;      /**< Number of recevied TCP RST (reset) segments. */
-01269     uip_stats_t rexmit;   /**< Number of retransmitted TCP segments. */
-01270     uip_stats_t syndrop;  /**< Number of dropped SYNs due to too few
-01271                              connections was avaliable. */
-01272     uip_stats_t synrst;   /**< Number of SYNs for closed ports,
-01273                              triggering a RST. */
-01274   } tcp;                  /**< TCP statistics. */
-01275 #if UIP_UDP
-01276   struct {
-01277     uip_stats_t drop;     /**< Number of dropped UDP segments. */
-01278     uip_stats_t recv;     /**< Number of recived UDP segments. */
-01279     uip_stats_t sent;     /**< Number of sent UDP segments. */
-01280     uip_stats_t chkerr;   /**< Number of UDP segments with a bad
-01281                              checksum. */
-01282   } udp;                  /**< UDP statistics. */
-01283 #endif /* UIP_UDP */
-01284 };
-01285 
-01286 /**
-01287  * The uIP TCP/IP statistics.
-01288  *
-01289  * This is the variable in which the uIP TCP/IP statistics are gathered.
-01290  */
-01291 extern struct uip_stats uip_stat;
-01292 
-01293 
-01294 /*---------------------------------------------------------------------------*/
-01295 /* All the stuff below this point is internal to uIP and should not be
-01296  * used directly by an application or by a device driver.
-01297  */
-01298 /*---------------------------------------------------------------------------*/
-01299 /* u8_t uip_flags:
-01300  *
-01301  * When the application is called, uip_flags will contain the flags
-01302  * that are defined in this file. Please read below for more
-01303  * infomation.
-01304  */
-01305 extern u8_t uip_flags;
-01306 
-01307 /* The following flags may be set in the global variable uip_flags
-01308    before calling the application callback. The UIP_ACKDATA,
-01309    UIP_NEWDATA, and UIP_CLOSE flags may both be set at the same time,
-01310    whereas the others are mutualy exclusive. Note that these flags
-01311    should *NOT* be accessed directly, but only through the uIP
-01312    functions/macros. */
-01313 
-01314 #define UIP_ACKDATA   1     /* Signifies that the outstanding data was
-01315                                acked and the application should send
-01316                                out new data instead of retransmitting
-01317                                the last data. */
-01318 #define UIP_NEWDATA   2     /* Flags the fact that the peer has sent
-01319                                us new data. */
-01320 #define UIP_REXMIT    4     /* Tells the application to retransmit the
-01321                                data that was last sent. */
-01322 #define UIP_POLL      8     /* Used for polling the application, to
-01323                                check if the application has data that
-01324                                it wants to send. */
-01325 #define UIP_CLOSE     16    /* The remote host has closed the
-01326                                connection, thus the connection has
-01327                                gone away. Or the application signals
-01328                                that it wants to close the
-01329                                connection. */
-01330 #define UIP_ABORT     32    /* The remote host has aborted the
-01331                                connection, thus the connection has
-01332                                gone away. Or the application signals
-01333                                that it wants to abort the
-01334                                connection. */
-01335 #define UIP_CONNECTED 64    /* We have got a connection from a remote
-01336                                host and have set up a new connection
-01337                                for it, or an active connection has
-01338                                been successfully established. */
-01339 
-01340 #define UIP_TIMEDOUT  128   /* The connection has been aborted due to
-01341                                too many retransmissions. */
-01342 
-01343 /* uip_process(flag):
-01344  *
-01345  * The actual uIP function which does all the work.
-01346  */
-01347 void uip_process(u8_t flag);
-01348 
-01349 /* The following flags are passed as an argument to the uip_process()
-01350    function. They are used to distinguish between the two cases where
-01351    uip_process() is called. It can be called either because we have
-01352    incoming data that should be processed, or because the periodic
-01353    timer has fired. These values are never used directly, but only in
-01354    the macrose defined in this file. */
-01355  
-01356 #define UIP_DATA          1     /* Tells uIP that there is incoming
-01357                                    data in the uip_buf buffer. The
-01358                                    length of the data is stored in the
-01359                                    global variable uip_len. */
-01360 #define UIP_TIMER         2     /* Tells uIP that the periodic timer
-01361                                    has fired. */
-01362 #define UIP_POLL_REQUEST  3     /* Tells uIP that a connection should
-01363                                    be polled. */
-01364 #define UIP_UDP_SEND_CONN 4     /* Tells uIP that a UDP datagram
-01365                                    should be constructed in the
-01366                                    uip_buf buffer. */
-01367 #if UIP_UDP
-01368 #define UIP_UDP_TIMER     5
-01369 #endif /* UIP_UDP */
-01370 
-01371 /* The TCP states used in the uip_conn->tcpstateflags. */
-01372 #define UIP_CLOSED      0
-01373 #define UIP_SYN_RCVD    1
-01374 #define UIP_SYN_SENT    2
-01375 #define UIP_ESTABLISHED 3
-01376 #define UIP_FIN_WAIT_1  4
-01377 #define UIP_FIN_WAIT_2  5
-01378 #define UIP_CLOSING     6
-01379 #define UIP_TIME_WAIT   7
-01380 #define UIP_LAST_ACK    8
-01381 #define UIP_TS_MASK     15
-01382   
-01383 #define UIP_STOPPED      16
-01384 
-01385 /* The TCP and IP headers. */
-01386 struct uip_tcpip_hdr {
-01387 #if UIP_CONF_IPV6
-01388   /* IPv6 header. */
-01389   u8_t vtc,
-01390     tcflow;
-01391   u16_t flow;
-01392   u8_t len[2];
-01393   u8_t proto, ttl;
-01394   uip_ip6addr_t srcipaddr, destipaddr;
-01395 #else /* UIP_CONF_IPV6 */
-01396   /* IPv4 header. */
-01397   u8_t vhl,
-01398     tos,
-01399     len[2],
-01400     ipid[2],
-01401     ipoffset[2],
-01402     ttl,
-01403     proto;
-01404   u16_t ipchksum;
-01405   u16_t srcipaddr[2],
-01406     destipaddr[2];
-01407 #endif /* UIP_CONF_IPV6 */
-01408   
-01409   /* TCP header. */
-01410   u16_t srcport,
-01411     destport;
-01412   u8_t seqno[4],
-01413     ackno[4],
-01414     tcpoffset,
-01415     flags,
-01416     wnd[2];
-01417   u16_t tcpchksum;
-01418   u8_t urgp[2];
-01419   u8_t optdata[4];
-01420 };
-01421 
-01422 /* The ICMP and IP headers. */
-01423 struct uip_icmpip_hdr {
-01424 #if UIP_CONF_IPV6
-01425   /* IPv6 header. */
-01426   u8_t vtc,
-01427     tcf;
-01428   u16_t flow;
-01429   u8_t len[2];
-01430   u8_t proto, ttl;
-01431   uip_ip6addr_t srcipaddr, destipaddr;
-01432 #else /* UIP_CONF_IPV6 */
-01433   /* IPv4 header. */
-01434   u8_t vhl,
-01435     tos,
-01436     len[2],
-01437     ipid[2],
-01438     ipoffset[2],
-01439     ttl,
-01440     proto;
-01441   u16_t ipchksum;
-01442   u16_t srcipaddr[2],
-01443     destipaddr[2];
-01444 #endif /* UIP_CONF_IPV6 */
-01445   
-01446   /* ICMP (echo) header. */
-01447   u8_t type, icode;
-01448   u16_t icmpchksum;
-01449 #if !UIP_CONF_IPV6
-01450   u16_t id, seqno;
-01451 #else /* !UIP_CONF_IPV6 */
-01452   u8_t flags, reserved1, reserved2, reserved3;
-01453   u8_t icmp6data[16];
-01454   u8_t options[1];
-01455 #endif /* !UIP_CONF_IPV6 */
-01456 };
-01457 
-01458 
-01459 /* The UDP and IP headers. */
-01460 struct uip_udpip_hdr {
-01461 #if UIP_CONF_IPV6
-01462   /* IPv6 header. */
-01463   u8_t vtc,
-01464     tcf;
-01465   u16_t flow;
-01466   u8_t len[2];
-01467   u8_t proto, ttl;
-01468   uip_ip6addr_t srcipaddr, destipaddr;
-01469 #else /* UIP_CONF_IPV6 */
-01470   /* IP header. */
-01471   u8_t vhl,
-01472     tos,
-01473     len[2],
-01474     ipid[2],
-01475     ipoffset[2],
-01476     ttl,
-01477     proto;
-01478   u16_t ipchksum;
-01479   u16_t srcipaddr[2],
-01480     destipaddr[2];
-01481 #endif /* UIP_CONF_IPV6 */
-01482   
-01483   /* UDP header. */
-01484   u16_t srcport,
-01485     destport;
-01486   u16_t udplen;
-01487   u16_t udpchksum;
-01488 };
-01489 
-01490 
-01491 
-01492 /**
-01493  * The buffer size available for user data in the \ref uip_buf buffer.
-01494  *
-01495  * This macro holds the available size for user data in the \ref
-01496  * uip_buf buffer. The macro is intended to be used for checking
-01497  * bounds of available user data.
-01498  *
-01499  * Example:
-01500  \code
-01501  snprintf(uip_appdata, UIP_APPDATA_SIZE, "%u\n", i);
-01502  \endcode
-01503  *
-01504  * \hideinitializer
-01505  */
-01506 #define UIP_APPDATA_SIZE (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
-01507 
-01508 
-01509 #define UIP_PROTO_ICMP  1
-01510 #define UIP_PROTO_TCP   6
-01511 #define UIP_PROTO_UDP   17
-01512 #define UIP_PROTO_ICMP6 58
-01513 
-01514 /* Header sizes. */
-01515 #if UIP_CONF_IPV6
-01516 #define UIP_IPH_LEN    40
-01517 #else /* UIP_CONF_IPV6 */
-01518 #define UIP_IPH_LEN    20    /* Size of IP header */
-01519 #endif /* UIP_CONF_IPV6 */
-01520 #define UIP_UDPH_LEN    8    /* Size of UDP header */
-01521 #define UIP_TCPH_LEN   20    /* Size of TCP header */
-01522 #define UIP_IPUDPH_LEN (UIP_UDPH_LEN + UIP_IPH_LEN)    /* Size of IP +
-01523                                                           UDP
-01524                                                           header */
-01525 #define UIP_IPTCPH_LEN (UIP_TCPH_LEN + UIP_IPH_LEN)    /* Size of IP +
-01526                                                           TCP
-01527                                                           header */
-01528 #define UIP_TCPIP_HLEN UIP_IPTCPH_LEN
-01529 
-01530 
-01531 #if UIP_FIXEDADDR
-01532 extern const uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr;
-01533 #else /* UIP_FIXEDADDR */
-01534 extern uip_ipaddr_t uip_hostaddr, uip_netmask, uip_draddr;
-01535 #endif /* UIP_FIXEDADDR */
-01536 
-01537 
-01538 
-01539 /**
-01540  * Representation of a 48-bit Ethernet address.
-01541  */
-01542 struct uip_eth_addr {
-01543   u8_t addr[6];
-01544 };
-01545 
-01546 /**
-01547  * Calculate the Internet checksum over a buffer.
-01548  *
-01549  * The Internet checksum is the one's complement of the one's
-01550  * complement sum of all 16-bit words in the buffer.
-01551  *
-01552  * See RFC1071.
-01553  *
-01554  * \param buf A pointer to the buffer over which the checksum is to be
-01555  * computed.
-01556  *
-01557  * \param len The length of the buffer over which the checksum is to
-01558  * be computed.
-01559  *
-01560  * \return The Internet checksum of the buffer.
-01561  */
-01562 u16_t uip_chksum(u16_t *buf, u16_t len);
-01563 
-01564 /**
-01565  * Calculate the IP header checksum of the packet header in uip_buf.
-01566  *
-01567  * The IP header checksum is the Internet checksum of the 20 bytes of
-01568  * the IP header.
-01569  *
-01570  * \return The IP header checksum of the IP header in the uip_buf
-01571  * buffer.
-01572  */
-01573 u16_t uip_ipchksum(void);
-01574 
-01575 /**
-01576  * Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
-01577  *
-01578  * The TCP checksum is the Internet checksum of data contents of the
-01579  * TCP segment, and a pseudo-header as defined in RFC793.
-01580  *
-01581  * \return The TCP checksum of the TCP segment in uip_buf and pointed
-01582  * to by uip_appdata.
-01583  */
-01584 u16_t uip_tcpchksum(void);
-01585 
-01586 /**
-01587  * Calculate the UDP checksum of the packet in uip_buf and uip_appdata.
-01588  *
-01589  * The UDP checksum is the Internet checksum of data contents of the
-01590  * UDP segment, and a pseudo-header as defined in RFC768.
-01591  *
-01592  * \return The UDP checksum of the UDP segment in uip_buf and pointed
-01593  * to by uip_appdata.
-01594  */
-01595 u16_t uip_udpchksum(void);
-01596 
-01597 
-01598 #endif /* __UIP_H__ */
-01599 
-01600 
-01601 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00203.html b/components/net/uip/doc/html/a00203.html deleted file mode 100644 index acdd37f1dea94eed2befad3c8c77f45e2b9bffb2..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00203.html +++ /dev/null @@ -1,163 +0,0 @@ - - -uIP 1.0: uip/uip_arch.h Source File - - - - - - -

uip/uip_arch.h

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup uip
-00003  * {@
-00004  */
-00005 
-00006 /**
-00007  * \defgroup uiparch Architecture specific uIP functions
-00008  * @{
-00009  *
-00010  * The functions in the architecture specific module implement the IP
-00011  * check sum and 32-bit additions.
-00012  *
-00013  * The IP checksum calculation is the most computationally expensive
-00014  * operation in the TCP/IP stack and it therefore pays off to
-00015  * implement this in efficient assembler. The purpose of the uip-arch
-00016  * module is to let the checksum functions to be implemented in
-00017  * architecture specific assembler.
-00018  *
-00019  */
-00020 
-00021 /**
-00022  * \file
-00023  * Declarations of architecture specific functions.
-00024  * \author Adam Dunkels <adam@dunkels.com>
-00025  */
-00026 
-00027 /*
-00028  * Copyright (c) 2001, Adam Dunkels.
-00029  * All rights reserved.
-00030  *
-00031  * Redistribution and use in source and binary forms, with or without
-00032  * modification, are permitted provided that the following conditions
-00033  * are met:
-00034  * 1. Redistributions of source code must retain the above copyright
-00035  *    notice, this list of conditions and the following disclaimer.
-00036  * 2. Redistributions in binary form must reproduce the above copyright
-00037  *    notice, this list of conditions and the following disclaimer in the
-00038  *    documentation and/or other materials provided with the distribution.
-00039  * 3. The name of the author may not be used to endorse or promote
-00040  *    products derived from this software without specific prior
-00041  *    written permission.
-00042  *
-00043  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00044  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00045  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00046  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00047  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00048  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00049  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00050  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00051  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00052  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00053  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00054  *
-00055  * This file is part of the uIP TCP/IP stack.
-00056  *
-00057  * $Id: uip_arch.h,v 1.2 2006/06/07 09:15:19 adam Exp $
-00058  *
-00059  */
-00060 
-00061 #ifndef __UIP_ARCH_H__
-00062 #define __UIP_ARCH_H__
-00063 
-00064 #include "uip.h"
-00065 
-00066 /**
-00067  * Carry out a 32-bit addition.
-00068  *
-00069  * Because not all architectures for which uIP is intended has native
-00070  * 32-bit arithmetic, uIP uses an external C function for doing the
-00071  * required 32-bit additions in the TCP protocol processing. This
-00072  * function should add the two arguments and place the result in the
-00073  * global variable uip_acc32.
-00074  *
-00075  * \note The 32-bit integer pointed to by the op32 parameter and the
-00076  * result in the uip_acc32 variable are in network byte order (big
-00077  * endian).
-00078  *
-00079  * \param op32 A pointer to a 4-byte array representing a 32-bit
-00080  * integer in network byte order (big endian).
-00081  *
-00082  * \param op16 A 16-bit integer in host byte order.
-00083  */
-00084 void uip_add32(u8_t *op32, u16_t op16);
-00085 
-00086 /**
-00087  * Calculate the Internet checksum over a buffer.
-00088  *
-00089  * The Internet checksum is the one's complement of the one's
-00090  * complement sum of all 16-bit words in the buffer.
-00091  *
-00092  * See RFC1071.
-00093  *
-00094  * \note This function is not called in the current version of uIP,
-00095  * but future versions might make use of it.
-00096  *
-00097  * \param buf A pointer to the buffer over which the checksum is to be
-00098  * computed.
-00099  *
-00100  * \param len The length of the buffer over which the checksum is to
-00101  * be computed.
-00102  *
-00103  * \return The Internet checksum of the buffer.
-00104  */
-00105 u16_t uip_chksum(u16_t *buf, u16_t len);
-00106 
-00107 /**
-00108  * Calculate the IP header checksum of the packet header in uip_buf.
-00109  *
-00110  * The IP header checksum is the Internet checksum of the 20 bytes of
-00111  * the IP header.
-00112  *
-00113  * \return The IP header checksum of the IP header in the uip_buf
-00114  * buffer.
-00115  */
-00116 u16_t uip_ipchksum(void);
-00117 
-00118 /**
-00119  * Calculate the TCP checksum of the packet in uip_buf and uip_appdata.
-00120  *
-00121  * The TCP checksum is the Internet checksum of data contents of the
-00122  * TCP segment, and a pseudo-header as defined in RFC793.
-00123  *
-00124  * \note The uip_appdata pointer that points to the packet data may
-00125  * point anywhere in memory, so it is not possible to simply calculate
-00126  * the Internet checksum of the contents of the uip_buf buffer.
-00127  *
-00128  * \return The TCP checksum of the TCP segment in uip_buf and pointed
-00129  * to by uip_appdata.
-00130  */
-00131 u16_t uip_tcpchksum(void);
-00132 
-00133 u16_t uip_udpchksum(void);
-00134 
-00135 /** @} */
-00136 /** @} */
-00137 
-00138 #endif /* __UIP_ARCH_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00204.html b/components/net/uip/doc/html/a00204.html deleted file mode 100644 index def45e93bbd1d4dfd9adf37a036949bd03357e5d..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00204.html +++ /dev/null @@ -1,448 +0,0 @@ - - -uIP 1.0: uip/uip_arp.c Source File - - - - - - -

uip/uip_arp.c

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup uip
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \defgroup uiparp uIP Address Resolution Protocol
-00008  * @{
-00009  *
-00010  * The Address Resolution Protocol ARP is used for mapping between IP
-00011  * addresses and link level addresses such as the Ethernet MAC
-00012  * addresses. ARP uses broadcast queries to ask for the link level
-00013  * address of a known IP address and the host which is configured with
-00014  * the IP address for which the query was meant, will respond with its
-00015  * link level address.
-00016  *
-00017  * \note This ARP implementation only supports Ethernet.
-00018  */
-00019  
-00020 /**
-00021  * \file
-00022  * Implementation of the ARP Address Resolution Protocol.
-00023  * \author Adam Dunkels <adam@dunkels.com>
-00024  *
-00025  */
-00026 
-00027 /*
-00028  * Copyright (c) 2001-2003, Adam Dunkels.
-00029  * All rights reserved.
-00030  *
-00031  * Redistribution and use in source and binary forms, with or without
-00032  * modification, are permitted provided that the following conditions
-00033  * are met:
-00034  * 1. Redistributions of source code must retain the above copyright
-00035  *    notice, this list of conditions and the following disclaimer.
-00036  * 2. Redistributions in binary form must reproduce the above copyright
-00037  *    notice, this list of conditions and the following disclaimer in the
-00038  *    documentation and/or other materials provided with the distribution.
-00039  * 3. The name of the author may not be used to endorse or promote
-00040  *    products derived from this software without specific prior
-00041  *    written permission.
-00042  *
-00043  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00044  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00045  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00046  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00047  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00048  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00049  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00050  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00051  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00052  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00053  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00054  *
-00055  * This file is part of the uIP TCP/IP stack.
-00056  *
-00057  * $Id: uip_arp.c,v 1.8 2006/06/02 23:36:21 adam Exp $
-00058  *
-00059  */
-00060 
-00061 
-00062 #include "uip_arp.h"
-00063 
-00064 #include <string.h>
-00065 
-00066 struct arp_hdr {
-00067   struct uip_eth_hdr ethhdr;
-00068   u16_t hwtype;
-00069   u16_t protocol;
-00070   u8_t hwlen;
-00071   u8_t protolen;
-00072   u16_t opcode;
-00073   struct uip_eth_addr shwaddr;
-00074   u16_t sipaddr[2];
-00075   struct uip_eth_addr dhwaddr;
-00076   u16_t dipaddr[2];
-00077 };
-00078 
-00079 struct ethip_hdr {
-00080   struct uip_eth_hdr ethhdr;
-00081   /* IP header. */
-00082   u8_t vhl,
-00083     tos,
-00084     len[2],
-00085     ipid[2],
-00086     ipoffset[2],
-00087     ttl,
-00088     proto;
-00089   u16_t ipchksum;
-00090   u16_t srcipaddr[2],
-00091     destipaddr[2];
-00092 };
-00093 
-00094 #define ARP_REQUEST 1
-00095 #define ARP_REPLY   2
-00096 
-00097 #define ARP_HWTYPE_ETH 1
-00098 
-00099 struct arp_entry {
-00100   u16_t ipaddr[2];
-00101   struct uip_eth_addr ethaddr;
-00102   u8_t time;
-00103 };
-00104 
-00105 static const struct uip_eth_addr broadcast_ethaddr =
-00106   {{0xff,0xff,0xff,0xff,0xff,0xff}};
-00107 static const u16_t broadcast_ipaddr[2] = {0xffff,0xffff};
-00108 
-00109 static struct arp_entry arp_table[UIP_ARPTAB_SIZE];
-00110 static u16_t ipaddr[2];
-00111 static u8_t i, c;
-00112 
-00113 static u8_t arptime;
-00114 static u8_t tmpage;
-00115 
-00116 #define BUF   ((struct arp_hdr *)&uip_buf[0])
-00117 #define IPBUF ((struct ethip_hdr *)&uip_buf[0])
-00118 /*-----------------------------------------------------------------------------------*/
-00119 /**
-00120  * Initialize the ARP module.
-00121  *
-00122  */
-00123 /*-----------------------------------------------------------------------------------*/
-00124 void
-00125 uip_arp_init(void)
-00126 {
-00127   for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-00128     memset(arp_table[i].ipaddr, 0, 4);
-00129   }
-00130 }
-00131 /*-----------------------------------------------------------------------------------*/
-00132 /**
-00133  * Periodic ARP processing function.
-00134  *
-00135  * This function performs periodic timer processing in the ARP module
-00136  * and should be called at regular intervals. The recommended interval
-00137  * is 10 seconds between the calls.
-00138  *
-00139  */
-00140 /*-----------------------------------------------------------------------------------*/
-00141 void
-00142 uip_arp_timer(void)
-00143 {
-00144   struct arp_entry *tabptr;
-00145   
-00146   ++arptime;
-00147   for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-00148     tabptr = &arp_table[i];
-00149     if((tabptr->ipaddr[0] | tabptr->ipaddr[1]) != 0 &&
-00150        arptime - tabptr->time >= UIP_ARP_MAXAGE) {
-00151       memset(tabptr->ipaddr, 0, 4);
-00152     }
-00153   }
-00154 
-00155 }
-00156 /*-----------------------------------------------------------------------------------*/
-00157 static void
-00158 uip_arp_update(u16_t *ipaddr, struct uip_eth_addr *ethaddr)
-00159 {
-00160   register struct arp_entry *tabptr;
-00161   /* Walk through the ARP mapping table and try to find an entry to
-00162      update. If none is found, the IP -> MAC address mapping is
-00163      inserted in the ARP table. */
-00164   for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-00165 
-00166     tabptr = &arp_table[i];
-00167     /* Only check those entries that are actually in use. */
-00168     if(tabptr->ipaddr[0] != 0 &&
-00169        tabptr->ipaddr[1] != 0) {
-00170 
-00171       /* Check if the source IP address of the incoming packet matches
-00172          the IP address in this ARP table entry. */
-00173       if(ipaddr[0] == tabptr->ipaddr[0] &&
-00174          ipaddr[1] == tabptr->ipaddr[1]) {
-00175          
-00176         /* An old entry found, update this and return. */
-00177         memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6);
-00178         tabptr->time = arptime;
-00179 
-00180         return;
-00181       }
-00182     }
-00183   }
-00184 
-00185   /* If we get here, no existing ARP table entry was found, so we
-00186      create one. */
-00187 
-00188   /* First, we try to find an unused entry in the ARP table. */
-00189   for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-00190     tabptr = &arp_table[i];
-00191     if(tabptr->ipaddr[0] == 0 &&
-00192        tabptr->ipaddr[1] == 0) {
-00193       break;
-00194     }
-00195   }
-00196 
-00197   /* If no unused entry is found, we try to find the oldest entry and
-00198      throw it away. */
-00199   if(i == UIP_ARPTAB_SIZE) {
-00200     tmpage = 0;
-00201     c = 0;
-00202     for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-00203       tabptr = &arp_table[i];
-00204       if(arptime - tabptr->time > tmpage) {
-00205         tmpage = arptime - tabptr->time;
-00206         c = i;
-00207       }
-00208     }
-00209     i = c;
-00210     tabptr = &arp_table[i];
-00211   }
-00212 
-00213   /* Now, i is the ARP table entry which we will fill with the new
-00214      information. */
-00215   memcpy(tabptr->ipaddr, ipaddr, 4);
-00216   memcpy(tabptr->ethaddr.addr, ethaddr->addr, 6);
-00217   tabptr->time = arptime;
-00218 }
-00219 /*-----------------------------------------------------------------------------------*/
-00220 /**
-00221  * ARP processing for incoming IP packets
-00222  *
-00223  * This function should be called by the device driver when an IP
-00224  * packet has been received. The function will check if the address is
-00225  * in the ARP cache, and if so the ARP cache entry will be
-00226  * refreshed. If no ARP cache entry was found, a new one is created.
-00227  *
-00228  * This function expects an IP packet with a prepended Ethernet header
-00229  * in the uip_buf[] buffer, and the length of the packet in the global
-00230  * variable uip_len.
-00231  */
-00232 /*-----------------------------------------------------------------------------------*/
-00233 #if 0
-00234 void
-00235 uip_arp_ipin(void)
-00236 {
-00237   uip_len -= sizeof(struct uip_eth_hdr);
-00238         
-00239   /* Only insert/update an entry if the source IP address of the
-00240      incoming IP packet comes from a host on the local network. */
-00241   if((IPBUF->srcipaddr[0] & uip_netmask[0]) !=
-00242      (uip_hostaddr[0] & uip_netmask[0])) {
-00243     return;
-00244   }
-00245   if((IPBUF->srcipaddr[1] & uip_netmask[1]) !=
-00246      (uip_hostaddr[1] & uip_netmask[1])) {
-00247     return;
-00248   }
-00249   uip_arp_update(IPBUF->srcipaddr, &(IPBUF->ethhdr.src));
-00250   
-00251   return;
-00252 }
-00253 #endif /* 0 */
-00254 /*-----------------------------------------------------------------------------------*/
-00255 /**
-00256  * ARP processing for incoming ARP packets.
-00257  *
-00258  * This function should be called by the device driver when an ARP
-00259  * packet has been received. The function will act differently
-00260  * depending on the ARP packet type: if it is a reply for a request
-00261  * that we previously sent out, the ARP cache will be filled in with
-00262  * the values from the ARP reply. If the incoming ARP packet is an ARP
-00263  * request for our IP address, an ARP reply packet is created and put
-00264  * into the uip_buf[] buffer.
-00265  *
-00266  * When the function returns, the value of the global variable uip_len
-00267  * indicates whether the device driver should send out a packet or
-00268  * not. If uip_len is zero, no packet should be sent. If uip_len is
-00269  * non-zero, it contains the length of the outbound packet that is
-00270  * present in the uip_buf[] buffer.
-00271  *
-00272  * This function expects an ARP packet with a prepended Ethernet
-00273  * header in the uip_buf[] buffer, and the length of the packet in the
-00274  * global variable uip_len.
-00275  */
-00276 /*-----------------------------------------------------------------------------------*/
-00277 void
-00278 uip_arp_arpin(void)
-00279 {
-00280   
-00281   if(uip_len < sizeof(struct arp_hdr)) {
-00282     uip_len = 0;
-00283     return;
-00284   }
-00285   uip_len = 0;
-00286   
-00287   switch(BUF->opcode) {
-00288   case HTONS(ARP_REQUEST):
-00289     /* ARP request. If it asked for our address, we send out a
-00290        reply. */
-00291     if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) {
-00292       /* First, we register the one who made the request in our ARP
-00293          table, since it is likely that we will do more communication
-00294          with this host in the future. */
-00295       uip_arp_update(BUF->sipaddr, &BUF->shwaddr);
-00296       
-00297       /* The reply opcode is 2. */
-00298       BUF->opcode = HTONS(2);
-00299 
-00300       memcpy(BUF->dhwaddr.addr, BUF->shwaddr.addr, 6);
-00301       memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6);
-00302       memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
-00303       memcpy(BUF->ethhdr.dest.addr, BUF->dhwaddr.addr, 6);
-00304       
-00305       BUF->dipaddr[0] = BUF->sipaddr[0];
-00306       BUF->dipaddr[1] = BUF->sipaddr[1];
-00307       BUF->sipaddr[0] = uip_hostaddr[0];
-00308       BUF->sipaddr[1] = uip_hostaddr[1];
-00309 
-00310       BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP);
-00311       uip_len = sizeof(struct arp_hdr);
-00312     }
-00313     break;
-00314   case HTONS(ARP_REPLY):
-00315     /* ARP reply. We insert or update the ARP table if it was meant
-00316        for us. */
-00317     if(uip_ipaddr_cmp(BUF->dipaddr, uip_hostaddr)) {
-00318       uip_arp_update(BUF->sipaddr, &BUF->shwaddr);
-00319     }
-00320     break;
-00321   }
-00322 
-00323   return;
-00324 }
-00325 /*-----------------------------------------------------------------------------------*/
-00326 /**
-00327  * Prepend Ethernet header to an outbound IP packet and see if we need
-00328  * to send out an ARP request.
-00329  *
-00330  * This function should be called before sending out an IP packet. The
-00331  * function checks the destination IP address of the IP packet to see
-00332  * what Ethernet MAC address that should be used as a destination MAC
-00333  * address on the Ethernet.
-00334  *
-00335  * If the destination IP address is in the local network (determined
-00336  * by logical ANDing of netmask and our IP address), the function
-00337  * checks the ARP cache to see if an entry for the destination IP
-00338  * address is found. If so, an Ethernet header is prepended and the
-00339  * function returns. If no ARP cache entry is found for the
-00340  * destination IP address, the packet in the uip_buf[] is replaced by
-00341  * an ARP request packet for the IP address. The IP packet is dropped
-00342  * and it is assumed that they higher level protocols (e.g., TCP)
-00343  * eventually will retransmit the dropped packet.
-00344  *
-00345  * If the destination IP address is not on the local network, the IP
-00346  * address of the default router is used instead.
-00347  *
-00348  * When the function returns, a packet is present in the uip_buf[]
-00349  * buffer, and the length of the packet is in the global variable
-00350  * uip_len.
-00351  */
-00352 /*-----------------------------------------------------------------------------------*/
-00353 void
-00354 uip_arp_out(void)
-00355 {
-00356   struct arp_entry *tabptr;
-00357   
-00358   /* Find the destination IP address in the ARP table and construct
-00359      the Ethernet header. If the destination IP addres isn't on the
-00360      local network, we use the default router's IP address instead.
-00361 
-00362      If not ARP table entry is found, we overwrite the original IP
-00363      packet with an ARP request for the IP address. */
-00364 
-00365   /* First check if destination is a local broadcast. */
-00366   if(uip_ipaddr_cmp(IPBUF->destipaddr, broadcast_ipaddr)) {
-00367     memcpy(IPBUF->ethhdr.dest.addr, broadcast_ethaddr.addr, 6);
-00368   } else {
-00369     /* Check if the destination address is on the local network. */
-00370     if(!uip_ipaddr_maskcmp(IPBUF->destipaddr, uip_hostaddr, uip_netmask)) {
-00371       /* Destination address was not on the local network, so we need to
-00372          use the default router's IP address instead of the destination
-00373          address when determining the MAC address. */
-00374       uip_ipaddr_copy(ipaddr, uip_draddr);
-00375     } else {
-00376       /* Else, we use the destination IP address. */
-00377       uip_ipaddr_copy(ipaddr, IPBUF->destipaddr);
-00378     }
-00379       
-00380     for(i = 0; i < UIP_ARPTAB_SIZE; ++i) {
-00381       tabptr = &arp_table[i];
-00382       if(uip_ipaddr_cmp(ipaddr, tabptr->ipaddr)) {
-00383         break;
-00384       }
-00385     }
-00386 
-00387     if(i == UIP_ARPTAB_SIZE) {
-00388       /* The destination address was not in our ARP table, so we
-00389          overwrite the IP packet with an ARP request. */
-00390 
-00391       memset(BUF->ethhdr.dest.addr, 0xff, 6);
-00392       memset(BUF->dhwaddr.addr, 0x00, 6);
-00393       memcpy(BUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
-00394       memcpy(BUF->shwaddr.addr, uip_ethaddr.addr, 6);
-00395     
-00396       uip_ipaddr_copy(BUF->dipaddr, ipaddr);
-00397       uip_ipaddr_copy(BUF->sipaddr, uip_hostaddr);
-00398       BUF->opcode = HTONS(ARP_REQUEST); /* ARP request. */
-00399       BUF->hwtype = HTONS(ARP_HWTYPE_ETH);
-00400       BUF->protocol = HTONS(UIP_ETHTYPE_IP);
-00401       BUF->hwlen = 6;
-00402       BUF->protolen = 4;
-00403       BUF->ethhdr.type = HTONS(UIP_ETHTYPE_ARP);
-00404 
-00405       uip_appdata = &uip_buf[UIP_TCPIP_HLEN + UIP_LLH_LEN];
-00406     
-00407       uip_len = sizeof(struct arp_hdr);
-00408       return;
-00409     }
-00410 
-00411     /* Build an ethernet header. */
-00412     memcpy(IPBUF->ethhdr.dest.addr, tabptr->ethaddr.addr, 6);
-00413   }
-00414   memcpy(IPBUF->ethhdr.src.addr, uip_ethaddr.addr, 6);
-00415   
-00416   IPBUF->ethhdr.type = HTONS(UIP_ETHTYPE_IP);
-00417 
-00418   uip_len += sizeof(struct uip_eth_hdr);
-00419 }
-00420 /*-----------------------------------------------------------------------------------*/
-00421 
-00422 /** @} */
-00423 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00205.html b/components/net/uip/doc/html/a00205.html deleted file mode 100644 index 9d4feea8fc10eb57e704a61db7688950064e1880..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00205.html +++ /dev/null @@ -1,169 +0,0 @@ - - -uIP 1.0: uip/uip_arp.h Source File - - - - - - -

uip/uip_arp.h

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup uip
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \addtogroup uiparp
-00008  * @{
-00009  */
-00010  
-00011 /**
-00012  * \file
-00013  * Macros and definitions for the ARP module.
-00014  * \author Adam Dunkels <adam@dunkels.com>
-00015  */
-00016   
-00017 
-00018 /*
-00019  * Copyright (c) 2001-2003, Adam Dunkels.
-00020  * All rights reserved.
-00021  *
-00022  * Redistribution and use in source and binary forms, with or without
-00023  * modification, are permitted provided that the following conditions
-00024  * are met:
-00025  * 1. Redistributions of source code must retain the above copyright
-00026  *    notice, this list of conditions and the following disclaimer.
-00027  * 2. Redistributions in binary form must reproduce the above copyright
-00028  *    notice, this list of conditions and the following disclaimer in the
-00029  *    documentation and/or other materials provided with the distribution.
-00030  * 3. The name of the author may not be used to endorse or promote
-00031  *    products derived from this software without specific prior
-00032  *    written permission.
-00033  *
-00034  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00035  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00036  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00037  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00038  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00039  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00040  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00041  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00042  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00043  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00044  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00045  *
-00046  * This file is part of the uIP TCP/IP stack.
-00047  *
-00048  * $Id: uip_arp.h,v 1.5 2006/06/11 21:46:39 adam Exp $
-00049  *
-00050  */
-00051 
-00052 #ifndef __UIP_ARP_H__
-00053 #define __UIP_ARP_H__
-00054 
-00055 #include "uip.h"
-00056 
-00057 
-00058 extern struct uip_eth_addr uip_ethaddr;
-00059 
-00060 /**
-00061  * The Ethernet header.
-00062  */
-00063 struct uip_eth_hdr {
-00064   struct uip_eth_addr dest;
-00065   struct uip_eth_addr src;
-00066   u16_t type;
-00067 };
-00068 
-00069 #define UIP_ETHTYPE_ARP 0x0806
-00070 #define UIP_ETHTYPE_IP  0x0800
-00071 #define UIP_ETHTYPE_IP6 0x86dd
-00072 
-00073 
-00074 /* The uip_arp_init() function must be called before any of the other
-00075    ARP functions. */
-00076 void uip_arp_init(void);
-00077 
-00078 /* The uip_arp_ipin() function should be called whenever an IP packet
-00079    arrives from the Ethernet. This function refreshes the ARP table or
-00080    inserts a new mapping if none exists. The function assumes that an
-00081    IP packet with an Ethernet header is present in the uip_buf buffer
-00082    and that the length of the packet is in the uip_len variable. */
-00083 /*void uip_arp_ipin(void);*/
-00084 #define uip_arp_ipin()
-00085 
-00086 /* The uip_arp_arpin() should be called when an ARP packet is received
-00087    by the Ethernet driver. This function also assumes that the
-00088    Ethernet frame is present in the uip_buf buffer. When the
-00089    uip_arp_arpin() function returns, the contents of the uip_buf
-00090    buffer should be sent out on the Ethernet if the uip_len variable
-00091    is > 0. */
-00092 void uip_arp_arpin(void);
-00093 
-00094 /* The uip_arp_out() function should be called when an IP packet
-00095    should be sent out on the Ethernet. This function creates an
-00096    Ethernet header before the IP header in the uip_buf buffer. The
-00097    Ethernet header will have the correct Ethernet MAC destination
-00098    address filled in if an ARP table entry for the destination IP
-00099    address (or the IP address of the default router) is present. If no
-00100    such table entry is found, the IP packet is overwritten with an ARP
-00101    request and we rely on TCP to retransmit the packet that was
-00102    overwritten. In any case, the uip_len variable holds the length of
-00103    the Ethernet frame that should be transmitted. */
-00104 void uip_arp_out(void);
-00105 
-00106 /* The uip_arp_timer() function should be called every ten seconds. It
-00107    is responsible for flushing old entries in the ARP table. */
-00108 void uip_arp_timer(void);
-00109 
-00110 /** @} */
-00111 
-00112 /**
-00113  * \addtogroup uipconffunc
-00114  * @{
-00115  */
-00116 
-00117 
-00118 /**
-00119  * Specifiy the Ethernet MAC address.
-00120  *
-00121  * The ARP code needs to know the MAC address of the Ethernet card in
-00122  * order to be able to respond to ARP queries and to generate working
-00123  * Ethernet headers.
-00124  *
-00125  * \note This macro only specifies the Ethernet MAC address to the ARP
-00126  * code. It cannot be used to change the MAC address of the Ethernet
-00127  * card.
-00128  *
-00129  * \param eaddr A pointer to a struct uip_eth_addr containing the
-00130  * Ethernet MAC address of the Ethernet card.
-00131  *
-00132  * \hideinitializer
-00133  */
-00134 #define uip_setethaddr(eaddr) do {uip_ethaddr.addr[0] = eaddr.addr[0]; \
-00135                               uip_ethaddr.addr[1] = eaddr.addr[1];\
-00136                               uip_ethaddr.addr[2] = eaddr.addr[2];\
-00137                               uip_ethaddr.addr[3] = eaddr.addr[3];\
-00138                               uip_ethaddr.addr[4] = eaddr.addr[4];\
-00139                               uip_ethaddr.addr[5] = eaddr.addr[5];} while(0)
-00140 
-00141 /** @} */
-00142 /** @} */
-00143 
-00144 #endif /* __UIP_ARP_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00206.html b/components/net/uip/doc/html/a00206.html deleted file mode 100644 index 3272565d245631402112f1fb3bcafdcf882202fb..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00206.html +++ /dev/null @@ -1,564 +0,0 @@ - - -uIP 1.0: uip/uipopt.h Source File - - - - - - -

uip/uipopt.h

Go to the documentation of this file.
00001 /**
-00002  * \defgroup uipopt Configuration options for uIP
-00003  * @{
-00004  *
-00005  * uIP is configured using the per-project configuration file
-00006  * uipopt.h. This file contains all compile-time options for uIP and
-00007  * should be tweaked to match each specific project. The uIP
-00008  * distribution contains a documented example "uipopt.h" that can be
-00009  * copied and modified for each project.
-00010  *
-00011  * \note Most of the configuration options in the uipopt.h should not
-00012  * be changed, but rather the per-project uip-conf.h file.
-00013  */
-00014 
-00015 /**
-00016  * \file
-00017  * Configuration options for uIP.
-00018  * \author Adam Dunkels <adam@dunkels.com>
-00019  *
-00020  * This file is used for tweaking various configuration options for
-00021  * uIP. You should make a copy of this file into one of your project's
-00022  * directories instead of editing this example "uipopt.h" file that
-00023  * comes with the uIP distribution.
-00024  */
-00025 
-00026 /*
-00027  * Copyright (c) 2001-2003, Adam Dunkels.
-00028  * All rights reserved.
-00029  *
-00030  * Redistribution and use in source and binary forms, with or without
-00031  * modification, are permitted provided that the following conditions
-00032  * are met:
-00033  * 1. Redistributions of source code must retain the above copyright
-00034  *    notice, this list of conditions and the following disclaimer.
-00035  * 2. Redistributions in binary form must reproduce the above copyright
-00036  *    notice, this list of conditions and the following disclaimer in the
-00037  *    documentation and/or other materials provided with the distribution.
-00038  * 3. The name of the author may not be used to endorse or promote
-00039  *    products derived from this software without specific prior
-00040  *    written permission.
-00041  *
-00042  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-00043  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-00044  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00045  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-00046  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00047  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-00048  * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-00049  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-00050  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-00051  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-00052  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-00053  *
-00054  * This file is part of the uIP TCP/IP stack.
-00055  *
-00056  * $Id: uipopt.h,v 1.4 2006/06/12 08:00:31 adam Exp $
-00057  *
-00058  */
-00059 
-00060 #ifndef __UIPOPT_H__
-00061 #define __UIPOPT_H__
-00062 
-00063 #ifndef UIP_LITTLE_ENDIAN
-00064 #define UIP_LITTLE_ENDIAN  3412
-00065 #endif /* UIP_LITTLE_ENDIAN */
-00066 #ifndef UIP_BIG_ENDIAN
-00067 #define UIP_BIG_ENDIAN     1234
-00068 #endif /* UIP_BIG_ENDIAN */
-00069 
-00070 #include "uip-conf.h"
-00071 
-00072 /*------------------------------------------------------------------------------*/
-00073 
-00074 /**
-00075  * \name Static configuration options
-00076  * @{
-00077  *
-00078  * These configuration options can be used for setting the IP address
-00079  * settings statically, but only if UIP_FIXEDADDR is set to 1. The
-00080  * configuration options for a specific node includes IP address,
-00081  * netmask and default router as well as the Ethernet address. The
-00082  * netmask, default router and Ethernet address are appliciable only
-00083  * if uIP should be run over Ethernet.
-00084  *
-00085  * All of these should be changed to suit your project.
-00086 */
-00087 
-00088 /**
-00089  * Determines if uIP should use a fixed IP address or not.
-00090  *
-00091  * If uIP should use a fixed IP address, the settings are set in the
-00092  * uipopt.h file. If not, the macros uip_sethostaddr(),
-00093  * uip_setdraddr() and uip_setnetmask() should be used instead.
-00094  *
-00095  * \hideinitializer
-00096  */
-00097 #define UIP_FIXEDADDR    0
-00098 
-00099 /**
-00100  * Ping IP address asignment.
-00101  *
-00102  * uIP uses a "ping" packets for setting its own IP address if this
-00103  * option is set. If so, uIP will start with an empty IP address and
-00104  * the destination IP address of the first incoming "ping" (ICMP echo)
-00105  * packet will be used for setting the hosts IP address.
-00106  *
-00107  * \note This works only if UIP_FIXEDADDR is 0.
-00108  *
-00109  * \hideinitializer
-00110  */
-00111 #ifdef UIP_CONF_PINGADDRCONF
-00112 #define UIP_PINGADDRCONF UIP_CONF_PINGADDRCONF
-00113 #else /* UIP_CONF_PINGADDRCONF */
-00114 #define UIP_PINGADDRCONF 0
-00115 #endif /* UIP_CONF_PINGADDRCONF */
-00116 
-00117 
-00118 /**
-00119  * Specifies if the uIP ARP module should be compiled with a fixed
-00120  * Ethernet MAC address or not.
-00121  *
-00122  * If this configuration option is 0, the macro uip_setethaddr() can
-00123  * be used to specify the Ethernet address at run-time.
-00124  *
-00125  * \hideinitializer
-00126  */
-00127 #define UIP_FIXEDETHADDR 0
-00128 
-00129 /** @} */
-00130 /*------------------------------------------------------------------------------*/
-00131 /**
-00132  * \name IP configuration options
-00133  * @{
-00134  *
-00135  */
-00136 /**
-00137  * The IP TTL (time to live) of IP packets sent by uIP.
-00138  *
-00139  * This should normally not be changed.
-00140  */
-00141 #define UIP_TTL         64
-00142 
-00143 /**
-00144  * Turn on support for IP packet reassembly.
-00145  *
-00146  * uIP supports reassembly of fragmented IP packets. This features
-00147  * requires an additonal amount of RAM to hold the reassembly buffer
-00148  * and the reassembly code size is approximately 700 bytes.  The
-00149  * reassembly buffer is of the same size as the uip_buf buffer
-00150  * (configured by UIP_BUFSIZE).
-00151  *
-00152  * \note IP packet reassembly is not heavily tested.
-00153  *
-00154  * \hideinitializer
-00155  */
-00156 #define UIP_REASSEMBLY 0
-00157 
-00158 /**
-00159  * The maximum time an IP fragment should wait in the reassembly
-00160  * buffer before it is dropped.
-00161  *
-00162  */
-00163 #define UIP_REASS_MAXAGE 40
-00164 
-00165 /** @} */
-00166 
-00167 /*------------------------------------------------------------------------------*/
-00168 /**
-00169  * \name UDP configuration options
-00170  * @{
-00171  */
-00172 
-00173 /**
-00174  * Toggles wether UDP support should be compiled in or not.
-00175  *
-00176  * \hideinitializer
-00177  */
-00178 #ifdef UIP_CONF_UDP
-00179 #define UIP_UDP UIP_CONF_UDP
-00180 #else /* UIP_CONF_UDP */
-00181 #define UIP_UDP           0
-00182 #endif /* UIP_CONF_UDP */
-00183 
-00184 /**
-00185  * Toggles if UDP checksums should be used or not.
-00186  *
-00187  * \note Support for UDP checksums is currently not included in uIP,
-00188  * so this option has no function.
-00189  *
-00190  * \hideinitializer
-00191  */
-00192 #ifdef UIP_CONF_UDP_CHECKSUMS
-00193 #define UIP_UDP_CHECKSUMS UIP_CONF_UDP_CHECKSUMS
-00194 #else
-00195 #define UIP_UDP_CHECKSUMS 0
-00196 #endif
-00197 
-00198 /**
-00199  * The maximum amount of concurrent UDP connections.
-00200  *
-00201  * \hideinitializer
-00202  */
-00203 #ifdef UIP_CONF_UDP_CONNS
-00204 #define UIP_UDP_CONNS UIP_CONF_UDP_CONNS
-00205 #else /* UIP_CONF_UDP_CONNS */
-00206 #define UIP_UDP_CONNS    10
-00207 #endif /* UIP_CONF_UDP_CONNS */
-00208 
-00209 /**
-00210  * The name of the function that should be called when UDP datagrams arrive.
-00211  *
-00212  * \hideinitializer
-00213  */
-00214 
-00215 
-00216 /** @} */
-00217 /*------------------------------------------------------------------------------*/
-00218 /**
-00219  * \name TCP configuration options
-00220  * @{
-00221  */
-00222 
-00223 /**
-00224  * Determines if support for opening connections from uIP should be
-00225  * compiled in.
-00226  *
-00227  * If the applications that are running on top of uIP for this project
-00228  * do not need to open outgoing TCP connections, this configration
-00229  * option can be turned off to reduce the code size of uIP.
-00230  *
-00231  * \hideinitializer
-00232  */
-00233 #define UIP_ACTIVE_OPEN 1
-00234 
-00235 /**
-00236  * The maximum number of simultaneously open TCP connections.
-00237  *
-00238  * Since the TCP connections are statically allocated, turning this
-00239  * configuration knob down results in less RAM used. Each TCP
-00240  * connection requires approximatly 30 bytes of memory.
-00241  *
-00242  * \hideinitializer
-00243  */
-00244 #ifndef UIP_CONF_MAX_CONNECTIONS
-00245 #define UIP_CONNS       10
-00246 #else /* UIP_CONF_MAX_CONNECTIONS */
-00247 #define UIP_CONNS UIP_CONF_MAX_CONNECTIONS
-00248 #endif /* UIP_CONF_MAX_CONNECTIONS */
-00249 
-00250 
-00251 /**
-00252  * The maximum number of simultaneously listening TCP ports.
-00253  *
-00254  * Each listening TCP port requires 2 bytes of memory.
-00255  *
-00256  * \hideinitializer
-00257  */
-00258 #ifndef UIP_CONF_MAX_LISTENPORTS
-00259 #define UIP_LISTENPORTS 20
-00260 #else /* UIP_CONF_MAX_LISTENPORTS */
-00261 #define UIP_LISTENPORTS UIP_CONF_MAX_LISTENPORTS
-00262 #endif /* UIP_CONF_MAX_LISTENPORTS */
-00263 
-00264 /**
-00265  * Determines if support for TCP urgent data notification should be
-00266  * compiled in.
-00267  *
-00268  * Urgent data (out-of-band data) is a rarely used TCP feature that
-00269  * very seldom would be required.
-00270  *
-00271  * \hideinitializer
-00272  */
-00273 #define UIP_URGDATA      0
-00274 
-00275 /**
-00276  * The initial retransmission timeout counted in timer pulses.
-00277  *
-00278  * This should not be changed.
-00279  */
-00280 #define UIP_RTO         3
-00281 
-00282 /**
-00283  * The maximum number of times a segment should be retransmitted
-00284  * before the connection should be aborted.
-00285  *
-00286  * This should not be changed.
-00287  */
-00288 #define UIP_MAXRTX      8
-00289 
-00290 /**
-00291  * The maximum number of times a SYN segment should be retransmitted
-00292  * before a connection request should be deemed to have been
-00293  * unsuccessful.
-00294  *
-00295  * This should not need to be changed.
-00296  */
-00297 #define UIP_MAXSYNRTX      5
-00298 
-00299 /**
-00300  * The TCP maximum segment size.
-00301  *
-00302  * This is should not be to set to more than
-00303  * UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN.
-00304  */
-00305 #define UIP_TCP_MSS     (UIP_BUFSIZE - UIP_LLH_LEN - UIP_TCPIP_HLEN)
-00306 
-00307 /**
-00308  * The size of the advertised receiver's window.
-00309  *
-00310  * Should be set low (i.e., to the size of the uip_buf buffer) is the
-00311  * application is slow to process incoming data, or high (32768 bytes)
-00312  * if the application processes data quickly.
-00313  *
-00314  * \hideinitializer
-00315  */
-00316 #ifndef UIP_CONF_RECEIVE_WINDOW
-00317 #define UIP_RECEIVE_WINDOW UIP_TCP_MSS
-00318 #else
-00319 #define UIP_RECEIVE_WINDOW UIP_CONF_RECEIVE_WINDOW
-00320 #endif
-00321 
-00322 /**
-00323  * How long a connection should stay in the TIME_WAIT state.
-00324  *
-00325  * This configiration option has no real implication, and it should be
-00326  * left untouched.
-00327  */
-00328 #define UIP_TIME_WAIT_TIMEOUT 120
-00329 
-00330 
-00331 /** @} */
-00332 /*------------------------------------------------------------------------------*/
-00333 /**
-00334  * \name ARP configuration options
-00335  * @{
-00336  */
-00337 
-00338 /**
-00339  * The size of the ARP table.
-00340  *
-00341  * This option should be set to a larger value if this uIP node will
-00342  * have many connections from the local network.
-00343  *
-00344  * \hideinitializer
-00345  */
-00346 #ifdef UIP_CONF_ARPTAB_SIZE
-00347 #define UIP_ARPTAB_SIZE UIP_CONF_ARPTAB_SIZE
-00348 #else
-00349 #define UIP_ARPTAB_SIZE 8
-00350 #endif
-00351 
-00352 /**
-00353  * The maxium age of ARP table entries measured in 10ths of seconds.
-00354  *
-00355  * An UIP_ARP_MAXAGE of 120 corresponds to 20 minutes (BSD
-00356  * default).
-00357  */
-00358 #define UIP_ARP_MAXAGE 120
-00359 
-00360 /** @} */
-00361 
-00362 /*------------------------------------------------------------------------------*/
-00363 
-00364 /**
-00365  * \name General configuration options
-00366  * @{
-00367  */
-00368 
-00369 /**
-00370  * The size of the uIP packet buffer.
-00371  *
-00372  * The uIP packet buffer should not be smaller than 60 bytes, and does
-00373  * not need to be larger than 1500 bytes. Lower size results in lower
-00374  * TCP throughput, larger size results in higher TCP throughput.
-00375  *
-00376  * \hideinitializer
-00377  */
-00378 #ifndef UIP_CONF_BUFFER_SIZE
-00379 #define UIP_BUFSIZE     400
-00380 #else /* UIP_CONF_BUFFER_SIZE */
-00381 #define UIP_BUFSIZE UIP_CONF_BUFFER_SIZE
-00382 #endif /* UIP_CONF_BUFFER_SIZE */
-00383 
-00384 
-00385 /**
-00386  * Determines if statistics support should be compiled in.
-00387  *
-00388  * The statistics is useful for debugging and to show the user.
-00389  *
-00390  * \hideinitializer
-00391  */
-00392 #ifndef UIP_CONF_STATISTICS
-00393 #define UIP_STATISTICS  0
-00394 #else /* UIP_CONF_STATISTICS */
-00395 #define UIP_STATISTICS UIP_CONF_STATISTICS
-00396 #endif /* UIP_CONF_STATISTICS */
-00397 
-00398 /**
-00399  * Determines if logging of certain events should be compiled in.
-00400  *
-00401  * This is useful mostly for debugging. The function uip_log()
-00402  * must be implemented to suit the architecture of the project, if
-00403  * logging is turned on.
-00404  *
-00405  * \hideinitializer
-00406  */
-00407 #ifndef UIP_CONF_LOGGING
-00408 #define UIP_LOGGING     0
-00409 #else /* UIP_CONF_LOGGING */
-00410 #define UIP_LOGGING     UIP_CONF_LOGGING
-00411 #endif /* UIP_CONF_LOGGING */
-00412 
-00413 /**
-00414  * Broadcast support.
-00415  *
-00416  * This flag configures IP broadcast support. This is useful only
-00417  * together with UDP.
-00418  *
-00419  * \hideinitializer
-00420  *
-00421  */
-00422 #ifndef UIP_CONF_BROADCAST
-00423 #define UIP_BROADCAST 0
-00424 #else /* UIP_CONF_BROADCAST */
-00425 #define UIP_BROADCAST UIP_CONF_BROADCAST
-00426 #endif /* UIP_CONF_BROADCAST */
-00427 
-00428 /**
-00429  * Print out a uIP log message.
-00430  *
-00431  * This function must be implemented by the module that uses uIP, and
-00432  * is called by uIP whenever a log message is generated.
-00433  */
-00434 void uip_log(char *msg);
-00435 
-00436 /**
-00437  * The link level header length.
-00438  *
-00439  * This is the offset into the uip_buf where the IP header can be
-00440  * found. For Ethernet, this should be set to 14. For SLIP, this
-00441  * should be set to 0.
-00442  *
-00443  * \hideinitializer
-00444  */
-00445 #ifdef UIP_CONF_LLH_LEN
-00446 #define UIP_LLH_LEN UIP_CONF_LLH_LEN
-00447 #else /* UIP_CONF_LLH_LEN */
-00448 #define UIP_LLH_LEN     14
-00449 #endif /* UIP_CONF_LLH_LEN */
-00450 
-00451 /** @} */
-00452 /*------------------------------------------------------------------------------*/
-00453 /**
-00454  * \name CPU architecture configuration
-00455  * @{
-00456  *
-00457  * The CPU architecture configuration is where the endianess of the
-00458  * CPU on which uIP is to be run is specified. Most CPUs today are
-00459  * little endian, and the most notable exception are the Motorolas
-00460  * which are big endian. The BYTE_ORDER macro should be changed to
-00461  * reflect the CPU architecture on which uIP is to be run.
-00462  */
-00463 
-00464 /**
-00465  * The byte order of the CPU architecture on which uIP is to be run.
-00466  *
-00467  * This option can be either BIG_ENDIAN (Motorola byte order) or
-00468  * LITTLE_ENDIAN (Intel byte order).
-00469  *
-00470  * \hideinitializer
-00471  */
-00472 #ifdef UIP_CONF_BYTE_ORDER
-00473 #define UIP_BYTE_ORDER     UIP_CONF_BYTE_ORDER
-00474 #else /* UIP_CONF_BYTE_ORDER */
-00475 #define UIP_BYTE_ORDER     UIP_LITTLE_ENDIAN
-00476 #endif /* UIP_CONF_BYTE_ORDER */
-00477 
-00478 /** @} */
-00479 /*------------------------------------------------------------------------------*/
-00480 
-00481 /**
-00482  * \name Appication specific configurations
-00483  * @{
-00484  *
-00485  * An uIP application is implemented using a single application
-00486  * function that is called by uIP whenever a TCP/IP event occurs. The
-00487  * name of this function must be registered with uIP at compile time
-00488  * using the UIP_APPCALL definition.
-00489  *
-00490  * uIP applications can store the application state within the
-00491  * uip_conn structure by specifying the type of the application
-00492  * structure by typedef:ing the type uip_tcp_appstate_t and uip_udp_appstate_t.
-00493  *
-00494  * The file containing the definitions must be included in the
-00495  * uipopt.h file.
-00496  *
-00497  * The following example illustrates how this can look.
-00498  \code
-00499 
-00500 void httpd_appcall(void);
-00501 #define UIP_APPCALL     httpd_appcall
-00502 
-00503 struct httpd_state {
-00504   u8_t state;
-00505   u16_t count;
-00506   char *dataptr;
-00507   char *script;
-00508 };
-00509 typedef struct httpd_state uip_tcp_appstate_t
-00510  \endcode
-00511  */
-00512 
-00513 /**
-00514  * \var #define UIP_APPCALL
-00515  *
-00516  * The name of the application function that uIP should call in
-00517  * response to TCP/IP events.
-00518  *
-00519  */
-00520 
-00521 /**
-00522  * \var typedef uip_tcp_appstate_t
-00523  *
-00524  * The type of the application state that is to be stored in the
-00525  * uip_conn structure. This usually is typedef:ed to a struct holding
-00526  * application state information.
-00527  */
-00528 
-00529 /**
-00530  * \var typedef uip_udp_appstate_t
-00531  *
-00532  * The type of the application state that is to be stored in the
-00533  * uip_conn structure. This usually is typedef:ed to a struct holding
-00534  * application state information.
-00535  */
-00536 /** @} */
-00537 /** @} */
-00538 
-00539 #endif /* __UIPOPT_H__ */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/a00207.html b/components/net/uip/doc/html/a00207.html deleted file mode 100644 index 937d9a6de387d22c10997be85c08ccce46a11d5c..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/a00207.html +++ /dev/null @@ -1,182 +0,0 @@ - - -uIP 1.0: unix/uip-conf.h Source File - - - - - - -

unix/uip-conf.h

Go to the documentation of this file.
00001 /**
-00002  * \addtogroup uipopt
-00003  * @{
-00004  */
-00005 
-00006 /**
-00007  * \name Project-specific configuration options
-00008  * @{
-00009  *
-00010  * uIP has a number of configuration options that can be overridden
-00011  * for each project. These are kept in a project-specific uip-conf.h
-00012  * file and all configuration names have the prefix UIP_CONF.
-00013  */
-00014 
-00015 /*
-00016  * Copyright (c) 2006, Swedish Institute of Computer Science.
-00017  * All rights reserved.
-00018  *
-00019  * Redistribution and use in source and binary forms, with or without
-00020  * modification, are permitted provided that the following conditions
-00021  * are met:
-00022  * 1. Redistributions of source code must retain the above copyright
-00023  *    notice, this list of conditions and the following disclaimer.
-00024  * 2. Redistributions in binary form must reproduce the above copyright
-00025  *    notice, this list of conditions and the following disclaimer in the
-00026  *    documentation and/or other materials provided with the distribution.
-00027  * 3. Neither the name of the Institute nor the names of its contributors
-00028  *    may be used to endorse or promote products derived from this software
-00029  *    without specific prior written permission.
-00030  *
-00031  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
-00032  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-00033  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-00034  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
-00035  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-00036  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-00037  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-00038  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-00039  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-00040  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-00041  * SUCH DAMAGE.
-00042  *
-00043  * This file is part of the uIP TCP/IP stack
-00044  *
-00045  * $Id: uip-conf.h,v 1.6 2006/06/12 08:00:31 adam Exp $
-00046  */
-00047 
-00048 /**
-00049  * \file
-00050  *         An example uIP configuration file
-00051  * \author
-00052  *         Adam Dunkels <adam@sics.se>
-00053  */
-00054 
-00055 #ifndef __UIP_CONF_H__
-00056 #define __UIP_CONF_H__
-00057 
-00058 #include <inttypes.h>
-00059 
-00060 /**
-00061  * 8 bit datatype
-00062  *
-00063  * This typedef defines the 8-bit type used throughout uIP.
-00064  *
-00065  * \hideinitializer
-00066  */
-00067 typedef uint8_t u8_t;
-00068 
-00069 /**
-00070  * 16 bit datatype
-00071  *
-00072  * This typedef defines the 16-bit type used throughout uIP.
-00073  *
-00074  * \hideinitializer
-00075  */
-00076 typedef uint16_t u16_t;
-00077 
-00078 /**
-00079  * Statistics datatype
-00080  *
-00081  * This typedef defines the dataype used for keeping statistics in
-00082  * uIP.
-00083  *
-00084  * \hideinitializer
-00085  */
-00086 typedef unsigned short uip_stats_t;
-00087 
-00088 /**
-00089  * Maximum number of TCP connections.
-00090  *
-00091  * \hideinitializer
-00092  */
-00093 #define UIP_CONF_MAX_CONNECTIONS 40
-00094 
-00095 /**
-00096  * Maximum number of listening TCP ports.
-00097  *
-00098  * \hideinitializer
-00099  */
-00100 #define UIP_CONF_MAX_LISTENPORTS 40
-00101 
-00102 /**
-00103  * uIP buffer size.
-00104  *
-00105  * \hideinitializer
-00106  */
-00107 #define UIP_CONF_BUFFER_SIZE     420
-00108 
-00109 /**
-00110  * CPU byte order.
-00111  *
-00112  * \hideinitializer
-00113  */
-00114 #define UIP_CONF_BYTE_ORDER      LITTLE_ENDIAN
-00115 
-00116 /**
-00117  * Logging on or off
-00118  *
-00119  * \hideinitializer
-00120  */
-00121 #define UIP_CONF_LOGGING         1
-00122 
-00123 /**
-00124  * UDP support on or off
-00125  *
-00126  * \hideinitializer
-00127  */
-00128 #define UIP_CONF_UDP             0
-00129 
-00130 /**
-00131  * UDP checksums on or off
-00132  *
-00133  * \hideinitializer
-00134  */
-00135 #define UIP_CONF_UDP_CHECKSUMS   1
-00136 
-00137 /**
-00138  * uIP statistics on or off
-00139  *
-00140  * \hideinitializer
-00141  */
-00142 #define UIP_CONF_STATISTICS      1
-00143 
-00144 /* Here we include the header file for the application(s) we use in
-00145    our project. */
-00146 /*#include "smtp.h"*/
-00147 /*#include "hello-world.h"*/
-00148 /*#include "telnetd.h"*/
-00149 #include "webserver.h"
-00150 /*#include "dhcpc.h"*/
-00151 /*#include "resolv.h"*/
-00152 /*#include "webclient.h"*/
-00153 
-00154 #endif /* __UIP_CONF_H__ */
-00155 
-00156 /** @} */
-00157 /** @} */
-

Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/annotated.html b/components/net/uip/doc/html/annotated.html deleted file mode 100644 index e64936120cf4864532654adfdef700bdbf846690..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/annotated.html +++ /dev/null @@ -1,50 +0,0 @@ - - -uIP 1.0: Data Structures - - - - - - -

uIP 1.0 Data Structures

Here are the data structures with brief descriptions: - - - - - - - - - - - - - - - - - - - - - -
dhcpc_state
hello_world_state
httpd_cgi_call
httpd_state
memb_blocks
psockThe representation of a protosocket
psock_buf
pt
smtp_state
telnetd_state
timerA timer
uip_connRepresentation of a uIP TCP connection
uip_eth_addrRepresentation of a 48-bit Ethernet address
uip_eth_hdrThe Ethernet header
uip_icmpip_hdr
uip_neighbor_addr
uip_statsThe structure holding the TCP/IP statistics that are gathered if UIP_STATISTICS is set to 1
uip_tcpip_hdr
uip_udp_connRepresentation of a uIP UDP connection
uip_udpip_hdr
webclient_state
-
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/classes.html b/components/net/uip/doc/html/classes.html deleted file mode 100644 index 7a937cb61a5686f7086023e11154eeec9785c167..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/classes.html +++ /dev/null @@ -1,38 +0,0 @@ - - -uIP 1.0: Alphabetical List - - - - - - -

uIP 1.0 Data Structure Index

D | H | M | P | S | T | U | W

- -
  D  
-
  M  
-
  S  
-
uip_conn   uip_tcpip_hdr   
dhcpc_state   memb_blocks   smtp_state   uip_eth_addr   uip_udp_conn   
  H  
-
  P  
-
  T  
-
uip_eth_hdr   uip_udpip_hdr   
hello_world_state   psock   telnetd_state   uip_icmpip_hdr   
  W  
-
httpd_cgi_call   psock_buf   timer   uip_neighbor_addr   webclient_state   
httpd_state   pt   
  U  
-
uip_stats   

D | H | M | P | S | T | U | W

-


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/doxygen.css b/components/net/uip/doc/html/doxygen.css deleted file mode 100644 index 05615b2e61db5e7101503448aeb4f95bbd8d6a22..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/doxygen.css +++ /dev/null @@ -1,310 +0,0 @@ -BODY,H1,H2,H3,H4,H5,H6,P,CENTER,TD,TH,UL,DL,DIV { - font-family: Geneva, Arial, Helvetica, sans-serif; -} -BODY,TD { - font-size: 90%; -} -H1 { - text-align: center; - font-size: 160%; -} -H2 { - font-size: 120%; -} -H3 { - font-size: 100%; -} -CAPTION { font-weight: bold } -DIV.qindex { - width: 100%; - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - padding: 2px; - line-height: 140%; -} -DIV.nav { - width: 100%; - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - padding: 2px; - line-height: 140%; -} -DIV.navtab { - background-color: #e8eef2; - border: 1px solid #84b0c7; - text-align: center; - margin: 2px; - margin-right: 15px; - padding: 2px; -} -TD.navtab { - font-size: 70%; -} -A.qindex { - text-decoration: none; - font-weight: bold; - color: #1A419D; -} -A.qindex:visited { - text-decoration: none; - font-weight: bold; - color: #1A419D -} -A.qindex:hover { - text-decoration: none; - background-color: #ddddff; -} -A.qindexHL { - text-decoration: none; - font-weight: bold; - background-color: #6666cc; - color: #ffffff; - border: 1px double #9295C2; -} -A.qindexHL:hover { - text-decoration: none; - background-color: #6666cc; - color: #ffffff; -} -A.qindexHL:visited { text-decoration: none; background-color: #6666cc; color: #ffffff } -A.el { text-decoration: none; font-weight: bold } -A.elRef { font-weight: bold } -A.code:link { text-decoration: none; font-weight: normal; color: #0000FF} -A.code:visited { text-decoration: none; font-weight: normal; color: #0000FF} -A.codeRef:link { font-weight: normal; color: #0000FF} -A.codeRef:visited { font-weight: normal; color: #0000FF} -A:hover { text-decoration: none; background-color: #f2f2ff } -DL.el { margin-left: -1cm } -.fragment { - font-family: Fixed, monospace; - font-size: 95%; -} -PRE.fragment { - border: 1px solid #CCCCCC; - background-color: #f5f5f5; - margin-top: 4px; - margin-bottom: 4px; - margin-left: 2px; - margin-right: 8px; - padding-left: 6px; - padding-right: 6px; - padding-top: 4px; - padding-bottom: 4px; -} -DIV.ah { background-color: black; font-weight: bold; color: #ffffff; margin-bottom: 3px; margin-top: 3px } -TD.md { background-color: #F4F4FB; font-weight: bold; } -TD.mdPrefix { - background-color: #F4F4FB; - color: #606060; - font-size: 80%; -} -TD.mdname1 { background-color: #F4F4FB; font-weight: bold; color: #602020; } -TD.mdname { background-color: #F4F4FB; font-weight: bold; color: #602020; width: 600px; } -DIV.groupHeader { - margin-left: 16px; - margin-top: 12px; - margin-bottom: 6px; - font-weight: bold; -} -DIV.groupText { margin-left: 16px; font-style: italic; font-size: 90% } -BODY { - background: white; - color: black; - margin-right: 20px; - margin-left: 20px; -} -TD.indexkey { - background-color: #e8eef2; - font-weight: bold; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px; - border: 1px solid #CCCCCC; -} -TD.indexvalue { - background-color: #e8eef2; - font-style: italic; - padding-right : 10px; - padding-top : 2px; - padding-left : 10px; - padding-bottom : 2px; - margin-left : 0px; - margin-right : 0px; - margin-top : 2px; - margin-bottom : 2px; - border: 1px solid #CCCCCC; -} -TR.memlist { - background-color: #f0f0f0; -} -P.formulaDsp { text-align: center; } -IMG.formulaDsp { } -IMG.formulaInl { vertical-align: middle; } -SPAN.keyword { color: #008000 } -SPAN.keywordtype { color: #604020 } -SPAN.keywordflow { color: #e08000 } -SPAN.comment { color: #800000 } -SPAN.preprocessor { color: #806020 } -SPAN.stringliteral { color: #002080 } -SPAN.charliteral { color: #008080 } -.mdTable { - border: 1px solid #868686; - background-color: #F4F4FB; -} -.mdRow { - padding: 8px 10px; -} -.mdescLeft { - padding: 0px 8px 4px 8px; - font-size: 80%; - font-style: italic; - background-color: #FAFAFA; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; -} -.mdescRight { - padding: 0px 8px 4px 8px; - font-size: 80%; - font-style: italic; - background-color: #FAFAFA; - border-top: 1px none #E0E0E0; - border-right: 1px none #E0E0E0; - border-bottom: 1px none #E0E0E0; - border-left: 1px none #E0E0E0; - margin: 0px; -} -.memItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memItemRight { - padding: 1px 8px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memTemplItemLeft { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: none; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memTemplItemRight { - padding: 1px 8px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: none; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - background-color: #FAFAFA; - font-size: 80%; -} -.memTemplParams { - padding: 1px 0px 0px 8px; - margin: 4px; - border-top-width: 1px; - border-right-width: 1px; - border-bottom-width: 1px; - border-left-width: 1px; - border-top-color: #E0E0E0; - border-right-color: #E0E0E0; - border-bottom-color: #E0E0E0; - border-left-color: #E0E0E0; - border-top-style: solid; - border-right-style: none; - border-bottom-style: none; - border-left-style: none; - color: #606060; - background-color: #FAFAFA; - font-size: 80%; -} -.search { color: #003399; - font-weight: bold; -} -FORM.search { - margin-bottom: 0px; - margin-top: 0px; -} -INPUT.search { font-size: 75%; - color: #000080; - font-weight: normal; - background-color: #e8eef2; -} -TD.tiny { font-size: 75%; -} -a { - color: #1A41A8; -} -a:visited { - color: #2A3798; -} -.dirtab { padding: 4px; - border-collapse: collapse; - border: 1px solid #84b0c7; -} -TH.dirtab { background: #e8eef2; - font-weight: bold; -} -HR { height: 1px; - border: none; - border-top: 1px solid black; -} - diff --git a/components/net/uip/doc/html/doxygen.png b/components/net/uip/doc/html/doxygen.png deleted file mode 100644 index f0a274bbaffdd67f6d784c894d9cf28729db0e14..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/doxygen.png and /dev/null differ diff --git a/components/net/uip/doc/html/examples.html b/components/net/uip/doc/html/examples.html deleted file mode 100644 index d51b0415380676062abf63521e38ce8b840482e0..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/examples.html +++ /dev/null @@ -1,38 +0,0 @@ - - -uIP 1.0: Examples - - - - - -

uIP 1.0 Examples

Here is a list of all examples: -
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/files.html b/components/net/uip/doc/html/files.html deleted file mode 100644 index 45982f989bec5250c8c389fafb439ef2e3c4f88d..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/files.html +++ /dev/null @@ -1,67 +0,0 @@ - - -uIP 1.0: File Index - - - - - - -

uIP 1.0 File List

Here is a list of all documented files with brief descriptions: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
apps/dhcpc/dhcpc.c [code]
apps/dhcpc/dhcpc.h [code]
apps/hello-world/hello-world.c [code]An example of how to write uIP applications with protosockets
apps/hello-world/hello-world.h [code]Header file for an example of how to write uIP applications with protosockets
apps/resolv/resolv.c [code]DNS host name to IP address resolver
apps/resolv/resolv.h [code]DNS resolver code header file
apps/smtp/smtp.c [code]SMTP example implementation
apps/smtp/smtp.h [code]SMTP header file
apps/telnetd/shell.c [code]
apps/telnetd/shell.h [code]Interface for the Contiki shell
apps/telnetd/telnetd.c [code]
apps/telnetd/telnetd.h [code]
apps/webclient/webclient.c [code]Implementation of the HTTP client
apps/webclient/webclient.h [code]Header file for the HTTP client
apps/webserver/httpd-cgi.c [code]Web server script interface
apps/webserver/httpd-cgi.h [code]Web server script interface header file
apps/webserver/httpd.c [code]Web server
apps/webserver/httpd.h [code]
lib/memb.c [code]Memory block allocation routines
lib/memb.h [code]Memory block allocation routines
uip/clock.h [code]
uip/lc-addrlabels.h [code]Implementation of local continuations based on the "Labels as values" feature of gcc
uip/lc-switch.h [code]Implementation of local continuations based on switch() statment
uip/lc.h [code]Local continuations
uip/psock.c [code]
uip/psock.h [code]Protosocket library header file
uip/pt.h [code]Protothreads implementation
uip/timer.c [code]Timer library implementation
uip/timer.h [code]Timer library header file
uip/uip-neighbor.c [code]Database of link-local neighbors, used by IPv6 code and to be used by a future ARP code rewrite
uip/uip-neighbor.h [code]Header file for database of link-local neighbors, used by IPv6 code and to be used by future ARP code
uip/uip-split.c [code]
uip/uip-split.h [code]Module for splitting outbound TCP segments in two to avoid the delayed ACK throughput degradation
uip/uip.c [code]The uIP TCP/IP stack code
uip/uip.h [code]Header file for the uIP TCP/IP stack
uip/uip_arch.h [code]Declarations of architecture specific functions
uip/uip_arp.c [code]Implementation of the ARP Address Resolution Protocol
uip/uip_arp.h [code]Macros and definitions for the ARP module
uip/uipopt.h [code]Configuration options for uIP
unix/uip-conf.h [code]An example uIP configuration file
-
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/ftv2blank.png b/components/net/uip/doc/html/ftv2blank.png deleted file mode 100644 index 493c3c0b615ade5b22027bde773faf2c0e076d66..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2blank.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2doc.png b/components/net/uip/doc/html/ftv2doc.png deleted file mode 100644 index f72999f92172cca6edaa2538286b3e369bec9f49..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2doc.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2folderclosed.png b/components/net/uip/doc/html/ftv2folderclosed.png deleted file mode 100644 index d6d063440cbf13c4128dacd96661b6fce58abf26..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2folderclosed.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2folderopen.png b/components/net/uip/doc/html/ftv2folderopen.png deleted file mode 100644 index bbe2c913cf493ee37ad8e3a5132382138d93ac92..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2folderopen.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2lastnode.png b/components/net/uip/doc/html/ftv2lastnode.png deleted file mode 100644 index e7b9ba90cb0cf71c8ce662956bfee7d64cf60fa6..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2lastnode.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2link.png b/components/net/uip/doc/html/ftv2link.png deleted file mode 100644 index 14f3fed003659b11214ac7a1ca0efa2b9145ce9e..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2link.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2mlastnode.png b/components/net/uip/doc/html/ftv2mlastnode.png deleted file mode 100644 index 09ceb6adb01054ce799ad20c0e818ab9272f2df2..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2mlastnode.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2mnode.png b/components/net/uip/doc/html/ftv2mnode.png deleted file mode 100644 index 3254c05112199fbc80aad313611c58a5b388792d..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2mnode.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2node.png b/components/net/uip/doc/html/ftv2node.png deleted file mode 100644 index c9f06a57f4cfe0f9851cc1aacd7245f741b53ad1..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2node.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2plastnode.png b/components/net/uip/doc/html/ftv2plastnode.png deleted file mode 100644 index 0b07e00913d8069ebbb51bd7fd6d70d8bba88f75..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2plastnode.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2pnode.png b/components/net/uip/doc/html/ftv2pnode.png deleted file mode 100644 index 2001b797ba2b98a4127f1d3efca64aef08bf6d51..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2pnode.png and /dev/null differ diff --git a/components/net/uip/doc/html/ftv2vertline.png b/components/net/uip/doc/html/ftv2vertline.png deleted file mode 100644 index b330f3a33c0085c183ff39fc56b1b274160c1da0..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/ftv2vertline.png and /dev/null differ diff --git a/components/net/uip/doc/html/functions.html b/components/net/uip/doc/html/functions.html deleted file mode 100644 index ab3e8e7a4d741ba252e9bb5c0595a0b1c47e63b7..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/functions.html +++ /dev/null @@ -1,217 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - -
- -
-
- -
- -

-Here is a list of all documented struct and union fields with links to the struct/union documentation for each field: -

-

- a -

-

- b -

-

- c -

-

- d -

-

- f -

-

- g -

-

- h -

-

- i -

-

- l -

-

- m -

-

- n -

-

- o -

-

- p -

-

- r -

-

- s -

-

- t -

-

- u -

-

- v -

-

- w -

-
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/functions_vars.html b/components/net/uip/doc/html/functions_vars.html deleted file mode 100644 index 466d78ad724886ef9f2696511d998c1ef2318c6b..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/functions_vars.html +++ /dev/null @@ -1,217 +0,0 @@ - - -uIP 1.0: Data Fields - Variables - - - - - - -
- -
-
- -
- -

-  -

-

- a -

-

- b -

-

- c -

-

- d -

-

- f -

-

- g -

-

- h -

-

- i -

-

- l -

-

- m -

-

- n -

-

- o -

-

- p -

-

- r -

-

- s -

-

- t -

-

- u -

-

- v -

-

- w -

-
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals.html b/components/net/uip/doc/html/globals.html deleted file mode 100644 index 31796bf32751b050d5dd3da82f17432e86344e07..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals.html +++ /dev/null @@ -1,62 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- _ -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x61.html b/components/net/uip/doc/html/globals_0x61.html deleted file mode 100644 index 15a80fa9d4449ebc9c9f5d152d28ec589baefa80..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x61.html +++ /dev/null @@ -1,64 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- a -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x62.html b/components/net/uip/doc/html/globals_0x62.html deleted file mode 100644 index a5c87983043f25f7ffa62893280e738f88b8c666..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x62.html +++ /dev/null @@ -1,62 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- b -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x64.html b/components/net/uip/doc/html/globals_0x64.html deleted file mode 100644 index b676eee78b446c650884b7d5433d87e00939baf0..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x64.html +++ /dev/null @@ -1,73 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- d -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x65.html b/components/net/uip/doc/html/globals_0x65.html deleted file mode 100644 index c47f60d475b1c361e1c07cf8a8ffdc4134b5b3c4..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x65.html +++ /dev/null @@ -1,62 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- e -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x66.html b/components/net/uip/doc/html/globals_0x66.html deleted file mode 100644 index cc2bf8abe6e125c03725d907313817de36fce59b..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x66.html +++ /dev/null @@ -1,62 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- f -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x68.html b/components/net/uip/doc/html/globals_0x68.html deleted file mode 100644 index d01ae961aad8a5c37d4b28be3f91493982bfb659..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x68.html +++ /dev/null @@ -1,73 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- h -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x69.html b/components/net/uip/doc/html/globals_0x69.html deleted file mode 100644 index fe4560810ea645275aa6063efacd6e0c3ea8f237..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x69.html +++ /dev/null @@ -1,84 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- i -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x6c.html b/components/net/uip/doc/html/globals_0x6c.html deleted file mode 100644 index eaeb84dda490e10441093662916deefff4852050..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x6c.html +++ /dev/null @@ -1,66 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- l -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x6d.html b/components/net/uip/doc/html/globals_0x6d.html deleted file mode 100644 index c3f3c121e06a660e2f910b16a7d21670b1c18cc1..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x6d.html +++ /dev/null @@ -1,69 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- m -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x6e.html b/components/net/uip/doc/html/globals_0x6e.html deleted file mode 100644 index 324dbb39d1475ee1b74f91956be6411e1ae0c75c..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x6e.html +++ /dev/null @@ -1,63 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- n -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x70.html b/components/net/uip/doc/html/globals_0x70.html deleted file mode 100644 index cf5972cffd480dc1684c4f22c18c3b82add32cf5..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x70.html +++ /dev/null @@ -1,95 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- p -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x72.html b/components/net/uip/doc/html/globals_0x72.html deleted file mode 100644 index ba708eb70ca77392bed2f44817ce5bb4267d0344..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x72.html +++ /dev/null @@ -1,69 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- r -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x73.html b/components/net/uip/doc/html/globals_0x73.html deleted file mode 100644 index 19f8c41be5537fb97fe3870e7a360939b551be43..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x73.html +++ /dev/null @@ -1,81 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- s -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x74.html b/components/net/uip/doc/html/globals_0x74.html deleted file mode 100644 index af197ed9c880736a0edb0b04cbe2352edf0d482a..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x74.html +++ /dev/null @@ -1,76 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- t -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x75.html b/components/net/uip/doc/html/globals_0x75.html deleted file mode 100644 index 1f487bc9ddd1cb71b1643513a48c5916a4b838c7..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x75.html +++ /dev/null @@ -1,237 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- u -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_0x77.html b/components/net/uip/doc/html/globals_0x77.html deleted file mode 100644 index 8b56378734db45da0fe7512ce67cdacc89846553..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_0x77.html +++ /dev/null @@ -1,80 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-Here is a list of all documented functions, variables, defines, enums, and typedefs with links to the documentation: -

-

- w -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs.html b/components/net/uip/doc/html/globals_defs.html deleted file mode 100644 index 8bcd1937b196a0b62cb6df5c90ee5d8fe3dbce2c..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs.html +++ /dev/null @@ -1,62 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- _ -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x61.html b/components/net/uip/doc/html/globals_defs_0x61.html deleted file mode 100644 index 82c84b8eacf100ec24e967193c10fb223dee3d11..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x61.html +++ /dev/null @@ -1,64 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- a -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x62.html b/components/net/uip/doc/html/globals_defs_0x62.html deleted file mode 100644 index c41b24b12f3b3df89d5af865c1d4394a3e74c2f6..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x62.html +++ /dev/null @@ -1,62 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- b -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x64.html b/components/net/uip/doc/html/globals_defs_0x64.html deleted file mode 100644 index ff1fcbdb0471210f36d9e3092324a5422741c759..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x64.html +++ /dev/null @@ -1,73 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- d -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x65.html b/components/net/uip/doc/html/globals_defs_0x65.html deleted file mode 100644 index b08aab45476fbf02b8265a672571209f8394b710..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x65.html +++ /dev/null @@ -1,62 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- e -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x66.html b/components/net/uip/doc/html/globals_defs_0x66.html deleted file mode 100644 index 1bd4a6e1c699052870db5ab168444c24332ec027..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x66.html +++ /dev/null @@ -1,62 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- f -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x68.html b/components/net/uip/doc/html/globals_defs_0x68.html deleted file mode 100644 index 8c1a772d9344c40381ed5764dfc2071385c89fcc..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x68.html +++ /dev/null @@ -1,67 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- h -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x69.html b/components/net/uip/doc/html/globals_defs_0x69.html deleted file mode 100644 index 7478ca0f784d06e62b0bea5f763317906d1b36dd..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x69.html +++ /dev/null @@ -1,84 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- i -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x6c.html b/components/net/uip/doc/html/globals_defs_0x6c.html deleted file mode 100644 index 14730df9b443b8432470aad0d9e3ad0301a48e85..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x6c.html +++ /dev/null @@ -1,65 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- l -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x6d.html b/components/net/uip/doc/html/globals_defs_0x6d.html deleted file mode 100644 index ccb19695442648e8b851881b630f77eb205a83f5..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x6d.html +++ /dev/null @@ -1,66 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- m -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x6e.html b/components/net/uip/doc/html/globals_defs_0x6e.html deleted file mode 100644 index 5244c1d62f0dd9aac562541c6e2b28da310cb8d4..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x6e.html +++ /dev/null @@ -1,63 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- n -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x70.html b/components/net/uip/doc/html/globals_defs_0x70.html deleted file mode 100644 index abd98a950ed7b0822123a44fd77972176c6533d0..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x70.html +++ /dev/null @@ -1,93 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- p -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x72.html b/components/net/uip/doc/html/globals_defs_0x72.html deleted file mode 100644 index a80c5cb376e7b8653b653fa1239a3ce40db93cf3..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x72.html +++ /dev/null @@ -1,62 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- r -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x73.html b/components/net/uip/doc/html/globals_defs_0x73.html deleted file mode 100644 index f334e9ebfe65f38543edffdb11719c198ee41c39..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x73.html +++ /dev/null @@ -1,70 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- s -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x74.html b/components/net/uip/doc/html/globals_defs_0x74.html deleted file mode 100644 index 8224ebfffbcd22c1f0da861f341a4ce749dbd924..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x74.html +++ /dev/null @@ -1,72 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- t -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x75.html b/components/net/uip/doc/html/globals_defs_0x75.html deleted file mode 100644 index 8f0ec88a4ef30847ad9db4b15ca67ec207059512..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x75.html +++ /dev/null @@ -1,188 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- u -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_defs_0x77.html b/components/net/uip/doc/html/globals_defs_0x77.html deleted file mode 100644 index 9f19416bb3045624cea312610bb2c43e8712fcea..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_defs_0x77.html +++ /dev/null @@ -1,67 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- w -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_func.html b/components/net/uip/doc/html/globals_func.html deleted file mode 100644 index 49f1393d89e24d2a6259a39553ec19938eaa72ee..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_func.html +++ /dev/null @@ -1,136 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -
- -
- -

-  -

-

- h -

-

- m -

-

- p -

-

- r -

-

- s -

-

- t -

-

- u -

-

- w -

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_type.html b/components/net/uip/doc/html/globals_type.html deleted file mode 100644 index 084f32df4f8565f4017dd0be2d29a250537b3627..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_type.html +++ /dev/null @@ -1,47 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -  -

-

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/globals_vars.html b/components/net/uip/doc/html/globals_vars.html deleted file mode 100644 index beddb5089899213ace3af697c6c49912218fc04e..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/globals_vars.html +++ /dev/null @@ -1,55 +0,0 @@ - - -uIP 1.0: Data Fields - - - - - - - -  -

-

-
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/hierarchy.html b/components/net/uip/doc/html/hierarchy.html deleted file mode 100644 index 4b3ba986bdee362e9725f1d505c606df5d7a4e4c..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/hierarchy.html +++ /dev/null @@ -1,50 +0,0 @@ - - -uIP 1.0: Hierarchical Index - - - - - - -

uIP 1.0 Class Hierarchy

This inheritance list is sorted roughly, but not completely, alphabetically: -
Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/index.hhc b/components/net/uip/doc/html/index.hhc deleted file mode 100644 index be5830e6498cfbe687d8a97b8a714a4d8c26df47..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/index.hhc +++ /dev/null @@ -1,192 +0,0 @@ - - - - - -
    -
  • -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
  • -
      -
    • -
        -
      • -
          -
        -
      -
    • -
        -
      • -
          -
        -
      • -
          -
        -
      • -
          -
        -
      • -
          -
        -
      • -
          -
        -
      -
    • -
        -
      • -
          -
        -
      • -
          -
        -
      • -
          -
        -
      • -
          -
        -
      • -
          -
        -
      • -
          -
        -
      • -
          -
        -
      • -
          -
        -
      • -
          -
        -
      -
    • -
        -
      -
    • -
        -
      -
    • -
        -
      -
    • -
        -
      -
    • -
        -
      -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
diff --git a/components/net/uip/doc/html/index.hhk b/components/net/uip/doc/html/index.hhk deleted file mode 100644 index ac1b196f93e0b921b02ca94b96704aafc9dedac0..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/index.hhk +++ /dev/null @@ -1,450 +0,0 @@ - - - - - -
    -
  • -
      -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    • -
    -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
diff --git a/components/net/uip/doc/html/index.hhp b/components/net/uip/doc/html/index.hhp deleted file mode 100644 index d7d07254a79ed127a79d7c347fa03b857f5f8b61..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/index.hhp +++ /dev/null @@ -1,197 +0,0 @@ -[OPTIONS] -Compatibility=1.1 -Full-text search=Yes -Contents file=index.hhc -Default Window=main -Default topic=main.html -Index file=index.hhk -Language=0x409 English (United States) -Binary TOC=YES -Create CHI file=YES -Title=uIP 1.0 - -[WINDOWS] -main="uIP 1.0","index.hhc","index.hhk","main.html","main.html",,,,,0x23520,,0x387e,,,,,,,,0 - -[FILES] -main.html -files.html -a00048.html -a00049.html -a00042.html -a00043.html -a00036.html -a00037.html -a00046.html -a00047.html -a00038.html -a00039.html -a00044.html -a00045.html -a00051.html -a00050.html -a00040.html -a00041.html -a00168.html -a00169.html -a00170.html -a00171.html -a00172.html -a00173.html -a00174.html -a00175.html -a00176.html -a00177.html -a00178.html -a00179.html -a00180.html -a00181.html -a00182.html -a00183.html -a00184.html -a00185.html -a00186.html -a00187.html -a00188.html -a00189.html -a00190.html -a00191.html -a00192.html -a00193.html -a00194.html -a00195.html -a00196.html -a00197.html -a00198.html -a00199.html -a00200.html -a00201.html -a00202.html -a00203.html -a00204.html -a00205.html -a00206.html -a00207.html -a00100.html -a00101.html -a00102.html -a00103.html -a00104.html -a00105.html -a00107.html -a00110.html -a00111.html -a00112.html -a00113.html -a00114.html -a00120.html -a00121.html -a00123.html -a00124.html -a00125.html -a00127.html -a00128.html -a00129.html -a00130.html -a00131.html -a00132.html -a00134.html -a00135.html -a00136.html -a00137.html -a00138.html -a00139.html -a00140.html -a00141.html -annotated.html -classes.html -hierarchy.html -functions.html -functions_vars.html -a00077.html -a00078.html -a00079.html -a00080.html -a00081.html -a00082.html -a00083.html -a00084.html -a00085.html -a00086.html -a00087.html -a00088.html -a00089.html -a00090.html -a00091.html -a00092.html -a00093.html -a00094.html -a00095.html -a00096.html -a00097.html -a00142.html -a00143.html -a00144.html -a00145.html -a00146.html -a00147.html -a00148.html -a00149.html -a00150.html -a00151.html -a00152.html -a00153.html -a00154.html -a00155.html -a00156.html -a00157.html -a00158.html -a00159.html -a00160.html -a00161.html -a00162.html -a00163.html -a00164.html -modules.html -examples.html -globals.html -globals_0x61.html -globals_0x62.html -globals_0x64.html -globals_0x65.html -globals_0x66.html -globals_0x68.html -globals_0x69.html -globals_0x6c.html -globals_0x6d.html -globals_0x6e.html -globals_0x70.html -globals_0x72.html -globals_0x73.html -globals_0x74.html -globals_0x75.html -globals_0x77.html -globals_func.html -globals_vars.html -globals_type.html -globals_defs.html -globals_defs_0x61.html -globals_defs_0x62.html -globals_defs_0x64.html -globals_defs_0x65.html -globals_defs_0x66.html -globals_defs_0x68.html -globals_defs_0x69.html -globals_defs_0x6c.html -globals_defs_0x6d.html -globals_defs_0x6e.html -globals_defs_0x70.html -globals_defs_0x72.html -globals_defs_0x73.html -globals_defs_0x74.html -globals_defs_0x75.html -globals_defs_0x77.html -tabs.css -tab_b.gif -tab_l.gif -tab_r.gif diff --git a/components/net/uip/doc/html/index.html b/components/net/uip/doc/html/index.html deleted file mode 100644 index b4bd6701de4bc61851fd5491c35fb77cb46ad404..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - -uIP 1.0 - - - - - diff --git a/components/net/uip/doc/html/main.html b/components/net/uip/doc/html/main.html deleted file mode 100644 index ab1b46ae6310ba99b883c43d267303c66474eac6..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/main.html +++ /dev/null @@ -1,421 +0,0 @@ - - -uIP 1.0: The uIP TCP/IP stack - - - - - -

The uIP TCP/IP stack

-

-

Author:
Adam Dunkels, http://www.sics.se/~adam/
-The uIP TCP/IP stack is intended to make it possible to communicate using the TCP/IP protocol suite even on small 8-bit micro-controllers. Despite being small and simple, uIP do not require their peers to have complex, full-size stacks, but can communicate with peers running a similarly light-weight stack. The code size is on the order of a few kilobytes and RAM usage can be configured to be as low as a few hundred bytes.

-uIP can be found at the uIP web page: http://www.sics.se/~adam/uip/

-

See also:
Application programs

-Compile-time configuration options

-Run-time configuration functions

-Initialization functions

-Device driver interface and variables used by device drivers

-uIP functions called from application programs (see below) and the protosockets API and their underlying protothreads

-

-Introduction

-With the success of the Internet, the TCP/IP protocol suite has become a global standard for communication. TCP/IP is the underlying protocol used for web page transfers, e-mail transmissions, file transfers, and peer-to-peer networking over the Internet. For embedded systems, being able to run native TCP/IP makes it possible to connect the system directly to an intranet or even the global Internet. Embedded devices with full TCP/IP support will be first-class network citizens, thus being able to fully communicate with other hosts in the network.

-Traditional TCP/IP implementations have required far too much resources both in terms of code size and memory usage to be useful in small 8 or 16-bit systems. Code size of a few hundred kilobytes and RAM requirements of several hundreds of kilobytes have made it impossible to fit the full TCP/IP stack into systems with a few tens of kilobytes of RAM and room for less than 100 kilobytes of code.

-The uIP implementation is designed to have only the absolute minimal set of features needed for a full TCP/IP stack. It can only handle a single network interface and contains the IP, ICMP, UDP and TCP protocols. uIP is written in the C programming language.

-Many other TCP/IP implementations for small systems assume that the embedded device always will communicate with a full-scale TCP/IP implementation running on a workstation-class machine. Under this assumption, it is possible to remove certain TCP/IP mechanisms that are very rarely used in such situations. Many of those mechanisms are essential, however, if the embedded device is to communicate with another equally limited device, e.g., when running distributed peer-to-peer services and protocols. uIP is designed to be RFC compliant in order to let the embedded devices to act as first-class network citizens. The uIP TCP/IP implementation that is not tailored for any specific application.

-TCP/IP Communication

-The full TCP/IP suite consists of numerous protocols, ranging from low level protocols such as ARP which translates IP addresses to MAC addresses, to application level protocols such as SMTP that is used to transfer e-mail. The uIP is mostly concerned with the TCP and IP protocols and upper layer protocols will be referred to as "the application". Lower layer protocols are often implemented in hardware or firmware and will be referred to as "the network device" that are controlled by the network device driver.

-TCP provides a reliable byte stream to the upper layer protocols. It breaks the byte stream into appropriately sized segments and each segment is sent in its own IP packet. The IP packets are sent out on the network by the network device driver. If the destination is not on the physically connected network, the IP packet is forwarded onto another network by a router that is situated between the two networks. If the maximum packet size of the other network is smaller than the size of the IP packet, the packet is fragmented into smaller packets by the router. If possible, the size of the TCP segments are chosen so that fragmentation is minimized. The final recipient of the packet will have to reassemble any fragmented IP packets before they can be passed to higher layers.

-The formal requirements for the protocols in the TCP/IP stack is specified in a number of RFC documents published by the Internet Engineering Task Force, IETF. Each of the protocols in the stack is defined in one more RFC documents and RFC1122 collects all requirements and updates the previous RFCs.

-The RFC1122 requirements can be divided into two categories; those that deal with the host to host communication and those that deal with communication between the application and the networking stack. An example of the first kind is "A TCP MUST be able to receive a TCP option in any segment" and an example of the second kind is "There MUST be a mechanism for reporting soft TCP error conditions to the application." A TCP/IP implementation that violates requirements of the first kind may not be able to communicate with other TCP/IP implementations and may even lead to network failures. Violation of the second kind of requirements will only affect the communication within the system and will not affect host-to-host communication.

-In uIP, all RFC requirements that affect host-to-host communication are implemented. However, in order to reduce code size, we have removed certain mechanisms in the interface between the application and the stack, such as the soft error reporting mechanism and dynamically configurable type-of-service bits for TCP connections. Since there are only very few applications that make use of those features they can be removed without loss of generality.

-Main Control Loop

-The uIP stack can be run either as a task in a multitasking system, or as the main program in a singletasking system. In both cases, the main control loop does two things repeatedly:

-

    -
  • Check if a packet has arrived from the network.
  • Check if a periodic timeout has occurred.
-

-If a packet has arrived, the input handler function, uip_input(), should be invoked by the main control loop. The input handler function will never block, but will return at once. When it returns, the stack or the application for which the incoming packet was intended may have produced one or more reply packets which should be sent out. If so, the network device driver should be called to send out these packets.

-Periodic timeouts are used to drive TCP mechanisms that depend on timers, such as delayed acknowledgments, retransmissions and round-trip time estimations. When the main control loop infers that the periodic timer should fire, it should invoke the timer handler function uip_periodic(). Because the TCP/IP stack may perform retransmissions when dealing with a timer event, the network device driver should called to send out the packets that may have been produced.

-Architecture Specific Functions

-uIP requires a few functions to be implemented specifically for the architecture on which uIP is intended to run. These functions should be hand-tuned for the particular architecture, but generic C implementations are given as part of the uIP distribution.

-Checksum Calculation

-The TCP and IP protocols implement a checksum that covers the data and header portions of the TCP and IP packets. Since the calculation of this checksum is made over all bytes in every packet being sent and received it is important that the function that calculates the checksum is efficient. Most often, this means that the checksum calculation must be fine-tuned for the particular architecture on which the uIP stack runs.

-While uIP includes a generic checksum function, it also leaves it open for an architecture specific implementation of the two functions uip_ipchksum() and uip_tcpchksum(). The checksum calculations in those functions can be written in highly optimized assembler rather than generic C code.

-32-bit Arithmetic

-The TCP protocol uses 32-bit sequence numbers, and a TCP implementation will have to do a number of 32-bit additions as part of the normal protocol processing. Since 32-bit arithmetic is not natively available on many of the platforms for which uIP is intended, uIP leaves the 32-bit additions to be implemented by the architecture specific module and does not make use of any 32-bit arithmetic in the main code base.

-While uIP implements a generic 32-bit addition, there is support for having an architecture specific implementation of the uip_add32() function.

-Memory Management

-In the architectures for which uIP is intended, RAM is the most scarce resource. With only a few kilobytes of RAM available for the TCP/IP stack to use, mechanisms used in traditional TCP/IP cannot be directly applied.

-The uIP stack does not use explicit dynamic memory allocation. Instead, it uses a single global buffer for holding packets and has a fixed table for holding connection state. The global packet buffer is large enough to contain one packet of maximum size. When a packet arrives from the network, the device driver places it in the global buffer and calls the TCP/IP stack. If the packet contains data, the TCP/IP stack will notify the corresponding application. Because the data in the buffer will be overwritten by the next incoming packet, the application will either have to act immediately on the data or copy the data into a secondary buffer for later processing. The packet buffer will not be overwritten by new packets before the application has processed the data. Packets that arrive when the application is processing the data must be queued, either by the network device or by the device driver. Most single-chip Ethernet controllers have on-chip buffers that are large enough to contain at least 4 maximum sized Ethernet frames. Devices that are handled by the processor, such as RS-232 ports, can copy incoming bytes to a separate buffer during application processing. If the buffers are full, the incoming packet is dropped. This will cause performance degradation, but only when multiple connections are running in parallel. This is because uIP advertises a very small receiver window, which means that only a single TCP segment will be in the network per connection.

-In uIP, the same global packet buffer that is used for incoming packets is also used for the TCP/IP headers of outgoing data. If the application sends dynamic data, it may use the parts of the global packet buffer that are not used for headers as a temporary storage buffer. To send the data, the application passes a pointer to the data as well as the length of the data to the stack. The TCP/IP headers are written into the global buffer and once the headers have been produced, the device driver sends the headers and the application data out on the network. The data is not queued for retransmissions. Instead, the application will have to reproduce the data if a retransmission is necessary.

-The total amount of memory usage for uIP depends heavily on the applications of the particular device in which the implementations are to be run. The memory configuration determines both the amount of traffic the system should be able to handle and the maximum amount of simultaneous connections. A device that will be sending large e-mails while at the same time running a web server with highly dynamic web pages and multiple simultaneous clients, will require more RAM than a simple Telnet server. It is possible to run the uIP implementation with as little as 200 bytes of RAM, but such a configuration will provide extremely low throughput and will only allow a small number of simultaneous connections.

-Application Program Interface (API)

-The Application Program Interface (API) defines the way the application program interacts with the TCP/IP stack. The most commonly used API for TCP/IP is the BSD socket API which is used in most Unix systems and has heavily influenced the Microsoft Windows WinSock API. Because the socket API uses stop-and-wait semantics, it requires support from an underlying multitasking operating system. Since the overhead of task management, context switching and allocation of stack space for the tasks might be too high in the intended uIP target architectures, the BSD socket interface is not suitable for our purposes.

-uIP provides two APIs to programmers: protosockets, a BSD socket-like API without the overhead of full multi-threading, and a "raw" event-based API that is nore low-level than protosockets but uses less memory.

-

See also:
Protosockets library

-Protothreads

-

-The uIP raw API

-The "raw" uIP API uses an event driven interface where the application is invoked in response to certain events. An application running on top of uIP is implemented as a C function that is called by uIP in response to certain events. uIP calls the application when data is received, when data has been successfully delivered to the other end of the connection, when a new connection has been set up, or when data has to be retransmitted. The application is also periodically polled for new data. The application program provides only one callback function; it is up to the application to deal with mapping different network services to different ports and connections. Because the application is able to act on incoming data and connection requests as soon as the TCP/IP stack receives the packet, low response times can be achieved even in low-end systems.

-uIP is different from other TCP/IP stacks in that it requires help from the application when doing retransmissions. Other TCP/IP stacks buffer the transmitted data in memory until the data is known to be successfully delivered to the remote end of the connection. If the data needs to be retransmitted, the stack takes care of the retransmission without notifying the application. With this approach, the data has to be buffered in memory while waiting for an acknowledgment even if the application might be able to quickly regenerate the data if a retransmission has to be made.

-In order to reduce memory usage, uIP utilizes the fact that the application may be able to regenerate sent data and lets the application take part in retransmissions. uIP does not keep track of packet contents after they have been sent by the device driver, and uIP requires that the application takes an active part in performing the retransmission. When uIP decides that a segment should be retransmitted, it calls the application with a flag set indicating that a retransmission is required. The application checks the retransmission flag and produces the same data that was previously sent. From the application's standpoint, performing a retransmission is not different from how the data originally was sent. Therefore the application can be written in such a way that the same code is used both for sending data and retransmitting data. Also, it is important to note that even though the actual retransmission operation is carried out by the application, it is the responsibility of the stack to know when the retransmission should be made. Thus the complexity of the application does not necessarily increase because it takes an active part in doing retransmissions.

-Application Events

-The application must be implemented as a C function, UIP_APPCALL(), that uIP calls whenever an event occurs. Each event has a corresponding test function that is used to distinguish between different events. The functions are implemented as C macros that will evaluate to either zero or non-zero. Note that certain events can happen in conjunction with each other (i.e., new data can arrive at the same time as data is acknowledged).

-The Connection Pointer

-When the application is called by uIP, the global variable uip_conn is set to point to the uip_conn structure for the connection that currently is handled, and is called the "current connection". The fields in the uip_conn structure for the current connection can be used, e.g., to distinguish between different services, or to check to which IP address the connection is connected. One typical use would be to inspect the uip_conn->lport (the local TCP port number) to decide which service the connection should provide. For instance, an application might decide to act as an HTTP server if the value of uip_conn->lport is equal to 80 and act as a TELNET server if the value is 23.

-Receiving Data

-If the uIP test function uip_newdata() is non-zero, the remote host of the connection has sent new data. The uip_appdata pointer point to the actual data. The size of the data is obtained through the uIP function uip_datalen(). The data is not buffered by uIP, but will be overwritten after the application function returns, and the application will therefor have to either act directly on the incoming data, or by itself copy the incoming data into a buffer for later processing.

-Sending Data

-When sending data, uIP adjusts the length of the data sent by the application according to the available buffer space and the current TCP window advertised by the receiver. The amount of buffer space is dictated by the memory configuration. It is therefore possible that all data sent from the application does not arrive at the receiver, and the application may use the uip_mss() function to see how much data that actually will be sent by the stack.

-The application sends data by using the uIP function uip_send(). The uip_send() function takes two arguments; a pointer to the data to be sent and the length of the data. If the application needs RAM space for producing the actual data that should be sent, the packet buffer (pointed to by the uip_appdata pointer) can be used for this purpose.

-The application can send only one chunk of data at a time on a connection and it is not possible to call uip_send() more than once per application invocation; only the data from the last call will be sent.

-Retransmitting Data

-Retransmissions are driven by the periodic TCP timer. Every time the periodic timer is invoked, the retransmission timer for each connection is decremented. If the timer reaches zero, a retransmission should be made. As uIP does not keep track of packet contents after they have been sent by the device driver, uIP requires that the application takes an active part in performing the retransmission. When uIP decides that a segment should be retransmitted, the application function is called with the uip_rexmit() flag set, indicating that a retransmission is required.

-The application must check the uip_rexmit() flag and produce the same data that was previously sent. From the application's standpoint, performing a retransmission is not different from how the data originally was sent. Therefor, the application can be written in such a way that the same code is used both for sending data and retransmitting data. Also, it is important to note that even though the actual retransmission operation is carried out by the application, it is the responsibility of the stack to know when the retransmission should be made. Thus the complexity of the application does not necessarily increase because it takes an active part in doing retransmissions.

-Closing Connections

-The application closes the current connection by calling the uip_close() during an application call. This will cause the connection to be cleanly closed. In order to indicate a fatal error, the application might want to abort the connection and does so by calling the uip_abort() function.

-If the connection has been closed by the remote end, the test function uip_closed() is true. The application may then do any necessary cleanups.

-Reporting Errors

-There are two fatal errors that can happen to a connection, either that the connection was aborted by the remote host, or that the connection retransmitted the last data too many times and has been aborted. uIP reports this by calling the application function. The application can use the two test functions uip_aborted() and uip_timedout() to test for those error conditions.

-Polling

-When a connection is idle, uIP polls the application every time the periodic timer fires. The application uses the test function uip_poll() to check if it is being polled by uIP.

-The polling event has two purposes. The first is to let the application periodically know that a connection is idle, which allows the application to close connections that have been idle for too long. The other purpose is to let the application send new data that has been produced. The application can only send data when invoked by uIP, and therefore the poll event is the only way to send data on an otherwise idle connection.

-Listening Ports

-uIP maintains a list of listening TCP ports. A new port is opened for listening with the uip_listen() function. When a connection request arrives on a listening port, uIP creates a new connection and calls the application function. The test function uip_connected() is true if the application was invoked because a new connection was created.

-The application can check the lport field in the uip_conn structure to check to which port the new connection was connected.

-Opening Connections

-New connections can be opened from within uIP by the function uip_connect(). This function allocates a new connection and sets a flag in the connection state which will open a TCP connection to the specified IP address and port the next time the connection is polled by uIP. The uip_connect() function returns a pointer to the uip_conn structure for the new connection. If there are no free connection slots, the function returns NULL.

-The function uip_ipaddr() may be used to pack an IP address into the two element 16-bit array used by uIP to represent IP addresses.

-Two examples of usage are shown below. The first example shows how to open a connection to TCP port 8080 of the remote end of the current connection. If there are not enough TCP connection slots to allow a new connection to be opened, the uip_connect() function returns NULL and the current connection is aborted by uip_abort().

-

void connect_example1_app(void) {
-   if(uip_connect(uip_conn->ripaddr, HTONS(8080)) == NULL) {
-      uip_abort();
-   }
-}   
-

-The second example shows how to open a new connection to a specific IP address. No error checks are made in this example.

-

void connect_example2(void) {
-   u16_t ipaddr[2];
-
-   uip_ipaddr(ipaddr, 192,168,0,1);
-   uip_connect(ipaddr, HTONS(8080));
-}
-

-Examples

-This section presents a number of very simple uIP applications. The uIP code distribution contains several more complex applications.

-A Very Simple Application

-This first example shows a very simple application. The application listens for incoming connections on port 1234. When a connection has been established, the application replies to all data sent to it by saying "ok"

-The implementation of this application is shown below. The application is initialized with the function called example1_init() and the uIP callback function is called example1_app(). For this application, the configuration variable UIP_APPCALL should be defined to be example1_app().

-

void example1_init(void) {
-   uip_listen(HTONS(1234));
-}
-
-void example1_app(void) {
-   if(uip_newdata() || uip_rexmit()) {
-      uip_send("ok\n", 3);
-   }
-}
-

-The initialization function calls the uIP function uip_listen() to register a listening port. The actual application function example1_app() uses the test functions uip_newdata() and uip_rexmit() to determine why it was called. If the application was called because the remote end has sent it data, it responds with an "ok". If the application function was called because data was lost in the network and has to be retransmitted, it also sends an "ok". Note that this example actually shows a complete uIP application. It is not required for an application to deal with all types of events such as uip_connected() or uip_timedout().

-A More Advanced Application

-This second example is slightly more advanced than the previous one, and shows how the application state field in the uip_conn structure is used.

-This application is similar to the first application in that it listens to a port for incoming connections and responds to data sent to it with a single "ok". The big difference is that this application prints out a welcoming "Welcome!" message when the connection has been established.

-This seemingly small change of operation makes a big difference in how the application is implemented. The reason for the increase in complexity is that if data should be lost in the network, the application must know what data to retransmit. If the "Welcome!" message was lost, the application must retransmit the welcome and if one of the "ok" messages is lost, the application must send a new "ok".

-The application knows that as long as the "Welcome!" message has not been acknowledged by the remote host, it might have been dropped in the network. But once the remote host has sent an acknowledgment back, the application can be sure that the welcome has been received and knows that any lost data must be an "ok" message. Thus the application can be in either of two states: either in the WELCOME-SENT state where the "Welcome!" has been sent but not acknowledged, or in the WELCOME-ACKED state where the "Welcome!" has been acknowledged.

-When a remote host connects to the application, the application sends the "Welcome!" message and sets it's state to WELCOME-SENT. When the welcome message is acknowledged, the application moves to the WELCOME-ACKED state. If the application receives any new data from the remote host, it responds by sending an "ok" back.

-If the application is requested to retransmit the last message, it looks at in which state the application is. If the application is in the WELCOME-SENT state, it sends a "Welcome!" message since it knows that the previous welcome message hasn't been acknowledged. If the application is in the WELCOME-ACKED state, it knows that the last message was an "ok" message and sends such a message.

-The implementation of this application is seen below. This configuration settings for the application is follows after its implementation.

-

struct example2_state {
-   enum {WELCOME_SENT, WELCOME_ACKED} state;
-};
-
-void example2_init(void) {
-   uip_listen(HTONS(2345));
-}
-
-void example2_app(void) {
-   struct example2_state *s;
-
-   s = (struct example2_state *)uip_conn->appstate;
-   
-   if(uip_connected()) {
-      s->state = WELCOME_SENT;
-      uip_send("Welcome!\n", 9);
-      return;
-   } 
-
-   if(uip_acked() && s->state == WELCOME_SENT) {
-      s->state = WELCOME_ACKED;
-   }
-
-   if(uip_newdata()) {
-      uip_send("ok\n", 3);
-   }
-
-   if(uip_rexmit()) {
-      switch(s->state) {
-      case WELCOME_SENT:
-         uip_send("Welcome!\n", 9);
-         break;
-      case WELCOME_ACKED:
-         uip_send("ok\n", 3);
-         break;
-      }
-   }
-}
-

-The configuration for the application:

-

#define UIP_APPCALL       example2_app
-#define UIP_APPSTATE_SIZE sizeof(struct example2_state)
-

-Differentiating Between Applications

-If the system should run multiple applications, one technique to differentiate between them is to use the TCP port number of either the remote end or the local end of the connection. The example below shows how the two examples above can be combined into one application.

-

void example3_init(void) {
-   example1_init();
-   example2_init();   
-}
-
-void example3_app(void) {
-   switch(uip_conn->lport) {
-   case HTONS(1234):
-      example1_app();
-      break;
-   case HTONS(2345):
-      example2_app();
-      break;
-   }
-}
-

-Utilizing TCP Flow Control

-This example shows a simple application that connects to a host, sends an HTTP request for a file and downloads it to a slow device such a disk drive. This shows how to use the flow control functions of uIP.

-

void example4_init(void) {
-   u16_t ipaddr[2];
-   uip_ipaddr(ipaddr, 192,168,0,1);
-   uip_connect(ipaddr, HTONS(80));
-}
-
-void example4_app(void) {
-   if(uip_connected() || uip_rexmit()) {
-      uip_send("GET /file HTTP/1.0\r\nServer:192.186.0.1\r\n\r\n",
-               48);
-      return;
-   }
-
-   if(uip_newdata()) {
-      device_enqueue(uip_appdata, uip_datalen());
-      if(device_queue_full()) {
-         uip_stop();
-      }
-   }
-
-   if(uip_poll() && uip_stopped()) {
-      if(!device_queue_full()) {
-         uip_restart();
-      }
-   }
-}
-

-When the connection has been established, an HTTP request is sent to the server. Since this is the only data that is sent, the application knows that if it needs to retransmit any data, it is that request that should be retransmitted. It is therefore possible to combine these two events as is done in the example.

-When the application receives new data from the remote host, it sends this data to the device by using the function device_enqueue(). It is important to note that this example assumes that this function copies the data into its own buffers. The data in the uip_appdata buffer will be overwritten by the next incoming packet.

-If the device's queue is full, the application stops the data from the remote host by calling the uIP function uip_stop(). The application can then be sure that it will not receive any new data until uip_restart() is called. The application polling event is used to check if the device's queue is no longer full and if so, the data flow is restarted with uip_restart().

-A Simple Web Server

-This example shows a very simple file server application that listens to two ports and uses the port number to determine which file to send. If the files are properly formatted, this simple application can be used as a web server with static pages. The implementation follows.

-

struct example5_state {
-   char *dataptr;
-   unsigned int dataleft;
-};
-
-void example5_init(void) {
-   uip_listen(HTONS(80));
-   uip_listen(HTONS(81));
-}
-
-void example5_app(void) {
-   struct example5_state *s;
-   s = (struct example5_state)uip_conn->appstate;
-   
-   if(uip_connected()) {
-      switch(uip_conn->lport) {
-      case HTONS(80):
-         s->dataptr = data_port_80;
-         s->dataleft = datalen_port_80;
-         break;
-      case HTONS(81):
-         s->dataptr = data_port_81;
-         s->dataleft = datalen_port_81;
-         break;
-      }
-      uip_send(s->dataptr, s->dataleft);
-      return;      
-   }
-
-   if(uip_acked()) {
-      if(s->dataleft < uip_mss()) {
-         uip_close();
-         return;
-      }
-      s->dataptr += uip_conn->len;
-      s->dataleft -= uip_conn->len;
-      uip_send(s->dataptr, s->dataleft);      
-   }
-}
-

-The application state consists of a pointer to the data that should be sent and the size of the data that is left to send. When a remote host connects to the application, the local port number is used to determine which file to send. The first chunk of data is sent using uip_send(). uIP makes sure that no more than MSS bytes of data is actually sent, even though s->dataleft may be larger than the MSS.

-The application is driven by incoming acknowledgments. When data has been acknowledged, new data can be sent. If there is no more data to send, the connection is closed using uip_close().

-Structured Application Program Design

-When writing larger programs using uIP it is useful to be able to utilize the uIP API in a structured way. The following example provides a structured design that has showed itself to be useful for writing larger protocol implementations than the previous examples showed here. The program is divided into an uIP event handler function that calls seven application handler functions that process new data, act on acknowledged data, send new data, deal with connection establishment or closure events and handle errors. The functions are called newdata(), acked(), senddata(), connected(), closed(), aborted(), and timedout(), and needs to be written specifically for the protocol that is being implemented.

-The uIP event handler function is shown below.

-

void example6_app(void) {
-  if(uip_aborted()) {
-    aborted();
-  }
-  if(uip_timedout()) {
-    timedout();
-  }
-  if(uip_closed()) {
-    closed();
-  }
-  if(uip_connected()) {
-    connected();
-  }
-  if(uip_acked()) {
-    acked();
-  }
-  if(uip_newdata()) {
-    newdata();
-  }
-  if(uip_rexmit() ||
-     uip_newdata() ||
-     uip_acked() ||
-     uip_connected() ||
-     uip_poll()) {
-    senddata();
-  }
-}
-

-The function starts with dealing with any error conditions that might have happened by checking if uip_aborted() or uip_timedout() are true. If so, the appropriate error function is called. Also, if the connection has been closed, the closed() function is called to the it deal with the event.

-Next, the function checks if the connection has just been established by checking if uip_connected() is true. The connected() function is called and is supposed to do whatever needs to be done when the connection is established, such as intializing the application state for the connection. Since it may be the case that data should be sent out, the senddata() function is called to deal with the outgoing data.

-The following very simple application serves as an example of how the application handler functions might look. This application simply waits for any data to arrive on the connection, and responds to the data by sending out the message "Hello world!". To illustrate how to develop an application state machine, this message is sent in two parts, first the "Hello" part and then the "world!" part.

-

#define STATE_WAITING 0
-#define STATE_HELLO   1
-#define STATE_WORLD   2
-
-struct example6_state {
-  u8_t state;
-  char *textptr;
-  int  textlen;
-};
-
-static void aborted(void) {}
-static void timedout(void) {}
-static void closed(void) {}
-
-static void connected(void) {
-  struct example6_state *s = (struct example6_state *)uip_conn->appstate;
-
-  s->state   = STATE_WAITING;
-  s->textlen = 0;
-}
-
-static void newdata(void) {
-  struct example6_state *s = (struct example6_state *)uip_conn->appstate;
-
-  if(s->state == STATE_WAITING) {
-    s->state   = STATE_HELLO;
-    s->textptr = "Hello ";
-    s->textlen = 6;
-  }
-}
-
-static void acked(void) {
-  struct example6_state *s = (struct example6_state *)uip_conn->appstate;
-  
-  s->textlen -= uip_conn->len;
-  s->textptr += uip_conn->len;
-  if(s->textlen == 0) {
-    switch(s->state) {
-    case STATE_HELLO:
-      s->state   = STATE_WORLD;
-      s->textptr = "world!\n";
-      s->textlen = 7;
-      break;
-    case STATE_WORLD:
-      uip_close();
-      break;
-    }
-  }
-}
-
-static void senddata(void) {
-  struct example6_state *s = (struct example6_state *)uip_conn->appstate;
-
-  if(s->textlen > 0) {
-    uip_send(s->textptr, s->textlen);
-  }
-}
-

-The application state consists of a "state" variable, a "textptr" pointer to a text message and the "textlen" length of the text message. The "state" variable can be either "STATE_WAITING", meaning that the application is waiting for data to arrive from the network, "STATE_HELLO", in which the application is sending the "Hello" part of the message, or "STATE_WORLD", in which the application is sending the "world!" message.

-The application does not handle errors or connection closing events, and therefore the aborted(), timedout() and closed() functions are implemented as empty functions.

-The connected() function will be called when a connection has been established, and in this case sets the "state" variable to be "STATE_WAITING" and the "textlen" variable to be zero, indicating that there is no message to be sent out.

-When new data arrives from the network, the newdata() function will be called by the event handler function. The newdata() function will check if the connection is in the "STATE_WAITING" state, and if so switches to the "STATE_HELLO" state and registers a 6 byte long "Hello " message with the connection. This message will later be sent out by the senddata() function.

-The acked() function is called whenever data that previously was sent has been acknowleged by the receiving host. This acked() function first reduces the amount of data that is left to send, by subtracting the length of the previously sent data (obtained from "uip_conn->len") from the "textlen" variable, and also adjusts the "textptr" pointer accordingly. It then checks if the "textlen" variable now is zero, which indicates that all data now has been successfully received, and if so changes application state. If the application was in the "STATE_HELLO" state, it switches state to "STATE_WORLD" and sets up a 7 byte "world!\n" message to be sent. If the application was in the "STATE_WORLD" state, it closes the connection.

-Finally, the senddata() function takes care of actually sending the data that is to be sent. It is called by the event handler function when new data has been received, when data has been acknowledged, when a new connection has been established, when the connection is polled because of inactivity, or when a retransmission should be made. The purpose of the senddata() function is to optionally format the data that is to be sent, and to call the uip_send() function to actually send out the data. In this particular example, the function simply calls uip_send() with the appropriate arguments if data is to be sent, after checking if data should be sent out or not as indicated by the "textlen" variable.

-It is important to note that the senddata() function never should affect the application state; this should only be done in the acked() and newdata() functions.

-Protocol Implementations

-The protocols in the TCP/IP protocol suite are designed in a layered fashion where each protocol performs a specific function and the interactions between the protocol layers are strictly defined. While the layered approach is a good way to design protocols, it is not always the best way to implement them. In uIP, the protocol implementations are tightly coupled in order to save code space.

-This section gives detailed information on the specific protocol implementations in uIP.

-IP --- Internet Protocol

-When incoming packets are processed by uIP, the IP layer is the first protocol that examines the packet. The IP layer does a few simple checks such as if the destination IP address of the incoming packet matches any of the local IP address and verifies the IP header checksum. Since there are no IP options that are strictly required and because they are very uncommon, any IP options in received packets are dropped.

-IP Fragment Reassembly

-IP fragment reassembly is implemented using a separate buffer that holds the packet to be reassembled. An incoming fragment is copied into the right place in the buffer and a bit map is used to keep track of which fragments have been received. Because the first byte of an IP fragment is aligned on an 8-byte boundary, the bit map requires a small amount of memory. When all fragments have been reassembled, the resulting IP packet is passed to the transport layer. If all fragments have not been received within a specified time frame, the packet is dropped.

-The current implementation only has a single buffer for holding packets to be reassembled, and therefore does not support simultaneous reassembly of more than one packet. Since fragmented packets are uncommon, this ought to be a reasonable decision. Extending the implementation to support multiple buffers would be straightforward, however.

-Broadcasts and Multicasts

-IP has the ability to broadcast and multicast packets on the local network. Such packets are addressed to special broadcast and multicast addresses. Broadcast is used heavily in many UDP based protocols such as the Microsoft Windows file-sharing SMB protocol. Multicast is primarily used in protocols used for multimedia distribution such as RTP. TCP is a point-to-point protocol and does not use broadcast or multicast packets. uIP current supports broadcast packets as well as sending multicast packets. Joining multicast groups (IGMP) and receiving non-local multicast packets is not currently supported.

-ICMP --- Internet Control Message Protocol

-The ICMP protocol is used for reporting soft error conditions and for querying host parameters. Its main use is, however, the echo mechanism which is used by the "ping" program.

-The ICMP implementation in uIP is very simple as itis restricted to only implement ICMP echo messages. Replies to echo messages are constructed by simply swapping the source and destination IP addresses of incoming echo requests and rewriting the ICMP header with the Echo-Reply message type. The ICMP checksum is adjusted using standard techniques (see RFC1624).

-Since only the ICMP echo message is implemented, there is no support for Path MTU discovery or ICMP redirect messages. Neither of these is strictly required for interoperability; they are performance enhancement mechanisms.

-TCP --- Transmission Control Protocol

-The TCP implementation in uIP is driven by incoming packets and timer events. Incoming packets are parsed by TCP and if the packet contains data that is to be delivered to the application, the application is invoked by the means of the application function call. If the incoming packet acknowledges previously sent data, the connection state is updated and the application is informed, allowing it to send out new data.

-Listening Connections

-TCP allows a connection to listen for incoming connection requests. In uIP, a listening connection is identified by the 16-bit port number and incoming connection requests are checked against the list of listening connections. This list of listening connections is dynamic and can be altered by the applications in the system.

-Sliding Window

-Most TCP implementations use a sliding window mechanism for sending data. Multiple data segments are sent in succession without waiting for an acknowledgment for each segment.

-The sliding window algorithm uses a lot of 32-bit operations and because 32-bit arithmetic is fairly expensive on most 8-bit CPUs, uIP does not implement it. Also, uIP does not buffer sent packets and a sliding window implementation that does not buffer sent packets will have to be supported by a complex application layer. Instead, uIP allows only a single TCP segment per connection to be unacknowledged at any given time.

-It is important to note that even though most TCP implementations use the sliding window algorithm, it is not required by the TCP specifications. Removing the sliding window mechanism does not affect interoperability in any way.

-Round-Trip Time Estimation

-TCP continuously estimates the current Round-Trip Time (RTT) of every active connection in order to find a suitable value for the retransmission time-out.

-The RTT estimation in uIP is implemented using TCP's periodic timer. Each time the periodic timer fires, it increments a counter for each connection that has unacknowledged data in the network. When an acknowledgment is received, the current value of the counter is used as a sample of the RTT. The sample is used together with Van Jacobson's standard TCP RTT estimation function to calculate an estimate of the RTT. Karn's algorithm is used to ensure that retransmissions do not skew the estimates.

-Retransmissions

-Retransmissions are driven by the periodic TCP timer. Every time the periodic timer is invoked, the retransmission timer for each connection is decremented. If the timer reaches zero, a retransmission should be made.

-As uIP does not keep track of packet contents after they have been sent by the device driver, uIP requires that the application takes an active part in performing the retransmission. When uIP decides that a segment should be retransmitted, it calls the application with a flag set indicating that a retransmission is required. The application checks the retransmission flag and produces the same data that was previously sent. From the application's standpoint, performing a retransmission is not different from how the data originally was sent. Therefore the application can be written in such a way that the same code is used both for sending data and retransmitting data. Also, it is important to note that even though the actual retransmission operation is carried out by the application, it is the responsibility of the stack to know when the retransmission should be made. Thus the complexity of the application does not necessarily increase because it takes an active part in doing retransmissions.

-Flow Control

-The purpose of TCP's flow control mechanisms is to allow communication between hosts with wildly varying memory dimensions. In each TCP segment, the sender of the segment indicates its available buffer space. A TCP sender must not send more data than the buffer space indicated by the receiver.

-In uIP, the application cannot send more data than the receiving host can buffer. And application cannot send more data than the amount of bytes it is allowed to send by the receiving host. If the remote host cannot accept any data at all, the stack initiates the zero window probing mechanism.

-Congestion Control

-The congestion control mechanisms limit the number of simultaneous TCP segments in the network. The algorithms used for congestion control are designed to be simple to implement and require only a few lines of code.

-Since uIP only handles one in-flight TCP segment per connection, the amount of simultaneous segments cannot be further limited, thus the congestion control mechanisms are not needed.

-Urgent Data

-TCP's urgent data mechanism provides an application-to-application notification mechanism, which can be used by an application to mark parts of the data stream as being more urgent than the normal stream. It is up to the receiving application to interpret the meaning of the urgent data.

-In many TCP implementations, including the BSD implementation, the urgent data feature increases the complexity of the implementation because it requires an asynchronous notification mechanism in an otherwise synchronous API. As uIP already use an asynchronous event based API, the implementation of the urgent data feature does not lead to increased complexity.

-Performance

-In TCP/IP implementations for high-end systems, processing time is dominated by the checksum calculation loop, the operation of copying packet data and context switching. Operating systems for high-end systems often have multiple protection domains for protecting kernel data from user processes and user processes from each other. Because the TCP/IP stack is run in the kernel, data has to be copied between the kernel space and the address space of the user processes and a context switch has to be performed once the data has been copied. Performance can be enhanced by combining the copy operation with the checksum calculation. Because high-end systems usually have numerous active connections, packet demultiplexing is also an expensive operation.

-A small embedded device does not have the necessary processing power to have multiple protection domains and the power to run a multitasking operating system. Therefore there is no need to copy data between the TCP/IP stack and the application program. With an event based API there is no context switch between the TCP/IP stack and the applications.

-In such limited systems, the TCP/IP processing overhead is dominated by the copying of packet data from the network device to host memory, and checksum calculation. Apart from the checksum calculation and copying, the TCP processing done for an incoming packet involves only updating a few counters and flags before handing the data over to the application. Thus an estimate of the CPU overhead of our TCP/IP implementations can be obtained by calculating the amount of CPU cycles needed for the checksum calculation and copying of a maximum sized packet.

-The Impact of Delayed Acknowledgments

-Most TCP receivers implement the delayed acknowledgment algorithm for reducing the number of pure acknowledgment packets sent. A TCP receiver using this algorithm will only send acknowledgments for every other received segment. If no segment is received within a specific time-frame, an acknowledgment is sent. The time-frame can be as high as 500 ms but typically is 200 ms.

-A TCP sender such as uIP that only handles a single outstanding TCP segment will interact poorly with the delayed acknowledgment algorithm. Because the receiver only receives a single segment at a time, it will wait as much as 500 ms before an acknowledgment is sent. This means that the maximum possible throughput is severely limited by the 500 ms idle time.

-Thus the maximum throughput equation when sending data from uIP will be $p = s / (t + t_d)$ where $s$ is the segment size and $t_d$ is the delayed acknowledgment timeout, which typically is between 200 and 500 ms. With a segment size of 1000 bytes, a round-trip time of 40 ms and a delayed acknowledgment timeout of 200 ms, the maximum throughput will be 4166 bytes per second. With the delayed acknowledgment algorithm disabled at the receiver, the maximum throughput would be 25000 bytes per second.

-It should be noted, however, that since small systems running uIP are not very likely to have large amounts of data to send, the delayed acknowledgmen t throughput degradation of uIP need not be very severe. Small amounts of data sent by such a system will not span more than a single TCP segment, and would therefore not be affected by the throughput degradation anyway.

-The maximum throughput when uIP acts as a receiver is not affected by the delayed acknowledgment throughput degradation.


Generated on Mon Jun 12 10:23:01 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/modules.html b/components/net/uip/doc/html/modules.html deleted file mode 100644 index 254612a4d52dbd83e7f7fd4e1103d2665b89ff3e..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/modules.html +++ /dev/null @@ -1,51 +0,0 @@ - - -uIP 1.0: Module Index - - - - - -

uIP 1.0 Modules

Here is a list of all modules: -
Generated on Mon Jun 12 10:23:02 2006 for uIP 1.0 by  - -doxygen 1.4.6
- - diff --git a/components/net/uip/doc/html/tab_b.gif b/components/net/uip/doc/html/tab_b.gif deleted file mode 100644 index 0d623483ffdf5f9f96900108042a7ab0643fe2a3..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/tab_b.gif and /dev/null differ diff --git a/components/net/uip/doc/html/tab_l.gif b/components/net/uip/doc/html/tab_l.gif deleted file mode 100644 index 9b1e6337c9299a700401a2a78a2c6ffced475216..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/tab_l.gif and /dev/null differ diff --git a/components/net/uip/doc/html/tab_r.gif b/components/net/uip/doc/html/tab_r.gif deleted file mode 100644 index ce9dd9f533cb5486d6941844f442b59d4a9e9175..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/html/tab_r.gif and /dev/null differ diff --git a/components/net/uip/doc/html/tabs.css b/components/net/uip/doc/html/tabs.css deleted file mode 100644 index a61552a67ad217c0d67da13e4d3f24c9d2c87119..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/tabs.css +++ /dev/null @@ -1,102 +0,0 @@ -/* tabs styles, based on http://www.alistapart.com/articles/slidingdoors */ - -DIV.tabs -{ - float : left; - width : 100%; - background : url("tab_b.gif") repeat-x bottom; - margin-bottom : 4px; -} - -DIV.tabs UL -{ - margin : 0px; - padding-left : 10px; - list-style : none; -} - -DIV.tabs LI, DIV.tabs FORM -{ - display : inline; - margin : 0px; - padding : 0px; -} - -DIV.tabs FORM -{ - float : right; -} - -DIV.tabs A -{ - float : left; - background : url("tab_r.gif") no-repeat right top; - border-bottom : 1px solid #84B0C7; - font-size : x-small; - font-weight : bold; - text-decoration : none; -} - -DIV.tabs A:hover -{ - background-position: 100% -150px; -} - -DIV.tabs A:link, DIV.tabs A:visited, -DIV.tabs A:active, DIV.tabs A:hover -{ - color: #1A419D; -} - -DIV.tabs SPAN -{ - float : left; - display : block; - background : url("tab_l.gif") no-repeat left top; - padding : 5px 9px; - white-space : nowrap; -} - -DIV.tabs INPUT -{ - float : right; - display : inline; - font-size : 1em; -} - -DIV.tabs TD -{ - font-size : x-small; - font-weight : bold; - text-decoration : none; -} - - - -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -DIV.tabs SPAN {float : none;} -/* End IE5-Mac hack */ - -DIV.tabs A:hover SPAN -{ - background-position: 0% -150px; -} - -DIV.tabs LI#current A -{ - background-position: 100% -150px; - border-width : 0px; -} - -DIV.tabs LI#current SPAN -{ - background-position: 0% -150px; - padding-bottom : 6px; -} - -DIV.nav -{ - background : none; - border : none; - border-bottom : 1px solid #84B0C7; -} diff --git a/components/net/uip/doc/html/tree.html b/components/net/uip/doc/html/tree.html deleted file mode 100644 index ba4787fc695ca72679f0a651250059c35d9086de..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/html/tree.html +++ /dev/null @@ -1,223 +0,0 @@ - - - - - - - TreeView - - - - - -
-

uIP 1.0

-
-

o*The uIP TCP/IP stack

-

o+File List

- -

o+Data Structures

- -

o+Class Hierarchy

- -

o*Data Fields

-

o+Modules

- -

o+Examples

- -

\*Globals

-
-
- - diff --git a/components/net/uip/doc/mobisys2003.pdf b/components/net/uip/doc/mobisys2003.pdf deleted file mode 100644 index f5e7425d191f6b717669bbc7a44e2343f02e70d1..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/mobisys2003.pdf and /dev/null differ diff --git a/components/net/uip/doc/pt-doc.txt b/components/net/uip/doc/pt-doc.txt deleted file mode 100644 index b26c651cfaf9130c03ce489bb5f0b246e15bf1d8..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/pt-doc.txt +++ /dev/null @@ -1,173 +0,0 @@ -/** -\defgroup pt Protothreads - -Protothreads are a type of lightweight stackless threads designed for -severly memory constrained systems such as deeply embedded systems or -sensor network nodes. Protothreads provides linear code execution for -event-driven systems implemented in C. Protothreads can be used with -or without an RTOS. - -Protothreads are a extremely lightweight, stackless type of threads -that provides a blocking context on top of an event-driven system, -without the overhead of per-thread stacks. The purpose of protothreads -is to implement sequential flow of control without complex state -machines or full multi-threading. Protothreads provides conditional -blocking inside C functions. - -The advantage of protothreads over a purely event-driven approach is -that protothreads provides a sequential code structure that allows for -blocking functions. In purely event-driven systems, blocking must be -implemented by manually breaking the function into two pieces - one -for the piece of code before the blocking call and one for the code -after the blocking call. This makes it hard to use control structures -such as if() conditionals and while() loops. - -The advantage of protothreads over ordinary threads is that a -protothread do not require a separate stack. In memory constrained -systems, the overhead of allocating multiple stacks can consume large -amounts of the available memory. In contrast, each protothread only -requires between two and twelve bytes of state, depending on the -architecture. - -\note Because protothreads do not save the stack context across a -blocking call, local variables are not preserved when the -protothread blocks. This means that local variables should be used -with utmost care - if in doubt, do not use local variables inside a -protothread! - - -Main features: - - - No machine specific code - the protothreads library is pure C - - - Does not use error-prone functions such as longjmp() - - - Very small RAM overhead - only two bytes per protothread - - - Can be used with or without an OS - - - Provides blocking wait without full multi-threading or - stack-switching - -Examples applications: - - - Memory constrained systems - - - Event-driven protocol stacks - - - Deeply embedded systems - - - Sensor network nodes - -The protothreads API consists of four basic operations: -initialization: PT_INIT(), execution: PT_BEGIN(), conditional -blocking: PT_WAIT_UNTIL() and exit: PT_END(). On top of these, two -convenience functions are built: reversed condition blocking: -PT_WAIT_WHILE() and protothread blocking: PT_WAIT_THREAD(). - -\sa \ref pt "Protothreads API documentation" - -The protothreads library is released under a BSD-style license that -allows for both non-commercial and commercial usage. The only -requirement is that credit is given. - -\section authors Authors - -The protothreads library was written by Adam Dunkels -with support from Oliver Schmidt . - -\section pt-desc Protothreads - -Protothreads are a extremely lightweight, stackless threads that -provides a blocking context on top of an event-driven system, without -the overhead of per-thread stacks. The purpose of protothreads is to -implement sequential flow of control without using complex state -machines or full multi-threading. Protothreads provides conditional -blocking inside a C function. - -In memory constrained systems, such as deeply embedded systems, -traditional multi-threading may have a too large memory overhead. In -traditional multi-threading, each thread requires its own stack, that -typically is over-provisioned. The stacks may use large parts of the -available memory. - -The main advantage of protothreads over ordinary threads is that -protothreads are very lightweight: a protothread does not require its -own stack. Rather, all protothreads run on the same stack and context -switching is done by stack rewinding. This is advantageous in memory -constrained systems, where a stack for a thread might use a large part -of the available memory. A protothread only requires only two bytes of -memory per protothread. Moreover, protothreads are implemented in pure -C and do not require any machine-specific assembler code. - -A protothread runs within a single C function and cannot span over -other functions. A protothread may call normal C functions, but cannot -block inside a called function. Blocking inside nested function calls -is instead made by spawning a separate protothread for each -potentially blocking function. The advantage of this approach is that -blocking is explicit: the programmer knows exactly which functions -that block that which functions the never blocks. - -Protothreads are similar to asymmetric co-routines. The main -difference is that co-routines uses a separate stack for each -co-routine, whereas protothreads are stackless. The most similar -mechanism to protothreads are Python generators. These are also -stackless constructs, but have a different purpose. Protothreads -provides blocking contexts inside a C function, whereas Python -generators provide multiple exit points from a generator function. - -\section pt-autovars Local variables - -\note -Because protothreads do not save the stack context across a blocking -call, local variables are not preserved when the protothread -blocks. This means that local variables should be used with utmost -care - if in doubt, do not use local variables inside a protothread! - -\section pt-scheduling Scheduling - -A protothread is driven by repeated calls to the function in which the -protothread is running. Each time the function is called, the -protothread will run until it blocks or exits. Thus the scheduling of -protothreads is done by the application that uses protothreads. - -\section pt-impl Implementation - -Protothreads are implemented using \ref lc "local continuations". A -local continuation represents the current state of execution at a -particular place in the program, but does not provide any call history -or local variables. 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. - - -Local continuations can be implemented in a variety of ways: - - -# by using machine specific assembler code, - -# by using standard C constructs, or - -# by using compiler extensions. - -The first way works by saving and restoring the processor state, -except for stack pointers, and requires between 16 and 32 bytes of -memory per protothread. The exact amount of memory required depends on -the architecture. - -The standard C implementation requires only two bytes of state per -protothread and utilizes the C switch() statement in a non-obvious way -that is similar to Duff's device. This implementation does, however, -impose a slight restriction to the code that uses protothreads in that -the code cannot use switch() statements itself. - -Certain compilers has C extensions that can be used to implement -protothreads. GCC supports label pointers that can be used for this -purpose. With this implementation, protothreads require 4 bytes of RAM -per protothread. - -@{ - - -*/ - -/** @} */ - diff --git a/components/net/uip/doc/sicslogo.pdf b/components/net/uip/doc/sicslogo.pdf deleted file mode 100644 index 239a1bff685276ed63e7f9cf03b2ea3a2f29ed1e..0000000000000000000000000000000000000000 Binary files a/components/net/uip/doc/sicslogo.pdf and /dev/null differ diff --git a/components/net/uip/doc/uip-code-style.c b/components/net/uip/doc/uip-code-style.c deleted file mode 100644 index b62c5b10086048d56dfa73a45c19835f4a7cf7a6..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/uip-code-style.c +++ /dev/null @@ -1,118 +0,0 @@ -/* This is the official code style of uIP. */ - -/** - * \defgroup codestyle Coding style - * - * This is how a Doxygen module is documented - start with a \defgroup - * Doxygen keyword at the beginning of the file to define a module, - * and use the \addtogroup Doxygen keyword in all other files that - * belong to the same module. Typically, the \defgroup is placed in - * the .h file and \addtogroup in the .c file. - * - * @{ - */ - -/** - * \file - * A brief description of what this file is. - * \author - * Adam Dunkels - * - * Every file that is part of a documented module has to have - * a \file block, else it will not show up in the Doxygen - * "Modules" * section. - */ - -/* Single line comments look like this. */ - -/* - * Multi-line comments look like this. Comments should prefferably be - * full sentences, filled to look like real paragraphs. - */ - -#include "uip.h" - -/* - * Make sure that non-global variables are all maked with the static - * keyword. This keeps the size of the symbol table down. - */ -static int flag; - -/* - * All variables and functions that are visible outside of the file - * should have the module name prepended to them. This makes it easy - * to know where to look for function and variable definitions. - * - * Put dividers (a single-line comment consisting only of dashes) - * between functions. - */ -/*---------------------------------------------------------------------------*/ -/** - * \brief Use Doxygen documentation for functions. - * \param c Briefly describe all parameters. - * \return Briefly describe the return value. - * \retval 0 Functions that return a few specified values - * \retval 1 can use the \retval keyword instead of \return. - * - * Put a longer description of what the function does - * after the preamble of Doxygen keywords. - * - * This template should always be used to document - * functions. The text following the introduction is used - * as the function's documentation. - * - * Function prototypes have the return type on one line, - * the name and arguments on one line (with no space - * between the name and the first parenthesis), followed - * by a single curly bracket on its own line. - */ -void -code_style_example_function(void) -{ - /* - * Local variables should always be declared at the start of the - * function. - */ - int i; /* Use short variable names for loop - counters. */ - - /* - * There should be no space between keywords and the first - * parenthesis. There should be spaces around binary operators, no - * spaces between a unary operator and its operand. - * - * Curly brackets following for(), if(), do, and case() statements - * should follow the statement on the same line. - */ - for(i = 0; i < 10; ++i) { - /* - * Always use full blocks (curly brackets) after if(), for(), and - * while() statements, even though the statement is a single line - * of code. This makes the code easier to read and modifications - * are less error prone. - */ - if(i == c) { - return c; /* No parentesis around return values. */ - } else { /* The else keyword is placed inbetween - curly brackers, always on its own line. */ - c++; - } - } -} -/*---------------------------------------------------------------------------*/ -/* - * Static (non-global) functions do not need Doxygen comments. The - * name should not be prepended with the module name - doing so would - * create confusion. - */ -static void -an_example_function(void) -{ - -} -/*---------------------------------------------------------------------------*/ - -/* The following stuff ends the \defgroup block at the beginning of - the file: */ - -/** @} */ diff --git a/components/net/uip/doc/uip-code-style.txt b/components/net/uip/doc/uip-code-style.txt deleted file mode 100644 index db6a632273c5dbe8193ee25107214ff679435be7..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/uip-code-style.txt +++ /dev/null @@ -1,3 +0,0 @@ -/** - \example uip-code-style.c - */ diff --git a/components/net/uip/doc/uip-doc.txt b/components/net/uip/doc/uip-doc.txt deleted file mode 100644 index 894b1bc13a5e96bba7d802bffa179b4460d3fb28..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/uip-doc.txt +++ /dev/null @@ -1,1180 +0,0 @@ - - -/** -\mainpage The uIP TCP/IP stack -\author Adam Dunkels, http://www.sics.se/~adam/ - -The uIP TCP/IP stack is intended to make it possible to communicate -using the TCP/IP protocol suite even on small 8-bit -micro-controllers. Despite being small and simple, uIP do not require -their peers to have complex, full-size stacks, but can communicate -with peers running a similarly light-weight stack. The code size is on -the order of a few kilobytes and RAM usage can be configured to be as -low as a few hundred bytes. - -uIP can be found at the uIP web page: http://www.sics.se/~adam/uip/ - -\sa \ref apps "Application programs" -\sa \ref uipopt "Compile-time configuration options" -\sa \ref uipconffunc "Run-time configuration functions" -\sa \ref uipinit "Initialization functions" -\sa \ref uipdevfunc "Device driver interface" and - \ref uipdrivervars "variables used by device drivers" -\sa \ref uipappfunc "uIP functions called from application programs" -(see below) and the \ref psock "protosockets API" and their underlying -\ref pt "protothreads" - -\section uIPIntroduction Introduction - -With the success of the Internet, the TCP/IP protocol suite has become -a global standard for communication. TCP/IP is the underlying protocol -used for web page transfers, e-mail transmissions, file transfers, and -peer-to-peer networking over the Internet. For embedded systems, being -able to run native TCP/IP makes it possible to connect the system -directly to an intranet or even the global Internet. Embedded devices -with full TCP/IP support will be first-class network citizens, thus -being able to fully communicate with other hosts in the network. - -Traditional TCP/IP implementations have required far too much -resources both in terms of code size and memory usage to be useful in -small 8 or 16-bit systems. Code size of a few hundred kilobytes and -RAM requirements of several hundreds of kilobytes have made it -impossible to fit the full TCP/IP stack into systems with a few tens -of kilobytes of RAM and room for less than 100 kilobytes of -code. - -The uIP implementation is designed to have only the absolute minimal -set of features needed for a full TCP/IP stack. It can only handle a -single network interface and contains the IP, ICMP, UDP and TCP -protocols. uIP is written in the C programming language. - -Many other TCP/IP implementations for small systems assume that the -embedded device always will communicate with a full-scale TCP/IP -implementation running on a workstation-class machine. Under this -assumption, it is possible to remove certain TCP/IP mechanisms that -are very rarely used in such situations. Many of those mechanisms are -essential, however, if the embedded device is to communicate with -another equally limited device, e.g., when running distributed -peer-to-peer services and protocols. uIP is designed to be RFC -compliant in order to let the embedded devices to act as first-class -network citizens. The uIP TCP/IP implementation that is not tailored -for any specific application. - - -\section tcpip TCP/IP Communication - -The full TCP/IP suite consists of numerous protocols, ranging from low -level protocols such as ARP which translates IP addresses to MAC -addresses, to application level protocols such as SMTP that is used to -transfer e-mail. The uIP is mostly concerned with the TCP and IP -protocols and upper layer protocols will be referred to as "the -application". Lower layer protocols are often implemented in hardware -or firmware and will be referred to as "the network device" that are -controlled by the network device driver. - -TCP provides a reliable byte stream to the upper layer protocols. It -breaks the byte stream into appropriately sized segments and each -segment is sent in its own IP packet. The IP packets are sent out on -the network by the network device driver. If the destination is not on -the physically connected network, the IP packet is forwarded onto -another network by a router that is situated between the two -networks. If the maximum packet size of the other network is smaller -than the size of the IP packet, the packet is fragmented into smaller -packets by the router. If possible, the size of the TCP segments are -chosen so that fragmentation is minimized. The final recipient of the -packet will have to reassemble any fragmented IP packets before they -can be passed to higher layers. - -The formal requirements for the protocols in the TCP/IP stack is -specified in a number of RFC documents published by the Internet -Engineering Task Force, IETF. Each of the protocols in the stack is -defined in one more RFC documents and RFC1122 collects -all requirements and updates the previous RFCs. - -The RFC1122 requirements can be divided into two categories; those -that deal with the host to host communication and those that deal with -communication between the application and the networking stack. An -example of the first kind is "A TCP MUST be able to receive a TCP -option in any segment" and an example of the second kind is "There -MUST be a mechanism for reporting soft TCP error conditions to the -application." A TCP/IP implementation that violates requirements of -the first kind may not be able to communicate with other TCP/IP -implementations and may even lead to network failures. Violation of -the second kind of requirements will only affect the communication -within the system and will not affect host-to-host communication. - -In uIP, all RFC requirements that affect host-to-host communication -are implemented. However, in order to reduce code size, we have -removed certain mechanisms in the interface between the application -and the stack, such as the soft error reporting mechanism and -dynamically configurable type-of-service bits for TCP -connections. Since there are only very few applications that make use -of those features they can be removed without loss of generality. - -\section mainloop Main Control Loop - -The uIP stack can be run either as a task in a multitasking system, or -as the main program in a singletasking system. In both cases, the main -control loop does two things repeatedly: - - - Check if a packet has arrived from the network. - - Check if a periodic timeout has occurred. - -If a packet has arrived, the input handler function, uip_input(), -should be invoked by the main control loop. The input handler function -will never block, but will return at once. When it returns, the stack -or the application for which the incoming packet was intended may have -produced one or more reply packets which should be sent out. If so, -the network device driver should be called to send out these packets. - -Periodic timeouts are used to drive TCP mechanisms that depend on -timers, such as delayed acknowledgments, retransmissions and -round-trip time estimations. When the main control loop infers that -the periodic timer should fire, it should invoke the timer handler -function uip_periodic(). Because the TCP/IP stack may perform -retransmissions when dealing with a timer event, the network device -driver should called to send out the packets that may have been produced. - -\section arch Architecture Specific Functions - -uIP requires a few functions to be implemented specifically for the -architecture on which uIP is intended to run. These functions should -be hand-tuned for the particular architecture, but generic C -implementations are given as part of the uIP distribution. - -\subsection checksums Checksum Calculation - -The TCP and IP protocols implement a checksum that covers the data and -header portions of the TCP and IP packets. Since the calculation of -this checksum is made over all bytes in every packet being sent and -received it is important that the function that calculates the -checksum is efficient. Most often, this means that the checksum -calculation must be fine-tuned for the particular architecture on -which the uIP stack runs. - -While uIP includes a generic checksum function, it also leaves it open -for an architecture specific implementation of the two functions -uip_ipchksum() and uip_tcpchksum(). The checksum calculations in those -functions can be written in highly optimized assembler rather than -generic C code. - -\subsection longarith 32-bit Arithmetic - -The TCP protocol uses 32-bit sequence numbers, and a TCP -implementation will have to do a number of 32-bit additions as part of -the normal protocol processing. Since 32-bit arithmetic is not -natively available on many of the platforms for which uIP is intended, -uIP leaves the 32-bit additions to be implemented by the architecture -specific module and does not make use of any 32-bit arithmetic in the -main code base. - -While uIP implements a generic 32-bit addition, there is support for -having an architecture specific implementation of the uip_add32() -function. - - -\section memory Memory Management - -In the architectures for which uIP is intended, RAM is the most -scarce resource. With only a few kilobytes of RAM available for the -TCP/IP stack to use, mechanisms used in traditional TCP/IP cannot be -directly applied. - - -The uIP stack does not use explicit dynamic memory -allocation. Instead, it uses a single global buffer for holding -packets and has a fixed table for holding connection state. The global -packet buffer is large enough to contain one packet of maximum -size. When a packet arrives from the network, the device driver places -it in the global buffer and calls the TCP/IP stack. If the packet -contains data, the TCP/IP stack will notify the corresponding -application. Because the data in the buffer will be overwritten by the -next incoming packet, the application will either have to act -immediately on the data or copy the data into a secondary buffer for -later processing. The packet buffer will not be overwritten by new -packets before the application has processed the data. Packets that -arrive when the application is processing the data must be queued, -either by the network device or by the device driver. Most single-chip -Ethernet controllers have on-chip buffers that are large enough to -contain at least 4 maximum sized Ethernet frames. Devices that are -handled by the processor, such as RS-232 ports, can copy incoming -bytes to a separate buffer during application processing. If the -buffers are full, the incoming packet is dropped. This will cause -performance degradation, but only when multiple connections are -running in parallel. This is because uIP advertises a very small -receiver window, which means that only a single TCP segment will be in -the network per connection. - -In uIP, the same global packet buffer that is used for incoming -packets is also used for the TCP/IP headers of outgoing data. If the -application sends dynamic data, it may use the parts of the global -packet buffer that are not used for headers as a temporary storage -buffer. To send the data, the application passes a pointer to the data -as well as the length of the data to the stack. The TCP/IP headers are -written into the global buffer and once the headers have been -produced, the device driver sends the headers and the application data -out on the network. The data is not queued for -retransmissions. Instead, the application will have to reproduce the -data if a retransmission is necessary. - -The total amount of memory usage for uIP depends heavily on the -applications of the particular device in which the implementations are -to be run. The memory configuration determines both the amount of -traffic the system should be able to handle and the maximum amount of -simultaneous connections. A device that will be sending large e-mails -while at the same time running a web server with highly dynamic web -pages and multiple simultaneous clients, will require more RAM than a -simple Telnet server. It is possible to run the uIP implementation -with as little as 200 bytes of RAM, but such a configuration will -provide extremely low throughput and will only allow a small number of -simultaneous connections. - -\section api Application Program Interface (API) - - -The Application Program Interface (API) defines the way the -application program interacts with the TCP/IP stack. The most commonly -used API for TCP/IP is the BSD socket API which is used in most Unix -systems and has heavily influenced the Microsoft Windows WinSock -API. Because the socket API uses stop-and-wait semantics, it requires -support from an underlying multitasking operating system. Since the -overhead of task management, context switching and allocation of stack -space for the tasks might be too high in the intended uIP target -architectures, the BSD socket interface is not suitable for our -purposes. - -uIP provides two APIs to programmers: protosockets, a BSD socket-like -API without the overhead of full multi-threading, and a "raw" -event-based API that is nore low-level than protosockets but uses less -memory. - -\sa \ref psock -\sa \ref pt - - -\subsection rawapi The uIP raw API - -The "raw" uIP API uses an event driven interface where the application is -invoked in response to certain events. An application running on top -of uIP is implemented as a C function that is called by uIP in -response to certain events. uIP calls the application when data is -received, when data has been successfully delivered to the other end -of the connection, when a new connection has been set up, or when data -has to be retransmitted. The application is also periodically polled -for new data. The application program provides only one callback -function; it is up to the application to deal with mapping different -network services to different ports and connections. Because the -application is able to act on incoming data and connection requests as -soon as the TCP/IP stack receives the packet, low response times can -be achieved even in low-end systems. - -uIP is different from other TCP/IP stacks in that it requires help -from the application when doing retransmissions. Other TCP/IP stacks -buffer the transmitted data in memory until the data is known to be -successfully delivered to the remote end of the connection. If the -data needs to be retransmitted, the stack takes care of the -retransmission without notifying the application. With this approach, -the data has to be buffered in memory while waiting for an -acknowledgment even if the application might be able to quickly -regenerate the data if a retransmission has to be made. - -In order to reduce memory usage, uIP utilizes the fact that the -application may be able to regenerate sent data and lets the -application take part in retransmissions. uIP does not keep track of -packet contents after they have been sent by the device driver, and -uIP requires that the application takes an active part in performing -the retransmission. When uIP decides that a segment should be -retransmitted, it calls the application with a flag set indicating -that a retransmission is required. The application checks the -retransmission flag and produces the same data that was previously -sent. From the application's standpoint, performing a retransmission -is not different from how the data originally was sent. Therefore the -application can be written in such a way that the same code is used -both for sending data and retransmitting data. Also, it is important -to note that even though the actual retransmission operation is -carried out by the application, it is the responsibility of the stack -to know when the retransmission should be made. Thus the complexity of -the application does not necessarily increase because it takes an -active part in doing retransmissions. - -\subsubsection appevents Application Events - -The application must be implemented as a C function, UIP_APPCALL(), -that uIP calls whenever an event occurs. Each event has a corresponding -test function that is used to distinguish between different -events. The functions are implemented as C macros that will evaluate -to either zero or non-zero. Note that certain events can happen in -conjunction with each other (i.e., new data can arrive at the same -time as data is acknowledged). - -\subsubsection connstate The Connection Pointer - -When the application is called by uIP, the global variable uip_conn is -set to point to the uip_conn structure for the connection that -currently is handled, and is called the "current connection". The -fields in the uip_conn structure for the current connection can be -used, e.g., to distinguish between different services, or to check to -which IP address the connection is connected. One typical use would be -to inspect the uip_conn->lport (the local TCP port number) to decide -which service the connection should provide. For instance, an -application might decide to act as an HTTP server if the value of -uip_conn->lport is equal to 80 and act as a TELNET server if the value -is 23. - -\subsubsection recvdata Receiving Data - -If the uIP test function uip_newdata() is non-zero, the remote host of -the connection has sent new data. The uip_appdata pointer point to the -actual data. The size of the data is obtained through the uIP function -uip_datalen(). The data is not buffered by uIP, but will be -overwritten after the application function returns, and the -application will therefor have to either act directly on the incoming -data, or by itself copy the incoming data into a buffer for later -processing. - -\subsubsection senddata Sending Data - -When sending data, uIP adjusts the length of the data sent by the -application according to the available buffer space and the current -TCP window advertised by the receiver. The amount of buffer space is -dictated by the memory configuration. It is therefore possible that -all data sent from the application does not arrive at the receiver, -and the application may use the uip_mss() function to see how much -data that actually will be sent by the stack. - -The application sends data by using the uIP function uip_send(). The -uip_send() function takes two arguments; a pointer to the data to be -sent and the length of the data. If the application needs RAM space -for producing the actual data that should be sent, the packet buffer -(pointed to by the uip_appdata pointer) can be used for this purpose. - -The application can send only one chunk of data at a time on a -connection and it is not possible to call uip_send() more than once -per application invocation; only the data from the last call will be -sent. - -\subsubsection rexmitdata Retransmitting Data - -Retransmissions are driven by the periodic TCP timer. Every time the -periodic timer is invoked, the retransmission timer for each -connection is decremented. If the timer reaches zero, a retransmission -should be made. As uIP does not keep track of packet contents after they have -been sent by the device driver, uIP requires that the -application takes an active part in performing the -retransmission. When uIP decides that a segment should be -retransmitted, the application function is called with the -uip_rexmit() flag set, indicating that a retransmission is -required. - -The application must check the uip_rexmit() flag and produce the same -data that was previously sent. From the application's standpoint, -performing a retransmission is not different from how the data -originally was sent. Therefor, the application can be written in such -a way that the same code is used both for sending data and -retransmitting data. Also, it is important to note that even though -the actual retransmission operation is carried out by the application, -it is the responsibility of the stack to know when the retransmission -should be made. Thus the complexity of the application does not -necessarily increase because it takes an active part in doing -retransmissions. - -\subsubsection closing Closing Connections - -The application closes the current connection by calling the -uip_close() during an application call. This will cause the connection -to be cleanly closed. In order to indicate a fatal error, the -application might want to abort the connection and does so by calling -the uip_abort() function. - -If the connection has been closed by the remote end, the test function -uip_closed() is true. The application may then do any necessary -cleanups. - -\subsubsection errors Reporting Errors - -There are two fatal errors that can happen to a connection, either -that the connection was aborted by the remote host, or that the -connection retransmitted the last data too many times and has been -aborted. uIP reports this by calling the application function. The -application can use the two test functions uip_aborted() and -uip_timedout() to test for those error conditions. - -\subsubsection polling Polling - -When a connection is idle, uIP polls the application every time the -periodic timer fires. The application uses the test function -uip_poll() to check if it is being polled by uIP. - -The polling event has two purposes. The first is to let the -application periodically know that a connection is idle, which allows -the application to close connections that have been idle for too -long. The other purpose is to let the application send new data that -has been produced. The application can only send data when invoked by -uIP, and therefore the poll event is the only way to send data on an -otherwise idle connection. - -\subsubsection listen Listening Ports - -uIP maintains a list of listening TCP ports. A new port is opened for -listening with the uip_listen() function. When a connection request -arrives on a listening port, uIP creates a new connection and calls -the application function. The test function uip_connected() is true if -the application was invoked because a new connection was created. - -The application can check the lport field in the uip_conn structure to -check to which port the new connection was connected. - -\subsubsection connect Opening Connections - -New connections can be opened from within -uIP by the function uip_connect(). This function -allocates a new connection and sets a flag in the connection state -which will open a TCP connection to the specified IP address and port -the next time the connection is polled by uIP. The uip_connect() -function returns -a pointer to the uip_conn structure for the new -connection. If there are no free connection slots, the function -returns NULL. - -The function uip_ipaddr() may be used to pack an IP address into the -two element 16-bit array used by uIP to represent IP addresses. - -Two examples of usage are shown below. The first example shows how to -open a connection to TCP port 8080 of the remote end of the current -connection. If there are not enough TCP connection slots to allow a -new connection to be opened, the uip_connect() function returns NULL -and the current connection is aborted by uip_abort(). - -\code -void connect_example1_app(void) { - if(uip_connect(uip_conn->ripaddr, HTONS(8080)) == NULL) { - uip_abort(); - } -} -\endcode - -The second example shows how to open a new connection to a specific IP -address. No error checks are made in this example. - -\code -void connect_example2(void) { - u16_t ipaddr[2]; - - uip_ipaddr(ipaddr, 192,168,0,1); - uip_connect(ipaddr, HTONS(8080)); -} -\endcode - -\section examples Examples - -This section presents a number of very simple uIP applications. The -uIP code distribution contains several more complex applications. - -\subsection example1 A Very Simple Application - -This first example shows a very simple application. The application -listens for incoming connections on port 1234. When a connection has -been established, the application replies to all data sent to it by -saying "ok" - -The implementation of this application is shown below. The application -is initialized with the function called example1_init() and the uIP -callback function is called example1_app(). For this application, the -configuration variable UIP_APPCALL should be defined to be -example1_app(). - -\code -void example1_init(void) { - uip_listen(HTONS(1234)); -} - -void example1_app(void) { - if(uip_newdata() || uip_rexmit()) { - uip_send("ok\n", 3); - } -} -\endcode - -The initialization function calls the uIP function uip_listen() to -register a listening port. The actual application function -example1_app() uses the test functions uip_newdata() and uip_rexmit() -to determine why it was called. If the application was called because -the remote end has sent it data, it responds with an "ok". If the -application function was called because data was lost in the network -and has to be retransmitted, it also sends an "ok". Note that this -example actually shows a complete uIP application. It is not required -for an application to deal with all types of events such as -uip_connected() or uip_timedout(). - -\subsection example2 A More Advanced Application - -This second example is slightly more advanced than the previous one, -and shows how the application state field in the uip_conn structure is -used. - -This application is similar to the first application in that it -listens to a port for incoming connections and responds to data sent -to it with a single "ok". The big difference is that this application -prints out a welcoming "Welcome!" message when the connection has been -established. - -This seemingly small change of operation makes a big difference in how -the application is implemented. The reason for the increase in -complexity is that if data should be lost in the network, the -application must know what data to retransmit. If the "Welcome!" -message was lost, the application must retransmit the welcome and if -one of the "ok" messages is lost, the application must send a new -"ok". - -The application knows that as long as the "Welcome!" message has not -been acknowledged by the remote host, it might have been dropped in -the network. But once the remote host has sent an acknowledgment -back, the application can be sure that the welcome has been received -and knows that any lost data must be an "ok" message. Thus the -application can be in either of two states: either in the WELCOME-SENT -state where the "Welcome!" has been sent but not acknowledged, or in -the WELCOME-ACKED state where the "Welcome!" has been acknowledged. - -When a remote host connects to the application, the application sends -the "Welcome!" message and sets it's state to WELCOME-SENT. When the -welcome message is acknowledged, the application moves to the -WELCOME-ACKED state. If the application receives any new data from the -remote host, it responds by sending an "ok" back. - -If the application is requested to retransmit the last message, it -looks at in which state the application is. If the application is in -the WELCOME-SENT state, it sends a "Welcome!" message since it -knows that the previous welcome message hasn't been acknowledged. If -the application is in the WELCOME-ACKED state, it knows that the last -message was an "ok" message and sends such a message. - -The implementation of this application is seen below. This -configuration settings for the application is follows after its -implementation. - -\code -struct example2_state { - enum {WELCOME_SENT, WELCOME_ACKED} state; -}; - -void example2_init(void) { - uip_listen(HTONS(2345)); -} - -void example2_app(void) { - struct example2_state *s; - - s = (struct example2_state *)uip_conn->appstate; - - if(uip_connected()) { - s->state = WELCOME_SENT; - uip_send("Welcome!\n", 9); - return; - } - - if(uip_acked() && s->state == WELCOME_SENT) { - s->state = WELCOME_ACKED; - } - - if(uip_newdata()) { - uip_send("ok\n", 3); - } - - if(uip_rexmit()) { - switch(s->state) { - case WELCOME_SENT: - uip_send("Welcome!\n", 9); - break; - case WELCOME_ACKED: - uip_send("ok\n", 3); - break; - } - } -} -\endcode - -The configuration for the application: - -\code -#define UIP_APPCALL example2_app -#define UIP_APPSTATE_SIZE sizeof(struct example2_state) -\endcode - -\subsection example3 Differentiating Between Applications - -If the system should run multiple applications, one technique to -differentiate between them is to use the TCP port number of either the -remote end or the local end of the connection. The example below shows -how the two examples above can be combined into one application. - -\code -void example3_init(void) { - example1_init(); - example2_init(); -} - -void example3_app(void) { - switch(uip_conn->lport) { - case HTONS(1234): - example1_app(); - break; - case HTONS(2345): - example2_app(); - break; - } -} -\endcode - -\subsection example4 Utilizing TCP Flow Control - -This example shows a simple application that connects to a host, sends -an HTTP request for a file and downloads it to a slow device such a -disk drive. This shows how to use the flow control functions of uIP. - -\code -void example4_init(void) { - u16_t ipaddr[2]; - uip_ipaddr(ipaddr, 192,168,0,1); - uip_connect(ipaddr, HTONS(80)); -} - -void example4_app(void) { - if(uip_connected() || uip_rexmit()) { - uip_send("GET /file HTTP/1.0\r\nServer:192.186.0.1\r\n\r\n", - 48); - return; - } - - if(uip_newdata()) { - device_enqueue(uip_appdata, uip_datalen()); - if(device_queue_full()) { - uip_stop(); - } - } - - if(uip_poll() && uip_stopped()) { - if(!device_queue_full()) { - uip_restart(); - } - } -} -\endcode - -When the connection has been established, an HTTP request is sent to -the server. Since this is the only data that is sent, the application -knows that if it needs to retransmit any data, it is that request that -should be retransmitted. It is therefore possible to combine these two -events as is done in the example. - -When the application receives new data from the remote host, it sends -this data to the device by using the function device_enqueue(). It is -important to note that this example assumes that this function copies -the data into its own buffers. The data in the uip_appdata buffer will -be overwritten by the next incoming packet. - -If the device's queue is full, the application stops the data from the -remote host by calling the uIP function uip_stop(). The application -can then be sure that it will not receive any new data until -uip_restart() is called. The application polling event is used to -check if the device's queue is no longer full and if so, the data flow -is restarted with uip_restart(). - -\subsection example5 A Simple Web Server - -This example shows a very simple file server application that listens -to two ports and uses the port number to determine which file to -send. If the files are properly formatted, this simple application can -be used as a web server with static pages. The implementation follows. - -\code -struct example5_state { - char *dataptr; - unsigned int dataleft; -}; - -void example5_init(void) { - uip_listen(HTONS(80)); - uip_listen(HTONS(81)); -} - -void example5_app(void) { - struct example5_state *s; - s = (struct example5_state)uip_conn->appstate; - - if(uip_connected()) { - switch(uip_conn->lport) { - case HTONS(80): - s->dataptr = data_port_80; - s->dataleft = datalen_port_80; - break; - case HTONS(81): - s->dataptr = data_port_81; - s->dataleft = datalen_port_81; - break; - } - uip_send(s->dataptr, s->dataleft); - return; - } - - if(uip_acked()) { - if(s->dataleft < uip_mss()) { - uip_close(); - return; - } - s->dataptr += uip_conn->len; - s->dataleft -= uip_conn->len; - uip_send(s->dataptr, s->dataleft); - } -} -\endcode - -The application state consists of a pointer to the data that should be -sent and the size of the data that is left to send. When a remote host -connects to the application, the local port number is used to -determine which file to send. The first chunk of data is sent using -uip_send(). uIP makes sure that no more than MSS bytes of data is -actually sent, even though s->dataleft may be larger than the MSS. - -The application is driven by incoming acknowledgments. When data has -been acknowledged, new data can be sent. If there is no more data to -send, the connection is closed using uip_close(). - -\subsection example6 Structured Application Program Design - -When writing larger programs using uIP it is useful to be able to -utilize the uIP API in a structured way. The following example -provides a structured design that has showed itself to be useful for -writing larger protocol implementations than the previous examples -showed here. The program is divided into an uIP event handler function -that calls seven application handler functions that process new data, -act on acknowledged data, send new data, deal with connection -establishment or closure events and handle errors. The functions are -called newdata(), acked(), senddata(), connected(), closed(), -aborted(), and timedout(), and needs to be written specifically for -the protocol that is being implemented. - -The uIP event handler function is shown below. - -\code -void example6_app(void) { - if(uip_aborted()) { - aborted(); - } - if(uip_timedout()) { - timedout(); - } - if(uip_closed()) { - closed(); - } - if(uip_connected()) { - connected(); - } - if(uip_acked()) { - acked(); - } - if(uip_newdata()) { - newdata(); - } - if(uip_rexmit() || - uip_newdata() || - uip_acked() || - uip_connected() || - uip_poll()) { - senddata(); - } -} -\endcode - -The function starts with dealing with any error conditions that might -have happened by checking if uip_aborted() or uip_timedout() are -true. If so, the appropriate error function is called. Also, if the -connection has been closed, the closed() function is called to the it -deal with the event. - -Next, the function checks if the connection has just been established -by checking if uip_connected() is true. The connected() function is -called and is supposed to do whatever needs to be done when the -connection is established, such as intializing the application state -for the connection. Since it may be the case that data should be sent -out, the senddata() function is called to deal with the outgoing data. - -The following very simple application serves as an example of how the -application handler functions might look. This application simply -waits for any data to arrive on the connection, and responds to the -data by sending out the message "Hello world!". To illustrate how to -develop an application state machine, this message is sent in two -parts, first the "Hello" part and then the "world!" part. - -\code -#define STATE_WAITING 0 -#define STATE_HELLO 1 -#define STATE_WORLD 2 - -struct example6_state { - u8_t state; - char *textptr; - int textlen; -}; - -static void aborted(void) {} -static void timedout(void) {} -static void closed(void) {} - -static void connected(void) { - struct example6_state *s = (struct example6_state *)uip_conn->appstate; - - s->state = STATE_WAITING; - s->textlen = 0; -} - -static void newdata(void) { - struct example6_state *s = (struct example6_state *)uip_conn->appstate; - - if(s->state == STATE_WAITING) { - s->state = STATE_HELLO; - s->textptr = "Hello "; - s->textlen = 6; - } -} - -static void acked(void) { - struct example6_state *s = (struct example6_state *)uip_conn->appstate; - - s->textlen -= uip_conn->len; - s->textptr += uip_conn->len; - if(s->textlen == 0) { - switch(s->state) { - case STATE_HELLO: - s->state = STATE_WORLD; - s->textptr = "world!\n"; - s->textlen = 7; - break; - case STATE_WORLD: - uip_close(); - break; - } - } -} - -static void senddata(void) { - struct example6_state *s = (struct example6_state *)uip_conn->appstate; - - if(s->textlen > 0) { - uip_send(s->textptr, s->textlen); - } -} -\endcode - -The application state consists of a "state" variable, a "textptr" -pointer to a text message and the "textlen" length of the text -message. The "state" variable can be either "STATE_WAITING", meaning -that the application is waiting for data to arrive from the network, -"STATE_HELLO", in which the application is sending the "Hello" part of -the message, or "STATE_WORLD", in which the application is sending the -"world!" message. - -The application does not handle errors or connection closing events, -and therefore the aborted(), timedout() and closed() functions are -implemented as empty functions. - -The connected() function will be called when a connection has been -established, and in this case sets the "state" variable to be -"STATE_WAITING" and the "textlen" variable to be zero, indicating that -there is no message to be sent out. - -When new data arrives from the network, the newdata() function will be -called by the event handler function. The newdata() function will -check if the connection is in the "STATE_WAITING" state, and if so -switches to the "STATE_HELLO" state and registers a 6 byte long "Hello -" message with the connection. This message will later be sent out by -the senddata() function. - -The acked() function is called whenever data that previously was sent -has been acknowleged by the receiving host. This acked() function -first reduces the amount of data that is left to send, by subtracting -the length of the previously sent data (obtained from "uip_conn->len") -from the "textlen" variable, and also adjusts the "textptr" pointer -accordingly. It then checks if the "textlen" variable now is zero, -which indicates that all data now has been successfully received, and -if so changes application state. If the application was in the -"STATE_HELLO" state, it switches state to "STATE_WORLD" and sets up a -7 byte "world!\n" message to be sent. If the application was in the -"STATE_WORLD" state, it closes the connection. - -Finally, the senddata() function takes care of actually sending the -data that is to be sent. It is called by the event handler function -when new data has been received, when data has been acknowledged, when -a new connection has been established, when the connection is polled -because of inactivity, or when a retransmission should be made. The -purpose of the senddata() function is to optionally format the data -that is to be sent, and to call the uip_send() function to actually -send out the data. In this particular example, the function simply -calls uip_send() with the appropriate arguments if data is to be sent, -after checking if data should be sent out or not as indicated by the -"textlen" variable. - -It is important to note that the senddata() function never should -affect the application state; this should only be done in the acked() -and newdata() functions. - -\section protoimpl Protocol Implementations - -The protocols in the TCP/IP protocol suite are designed in a layered -fashion where each protocol performs a specific function and the -interactions between the protocol layers are strictly defined. While -the layered approach is a good way to design protocols, it is not -always the best way to implement them. In uIP, the protocol -implementations are tightly coupled in order to save code space. - -This section gives detailed information on the specific protocol -implementations in uIP. - -\subsection ip IP --- Internet Protocol - -When incoming packets are processed by uIP, the IP layer is the first -protocol that examines the packet. The IP layer does a few simple -checks such as if the destination IP address of the incoming packet -matches any of the local IP address and verifies the IP header -checksum. Since there are no IP options that are strictly required and -because they are very uncommon, any IP options in received packets are -dropped. - -\subsubsection ipreass IP Fragment Reassembly - -IP fragment reassembly is implemented using a separate buffer that -holds the packet to be reassembled. An incoming fragment is copied -into the right place in the buffer and a bit map is used to keep track -of which fragments have been received. Because the first byte of an IP -fragment is aligned on an 8-byte boundary, the bit map requires a -small amount of memory. When all fragments have been reassembled, the -resulting IP packet is passed to the transport layer. If all fragments -have not been received within a specified time frame, the packet is -dropped. - -The current implementation only has a single buffer for holding -packets to be reassembled, and therefore does not support simultaneous -reassembly of more than one packet. Since fragmented packets are -uncommon, this ought to be a reasonable decision. Extending the -implementation to support multiple buffers would be straightforward, -however. - -\subsubsection ipbroadcast Broadcasts and Multicasts - -IP has the ability to broadcast and multicast packets on the local -network. Such packets are addressed to special broadcast and multicast -addresses. Broadcast is used heavily in many UDP based protocols such -as the Microsoft Windows file-sharing SMB protocol. Multicast is -primarily used in protocols used for multimedia distribution such as -RTP. TCP is a point-to-point protocol and does not use broadcast or -multicast packets. uIP current supports broadcast packets as well as -sending multicast packets. Joining multicast groups (IGMP) and -receiving non-local multicast packets is not currently supported. - -\subsection icmp ICMP --- Internet Control Message Protocol - -The ICMP protocol is used for reporting soft error conditions and for -querying host parameters. Its main use is, however, the echo mechanism -which is used by the "ping" program. - -The ICMP implementation in uIP is very simple as itis restricted to -only implement ICMP echo messages. Replies to echo messages are -constructed by simply swapping the source and destination IP addresses -of incoming echo requests and rewriting the ICMP header with the -Echo-Reply message type. The ICMP checksum is adjusted using standard -techniques (see RFC1624). - -Since only the ICMP echo message is implemented, there is no support -for Path MTU discovery or ICMP redirect messages. Neither of these is -strictly required for interoperability; they are performance -enhancement mechanisms. - -\subsection tcp TCP --- Transmission Control Protocol - -The TCP implementation in uIP is driven by incoming packets and timer -events. Incoming packets are parsed by TCP and if the packet contains -data that is to be delivered to the application, the application is -invoked by the means of the application function call. If the incoming -packet acknowledges previously sent data, the connection state is -updated and the application is informed, allowing it to send out new -data. - -\subsubsection listeb Listening Connections - -TCP allows a connection to listen for incoming connection requests. In -uIP, a listening connection is identified by the 16-bit port number -and incoming connection requests are checked against the list of -listening connections. This list of listening connections is dynamic -and can be altered by the applications in the system. - -\subsubsection slidingwindow Sliding Window - -Most TCP implementations use a sliding window mechanism for sending -data. Multiple data segments are sent in succession without waiting -for an acknowledgment for each segment. - -The sliding window algorithm uses a lot of 32-bit operations and -because 32-bit arithmetic is fairly expensive on most 8-bit CPUs, uIP -does not implement it. Also, uIP does not buffer sent packets and a -sliding window implementation that does not buffer sent packets will have -to be supported by a complex application layer. Instead, uIP allows -only a single TCP segment per connection to be unacknowledged at any -given time. - -It is important to note that even though most TCP implementations use -the sliding window algorithm, it is not required by the TCP -specifications. Removing the sliding window mechanism does not affect -interoperability in any way. - -\subsubsection rttest Round-Trip Time Estimation - -TCP continuously estimates the current Round-Trip Time (RTT) of every -active connection in order to find a suitable value for the -retransmission time-out. - -The RTT estimation in uIP is implemented using TCP's periodic -timer. Each time the periodic timer fires, it increments a counter for -each connection that has unacknowledged data in the network. When an -acknowledgment is received, the current value of the counter is used -as a sample of the RTT. The sample is used together with Van -Jacobson's standard TCP RTT estimation function to calculate an -estimate of the RTT. Karn's algorithm is used to ensure that -retransmissions do not skew the estimates. - -\subsubsection rexmit Retransmissions - -Retransmissions are driven by the periodic TCP timer. Every time the -periodic timer is invoked, the retransmission timer for each -connection is decremented. If the timer reaches zero, a retransmission -should be made. - -As uIP does not keep track of packet contents after they have -been sent by the device driver, uIP requires that the -application takes an active part in performing the -retransmission. When uIP decides that a segment should be -retransmitted, it calls the application with a flag set indicating -that a retransmission is required. The application checks the -retransmission flag and produces the same data that was previously -sent. From the application's standpoint, performing a retransmission -is not different from how the data originally was sent. Therefore the -application can be written in such a way that the same code is used -both for sending data and retransmitting data. Also, it is important -to note that even though the actual retransmission operation is -carried out by the application, it is the responsibility of the stack -to know when the retransmission should be made. Thus the complexity of -the application does not necessarily increase because it takes an -active part in doing retransmissions. - -\subsubsection flowcontrol Flow Control - -The purpose of TCP's flow control mechanisms is to allow communication -between hosts with wildly varying memory dimensions. In each TCP -segment, the sender of the segment indicates its available buffer -space. A TCP sender must not send more data than the buffer space -indicated by the receiver. - -In uIP, the application cannot send more data than the receiving host -can buffer. And application cannot send more data than the amount of -bytes it is allowed to send by the receiving host. If the remote host -cannot accept any data at all, the stack initiates the zero window -probing mechanism. - -\subsubsection congestioncontrol Congestion Control - -The congestion control mechanisms limit the number of simultaneous TCP -segments in the network. The algorithms used for congestion control -are designed to be simple to implement and require only a few lines of -code. - -Since uIP only handles one in-flight TCP segment per connection, -the amount of simultaneous segments cannot be further limited, thus -the congestion control mechanisms are not needed. - -\subsubsection urgdata Urgent Data - -TCP's urgent data mechanism provides an application-to-application -notification mechanism, which can be used by an application to mark -parts of the data stream as being more urgent than the normal -stream. It is up to the receiving application to interpret the meaning -of the urgent data. - -In many TCP implementations, including the BSD implementation, the -urgent data feature increases the complexity of the implementation -because it requires an asynchronous notification mechanism in an -otherwise synchronous API. As uIP already use an asynchronous event -based API, the implementation of the urgent data feature does not lead -to increased complexity. - -\section performance Performance - -In TCP/IP implementations for high-end systems, processing time is -dominated by the checksum calculation loop, the operation of copying -packet data and context switching. Operating systems for high-end -systems often have multiple protection domains for protecting kernel -data from user processes and user processes from each other. Because -the TCP/IP stack is run in the kernel, data has to be copied between -the kernel space and the address space of the user processes and a -context switch has to be performed once the data has been -copied. Performance can be enhanced by combining the copy operation -with the checksum calculation. Because high-end systems usually have -numerous active connections, packet demultiplexing is also an -expensive operation. - -A small embedded device does not have the necessary processing power -to have multiple protection domains and the power to run a -multitasking operating system. Therefore there is no need to copy -data between the TCP/IP stack and the application program. With an -event based API there is no context switch between the TCP/IP stack -and the applications. - -In such limited systems, the TCP/IP processing overhead is dominated -by the copying of packet data from the network device to host memory, -and checksum calculation. Apart from the checksum calculation and -copying, the TCP processing done for an incoming packet involves only -updating a few counters and flags before handing the data over to the -application. Thus an estimate of the CPU overhead of our TCP/IP -implementations can be obtained by calculating the amount of CPU -cycles needed for the checksum calculation and copying of a maximum -sized packet. - -\subsection delack The Impact of Delayed Acknowledgments - -Most TCP receivers implement the delayed acknowledgment algorithm for -reducing the number of pure acknowledgment packets sent. A TCP -receiver using this algorithm will only send acknowledgments for every -other received segment. If no segment is received within a specific -time-frame, an acknowledgment is sent. The time-frame can be as high -as 500 ms but typically is 200 ms. - -A TCP sender such as uIP that only handles a single outstanding TCP -segment will interact poorly with the delayed acknowledgment -algorithm. Because the receiver only receives a single segment at a -time, it will wait as much as 500 ms before an acknowledgment is -sent. This means that the maximum possible throughput is severely -limited by the 500 ms idle time. - -Thus the maximum throughput equation when sending data from uIP will -be $p = s / (t + t_d)$ where $s$ is the segment size and $t_d$ is the -delayed acknowledgment timeout, which typically is between 200 and -500 ms. With a segment size of 1000 bytes, a round-trip time of 40 ms -and a delayed acknowledgment timeout of 200 ms, the maximum -throughput will be 4166 bytes per second. With the delayed acknowledgment -algorithm disabled at the receiver, the maximum throughput would be -25000 bytes per second. - -It should be noted, however, that since small systems running uIP are -not very likely to have large amounts of data to send, the delayed -acknowledgmen t throughput degradation of uIP need not be very -severe. Small amounts of data sent by such a system will not span more -than a single TCP segment, and would therefore not be affected by the -throughput degradation anyway. - -The maximum throughput when uIP acts as a receiver is not affected by -the delayed acknowledgment throughput degradation. - - - -*/ - - -/** @} */ - diff --git a/components/net/uip/doc/uip-refman.pdf b/components/net/uip/doc/uip-refman.pdf deleted file mode 100644 index 8dc800598638ce3cd7997a8e9a700c38d3782d78..0000000000000000000000000000000000000000 --- a/components/net/uip/doc/uip-refman.pdf +++ /dev/null @@ -1,39280 +0,0 @@ -%PDF-1.4 -5 0 obj -<< /S /GoTo /D (chapter.1) >> -endobj -8 0 obj -(The uIP TCP/IP stack ) -endobj -9 0 obj -<< /S /GoTo /D (section.1.1) >> -endobj -12 0 obj -(Introduction) -endobj -13 0 obj -<< /S /GoTo /D (section.1.2) >> -endobj -16 0 obj -(TCP/IP Communication) -endobj -17 0 obj -<< /S /GoTo /D (section.1.3) >> -endobj -20 0 obj -(Main Control Loop) -endobj -21 0 obj -<< /S /GoTo /D (section.1.4) >> -endobj -24 0 obj -(Architecture Specific Functions) -endobj -25 0 obj -<< /S /GoTo /D (section.1.5) >> -endobj -28 0 obj -(Memory Management) -endobj -29 0 obj -<< /S /GoTo /D (section.1.6) >> -endobj -32 0 obj -(Application Program Interface \(API\)) -endobj -33 0 obj -<< /S /GoTo /D (section.1.7) >> -endobj -36 0 obj -(Examples) -endobj -37 0 obj -<< /S /GoTo /D (section.1.8) >> -endobj -40 0 obj -(Protocol Implementations) -endobj -41 0 obj -<< /S /GoTo /D (section.1.9) >> -endobj -44 0 obj -(Performance) -endobj -45 0 obj -<< /S /GoTo /D (chapter.2) >> -endobj -48 0 obj -(uIP 1.0 Module Index) -endobj -49 0 obj -<< /S /GoTo /D (section.2.1) >> -endobj -52 0 obj -(uIP 1.0 Modules) -endobj -53 0 obj -<< /S /GoTo /D (chapter.3) >> -endobj -56 0 obj -(uIP 1.0 Hierarchical Index) -endobj -57 0 obj -<< /S /GoTo /D (section.3.1) >> -endobj -60 0 obj -(uIP 1.0 Class Hierarchy) -endobj -61 0 obj -<< /S /GoTo /D (chapter.4) >> -endobj -64 0 obj -(uIP 1.0 Data Structure Index) -endobj -65 0 obj -<< /S /GoTo /D (section.4.1) >> -endobj -68 0 obj -(uIP 1.0 Data Structures) -endobj -69 0 obj -<< /S /GoTo /D (chapter.5) >> -endobj -72 0 obj -(uIP 1.0 File Index) -endobj -73 0 obj -<< /S /GoTo /D (section.5.1) >> -endobj -76 0 obj -(uIP 1.0 File List) -endobj -77 0 obj -<< /S /GoTo /D (chapter.6) >> -endobj -80 0 obj -(uIP 1.0 Module Documentation) -endobj -81 0 obj -<< /S /GoTo /D (section.6.1) >> -endobj -84 0 obj -(Protothreads) -endobj -85 0 obj -<< /S /GoTo /D (section.6.2) >> -endobj -88 0 obj -(Applications) -endobj -89 0 obj -<< /S /GoTo /D (section.6.3) >> -endobj -92 0 obj -(uIP configuration functions) -endobj -93 0 obj -<< /S /GoTo /D (section.6.4) >> -endobj -96 0 obj -(uIP initialization functions) -endobj -97 0 obj -<< /S /GoTo /D (section.6.5) >> -endobj -100 0 obj -(uIP device driver functions) -endobj -101 0 obj -<< /S /GoTo /D (section.6.6) >> -endobj -104 0 obj -(uIP application functions) -endobj -105 0 obj -<< /S /GoTo /D (section.6.7) >> -endobj -108 0 obj -(uIP conversion functions) -endobj -109 0 obj -<< /S /GoTo /D (section.6.8) >> -endobj -112 0 obj -(Variables used in uIP device drivers) -endobj -113 0 obj -<< /S /GoTo /D (section.6.9) >> -endobj -116 0 obj -(The uIP TCP/IP stack) -endobj -117 0 obj -<< /S /GoTo /D (section.6.10) >> -endobj -120 0 obj -(Architecture specific uIP functions) -endobj -121 0 obj -<< /S /GoTo /D (section.6.11) >> -endobj -124 0 obj -(uIP Address Resolution Protocol) -endobj -125 0 obj -<< /S /GoTo /D (section.6.12) >> -endobj -128 0 obj -(Configuration options for uIP) -endobj -129 0 obj -<< /S /GoTo /D (section.6.13) >> -endobj -132 0 obj -(uIP TCP throughput booster hack) -endobj -133 0 obj -<< /S /GoTo /D (section.6.14) >> -endobj -136 0 obj -(Local continuations) -endobj -137 0 obj -<< /S /GoTo /D (section.6.15) >> -endobj -140 0 obj -(Timer library) -endobj -141 0 obj -<< /S /GoTo /D (section.6.16) >> -endobj -144 0 obj -(Clock interface) -endobj -145 0 obj -<< /S /GoTo /D (section.6.17) >> -endobj -148 0 obj -(Protosockets library) -endobj -149 0 obj -<< /S /GoTo /D (section.6.18) >> -endobj -152 0 obj -(Memory block management functions) -endobj -153 0 obj -<< /S /GoTo /D (section.6.19) >> -endobj -156 0 obj -(DNS resolver) -endobj -157 0 obj -<< /S /GoTo /D (section.6.20) >> -endobj -160 0 obj -(SMTP E-mail sender) -endobj -161 0 obj -<< /S /GoTo /D (section.6.21) >> -endobj -164 0 obj -(Telnet server) -endobj -165 0 obj -<< /S /GoTo /D (section.6.22) >> -endobj -168 0 obj -(Hello, world) -endobj -169 0 obj -<< /S /GoTo /D (section.6.23) >> -endobj -172 0 obj -(Web client) -endobj -173 0 obj -<< /S /GoTo /D (section.6.24) >> -endobj -176 0 obj -(Web server) -endobj -177 0 obj -<< /S /GoTo /D (chapter.7) >> -endobj -180 0 obj -(uIP 1.0 Data Structure Documentation) -endobj -181 0 obj -<< /S /GoTo /D (section.7.1) >> -endobj -184 0 obj -(dhcpc\137state Struct Reference) -endobj -185 0 obj -<< /S /GoTo /D (section.7.2) >> -endobj -188 0 obj -(hello\137world\137state Struct Reference) -endobj -189 0 obj -<< /S /GoTo /D (section.7.3) >> -endobj -192 0 obj -(httpd\137cgi\137call Struct Reference) -endobj -193 0 obj -<< /S /GoTo /D (section.7.4) >> -endobj -196 0 obj -(httpd\137state Struct Reference) -endobj -197 0 obj -<< /S /GoTo /D (section.7.5) >> -endobj -200 0 obj -(memb\137blocks Struct Reference) -endobj -201 0 obj -<< /S /GoTo /D (section.7.6) >> -endobj -204 0 obj -(psock Struct Reference) -endobj -205 0 obj -<< /S /GoTo /D (section.7.7) >> -endobj -208 0 obj -(psock\137buf Struct Reference) -endobj -209 0 obj -<< /S /GoTo /D (section.7.8) >> -endobj -212 0 obj -(pt Struct Reference) -endobj -213 0 obj -<< /S /GoTo /D (section.7.9) >> -endobj -216 0 obj -(smtp\137state Struct Reference) -endobj -217 0 obj -<< /S /GoTo /D (section.7.10) >> -endobj -220 0 obj -(telnetd\137state Struct Reference) -endobj -221 0 obj -<< /S /GoTo /D (section.7.11) >> -endobj -224 0 obj -(timer Struct Reference) -endobj -225 0 obj -<< /S /GoTo /D (section.7.12) >> -endobj -228 0 obj -(uip\137conn Struct Reference) -endobj -229 0 obj -<< /S /GoTo /D (section.7.13) >> -endobj -232 0 obj -(uip\137eth\137addr Struct Reference) -endobj -233 0 obj -<< /S /GoTo /D (section.7.14) >> -endobj -236 0 obj -(uip\137eth\137hdr Struct Reference) -endobj -237 0 obj -<< /S /GoTo /D (section.7.15) >> -endobj -240 0 obj -(uip\137icmpip\137hdr Struct Reference) -endobj -241 0 obj -<< /S /GoTo /D (section.7.16) >> -endobj -244 0 obj -(uip\137neighbor\137addr Struct Reference) -endobj -245 0 obj -<< /S /GoTo /D (section.7.17) >> -endobj -248 0 obj -(uip\137stats Struct Reference) -endobj -249 0 obj -<< /S /GoTo /D (section.7.18) >> -endobj -252 0 obj -(uip\137tcpip\137hdr Struct Reference) -endobj -253 0 obj -<< /S /GoTo /D (section.7.19) >> -endobj -256 0 obj -(uip\137udp\137conn Struct Reference) -endobj -257 0 obj -<< /S /GoTo /D (section.7.20) >> -endobj -260 0 obj -(uip\137udpip\137hdr Struct Reference) -endobj -261 0 obj -<< /S /GoTo /D (section.7.21) >> -endobj -264 0 obj -(webclient\137state Struct Reference) -endobj -265 0 obj -<< /S /GoTo /D (chapter.8) >> -endobj -268 0 obj -(uIP 1.0 File Documentation) -endobj -269 0 obj -<< /S /GoTo /D (section.8.1) >> -endobj -272 0 obj -(apps/hello-world/hello-world.c File Reference) -endobj -273 0 obj -<< /S /GoTo /D (section.8.2) >> -endobj -276 0 obj -(apps/hello-world/hello-world.h File Reference) -endobj -277 0 obj -<< /S /GoTo /D (section.8.3) >> -endobj -280 0 obj -(apps/resolv/resolv.c File Reference) -endobj -281 0 obj -<< /S /GoTo /D (section.8.4) >> -endobj -284 0 obj -(apps/resolv/resolv.h File Reference) -endobj -285 0 obj -<< /S /GoTo /D (section.8.5) >> -endobj -288 0 obj -(apps/smtp/smtp.c File Reference) -endobj -289 0 obj -<< /S /GoTo /D (section.8.6) >> -endobj -292 0 obj -(apps/smtp/smtp.h File Reference) -endobj -293 0 obj -<< /S /GoTo /D (section.8.7) >> -endobj -296 0 obj -(apps/telnetd/shell.c File Reference) -endobj -297 0 obj -<< /S /GoTo /D (section.8.8) >> -endobj -300 0 obj -(apps/telnetd/shell.h File Reference) -endobj -301 0 obj -<< /S /GoTo /D (section.8.9) >> -endobj -304 0 obj -(apps/telnetd/telnetd.c File Reference) -endobj -305 0 obj -<< /S /GoTo /D (section.8.10) >> -endobj -308 0 obj -(apps/telnetd/telnetd.h File Reference) -endobj -309 0 obj -<< /S /GoTo /D (section.8.11) >> -endobj -312 0 obj -(apps/webclient/webclient.c File Reference) -endobj -313 0 obj -<< /S /GoTo /D (section.8.12) >> -endobj -316 0 obj -(apps/webclient/webclient.h File Reference) -endobj -317 0 obj -<< /S /GoTo /D (section.8.13) >> -endobj -320 0 obj -(apps/webserver/httpd-cgi.c File Reference) -endobj -321 0 obj -<< /S /GoTo /D (section.8.14) >> -endobj -324 0 obj -(apps/webserver/httpd-cgi.h File Reference) -endobj -325 0 obj -<< /S /GoTo /D (section.8.15) >> -endobj -328 0 obj -(apps/webserver/httpd.c File Reference) -endobj -329 0 obj -<< /S /GoTo /D (section.8.16) >> -endobj -332 0 obj -(lib/memb.c File Reference) -endobj -333 0 obj -<< /S /GoTo /D (section.8.17) >> -endobj -336 0 obj -(lib/memb.h File Reference) -endobj -337 0 obj -<< /S /GoTo /D (section.8.18) >> -endobj -340 0 obj -(uip/lc-addrlabels.h File Reference) -endobj -341 0 obj -<< /S /GoTo /D (section.8.19) >> -endobj -344 0 obj -(uip/lc-switch.h File Reference) -endobj -345 0 obj -<< /S /GoTo /D (section.8.20) >> -endobj -348 0 obj -(uip/lc.h File Reference) -endobj -349 0 obj -<< /S /GoTo /D (section.8.21) >> -endobj -352 0 obj -(uip/psock.h File Reference) -endobj -353 0 obj -<< /S /GoTo /D (section.8.22) >> -endobj -356 0 obj -(uip/pt.h File Reference) -endobj -357 0 obj -<< /S /GoTo /D (section.8.23) >> -endobj -360 0 obj -(uip/timer.c File Reference) -endobj -361 0 obj -<< /S /GoTo /D (section.8.24) >> -endobj -364 0 obj -(uip/timer.h File Reference) -endobj -365 0 obj -<< /S /GoTo /D (section.8.25) >> -endobj -368 0 obj -(uip/uip-neighbor.c File Reference) -endobj -369 0 obj -<< /S /GoTo /D (section.8.26) >> -endobj -372 0 obj -(uip/uip-neighbor.h File Reference) -endobj -373 0 obj -<< /S /GoTo /D (section.8.27) >> -endobj -376 0 obj -(uip/uip-split.h File Reference) -endobj -377 0 obj -<< /S /GoTo /D (section.8.28) >> -endobj -380 0 obj -(uip/uip.c File Reference) -endobj -381 0 obj -<< /S /GoTo /D (section.8.29) >> -endobj -384 0 obj -(uip/uip.h File Reference) -endobj -385 0 obj -<< /S /GoTo /D (section.8.30) >> -endobj -388 0 obj -(uip/uip\137arch.h File Reference) -endobj -389 0 obj -<< /S /GoTo /D (section.8.31) >> -endobj -392 0 obj -(uip/uip\137arp.c File Reference) -endobj -393 0 obj -<< /S /GoTo /D (section.8.32) >> -endobj -396 0 obj -(uip/uip\137arp.h File Reference) -endobj -397 0 obj -<< /S /GoTo /D (section.8.33) >> -endobj -400 0 obj -(uip/uipopt.h File Reference) -endobj -401 0 obj -<< /S /GoTo /D (section.8.34) >> -endobj -404 0 obj -(unix/uip-conf.h File Reference) -endobj -405 0 obj -<< /S /GoTo /D (chapter.9) >> -endobj -408 0 obj -(uIP 1.0 Example Documentation) -endobj -409 0 obj -<< /S /GoTo /D (section.9.1) >> -endobj -412 0 obj -(dhcpc.c) -endobj -413 0 obj -<< /S /GoTo /D (section.9.2) >> -endobj -416 0 obj -(dhcpc.h) -endobj -417 0 obj -<< /S /GoTo /D (section.9.3) >> -endobj -420 0 obj -(example-mainloop-with-arp.c) -endobj -421 0 obj -<< /S /GoTo /D (section.9.4) >> -endobj -424 0 obj -(example-mainloop-without-arp.c) -endobj -425 0 obj -<< /S /GoTo /D (section.9.5) >> -endobj -428 0 obj -(hello-world.c) -endobj -429 0 obj -<< /S /GoTo /D (section.9.6) >> -endobj -432 0 obj -(hello-world.h) -endobj -433 0 obj -<< /S /GoTo /D (section.9.7) >> -endobj -436 0 obj -(resolv.c) -endobj -437 0 obj -<< /S /GoTo /D (section.9.8) >> -endobj -440 0 obj -(resolv.h) -endobj -441 0 obj -<< /S /GoTo /D (section.9.9) >> -endobj -444 0 obj -(smtp.c) -endobj -445 0 obj -<< /S /GoTo /D (section.9.10) >> -endobj -448 0 obj -(smtp.h) -endobj -449 0 obj -<< /S /GoTo /D (section.9.11) >> -endobj -452 0 obj -(telnetd.c) -endobj -453 0 obj -<< /S /GoTo /D (section.9.12) >> -endobj -456 0 obj -(telnetd.h) -endobj -457 0 obj -<< /S /GoTo /D (section.9.13) >> -endobj -460 0 obj -(uip-code-style.c) -endobj -461 0 obj -<< /S /GoTo /D (section.9.14) >> -endobj -464 0 obj -(uip-conf.h) -endobj -465 0 obj -<< /S /GoTo /D (section.9.15) >> -endobj -468 0 obj -(webclient.c) -endobj -469 0 obj -<< /S /GoTo /D (section.9.16) >> -endobj -472 0 obj -(webclient.h) -endobj -473 0 obj -<< /S /GoTo /D [474 0 R /Fit ] >> -endobj -477 0 obj << -/Length 382 -/Filter /FlateDecode ->> -stream -xڍRMO@ W{|ߠ@E%7C̖$[F|DJc< C paPBd?SKsYJ\y\H!K_pXCnFOV"|NWFCV W!s17SpuT\l^+wDzz\/Giv(l m 5"f)w% Z}1y&hI9ȃv& -hUqCآdAf0!5HG"LsNl !l}5yѱJ> endobj -475 0 obj << -/Type /XObject -/Subtype /Form -/FormType 1 -/PTEX.FileName (../sicslogo.pdf) -/PTEX.PageNumber 1 -/PTEX.InfoDict 487 0 R -/Matrix [1.00000000 0.00000000 0.00000000 1.00000000 0.00000000 0.00000000] -/BBox [0.00000000 0.00000000 242.00000000 58.00000000] -/Resources << -/ProcSet [ /PDF ] -/ExtGState << -/R4 488 0 R ->>>> -/Length 489 0 R -/Filter /FlateDecode ->> -stream -x}ZY3͍|)tܗcWh ߃=LRV3]wy?oϿH?|kKNW혔Fmsg.i<ך帾dz|VY-+gy\}=[nW0|z6ݏٽavjXW ? e^GvTTl8ra \:\)qǜ7@o]Wҧy|:p^6 /dK` AUVR4c%)}hޤ=f Xg!N nal8'oqm gfJ7 #o(A%4^%% S0}llUJ)Uc$vm'VFO[n<4Xv>T -b3vn^!69)@J"17ԁY&cmۼ - jj -'ԸwP@ F`Òh kZZOg~b! ->n+.%km -"Ғ1|ۊK.- +vV fťLp~; ;3Ld%˄ܒK - bf% f\d9"5V~0&9zO56l.aapl ڑK0waVذ6 /6 LW_&z}cfAj%[v)ZQM|i'pWpy/aԸdk8&N0F+llV[l"p{qLH3l) M˦ 1 hJnV#ŌSg!SHCE+8tq<)$9oܳ~Fo 947l"aud4$Tt]`,Lףstv楕rYǁH.bz:<Ib@[Nw\퉩!d|860TX&lEoȽu)"Bw`ʲ!\ 5s D=MB.]2ڎ^C*Uq!7D~HCh,!</Vw`׈%~ǃ"jCin{k+2̙n?ps+&}`'{7٫HWj-';RYدD -RJ6Vt"kG?S $Do=U'b)C1r2y3w<rtэ )_VA0FN[ֲEu^\nhj\2>[ :Pea|ˎB +إS'}@o]g8˂ ->M V{ծL=iޱe߰S﴾4H :︵)@iي8C!-*J?Tz~4{{uJlw?_̝wJaiP:eZ6mf1G?jj2K '1L/1nﭝy0kp'_= dˎg)  Kx%4mƢ $˪>˒ džPp|,% [aU?KWN|KCP;qVcJ3t;:uǚ ?ࡐ9J =q߱x8a'mzTWLX+'gpkqجS>1mN?\3Kd*JhR۷*$EӎtÉOqTvR|lGoE/s>jJ|x)s@\ }D"4hp) *TjЍa !oendstream -endobj -487 0 obj -<< -/Producer (GNU Ghostscript 7.07) -/Creator (GNU Ghostscript 707 \(epswrite\)) -/CreationDate (2005/02/23 12:39:03) ->> -endobj -488 0 obj -<< -/Type /ExtGState -/Name /R4 -/TR /Identity -/OPM 1 -/SM 0.02 ->> -endobj -489 0 obj -3714 -endobj -478 0 obj << -/D [474 0 R /XYZ 90 757.9346 null] ->> endobj -479 0 obj << -/D [474 0 R /XYZ 90 739.9346 null] ->> endobj -476 0 obj << -/Font << /F23 482 0 R /F26 485 0 R >> -/XObject << /Im1 475 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -492 0 obj << -/Length 59 -/Filter /FlateDecode ->> -stream -x3T0BCKsSs=Kc3\.t;!THcY[ ^endstream -endobj -491 0 obj << -/Type /Page -/Contents 492 0 R -/Resources 490 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 486 0 R ->> endobj -493 0 obj << -/D [491 0 R /XYZ 90 757.9346 null] ->> endobj -490 0 obj << -/ProcSet [ /PDF ] ->> endobj -496 0 obj << -/Length 1823 -/Filter /FlateDecode ->> -stream -x[Ms6W(:IN2i}kzȊ%yh -$jN{. 0PB!ø,ֻ+\nR СrD4ED\ F`MZ֤Ce$Ts<8B:1-@_\&\jK[&>vv]dLWE.6GeXQ*V6ڄ -h,tU& 囪MJ:6=&k2|px5>)„GM"17RHPu7UVİX=+oZ?nTϛ+t|鴯}#X:)^B"?>ѷ(I$j\5YRPZ!EFfw~4RˇNDRqRbyT% BiӼg -,PqQ -T$InlP@3|Y:⅖&/4q44*)^(T2ܨԡVv<~BqBv2o22S{GeQF~TQ{dYW .qʔ8V~z_Nm FҴC+!jTE q4ڢrmr-5ei}ػS=3F?V$Z"Hxڴ t,FFjI7M TQ2qۃQ(q[>mLv^'$``vgETX(V}ʂMU$2(R yYR{?5u_mo,XlBb"`h 5wM 6Uk4y eQ*3Frrq9a3{&Ook ȬJ@m*(yׄ;T1X ;a/c_kendstream -endobj -495 0 obj << -/Type /Page -/Contents 496 0 R -/Resources 494 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 486 0 R -/Annots [ 501 0 R 502 0 R 503 0 R 504 0 R 505 0 R 506 0 R 507 0 R 508 0 R 509 0 R 510 0 R 511 0 R 512 0 R 513 0 R 514 0 R 515 0 R 516 0 R 517 0 R 518 0 R 519 0 R 520 0 R 521 0 R 522 0 R 523 0 R 524 0 R 525 0 R ] ->> endobj -501 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 575.2302 202.806 584.2064] -/Subtype /Link -/A << /S /GoTo /D (chapter.1) >> ->> endobj -502 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 557.4621 178.1091 566.3087] -/Subtype /Link -/A << /S /GoTo /D (section.1.1) >> ->> endobj -503 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 539.6741 225.451 548.5207] -/Subtype /Link -/A << /S /GoTo /D (section.1.2) >> ->> endobj -504 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 519.8288 206.3431 530.7327] -/Subtype /Link -/A << /S /GoTo /D (section.1.3) >> ->> endobj -505 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 502.0408 255.0296 512.9447] -/Subtype /Link -/A << /S /GoTo /D (section.1.4) >> ->> endobj -506 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 484.2528 217.6704 495.1567] -/Subtype /Link -/A << /S /GoTo /D (section.1.5) >> ->> endobj -507 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 466.4648 275.6622 477.3687] -/Subtype /Link -/A << /S /GoTo /D (section.1.6) >> ->> endobj -508 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 448.6768 168.1465 459.5807] -/Subtype /Link -/A << /S /GoTo /D (section.1.7) >> ->> endobj -509 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 430.8888 232.0759 441.7927] -/Subtype /Link -/A << /S /GoTo /D (section.1.8) >> ->> endobj -510 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 415.0385 179.7529 424.0048] -/Subtype /Link -/A << /S /GoTo /D (section.1.9) >> ->> endobj -511 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 386.733 198.3827 395.7092] -/Subtype /Link -/A << /S /GoTo /D (chapter.2) >> ->> endobj -512 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 368.8453 194.9958 377.8116] -/Subtype /Link -/A << /S /GoTo /D (section.2.1) >> ->> endobj -513 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 340.5398 219.2242 349.516] -/Subtype /Link -/A << /S /GoTo /D (chapter.3) >> ->> endobj -514 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 320.7145 223.9867 331.6184] -/Subtype /Link -/A << /S /GoTo /D (section.3.1) >> ->> endobj -515 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 294.3466 229.456 303.3229] -/Subtype /Link -/A << /S /GoTo /D (chapter.4) >> ->> endobj -516 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 276.5786 221.8247 285.4252] -/Subtype /Link -/A << /S /GoTo /D (section.4.1) >> ->> endobj -517 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 248.1535 181.7751 257.1297] -/Subtype /Link -/A << /S /GoTo /D (chapter.5) >> ->> endobj -518 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 230.3854 193.6207 239.2321] -/Subtype /Link -/A << /S /GoTo /D (section.5.1) >> ->> endobj -519 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 201.9603 239.3289 210.9365] -/Subtype /Link -/A << /S /GoTo /D (chapter.6) >> ->> endobj -520 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 184.1922 179.2149 193.0389] -/Subtype /Link -/A << /S /GoTo /D (section.6.1) >> ->> endobj -521 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 164.347 179.7727 175.2509] -/Subtype /Link -/A << /S /GoTo /D (section.6.2) >> ->> endobj -522 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 146.559 237.8845 157.4629] -/Subtype /Link -/A << /S /GoTo /D (section.6.3) >> ->> endobj -523 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 130.8282 235.1242 139.6749] -/Subtype /Link -/A << /S /GoTo /D (section.6.4) >> ->> endobj -524 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 113.0402 236.3901 121.8869] -/Subtype /Link -/A << /S /GoTo /D (section.6.5) >> ->> endobj -525 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 93.195 229.0275 104.0989] -/Subtype /Link -/A << /S /GoTo /D (section.6.6) >> ->> endobj -500 0 obj << -/D [495 0 R /XYZ 90 604.4538 null] ->> endobj -494 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -528 0 obj << -/Length 2844 -/Filter /FlateDecode ->> -stream -xKs8U{&q֪RQ$$B - }`؛AWwCM -R\)a\V˧+\=?xEs<껿PSd$}gA$(zIJ7xw7w/$] V6W1E}%C+NYfsQpSDG)̑9ǩp,:^ՋH |}ٜۧv3"amv?n}wxJ%2T*Q1RŒD|~ȯ a j+DD!e̫$Ӌ!z_/6y<+j ׿_wP'+qD"82jEF-VwILLj2z'0A4͛~7o>}׿>4Y;NU(1HJ[|`Xᄧ:"hWB*DBJ͍q? >K#IU"HAP")r8| -gPy1j~p>6&L??wn$$FX1$BTڋ36&`Y&Z 9 $vZjzU: m1|8gW]]JH.ڢ7EXH4rFpIMup,pRf'gp1݋q;><>n;417M//>)%h ӘZkӨTB'S^Wy*bDN^Uڕ **= - -=`Skm β -9Z!qՠ -͌S_ 7beDud%PBI8 ^d:z{MéVH]U_'g_/u -FN`*eƮGQ]X}< > :t8\ATu@rv+CK%n`FF -)Ojˀ( P#`:`@eJ*v~vLbxmS$UTqJ^Uj;)ڌƝf0aV.{Scώ}[c7c%8#w --ΗkI - X*%WU<&4i#WzT]-`Pǹ[}MP!a"֤7ȫ -!Qg{9 .Wk]IFʠrPRc k1E~lhE{$BHr$f'BiKRf'W-ثiWˇrٜBp׫ -QR!VD<%sebݑMv/4M<}HpU:|k(`J[l9o*D-CT?v'H Q}gJWBJd%sebѨ4 P;!(=χ: )FTbY^3Bpݷ5'.{1`p[ ;ĂISUUh} *ǨQ|}?UfW,*ګ -ARNJ<{:tMl9:_M,v0LU)DZ[JjU.3ݍ^U,t7BBihhe}^Zj bT3HL!BaA4 -|r:0 4~7Ḅd{mzq,bJ*Y{U!Ȱ"Ey8Bpsr8f[paSK$fpRhc *ϣk/CbZVL+WDqta|(Q0ω-ho"D 8-4g7Ϸv{ 6vV; ^U/F;`jpf[ ߴHg%.{ \b:)082ʽcGA!P2\&٭v2iOКTG>DRŮOriEbgH(`J[~;obdvDdD:Jl7b& *D2 -@8&1@Fm+rzPnnh(}^Gm$mKKv9l"uFҡ NC]{38,-^3D%,@RPN_H٭pS,`H!Г׻^imĭNȨvZ{_1jKZ)^3nz[MfӮλ{ʾO hE?Bp܁}oC?مeYpendstream -endobj -527 0 obj << -/Type /Page -/Contents 528 0 R -/Resources 526 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 486 0 R -/Annots [ 529 0 R 530 0 R 531 0 R 532 0 R 533 0 R 534 0 R 535 0 R 536 0 R 537 0 R 538 0 R 539 0 R 540 0 R 541 0 R 542 0 R 543 0 R 544 0 R 545 0 R 546 0 R 547 0 R 548 0 R 549 0 R 550 0 R 551 0 R 552 0 R 553 0 R 554 0 R 555 0 R 556 0 R 557 0 R 558 0 R 559 0 R 560 0 R 561 0 R 562 0 R 563 0 R 564 0 R ] ->> endobj -529 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 728.8762 227.9221 737.7228] -/Subtype /Link -/A << /S /GoTo /D (section.6.7) >> ->> endobj -530 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 711.0772 271.2488 719.9239] -/Subtype /Link -/A << /S /GoTo /D (section.6.8) >> ->> endobj -531 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 693.1587 216.0265 702.1249] -/Subtype /Link -/A << /S /GoTo /D (section.6.9) >> ->> endobj -532 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 673.422 267.4728 684.326] -/Subtype /Link -/A << /S /GoTo /D (section.6.10) >> ->> endobj -533 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 657.6804 259.752 666.527] -/Subtype /Link -/A << /S /GoTo /D (section.6.11) >> ->> endobj -534 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 637.8241 246.4723 648.7281] -/Subtype /Link -/A << /S /GoTo /D (section.6.12) >> ->> endobj -535 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 620.0252 262.7911 630.9292] -/Subtype /Link -/A << /S /GoTo /D (section.6.13) >> ->> endobj -536 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 604.164 207.7177 613.1302] -/Subtype /Link -/A << /S /GoTo /D (section.6.14) >> ->> endobj -537 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 584.4273 181.9047 595.3313] -/Subtype /Link -/A << /S /GoTo /D (section.6.15) >> ->> endobj -538 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 568.5661 189.8946 577.5323] -/Subtype /Link -/A << /S /GoTo /D (section.6.16) >> ->> endobj -539 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 548.8294 208.7238 559.7334] -/Subtype /Link -/A << /S /GoTo /D (section.6.17) >> ->> endobj -540 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 531.0305 280.7632 541.9344] -/Subtype /Link -/A << /S /GoTo /D (section.6.18) >> ->> endobj -541 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 515.1692 183.21 524.1355] -/Subtype /Link -/A << /S /GoTo /D (section.6.19) >> ->> endobj -542 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 497.4899 212.9779 506.3366] -/Subtype /Link -/A << /S /GoTo /D (section.6.20) >> ->> endobj -543 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 479.691 180.2909 488.5376] -/Subtype /Link -/A << /S /GoTo /D (section.6.21) >> ->> endobj -544 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 460.552 179.1154 470.7387] -/Subtype /Link -/A << /S /GoTo /D (section.6.22) >> ->> endobj -545 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 444.0931 171.4939 452.9397] -/Subtype /Link -/A << /S /GoTo /D (section.6.23) >> ->> endobj -546 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 426.2941 173.5465 435.1408] -/Subtype /Link -/A << /S /GoTo /D (section.6.24) >> ->> endobj -547 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 397.8143 270.4022 406.7905] -/Subtype /Link -/A << /S /GoTo /D (chapter.7) >> ->> endobj -548 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 377.978 245.0472 388.882] -/Subtype /Link -/A << /S /GoTo /D (section.7.1) >> ->> endobj -549 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 361.1553 269.3059 371.083] -/Subtype /Link -/A << /S /GoTo /D (section.7.2) >> ->> endobj -550 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 342.3801 255.0196 353.2841] -/Subtype /Link -/A << /S /GoTo /D (section.7.3) >> ->> endobj -551 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 324.5812 241.7395 335.4851] -/Subtype /Link -/A << /S /GoTo /D (section.7.4) >> ->> endobj -552 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 307.7585 253.914 317.6862] -/Subtype /Link -/A << /S /GoTo /D (section.7.5) >> ->> endobj -553 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 288.9833 221.2568 299.8872] -/Subtype /Link -/A << /S /GoTo /D (section.7.6) >> ->> endobj -554 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 271.1844 239.3191 282.0883] -/Subtype /Link -/A << /S /GoTo /D (section.7.7) >> ->> endobj -555 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 253.3854 205.765 264.2894] -/Subtype /Link -/A << /S /GoTo /D (section.7.8) >> ->> endobj -556 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 235.5865 240.6335 246.4904] -/Subtype /Link -/A << /S /GoTo /D (section.7.9) >> ->> endobj -557 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 218.7638 248.3744 228.6915] -/Subtype /Link -/A << /S /GoTo /D (section.7.10) >> ->> endobj -558 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 202.0459 219.0448 210.8925] -/Subtype /Link -/A << /S /GoTo /D (section.7.11) >> ->> endobj -559 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 182.1897 235.0949 193.0936] -/Subtype /Link -/A << /S /GoTo /D (section.7.12) >> ->> endobj -560 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 164.3907 250.5866 175.2947] -/Subtype /Link -/A << /S /GoTo /D (section.7.13) >> ->> endobj -561 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 146.5918 246.1633 157.4957] -/Subtype /Link -/A << /S /GoTo /D (section.7.14) >> ->> endobj -562 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 128.7928 261.6649 139.6968] -/Subtype /Link -/A << /S /GoTo /D (section.7.15) >> ->> endobj -563 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 110.9939 273.8294 121.8978] -/Subtype /Link -/A << /S /GoTo /D (section.7.16) >> ->> endobj -564 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 93.195 233.4407 104.0989] -/Subtype /Link -/A << /S /GoTo /D (section.7.17) >> ->> endobj -526 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -567 0 obj << -/Length 2549 -/Filter /FlateDecode ->> -stream -x]s+xi_G.&L6Lfǖ+Me˕l  -^ٵl{ΫHlF Y?^OW?ϯRwW?Rd$羂$HPBͯw?|添 'IC-=_p:xIկfc|ˆ-1y >^+qO:8 ٬r{Q pn_;TY ^BD߬/Ow9ެe}vi?i^&BE($DC*$ZDEܸ:䠁H8l( 1oPDPEB)|<Z&A4I^&!d -򲒃! oP081 -$Mڽ@WULRi匍].B0@!bVqK捆RI$q8$ώ@(xd^?~s$'ÍNm; 7%41UĭWUGRbܠP"n`&Y-.v5T6vlOˍ3*⚪&*t7.aHj9MD́O!FTPTEuͱjR6]P|E0V E~3EaFr$g`hϳVIzUe8\b 1@,O掉 F8Lvk$˰C5$#`Y-Gbq -7DʐvT*%ԝLZ$ -fxyfU*f"0e!o.X EY A0ԯc5"4bZ]P|C0ðI!1 *)aNCRڤ&rU+UQ&-ǖrm~NQv)j*)߹,8a$TٕiR5}BEزZv o(]eJS!pPyIB`x2>2 {⏉iR#9aG pPD80VE~scܮ'k#^/R7Zm¨gTf-ʼy*A oPD70xo.oDڅcm|"vjqof8c׋` 'sYV^d`؂@vm`S3EzUsmdFj9抗B0MEj *Ϝ2il aI _;.72>"}`^Y-G_q'7wȓ 1F+D*tw Ǔ7` qu6ϑT{^; mpBF8dZohAT64Z&m^dWU@-@U{Þ7FGB9GFZoHJ]VNx !8 Juar"`4yYєuL X]҉%uNP8,5(@L-C ̀!Eaqچ:b\|ۆD -}+oFݳs6٤;PfOS{?GߛÃe/s9WeQ@{냿j~?{ /SvZSqendstream -endobj -566 0 obj << -/Type /Page -/Contents 567 0 R -/Resources 565 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 486 0 R -/Annots [ 569 0 R 570 0 R 571 0 R 572 0 R 573 0 R 574 0 R 575 0 R 576 0 R 577 0 R 578 0 R 579 0 R 580 0 R 581 0 R 582 0 R 583 0 R 584 0 R 585 0 R 586 0 R 587 0 R 588 0 R 589 0 R 590 0 R 591 0 R 592 0 R 593 0 R 594 0 R 595 0 R 596 0 R 597 0 R 598 0 R 599 0 R 600 0 R 601 0 R 602 0 R 603 0 R 604 0 R ] ->> endobj -569 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 726.8189 253.9141 737.7228] -/Subtype /Link -/A << /S /GoTo /D (section.7.18) >> ->> endobj -570 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 709.0199 255.0202 719.9239] -/Subtype /Link -/A << /S /GoTo /D (section.7.19) >> ->> endobj -571 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 691.221 256.6839 702.1249] -/Subtype /Link -/A << /S /GoTo /D (section.7.20) >> ->> endobj -572 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 674.3983 259.9907 684.326] -/Subtype /Link -/A << /S /GoTo /D (section.7.21) >> ->> endobj -573 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 646.9995 222.7212 655.9757] -/Subtype /Link -/A << /S /GoTo /D (chapter.8) >> ->> endobj -574 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 627.1632 313.2008 638.0671] -/Subtype /Link -/A << /S /GoTo /D (section.8.1) >> ->> endobj -575 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 609.3643 313.7588 620.2682] -/Subtype /Link -/A << /S /GoTo /D (section.8.2) >> ->> endobj -576 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 591.5653 268.479 602.4693] -/Subtype /Link -/A << /S /GoTo /D (section.8.3) >> ->> endobj -577 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 573.7664 269.0369 584.6703] -/Subtype /Link -/A << /S /GoTo /D (section.8.4) >> ->> endobj -578 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 555.9674 259.1837 566.8714] -/Subtype /Link -/A << /S /GoTo /D (section.8.5) >> ->> endobj -579 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 538.1685 259.7417 549.0724] -/Subtype /Link -/A << /S /GoTo /D (section.8.6) >> ->> endobj -580 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 520.3696 266.3666 531.2735] -/Subtype /Link -/A << /S /GoTo /D (section.8.7) >> ->> endobj -581 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 502.5706 266.9246 513.4746] -/Subtype /Link -/A << /S /GoTo /D (section.8.8) >> ->> endobj -582 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 484.7717 274.6654 495.6756] -/Subtype /Link -/A << /S /GoTo /D (section.8.9) >> ->> endobj -583 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 466.9727 275.2234 477.8767] -/Subtype /Link -/A << /S /GoTo /D (section.8.10) >> ->> endobj -584 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 449.1738 297.8981 460.0777] -/Subtype /Link -/A << /S /GoTo /D (section.8.11) >> ->> endobj -585 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 431.3749 298.4561 442.2788] -/Subtype /Link -/A << /S /GoTo /D (section.8.12) >> ->> endobj -586 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 413.5759 297.1911 424.4798] -/Subtype /Link -/A << /S /GoTo /D (section.8.13) >> ->> endobj -587 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 395.777 297.7491 406.6809] -/Subtype /Link -/A << /S /GoTo /D (section.8.14) >> ->> endobj -588 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 377.978 281.6994 388.882] -/Subtype /Link -/A << /S /GoTo /D (section.8.15) >> ->> endobj -589 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 362.2364 234.4271 371.083] -/Subtype /Link -/A << /S /GoTo /D (section.8.16) >> ->> endobj -590 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 344.4374 234.985 353.2841] -/Subtype /Link -/A << /S /GoTo /D (section.8.17) >> ->> endobj -591 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 324.5812 264.1452 335.4851] -/Subtype /Link -/A << /S /GoTo /D (section.8.18) >> ->> endobj -592 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 306.7823 249.2113 317.6862] -/Subtype /Link -/A << /S /GoTo /D (section.8.19) >> ->> endobj -593 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 288.9833 219.8818 299.8872] -/Subtype /Link -/A << /S /GoTo /D (section.8.20) >> ->> endobj -594 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 271.1844 235.9316 282.0883] -/Subtype /Link -/A << /S /GoTo /D (section.8.21) >> ->> endobj -595 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 253.3854 220.4398 264.2894] -/Subtype /Link -/A << /S /GoTo /D (section.8.22) >> ->> endobj -596 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 235.5865 232.6138 246.4904] -/Subtype /Link -/A << /S /GoTo /D (section.8.23) >> ->> endobj -597 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 217.7875 233.1718 228.6915] -/Subtype /Link -/A << /S /GoTo /D (section.8.24) >> ->> endobj -598 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 199.9886 263.0497 210.8925] -/Subtype /Link -/A << /S /GoTo /D (section.8.25) >> ->> endobj -599 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 182.1897 263.6077 193.0936] -/Subtype /Link -/A << /S /GoTo /D (section.8.26) >> ->> endobj -600 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 164.3907 245.9038 175.2947] -/Subtype /Link -/A << /S /GoTo /D (section.8.27) >> ->> endobj -601 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 146.5918 224.8631 157.4957] -/Subtype /Link -/A << /S /GoTo /D (section.8.28) >> ->> endobj -602 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 128.7928 225.4211 139.6968] -/Subtype /Link -/A << /S /GoTo /D (section.8.29) >> ->> endobj -603 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 110.9939 247.5479 121.8978] -/Subtype /Link -/A << /S /GoTo /D (section.8.30) >> ->> endobj -604 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 93.195 242.5666 104.0989] -/Subtype /Link -/A << /S /GoTo /D (section.8.31) >> ->> endobj -568 0 obj << -/D [566 0 R /XYZ 90 757.9346 null] ->> endobj -565 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -607 0 obj << -/Length 1649 -/Filter /FlateDecode ->> -stream -x]o6+x_7^nkX+!uڀc{Ӵ~HII&wA`;~u+GƆ w>?~??'?blSh~DPKF|ZM):805Fr_˷y#X\QɇX+o&sSI`?0t7֓8ܙRa"17"sмlgj֟([6Y.|#TF`xTLܬ92g)lJX=UL2p|~<erI65o8G#)*- *0 L3QXJ/*f234rs$PIzj$<&-odo+iOap;UWv$v.pw`8ptIb5l s[8ؘp^j60W6o5ɐ5l]o񛕷{ۣs>_J^0ΌNt[o?כ?xkQ+ 6 -endstream -endobj -606 0 obj << -/Type /Page -/Contents 607 0 R -/Resources 605 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 486 0 R -/Annots [ 609 0 R 610 0 R 611 0 R 612 0 R 613 0 R 614 0 R 615 0 R 616 0 R 617 0 R 618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R 628 0 R ] ->> endobj -609 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 726.8189 243.1246 737.7228] -/Subtype /Link -/A << /S /GoTo /D (section.8.32) >> ->> endobj -610 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 709.1945 238.1532 720.0984] -/Subtype /Link -/A << /S /GoTo /D (section.8.33) >> ->> endobj -611 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 691.5701 251.4234 702.4741] -/Subtype /Link -/A << /S /GoTo /D (section.8.34) >> ->> endobj -612 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 664.1176 244.3102 674.9967] -/Subtype /Link -/A << /S /GoTo /D (chapter.9) >> ->> endobj -613 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 646.3587 159.559 657.2627] -/Subtype /Link -/A << /S /GoTo /D (section.9.1) >> ->> endobj -614 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 628.7344 160.117 639.6383] -/Subtype /Link -/A << /S /GoTo /D (section.9.2) >> ->> endobj -615 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 611.11 247.3986 622.0139] -/Subtype /Link -/A << /S /GoTo /D (section.9.3) >> ->> endobj -616 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 593.4856 260.1307 604.3896] -/Subtype /Link -/A << /S /GoTo /D (section.9.4) >> ->> endobj -617 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 577.799 182.1539 586.7652] -/Subtype /Link -/A << /S /GoTo /D (section.9.5) >> ->> endobj -618 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 560.1746 182.7119 569.1408] -/Subtype /Link -/A << /S /GoTo /D (section.9.6) >> ->> endobj -619 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 542.5502 159.4692 551.5165] -/Subtype /Link -/A << /S /GoTo /D (section.9.7) >> ->> endobj -620 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 524.9258 160.0272 533.8921] -/Subtype /Link -/A << /S /GoTo /D (section.9.8) >> ->> endobj -621 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 505.3638 155.1453 516.2677] -/Subtype /Link -/A << /S /GoTo /D (section.9.9) >> ->> endobj -622 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 487.7394 155.7033 498.6434] -/Subtype /Link -/A << /S /GoTo /D (section.9.10) >> ->> endobj -623 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 472.0527 162.8862 481.019] -/Subtype /Link -/A << /S /GoTo /D (section.9.11) >> ->> endobj -624 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 454.4284 163.4442 463.3946] -/Subtype /Link -/A << /S /GoTo /D (section.9.12) >> ->> endobj -625 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 434.8663 192.7639 445.7703] -/Subtype /Link -/A << /S /GoTo /D (section.9.13) >> ->> endobj -626 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 417.242 170.0795 428.1459] -/Subtype /Link -/A << /S /GoTo /D (section.9.14) >> ->> endobj -627 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 401.5553 174.5026 410.5215] -/Subtype /Link -/A << /S /GoTo /D (section.9.15) >> ->> endobj -628 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.9477 383.9309 175.0605 392.8971] -/Subtype /Link -/A << /S /GoTo /D (section.9.16) >> ->> endobj -608 0 obj << -/D [606 0 R /XYZ 90 757.9346 null] ->> endobj -605 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -631 0 obj << -/Length 2360 -/Filter /FlateDecode ->> -stream -xڵ]۸=6i%4+ ݢMdՇ+JPliA"@L ,07)$QRś~6GJH]".7_=&ҍ`ahx@JHcSvM DĶ|ǿ&:x(TZ(wdyadnx5yNCS ᴓPy7=jˬ~r<=-Π"w  nƜN#ˌɘz1Ț6kJjqBLeqX&No( S vu BztE՗vBs/\a*([mq]Vۅ) -7EtXK욣G=G4WhA2,+e}33 -VXn欗ufB_kC$F@F#juhis|]("6sKu$#Yq~O ܔ}UCy"H6sN RQu30Uѽ2tBC?QQ!EW^_c]rf,̹/2bR0m(p PZi¿'. -$ *>#kK{Ӕ`@,oM$I3 C^0=J">i[][4ʫZ^i2! UUG`!%2u-71$do|PmXOz"`do{ItQRW6$և/"&bmMXwQоE='ZuƶCGN~fsDg8YQ14ݥ=%BfE&"YWnh8SZ@ b=M{k?Vu8Y0ȍ\44Y:n娌mqWwqoxRT~.;Ӕ} -{[7vS~حK]-APm5.v~;d9K|L1tFp7zo%.ӌ3' a%ز:H ~GpN:1#߂D{~ZEXrvqXؕ}oWǫQMO5U?mJQ%??.+endstream -endobj -630 0 obj << -/Type /Page -/Contents 631 0 R -/Resources 629 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 648 0 R -/Annots [ 633 0 R 637 0 R 638 0 R 639 0 R 640 0 R 641 0 R 642 0 R 643 0 R 644 0 R 645 0 R 646 0 R ] ->> endobj -633 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [171.6432 525.9374 324.8465 548.2835] -/Subtype/Link/A<> ->> endobj -637 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [243.7125 430.2503 420.8261 441.1542] -/Subtype/Link/A<> ->> endobj -638 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 390.6135 195.8719 413.5822] -/Subtype /Link -/A << /S /GoTo /D (a00143) >> ->> endobj -639 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 378.6583 251.5126 389.5623] -/Subtype /Link -/A << /S /GoTo /D (a00153) >> ->> endobj -640 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 366.7032 241.5402 377.6071] -/Subtype /Link -/A << /S /GoTo /D (a00144) >> ->> endobj -641 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 356.8053 199.199 365.6519] -/Subtype /Link -/A << /S /GoTo /D (a00145) >> ->> endobj -642 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 342.7928 199.7971 353.6968] -/Subtype /Link -/A << /S /GoTo /D (a00146) >> ->> endobj -643 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [217.1719 342.7928 346.0872 353.6968] -/Subtype /Link -/A << /S /GoTo /D (a00149) >> ->> endobj -644 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 330.8377 297.0202 341.7416] -/Subtype /Link -/A << /S /GoTo /D (a00147) >> ->> endobj -645 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [377.3768 330.8377 448.1464 341.7416] -/Subtype /Link -/A << /S /GoTo /D (a00158) >> ->> endobj -646 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.6908 318.8825 181.4861 329.7864] -/Subtype /Link -/A << /S /GoTo /D (a00142) >> ->> endobj -6 0 obj << -/D [630 0 R /XYZ 90 739.9346 null] ->> endobj -632 0 obj << -/D [630 0 R /XYZ 90 553.9527 null] ->> endobj -647 0 obj << -/D [630 0 R /XYZ 90 307.8837 null] ->> endobj -10 0 obj << -/D [630 0 R /XYZ 90 301.139 null] ->> endobj -629 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -660 0 obj << -/Length 3153 -/Filter /FlateDecode ->> -stream -xڥZYF~_1D -o':o<ٗ$5C&8~:ͪ(ßy(/;|EM p Y$g8o` L6}/Wwϋ?~{0,ab~û?A}gx{?˂. -BR}GmSwBpnSכYy*#n SdNB|2 i 6_+~nvbz,e7խEރGe/2q+R ilfM8cc'vE- ʋ~KDj%Dݚ䬬+ O-_GоgkOg0mZ-Q`*W9"[.']I0NRݭ-_;c""?Z[o3=#tF@ND!X*Bؼz,\b5"6602Q83{vJ6!ؘv&M.lS0zt|Zk)[{p4'\ d7;3igZb[^;離)Yq -6x2}@L #مn~yJP͵y+M+FR74JÇ@)O;yyA-mmzwU42C|m'z-va+*eM|!}S$’؅"[Y@7~5CވB#7`$pw0 }dAOFgqm),7xpms|0y( -m*TԗU 6*^X -y{|bX+q;}:>Z -fkK8`+D|dBtNia|xo}8 @Em̗:3U9]r/CA7J*gQhJb !z7/\F<^Pe$/9:\;b31xc?{8ȉ^Vg'2V4}*Ŗ%xⒷ'I0Yʕ]M5V|I0:w3⻯DId0K#bۦ,#6W}o4f"*O(AFC0'Dw <؜?!HoeJƴ{~^DC=Ev nxZwb ;6qH DS v!gR86b - - -=u^pfVsS1e;.ӳ_Yѧ3OU[E>ޞghfڅT3Ui\/[DW]2&`ݵ).'@2*lm,D¥^fh텐c,U,+P P$ꇁ$Xħe %n4Kd90 E Un՚%Ov [(|S/i8ϚB-1h:r -<7q6R,euygq=a Oy'9(5(TH>/'hԜ$`]d>V1`mrHV-\U_@=D*!KjW^xuT:^쩮]TJ1W-}lOHK]pRӅ hpj%x1y༒yr71ѭG+ !ѧm;-@<'wS!A.dG_3X(&­v,mww-Y^/ה\&M)(73o`/į%ԁP~g2H7$PTYRz&ƥ6o-NK %a3L]OR.k1OjY9#;ArE@İAwTDQ+Bр'`֚o.^Js0h<@d}|q&k-L IB]bեV6* dքd/ztWN8Ji-ykZPȋdOw~xQ9HLyIdx`\u[}^&C[lͺV A:u۫x5sXM_؍Wvn͵i{9Z Ֆ t>V}JNV,zbѬIB|)[l؄`BKJxVWuÉmʟĉ,ANP2(H: faa<lͼX$ٓD-J95 Ϳa5I֞qGkg`R4HR2N U_G@@]K#;FΦ}XfJDN6(3fVvGΑ$9L_iͽ)L6JJce,ىlR4R5o|K\E6)CȡnEs2RC@+0hK׈>GD鬿Ow5׈ -ȔpF[U S D;B;SΌ@h8qxD3TPІ܌#xk%pJOWk;̣tBּ~޹G(|5ɸkn{㚴@MٹR[r< 3PBIP;'3ܜPt7ei&y4iODXlR5R禹u?n,.P6>1fs"=z1 QV "G8Oq9ptLSs cKݲ:0.[afO}跮nk8q)'Yf] ֦;FhW!`f!:_ 5TʧV~O0)_}/Ga|hA\0 %+TZyI2_ڲj߹'<Į%_aޯ1Kp]ү*qD?B%YkT߳+:MV|Fu(oN-6Eq~jޏ? ~'9X)a0JaJ L$gD ȎwG>Ws nk{?'o%j0dBi{/ hz]*~q脋endstream -endobj -659 0 obj << -/Type /Page -/Contents 660 0 R -/Resources 658 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 648 0 R ->> endobj -661 0 obj << -/D [659 0 R /XYZ 406.9776 658.2409 null] ->> endobj -14 0 obj << -/D [659 0 R /XYZ 90 637.7268 null] ->> endobj -662 0 obj << -/D [659 0 R /XYZ 230.4521 230.3912 null] ->> endobj -18 0 obj << -/D [659 0 R /XYZ 90 209.8771 null] ->> endobj -658 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -665 0 obj << -/Length 3063 -/Filter /FlateDecode ->> -stream -xڥ]6}~E?24᳁%{h#KFCpO܇f~՗Ntժr\U._Puw?ޅ|7?DšSt:<)(^'( 0K3jhx׫? xWc{,H#/񧻿?|i| -gpݟ?.":twII{?f:@MxOx#nӌx?ƧWϵ>߇Fgޥ4> }zSO-Ro(^n4RuE3[A9g!qpex_f+ Uqj$7$DAeі詭Y1OIZO-+*JQq-q|_)j}"6j?^U9W{UҴ-{ܻ>BũOBp5(x2BUWJd &"5͈Iz %W^mS,ΰ/P`+53]8AIӏ^p֕<(9E *{3pzȠd.$,dIQ#=>)Mk,3 z5`z̀vUٶJ`YgV惍pg93% ]7OQ`Ma@Id\|!+yϼ֩ -L1=4Eڥ/@^T8r@gZ+sPq0;=c$LWA z84W^@Fx ɤAmǨ8!,VΎA1] 1`_xW# bpEnqP,g/g/NSNiY0,ݰoڐafO~ɆmذXqC KϼUUNf?MG(C+O]ssL/le0Uٲbp%-ĉHȚ,=l\yV7Džaao#w Gϝ2vxNCkjexޙ°”鮭B'Ez3s~p7OfOX -3Öʬ0`IL) Y{(SH4*ǩ'긅x.ZcSMm9ܕ \zx#Y]|S[8J}>;,&Tk獕0 7p9fgOcC#L kv~(ᢪfڇEѭS1/ L摙1`QF]J:T sEF37vUά˱\ -I*kD`=XKٽx'!qScsdP" ά5ZmGB;`Xv828~T}7~r*yb\ďh;AU-@59'kCtyyf)=ϝG恢=Hr. 6BN?hxu}MFv<dW〥9KY9X8?sYnsNn$o%w>]SM*Y? dW.Yז.V[_~M7|<3tW`*EE-׏д;ǧ͝&U$FCIsa6FjhH8}qK|i%EWwʷ4FuO- zKٿd]#qt|jFۘ*vɢ ম'+(%+iNCS\fU - =B*.] c BJX/[fGM[%*ZJl6rCrdb -+9)cc&`HFᯤt~܃HVvJ'A]v:`iSuPyvj J۾MU뷴,JwExҨ6 iB?cY:bK(PRQd-/(_q`#n?'[6}T\'ALSٗ\>[+mW%^[" ~`IݧP㣤FX8LO* ;}@.fwKK`Vs׷9sŎm}t`͵ iM ( ἰB=J~~"6!e`3wXRklw}62T q:W c@:ЌbBOu4Te;.\zSS *jFyBZN+`r3ܒRvx#\B*yrB5q.鋭X>>J`8W8pb m"X#\adU365< 0} y+t̒Tj1v 7C8}ׇXu`lہ݉pTl(N݋~b.f7l2fpLvGjquH.&_!w%q-W|tD Wʭ-ܥ-laIf\з-=;qOgG}3 XY}K2K2!F4]$0Ъl뛈0gF=%F%CN!QBGUhfb *$--~Ì%siyt~dx)ExJO%#hN~Źa/Go6d?2&FQ(N<"=a'}A|lo+[_=|!endstream -endobj -664 0 obj << -/Type /Page -/Contents 665 0 R -/Resources 663 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 648 0 R -/Annots [ 666 0 R 667 0 R 671 0 R 672 0 R 675 0 R ] ->> endobj -666 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [301.193 726.8189 348.017 737.7228] -/Subtype /Link -/A << /S /GoTo /D (a00146_ga4360412ee9350fba725f98a137169fe) >> ->> endobj -667 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [328.2665 649.4187 387.2547 660.3226] -/Subtype /Link -/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> ->> endobj -671 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [214.0892 410.0069 279.1746 420.9108] -/Subtype /Link -/A << /S /GoTo /D (a00150_g2addf34c7d457c1a7899a7e2171ef1e9) >> ->> endobj -672 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [296.7031 410.0069 366.2118 420.9108] -/Subtype /Link -/A << /S /GoTo /D (a00150_g85b65e38aa74eba18979156f97a94a87) >> ->> endobj -675 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [156.7987 273.8799 207.4884 284.7838] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6832e4d2d046536b6472f7ac92340f68) >> ->> endobj -668 0 obj << -/D [664 0 R /XYZ 271.0497 628.6614 null] ->> endobj -22 0 obj << -/D [664 0 R /XYZ 90 610.6547 null] ->> endobj -669 0 obj << -/D [664 0 R /XYZ 247.6771 537.3319 null] ->> endobj -670 0 obj << -/D [664 0 R /XYZ 90 520.446 null] ->> endobj -673 0 obj << -/D [664 0 R /XYZ 418.9827 401.2048 null] ->> endobj -674 0 obj << -/D [664 0 R /XYZ 90 384.319 null] ->> endobj -676 0 obj << -/D [664 0 R /XYZ 244.6786 277.033 null] ->> endobj -26 0 obj << -/D [664 0 R /XYZ 90 259.0263 null] ->> endobj -663 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -684 0 obj << -/Length 3355 -/Filter /FlateDecode ->> -stream -xڥۮ6|'UQwe[@lYCYm!ғӯ߹Q[IXAp8΍΃e.7 xW4 _ `Dx?lYǻQ=9~;O??r駏?v?O>4-'DAp/J 4=CsU!۩5%T-|&,T~Ui̹=7)t ,t q>U^9s[|`몽9U狖&LZ3Q 6c/54qP͢%2Qc9 -9h^zxF9LGJMW o\#ĥ>X$ևR]yÅiԵz{߳zӴ9"xBNB!] vE3λJtukE "#y2 < ɿV0BR9uy{҅rMJ[2M2-k2,MMzcqaǃ2tC/E2Bah/Rip2 85AXY1ʱC:[~?^X=:;O8q$=!ikGt12(ı#kp’<<W4p#ic 9`q8tJn<4u6-{MUDY}/WKg`Pp3YA3ö dm tcۡ;dM! ʮC6jJ<₼jebUX - ˃>$ IaDh|:f6Z'C}hB[~<"< Km zBTݷ-+xhTV`&JRԐj9XyRkQ\{N:|#wFXiRLb?RӰ6ZKQO=\:<6_iٍɒ=)i^͕@- csdeˀAR8\jeh,y S@/F(h}{~,%)łx[*)5߮{dװT\I*:ӛ8co>Ty\nѕύ{D6;YsMB@S"x!C4 x -ʴ~|H@q"1yNGXn֯@Nn!`8s7EA"`E[bQLgvd7=+ `-1 ɠlz%赼Ol!yx#+v%:}|'ari4.?Uka!Ҹ$@o^0| D.`l 8뼖 f}N/e<=$(qa5& Q0ܲ>$8<){.9O9?t9~z>KxmSg - -*hIz< 25#KmH H9 =,hT8v0 6W,aupf.KnQ*IYBhB }ZpM,2oOx^t]>4qڒM,=?dw[(u$-qk6V:= 0Kl*_\*>t -+Go|4XVFMS9=Dr?yzX޾3Mpęm_Zy=#C`\ΰ0!R_<='mxx({[>lq׆@'Ra;YTޅ` O;m!k= v BVkm7e >sYfBTX_bв,|o(*7p%LW}ЂSa<^v7>F^`I -i>Idġ?c>6}l kW!i4o loQ)x;] =Š']V&# `LYξĈaEr׎YVȣG ֵJMpPJV39:RU` BPJWvA7lax>!lvh ǫ û yJ|o J\ l}i|,!ji#yVb iڕɍ u~IF-NEgS>^.q p55M*.Κߍ^q+hpRzP/YwVRnHU^ݭ(W|<Ȱ*/7Ou)Y&ŋeExG{6~EG(_k?x{=/s ÞMBx˥wYJmhԦ2endstream -endobj -683 0 obj << -/Type /Page -/Contents 684 0 R -/Resources 682 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 648 0 R -/Annots [ 686 0 R 687 0 R ] ->> endobj -686 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 263.5952 188.5792 286.564] -/Subtype /Link -/A << /S /GoTo /D (a00158) >> ->> endobj -687 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 253.6974 159.0703 262.544] -/Subtype /Link -/A << /S /GoTo /D (a00142) >> ->> endobj -685 0 obj << -/D [683 0 R /XYZ 412.7165 467.575 null] ->> endobj -30 0 obj << -/D [683 0 R /XYZ 90 446.1709 null] ->> endobj -688 0 obj << -/D [683 0 R /XYZ 90 242.3602 null] ->> endobj -689 0 obj << -/D [683 0 R /XYZ 90 236.5671 null] ->> endobj -682 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -692 0 obj << -/Length 3453 -/Filter /FlateDecode ->> -stream -xڥk -_*"zCnE>A K\[9Yrf;/ʒ]83)?z8T&?y#ez)wMꦑ6Gn|?9mw*w[:KUY_65ڭ8ͱ {>f?޻{DA۟}؏L ϡ|d鷻~6͝4 7Oi6@iGuݿG:!<=Rm<'ps/k^ԟ^ ۚ߆5w2eI NFMY-3}7 Co;];w v%+8Ga|*!}o -Y߳973/+YiILVȎw{}#5!M=U(r -S:p] 8h^Ʀq7umrꝎ>wUl -S%OgGw*NeB$m1t0Xry>yO<. PWVkxHdg Il/YO`egb4I#흥 tZ)W]S CG6ZHzXTV-cbK0JLHX$l N<2i)Dz*.K?Jᅵ6 Jsy&|ۧ:N9 M'd `.&[ AMax4 CGA cL0KmkY211A6wUנ%!ЭY/M WNHKXQxgF 2#H0hpZCV1M\悡jNP!KkK:dóR^#][K"،4(] :3ORؤ4)%aFFb lKiT|ȷ!Q4\ s6ʖ%GZ`%8ykؔ(G)ksIxZ$nfQ:h:4l.ԽP>x\99~Dno~~RpC󔽝 drCgP{\{a b"V1W8Im= n [(~yݷbKԍ0Z0(Gظl|Ƈ".N]%\oi'+2+l`閭7y>_A|b=8XXW/>fz S0qߢewbԃ(Yas+kA: -|8{m# FOeUe 9-?M+F uS 8:d@)WS%xU aN6 S?v J׸$ú4%nfV#_0 (" WAu^SO[?~HL@W}$ Jb%^E}MV?V́<Yڒӥ7 d#^_tCl=pn -悋3X&I<ߛOQI%A(9qb7 -~A0{KSġAX'9bi7^ifBG6IKNDtɌ"|d9Ymn8Z-/be2U![aZj -E)AvW.w'dfʝ^( U Xk7Ee끅\iy_5ynCܫq. xLlxn$ԙ=k$'?:@bh}WIDyfEGs0LqjY?_iW%9iqJB8>cm%nK3~:wîp>V޸i&-)&N] B5W)+n6j/X$p-ڡJc[GWv$R$g: c`3&0ClmkU@Ya8ԽiR7n/߸nYyt!KXd.moLI,gB㼐R͙{(zK4ZK^MJT _ȎjaEυ((W.X7t4ї@>L-\ -+*\pT5:Q_p|0SǨX&f \)%=zy=mK2eRJ?gJgV,M49!c LKж',\ $ SFluu76iXpm}6Sfcqlbr61b%@!+S}>VEFyWH ֊,it6)Jm# +_}pvZ eT* Zؙ]Ā=Z/2~xv衭;y$A?]ƇW=F4R%?RQ([BJԋTycߖ 8O(3ĭ7~~֋OXX~Y0y*- R}o CbCNHJubpvt&t:) ^,HOy^y/Bf X30얕-?݈]s%?#s?>u16 KnΔTK|7o$йx0nyN~4)tcȀ<،E_mmzZ|ՍW=Jc>EZM4։rLZ`(lv J2_ Pd'[]A<[ȗGs`񳷕{endstream -endobj -691 0 obj << -/Type /Page -/Contents 692 0 R -/Resources 690 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 648 0 R -/Annots [ 696 0 R 699 0 R 700 0 R 701 0 R 702 0 R 708 0 R 709 0 R 710 0 R ] ->> endobj -696 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [306.8197 468.5196 380.7619 479.4236] -/Subtype /Link -/A << /S /GoTo /D (a00153_g41aa744caa46913b3b3aedb2a4e78546) >> ->> endobj -699 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [317.8545 359.3516 356.9278 370.2556] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -700 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [437.6571 359.3516 476.7304 370.2556] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -701 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [490.9727 347.3965 513.9963 358.3004] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -702 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 335.4413 110.3636 346.3452] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -708 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [179.7312 226.2733 239.0183 237.1772] -/Subtype /Link -/A << /S /GoTo /D (a00147_g26a14b8dae3f861830af9e7cf1e03725) >> ->> endobj -709 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [490.9727 214.3181 513.9963 225.2221] -/Subtype /Link -/A << /S /GoTo /D (a00147_g1a1bc437c09ddef238abab41d77c3177) >> ->> endobj -710 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 202.3629 126.403 213.2669] -/Subtype /Link -/A << /S /GoTo /D (a00147_g1a1bc437c09ddef238abab41d77c3177) >> ->> endobj -693 0 obj << -/D [691 0 R /XYZ 90 757.9346 null] ->> endobj -694 0 obj << -/D [691 0 R /XYZ 489.8655 533.0201 null] ->> endobj -695 0 obj << -/D [691 0 R /XYZ 90 512.29 null] ->> endobj -697 0 obj << -/D [691 0 R /XYZ 153.1029 423.8521 null] ->> endobj -698 0 obj << -/D [691 0 R /XYZ 90 403.122 null] ->> endobj -706 0 obj << -/D [691 0 R /XYZ 243.1544 290.7737 null] ->> endobj -707 0 obj << -/D [691 0 R /XYZ 90 272.1009 null] ->> endobj -711 0 obj << -/D [691 0 R /XYZ 239.7767 181.6057 null] ->> endobj -712 0 obj << -/D [691 0 R /XYZ 90 160.8756 null] ->> endobj -690 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -719 0 obj << -/Length 3312 -/Filter /FlateDecode ->> -stream -xڥZo6_Sڧ^-@^{hb)Jr,)r83FoӛLm8 3x6㝖-o|m0smal<~k.xؗ[37ow}rOwD:qjST?ݩfiy,3]d8_ k]ە]g›{=m+{8(Hx( Pjj&9S&},˚<`t}X@ K2j'Yؘ'-窥]ԇ%jܘ_b\!MVS -J$:|C?Rr`0Uq)nfkuǯݸpߓ㱁^(5FpS^*B!лd4 Leؤa&=v:aL^%ۻ -)m -LKHnHE*4NsI~Sr%ac( -R.X,g[*xpq1t~̹x#Z;FxQ҅n5IlaQin&Bү$K?<0YH8 fsAƳ -c[F%ћnA.!Ԋj~$^oM?`' 4?;a"̇ @&]jfs׃Sف^ZS*֔xE偶xd@%^yеڗ A+X4`%FRqƇD:c茍GxiџIg%2 I}|'y -clq"TV4|ec2$*|{([CGI=Z)݁_87 } x5Do5b0ހyų +gmEILМ{np=F{d3+# H -pzU/|pL} ~/O猗LVwaSR0sfOv`$2%elHDZ%0!N㻲:Иwcϝd2}RVv(ND!+[-$6dNM70nͬf3}Ko;c 7g$*օ*iHt7N'` >^SΥYi(K"v 9JH`fFa*A.<3*IM5ȍE?~(sΏtDJO5w6mK@~`+a!E'="1x_X=1k-+l=6 )lHS~޺f^,3Z4 $( -/B@OoiaAa&6=X*f&O;BHhf2(r!TbN;+@dH b/}#\/"ЦqX=r\N'̅Q=OC|.E\nH 7s)*qߞ4x -y<cC U5FcUOLPB 5\-U][sK%#N~鄎rWat \hseRm*i)7a%bQUx}F -j/k$|I -r_ڌf\ĖԱqiqNh>4{#t\~l -O{hjL<1AK}B(7)I ?ةLXw8NEtA +_w+?e/^Ҁ(\ׂI /&5҉\+p` ^2> bv'4RT|w'.( 92ءC~|nZ%M Ӹ^ā.E܀/ H2$# -wbTFZsX:˅Bo5G䱮\,dTQT*\+B f=PQg)LL,+wn01rfDzb?ٟ}'Y>___F)'!OGo,uG}sYA-'endstream -endobj -718 0 obj << -/Type /Page -/Contents 719 0 R -/Resources 717 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 648 0 R -/Annots [ 721 0 R 722 0 R 723 0 R 724 0 R 727 0 R 728 0 R 731 0 R 732 0 R 733 0 R 736 0 R 737 0 R 740 0 R ] ->> endobj -721 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [278.2206 726.8189 320.0632 737.7228] -/Subtype /Link -/A << /S /GoTo /D (a00147_gb5fecbc62edd128012cea0f47b57ab9f) >> ->> endobj -722 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [302.4389 697.2393 347.0412 708.1433] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -723 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.3885 697.2393 413.9909 708.1433] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -724 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 631.7943 133.6061 642.6982] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -727 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.8947 525.3067 439.0984 536.2106] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> ->> endobj -728 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [214.3267 495.7271 266.5304 506.6311] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> ->> endobj -731 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [335.0564 365.3292 381.8703 376.2332] -/Subtype /Link -/A << /S /GoTo /D (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) >> ->> endobj -732 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [288.7827 341.4189 335.5968 352.3228] -/Subtype /Link -/A << /S /GoTo /D (a00147_g88d2ccf7cd821f89d9a8df7e3948b56c) >> ->> endobj -733 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.2687 323.7945 419.0639 334.6984] -/Subtype /Link -/A << /S /GoTo /D (a00147_gef6c4140c632b6a406779342cf3b6eb6) >> ->> endobj -736 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [457.7775 229.2621 513.9963 240.166] -/Subtype /Link -/A << /S /GoTo /D (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) >> ->> endobj -737 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [105.8804 217.3069 167.6481 228.2108] -/Subtype /Link -/A << /S /GoTo /D (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) >> ->> endobj -740 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [175.3388 146.6848 217.1815 157.5888] -/Subtype /Link -/A << /S /GoTo /D (a00147_g58bb90796c1cdad3aac2ecf44d87b20e) >> ->> endobj -720 0 obj << -/D [718 0 R /XYZ 90 757.9346 null] ->> endobj -725 0 obj << -/D [718 0 R /XYZ 479.8239 634.9474 null] ->> endobj -726 0 obj << -/D [718 0 R /XYZ 90 616.451 null] ->> endobj -729 0 obj << -/D [718 0 R /XYZ 207.8864 427.1492 null] ->> endobj -730 0 obj << -/D [718 0 R /XYZ 90 408.6528 null] ->> endobj -734 0 obj << -/D [718 0 R /XYZ 237.0374 314.9924 null] ->> endobj -735 0 obj << -/D [718 0 R /XYZ 90 296.496 null] ->> endobj -738 0 obj << -/D [718 0 R /XYZ 299.1932 220.46 null] ->> endobj -739 0 obj << -/D [718 0 R /XYZ 90 201.9636 null] ->> endobj -741 0 obj << -/D [718 0 R /XYZ 507.9991 96.348 null] ->> endobj -717 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -753 0 obj << -/Length 2416 -/Filter /FlateDecode ->> -stream -xڥYm'X|K)ipڵpHrE{g8C-Bp8<r!O.rHm$F,ÍB?o/8OTX; j޾d.Wʊ/녑Y,dTdJx_:o7?y}#bgvLklEղi3gZhlgǥC:ЯK# \>;0֋p8V"S:ibi~OD!*#aSƮ|&ID{ -@HUUԩ/m -226Ƈ' 3>BeyX'ZLs]Y[ͭ6ZdlsÖK;2q{`{%8J꣓aQPZ&€.4ӌ]h~ODH:F3$KS\LbM<3nu[r_Vih;uՁĠD҃ߗ,d)%z /p kH_C. sȝ})r%&*4红*Nc5bѻ,u.b!`gS2 kTP_)Q}ϔ(S CNt纶4Xb:Z;;hE\c86-I~ٽ7ld9Hɚo}&F?޼yRQ:y5r7@5/3*1TruԱ˫&L)Bkq(E\*6qKwr*@KڅC:pxBܹ:<ǎFd:WbXE;TC/́hB/+XhXf"ULUDa#ݱ{ngh#u=u4Mo0ɤq2cI(ӱnRS5#9hD42 |ahCqt mksn25v`,boxBǺÎڤH],`a5K{#6F`hA_;SG[3{!! GI׮=*0s㸐\gI2Uhz7\Ԁ+҉CES텡Ȯq&ݱ-{\ uj⸔4jgJ& cReϿ -' N's -W;Di`\הFdӨQ؋=*䦥 -ɯ=.{]g%)hp&q\v>6gG }wdž2-CJV"^^qϕ+j*KZBKv-0xڱb7.0D09 z>>rꃠlEʦ继V L8ےYT*IBE[iA5䞅j,TӳL>vD|>MAmk#\$rep cud~Pħ2 !!γ&GWV<ՇL~>ܕ \4zn __pB" -G;|ls?ן<WkQu>k~vendstream -endobj -752 0 obj << -/Type /Page -/Contents 753 0 R -/Resources 751 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 770 0 R -/Annots [ 756 0 R 757 0 R 758 0 R 761 0 R 762 0 R 763 0 R 764 0 R 765 0 R 766 0 R ] ->> endobj -756 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [428.3065 701.7853 476.2361 712.6892] -/Subtype /Link -/A << /S /GoTo /D (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) >> ->> endobj -757 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.5367 677.8749 263.2659 688.7789] -/Subtype /Link -/A << /S /GoTo /D (a00147_gdb971fb1525d0c5002f52125b05f3218) >> ->> endobj -758 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [271.5773 648.2954 310.6506 659.1993] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -761 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [351.7077 575.6896 409.0322 586.5935] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> ->> endobj -762 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [354.0182 551.7792 411.3428 562.6832] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> ->> endobj -763 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9277 539.8241 153.001 550.728] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -764 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.3947 510.2445 194.1901 521.1485] -/Subtype /Link -/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> ->> endobj -765 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [237.5384 456.7547 294.863 467.6586] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> ->> endobj -766 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.8254 444.7995 180.6394 455.7034] -/Subtype /Link -/A << /S /GoTo /D (a00147_g88d2ccf7cd821f89d9a8df7e3948b56c) >> ->> endobj -754 0 obj << -/D [752 0 R /XYZ 90 757.9346 null] ->> endobj -755 0 obj << -/D [752 0 R /XYZ 90 739.9346 null] ->> endobj -759 0 obj << -/D [752 0 R /XYZ 150.7616 639.4933 null] ->> endobj -760 0 obj << -/D [752 0 R /XYZ 90 621.4011 null] ->> endobj -767 0 obj << -/D [752 0 R /XYZ 90 253.0714 null] ->> endobj -34 0 obj << -/D [752 0 R /XYZ 90 246.2021 null] ->> endobj -768 0 obj << -/D [752 0 R /XYZ 200.2554 182.9016 null] ->> endobj -769 0 obj << -/D [752 0 R /XYZ 90 162.752 null] ->> endobj -751 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -777 0 obj << -/Length 2990 -/Filter /FlateDecode ->> -stream -xڥ]s6ݿBJ3K$HOnK7yh:Z,N$%8kb$Rgn<b$!E.$ rx.n˅5].9yH-vAhqm2Z^j%5޶ۮ|^~U?KH%p?.~=\lAWa ,YA' DGEI9\gχ ܢ!V%UEMiQf-2x{G]uEW}}R=z%;_W*YuTgUٕšV&ޝ âByb6`Hafk0 _pQ111&65LH)YL'ٹp2Yuc'$&3ͩa}AMY\ݧw_~ͮO-iU+<:KPdBe"Y8Kv75 fR -A,ߒ8D8 Xʼnaq*o?ʶR׷!"#9`sȂXO!6JVmk"8c - ԟ? -WO|ry)ِJ" aq,%S(0X$id⼎C qL3q=yd"WkJMisD*3UHU-C(d!l#Qp񧅼*>Z!&|.ȥKDi[=2D'cIl5xudyOUv䭰AޭD, Η/w$T^xzSC{>uŨ{KIV_tL{Pۺ2 7Fs%Y\x:K~iZ Y.[2~Jwn>3[jkk&itU 5STr΂]iK{:c2(P`QdN$XOל𡁖hpg!i`Tc.Wi` njj`'19q3/MLş i/mآBy?fă/_@ˢ6-3MuyN7†Z H eac(Mif;}ZA[?`Bu7w{턊i >s's.S4&GaadiH[_@X|Ƭg6b*jԊ^+, f\2Pr:N(({1q:A袵1Έ^{FRcrm;hHMaA\f `\5,NU#O]ڤ:nΉ>WVuRBN*%3ߡ+8(~6&@=а1vpmxG(!O- 䔼guD6wz:1G1ӎ3)K;W2N]XsYɼ`)៫N-#){ IHHgM2I69@oP 7vv8ЁN,i,7c=:xȖG,9/VQ6Ahj<\DouRo 6Esxh'\bۓ-,%5 03 iRC_$"R'ܲ.l Pp`8yaKL#mFug#1:|1%Gl%*`ĨB`s102M>bs0o_߼Xʡ \){N#0ȖW@]@@BGO7780 #zc79IXp4 -(2A -鄕f뒎Vi -[yJeIFo傎8PrǜՌ-{OHZ:eK3Zg<#ܾF_R(pO~0CS/$^MjZdSw XoXU 3^ڋ=z~ԳOB$#b>];YѺ:]3?E[%z_3l> endobj -779 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [281.2378 575.7435 329.1674 586.6474] -/Subtype /Link -/A << /S /GoTo /D (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) >> ->> endobj -780 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [302.6467 563.7883 361.9339 574.6922] -/Subtype /Link -/A << /S /GoTo /D (a00147_g26a14b8dae3f861830af9e7cf1e03725) >> ->> endobj -781 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [380.0705 563.7883 432.2742 574.6922] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> ->> endobj -782 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [303.0487 515.9676 369.7779 526.8716] -/Subtype /Link -/A << /S /GoTo /D (a00147_gdb971fb1525d0c5002f52125b05f3218) >> ->> endobj -783 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.0655 515.9676 442.8332 526.8716] -/Subtype /Link -/A << /S /GoTo /D (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) >> ->> endobj -786 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1141 445.5872 173.1874 456.4911] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -778 0 obj << -/D [776 0 R /XYZ 90 757.9346 null] ->> endobj -784 0 obj << -/D [776 0 R /XYZ 444.3276 519.1207 null] ->> endobj -785 0 obj << -/D [776 0 R /XYZ 90 502.5047 null] ->> endobj -775 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -789 0 obj << -/Length 1132 -/Filter /FlateDecode ->> -stream -xڭW{o6ߟBB.fQ+&^,m=C5E t,DW:YᆪHٲv2;E1]FEgѭЂrx0:gKAHg*xA8[fCXNB'l&.qM!(Dߊb)|Х\C?? *j٬cVzk󴌦jeT`5C2F4{INÙTQImVGe.UPF,sfq3)j:Sk"~Bhd965Mĵ؆(eY:S$OpSZ(,(֑ʺUŲKIC~nʵo_* T¤*gne.z(s)T:aۤnA-}uԌdP5ݹJvr֗HFou9&p;Lhvn{=|_'~#D,`z>U=XTxH+!|'Nº2K=!Tq>jMֽWg#M4^}Oӻ[ȷ] >?endstream -endobj -788 0 obj << -/Type /Page -/Contents 789 0 R -/Resources 787 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 770 0 R ->> endobj -790 0 obj << -/D [788 0 R /XYZ 90 757.9346 null] ->> endobj -791 0 obj << -/D [788 0 R /XYZ 90 329.3658 null] ->> endobj -792 0 obj << -/D [788 0 R /XYZ 90 323.8457 null] ->> endobj -793 0 obj << -/D [788 0 R /XYZ 90 84.5604 null] ->> endobj -787 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -796 0 obj << -/Length 2120 -/Filter /FlateDecode ->> -stream -xڭْ_&SSزTDI5$%JC =MO7];U;@ 30R?ӌj}6?tzi$`(D ݂-6G\-oi 7lqafæ=ϲ~{`͌y~ LTO@nnflЂ0%Ui80N.bV,/3?*WV?ŒŅf.*vaឯ^!qD:ؼ}=A,?%IAֺW+sf{OAB)Tu(-/ΞоK#!0Zu -i.uS/!y{hن6~Eםx/3H ^B!K0DcQb6  6[pmc5*aDYb -c -Ԓr,nI舸o -RvF7"0[qd -TBp0,mUGGU!.*'F ݜ$UTZ&kYrT -VZA\7FE]ZZ,βm.a+rW.vּTBFk&)9/%psk{v' 5 2H2 /Lie}Ճ%]wnj5REze=il?s r&`p_#?A; -p,eVs7pa_ -F3;zQ~Et_wş-&?endstream -endobj -795 0 obj << -/Type /Page -/Contents 796 0 R -/Resources 794 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 770 0 R -/Annots [ 799 0 R 800 0 R 801 0 R ] ->> endobj -799 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 292.733 131.9523 303.6369] -/Subtype /Link -/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> ->> endobj -800 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [425.6978 292.733 476.9349 303.6369] -/Subtype /Link -/A << /S /GoTo /D (a00147_g81ac47cee1c18f6aa479044069db7ca3) >> ->> endobj -801 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [155.1347 268.8226 206.3718 279.7266] -/Subtype /Link -/A << /S /GoTo /D (a00147_g81ac47cee1c18f6aa479044069db7ca3) >> ->> endobj -797 0 obj << -/D [795 0 R /XYZ 90 757.9346 null] ->> endobj -798 0 obj << -/D [795 0 R /XYZ 90 739.9346 null] ->> endobj -802 0 obj << -/D [795 0 R /XYZ 207.8662 271.9757 null] ->> endobj -803 0 obj << -/D [795 0 R /XYZ 90 254.2666 null] ->> endobj -794 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -808 0 obj << -/Length 1875 -/Filter /FlateDecode ->> -stream -xڥَ6_G]$e]I@iM ! Dʒ#m %Y{$D\&3+C7VՂcΝ!/~q r8ent엟k=y -*$^VrYȬ z`Gu8~ş=:Psܛ3(2n `_H|Qx`9>UytlIFW O?EW.LwTдuMH - lYF[xT8QhA>gAw*9 r22m%Z͐kn6 Y8š)1I#?~@H|r$u-ks#3Fo1 ^e#KGH@uNf-ۮ.#t6낐HO3}ij!>+ #GXʯ{j7h&BI%܆ZTiUI*j f4y66}leM_0՜wUWd^k

Ml|+`k=Օxnn{wx\虜Zs2益%Et%nu³ E&W-8id6fI>/](RiDoe.:Tx5Y+iI {FZt4L:CKlk0 ΐaf*m<^0e2hO9tL^#%&o<&#4j58+ VqH9[Ě3wxIҶKVg --R%m -mbnӈs_CM3#tUjcCD+61K[ -q֛͎i|e*tT'OY Eiǀ%5\2S ܦE:7_\-`-008[v<}3`018oJf^v)vX;hSv6.TޙJ3^F[Arw3twOYy:tP4ylf ϕy@PC~b9¸2Bu' ތm<]):oU fW?ԊwC;VXJ,oǑ -8o.k:0k-@Ч.RA3VB|4KGűRMC= R)T.N#14PneV*qӈdFW]kq(fS\N<AJ+AGc`iHUVX<TTHgh -c-Ώ0(Z&̨~5%Ls5=vteVͦ+M x0  -Ixg3e -lXE͒`;sne9uN}3&endstream -endobj -807 0 obj << -/Type /Page -/Contents 808 0 R -/Resources 806 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 770 0 R -/Annots [ 810 0 R 811 0 R ] ->> endobj -810 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [283.7538 392.0799 328.3562 402.9838] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -811 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.5337 350.5452 436.3476 361.4491] -/Subtype /Link -/A << /S /GoTo /D (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) >> ->> endobj -809 0 obj << -/D [807 0 R /XYZ 90 757.9346 null] ->> endobj -812 0 obj << -/D [807 0 R /XYZ 437.842 353.6982 null] ->> endobj -813 0 obj << -/D [807 0 R /XYZ 90 337.096 null] ->> endobj -806 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R /F11 705 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -816 0 obj << -/Length 1829 -/Filter /FlateDecode ->> -stream -x]s6~K_|la ЖB -n`.}}$iJ+>_. ̍jRC: q" Bgy>#ͨY`ݳ~^'񓐅Ts/e"R68x.r9 yЏ.]~Z=]l3R_X/fI, & sg `Tc@"B_u"GhG"ȺX}^U%~T^H:@h#MWvwݴYڥvDq׍yy^t=7MB7d6!뀆`swdžWuYSQ<UvyIwV  -j 8tOղ+J̈́Ȧkqrf2-lݴS^!lA8h(+DV3 -ݳ1mmpÆW I~1EOζ,FەBRHAS" ƻNwݫ w*sn  -z86ʧ횵 "A n ~ԫH;C2 Y"2-KOJ2R OJQځiD -G˲nev']_D; -f pB y=bStUa#63a³>YدZ씔,04%Z=4ޢZs \NJBr:)6SKW"pqIZ?rDIb1)|@1iCġH ).1 N6SwS% -7^҃`خW+宦ԦET!m%e NdOXIDe}D\|G 2ǵUW@ zEY,S\ά8P*Q+Y!N̂̑.0R}h6e[CR8ۦk3wV*l3Ju4͕eͅ --WAl5:I[)~s'&#ŻspRh̄ǕuD#։9/攸i{/7`cD_҆PMSl5zx&l񾺗 -5itCT;wFf?] 8+ȹlL"s̬a~Zy \-#KQn UzkkZa8B˼D@V΄7ۑ H'J&>šEGhD$t': n.';eGl/ٲS:1Jnd'NjWD&.@4ϟ|z f$_}!as~C(qP4X?Ë:l4ф8<=øP>OW%-ݪkݍ~01*W~hRVGosGG^_"ÑuQ@9uawfT8xA32k#"adžo#(!qW72*}m,}=|e ZLKIc: Mqq7r>>ƾ>};_VҲMYfZk, ig-<$T^awlD6ahOhh(z/1PJ> endobj -818 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [490.9727 549.9227 513.9963 560.8266] -/Subtype /Link -/A << /S /GoTo /D (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) >> ->> endobj -819 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 537.9675 127.509 548.8715] -/Subtype /Link -/A << /S /GoTo /D (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) >> ->> endobj -820 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0815 537.9675 200.8491 548.8715] -/Subtype /Link -/A << /S /GoTo /D (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) >> ->> endobj -821 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [418.3117 508.388 485.0409 519.2919] -/Subtype /Link -/A << /S /GoTo /D (a00147_gdb971fb1525d0c5002f52125b05f3218) >> ->> endobj -817 0 obj << -/D [815 0 R /XYZ 90 757.9346 null] ->> endobj -814 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -824 0 obj << -/Length 2698 -/Filter /FlateDecode ->> -stream -xڥk۶ -Eb Oww8q6L>XSJP>_3.IG,žU?ʂU%~xU__ ^v_*Xƫݭ ?Bv_<'x{ -")^XH_zs*K=L_d\Bܤzw-XDB-m(^$ PGq(V (Qa}]6o-}C,n,aFcS}D\Lo*-ˮ80坞M%Ѵnr޾]7fyn"EƔ?Loj{z`$K7?vA.S4hE>DbDgo` ?5FF} Bcvt]{.:B:LA A8RZ?QI*j72󅈲Ǹ^@O'ˆ--C姩UsrԼAqhgl -!QSV`qQ?HVegx!XĔ34kn+kɧ-J6P=0g7ȧ;ҤkX26͎ژNz8N7jw ș$K8DEm"6]dKyMLnɔr#0 l ׻^Bؼ.;Z JN#~&%+ ~~#egYmp۶č|kFo#y֝ڴDb?6uydeqޠ¡a`I;kUլirێFTx|U3Q5#OXNChu^h5*ϚZvǐf"464u6-#أ/&4]8% ;VbNt?enޕ*ʣ7΁LAv{:j&COÌvfpd,pHjݗUEGWxgO~Yj!T93u5+; 3,θdЧ&$=mوP2>xaRu۠[6^l.8ñ[7K^\``|[X H?T"(TКw -uw$~(.}Sm)+F7 fH܍nfh::(.r7p"t`)#b -Y/Q)/*& E]P])1g&a:w8mftQ ՆF<(q*Q#V:uɈz\wS> endobj -826 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [203.7378 146.6848 248.3401 157.5888] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -827 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [190.9801 134.7297 235.5824 145.6336] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -825 0 obj << -/D [823 0 R /XYZ 90 757.9346 null] ->> endobj -828 0 obj << -/D [823 0 R /XYZ 279.4381 96.348 null] ->> endobj -822 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -832 0 obj << -/Length 2726 -/Filter /FlateDecode ->> -stream -xڥ˒6>_ѕ֎W֬=)g(R ^#;MA·_+]d"]Y_@ -x9˻߄Ů8i-48&a?  R,0wnvcӋϻwWX$J -zw"OvǠ(]}.W3 `K$ -#`BWjf1nu/u^d-^J7nH`0?y[fd8ڎO5i> 6% g"1JȊ <'sO'$dzt(Dܴݽj!"IŞie>~X|?4eO{$! TNd89QfE7 ӓuߩ<TIqCY]䊩3B:oŽdĽ* !k9x/@ ?TOx{f +Ǔ$h6177fe5h]Ax/&Jό nVnmdmLV*1'ʊGݸ̝b0Hm}TY1c4j U?XYeʩg=/Y[쳍l0::Sjg*~DrK2{Y++w(ZRvqfhP5hnЭTllmhFCZsbɺ l:ZwQŒ̓knP r%=j0'uQc5}O4LB܄_ J ̈́!GȎg<Ƞ>ئy8tZm aֱ[<?-X_xmP_.YUTm͔ - 0D=5ۀ[B-FH4x7=1n\1=ۋ<(9Kt{[|< *T m|hľ`Plc֮e0ȫn7`#i坻۩W4PL#l5n^qu1t hʨ8l -l5w\o:IN85(\145)Z=[ģZ=ǠiYUOZ.Ŀ~{s `o\ Pna>b5wr8Bg'_C+PY~ g9Ru>@<5#"CDd6LȮs4v7L !u\2UfB1aݍ gPrwdu&3?025tMY9ӊO-fξ(gqɋ3~K>@SP -}[;sgx`&2Pe{Q{~嵀qk.tv ~ ,̜8_[u%P;Ҷ\ wU2=t%"i -t -Ih){iEIC-Dlַ:Տk]. _.dKJLYD.3rHj鬢`zg)OlP)y^ͫ\ŵکjAf.]u9#6 5F4?Zbh43PKSAyAчjѓ0SRx4Gp+MB)@=XnG6WDW]T`$3w]mLncgxP?4Iѿ_Q8w1=YciBX4:QPW-qwh Kގt68ˌ  +f1endstream -endobj -831 0 obj << -/Type /Page -/Contents 832 0 R -/Resources 830 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 829 0 R ->> endobj -833 0 obj << -/D [831 0 R /XYZ 90 757.9346 null] ->> endobj -38 0 obj << -/D [831 0 R /XYZ 90 739.9346 null] ->> endobj -834 0 obj << -/D [831 0 R /XYZ 437.7219 648.3003 null] ->> endobj -835 0 obj << -/D [831 0 R /XYZ 90 630.343 null] ->> endobj -836 0 obj << -/D [831 0 R /XYZ 498.8037 552.4222 null] ->> endobj -837 0 obj << -/D [831 0 R /XYZ 90 534.4648 null] ->> endobj -838 0 obj << -/D [831 0 R /XYZ 231.09 381.1364 null] ->> endobj -839 0 obj << -/D [831 0 R /XYZ 90 363.179 null] ->> endobj -840 0 obj << -/D [831 0 R /XYZ 464.8599 263.3404 null] ->> endobj -841 0 obj << -/D [831 0 R /XYZ 90 245.383 null] ->> endobj -842 0 obj << -/D [831 0 R /XYZ 164.1609 96.348 null] ->> endobj -830 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -845 0 obj << -/Length 2718 -/Filter /FlateDecode ->> -stream -xڥYKϯ[Boߜ5lf IH+> jVjtF<|d'n `#a|+L$D>rNuUͱ.%a>^tqI e'/c1T8ʜ4&ǹZTgY4VbO5Í 56`s+S;hz -4 XHX?r@쀈kI/Bh3䑻n7зI/Φ# 9 \4r le3T:CĨ3!X0V ?;5RarA 7r w~ c Jh7ͮrr1}UM٢_

    Ǭg\ -!l W^ʌ^YJ]NϦ鹝y5;"~!- - dev3 1k H5dޫLV NbKUv ^oi{x~ -0JSr}{"Sbmȃ2f U8is|`>T+csW8ɫiYsC }}ƣI9<4 Ft6B㇡fYOgns|` ]Rd&A#SEV.s_Kh`ޮ(a'VTJHVHh.-n Yx& \OULKz闰Pp[f6 :7W{؎McuIIo{ o+.UݨjF.bX !Zh9vHLڄh6cmɏ0~̀6p R%jrsbTXJ -QT -0t|Mՠ .%ԩ -Ꚏ| O6e)ip%\nq)+_d(ZՖ3q߼Srx`u[hPԇ_~[ec*҈46d6U&!fӭ8g-qԷ5X&'ww>SNFf֊)q*:ۙ8H%WMK~)gkȏz'-A;'Q,){˒ykDћ%d@ft,DQ wh}Xp+oJݕAc0ֵTlwf?ױBkX@7zX ~\.QN峋~C# wK)Oف\zz4ʬʢTPdYb2eK-eO B9 r= LgV;4Nc+:I;uF@̔;~x><1/w(2!t ii[bV. qzCg^{U@j3O pR=⩽p)LZ[-ID*oH"0@ -Az7}U>(|>qpgA;,O"QBI(ܧ*ڳ?Mb5M΅ARN }3s.)!y$hDԼ49YyZ8_q媷<.wkg(N4S~p9Qd8\@vm9f9?Ŕ'8 &w"vC^i@O#4C^֝hCxOsz8#^[y9_U̷xf3EM#pCU\wR<鬙:dʮ:U ɍ9k[WygPV[/o}QXɷ uQ{HqבCqv8qzYa#R[ɯ٤O.a}($N_C rLvyfNQ-iPk[T{{xf(ߩ;sO~"w041 <﷓i̓?ծVendstream -endobj -844 0 obj << -/Type /Page -/Contents 845 0 R -/Resources 843 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 829 0 R ->> endobj -846 0 obj << -/D [844 0 R /XYZ 90 757.9346 null] ->> endobj -847 0 obj << -/D [844 0 R /XYZ 90 739.9346 null] ->> endobj -848 0 obj << -/D [844 0 R /XYZ 513 669.6866 null] ->> endobj -849 0 obj << -/D [844 0 R /XYZ 90 652.6059 null] ->> endobj -850 0 obj << -/D [844 0 R /XYZ 145.0727 576.8531 null] ->> endobj -851 0 obj << -/D [844 0 R /XYZ 90 559.7724 null] ->> endobj -852 0 obj << -/D [844 0 R /XYZ 199.2294 400.9501 null] ->> endobj -853 0 obj << -/D [844 0 R /XYZ 90 383.8694 null] ->> endobj -854 0 obj << -/D [844 0 R /XYZ 437.8115 266.5818 null] ->> endobj -855 0 obj << -/D [844 0 R /XYZ 90 249.5011 null] ->> endobj -843 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -858 0 obj << -/Length 2680 -/Filter /FlateDecode ->> -stream -xڥYKϯ-TH&>Dfk*Mrp|Ḧ5$!cק_k+)4 u7|%QrLu߽@0~3|xGcxL@힊 t{AE7<~s/O4'ۉtj+`[NO :1HSB]rQЄSE:^KA7SYۖ'ʳCύ I]Ug}i{$^)eߑ56]y.9yJbkc*x4mtuu sCUA 8Q;,k^V'cz䶾VfDoe+21B Y۳ɕ  [6/\*;8:lQ!}7mv<[ cE) "ɻq^H@W>}9М䗬)ZKxVU˹u=4l7cfخ oeqZ7s|EY{cj۩m{vQ֦}c&/܂r#z =:Ħi)Lmr<&MCSn/l|nYeJ柑<<#0a215hC'FeжEg/YZ2 D(!|z 5sm8)9* L@ s=vOΏ'8INT>T,#9i[d&ȅf6JCxR/w]!V6LS6m Bj;!<F$"`ѱ,CxA%֚14{m{3m,յ27\U+q Kq9例z[c=:bҟX @t|b`R s9NBy3g1.^WCgd d$1׿a+bIn73^l KӁ`z-`F@tK&SԳ͒9&$ޚ_n3lh6[36 )eq9XQo4˥g6a WNl $M,yq?f6ju+Yyhas7S7,_tsגY+㢍1)%yl<_AG?vYN@B/xi<pjZF<z{XF",D;MJCW.%&8ef"]Q,48&%Y0KF"TF23h|5Mhd[k00l~HXn6uRN#H~xpxCO iݚچ=i3w#n r2Ӿҁ:Q=|~>aLĤmi] -ۿ'A:+{c)8U_G * - endstream -endobj -857 0 obj << -/Type /Page -/Contents 858 0 R -/Resources 856 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 829 0 R ->> endobj -859 0 obj << -/D [857 0 R /XYZ 90 757.9346 null] ->> endobj -860 0 obj << -/D [857 0 R /XYZ 207.8864 706.0616 null] ->> endobj -861 0 obj << -/D [857 0 R /XYZ 90 687.3006 null] ->> endobj -862 0 obj << -/D [857 0 R /XYZ 429.0947 581.6321 null] ->> endobj -863 0 obj << -/D [857 0 R /XYZ 90 562.871 null] ->> endobj -864 0 obj << -/D [857 0 R /XYZ 416.2232 469.1577 null] ->> endobj -865 0 obj << -/D [857 0 R /XYZ 90 450.3967 null] ->> endobj -866 0 obj << -/D [857 0 R /XYZ 318.9393 332.7731 null] ->> endobj -42 0 obj << -/D [857 0 R /XYZ 90 312.8912 null] ->> endobj -856 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -869 0 obj << -/Length 1859 -/Filter /FlateDecode ->> -stream -xڥXY6~Cd4:W 6@٢IPm : -X,8 g>mm(q YG`(Yͳtii妻?;sL{Ӵ3|v$$ whT|XɯmxnFxJS[mB?raǨhZh -b baphw7A9Ys)Ϲ&c?^sd@ɛZDM˄yAب/E^6ÿuOt}Q^v4+ЮE 7.GSTTɟ{]&ŊSfC)'ӒyT0M9HtI0>&w5qc? oç nN{^Og<%@!Bubɡ9N; -|{P45dTe~O2g v^L(Ր?V^D=^+ YHWKǃDE3$+2'Rd/4 -2a c6lcݒN\ON 4ҬY &TA76ˢ*z, -{T&E^Ίo -U"j;:'f'#V*LA6(= @3*ɋ~R#y8zqmxW؊[\[ĺgS  gA͟@ǽrPaLo A=ȱ"t}L ȇ8gjU <Ȉzö @s&s{* 3"CzZ~W=7;d?~R+ч$}rOrA$ gb%<-'vBّǝj(D%E8ٸ=8w'*0Ỹ/YG~z-*翼n)qcxcjo1A&ʗ{}ö_xҮ̭x𧵕lendstream -endobj -868 0 obj << -/Type /Page -/Contents 869 0 R -/Resources 867 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 829 0 R ->> endobj -870 0 obj << -/D [868 0 R /XYZ 90 757.9346 null] ->> endobj -871 0 obj << -/D [868 0 R /XYZ 299.5322 694.1065 null] ->> endobj -872 0 obj << -/D [868 0 R /XYZ 90 677.3793 null] ->> endobj -867 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -875 0 obj << -/Length 280 -/Filter /FlateDecode ->> -stream -xڥQ=o0+<&Cm~FDUo@D_'N"ؐ{w;ɍ6©z$߆y6yBǝp@ 4r_.i(JGfer|GVt ~8Zݾb)y*Y#8|rTX']µZ:#KXs-@iN;R@sH8l+rUu_2Ѿ HA'쭜JImRI8>CwV54q3}xjendstream -endobj -874 0 obj << -/Type /Page -/Contents 875 0 R -/Resources 873 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 829 0 R ->> endobj -876 0 obj << -/D [874 0 R /XYZ 90 757.9346 null] ->> endobj -873 0 obj << -/Font << /F29 499 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -879 0 obj << -/Length 1608 -/Filter /FlateDecode ->> -stream -xM6+|Hi)v-T6%9FZ=O}vd?x!D`ɼ?攙W lvofs; byPl| qZStހ_2&W)wmwpd!.hPzc鯨F:Nωq^mRTa&űҴWοn"&k\ r5^;Up HF[6<;f][4bVka1/\.!$SminW^2, &o% i.e?m#ibYnD?7hl?eQXecr8$;3ff0QN:G!Ň[4CJ YL CE1a~~N!)=4ms4Wz[1Y20U% QP%klcy\dKpz.c]˵Bج\m@>ϻU`RFMAZz-e+-(klo>LYfak`S8=@9TR -(F0(;[@5f6JecR.\8GQJy/# `%b טU4;hkE.8O&bk~it[ -6F0lv)f6_Wʔz&9.g!Εd qRz+8DD )xqGMi0&ΑeurzK(T&x@#A xf2nWϚہ8џ3^Î)è)G+`@A&r0!lhٚ=_ӧS^٪7Oߊ`#T7ѣF -q8Cja -C 5fg %䘄ȋbT'GNq+ -0G `CZ3$6O79WGe\9yU`+r02h$86fg\/ϒ<-yKNDZ+d |40U5JiqS -O(ϻJ&jvRK5@SkfeEYy>cHզjbZrnGԯ΁]a.GCӡ\kvV^oy\8}OO/<eix\ N&TuHfgl]vϧQC]9bɏq -( 0?Ъ5+h.9-(C袇c%9NfǑ+↓<8fݔ :ך¡c\RBy}>v>jݯ -.H`X]S^2 S=5N0LMJgr/R!|Iˇ29&Y#8ubq <\~לkB%?"r(endstream -endobj -878 0 obj << -/Type /Page -/Contents 879 0 R -/Resources 877 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 905 0 R -/Annots [ 881 0 R 882 0 R 883 0 R 884 0 R 885 0 R 886 0 R 887 0 R 888 0 R 889 0 R 890 0 R 891 0 R 892 0 R 893 0 R 894 0 R 895 0 R 896 0 R 897 0 R 898 0 R 899 0 R 900 0 R 901 0 R 902 0 R 903 0 R 904 0 R ] ->> endobj -881 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 483.9922 513.9963 492.8388] -/Subtype /Link -/A << /S /GoTo /D (section.6.1) >> ->> endobj -882 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 469.9249 513.9963 478.8911] -/Subtype /Link -/A << /S /GoTo /D (section.6.14) >> ->> endobj -883 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 456.0968 513.9963 464.9434] -/Subtype /Link -/A << /S /GoTo /D (section.6.2) >> ->> endobj -884 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 442.1491 513.9963 450.9957] -/Subtype /Link -/A << /S /GoTo /D (section.6.19) >> ->> endobj -885 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 430.1939 513.9963 439.0406] -/Subtype /Link -/A << /S /GoTo /D (section.6.20) >> ->> endobj -886 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 418.2388 513.9963 427.0854] -/Subtype /Link -/A << /S /GoTo /D (section.6.21) >> ->> endobj -887 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 406.2836 513.9963 415.1302] -/Subtype /Link -/A << /S /GoTo /D (section.6.22) >> ->> endobj -888 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 394.428 513.9963 403.1751] -/Subtype /Link -/A << /S /GoTo /D (section.6.23) >> ->> endobj -889 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 382.3733 513.9963 391.2199] -/Subtype /Link -/A << /S /GoTo /D (section.6.24) >> ->> endobj -890 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 368.4256 513.9963 377.2722] -/Subtype /Link -/A << /S /GoTo /D (section.6.9) >> ->> endobj -891 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 354.4779 513.9963 363.3245] -/Subtype /Link -/A << /S /GoTo /D (section.6.3) >> ->> endobj -892 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 342.5227 513.9963 351.3693] -/Subtype /Link -/A << /S /GoTo /D (section.6.4) >> ->> endobj -893 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 330.6671 513.9963 339.4142] -/Subtype /Link -/A << /S /GoTo /D (section.6.5) >> ->> endobj -894 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 318.6124 513.9963 327.459] -/Subtype /Link -/A << /S /GoTo /D (section.6.6) >> ->> endobj -895 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 306.6572 513.9963 315.5038] -/Subtype /Link -/A << /S /GoTo /D (section.6.7) >> ->> endobj -896 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 294.702 513.9963 303.5487] -/Subtype /Link -/A << /S /GoTo /D (section.6.8) >> ->> endobj -897 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 282.7469 513.9963 291.5935] -/Subtype /Link -/A << /S /GoTo /D (section.6.11) >> ->> endobj -898 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 270.6721 513.9963 279.6383] -/Subtype /Link -/A << /S /GoTo /D (section.6.13) >> ->> endobj -899 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 258.8365 513.9963 267.6832] -/Subtype /Link -/A << /S /GoTo /D (section.6.10) >> ->> endobj -900 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 244.7692 513.9963 253.7355] -/Subtype /Link -/A << /S /GoTo /D (section.6.12) >> ->> endobj -901 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 232.8141 513.9963 241.7803] -/Subtype /Link -/A << /S /GoTo /D (section.6.15) >> ->> endobj -902 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 220.8589 513.9963 229.8251] -/Subtype /Link -/A << /S /GoTo /D (section.6.16) >> ->> endobj -903 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [502.0411 208.9037 513.9963 217.87] -/Subtype /Link -/A << /S /GoTo /D (section.6.17) >> ->> endobj -904 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 197.0682 513.9963 205.9148] -/Subtype /Link -/A << /S /GoTo /D (section.6.18) >> ->> endobj -880 0 obj << -/D [878 0 R /XYZ 90 757.9346 null] ->> endobj -46 0 obj << -/D [878 0 R /XYZ 90 739.9346 null] ->> endobj -50 0 obj << -/D [878 0 R /XYZ 90 553.9527 null] ->> endobj -877 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -908 0 obj << -/Length 276 -/Filter /FlateDecode ->> -stream -xڥQ=O0+<&C9ꈀ@d:viQ{؍"<;|CeG| ]wiҼލ4 -EHnA^HB Yz R?Wmc=K(qMb :GJWT'c­V cͭV_3ِRΥi$R7ѣ~K7QJ@ % J2hʺStCw} -4Lkxdendstream -endobj -907 0 obj << -/Type /Page -/Contents 908 0 R -/Resources 906 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 905 0 R ->> endobj -909 0 obj << -/D [907 0 R /XYZ 90 757.9346 null] ->> endobj -906 0 obj << -/Font << /F29 499 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -912 0 obj << -/Length 1260 -/Filter /FlateDecode ->> -stream -xM6+ R۸^vUUUUJ>0_;=V=weF rr}9?p!POp6򄆟)&jaY?s/ZS XIOחb\oH7JZbzkw4+e{)PvfgC X!CS^;)[d!Z릌3nڡq{lKoUm6t~BK_tg̖]U~CiXNsWBݹ^O#@XCK`Y>WV>n)@ISo{uB%(VL弘/|s,TǰuT}k -8zsۇ(̼ fη<Z!AAIĻe_endstream -endobj -911 0 obj << -/Type /Page -/Contents 912 0 R -/Resources 910 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 905 0 R -/Annots [ 914 0 R 915 0 R 916 0 R 917 0 R 918 0 R 919 0 R 920 0 R 921 0 R 922 0 R 923 0 R 924 0 R 925 0 R 926 0 R 927 0 R 928 0 R 929 0 R 930 0 R 931 0 R 932 0 R 933 0 R 934 0 R ] ->> endobj -914 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 483.9922 513.9963 492.8388] -/Subtype /Link -/A << /S /GoTo /D (section.7.1) >> ->> endobj -915 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 472.1366 513.9963 480.8837] -/Subtype /Link -/A << /S /GoTo /D (section.7.2) >> ->> endobj -916 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 460.0819 513.9963 468.9285] -/Subtype /Link -/A << /S /GoTo /D (section.7.3) >> ->> endobj -917 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 448.1267 513.9963 456.9733] -/Subtype /Link -/A << /S /GoTo /D (section.7.4) >> ->> endobj -918 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 436.1715 513.9963 445.0182] -/Subtype /Link -/A << /S /GoTo /D (section.7.5) >> ->> endobj -919 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 424.2163 513.9963 433.063] -/Subtype /Link -/A << /S /GoTo /D (section.7.6) >> ->> endobj -920 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 412.1416 513.9963 421.1078] -/Subtype /Link -/A << /S /GoTo /D (section.7.7) >> ->> endobj -921 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 400.306 513.9963 409.1527] -/Subtype /Link -/A << /S /GoTo /D (section.7.8) >> ->> endobj -922 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 388.3508 513.9963 397.1975] -/Subtype /Link -/A << /S /GoTo /D (section.7.9) >> ->> endobj -923 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 376.3957 513.9963 385.2423] -/Subtype /Link -/A << /S /GoTo /D (section.7.10) >> ->> endobj -924 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 364.4405 513.9963 373.2872] -/Subtype /Link -/A << /S /GoTo /D (section.7.11) >> ->> endobj -925 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 352.4853 513.9963 361.332] -/Subtype /Link -/A << /S /GoTo /D (section.7.12) >> ->> endobj -926 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 340.5302 513.9963 349.3768] -/Subtype /Link -/A << /S /GoTo /D (section.7.13) >> ->> endobj -927 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 328.575 513.9963 337.4217] -/Subtype /Link -/A << /S /GoTo /D (section.7.14) >> ->> endobj -928 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 316.6198 513.9963 325.4665] -/Subtype /Link -/A << /S /GoTo /D (section.7.15) >> ->> endobj -929 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 304.5451 513.9963 313.5113] -/Subtype /Link -/A << /S /GoTo /D (section.7.16) >> ->> endobj -930 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 292.7095 513.9963 301.5561] -/Subtype /Link -/A << /S /GoTo /D (section.7.17) >> ->> endobj -931 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 280.8539 513.9963 289.601] -/Subtype /Link -/A << /S /GoTo /D (section.7.18) >> ->> endobj -932 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 268.7992 513.9963 277.6458] -/Subtype /Link -/A << /S /GoTo /D (section.7.19) >> ->> endobj -933 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 256.9435 513.9963 265.6906] -/Subtype /Link -/A << /S /GoTo /D (section.7.20) >> ->> endobj -934 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 244.8888 513.9963 253.7355] -/Subtype /Link -/A << /S /GoTo /D (section.7.21) >> ->> endobj -913 0 obj << -/D [911 0 R /XYZ 90 757.9346 null] ->> endobj -54 0 obj << -/D [911 0 R /XYZ 90 739.9346 null] ->> endobj -58 0 obj << -/D [911 0 R /XYZ 90 553.9527 null] ->> endobj -910 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -937 0 obj << -/Length 287 -/Filter /FlateDecode ->> -stream -xڥQMO0 Wlc@60nLZQ1{Ҧ*#pp2ռ80[3҉'9{"ǝp47}BeD'xR`!گK'ja^EKPʩZ8#m'$_j=+9j/wU:bTqp &&5mp/qМ۪{ r6Q{~endstream -endobj -936 0 obj << -/Type /Page -/Contents 937 0 R -/Resources 935 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 905 0 R ->> endobj -938 0 obj << -/D [936 0 R /XYZ 90 757.9346 null] ->> endobj -935 0 obj << -/Font << /F29 499 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -941 0 obj << -/Length 1873 -/Filter /FlateDecode ->> -stream -x\Ms6W(4I[Smq*K$H -4V Z|| *$I NP0. N?ߐ4~'fd_O$#)H ͒ɻ -|_:k+i$jK؝ ؝5(lЃMbBt]Y/OƮU>_7(b]čh PJؽvi`4J hy=X\рB*P&%Hb%6G_;5Hʍev0 fAXszV)ciIBŬ+QW 8ɂ. , erCbVOnwi~$8g6*T́zr`U2P X2z0< XSz WQL3VaZ˶bq/}𖵒z[(]J rR3K pg` MbVnFQ(f3x"'>B 0wAn:_(]%';{C3VIVZiY,pH^vL"}=>zMztj7k5|x_r;[OXjT8֜i`R7P)brR+T̼5am|[tn"̰qĠ;;KCK(x %RTxgW(f_1dmcm;^ U? ]`ѦJ K"Rh-xBŜiYۉQۯ<^ N4 NdYIڝ܉Ϸw󩭏N !ݝ;#a;uʽ9+=vv%1Jz_w9T=x֢ mbVS8_],Wt ^oy3^ -Kn|p 4?U B˳|۰'kٗ IiLkw6=6zvXC{0de>'K-x33 -s^\o~gv'}{0t84^԰~mfG ,bqP1.6%PN`^hO( Iendstream -endobj -940 0 obj << -/Type /Page -/Contents 941 0 R -/Resources 939 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 905 0 R -/Annots [ 943 0 R 944 0 R 945 0 R 946 0 R 947 0 R 948 0 R 949 0 R 950 0 R 951 0 R 952 0 R 953 0 R 954 0 R 955 0 R 956 0 R 957 0 R 958 0 R 959 0 R 960 0 R 961 0 R 962 0 R 963 0 R 964 0 R 965 0 R 966 0 R 967 0 R 968 0 R 969 0 R 970 0 R 971 0 R 972 0 R 973 0 R 974 0 R 975 0 R 976 0 R 977 0 R 978 0 R 979 0 R 980 0 R 981 0 R 982 0 R 983 0 R 984 0 R ] ->> endobj -943 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 481.9349 152.2025 492.8388] -/Subtype /Link -/A << /S /GoTo /D (a00077) >> ->> endobj -944 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 483.9922 513.9963 492.8388] -/Subtype /Link -/A << /S /GoTo /D (section.7.1) >> ->> endobj -945 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 470.956 176.4612 480.8837] -/Subtype /Link -/A << /S /GoTo /D (a00078) >> ->> endobj -946 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 472.1366 513.9963 480.8837] -/Subtype /Link -/A << /S /GoTo /D (section.7.2) >> ->> endobj -947 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 458.0246 162.175 468.9285] -/Subtype /Link -/A << /S /GoTo /D (a00079) >> ->> endobj -948 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 460.0819 513.9963 468.9285] -/Subtype /Link -/A << /S /GoTo /D (section.7.3) >> ->> endobj -949 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 446.0694 148.8948 456.9733] -/Subtype /Link -/A << /S /GoTo /D (a00080) >> ->> endobj -950 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 448.1267 513.9963 456.9733] -/Subtype /Link -/A << /S /GoTo /D (section.7.4) >> ->> endobj -951 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 435.0905 161.0693 445.0182] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -952 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 436.1715 513.9963 445.0182] -/Subtype /Link -/A << /S /GoTo /D (section.7.5) >> ->> endobj -953 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 422.1591 128.4121 433.063] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -954 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 424.2163 513.9963 433.063] -/Subtype /Link -/A << /S /GoTo /D (section.7.6) >> ->> endobj -955 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 410.2039 146.4744 421.1078] -/Subtype /Link -/A << /S /GoTo /D (a00083) >> ->> endobj -956 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 412.1416 513.9963 421.1078] -/Subtype /Link -/A << /S /GoTo /D (section.7.7) >> ->> endobj -957 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 398.2487 112.9203 409.1527] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -958 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 400.306 513.9963 409.1527] -/Subtype /Link -/A << /S /GoTo /D (section.7.8) >> ->> endobj -959 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 386.2936 147.7889 397.1975] -/Subtype /Link -/A << /S /GoTo /D (a00085) >> ->> endobj -960 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 388.3508 513.9963 397.1975] -/Subtype /Link -/A << /S /GoTo /D (section.7.9) >> ->> endobj -961 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 375.3146 155.5297 385.2423] -/Subtype /Link -/A << /S /GoTo /D (a00086) >> ->> endobj -962 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 376.3957 513.9963 385.2423] -/Subtype /Link -/A << /S /GoTo /D (section.7.10) >> ->> endobj -963 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 362.7568 126.2002 373.2872] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -964 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 364.4405 513.9963 373.2872] -/Subtype /Link -/A << /S /GoTo /D (section.7.11) >> ->> endobj -965 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 350.4281 142.2503 361.332] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -966 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 352.4853 513.9963 361.332] -/Subtype /Link -/A << /S /GoTo /D (section.7.12) >> ->> endobj -967 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 338.4729 157.7419 349.3768] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -968 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 340.5302 513.9963 349.3768] -/Subtype /Link -/A << /S /GoTo /D (section.7.13) >> ->> endobj -969 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 326.5177 153.3186 337.4217] -/Subtype /Link -/A << /S /GoTo /D (a00090) >> ->> endobj -970 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 328.575 513.9963 337.4217] -/Subtype /Link -/A << /S /GoTo /D (section.7.14) >> ->> endobj -971 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 314.5625 168.8202 325.4665] -/Subtype /Link -/A << /S /GoTo /D (a00091) >> ->> endobj -972 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 316.6198 513.9963 325.4665] -/Subtype /Link -/A << /S /GoTo /D (section.7.15) >> ->> endobj -973 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 302.6074 180.9847 313.5113] -/Subtype /Link -/A << /S /GoTo /D (a00092) >> ->> endobj -974 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 304.5451 513.9963 313.5113] -/Subtype /Link -/A << /S /GoTo /D (section.7.16) >> ->> endobj -975 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 290.6522 140.596 301.5561] -/Subtype /Link -/A << /S /GoTo /D (a00093) >> ->> endobj -976 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 280.7543 513.9963 289.601] -/Subtype /Link -/A << /S /GoTo /D (section.7.17) >> ->> endobj -977 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 266.7419 161.0694 277.6458] -/Subtype /Link -/A << /S /GoTo /D (a00094) >> ->> endobj -978 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 268.8987 513.9963 277.6458] -/Subtype /Link -/A << /S /GoTo /D (section.7.18) >> ->> endobj -979 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 254.7867 162.1755 265.6906] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -980 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 256.844 513.9963 265.6906] -/Subtype /Link -/A << /S /GoTo /D (section.7.19) >> ->> endobj -981 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 242.8315 163.8392 253.7355] -/Subtype /Link -/A << /S /GoTo /D (a00096) >> ->> endobj -982 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 244.9884 513.9963 253.7355] -/Subtype /Link -/A << /S /GoTo /D (section.7.20) >> ->> endobj -983 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [103.1769 231.8526 167.1461 241.7803] -/Subtype /Link -/A << /S /GoTo /D (a00097) >> ->> endobj -984 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 232.9337 513.9963 241.7803] -/Subtype /Link -/A << /S /GoTo /D (section.7.21) >> ->> endobj -942 0 obj << -/D [940 0 R /XYZ 90 757.9346 null] ->> endobj -62 0 obj << -/D [940 0 R /XYZ 90 739.9346 null] ->> endobj -66 0 obj << -/D [940 0 R /XYZ 90 553.9527 null] ->> endobj -939 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1007 0 obj << -/Length 287 -/Filter /FlateDecode ->> -stream -xڥQ=o0+<&Cܻs|JȆ( ,%QD_l{wPBx(=Hk:g; - Ygxx!/L,0QBEN(O3 $ mhյ]RТ.S)⹘f|%ewF~zO(rWS4'&{k^;V{F6_1]hAodv-5ƜIZ 輪vUe}e&Gi0#=Qw)i@P|0'j7*} endstream -endobj -1006 0 obj << -/Type /Page -/Contents 1007 0 R -/Resources 1005 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 905 0 R ->> endobj -1008 0 obj << -/D [1006 0 R /XYZ 90 757.9346 null] ->> endobj -1005 0 obj << -/Font << /F29 499 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1011 0 obj << -/Length 3129 -/Filter /FlateDecode ->> -stream -x\K7W9c/AHfm HIc'~&&kȞIg *V}]HMf#3gJ(d <{oo ?s_ l6Qbv) jߋp9_]7HiE\l -5mo0A_6n Y4 qAeC r9'㢶7)(c3t[]T#IUs⛣u{~njivf tۄ7>lti0UvB":kfN⾣$=ku=\˗mB8KNBK#! rr.lO|st aguR@ƝkswUR1Ȍ@Z kPD%ĈS"wq7aE=Vcḋ;+|t 4wXwf?^,+;Ҹ-O1N) %h|PZ%pRaDC`$m7pvzIG>o)v\[: -q=ps:vC ss|Bot*~ȴ;7T˜ c&Ɲ#80.ː2P0ֈ8Y -\ WbN@)31w-.ƹƹ<ǹƹŹqnE8wR.Z#Nv=_!Bg4@qc6x|eN僓Y!! -4 - S h!I섦 :>~!O"FT\Jq_DS&vHwƩn[4V+90[zJ*>9\/GLg" -6krt -h*DzGQ#՚PaS!; -AfRh!T#{_J/Yıo;_ڦ\xQtE>emy"hȌAWk5gUA%RUFrȦTAfN MٜJL)+' 8~m=i m@SM]j}{m"hS=X4 6AfF+FA|;fD?9~Œ3%`F0"lŊX҉=%q,)C:(4%02qCLm49(gP>4^ȴ{Ҁ^TC H*Z+b MyiP21iivHJՌTE(֨=/5G v6 #j k^gz4S)Jb%t50^[W0t4US‘R ;޼ -^&ifb";I;Q^^ wpL9Wpq^ -vXݏQEd p(i @SM0ETjp,HIf" | P}?t]͗7Pҷn PŸK54XK/kx_G!SsxPY,[KŇk3p!D0V\ -0c7(apTX%8Q U;>HCe\ODّv~Tѯ,Lk^e@>jH}IL.\-WCS?}ui2`-%i{u#w(# FFYCy4} -(|t )j%^n_B⸝J9ZcMV">{1Blepfp^Q氿;mvrŸN.<*ݞi0L9A˜Z#7e1?7o"cF0ɡ?H .ӡQ(=nq"Eً7м; *7.dy 3GILԝLD&{&2%+HًA9I,VXLA ێ˹;]\7#©]!bF0 AAۤB7NF_Խw:{zql?`Zo/y>u|pgۻYhhNM3`(zjސ7!) Kj楫L|m˹ap\?S)޳o-;&nAe_eۘV3`ijUtp\Ldz}L̸wJOI24|hEݛbMg}1?ɴ{g` ]ߨj\u_ -u-W,,W^+^+EN%jy'HḤ^F=G|FLHiwy݇߮Te?8~T -/Dݧp #T)s -[::["RFmr@( @T. ynO`p6D=yQ$)Aݓ|F0Ր(Z$#IAlnliBXHkjWP%C+WL\0**OwIv- T<q;$R8'e!OO$u'TͼY 64_IC?5TL'5#j65bUX@q*#]y7(eJ&xݖ UCjF!OUM݂WY"N_wX^ιtv[fu\[~A;Qj[ZCלݮ B w]ݝ]mi*Ӣa}3`F";Al'a"o -Qw}endstream -endobj -1010 0 obj << -/Type /Page -/Contents 1011 0 R -/Resources 1009 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1063 0 R -/Annots [ 1013 0 R 1014 0 R 1015 0 R 1016 0 R 1017 0 R 1018 0 R 1019 0 R 1020 0 R 1021 0 R 1022 0 R 1023 0 R 1024 0 R 1025 0 R 1026 0 R 1027 0 R 1028 0 R 1029 0 R 1030 0 R 1031 0 R 1032 0 R 1033 0 R 1034 0 R 1035 0 R 1036 0 R 1037 0 R 1038 0 R 1039 0 R 1040 0 R 1041 0 R 1042 0 R 1043 0 R 1044 0 R 1045 0 R 1046 0 R 1047 0 R 1048 0 R 1049 0 R 1050 0 R 1051 0 R 1052 0 R 1053 0 R 1054 0 R 1055 0 R 1056 0 R 1057 0 R 1058 0 R 1059 0 R 1060 0 R 1061 0 R 1062 0 R ] ->> endobj -1013 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.3629 456.6823 228.655 467.5862] -/Subtype /Link -/A << /S /GoTo /D (a00100) >> ->> endobj -1014 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 458.7396 513.9963 467.5862] -/Subtype /Link -/A << /S /GoTo /D (section.8.1) >> ->> endobj -1015 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.3629 444.5481 229.2129 455.4521] -/Subtype /Link -/A << /S /GoTo /D (a00101) >> ->> endobj -1016 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 434.6502 513.9963 443.4969] -/Subtype /Link -/A << /S /GoTo /D (section.8.2) >> ->> endobj -1017 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [151.3257 420.4588 183.9331 431.3628] -/Subtype /Link -/A << /S /GoTo /D (a00102) >> ->> endobj -1018 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 422.3965 513.9963 431.3628] -/Subtype /Link -/A << /S /GoTo /D (section.8.3) >> ->> endobj -1019 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [151.3257 408.3247 184.4911 419.2286] -/Subtype /Link -/A << /S /GoTo /D (a00103) >> ->> endobj -1020 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 410.382 513.9963 419.2286] -/Subtype /Link -/A << /S /GoTo /D (section.8.4) >> ->> endobj -1021 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.3543 396.1905 174.6379 407.0945] -/Subtype /Link -/A << /S /GoTo /D (a00104) >> ->> endobj -1022 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 398.2478 513.9963 407.0945] -/Subtype /Link -/A << /S /GoTo /D (section.8.5) >> ->> endobj -1023 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.3543 384.0564 175.1958 394.9603] -/Subtype /Link -/A << /S /GoTo /D (a00105) >> ->> endobj -1024 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 386.1137 513.9963 394.9603] -/Subtype /Link -/A << /S /GoTo /D (section.8.6) >> ->> endobj -1025 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [154.0952 371.9223 181.8208 382.8262] -/Subtype /Link -/A << /S /GoTo /D (a00106) >> ->> endobj -1026 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 373.9795 513.9963 382.8262] -/Subtype /Link -/A << /S /GoTo /D (section.8.7) >> ->> endobj -1027 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [154.0952 359.7881 182.3787 370.692] -/Subtype /Link -/A << /S /GoTo /D (a00107) >> ->> endobj -1028 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 361.8454 513.9963 370.692] -/Subtype /Link -/A << /S /GoTo /D (section.8.8) >> ->> endobj -1029 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [154.0952 347.654 190.1196 358.5579] -/Subtype /Link -/A << /S /GoTo /D (a00108) >> ->> endobj -1030 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 349.7113 513.9963 358.5579] -/Subtype /Link -/A << /S /GoTo /D (section.8.9) >> ->> endobj -1031 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [154.0952 335.5198 190.6776 346.4238] -/Subtype /Link -/A << /S /GoTo /D (a00109) >> ->> endobj -1032 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 337.4575 513.9963 346.4238] -/Subtype /Link -/A << /S /GoTo /D (section.8.10) >> ->> endobj -1033 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.7115 323.3857 213.3523 334.2896] -/Subtype /Link -/A << /S /GoTo /D (a00110) >> ->> endobj -1034 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 325.443 513.9963 334.2896] -/Subtype /Link -/A << /S /GoTo /D (section.8.11) >> ->> endobj -1035 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.7115 311.2516 213.9103 322.1555] -/Subtype /Link -/A << /S /GoTo /D (a00111) >> ->> endobj -1036 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 313.3088 513.9963 322.1555] -/Subtype /Link -/A << /S /GoTo /D (section.8.12) >> ->> endobj -1037 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.7641 299.1174 212.6453 310.0213] -/Subtype /Link -/A << /S /GoTo /D (a00112) >> ->> endobj -1038 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 301.1747 513.9963 310.0213] -/Subtype /Link -/A << /S /GoTo /D (section.8.13) >> ->> endobj -1039 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.7641 286.9833 213.2032 297.8872] -/Subtype /Link -/A << /S /GoTo /D (a00113) >> ->> endobj -1040 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 289.0405 513.9963 297.8872] -/Subtype /Link -/A << /S /GoTo /D (section.8.14) >> ->> endobj -1041 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.7641 274.8491 197.1536 285.7531] -/Subtype /Link -/A << /S /GoTo /D (a00114) >> ->> endobj -1042 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 276.9064 513.9963 285.7531] -/Subtype /Link -/A << /S /GoTo /D (section.8.15) >> ->> endobj -1043 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.4668 250.5808 149.8812 261.4848] -/Subtype /Link -/A << /S /GoTo /D (a00120) >> ->> endobj -1044 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 252.6381 513.9963 261.4848] -/Subtype /Link -/A << /S /GoTo /D (section.8.16) >> ->> endobj -1045 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [116.4668 238.4467 150.4392 249.3506] -/Subtype /Link -/A << /S /GoTo /D (a00121) >> ->> endobj -1046 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 240.504 513.9963 249.3506] -/Subtype /Link -/A << /S /GoTo /D (section.8.17) >> ->> endobj -1047 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 214.1784 179.5994 225.0823] -/Subtype /Link -/A << /S /GoTo /D (a00123) >> ->> endobj -1048 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 204.1609 513.9963 213.1272] -/Subtype /Link -/A << /S /GoTo /D (section.8.18) >> ->> endobj -1049 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 190.0891 164.6655 200.993] -/Subtype /Link -/A << /S /GoTo /D (a00124) >> ->> endobj -1050 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 192.1464 513.9963 200.993] -/Subtype /Link -/A << /S /GoTo /D (section.8.19) >> ->> endobj -1051 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 177.955 135.336 188.8589] -/Subtype /Link -/A << /S /GoTo /D (a00125) >> ->> endobj -1052 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 180.0123 513.9963 188.8589] -/Subtype /Link -/A << /S /GoTo /D (section.8.20) >> ->> endobj -1053 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 153.6867 151.3858 164.5906] -/Subtype /Link -/A << /S /GoTo /D (a00127) >> ->> endobj -1054 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 155.744 513.9963 164.5906] -/Subtype /Link -/A << /S /GoTo /D (section.8.21) >> ->> endobj -1055 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 141.5526 135.8939 152.4565] -/Subtype /Link -/A << /S /GoTo /D (a00128) >> ->> endobj -1056 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 143.6098 513.9963 152.4565] -/Subtype /Link -/A << /S /GoTo /D (section.8.22) >> ->> endobj -1057 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 129.4184 148.068 140.3223] -/Subtype /Link -/A << /S /GoTo /D (a00129) >> ->> endobj -1058 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 131.4757 513.9963 140.3223] -/Subtype /Link -/A << /S /GoTo /D (section.8.23) >> ->> endobj -1059 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 117.2843 148.6259 128.1882] -/Subtype /Link -/A << /S /GoTo /D (a00130) >> ->> endobj -1060 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 119.3415 513.9963 128.1882] -/Subtype /Link -/A << /S /GoTo /D (section.8.24) >> ->> endobj -1061 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 105.1501 178.5039 116.0541] -/Subtype /Link -/A << /S /GoTo /D (a00131) >> ->> endobj -1062 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 95.2522 513.9963 104.0989] -/Subtype /Link -/A << /S /GoTo /D (section.8.25) >> ->> endobj -1012 0 obj << -/D [1010 0 R /XYZ 90 757.9346 null] ->> endobj -70 0 obj << -/D [1010 0 R /XYZ 90 739.9346 null] ->> endobj -74 0 obj << -/D [1010 0 R /XYZ 90 553.9527 null] ->> endobj -1009 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1091 0 obj << -/Length 1559 -/Filter /FlateDecode ->> -stream -xZ]o6}У ,%ҵKY緮Y:gmGBAf彇蒔QR,)GMwűޝ]-oEoO&{4qwEo2ȋEYm9Fq_[YޭU(8:o Pkv.Ui=Q}`:ǓI*ͯ]{UEX ŐT`*NS8ǯFP}'g pDB[༮$7m V?]'哄2:w%# &PBMYKӪu)[ǯ9fڷHD8 -ExH Kiug\ dﳕrju> endobj -1093 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 726.8189 179.0619 737.7228] -/Subtype /Link -/A << /S /GoTo /D (a00132) >> ->> endobj -1094 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 716.8014 513.9963 725.7676] -/Subtype /Link -/A << /S /GoTo /D (section.8.26) >> ->> endobj -1095 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 690.9534 161.358 701.8573] -/Subtype /Link -/A << /S /GoTo /D (a00134) >> ->> endobj -1096 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 681.0555 513.9963 689.9021] -/Subtype /Link -/A << /S /GoTo /D (section.8.27) >> ->> endobj -1097 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 667.043 140.3173 677.947] -/Subtype /Link -/A << /S /GoTo /D (a00135) >> ->> endobj -1098 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 669.1003 513.9963 677.947] -/Subtype /Link -/A << /S /GoTo /D (section.8.28) >> ->> endobj -1099 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 655.0879 140.8753 665.9918] -/Subtype /Link -/A << /S /GoTo /D (a00136) >> ->> endobj -1100 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 657.1451 513.9963 665.9918] -/Subtype /Link -/A << /S /GoTo /D (section.8.29) >> ->> endobj -1101 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 643.1327 163.0021 654.0366] -/Subtype /Link -/A << /S /GoTo /D (a00137) >> ->> endobj -1102 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 645.0704 513.9963 654.0366] -/Subtype /Link -/A << /S /GoTo /D (section.8.30) >> ->> endobj -1103 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 631.1775 158.0208 642.0815] -/Subtype /Link -/A << /S /GoTo /D (a00138) >> ->> endobj -1104 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 633.1152 513.9963 642.0815] -/Subtype /Link -/A << /S /GoTo /D (section.8.31) >> ->> endobj -1105 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 619.2223 158.5788 630.1263] -/Subtype /Link -/A << /S /GoTo /D (a00139) >> ->> endobj -1106 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 621.16 513.9963 630.1263] -/Subtype /Link -/A << /S /GoTo /D (section.8.32) >> ->> endobj -1107 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [118.6786 607.2672 153.6074 618.1711] -/Subtype /Link -/A << /S /GoTo /D (a00140) >> ->> endobj -1108 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 609.2049 513.9963 618.1711] -/Subtype /Link -/A << /S /GoTo /D (section.8.33) >> ->> endobj -1109 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.6599 595.312 166.8776 606.2159] -/Subtype /Link -/A << /S /GoTo /D (a00141) >> ->> endobj -1110 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [497.0598 597.2497 513.9963 606.2159] -/Subtype /Link -/A << /S /GoTo /D (section.8.34) >> ->> endobj -1092 0 obj << -/D [1090 0 R /XYZ 90 757.9346 null] ->> endobj -1089 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1122 0 obj << -/Length 1862 -/Filter /FlateDecode ->> -stream -xڍXK6WhoT{olevrsHhĘ"$t$%CF$v2iq˛h  TĻzOoI;Y& gIE{ޝUo?4 -O I Mä0EVfi" @eq2sҲP"E`g7Ҫ", eXBzڪ5E;ؘf*q NAQ4)+Esk-پhK UV,a̵Ν Nf-z/^W"^"32h̻C;Ʃ:jouX_=@^vQwwھ}f3Yof27K~0h՗ %:Z@4r&wY -Y͉u&ͥo5z  i~Ju[P٥5ZH1e;gE++-p@` ]RA9(|Tس4E5{s؎%/ -!tq`M bϚtR -3|VCQp CY(NzH$x"9yOCoF/o4f#fBL\(6h k:92(᭦0#-8ijYejmÖÝqt&޽.uq "94unr@_ cg&f=ǩu ZQ -6qw-bt屻@&v77LM TےS.,8;*"#.o?|# -1J-ɁȻ1ř6Wx,(PO" D]!̸p Z&X 1x c#!9t\$PлHN7R$w HDy*Q"/HvW;E}FÝSVwg>M$N,KU9}n*v隻57KEs n = tF>KYޅ\4Rr}M)WXuD@QDX%zmh38@6|NGuʥn,`q*y}m.+hTXCbi*;I]ّ56"EoӪcd&qBƗ(VS 2 -Ŋa+@c\$T >pׅ4~q^eezaw%:vpcq~}P '*+GzoH -zg@zެ3p`6cIk?/'Xfa_oY~3}j4wB2.- gߏ\cnH#P$[?endstream -endobj -1121 0 obj << -/Type /Page -/Contents 1122 0 R -/Resources 1120 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1063 0 R ->> endobj -1123 0 obj << -/D [1121 0 R /XYZ 90 757.9346 null] ->> endobj -78 0 obj << -/D [1121 0 R /XYZ 90 739.9346 null] ->> endobj -657 0 obj << -/D [1121 0 R /XYZ 90 553.9527 null] ->> endobj -82 0 obj << -/D [1121 0 R /XYZ 90 553.9527 null] ->> endobj -1124 0 obj << -/D [1121 0 R /XYZ 90 520.1647 null] ->> endobj -1120 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1127 0 obj << -/Length 2807 -/Filter /FlateDecode ->> -stream -xڥَF}B X,c6o|E PTƳ_U]Td`a쮮+*eXa*UwWl?]qz\"]ah7"jjm-@$,fGj!f{ -iî/۫@ײeđWV[` eX|- K@tpXO/sJ&jP_qB˕nFn@0eQ4":IwViԴǙӋyix. EOB"~lkۢªkY?X\sG/PU4 ǶȶN'خA[G\CY^$"^ne}̍/t/(8j8K tFt}pkŮ[O䌣z$`. 9g6/ضsw:m&o*ϜdS2=m>i `qQ:)}eecБ B]>r\ԝuћԴ_Dqt75kb/L3SfKB!x4; ,̱! ?XX._Q: -ɿW0SSV,n~}J.PTu96Q%TkK%J)ØSLj7,̼2LXNjA]FBRܐytLee|J\ -d} eDo(?ݼ<\PHRiF/ (yƄb'1 O̒E(w$ +V!-Q2f~K҇% -:K|pyE2l lLB)Y PxSIBq)5FÙk3IK;U؂oz[47A?WÑCi_ǬU`zh}c5 -QAvE6pS4}6MG0,dh qל܀kW·ş-P4QZ}r_G@*a+ -y(te^^#_p_o;W -3b%*JԖ}4|{m#7+Ϲ%B0TIaI IP+7ݎBxلcGLgʋ 6i:pPsϱ!,̵Le2}r6V*\Z#z?珻r/jؘVJd -u]ʰ#̵2nj 4U?>wv4L )@U71L2B`{;ԃsJkpd&B<ff@{ 5{p*PHjTEgqڀLt:cߠ-U` -LR$ -ȥ\©aJ@Jo"mS2G*pDz5,DjHXTklgQ37,m,F|:x! hP'ʳ5.x9v: Hn.>&IY۬qcO<e-8 vJgRMz`d1%LNgh05`n;w -X̲%YKj 33Pp*Om6$[21cw3srƶ;G@ "1T"y_P.=/ف+M|s vZ ٶ-}.Ȟ14ń߬{W( d*sάd#^4+*phؾ%,P?E`iR%C0M Z=`M4t!d@jxn:53JB9o"i`bd[`9ĀPa=X} .n.\`[oD8<`O4"S(p5 ze1(muϑ[9x%DZF1?\( #LFeAGtڤMxoNcCи|oYDTF  f -id6Ppt8?/2x*^#_1¥fQpS5kب"1"C/v%|/\'{! a(#lp_翨{vP?rIJԧendstream -endobj -1126 0 obj << -/Type /Page -/Contents 1127 0 R -/Resources 1125 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1063 0 R -/Annots [ 1129 0 R 1130 0 R 1131 0 R 1132 0 R 1133 0 R 1134 0 R 1135 0 R 1136 0 R 1139 0 R 1140 0 R ] ->> endobj -1129 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [364.0856 532.3134 409.2359 543.2173] -/Subtype /Link -/A << /S /GoTo /D (a00142_ge6bae7dc0225468c8a5ac269df549892) >> ->> endobj -1130 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [455.8347 532.3134 511.5056 543.2173] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> ->> endobj -1131 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [178.2535 520.3582 263.1547 531.2622] -/Subtype /Link -/A << /S /GoTo /D (a00142_g99e43010ec61327164466aa2d902de45) >> ->> endobj -1132 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [302.7829 520.3582 348.4913 531.2622] -/Subtype /Link -/A << /S /GoTo /D (a00142_g7b04a0035bef29d905496c23bae066d2) >> ->> endobj -1133 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [267.6923 508.4031 354.8052 519.307] -/Subtype /Link -/A << /S /GoTo /D (a00142_gad14bbbf092b90aa0a5a4f9169504a8d) >> ->> endobj -1134 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [462.2904 508.4031 513.9963 519.307] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2f8f70c30b9ee08a103fbd69a4365c4c) >> ->> endobj -1135 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 496.8215 138.0296 507.3518] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2f8f70c30b9ee08a103fbd69a4365c4c) >> ->> endobj -1136 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 461.075 239.3186 481.9864] -/Subtype /Link -/A << /S /GoTo /D (a00142) >> ->> endobj -1139 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [326.8799 360.3806 400.6034 371.2846] -/Subtype/Link/A<> ->> endobj -1140 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [132.4581 350.1928 206.1817 359.3294] -/Subtype/Link/A<> ->> endobj -1128 0 obj << -/D [1126 0 R /XYZ 90 757.9346 null] ->> endobj -1137 0 obj << -/D [1126 0 R /XYZ 341.7132 422.4291 null] ->> endobj -1138 0 obj << -/D [1126 0 R /XYZ 90 405.4028 null] ->> endobj -1141 0 obj << -/D [1126 0 R /XYZ 215.4248 351.5786 null] ->> endobj -1142 0 obj << -/D [1126 0 R /XYZ 90 336.3195 null] ->> endobj -1125 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1151 0 obj << -/Length 2493 -/Filter /FlateDecode ->> -stream -xڥ˒6>_{Zu[+z͙$-o2U{sHiRG<|Wkڇ-X$ b?˂]%~xW3? F|xe,h9w/ E굦5';yx   w?hY&wP*7~ȇv"6V0MhoT -R/\6/N4sPs R58FދRWEePưD=w;iڽҼ0+^NTmӓ3pBYі ، Nf8h4*@d0c᧎Aw}u꼣iۿ¦MW4/Cj4yT׹?2.R? -ElwkZ()n6Ӳ?*t֝h)[6-Qz]E8k{3⊼1T@m/un[@H*&ߵ`H[/h/++M0 -4! GCeo%kp4<64,"n ]T@4209:fE%1lOaCe7.s72Sd Aݨ|j8 9{z]iT!{s ܰ-y3 ݖ:Zh.uB-MwQ7NWI݆adaofNp0#6Mya!f!u0E{TsFC 1+DAHG>Ӻަȅ a_oY|U,۔<7 }v;} }aǶl;,N/ 8iMH0 _B8w)}jjlÝ7}OD(泔ћޔj\"TZ_T/ /dyoK_`ӕ0U$ŭFLėAْ@sSX",~&|&~|7rwEp_#!Ku/b~a ۇ>1,oz}ڐSmfQJendstream -endobj -1150 0 obj << -/Type /Page -/Contents 1151 0 R -/Resources 1149 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1063 0 R -/Annots [ 1159 0 R 1164 0 R ] ->> endobj -1159 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [236.6531 419.6496 314.5786 430.5536] -/Subtype /Link -/A << /S /GoTo /D (a00155) >> ->> endobj -1164 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 93.195 146.3484 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00128) >> ->> endobj -1152 0 obj << -/D [1150 0 R /XYZ 90 757.9346 null] ->> endobj -1153 0 obj << -/D [1150 0 R /XYZ 194.5769 652.5717 null] ->> endobj -1154 0 obj << -/D [1150 0 R /XYZ 90 636.3994 null] ->> endobj -1155 0 obj << -/D [1150 0 R /XYZ 90 553.639 null] ->> endobj -1156 0 obj << -/D [1150 0 R /XYZ 90 546.5037 null] ->> endobj -1157 0 obj << -/D [1150 0 R /XYZ 275.1139 480.7842 null] ->> endobj -1158 0 obj << -/D [1150 0 R /XYZ 90 464.6119 null] ->> endobj -1160 0 obj << -/D [1150 0 R /XYZ 90 346.02 null] ->> endobj -1161 0 obj << -/D [1150 0 R /XYZ 90 327.3277 null] ->> endobj -1162 0 obj << -/D [1150 0 R /XYZ 90 308.6354 null] ->> endobj -1163 0 obj << -/D [1150 0 R /XYZ 90 111.5284 null] ->> endobj -1149 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1168 0 obj << -/Length 1828 -/Filter /FlateDecode ->> -stream -xڭZMo7WE-Ab P$*K~.E>x}7<ظBR#:_Xw FqIJxQla" 7[Ttm/얇ͪ>-m5ֻ|x;Ьfg/W#JDi>PʒoG a37aOxю`F 4xp}]8u8ܤEiU~*dWT|yFa}{Y0a,g*,Am'1R*ŻFGY?1Zs"d-RQM0hȹ - J$e`>{7;? Tk;yzoڹYz{hf&+)t&BvJMh$,tn2_Rqn;F"s:r6OW)39 "> lѡ0^=f(AAẋn]Ǎ,[ d+ Z7cKHSRSla)N)yY>Rʷ0ʚ -Oe6K,peY"(:D*jtoC/%.2nXkݸYLM5D穩N֫nIG5?*,H -礏>R Xi%nEW0:HFD$PuH2աONf/ߝ?;)ABt  -!Y}oWͪ}*5̜ЉqcbNxɹ*b-ʴǝÌns֏[GsNH3gC]N??qqy2=x B#5E;n VO/vzl#v4e` [鄁eA|t`+غ ۠jr %mˡ߻a8JBrQ@<ΐXc`@ -Z' čn'gb0Z/JfQv})46P%7-NbepZL=YB޶nuuC VT&|@B& $Q&^+=^\&2dq:yv1uޏRjp(ċZL2xݼ֛88w]Cw,[zU1\B2Im w`Ӽ}ތz{ڍnP_^>Nkj:xZ׻!$A}JׄZ#(36dZ"Щ""Yۇ.r`^̇*>tzoT7kf,ʰ`mHhdaZjm]Ei$nU)=9;t\ۖG芁0^GgH>_]b#{c/^=tӧ\< l0,ݝN9{u&|w۷׫15׺E?)pendstream -endobj -1167 0 obj << -/Type /Page -/Contents 1168 0 R -/Resources 1166 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1063 0 R -/Annots [ 1174 0 R 1176 0 R 1178 0 R 1179 0 R 1181 0 R 1182 0 R 1183 0 R 1184 0 R 1185 0 R 1187 0 R 1188 0 R 1189 0 R 1190 0 R 1192 0 R 1193 0 R 1194 0 R 1195 0 R ] ->> endobj -1174 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 661.3282 194.7663 670.1749] -/Subtype /Link -/A << /S /GoTo /D (a00155) >> ->> endobj -1176 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 576.9176 148.2809 586.6957] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1178 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 520.3286 184.2462 531.2325] -/Subtype /Link -/A << /S /GoTo /D (a00142_ge6bae7dc0225468c8a5ac269df549892) >> ->> endobj -1179 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [185.5712 520.3286 195.3146 531.2325] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1181 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 437.9752 204.7293 448.8791] -/Subtype /Link -/A << /S /GoTo /D (a00142_g3d4c8bd4aada659eb34f5d2ffd3e7901) >> ->> endobj -1182 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 399.3979 194.7667 410.3018] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> ->> endobj -1183 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.0917 399.3979 205.835 410.3018] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1184 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 360.8206 184.8042 371.7245] -/Subtype /Link -/A << /S /GoTo /D (a00142_g7b04a0035bef29d905496c23bae066d2) >> ->> endobj -1185 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [186.1292 360.8206 195.8725 371.7245] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1187 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 278.4673 223.997 289.3712] -/Subtype /Link -/A << /S /GoTo /D (a00142_g99e43010ec61327164466aa2d902de45) >> ->> endobj -1188 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.322 278.4673 235.0654 289.3712] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1189 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 239.89 226.2087 250.7939] -/Subtype /Link -/A << /S /GoTo /D (a00142_gad14bbbf092b90aa0a5a4f9169504a8d) >> ->> endobj -1190 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [227.5337 239.89 237.2771 250.7939] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1192 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 157.5366 234.5175 168.4405] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2f8f70c30b9ee08a103fbd69a4365c4c) >> ->> endobj -1193 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [235.8425 157.5366 245.5859 168.4405] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1194 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 118.9593 197.387 129.8632] -/Subtype /Link -/A << /S /GoTo /D (a00142_g9e97a0b4d5cc7764d8e19758f5da53ae) >> ->> endobj -1195 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.712 118.9593 208.4553 129.8632] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1169 0 obj << -/D [1167 0 R /XYZ 90 757.9346 null] ->> endobj -1173 0 obj << -/D [1167 0 R /XYZ 90 678.0824 null] ->> endobj -1175 0 obj << -/D [1167 0 R /XYZ 90 595.729 null] ->> endobj -1177 0 obj << -/D [1167 0 R /XYZ 90 539.14 null] ->> endobj -1180 0 obj << -/D [1167 0 R /XYZ 90 456.7866 null] ->> endobj -1186 0 obj << -/D [1167 0 R /XYZ 90 297.2787 null] ->> endobj -1191 0 obj << -/D [1167 0 R /XYZ 90 174.0645 null] ->> endobj -1166 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1200 0 obj << -/Length 2058 -/Filter /FlateDecode ->> -stream -xڭZk6_a`˷|KsA6qm(]?w(4%J@\:3))dҌ0 pYMoiIt jL"2_Pgosf麭rsz5! - F̷ʳZp/x^M0bZњNNin&.: -Mp˯ çVSMЊޯD̶涯rbF#B\Bn<ѰSß)٠B@BDQ. Q7/6e܈Z|/4 NMfrܑVK;|փ݁=UX kl-r7%á=֣΂qz¥BL -tM,`Ji^w[cv#*woVM -&£2 4; ;k$CeY ?zNMR0lGJNIܢKG͍۷g;59p iA"#C -Ii{*tL€c) i^wD[cRv#,{A/Z1p 9wƾtqlRlQ ''I}~ d7Cת훇Ԛ3 E;P&EL -%>ʬSb r yGdE>&i7"aؼA )Z3C]X,T$*0ռ-Nven8wn#iO`j;-bm鞆7˗ozQvp&ٔ^"+@3J)Jx5cN`孚iT4˓ӧ΁M:qw6_v\i_$#)Vvf⬶ d.}uTzjn|PkH[t՛\Cdi,G lOh?˵/-Mi#!/}qM9ߎИþΞ Es ܸ#i.?n3Y\׳[q*e۷b0hǛt<* B0ð@{_y×Џv*3t_[߮U}h ZlUU3}wgUJp-J L`%Qw h llsy,^Z)*%,{=\ T^,GZQ)F f}nscJDu;2w|[_oj8}PU1{T"}L"Eua_ҦFG˛L!M7#2IH;udP7˂;*Exyv\{30G[+ڢDx/n<|8S$SgJ Xke [wʔ@QXe~Ndur{|k?z}1?NOendstream -endobj -1199 0 obj << -/Type /Page -/Contents 1200 0 R -/Resources 1198 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1231 0 R -/Annots [ 1203 0 R 1204 0 R 1205 0 R 1206 0 R 1208 0 R 1210 0 R 1211 0 R 1212 0 R 1213 0 R 1216 0 R 1218 0 R 1220 0 R 1222 0 R 1225 0 R 1226 0 R 1230 0 R ] ->> endobj -1203 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 703.2457 207.0905 714.1497] -/Subtype /Link -/A << /S /GoTo /D (a00142_gcd3ac045f0a4ae63412e3b3d8780e8ab) >> ->> endobj -1204 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [208.4154 703.2457 218.1588 714.1497] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1205 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 663.1387 187.0159 674.0427] -/Subtype /Link -/A << /S /GoTo /D (a00142_g905451249dca72ce0385bf2a9ff178ee) >> ->> endobj -1206 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [188.3408 663.1387 198.0842 674.0427] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1208 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 577.8136 216.3557 588.3439] -/Subtype /Link -/A << /S /GoTo /D (a00142_gfa82b860a64b67d25ab3abc21811896f) >> ->> endobj -1210 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 491.7412 194.2089 502.6451] -/Subtype /Link -/A << /S /GoTo /D (a00142_g155cba6121323726d02c00284428fed6) >> ->> endobj -1211 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [195.5338 491.7412 205.2772 502.6451] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1212 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 451.6342 229.068 462.5382] -/Subtype /Link -/A << /S /GoTo /D (a00142_ge3c821e3a388615528efda9d23c7d115) >> ->> endobj -1213 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [230.393 451.6342 240.1363 462.5382] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1216 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 366.9117 206.8414 376.8394] -/Subtype /Link -/A << /S /GoTo /D (a00142_g7b5319b5b65761a845fcd1500fde4cdc) >> ->> endobj -1218 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 353.3339 200.296 363.2616] -/Subtype /Link -/A << /S /GoTo /D (a00142_gcfae9053e5c107a1aed6b228c917d2ea) >> ->> endobj -1220 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 339.7562 198.0843 349.6838] -/Subtype /Link -/A << /S /GoTo /D (a00142_g9ff1e8936a8a26bff54c05f8a989b93b) >> ->> endobj -1222 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 326.1784 207.489 336.1061] -/Subtype /Link -/A << /S /GoTo /D (a00142_ge469332907e0617d72d5e2dd4297119d) >> ->> endobj -1225 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [212.44 265.1092 223.2892 275.9883] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1226 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [344.7086 210.7642 400.3795 221.6682] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> ->> endobj -1230 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 121.7215 139.4144 144.6902] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1201 0 obj << -/D [1199 0 R /XYZ 90 757.9346 null] ->> endobj -1202 0 obj << -/D [1199 0 R /XYZ 90 720.5385 null] ->> endobj -1207 0 obj << -/D [1199 0 R /XYZ 90 594.7328 null] ->> endobj -1209 0 obj << -/D [1199 0 R /XYZ 90 509.034 null] ->> endobj -1214 0 obj << -/D [1199 0 R /XYZ 90 385.5117 null] ->> endobj -1215 0 obj << -/D [1199 0 R /XYZ 90 385.5117 null] ->> endobj -1217 0 obj << -/D [1199 0 R /XYZ 90 370.8968 null] ->> endobj -1219 0 obj << -/D [1199 0 R /XYZ 90 357.319 null] ->> endobj -1221 0 obj << -/D [1199 0 R /XYZ 90 343.7412 null] ->> endobj -1223 0 obj << -/D [1199 0 R /XYZ 90 311.1951 null] ->> endobj -1144 0 obj << -/D [1199 0 R /XYZ 90 285.6088 null] ->> endobj -1224 0 obj << -/D [1199 0 R /XYZ 90 285.6088 null] ->> endobj -1146 0 obj << -/D [1199 0 R /XYZ 221.1768 96.348 null] ->> endobj -1198 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1240 0 obj << -/Length 1617 -/Filter /FlateDecode ->> -stream -xڽYmo6_!`_l`~kpYb`ڢPd&6&KL#M"PZ "<G{Qxेa}Wf4b46 A 6ۏKFW>p 4^M}=gҴ|JԾW7כƮuKh,>~{ő#;,8eK[1Մ .YЬ.@H0_4K|p ]1FW)ȭW#;}zZG3NGm㝭hfLvuib,sd}Bk#AhTI_4KJejg2ߚF`yBjWd '! -(gnɀ/IZ)u$Pfh[Y珦_eZw~pV>lI$[|gk^*%,4O{k<$*i 8}K]Qsnƍ67ot& XǃN4R3 {mB]Ñ@D̆Q]~F1˜. ,Oz ;2Jo@-DPwpBċJ@<О\~#5ֶS8Ak{}װ\5UYdsΥ=>O#4qx81 \MLNۄaphN_#]zLQh;եhyy3,Vx@2l_3a} -wtClZoQ XYYn#?čcuܸ{hfLvuMscpch{obCLu3M}lw ޾Ո+"`h.b~h?=)v<0_BOD*z a r5BOBнLݢs~)i:HY<ƁDisQRd{#/!&(05b34 -ZV:Y; }? (?AE1 8䂺 ÅA[xeTtԜ՞hup+UL;\F2y -Wb"op_t"R -5  ʂ :4Rx`wpw͐xdo\ ?7-KKLN+5~|4Pm -q'ːӛݩoܷ5*1^9^[\CǾށAV8SR#]P]XJJ|C{oh-vI51SN̘i/(Ŭ H-V>HH:Ӊ~:n$cdYUӲ뻍׷+ MG#<"4`6еNʞfvw -ꚤgnu|++o -!MBuݫ*k}UbL}vI-ku^Lo8fIjȭ2=C#Ga69 kaշ7zi;^ 3_50 -i>o|1$~~3)S,2hve^jz_79'į({E-QmRN ?uuU|}~8//^vendstream -endobj -1239 0 obj << -/Type /Page -/Contents 1240 0 R -/Resources 1238 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1231 0 R -/Annots [ 1243 0 R 1244 0 R 1245 0 R 1247 0 R 1249 0 R 1250 0 R 1251 0 R 1253 0 R 1254 0 R 1255 0 R ] ->> endobj -1243 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [201.3618 726.9533 212.211 737.8324] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1244 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 673.1002 144.6746 683.6305] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> ->> endobj -1245 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 596.8009 139.4144 619.7697] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1247 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [204.6892 535.7904 215.5384 546.6695] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1249 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [201.9195 382.4035 212.7687 393.2826] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1250 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 264.2062 165.0084 286.8014] -/Subtype /Link -/A << /S /GoTo /D (a00142_g9e97a0b4d5cc7764d8e19758f5da53ae) >> ->> endobj -1251 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 226.0566 139.4144 249.0253] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1253 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [226.089 147.4217 236.9382 158.3008] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1254 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [492.0786 105.1501 513.9963 116.0541] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> ->> endobj -1255 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 93.5686 128.067 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> ->> endobj -1241 0 obj << -/D [1239 0 R /XYZ 90 757.9346 null] ->> endobj -1242 0 obj << -/D [1239 0 R /XYZ 90 739.9346 null] ->> endobj -1233 0 obj << -/D [1239 0 R /XYZ 221.1768 571.8217 null] ->> endobj -1246 0 obj << -/D [1239 0 R /XYZ 90 554.2766 null] ->> endobj -1143 0 obj << -/D [1239 0 R /XYZ 221.1768 418.4348 null] ->> endobj -1248 0 obj << -/D [1239 0 R /XYZ 90 400.8896 null] ->> endobj -1232 0 obj << -/D [1239 0 R /XYZ 213.6651 183.453 null] ->> endobj -1252 0 obj << -/D [1239 0 R /XYZ 90 165.9078 null] ->> endobj -1238 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1258 0 obj << -/Length 1484 -/Filter /FlateDecode ->> -stream -xڵXY6~Ї@o6iE Pdlyk9;IYmV497If\a LE]쇟4Ғ`.5H%4Xކ ->DXlQ嫀08X0/0ffgʪ%$_qpf1D~`Da)?7+=v|7N/EX`)yA(Asks"=7m? (bu@H%E #&.Z Ǣc%g/VTnbĹM "`Gܦnd -N$Ǭ8G^Iq>όT`Z01pc7ć}:82j2E^-nե!Kk%f c@'j࢒2fL]u0$B1kw;i+v̦1.s\)vp\ۧyek@@+Oܬ‘'!9(b~f7_;,5URdG)Q6D0v/| ,^3b;PZ]:P陕4"gdd /[$Ck? -c;=κds]^CY6.?nZf[OmmA:'"+Ih۷&4{ՈC7|I!%] ux ?2귗ؘDBx`no铒>K Y5dwHp~ƏN wfeI:\I!"߈aRxGZa87C QbAGa-W :o͔rD-v\lw3nPJd2c?g ,5Or\\)F:d#ѵ.5̞LJ$8Wg Jl:ڰ]/-Jh,dV@OLjo -@FfLlHh>sTO -υAdDLŰ&6E/fxWՍcݸ)K]F> 8Gڒr΋aɩ줱h"$}"'Nua'Fkv{${3P\alVQz~Nq4^m?ubiF~pL5u'r{-hl.;jdu5M!S8:z P n(շֵ*4rM#?endstream -endobj -1257 0 obj << -/Type /Page -/Contents 1258 0 R -/Resources 1256 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1231 0 R -/Annots [ 1260 0 R 1263 0 R 1265 0 R 1266 0 R ] ->> endobj -1260 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 677.3005 139.4144 700.2692] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1263 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [214.2734 447.0773 225.1226 457.9564] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1265 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 123.8393 139.4144 146.8081] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1266 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [159.2799 123.8393 187.5634 146.8081] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -1259 0 obj << -/D [1257 0 R /XYZ 90 757.9346 null] ->> endobj -1234 0 obj << -/D [1257 0 R /XYZ 221.1768 649.8092 null] ->> endobj -1261 0 obj << -/D [1257 0 R /XYZ 90 628.496 null] ->> endobj -1197 0 obj << -/D [1257 0 R /XYZ 221.1768 486.8766 null] ->> endobj -1262 0 obj << -/D [1257 0 R /XYZ 90 465.5635 null] ->> endobj -1196 0 obj << -/D [1257 0 R /XYZ 221.1768 287.9871 null] ->> endobj -1264 0 obj << -/D [1257 0 R /XYZ 90 266.674 null] ->> endobj -1148 0 obj << -/D [1257 0 R /XYZ 221.1768 96.348 null] ->> endobj -1256 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1270 0 obj << -/Length 1720 -/Filter /FlateDecode ->> -stream -xڽY[o6~08^%o-)k=E[Be+dٯߡx.E)2G1G"B1|<~9#u&jǟ4(i8_B%t~Z0 ^PAXʷ,|s'j]aezvrF-BX}[P #K18Sfd[ )ˣ3ҫ A_cm|Ƙ̒ޮ~XϯV_W]>. -8\w򮡤 |_ўT}#9m]h+KQmQ%dLf, XOoZՃ%_iU٥y7w>KDJXrVvi zSzXnv Q$!Q Z< '1cQSpCezt%s+ (B۫NK0Y0w-(h;-%f K@,cBjJuY (b:$G("L]SLKA,.R.:V,Dzүnd}8Q?MiLxH~6@!O,/W-RJG-eD"PS*(&mnMk$yXQO0hY{*H(BmetVSDƝqV֐u){v[#OʄއFPb9$<=LmN*rn˪8ncaE!₱ofajbfPEde>stPdye3VhLPU|wuwS::0q1aGȂa(|G9%0ln8Z|МizrZG!$w{GbIktv 6e#9ytg]T.,IW^QALuWNe&UNl/p"?dzH5E8aE\U.} -&`rtr_\XMdGd\6a#fs0}0%P( >yzpOj1L`񁃨s&j؅YTWku4q1k`_Co t0vߠMr\{Nq ‚1yzQgE՛Ke -E4&($M19WrS6BŠX{:Eq2UM~6Nc-ϣ LSm *8 wCs9s5=5CY{MK78Ԅ6}i.r}BǒLD gRJL-|j3S`4W5hFj6-_ 8BLF@5b4@B$3ZPS` U8nt|~ Uq`xuiOX6BL<'w΀"8vuƢX{`qaVj|\ -H{!r[NDNxUN=|A><$Erh@|I9QMR7,Cޘaz*#+ oEVaN![ 11KL!u(#LI/;x$N&̵({F7> endobj -1273 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [254.4125 726.9533 265.2617 737.8324] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1274 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [344.4185 635.8929 389.5689 658.8616] -/Subtype /Link -/A << /S /GoTo /D (a00142_ge6bae7dc0225468c8a5ac269df549892) >> ->> endobj -1275 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 536.6764 165.0084 559.2716] -/Subtype /Link -/A << /S /GoTo /D (a00142_g9e97a0b4d5cc7764d8e19758f5da53ae) >> ->> endobj -1277 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [248.3253 477.3718 259.1745 488.2509] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1278 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 347.5941 139.4144 370.5628] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1280 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [251.6528 288.663 262.502 299.5422] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1281 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [325.5441 246.9287 410.4453 257.459] -/Subtype /Link -/A << /S /GoTo /D (a00142_g99e43010ec61327164466aa2d902de45) >> ->> endobj -1283 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [216.8635 135.3029 227.7127 146.182] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1271 0 obj << -/D [1269 0 R /XYZ 90 757.9346 null] ->> endobj -1272 0 obj << -/D [1269 0 R /XYZ 90 739.9346 null] ->> endobj -1145 0 obj << -/D [1269 0 R /XYZ 221.1768 512.4758 null] ->> endobj -1276 0 obj << -/D [1269 0 R /XYZ 90 495.858 null] ->> endobj -1147 0 obj << -/D [1269 0 R /XYZ 221.1768 323.7671 null] ->> endobj -1279 0 obj << -/D [1269 0 R /XYZ 90 307.1492 null] ->> endobj -1235 0 obj << -/D [1269 0 R /XYZ 221.1768 170.4069 null] ->> endobj -1282 0 obj << -/D [1269 0 R /XYZ 90 153.7891 null] ->> endobj -1268 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1286 0 obj << -/Length 879 -/Filter /FlateDecode ->> -stream -xڵVO0~_i/D=&m!-{@PM48i-4!a;>~H}-5 P~/<# >FO,C*qs"0?I:Cy,LW Z 9G uJrw{O):wQ@ϸ O0^/wksO9M0+"iHB!H $54CI1Y$eRNqeDsյ=G'8zT \no5,:H"N-jm刟Q%BHJef@(s;[TI R},yX:.EBʨ 4<,_j|*4b_&<+&Lo̗n}ۑdm̌YIsD@pQcu wUT߁$huQʲLRqRV<ͬ,$Fsd^DIf;2a7 K]MEJd=\_=]^QI41)=0+Ɖf!;Uc?jgS^w 2 !t;25VP{ԓHXR@ 6sf( M(|qpYڲla[iXd?$Zp%WĠ4ׇሻ7fG}>OHp~Ihk63n14\=kn{,]bYg6ӹ%u[O.OzeXIL 6&LVu%i0!ܪ9Uw_p ک EAUBn4  -:a"H@f,u$R_-ّ2~lRe6L綒֗ckMj<_^KG?qjendstream -endobj -1285 0 obj << -/Type /Page -/Contents 1286 0 R -/Resources 1284 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1231 0 R -/Annots [ 1288 0 R 1290 0 R ] ->> endobj -1288 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 680.3578 139.4144 703.3265] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1290 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [253.3962 620.7106 264.2454 631.5897] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -1287 0 obj << -/D [1285 0 R /XYZ 90 757.9346 null] ->> endobj -1236 0 obj << -/D [1285 0 R /XYZ 221.1768 655.9239 null] ->> endobj -1289 0 obj << -/D [1285 0 R /XYZ 90 639.1968 null] ->> endobj -1284 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1293 0 obj << -/Length 1738 -/Filter /FlateDecode ->> -stream -xڭYKs6W(T(k75!xh9HwAGbH~dqcH1g~ -1&%|kqJx}01QcK8uG3ZSE`5"X'+|͓Y:+@Tfi_ެC^ioyTEuZ_\y?5/G=FR\2A'""D ff{ $eN+ㆎۈhG-R)yWP"XS#ͽyE "l.Û"ATP?ܙc Y"W@HO Nbx,z̐Q8Nxw֊)б$7XØTKI˻-n*])iefR#Vt*4Ƚ"M`l!+S $ecTf\h7ƏWT}Uv pa<ZI!392 QH e2On> VR1W~n]7̱r\I[}oJY==7%54 yJuJdzpjPWܾ܉Pm}g3}MwsDb3^$D@LI`Y(L -M\UĎw%R-vv*o}2rҁ ?Nۿ&x,"BGO -gBٱ(4q &IbA{WBZ~xH"T{:C|m /.j}LXNb - LXon?xu0u1[a݁~+ #8{, -DwP#n(c$V*$G{sa7(4S18,CЬ m/zi(-lϴ^(\b Qx~|{~_xhLhKF -9c2Z aD7(o&DLj }Wye}7T6+삚sca:o~t|S,4KAendstream -endobj -1292 0 obj << -/Type /Page -/Contents 1293 0 R -/Resources 1291 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1231 0 R -/Annots [ 1297 0 R 1298 0 R 1299 0 R 1300 0 R 1301 0 R 1302 0 R 1303 0 R 1306 0 R 1308 0 R 1310 0 R 1311 0 R 1313 0 R 1314 0 R ] ->> endobj -1297 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 605.7915 170.2586 614.6381] -/Subtype /Link -/A << /S /GoTo /D (a00160) >> ->> endobj -1298 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 566.9372 200.0265 575.7838] -/Subtype /Link -/A << /S /GoTo /D (a00161) >> ->> endobj -1299 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 517.124 167.3395 525.9706] -/Subtype /Link -/A << /S /GoTo /D (a00162) >> ->> endobj -1300 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 476.9297 166.1639 487.1163] -/Subtype /Link -/A << /S /GoTo /D (a00163) >> ->> endobj -1301 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [332.9003 461.5917 379.5448 471.4969] -/Subtype /Link -/A << /S /GoTo /D (a00158) >> ->> endobj -1302 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 439.4154 158.5425 448.262] -/Subtype /Link -/A << /S /GoTo /D (a00164) >> ->> endobj -1303 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 400.5611 160.595 409.4077] -/Subtype /Link -/A << /S /GoTo /D (a00165) >> ->> endobj -1306 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 316.3067 204.5193 326.6527] -/Subtype /Link -/A << /S /GoTo /D (a00143_g54a466311575a727830a92a6c3621cb2) >> ->> endobj -1308 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 302.7973 215.5877 313.7013] -/Subtype /Link -/A << /S /GoTo /D (a00143_g5eced097547fd3fac4ba2a255493d921) >> ->> endobj -1310 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 290.8222 133.6164 300.7498] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -1311 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 290.8222 225.7693 300.7498] -/Subtype /Link -/A << /S /GoTo /D (a00143_gd85fc90c30d1fc37c63c4844be5fe09d) >> ->> endobj -1313 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 277.8707 133.6164 287.7984] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -1314 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 277.8707 210.2674 287.7984] -/Subtype /Link -/A << /S /GoTo /D (a00143_g41bf109b6a45328d5744c0a76563fb6c) >> ->> endobj -1294 0 obj << -/D [1292 0 R /XYZ 90 757.9346 null] ->> endobj -649 0 obj << -/D [1292 0 R /XYZ 90 739.9346 null] ->> endobj -86 0 obj << -/D [1292 0 R /XYZ 90 739.9346 null] ->> endobj -1295 0 obj << -/D [1292 0 R /XYZ 90 716.7484 null] ->> endobj -1296 0 obj << -/D [1292 0 R /XYZ 90 622.6841 null] ->> endobj -1304 0 obj << -/D [1292 0 R /XYZ 90 334.6987 null] ->> endobj -1305 0 obj << -/D [1292 0 R /XYZ 90 334.6987 null] ->> endobj -1307 0 obj << -/D [1292 0 R /XYZ 90 320.2917 null] ->> endobj -1309 0 obj << -/D [1292 0 R /XYZ 90 306.7824 null] ->> endobj -1312 0 obj << -/D [1292 0 R /XYZ 90 294.8072 null] ->> endobj -1291 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1324 0 obj << -/Length 1594 -/Filter /FlateDecode ->> -stream -xڵM6z}0"vAH%ABUYnC)K&b ,RfÇI Ïd -g/bVΞ팸K ?~L!%[ N ןŒr~cM䄍jo$6A  M6 R6! DYMYmZU]Z fh6goŲO}m/iݓ-ԧݲN}(r];3zv)Z#)ouM v8 ۵aLg;gJ/)YcJky.PA rܪ0 O1k8Ucc2 -mDx&:U"07aO0nh&0FJI+^6 -3 QM o\(DQ7+?zejLеع3ⱻ =y!/;QﳱQc\H?E&شLZi/-MK`I#0w2f/\ׁ $ -R8{Y` {Χc`7l 3BH<*d)Aȉ|1j|^q" *?.rX\!M"y ;Y`_yo ' f[R.QA'S%"ZJy. bP0;8.%W :rRF'Kہnpa Kk3E BpT&sbcz'9 +Ҝcv~'ps>xW'h͋&iG06tɋb":lUe r;Y`܄_Onoܾ & =9bRx":U"5ON`7'`[9 PAk^UG^.z~fS3 Pr ap gYwrJSǓ=9ݯN[kT]?;m ug6fhɒoԝ~|tZ&# -)rkhx/%a6m|xfر 7~cxth85f;&I@Qm{'67!0IH=-}֛7{[Y?Cu0}ml !cUVm63hm?Զ筮yW[hgZV - %ǼOm;Tf`:(ʃO -GzFC1ĸ; CF?:S)'Z"\'QcwLr>@%L.[Qڿ|8Ce]/̣~L.cc U030mS)uLKoBd > endobj -1328 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 613.307 210.8161 624.211] -/Subtype /Link -/A << /S /GoTo /D (a00144_g12b467f314489259dd718228d0827a51) >> ->> endobj -1329 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 573.4169 211.922 584.3208] -/Subtype /Link -/A << /S /GoTo /D (a00144_g20bc87e5c063c3f4b01547be6e5a0148) >> ->> endobj -1330 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 533.5268 202.5074 544.4307] -/Subtype /Link -/A << /S /GoTo /D (a00144_g41d37ea1e3bd24f7b51e9409aceaaa80) >> ->> endobj -1331 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 493.6367 209.7101 504.5406] -/Subtype /Link -/A << /S /GoTo /D (a00144_geb79c914cf137e6d27fd7583e5a66679) >> ->> endobj -1332 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 453.7466 203.6134 464.6505] -/Subtype /Link -/A << /S /GoTo /D (a00144_gd8e8bc9bc0e2ea4a24a8a024fd3a7f7c) >> ->> endobj -1333 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 413.8565 210.8161 424.7604] -/Subtype /Link -/A << /S /GoTo /D (a00144_g5323320b7316647042016f17c4e881be) >> ->> endobj -1334 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 373.9664 206.3828 384.8703] -/Subtype /Link -/A << /S /GoTo /D (a00144_g30e827f33eacff55ecb4d8fb5a11d5d1) >> ->> endobj -1325 0 obj << -/D [1323 0 R /XYZ 90 757.9346 null] ->> endobj -651 0 obj << -/D [1323 0 R /XYZ 90 739.9346 null] ->> endobj -90 0 obj << -/D [1323 0 R /XYZ 90 739.9346 null] ->> endobj -1326 0 obj << -/D [1323 0 R /XYZ 90 716.5154 null] ->> endobj -1327 0 obj << -/D [1323 0 R /XYZ 90 632.7749 null] ->> endobj -1335 0 obj << -/D [1323 0 R /XYZ 90 334.9631 null] ->> endobj -1336 0 obj << -/D [1323 0 R /XYZ 90 308.245 null] ->> endobj -1337 0 obj << -/D [1323 0 R /XYZ 90 308.245 null] ->> endobj -1338 0 obj << -/D [1323 0 R /XYZ 226.1581 201.4941 null] ->> endobj -1339 0 obj << -/D [1323 0 R /XYZ 90 183.6017 null] ->> endobj -1322 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1348 0 obj << -/Length 1499 -/Filter /FlateDecode ->> -stream -xڭX[o6~0`.}֮h]dqڒ+KKwxeݜ,E9}<4I "ql lqW}5z_4 H*[A$(u9drEcyax_fNrUQu^˯۸.-$Q/>A[`ĒX$ N~3`lvb‚n uֱ@Ba=!ab() Ƥ7!Ͳ^$]yu9_%ުڛ|鐗}|b2I2:6p9an>, *ݫZUS1JG$Z3 ': >@Z qpr -XP`@.>WYp%  wPn]Zqng[k tS}ޮc}i -4{pݲCMeƂNR#2t[q7(03|"7z45 sNmi2uaDq - FX2H"(b%ٸ''澧s O,M( R 1:ʹZD$}Zgb\)Nf}RIޣD"B4NQ(dYt- hUmV ogt]wvרs9rs@;rr8:|%xO5dPٹ/UR"<7dw1p ! ZMaIK`F>LԚ],' Yܟ$$(uyѠ 4+GRF+:V3 % -]VXΐb&>'=l7}xFG4(eAOk,W}%P gj.ddE ߴ lZbvӂ#GB=:M=ZU7WK?9LG@ɵF֖V`ߊR+|,܄pypVrUVY_վu`iCCYdz&~%;7ʕK+ڪBUikmշvw8G IS yhZ4&RnV zQGU,Cr K}J, sfqxTʮ44:ADt(7R%hbXoMZk^h<څsK:,6^y*gq&'df:5Zl%G XWͦ'GIY/*_HsW9o`F2> endobj -1352 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 411.5145 158.5126 434.4833] -/Subtype /Link -/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> ->> endobj -1354 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [217.1221 221.3274 271.6871 244.2962] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -1349 0 obj << -/D [1347 0 R /XYZ 90 757.9346 null] ->> endobj -1344 0 obj << -/D [1347 0 R /XYZ 226.1581 652.2086 null] ->> endobj -1350 0 obj << -/D [1347 0 R /XYZ 90 635.97 null] ->> endobj -1342 0 obj << -/D [1347 0 R /XYZ 226.1581 538.4468 null] ->> endobj -1351 0 obj << -/D [1347 0 R /XYZ 90 522.2081 null] ->> endobj -1345 0 obj << -/D [1347 0 R /XYZ 226.1581 389.7944 null] ->> endobj -1353 0 obj << -/D [1347 0 R /XYZ 90 373.5557 null] ->> endobj -1341 0 obj << -/D [1347 0 R /XYZ 243.8616 199.6073 null] ->> endobj -1355 0 obj << -/D [1347 0 R /XYZ 90 183.3686 null] ->> endobj -1346 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1358 0 obj << -/Length 998 -/Filter /FlateDecode ->> -stream -xڥW[8~WDZiz|}ԪݪGZ孭r *$,wU<`o>ņ"CD&pnB5~~;zx73!F1-ɀEǩ"|3Iw`Y(e!pNΎ8Ռ)7ϋɛEcc\5gn~0E`l'&6zyØ{xہ%5֒P ]HQnO(I$ Zs_}ZTXQ:kT&J~is s3\f!B l>fզx}SBØoeK*p&}d}W8=\0|FhxN5'BDR Zj /P@DΝ/V,1 ^7rH+ _€n[2K6g 4"^1DR_uf {+gUYKl%W̻ \6^WC}PՖ^{ijc |d7b7xK20;v |ؘݗ3&=j_cNendstream -endobj -1357 0 obj << -/Type /Page -/Contents 1358 0 R -/Resources 1356 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1340 0 R -/Annots [ 1360 0 R 1361 0 R 1362 0 R 1363 0 R 1365 0 R ] ->> endobj -1360 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 624.1462 158.5126 647.1149] -/Subtype /Link -/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> ->> endobj -1361 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 586.5419 139.4144 609.5106] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1362 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 586.5419 262.94 609.5106] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -1363 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [282.8054 586.5419 416.0743 609.5106] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -1365 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 429.2598 158.5126 452.2285] -/Subtype /Link -/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> ->> endobj -1359 0 obj << -/D [1357 0 R /XYZ 90 757.9346 null] ->> endobj -1343 0 obj << -/D [1357 0 R /XYZ 226.1581 562.108 null] ->> endobj -1364 0 obj << -/D [1357 0 R /XYZ 90 545.3808 null] ->> endobj -1356 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1370 0 obj << -/Length 1193 -/Filter /FlateDecode ->> -stream -xڵXs6 ~_Gnb .i/u[It-ϖf@eQvyiA"%2! ͖#GM`hh ŵ][@m%?maRvN<0c>ڼ86 -/?"kQ=(-@ԐmcJꣀkO!!('S=Q m -F$JTHxhb^is' C04>PV82i)܈ p[S` ->#Pz} -o2_A90ॆk JˎyŁ]- D[cP SDv0[ODrBʶ-}ll Tc%t}ҕ`,@ӗ˾]:3Qә[uu}ՓwXׇ}L1!ܼo-'7E3~

    eтHe0L}2-'"Io{-N؂C]vm*ﯾ"^H4!NK>-5bb69a4_-b8ݬ,` @H6 'ikhh!ޓ)vet877RBmU]f0I|r=PleBW@Pm(=P?)Ȭlf?o^zDaݓ~vMb)v|n*lWɓ FC/=1!'NЮlp=t0bJQ';22};]HeC`Ú9'q;'Ż@@$W#0_TcW$~[ _Wuc6i7vn_0w%ɭNo^^eDendstream -endobj -1369 0 obj << -/Type /Page -/Contents 1370 0 R -/Resources 1368 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1340 0 R -/Annots [ 1374 0 R 1375 0 R 1376 0 R 1380 0 R 1381 0 R 1384 0 R ] ->> endobj -1374 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 615.6894 166.9111 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00145_gc48ed5f0d27721ef62a3ed02a5ad8d2e) >> ->> endobj -1375 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 576.8351 180.1912 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00145_g22f140b02c354dfebcc7ad481c3bcd68) >> ->> endobj -1376 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [184.0068 576.8351 208.6941 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1380 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 414.8106 227.254 437.7793] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -1381 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [247.1194 414.8106 380.3883 437.7793] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -1384 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.8969 339.5315 225.6901 350.4107] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1371 0 obj << -/D [1369 0 R /XYZ 90 757.9346 null] ->> endobj -652 0 obj << -/D [1369 0 R /XYZ 90 739.9346 null] ->> endobj -94 0 obj << -/D [1369 0 R /XYZ 90 739.9346 null] ->> endobj -1372 0 obj << -/D [1369 0 R /XYZ 90 719.4886 null] ->> endobj -1373 0 obj << -/D [1369 0 R /XYZ 90 634.6393 null] ->> endobj -1377 0 obj << -/D [1369 0 R /XYZ 90 539.515 null] ->> endobj -1378 0 obj << -/D [1369 0 R /XYZ 90 513.03 null] ->> endobj -1379 0 obj << -/D [1369 0 R /XYZ 90 513.03 null] ->> endobj -1382 0 obj << -/D [1369 0 R /XYZ 224.9827 374.7449 null] ->> endobj -1383 0 obj << -/D [1369 0 R /XYZ 90 358.994 null] ->> endobj -1368 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1388 0 obj << -/Length 1934 -/Filter /FlateDecode ->> -stream -xڽZ[o6~k8^D*.mbò6݀AJ"ԖRYjCbbQҡHmIxx>^LeP̂pxy_/~|O\ŏhQpyqZ r">se _}L_Wg_V{MyYRxxyahD2 P~ł/#t[wkG=h6e CM) rL0>CO b[w,9.NN:ɷFY9i?HCsFEk\glpL*}7_#Qdd_VmibEU x,ԍǼ? G"øicZda8h5nQDp#~} (g-8 ~!hDzNc޺4 Gc`Whxh ) =10(6c#Gy,PHi>q-A䌣XJ:2F&I\~H5ūktP21W% #̓MfD2{d'sd5Uy8BXDX3E1Px̜vS9m`mN,A* -*}YnSھ_ڂɊ:/yR4>]6D!̈na~I8$1J;Cs$1Mc`HB,͇'s;DL&#bQ*Cku $  1}v T =1(5RzBuZ KI}?;޽<{(8aE3ʹ_+ t4~ic@`:!16`\A+&zSLZt-E7x(ń^UMfѪ]=ALԞ }¼2r NȨ/2ص2*q q(?\c Yd6k>eZ}Rw=4{{84vM7K -DŽPXԇE|fpSo`_yzM$HiꂆE~}X>\؄>:~:1}ׇ |}2!26W$L3냋"y0&3#aXXtTyr f ]. ̯ 6%dcTcgkpQRL&Q8cuفo&is; rY}(gxR._ޝzu,oaIg3EO()LeEWPx&g=5 -/f.=Q{+:z*f9|>v!֡بPwYћs6Myi -wH@D64L]&ձTUlX=gYðx0Ly&YY]ϙs'qR֦Ȫ[=q5j}u48lEϦ+vL_a^=BanN B&pʡMRijf$6w?Kvf˟zԉ1@:iC`X0gTi.nQ6M٨^I=xغs.K #L7ؗcrND;QwZu5W"|C ۡt҄-xP}@ןrc/4){E/# cf?7VjKƉPþl򹹃vn -?7eSdf-eȌLZ D?Ts*M`MGݺ$d^gEV%& /oO+qC)n&/w`)!1xNendstream -endobj -1387 0 obj << -/Type /Page -/Contents 1388 0 R -/Resources 1386 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1340 0 R -/Annots [ 1392 0 R 1393 0 R 1395 0 R 1396 0 R 1397 0 R 1398 0 R 1399 0 R 1400 0 R 1402 0 R 1403 0 R ] ->> endobj -1392 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 611.3557 185.9198 622.2597] -/Subtype /Link -/A << /S /GoTo /D (a00146_ga4360412ee9350fba725f98a137169fe) >> ->> endobj -1393 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 570.6172 198.084 581.5212] -/Subtype /Link -/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> ->> endobj -1395 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 529.8787 213.1775 540.7826] -/Subtype /Link -/A << /S /GoTo /D (a00146_gfd5ebb56a1bd1da9878aa886a2075e80) >> ->> endobj -1396 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [242.9955 529.8787 285.9441 540.7826] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> ->> endobj -1397 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 515.9852 222.4327 526.8891] -/Subtype /Link -/A << /S /GoTo /D (a00146_gbaf0bb2b6a4424b4eb69e45e457c2583) >> ->> endobj -1398 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 475.2467 205.2871 486.1506] -/Subtype /Link -/A << /S /GoTo /D (a00146_gf20aaf4292cb0d2a1b10bc0a568b51fa) >> ->> endobj -1399 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 434.5082 218.0093 445.4121] -/Subtype /Link -/A << /S /GoTo /D (a00146_g2c64c8c36bc84f9336f6a2184ea51883) >> ->> endobj -1400 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 393.7697 242.358 404.6736] -/Subtype /Link -/A << /S /GoTo /D (a00146_gf5c2ad5acf3cc23b8262e9ba6a15136b) >> ->> endobj -1402 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 306.5867 133.6164 317.4907] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -1403 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 306.5867 166.9014 317.4907] -/Subtype /Link -/A << /S /GoTo /D (a00146_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -1389 0 obj << -/D [1387 0 R /XYZ 90 757.9346 null] ->> endobj -653 0 obj << -/D [1387 0 R /XYZ 90 739.9346 null] ->> endobj -98 0 obj << -/D [1387 0 R /XYZ 90 739.9346 null] ->> endobj -1390 0 obj << -/D [1387 0 R /XYZ 90 719.0647 null] ->> endobj -1391 0 obj << -/D [1387 0 R /XYZ 90 631.2478 null] ->> endobj -1394 0 obj << -/D [1387 0 R /XYZ 90 549.9141 null] ->> endobj -1401 0 obj << -/D [1387 0 R /XYZ 90 326.4788 null] ->> endobj -1404 0 obj << -/D [1387 0 R /XYZ 90 266.2048 null] ->> endobj -677 0 obj << -/D [1387 0 R /XYZ 90 239.2959 null] ->> endobj -1405 0 obj << -/D [1387 0 R /XYZ 90 239.2959 null] ->> endobj -1386 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1414 0 obj << -/Length 1818 -/Filter /FlateDecode ->> -stream -xX{5?"J(1~J+=U8Tiu{a=wg&\K)Bg=x]˛g]/8d'|e4xR<~5qt&I}q'q":D?ɗΪJlflt>oZ\ >g#T[Lߌtbcf 3 ϐ uq .\x1n0&uNu6yOQREVrw -6N򚈨"lm{ Dҝ`In:dMTiD~j* ].6{\y/sJ9hoٚYv\Qg&`Rg)9zΫ.2]}N n4% -}'ʩ]F YP[BBnU$jUgK N&t >b>*4m_~KEzYQnQ]m7qa/P<"&9Qa9$c׏)jXԫWf -O27Aد[ڮu?F!(yqu}>: -վci -($;56䧍o\ǡMK9l :NG"upr$lgON]㇓$x[tMuy>2ÞbmY{˞Oc 5Vursv%YmRmfl︔OZ{\:Ԇ.3%NT=GCǁޓ}>P8VW[@2 D\fEŊQHA4v,{ 2cc. >И"dugYs\M#0wem/>;)d^fp'IБx,,x!o`\F<Ь,XWkO#Aߢ>; Tɍ.JLm3T =37Ns .b%hIgVn)!Ӹ,YJ0&HCE -;u#N61@ -A 䢢^?d wV]IH[ ]kyŒ!Kj>jcY?i^x0 ~IJ|BWub*CvMtGM44E2±k\8F_q}Gd/ƪpJ]Е{s& r.Џ p(iB;phc&eNߔўEE-R68 -"i7 ߂ɚ; -;V!T19m!a5P -]LvHa4IZ8J͗ A򎰳{$!996RѦPp -#- lo! -d [#[ -|V"l-@M؇"V~0(Zθ=p _PNߍ QiX@!@]:z7i=dn<±%U&t;"(73Qm?-?L7{=D0 |>|op>xw: endstream -endobj -1413 0 obj << -/Type /Page -/Contents 1414 0 R -/Resources 1412 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1340 0 R -/Annots [ 1416 0 R 1417 0 R 1419 0 R ] ->> endobj -1416 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 418.8948 227.254 441.8636] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -1417 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [247.1194 418.8948 380.3883 441.8636] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -1419 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [314.29 105.1501 371.0667 116.0541] -/Subtype /Link -/A << /S /GoTo /D (a00152_g54b27e45df15e10a0eb1a3e3a91417d2) >> ->> endobj -1415 0 obj << -/D [1413 0 R /XYZ 90 757.9346 null] ->> endobj -678 0 obj << -/D [1413 0 R /XYZ 226.1581 392.748 null] ->> endobj -1418 0 obj << -/D [1413 0 R /XYZ 90 373.4515 null] ->> endobj -1412 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1423 0 obj << -/Length 1804 -/Filter /FlateDecode ->> -stream -xYmo6_!`_ld*J6`[eM-baJr`Q$eYr~D/<=>=wx(b<n>m_?N#/BQ@$(Uv sOZ"]¼g*ͳCNȒgW  Uh$oc//(=<`Dz=l=f092|*͏lI H2JK|"I%&IHDWVJ{&/aӕ`\so47/.իK;zvTbў+xEm`wH$]ז'47zXoTflጚ3qVs̈T:Q: ->TYҝ变5B#0 $^$0a@($-^踍x*U}6"(cCFBBQ&Z5ue4Ĵ] Ww6K\+7ѩ:]3iiess`h7&lTUnKM2QDgn&w4GQH8cMqk^wV߮B6XPV L&w}ZhNi3>kf iHߛEd`Cѷ~5IG{j̲ 6 -SI(!Sc|+sݤMI7Fw^| CG@# -X=(iJƵN`JnM9 - m 7ڶת,VF<i*TbI3aYIZYf)bBA (5K`odC3z<@ Kb''$@Xv~ - 4=D}JwRs8BraLJկS9Ӿp-1ڑx3H+ :CΙc5q$^llszM_YY81sU;(sUMOƕXM\Ho!gk'EB[]!uͥ8}% -Zjl֕;rOۣ5s`tnK\0 T'6` NlNlNc .ԩه 899pS=4l/Nh2e!‚ɮ&ۅhc:BM -ضlʾ`VzGk>*+ޕ׸~N+$=C5eMk]p~`fd F]''gMWo60ꇪC!U;`ʫ=,vb"1*k/05[4=vP/Ҩ2e1N-D[gL:AQo*>4vϓ\ߖ:4P Q\?`HƹI~QRB:g ~i~rg[q8_8/{fe - -kVʰ(or 5{ )Ͷ 6*`# $7l>08y=a$zOݶ1 ƒpR38FhkRͬ!9a 偋p\qSufBpSsywȎ8-q wHd8_靼ߞ0BKf⠇QNj;Ӏ. -' .dj -h[zx6@tNҳ NO:E GO)>l"bjX  WCgk!L! `Y, TWv]n^poW|N9bX樎 [5{?+"endstream -endobj -1422 0 obj << -/Type /Page -/Contents 1423 0 R -/Resources 1421 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1437 0 R -/Annots [ 1425 0 R 1426 0 R 1428 0 R 1429 0 R 1430 0 R 1432 0 R 1433 0 R 1435 0 R 1436 0 R ] ->> endobj -1425 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 593.8152 227.254 616.7839] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -1426 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [247.1194 593.8152 380.3883 616.7839] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -1428 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.4376 488.8567 182.4258 499.7606] -/Subtype /Link -/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> ->> endobj -1429 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [305.6958 488.8567 344.7692 499.7606] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -1430 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [197.486 438.1531 236.5593 461.1218] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -1432 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [132.348 333.1946 215.6849 344.0985] -/Subtype /Link -/A << /S /GoTo /D (a00146_gbaf0bb2b6a4424b4eb69e45e457c2583) >> ->> endobj -1433 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [197.486 284.5483 236.5593 307.517] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -1435 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [250.4549 179.5898 309.4431 190.4937] -/Subtype /Link -/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> ->> endobj -1436 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.1787 167.6346 205.1669 178.5385] -/Subtype /Link -/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> ->> endobj -1424 0 obj << -/D [1422 0 R /XYZ 90 757.9346 null] ->> endobj -1407 0 obj << -/D [1422 0 R /XYZ 226.1581 568.2372 null] ->> endobj -1427 0 obj << -/D [1422 0 R /XYZ 90 549.794 null] ->> endobj -1408 0 obj << -/D [1422 0 R /XYZ 226.1581 412.5751 null] ->> endobj -1431 0 obj << -/D [1422 0 R /XYZ 90 394.1319 null] ->> endobj -1409 0 obj << -/D [1422 0 R /XYZ 226.1581 258.9703 null] ->> endobj -1434 0 obj << -/D [1422 0 R /XYZ 90 240.5271 null] ->> endobj -1421 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1440 0 obj << -/Length 2117 -/Filter /FlateDecode ->> -stream -xڭY{6ߟY>DJLf&Hs{40jK$'oMq6c8p^?xI~A]o_|GR")X4A.A4/oq@6|LE=I,V^-nZg(.Z`d̗.29,.1zow!ń-LKsI"(ApWD,,ZF!~lgLQ(]vĶT#E 7%y jf2ؕjAF8BPSՃ!UisʪLϘc#CD XٴfZÑDQDZ;[esOA/! S͓Q62}bؔfN4/+0O{ӊsfXRz+K7{z%HT@6AL'BZ\d5"K!9))AKnd>8!EU+y嫵8|kG2w/o7^n7oœ'uzqB:iBrKVKJ,,(:TMyndV4o?fզΊjGgg' `!Ku= 0 ^KUT1knI>4B& J--Q'4-Z*z//noNq>kov3Mᚆa)J󽷄fua -b1OTGԚotȦqBt]͙8σЛyZ27+s}LP -}kp:|*ьZHcn -Ssn6 CWUT "vX$|9uK5jMB&X1J!#="cZoH=K%΃hZ!2p̄$GX¦FI/;l0lg}4D,ĄA&cCߔIjw3 Of,QS1.rMmuS͹ʐ8r I Z3F>Fq2BB<99'v^K!CTR`P*XW,1qWZjU&)͜ZqTzVhK?1_P_c@"[92$.n$5RTFJL4%HhL5T+>`>&mOIO9sŭ˴N<]+]j Fc>TtH!Os}V0QtlTk[t>˨Q>ρ7r("fifSzɾx瑽W*[G'Zj2w7kAlJR<3.iZ3Cėr(Gd?M.;xӌK}(8/:]خɉȘ !!M\TsGܔo{7OONFtۋX6xJ&[tJ> endobj -1442 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [148.7083 717.9621 207.6966 740.9309] -/Subtype /Link -/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> ->> endobj -1443 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 557.7163 227.254 580.685] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -1444 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [247.1194 557.7163 380.3883 580.685] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -1446 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.0274 456.6895 204.9409 467.5935] -/Subtype /Link -/A << /S /GoTo /D (a00146_g2c64c8c36bc84f9336f6a2184ea51883) >> ->> endobj -1447 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [338.5705 456.6895 377.6438 467.5935] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -1448 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [197.486 407.7474 256.4846 430.7161] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -1451 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.3636 322.487 147.1755 333.3661] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -1452 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [147.6736 322.487 182.6919 333.3661] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -1441 0 obj << -/D [1439 0 R /XYZ 90 757.9346 null] ->> endobj -1410 0 obj << -/D [1439 0 R /XYZ 226.1581 533.8997 null] ->> endobj -1445 0 obj << -/D [1439 0 R /XYZ 90 517.2837 null] ->> endobj -1449 0 obj << -/D [1439 0 R /XYZ 90 367.3148 null] ->> endobj -1411 0 obj << -/D [1439 0 R /XYZ 90 342.9866 null] ->> endobj -1450 0 obj << -/D [1439 0 R /XYZ 90 342.9866 null] ->> endobj -1438 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1456 0 obj << -/Length 362 -/Filter /FlateDecode ->> -stream -xڥRn0+|Lv`-*R>rTA (ʭx"!@S2-E !==rM5ӊ+ -iV"d<Ӌ&FV1Btt?Pw("%PBcEf <%Jm0Ԛ IK8)($+9+߫Y}\WuЌBMSJ!y,gN0)$o4sSKǶmrA]BI`_VchKPP1 -$Mwr:M!!ˆ8 -3s5ʹ!^ԷwCendstream -endobj -1455 0 obj << -/Type /Page -/Contents 1456 0 R -/Resources 1454 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1437 0 R ->> endobj -1457 0 obj << -/D [1455 0 R /XYZ 90 757.9346 null] ->> endobj -1454 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1460 0 obj << -/Length 2132 -/Filter /FlateDecode ->> -stream -xڭZ]o6}X8~˰-k.{jAԫ#eh?RiJxC,˫s(Rdk>n7n퉻cG{; -Dgj4:mTWͣKaA- G湗l{;}Dc]o ;XBM q$0#m,;i]\UINRL-tW#5q -T6= -5Xʡ~8ۯv=MCaD6xzm(J(ҙ( XUS? c ζ1?QISIo)9crBmƮ̋iW vUJ1pUZ׻*p@!/!ɦ@}yX_!a]W_]:쥺(3jdxE̖Uf#m>t,5q!ʺ_l8ϩ?}A擛'57SM> JHOH1Ρr0T u} %4)t+նa(5aȁCA[V r!0ɬ}M&BzsU 5laC„]g.lx0"^g&l,8$ؘYγqNl?CzsI"S8 L8]fx tsޮD&&sE8e1ĭLS&vvtQm#x4{گ v2msJX_yj`)uC s|# }hfs0ȂCA[2a|!:awk\ѵOw}|4c%Ow.<*]E35<HA`ث&?5| &S 1%Etj&a` MuMb 7xFˆx9vPiĘ,,8$BdfЩ`67w| -Rq}8D@bެ@^3 -!fKΑISq"B)?8THfxNHſcp7Q 4 ٲ9:%FK ߟׯ09 @Ȅj0eF^ ^tׇ^ˆxM T,Eh\\L8BĖtZHdI!:t ^wQlϤ]W_SAR -ra7 x:<fxz t_[}l@U QPP[Y?2mBtf#;1Z{i[;hPmxl0e{axaD~v鯙S$Q@1[݉VHJvlv>iֶ]h(svB -$Q拇 tˆx{sJs$ -B#XKN|B|u:wn_\f2N@\1h`)uC s#5[YcP|ĖwھQS~w/Kޮ3/2w1- 'ד"P6FCMMa#^}= -w/xﱛ'ЂvPl/ڕ;P܇vRg=+cٿn}~?/Wd?Gendstream -endobj -1459 0 obj << -/Type /Page -/Contents 1460 0 R -/Resources 1458 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1437 0 R -/Annots [ 1465 0 R 1466 0 R 1467 0 R 1468 0 R 1469 0 R 1470 0 R 1472 0 R 1473 0 R 1474 0 R 1475 0 R 1476 0 R 1477 0 R 1478 0 R 1479 0 R 1480 0 R 1481 0 R 1482 0 R ] ->> endobj -1465 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 615.0435 211.932 625.9474] -/Subtype /Link -/A << /S /GoTo /D (a00147_gef14e83c046e19ab9fe9d1bbcca276c2) >> ->> endobj -1466 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 601.9516 194.2086 612.8555] -/Subtype /Link -/A << /S /GoTo /D (a00147_g1a1bc437c09ddef238abab41d77c3177) >> ->> endobj -1467 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 562.8165 207.3095 573.7204] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8411c95a4d89367ad2d9d6bde1a3d537) >> ->> endobj -1468 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 523.6814 185.9097 534.5853] -/Subtype /Link -/A << /S /GoTo /D (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) >> ->> endobj -1469 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 484.5462 185.9099 495.4502] -/Subtype /Link -/A << /S /GoTo /D (a00147_g88d2ccf7cd821f89d9a8df7e3948b56c) >> ->> endobj -1470 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 445.4111 182.0444 456.315] -/Subtype /Link -/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> ->> endobj -1472 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 406.276 196.4303 417.1799] -/Subtype /Link -/A << /S /GoTo /D (a00147_g64a238a5c02640a7a4aef004163aeb47) >> ->> endobj -1473 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.6975 391.5148 410.5505 401.4201] -/Subtype /Link -/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> ->> endobj -1474 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 367.1408 190.333 378.0448] -/Subtype /Link -/A << /S /GoTo /D (a00147_g81ac47cee1c18f6aa479044069db7ca3) >> ->> endobj -1475 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [377.83 352.3797 416.683 362.2849] -/Subtype /Link -/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> ->> endobj -1476 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 328.0057 224.0965 338.9096] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga9de254b8aa308eb4aab17efdde622d2) >> ->> endobj -1477 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 288.8706 198.383 299.7745] -/Subtype /Link -/A << /S /GoTo /D (a00147_g26a14b8dae3f861830af9e7cf1e03725) >> ->> endobj -1478 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 249.7355 188.5699 260.6394] -/Subtype /Link -/A << /S /GoTo /D (a00147_gde6634974418e3240c212b9b16864368) >> ->> endobj -1479 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 210.6003 205.825 221.5043] -/Subtype /Link -/A << /S /GoTo /D (a00147_gdb971fb1525d0c5002f52125b05f3218) >> ->> endobj -1480 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 171.4652 190.8911 182.3691] -/Subtype /Link -/A << /S /GoTo /D (a00147_gef6c4140c632b6a406779342cf3b6eb6) >> ->> endobj -1481 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 132.3301 195.3145 143.234] -/Subtype /Link -/A << /S /GoTo /D (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) >> ->> endobj -1482 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 93.195 200.8635 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) >> ->> endobj -1461 0 obj << -/D [1459 0 R /XYZ 90 757.9346 null] ->> endobj -655 0 obj << -/D [1459 0 R /XYZ 90 739.9346 null] ->> endobj -102 0 obj << -/D [1459 0 R /XYZ 90 739.9346 null] ->> endobj -1462 0 obj << -/D [1459 0 R /XYZ 90 716.6852 null] ->> endobj -1463 0 obj << -/D [1459 0 R /XYZ 90 634.1338 null] ->> endobj -1464 0 obj << -/D [1459 0 R /XYZ 90 634.1338 null] ->> endobj -1471 0 obj << -/D [1459 0 R /XYZ 90 425.5097 null] ->> endobj -1458 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1488 0 obj << -/Length 2344 -/Filter /FlateDecode ->> -stream -xڵ[nF}W &d3@ٌ) ͱ╨L~Ivɦ8-aUub qB.nXߦoo=w GzqQ/KM+<;^^6뇪YwOvSnj[J?>.%4nsot񽽡D8pB s/7pyh05Cbjyn(p{dM7U~%.h$M#m.6|w=iwuh_9Yg}_ O}X5Erk VJ_Z)W# %xj@qo /NDG7, -wJΑ;6L%(G>׻ې_dw֒ujG>+q4R:q:ѩ9.0ޭu@80r -">5L@c]t~tt'펏JӶq};?8ЕpY<)'Rү5#0T,A0g( #1!63$άх2("TPӢ;Ss^Y"౿3bQZe,Eab 0\,X~XR32p>G,02A,G"ݷ/CuRrB" -$RԏPD۹)Q.?.~|Js Vשc8Z tbDH Jϡt9nJcqБ4D?MhMib?P>o}&{{f)?lVU -4p)G`_C3؎M$57B7ujKȪ Dr(SSHietkPRR_`~E|iY8tak,4aƊC ~ZqxL15}YbE ۬ ${ 0NP<Af?ӿ7S0C(1pjFCǦNa]Y.k KSzw +eaUR?:)4pBkLB58T= -\IEQ̉S\˩9R.0)[I@<B[M - >cJ9wY,b6<*{L]&Bm RtI)x0WẄI8p 'A 8D4EF滤,BF#7o%41 "}7E<6n:zsQaDޯ0a8y Hə x4Kx9aC2Pv)4Fԗc]~ 8FA-TV#^,BPbBQc!#Xq*EsE2нrmM_x:"~ݻjyLsרjF BPwhzalOC0,G0ep׻4r[ GQ%Bx&|ef%ZyI%p]۸ޒt&n=h3ۥYTy{ ۲]7>C}~7 N٩?N}o`j'doڴBۓ~a.>Wº}ad ]scz,} G.0oߡKa8LƑws3ş8Lg}?2}e?oo; 0Si⌰ - :P5qs|{Oo̿My Ѳ)Fp7|S1U6!endstream -endobj -1487 0 obj << -/Type /Page -/Contents 1488 0 R -/Resources 1486 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1437 0 R -/Annots [ 1490 0 R 1491 0 R 1493 0 R 1494 0 R 1495 0 R 1496 0 R 1497 0 R 1499 0 R 1500 0 R 1501 0 R 1502 0 R 1503 0 R 1504 0 R 1505 0 R 1506 0 R 1507 0 R 1508 0 R 1509 0 R 1510 0 R 1511 0 R 1514 0 R ] ->> endobj -1490 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 702.9069 191.2995 713.8109] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> ->> endobj -1491 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 664.0494 180.9385 674.9534] -/Subtype /Link -/A << /S /GoTo /D (a00147_g58bb90796c1cdad3aac2ecf44d87b20e) >> ->> endobj -1493 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 625.1919 204.1906 636.0959] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga87feebc7cffd4d8300e776cf64e4fec) >> ->> endobj -1494 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 586.3344 180.9384 597.2384] -/Subtype /Link -/A << /S /GoTo /D (a00147_gb5fecbc62edd128012cea0f47b57ab9f) >> ->> endobj -1495 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 547.4769 214.9411 558.3809] -/Subtype /Link -/A << /S /GoTo /D (a00147_gf2dbaceb10c67783a115075b5b6d66df) >> ->> endobj -1496 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 508.6195 203.0756 519.5234] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga20812098a4663c8a9fc4ce8e95391b6) >> ->> endobj -1497 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 469.762 203.6235 480.6659] -/Subtype /Link -/A << /S /GoTo /D (a00147_ge5ab69d40013e6cf86ef1763c95d920e) >> ->> endobj -1499 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 386.9994 175.2098 397.9033] -/Subtype /Link -/A << /S /GoTo /D (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) >> ->> endobj -1500 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [179.0255 386.9994 203.7128 397.9033] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1501 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 348.1419 185.1725 359.0459] -/Subtype /Link -/A << /S /GoTo /D (a00147_gaa585784b0914cac1d37f07f85457008) >> ->> endobj -1502 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [188.9881 348.1419 213.6754 359.0459] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1503 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 309.2844 152.9837 320.1883] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -1504 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [160.9538 309.2844 211.6433 320.1883] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> ->> endobj -1505 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.459 309.2844 268.3701 320.1883] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -1506 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [307.2043 309.2844 331.8917 320.1883] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1507 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 270.4269 171.8826 281.3309] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -1508 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 231.5694 172.9089 242.4734] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -1509 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.8791 231.5694 236.859 242.4734] -/Subtype /Link -/A << /S /GoTo /D (a00147_g79c4110211247df3fb30b8cf1c4c02af) >> ->> endobj -1510 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [240.6746 231.5694 293.5858 242.4734] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -1511 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [332.42 231.5694 357.1073 242.4734] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1514 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.5934 93.195 210.4073 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) >> ->> endobj -1489 0 obj << -/D [1487 0 R /XYZ 90 757.9346 null] ->> endobj -1492 0 obj << -/D [1487 0 R /XYZ 90 644.2869 null] ->> endobj -1498 0 obj << -/D [1487 0 R /XYZ 90 405.9509 null] ->> endobj -1512 0 obj << -/D [1487 0 R /XYZ 90 194.2442 null] ->> endobj -746 0 obj << -/D [1487 0 R /XYZ 90 167.7584 null] ->> endobj -1513 0 obj << -/D [1487 0 R /XYZ 90 167.7584 null] ->> endobj -1486 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1523 0 obj << -/Length 1357 -/Filter /FlateDecode ->> -stream -xڽYo6~_!`/6Ps)RyZC[Feɳ_HѲ$KrA )Q}{3ÈJxx63NYjBwg0o|H{@( "h T0fғ!pWx5lߴ=$"(JXXٳ{C,$LY:9'VxQ@QH,4r;JxTzKcJqRt]mjׄy&#idYN7~E+HSn~;F:6G\6nQ$O^X -+־`F}#V qd>:UZ\#D07UeiSgeڙN.K]fmZ `ON纨7q7Ya۫,/P{*B)Ĩz|כεTi_)=8`Tl[W Y/\a؅NR]=^K`b"An2^;^hC)8¦_:ߔc8Y0'4 o"jײu͞ef|b= ON/ybav5fCG-8x΀[}M3==U|_X.vA-CаBm?Z*_2wոa; -0+V~sjӎp#N3)uᰕ|ԤC BW Z{8aI.ptxG=Ǭ~9cԋDapR#]mM%ٷ*־b~=$tv9 >`زT0^u> endobj -1525 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 720.0194 154.358 740.9309] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1527 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 573.2189 135.0008 596.1877] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -1528 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.9895 573.2189 174.014 596.1877] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1529 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.8794 573.2189 241.5202 596.1877] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1531 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 417.2379 142.7416 439.4893] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1532 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [162.6071 417.2379 210.2478 439.4893] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1534 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 273.8347 142.7416 294.7461] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1536 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 132.7034 135.0008 155.6721] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -1537 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.9895 132.7034 174.014 155.6721] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1538 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.8794 132.7034 241.5202 155.6721] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1524 0 obj << -/D [1522 0 R /XYZ 90 757.9346 null] ->> endobj -748 0 obj << -/D [1522 0 R /XYZ 314.6454 681.6068 null] ->> endobj -1526 0 obj << -/D [1522 0 R /XYZ 90 665.7144 null] ->> endobj -1485 0 obj << -/D [1522 0 R /XYZ 379.3917 536.8636 null] ->> endobj -1530 0 obj << -/D [1522 0 R /XYZ 90 520.9713 null] ->> endobj -745 0 obj << -/D [1522 0 R /XYZ 231.9163 380.1652 null] ->> endobj -1533 0 obj << -/D [1522 0 R /XYZ 90 364.2729 null] ->> endobj -747 0 obj << -/D [1522 0 R /XYZ 226.1581 253.0464 null] ->> endobj -1535 0 obj << -/D [1522 0 R /XYZ 90 237.1541 null] ->> endobj -772 0 obj << -/D [1522 0 R /XYZ 379.3917 96.348 null] ->> endobj -1521 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1543 0 obj << -/Length 1882 -/Filter /FlateDecode ->> -stream -xڵYێ6}WCmfyE4}H@+k5Zr;IYwz{ba<93Yb#/qL | b70i~[+$˻]-A$(˻Dr/ߘF|2mk_5@ R㜓q1.;%b!:{,uҲR5CDt} g@s +$ cb9hF P!A_1S哾f(UQ!8@ab¶c\&U˚`8Z%S<0Y'9τ,mOCE=px\RYSίAyη픠0V'4xڎOe R#=np(4~35?:!T J"3Pxzerm:bF3zJve}G]斄w -51 /ŧYݵ}U쩚]7f%Q7+aY+ 3m\Y7N9xhkJ8yҊ\&)Y2;1^S gi|Hۘ& jlڵэoVZ)yuIOלN*A2 ~]cIu}qu--GWpZ&!Z 4g█r#(~4 e3m10"NY6 ȣ/k8&]kvpYє3`U;Gs_SGZώ\a .AļGPZbHE +.(WNZ壗6TkP*?u BmfvkSQ`ݻL1=;v8eBջ [Xy - á-a[ZIpHoWcT#V.ͤS=i2&B*3ۨH!Hw_svK)2k-Q=6_tPxjpZII8:w(!+^}!L9Q>Od:a`,|d9!%Cy?'"ɒE~W,$xU> endobj -1546 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [281.2077 672.8902 338.5322 683.7941] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> ->> endobj -1547 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [445.3859 672.8902 493.3155 683.7941] -/Subtype /Link -/A << /S /GoTo /D (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) >> ->> endobj -1548 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 638.3707 162.0093 660.6221] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -1549 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.9981 638.3707 201.0225 660.6221] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1550 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [220.8879 638.3707 268.5287 660.6221] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1552 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 485.4889 139.4144 508.4576] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1553 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 485.4889 178.4276 508.4576] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1554 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.2931 485.4889 245.9338 508.4576] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1556 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.8738 374.2304 451.9686 385.1343] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga87feebc7cffd4d8300e776cf64e4fec) >> ->> endobj -1557 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 339.7109 142.7416 361.9623] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1558 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [162.6071 339.7109 210.2478 361.9623] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1560 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 192.4983 139.4144 215.467] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1561 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 192.4983 175.0106 215.467] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -1562 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [177.9994 192.4983 214.0238 215.467] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1563 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [233.8893 192.4983 281.53 215.467] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1544 0 obj << -/D [1542 0 R /XYZ 90 757.9346 null] ->> endobj -1545 0 obj << -/D [1542 0 R /XYZ 90 739.9346 null] ->> endobj -716 0 obj << -/D [1542 0 R /XYZ 480.5514 597.9626 null] ->> endobj -1551 0 obj << -/D [1542 0 R /XYZ 90 581.3198 null] ->> endobj -742 0 obj << -/D [1542 0 R /XYZ 226.1581 463.4224 null] ->> endobj -1555 0 obj << -/D [1542 0 R /XYZ 90 446.7797 null] ->> endobj -715 0 obj << -/D [1542 0 R /XYZ 226.1581 316.9271 null] ->> endobj -1559 0 obj << -/D [1542 0 R /XYZ 90 300.2844 null] ->> endobj -750 0 obj << -/D [1542 0 R /XYZ 391.2972 152.8075 null] ->> endobj -1564 0 obj << -/D [1542 0 R /XYZ 90 136.1647 null] ->> endobj -1541 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1570 0 obj << -/Length 1722 -/Filter /FlateDecode ->> -stream -xڭYێ6}WCefyE)/ihS%AYru;/%Y6b!J934Yc#(b~N+ϯWtou7#4XB@w͖X`}'49ºL\2ih&+ͧիk, J?:ޮ0bQ">|K{݀q¦ӣ*`}zEYlU߲~6ktʳDW3`YuCW~R9X%mU x3)B&gClIiUf_V,x8d""+V67;2e8ݸ]g/:W/'7T `u hE jY#X~0bN)ri5HJRcՇn.G+ͺԢN 9$ Q (gVhۗR!`(XWP3 Xs}ćfקT}@) 䜘2uCJ"FCANjIMigh*קoԏpFl҉ O[%#4=.UGJNKvp.3 !Ԃ1R3Жp B9XGKcZd&1*o5 i1A(Rf't8 ^e%Dڴ9!'q?1KJKΟCΎAE> *"B4`Rl>Wzn⪱]R_UO3N^ dƛ]!S~MTBm?ٚ"My:Y?R,rp [ۉo{5BUVR7!Lln'4oEV6maK?j^W#f$2; 瞁yȊT}Z6p(.-!P$MQ^b2[ٕ߾5!&&-|K|Wt)-a%"m~i#^? iw~SڌTqQz(22m TCT3}eTGi׫D5 -Է[#ҋZ]8+S(ʊ*ɎH:]\pN&+"04S`U[:h(7pxXGa/)*lǵdG`ȀP0"Cab)9mD:ẄԡҐSӼf85"FE&A5b>g,DHT?>-Nl? y8%#0`6~ V~Ɏy78c>$G?~ǮW!OtG'rW AwX'2 PZled`].{uD].ReY -wc)W)-gp-o?Oפ:]fq3 988 ]Y5Vgהq 7TZpzԗ^mppc=Sz4p91eb}lNS9>LqRKGh9 HDÁꇸ 9 V\,l '|tPpq#ŋ8eѼԂ1Eyf!"= EoA mb08<_C_sBBE ~@)7e!إZwVּÃ~A jblB:et/Ʉdendstream -endobj -1569 0 obj << -/Type /Page -/Contents 1570 0 R -/Resources 1568 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1565 0 R -/Annots [ 1572 0 R 1573 0 R 1574 0 R 1576 0 R 1578 0 R 1579 0 R 1580 0 R 1583 0 R 1584 0 R 1585 0 R ] ->> endobj -1572 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 662.2363 139.3246 684.4878] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -1573 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.3134 662.2363 178.3378 684.4878] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1574 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.2033 662.2363 245.844 684.4878] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1576 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [366.5599 561.3549 409.5084 572.2589] -/Subtype /Link -/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> ->> endobj -1578 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [469.3939 427.7347 513.9963 438.6387] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -1579 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 382.8338 142.7416 405.0853] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1580 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [162.6071 382.8338 210.2478 405.0853] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1583 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 136.5223 135.0008 159.4911] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -1584 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.9895 136.5223 174.014 159.4911] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1585 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.8794 136.5223 241.5202 159.4911] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1571 0 obj << -/D [1569 0 R /XYZ 90 757.9346 null] ->> endobj -805 0 obj << -/D [1569 0 R /XYZ 384.3631 621.3448 null] ->> endobj -1575 0 obj << -/D [1569 0 R /XYZ 90 604.3735 null] ->> endobj -744 0 obj << -/D [1569 0 R /XYZ 226.1581 517.3041 null] ->> endobj -1577 0 obj << -/D [1569 0 R /XYZ 90 500.3329 null] ->> endobj -804 0 obj << -/D [1569 0 R /XYZ 231.9163 341.9423 null] ->> endobj -1581 0 obj << -/D [1569 0 R /XYZ 90 324.971 null] ->> endobj -749 0 obj << -/D [1569 0 R /XYZ 226.1581 249.8568 null] ->> endobj -1582 0 obj << -/D [1569 0 R /XYZ 90 232.8855 null] ->> endobj -1516 0 obj << -/D [1569 0 R /XYZ 379.3917 96.348 null] ->> endobj -1568 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1588 0 obj << -/Length 1348 -/Filter /FlateDecode ->> -stream -xڭXێ6}W ,/DK`  -WFdɕl3I],kP"?HY<3s r6lqqm٧/8w3j8aSGaCX1͔=9~}gϘ$ϲ_1/JN -&XrWzso=թqdw;t[R'E"6pL=C$ q$];1 qK Jz -~ZjtO6]#XNWkBM__HXboͯޒ6v n,lsWbA\rb?l}}r(]0YŸmJX|I tS I0HR&$uNCR~:_BRu2x8c[B9b=o=| Ii|:E3d7ЈK]k4ac>nGinUͯNnuNбCyHĖQ]{ج#AcbvYN^VťV~c~#9O֙γL=(3W*xV- ffhc~*x0uHV5 Y%`d82Xp>]tGbWܙ ̵to;Wb];_Գjewf+غP\ &w>~:endstream -endobj -1587 0 obj << -/Type /Page -/Contents 1588 0 R -/Resources 1586 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1565 0 R -/Annots [ 1591 0 R 1592 0 R 1594 0 R 1595 0 R 1597 0 R ] ->> endobj -1591 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [197.486 661.9112 256.4846 684.8799] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -1592 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 604.5791 139.4144 627.5478] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1594 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [197.486 476.2657 256.4846 499.2345] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -1595 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 438.4462 139.3246 459.3576] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -1597 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 220.9948 139.3246 241.9063] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -1589 0 obj << -/D [1587 0 R /XYZ 90 757.9346 null] ->> endobj -1590 0 obj << -/D [1587 0 R /XYZ 90 739.9346 null] ->> endobj -1515 0 obj << -/D [1587 0 R /XYZ 226.1581 577.8727 null] ->> endobj -1593 0 obj << -/D [1587 0 R /XYZ 90 557.7368 null] ->> endobj -1517 0 obj << -/D [1587 0 R /XYZ 206.4623 392.0581 null] ->> endobj -1596 0 obj << -/D [1587 0 R /XYZ 90 371.9222 null] ->> endobj -1484 0 obj << -/D [1587 0 R /XYZ 226.1581 192.2311 null] ->> endobj -1598 0 obj << -/D [1587 0 R /XYZ 90 172.0952 null] ->> endobj -1483 0 obj << -/D [1587 0 R /XYZ 226.1581 96.348 null] ->> endobj -1586 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1601 0 obj << -/Length 2329 -/Filter /FlateDecode ->> -stream -xڥko6{~ -y|K}]l-Rllɕfo^A` g"a#3gb\+<+▗l{uϟ)$ճ *m.bIc= 2=2;~_h&/OW@ױ%$Wg) -#b1{Rt`6NQ$Œ`H1;1?<M4.+~?̬$K9jM&ł<6yдH jX0_6qۤvȫ*_P1KNЉwlˢZYX Lh&D1I-PCy -aWHQndsW6M*Edݶ6PD8a(N9V^!}d\B櫅b04cp֙x.+/XO3+]EpW"2xroB---rvf %up%?u\ Nq:GL}ܽK|m/f7ī9Y DА2m}\0(,B wx;y}FQLxx=K!Iq8F@ Ԅ<R#ʉ aĹzp 譢 5$rD1C -6!C5$ %Dvʪ #ds&xV`{6R\=vJ u^lpxRqvrqݥs?{M4! +uTJB}/vls%=b#/t`-0C l3ە?"k.1ms S𭖛JǜkRVSTnV ԸchUTIQ>a:䥝¨{֝ |uhÀj @ٻ8".6jyٺlW`] !2נW7S ;6_o5.<=-}~Ɂ  #ϞCq+4ˁZxSye{0Ešva(b(c<lI) 头 u>)@Z!#Hfto8d'l2y!.Y. mǃu^@v@yC战Oc̓#J#NcwGޭ>z(\r0Q -Xɩ/buV^pbD =.z*PS؂it -!/'P=0\?ye ..txq?Ýܹ+5ɚ]ؖk@* rj|7Г֒:c{Of1gʮa(!^-WDrpc@eҧKRY vPKƁ/#X5mS3.QD2^j>X0vbgR. 9뺙Rw -. mǁ"RBiT j`vQ\S-ٰ]!. ?-F3ǨPCRM5YP.Z;6 7SKzEZp"@#"'Cߺlv$! / :/3([ d"!h]kWlPMu@C]AQTu]E)wU'vx"\07?DqP(Q%eoCy V׬R(.E' ɏFĨ@tyr|2L>ꕧ\ͤk&J%{o?ۑ5!k!KI|eW(2N96rHdey4G*&!q{0boh=me)la[UX> mU?).bu@n&iy9׮92HM٘ !MijfykYLwF:Muif /wwnY@]h-zz`ϏuV83Mzh=Q=LK.8&J &8D0 $Tă/#/}g۵(\۲DJ du ~-Pn -wa\Ԙphꇬ*o'PvCݓ6X';eK_MVU#R?cendstream -endobj -1600 0 obj << -/Type /Page -/Contents 1601 0 R -/Resources 1599 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1565 0 R -/Annots [ 1606 0 R 1607 0 R 1608 0 R 1609 0 R 1610 0 R 1611 0 R 1612 0 R 1613 0 R 1614 0 R 1616 0 R ] ->> endobj -1606 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.7506 575.1408 195.0552 586.0299] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -1607 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [257.8193 575.1408 315.7315 586.0299] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -1608 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [359.1284 575.1408 384.9216 586.0299] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1609 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [317.5642 496.9047 374.8887 507.8087] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> ->> endobj -1610 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [204.2809 446.4365 239.2097 457.3405] -/Subtype /Link -/A << /S /GoTo /D (a00140) >> ->> endobj -1611 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [472.3426 434.4814 513.9963 445.3853] -/Subtype /Link -/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> ->> endobj -1612 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [117.5067 422.5262 147.7231 433.4301] -/Subtype /Link -/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -1613 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 227.0741 135.0008 250.0428] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -1614 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [154.8662 227.0741 202.507 250.0428] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1616 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [194.3577 117.9412 220.1509 128.8303] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1602 0 obj << -/D [1600 0 R /XYZ 90 757.9346 null] ->> endobj -1603 0 obj << -/D [1600 0 R /XYZ 90 739.9346 null] ->> endobj -1604 0 obj << -/D [1600 0 R /XYZ 90 620.2512 null] ->> endobj -773 0 obj << -/D [1600 0 R /XYZ 90 595.6504 null] ->> endobj -1605 0 obj << -/D [1600 0 R /XYZ 90 595.6504 null] ->> endobj -771 0 obj << -/D [1600 0 R /XYZ 286.4315 154.5275 null] ->> endobj -1615 0 obj << -/D [1600 0 R /XYZ 90 136.4373 null] ->> endobj -1599 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1621 0 obj << -/Length 2589 -/Filter /FlateDecode ->> -stream -xڭZY۸~_GBp󴉝]=(O[SıX+Zt/J5&6_h4XD -v;?1x mmG͓18eD՚+l>Az>]Zea'bw,K%Vm>ݽN/%"b7؃~(:Qgi;Ʌ9=;̂ד^-abIT"%1 aLq$M("ИJߎQNbp 6P-$fB]etYrZpيsV˪9m>ݺ"W.w`RejIo^ejw &DYu 4GG;*=tQ|m48}جXW(:2"YfPT2U.J5a z}%rK5WZXt{-"yҖ>٠vV/H-I_{Q" ƷMmIY`+OTϏRga<"1_o&!Q1sGv&2RQ,SVC"lT[لhN8$ U1 /KrKU#ypMԟhk;L8 K̄63f&5bٌ[Tv֜~==ٔ'DKܡ$ _&@f@v.R^**uqp kOK!7"c1%)2\B~|ؼ|*5{5|1|48Kth',> b@M:%)%b 5" Z)ICERufLd>]T}([qx{U ֹ}XVÞ!J:}9C0򒅵'|MUC{:K&l-ejk=V%'H>{;}˜ҧ{~jN]m6 Ø}]gqq -T* Xjn'ϹӦ.O`{oxʳ}hu0vƁ -~#g@ڭ)<.j>15Ĺ=N+QH "_I5yu{.7kfϡjLT3*p( -6 CƧmSdՋ{h"-*xd$d5Cg;?NvSֆ7 -F΃dئ]0 -8P٦{-rG@㜶8KS0,N}kdRYfoo 0K<9m0\m.REj]SO ŕx$ ر5etVݜu$c!x5 ӄ'1<Nz_ M:cӵKs@5I$phmfE$yv=G,`+{º屮)ʮouePsݩnX}$-L9l&_S`*75ovQm#= @A$PvP)7JKzk8CBdUwJMD9x||-fY~lbGULkn8 oLP}38λ v=Y2:P͉pȾP `UO7s|';&,`b=՜ְjj<ss aHJliՌ!vH&?8bI?:G6&~C<&tMK]5a^6XID~^0@CjGl [pRq_AkQ wMCnݞSGvɫXd@$/Ԇ|J9ǁ䰫16ZAM`7Q٩~# -,+$FE2 9kdBDiPpc]78tQ.5g#qMw?y}b_ݼ^RJٶ8dJW9 -xp<;22wNp G;HáAkf;J/?Yp(Oeog(;Ͻ9r -OOԁ~^0rvmgm^oa ukӨjF4]=ZB :rmJ:Tͫo~WpⰦHT3J0%Pt5i9t_yl -rį+ߎ`܊t?#P |K$O$MN *}ɿ_nwW;Ny7_ݏi/߆'G8_rendstream -endobj -1620 0 obj << -/Type /Page -/Contents 1621 0 R -/Resources 1619 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1565 0 R -/Annots [ 1623 0 R 1624 0 R 1625 0 R 1626 0 R 1628 0 R 1629 0 R 1630 0 R 1631 0 R 1632 0 R 1634 0 R 1635 0 R 1636 0 R 1637 0 R 1638 0 R ] ->> endobj -1623 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [460.7601 717.9621 502.4137 740.9309] -/Subtype /Link -/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> ->> endobj -1624 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 706.007 136.9336 716.9109] -/Subtype /Link -/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -1625 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 607.5313 162.0093 629.7827] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -1626 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.8747 607.5313 217.8992 629.7827] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1628 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [194.6109 416.392 236.4535 427.2959] -/Subtype /Link -/A << /S /GoTo /D (a00147_gb5fecbc62edd128012cea0f47b57ab9f) >> ->> endobj -1629 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [309.2914 356.9954 361.4951 367.8994] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> ->> endobj -1630 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 254.0374 139.4144 277.0061] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1631 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 254.0374 178.4276 277.0061] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1632 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.2931 254.0374 245.9338 277.0061] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1634 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.7506 176.8276 216.6541 187.7167] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -1635 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [285.5252 176.8276 343.4374 187.7167] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -1636 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.8343 176.8276 412.6275 187.7167] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1637 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.7656 122.7745 457.7454 133.6784] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga20812098a4663c8a9fc4ce8e95391b6) >> ->> endobj -1638 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 110.8193 151.6186 121.7233] -/Subtype /Link -/A << /S /GoTo /D (a00147_g79c4110211247df3fb30b8cf1c4c02af) >> ->> endobj -1622 0 obj << -/D [1620 0 R /XYZ 90 757.9346 null] ->> endobj -743 0 obj << -/D [1620 0 R /XYZ 350.0021 547.1921 null] ->> endobj -1627 0 obj << -/D [1620 0 R /XYZ 90 530.476 null] ->> endobj -1520 0 obj << -/D [1620 0 R /XYZ 247.4281 212.04 null] ->> endobj -1633 0 obj << -/D [1620 0 R /XYZ 90 195.3238 null] ->> endobj -1619 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F52 1229 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1641 0 obj << -/Length 1580 -/Filter /FlateDecode ->> -stream -xڭXmo6_}!.)>lKtiָ"pd9fK,7 ݉wC ȇwLJGyHHŻa&yE$\{M%A38r~! -G>nӾ.UٲkRB3GW3JD*>(aQĽLr>ٟ3PMZ䰲 .CE(  ć`z@YŇ$Aș@1ߤz]ܔ _S:OjGDj*,zYE)%`I2&PXHXP -I;׶U{l,gLgؐA62K^,\^c'B*7&2 -J|5N0_Zsi im>[opA}0" -%""l!jZ0pbKʤ8w3I 84gH[xF0z&0MS@b)T/m8pHooPEK۾%'1"pPkpʢ*yQr bZyS%U+;n´%:X^e:nļXZ9y*L|5 -!&Mc`j:<^ԋݫaAXtG+w򶵍~J}Wj3V2#uQ~btJ9PNß' -!~ZhM}"J tJ{W*'O)S%.*s|gwlݦunS\ G>, KiC&),Nw_Wu8?b]^^ݼucc{ô=>'nuiCDAYOՍ6mɶL2ǘmT)`d5o1'L.w.QEG}Pp &Bt|ch@<<؀^CE`h$BF&.sN6l;Om6Z3EMxlR`O%4qyRS:;qkXT -~@NR8G1'|J;\#&–˿p8Z L%)F]شtO -ڂ7Î;"豨'xE^,,ۂ9c(V fըF( --nm#~}Ro)gq0 -KZHcJS%ö4+ⱺ&GdEp:)퐶JA˨"J' -&j"ak -j6hT`Z2\%ְfToG7 XOަ۴E"c~mVX-"Lj^^>zv|yM^ a2,)Ǵ)b &ZᴈwFp(5M> endobj -1643 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [124.6997 570.6986 183.6983 593.6673] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -1644 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 533.0943 139.4144 556.063] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1645 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [159.2799 533.0943 191.8873 556.063] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -1647 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [205.4361 438.1884 231.2292 449.0774] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1648 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [460.7601 376.1104 502.4137 399.0792] -/Subtype /Link -/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> ->> endobj -1649 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 364.1553 136.9336 375.0592] -/Subtype /Link -/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -1642 0 obj << -/D [1640 0 R /XYZ 90 757.9346 null] ->> endobj -1518 0 obj << -/D [1640 0 R /XYZ 206.4623 473.4116 null] ->> endobj -1646 0 obj << -/D [1640 0 R /XYZ 90 456.6845 null] ->> endobj -1639 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1652 0 obj << -/Length 1881 -/Filter /FlateDecode ->> -stream -xZr6+4ӍW6MuX7.â^a( EfU.Ʌꣿ<~Xa+Rowj_mkӢ^ta$ B @XqTz1V3ڐD!Ltc@ۧq,g8w&:$>E;T`)?|MrnUA[;;N#si$q]Çb'yh&cO5n~l.qT&QFef%iY?YKL4)|jMvSP/b^6 CS)fQv0}H]X=H1zjfG/;C(n;:Xq@o}wdH!p#*GD<*,$$E+^f ةv* UmY"?n|q<&ºP~1:;, -9 8G^08$n=0!j'5:T&4Zpڪ:c. -!?X뇇™^WQjs!zhYe-, -'/@&$0ɈCe2HLo2 5EvXh X2܍JXAqET^d|G(&'ˋ; -G^"n8$@çsg al"6*p_viZ e#4ͦ^mU:`aex&, ,P"%sF=#th6a&A0T!*|4`.W=\vGXNvo[ghP$SE2p`4sQ hƊ}HL2-z\7+gw=w۝CP.!tAmK0}c JԣaN1o{%rHOI0}XхА ZJ2l."wj ZЌ;XVq@@ o^}gHFB' }TTs$4erр; zi>^TT1$e2TbD9 ->By;ǼN#<< -'Ibs~/#0$w>i饤n_< cXNz:I=-zDpI\o+g&I.`4#OoAc$*?!{ g>+}9.~:%j +ziכƾ=Mk7@0LEf12B{x#Fץw -1"L#VzpѵމyB)|di"@.Fٚ0[t[PE.N=qvG"?IzL! ӣq$^:*:TXrd.nMyڐx>0xl,W{W%E;ٶ 6?å 71i琲)g_hcD_g36ni|S"}O,/m_db8*^ÏGAQVȟEiNBӓyPpj;lNw4ϿKm.endstream -endobj -1651 0 obj << -/Type /Page -/Contents 1652 0 R -/Resources 1650 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1674 0 R -/Annots [ 1657 0 R 1658 0 R 1659 0 R 1660 0 R 1661 0 R 1662 0 R 1663 0 R 1664 0 R 1665 0 R 1666 0 R 1667 0 R 1669 0 R 1671 0 R 1672 0 R 1673 0 R ] ->> endobj -1657 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 613.8755 190.8912 624.7795] -/Subtype /Link -/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> ->> endobj -1658 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 574.2326 195.8725 585.1365] -/Subtype /Link -/A << /S /GoTo /D (a00148_g53fbda0e8c31d4882294c8dc3cb5f487) >> ->> endobj -1659 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 534.5897 215.1402 545.4936] -/Subtype /Link -/A << /S /GoTo /D (a00148_g769512993b7b27271909d6daa4748b60) >> ->> endobj -1660 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 494.9467 213.028 505.8507] -/Subtype /Link -/A << /S /GoTo /D (a00148_g210e629f7252e4bc8458cbdf260b3318) >> ->> endobj -1661 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 455.3038 234.0589 466.2077] -/Subtype /Link -/A << /S /GoTo /D (a00148_g6b16e0bac41821c1fbe0c267071642f0) >> ->> endobj -1662 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 415.6609 216.9034 426.5648] -/Subtype /Link -/A << /S /GoTo /D (a00148_g969d7fff37a979737da045e0d538a9bd) >> ->> endobj -1663 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 376.0179 195.8725 386.9219] -/Subtype /Link -/A << /S /GoTo /D (a00148_g22fa0681cd463191d7a01fe85d86996f) >> ->> endobj -1664 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 336.375 195.8725 347.2789] -/Subtype /Link -/A << /S /GoTo /D (a00148_gffcd2fbe181e2aaefbf970551c302af5) >> ->> endobj -1665 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 296.7321 195.8725 307.636] -/Subtype /Link -/A << /S /GoTo /D (a00148_ge23534479ead15af8ff08ace26a47fb5) >> ->> endobj -1666 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 257.0891 195.8725 267.9931] -/Subtype /Link -/A << /S /GoTo /D (a00148_g165b603ec150e26efec7be199c9c2901) >> ->> endobj -1667 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 217.8198 180.7494 228.3501] -/Subtype /Link -/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> ->> endobj -1669 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 179.8606 169.3122 188.7072] -/Subtype /Link -/A << /S /GoTo /D (a00148_g118e9d76568ab81ad97f138d4ea1ddd2) >> ->> endobj -1671 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 119.8657 138.5977 130.3961] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1672 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 119.8657 162.6772 130.3961] -/Subtype /Link -/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -1673 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [166.4928 119.8657 191.1801 130.3961] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1653 0 obj << -/D [1651 0 R /XYZ 90 757.9346 null] ->> endobj -1654 0 obj << -/D [1651 0 R /XYZ 90 739.9346 null] ->> endobj -106 0 obj << -/D [1651 0 R /XYZ 90 739.9346 null] ->> endobj -1655 0 obj << -/D [1651 0 R /XYZ 90 719.3112 null] ->> endobj -1656 0 obj << -/D [1651 0 R /XYZ 90 633.2198 null] ->> endobj -1668 0 obj << -/D [1651 0 R /XYZ 90 197.2909 null] ->> endobj -1670 0 obj << -/D [1651 0 R /XYZ 90 138.8364 null] ->> endobj -1650 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1686 0 obj << -/Length 1900 -/Filter /FlateDecode ->> -stream -xڭY[4~ﯨZtb|w Q6MO#ڤ.347huv<7CK%Ҍez\ -*kD -uD0?0-@T.]!X}q&_.?C7 ջ52zߗvUy}yvok@YmY~M_aj!VȨi# -IyfruLҪ4CNU~Ll_.Ҿ]ydI#kYgVC3r庴z!ucO$Z}od>޸&:Hc\H;ɻ5+0,y{${sýφ{jXr$v׬TOu'[CoT#} XPՃQǴ`D刳X.E%[4T#X-%xG*jxK5iF3ExgJ&"NHDŽpK+! @t-QqOO)JG -qO+TsG܌臑P 7i1zrO?'~ķp(#Z" hN! j3|*;wk 9kd;eQ-ش-՜ 7%{YCFXKTrpO5'yޤ؎CT܏cQg8XψF\(1 BK5#|~DgB"P(ٞ'׆QI-\l{̦NHMlW^k$߱)Ksk 0m>n'' 6@Ρfp)̹GBGǐ1 xf!5R**4<<՜ -&?bGԋ4{0b,wR[5MIs)` !)aG>\ؒ6CAnȔD0S!Yq";S9}#1T1@yƣ!RKe_C}n?nUHG14g.AʕU9%*9f'qNJȁ6%34z(Wo{<~eǩl2^?$_ ֽݳwȶ&.9C6OͶnR 8B" ;pULW .h9:dSpy2 פ+\C7 -n:gb#Z$MՒyMh nѪy%As`uȦd,vIWo܂řQ?mjx1}unbr8SXy9%o1o1[{n1'bΈq sFA1ɋCY"sE̥:jF1-bLԽдszNBS^0:*j.^Z:^z<󻮽F "\`ЙH!?i7W4";aP/rI[U?dEV%޼?KËo^P:(dgF?%}_]y~F͗J1,endstream -endobj -1685 0 obj << -/Type /Page -/Contents 1686 0 R -/Resources 1684 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1674 0 R -/Annots [ 1690 0 R 1691 0 R 1692 0 R 1693 0 R 1694 0 R 1695 0 R 1698 0 R 1699 0 R 1700 0 R 1701 0 R ] ->> endobj -1690 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [292.7281 646.4529 322.9445 657.3568] -/Subtype /Link -/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -1691 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 608.5208 139.4144 631.4895] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1692 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 608.5208 197.6953 631.4895] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -1693 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.6841 608.5208 233.2915 631.4895] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -1694 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [236.2803 608.5208 264.5639 631.4895] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -1695 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [284.4293 608.5208 320.4537 631.4895] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -1698 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [313.4498 360.5812 370.7743 371.4851] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> ->> endobj -1699 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 124.2624 139.4144 147.2311] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1700 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 124.2624 262.94 147.2311] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -1701 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [282.8054 124.2624 416.0743 147.2311] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -1687 0 obj << -/D [1685 0 R /XYZ 90 757.9346 null] ->> endobj -1688 0 obj << -/D [1685 0 R /XYZ 90 739.9346 null] ->> endobj -1617 0 obj << -/D [1685 0 R /XYZ 90 722.0597 null] ->> endobj -1689 0 obj << -/D [1685 0 R /XYZ 90 722.0597 null] ->> endobj -1675 0 obj << -/D [1685 0 R /XYZ 288.1051 554.1796 null] ->> endobj -1696 0 obj << -/D [1685 0 R /XYZ 90 532.2319 null] ->> endobj -774 0 obj << -/D [1685 0 R /XYZ 226.1581 456.1224 null] ->> endobj -1697 0 obj << -/D [1685 0 R /XYZ 90 434.1746 null] ->> endobj -1680 0 obj << -/D [1685 0 R /XYZ 226.1581 96.348 null] ->> endobj -1684 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1704 0 obj << -/Length 866 -/Filter /FlateDecode ->> -stream -xW[O0~ϯR||2H7@(F+-kR~v!M/lĦJO|+K.Lɝ[ 0~$WH "MA?^H8'gvL'= 7IRh)עJ\.ѠT;PyaDUZ"\偮(9m$Zu cI"x8,LpZ+mh% Qֳ,fU#IV]2dci#c̨aVb~q!` NUKEam #|]*, C2"iXTJ!tV!XlTaʨkDH:S}C'}g]]& }cVlϷ:$tD7`ɤUxmh\TF "7#ٖa?nNXk-=݊vDf#/ؑdGKDfG -hKv\ga';ְmqmn]#`=MHQ6 3ۑ#76fnjusut EFPҤTۂFE9aRvNY\Uw>USTq@p7^u?Oy8}|M'[jG~~Aendstream -endobj -1703 0 obj << -/Type /Page -/Contents 1704 0 R -/Resources 1702 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1674 0 R -/Annots [ 1707 0 R 1709 0 R ] ->> endobj -1707 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 542.121 139.4144 565.0897] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1709 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 300.0025 139.4144 322.9712] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1705 0 obj << -/D [1703 0 R /XYZ 90 757.9346 null] ->> endobj -1706 0 obj << -/D [1703 0 R /XYZ 90 739.9346 null] ->> endobj -1681 0 obj << -/D [1703 0 R /XYZ 226.1581 519.9805 null] ->> endobj -1708 0 obj << -/D [1703 0 R /XYZ 90 503.321 null] ->> endobj -1682 0 obj << -/D [1703 0 R /XYZ 231.1394 277.862 null] ->> endobj -1710 0 obj << -/D [1703 0 R /XYZ 90 261.2026 null] ->> endobj -1702 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1713 0 obj << -/Length 1160 -/Filter /FlateDecode ->> -stream -xڵXێ6}W ]}i7 @4[,2j[,gcER4E) )?D8E"elF8xׯG `|:;E`$ABMfToAS1A6fZ]7z[em'WڮsK0IտG>`ݏ0b3t0"QD͈S;џ?j;PMZ2EX0c)NB (A!Y!X>Kzw{B) -A4a;fOn}AC&jeMl-o -W{og"6.;yg*qƏ~Syc;zm[IJn;Q_yFlX~}J!\P/oǶXîۏGQ]LJd{$ӣlDžc-')ݭTn .Is]\]'uMtը!#f^-k~)[K3JGD54UR_+B䒞E-+J,ʱiT*dxoͺ -R]P&_(c)J] Sm'pPf\tN#P:Bp?HSsP_{CGh3n> endobj -1715 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 717.9621 139.4144 740.9309] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1717 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 473.5762 139.4144 496.5449] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -1714 0 obj << -/D [1712 0 R /XYZ 90 757.9346 null] ->> endobj -1683 0 obj << -/D [1712 0 R /XYZ 231.1394 695.4109 null] ->> endobj -1716 0 obj << -/D [1712 0 R /XYZ 90 678.4366 null] ->> endobj -1677 0 obj << -/D [1712 0 R /XYZ 231.1394 451.025 null] ->> endobj -1718 0 obj << -/D [1712 0 R /XYZ 90 434.0507 null] ->> endobj -1676 0 obj << -/D [1712 0 R /XYZ 351.1686 188.4371 null] ->> endobj -1719 0 obj << -/D [1712 0 R /XYZ 90 171.4629 null] ->> endobj -1711 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1722 0 obj << -/Length 1393 -/Filter /FlateDecode ->> -stream -xڵXێ6}W[]M$@45Ї$Xhmy-Ԗ\If;ɺY)`y93"$pE`_M^ e97$rc,H%4X?L% -g *mliR)t昭*ЍXNE4|3y{I|5f"'2M^۱f.9*‚n5P=B`(!p*Jұ9]5[HGYD^ c{9S$qEy6M,%Gp0u\~¨aV(S;q -RO0E!tЁ#5 OQH8YծSBAgMVP9k.>tM6*zI1EgBE"DþzԢ  igbգ%R*h=OۉGJM[Ǩ̏ʵ7EmR*"RuRX]Jj$)EX2/KΦ3$qh9=R#;|ב;pjOtJSt p!*΢H{q>޸%j)[iEDٗq(Dy|NNAFBϓaP.ɩrA9b1we[(;ap^T1*YQՄ.qZThEUvy&Gb#hK² ig'KzT'Fbͻ|81gw8Fj՗R|ϰ:}̏űڶb7]XD"u2 Սa=0jۺskV`EbR;CLZB֡;+;Lyʔ=Xn !+U>juÕ۟9.ٹF/]"{b㒶hEURM-(927/Ppu?}3,!6UbsNh'_%YRĕ [xu}RvKQŮQ%E"AP|endstream -endobj -1721 0 obj << -/Type /Page -/Contents 1722 0 R -/Resources 1720 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1674 0 R -/Annots [ 1724 0 R ] ->> endobj -1724 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 606.9556 135.0008 629.9244] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -1723 0 obj << -/D [1721 0 R /XYZ 90 757.9346 null] ->> endobj -1679 0 obj << -/D [1721 0 R /XYZ 357.2656 564.4285 null] ->> endobj -1725 0 obj << -/D [1721 0 R /XYZ 90 546.998 null] ->> endobj -1678 0 obj << -/D [1721 0 R /XYZ 226.1581 281.678 null] ->> endobj -1726 0 obj << -/D [1721 0 R /XYZ 90 264.2476 null] ->> endobj -1720 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1729 0 obj << -/Length 1266 -/Filter /FlateDecode ->> -stream -xڥXn8}WQ".󸛦m"˱[ruIߡDʖ([ AJΜ9sGΊ|cuXI\|5[`T$x(ESfv{=F{`;N0/`EDIH L"4B C>o$؏xiY]$QꝪ G$($Lj(z]N& [ -ةa+W[ӲVZU 5 DB%B僞##g8ړQIɅ$G3d]`qإ -1 N]k\#>8C=!yZk PF6P|Z&gm3ɴrEq-1livIʻ:n2͓D?qc៴')|Ձw%LD!bKm'GNuPD9b\"-„Rģt[壑2N=իA4D`H,Fƹa +d`x[ye(!',X90޳,P,z)2)n n"Q)2:1iɵ!fzK"45Dd&6E)}}?֦rݲ.R~_Q>MK OjA M_5ɾ=>.ݫ~~Szmŋ[$Cײ{.,~إD^unUT[ڌvK5%ݺB[m0Ymjf}U;]WYUf:NTSL'%">S+|pzm^㟫%jn -<3^jc!p04fl{NvpK#ťH7%\3mԽߋif|W%{(qJDE8Y/5զ!]9F!k猏j0祄Jv}H88ƾ[9npl=bݭVG>$ =/nK͘wif -%T xH^ Ći}'{ؘlfoFiROd|Keۯ>dpZZLɰa BW6VH,=M4O˸\~;ݩ@Lt 욚(,%/6P7ůA6^oVendstream -endobj -1728 0 obj << -/Type /Page -/Contents 1729 0 R -/Resources 1727 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1674 0 R -/Annots [ 1733 0 R 1734 0 R 1735 0 R 1736 0 R 1737 0 R 1738 0 R ] ->> endobj -1733 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.3636 582.7574 152.1568 593.3475] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1734 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.7156 582.7574 207.5088 593.3475] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1735 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.093 528.4053 335.7466 539.3093] -/Subtype /Link -/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> ->> endobj -1736 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 492.7935 227.254 515.7623] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -1737 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [230.2428 492.7935 262.8502 515.7623] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -1738 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [282.7156 492.7935 330.3564 515.7623] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -1730 0 obj << -/D [1728 0 R /XYZ 90 757.9346 null] ->> endobj -1731 0 obj << -/D [1728 0 R /XYZ 90 627.2963 null] ->> endobj -1618 0 obj << -/D [1728 0 R /XYZ 90 602.9681 null] ->> endobj -1732 0 obj << -/D [1728 0 R /XYZ 90 602.9681 null] ->> endobj -1727 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1741 0 obj << -/Length 1212 -/Filter /FlateDecode ->> -stream -xWێ6}WV,7Xltmj`!Z[,}"udM[m^33!x?i2 Ňv8~ny(zL{hŔ~i4( ۏKE•$]liɒdk[iF~6 -5/IJ^( -V֏wہ - ??Qo;y\Pu(7PZ3lNh!3k`L0`(@e Z212g!4k=$U\:-rҨ1VMh9ԑ{IVL.lg(W3>hjL.}(o "E3Kr -.O}GAHBE -32TC1F綀EAtF)wniMt s=( Jfp^+7$T&tp#!@C,ЀF(' ^(hPbd@^'fPUv>"ΆU,N{y$c\S,h<:o4xQxž/a$xC_3-vfK(.K*'׉MMla(ͳ8oiHs)dpN6Εvb]` Ej:[8&zR64tnI@5fPxY*aH-lK) -`I}bl) -04cYIU͘Dc*fV̽G샚"oGO]l - d/Qp>ɓ2[JZjƃN{=Fr0O1+Mݴ1~ަendstream -endobj -1740 0 obj << -/Type /Page -/Contents 1741 0 R -/Resources 1739 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1754 0 R -/Annots [ 1745 0 R 1746 0 R 1750 0 R 1751 0 R 1752 0 R 1753 0 R ] ->> endobj -1745 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 615.6894 138.5977 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1746 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 615.6894 170.976 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00149_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> ->> endobj -1750 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.3636 531.3846 152.1568 542.2638] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1751 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [152.6549 531.3846 186.2086 542.2638] -/Subtype /Link -/A << /S /GoTo /D (a00150_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> ->> endobj -1752 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 394.5058 227.254 417.4746] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -1753 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [247.1194 394.5058 380.3883 417.4746] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -1742 0 obj << -/D [1740 0 R /XYZ 90 757.9346 null] ->> endobj -654 0 obj << -/D [1740 0 R /XYZ 90 739.9346 null] ->> endobj -110 0 obj << -/D [1740 0 R /XYZ 90 739.9346 null] ->> endobj -1743 0 obj << -/D [1740 0 R /XYZ 90 719.4886 null] ->> endobj -1744 0 obj << -/D [1740 0 R /XYZ 90 634.6393 null] ->> endobj -1747 0 obj << -/D [1740 0 R /XYZ 90 578.3693 null] ->> endobj -1748 0 obj << -/D [1740 0 R /XYZ 90 551.8843 null] ->> endobj -1749 0 obj << -/D [1740 0 R /XYZ 90 551.8843 null] ->> endobj -1739 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1758 0 obj << -/Length 2127 -/Filter /FlateDecode ->> -stream -xڭZK6W(1çu2Iv3K,meɑ)>-Dn *_H)fxeb3t>!χ??M~f e1OϚCLNF1i>?BS l_宒)vYy_6/_V,bfgxL0bY*o2:L8ewc>Wp=GAĪٜ`㏮y2ʄ˘㇈IyYɥ5슶:60bB؈ed"*;kr[l^phoۦo2û&Yz5nWiE; fh{ݷMUɶCJ5 IPL9+KdKٙ-2hղ]RKmɴh$nkٛAEж,z+UM) ctSf)߶` ;4uj&Zo_AiNV+[ -陛Yh僆Cmv^ᨦ]637g9cUxegzqۦ;P؀07O/]lW0М~7$<ƙNCp8K/\(**4/ē ѼS33d4;Y}jWPGᄯvr'"q9C$!${R \AP^H)B#NtɔA@}0(^*c6ՀP .f0Cx05ᄯC`q"P1<(&L܊@4 !Б)!y1peW;>rxa\#%֨GSRH=KBaܳE!J$?1fq, Q:.P!'F>7S,1LȨsuP;\@y%H̎-׮؟6ڸE^muޏd}]$`* * _,<.GP:P!Buh^ɮvG##cN`$PG/nLc ٜ#ౝqkE|* K1WеTDbX}lTڶK+_LWe-ԇܩ>8=TIZս?rZE=~'@HB! %̓dn' H8:˷nz_v+@SRrGPOD_]@.ʳ)b\9JFEʼn6ҿ]4endstream -endobj -1757 0 obj << -/Type /Page -/Contents 1758 0 R -/Resources 1756 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1754 0 R -/Annots [ 1763 0 R 1764 0 R 1766 0 R 1767 0 R 1768 0 R 1769 0 R 1770 0 R 1771 0 R 1772 0 R 1773 0 R 1774 0 R ] ->> endobj -1763 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 574.0416 151.3297 584.9456] -/Subtype /Link -/A << /S /GoTo /D (a00136) >> ->> endobj -1764 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 535.1382 150.7717 546.0421] -/Subtype /Link -/A << /S /GoTo /D (a00135) >> ->> endobj -1766 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 452.2677 224.9331 463.1716] -/Subtype /Link -/A << /S /GoTo /D (a00144) >> ->> endobj -1767 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 415.4215 222.1728 424.2682] -/Subtype /Link -/A << /S /GoTo /D (a00145) >> ->> endobj -1768 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 376.5181 223.4387 385.3647] -/Subtype /Link -/A << /S /GoTo /D (a00146) >> ->> endobj -1769 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 335.5574 216.0761 346.4613] -/Subtype /Link -/A << /S /GoTo /D (a00147) >> ->> endobj -1770 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 298.7112 214.9707 307.5579] -/Subtype /Link -/A << /S /GoTo /D (a00148) >> ->> endobj -1771 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 259.8078 258.2974 268.6544] -/Subtype /Link -/A << /S /GoTo /D (a00149) >> ->> endobj -1772 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 220.9044 246.8006 229.751] -/Subtype /Link -/A << /S /GoTo /D (a00152) >> ->> endobj -1773 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 168.9847 249.8397 179.8887] -/Subtype /Link -/A << /S /GoTo /D (a00154) >> ->> endobj -1774 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 119.1224 254.5214 130.0263] -/Subtype /Link -/A << /S /GoTo /D (a00151) >> ->> endobj -1759 0 obj << -/D [1757 0 R /XYZ 90 757.9346 null] ->> endobj -1760 0 obj << -/D [1757 0 R /XYZ 90 739.9346 null] ->> endobj -114 0 obj << -/D [1757 0 R /XYZ 90 739.9346 null] ->> endobj -1761 0 obj << -/D [1757 0 R /XYZ 90 719.4775 null] ->> endobj -1762 0 obj << -/D [1757 0 R /XYZ 90 593.0161 null] ->> endobj -1765 0 obj << -/D [1757 0 R /XYZ 90 471.2422 null] ->> endobj -1756 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1780 0 obj << -/Length 2922 -/Filter /FlateDecode ->> -stream -xڭoS)T7sfΑɹ$wW M$O3hF݃+*#У~z׻;-JLx'&8ؠ\'Ÿ_Z}&ǧV0#,ٷlHW/Gߥ?koxwc^FYmo|r{Ǚ;™9}OK~7)<'ie^پzلjx?~r,lisfK*iUl֖O[[9!@R~9>ui\ʡsxzyuw{[e,B[| yg45嘰2J2ùy>!O 'YX}*bu^on7sqsYqVWfIзhcB2C;j@k=kl@i@75`K4`рDUԀ;pÀA&49U҂_Ђ:-w`<`-b-T =-PM-N R\V/?af0bΓ7|un7뛫$Z΅>-ë7flbƧbv45cЇs})v<,<u 峌lyiy7|K|DU뫯aׄrUTEU8}<2}3K){9TqwБ\1% F^dMྙ=t`k,TF똰Ǚ,က7Á¹C7Y?_.[ld8X>lgs"iI>܌'ՓxjMا| -$3&oPv$~3~ sۜԵ㌋Alm(@Z;F[M]z\I'wwwSiTqcqv8|p*_Ln& xYG -˄GK~ -0IFsw7s xUYf>\0rY(ۍ0IF#r7# xU܄fzgE*]V](+*PQN22(㾙2\PӨ&go߶*a`$9a`Ao11£i L;BhQڣg,I;K.\¶ȆFF $b.By`<*n^:Z8Lu*"8kejU8*8)NP24LM _tiAHwӓqEZzƽxH@*S)l댬BF,(H'MsqLv.{HiTqzsNz YEK)jBapdtѤ1G@ͤo¼4F7&'p|TT"uE")Z͸CF*(' sq v/{iTq}za$ad2^$S7Z01oC9hȘ#fзraO '0<4|ɼ>kb-GVy08{ѺJ%Bh&|—]w&Ҩ&ot`g{&7x)!rh}%|d҂uѬ1Gͬo¼5F7w[׀ -,^"쟮T^uN1'I -0IFsg7s xU~R.$8 Ɔ,+nS0 KǏg?o;>×׏w!i>ظ+ %&0ULVM7JD ,~+fa yP÷|O2,wbۉq߼Cߎ0ى4苸 6ѻdf&ID"`̥w,D@1O29㾙9`^0ӨfB.$^$"Rr"s`һwܣx=FhHcb`m$bW:}@]zf*OTKMrnTFH_j (J$~-Q>Uendstream -endobj -1779 0 obj << -/Type /Page -/Contents 1780 0 R -/Resources 1778 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1754 0 R -/Annots [ 1783 0 R 1784 0 R 1785 0 R 1786 0 R 1787 0 R 1788 0 R 1789 0 R 1792 0 R 1794 0 R 1796 0 R 1798 0 R 1800 0 R 1802 0 R 1804 0 R 1806 0 R 1808 0 R 1810 0 R 1812 0 R 1814 0 R 1816 0 R 1818 0 R 1820 0 R 1822 0 R 1824 0 R 1826 0 R 1828 0 R 1830 0 R 1832 0 R 1834 0 R 1836 0 R 1838 0 R 1839 0 R 1840 0 R 1842 0 R 1844 0 R 1846 0 R ] ->> endobj -1783 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 704.2225 177.6109 715.1264] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -1784 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 665.5053 197.5362 676.4093] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -1785 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 626.7882 175.9567 637.6921] -/Subtype /Link -/A << /S /GoTo /D (a00093) >> ->> endobj -1786 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 588.071 196.4301 598.975] -/Subtype /Link -/A << /S /GoTo /D (a00094) >> ->> endobj -1787 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 575.1882 204.1809 586.0921] -/Subtype /Link -/A << /S /GoTo /D (a00091) >> ->> endobj -1788 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 562.3053 199.1998 573.2093] -/Subtype /Link -/A << /S /GoTo /D (a00096) >> ->> endobj -1789 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 549.4225 193.1026 560.3264] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -1792 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 467.8426 214.6224 477.7703] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6bfa488f87f68a6f7f4a3efb9e45eaf8) >> ->> endobj -1794 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 454.9597 216.6746 464.8874] -/Subtype /Link -/A << /S /GoTo /D (a00150_g39ce739bd352d7e348e37395ce903e43) >> ->> endobj -1796 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 442.0769 206.9409 452.0045] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf848ce44c810492e7a35c2d23a429f45) >> ->> endobj -1798 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 429.194 193.6609 439.1217] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf0ed78fd2be24d849cdd5af75e3b2674) >> ->> endobj -1800 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 416.3111 200.3059 426.2388] -/Subtype /Link -/A << /S /GoTo /D (a00150_g57e6dc1d58a36d0ed53a3dd29ccc5798) >> ->> endobj -1802 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 403.4283 201.9198 413.356] -/Subtype /Link -/A << /S /GoTo /D (a00150_ga4c4310e54f18541b09e1e251fe7b22d) >> ->> endobj -1804 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 390.5454 229.0778 400.4731] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf84316f469ce0726985c0702db49a989) >> ->> endobj -1806 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 377.6626 220.769 387.5903] -/Subtype /Link -/A << /S /GoTo /D (a00150_g2d3ba4b14d6d2f6576f9b547800b7945) >> ->> endobj -1808 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 364.7797 193.9898 374.7074] -/Subtype /Link -/A << /S /GoTo /D (a00150_gabc40c09f49d15acb1b1a7f02bb3a807) >> ->> endobj -1810 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 351.8969 199.7479 361.8246] -/Subtype /Link -/A << /S /GoTo /D (a00150_g041aea91aa6ef84dcc6cac3c51db9b2f) >> ->> endobj -1812 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 338.4114 243.3742 348.9417] -/Subtype /Link -/A << /S /GoTo /D (a00150_gd605357e29affb0d3104294c90f09905) >> ->> endobj -1814 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 326.1312 252.8785 336.0588] -/Subtype /Link -/A << /S /GoTo /D (a00150_g5c97ae587595b5444be80f5ecc1d3382) >> ->> endobj -1816 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 313.2483 224.6544 323.176] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf0ccbc3bb2a3ba1ebc255c7b3fcedd24) >> ->> endobj -1818 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 300.3655 207.4989 310.2931] -/Subtype /Link -/A << /S /GoTo /D (a00150_g28eda870cff3d8e3cf2949e6f57a502b) >> ->> endobj -1820 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 287.4826 221.3369 297.4103] -/Subtype /Link -/A << /S /GoTo /D (a00150_ga5e3c856b86725125d19fccc34cd9eb5) >> ->> endobj -1822 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 274.5998 218.5673 284.5274] -/Subtype /Link -/A << /S /GoTo /D (a00150_g8af482dec973db57d8b3bd3f69461488) >> ->> endobj -1824 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 261.7169 234.7964 271.6446] -/Subtype /Link -/A << /S /GoTo /D (a00150_gae59b70658f28ee6e998eaaab05e423f) >> ->> endobj -1826 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 248.834 224.5549 258.7617] -/Subtype /Link -/A << /S /GoTo /D (a00150_ga533c394b1fa0030205534befa31c525) >> ->> endobj -1828 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 235.9512 224.5549 245.8789] -/Subtype /Link -/A << /S /GoTo /D (a00150_g160128ab5d2ea3cc497b91ee4eb4ef99) >> ->> endobj -1830 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 223.0683 211.9222 232.996] -/Subtype /Link -/A << /S /GoTo /D (a00150_g64d9affc680a445d708234e70450477b) >> ->> endobj -1832 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 210.1855 222.8911 220.1132] -/Subtype /Link -/A << /S /GoTo /D (a00150_gfff0ed43201bf1e2020de1a0d6cac070) >> ->> endobj -1834 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 197.3026 219.2748 207.2303] -/Subtype /Link -/A << /S /GoTo /D (a00150_gd135fb0cfdfb2c212f0f51865a3640e4) >> ->> endobj -1836 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 184.4198 214.1439 194.3474] -/Subtype /Link -/A << /S /GoTo /D (a00150_g13dfcb4a5f920e108253ade527a66cc2) >> ->> endobj -1838 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 171.5369 211.7529 181.4646] -/Subtype /Link -/A << /S /GoTo /D (a00150_gde29ec025e6754afd8cc24c954a8dec8) >> ->> endobj -1839 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 158.6541 238.2734 168.5817] -/Subtype /Link -/A << /S /GoTo /D (a00150_ge0825474feee11b4e038bfe71757875f) >> ->> endobj -1840 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [289.3868 143.1256 318.6011 153.0309] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -1842 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 119.9369 229.7753 129.8646] -/Subtype /Link -/A << /S /GoTo /D (a00150_g359951eecd80541c2101f628a9da9146) >> ->> endobj -1844 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 107.0541 223.6882 116.9817] -/Subtype /Link -/A << /S /GoTo /D (a00150_g517c770991459cc62dc009c0d3875c6a) >> ->> endobj -1846 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 94.1712 225.3421 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf72d7b9a737707dcfb2c41fec2b6792e) >> ->> endobj -1781 0 obj << -/D [1779 0 R /XYZ 90 757.9346 null] ->> endobj -1782 0 obj << -/D [1779 0 R /XYZ 90 723.1038 null] ->> endobj -1790 0 obj << -/D [1779 0 R /XYZ 90 485.7477 null] ->> endobj -1791 0 obj << -/D [1779 0 R /XYZ 90 485.7477 null] ->> endobj -1793 0 obj << -/D [1779 0 R /XYZ 90 471.8276 null] ->> endobj -1795 0 obj << -/D [1779 0 R /XYZ 90 458.9448 null] ->> endobj -1797 0 obj << -/D [1779 0 R /XYZ 90 446.0619 null] ->> endobj -1799 0 obj << -/D [1779 0 R /XYZ 90 433.1791 null] ->> endobj -1801 0 obj << -/D [1779 0 R /XYZ 90 420.2962 null] ->> endobj -1803 0 obj << -/D [1779 0 R /XYZ 90 407.4134 null] ->> endobj -1805 0 obj << -/D [1779 0 R /XYZ 90 394.5305 null] ->> endobj -1807 0 obj << -/D [1779 0 R /XYZ 90 381.6476 null] ->> endobj -1809 0 obj << -/D [1779 0 R /XYZ 90 368.7648 null] ->> endobj -1811 0 obj << -/D [1779 0 R /XYZ 90 355.8819 null] ->> endobj -1813 0 obj << -/D [1779 0 R /XYZ 90 342.3964 null] ->> endobj -1815 0 obj << -/D [1779 0 R /XYZ 90 330.1162 null] ->> endobj -1817 0 obj << -/D [1779 0 R /XYZ 90 317.2334 null] ->> endobj -1819 0 obj << -/D [1779 0 R /XYZ 90 304.3505 null] ->> endobj -1821 0 obj << -/D [1779 0 R /XYZ 90 291.4677 null] ->> endobj -1823 0 obj << -/D [1779 0 R /XYZ 90 278.5848 null] ->> endobj -1825 0 obj << -/D [1779 0 R /XYZ 90 265.702 null] ->> endobj -1827 0 obj << -/D [1779 0 R /XYZ 90 252.8191 null] ->> endobj -1829 0 obj << -/D [1779 0 R /XYZ 90 239.9362 null] ->> endobj -1831 0 obj << -/D [1779 0 R /XYZ 90 227.0534 null] ->> endobj -1833 0 obj << -/D [1779 0 R /XYZ 90 214.1705 null] ->> endobj -1835 0 obj << -/D [1779 0 R /XYZ 90 201.2877 null] ->> endobj -1837 0 obj << -/D [1779 0 R /XYZ 90 188.4048 null] ->> endobj -1841 0 obj << -/D [1779 0 R /XYZ 90 137.9854 null] ->> endobj -1843 0 obj << -/D [1779 0 R /XYZ 90 123.922 null] ->> endobj -1845 0 obj << -/D [1779 0 R /XYZ 90 111.0391 null] ->> endobj -1778 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1850 0 obj << -/Length 3655 -/Filter /FlateDecode ->> -stream -xڭ\ko\_@b ߏ _YȖ*\ieeW%w E,{vιssI.8O{|>''7dXu+B..,"=w|xt5|)?n=vŏ{w+(+޼(=Tfg"|;GyaK/?ns-˗b]W/eZyȨ_4+<.Zp ]BHrsyjeN:Q3Wo!gPCQGg/O?/O.^ک*s( \TISK1~`^fvncn y Ge4qG/._5sτBARpf^9bͻ1(dxÐy`T4jӎ"0)u@P@8X i/ʸW5ń&n6gr;!4/%g -Wb<}3:h1F`4[FW#F2f2Bx" -P %_ W=e=D+ -kboEE1yKQ@ށGEw˘2<" 1`[E, -#EE1yKQ@ށG (D@b_vm m8o^؎h&1ݗώl o#&h"EQ{όjXD\w] ]8oq\hfq9ǩ:d*Ire"&a#p-.C+qMEO%@FQqtC貞sٿv2`.g2\yːw|e\F7|z28uqRGV;M xQa4 Ii+{q ӨVOh "bsrt\K]0_!Ǹ&nvag(:zld{16u\] ]8oq\hf. A(:VqY]Qfe#R!s9h1F2[\.W#.2ӋWO۝ToY((^Hg2{ m8o\،hB_#-"TL k {a#->C+qM\v8ƳPP}Β Rļ -"ٜa#-6C+qM܉ͳ{*XDd!@jΌѮ0ZFoBbtF; ltK]Mh&,˳sn;) "tHgdBNtݧ*~w~co yGe4q+۳) "%7:3ֈv )ۜYa#-C+qMl%Ǵa.="($M-D0gqL(0 -8oX^Xh֖9HBA#gƆ]١u 7[m2B:8jbyqtL*%cpIG$ eUf"t3ƺZPvD:U@1 -yK@ށ -G*U/N$ -/ "4)9io QƜ&R$wm E9[Yq(,o@V8F --y -")\FwW8qO<=;lwpNgPSSP&'ZҜ*X@/0zqg=xik MTi?B)(B!\knO3"`g?yw|\F7!.5"ekGd (j0V{zh? gӐ&nˇ/w}ӘqOFAMo:$\cxtGk#vpa4OO䩍}ɗ7s $1h -o%7l`AŢ^!Fw t t ;%*.h&zm fbdŝX(m&GDB!9P6.&l\Rm"ZuYu8&һջh}ûŨ(V!/F;0^*hYUoΔQqrFFQ6n0^}(VA=bbҤqJ7V [)x"Qm\ƪₜ g(&UGl5 [hHe4qy HBFQ>=m|S /h& -(gH'Zuy4FxTT.M$"hÍ"S>xk[%:$P#@#0w?=͞#f!XGNG.D F{1q6"͎r[xw)V_[ù_|nw~WJ +[ &qj!ӎYKGpkF5k8okkX%L5XՕV[5K5!0PeA7\Of?3A [jR5X1 .an錥MY냘XJe4%nTAWXCi7sݘ~Jvn!tW/F@bDwHbxKKϿ^7q60~9fQj8A5d<`w?7;bW^Po:biD֓+2,9 -=BG*C.sJ]PY9f7u1yQ A -R^8OoeŝZ77HqrB|œ -qceK37Dͅ;۝%<6n?A0 2Q݈I>nzH^nə A Y%Xpwg?|rt]=lfauZB*m.6?V˛R#뮦RR>N=5SS7(nqv 4S o}a2 - -[O+;m4⌎-I!i* -hUlyչtyEeYX'7BRR]^!s4ɿ[}ָn~ٗfy;ڇ@򯿿_5"7Be~gendstream -endobj -1849 0 obj << -/Type /Page -/Contents 1850 0 R -/Resources 1848 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1754 0 R -/Annots [ 1853 0 R 1855 0 R 1857 0 R 1859 0 R 1861 0 R 1863 0 R 1865 0 R 1867 0 R 1869 0 R 1871 0 R 1873 0 R 1875 0 R 1877 0 R 1879 0 R 1881 0 R 1883 0 R 1885 0 R 1887 0 R 1889 0 R 1891 0 R 1893 0 R 1895 0 R 1897 0 R 1899 0 R 1901 0 R 1903 0 R 1905 0 R 1907 0 R 1908 0 R 1909 0 R 1911 0 R 1912 0 R 1914 0 R 1915 0 R 1916 0 R 1918 0 R 1919 0 R 1920 0 R 1922 0 R 1924 0 R 1927 0 R 1928 0 R 1930 0 R 1931 0 R 1932 0 R 1933 0 R 1936 0 R 1937 0 R 1938 0 R 1939 0 R 1940 0 R 1941 0 R 1942 0 R 1943 0 R ] ->> endobj -1853 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 727.7951 234.7566 737.7228] -/Subtype /Link -/A << /S /GoTo /D (a00150_gad0321f4c570f9983c6de81ece3ddc20) >> ->> endobj -1855 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 714.8027 209.1527 724.7304] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6bc12c6c7b56f73ce5d57abfdcdc6eb5) >> ->> endobj -1857 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 701.8102 220.2212 711.7379] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb948296aea6b6b3aa1f156799c4d479c) >> ->> endobj -1859 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 688.8178 218.5673 698.7454] -/Subtype /Link -/A << /S /GoTo /D (a00150_g17d111686f98e4c09db73a770ac3f1a4) >> ->> endobj -1861 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 675.2227 229.0778 685.753] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6f2b90c597ec23f39ec716ccec11233c) >> ->> endobj -1863 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 662.2302 227.424 672.7605] -/Subtype /Link -/A << /S /GoTo /D (a00150_g15f2617f7dc1713f9d10282125c6027b) >> ->> endobj -1865 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 649.8404 227.424 659.7681] -/Subtype /Link -/A << /S /GoTo /D (a00150_gee37386b2ab828787c05227eb109def7) >> ->> endobj -1867 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 636.848 187.0257 646.7756] -/Subtype /Link -/A << /S /GoTo /D (a00150_g88e60aa2cf23e1c65d630701db08c743) >> ->> endobj -1869 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 623.8555 190.9012 633.7832] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6020613f5062417d9811cfa837215c83) >> ->> endobj -1871 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 610.8631 189.2474 620.7907] -/Subtype /Link -/A << /S /GoTo /D (a00150_g5ca559def464ef20d8b1f7d32f2f160d) >> ->> endobj -1873 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 597.8706 189.2474 607.7983] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1320fd0006a2f70138bc2d0018dda829) >> ->> endobj -1875 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 584.8781 191.6086 594.8058] -/Subtype /Link -/A << /S /GoTo /D (a00150_g44b3b1ab31a403ba28ec135adfcbefef) >> ->> endobj -1877 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 571.8857 192.007 581.8134] -/Subtype /Link -/A << /S /GoTo /D (a00150_gc84f499cba8a02fc0e306c10b2acabf0) >> ->> endobj -1879 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 558.8933 189.7953 568.8209] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1425d4a0c2760adb653a04c0fb137a8d) >> ->> endobj -1881 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 545.9008 215.2498 555.8285] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1215163245304bad20d6c5608ad75ab7) >> ->> endobj -1883 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 532.9083 221.8948 542.836] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9f1822e1d231235edacad691f3cb7bbb) >> ->> endobj -1885 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 519.9159 214.7117 529.8436] -/Subtype /Link -/A << /S /GoTo /D (a00150_g691688604655ea8943d15f14c60027d8) >> ->> endobj -1887 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 506.9234 239.0603 516.8511] -/Subtype /Link -/A << /S /GoTo /D (a00150_g12f3bf821224b8e7b48a57ed3cea15cf) >> ->> endobj -1889 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 493.931 239.7177 503.8587] -/Subtype /Link -/A << /S /GoTo /D (a00150_g5c5b1834e497f53ad0ef947bbe9777fa) >> ->> endobj -1891 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 480.9385 204.1812 490.8662] -/Subtype /Link -/A << /S /GoTo /D (a00150_gd58231410d58e34b455328b888a9e73c) >> ->> endobj -1893 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 467.9461 244.6991 477.8738] -/Subtype /Link -/A << /S /GoTo /D (a00150_g207d17b633cd095120a74bc1f2257b17) >> ->> endobj -1895 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 454.9536 209.1625 464.8813] -/Subtype /Link -/A << /S /GoTo /D (a00150_g4cc3e223b63f27b546d62e9a258dba5a) >> ->> endobj -1897 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 441.9612 305.6302 451.8889] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1cea57e3ea526f210b1068e6dcf7b4f4) >> ->> endobj -1899 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 428.9687 321.0623 438.8964] -/Subtype /Link -/A << /S /GoTo /D (a00150_g62c03e0a308cc23929a80fe8d8f9dc1e) >> ->> endobj -1901 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 415.3736 218.1788 425.904] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1d3211dbbdfb22d6a47b60dddcf945e8) >> ->> endobj -1903 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 402.9838 341.9936 412.9115] -/Subtype /Link -/A << /S /GoTo /D (a00150_g42288d5c3cf4b10becefec657f441e54) >> ->> endobj -1905 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 389.9914 341.0573 399.9191] -/Subtype /Link -/A << /S /GoTo /D (a00150_g8387881de3a8bfd3c0d57b9d04ac9b7e) >> ->> endobj -1907 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 376.0227 167.0009 386.9266] -/Subtype /Link -/A << /S /GoTo /D (a00150_g24f52ac52d6e714cb04a5aa01be3bdd0) >> ->> endobj -1908 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.7613 376.0227 256.6538 386.9266] -/Subtype /Link -/A << /S /GoTo /D (a00094) >> ->> endobj -1909 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [273.2016 376.0227 305.9885 386.9266] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -1911 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 363.0302 172.5401 373.9342] -/Subtype /Link -/A << /S /GoTo /D (a00150_g96544dedc1cdc71ad2ad54bf1d5e5433) >> ->> endobj -1912 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [204.3005 363.0302 262.193 373.9342] -/Subtype /Link -/A << /S /GoTo /D (a00094) >> ->> endobj -1914 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 350.0378 191.3593 360.9417] -/Subtype /Link -/A << /S /GoTo /D (a00150_g4309376690872fa4beb4f025f5cc199b) >> ->> endobj -1915 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [223.1197 350.0378 288.763 360.9417] -/Subtype /Link -/A << /S /GoTo /D (a00091) >> ->> endobj -1916 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [305.3108 350.0378 338.0977 360.9417] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -1918 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 337.0453 186.9261 347.9492] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb9435261753469accec0c9bf8a5a2686) >> ->> endobj -1919 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [218.6865 337.0453 279.3487 347.9492] -/Subtype /Link -/A << /S /GoTo /D (a00096) >> ->> endobj -1920 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [295.8965 337.0453 328.6835 347.9492] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -1922 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 324.4265 191.6285 334.9568] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9c0814ed491fa452ec97910c0728d410) >> ->> endobj -1924 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 311.434 189.2275 321.9643] -/Subtype /Link -/A << /S /GoTo /D (a00150_g013c3a06a8b58589a77f4a3442f89c2a) >> ->> endobj -1927 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 254.0565 170.966 264.9604] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1928 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [171.4642 254.0565 229.3566 264.9604] -/Subtype /Link -/A << /S /GoTo /D (a00150_g20ceef9d0868d391c2f33041b02cb1f1) >> ->> endobj -1930 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 215.1201 170.966 226.0241] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1931 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [171.4642 215.1201 229.3566 226.0241] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9ebb4dac683163840eab9c6c41ad61f7) >> ->> endobj -1932 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 202.1277 204.1712 213.0316] -/Subtype /Link -/A << /S /GoTo /D (a00150_g20ceef9d0868d391c2f33041b02cb1f1) >> ->> endobj -1933 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [204.6693 202.1277 257.5805 213.0316] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -1936 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 145.1237 183.4989 156.0277] -/Subtype /Link -/A << /S /GoTo /D (a00150_g266263ac78a1361a2b1d15741d3b0675) >> ->> endobj -1937 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.3145 145.1237 207.0205 156.0277] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -1938 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 132.1313 138.5977 143.0352] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1939 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 132.1313 189.7953 143.0352] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb6683dd83fe1c8de9a24086d4b69e907) >> ->> endobj -1940 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.6109 132.1313 218.2983 143.0352] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1941 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [241.84 132.1313 266.5273 143.0352] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1942 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 93.195 138.5977 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1943 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 93.195 197.5461 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00150_g2addf34c7d457c1a7899a7e2171ef1e9) >> ->> endobj -1851 0 obj << -/D [1849 0 R /XYZ 90 757.9346 null] ->> endobj -1852 0 obj << -/D [1849 0 R /XYZ 90 739.9346 null] ->> endobj -1854 0 obj << -/D [1849 0 R /XYZ 90 731.7802 null] ->> endobj -1856 0 obj << -/D [1849 0 R /XYZ 90 718.7877 null] ->> endobj -1858 0 obj << -/D [1849 0 R /XYZ 90 705.7953 null] ->> endobj -1860 0 obj << -/D [1849 0 R /XYZ 90 692.8028 null] ->> endobj -1862 0 obj << -/D [1849 0 R /XYZ 90 679.2077 null] ->> endobj -1864 0 obj << -/D [1849 0 R /XYZ 90 666.2153 null] ->> endobj -1866 0 obj << -/D [1849 0 R /XYZ 90 653.8255 null] ->> endobj -1868 0 obj << -/D [1849 0 R /XYZ 90 640.833 null] ->> endobj -1870 0 obj << -/D [1849 0 R /XYZ 90 627.8406 null] ->> endobj -1872 0 obj << -/D [1849 0 R /XYZ 90 614.8481 null] ->> endobj -1874 0 obj << -/D [1849 0 R /XYZ 90 601.8557 null] ->> endobj -1876 0 obj << -/D [1849 0 R /XYZ 90 588.8632 null] ->> endobj -1878 0 obj << -/D [1849 0 R /XYZ 90 575.8708 null] ->> endobj -1880 0 obj << -/D [1849 0 R /XYZ 90 562.8783 null] ->> endobj -1882 0 obj << -/D [1849 0 R /XYZ 90 549.8858 null] ->> endobj -1884 0 obj << -/D [1849 0 R /XYZ 90 536.8934 null] ->> endobj -1886 0 obj << -/D [1849 0 R /XYZ 90 523.901 null] ->> endobj -1888 0 obj << -/D [1849 0 R /XYZ 90 510.9085 null] ->> endobj -1890 0 obj << -/D [1849 0 R /XYZ 90 497.916 null] ->> endobj -1892 0 obj << -/D [1849 0 R /XYZ 90 484.9236 null] ->> endobj -1894 0 obj << -/D [1849 0 R /XYZ 90 471.9311 null] ->> endobj -1896 0 obj << -/D [1849 0 R /XYZ 90 458.9387 null] ->> endobj -1898 0 obj << -/D [1849 0 R /XYZ 90 445.9462 null] ->> endobj -1900 0 obj << -/D [1849 0 R /XYZ 90 432.9538 null] ->> endobj -1902 0 obj << -/D [1849 0 R /XYZ 90 419.3587 null] ->> endobj -1904 0 obj << -/D [1849 0 R /XYZ 90 406.9689 null] ->> endobj -1906 0 obj << -/D [1849 0 R /XYZ 90 393.9764 null] ->> endobj -1910 0 obj << -/D [1849 0 R /XYZ 90 380.0077 null] ->> endobj -1913 0 obj << -/D [1849 0 R /XYZ 90 367.0153 null] ->> endobj -1917 0 obj << -/D [1849 0 R /XYZ 90 354.0228 null] ->> endobj -1921 0 obj << -/D [1849 0 R /XYZ 90 341.0304 null] ->> endobj -1923 0 obj << -/D [1849 0 R /XYZ 90 328.4115 null] ->> endobj -1925 0 obj << -/D [1849 0 R /XYZ 90 270.7639 null] ->> endobj -1926 0 obj << -/D [1849 0 R /XYZ 90 270.7639 null] ->> endobj -1929 0 obj << -/D [1849 0 R /XYZ 90 234.2545 null] ->> endobj -1519 0 obj << -/D [1849 0 R /XYZ 90 219.1052 null] ->> endobj -1934 0 obj << -/D [1849 0 R /XYZ 90 164.1147 null] ->> endobj -1935 0 obj << -/D [1849 0 R /XYZ 90 164.1147 null] ->> endobj -1848 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -1947 0 obj << -/Length 2723 -/Filter /FlateDecode ->> -stream -x[ے}߯#Ye¸_9qYUqhYHҊCק T%y}ӧѸ(c3GgFԳ:otú2q7sigw n5q%Wt~qqU΋W߇b)z˛F/%4ny6 %Y5 -/(aExqN cÓT+lM;5i0|c<Y> >Y@XݯHBqlOSzsnE,onEw|#w0F:0+rSj¬MRF$)S)E|+1K =J,~9}>Wʝj 30DS&8:PzקOY/3)LHsQNZӣ~ivmo6f1" TZ.H-JZdj~:7f5)5m)gP&" ZjRC\]Yj%zB/ 7Rrfj81J%$_d2C@ZZ@ye -+I($WSJ xEf7(a#DvM:$hR2VJ˩ @ v'+8BsF$<:R g4$RiCc~U;t;մl>rrUV9hQj# UmjZoPm/ھ -",2AF\7 A@aARK1faұV?1dasÏ/-A GN; y$8Q2r$` O#N4 (̱*7ȌÑRQSZ.k[Ü>e'.MiI4Ö@M1Hbð`x}K [oo_|Է2no~ZXhhh6(̷DR5]ۼ+(eɜK`Oׄ皢F,[H|lj);b~1\M.#*ݛGD6L7S,*~G3|nUK(= -c[ xn0GN#S%eV-F A[)Pj%N-hftm"Vnw x85",%B;[WStGإTz-i!|W>:apd/!aKB-$ - ) 5.z캽bm]eD>TAtƊewg),w:<nvkPP` DB H~%)2V%#&T!1]`;@)B-i0VEM&/rV#Nl cPSfnz1zK:_R֎=18[ڸ#3꥓xE˙Rtr;E͡SlcxpܮwP;ģ +X<ϥ -p3#,Vp/* -#,2A*A@aލ&J>)< [8_0C(1 -lf0tLvJ) k:5 I h5V}NX%0I.WL(]rFޣ/g Gcs?mi M20lbam-luxqxX`C(̱{r\`ĊzK 4 Uվ5,y[k9\6_UPQi k[tXa 0$KBo,_W,2((X,G 0F#<X > endobj -1949 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 703.0355 138.5977 713.9394] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1950 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 703.0355 201.9695 713.9394] -/Subtype /Link -/A << /S /GoTo /D (a00150_g85b65e38aa74eba18979156f97a94a87) >> ->> endobj -1951 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 664.4351 138.5977 675.3391] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1952 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 664.4351 204.7393 675.3391] -/Subtype /Link -/A << /S /GoTo /D (a00150_g7023a34ba9e9d03b5fbedbcb32924453) >> ->> endobj -1953 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 625.8348 180.1912 636.7387] -/Subtype /Link -/A << /S /GoTo /D (a00150_g22f140b02c354dfebcc7ad481c3bcd68) >> ->> endobj -1954 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [184.0068 625.8348 208.6941 636.7387] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1955 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 587.2344 177.9699 598.1383] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6832e4d2d046536b6472f7ac92340f68) >> ->> endobj -1956 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.7856 587.2344 201.4916 598.1383] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -1957 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.8776 587.2344 256.5649 598.1383] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1958 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 548.634 166.9111 559.538] -/Subtype /Link -/A << /S /GoTo /D (a00150_gc48ed5f0d27721ef62a3ed02a5ad8d2e) >> ->> endobj -1959 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 510.0337 152.9837 520.9376] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -1960 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [160.9538 510.0337 211.6433 520.9376] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9c24fba2cd8f7f62accb0a0d5bbe4dad) >> ->> endobj -1961 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.459 510.0337 268.3701 520.9376] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -1962 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [307.2043 510.0337 331.8917 520.9376] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1963 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 471.4333 172.9089 482.3372] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -1964 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.8791 471.4333 236.859 482.3372] -/Subtype /Link -/A << /S /GoTo /D (a00150_g79c4110211247df3fb30b8cf1c4c02af) >> ->> endobj -1965 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [240.6746 471.4333 293.5858 482.3372] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -1966 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [332.42 471.4333 357.1073 482.3372] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1967 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 432.8329 185.1725 443.7369] -/Subtype /Link -/A << /S /GoTo /D (a00150_gaa585784b0914cac1d37f07f85457008) >> ->> endobj -1968 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [188.9881 432.8329 213.6754 443.7369] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1969 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 394.2326 175.2098 405.1365] -/Subtype /Link -/A << /S /GoTo /D (a00150_gdd1ab3704ecd4900eec61a6897d32dc8) >> ->> endobj -1970 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [179.0255 394.2326 203.7128 405.1365] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1971 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 356.0058 138.5977 366.5361] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1972 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 356.0058 162.6772 366.5361] -/Subtype /Link -/A << /S /GoTo /D (a00150_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -1973 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [166.4928 356.0058 191.1801 366.5361] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -1974 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 317.0318 171.8826 327.9358] -/Subtype /Link -/A << /S /GoTo /D (a00150_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -1976 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.3873 234.645 192.0768 245.5489] -/Subtype /Link -/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> ->> endobj -1977 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 196.0446 152.9837 206.9486] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -1978 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [160.9538 196.0446 200.0271 206.9486] -/Subtype /Link -/A << /S /GoTo /D (a00150_g788ffac72342f6172343d7f8099cbe1a) >> ->> endobj -1979 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 157.4443 152.9837 168.3482] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -1980 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.4818 157.4443 196.4305 168.3482] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> ->> endobj -1982 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 144.6198 172.9089 155.5237] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -1983 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.8791 144.6198 239.8777 155.5237] -/Subtype /Link -/A << /S /GoTo /D (a00150_g210f227119fc972e6222c9cb452e15a9) >> ->> endobj -1985 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 106.0194 172.9089 116.9234] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -1986 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.4071 106.0194 236.281 116.9234] -/Subtype /Link -/A << /S /GoTo /D (a00150_geb533744817cf6695d75293369c2248b) >> ->> endobj -1987 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 93.195 151.3294 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00093) >> ->> endobj -1988 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [151.8276 93.195 185.3713 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9ee50a40597e67fce96541ab56c3b712) >> ->> endobj -1948 0 obj << -/D [1946 0 R /XYZ 90 757.9346 null] ->> endobj -1975 0 obj << -/D [1946 0 R /XYZ 90 253.468 null] ->> endobj -1406 0 obj << -/D [1946 0 R /XYZ 90 176.4106 null] ->> endobj -1981 0 obj << -/D [1946 0 R /XYZ 90 161.4293 null] ->> endobj -1984 0 obj << -/D [1946 0 R /XYZ 90 124.9858 null] ->> endobj -1945 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2003 0 obj << -/Length 2504 -/Filter /FlateDecode ->> -stream -xڭ[َ7} a"<8ؘ82a%u`ђ粊d]J.U"  ( qBn,<qK8jA38ル֣1%\*:d?g弾~dXF^_JZJh{G:g@ s/$/AB$U -;sS'u4{p,78;(o0d.뭷vnIOàU&N0c) 憲G9E&'Ha >p- oݣ$2Р~lnã_s T"kO;q"5evBƨ-&çC0(ɱ ZXCj0~elE\a2mz%ºR["rEay0mCT,Aـ*kl 1oL+k5x8q8kLYsGbH\HPkId$q%<_b]8gw%Y&,g fP Š&%VV8k|qvIq -#,OWgn,'je;Qei%#,q9$FX.12IfY -b)A H˸.)aeWg0tqI6b%FHRA)Iaeϗg$ywwiCq eyI{& .>Ql0JrP}ҧz]_={)"6( `Ez<ف -"]kcN^kE\8/98.ZBɩV߽ỗo_?C;:8m9hd)7&SoϞ|Wߋbvx3ߌcÃP -_cJ)IuEN##kǐU7|F%JT)aj<_i7a6M:D#R[ -L~L#o6#a.}!<ͧ~RW)fQZ[+H1R`q vcF\/ns --9JqPΝI`s7o~١BWd_"/H .KaNE\/amr`%TL*ϫW/\HCw-!ʞcPe9鎃RK~QgR cHu:ocXH*D.}Eִrx^{عZ& F sb,#`1U( Xvj\bSs9HU#ʑ5x~(R, 屩YdqYn~Ң4 U ~ZD -n_F N}t%١Uɫkө]Y,JCUҴL^<~W#r48w._vlR'Sɗꫛ||v;m?_MÓ:t+kWi?D!J<6DXhY-./>959:|ɟvS{\U{qrr16ؑP;j%-$B%8''v-As mH;%GT{A)ܴoYVz%"}Y\ʠb szx?n4[/gnpѧ K:p+WAP:@Wф/nA!I-"-u=&7}:c)M\06K*CydYPX.)M@)jw6DzD0]3jwэ~a9ڶU2k #C-<ѵe* ABL(O`z؀n>PE3FcMֳ:Sc &|^_=il 0dԓP&.icܑ>1|q@ -VEU3/K󒼼pEYG|5LvVa/^ӧ\<`FTA2zb_bmD4J -bendstream -endobj -2002 0 obj << -/Type /Page -/Contents 2003 0 R -/Resources 2001 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 1754 0 R -/Annots [ 2006 0 R 2007 0 R 2009 0 R 2010 0 R 2012 0 R 2013 0 R 2015 0 R 2016 0 R 2017 0 R 2018 0 R 2019 0 R 2020 0 R 2021 0 R 2022 0 R 2024 0 R 2025 0 R 2026 0 R 2027 0 R 2028 0 R 2030 0 R 2031 0 R 2032 0 R 2034 0 R 2035 0 R 2036 0 R 2037 0 R 2038 0 R 2039 0 R 2040 0 R 2041 0 R 2043 0 R 2044 0 R 2045 0 R 2046 0 R 2047 0 R 2048 0 R 2050 0 R 2051 0 R 2054 0 R 2055 0 R ] ->> endobj -2006 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 702.117 133.6164 713.021] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2007 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 702.117 172.6397 713.021] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb4ef6b00924990e7a293f66715b6d1d1) >> ->> endobj -2009 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 688.3741 166.8215 699.278] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -2010 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 688.3741 221.3367 699.278] -/Subtype /Link -/A << /S /GoTo /D (a00150_g7d3673f52f5846b6961d23b150decd54) >> ->> endobj -2012 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 674.6312 166.8215 685.5351] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -2013 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 674.6312 220.2307 685.5351] -/Subtype /Link -/A << /S /GoTo /D (a00150_g3237be0d9ec457de0177689ee23c0d5c) >> ->> endobj -2015 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 660.8883 166.8215 671.7922] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -2016 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 660.8883 213.028 671.7922] -/Subtype /Link -/A << /S /GoTo /D (a00150_g20df5c82f2a15a508c19e505b5d9de2b) >> ->> endobj -2017 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 647.1453 166.8215 658.0493] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -2018 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 647.1453 221.3367 658.0493] -/Subtype /Link -/A << /S /GoTo /D (a00150_g7d3673f52f5846b6961d23b150decd54) >> ->> endobj -2019 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 633.4024 166.8215 644.3063] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -2020 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 633.4024 213.028 644.3063] -/Subtype /Link -/A << /S /GoTo /D (a00150_g20df5c82f2a15a508c19e505b5d9de2b) >> ->> endobj -2021 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 619.6595 166.8215 630.5634] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -2022 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 619.6595 220.2307 630.5634] -/Subtype /Link -/A << /S /GoTo /D (a00150_g3237be0d9ec457de0177689ee23c0d5c) >> ->> endobj -2024 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 605.9166 168.4754 616.8205] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -2025 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.9735 605.9166 218.5572 616.8205] -/Subtype /Link -/A << /S /GoTo /D (a00150_g499bb98a0b4ae9a98553ede81317606d) >> ->> endobj -2026 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 592.1736 133.6164 603.0776] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2027 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 592.1736 166.9014 603.0776] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -2028 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.3873 551.7363 192.0768 562.6403] -/Subtype /Link -/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> ->> endobj -2030 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.3873 511.2991 195.9522 522.203] -/Subtype /Link -/A << /S /GoTo /D (a00150_ga05a3dde2048480fa3ab2a5961898d18) >> ->> endobj -2031 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 497.5561 138.5977 508.4601] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2032 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 497.5561 170.976 508.4601] -/Subtype /Link -/A << /S /GoTo /D (a00150_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> ->> endobj -2034 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 457.1189 138.5977 468.0228] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2035 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 457.1189 174.8513 468.0228] -/Subtype /Link -/A << /S /GoTo /D (a00150_g5b5615dc240daed20949c0fded2b4679) >> ->> endobj -2036 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 443.3759 133.6164 454.2799] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2037 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 443.3759 172.6397 454.2799] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb4ef6b00924990e7a293f66715b6d1d1) >> ->> endobj -2038 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 429.633 152.9837 440.537] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2039 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [160.9538 429.633 200.0271 440.537] -/Subtype /Link -/A << /S /GoTo /D (a00150_g788ffac72342f6172343d7f8099cbe1a) >> ->> endobj -2040 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 389.1957 152.9837 400.0997] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2041 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.4818 389.1957 196.4305 400.0997] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> ->> endobj -2043 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 375.4528 138.5977 386.3567] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2044 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 375.4528 200.3154 386.3567] -/Subtype /Link -/A << /S /GoTo /D (a00150_g236d5c7872f59c8fe7b701c7252b976e) >> ->> endobj -2045 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 361.7099 172.9089 372.6138] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -2046 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.8791 361.7099 239.8777 372.6138] -/Subtype /Link -/A << /S /GoTo /D (a00150_g210f227119fc972e6222c9cb452e15a9) >> ->> endobj -2047 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 321.2726 172.9089 332.1765] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -2048 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.4071 321.2726 236.281 332.1765] -/Subtype /Link -/A << /S /GoTo /D (a00150_geb533744817cf6695d75293369c2248b) >> ->> endobj -2050 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 307.5297 133.6164 318.4336] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2051 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 307.5297 177.0532 318.4336] -/Subtype /Link -/A << /S /GoTo /D (a00150_g2a0cf5d86c58fab216414ce59bf1fea1) >> ->> endobj -2054 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [266.5461 195.4567 299.333 206.3606] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -2055 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [313.5331 177.8323 346.3201 188.7363] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -2004 0 obj << -/D [2002 0 R /XYZ 90 757.9346 null] ->> endobj -2005 0 obj << -/D [2002 0 R /XYZ 90 722.0018 null] ->> endobj -2008 0 obj << -/D [2002 0 R /XYZ 90 706.1021 null] ->> endobj -2011 0 obj << -/D [2002 0 R /XYZ 90 692.3592 null] ->> endobj -2014 0 obj << -/D [2002 0 R /XYZ 90 678.6162 null] ->> endobj -2023 0 obj << -/D [2002 0 R /XYZ 90 623.6445 null] ->> endobj -2029 0 obj << -/D [2002 0 R /XYZ 90 531.1839 null] ->> endobj -2033 0 obj << -/D [2002 0 R /XYZ 90 477.0037 null] ->> endobj -2042 0 obj << -/D [2002 0 R /XYZ 90 393.1808 null] ->> endobj -2049 0 obj << -/D [2002 0 R /XYZ 90 325.2577 null] ->> endobj -2052 0 obj << -/D [2002 0 R /XYZ 90 267.6373 null] ->> endobj -1847 0 obj << -/D [2002 0 R /XYZ 90 240.7961 null] ->> endobj -2053 0 obj << -/D [2002 0 R /XYZ 90 240.7961 null] ->> endobj -2001 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2058 0 obj << -/Length 2056 -/Filter /FlateDecode ->> -stream -xY[۶~[m f9$Jyk7MI-ZYk %Gߡx=>,E~ >4):k q/X']pﺀW߿g:"QS{Bg?6;1U׏zf|vǩ@l|<Iꏿz}XQ£_?%El}Zy|y_{Zh7]>~?>3dx_aGvH,ԕޕIsJ:nB=I(GBź (Z yKAc>u`J& >c';Z"shc]%?O,ۥ`K ΝA`QCh>WŒFRޓ·81`ǐĠx@x3VՂ<V0L6qQgzʓˋFaׁO*nP5o!kivC4sZ`sA.8 3lɡ#(cy?)eEv Ա<+X! J&egZq)}JHRZ+Qѷ=!9~4'#7(ҤYΓ[ M9}L !ˆu[kJ:9 QH0*pKw #}pnÑ*)#~\7!]^80:tz 4q|AopA[g ;Ey`A~5$Ez @3™J[mUݭlgQ1MbaSy. sPrjզRTcPЦ>/+ثcXGJVD]Y):<3B-*\ܹ L 隚y}RPT&ZE/qE}f؝*2)s_F/H - U18l]ekHk,צ V붒^4*YR$'Ĥ -h6!mӆmIguvu)sƅXsTp] YX7ŎjhЀ? {IN7y5WSg^~ܼ/A ^f^,l%ea%hy r gk`[ n/p4c󢰨!amVD^O7 [4Vsdu(]F jN/D' -E ?uۆb{rpi&DE $ܮ!O<2`;4o)C~rQ O/eS!±nk,ҕ.E-4N?5]FA&7_FuQe  {WQc d'Yz<+Y@8(萞+#t:t&뽍>et$_1Bԅ :<% d jH'xx,]3nu?`,XpjG<ªJ^9ȏ66/Z TvsUTZzĨ$) - d{o~mDq 6]3W.?EZŵ~38[2{JHY~B]aK$endstream -endobj -2057 0 obj << -/Type /Page -/Contents 2058 0 R -/Resources 2056 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R -/Annots [ 2062 0 R 2063 0 R 2064 0 R 2066 0 R 2067 0 R 2069 0 R 2070 0 R 2071 0 R ] ->> endobj -2062 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.3636 702.4242 152.1568 713.0144] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2063 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.7156 702.4242 207.5088 713.0144] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2064 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [294.093 647.6032 335.7466 658.5071] -/Subtype /Link -/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> ->> endobj -2066 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [197.6856 560.3152 218.4975 571.2043] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2067 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [251.3742 560.3152 277.1673 571.2043] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2069 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.3636 305.376 152.1568 316.2651] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2070 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [210.5073 305.376 236.3005 316.2651] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2071 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [262.8907 305.376 288.6839 316.2651] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2059 0 obj << -/D [2057 0 R /XYZ 90 757.9346 null] ->> endobj -2060 0 obj << -/D [2057 0 R /XYZ 90 739.9346 null] ->> endobj -1996 0 obj << -/D [2057 0 R /XYZ 90 722.6349 null] ->> endobj -2061 0 obj << -/D [2057 0 R /XYZ 90 722.6349 null] ->> endobj -681 0 obj << -/D [2057 0 R /XYZ 486.51 597.8832 null] ->> endobj -2065 0 obj << -/D [2057 0 R /XYZ 90 578.8113 null] ->> endobj -1944 0 obj << -/D [2057 0 R /XYZ 224.7534 342.944 null] ->> endobj -2068 0 obj << -/D [2057 0 R /XYZ 90 323.8721 null] ->> endobj -1992 0 obj << -/D [2057 0 R /XYZ 167.4587 96.348 null] ->> endobj -2056 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2075 0 obj << -/Length 2271 -/Filter /FlateDecode ->> -stream -xڭYYoF~BN$OǙfE4I[Hc_KaYgPE <{N/a~gH*gMA$(u\%4M߰})OxTE+뢶yiAuf~XBHK8qI9Ӕ۴:gѺLbla¢2Cdɂw:.(IQGXKc5 9X2N.*)[F]!"1i HS,8c]2*eREQJ/ZmOZmnVk-Uv"bZ$Uf>-#thl3iE!i棎T hF@U23`,̟p3y [;a0k0<$Eiݎy`amm5n<3ko)pL#aeTJl*%HsGBb>"9(=Bs i<|F]iˁЧd@}@Lc(GZQC Ђ k+YW$SYLmP#|;%CWTύ ߔ wi?5g4|`<v9T[dj.47Gk](?F-8Qa?*ufՍ^AE@@X\y:qe{PCC)(a'E9juT^AWyOi)sa,hBuZ Ý[v/$\y^|EDʩvܰ,C K*F{zp󃙀דg=V_ 5:i_=XNJ2VLn)o+/^CyU̎3Ջ/}ʳԞ Pt{/:ǟ`^o.A\_ xm䁼ZLtY GmP"&qS>dA7Ӽ4H@//%UmK.dwE_LCcT)CtHkN4Al|Du"'kۘAn I9^f=(&U@#*'C fvɕ{IQbNKKNC%ϘNڰ ]5v᫊l-hȵ(( t]?,ϩ-l;bk}u@UY[R0kҔahbN¦uUoqMD7w}hE$j]:ӂY5lVN]Ό=#Մ$Izu}kD_G=̼Y0XB*}Z߬p5O*[*qCL@ AU-s5S_<|$`DbXcphNբײ޿zҒFlq]Tªo0FIPmr,I5\ꢤYU˨u]*da)>FSOON4OG6t';`C$c  /9u 虎aOv ߇ZFp/7 < k6w7~0.NOM^TO⤂]Zm:P?Lq_Z vA_^IZ=N - (j,)Te-sguj!~eWRSʌf?~MW-[endstream -endobj -2074 0 obj << -/Type /Page -/Contents 2075 0 R -/Resources 2073 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R -/Annots [ 2078 0 R 2079 0 R 2080 0 R 2081 0 R 2082 0 R 2083 0 R 2084 0 R 2087 0 R ] ->> endobj -2078 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.7506 726.9434 195.0552 737.8324] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2079 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [257.8193 726.9434 315.7315 737.8324] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -2080 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [359.1284 726.9434 384.9216 737.8324] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2081 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [317.5642 648.9799 374.8887 659.8838] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> ->> endobj -2082 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [204.2809 603.5654 239.2097 614.4693] -/Subtype /Link -/A << /S /GoTo /D (a00140) >> ->> endobj -2083 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [472.3426 591.6102 513.9963 602.5142] -/Subtype /Link -/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> ->> endobj -2084 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [117.5067 579.6551 147.7231 590.559] -/Subtype /Link -/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -2087 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.3636 227.4529 152.1568 238.332] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2076 0 obj << -/D [2074 0 R /XYZ 90 757.9346 null] ->> endobj -2077 0 obj << -/D [2074 0 R /XYZ 90 739.9346 null] ->> endobj -1991 0 obj << -/D [2074 0 R /XYZ 286.4315 370.591 null] ->> endobj -2085 0 obj << -/D [2074 0 R /XYZ 90 354.6099 null] ->> endobj -679 0 obj << -/D [2074 0 R /XYZ 224.9827 261.9201 null] ->> endobj -2086 0 obj << -/D [2074 0 R /XYZ 90 246.9153 null] ->> endobj -1995 0 obj << -/D [2074 0 R /XYZ 300.8374 96.348 null] ->> endobj -2073 0 obj << -/Font << /F29 499 0 R /F14 636 0 R /F52 1229 0 R /F23 482 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2090 0 obj << -/Length 2121 -/Filter /FlateDecode ->> -stream -xڭY[~ϯclT],[{wyj(3&vKgPXLb0,Q$ERI1gH$o3<g-`}'f=*ɔpH z"Er/OwwnۻiDT._}^Dcx0bR3<`D,?f>vl:'5!`. ^T8=U} s<<1F+P?:O=VqSّ -D"ᤑMH(=&EROUmLQ358"#ZD ʩ8ē4m,9i>q֜Զ c?6hh&")Es9iOS /$˜,A"%hjۑ1E@5!o*3܌r `Lۤh`Dbߕ۶J;/ZlW̨U+UlBl6/X;N <'r-L U7AX'x sZvvi$bý>pLPB亳 %8NP#%z"ީ#qv Gi.?uD"R0IFIW=#Rz\>z(',JE)BlbNAB0S:{K-t /9{1=PuPJİV.w?}L6c?}RCN{=oI۞&1kLӠ :Ŗ@b (/@3D8+R#$H2@j_"`fP%m>Uj|i'APM3FBYB]"\6V0ژ)%˶<`)@C|!69f$02:GZ; -$a*VMPہ>q:6z8ڧqxʗ~;Qʫ >PpZdm%=4v;Օ"4MfȐN3cm=۶]~fOF'ܷC}\Ȳ qz\w>;;yۜKqS !ĞP3ƹz -TEpq"^y.@wmuWoݹaq[W'hu7qF -~#':G]?PxH& l^:4t&̅1zAB,H`^|UDűXbQ(>Rf؋y*Pg4V^YC3t~q 2=6 ܭ~䛬k:<-t/W -5&^^.W,dEvU치˝Y)8<*S(N=vPRfI LOuYgtsTenSϊAVraP5NnQ[k+tH3ds6d*_}:C0$.MzW c^x.F:%ʃXAp[ q K 9jlɋUk@gQxRΑ1 ^xCs.sww."3¦Ou ~a#^5% -4Y,H^?0@܋CtaH׾B7Ukg=?'WY71FkgS&P0L@>5z^[Μp~C"^vvZ>oųuwz|NThUMK0vf LQ^T.9#!#> endobj -2093 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [194.3577 726.9434 220.1509 737.8324] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2094 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [460.7601 659.7528 502.4137 682.7215] -/Subtype /Link -/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> ->> endobj -2095 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 647.7976 136.9336 658.7016] -/Subtype /Link -/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -2097 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [194.6109 376.6552 236.4535 387.5592] -/Subtype /Link -/A << /S /GoTo /D (a00147_gb5fecbc62edd128012cea0f47b57ab9f) >> ->> endobj -2098 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [309.2914 313.2651 361.4951 324.169] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> ->> endobj -2100 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.8969 154.1071 225.6901 164.9862] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2091 0 obj << -/D [2089 0 R /XYZ 90 757.9346 null] ->> endobj -2092 0 obj << -/D [2089 0 R /XYZ 90 739.9346 null] ->> endobj -1997 0 obj << -/D [2089 0 R /XYZ 350.0021 514.5454 null] ->> endobj -2096 0 obj << -/D [2089 0 R /XYZ 90 491.9191 null] ->> endobj -1990 0 obj << -/D [2089 0 R /XYZ 247.4281 195.2196 null] ->> endobj -2099 0 obj << -/D [2089 0 R /XYZ 90 172.5933 null] ->> endobj -680 0 obj << -/D [2089 0 R /XYZ 225.6001 96.348 null] ->> endobj -2088 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F26 485 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2103 0 obj << -/Length 1978 -/Filter /FlateDecode ->> -stream -xڽYYo~_1y F'"/k{BHJCNxk[}q<$XͯGoC"xMN}7~}QH45 A _v!x׾zCwa3L<3eҞcY\vxb __~{Hl FDJ=m8e%|1 ž= -]$bQ85;z=|Ï*Z6#"@lp ->I㧺= ]yLaLL@HKjO9DZ/@D6 >i>I1ZB @>kJmoF) -%;0qv9gXS\KSSTVwF_;jh[2ҫ%ο ۳ϪH ?zwǻDJ2t۲mm\r IF$;VrAM&^NFd h u}u.MϷp{GR M%l'LMdz ='d11]'i5R:Ԋ IجNk2MaĹw=_ROd_l$@e*PcƞV dQqu.fB;`<l=ձ( .u{f {bAءFAj@¡߸)Hh0!J1iO^72'l*#M}yԹU O"5 k{J )o>IB㽂Y|GmrFH[Lq>Y8>jHap枿SEe\ŧ .B2%B2 ])f$*p xw#1wk(1)T:I`瞲z%e9x)hAlCbYaJ 6ܦ=hѫ{&'W:ejz!v9Qe,`Deȟ^/rdy"GU󥞅R]+Hteys7TǼ -:1O圭;Z+]n9li|vGёxlʢv&WlT}=hϨ~/޾yY peYQvgζ)\ ,{ M5Em0v}c9qLǗkP7tQՉoNgWǪ$Z^xƱ"vi7#~Ԁd)ԥ c8D(Fl92QIpH3""KdL O7jk\ckw v#pɪH`J9]FNo%C^v]}Ywq'7xto(Gq`C.pt{Y!eG -Waendstream -endobj -2102 0 obj << -/Type /Page -/Contents 2103 0 R -/Resources 2101 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R -/Annots [ 2106 0 R 2108 0 R 2109 0 R 2110 0 R 2111 0 R 2112 0 R 2113 0 R 2115 0 R ] ->> endobj -2106 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.345 726.9533 157.1381 737.8324] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2108 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.7319 549.2408 221.6354 560.1299] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -2109 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [290.5065 549.2408 348.4187 560.1299] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -2110 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [391.8156 549.2408 417.6088 560.1299] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2111 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.7656 495.1877 457.7454 506.0916] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga20812098a4663c8a9fc4ce8e95391b6) >> ->> endobj -2112 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 483.2325 151.6186 494.1364] -/Subtype /Link -/A << /S /GoTo /D (a00147_g79c4110211247df3fb30b8cf1c4c02af) >> ->> endobj -2113 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [124.6997 295.1891 183.6983 318.1579] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -2115 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.345 204.0406 157.1381 214.9197] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2104 0 obj << -/D [2102 0 R /XYZ 90 757.9346 null] ->> endobj -2105 0 obj << -/D [2102 0 R /XYZ 90 739.9346 null] ->> endobj -1993 0 obj << -/D [2102 0 R /XYZ 224.7534 583.8924 null] ->> endobj -2107 0 obj << -/D [2102 0 R /XYZ 90 567.737 null] ->> endobj -1989 0 obj << -/D [2102 0 R /XYZ 206.4623 238.6822 null] ->> endobj -2114 0 obj << -/D [2102 0 R /XYZ 90 222.5267 null] ->> endobj -1994 0 obj << -/D [2102 0 R /XYZ 207.0201 96.348 null] ->> endobj -2101 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2118 0 obj << -/Length 2118 -/Filter /FlateDecode ->> -stream -xZm6m4fmA.f;iP[r%9ܯP|1%ʒz@qE0Eg d&,$g=BW /a| |;*fƳնQBg͇ybI#<_=I8ܚ~mu],iu TMQhPi0IY A}`T1])Awe#_LQ(7"|OXtz*/ -ƔOZT̷beD S#εͼB6mWꁇ/XVxg{ &y{JjX y$Q{9{0BOW xw FNՁJf9 pP#; * J/=P1RSSՃ0bº8j&qvTkYYeGǔ1Ӕ(F'+;a:lDΠjcn+i9pHOR#ʐޭ:lYe< aI]81;A12k H CWtx7'67cJFPC3jiL͖\XG+2GkTӲƦ(Hj4nmt']TN$A1Z{n6ۛ/bKE5n.ȳkU>edYUHiW],gΗH1E\V~OFpdMT78%IHRY ]LS}$˼hl@=-N:كÂBl4o@Ѫ4V'A hX&,aa,u RTLO^˽3tC7ciV5 &'~ 4lЯLTNWk3c©֠eJ>h 9iIE4iADUQ?<ĦT}>pXЮd8 '<'5 -DmU>?e\l0V3tuL[sPxL蔶/޾{ۚZ1=kI_|-I(F4JF͞^vkD'mqBjBltjυݽ,7ޖN4&sSV6MP+RفHMa7ﳽtfmTU֜ mەj-K^^}N'fcOGWY(DB9{YHodmQ9B/~IK86P(^>!wQ>†;'Cendstream -endobj -2117 0 obj << -/Type /Page -/Contents 2118 0 R -/Resources 2116 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R -/Annots [ 2121 0 R 2122 0 R 2123 0 R 2126 0 R 2127 0 R 2129 0 R 2130 0 R 2131 0 R 2132 0 R 2133 0 R 2134 0 R 2136 0 R 2137 0 R ] ->> endobj -2121 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [210.4174 726.9434 236.2105 737.8324] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2122 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [460.7601 665.9261 502.4137 688.8948] -/Subtype /Link -/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> ->> endobj -2123 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 653.9709 136.9336 664.8748] -/Subtype /Link -/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -2126 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [152.0073 491.9593 207.708 502.8384] -/Subtype /Link -/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> ->> endobj -2127 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [391.426 437.8962 436.0284 448.8001] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -2129 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [152.0073 370.7781 207.708 381.6572] -/Subtype /Link -/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> ->> endobj -2130 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [391.426 316.715 436.0284 327.6189] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -2131 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 281.9517 139.4144 304.9205] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -2132 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 281.9517 175.0106 304.9205] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -2133 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [177.9994 281.9517 214.0238 304.9205] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -2134 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [233.8893 281.9517 281.53 304.9205] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -2136 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.3636 207.7121 147.1755 218.5912] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2137 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [147.6736 207.7121 182.6919 218.5912] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -2119 0 obj << -/D [2117 0 R /XYZ 90 757.9346 null] ->> endobj -2120 0 obj << -/D [2117 0 R /XYZ 90 739.9346 null] ->> endobj -2124 0 obj << -/D [2117 0 R /XYZ 90 537.7634 null] ->> endobj -1998 0 obj << -/D [2117 0 R /XYZ 90 512.4589 null] ->> endobj -2125 0 obj << -/D [2117 0 R /XYZ 90 512.4589 null] ->> endobj -2128 0 obj << -/D [2117 0 R /XYZ 90 389.2643 null] ->> endobj -1453 0 obj << -/D [2117 0 R /XYZ 300.8374 242.7345 null] ->> endobj -2135 0 obj << -/D [2117 0 R /XYZ 90 226.1983 null] ->> endobj -2116 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F26 485 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2140 0 obj << -/Length 1602 -/Filter /FlateDecode ->> -stream -xY[o6~`c˻n{ڵ !<-EVYrbߡHʺErlPs9!%aG<@H1.f-L?_ú&~x#UBJR魯j A ֛ˀ|//a( l!KinWggF5K0Ioco-0b*<`D͂S/9ff BϧqE5&Q -@BWBxJGH7I+%&MdOoEwX`M dzpA;+wC<\|ח^x'-f՜YopV76*$$5%۱pQO2yc>(KvMTE3~X*KU>I (AM4y1Ӻ몌*󛥹S”WW"P\HH$&JIm(/?5}'eD64 )?WP⪏DppzBHDCiY/MfPH 3$h,J)fTS~CNl9Pfݦ!Zϋ4I6 Rf.+Xv/A5pTxʊ`.ߢ2:>\ ,OG4CLuڑ#[KW.QK  'ad9ָqpɐӢ@Gu -t,ojG᦭u -mNI2O)H3N R h,pHf$Zq/vhM۳L&a1 p1G䷩*5'ճ.K'ÍdR3='lz@35]CVI,+gLK:#G4gB_P@JAUtUG?/W/o݈׊±C՜4I|3@.݈9;9 Cڎ2R(aP(PDNS?CN39# &.^j.fi5y1r%C}, tuCRG!?U] b WƆsYE5# {ԵZp.򜅎n©Ap9iP%@EpxښҸDc_%-Xȿ aGȭי]z>\-b{ghPPo3ciF5^8О?m]_=`$J!%2endstream -endobj -2139 0 obj << -/Type /Page -/Contents 2140 0 R -/Resources 2138 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2072 0 R -/Annots [ 2143 0 R 2144 0 R 2145 0 R 2147 0 R 2148 0 R 2149 0 R 2150 0 R 2151 0 R 2152 0 R 2154 0 R 2155 0 R 2157 0 R 2158 0 R ] ->> endobj -2143 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.7506 553.2679 195.0552 564.147] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2144 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.5347 553.2679 241.8394 564.147] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2145 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.9862 510.9639 146.0595 521.8678] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2147 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.7506 442.6743 195.0552 453.5535] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2148 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.5347 442.6743 241.8394 453.5535] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2149 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.9862 400.3703 146.0595 411.2742] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2150 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 364.3227 162.0093 387.2914] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -2151 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.9981 364.3227 193.2816 387.2914] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2152 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.1471 364.3227 260.7879 387.2914] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -2154 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.3636 287.6273 152.1568 298.5064] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2155 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [152.6549 287.6273 186.2086 298.5064] -/Subtype /Link -/A << /S /GoTo /D (a00150_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> ->> endobj -2157 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.7506 117.8746 193.9393 128.7537] -/Subtype /Link -/A << /S /GoTo /D (a00093) >> ->> endobj -2158 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [194.4374 117.8746 230.7508 128.7537] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9ee50a40597e67fce96541ab56c3b712) >> ->> endobj -2141 0 obj << -/D [2139 0 R /XYZ 90 757.9346 null] ->> endobj -1999 0 obj << -/D [2139 0 R /XYZ 207.0201 589.4618 null] ->> endobj -2142 0 obj << -/D [2139 0 R /XYZ 90 571.7541 null] ->> endobj -2146 0 obj << -/D [2139 0 R /XYZ 90 461.1605 null] ->> endobj -1755 0 obj << -/D [2139 0 R /XYZ 208.1261 323.8211 null] ->> endobj -2153 0 obj << -/D [2139 0 R /XYZ 90 306.1135 null] ->> endobj -2000 0 obj << -/D [2139 0 R /XYZ 368.3438 154.0685 null] ->> endobj -2156 0 obj << -/D [2139 0 R /XYZ 90 136.3608 null] ->> endobj -2138 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2161 0 obj << -/Length 368 -/Filter /FlateDecode ->> -stream -xڥR[o0~#1mz ͪA/̈́YOwfQ::,2domZזILxD2mzI6:GIfJvx?ETT@Ƹ7zTsR=C{G.ήHfDgI=+su40#)(i(+$??}~endstream -endobj -2160 0 obj << -/Type /Page -/Contents 2161 0 R -/Resources 2159 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2163 0 R ->> endobj -2162 0 obj << -/D [2160 0 R /XYZ 90 757.9346 null] ->> endobj -2159 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2166 0 obj << -/Length 2324 -/Filter /FlateDecode ->> -stream -xڭZY6~6P\%2odRL23,Ȗ+I&L -?XGRdGV -R"xOOx~"oC~|OJ!d|0%tNfK%Np) l/~v*m֖yߟ;N-3^AO1%+`DTOyWǾ0MG8'GԚ o͆u~,"oovy+4'sj$FZ h*w5oʋ0bAD4|P-ﳦeƎSt -oj~,96pv0ݕndߗF-mړ%^{ _eU~lUS~pOͷ^bCKq*_Y_&;o?hkikccv A0)q1SK>hq[ۇ9kGk5 <)@Ғz-Nh6BV(q#.R_3vnesu1\*~섭}&00|baQ=utD -3 C a $haR*֕.زĎ*&J$UH2Tj(Yj^ͿC<}L_o:~8#'8D $ SUH4@H()tW4MPJ:2"F$)s{x0]qܭB$L'>uf!pd8WQ  2#f>#r}r?q&D d/丣i1~8X7$O*(JRI{#|[;Ԁb(j,@.@M~ BFcCS_aOz=}=c=$H$PT1B", 3 I ;q ڑi fMpW{ Y䉂V ˚:E 䨒|D H$o,oáDЂ -У[LC&30XDcՃX4+Jy{YpJIkQŭ'VR_Mh[ Η?$+t ˆ{{p$ -CGσ#sӳ0G8:|>xS'{Uq^G ,.ɃP/'h{bAC Ԝ vY:X}/Uo^'UPqW/ECQńftO\RIaeiHPη׶;ձ]n6[qݛfe~ Im +2}HI2Fɘ9UVvgc!틆$#3S$h!";I|ЏTG\g(^pD#}$RоH)[l&<ѸP+G#ro0%ADP9O4z *!\;z-?ň>NS-,T͜ >׭ȪJ_л}`Ks&<۞q%E>fn0J,q+"e*{k?^_7Kc / 6oendstream -endobj -2165 0 obj << -/Type /Page -/Contents 2166 0 R -/Resources 2164 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2163 0 R -/Annots [ 2170 0 R 2172 0 R 2173 0 R 2174 0 R 2175 0 R 2176 0 R 2177 0 R 2178 0 R 2179 0 R 2180 0 R 2181 0 R 2182 0 R 2185 0 R 2186 0 R 2190 0 R 2191 0 R ] ->> endobj -2170 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 574.4454 173.4566 585.3494] -/Subtype /Link -/A << /S /GoTo /D (a00137) >> ->> endobj -2172 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 492.1342 177.9699 503.0381] -/Subtype /Link -/A << /S /GoTo /D (a00151_g6832e4d2d046536b6472f7ac92340f68) >> ->> endobj -2173 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.7856 492.1342 201.4916 503.0381] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2174 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.8776 492.1342 256.5649 503.0381] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2175 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 453.586 138.5977 464.4899] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2176 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 453.586 189.7953 464.4899] -/Subtype /Link -/A << /S /GoTo /D (a00151_gb6683dd83fe1c8de9a24086d4b69e907) >> ->> endobj -2177 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.6109 453.586 218.2983 464.4899] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2178 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [241.84 453.586 266.5273 464.4899] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2179 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 415.0378 138.5977 425.9417] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2180 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 415.0378 197.5461 425.9417] -/Subtype /Link -/A << /S /GoTo /D (a00151_g2addf34c7d457c1a7899a7e2171ef1e9) >> ->> endobj -2181 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 376.4895 138.5977 387.3935] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2182 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 376.4895 201.9695 387.3935] -/Subtype /Link -/A << /S /GoTo /D (a00151_g85b65e38aa74eba18979156f97a94a87) >> ->> endobj -2185 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 294.1783 133.6164 305.0822] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2186 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 294.1783 177.0532 305.0822] -/Subtype /Link -/A << /S /GoTo /D (a00151_g2a0cf5d86c58fab216414ce59bf1fea1) >> ->> endobj -2190 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [202.6669 210.1544 223.4788 221.0435] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2191 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [256.3555 210.1544 282.1487 221.0435] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2167 0 obj << -/D [2165 0 R /XYZ 90 757.9346 null] ->> endobj -1777 0 obj << -/D [2165 0 R /XYZ 90 739.9346 null] ->> endobj -118 0 obj << -/D [2165 0 R /XYZ 90 739.9346 null] ->> endobj -2168 0 obj << -/D [2165 0 R /XYZ 90 716.7484 null] ->> endobj -2169 0 obj << -/D [2165 0 R /XYZ 90 593.2423 null] ->> endobj -2171 0 obj << -/D [2165 0 R /XYZ 90 510.9311 null] ->> endobj -2183 0 obj << -/D [2165 0 R /XYZ 90 312.9752 null] ->> endobj -2184 0 obj << -/D [2165 0 R /XYZ 90 312.9752 null] ->> endobj -2187 0 obj << -/D [2165 0 R /XYZ 90 257.149 null] ->> endobj -2188 0 obj << -/D [2165 0 R /XYZ 90 230.664 null] ->> endobj -2189 0 obj << -/D [2165 0 R /XYZ 90 230.664 null] ->> endobj -2164 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2197 0 obj << -/Length 1763 -/Filter /FlateDecode ->> -stream -xY[F~ϯ[6o -]yٍEb3Kdij8d,D2;,nYx !4Y&(T.7I.7ۏ+YSW/]ި9<*?aL3s}zޜܟˢK.ͻůX0IB.>~-hnKb$ÂS.?]0KDŽ-L$| I(A:n8Ah1pyk7*=FU{LQ(]Ed&^:!Q!w7~$39ip2fW/p wڄ F̛СHdx1۴EҚFń -&BqB"$HBZt+?Ξխ -v*;p7U4EX݇UWd6$ aH6ƀUYH{?+ǽ:@/3׺=ob0͉w[+DWnG^D҉ AY#߾~ k|$(62;D!J݊E/55:yZec-Ì_ÙնD{(]ā;\rgv֑becBԊ 8Zү:\U#o&cZ;/DM;'DOɨ3h2>ayX\w,pGIT"ƘR >Pz 9QlNs -ʩQ[4!>B؜,]cĹhjH3@`vLͮ}M13 'vuXsy78G=Z:-c| !^U7O6X8ɹb0\= fvG?т{|m}4"-@Da`ojA :MbqA_[Lo{[Y@7oޒH!/f폁1,FO$b-*-FJw<'{A==wX:˪!AkW_ l>\Jendstream -endobj -2196 0 obj << -/Type /Page -/Contents 2197 0 R -/Resources 2195 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2163 0 R -/Annots [ 2200 0 R 2201 0 R 2202 0 R 2204 0 R 2206 0 R ] ->> endobj -2200 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.345 624.7403 157.1381 635.6294] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2201 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.4886 624.7403 241.2818 635.6294] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2202 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [267.872 624.7403 293.6652 635.6294] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2204 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.345 384.3441 157.1381 395.2232] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2206 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.345 262.609 157.1381 273.4881] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2198 0 obj << -/D [2196 0 R /XYZ 90 757.9346 null] ->> endobj -2192 0 obj << -/D [2196 0 R /XYZ 224.7534 659.9636 null] ->> endobj -2199 0 obj << -/D [2196 0 R /XYZ 90 643.2365 null] ->> endobj -2193 0 obj << -/D [2196 0 R /XYZ 90 419.4579 null] ->> endobj -2203 0 obj << -/D [2196 0 R /XYZ 90 404.8876 null] ->> endobj -2194 0 obj << -/D [2196 0 R /XYZ 90 295.6655 null] ->> endobj -2205 0 obj << -/D [2196 0 R /XYZ 90 281.0952 null] ->> endobj -2195 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2209 0 obj << -/Length 2273 -/Filter /FlateDecode ->> -stream -xڭZk6> a~[ 4bQ@5c!˵N~/%QDT"D!JdYPB!ø\~񊴗W, 2CA$(͇k[8xInޖ.o_S(won:6-$\}HFhx1tt)s'Wtq SM7pP> -UM$"duM0fs\Owܝ*6 Qs@-3@e^e.ߴUOcqp5@Ɓ%nrZKU'$'&@6E ?jn));cs)9k6F4b=WT,\w㛠e-]-z۔ k\m['qWǾ_qwu!QS!I9c6m5ض5dXfuv cU+,45lhD{_'\/i]-M!}mr}uj1*!.cLGڎ< -Jsw}m/HS9ݮ9rU{W[>O - -&Z-';]p<aBb .*1f%"(v ^"Lњ.\ijKtYVwP]5]@S 55rjW0؜&c ]%S61ͻ(wJEXS Fׁ0,z8kL`fDk[;?O$0j8x@ fD.1ҊH&`ҞBfkмw [A0`ezڼ `IԚ&ʘ]nv[[έ]8Hs ]e:|* M׷7w?v{soQ2Ix<^H2&қO<:;yg= w< XסT -C%2TQ!jXdb> &1zry;}rO#- ~Ah*e 1A -̈́Xpâ> wKeN:i3Nšv>y (ChsGn\~1,-wѓ;ΐ{@>GxAv/voכwA&0P%P(k6LaRj-*sΓ9Jکgq4q^۟Ab- +ASaD 锺^ǣP^=㼝> sDu2zzjn% -Q ((^D4jJ @)q,aa##K׏]?yg~O#[^I)IRJ!&)ťӯܕW m 㦺R"^zSrbyv_7/h&,}L8ӪRppCNwOeXQFq1pu8%Vц;LX $7~?D>Ct"4kh% HxPVL1]*6}~*-{c=!mG˶o\ ?\}c >U?^aHendstream -endobj -2208 0 obj << -/Type /Page -/Contents 2209 0 R -/Resources 2207 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2163 0 R -/Annots [ 2213 0 R 2214 0 R 2216 0 R 2219 0 R 2221 0 R 2223 0 R 2225 0 R 2227 0 R 2229 0 R 2231 0 R 2233 0 R 2234 0 R 2236 0 R 2237 0 R 2240 0 R 2241 0 R 2242 0 R ] ->> endobj -2213 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 536.3999 169.0332 547.3038] -/Subtype /Link -/A << /S /GoTo /D (a00139) >> ->> endobj -2214 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 497.4963 168.4752 508.4002] -/Subtype /Link -/A << /S /GoTo /D (a00138) >> ->> endobj -2216 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 414.6253 188.6792 425.5293] -/Subtype /Link -/A << /S /GoTo /D (a00090) >> ->> endobj -2219 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 332.7306 237.3867 342.6583] -/Subtype /Link -/A << /S /GoTo /D (a00152_g3e1562e8a6de32268e5df92a52152f91) >> ->> endobj -2221 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 319.7545 226.8662 329.6822] -/Subtype /Link -/A << /S /GoTo /D (a00152_g03d140db75de3d3cdfbbab1c4fed8d8d) >> ->> endobj -2223 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 306.7784 231.8475 316.7061] -/Subtype /Link -/A << /S /GoTo /D (a00152_gbb558f3a9b1ec015e83c314aba694e35) >> ->> endobj -2225 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 292.8261 198.642 303.73] -/Subtype /Link -/A << /S /GoTo /D (a00152_g737337d6a51e31b236c8233d024138a8) >> ->> endobj -2227 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 280.2236 216.8139 290.7539] -/Subtype /Link -/A << /S /GoTo /D (a00152_g7a7c46ffaba30477b8c9e3e61bd2e106) >> ->> endobj -2229 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 267.8502 202.6371 277.7778] -/Subtype /Link -/A << /S /GoTo /D (a00152_g06ba7b414e718081998f2814090debf1) >> ->> endobj -2231 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 254.8741 237.9346 264.8017] -/Subtype /Link -/A << /S /GoTo /D (a00152_gbb56b549f7ab4d86e1cc39b8afc70d1e) >> ->> endobj -2233 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 240.9217 167.0009 251.8256] -/Subtype /Link -/A << /S /GoTo /D (a00152_g24f52ac52d6e714cb04a5aa01be3bdd0) >> ->> endobj -2234 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [248.2853 240.9217 281.0723 251.8256] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -2236 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 227.9456 175.8576 238.8496] -/Subtype /Link -/A << /S /GoTo /D (a00152_g9f2196e2705036869611962425e404bf) >> ->> endobj -2237 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [264.3448 227.9456 297.1318 238.8496] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -2240 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 171.0022 184.6146 181.9061] -/Subtype /Link -/A << /S /GoTo /D (a00152_g2d9d28afa353f662b9bb5234fc419f72) >> ->> endobj -2241 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 132.0986 191.7978 143.0025] -/Subtype /Link -/A << /S /GoTo /D (a00152_g902c4a360134096224bc2655f623aa5f) >> ->> endobj -2242 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 93.195 184.0569 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00152_g54b27e45df15e10a0eb1a3e3a91417d2) >> ->> endobj -2210 0 obj << -/D [2208 0 R /XYZ 90 757.9346 null] ->> endobj -1775 0 obj << -/D [2208 0 R /XYZ 90 739.9346 null] ->> endobj -122 0 obj << -/D [2208 0 R /XYZ 90 739.9346 null] ->> endobj -2211 0 obj << -/D [2208 0 R /XYZ 90 719.4775 null] ->> endobj -2212 0 obj << -/D [2208 0 R /XYZ 90 555.3745 null] ->> endobj -2215 0 obj << -/D [2208 0 R /XYZ 90 433.5999 null] ->> endobj -2217 0 obj << -/D [2208 0 R /XYZ 90 350.729 null] ->> endobj -2218 0 obj << -/D [2208 0 R /XYZ 90 350.729 null] ->> endobj -2220 0 obj << -/D [2208 0 R /XYZ 90 336.7157 null] ->> endobj -2222 0 obj << -/D [2208 0 R /XYZ 90 323.7396 null] ->> endobj -2224 0 obj << -/D [2208 0 R /XYZ 90 310.7635 null] ->> endobj -2226 0 obj << -/D [2208 0 R /XYZ 90 296.8112 null] ->> endobj -2228 0 obj << -/D [2208 0 R /XYZ 90 284.2087 null] ->> endobj -2230 0 obj << -/D [2208 0 R /XYZ 90 271.8352 null] ->> endobj -2232 0 obj << -/D [2208 0 R /XYZ 90 258.8591 null] ->> endobj -2235 0 obj << -/D [2208 0 R /XYZ 90 244.9068 null] ->> endobj -2238 0 obj << -/D [2208 0 R /XYZ 90 189.9768 null] ->> endobj -2239 0 obj << -/D [2208 0 R /XYZ 90 189.9768 null] ->> endobj -2207 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2246 0 obj << -/Length 2421 -/Filter /FlateDecode ->> -stream -xڽYݓ6߿L)Q66kݸwI3;Z^kbK,g@%k]"AA|(Y?1˂Y? xV쮂#ooe6,l6b+)lžTw|wK׫U3"C=e],m][(zI2|ua[U 4ϫ -l~aL_d"կZ0/Lm9 -l!ڤt,'IpI";`q>$Y:\(txzy-6:_mMϜUۇh߳n\<+%LiPJPˡ c]dG}h9Y$v-Bqށ?‰DA40tPi4HN -gceKzEgA~cՉP#ݸ<2ϝkdʼn\Xfߖ;)Cq YQ8.22N(Y+eAr-d囲rH 5NAv: QUi חs rR,NWmnH`֨wCWQ9|`#2Fܔ$uϒPA6d(jnyeUԻIP eD1FRυGaS+?`Kȷ[miD.LK}) f^5!̅Lgh5g5d*zSiahAkmt+![(>[J15[Aoakoiueyx7L >5FTj| 󜦍ޓ6F%X&gO|߰ nX yA*a9~S 3 -Zk74}A[-LuSF,Fs<<3z JzN7^F6֕Or:?IR!%5H$7E"=-,+yT?s^H MdhtofnM ӬgΉz$q[?[*Q-)H(`ZtF>3X& i81&30 =@Bű*6 -Mil7j(۩-j.eu{ - q rpB YQp5x_hy9GHdə1UWhpdk@mIDg$oODS8)c,0A Jd4 ܢ!ﰎeZ\R@ATOv5_"V'gU]Ƃ) x:64ȘAvlzY}/N}h|q]0TD 7J+Y|EVem -nˊ0LW.6Mٝ6"d误 bnnxR&,ʯ|XΓȮ|ghoǔM闟?hb,\~{so{tSZG%{$Qtslˋ0C|j2{_}\Ѐ~'ܦPGNW3h3Z7Uޛ'BAxn,Ł1 5=qd)^c~-votStW񠙒3NY-GDKk9V[zyqru)\Ku9@<}2|&fJ Oa5ѼXvo C}2Bi81c*c eXc81㎅W>5=)#߭陳$V30 Wl5eHC QP/ȩ@@yPW -R8%O -8p#;X!+Y - k.uh]}O&$],8Ƒ<[) J36>& ahҹt i?#ɘk-OrPS\5~o* ÁÕǝbğ:=lS>n;KPqmiyF,sU>MxoM?4kU{[A m+'?=tݠ\Nǹr.n.K)^i`;9b!S_pߑ&ק6em t?tRZH3y%8ۼT@!OKt.}v'X^- :f"A !ݖ/M(5'bOvRxE Y%aje#p'?J77 ۤGGZ2B -]a?Wu ϏGp?.endstream -endobj -2245 0 obj << -/Type /Page -/Contents 2246 0 R -/Resources 2244 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2163 0 R -/Annots [ 2248 0 R 2251 0 R 2252 0 R 2255 0 R ] ->> endobj -2248 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 702.4657 192.3555 713.3696] -/Subtype /Link -/A << /S /GoTo /D (a00152_g058a8e6025f67b021862281f1911fcef) >> ->> endobj -2251 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 617.6293 168.4754 628.5332] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -2252 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.9735 617.6293 218.5572 628.5332] -/Subtype /Link -/A << /S /GoTo /D (a00152_g499bb98a0b4ae9a98553ede81317606d) >> ->> endobj -2255 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 372.6901 227.254 395.6588] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -2247 0 obj << -/D [2245 0 R /XYZ 90 757.9346 null] ->> endobj -2249 0 obj << -/D [2245 0 R /XYZ 90 637.022 null] ->> endobj -2250 0 obj << -/D [2245 0 R /XYZ 90 637.022 null] ->> endobj -2253 0 obj << -/D [2245 0 R /XYZ 90 603.0588 null] ->> endobj -2243 0 obj << -/D [2245 0 R /XYZ 90 578.5313 null] ->> endobj -2254 0 obj << -/D [2245 0 R /XYZ 90 578.5313 null] ->> endobj -1420 0 obj << -/D [2245 0 R /XYZ 338.656 320.2263 null] ->> endobj -2256 0 obj << -/D [2245 0 R /XYZ 90 302.5028 null] ->> endobj -2244 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2260 0 obj << -/Length 858 -/Filter /FlateDecode ->> -stream -xڭVmo0ί#H!ZZRfҴE Y?F6m}wO\>ȍ+M -{} >\nqF ☻`aw~D8zǛpW\*9.Jֹڌq-,F8Q:>A7UnH2Q- @Q¡ ypތ~z9*7 (V!B#˅#! sٮ" SдG{iVu?Lv(}ļfPYWU> endobj -2262 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 717.9621 227.254 740.9309] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -2264 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 543.1103 227.254 566.079] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -2261 0 obj << -/D [2259 0 R /XYZ 90 757.9346 null] ->> endobj -2257 0 obj << -/D [2259 0 R /XYZ 267.4535 665.9412 null] ->> endobj -2263 0 obj << -/D [2259 0 R /XYZ 90 649.2141 null] ->> endobj -2258 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2267 0 obj << -/Length 2057 -/Filter /FlateDecode ->> -stream -xڭYs+X*Dp~ꊼHTU-՘̊Ga֛_ATrn4>t7h>op_ ?Ypn_<磺_.d$sA$(DGTj eɊjnvuC*]@* ]+GIbw_q -~aČ#b /zp{/ | Gp Sϗ`Md(Cĭz"SNnrIY{GLb3jy2qm dȗE·D eWCX@1 -/)j>ps \شlc:nԧZG V}a$ҘQ]-5K]YU)RJ:+{mBgK/|/ M_'fcGJf)-a@,W>_C g%4]ATgY1oZO0Gd<%zFzECC~=PeՐf83z_(]m,nJمm-KaPӶ|J>CGok~(`E< "np[@"ЦF^0< Wbӏ*WYdݭpuٹ$ SQ&T>53!2TJ,`]a`nLːD2 bra I^9;W7А؎3a~\cv5QS&%JgI=(35k$":ٷꌳ,ۺAf?_˪ʊ BmVs8^V(+g'lit!1;:m:&s]8epxՉƮO>e=(f27fW뻧ۛ!it(2 <r%@$!UbɄOH !!5iZN}I\"Ei?|ʍ^FӗC4 -ibd"$#)[>sI+|[x,(;hb !ӼCYdGhM 0FanEa 6Ba܍7wC xD`ؓU&N$:1k[A$_8//u*0׫MACWG7 I2ImHD*3VbI& -#L&&vL6d?ڂxyyqpϋ"N7o)m> endobj -2270 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [315.1536 672.5415 350.0824 683.4455] -/Subtype /Link -/A << /S /GoTo /D (a00140) >> ->> endobj -2271 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [274.7554 593.6496 309.6842 616.6183] -/Subtype /Link -/A << /S /GoTo /D (a00140) >> ->> endobj -2273 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 524.9361 172.3507 535.84] -/Subtype /Link -/A << /S /GoTo /D (a00141) >> ->> endobj -2274 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 486.1806 164.0618 497.0846] -/Subtype /Link -/A << /S /GoTo /D (a00140) >> ->> endobj -2277 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 365.4596 298.8158 375.3872] -/Subtype /Link -/A << /S /GoTo /D (a00153_g3f6f1f6f98431f2d33ed30a30d2ccc35) >> ->> endobj -2279 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 326.7041 293.2467 336.6318] -/Subtype /Link -/A << /S /GoTo /D (a00153_g974c9b4bbe6b07cc1d64ac4fad278030) >> ->> endobj -2281 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 287.9486 263.8671 297.8763] -/Subtype /Link -/A << /S /GoTo /D (a00153_gcacc406c3bf7d0e00412e4c946252739) >> ->> endobj -2283 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 249.1931 265.0627 259.1208] -/Subtype /Link -/A << /S /GoTo /D (a00153_gca1240bba5dd57f8c7c27123c84a1f6d) >> ->> endobj -2285 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 210.4377 245.6755 220.3653] -/Subtype /Link -/A << /S /GoTo /D (a00153_g3001114ddadc1f2ada5cc9a780e866fc) >> ->> endobj -2287 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 171.6822 220.231 181.6098] -/Subtype /Link -/A << /S /GoTo /D (a00153_g763f12007aad8cc0e483bf50f8a8d9b4) >> ->> endobj -2289 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 132.9267 286.1035 142.8544] -/Subtype /Link -/A << /S /GoTo /D (a00153_g9dd44616d41cef74d3beb51d8be5ecec) >> ->> endobj -2291 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 94.1712 253.6255 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00153_g529648ad3b0b327a43689b0f1779ff55) >> ->> endobj -2268 0 obj << -/D [2266 0 R /XYZ 90 757.9346 null] ->> endobj -650 0 obj << -/D [2266 0 R /XYZ 90 739.9346 null] ->> endobj -126 0 obj << -/D [2266 0 R /XYZ 90 739.9346 null] ->> endobj -2269 0 obj << -/D [2266 0 R /XYZ 90 716.7484 null] ->> endobj -2272 0 obj << -/D [2266 0 R /XYZ 90 543.8366 null] ->> endobj -2275 0 obj << -/D [2266 0 R /XYZ 90 420.1859 null] ->> endobj -2276 0 obj << -/D [2266 0 R /XYZ 90 381.3704 null] ->> endobj -2278 0 obj << -/D [2266 0 R /XYZ 90 344.7717 null] ->> endobj -2280 0 obj << -/D [2266 0 R /XYZ 90 306.0163 null] ->> endobj -2282 0 obj << -/D [2266 0 R /XYZ 90 267.2608 null] ->> endobj -2284 0 obj << -/D [2266 0 R /XYZ 90 228.5053 null] ->> endobj -2286 0 obj << -/D [2266 0 R /XYZ 90 189.7498 null] ->> endobj -2288 0 obj << -/D [2266 0 R /XYZ 90 150.9943 null] ->> endobj -2290 0 obj << -/D [2266 0 R /XYZ 90 112.2389 null] ->> endobj -2265 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2295 0 obj << -/Length 2082 -/Filter /FlateDecode ->> -stream -xڭZms4_$3T2ʵwAḆ`:nⴆ C]Kr8\tǻճ]%lLᏍc:TDb!x<~7b f6-15ٲQl740TtbJj3߯ӼLlO}]j,%4C~`އ%"6j78HroVOA©If|#;f4"LsGvck`!b3(I[ټ0s{ݹrdy:b o3 "eGGeeeT)0qWbx{$m6]K}"Ʊ<?=8̧>dQGn,1D)p A1%Y`FcuvH~sQLU襵&Y@jX^M= -jЋk8 xmy~y|Ȥ܊_L+)Ƅz)l u3:r[ۓ%І\!"h/cа:aUq닩*fZ'7X7Nz.CES ^NۮPp!z> ZuGu h &'jX0z5-ZKo8Z\hCM(uRgyj-ϑCPk·q Vrc;A\H)Zf]>`km2~/l;҅X!;{_КH?ŹO1yu7 -m8[,ݛ߯6ѧ. oWꂤE l7=A\ÂAܫ>[zAV> ft T]F<`(qxMEVK/1K77O)v\vLFpUl$h4:Pa=LyfiSp$ϻ7^]hLNOKV|ZV ođ08IOCwi ?iß3k.:0-rUOz|pv~ȣ i / Uendstream -endobj -2294 0 obj << -/Type /Page -/Contents 2295 0 R -/Resources 2293 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2292 0 R -/Annots [ 2297 0 R 2298 0 R 2299 0 R 2301 0 R 2302 0 R 2303 0 R 2305 0 R 2306 0 R 2308 0 R 2311 0 R 2312 0 R ] ->> endobj -2297 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [177.0032 702.6096 196.7092 713.5135] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2298 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.9845 663.1573 206.6718 674.0613] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2299 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [207.1599 623.7051 252.3298 634.609] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -2301 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 459.7527 225.9098 469.6804] -/Subtype /Link -/A << /S /GoTo /D (a00153_g51195ea7cd5aa387a87f9d3b23905b62) >> ->> endobj -2302 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 420.3005 246.7912 430.2281] -/Subtype /Link -/A << /S /GoTo /D (a00153_g9069474ea570fd78c481aa164317dbaf) >> ->> endobj -2303 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 380.8482 245.6755 390.7759] -/Subtype /Link -/A << /S /GoTo /D (a00153_ge0f8cbeca9731af2171ffd37e79de893) >> ->> endobj -2305 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 296.6881 187.0159 306.6157] -/Subtype /Link -/A << /S /GoTo /D (a00153_gb61381673de27f31848c5396bf0b338e) >> ->> endobj -2306 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 257.2358 233.6306 267.1635] -/Subtype /Link -/A << /S /GoTo /D (a00153_gf963fdea2b75d27ef31e92d1d01359ee) >> ->> endobj -2308 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 217.7836 248.0566 227.7113] -/Subtype /Link -/A << /S /GoTo /D (a00153_gc3882366feda1cb759ccbfe98327a7db) >> ->> endobj -2311 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 133.6234 188.6795 143.5511] -/Subtype /Link -/A << /S /GoTo /D (a00153_gdcf372ff9748996f7c05e9822a615384) >> ->> endobj -2312 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 94.1712 254.552 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00153_g92f3344ec8ca46893163399c89fafed5) >> ->> endobj -2296 0 obj << -/D [2294 0 R /XYZ 90 757.9346 null] ->> endobj -2300 0 obj << -/D [2294 0 R /XYZ 90 556.5104 null] ->> endobj -2304 0 obj << -/D [2294 0 R /XYZ 90 312.6772 null] ->> endobj -2307 0 obj << -/D [2294 0 R /XYZ 90 236.1996 null] ->> endobj -2309 0 obj << -/D [2294 0 R /XYZ 90 149.6126 null] ->> endobj -2310 0 obj << -/D [2294 0 R /XYZ 90 149.6126 null] ->> endobj -2293 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2322 0 obj << -/Length 2189 -/Filter /FlateDecode ->> -stream -xڭZ]s۶}ׯL`\|3mo?#KͩD"4I@(tEG9@2G ͸/#<~ߍHs7ѿzTgIg_':=On06yÔf[.@&JM>0:@8Ąx ~aĴ/pњ#N=YnG?:;ncS7:`D$QHGB]~+&?.DE$ͦN6S'տUd${??])t1xG[7i[-I`6ؔfF0 CB`O GQ`8S|`&Q*`c7_‘R~L -KЄ87 cat0>_\S{{uyy{ -1HR)D U*>"|uO n]כ]^6kv;e$ly*@/1@0m!H A$93$}G_GBW> * q_߸( FǮU@1eG#R:!Z$9b£N,|v=?o l j XJ!FIgg0ΰ_Nvag8]Ώ뫛)'" *#}?H4]eEU`US,QP!L7`iįeiomX cu7Lkp:%CM`E,%) #j*W28˛],WA1/2T^M-O,y Jb- ;;-Ccһ.S&W`42aQ`ǴX/78Йs5P#: k,lOb5XgE^fke9L8$#Q=VE_9c(: 9d"ր8X~}r>0:v-?\nALjQEÉpHPT/5`ul=QCoa{e2pe5Hh p|=PєLYYB '6}:bz~Xy'auz&S$k)o0 _+߸+FǮ'^ia7ùpHfG zȮ耴l/y҂'҂הּp^@ꃶ7@E.Z -K5]ZZr?Hieb-tmǽrS>Jmh㻼-iQ_v{VH//fx`CVQF*J>фE5 h"j7ѱEoVOgWS&&?u!"BHB9?M(҉5u yX"UK_l]i_Y/͗) ,XJY+,R`a,m9pr_|N œӋYuzyajBԉ -'š"@W%@DM*c1Œ@zucX[媢=J^UViu2\)%x}zvP^,ǽ"~Z~k;Hn^ -~sW5-G.DZlPK_Fxs\"6tpp+0 5|\ Hq-c8=! -: -~P|atz4꽅wG(L‚"1P@xҎ!P'R䳇:q% ]B?:.SqB^/jFlڎQ.cxD -M/VRlR62e_$PKF^O) ;js=e3!RAx g>a:TM`,endstream -endobj -2321 0 obj << -/Type /Page -/Contents 2322 0 R -/Resources 2320 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2292 0 R -/Annots [ 2325 0 R 2327 0 R 2328 0 R 2329 0 R 2330 0 R 2331 0 R 2332 0 R 2333 0 R 2334 0 R 2335 0 R 2336 0 R 2338 0 R 2339 0 R ] ->> endobj -2325 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 703.2861 227.424 713.2138] -/Subtype /Link -/A << /S /GoTo /D (a00153_g196379ceb1219a99f4495e41ccc9bbfb) >> ->> endobj -2327 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 617.7172 235.8724 627.6449] -/Subtype /Link -/A << /S /GoTo /D (a00153_gac0de06236b02659460445de30776e00) >> ->> endobj -2328 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 577.6656 202.5175 587.5932] -/Subtype /Link -/A << /S /GoTo /D (a00153_gf5fe83be78b78b9e7d9e7f1e34ab1cc5) >> ->> endobj -2329 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 537.6139 233.4713 547.5416] -/Subtype /Link -/A << /S /GoTo /D (a00153_g8f4ebd8ef6c0ea665ed351d87fec09fd) >> ->> endobj -2330 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 497.5622 215.0208 507.4899] -/Subtype /Link -/A << /S /GoTo /D (a00153_g51c1cd531ff0afb81620151f2248cd21) >> ->> endobj -2331 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 457.5105 187.9025 467.4382] -/Subtype /Link -/A << /S /GoTo /D (a00153_g15de27b044603284f68db05a378235a7) >> ->> endobj -2332 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 417.4589 211.3245 427.3866] -/Subtype /Link -/A << /S /GoTo /D (a00153_g67cf1e0d2324c93f332c1f020c0fe8b3) >> ->> endobj -2333 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 377.4072 231.2496 387.3349] -/Subtype /Link -/A << /S /GoTo /D (a00153_g24aa5bc36939cc9a0833e1df01478a7e) >> ->> endobj -2334 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 325.794 211.942 336.3243] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4910467b83a639f06739c82cd362037e) >> ->> endobj -2335 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 286.345 259.1549 296.2726] -/Subtype /Link -/A << /S /GoTo /D (a00153_g5b9dba2123705bce1ce95c3deca0bdad) >> ->> endobj -2336 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 246.2933 272.6941 256.221] -/Subtype /Link -/A << /S /GoTo /D (a00153_g2bc3b489923793759526a3181eb667fa) >> ->> endobj -2338 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 160.7244 233.1426 170.6521] -/Subtype /Link -/A << /S /GoTo /D (a00153_gb1455b27c06532a399cf06d2c1d6d08d) >> ->> endobj -2339 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 120.6728 236.4303 130.6004] -/Subtype /Link -/A << /S /GoTo /D (a00153_g3090117ef3ff5775b77cb1960e442d07) >> ->> endobj -2323 0 obj << -/D [2321 0 R /XYZ 90 757.9346 null] ->> endobj -2324 0 obj << -/D [2321 0 R /XYZ 90 722.0018 null] ->> endobj -2326 0 obj << -/D [2321 0 R /XYZ 90 634.0061 null] ->> endobj -2337 0 obj << -/D [2321 0 R /XYZ 90 177.0133 null] ->> endobj -2320 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2354 0 obj << -/Length 2254 -/Filter /FlateDecode ->> -stream -xڭZ[s6~L_d؎n-qB*/I= -iRz2ù&3 ,3Ox(`\΢ aꄘק%xL0~c E>7LK5K,DžZTBAّ|&u8jy\l~ny}~C&y/CK)SdJ틸mťYbPY]VIdz r3AqK& -rB<F 9OMv @-B1rhG1 WW=hU/&pFiư*2l Q\Tabr b ʍ59">g\Ĉf5ܖl.NȵȝnWPǷ?-]AEWHOB̗AXx-nɔ<\EaYu"0R 5`&(S0d0sl\n 3W0?fj7?#Ad GK#B09RyzvCou EnKNɣ{x@с@?0'-cwȒR5=UBAfHTy$fԜr`.`jEzL7IyJnGU -{c=&UGxR"VfƼ޶, -U -D\۵*/44d1hU{yyg0*Bvfk[VPY\68sAќS<[㓔]V6lb>F\Tl2UJܧ 6UtNW(]GT(jE -HL81eE -L#~{8&d4?RY5#'[mb8oңX/N -2JT=2&@4̍X7u>ޞ6%Qs%fz& -3=(!zݽDaeeI_pp6 ~?uY|OALFu88-ՔlILteUQۼPm\㓾Y;O;&d=#.4{MH4 -ǷeV -HQU^7[ K06+R]5T7&Y֫ ڞGZq!|,$ `Z| ]6}hA :Zed |z [;pHC2y -] U_Ʃi -n`B7zuu:(4}N|А@N|jeW xjfA#͚zHHKuV /1:\'4o8TrWa'1ʰͶdgQeCd}1ˁ04ś ½?-DߴP2|P$H@%uDj4#~e :uy ⷔO(ҜZuluKoO?(lendstream -endobj -2353 0 obj << -/Type /Page -/Contents 2354 0 R -/Resources 2352 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2292 0 R -/Annots [ 2357 0 R 2358 0 R 2359 0 R 2360 0 R 2361 0 R 2362 0 R 2364 0 R 2366 0 R 2367 0 R ] ->> endobj -2357 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 705.2116 209.0629 715.1393] -/Subtype /Link -/A << /S /GoTo /D (a00153_g3589822ecb9d9c4145209756396b8a6b) >> ->> endobj -2358 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 666.5202 222.0741 676.4479] -/Subtype /Link -/A << /S /GoTo /D (a00153_g5726142fec34f35fb9ea19e5a45975c6) >> ->> endobj -2359 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 627.8288 214.124 637.7565] -/Subtype /Link -/A << /S /GoTo /D (a00153_g21664b7441cfa37d280228d23316d609) >> ->> endobj -2360 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 589.1374 228.3406 599.0651] -/Subtype /Link -/A << /S /GoTo /D (a00153_g156dd2891a57035e4afdc4c2bc0b0ebf) >> ->> endobj -2361 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 550.446 212.4703 560.3737] -/Subtype /Link -/A << /S /GoTo /D (a00153_ge6f4a2453dbd8bc60e6a82774552366a) >> ->> endobj -2362 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 510.7784 166.3534 521.6823] -/Subtype /Link -/A << /S /GoTo /D (a00153_gb58e1ceb7cb73ca2bcd73146b6c1b4e7) >> ->> endobj -2364 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 378.2912 233.5112 388.2189] -/Subtype /Link -/A << /S /GoTo /D (a00153_g285a80366aed9428f64282b8d13c918b) >> ->> endobj -2366 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.3051 251.4958 359.3784 262.3998] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2367 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [321.4596 221.9163 356.3884 232.8202] -/Subtype /Link -/A << /S /GoTo /D (a00140) >> ->> endobj -2355 0 obj << -/D [2353 0 R /XYZ 90 757.9346 null] ->> endobj -2356 0 obj << -/D [2353 0 R /XYZ 90 720.8203 null] ->> endobj -2363 0 obj << -/D [2353 0 R /XYZ 90 444.8446 null] ->> endobj -2365 0 obj << -/D [2353 0 R /XYZ 90 311.3811 null] ->> endobj -2352 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2377 0 obj << -/Length 1774 -/Filter /FlateDecode ->> -stream -xYK6Wbr]odEʲ֖\=ERÖQhP&NRuSa!lyvtzr&TZoG13`De@OD'}ꠊ, =wT0,K 1BD:ƣUl'o_ook,Y>J5ݣpHR݁sHr(3T09I}ϙ ݱkEZCTZk.\+aQ땙*;TEJhJ;X(A4CFUqavT(IoJ8j4 4׽2M۴@~2GOhxfR~Z74\Aؚ=deր"D"-:jd]d22(_MEӝΰʴU Ńy_g{kT7-Gw6ɨ`M#}gEڞηYSB\W\OcCڥc委Uk44"7:~_?ԍ XZrxNNsIw/p;uq`RS8G0:W]#7Gy|~{yntQ'ݸ(!{UE%5 s)( qǛ0U_$]_Z^Ueer/qrsO(0={Qwz._P\Io5,~N7}QNE ؤԫ֎7#i=#y0axAjvs4Wܓw4 -T+kzS<23" ׅĻS6!d|l%'M/m%fo;'1f"Wڔӻ FC<_(.ChU&do% Bi%o({c:XJR#, ;qN)d+endstream -endobj -2376 0 obj << -/Type /Page -/Contents 2377 0 R -/Resources 2375 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2292 0 R -/Annots [ 2379 0 R 2380 0 R 2381 0 R 2382 0 R 2383 0 R 2384 0 R 2387 0 R 2389 0 R ] ->> endobj -2379 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 726.8189 213.038 737.7228] -/Subtype /Link -/A << /S /GoTo /D (a00153_g41aa744caa46913b3b3aedb2a4e78546) >> ->> endobj -2380 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 687.2449 190.8907 698.1489] -/Subtype /Link -/A << /S /GoTo /D (a00085) >> ->> endobj -2381 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [191.3888 687.2449 268.6482 698.1489] -/Subtype /Link -/A << /S /GoTo /D (a00153_g69646a81a922033c5281445a71f8ffed) >> ->> endobj -2382 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [336.7197 672.2644 372.0849 682.1696] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2383 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [159.2897 647.671 239.3189 658.575] -/Subtype /Link -/A << /S /GoTo /D (a00153_ga92afb113e122f860392bfbd385f842e) >> ->> endobj -2384 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [336.7197 632.6905 372.0849 642.5957] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2387 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 564.2011 245.6657 574.1288] -/Subtype /Link -/A << /S /GoTo /D (a00153_gb6e04358481bd2057524fb874cfa472b) >> ->> endobj -2389 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 550.8899 229.0679 560.8176] -/Subtype /Link -/A << /S /GoTo /D (a00153_g6836f92f3692f3a4429eb599db40cbae) >> ->> endobj -2378 0 obj << -/D [2376 0 R /XYZ 90 757.9346 null] ->> endobj -713 0 obj << -/D [2376 0 R /XYZ 90 739.9346 null] ->> endobj -2385 0 obj << -/D [2376 0 R /XYZ 90 582.5346 null] ->> endobj -2386 0 obj << -/D [2376 0 R /XYZ 90 582.5346 null] ->> endobj -2388 0 obj << -/D [2376 0 R /XYZ 90 568.1862 null] ->> endobj -2390 0 obj << -/D [2376 0 R /XYZ 90 536.5063 null] ->> endobj -2340 0 obj << -/D [2376 0 R /XYZ 90 511.0399 null] ->> endobj -2391 0 obj << -/D [2376 0 R /XYZ 90 511.0399 null] ->> endobj -2351 0 obj << -/D [2376 0 R /XYZ 238.8902 421.844 null] ->> endobj -2392 0 obj << -/D [2376 0 R /XYZ 90 404.3073 null] ->> endobj -2350 0 obj << -/D [2376 0 R /XYZ 215.8768 311.4556 null] ->> endobj -2393 0 obj << -/D [2376 0 R /XYZ 90 293.9189 null] ->> endobj -2371 0 obj << -/D [2376 0 R /XYZ 352.8421 189.1121 null] ->> endobj -2394 0 obj << -/D [2376 0 R /XYZ 90 171.5754 null] ->> endobj -2368 0 obj << -/D [2376 0 R /XYZ 238.8902 96.348 null] ->> endobj -2375 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2399 0 obj << -/Length 1725 -/Filter /FlateDecode ->> -stream -xڭX[o6~09%oiv.4s\`[[BuquA-'+yn΍$c#c.slgFx|GD/`}V'x1Gܡx}WJpbzu' - OjplP<s?x}iXWzYrs;oO#,|`D8hdS|џP2QtD(Mgch +FT1d0o"Ӿa 497W }7n xEnvA.6y6 .ZyhG:E| @[9fMv䕿-?,.˳K"/>G £ٜaTֲFb/BKPiyZ%RYNJr૵J9_2yJH/edܮ_Kv@ARƅry֋o5)n!xPĀ qrXH# ^)"|%hV]'YDo7Q֔:̓ǧ{yjo=(endstream -endobj -2398 0 obj << -/Type /Page -/Contents 2399 0 R -/Resources 2397 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2292 0 R -/Annots [ 2404 0 R 2405 0 R 2407 0 R 2408 0 R 2409 0 R 2410 0 R 2411 0 R 2413 0 R ] ->> endobj -2404 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 421.5214 227.254 444.4901] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -2405 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [247.1194 421.5214 380.3883 444.4901] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -2407 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.808 302.734 388.7368 313.638] -/Subtype /Link -/A << /S /GoTo /D (a00140) >> ->> endobj -2408 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [490.9727 302.734 513.9963 313.638] -/Subtype /Link -/A << /S /GoTo /D (a00144_g12b467f314489259dd718228d0827a51) >> ->> endobj -2409 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 290.7789 143.0105 301.6828] -/Subtype /Link -/A << /S /GoTo /D (a00144_g12b467f314489259dd718228d0827a51) >> ->> endobj -2410 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.9993 290.7789 209.4109 301.6828] -/Subtype /Link -/A << /S /GoTo /D (a00144_g41d37ea1e3bd24f7b51e9409aceaaa80) >> ->> endobj -2411 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [226.7857 290.7789 297.4 301.6828] -/Subtype /Link -/A << /S /GoTo /D (a00144_geb79c914cf137e6d27fd7583e5a66679) >> ->> endobj -2413 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [261.4335 197.9645 328.7205 208.8684] -/Subtype /Link -/A << /S /GoTo /D (a00144_g30e827f33eacff55ecb4d8fb5a11d5d1) >> ->> endobj -2400 0 obj << -/D [2398 0 R /XYZ 90 757.9346 null] ->> endobj -2401 0 obj << -/D [2398 0 R /XYZ 90 739.9346 null] ->> endobj -2374 0 obj << -/D [2398 0 R /XYZ 224.7534 640.6243 null] ->> endobj -2402 0 obj << -/D [2398 0 R /XYZ 90 623.0456 null] ->> endobj -2341 0 obj << -/D [2398 0 R /XYZ 238.8902 547.8099 null] ->> endobj -2403 0 obj << -/D [2398 0 R /XYZ 90 530.2312 null] ->> endobj -2314 0 obj << -/D [2398 0 R /XYZ 208.1261 381.0771 null] ->> endobj -2406 0 obj << -/D [2398 0 R /XYZ 90 363.4985 null] ->> endobj -2316 0 obj << -/D [2398 0 R /XYZ 233.9089 276.3076 null] ->> endobj -2412 0 obj << -/D [2398 0 R /XYZ 90 258.7289 null] ->> endobj -2342 0 obj << -/D [2398 0 R /XYZ 238.8902 171.5381 null] ->> endobj -2414 0 obj << -/D [2398 0 R /XYZ 90 153.9594 null] ->> endobj -2397 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2417 0 obj << -/Length 1471 -/Filter /FlateDecode ->> -stream -xXo6B@;ߺ"M:E KE\j~Ǘe)a( y<~[1B?tb !k 8_3zAb+vr-% &2d&}ZM$"[nf=']7j]"Ȏrgw,:Yv7|6qLjlه;9@0u]SuG% uϨ#+&\=˂Q"~/VOJb >qrG\X IwtMR)~F>'E)$,9:6䑚GQ;\q#_2um}?nﯯ>Ѳܡ,9c)kӝ - |cߦ"4hcنO;hK6OclnGx=bX e9{$a9ibu2gNs qZs9spMa0eH/tyݕP6c?3t!5؊1uԧT ;(F> o o:m{,}mǏB;@:9W7?F崩K: -NYo6 ]҆'v^>0~ i]m8`r$9k+[^>Z" 2B Vpu,hh{"A;ADUXql4^ݱ/gRŕd7&cK\(( zsXzr h+W8j[ -b%C鴅g\p㾤IӔwPjD3ZNmz ^{}L&A63Ǩpktl^>ܗݛwsˏHPdW*a]elx9D=Z*k#B&a]prʛUU\>FZ3FSH!|BVr s|y6DM*=* A4|fX@@p o4 %~ 8e(6FL,pyqLtqGr%,Hx1.PX4 ->N~;A^!?D -v~HjZdGh#m/)MO=ߙ[::1_j0:! AZ#}Fp;hXO2U%endstream -endobj -2416 0 obj << -/Type /Page -/Contents 2417 0 R -/Resources 2415 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2425 0 R -/Annots [ 2421 0 R ] ->> endobj -2421 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [293.1521 514.0489 332.2253 524.9528] -/Subtype /Link -/A << /S /GoTo /D (a00153_gb58e1ceb7cb73ca2bcd73146b6c1b4e7) >> ->> endobj -2418 0 obj << -/D [2416 0 R /XYZ 90 757.9346 null] ->> endobj -2372 0 obj << -/D [2416 0 R /XYZ 319.1084 712.3476 null] ->> endobj -2419 0 obj << -/D [2416 0 R /XYZ 90 695.8178 null] ->> endobj -2370 0 obj << -/D [2416 0 R /XYZ 368.9116 591.1728 null] ->> endobj -2420 0 obj << -/D [2416 0 R /XYZ 90 574.643 null] ->> endobj -2345 0 obj << -/D [2416 0 R /XYZ 238.8902 487.6225 null] ->> endobj -2422 0 obj << -/D [2416 0 R /XYZ 90 471.0926 null] ->> endobj -2346 0 obj << -/D [2416 0 R /XYZ 207.0201 378.4029 null] ->> endobj -2423 0 obj << -/D [2416 0 R /XYZ 90 361.8731 null] ->> endobj -2315 0 obj << -/D [2416 0 R /XYZ 207.0201 257.2281 null] ->> endobj -2424 0 obj << -/D [2416 0 R /XYZ 90 240.6983 null] ->> endobj -2318 0 obj << -/D [2416 0 R /XYZ 238.8902 96.348 null] ->> endobj -2415 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2428 0 obj << -/Length 1383 -/Filter /FlateDecode ->> -stream -xڽXYoX~ϯ4cKsرy+4@P 1fU}_%x:~1iDѨR~,1"M ܛM| g OH0 #4H -v\4L>XgψjWo`" ;HMˤ͘_q^dv|X.e& rho@2'sB"'vtԁ|09X.vC Jb[>"D -Ի՛ˋzy HI0);t(=w*RuەURc]1PY~ٞk9`GTޠʵZ^u#6Ua7kǞ$”kZ5mjEb_ZWԊ -=& o"2/ۢ鳦ۋNԔp+-D͚N1:Tnm*˄Y3xUwG !asc=# >$6jrJ(DI,Z1TEqYnQyw֫p;]a1YP2f[ǡBh|ϕyU6+F|mwko?0SL=5:pSQ )rsaP5#CiTIԧeܤzxO]㤎N/azkq*c=]Z޼_|mSYK #L7JصXڀb1wu-moHJqm$%uZ" [Z -&~,a#XR$V‰WJnIG$8Ē /48~ݨd3@NY".s^l*X0 tՔ,<߄3P(zL{ApV3%S_c9j}}F5VB QH**uZsVZXT-i޻kZԄr)#`Mn/HfK> endobj -2429 0 obj << -/D [2427 0 R /XYZ 90 757.9346 null] ->> endobj -2430 0 obj << -/D [2427 0 R /XYZ 90 739.9346 null] ->> endobj -2348 0 obj << -/D [2427 0 R /XYZ 238.8902 601.3918 null] ->> endobj -2431 0 obj << -/D [2427 0 R /XYZ 90 584.8893 null] ->> endobj -2344 0 obj << -/D [2427 0 R /XYZ 238.8902 497.8687 null] ->> endobj -2432 0 obj << -/D [2427 0 R /XYZ 90 481.3661 null] ->> endobj -2369 0 obj << -/D [2427 0 R /XYZ 207.0201 388.6763 null] ->> endobj -2433 0 obj << -/D [2427 0 R /XYZ 90 372.1738 null] ->> endobj -2347 0 obj << -/D [2427 0 R /XYZ 238.8902 297.1084 null] ->> endobj -2434 0 obj << -/D [2427 0 R /XYZ 90 280.6058 null] ->> endobj -2349 0 obj << -/D [2427 0 R /XYZ 238.8902 205.5404 null] ->> endobj -2435 0 obj << -/D [2427 0 R /XYZ 90 189.0378 null] ->> endobj -2317 0 obj << -/D [2427 0 R /XYZ 207.0201 96.348 null] ->> endobj -2426 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2438 0 obj << -/Length 1725 -/Filter /FlateDecode ->> -stream -xڵY]6}W0 >,Y[INeMd}d%,>Ϲ_: 2G -c#"1^Gx_y<糶ϿQ5VH * A)D B3&>`L7U(> endobj -2445 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [203.2945 407.1106 229.0877 417.9898] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2446 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 333.1135 139.4144 356.0822] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -2447 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 333.1135 175.6584 356.0822] -/Subtype /Link -/A << /S /GoTo /D (a00049) >> ->> endobj -2448 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [178.6472 333.1135 211.2546 356.0822] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -2449 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [214.2434 333.1135 247.4088 356.0822] -/Subtype /Link -/A << /S /GoTo /D (a00047) >> ->> endobj -2450 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [250.3976 333.1135 278.6812 356.0822] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2451 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [281.6699 333.1135 310.5115 356.0822] -/Subtype /Link -/A << /S /GoTo /D (a00039) >> ->> endobj -2452 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [313.5003 333.1135 349.5247 356.0822] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -2453 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.3901 333.1135 412.6078 356.0822] -/Subtype /Link -/A << /S /GoTo /D (a00050) >> ->> endobj -2455 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.3132 280.0189 219.125 290.8981] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -2456 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 206.0218 139.4144 228.9905] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -2457 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 206.0218 175.6584 228.9905] -/Subtype /Link -/A << /S /GoTo /D (a00049) >> ->> endobj -2458 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [178.6472 206.0218 211.2546 228.9905] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -2459 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [214.2434 206.0218 243.0849 228.9905] -/Subtype /Link -/A << /S /GoTo /D (a00039) >> ->> endobj -2460 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [246.0737 206.0218 282.0981 228.9905] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -2461 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [285.0869 206.0218 321.6693 228.9905] -/Subtype /Link -/A << /S /GoTo /D (a00045) >> ->> endobj -2462 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [341.5347 206.0218 384.7524 228.9905] -/Subtype /Link -/A << /S /GoTo /D (a00050) >> ->> endobj -2464 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [230.7012 152.9273 279.1888 163.8064] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -2439 0 obj << -/D [2437 0 R /XYZ 90 757.9346 null] ->> endobj -2440 0 obj << -/D [2437 0 R /XYZ 90 739.9346 null] ->> endobj -2319 0 obj << -/D [2437 0 R /XYZ 238.8902 670.3741 null] ->> endobj -2441 0 obj << -/D [2437 0 R /XYZ 90 654.4845 null] ->> endobj -2343 0 obj << -/D [2437 0 R /XYZ 238.8902 558.783 null] ->> endobj -2442 0 obj << -/D [2437 0 R /XYZ 90 542.8934 null] ->> endobj -2443 0 obj << -/D [2437 0 R /XYZ 90 451.9385 null] ->> endobj -1385 0 obj << -/D [2437 0 R /XYZ 90 425.3268 null] ->> endobj -2444 0 obj << -/D [2437 0 R /XYZ 90 425.3268 null] ->> endobj -1321 0 obj << -/D [2437 0 R /XYZ 242.1978 314.3947 null] ->> endobj -2454 0 obj << -/D [2437 0 R /XYZ 90 298.5051 null] ->> endobj -2313 0 obj << -/D [2437 0 R /XYZ 242.1978 187.303 null] ->> endobj -2463 0 obj << -/D [2437 0 R /XYZ 90 171.4134 null] ->> endobj -2395 0 obj << -/D [2437 0 R /XYZ 242.1978 96.348 null] ->> endobj -2436 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2472 0 obj << -/Length 1155 -/Filter /FlateDecode ->> -stream -xXK6Wh17=y H[`d[,9zdCZA/ȏ3|$gDÏ!P(d\y#tZ7mnG! -%Z Jhl -?>CS5A6,&Kl}5$uZ䛯Շ]LW@q ^#488e![c s £ID(boc_/I􉔈)ƺs3RT&V &^G*}Ƈm,NZ( D@ -8=ZY]* eS/ZB;z%tb x.%t{_ - DyQoPA5)~g Kl `b|.\ 0r[zb@gTE}#źE AԧQ(n WM]OnUӄLkSHzqo0Lݎ6G4+i_Z=(E( E)ā 7"Đ6A:[!̇|.i^4$v.sRU;x3ׇNXtnڴ6Ԝi㮻fMӦ0#whQZgAo1S{ -hbvP}p~mDv;% "\~*D -. Sz%3xlLvTL > endobj -2475 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 726.9533 248.7336 737.8324] -/Subtype /Link -/A << /S /GoTo /D (a00085) >> ->> endobj -2476 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.0545 702.4697 359.1278 713.3737] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2477 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 649.2336 135.5587 672.2023] -/Subtype /Link -/A << /S /GoTo /D (a00039) >> ->> endobj -2478 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5475 649.2336 175.1299 672.2023] -/Subtype /Link -/A << /S /GoTo /D (a00045) >> ->> endobj -2479 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [194.9953 649.2336 243.1941 672.2023] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -2481 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.377 591.5789 252.071 602.458] -/Subtype /Link -/A << /S /GoTo /D (a00153_ga92afb113e122f860392bfbd385f842e) >> ->> endobj -2482 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.0545 567.0953 359.1278 577.9993] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -2483 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 513.8592 139.9724 536.8279] -/Subtype /Link -/A << /S /GoTo /D (a00049) >> ->> endobj -2473 0 obj << -/D [2471 0 R /XYZ 90 757.9346 null] ->> endobj -2474 0 obj << -/D [2471 0 R /XYZ 90 739.9346 null] ->> endobj -2396 0 obj << -/D [2471 0 R /XYZ 227.8216 626.7922 null] ->> endobj -2480 0 obj << -/D [2471 0 R /XYZ 90 610.0651 null] ->> endobj -2484 0 obj << -/D [2471 0 R /XYZ 90 476.7479 null] ->> endobj -2373 0 obj << -/D [2471 0 R /XYZ 90 450.3624 null] ->> endobj -2485 0 obj << -/D [2471 0 R /XYZ 90 450.3624 null] ->> endobj -2470 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2489 0 obj << -/Length 2005 -/Filter /FlateDecode ->> -stream -xڝے۶_3kX[$ͦi/mk"K>~}f:H@\r)'Xn{~LO <5U2vPP(w'tZ@8GlA{W2rpqQ sFOC47Kj<lOQ'}e5 y}r28U43*Γ3\IˀR֟ Ω9XMΑs%1DŽ'2T^3ScO1c)a"cҊR5/)0'{BQ0+* g_sƥ82Xd2o7P =sW gF] M"]ǃXF iI8Zh(O#R&kw۬86TS'MTyv}Vݷiїo$q](]ZaB7ofsq1q4Fx&zYCф/30M$g"_.G҃qB+iyA&zdPB^ɀjäNDWhh(ɻluAC t^M`1ƞ (;Re@.J#jϒ#J}$9{JO5semN4yl9%~tJl3mf-@ǴiIcЗ/FSN=ИݞV=ue1X'+S 5:.ɠr{\sMK3 - }]Ql9@`ڕF^юYpQ| N1} :)Zu>'5TdТHYn]#HuǪ+2Z1RほLqLd$qFm^2L:H;D8a=k3S ;H#OyH<04'. %MAފ;f`8{=,+QcQ%٘7欘g-|@>Ng8i#LCgB[ۮpSXiuT0FCa> endobj -2493 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 503.0404 171.8124 513.9444] -/Subtype /Link -/A << /S /GoTo /D (a00134) >> ->> endobj -2495 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 420.2854 201.2321 431.1893] -/Subtype /Link -/A << /S /GoTo /D (a00154_gb4b17aaf20d630f30919b19937b966a3) >> ->> endobj -2490 0 obj << -/D [2488 0 R /XYZ 90 757.9346 null] ->> endobj -1776 0 obj << -/D [2488 0 R /XYZ 90 739.9346 null] ->> endobj -130 0 obj << -/D [2488 0 R /XYZ 90 739.9346 null] ->> endobj -2491 0 obj << -/D [2488 0 R /XYZ 90 716.7484 null] ->> endobj -2492 0 obj << -/D [2488 0 R /XYZ 90 521.9904 null] ->> endobj -2494 0 obj << -/D [2488 0 R /XYZ 90 439.2353 null] ->> endobj -2496 0 obj << -/D [2488 0 R /XYZ 90 382.9653 null] ->> endobj -2497 0 obj << -/D [2488 0 R /XYZ 90 356.4803 null] ->> endobj -2498 0 obj << -/D [2488 0 R /XYZ 90 356.4803 null] ->> endobj -2487 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2501 0 obj << -/Length 1890 -/Filter /FlateDecode ->> -stream -xڭZ[o6~06N1&mSָC[;fEC)K"US;$E 1C%Ҍaz@'oj%]A$(H&XOh -<"wanymǟo -ך%$x0b:'hMN nUzʁ6a:(J$"| Jѹ U1j ?[J}eBekaڴsy<[BPGQ1(Ė+(e&J!U9 P#!OS,M Fb~<o2ЄP}lVo[dnV 8GJs¨1|ܗiB1Ɏ&B$`䅉0ba%Q3g%PʘI"Bw% &brbqBy -C -VFUCC %&:_Zx)SH D (Ck3^қ~7V^Ļ DVOl?h7d -O!+ u -W kב&kY#64ZΗf~n&d8 A/LJFrUx_^e|sH_2ƫدAN^sŐԒ ']m܏6gڔ.)"ql[F9'E ĉŋ$I*ץFK"'ucf43f/fPغ)*U$Jŧ1̠eȉ3) e([e푡x h-6I/gח OB$8tC[9 y+^{($ $/ @%%@H#@ 7N:xDhxqE81Lp *xS[ I7:RdqF xЉ~Bpbqj=jq+j=QC 7-SEDp !7EXT./fpaN~x!~88?B?¸?|G،^ˏCxIŐZ-"|CRldA\{=R#tІS}A߫-BTWtpuՖvԝwO x'|K}ʽ#5>sE7IВl*0%ۉœBƭHv Of4Y8.a䆶r_j?3ͭ ">"֘\N&Ra}}L])w?@XA#?"5ܼ6[oq`z@]KrbS'm*uM!iekxGY qc H%ϖ00n-/cG}G S̽u pQknʣ9Ap</mhBZm^) Cuf2`)"kmg\ys_|FP=NS1rl4?>}|LԮendstream -endobj -2500 0 obj << -/Type /Page -/Contents 2501 0 R -/Resources 2499 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2425 0 R -/Annots [ 2505 0 R 2506 0 R 2507 0 R 2510 0 R 2512 0 R 2514 0 R 2516 0 R 2518 0 R 2519 0 R 2520 0 R 2521 0 R 2522 0 R 2525 0 R 2527 0 R ] ->> endobj -2505 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 576.2119 145.7904 585.0586] -/Subtype /Link -/A << /S /GoTo /D (a00125) >> ->> endobj -2506 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 537.3577 175.12 546.2043] -/Subtype /Link -/A << /S /GoTo /D (a00124) >> ->> endobj -2507 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 498.5034 190.0538 507.35] -/Subtype /Link -/A << /S /GoTo /D (a00123) >> ->> endobj -2510 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 414.6673 235.723 424.595] -/Subtype /Link -/A << /S /GoTo /D (a00155_g44311ecc30759ca38b4069182247bdae) >> ->> endobj -2512 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 401.1132 185.352 411.6435] -/Subtype /Link -/A << /S /GoTo /D (a00155_g2c1bb4fa6d7a6ff951a41c73fc721109) >> ->> endobj -2514 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 388.1618 205.845 398.6921] -/Subtype /Link -/A << /S /GoTo /D (a00155_g1ec8b8f4710dce1fa7fb87d3a31541ae) >> ->> endobj -2516 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 375.2103 183.1503 385.7407] -/Subtype /Link -/A << /S /GoTo /D (a00155_gd8eec328a4868d767f0c00c8d1c6cfc1) >> ->> endobj -2518 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 362.2589 185.91 372.7892] -/Subtype /Link -/A << /S /GoTo /D (a00155_gca51ceb2f5d855dfde55bcedf8d3b92d) >> ->> endobj -2519 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 349.3075 185.352 359.8378] -/Subtype /Link -/A << /S /GoTo /D (a00155_g2c1bb4fa6d7a6ff951a41c73fc721109) >> ->> endobj -2520 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 336.356 205.845 346.8864] -/Subtype /Link -/A << /S /GoTo /D (a00155_g1ec8b8f4710dce1fa7fb87d3a31541ae) >> ->> endobj -2521 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 323.4046 183.1503 333.9349] -/Subtype /Link -/A << /S /GoTo /D (a00155_gd8eec328a4868d767f0c00c8d1c6cfc1) >> ->> endobj -2522 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 310.4532 185.91 320.9835] -/Subtype /Link -/A << /S /GoTo /D (a00155_gca51ceb2f5d855dfde55bcedf8d3b92d) >> ->> endobj -2525 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [207.1599 253.2274 224.0961 264.1313] -/Subtype /Link -/A << /S /GoTo /D (a00155_g3983e0c026396d5c4506779d770007ba) >> ->> endobj -2527 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.7556 240.276 190.6918 251.1799] -/Subtype /Link -/A << /S /GoTo /D (a00155_g2bdc4b7b4038454a79f1b2a94a6d2a98) >> ->> endobj -2502 0 obj << -/D [2500 0 R /XYZ 90 757.9346 null] ->> endobj -1165 0 obj << -/D [2500 0 R /XYZ 90 739.9346 null] ->> endobj -134 0 obj << -/D [2500 0 R /XYZ 90 739.9346 null] ->> endobj -2503 0 obj << -/D [2500 0 R /XYZ 90 719.4886 null] ->> endobj -2504 0 obj << -/D [2500 0 R /XYZ 90 593.1046 null] ->> endobj -2508 0 obj << -/D [2500 0 R /XYZ 90 432.641 null] ->> endobj -2509 0 obj << -/D [2500 0 R /XYZ 90 432.641 null] ->> endobj -2511 0 obj << -/D [2500 0 R /XYZ 90 418.6523 null] ->> endobj -2513 0 obj << -/D [2500 0 R /XYZ 90 405.0983 null] ->> endobj -2515 0 obj << -/D [2500 0 R /XYZ 90 392.1468 null] ->> endobj -2517 0 obj << -/D [2500 0 R /XYZ 90 379.1954 null] ->> endobj -2523 0 obj << -/D [2500 0 R /XYZ 90 269.8939 null] ->> endobj -2524 0 obj << -/D [2500 0 R /XYZ 90 269.8939 null] ->> endobj -2526 0 obj << -/D [2500 0 R /XYZ 90 257.2125 null] ->> endobj -2499 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2530 0 obj << -/Length 1914 -/Filter /FlateDecode ->> -stream -xڭYێ6}Wy,%}jM-dߒ PlZ/[Y&!Eєd - Gg"cs%2j7jF~AFR9w$A:[_HD -[veݞnuQ]~{3!'CwK0Ig?{3È- F:8evnwp\ Gpv0^``k #Yd2@[-ږmy\cS v@HmJ\4]"D?և%j]?X6MxnԢ.y*כ>p~!6۫Ee* -F)m.JǪ.(3em*\܅شGvTl_. L{)/l(=~Syt?x?VB[ R,#Hlpxƛucj!BHJ|Ijbc6)([}}vV=6(w9]7?[i^5>}ӡGmb -s&|ba\((5bw52mY =<4勡W)Rۀ7~+gk6jU7-)H"yXvmmH(3&EjӏZx dڲiIA>s]ǟrU}F?AQ{JOXx7^]-V|)ӅaEcbyk%L 3&7@s }m&X(gXg(cSTǀP}Մ:P3|ad:Q B#9I@`Ȁ%M/7\)D9!TB܅ -VF̉ ߋ w0 O-] \JD5}(4@r`yESK Юy -1ibj_P*pINv f+Xvl -ܕugF RO 4B,@9 -ry[4E;j۷_TP&]T *XIg*gvT->T\ #g*C]ezUL71 hpz_B"ƔL$B_f)*I=,ƴ0z]` Rv,'SΔL;;}kCS#=<j'X܎bӃ@ГrM?`/W$UN~YZB SCW(+p-C^&̯>Qsɯi$k ԴӪ3F'"lJR1Y2`i"` s_;X#JO zbOG1{.w5k\ƮU& *^SX26H'IM!3q^/{ERtj_!͐}>6&ƭC&N1:QfݿuЛsG_lwŮ^-3< -!O$tX"N},[Dgv- 埉bdW(x74Сrhl S8v N' ƎJ&`ԟztDt0/W%^r8솟Nudj J; B3~@@-N,/@T R5umFvf4[$xP.>0Ƨ"3q&A B9I?Ǝꠐ  pܮƦ\ىlcX$"ڲSպqM&=db|qCֈ=r!ѷ?XId8\ܗutݮ'B/({Aq{^]xzG#==|P]hQ~H9endstream -endobj -2529 0 obj << -/Type /Page -/Contents 2530 0 R -/Resources 2528 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2549 0 R -/Annots [ 2534 0 R 2536 0 R 2537 0 R 2539 0 R 2541 0 R 2542 0 R 2543 0 R 2544 0 R 2545 0 R 2546 0 R 2547 0 R 2548 0 R ] ->> endobj -2534 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.9242 571.076 269.2362 594.0447] -/Subtype /Link -/A << /S /GoTo /D (a00157) >> ->> endobj -2536 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 493.9051 159.0804 502.7518] -/Subtype /Link -/A << /S /GoTo /D (a00130) >> ->> endobj -2537 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 449.4179 158.5224 458.2645] -/Subtype /Link -/A << /S /GoTo /D (a00129) >> ->> endobj -2539 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 353.4255 161.5608 362.2722] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -2541 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 255.7495 172.9881 266.2798] -/Subtype /Link -/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> ->> endobj -2542 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [201.4309 255.7495 224.4542 266.2798] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -2543 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 211.2623 180.7289 221.7926] -/Subtype /Link -/A << /S /GoTo /D (a00156_gedaf3e48c2b04229b85455fb948468d6) >> ->> endobj -2544 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [209.1718 211.2623 232.195 221.7926] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -2545 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 166.7751 186.816 177.3054] -/Subtype /Link -/A << /S /GoTo /D (a00156_gcb807bd57e5489b386b876af5c1f163a) >> ->> endobj -2546 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.2588 166.7751 238.2821 177.3054] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -2547 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.9214 121.9143 184.6543 132.8182] -/Subtype /Link -/A << /S /GoTo /D (a00156_g6d71dececfce707c668e6257aad5906e) >> ->> endobj -2548 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.0971 121.9143 236.1204 132.8182] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -2531 0 obj << -/D [2529 0 R /XYZ 90 757.9346 null] ->> endobj -2532 0 obj << -/D [2529 0 R /XYZ 90 739.9346 null] ->> endobj -138 0 obj << -/D [2529 0 R /XYZ 90 739.9346 null] ->> endobj -2533 0 obj << -/D [2529 0 R /XYZ 90 715.481 null] ->> endobj -2535 0 obj << -/D [2529 0 R /XYZ 90 513.6142 null] ->> endobj -2538 0 obj << -/D [2529 0 R /XYZ 90 373.1347 null] ->> endobj -2540 0 obj << -/D [2529 0 R /XYZ 90 277.1423 null] ->> endobj -2528 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2557 0 obj << -/Length 2012 -/Filter /FlateDecode ->> -stream -xڵZK6 WhD,"[_43餛cӻx%WI}Aԋzd696? %k Ziaw ']O^PH4]k )A=hMo.דq_ծʊ|կ^o`)Z^ `ޫFL+~/a) _N?9n^0;AAZGam/ED "o^\}mWR]IxYY^91U`9+Dm'R}5teI% RVLy!7MxqZk")Ct` *KxWo* 1s.`8;F\NL $D $!2)ĉ70iPK#iVH)Z NzRBxE ڤ{pA8tQ!d1BP 6YHK7"Dm%*8ڞn__eLMPT].J~lM;!2a}j Χ%YKs,J -lN줝]UbZB)=24C(5ƥX_1)h3Ҍp -[MڬI$duQ4@4}R3f s,obl37?T>dt8&Z.j&:AU6@7\gFxl(o`mi Ud"ȻywaD 9TS"P.(MW3pܝ-$l9kxҠL-{ʊiKvDrC2A֤A-XK{{ſݳQvxLkްD9EZ>Sв-'#4>;t`B{Tx@[uzǾ -XVo?Fe0_KȖsiWzŻv#CO폵 0FZ_a6 iEW1 ~X%^Iw~%'pa7'b`g ).Y߈.'3&=qS%j++mf4U-TeP.GID#h2aN,EZqP),)mL{irS*30xe5k'~NsbT4o;?<%cGfK)*endstream -endobj -2556 0 obj << -/Type /Page -/Contents 2557 0 R -/Resources 2555 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2549 0 R -/Annots [ 2561 0 R 2562 0 R 2563 0 R 2564 0 R 2566 0 R 2567 0 R 2568 0 R 2569 0 R 2570 0 R 2572 0 R 2573 0 R 2574 0 R ] ->> endobj -2561 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [238.7907 702.6042 264.0158 713.4833] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -2562 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 552.0997 139.4144 575.0684] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -2563 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 552.0997 262.94 575.0684] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -2564 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [282.8054 552.0997 416.0743 575.0684] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -2566 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [233.7 476.8541 258.9251 487.4443] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -2567 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.5998 434.4572 435.3076 445.3612] -/Subtype /Link -/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> ->> endobj -2568 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 339.0297 166.2529 361.6249] -/Subtype /Link -/A << /S /GoTo /D (a00156_gcb807bd57e5489b386b876af5c1f163a) >> ->> endobj -2569 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 302.8975 227.254 325.8663] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -2570 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [247.1194 302.8975 380.3883 325.8663] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -2572 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [241.9988 227.652 267.2239 238.2422] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -2573 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.3063 185.2551 432.0141 196.159] -/Subtype /Link -/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> ->> endobj -2574 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [460.5476 139.225 513.9963 162.1938] -/Subtype /Link -/A << /S /GoTo /D (a00156_gedaf3e48c2b04229b85455fb948468d6) >> ->> endobj -2558 0 obj << -/D [2556 0 R /XYZ 90 757.9346 null] ->> endobj -2559 0 obj << -/D [2556 0 R /XYZ 90 739.9346 null] ->> endobj -2554 0 obj << -/D [2556 0 R /XYZ 90 723.1038 null] ->> endobj -2560 0 obj << -/D [2556 0 R /XYZ 90 723.1038 null] ->> endobj -2552 0 obj << -/D [2556 0 R /XYZ 264.324 511.5135 null] ->> endobj -2565 0 obj << -/D [2556 0 R /XYZ 90 495.425 null] ->> endobj -2553 0 obj << -/D [2556 0 R /XYZ 208.4343 262.3114 null] ->> endobj -2571 0 obj << -/D [2556 0 R /XYZ 90 246.5665 null] ->> endobj -2555 0 obj << -/Font << /F29 499 0 R /F14 636 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2577 0 obj << -/Length 1169 -/Filter /FlateDecode ->> -stream -xڽWێ6}W"ëo-]@[,6j[,gwCu@l,3gf$DAdh& 3=O31mߘ 1h,( sE@.b&|dmᇻH}$ʵ@'nqxI{;~F 7^p@ âL0^vٟ?Q- O0 -\E%PH4fl<!44Uh) ږH{Sȿeɮ2lCvLE^FYpRnmXx.υ%XlQONQBXM. U6`^]®"a=V@T!:T^]4C| @ .OKw紬P~s7eV%Ȥzܦ&h }ЊMRm]J*A]Jcӵm -F w=d@5_9P">|  a؏.8U[gV>.tTous׃v\I[4:nܿy{uI_|d⠧FM(k/T?Nhxuu5d8zj`z:jX҄H 5s̍=#Q(ާa%+qZC1PKAihupg4[<v'SeTKjhͱ> endobj -2579 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 718.3357 160.1659 740.9309] -/Subtype /Link -/A << /S /GoTo /D (a00156_gedaf3e48c2b04229b85455fb948468d6) >> ->> endobj -2581 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.0325 640.9795 250.2576 651.5696] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -2582 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [431.0264 598.5826 495.3943 609.4865] -/Subtype /Link -/A << /S /GoTo /D (a00156_g6d71dececfce707c668e6257aad5906e) >> ->> endobj -2583 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 495.4786 139.4144 518.4473] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -2584 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.4032 495.4786 262.94 518.4473] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -2585 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [282.8054 495.4786 416.0743 518.4473] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -2578 0 obj << -/D [2576 0 R /XYZ 90 757.9346 null] ->> endobj -2551 0 obj << -/D [2576 0 R /XYZ 229.1564 675.9038 null] ->> endobj -2580 0 obj << -/D [2576 0 R /XYZ 90 659.5503 null] ->> endobj -2575 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2588 0 obj << -/Length 1530 -/Filter /FlateDecode ->> -stream -xڥXKs6Wpi&B[k'Mƾ%MA1TwA_"tt `@@ 42 |ǯ~6׻ϯ4Ғn[I Jhp|!Vxy|'\ -$w3&{Qd˻Fom`X/>~{P#5 N-n5r܋1a QpW9$"r&.3IZ|:$$@$ R˸1e̦)<9 ֊cNcɸoNJॵ=*#S~3&={|"RH%Ԟ+U|hŵ=ʵΖ]Gs0R=6+c -vM/p]Tn|Ox1m]R>X"^hM(}j3<}8waq1e SM7h)D ELHr/K7gA={znP3V Y+1Lm*2KwYdEjD1P P!VD,&aQg/ܣ_v<&Ҵ&?njܷ&rꐥOOa̗H=\|e2PBc&҃mp 5˜A5yѮȮ @dR?G:$.IOB01ffn UZ1%>p:^ j4`2!$z1+GqzvWy-g!?ɱ -?Q*9k`Ԝ^X5M@9HQEz'ȵf:t%7Xb@L=""mO'g j!k+ ,0k/2V+~IaێxtjGayS }i91Uc yo`x^ޯ6Y>iBDOy{֊jORXv(]șxԜv`+Ei/X`&ǙD zi`֒7&W_LŵB9~IӺ%pzZ:Br??Omd kɠwfp: jF;a(z/6 -_0n`֒צsE!-l`D/PPfڦ3' f3ofrjߞvU.]s<Omb3RmӤ] wg/n> endobj -2591 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [279.6865 672.5415 331.7604 683.4455] -/Subtype /Link -/A << /S /GoTo /D (a00156) >> ->> endobj -2592 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.9692 654.9172 432.0432 665.8211] -/Subtype /Link -/A << /S /GoTo /D (a00156) >> ->> endobj -2593 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 587.7333 161.7601 610.7021] -/Subtype /Link -/A << /S /GoTo /D (a00156) >> ->> endobj -2596 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 531.8574 226.3182 541.7851] -/Subtype /Link -/A << /S /GoTo /D (a00157_ge3ced0551b26c9b99cb45a86f34d100a) >> ->> endobj -2598 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 448.4997 175.7578 459.03] -/Subtype /Link -/A << /S /GoTo /D (a00157_g78ab77b57cf2e00089f0a3a22508524c) >> ->> endobj -2599 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.4252 409.6454 214.6911 420.1757] -/Subtype /Link -/A << /S /GoTo /D (a00157_ge5b7160f2e653725ba5e2024c3cb7bff) >> ->> endobj -2589 0 obj << -/D [2587 0 R /XYZ 90 757.9346 null] ->> endobj -2550 0 obj << -/D [2587 0 R /XYZ 90 739.9346 null] ->> endobj -142 0 obj << -/D [2587 0 R /XYZ 90 739.9346 null] ->> endobj -2590 0 obj << -/D [2587 0 R /XYZ 90 719.4886 null] ->> endobj -2594 0 obj << -/D [2587 0 R /XYZ 90 549.8311 null] ->> endobj -2595 0 obj << -/D [2587 0 R /XYZ 90 549.8311 null] ->> endobj -2597 0 obj << -/D [2587 0 R /XYZ 90 467.076 null] ->> endobj -2600 0 obj << -/D [2587 0 R /XYZ 90 371.9517 null] ->> endobj -2601 0 obj << -/D [2587 0 R /XYZ 90 345.4667 null] ->> endobj -2602 0 obj << -/D [2587 0 R /XYZ 90 345.4667 null] ->> endobj -2603 0 obj << -/D [2587 0 R /XYZ 499.0115 286.0122 null] ->> endobj -2604 0 obj << -/D [2587 0 R /XYZ 90 269.2851 null] ->> endobj -2586 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2607 0 obj << -/Length 2480 -/Filter /FlateDecode ->> -stream -xڭZYo8~ϯ0/60u^lo$,03( -KILohIhXEbX%|%*W _=a0nLV KB P0-\=^LD|ވx]USn_gmC3EXfxDo~}tk*=3z -D&utth,N 5Hu#_=5VDNDkCdܓc4/=͚]yUZB3;A!p`U_3p0m}HZ7/۬~….mESB3M;ǼH 4:WZ] *d:a̯$aHqRP)5#Qj'N82RPPV6{7*bm=5d>ۥ`dHw`ҠcR37HP^D07 慝4 @ 7 {̈~{ lSބ)ъANyA~DS0Qp7}҅7R$"dkk8}pP@}jTRS.*"*G M}MVB]L}ڦ4BWpxg - hkHǼi z"ƽZRև I! L_3q?BlZz FPĒ>8þ>8i Fx: T-ehWpmj)vvd'<†Bűh &*c>O(d63jI5M= -lEhC^ _)-%B8NJ=aByjX¡?˹,gՐEK2K;{SkX>LX*b"Q$h;W.f(llUxtU8m ,RI+݃Y2!UǷt$m}ڵ'l62LX! .9qس{^oc;v´3c[ #cFwۧ(9%C%.xiolyo`ƥ;آKr]zs3[MG̃E2旽wjOSG2o}L=DBV(ŨFC,PKGԐwOP|zM^l !u1g2KCyA)y f\ )i4zl` y]|3ׄ#}o$y+tcjv[G<~Q!@$TC-1Q_^ B^v.r |3v@Cj_ -,KZAPGCx`'r[|8.G`@onbŜfVLQxz 8hguyJ^ʩ_zB -DHy͌*&%m>B2@w+k|·iT$]o0msV̓?虰Ͽ]Qendstream -endobj -2606 0 obj << -/Type /Page -/Contents 2607 0 R -/Resources 2605 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2549 0 R -/Annots [ 2610 0 R 2611 0 R 2612 0 R 2613 0 R 2615 0 R 2617 0 R 2618 0 R 2620 0 R 2621 0 R 2622 0 R 2623 0 R 2624 0 R 2625 0 R ] ->> endobj -2610 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [209.6232 595.7581 261.9762 606.662] -/Subtype /Link -/A << /S /GoTo /D (a00142) >> ->> endobj -2611 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.5956 429.6401 513.9963 440.544] -/Subtype /Link -/A << /S /GoTo /D (a00158_g84901a5aa60040e96d272a69977edd22) >> ->> endobj -2612 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 417.6849 128.067 428.5888] -/Subtype /Link -/A << /S /GoTo /D (a00158_g84901a5aa60040e96d272a69977edd22) >> ->> endobj -2613 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [208.8032 405.7297 277.2062 416.6337] -/Subtype /Link -/A << /S /GoTo /D (a00158_gfa11b2a1faf395ae2a6626e01c482d5d) >> ->> endobj -2615 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 348.9505 161.8402 359.8544] -/Subtype /Link -/A << /S /GoTo /D (a00127) >> ->> endobj -2617 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 266.3068 181.8351 277.2107] -/Subtype /Link -/A << /S /GoTo /D (a00083) >> ->> endobj -2618 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 253.3937 163.7728 264.2977] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2620 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 170.75 204.7292 181.6539] -/Subtype /Link -/A << /S /GoTo /D (a00158_g26ae707402e494f3895a9f012a93ea29) >> ->> endobj -2621 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [206.0542 170.75 231.2894 181.6539] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2622 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 131.9725 215.2497 142.8764] -/Subtype /Link -/A << /S /GoTo /D (a00158_g84901a5aa60040e96d272a69977edd22) >> ->> endobj -2623 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [216.5747 131.9725 241.8099 142.8764] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2624 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 93.195 210.8263 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00158_g70d236d1cf34b4e21836edda60247b70) >> ->> endobj -2625 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [212.1513 93.195 237.3865 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2608 0 obj << -/D [2606 0 R /XYZ 90 757.9346 null] ->> endobj -656 0 obj << -/D [2606 0 R /XYZ 90 739.9346 null] ->> endobj -146 0 obj << -/D [2606 0 R /XYZ 90 739.9346 null] ->> endobj -2609 0 obj << -/D [2606 0 R /XYZ 90 716.7484 null] ->> endobj -2614 0 obj << -/D [2606 0 R /XYZ 90 367.862 null] ->> endobj -2616 0 obj << -/D [2606 0 R /XYZ 90 285.2183 null] ->> endobj -2619 0 obj << -/D [2606 0 R /XYZ 90 189.6616 null] ->> endobj -2605 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2632 0 obj << -/Length 2761 -/Filter /FlateDecode ->> -stream -xڵ[6l7~K\r&"ExFvjMPiJ8p7RPM -:1ʐBH=Y>=~uگ|~K^L -Rh'A38OBιNGEúl>_lrS-v3ert۰̩v/tr 9DVM3Ʌc}vs|Q$U -;9OJ4|p!N,\K_RS؉GܔfԷjĂo`0('6Q>kT@dz&[)gU+1 O$EaLjR)qWsX ͻxsyuf~ݏ A&B"H@MuTAv .$U-{&9o$ YDP8UE^WqYTms15tPlZ[$ usLq3f$WWf|um -7X鮅\^ - (e4qcSh}As JE~lM[TLRls>kz%Its0+s388Q7NA;lub -Ǫ. -ҕ}f(JEB^7XwDQ舏) -0cQxebE BS,V۱ x4>.B"C(L8ak>lpi393!5V[HȌ3FeƹV`L?q4Z70Ը1aƸ7nG7nW|q0ޣq/]Wԙ/0)F1:gqμ\.WKM\aCJ$l -z ma#œwǘ=F{4[ey!^^DrI ($mxFg;6Y3gAQn†fn?aQ>LKgW~9^_ :Iz ma  L?a$h'}u> lvZNG?Îw74= -N0K-|d30~Ǫ{`73{4MH5;";0vG|a$v;SPH )۠!ZM,<Aw޺[id 'l&iޞyKS[4{wc)^"\i( 1!F'Q" -ZsPx6<%?)CQp†a-xq5!FgjB9r^]zFo1D&=F{d?$$\|ERjl2 ϛY_ -ˑ{&E@Q"b#@r~S/ܿ~uV pq'DOS뱲`X0 D2 e Q:c@>X>g~{ju ݣ|Hʖ[XT<AwJ[&犷ە{n%[B# -1:WH?jèuax([h0SE -y݁fm)0 YP';(8CNxM?f}]&/j͟( -LrRCN==5#>a* TSx}3C~8I3s[džf66U= -N؆VJPK$F.䪄U"5ryXwbI/t-X IrX0I1, - +^r&׮ߓcSH)o9,?|Je{g02~c4βLCoEwA3_+~n''n a-qQ5k痯^_^iS0h[yӔ7s텐܇kQp);'V5Mإ7` ɭ6'I\qzqm{'nCW,ɪ}Matu۴}{h}lϠV?{ȏ_D.}7!or?8N{͘(?@g!vDSL4).{c!P I ~޸C{.ְmf\=߶ODoe_NA9s6Fendstream -endobj -2631 0 obj << -/Type /Page -/Contents 2632 0 R -/Resources 2630 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2549 0 R -/Annots [ 2634 0 R 2635 0 R 2636 0 R 2637 0 R 2638 0 R 2639 0 R 2640 0 R 2641 0 R 2642 0 R 2643 0 R 2644 0 R 2645 0 R 2646 0 R 2647 0 R 2648 0 R 2649 0 R 2650 0 R 2651 0 R 2652 0 R 2653 0 R 2654 0 R 2655 0 R 2657 0 R 2658 0 R 2659 0 R 2660 0 R 2663 0 R 2664 0 R 2665 0 R 2666 0 R 2668 0 R 2669 0 R 2672 0 R ] ->> endobj -2634 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 703.3528 234.079 714.2568] -/Subtype /Link -/A << /S /GoTo /D (a00158_gb0ad55aa96dd1d200cd0fc5a99f6a4f7) >> ->> endobj -2635 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [235.404 703.3528 260.6392 714.2568] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2636 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 665.3872 274.846 676.2911] -/Subtype /Link -/A << /S /GoTo /D (a00158_g10d9a9201cba1a6db623284c475c6cea) >> ->> endobj -2637 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [276.171 665.3872 301.4062 676.2911] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2638 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 627.4215 216.3655 638.3254] -/Subtype /Link -/A << /S /GoTo /D (a00158_g5d56800f82bfc7bbf53bb4a659589812) >> ->> endobj -2639 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [217.6905 627.4215 242.9257 638.3254] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2640 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 589.4558 231.2097 600.3597] -/Subtype /Link -/A << /S /GoTo /D (a00158_gd895ab98c54d9966ff554aa873151751) >> ->> endobj -2641 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [232.5347 589.4558 257.7699 600.3597] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2642 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 551.4901 225.0331 562.394] -/Subtype /Link -/A << /S /GoTo /D (a00158_gb5d9c0becf7cb32d0aaef466839dd92e) >> ->> endobj -2643 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [226.3581 551.4901 251.5933 562.394] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2644 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 513.5244 229.4168 524.4284] -/Subtype /Link -/A << /S /GoTo /D (a00158_g4ab2de595d36e9e55dd61f6ecd139162) >> ->> endobj -2645 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [230.7417 513.5244 255.9769 524.4284] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2646 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 475.5588 207.4989 486.4627] -/Subtype /Link -/A << /S /GoTo /D (a00158_gfa11b2a1faf395ae2a6626e01c482d5d) >> ->> endobj -2647 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [208.8238 475.5588 234.059 486.4627] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2648 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 437.5931 244.0317 448.497] -/Subtype /Link -/A << /S /GoTo /D (a00158_gc7cc1dba1819f7fcdaa9ff9eed5a08f4) >> ->> endobj -2649 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [245.3566 437.5931 270.5918 448.497] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2650 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 399.6274 205.2872 410.5313] -/Subtype /Link -/A << /S /GoTo /D (a00158_g4a264bb64ae706d53f572b1d9e4037a2) >> ->> endobj -2651 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [206.6122 399.6274 231.8474 410.5313] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2652 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 361.6617 232.7343 372.5656] -/Subtype /Link -/A << /S /GoTo /D (a00158_g55ce98ea4d6f22e9d5068b904d4d2447) >> ->> endobj -2653 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [234.0593 361.6617 259.2945 372.5656] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2654 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 323.696 244.4801 334.6] -/Subtype /Link -/A << /S /GoTo /D (a00158_g2ebfe5c8a7f3173714efdf2df74fc392) >> ->> endobj -2655 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [245.805 323.696 271.0402 334.6] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2657 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.8747 285.7303 255.1444 296.6343] -/Subtype /Link -/A << /S /GoTo /D (a00158_ga87ff36af81990e6ffe20d76d5e4606f) >> ->> endobj -2658 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [256.4694 285.7303 281.7046 296.6343] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2659 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [432.9613 285.7303 458.1965 296.6343] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2660 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [474.7532 285.7303 484.4966 296.6343] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -2663 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 217.7672 138.5977 228.6711] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2664 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 217.7672 198.084 228.6711] -/Subtype /Link -/A << /S /GoTo /D (a00158_g3178402dd725776415bf9745e7bf92ba) >> ->> endobj -2665 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [226.5269 217.7672 251.7621 228.6711] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2666 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [257.2416 217.7672 282.4768 228.6711] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2668 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 205.2601 196.7092 216.164] -/Subtype /Link -/A << /S /GoTo /D (a00158_g3b19f65e48079d8105be2a99b5b4b2ae) >> ->> endobj -2669 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.1521 205.2601 250.3873 216.164] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2672 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [239.0101 147.2581 265.361 158.1372] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2633 0 obj << -/D [2631 0 R /XYZ 90 757.9346 null] ->> endobj -2656 0 obj << -/D [2631 0 R /XYZ 90 304.3794 null] ->> endobj -2661 0 obj << -/D [2631 0 R /XYZ 90 236.2728 null] ->> endobj -2662 0 obj << -/D [2631 0 R /XYZ 90 236.2728 null] ->> endobj -2667 0 obj << -/D [2631 0 R /XYZ 90 221.7522 null] ->> endobj -2670 0 obj << -/D [2631 0 R /XYZ 90 192.0859 null] ->> endobj -2626 0 obj << -/D [2631 0 R /XYZ 90 167.7577 null] ->> endobj -2671 0 obj << -/D [2631 0 R /XYZ 90 167.7577 null] ->> endobj -2630 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2685 0 obj << -/Length 1701 -/Filter /FlateDecode ->> -stream -xYM6W6P1rKnil -Ak#Jr7K,`<2HˆS$IX`t_ΐ}qjw,# $,Z4#6 1rļX^ 8^͖6E C:꿳aQ^ RNI,gg~̃f@hv V3D1a@  @p"qB0iq睖>zڟ'pqux@Zkj Gj(_2h4=A 8wV4npB \RXq] -ԄwtFS:1: Es6ϬbwP6?~o3<+skkTiYgϔ&rZ *_ d_<,4K3SGȖG! Qk!nwň;ʚ$5/KDe@1+"t]֮lwj Qܮ -Ky<Dk5R?9>TB?Z}A%oIj|BÔ5J qJN&UPιZX(e$"rz~\ Xj*mL՚YS7L]=y.(WGFnG Z2WBKT|8vYp}Q0jfS,TOCPςH& /~.%cw TMRj!t_/h:%"(?gwh;\ΡA󟳚 -y+yvK&99-d%`W+}5}SGY},V-*٠R}aP5] *wB=T\{tX"B*(>wa~-]طluQ%2~o{YM`Iqt(MZ ٍրAg)Ÿrtcnq?}apVSD@P3޶7z_2 )8H tLQo. -9#$`&"+ZU,A+ -yUv"[i> endobj -2687 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 680.7395 162.0093 703.7082] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -2688 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.8747 680.7395 210.1583 703.7082] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2690 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [240.6739 621.5426 267.0248 632.4217] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2691 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 495.0915 162.0093 518.0602] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -2692 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.8747 495.0915 210.1583 518.0602] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2694 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [270.0136 435.8946 296.3645 446.7737] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2696 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [253.4163 297.3671 279.7672 308.2462] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2697 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.6802 255.2592 460.6174 266.1631] -/Subtype /Link -/A << /S /GoTo /D (a00158_gb5d9c0becf7cb32d0aaef466839dd92e) >> ->> endobj -2699 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [227.9319 147.2581 254.2828 158.1372] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2700 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [155.6929 93.195 231.8468 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00158_g84901a5aa60040e96d272a69977edd22) >> ->> endobj -2686 0 obj << -/D [2684 0 R /XYZ 90 757.9346 null] ->> endobj -2675 0 obj << -/D [2684 0 R /XYZ 236.6686 656.6872 null] ->> endobj -2689 0 obj << -/D [2684 0 R /XYZ 90 640.0288 null] ->> endobj -2679 0 obj << -/D [2684 0 R /XYZ 236.6686 471.0392 null] ->> endobj -2693 0 obj << -/D [2684 0 R /XYZ 90 454.3808 null] ->> endobj -2678 0 obj << -/D [2684 0 R /XYZ 236.6686 332.5117 null] ->> endobj -2695 0 obj << -/D [2684 0 R /XYZ 90 315.8533 null] ->> endobj -2680 0 obj << -/D [2684 0 R /XYZ 236.6686 182.4027 null] ->> endobj -2698 0 obj << -/D [2684 0 R /XYZ 90 165.7442 null] ->> endobj -2683 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2704 0 obj << -/Length 2110 -/Filter /FlateDecode ->> -stream -xYݏ6_a巨mPWZ[kΖ|KDIErX`IÙp7C,1eQ¸\n qk_w G,H*O$HPB_DTGw+pD!7|̊&mX~quj &ů{%J,Hq)??Z>v,3Er$R$TJ LT "!T0f2f ƧQZǬɪpS3J]^@:WMQLrժrwH )F -T#f`]L bO,pTMcO_+cG;C2VZ]%< kǺ 0є;;UeS`ACcÖ!d<]i${Gz<I_ 9t͜vnsSh<%*á\*mU!1<-Jm ZQ⡑ o)1䪕); "bKıҁ BLk"PpΨɶzG]wh\TuQİ4$"1H0ZɎͧ?w:*\J -V'_w`I’ -cTZ spy3E߮TtkNDR })9*mPi)+:nvF@qU3z_/p,kOp(ҋ8̭ n_bAp)kh'QHB&Hŧݑ#>j2q~x}n{⊐:CT?v~|BRM'$9`xs9wLu98+jflp@-ӕBy*dPiY '"V̊/vַ*?2xג=Sb 0ZU~.ar#:TAdgV~s_c1֒M4(S |5%1Ol{:5&}Q#} 3CqkbQ ʆW٦q)MLup8u@?pyum(uNU֜P:d"4VjǵhYZk.*Ob}Z{ 6ABF`^,z/b11U|U7c nP -ƅœO5̪ylò(_LH]L݇X D D -~OЏμ28g}S#!uȫs qcz'[/{!yO6=cz~Y[~n.M!f9 =fft޵}% BQ.Ǽfi:kM?x;e\{_VRP^Mmo30APp>LB"Blp+XBX'Q<}\V]uk9u)F'jx_Ϙ?hrrendstream -endobj -2703 0 obj << -/Type /Page -/Contents 2704 0 R -/Resources 2702 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2701 0 R -/Annots [ 2706 0 R 2707 0 R 2709 0 R 2710 0 R 2711 0 R 2712 0 R 2714 0 R 2715 0 R 2717 0 R ] ->> endobj -2706 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 680.2836 162.0093 703.2523] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -2707 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.8747 680.2836 210.1583 703.2523] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2709 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.2593 620.4508 257.6102 631.3299] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2710 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [109.2077 566.739 186.4774 577.2694] -/Subtype /Link -/A << /S /GoTo /D (a00158_g5d56800f82bfc7bbf53bb4a659589812) >> ->> endobj -2711 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 529.4341 211.653 552.0292] -/Subtype /Link -/A << /S /GoTo /D (a00158_gc7cc1dba1819f7fcdaa9ff9eed5a08f4) >> ->> endobj -2712 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 454.077 135.0008 477.0457] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2714 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [301.5354 394.2442 327.8863 405.1233] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2715 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [282.6755 238.611 418.4257 249.5149] -/Subtype /Link -/A << /S /GoTo /D (a00158_g10d9a9201cba1a6db623284c475c6cea) >> ->> endobj -2717 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [228.4897 147.2803 254.8406 158.1595] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2705 0 obj << -/D [2703 0 R /XYZ 90 757.9346 null] ->> endobj -2627 0 obj << -/D [2703 0 R /XYZ 236.6686 655.7754 null] ->> endobj -2708 0 obj << -/D [2703 0 R /XYZ 90 638.937 null] ->> endobj -2674 0 obj << -/D [2703 0 R /XYZ 236.6686 429.5689 null] ->> endobj -2713 0 obj << -/D [2703 0 R /XYZ 90 412.7304 null] ->> endobj -2628 0 obj << -/D [2703 0 R /XYZ 236.6686 182.605 null] ->> endobj -2716 0 obj << -/D [2703 0 R /XYZ 90 165.7665 null] ->> endobj -2702 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2720 0 obj << -/Length 1889 -/Filter /FlateDecode ->> -stream -xZo6_!`/60žMZ,uч[)'K~G%QNևbCQNw?wC< 'Dq[Mw LyV|{;@x#&2#|Z)/t͎SY@7g> -R@A "DnG -a̤'CXb^xR;»(< H2Jj RIH`xDBD0qԪ Q | hJuՍ3&߰<;,2vENg -eoaV -5L2hVFR :&G&2OFB6n60z"FÄiԞud8`b/G%ed9֤#A'C}"> endobj -2722 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 648.0568 162.0093 671.0255] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -2723 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.8747 648.0568 210.1583 671.0255] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2725 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [256.7339 570.3345 283.0848 581.2137] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2726 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [260.0953 528.1725 365.4795 539.0765] -/Subtype /Link -/A << /S /GoTo /D (a00158_g2ebfe5c8a7f3173714efdf2df74fc392) >> ->> endobj -2728 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [259.9318 418.3349 286.2827 429.2141] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2729 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 364.5914 154.6371 375.1217] -/Subtype /Link -/A << /S /GoTo /D (a00158_g26ae707402e494f3895a9f012a93ea29) >> ->> endobj -2731 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [254.3228 266.7089 280.6737 277.588] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2732 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 212.5917 154.6371 223.4957] -/Subtype /Link -/A << /S /GoTo /D (a00158_g26ae707402e494f3895a9f012a93ea29) >> ->> endobj -2733 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 120.9622 162.0093 143.9309] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -2734 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.8747 120.9622 210.1583 143.9309] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2721 0 obj << -/D [2719 0 R /XYZ 90 757.9346 null] ->> endobj -2681 0 obj << -/D [2719 0 R /XYZ 378.1965 605.8182 null] ->> endobj -2724 0 obj << -/D [2719 0 R /XYZ 90 588.8207 null] ->> endobj -2676 0 obj << -/D [2719 0 R /XYZ 236.6686 453.8186 null] ->> endobj -2727 0 obj << -/D [2719 0 R /XYZ 90 436.8211 null] ->> endobj -2677 0 obj << -/D [2719 0 R /XYZ 236.6686 302.1926 null] ->> endobj -2730 0 obj << -/D [2719 0 R /XYZ 90 285.1951 null] ->> endobj -2629 0 obj << -/D [2719 0 R /XYZ 236.6686 96.348 null] ->> endobj -2718 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2737 0 obj << -/Length 1898 -/Filter /FlateDecode ->> -stream -xڵYn6SEfy)JKY!m( L}?ERN YOqxCsmgعogD//a}i^f/ P pV7A:9x } HPU&#m|oF/- &T"/D-̣@8VβqV/S@}V&fm9|jѮ8SO oY+GP?4W:߯Y|~enZ7Fӆ"DnR˚ lz~A^,,#X>G@ -E"H0YQ1Z Bm5`;;/緙˪+}T*i qݜ!څ@( $iEHΓƊ:*"cn~D&ۑm^k2%иk)C`تK-ؔK L^K9r5>ߎ71rO|7MX 8R( ظ܄6yp1l1f i>"<8Y۞q".fm3lfz- Ar3R9lbS1a.eFUCd10T[K㉂:ź -?ǘڵaRݶCQ?\PӦQ8IjXjKٵrqpYx~;03VmjS00pykd&ΫSjȺwh4at>#Bw4C{Ԭj$S'kO%mI dr$j3{u; 0Q{ g -7b~#xr8>9Ыlؔy *TecK|Dt$[mFJ:\N@sʢhbFoYԔ4szTjMB83TQO)XpK8jqiʋt=i#!**O]08^HCBt|ANn@hY M` ? Okݩ p?:]]y:}{PHY@ooK{@ c2ըԬl]ygSbr+KsTlg|/qn/CIR Q"k-4̔<2K,%@#.%qWF @AQ~BV]ճ+ϥj X)[>y#mvZlJD8 -v?L22:y![(u3mĄOU!HٻQpDa>,7A^֝DE*4SNޞUI:^Q@ w٪F:QVG5U.)ʆC i2ЦжZI>ؒ> Yu9_]|&4}ٱ01._Dz#.Z?AZ)8f6]yx'^ߤ%e/F1J뱼m|8ο=dendstream -endobj -2736 0 obj << -/Type /Page -/Contents 2737 0 R -/Resources 2735 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2701 0 R -/Annots [ 2740 0 R 2741 0 R 2743 0 R 2744 0 R 2745 0 R 2747 0 R 2748 0 R ] ->> endobj -2740 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [238.4524 726.9533 264.8033 737.8324] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2741 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 567.8253 135.0008 590.794] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2743 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [262.8109 509.031 289.1618 519.9102] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2744 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 370.1174 162.0093 393.0862] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -2745 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.8747 370.1174 210.1583 393.0862] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2747 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [274.8955 313.1712 301.2464 324.0503] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -2748 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [420.3578 271.0632 513.9963 281.9672] -/Subtype /Link -/A << /S /GoTo /D (a00158_g55ce98ea4d6f22e9d5068b904d4d2447) >> ->> endobj -2738 0 obj << -/D [2736 0 R /XYZ 90 757.9346 null] ->> endobj -2739 0 obj << -/D [2736 0 R /XYZ 90 739.9346 null] ->> endobj -2673 0 obj << -/D [2736 0 R /XYZ 236.6686 544.1142 null] ->> endobj -2742 0 obj << -/D [2736 0 R /XYZ 90 527.5172 null] ->> endobj -2682 0 obj << -/D [2736 0 R /XYZ 236.6686 348.2544 null] ->> endobj -2746 0 obj << -/D [2736 0 R /XYZ 90 331.6573 null] ->> endobj -2735 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F52 1229 0 R /F14 636 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2751 0 obj << -/Length 564 -/Filter /FlateDecode ->> -stream -xڥTMs0+tʮ[;i2Lg)4bR'@†Bsp}p DKM-g>°tE7wKbd.B*2mbEQ')M\5ձZ&q~T9I90+bLe%]+liE@6N2ʭ-"xG?8~;0`.5\QV̢FJ0WX -5ќS r:?MQ挑a^D=UW%jЪy@TrVĕG͔ɹk3& M}Z7o);ӒSMKOM1}O!t+]RzH }sG}V*7fWfPZ}܃&&HB;b\%jyu:Dʸ+IU#]h?Dʛk'֏}10}syGG \{ٌ;|ta "d؄tB2AC  Pۄɸ -=}]4 obb?S?*I+endstream -endobj -2750 0 obj << -/Type /Page -/Contents 2751 0 R -/Resources 2749 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2701 0 R ->> endobj -2752 0 obj << -/D [2750 0 R /XYZ 90 757.9346 null] ->> endobj -2749 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2755 0 obj << -/Length 2441 -/Filter /FlateDecode ->> -stream -xڵZ[6~0Xsy4E[SG36ˬew=IeR- t|Ï\v;;/pawK0I,gFh1 1tqn?Xa#HʵO"+1O_\k>:TOm~ֶmNƹ`uD\mwWݬO-0Ģnvg)ef#<\x9ou>K"lyo}|\RxOGGg䝳$ѯe]eawr#>ĭYΒBrosIwod/CUlw }05)\rƩ>:=yO>;*i]}x $S82TbQU}_OG6HOCO}eЃ޶im7>D#/ֆ? )B#8B/tU4]/OT$13UBR daE:h#B!)QSC Χv>VHpNP%'Aq5A4$a\3MbT:j` F@,sz -,RWZLq]+v. w4[]_ƮM ['߬;l]bSyv{3Vc aNP[k>^Pfs_D/\lGaHTOAی,(usTՎ%HH, -gP%^ r %.I!%a]r@tN. ˯m&zr$\ -OW4 <.l{tZRjbW6(Y%uc0G48(.ʲ dd-ȮR}tWa|[($ӹ ׻VcԿyޮcW 9HA< _r#*Ƿ. !{rL$d>Djen mlwN^j(,Mb@F -(,U - oY -} R(B -/C|Het 9 󌦷IucttNI|Nn$vNLvo~@xkAAs_ -e?<%/'1:SQu07uEXoqCu|jgW;δ4n]u3* -ZY ĀP P1FC% !MsgJ(/y튨arJM!T e 6=k$(SC ~v u$qyBJzߚBealdw]\q h]̥ 6ct&mt0Kc[Na[/U'ٮӰ*] KX3${P}h˒̯DqR_}D)UcX )3~<1ӯ0(b -K&v[ړ 4-*JAwikV(tRɨ;3R~ %'0NlR2E&K~wx&G&k0c{Hao'W/+^(ng/D#[ϜA%x\ j-A3mkB&p; 2$7OY#Ư/Yv%(GUWأN[\_S:lCנlzS};~T'گmkQ7endstream -endobj -2754 0 obj << -/Type /Page -/Contents 2755 0 R -/Resources 2753 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2701 0 R -/Annots [ 2759 0 R 2760 0 R 2761 0 R 2762 0 R 2763 0 R 2765 0 R 2766 0 R 2768 0 R 2771 0 R 2773 0 R 2774 0 R 2776 0 R 2777 0 R 2778 0 R 2779 0 R 2780 0 R 2781 0 R 2782 0 R 2783 0 R 2784 0 R ] ->> endobj -2759 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [304.7882 642.9278 343.8612 653.8318] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2760 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [202.7163 630.9727 260.5985 641.8766] -/Subtype /Link -/A << /S /GoTo /D (a00159_gfe5e93119035e14cc485760a176249ba) >> ->> endobj -2761 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [413.5434 630.9727 467.5403 641.8766] -/Subtype /Link -/A << /S /GoTo /D (a00159_gceb952d27de8125d5146ac0bee325b8f) >> ->> endobj -2762 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [268.7434 593.3114 307.8165 616.2802] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2763 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [124.4207 581.3563 163.4938 592.2602] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2765 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 486.8218 162.5475 495.6685] -/Subtype /Link -/A << /S /GoTo /D (a00120) >> ->> endobj -2766 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 447.8916 163.1055 456.7383] -/Subtype /Link -/A << /S /GoTo /D (a00121) >> ->> endobj -2768 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 363.8772 196.4299 373.8049] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -2771 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 306.282 227.9818 316.8123] -/Subtype /Link -/A << /S /GoTo /D (a00159_ga680bc3f3a1a8a6aec20fe729d138cb8) >> ->> endobj -2773 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 293.2926 223.0005 303.8229] -/Subtype /Link -/A << /S /GoTo /D (a00159_g720ac440c7b24bdd07c53ba146e36fb2) >> ->> endobj -2774 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 280.3032 178.1689 290.8335] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2776 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 197.3698 179.0853 207.9001] -/Subtype /Link -/A << /S /GoTo /D (a00159_gd58a6c7e62ae59bf7a016ded12ca2910) >> ->> endobj -2777 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [207.5282 197.3698 265.4205 207.9001] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -2778 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [304.8984 182.3375 338.7573 192.2427] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2779 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.3873 158.4396 192.6345 168.9699] -/Subtype /Link -/A << /S /GoTo /D (a00159_gfe5e93119035e14cc485760a176249ba) >> ->> endobj -2780 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [221.0774 158.4396 278.9697 168.9699] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -2781 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [357.8358 143.4073 391.6946 153.3125] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2782 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 119.1358 180.9085 130.0397] -/Subtype /Link -/A << /S /GoTo /D (a00159_gceb952d27de8125d5146ac0bee325b8f) >> ->> endobj -2783 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [209.3513 119.1358 267.2437 130.0397] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -2784 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.2067 104.4771 431.0655 114.3823] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2756 0 obj << -/D [2754 0 R /XYZ 90 757.9346 null] ->> endobj -2757 0 obj << -/D [2754 0 R /XYZ 90 739.9346 null] ->> endobj -150 0 obj << -/D [2754 0 R /XYZ 90 739.9346 null] ->> endobj -2758 0 obj << -/D [2754 0 R /XYZ 90 716.7313 null] ->> endobj -2764 0 obj << -/D [2754 0 R /XYZ 90 503.7525 null] ->> endobj -2767 0 obj << -/D [2754 0 R /XYZ 90 381.8888 null] ->> endobj -2769 0 obj << -/D [2754 0 R /XYZ 90 324.8962 null] ->> endobj -2770 0 obj << -/D [2754 0 R /XYZ 90 324.8962 null] ->> endobj -2772 0 obj << -/D [2754 0 R /XYZ 90 310.267 null] ->> endobj -2775 0 obj << -/D [2754 0 R /XYZ 90 215.9841 null] ->> endobj -2753 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2791 0 obj << -/Length 2035 -/Filter /FlateDecode ->> -stream -xڵZY6~0X3%nч4G.VFm9ۢC$ -d)\|K#sȐb\ ogN`~|s3{BJR9$H%t~~x{3_p_j_խy;e=Gx ͋ٳo5S0I^5bSRtqn'/Ltļ%)!]D+1^<`L8PN{4rĸKBb=o`b_]WǶ9Y|է=vO:,]Su=n.&y6"GqҏM#^&Nr0aP.W\+7EcFګwO~ܻ}}WNu]y .;DJH kpRjJ/.7NLGBK7͟??ÝJ,i&"0X]Mzxخ)#(h xf8rJZt2 g _Q H@ì*wEcUa\,dHRλ/o6[]&*R63tNjmF1kVv/^/+L0OMSXاm1ʁ,4/Sn_ƈ"|P[]|:aRj̸\wy "1Sܶzbq>;[ct^?.*A(<{Xꁣeͻ=ӻBZ!ea\.EA~$Q4Dŷ`Se:[X/H,ւBâB buEVE K9տZB-omCsh`SAsa$\oIb}cjG={ a0psfѮ -lv=DW ȯ]}EjTN8 _,Ml]]kT&rDxTJy M+7X1$vkfпۺʇU>7n/s(1 v>?3{z~ni??3y=7=zyP21hn.F33j!6rvCg!$0gU0C.K}C1ɅCc?GnPF6870<4 ylNe#j7+b|6OQĊ.D's99A9rg(q%s,C|l*a}q&KvudLiy7$|=g@9FM{QNK\ȡǓIp=8e),-%̾\>@(7МJρY -D -CM+gH{듦S?bF)=bLFL1iD񯪻:O^_wW x67:2(NO ĢOO܏6 3TI~/P!<-|GXj\Pa߰P\P%5j/] &9 : E&-hHOvզGjVſ5vq~ED™0Y8AbrSS()9d|-P ɖxLz\nÎsM|܌S &6>i(R`6} :cINXD> endobj -2795 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [324.7453 474.4264 376.5504 497.3951] -/Subtype /Link -/A << /S /GoTo /D (a00159_gd58a6c7e62ae59bf7a016ded12ca2910) >> ->> endobj -2796 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.3663 474.4264 437.2485 497.3951] -/Subtype /Link -/A << /S /GoTo /D (a00159_gfe5e93119035e14cc485760a176249ba) >> ->> endobj -2797 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [454.1911 474.4264 508.1881 497.3951] -/Subtype /Link -/A << /S /GoTo /D (a00159_gceb952d27de8125d5146ac0bee325b8f) >> ->> endobj -2798 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 410.341 142.7416 431.2524] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -2801 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [244.1409 324.7746 304.8028 335.3648] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -2802 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [348.807 300.0021 387.8801 310.906] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2803 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [285.2161 264.2545 324.2892 287.2232] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2804 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 230.5641 142.7416 251.4756] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -2806 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [234.3477 153.4162 295.0096 164.3053] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -2807 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [391.1676 128.9426 430.2407 139.8465] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2808 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [295.4576 93.195 334.5307 116.1637] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2792 0 obj << -/D [2790 0 R /XYZ 90 757.9346 null] ->> endobj -2793 0 obj << -/D [2790 0 R /XYZ 90 739.9346 null] ->> endobj -2785 0 obj << -/D [2790 0 R /XYZ 90 723.1038 null] ->> endobj -2794 0 obj << -/D [2790 0 R /XYZ 90 723.1038 null] ->> endobj -2799 0 obj << -/D [2790 0 R /XYZ 90 371.2512 null] ->> endobj -2786 0 obj << -/D [2790 0 R /XYZ 90 344.9853 null] ->> endobj -2800 0 obj << -/D [2790 0 R /XYZ 90 344.9853 null] ->> endobj -2787 0 obj << -/D [2790 0 R /XYZ 492.0776 188.3053 null] ->> endobj -2805 0 obj << -/D [2790 0 R /XYZ 90 172.6296 null] ->> endobj -2789 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F23 482 0 R /F52 1229 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2812 0 obj << -/Length 1157 -/Filter /FlateDecode ->> -stream -xW[o6~d3ǻDHV4@[[ L'd)ӥi{(RdR  Jx!I!A(BArZ~_7n72[ A kfKa ^7>P5AnCi;*:"|߬bg`>YaT$'(EӊS}d?VrD`=N02z4"Q -xHH:! - A2xsQ1%4_gtG#FH["k]ڏp>eEW7vVwnAZйg@Da ELgh;D˜A4j]ΫV%2GMgSaFބ(Q:O\R4ymǢ4bntq7cw3&;)jDWձ2'cAN떌+ j RB8ƥ:=A^NyT5~#qva)pD2@]ֱ1s\Q͑a;gnӈQ)N3k>3rӣ{Ҍ6#Vt2`e1vsvmhfEm8^ Bv%SlYRvm21w&ݪ;#(gn}D!a1%xf]6I} jD2!☒pd_ygR!gLQz @bsZf;:B‰ݟ,fH-laƕp/ }fz2ٌJ.Oi/(2} -P I/7OS28U46,=h^'/W`8!+ g6e|plS۞%=X9nPټ=jqaVȱҷ},[ZTϐl~f,[[vu힬Yrؖ",_|!E)faNO7 B{]0faA'?hߚyeq -ΕKJ3t傦N01H!UGQ,00[)4X%M1n׹.'nnpc}DwS͞VBvU|ޥ_6.?endstream -endobj -2811 0 obj << -/Type /Page -/Contents 2812 0 R -/Resources 2810 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2809 0 R -/Annots [ 2814 0 R 2816 0 R 2817 0 R 2818 0 R 2819 0 R ] ->> endobj -2814 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 641.7124 142.7416 662.6238] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -2816 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.1396 562.6724 291.8015 573.2626] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -2817 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [285.903 537.8999 324.976 548.8038] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2818 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [285.2161 500.2956 324.2892 523.2643] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -2819 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 464.7486 142.7416 485.66] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -2813 0 obj << -/D [2811 0 R /XYZ 90 757.9346 null] ->> endobj -2788 0 obj << -/D [2811 0 R /XYZ 407.944 597.5968 null] ->> endobj -2815 0 obj << -/D [2811 0 R /XYZ 90 581.5869 null] ->> endobj -2810 0 obj << -/Font << /F29 499 0 R /F52 1229 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2822 0 obj << -/Length 2497 -/Filter /FlateDecode ->> -stream -xڽZm6}wIkE4&bnsIE&u^g3  ?2=y /]?n=f$ϽIn׿%"bI~q ?ϛ۷3K5jB=iI4~ox^aĪR̞ u=^q̗ǫ~ aS$jHaʅ;Eqf*!z1K&R"DXowZVqo PM3: =-ʢSRbk}0c;>wӓ }wlG=nZöG_֞vUz:D -$)gހ$Vm 2nxRmC|yxu=b#ZY~ad=nGlJV2TQV$PFLJtxИ,~840nůX`OB8,\&9nnx|\|MMr~?qrHݷFn/ߨxگoPvgzr_h0ߥ-RSu2aт$PWyYdaKw@XCQA*x1`ǧ]شG__5ٯO<4`%Q!hluuLdXzUYKvp#qVWJ>`E!g-*ڂ -KŘjB Nj|ΆH D@fҴfa - -va"(IY J -}.rfaVmb6E -m4<&{~|C#FX EZI#L/גӛ!y -6DrbaX$} %+'S$S4/gF$Wݧ7wnn{]ܝJT=aQ(T*tOO;'K&/W5=;!)qOUfTNo~QzUWǂv-= F)ק'(6rNn-##9s=E3&!LR勣t]\Sؒ!lտ>\~xs1jUUz )QO[ O"Kq]NРRE{jS:( NAmKXt&z3*ND#*S+"+o 0v~.:0ewéy]Ӓ> 켳S i3g=.T28tВ}퉅e+0Qu2zMf{BXuj~4'TN} iD|(;cŮИLug-^.Z+^[T/*h̻ bv]szATbZpщzaa}ط{~8 WEž)9;uiw4N^7HS9=f*iGP -.z!'[S /tЩ40eOzVÐqռx=3i -^V/b.sgCOJG`jNͯמ)uڊHmSPw8rKH}J)OJ -'t [X;/fY%VR6uxx"KDFݫ"u)D_&*PlhPKnM??ުt_՟[ʾxڹZqNMoнiCw4?YOaendstream -endobj -2821 0 obj << -/Type /Page -/Contents 2822 0 R -/Resources 2820 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2809 0 R -/Annots [ 2825 0 R 2826 0 R 2827 0 R 2829 0 R 2830 0 R 2833 0 R 2835 0 R 2837 0 R 2839 0 R 2842 0 R 2843 0 R 2844 0 R 2845 0 R 2846 0 R 2847 0 R 2848 0 R 2850 0 R 2851 0 R 2852 0 R 2853 0 R ] ->> endobj -2825 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.9274 654.5304 448.5608 665.4343] -/Subtype /Link -/A << /S /GoTo /D (a00160_g66d19181ad5fe8b8f7c84d1f1d46a2ec) >> ->> endobj -2826 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [236.6088 642.5752 297.2509 653.4791] -/Subtype /Link -/A << /S /GoTo /D (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) >> ->> endobj -2827 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.2771 612.9957 194.4771 623.8996] -/Subtype /Link -/A << /S /GoTo /D (a00160_g6d9751d534453425c7a5a215d1d4414c) >> ->> endobj -2829 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 556.6105 162.2985 565.4572] -/Subtype /Link -/A << /S /GoTo /D (a00103) >> ->> endobj -2830 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 516.8967 161.7405 525.7433] -/Subtype /Link -/A << /S /GoTo /D (a00102) >> ->> endobj -2833 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 430.0643 237.9445 440.9683] -/Subtype /Link -/A << /S /GoTo /D (a00160_g3d768e989e308144190ae1a5ddfa9726) >> ->> endobj -2835 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 417.0567 174.2837 427.587] -/Subtype /Link -/A << /S /GoTo /D (a00160_g070d2ce7b6bb7e5c05602aa8c308d0c4) >> ->> endobj -2837 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 404.2781 216.3555 414.2058] -/Subtype /Link -/A << /S /GoTo /D (a00160_gecf13b8dc783db2202ca5c34fe117fc3) >> ->> endobj -2839 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 390.8969 231.4091 400.8246] -/Subtype /Link -/A << /S /GoTo /D (a00160_g221d37ccde7e3fd0dd2c2eb0a6b15493) >> ->> endobj -2842 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 331.4782 194.0092 342.3822] -/Subtype /Link -/A << /S /GoTo /D (a00160_g7c5359305008e9183b18d6ab75f568bf) >> ->> endobj -2843 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 318.097 188.4803 329.001] -/Subtype /Link -/A << /S /GoTo /D (a00160_g6d9751d534453425c7a5a215d1d4414c) >> ->> endobj -2844 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [243.4737 318.097 268.161 329.001] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2845 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 278.7567 182.941 289.2871] -/Subtype /Link -/A << /S /GoTo /D (a00160_gdf916e0c752f5cda70d0bddb2be422ba) >> ->> endobj -2846 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [186.7567 278.7567 211.444 289.2871] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2847 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 238.6693 138.5977 249.5732] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2848 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.5678 238.6693 214.2533 249.5732] -/Subtype /Link -/A << /S /GoTo /D (a00160_g3191066cf8f76bd00b6843b77c37068f) >> ->> endobj -2850 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 199.329 178.5273 209.8593] -/Subtype /Link -/A << /S /GoTo /D (a00160_gb50f78bbf36d912d69f6c1685d0b40e3) >> ->> endobj -2851 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 159.2415 138.5977 170.1454] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2852 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.5678 159.2415 205.5661 170.1454] -/Subtype /Link -/A << /S /GoTo /D (a00160_g66d19181ad5fe8b8f7c84d1f1d46a2ec) >> ->> endobj -2853 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 119.5276 187.9223 130.4316] -/Subtype /Link -/A << /S /GoTo /D (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) >> ->> endobj -2823 0 obj << -/D [2821 0 R /XYZ 90 757.9346 null] ->> endobj -1315 0 obj << -/D [2821 0 R /XYZ 90 739.9346 null] ->> endobj -154 0 obj << -/D [2821 0 R /XYZ 90 739.9346 null] ->> endobj -2824 0 obj << -/D [2821 0 R /XYZ 90 719.2952 null] ->> endobj -2828 0 obj << -/D [2821 0 R /XYZ 90 573.933 null] ->> endobj -2831 0 obj << -/D [2821 0 R /XYZ 90 449.444 null] ->> endobj -2832 0 obj << -/D [2821 0 R /XYZ 90 449.444 null] ->> endobj -2834 0 obj << -/D [2821 0 R /XYZ 90 434.0494 null] ->> endobj -2836 0 obj << -/D [2821 0 R /XYZ 90 421.0417 null] ->> endobj -2838 0 obj << -/D [2821 0 R /XYZ 90 408.2632 null] ->> endobj -2840 0 obj << -/D [2821 0 R /XYZ 90 350.858 null] ->> endobj -2841 0 obj << -/D [2821 0 R /XYZ 90 350.858 null] ->> endobj -2849 0 obj << -/D [2821 0 R /XYZ 90 218.4785 null] ->> endobj -2820 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2861 0 obj << -/Length 1851 -/Filter /FlateDecode ->> -stream -xڭYKs6W(D($}kGI4qOICIL* yс .@~dy$"0.W3b^+Wo/i2OP"_6#H%t~ X.WE4^ub[2~^l,j_˯of/[.$Qj>-fKb1HSf_OqM GJvIPrE0ƋuiQUKQSǒE%٩8 b4 DQUΔ[!k8& -L`#}:62R]! }_0fڝp87"tJpXdeY&6 -b#" F " ]]}7;wt޼W~'0|rP׋@\rHX+r X!FA%XZY~)%ҡ%^QD8..Q,$D+ -7Dcq,y Y|~LXfo)jgjn |̘ܜn;,d"Yd!Q)H?!K%16X豐&S&b6,+j)Lm]ŒuO.$QI8+5?MoShai|$I+JLP -(#.:"=曡ktޤij;=\ VSo}\J\v_T%RՊl>Sc;vM%W8F9h8'+jMkg m3cP,9Wro -2 =4|ϋ>4zLqusOf}GY`H?7kćS8[p*akd-{:GϤ_7mG4LH$Ȩ2g':bcNb*Vf+jF׬܈FxiT?Zf>e@8t;ӫq:*ٖKg)*BugC$Sv{Sԇm@%$O`:^p]HT?Vbb<31v!1_@'ƽ%Zb)&d1G >r CxY+r;;ˈ8I:&t=eB>193/tyC -6jo E-gXZ{%*c7g`E!"_\ 0IKe@>(j?c]wi,Aiā~,0 5-Rnԫ#bhh̳A>ZykQgfg:d -.'MF|ӄӸZ|kn(7AMp5_]Ve>; /TbӘ0~L? Sվ>NGXkcߪ-܍tnu|: u HTna0H!Uescu_G&E,n.(tWYieY-ֿmBڼS_QvEͭ,͝S5x6Ksendstream -endobj -2860 0 obj << -/Type /Page -/Contents 2861 0 R -/Resources 2859 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2809 0 R -/Annots [ 2865 0 R 2866 0 R 2867 0 R 2869 0 R 2870 0 R 2871 0 R 2873 0 R 2874 0 R 2875 0 R 2877 0 R ] ->> endobj -2865 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [206.3331 702.4599 232.1263 713.05] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2866 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 599.8741 139.3246 622.1255] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -2867 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [159.1901 599.8741 192.3555 622.1255] -/Subtype /Link -/A << /S /GoTo /D (a00047) >> ->> endobj -2869 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [269.7449 518.2645 295.538 529.1536] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2870 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 360.3144 139.3246 382.5658] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -2871 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [159.1901 360.3144 192.3555 382.5658] -/Subtype /Link -/A << /S /GoTo /D (a00047) >> ->> endobj -2873 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.345 313.9634 157.1381 324.8426] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2874 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 199.7115 139.3246 221.9629] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -2875 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [159.1901 199.7115 192.3555 221.9629] -/Subtype /Link -/A << /S /GoTo /D (a00047) >> ->> endobj -2877 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.345 118.1118 157.1381 128.9909] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2862 0 obj << -/D [2860 0 R /XYZ 90 757.9346 null] ->> endobj -2863 0 obj << -/D [2860 0 R /XYZ 90 739.9346 null] ->> endobj -2857 0 obj << -/D [2860 0 R /XYZ 90 722.6705 null] ->> endobj -2864 0 obj << -/D [2860 0 R /XYZ 90 722.6705 null] ->> endobj -2856 0 obj << -/D [2860 0 R /XYZ 358.4819 555.6542 null] ->> endobj -2868 0 obj << -/D [2860 0 R /XYZ 90 536.7606 null] ->> endobj -2858 0 obj << -/D [2860 0 R /XYZ 90 349.9037 null] ->> endobj -2872 0 obj << -/D [2860 0 R /XYZ 90 333.1669 null] ->> endobj -2854 0 obj << -/D [2860 0 R /XYZ 278.4221 155.4916 null] ->> endobj -2876 0 obj << -/D [2860 0 R /XYZ 90 136.598 null] ->> endobj -2859 0 obj << -/Font << /F29 499 0 R /F14 636 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2880 0 obj << -/Length 1378 -/Filter /FlateDecode ->> -stream -xڭXs8_L'&N3={i;b S)M -IƾH-Ïx{dEpW'e#۪&XH/߰&1 0{pC6YL>7|F}`BN0oBb0#p%AK11#kE.LQ( {b%܇"Ğ|H._Ui'ybֳ5in*UIfL^Y=PlXp-ߚ Q^]f o>|0u)Hc.KtU+50 M?& <HJALJ25\weބ~@qdbBUOK#F9::%MbXvr|GJ|o&G<;S{܌&m!e~pzrj*C:UAS5H`egb} 1!;G{1PB|٘?n~'znc>W|Wbv:>1D<=,i"hV m;2Q.2++PQhHM._/D6͙endstream -endobj -2879 0 obj << -/Type /Page -/Contents 2880 0 R -/Resources 2878 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2809 0 R -/Annots [ 2882 0 R 2883 0 R 2884 0 R 2885 0 R 2887 0 R 2888 0 R 2889 0 R ] ->> endobj -2882 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [277.7877 706.007 338.4298 716.9109] -/Subtype /Link -/A << /S /GoTo /D (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) >> ->> endobj -2883 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 619.5604 139.3246 641.8119] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -2884 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.3134 619.5604 175.4788 641.8119] -/Subtype /Link -/A << /S /GoTo /D (a00047) >> ->> endobj -2885 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [195.3443 619.5604 242.985 641.8119] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -2887 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 424.9723 139.3246 447.2237] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -2888 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.3134 424.9723 175.4788 447.2237] -/Subtype /Link -/A << /S /GoTo /D (a00047) >> ->> endobj -2889 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [195.3443 424.9723 242.985 447.2237] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -2881 0 obj << -/D [2879 0 R /XYZ 90 757.9346 null] ->> endobj -2855 0 obj << -/D [2879 0 R /XYZ 316.2991 559.1605 null] ->> endobj -2886 0 obj << -/D [2879 0 R /XYZ 90 542.4334 null] ->> endobj -2878 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2892 0 obj << -/Length 2408 -/Filter /FlateDecode ->> -stream -xڭZMs6Wj/rU' Ojfk6ٱohK% $HM`|h -Y)Ejs«g1o?RRHe4[?u2%tumM^? - ŗ|(XVmOnKh];^mW1%;(EW+Nq?^j l}#Cm)7ۗ! -!ݗ{ۛc?MYmZ7DԆXBP`ܚؔͦ޿Ȁ!\"ʄX/tLjٯ=mN7,n 'qƴNۏo@Mަ-mQW_.'gUmu uHMq鈔^!(T_|ڲ9S9(&̋{nW s0nNTǠٞF<Eӿ76u!T(AmY$4:a)tO`W3y,KmfY Yٴͤ:cQ:G?Bj7}\ -M#!$d(c.u,P)^( -gو: 0ffɩ3G|}]Csl_.AdPd\!I2]@J&B#Fd++ ^f -Ε\9R8weewmBz6!8Y5NG%|nq -@Sea r+rkȭ܊u-Nq[Twy* jY.qG~> }(d.eҌKhޛ>os}Mz4Z%udF/;mֆ`9!k'm؍$D,j=RRr!{4jReHy=@Le KcT:}޿ c@3Ӝ煶][n~}cG(xģP zp y0s) ->Ҽu}amF||#k+̮?W{-RivWݔCLӣ!KFcØ#O'%7IMo4M>"&zOu~wAc2Ni< 3ۓ>t٘t4?5sI2>QooCY׍xX_#Q|yXYX:b^y]:$_P_nv~y@CRyB_q1%2!l^d"=Ndw%"Z77XQAĔϓ|@Lb KKc$:}ȗHw#k%~))8i%'`Q)v%PوrJhļ &1zBy>KصBӰ+S31y(#bTIDv|@DcKjehxhp#k5f4N[Ġ1Xq;|b[XZqi.x@D]18qbO )s=pgt> 51zy>K4صyh'vĠɹmjWV(Q(>?XRXX:)b^Ry]RE> U"FܑKOyu+Dje,XT\DhFos׍fW%Oԗ]!>:`ڽh;dse7K7m,pfTQ5}8N'Hl -B(O--\ӫϔ'%{o0k xfȽ$^T5BXT)tq a̳OZҒ=Nr7-{q/NEwpG"IEFQ6̝y>?<V=uiKT{uoN=pTX<A)Ĥ#@n\fPR,&tA$cSVűi0g)N`ODnaGGn6/^My-|*y& sUO%C/%`L&^ KH`Gy]ykяK:rbkxʛˎ{YmmX&y< $jD=ߣj=c<{~+b2mǶf69Cw8[,O4mQJp#",/>ݮ!L> endobj -2896 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 575.9645 157.9746 586.8684] -/Subtype /Link -/A << /S /GoTo /D (a00105) >> ->> endobj -2897 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 539.0153 157.4166 549.9192] -/Subtype /Link -/A << /S /GoTo /D (a00104) >> ->> endobj -2899 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 459.0226 183.1495 468.8008] -/Subtype /Link -/A << /S /GoTo /D (a00085) >> ->> endobj -2902 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 404.9565 217.4713 414.8842] -/Subtype /Link -/A << /S /GoTo /D (a00161_g029256bc17a12e1e86781887e11c0c7d) >> ->> endobj -2904 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.6302 367.0311 204.6385 377.935] -/Subtype /Link -/A << /S /GoTo /D (a00161_gcff75c8c930abd6ff168e85373a4eb92) >> ->> endobj -2906 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 344.0533 176.5052 353.981] -/Subtype /Link -/A << /S /GoTo /D (a00161_g3212e70c55244608ac16316888c354f0) >> ->> endobj -2908 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 332.0544 176.4952 341.9821] -/Subtype /Link -/A << /S /GoTo /D (a00161_g6cda47c85ce1b58b501b44ac9cccc50e) >> ->> endobj -2910 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 319.0793 194.2087 329.9832] -/Subtype /Link -/A << /S /GoTo /D (a00161_gf7dd2757d1e766f65b01ba7c91c660a0) >> ->> endobj -2912 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 308.0567 173.7357 317.9843] -/Subtype /Link -/A << /S /GoTo /D (a00161_g34b924954ba5707d536df28d71a80d39) >> ->> endobj -2914 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 296.0578 173.7357 305.9855] -/Subtype /Link -/A << /S /GoTo /D (a00161_g9e97c58fe35f750ad192774be9408ac8) >> ->> endobj -2916 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 284.0589 173.7357 293.9866] -/Subtype /Link -/A << /S /GoTo /D (a00161_g28cf9765e4b57451af559ab988ad7160) >> ->> endobj -2918 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 272.06 173.7357 281.9877] -/Subtype /Link -/A << /S /GoTo /D (a00161_g17ccd786400fd08b941e11046df1668f) >> ->> endobj -2920 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 216.0414 179.6335 226.9453] -/Subtype /Link -/A << /S /GoTo /D (a00161_gb1fc692a2700b7a51517724364683f67) >> ->> endobj -2922 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 179.0922 173.556 189.9961] -/Subtype /Link -/A << /S /GoTo /D (a00161_g64807ba7c221ddf735572d05021539f2) >> ->> endobj -2924 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 167.0933 189.0379 177.9973] -/Subtype /Link -/A << /S /GoTo /D (a00161_gbc331f73107958428bf1c392ba19b6f4) >> ->> endobj -2925 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 155.0945 197.8948 165.9984] -/Subtype /Link -/A << /S /GoTo /D (a00161_g37e3103b9591790d484a450525739661) >> ->> endobj -2926 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [171.4857 118.1453 216.0979 129.0492] -/Subtype /Link -/A << /S /GoTo /D (a00161_gf0349a8481565e80f55a751e2b408d6d) >> ->> endobj -2927 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [446.0722 118.1453 470.7595 129.0492] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2893 0 obj << -/D [2891 0 R /XYZ 90 757.9346 null] ->> endobj -1316 0 obj << -/D [2891 0 R /XYZ 90 739.9346 null] ->> endobj -158 0 obj << -/D [2891 0 R /XYZ 90 739.9346 null] ->> endobj -2894 0 obj << -/D [2891 0 R /XYZ 90 719.4886 null] ->> endobj -2895 0 obj << -/D [2891 0 R /XYZ 90 593.9619 null] ->> endobj -2898 0 obj << -/D [2891 0 R /XYZ 90 477.02 null] ->> endobj -2900 0 obj << -/D [2891 0 R /XYZ 90 421.9777 null] ->> endobj -2901 0 obj << -/D [2891 0 R /XYZ 90 421.9777 null] ->> endobj -2903 0 obj << -/D [2891 0 R /XYZ 90 385.1719 null] ->> endobj -2905 0 obj << -/D [2891 0 R /XYZ 90 361.2178 null] ->> endobj -2907 0 obj << -/D [2891 0 R /XYZ 90 348.0384 null] ->> endobj -2909 0 obj << -/D [2891 0 R /XYZ 90 336.0395 null] ->> endobj -2911 0 obj << -/D [2891 0 R /XYZ 90 323.0643 null] ->> endobj -2913 0 obj << -/D [2891 0 R /XYZ 90 312.0417 null] ->> endobj -2915 0 obj << -/D [2891 0 R /XYZ 90 300.0428 null] ->> endobj -2917 0 obj << -/D [2891 0 R /XYZ 90 288.044 null] ->> endobj -2919 0 obj << -/D [2891 0 R /XYZ 90 234.0388 null] ->> endobj -2921 0 obj << -/D [2891 0 R /XYZ 90 197.233 null] ->> endobj -2923 0 obj << -/D [2891 0 R /XYZ 90 183.0773 null] ->> endobj -2890 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2933 0 obj << -/Length 1783 -/Filter /FlateDecode ->> -stream -xڵYMs6W(D(I:NI\[=%M[TI}"@Ed|0E>v b#Sb\NOp xh~[N~yET!%.#H%t\}ID|Aݾ_^WW]n2VIJ 5#XͿ,N 1I0I4㿓O_t`T(_FD):M8evr;~p|3AXk %Qp58|A0ƳW,S\-lߊ4 @ -Ώ/7iYۻ21TyFjtmV'܌D+y-0b1Bxp~'MTQUR]v) -%} سÙg( L4czݱ@@lgP\$\yoIlH (v]$Nk>ONp_?VF("d_$PU4[wDF@3ҟ_aր[ͫ:A,qfAdѾL4*KO "43CQ"]s+6 -t<$EʼnM9.kdb{K1C5BDV k*Z琕: Tܩ(V( Of8D(T2nD\m6%ǀ6$\VcRQVҲҺ֡ 6XvrgNo X[;]Nn@E)G -ٌC\'eյ?aY3vB MT TM>{'RVG3N8֙ĴWwCK`2FbB  iEzu#B_gN6npXzna:uL~41foV.h?f7nƳ!2E1{ifSUIpJ:2`u -Չ*>xu]o)C D5G SRవ3 %۲;({r$Ƈ"p'q 1guI8{_ 2W[h_\M D1ۤOS" 1hMN.BH)OmV5rjmFDB!'čւgJ)$c4!YjP -t:J[-F(֟Z;W:Ps*5vֆ )aanuG`#vEXX:(gt!̠O>bϺ$fٯ*y -CDí ܝ}*gwwo>Y^wGH㛕1OE^yu?~hqBL?]M/Wtc$tp,IQsre^`~j .@9|u4aw2׈hףendstream -endobj -2932 0 obj << -/Type /Page -/Contents 2933 0 R -/Resources 2931 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2942 0 R -/Annots [ 2938 0 R 2939 0 R 2941 0 R ] ->> endobj -2938 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 413.0808 135.0008 436.0496] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -2939 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [154.8662 413.0808 183.7077 436.0496] -/Subtype /Link -/A << /S /GoTo /D (a00039) >> ->> endobj -2941 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.345 341.4685 157.1381 352.3576] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -2934 0 obj << -/D [2932 0 R /XYZ 90 757.9346 null] ->> endobj -2935 0 obj << -/D [2932 0 R /XYZ 90 739.9346 null] ->> endobj -2929 0 obj << -/D [2932 0 R /XYZ 90 723.1038 null] ->> endobj -2936 0 obj << -/D [2932 0 R /XYZ 90 723.1038 null] ->> endobj -2928 0 obj << -/D [2932 0 R /XYZ 206.0041 564.8934 null] ->> endobj -2937 0 obj << -/D [2932 0 R /XYZ 90 548.1663 null] ->> endobj -2930 0 obj << -/D [2932 0 R /XYZ 212.5591 388.6469 null] ->> endobj -2940 0 obj << -/D [2932 0 R /XYZ 90 371.9198 null] ->> endobj -2931 0 obj << -/Font << /F29 499 0 R /F14 636 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2945 0 obj << -/Length 2274 -/Filter /FlateDecode ->> -stream -xڭ]O$7䦑X,#Q.bg̿qUmN6iyT?l(Czqe.>ǦoR?V{߽n\/V4#3Xdpx]\KEas{|unx\Jhm˯tq Q"U0˞"|qwcg)&$9\Otw|Xo+zY?3 ^%c1ƂjݎEhGv)I8>Y}j+cA$#)$;r A,n-x VIc)Ԍj"qٿ8Ws/F} 4zK)^; #[ϟ&͇4Cз2 #[򹈡%1 3DA_*aRMX0Mns*S!''5.vsVʱI˜k0NjgO) >{*ʚ=T7TTS ŸiOziX(M_GPO)m7z*LOA0D5=%\ -vO%b=ƞ|=9gx*06._:•XgKqh gLlh/Oa{1Dkx=)՘mjVuT:)ZdVKZ 6Z-si5=>'3%h9N`SyIkaiN<183xbO=˒8 2\jî9Ő0A9&q<c?\\^\9<=-0Jf*DUÞ[>~arts Ǣ -t-qY0Aֆ9&q=퀞@c'WEQDQ1@=+^ éB]NȉdmȘcSșyd6iaRDU#h%Uatƒw N{4ѨvMTO\~}Z߮?qrw%G-m 7 ͖n+,;nTn٨nl !a?SӠ?,ztydb^m;:[DӍseW&Dzg&D ?bkƻX?GI7Ӌw Ƨ\|ϧu~z|qDϿy~i]< ђ*endstream -endobj -2944 0 obj << -/Type /Page -/Contents 2945 0 R -/Resources 2943 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2942 0 R -/Annots [ 2949 0 R 2950 0 R 2951 0 R 2952 0 R 2954 0 R 2957 0 R 2959 0 R 2961 0 R 2963 0 R 2965 0 R 2967 0 R 2969 0 R 2971 0 R 2973 0 R 2975 0 R 2977 0 R 2979 0 R 2981 0 R 2983 0 R 2985 0 R 2987 0 R 2989 0 R 2991 0 R 2994 0 R 2995 0 R ] ->> endobj -2949 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 618.5198 165.7154 627.3665] -/Subtype /Link -/A << /S /GoTo /D (a00109) >> ->> endobj -2950 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 580.4794 165.1575 589.326] -/Subtype /Link -/A << /S /GoTo /D (a00108) >> ->> endobj -2951 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 542.439 157.4166 551.2856] -/Subtype /Link -/A << /S /GoTo /D (a00107) >> ->> endobj -2952 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 504.3985 156.8586 513.2452] -/Subtype /Link -/A << /S /GoTo /D (a00106) >> ->> endobj -2954 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 421.7425 190.8904 431.6702] -/Subtype /Link -/A << /S /GoTo /D (a00086) >> ->> endobj -2957 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 365.6635 271.1301 375.5912] -/Subtype /Link -/A << /S /GoTo /D (a00162_g26440a35353cb457747a4cea372c62e9) >> ->> endobj -2959 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 353.119 280.5446 363.0467] -/Subtype /Link -/A << /S /GoTo /D (a00162_g30fe27cba3c14ae7f9a7f118144af43a) >> ->> endobj -2961 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 339.5983 213.038 350.5022] -/Subtype /Link -/A << /S /GoTo /D (a00162_ge28f6cb60e86088d8886d0f804b4f37c) >> ->> endobj -2963 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 328.03 176.5052 337.9577] -/Subtype /Link -/A << /S /GoTo /D (a00162_g3212e70c55244608ac16316888c354f0) >> ->> endobj -2965 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 315.4855 176.4952 325.4132] -/Subtype /Link -/A << /S /GoTo /D (a00162_g6cda47c85ce1b58b501b44ac9cccc50e) >> ->> endobj -2967 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 302.941 224.8339 312.8687] -/Subtype /Link -/A << /S /GoTo /D (a00162_ge429c985be88ed048f382511c9ff00de) >> ->> endobj -2969 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 290.3965 198.4231 300.3242] -/Subtype /Link -/A << /S /GoTo /D (a00162_g19709735f29dafeabb91e0882231f9f1) >> ->> endobj -2971 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 277.8521 206.5625 287.7797] -/Subtype /Link -/A << /S /GoTo /D (a00162_g7e904ab59f7ee134cf3218a8219e7e29) >> ->> endobj -2973 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 265.3075 211.4442 275.2352] -/Subtype /Link -/A << /S /GoTo /D (a00162_g5025948dd998f65a13a375a37aa5edf5) >> ->> endobj -2975 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 252.763 196.052 262.6907] -/Subtype /Link -/A << /S /GoTo /D (a00162_gbfc1d8d15852318927cda30e1bc0470a) >> ->> endobj -2977 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 240.2185 209.3322 250.1462] -/Subtype /Link -/A << /S /GoTo /D (a00162_gaaaaf66ea67900c36d01136d5bad1168) >> ->> endobj -2979 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 227.6741 213.2175 237.6017] -/Subtype /Link -/A << /S /GoTo /D (a00162_g57aca709a33690cd4fb73fe199fa1bdd) >> ->> endobj -2981 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 215.1295 207.0906 225.0572] -/Subtype /Link -/A << /S /GoTo /D (a00162_g8b600918f84783490fd791ce773175ab) >> ->> endobj -2983 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 202.585 215.23 212.5127] -/Subtype /Link -/A << /S /GoTo /D (a00162_g6b2d00412304e2d95e7b853cce5858b0) >> ->> endobj -2985 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 190.0406 220.1117 199.9682] -/Subtype /Link -/A << /S /GoTo /D (a00162_g3318dec654781e9d6d8ec873636660c6) >> ->> endobj -2987 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 177.496 204.7195 187.4237] -/Subtype /Link -/A << /S /GoTo /D (a00162_gf784a76fe619452eddf87e6376a4bf9d) >> ->> endobj -2989 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 164.9515 217.9996 174.8792] -/Subtype /Link -/A << /S /GoTo /D (a00162_g3a4852e2372e34e1c0142d1147fbe027) >> ->> endobj -2991 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 152.4071 223.1601 162.3347] -/Subtype /Link -/A << /S /GoTo /D (a00162_gaa60ca995565b799bb958c806e933665) >> ->> endobj -2994 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 95.3518 198.6315 106.2557] -/Subtype /Link -/A << /S /GoTo /D (a00086) >> ->> endobj -2995 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.1296 95.3518 276.389 106.2557] -/Subtype /Link -/A << /S /GoTo /D (a00162_g4647b76d0ef50a5305505041f5775a37) >> ->> endobj -2946 0 obj << -/D [2944 0 R /XYZ 90 757.9346 null] ->> endobj -1317 0 obj << -/D [2944 0 R /XYZ 90 739.9346 null] ->> endobj -162 0 obj << -/D [2944 0 R /XYZ 90 739.9346 null] ->> endobj -2947 0 obj << -/D [2944 0 R /XYZ 90 719.4886 null] ->> endobj -2948 0 obj << -/D [2944 0 R /XYZ 90 635.0055 null] ->> endobj -2953 0 obj << -/D [2944 0 R /XYZ 90 439.3093 null] ->> endobj -2955 0 obj << -/D [2944 0 R /XYZ 90 383.2303 null] ->> endobj -2956 0 obj << -/D [2944 0 R /XYZ 90 383.2303 null] ->> endobj -2958 0 obj << -/D [2944 0 R /XYZ 90 369.6486 null] ->> endobj -2960 0 obj << -/D [2944 0 R /XYZ 90 357.1041 null] ->> endobj -2962 0 obj << -/D [2944 0 R /XYZ 90 343.5833 null] ->> endobj -2964 0 obj << -/D [2944 0 R /XYZ 90 332.0151 null] ->> endobj -2966 0 obj << -/D [2944 0 R /XYZ 90 319.4706 null] ->> endobj -2968 0 obj << -/D [2944 0 R /XYZ 90 306.9261 null] ->> endobj -2970 0 obj << -/D [2944 0 R /XYZ 90 294.3816 null] ->> endobj -2972 0 obj << -/D [2944 0 R /XYZ 90 281.8371 null] ->> endobj -2974 0 obj << -/D [2944 0 R /XYZ 90 269.2926 null] ->> endobj -2976 0 obj << -/D [2944 0 R /XYZ 90 256.7481 null] ->> endobj -2978 0 obj << -/D [2944 0 R /XYZ 90 244.2036 null] ->> endobj -2980 0 obj << -/D [2944 0 R /XYZ 90 231.6591 null] ->> endobj -2982 0 obj << -/D [2944 0 R /XYZ 90 219.1146 null] ->> endobj -2984 0 obj << -/D [2944 0 R /XYZ 90 206.5701 null] ->> endobj -2986 0 obj << -/D [2944 0 R /XYZ 90 194.0256 null] ->> endobj -2988 0 obj << -/D [2944 0 R /XYZ 90 181.4811 null] ->> endobj -2990 0 obj << -/D [2944 0 R /XYZ 90 168.9366 null] ->> endobj -2992 0 obj << -/D [2944 0 R /XYZ 90 111.6113 null] ->> endobj -2993 0 obj << -/D [2944 0 R /XYZ 90 111.6113 null] ->> endobj -2943 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F11 705 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -2998 0 obj << -/Length 1852 -/Filter /FlateDecode ->> -stream -xڭZێ6}W wͥ RtOI(^ڨ-o|&%R.&"@֖f3g/2L)iFZjqN Wx*<{ŲiF2tq[YP@$6]|)`~$-8~t?~Y -j -}G^\4$W`|B7 %<3r_(,cD0l&';ꁡaJ u=Wry\PT# PAJ*"g;gdP|IؠR~A*Ϝn} ;|T=6cE2lzdhD" -!3iPI}2W:‡HXQ'·& =(zvmU|~Z{qhZU"TNU^ճW CiigJy jY|cd(jP.[4P|H:5Tj((STglzoSX qU8E%C(E2Q\/A|K?0#~oCo-cgLn{ߧDdHx<*g# -sm Sht\Xxz.]\Y1vC R|X7 TG4LdLTxXam&n1 g040³D<*('Y'O0~w&ψT ~MmA3_Fvk@? h]=IL.Ó4K=*yHŝ &ۮxDCZ r`}fpE߃pJzzA.UF40s VkK;1voSo-c -g,׌P -&JyDž;JG77z %e1 5k`67uY[V)8~˗6̿2`RgOC8R;rh0_$۾Gp9EnC]DHG ȎzҠ[.UQ^qD]7' eBjr(¶.;\ d Qe7r޳fI`L^uEb,;=̥c?n=)۴P6-Edhnl/"=kM -{E{jӤʜQ\մx FA:'ڝNEK -UVúYe#u`@E`7g~Sٖ-eeA`CìJQ}| eeU 0is :;^H4H^yy͉5(D] [SMkj^[.|[ #B4`6t~ -6R:Tm !@SРrqszKchM!z^U"AI *=OD?z78KxԸI"ܵ58Cb=C8w^ :=t @٣ 8(&T'&͞g! 4./$\vG/d>oĞ`/}s(UN WnuzsЄUϻǞ ?⡽Eendstream -endobj -2997 0 obj << -/Type /Page -/Contents 2998 0 R -/Resources 2996 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2942 0 R -/Annots [ 3002 0 R 3004 0 R 3005 0 R 3006 0 R 3008 0 R 3009 0 R 3010 0 R 3011 0 R 3015 0 R 3018 0 R ] ->> endobj -3002 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 704.6952 196.7787 715.5991] -/Subtype /Link -/A << /S /GoTo /D (a00162_g52c3c5ab1b1aa0659b5e465f7fbcc409) >> ->> endobj -3004 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 692.285 175.2098 703.189] -/Subtype /Link -/A << /S /GoTo /D (a00162_g984c4a8b65a3cb35460b073a40568c25) >> ->> endobj -3005 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 654.5133 188.49 665.4173] -/Subtype /Link -/A << /S /GoTo /D (a00162_g123c95a7bb55143cabba92446ce8f513) >> ->> endobj -3006 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 616.7416 185.1725 627.6455] -/Subtype /Link -/A << /S /GoTo /D (a00162_gf11c966b0e4f4ecaa73deb14bfb6830f) >> ->> endobj -3008 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 579.3435 181.2968 589.8738] -/Subtype /Link -/A << /S /GoTo /D (a00162_g82ff99d50221f7c17df57dc6092ffc97) >> ->> endobj -3009 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 566.9333 172.998 577.4637] -/Subtype /Link -/A << /S /GoTo /D (a00162_g69b075ef7e4d7bcf5a903d3d75baac02) >> ->> endobj -3010 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 529.1616 176.8634 539.692] -/Subtype /Link -/A << /S /GoTo /D (a00162_gd1f18f739da7703628c3663209463a0d) >> ->> endobj -3011 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 491.0163 180.1912 501.9203] -/Subtype /Link -/A << /S /GoTo /D (a00162_g86beee1f69d05b16022dfb430470e9ce) >> ->> endobj -3015 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 334.2427 142.7416 355.1542] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -3018 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 137.7572 142.7416 158.6686] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -2999 0 obj << -/D [2997 0 R /XYZ 90 757.9346 null] ->> endobj -3000 0 obj << -/D [2997 0 R /XYZ 90 723.1038 null] ->> endobj -3001 0 obj << -/D [2997 0 R /XYZ 90 723.1038 null] ->> endobj -3003 0 obj << -/D [2997 0 R /XYZ 90 708.6802 null] ->> endobj -3007 0 obj << -/D [2997 0 R /XYZ 90 597.5219 null] ->> endobj -3012 0 obj << -/D [2997 0 R /XYZ 90 454.7247 null] ->> endobj -3013 0 obj << -/D [2997 0 R /XYZ 90 428.2397 null] ->> endobj -3014 0 obj << -/D [2997 0 R /XYZ 90 428.2397 null] ->> endobj -3016 0 obj << -/D [2997 0 R /XYZ 204.8181 294.2849 null] ->> endobj -3017 0 obj << -/D [2997 0 R /XYZ 90 278.0449 null] ->> endobj -3019 0 obj << -/D [2997 0 R /XYZ 295.0094 96.348 null] ->> endobj -2996 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F50 1172 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3024 0 obj << -/Length 1356 -/Filter /FlateDecode ->> -stream -xڵXKs8+|4UÏwBI&if*e@jfLHll,RTrV8!v|2ϙ{yW=0*wvIB'DG[b <]RŊɂKwujab$Y@}9R+A!]vjQ9l1k="pdJң>OOZI)vZ?ξoh~X2E8PSM%W'HKZ#f4}5~]V{WL&#+Uv&b{]frB+KӘ=7YhHک'BJFjj}}I0)<5WsC,>tk_;T#Ou<ٕEecřuYs3sb.(ejxIjMfۋh_EK~/ ]endstream -endobj -3023 0 obj << -/Type /Page -/Contents 3024 0 R -/Resources 3022 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2942 0 R -/Annots [ 3027 0 R 3029 0 R 3031 0 R ] ->> endobj -3027 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 583.7986 142.7416 604.7101] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -3029 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 371.5861 142.7416 392.4976] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -3031 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 198.9704 142.7416 219.8819] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -3025 0 obj << -/D [3023 0 R /XYZ 90 757.9346 null] ->> endobj -3026 0 obj << -/D [3023 0 R /XYZ 90 739.9346 null] ->> endobj -3020 0 obj << -/D [3023 0 R /XYZ 200.3847 522.0587 null] ->> endobj -3028 0 obj << -/D [3023 0 R /XYZ 90 505.3316 null] ->> endobj -3021 0 obj << -/D [3023 0 R /XYZ 273.161 309.8462 null] ->> endobj -3030 0 obj << -/D [3023 0 R /XYZ 90 293.119 null] ->> endobj -3022 0 obj << -/Font << /F29 499 0 R /F14 636 0 R /F52 1229 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3034 0 obj << -/Length 1133 -/Filter /FlateDecode ->> -stream -xXK6Wj3|mm6) 5\[&C2E//zf!MH8 N~ ~C)dM*R ʡ삁wr6[Wn|FGV~oOfߖOm=3Tz﫛"﷛8[ Di[kǽ:Fn˭{zjI5Ɂ=Ui:ZϊO -yQqQ7F>[ x;$Ր%O WZ1.%<+PJ2nH/ aOVDQCCXV>Ӫ8f`_ڔp7fE<n-cm7h5t#8޸ qw,E]8vVDZޕꟹ).>Vno5^\QPkcYjb -mŮG8t:]|CH?űWIʌA{;xڭYИ*iDdFuE< eVJ o7ͺ?@u#sۏ)X[8$4,*HrIx!40 6@ !8n@w\- ΢wHݦT!lH1Ta)0UNA+?J64lJ?$.;:#rq 'kWwȹkQC&y?3lM;?:endstream -endobj -3033 0 obj << -/Type /Page -/Contents 3034 0 R -/Resources 3032 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 2942 0 R -/Annots [ 3037 0 R 3039 0 R 3040 0 R 3042 0 R 3045 0 R 3048 0 R 3050 0 R ] ->> endobj -3037 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [318.3113 672.5415 370.5648 683.4455] -/Subtype /Link -/A << /S /GoTo /D (a00158) >> ->> endobj -3039 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 617.7467 184.9831 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00101) >> ->> endobj -3040 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 578.8924 184.4252 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00100) >> ->> endobj -3042 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 495.0563 211.8219 504.984] -/Subtype /Link -/A << /S /GoTo /D (a00078) >> ->> endobj -3045 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 437.2279 213.038 448.1318] -/Subtype /Link -/A << /S /GoTo /D (a00163_ge28f6cb60e86088d8886d0f804b4f37c) >> ->> endobj -3048 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 380.3757 217.7102 391.2796] -/Subtype /Link -/A << /S /GoTo /D (a00163_g03070adbf8faab0f34f87c1270964306) >> ->> endobj -3050 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 367.7979 202.2283 378.3282] -/Subtype /Link -/A << /S /GoTo /D (a00163_gb97849f0d3ea858eee790b69591e6427) >> ->> endobj -3035 0 obj << -/D [3033 0 R /XYZ 90 757.9346 null] ->> endobj -1318 0 obj << -/D [3033 0 R /XYZ 90 739.9346 null] ->> endobj -166 0 obj << -/D [3033 0 R /XYZ 90 739.9346 null] ->> endobj -3036 0 obj << -/D [3033 0 R /XYZ 90 717.1645 null] ->> endobj -3038 0 obj << -/D [3033 0 R /XYZ 90 634.6393 null] ->> endobj -3041 0 obj << -/D [3033 0 R /XYZ 90 513.03 null] ->> endobj -3043 0 obj << -/D [3033 0 R /XYZ 90 456.1778 null] ->> endobj -3044 0 obj << -/D [3033 0 R /XYZ 90 456.1778 null] ->> endobj -3046 0 obj << -/D [3033 0 R /XYZ 90 399.3256 null] ->> endobj -3047 0 obj << -/D [3033 0 R /XYZ 90 399.3256 null] ->> endobj -3049 0 obj << -/D [3033 0 R /XYZ 90 384.3607 null] ->> endobj -3032 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3053 0 obj << -/Length 2297 -/Filter /FlateDecode ->> -stream -xڥZ]sۺ}L_7JԎ][,1+KM_I@.v2Qឃ=K`)(c#KGFbԣ }??aS8~#Kz4ZEЌ(hm̘r7pZ\muYorWǓ,7qt}O(Pf-=H.BDuAc_ z|p19eC=zq0b@ -%@XWr٤|YV>!HD8\ɔW/e儩ӳOv{s~^|nZZ9>~[.pv(x1_z,\ - CY\\ṬW'~6T q!_W~]o:*XKAle]zoۣ{,5(XA&k .w_ a&Wő;!2RhNПRˉjh -<Gm'c!U!5<F̅ -.vh.>Kjg}Pl޾qNhKpa=H<4uI4t-‡(fY}rkL:*wpR2DqL_8WI2(\ĕ@(C -݆ZIE4Nq{D?zxFqV͐DDCkKZ-PG ̥ఒP+Dp*뢁sJ?k ^{|Sv@$֡DSF3SD &x<,_sQ@pPu-Lٵ!ۮEZyc](t֪\yXժf~Ju[I[z[^gM<Lzbn;,݄)Tr7cRh3[/hӊD@fF*4$q TJr{q -Ќ*< !yQXY=?tZ- Rku @(^ouOf pÎ$Oן_SQќTF`ͨmav. Ʋ~#fm#q`{;qI\'۳gJVY =,(=AS6m}u@a2agՁc u:e$q:0=;ޥ?3OM@e4qˈ-uX M{ @(^o}7o}|I\[}iTJIR@eqCGxWF} E1FE"yA|H2hKf~n$1JK<1Qč!\+]C@c漇#q|;qI'噻Ny-)SA k{6[L"> endobj -3056 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 641.2029 187.822 651.7332] -/Subtype /Link -/A << /S /GoTo /D (a00164_gc4b119801e50cc1824498a1cdf9adc37) >> ->> endobj -3057 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [191.4287 641.2029 284.16 651.7332] -/Subtype /Link -/A << /S /GoTo /D (a00164_g6b942c1ef22f8cd1a726ef3364c9fbea) >> ->> endobj -3058 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [287.7667 641.2029 375.5365 651.7332] -/Subtype /Link -/A << /S /GoTo /D (a00164_g23705efb9077187881f094fc9be13bde) >> ->> endobj -3059 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.1432 641.2029 461.364 651.7332] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf11d9915ec12a8cdd9fdcbb5e8fcd5c7) >> ->> endobj -3060 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [464.9707 641.2029 513.9963 651.7332] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf8f12c820cc08da32aa62898bfc02db3) >> ->> endobj -3061 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 629.2477 123.0855 639.778] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf8f12c820cc08da32aa62898bfc02db3) >> ->> endobj -3063 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 565.3112 177.3318 574.1579] -/Subtype /Link -/A << /S /GoTo /D (a00111) >> ->> endobj -3064 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 521.7174 176.7738 530.5641] -/Subtype /Link -/A << /S /GoTo /D (a00110) >> ->> endobj -3066 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 426.7436 202.5067 436.6713] -/Subtype /Link -/A << /S /GoTo /D (a00097) >> ->> endobj -3069 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 361.1235 309.3265 371.0511] -/Subtype /Link -/A << /S /GoTo /D (a00164_g5a5bfd7e9060903893481db90645187b) >> ->> endobj -3071 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 344.826 213.038 355.73] -/Subtype /Link -/A << /S /GoTo /D (a00164_ge28f6cb60e86088d8886d0f804b4f37c) >> ->> endobj -3073 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 330.4811 255.0802 340.4088] -/Subtype /Link -/A << /S /GoTo /D (a00164_g31be289fd8ec3fe09b0088165d13976d) >> ->> endobj -3075 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 315.1599 302.4923 325.0876] -/Subtype /Link -/A << /S /GoTo /D (a00164_g8714af98a550f10dc814db92b08d1b0d) >> ->> endobj -3077 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 299.8388 290.1386 309.7664] -/Subtype /Link -/A << /S /GoTo /D (a00164_gc4357cec23abca29d2bb885803625a6a) >> ->> endobj -3079 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 284.5176 269.4366 294.4453] -/Subtype /Link -/A << /S /GoTo /D (a00164_g4d457c50e6f2cef57167c3804ce8bf7c) >> ->> endobj -3081 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 269.1964 275.7527 279.1241] -/Subtype /Link -/A << /S /GoTo /D (a00164_g863c94b0ed4a76997e53a3ccd5d0b6c3) >> ->> endobj -3083 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 253.8753 230.8912 263.8029] -/Subtype /Link -/A << /S /GoTo /D (a00164_g40fb1fb2d990ce04ae9bbee275627c03) >> ->> endobj -3085 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 238.5541 217.6111 248.4818] -/Subtype /Link -/A << /S /GoTo /D (a00164_gda99954e0f6905091885934e86c278cc) >> ->> endobj -3087 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 223.2329 239.2498 233.1606] -/Subtype /Link -/A << /S /GoTo /D (a00164_gd895686859ae7d178d31be04eb0a1a97) >> ->> endobj -3089 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 207.9117 236.0418 217.8394] -/Subtype /Link -/A << /S /GoTo /D (a00164_g38af81a4c9884ce89803fc3e52383112) >> ->> endobj -3091 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 192.5906 176.5052 202.5182] -/Subtype /Link -/A << /S /GoTo /D (a00164_g3212e70c55244608ac16316888c354f0) >> ->> endobj -3093 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 177.2694 176.4952 187.1971] -/Subtype /Link -/A << /S /GoTo /D (a00164_g6cda47c85ce1b58b501b44ac9cccc50e) >> ->> endobj -3095 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 160.9719 190.8811 171.8759] -/Subtype /Link -/A << /S /GoTo /D (a00164_g71e1b022f7b7fa3a154f19372b239935) >> ->> endobj -3098 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 95.3518 210.2479 106.2557] -/Subtype /Link -/A << /S /GoTo /D (a00097) >> ->> endobj -3099 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [210.746 95.3518 288.0054 106.2557] -/Subtype /Link -/A << /S /GoTo /D (a00164_gdc5aec3587b2c55b714a6c2f37b56cba) >> ->> endobj -3054 0 obj << -/D [3052 0 R /XYZ 90 757.9346 null] ->> endobj -1319 0 obj << -/D [3052 0 R /XYZ 90 739.9346 null] ->> endobj -170 0 obj << -/D [3052 0 R /XYZ 90 739.9346 null] ->> endobj -3055 0 obj << -/D [3052 0 R /XYZ 90 718.4222 null] ->> endobj -3062 0 obj << -/D [3052 0 R /XYZ 90 584.5736 null] ->> endobj -3065 0 obj << -/D [3052 0 R /XYZ 90 447.0871 null] ->> endobj -3067 0 obj << -/D [3052 0 R /XYZ 90 381.4669 null] ->> endobj -3068 0 obj << -/D [3052 0 R /XYZ 90 381.4669 null] ->> endobj -3070 0 obj << -/D [3052 0 R /XYZ 90 365.1085 null] ->> endobj -3072 0 obj << -/D [3052 0 R /XYZ 90 348.8111 null] ->> endobj -3074 0 obj << -/D [3052 0 R /XYZ 90 334.4662 null] ->> endobj -3076 0 obj << -/D [3052 0 R /XYZ 90 319.145 null] ->> endobj -3078 0 obj << -/D [3052 0 R /XYZ 90 303.8238 null] ->> endobj -3080 0 obj << -/D [3052 0 R /XYZ 90 288.5027 null] ->> endobj -3082 0 obj << -/D [3052 0 R /XYZ 90 273.1815 null] ->> endobj -3084 0 obj << -/D [3052 0 R /XYZ 90 257.8603 null] ->> endobj -3086 0 obj << -/D [3052 0 R /XYZ 90 242.5391 null] ->> endobj -3088 0 obj << -/D [3052 0 R /XYZ 90 227.218 null] ->> endobj -3090 0 obj << -/D [3052 0 R /XYZ 90 211.8968 null] ->> endobj -3092 0 obj << -/D [3052 0 R /XYZ 90 196.5756 null] ->> endobj -3094 0 obj << -/D [3052 0 R /XYZ 90 181.2544 null] ->> endobj -3096 0 obj << -/D [3052 0 R /XYZ 90 114.388 null] ->> endobj -3097 0 obj << -/D [3052 0 R /XYZ 90 114.388 null] ->> endobj -3051 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3107 0 obj << -/Length 2315 -/Filter /FlateDecode ->> -stream -xڵYSqdm\04RHoObɅeaֿ&3 Ȭ3%j^~~Z<65⹳ bˣDP5}_Vm{[|q=!\}x^]PIb|l }|5Z~/=aaGj(<zX]y,dV4Ҫ N9/Ý] .6A_zɝ]X|A=QWT/p0olCrs]j.m[BxJnOm?_K{vz9fm.1k4Kd.6 -~}-۩qAUBʴnzAjq' ^VnǨ~C~'Wd&k{M׆חMkck;vn/4dU! -3 ĊڨdT%VA/O?}]2=to9}|Xr?W|juV200yI&n -d&tU! -!izT mʹC0dDP>s ҔAV%6v^*x)9b0 -BJ9oZZ2D*i9Zl -:7ĊY X ~ݴxn*ҽ02iN_ -h`7u$jJ`Y/!<@wSCe')qkH=*2QI*tx9܏qx1نquCf6]%D/sb64IW!=/0l{ -FASwFQMO@NωR3bݱtBkdHο}ogWÉΒVƿ!/ ޽ݵ'sދs{.Ip'0;B~]$j u|IО!>W&WPDOoc=wpݟb N#?vyendstream -endobj -3106 0 obj << -/Type /Page -/Contents 3107 0 R -/Resources 3105 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3130 0 R -/Annots [ 3110 0 R 3111 0 R 3112 0 R 3113 0 R 3114 0 R 3115 0 R 3117 0 R 3118 0 R 3119 0 R 3121 0 R 3123 0 R 3124 0 R 3125 0 R 3126 0 R 3127 0 R ] ->> endobj -3110 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 704.9751 226.0986 715.5054] -/Subtype /Link -/A << /S /GoTo /D (a00164_gc4b119801e50cc1824498a1cdf9adc37) >> ->> endobj -3111 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [276.1106 704.9751 300.7979 715.5054] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3112 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 667.016 220.0116 677.5464] -/Subtype /Link -/A << /S /GoTo /D (a00164_g6b942c1ef22f8cd1a726ef3364c9fbea) >> ->> endobj -3113 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 618.0981 215.05 628.6284] -/Subtype /Link -/A << /S /GoTo /D (a00164_g23705efb9077187881f094fc9be13bde) >> ->> endobj -3114 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 569.1801 209.501 579.7104] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf11d9915ec12a8cdd9fdcbb5e8fcd5c7) >> ->> endobj -3115 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 520.2621 205.0776 530.7925] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf8f12c820cc08da32aa62898bfc02db3) >> ->> endobj -3117 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 471.3442 192.9132 481.8745] -/Subtype /Link -/A << /S /GoTo /D (a00164_g3caacabb2fe1c71921e1a471719ccbd2) >> ->> endobj -3118 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [172.012 433.0115 229.8943 443.9154] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> ->> endobj -3119 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [279.9163 433.0115 304.6036 443.9154] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3121 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 395.426 200.0962 405.9563] -/Subtype /Link -/A << /S /GoTo /D (a00164_g1d34be506a61db90dd7829117efdf8cf) >> ->> endobj -3123 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 357.0933 208.3951 367.9973] -/Subtype /Link -/A << /S /GoTo /D (a00164_g9e6d2864f390a4ba1ac60dc65e2b9815) >> ->> endobj -3124 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 344.5895 226.5766 355.4935] -/Subtype /Link -/A << /S /GoTo /D (a00164_g4433d3af16ea083a81576d0f18ba57c9) >> ->> endobj -3125 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 307.0041 221.0375 317.5344] -/Subtype /Link -/A << /S /GoTo /D (a00164_g41e616d3fcc17e0aabfe8ab45ef0d30f) >> ->> endobj -3126 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 269.045 224.913 279.5753] -/Subtype /Link -/A << /S /GoTo /D (a00164_g0e0ea5f24b77f124ba33bcbc7ede5bfb) >> ->> endobj -3127 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.7915 230.7123 236.5493 241.6163] -/Subtype /Link -/A << /S /GoTo /D (a00164_g2a939aa4fcffabbce1dc1f784a7e0ad3) >> ->> endobj -3108 0 obj << -/D [3106 0 R /XYZ 90 757.9346 null] ->> endobj -3109 0 obj << -/D [3106 0 R /XYZ 90 723.1038 null] ->> endobj -3116 0 obj << -/D [3106 0 R /XYZ 90 489.6163 null] ->> endobj -3120 0 obj << -/D [3106 0 R /XYZ 90 413.6981 null] ->> endobj -3122 0 obj << -/D [3106 0 R /XYZ 90 375.739 null] ->> endobj -3128 0 obj << -/D [3106 0 R /XYZ 90 194.2427 null] ->> endobj -3103 0 obj << -/D [3106 0 R /XYZ 90 167.7577 null] ->> endobj -3129 0 obj << -/D [3106 0 R /XYZ 90 167.7577 null] ->> endobj -3105 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3138 0 obj << -/Length 1587 -/Filter /FlateDecode ->> -stream -xYێ6}W ,mҴRߒ ܵQ[v}7eI  0EΐgI0#IT(g\&'rA -W!_h(T&{cA$(znIYQx//KmrT8ź!v~ &{N߫F,D 0"yNS?4vyahz2’(#9Dea J!G",MRN17x8>?C)JIhOͭw؎ $8E)abCxv  A -Q'W j>Pۈ=~= ?Gd] -8NE>5A[H7KS䜙^ժܨ x|{,0'Zo}beʔ2D~79T'O{fq$KB!<7?Kw/zyWmkz -uuԭ pv5>9t;t]o<,UH[u6k{Nɉ8ApS /mhPJ.a띝L/٥^˃~nN >h 'u;&@ $u]D*D1' ^57V&#k3>C&07N[Ǧ -h'e~X+zl#mEOXk‹ZLÉW S 6b>> E*Ƶ/D]>Nr$}cO־Ak`so4>MGfj_}Mٝ}aho>6}{kоmq.v=Y26*E9EJ:npH)&CBx{65ȏ爜Q!=bhP1m'q$8ACQ1wc*p߼zkp^C7nv&شl1Raڨ K[?#1͠ڡuпڡ!znڡuPsv&wԐ7GK$̱Pa;hXj-K=hcX͜0 wζ]H~tɼGCBͩGހwÈvH9x ~V -u[&m(cmO6D c70q.GŴ0hg]ڵ?wNS A[{6%Ȟ`rQbs1O d{1N{1ͼtg\L&ν/& 1"7\Lu"<ڄ="/>UNLYfN KڸR.?Dkx7=~-e}ܢKw[`>nϫ_bupAҿzendstream -endobj -3137 0 obj << -/Type /Page -/Contents 3138 0 R -/Resources 3136 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3130 0 R -/Annots [ 3140 0 R 3141 0 R 3143 0 R 3144 0 R 3146 0 R 3147 0 R 3149 0 R 3150 0 R 3151 0 R ] ->> endobj -3140 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 718.6794 154.358 740.9309] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3141 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 718.6794 222.4221 740.9309] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3143 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 561.9505 154.358 584.202] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3144 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 561.9505 222.4221 584.202] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3146 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 405.2217 154.358 427.4731] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3147 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 405.2217 222.4221 427.4731] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3149 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [307.2537 340.6391 333.0469 351.2293] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3150 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 124.499 154.358 146.7505] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3151 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 124.499 222.4221 146.7505] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3139 0 obj << -/D [3137 0 R /XYZ 90 757.9346 null] ->> endobj -3104 0 obj << -/D [3137 0 R /XYZ 231.9163 693.5209 null] ->> endobj -3142 0 obj << -/D [3137 0 R /XYZ 90 672.2941 null] ->> endobj -3101 0 obj << -/D [3137 0 R /XYZ 231.9163 536.792 null] ->> endobj -3145 0 obj << -/D [3137 0 R /XYZ 90 515.5652 null] ->> endobj -3100 0 obj << -/D [3137 0 R /XYZ 231.9163 380.0631 null] ->> endobj -3148 0 obj << -/D [3137 0 R /XYZ 90 358.8364 null] ->> endobj -3133 0 obj << -/D [3137 0 R /XYZ 231.9163 96.348 null] ->> endobj -3136 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3154 0 obj << -/Length 2597 -/Filter /FlateDecode ->> -stream -xڭْ}B%z[qHk%rLRߧq/MFwD6&%o`w}yw4d(Tn$HPB7/[(Q?K-p.mqñFXH ` QfݾLC_~Û#0#iy F$r) ?q솹 ^s8 -S5 Q$wc8)o |GxIr c -q@@^'LE_ -'_'x[GEv rx8!N={88\hNrcnvM_U#XQHR,ŽE --y/kvnrɿCASqcXÂA[4 !0X +llǺȫE[x8ANy ߕؾ -sX[~nmF~KٝO3x&%D3|jJf8h:LtvC>=-l$ԕ@dcbM0 m NE.)6GP3a?~[JWmʛ|ލ# >y:s]Cf*L$55U[>U6 _y@҄@ -Imq69m7,H<ЛI QM74-bi\`5D~&GXS5b`Ԕn"$ -TBnf%#J5UXf}6)P1( ո;UU_ !mϗC և 7hاKqqE .Ew+Jf5R9Uz$#i?mCis -JOi{_y˘C:3>vƉf۟mi= 3Kd -N3x(.R2싥y MK Ikuw񆙲o7?{֖P"Ryuu|!?D0I\aʵi5 k4`̂,7MyOWT%t1~LsC5~oQo)cs,*3q6֍QNG҉2_0ь†I#|fNB+`t-VVwi7yW^c}]lɨԈkH)_R*@* -Vj1m3.~`G3U_~mͮ 21̇mU :=g+w|9erf#V|q+M f/((c7˙;lt{KBZ{o{, `1pZmZ:ˏ:#G6d uVD؜p*S8Rz\7~o QdfZ&s24w72DlƉkx^٫hgBWw1r'<jh;Ueǔloރ:}[w[Ыm.1?7E~&HY6E[ZY&tW_7=W;)IXl/`5exR",_]R1I@X)νm%4!GS5j1Dkhaڗ(9 ʹ)4P+NG>ٻ+ 9VfIfnӃBG^@5#]͕$k&3MĶjK]t c[N+`1ܻ1Df.z)` >FҺQr;Ga}v,i %?MR(w822DL@V^r#<`kz`eXϷz)Չ>%oGe˩<%KWզ# s~&x_*MmMp<ɣWңJ09jbД{oou}\_r/or-vY;]DwTϦ7J8Ejv -McӰ0G2e~3aN&- >~B Xe.Cn~*Tb|}*[9lendstream -endobj -3153 0 obj << -/Type /Page -/Contents 3154 0 R -/Resources 3152 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3130 0 R -/Annots [ 3157 0 R 3158 0 R 3159 0 R 3161 0 R 3162 0 R 3163 0 R 3164 0 R 3165 0 R 3166 0 R 3167 0 R 3168 0 R ] ->> endobj -3157 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [289.4951 672.8902 354.0124 683.7941] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> ->> endobj -3158 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 591.1961 154.358 613.4475] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3159 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 591.1961 222.4221 613.4475] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3161 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [309.2858 514.7873 335.0789 525.6764] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3162 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.6716 461.1078 477.4029 471.6381] -/Subtype /Link -/A << /S /GoTo /D (a00164_g6b942c1ef22f8cd1a726ef3364c9fbea) >> ->> endobj -3163 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [305.943 449.1526 404.7613 459.6829] -/Subtype /Link -/A << /S /GoTo /D (a00164_gc4b119801e50cc1824498a1cdf9adc37) >> ->> endobj -3164 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.7094 431.5282 269.4792 442.0586] -/Subtype /Link -/A << /S /GoTo /D (a00164_g23705efb9077187881f094fc9be13bde) >> ->> endobj -3165 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [89.0037 419.1995 171.2245 430.1034] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf11d9915ec12a8cdd9fdcbb5e8fcd5c7) >> ->> endobj -3166 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [436.1989 401.5751 513.9963 412.479] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf8f12c820cc08da32aa62898bfc02db3) >> ->> endobj -3167 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 167.3556 154.358 189.6071] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3168 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 167.3556 222.4221 189.6071] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3155 0 obj << -/D [3153 0 R /XYZ 90 757.9346 null] ->> endobj -3156 0 obj << -/D [3153 0 R /XYZ 90 739.9346 null] ->> endobj -3131 0 obj << -/D [3153 0 R /XYZ 219.4825 549.7681 null] ->> endobj -3160 0 obj << -/D [3153 0 R /XYZ 90 534.2597 null] ->> endobj -3134 0 obj << -/D [3153 0 R /XYZ 231.9163 96.348 null] ->> endobj -3152 0 obj << -/Font << /F29 499 0 R /F14 636 0 R /F23 482 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3171 0 obj << -/Length 1552 -/Filter /FlateDecode ->> -stream -xڵYKo8W5˷v4v}kBiG@,iERMpp 0 A(B3.a=,,^'}xAbIeU$A_D+ -g/ -$m==(37ʤLz][DX|-i#<#48,8engwlT's? -\O"EŊ`в@wHr-gb Qs805$On62KVI_^-e<6  !yW&if[wloNE"뵵6)3:JH rH$[WL10j0`.jV*ڔIfV -㤎Y>$fښݻp/fr`vy; atZXXZX8 (9ߧ{u"ݧY`f7k3hO֎!ڣOiy}"LD(d(![||_vн*W:oE N"j Aܴ bŹKvlSjfVt6\1-;WP=4ۏ=Ԩ{H L0"#ZTHbJϪ<qe`DqjW7! -#7C@c0+f)Z]ֳ:|S>ĝLA6ء~ZH]^$~%Y%rH|~|J]^T *4>@9EK1?(7A?Ej2Ye*(j69TٙZ1Bu5rmGnclley3seM2PyQVX*|0uS a<[m[Jm[JkKʃ%--~ M[JkK陶G0 -6і:`-ݖ2K(iGΫqm)Ե%--ժ-VL_7Uܠ÷䰫Xf$0`hfgFaWCM5ԇL{5YW6rWb-SJ6N(ݣQPsˑ1_.Gő-GFӔ#=n3ˑ6rdB߹ȨrdUz]#͢Dx8Xa3B@e##bDq+~rIkQ}nTnWn';!iKjP.?^*WO$ŀ&/endstream -endobj -3170 0 obj << -/Type /Page -/Contents 3171 0 R -/Resources 3169 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3130 0 R -/Annots [ 3174 0 R 3175 0 R 3176 0 R 3178 0 R 3179 0 R 3181 0 R 3182 0 R 3183 0 R ] ->> endobj -3174 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [357.8972 671.9623 422.4145 682.8662] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> ->> endobj -3175 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 579.3293 154.358 601.5807] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3176 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 579.3293 222.4221 601.5807] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3178 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 375.5628 154.358 397.8143] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3179 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 375.5628 222.4221 397.8143] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3181 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [307.7182 234.8498 372.2355 245.7538] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> ->> endobj -3182 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 142.2168 154.358 164.4683] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3183 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 142.2168 222.4221 164.4683] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3172 0 obj << -/D [3170 0 R /XYZ 90 757.9346 null] ->> endobj -3173 0 obj << -/D [3170 0 R /XYZ 90 739.9346 null] ->> endobj -3132 0 obj << -/D [3170 0 R /XYZ 223.3579 533.4605 null] ->> endobj -3177 0 obj << -/D [3170 0 R /XYZ 90 513.0698 null] ->> endobj -3135 0 obj << -/D [3170 0 R /XYZ 246.6004 329.694 null] ->> endobj -3180 0 obj << -/D [3170 0 R /XYZ 90 308.3271 null] ->> endobj -3102 0 obj << -/D [3170 0 R /XYZ 222.8001 96.348 null] ->> endobj -3169 0 obj << -/Font << /F29 499 0 R /F14 636 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3186 0 obj << -/Length 675 -/Filter /FlateDecode ->> -stream -xڥUMo0+8TslT)MzHouv@V8<ϛ7cyWďE qG;pG&oR{|JR>D7ˆ -| .M/}N BGT띧P`-O)#T"c@_yz_S&8jIP@FH ~H,r*J~߈ #|kx،tr`\9vad\z_绲Mssܠu1`ۦqڹ7vr<2 >k='mA.h3uM?(B%vAR{H,I}74rݻ2ƔݗׯiVlXtΚRXnD$%'L#(7Tfr -,q1%3 -1"5 7}zڻ!t=+I 12qVp̖8 "sROgB?f_ߓ{,Z #Tya,RNz a6KMlLB]Zu|y(RvogGv<>zSJ!k$Jb "͌e8r" ]6N8>v&gQ,JKHEд4x5<ػő%endstream -endobj -3185 0 obj << -/Type /Page -/Contents 3186 0 R -/Resources 3184 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3130 0 R -/Annots [ 3189 0 R 3190 0 R ] ->> endobj -3189 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 637.9957 154.358 660.2472] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3190 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 637.9957 222.4221 660.2472] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3187 0 obj << -/D [3185 0 R /XYZ 90 757.9346 null] ->> endobj -3188 0 obj << -/D [3185 0 R /XYZ 90 739.9346 null] ->> endobj -3184 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3193 0 obj << -/Length 2082 -/Filter /FlateDecode ->> -stream -xڭZ]۶}0ҦM7hEb]^{k{l}IS4T-XKќ#y -bÌW3~߯b~fn\WM͈Wk*`o]<:o׳W奄fo{=DR? %>I.n~`y1IȡE>M\^1JREmΩ>.]|b(R -JR,"̅zY޸ԧq DTqWB&4sl>~Vف];0.;qzP) 6m(+R6^WB^m5i=xS{X$BxxpǺ\%{=qW>.e:l@~\J$PvfZJwO<_,mNj{U*b8gc hQM(%%sbJ;P{Mf 7}fa~s\I\Zm}H!*4^ ePpQcUtp3Ut^BZ6BB S&aixܝ|m9wWZ{a~]ۼ2mkޢ0%r>qoƇ)>sHv}!e%^ އbK p!6\fݨ"2vݢp`on)vsH X͎4_IK;=YE3n 11M%R2LcI*.euvcɔd0ąacbe6 =5M k`.3bX fmG[\kT2 /JA+u+|mR5t @(E WƵ4!`=q=>Fצa'/o{u}݋~…U*ɥWdFkhECzG;ipgOuDB -6Nc47X(RTY{׻h$m;?Avbvyc vO;Fצ~4byd.^\~x JT&(}tP/G,`{X^v1 ǼdOO#; _W~]%& PD8DxhmP`YQƋ^/x7/x|4+ooإPDd -Q9 Ƙ^Z _K Dc$2Dy'!"2F׋|z~0)Ki25DJu>{s-*y9stc3ty'!3FjveW2Sq0=nyφ12c8o9 s|xI\/c}\tl -e -70ե҃jHiQ 9tc4y'(!4F7Rz{ؤB "xT(RPc!a$nLh 1FBAw)Bi$qzWn]J@9jC +DѥoT2־iPyHa4N7f"/C?w}إ{/a/3/Zم:tw׽zv7]xDכ܆S20IvI_:x-*Cy szPEdp ԯPbɡW@B θ"f c ż.,͘q# "{M8Δr ԽYK1&5Q> endobj -3197 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 582.769 174.5722 593.6729] -/Subtype /Link -/A << /S /GoTo /D (a00113) >> ->> endobj -3198 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 542.4621 174.0143 553.3661] -/Subtype /Link -/A << /S /GoTo /D (a00112) >> ->> endobj -3199 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.133 502.1553 158.5226 513.0592] -/Subtype /Link -/A << /S /GoTo /D (a00114) >> ->> endobj -3201 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 415.9868 197.5356 426.8907] -/Subtype /Link -/A << /S /GoTo /D (a00079) >> ->> endobj -3203 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 356.821 232.9533 367.3513] -/Subtype /Link -/A << /S /GoTo /D (a00165_g1dbc635a2924806f42d7e3273a6a69b5) >> ->> endobj -3205 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 317.1168 224.1764 327.0445] -/Subtype /Link -/A << /S /GoTo /D (a00165_g7d7920c1e51cc4eef80206ebd6fee3f4) >> ->> endobj -3207 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 303.4391 220.9585 313.3668] -/Subtype /Link -/A << /S /GoTo /D (a00165_g8a645f8831837320c4e0c704e871abcf) >> ->> endobj -3209 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 289.7614 176.5052 299.6891] -/Subtype /Link -/A << /S /GoTo /D (a00165_g3212e70c55244608ac16316888c354f0) >> ->> endobj -3211 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 275.1074 190.8811 286.0114] -/Subtype /Link -/A << /S /GoTo /D (a00165_g71e1b022f7b7fa3a154f19372b239935) >> ->> endobj -3213 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 261.4297 188.1217 272.3337] -/Subtype /Link -/A << /S /GoTo /D (a00165_ge3f8f7deae69854853b0c8ebb82c380d) >> ->> endobj -3215 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 247.752 198.0741 258.6559] -/Subtype /Link -/A << /S /GoTo /D (a00165_g79f9a50c2cccb967d38a2eeb45d2fd75) >> ->> endobj -3217 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 234.0743 194.2087 244.9782] -/Subtype /Link -/A << /S /GoTo /D (a00165_gf7dd2757d1e766f65b01ba7c91c660a0) >> ->> endobj -3219 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 221.3729 188.6793 231.3005] -/Subtype /Link -/A << /S /GoTo /D (a00165_g820fb27c50e7bb4ac6d9eae1b06630a5) >> ->> endobj -3221 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 207.6951 190.8912 217.6228] -/Subtype /Link -/A << /S /GoTo /D (a00165_g14e276fa8e765f774f4162619f1c8fc1) >> ->> endobj -3224 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.2447 147.1795 226.8757 158.0834] -/Subtype /Link -/A << /S /GoTo /D (a00165_ge6f849e94cf6e214be8ffa9a548ecfcd) >> ->> endobj -3226 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 133.5018 190.1438 144.4057] -/Subtype /Link -/A << /S /GoTo /D (a00165_g648ddfb2dde2cc55034e4e0ea41cb6d1) >> ->> endobj -3227 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 119.8241 174.6619 130.728] -/Subtype /Link -/A << /S /GoTo /D (a00165_gc364305cee969a0be43c071722b136e6) >> ->> endobj -3194 0 obj << -/D [3192 0 R /XYZ 90 757.9346 null] ->> endobj -1320 0 obj << -/D [3192 0 R /XYZ 90 739.9346 null] ->> endobj -174 0 obj << -/D [3192 0 R /XYZ 90 739.9346 null] ->> endobj -3195 0 obj << -/D [3192 0 R /XYZ 90 719.1618 null] ->> endobj -3196 0 obj << -/D [3192 0 R /XYZ 90 602.4452 null] ->> endobj -3200 0 obj << -/D [3192 0 R /XYZ 90 435.663 null] ->> endobj -3202 0 obj << -/D [3192 0 R /XYZ 90 376.1236 null] ->> endobj -3204 0 obj << -/D [3192 0 R /XYZ 90 335.9601 null] ->> endobj -3206 0 obj << -/D [3192 0 R /XYZ 90 321.1019 null] ->> endobj -3208 0 obj << -/D [3192 0 R /XYZ 90 307.4242 null] ->> endobj -3210 0 obj << -/D [3192 0 R /XYZ 90 293.7464 null] ->> endobj -3212 0 obj << -/D [3192 0 R /XYZ 90 279.0925 null] ->> endobj -3214 0 obj << -/D [3192 0 R /XYZ 90 265.4148 null] ->> endobj -3216 0 obj << -/D [3192 0 R /XYZ 90 251.7371 null] ->> endobj -3218 0 obj << -/D [3192 0 R /XYZ 90 238.0594 null] ->> endobj -3220 0 obj << -/D [3192 0 R /XYZ 90 225.3579 null] ->> endobj -3222 0 obj << -/D [3192 0 R /XYZ 90 166.8557 null] ->> endobj -3223 0 obj << -/D [3192 0 R /XYZ 90 166.8557 null] ->> endobj -3225 0 obj << -/D [3192 0 R /XYZ 90 151.1646 null] ->> endobj -3191 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3232 0 obj << -/Length 986 -/Filter /FlateDecode ->> -stream -xڥVn8}W M4AnC[DdkM_CeII , X ̜~M,b`b24uSF4ru!"SBݬE~@9#{=i'`#uC #R%jy 8"qn F:4#L0"iJݭRf'sУ7K>r–$S%㣓{W;ƴѫ8lEljф/ β0kB}V1v{?u AXKz^>O5Y)*^i`0Ib7 -9i/j<a@ JHڛwзbO0E1dр!cƏZ)>L 84X)Jd~_޲~ԬgP>K$sDbDH%¬2\$2a/%ԁ. shEGH^:=VwϳJJˆH%VوWm<~5hiK9vW U[3pP$6祒 -͋BgL`nzK(nX6: ' -'Q<fټ,-r{l;g؀\* !Qv ەA[UFM¼DJ'%OoI#nhk - $gdix. nY9v7 яTr՚pM 9Ku9(oЮRMsޜ*Ȇ}j;5rMݢ$c @bv%b/1I뛉W[!jh#bۉ!$5#qA#עX-V`&/b=G&Gsݘxn42OzzZ~endstream -endobj -3231 0 obj << -/Type /Page -/Contents 3232 0 R -/Resources 3230 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3238 0 R ->> endobj -3233 0 obj << -/D [3231 0 R /XYZ 90 757.9346 null] ->> endobj -3234 0 obj << -/D [3231 0 R /XYZ 90 739.9346 null] ->> endobj -3228 0 obj << -/D [3231 0 R /XYZ 90 723.1038 null] ->> endobj -3235 0 obj << -/D [3231 0 R /XYZ 90 723.1038 null] ->> endobj -3236 0 obj << -/D [3231 0 R /XYZ 90 539.9526 null] ->> endobj -3229 0 obj << -/D [3231 0 R /XYZ 90 515.6244 null] ->> endobj -3237 0 obj << -/D [3231 0 R /XYZ 90 515.6244 null] ->> endobj -3230 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F52 1229 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3241 0 obj << -/Length 284 -/Filter /FlateDecode ->> -stream -xڥMk0 >&xqc[Y`JmAωho?B 2\]Àa g>uB`J1B S{2aXrP kd12sMܠFO uM3(SThaArA7);v/e'烻نBymFF|endstream -endobj -3240 0 obj << -/Type /Page -/Contents 3241 0 R -/Resources 3239 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3238 0 R ->> endobj -3242 0 obj << -/D [3240 0 R /XYZ 90 757.9346 null] ->> endobj -3239 0 obj << -/Font << /F29 499 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3245 0 obj << -/Length 1390 -/Filter /FlateDecode ->> -stream -xڥYMo"GWp4RGwm|F0SLfļ?1 |cAi;[m;|/ku5[xgf3k=>Vf=xm}/n͜w"aK}?X0޽yڪ{o{8a.}_|]u @[Ŵ\11_e_-pg]Vf -Iee`Azu[5z CO>=~zøn`. -y-JT;(g>09Yէ~Sf\2@5 ^{K!PpǜPfL*f\Egj Py.2TԿtUr&fnAS:uZ23{ EQEjItr<_9ܮS4~ɨн>wM,6zfnMY[{)hBWgV^Չ_4åQ(yi(zi>Poڤd8jLC-Z4Lvm GiSA@ap 7{m[J 4T^ð-% N_Wuo\m0FX{'7 F[QeJufkO9`EAI7;Y6AdEO MlD.., 䗒 #-) ~x$%܅_Tݻ@Tp\Ќ|w~\dB]?o#]7cR$rLJuɻ`%%܅M]e0Q)/ٟhJg`)I0:%)唔ꈔ nO ./ǎxmq}aP]1O$8NH`tB ) Aݞ\^NH)oWc+b28;Q3%z""Z3H"`tD#)A\^H)o;"qTeE4RKꉈ(|YE$ GW#R#"Ȼ="R޺~ ~_6zjG~ \e"x0&Υ@?Nendstream -endobj -3244 0 obj << -/Type /Page -/Contents 3245 0 R -/Resources 3243 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3238 0 R -/Annots [ 3248 0 R 3249 0 R 3252 0 R 3253 0 R 3255 0 R 3257 0 R 3258 0 R 3260 0 R 3261 0 R 3263 0 R 3264 0 R 3266 0 R 3268 0 R 3270 0 R 3271 0 R 3273 0 R 3274 0 R 3276 0 R 3277 0 R 3279 0 R 3280 0 R 3282 0 R 3283 0 R 3285 0 R 3286 0 R ] ->> endobj -3248 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 468.5995 139.4144 491.5682] -/Subtype /Link -/A << /S /GoTo /D (a00048) >> ->> endobj -3249 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [159.2799 468.5995 192.535 491.5682] -/Subtype /Link -/A << /S /GoTo /D (a00049) >> ->> endobj -3252 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 384.1603 123.6537 393.9384] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -3253 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [124.1518 384.1603 133.8952 393.9384] -/Subtype /Link -/A << /S /GoTo /D (a00077_31471b5e27bda51832d0fa49bd6d9b54) >> ->> endobj -3255 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 373.2662 153.8002 382.1128] -/Subtype /Link -/A << /S /GoTo /D (a00077_e0b137a3875ad12a99e5e3e0e177fd12) >> ->> endobj -3257 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 358.2574 172.9089 369.1614] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -3258 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.8791 358.2574 202.2389 369.1614] -/Subtype /Link -/A << /S /GoTo /D (a00077_cfd36e02c7498d766ff802575e981612) >> ->> endobj -3260 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 347.3633 136.9336 356.2099] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -3261 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.4317 347.3633 160.455 356.2099] -/Subtype /Link -/A << /S /GoTo /D (a00077_e80af46ceef63eab3c786525370ae720) >> ->> endobj -3263 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 333.3308 138.5977 343.2585] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3264 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 333.3308 159.9074 343.2585] -/Subtype /Link -/A << /S /GoTo /D (a00077_e707c39412e09d3a47f0b3c5dad33725) >> ->> endobj -3266 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.9088 320.3794 206.1837 330.3071] -/Subtype /Link -/A << /S /GoTo /D (a00077_2391bb18db5f620e0e9fb848ae5ba5e9) >> ->> endobj -3268 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.9214 307.428 162.6669 317.3556] -/Subtype /Link -/A << /S /GoTo /D (a00077_5361ef75bfbdb469b5cc31f0060a2670) >> ->> endobj -3270 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 294.0582 133.6164 304.4042] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3271 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 294.0582 168.0469 304.4042] -/Subtype /Link -/A << /S /GoTo /D (a00077_564bab93ef6a268a5de2fab885c1d32a) >> ->> endobj -3273 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 281.1068 138.5977 291.4528] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3274 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 281.1068 183.6978 291.4528] -/Subtype /Link -/A << /S /GoTo /D (a00077_7a520a57d7d0541524f34a7685635597) >> ->> endobj -3276 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 267.5974 138.5977 278.5014] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3277 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 267.5974 166.5427 278.5014] -/Subtype /Link -/A << /S /GoTo /D (a00077_1d2f2751b0865045486c9aa59d0d0971) >> ->> endobj -3279 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 255.2039 138.5977 265.5499] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3280 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 255.2039 174.2934 265.5499] -/Subtype /Link -/A << /S /GoTo /D (a00077_20541305548441e5dcb2e1e7e6f300eb) >> ->> endobj -3282 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 242.2525 138.5977 252.5985] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3283 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 242.2525 172.6298 252.5985] -/Subtype /Link -/A << /S /GoTo /D (a00077_27df2817055bc099821d96eb60a40b34) >> ->> endobj -3285 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 229.301 138.5977 239.6471] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3286 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 229.301 197.4264 239.6471] -/Subtype /Link -/A << /S /GoTo /D (a00077_5e16ca335dfd7394527f602da879fca2) >> ->> endobj -3246 0 obj << -/D [3244 0 R /XYZ 90 757.9346 null] ->> endobj -178 0 obj << -/D [3244 0 R /XYZ 90 739.9346 null] ->> endobj -985 0 obj << -/D [3244 0 R /XYZ 90 553.9527 null] ->> endobj -182 0 obj << -/D [3244 0 R /XYZ 90 553.9527 null] ->> endobj -3247 0 obj << -/D [3244 0 R /XYZ 90 517.4245 null] ->> endobj -3250 0 obj << -/D [3244 0 R /XYZ 90 403.1102 null] ->> endobj -3251 0 obj << -/D [3244 0 R /XYZ 90 403.1102 null] ->> endobj -3254 0 obj << -/D [3244 0 R /XYZ 90 388.1454 null] ->> endobj -3256 0 obj << -/D [3244 0 R /XYZ 90 377.2512 null] ->> endobj -3259 0 obj << -/D [3244 0 R /XYZ 90 362.2425 null] ->> endobj -3262 0 obj << -/D [3244 0 R /XYZ 90 351.3484 null] ->> endobj -3265 0 obj << -/D [3244 0 R /XYZ 90 337.3159 null] ->> endobj -3267 0 obj << -/D [3244 0 R /XYZ 90 324.3645 null] ->> endobj -3269 0 obj << -/D [3244 0 R /XYZ 90 311.413 null] ->> endobj -3272 0 obj << -/D [3244 0 R /XYZ 90 298.0432 null] ->> endobj -3275 0 obj << -/D [3244 0 R /XYZ 90 285.0918 null] ->> endobj -3278 0 obj << -/D [3244 0 R /XYZ 90 271.5825 null] ->> endobj -3281 0 obj << -/D [3244 0 R /XYZ 90 259.1889 null] ->> endobj -3284 0 obj << -/D [3244 0 R /XYZ 90 246.2375 null] ->> endobj -3243 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3289 0 obj << -/Length 833 -/Filter /FlateDecode ->> -stream -xڥVn0+tzʱȂ(&9AtbT]/H%Ed@(q8<92`PK 1*7c7?n|_)cp=(IHd>hLBHd+>)Fa?lGh"[Ng~FjR3)JLY8wo<62|s 0)\xO1/W"?TEL.X^mFȢ6?\(n1 [ĝͬ@\ν25` qi22cv7.7]2*풯UwѸiՖw Q笮ޓ&SddB -7K9u LF.ڮ6s=Ƶ0kQu9{T Q8|)tJy }(͇HzJ) -4՟jCۛ'!*'[>0F2ERIYY@\xi9 -T{QUGҦ]ǁ#5?{26 6qdd|Kދ .wRLAvn=ݢ az -cj-ZB"5mwSsPFCbVfb6Oj;{MmHA_`mvJHݱ8jALcSd]D >+abb7q>zY-Rk#pďqS]wН +s>QI_=bC[r=7.'зfv:9v2:H]?&{./h7Ub[ݟoc;endstream -endobj -3288 0 obj << -/Type /Page -/Contents 3289 0 R -/Resources 3287 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3238 0 R -/Annots [ 3292 0 R 3293 0 R 3296 0 R 3297 0 R 3299 0 R 3301 0 R ] ->> endobj -3292 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 668.6407 162.0093 690.8921] -/Subtype /Link -/A << /S /GoTo /D (a00036) >> ->> endobj -3293 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.8747 668.6407 237.7248 690.8921] -/Subtype /Link -/A << /S /GoTo /D (a00037) >> ->> endobj -3296 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 583.4842 139.1456 594.3882] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -3297 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.6437 583.4842 146.6175 594.3882] -/Subtype /Link -/A << /S /GoTo /D (a00078_a9825b5977b2d4dec66e6bd09e6ae6ea) >> ->> endobj -3299 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 570.5328 179.9123 581.4367] -/Subtype /Link -/A << /S /GoTo /D (a00078_4b1b1436b50ed7638aece35f41421196) >> ->> endobj -3301 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 558.1393 157.1179 568.4853] -/Subtype /Link -/A << /S /GoTo /D (a00078_4da86e9feb5e5835eb15163c2cb61116) >> ->> endobj -3290 0 obj << -/D [3288 0 R /XYZ 90 757.9346 null] ->> endobj -986 0 obj << -/D [3288 0 R /XYZ 90 739.9346 null] ->> endobj -186 0 obj << -/D [3288 0 R /XYZ 90 739.9346 null] ->> endobj -3291 0 obj << -/D [3288 0 R /XYZ 90 717.8172 null] ->> endobj -3294 0 obj << -/D [3288 0 R /XYZ 90 602.4342 null] ->> endobj -3295 0 obj << -/D [3288 0 R /XYZ 90 602.4342 null] ->> endobj -3298 0 obj << -/D [3288 0 R /XYZ 90 587.4693 null] ->> endobj -3300 0 obj << -/D [3288 0 R /XYZ 90 574.5178 null] ->> endobj -3287 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3305 0 obj << -/Length 594 -/Filter /FlateDecode ->> -stream -xڥTn0+tb|1p@6- Um2}IRȖQ:cAp )D\"om~;5i^F_nRx NC!:K ɶm_VŦ|.rkms,Z7k@&.]R'@i. ^"WF"ˆ*?f(E]'UtxFwTT!B\I= R7Wc8M-13=m^VzP4K[kC3,\?bLCws/*kF~D Sڢ3)C }=y7VN -H2^,ظd|krr:q@]k.B[냯gW!`9flYfu:1#۫Qj6s*x:!c71Ä#uپ7)&Aǻ>EB1\L^YuV39LL׃{Pͳe`h0C|vVKs( 0͑ʾWfnuXߏ xr "Cg'M~x4_Wn҂Qendstream -endobj -3304 0 obj << -/Type /Page -/Contents 3305 0 R -/Resources 3303 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3238 0 R -/Annots [ 3310 0 R 3312 0 R ] ->> endobj -3310 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.5401 617.7467 188.1115 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00079_9a84c69ec5a4705ccb1ca99fcd120add) >> ->> endobj -3312 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [210.7662 602.7379 245.9639 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00079_1513a9e88921750d2a611b518f6fc207) >> ->> endobj -3306 0 obj << -/D [3304 0 R /XYZ 90 757.9346 null] ->> endobj -987 0 obj << -/D [3304 0 R /XYZ 90 739.9346 null] ->> endobj -190 0 obj << -/D [3304 0 R /XYZ 90 739.9346 null] ->> endobj -3307 0 obj << -/D [3304 0 R /XYZ 90 716.7484 null] ->> endobj -3308 0 obj << -/D [3304 0 R /XYZ 90 634.6393 null] ->> endobj -3309 0 obj << -/D [3304 0 R /XYZ 90 634.6393 null] ->> endobj -3311 0 obj << -/D [3304 0 R /XYZ 90 621.7317 null] ->> endobj -3303 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3315 0 obj << -/Length 1204 -/Filter /FlateDecode ->> -stream -xڥXnF}WQzf<(&zs@(M6!K-ԎDs̙pYAFmFgKV8uu4#3^sbɥTl~OTt/ͺϛ|\0;/Vͺi0m5(BЬ[0D8 %9^$!N{`*_tL9 "KF)4a qrW֛ͮˈS nr;%+uZn}XB hôZ]F)=^˔Wˉsu{P3Kfŀqnj"8-75m)3(wT1>Uupe>&* k|<'i2$auAK\*b(ܜKk:(Hgii;&,ae-*)rdfcJ38ܤ=ʈ2 f(4! m8/.Fi8'ZնP+WKYܚ`o$n/:3Qb$HG]c@û& -ޡbyA%Jc -t~ޥ3@@aU}Xە6hss9psy7=.$q̻MX~+C.-4EZ.N(6nq@̙luQN_8 , -3-;fЈ=(/ {djry\nq4PSS`ʈw|sz5և1cޟ'ā\jE$0/v>Z(9&f'8<Iw.gS`?6~#gȜR_\Kzg8WsQoUTݷendstream -endobj -3314 0 obj << -/Type /Page -/Contents 3315 0 R -/Resources 3313 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3238 0 R -/Annots [ 3320 0 R 3322 0 R 3323 0 R 3325 0 R 3326 0 R 3328 0 R 3330 0 R 3332 0 R 3334 0 R 3336 0 R 3338 0 R 3340 0 R 3342 0 R ] ->> endobj -3320 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [172.012 615.6894 195.0353 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00080_c39694ece9526b84012f90f2bb00af9f) >> ->> endobj -3322 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 602.7379 139.1456 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -3323 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.7605 602.7379 172.3606 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00080_9dd8edeece221c853a4c4516bf1b01c2) >> ->> endobj -3325 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 589.7865 123.6537 600.6904] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -3326 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [159.8576 589.7865 191.7375 600.6904] -/Subtype /Link -/A << /S /GoTo /D (a00080_e261f08e1556287d241764fb2e99fc26) >> ->> endobj -3328 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 576.8351 169.103 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00080_4c6f843219271d25766ee5969e435d1a) >> ->> endobj -3330 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 564.4415 169.85 574.7876] -/Subtype /Link -/A << /S /GoTo /D (a00080_447eb700ea7a185e0f155934995d49e5) >> ->> endobj -3332 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 552.9895 153.8002 561.8361] -/Subtype /Link -/A << /S /GoTo /D (a00080_94fcc9f5c47f419040d849ce58beae35) >> ->> endobj -3334 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [166.7715 537.9808 181.4961 548.8847] -/Subtype /Link -/A << /S /GoTo /D (a00080_5e274a8f8b5fb2b3999c54fe27c76e46) >> ->> endobj -3336 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.9214 527.0866 141.0881 535.9333] -/Subtype /Link -/A << /S /GoTo /D (a00080_468c04fff28e784f93ebc3f0849211dd) >> ->> endobj -3338 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 512.0779 176.216 522.9818] -/Subtype /Link -/A << /S /GoTo /D (a00080_78f82878f3fd0e7401c7d7d3b3fefbef) >> ->> endobj -3340 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.9214 499.1265 163.2246 510.0304] -/Subtype /Link -/A << /S /GoTo /D (a00080_16a3a3056f44b7245ce085b937a269dd) >> ->> endobj -3342 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.7915 486.175 198.9209 497.079] -/Subtype /Link -/A << /S /GoTo /D (a00080_6df929b448ea98bc44d41f5e96237bda) >> ->> endobj -3316 0 obj << -/D [3314 0 R /XYZ 90 757.9346 null] ->> endobj -988 0 obj << -/D [3314 0 R /XYZ 90 739.9346 null] ->> endobj -194 0 obj << -/D [3314 0 R /XYZ 90 739.9346 null] ->> endobj -3317 0 obj << -/D [3314 0 R /XYZ 90 716.7484 null] ->> endobj -3318 0 obj << -/D [3314 0 R /XYZ 90 634.6393 null] ->> endobj -3319 0 obj << -/D [3314 0 R /XYZ 90 634.6393 null] ->> endobj -3321 0 obj << -/D [3314 0 R /XYZ 90 619.6744 null] ->> endobj -3324 0 obj << -/D [3314 0 R /XYZ 90 606.723 null] ->> endobj -3327 0 obj << -/D [3314 0 R /XYZ 90 593.7716 null] ->> endobj -3329 0 obj << -/D [3314 0 R /XYZ 90 580.8201 null] ->> endobj -3331 0 obj << -/D [3314 0 R /XYZ 90 568.4266 null] ->> endobj -3333 0 obj << -/D [3314 0 R /XYZ 90 556.9745 null] ->> endobj -3335 0 obj << -/D [3314 0 R /XYZ 90 541.9658 null] ->> endobj -3337 0 obj << -/D [3314 0 R /XYZ 90 531.0717 null] ->> endobj -3339 0 obj << -/D [3314 0 R /XYZ 90 516.063 null] ->> endobj -3341 0 obj << -/D [3314 0 R /XYZ 90 503.1115 null] ->> endobj -3313 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3345 0 obj << -/Length 714 -/Filter /FlateDecode ->> -stream -xڥVr +t qif:&%ccGS[jemE)IJE3,>c0?ψb⍙-OG.QxnN$#mˌ -inm,lG8fx6?τW"_HU:&?8j]I6 -̻54A -e4ܖp^0Qz~i c~!Lodj 1-=WբE}\'͵^uڽ]P# - :|RVvp١>>nq-F/8endstream -endobj -3344 0 obj << -/Type /Page -/Contents 3345 0 R -/Resources 3343 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3357 0 R -/Annots [ 3350 0 R 3352 0 R 3354 0 R 3356 0 R ] ->> endobj -3350 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.7915 615.6894 192.2756 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00081_b42c7af6114fde5d21206a2e18a7d3ee) >> ->> endobj -3352 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.7915 602.7379 194.4975 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00081_164124d48fe85bc98d9a300382a5245d) >> ->> endobj -3354 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 591.8438 165.1479 600.6904] -/Subtype /Link -/A << /S /GoTo /D (a00081_5595902fd42d874e35a70206fad8f6d0) >> ->> endobj -3356 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.3873 578.8924 163.3048 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00081_b5801722740492e69bcc73687476009f) >> ->> endobj -3346 0 obj << -/D [3344 0 R /XYZ 90 757.9346 null] ->> endobj -989 0 obj << -/D [3344 0 R /XYZ 90 739.9346 null] ->> endobj -198 0 obj << -/D [3344 0 R /XYZ 90 739.9346 null] ->> endobj -3347 0 obj << -/D [3344 0 R /XYZ 90 717.8172 null] ->> endobj -3348 0 obj << -/D [3344 0 R /XYZ 90 634.6393 null] ->> endobj -3349 0 obj << -/D [3344 0 R /XYZ 90 634.6393 null] ->> endobj -3351 0 obj << -/D [3344 0 R /XYZ 90 619.6744 null] ->> endobj -3353 0 obj << -/D [3344 0 R /XYZ 90 606.723 null] ->> endobj -3355 0 obj << -/D [3344 0 R /XYZ 90 595.8288 null] ->> endobj -3343 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3360 0 obj << -/Length 1383 -/Filter /FlateDecode ->> -stream -xڥXM6W{Ƞ$doI8vWWv$I3H-edVg{Qdf,Be+psnW?b&3(ۻ>"vn L_L ⥤k ttmלݩ.XݦՇۛۑ#*͊n̾J=~vg`^ |`ab ( rawXp+:mi€* لTiRrR_bpyX$h~uJ FʾJ,c(6 ZTr+mSxi[hsDocSwῳʱ9t@eGlt m <|j4Ɓ% ϧ2Ď/U0\ՇE5]Tmip徴mɹq$IC S\/΃5_kJy)W/Ag, giݭ7?h,r`aC/VC P3=(Ey@YW #gy/Wgq-, ۴crc> endobj -3363 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 589.168 162.5673 610.0795] -/Subtype /Link -/A << /S /GoTo /D (a00037) >> ->> endobj -3366 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 504.6641 123.6537 515.568] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -3367 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [124.1518 504.6641 133.8952 515.568] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -3368 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.3933 504.6641 167.3794 515.568] -/Subtype /Link -/A << /S /GoTo /D (a00082_17aacf7c5e2046c1f3ab50faa1b2f7eb) >> ->> endobj -3370 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.4319 491.7126 157.1379 502.6166] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3371 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.108 491.7126 196.4302 502.6166] -/Subtype /Link -/A << /S /GoTo /D (a00082_31f25efccba9fd043047133d0d0ba5ab) >> ->> endobj -3373 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 478.7612 133.6164 489.6651] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3374 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.5865 478.7612 171.7929 489.6651] -/Subtype /Link -/A << /S /GoTo /D (a00082_b973f2e16c2883a8a0164d716cce5a31) >> ->> endobj -3376 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 465.8098 167.1604 476.7137] -/Subtype /Link -/A << /S /GoTo /D (a00082_c3d1bfbb1abde31973c015de97ce2f84) >> ->> endobj -3378 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 453.8346 138.5977 463.7623] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3379 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 453.8346 171.5239 463.7623] -/Subtype /Link -/A << /S /GoTo /D (a00082_19b82696bd84a803250cbf9812f2f125) >> ->> endobj -3381 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 440.8832 138.5977 450.8108] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3382 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 440.8832 170.4081 450.8108] -/Subtype /Link -/A << /S /GoTo /D (a00082_a408ca8630154ebd039f37a828399f7b) >> ->> endobj -3384 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 426.9555 157.2078 437.8594] -/Subtype /Link -/A << /S /GoTo /D (a00083) >> ->> endobj -3385 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.706 426.9555 172.7794 437.8594] -/Subtype /Link -/A << /S /GoTo /D (a00082_d6bd03239291629676e4c0286ebb650f) >> ->> endobj -3387 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.3868 414.004 195.9519 424.908] -/Subtype /Link -/A << /S /GoTo /D (a00082_a6bfaf327ce839ba70accd71014398d0) >> ->> endobj -3389 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [172.012 401.0526 192.2657 411.9565] -/Subtype /Link -/A << /S /GoTo /D (a00082_fda184638130452f3570966acc5b97f9) >> ->> endobj -3361 0 obj << -/D [3359 0 R /XYZ 90 757.9346 null] ->> endobj -990 0 obj << -/D [3359 0 R /XYZ 90 739.9346 null] ->> endobj -202 0 obj << -/D [3359 0 R /XYZ 90 739.9346 null] ->> endobj -3362 0 obj << -/D [3359 0 R /XYZ 90 685.9318 null] ->> endobj -3364 0 obj << -/D [3359 0 R /XYZ 90 523.614 null] ->> endobj -3365 0 obj << -/D [3359 0 R /XYZ 90 523.614 null] ->> endobj -3369 0 obj << -/D [3359 0 R /XYZ 90 508.6491 null] ->> endobj -3372 0 obj << -/D [3359 0 R /XYZ 90 495.6977 null] ->> endobj -3375 0 obj << -/D [3359 0 R /XYZ 90 482.7463 null] ->> endobj -3377 0 obj << -/D [3359 0 R /XYZ 90 469.7948 null] ->> endobj -3380 0 obj << -/D [3359 0 R /XYZ 90 457.8196 null] ->> endobj -3383 0 obj << -/D [3359 0 R /XYZ 90 444.8682 null] ->> endobj -3386 0 obj << -/D [3359 0 R /XYZ 90 430.9405 null] ->> endobj -3388 0 obj << -/D [3359 0 R /XYZ 90 417.9891 null] ->> endobj -3358 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3392 0 obj << -/Length 609 -/Filter /FlateDecode ->> -stream -xڥUMo@W39V4Q* $,*1]{UUo߼73` -TK,*&Mq{GmiljUfP$!@3=v|z ˰tWyƷn!/i !*\a%Wr+$52'ZJ_Aǁ'lNO;E -5V;-V@JY$Wd #ؕliv"ۖ&Û?o+i endstream -endobj -3391 0 obj << -/Type /Page -/Contents 3392 0 R -/Resources 3390 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3357 0 R -/Annots [ 3397 0 R 3398 0 R 3400 0 R ] ->> endobj -3397 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 615.6894 133.6164 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3398 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.5865 615.6894 154.6474 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00083_5e8637b1514d03eb3eb12dc9a502e27e) >> ->> endobj -3400 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.7915 602.7379 190.0639 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00083_20fae11b540a561c622a0d74cb4b9f97) >> ->> endobj -3393 0 obj << -/D [3391 0 R /XYZ 90 757.9346 null] ->> endobj -991 0 obj << -/D [3391 0 R /XYZ 90 739.9346 null] ->> endobj -206 0 obj << -/D [3391 0 R /XYZ 90 739.9346 null] ->> endobj -3394 0 obj << -/D [3391 0 R /XYZ 90 716.7484 null] ->> endobj -3395 0 obj << -/D [3391 0 R /XYZ 90 634.6393 null] ->> endobj -3396 0 obj << -/D [3391 0 R /XYZ 90 634.6393 null] ->> endobj -3399 0 obj << -/D [3391 0 R /XYZ 90 619.6744 null] ->> endobj -3390 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3403 0 obj << -/Length 619 -/Filter /FlateDecode ->> -stream -xڥUKo0 Wzǡͭ-QX`mɩ[aH@R sB\'.h&I N/ܥ9u:42őC&9RavD2eQA>'h3Wiz\MH"P%468$OmL8ҿtH.E'?~=0B10JF;˘SLH0;]-w~C7IoȜR7*pۣ7ߥUg<ܯvcűZjC6z<([ : ȗ KUcdΌx2d΢$5;ET"fP1hw4k Ζd@ai\職&4k|p |jo"Zm" <UjdFHFhX+_͞GGYʹ0>U]3)|}\ 9Y[N󜠾sYt;tUn -NL:0 NSςf h {d4QΌYEGʖDs@ NH݀6Vp;Ay<>@i>*b~힎ׅfwzUhendstream -endobj -3402 0 obj << -/Type /Page -/Contents 3403 0 R -/Resources 3401 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3357 0 R -/Annots [ 3406 0 R 3409 0 R 3410 0 R ] ->> endobj -3406 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 667.9234 139.9724 690.8921] -/Subtype /Link -/A << /S /GoTo /D (a00049) >> ->> endobj -3409 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 584.4605 130.8466 594.3882] -/Subtype /Link -/A << /S /GoTo /D (a00155_g3983e0c026396d5c4506779d770007ba) >> ->> endobj -3410 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.3447 584.4605 140.5301 594.3882] -/Subtype /Link -/A << /S /GoTo /D (a00084_c3fa0fa86689e3e7c039a16c16861dbe) >> ->> endobj -3404 0 obj << -/D [3402 0 R /XYZ 90 757.9346 null] ->> endobj -992 0 obj << -/D [3402 0 R /XYZ 90 739.9346 null] ->> endobj -210 0 obj << -/D [3402 0 R /XYZ 90 739.9346 null] ->> endobj -3405 0 obj << -/D [3402 0 R /XYZ 90 716.7484 null] ->> endobj -3407 0 obj << -/D [3402 0 R /XYZ 90 602.4342 null] ->> endobj -3408 0 obj << -/D [3402 0 R /XYZ 90 602.4342 null] ->> endobj -3401 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3413 0 obj << -/Length 1159 -/Filter /FlateDecode ->> -stream -xڭMo8::@[9.`ַ(\[I\#khw( -mڤ>X^$# +PN71XiB)XATe> dS x?lO PM4pyGnYćvԿ7<$v] ;ʋʦ1 PV2-ʦE_A t{Pv((,ޥ;A m-]pb47YZ{wUwKY(] tW3x/w57uwV36 hmE*I]|dE[〯@tty[sx/tx.rtZM* Yk/*[kχXb<`mLW6rkx1cMmm`\9Qd%Z[0' - uŗ`IvD 0Mf1Jbrٺ_x5Y}:E)p@endstream -endobj -3412 0 obj << -/Type /Page -/Contents 3413 0 R -/Resources 3411 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3357 0 R -/Annots [ 3416 0 R 3417 0 R 3418 0 R 3421 0 R 3422 0 R 3424 0 R 3426 0 R 3428 0 R 3430 0 R 3432 0 R 3433 0 R 3435 0 R 3436 0 R 3438 0 R 3439 0 R 3441 0 R 3442 0 R ] ->> endobj -3416 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 667.9234 162.5673 690.8921] -/Subtype /Link -/A << /S /GoTo /D (a00037) >> ->> endobj -3417 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.5561 667.9234 193.8396 690.8921] -/Subtype /Link -/A << /S /GoTo /D (a00038) >> ->> endobj -3418 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.7051 667.9234 242.5466 690.8921] -/Subtype /Link -/A << /S /GoTo /D (a00039) >> ->> endobj -3421 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 584.4605 133.6164 594.3882] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3422 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 584.4605 154.3681 594.3882] -/Subtype /Link -/A << /S /GoTo /D (a00085_0bb4f34164e7207c2db26b77f23ccfff) >> ->> endobj -3424 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 572.5901 150.7619 581.4367] -/Subtype /Link -/A << /S /GoTo /D (a00085_3592a1f5ae100db2ed9c0810b41c7bc7) >> ->> endobj -3426 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 559.6386 162.3783 568.4853] -/Subtype /Link -/A << /S /GoTo /D (a00085_668cab7d54ff0a2fc2a2179ca06b0798) >> ->> endobj -3428 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 544.6299 171.2348 555.5339] -/Subtype /Link -/A << /S /GoTo /D (a00085_503c2994a4e52300516e2b820f0fc65b) >> ->> endobj -3430 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 531.6785 159.6186 542.5824] -/Subtype /Link -/A << /S /GoTo /D (a00085_04833004cec509a41c502429df308e35) >> ->> endobj -3432 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 518.7271 138.5977 529.631] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3433 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 518.7271 169.87 529.631] -/Subtype /Link -/A << /S /GoTo /D (a00085_a312da7b5f6441140721ec7e55f345a8) >> ->> endobj -3435 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 506.7519 138.5977 516.6796] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3436 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 506.7519 169.3121 516.6796] -/Subtype /Link -/A << /S /GoTo /D (a00085_68204df6bde3e3c27271ebde10579a57) >> ->> endobj -3438 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 493.8005 138.5977 503.7281] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3439 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 493.8005 168.0569 503.7281] -/Subtype /Link -/A << /S /GoTo /D (a00085_0560495c60c68d62617ff1f3d0c424a4) >> ->> endobj -3441 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 479.8728 138.5977 490.7767] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3442 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 479.8728 170.418 490.7767] -/Subtype /Link -/A << /S /GoTo /D (a00085_5ed2615cec9e633d90ac5968771976eb) >> ->> endobj -3414 0 obj << -/D [3412 0 R /XYZ 90 757.9346 null] ->> endobj -993 0 obj << -/D [3412 0 R /XYZ 90 739.9346 null] ->> endobj -214 0 obj << -/D [3412 0 R /XYZ 90 739.9346 null] ->> endobj -3415 0 obj << -/D [3412 0 R /XYZ 90 716.7484 null] ->> endobj -3419 0 obj << -/D [3412 0 R /XYZ 90 602.4342 null] ->> endobj -3420 0 obj << -/D [3412 0 R /XYZ 90 602.4342 null] ->> endobj -3423 0 obj << -/D [3412 0 R /XYZ 90 588.4455 null] ->> endobj -3425 0 obj << -/D [3412 0 R /XYZ 90 576.5751 null] ->> endobj -3427 0 obj << -/D [3412 0 R /XYZ 90 563.6237 null] ->> endobj -3429 0 obj << -/D [3412 0 R /XYZ 90 548.615 null] ->> endobj -3431 0 obj << -/D [3412 0 R /XYZ 90 535.6635 null] ->> endobj -3434 0 obj << -/D [3412 0 R /XYZ 90 522.7121 null] ->> endobj -3437 0 obj << -/D [3412 0 R /XYZ 90 510.7369 null] ->> endobj -3440 0 obj << -/D [3412 0 R /XYZ 90 497.7855 null] ->> endobj -3411 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3445 0 obj << -/Length 978 -/Filter /FlateDecode ->> -stream -xڥWMs9+UV>rݘ=9. -^j RR)hFOݯuk$RaJ ZlzOa~ ~2H*hA$(l0$ƔsAP!A ܍av#|YuK3z&'*$G\-#f18ea3q} -&"V@tcW~[eJ VTv% qJaf3&_M:L0EQu͑ф8gLj -)DC1pRBEB`tĚuh,!ٹIn/ 5-$!Jk9NծOf}^+!uFrvu M8vMܬr߳-d]c@_ JęovOAlwCd=v_ؓ |]ؿ#]=3r3K4UzF1SO@CW0ũn:]?ic_Y(*-岈rY{Y/1HZGBUr-IYO5MCi)/JrXYHNo^?"yAb7MyB6~AcBa{'Y<.U\񅕏/ANA?n5L hK,{8FZ1c7VSjI3"KjXYg +aum%iPx*҃ܞ@u)/]ێa a,HAMAlB{CS(|-\hAtvD+꯬cF×{Hﶟkour-7@-wLendstream -endobj -3444 0 obj << -/Type /Page -/Contents 3445 0 R -/Resources 3443 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3357 0 R -/Annots [ 3448 0 R 3449 0 R 3452 0 R 3453 0 R 3454 0 R 3455 0 R 3456 0 R 3457 0 R 3458 0 R ] ->> endobj -3448 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 668.6407 142.7416 690.8921] -/Subtype /Link -/A << /S /GoTo /D (a00044) >> ->> endobj -3449 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [162.6071 668.6407 199.1894 690.8921] -/Subtype /Link -/A << /S /GoTo /D (a00045) >> ->> endobj -3452 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 584.0421 161.8301 594.3882] -/Subtype /Link -/A << /S /GoTo /D (a00086_cca775e46d4405b7775b328f7694f7e7) >> ->> endobj -3453 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 571.0907 148.62 581.4367] -/Subtype /Link -/A << /S /GoTo /D (a00143_g54a466311575a727830a92a6c3621cb2) >> ->> endobj -3454 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 557.5814 159.6884 568.4853] -/Subtype /Link -/A << /S /GoTo /D (a00143_g5eced097547fd3fac4ba2a255493d921) >> ->> endobj -3455 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 545.6062 133.6164 555.5339] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3456 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 545.6062 169.87 555.5339] -/Subtype /Link -/A << /S /GoTo /D (a00143_gd85fc90c30d1fc37c63c4844be5fe09d) >> ->> endobj -3457 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 532.6548 133.6164 542.5824] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3458 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 532.6548 154.3681 542.5824] -/Subtype /Link -/A << /S /GoTo /D (a00143_g41bf109b6a45328d5744c0a76563fb6c) >> ->> endobj -3446 0 obj << -/D [3444 0 R /XYZ 90 757.9346 null] ->> endobj -994 0 obj << -/D [3444 0 R /XYZ 90 739.9346 null] ->> endobj -218 0 obj << -/D [3444 0 R /XYZ 90 739.9346 null] ->> endobj -3447 0 obj << -/D [3444 0 R /XYZ 90 717.8172 null] ->> endobj -3450 0 obj << -/D [3444 0 R /XYZ 90 602.4342 null] ->> endobj -3451 0 obj << -/D [3444 0 R /XYZ 90 602.4342 null] ->> endobj -3443 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3461 0 obj << -/Length 1040 -/Filter /FlateDecode ->> -stream -xڝWmo6_!`_`x|g0 ؐX[oM(2 L(R")V0)sϝ$ 4R˅JÊ&8aq9tm=%V1lvD2`fy U$]7ay];5p~esz}Gj+Y}B-R]Q­3>PֲwNXh7E(χ bd1F -h*n PTyyF$)9`-[hat|~Ɛb%0X)01$BQT f.qMVnq.XE|BkaYH&~& т68PS5zMOs0uyE=%xXKyy"7@ޱ:]dQDjDOZ+Aa1 -/}3334x!3 ~̼̼,0LqWLrZ(^nhQب> ` -ףlxQxF~>&>-t`}pQw]np돎s|5׌'F -W?Hο$kGWB> endstream -endobj -3460 0 obj << -/Type /Page -/Contents 3461 0 R -/Resources 3459 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3474 0 R -/Annots [ 3464 0 R 3465 0 R 3466 0 R 3467 0 R 3468 0 R 3471 0 R 3473 0 R ] ->> endobj -3464 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.6562 622.7225 413.364 633.6264] -/Subtype /Link -/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> ->> endobj -3465 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 587.1107 139.9724 610.0795] -/Subtype /Link -/A << /S /GoTo /D (a00049) >> ->> endobj -3466 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.9612 587.1107 263.4979 610.0795] -/Subtype /Link -/A << /S /GoTo /D (a00042) >> ->> endobj -3467 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [266.4867 587.1107 399.7556 610.0795] -/Subtype /Link -/A << /S /GoTo /D (a00043) >> ->> endobj -3468 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [419.6211 587.1107 467.8198 610.0795] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3471 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.4252 505.6403 187.573 515.568] -/Subtype /Link -/A << /S /GoTo /D (a00087_e8eb428c05bc1dee022246a3063d277c) >> ->> endobj -3473 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.4252 492.6889 200.6041 502.6166] -/Subtype /Link -/A << /S /GoTo /D (a00087_fe557d333c06cf65f52023f45f5b0a3a) >> ->> endobj -3462 0 obj << -/D [3460 0 R /XYZ 90 757.9346 null] ->> endobj -995 0 obj << -/D [3460 0 R /XYZ 90 739.9346 null] ->> endobj -222 0 obj << -/D [3460 0 R /XYZ 90 739.9346 null] ->> endobj -3463 0 obj << -/D [3460 0 R /XYZ 90 687.0765 null] ->> endobj -3469 0 obj << -/D [3460 0 R /XYZ 90 523.614 null] ->> endobj -3470 0 obj << -/D [3460 0 R /XYZ 90 523.614 null] ->> endobj -3472 0 obj << -/D [3460 0 R /XYZ 90 509.6254 null] ->> endobj -3459 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3477 0 obj << -/Length 2106 -/Filter /FlateDecode ->> -stream -xڽZ]o6}0/PqM( -mA؝mf0Pl%V\I$Rd g<Υ%h%?xBq\oxy]םA6t/T/5ҒA$(a* /h -"ƻb(l돡ۯ}wEU:~[6C1Tmsׁ#*$ǟr/0b:˯pњ. N?,؎c -Ž'L83gLaMX!B21^ݗu4mCy[\uirr204G;oU$d )C##RU͝=QXtt3Տum7W" m->aLzc/{rwS>_xbCb -J%A2@(-V]Yl!_> endobj -3480 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [107.8759 622.1864 146.9492 633.0904] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -3483 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 511.2147 166.8215 522.1186] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -3484 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 511.2147 198.084 522.1186] -/Subtype /Link -/A << /S /GoTo /D (a00088_79510aa86d3fa0a0fc6cfc49b1da7279) >> ->> endobj -3486 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 472.02 138.5977 482.924] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3487 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 472.02 159.9075 482.924] -/Subtype /Link -/A << /S /GoTo /D (a00088_0cd09beee671e7e9efb0b4aced10249e) >> ->> endobj -3489 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 432.8253 138.5977 443.7293] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3490 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 432.8253 160.4555 443.7293] -/Subtype /Link -/A << /S /GoTo /D (a00088_1df6aa054ef2fa634ac4c6f418228285) >> ->> endobj -3492 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 394.1886 133.6164 404.5346] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3493 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 394.1886 166.5427 404.5346] -/Subtype /Link -/A << /S /GoTo /D (a00088_70297b3e6d4eaae7bd828cb50bd1efe3) >> ->> endobj -3495 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 354.9939 133.6164 365.34] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3496 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 354.9939 167.6585 365.34] -/Subtype /Link -/A << /S /GoTo /D (a00088_8f6b08a5ba2a8d75ca7279e2056aa8c6) >> ->> endobj -3498 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 316.2176 138.5977 326.1453] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3499 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 316.2176 153.2625 326.1453] -/Subtype /Link -/A << /S /GoTo /D (a00088_0ef3ae2764714bf90620075c374c262e) >> ->> endobj -3501 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 277.0229 138.5977 286.9506] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3502 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 277.0229 156.5899 286.9506] -/Subtype /Link -/A << /S /GoTo /D (a00088_3347ef1b6e8581402445d1a0280c7a14) >> ->> endobj -3504 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 237.8283 138.5977 247.7559] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3505 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 237.8283 179.8421 247.7559] -/Subtype /Link -/A << /S /GoTo /D (a00088_db7a3fadb68df5fdd37e8b91a2c751ea) >> ->> endobj -3507 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 198.6336 133.6164 208.5613] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3508 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 198.6336 144.4057 208.5613] -/Subtype /Link -/A << /S /GoTo /D (a00088_ef661afb3aa82f0437d2ed8d3c20be76) >> ->> endobj -3510 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 159.4389 133.6164 169.3666] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3511 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 159.4389 144.9637 169.3666] -/Subtype /Link -/A << /S /GoTo /D (a00088_eb9fcbd3c9b0a795dcd63f33c323d65c) >> ->> endobj -3513 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 120.2443 133.6164 130.1719] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3514 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 120.2443 147.1754 130.1719] -/Subtype /Link -/A << /S /GoTo /D (a00088_e3aa9cc25e45b663e6aabc54c013019e) >> ->> endobj -3478 0 obj << -/D [3476 0 R /XYZ 90 757.9346 null] ->> endobj -714 0 obj << -/D [3476 0 R /XYZ 90 739.9346 null] ->> endobj -226 0 obj << -/D [3476 0 R /XYZ 90 739.9346 null] ->> endobj -3479 0 obj << -/D [3476 0 R /XYZ 90 685.4723 null] ->> endobj -3481 0 obj << -/D [3476 0 R /XYZ 90 530.3348 null] ->> endobj -3482 0 obj << -/D [3476 0 R /XYZ 90 530.3348 null] ->> endobj -3485 0 obj << -/D [3476 0 R /XYZ 90 491.2835 null] ->> endobj -3488 0 obj << -/D [3476 0 R /XYZ 90 452.0888 null] ->> endobj -3491 0 obj << -/D [3476 0 R /XYZ 90 412.8942 null] ->> endobj -3494 0 obj << -/D [3476 0 R /XYZ 90 373.6995 null] ->> endobj -3497 0 obj << -/D [3476 0 R /XYZ 90 334.5049 null] ->> endobj -3500 0 obj << -/D [3476 0 R /XYZ 90 295.3102 null] ->> endobj -3503 0 obj << -/D [3476 0 R /XYZ 90 256.1155 null] ->> endobj -3506 0 obj << -/D [3476 0 R /XYZ 90 216.9208 null] ->> endobj -3509 0 obj << -/D [3476 0 R /XYZ 90 177.7262 null] ->> endobj -3512 0 obj << -/D [3476 0 R /XYZ 90 138.5315 null] ->> endobj -3475 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3517 0 obj << -/Length 824 -/Filter /FlateDecode ->> -stream -xڭKo@>ۙ}o}ETM%QDHبɿwX31` 50'N']LYq|]\iF8tt|0 -a, -?VI4_ fy1Q2jp?J7tJhwr{Q^%*C`O"Lg_p(2AVSΆ+A3)LCԦwe@\$s دmfu -A>E[ۇjMp9` 3 .Z5y)qܣ xrh 8PRvcbXMn[T%T-kTGMuq5!lOvl3Pjch֫hww;C袖ִ.mU5]<JTQ$I#mho#LPa/War1/i>D̎J֊qUWg\ jwAW婮^.]ZWtŪzW tC)sVJ0L= 2X/Iz-tDWaqٜ4| /PTG1Ր.O?F$s<;8N:ޥ0~;e=xG-y/kb T`ryd3OY&۰- y>WmW$Q]1h~ -mepʉZwk-^UAӳN@=G]~rlL!apI~LK B#XkfȚ7y6ˋ݊*N}7!endstream -endobj -3516 0 obj << -/Type /Page -/Contents 3517 0 R -/Resources 3515 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3474 0 R -/Annots [ 3520 0 R 3521 0 R 3523 0 R 3524 0 R 3526 0 R 3527 0 R 3529 0 R 3530 0 R ] ->> endobj -3520 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 726.8189 133.6164 737.7228] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3521 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 726.8189 185.3615 737.7228] -/Subtype /Link -/A << /S /GoTo /D (a00088_a5f58074435cdc180f17de69651beebd) >> ->> endobj -3523 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 688.9408 133.6164 698.8685] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3524 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 688.9408 157.1377 698.8685] -/Subtype /Link -/A << /S /GoTo /D (a00088_2d9732cf5752d30bd11cb25dc7d0c8d3) >> ->> endobj -3526 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 650.0865 133.6164 660.0142] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3527 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 650.0865 152.1567 660.0142] -/Subtype /Link -/A << /S /GoTo /D (a00088_4289c59840b128f2f6526e9da2711d47) >> ->> endobj -3529 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 610.256 191.1698 621.1599] -/Subtype /Link -/A << /S /GoTo /D (a00085) >> ->> endobj -3530 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [191.6679 610.256 226.3075 621.1599] -/Subtype /Link -/A << /S /GoTo /D (a00088_97f9e1fda815bfb8b1f4577c355ade20) >> ->> endobj -3518 0 obj << -/D [3516 0 R /XYZ 90 757.9346 null] ->> endobj -3519 0 obj << -/D [3516 0 R /XYZ 90 739.9346 null] ->> endobj -3522 0 obj << -/D [3516 0 R /XYZ 90 707.0579 null] ->> endobj -3525 0 obj << -/D [3516 0 R /XYZ 90 668.2036 null] ->> endobj -3528 0 obj << -/D [3516 0 R /XYZ 90 629.3493 null] ->> endobj -3515 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3533 0 obj << -/Length 646 -/Filter /FlateDecode ->> -stream -xڥUMo0 W9X%evAJk u:?ʖS'ÐC$||h~[31+ďt|a0dO_eVsWF8x^&(,R*Lo?h A,o~uif>ɛrS|c*. .ULXߴ9\ ut.`JB1-%>(T1 i˗{֣JROSY-m<GJ9~X&M{!d6x} 0UӚZdRHB24# 3vY/8 iùv/ج'Ҥe(yʅ/nO1c>sw*`.n$OcՌMk[ۉU2B Aqs!PWÌYw:?z -h}Ǯ5;v ~Ȏ3i!;N((o]>) ʏkU wV/2D G&g+86Pd/]  O ᔋS=j5*ل:|>wO*Zendstream -endobj -3532 0 obj << -/Type /Page -/Contents 3533 0 R -/Resources 3531 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3474 0 R -/Annots [ 3538 0 R 3539 0 R ] ->> endobj -3538 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 566.4282 133.6164 576.7743] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3539 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 566.4282 153.8105 576.7743] -/Subtype /Link -/A << /S /GoTo /D (a00089_aacd5fa1806e0f0dd0bc96dd36507ad8) >> ->> endobj -3534 0 obj << -/D [3532 0 R /XYZ 90 757.9346 null] ->> endobj -996 0 obj << -/D [3532 0 R /XYZ 90 739.9346 null] ->> endobj -230 0 obj << -/D [3532 0 R /XYZ 90 739.9346 null] ->> endobj -3535 0 obj << -/D [3532 0 R /XYZ 90 685.9318 null] ->> endobj -3536 0 obj << -/D [3532 0 R /XYZ 90 584.8203 null] ->> endobj -3537 0 obj << -/D [3532 0 R /XYZ 90 584.8203 null] ->> endobj -3531 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3542 0 obj << -/Length 729 -/Filter /FlateDecode ->> -stream -xڥVn0+"rIķ$T8+h]IC?"%0|HP&!PKM *>4un9| 1p2k2(  '} Q$VEVwUVrId)Ť&8+ i!ћn%` x7Xw]v 8S?-)e(\B)EyWy MOy1]n3mȥvUZb0W -1R6rc%6 '>U/m*ʹU*\B~n&daۨjaºn-laHMJY75.%T}fX=􄜒L*mîr6'TPśh> endobj -3547 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 565.8703 168.4754 576.7743] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -3548 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.9735 565.8703 187.0156 576.7743] -/Subtype /Link -/A << /S /GoTo /D (a00090_b684c17bf48c8e3b3fcf97b06b4c6ee1) >> ->> endobj -3550 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 552.9189 168.4754 563.8228] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -3551 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.9735 552.9189 182.5823 563.8228] -/Subtype /Link -/A << /S /GoTo /D (a00090_1abbbe7bc5d7d033c727691528b85b8d) >> ->> endobj -3553 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 539.9675 138.5977 550.8714] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3554 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 539.9675 158.2438 550.8714] -/Subtype /Link -/A << /S /GoTo /D (a00090_c9273cc1fcdaeeddc523ca9f34977e06) >> ->> endobj -3543 0 obj << -/D [3541 0 R /XYZ 90 757.9346 null] ->> endobj -997 0 obj << -/D [3541 0 R /XYZ 90 739.9346 null] ->> endobj -234 0 obj << -/D [3541 0 R /XYZ 90 739.9346 null] ->> endobj -3544 0 obj << -/D [3541 0 R /XYZ 90 685.9318 null] ->> endobj -3545 0 obj << -/D [3541 0 R /XYZ 90 584.8203 null] ->> endobj -3546 0 obj << -/D [3541 0 R /XYZ 90 584.8203 null] ->> endobj -3549 0 obj << -/D [3541 0 R /XYZ 90 569.8554 null] ->> endobj -3552 0 obj << -/D [3541 0 R /XYZ 90 556.904 null] ->> endobj -3540 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3557 0 obj << -/Length 1344 -/Filter /FlateDecode ->> -stream -xڭ_s6~$Vu_IwLlfxJ6߾2~9X2ZjbPuFgӥ;_g?}d*SD2`aܔL 㯿CI@hwphїf\6 yOnj,zyrI< -ZﳇGZ݌n,q(kY:ٗNwtP% zÚ)R:?ֻou^VzYVm@n̜KofQ׻0TOLis[}mt}p#m?zF^2j: # \*?PE7\m+c}[@۱mQk;~>'\`RY;oM3aq&Ktt{pB-n RI^\z;Qf96K-Z5CIE4X);Q(p2>FYȴNflf..fɌ(\Uf%ZwnR댛FӑtY>HӁttx:b:RzWztLnEU] PCiBHX<,bCttۮOG+e:eyK[EKS:Rn8]4U5|S*]DyO[CV=M -^)N=M97f vWhdgP7(c ԫJJ>myk6)YeE[EkS? ~quUVM -^(NM2"x)ޡ?@'Bx>-TWmda%nJ7d> =kݼqۧjSMF̿`~Q[-lhZ2J(endstream -endobj -3556 0 obj << -/Type /Page -/Contents 3557 0 R -/Resources 3555 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3474 0 R -/Annots [ 3562 0 R 3563 0 R 3565 0 R 3566 0 R 3568 0 R 3569 0 R 3571 0 R 3572 0 R 3574 0 R 3575 0 R 3577 0 R 3578 0 R 3580 0 R 3581 0 R 3583 0 R 3584 0 R 3586 0 R 3587 0 R 3589 0 R 3590 0 R 3592 0 R 3593 0 R 3595 0 R 3596 0 R 3598 0 R 3599 0 R 3601 0 R 3602 0 R 3604 0 R 3605 0 R ] ->> endobj -3562 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 616.6656 133.6164 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3563 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 616.6656 148.8392 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00091_7d472d8b3c41618d39c93c4ca92fb3f4) >> ->> endobj -3565 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 603.7142 133.6164 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3566 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 603.7142 147.7332 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00091_a3f2d9cb20290019b2743e8df31a2f8b) >> ->> endobj -3568 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 590.3444 133.6164 600.6904] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3569 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 590.3444 148.2812 600.6904] -/Subtype /Link -/A << /S /GoTo /D (a00091_b15853725b233d526b291db0347d4ecd) >> ->> endobj -3571 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 576.8351 133.6164 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3572 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 576.8351 151.6087 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00091_308463cc7b3d45d2dbcdcedd4cde9bb9) >> ->> endobj -3574 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 563.8836 133.6164 574.7876] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3575 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 563.8836 166.2933 574.7876] -/Subtype /Link -/A << /S /GoTo /D (a00091_4619e69ec86a47f6abe945b39ec7f63a) >> ->> endobj -3577 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 551.9085 133.6164 561.8361] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3578 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 551.9085 144.4155 561.8361] -/Subtype /Link -/A << /S /GoTo /D (a00091_55be3d5413ce49c5c4f5576def12d7ec) >> ->> endobj -3580 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 537.9808 133.6164 548.8847] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3581 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 537.9808 157.138 548.8847] -/Subtype /Link -/A << /S /GoTo /D (a00091_55e7764a9f6ed05aaa98076b9f6770a5) >> ->> endobj -3583 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 525.0293 138.5977 535.9333] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3584 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 525.0293 179.8327 535.9333] -/Subtype /Link -/A << /S /GoTo /D (a00091_babb9c2be394477af97f79507bcb4c86) >> ->> endobj -3586 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 512.0779 138.5977 522.9818] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3587 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 512.0779 178.1589 522.9818] -/Subtype /Link -/A << /S /GoTo /D (a00091_0ec6a6cbcbfd191d393738c16d54e5e1) >> ->> endobj -3589 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 499.1265 138.5977 510.0304] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3590 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 499.1265 182.5922 510.0304] -/Subtype /Link -/A << /S /GoTo /D (a00091_e27f4949613fe3c1de5a839af01d99dd) >> ->> endobj -3592 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 486.175 133.6164 497.079] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3593 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 486.175 153.2625 497.079] -/Subtype /Link -/A << /S /GoTo /D (a00091_fa0fe6ca88f692d22af70ff007411252) >> ->> endobj -3595 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 474.1999 133.6164 484.1275] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3596 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 474.1999 157.6859 484.1275] -/Subtype /Link -/A << /S /GoTo /D (a00091_266ea23d75c83f15b915ce54100e51c5) >> ->> endobj -3598 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 460.2722 138.5977 471.1761] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3599 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 460.2722 192.0068 471.1761] -/Subtype /Link -/A << /S /GoTo /D (a00091_805f8fd5533a6d4b6793e0645005da4c) >> ->> endobj -3601 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 448.297 138.5977 458.2247] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3602 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 448.297 148.8392 458.2247] -/Subtype /Link -/A << /S /GoTo /D (a00091_a6d51f3fa5da9b7f9cd37ae69600c04a) >> ->> endobj -3604 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 434.3693 138.5977 445.2732] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3605 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 434.3693 164.331 445.2732] -/Subtype /Link -/A << /S /GoTo /D (a00091_967def494c68cfc8a08d5a6c4dbbc25d) >> ->> endobj -3558 0 obj << -/D [3556 0 R /XYZ 90 757.9346 null] ->> endobj -998 0 obj << -/D [3556 0 R /XYZ 90 739.9346 null] ->> endobj -238 0 obj << -/D [3556 0 R /XYZ 90 739.9346 null] ->> endobj -3559 0 obj << -/D [3556 0 R /XYZ 90 716.7484 null] ->> endobj -3560 0 obj << -/D [3556 0 R /XYZ 90 634.6393 null] ->> endobj -3561 0 obj << -/D [3556 0 R /XYZ 90 634.6393 null] ->> endobj -3564 0 obj << -/D [3556 0 R /XYZ 90 620.6507 null] ->> endobj -3567 0 obj << -/D [3556 0 R /XYZ 90 607.6992 null] ->> endobj -3570 0 obj << -/D [3556 0 R /XYZ 90 594.3295 null] ->> endobj -3573 0 obj << -/D [3556 0 R /XYZ 90 580.8201 null] ->> endobj -3576 0 obj << -/D [3556 0 R /XYZ 90 567.8687 null] ->> endobj -3579 0 obj << -/D [3556 0 R /XYZ 90 555.8935 null] ->> endobj -3582 0 obj << -/D [3556 0 R /XYZ 90 541.9658 null] ->> endobj -3585 0 obj << -/D [3556 0 R /XYZ 90 529.0144 null] ->> endobj -3588 0 obj << -/D [3556 0 R /XYZ 90 516.063 null] ->> endobj -3591 0 obj << -/D [3556 0 R /XYZ 90 503.1115 null] ->> endobj -3594 0 obj << -/D [3556 0 R /XYZ 90 490.1601 null] ->> endobj -3597 0 obj << -/D [3556 0 R /XYZ 90 478.1849 null] ->> endobj -3600 0 obj << -/D [3556 0 R /XYZ 90 464.2572 null] ->> endobj -3603 0 obj << -/D [3556 0 R /XYZ 90 452.2821 null] ->> endobj -3555 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3608 0 obj << -/Length 526 -/Filter /FlateDecode ->> -stream -xڥTMO0W9 -J+BoPh6RIِjvP*|<7  DKM-,2 +o0'?|g.%Z/{T2dd^暢*&LBW֏6ov-][]pęT9r[g|#є\a`;Ry (F?e)MvDGpLD~\. --l˼|=_EFtVݗ;3N1O]WWE{YsWoGpgq5uݧѦn\ 2!cO9RtM?`Ej3-2_nSyU71F{w!J鍂Z[/XUr]xo Jd7Ľcu!,B[%‚>R&֜d9ĽcyTiOZ -HwVcQ oS_7V姓aXЪuז0B,6eKdi3HedMCi -||Msra-ïf6?f?endstream -endobj -3607 0 obj << -/Type /Page -/Contents 3608 0 R -/Resources 3606 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3615 0 R -/Annots [ 3613 0 R 3614 0 R ] ->> endobj -3613 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 615.6894 168.4754 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -3614 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.9735 615.6894 188.6695 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00092_4dc3294d67d705f7248ef57e4259424f) >> ->> endobj -3609 0 obj << -/D [3607 0 R /XYZ 90 757.9346 null] ->> endobj -999 0 obj << -/D [3607 0 R /XYZ 90 739.9346 null] ->> endobj -242 0 obj << -/D [3607 0 R /XYZ 90 739.9346 null] ->> endobj -3610 0 obj << -/D [3607 0 R /XYZ 90 716.7484 null] ->> endobj -3611 0 obj << -/D [3607 0 R /XYZ 90 634.6393 null] ->> endobj -3612 0 obj << -/D [3607 0 R /XYZ 90 634.6393 null] ->> endobj -3606 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3618 0 obj << -/Length 1936 -/Filter /FlateDecode ->> -stream -xڽZ]o6}0X~d1 ؒHY>E؊-̱3 ]Z$CEk񽼇<7"C ?dP -4pv;د3> ~ ^zi>G daD8gsAFKxxDΧitfvLԨ_nfbzif#@ˉ'<7Vb>`D}X q/mOpn@VqF0ƣCyywwMQMv=+`f0rvyc.[U@ezXge=EWU(q^jk"W;84dCpd+8R4EkGpN88vVdr D6_m]gC ƸvCU cn׀W"ٝ= %l'A:vs@*.V͸qA=q?^C ~s1ݹx7)9&xTd鶎n&s^E3L|#ޙ%_r*q䶘7˼U3nÎ&oLYQC`B8Ĉwf׀J|'>ʩI|U]歚qۉZ"Ld1Ε@X:DfׁxHgWy\mJŗyf%CPugV~(՗{N F $_Ymle1Ыb/#R{ "TbRqfR9U*q^*!5UX("0Vb^I* -~(a_e&5כdy1y8dyԀ*8H/Sbc3oՌ!*Y ͗d}9? bpf9Uq^!țtz@̼U3t<@O,iؕ GV&EUUr5j1 Sqϕ!" o*:@Ζ mH)0fު]LJ~8̌E5p[L P$] T..Y.j@NEEnoZQFfުC!aZ%ctr^ #{?RZurV(l?MQDQV#gCžk—Αiw3LJE2W!Gc ځBQ.Xm[h+afaܔv|kyP*ILTO՛vPA:5iT"iRHj - ")̛:SXHgWFEA=f}8Qa,!Ƭ3KfTf =!h4.h6v0)79=үF3CZgLm ȩAzjC&h ]m)%Jh~ شX3pԙ%SZr*qh_@jFfުUs!yɥ4M֞:$ʴdK.CH1͎y BV#?EdaIyy PtVb3P.;$`1QDIgqAo[>rP9!Yj91 tv5r0.(q;rV-44WL{yJ.ţyQkgD6U/Zuc)m1(p!!Qi+7CB"m4i#iONgos$%r S|âhgޢsЂUښ^endstream -endobj -3617 0 obj << -/Type /Page -/Contents 3618 0 R -/Resources 3616 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3615 0 R -/Annots [ 3623 0 R 3624 0 R 3625 0 R 3626 0 R 3627 0 R 3628 0 R 3629 0 R 3630 0 R 3631 0 R 3632 0 R 3633 0 R 3634 0 R 3635 0 R 3636 0 R 3637 0 R 3638 0 R 3639 0 R 3640 0 R 3641 0 R 3643 0 R 3644 0 R 3645 0 R 3646 0 R 3647 0 R 3648 0 R 3649 0 R 3650 0 R 3651 0 R 3653 0 R 3654 0 R 3655 0 R 3656 0 R ] ->> endobj -3623 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 552.2037 169.0429 566.1514] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3624 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 552.2037 189.795 566.1514] -/Subtype /Link -/A << /S /GoTo /D (a00093_5d8996950cdf3d8130cc3ad340eb9dff) >> ->> endobj -3625 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 528.2933 169.0429 542.241] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3626 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 528.2933 188.6791 542.241] -/Subtype /Link -/A << /S /GoTo /D (a00093_7f7bb2145afba5df00c6e10ddefa8ae1) >> ->> endobj -3627 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 504.383 169.0429 518.3307] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3628 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 504.383 187.5831 518.3307] -/Subtype /Link -/A << /S /GoTo /D (a00093_dc69abadd5aa07c7d74f9292db2cd93c) >> ->> endobj -3629 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 480.4727 169.0429 494.4204] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3630 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 480.4727 195.3241 494.4204] -/Subtype /Link -/A << /S /GoTo /D (a00093_b93e351c3abba0c700b26b7b07e9527d) >> ->> endobj -3631 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 456.5623 169.0429 470.51] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3632 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 456.5623 204.7288 470.51] -/Subtype /Link -/A << /S /GoTo /D (a00093_0c816f34c0187f2154c91a18d3ad87c8) >> ->> endobj -3633 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 432.652 169.0429 446.5997] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3634 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 432.652 202.517 446.5997] -/Subtype /Link -/A << /S /GoTo /D (a00093_6157452bdc9921f44b2e22e4b5969258) >> ->> endobj -3635 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 408.7417 169.0429 422.6894] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3636 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 408.7417 198.6317 422.6894] -/Subtype /Link -/A << /S /GoTo /D (a00093_8082509468b2ac80ed7746aa1a5bc4f7) >> ->> endobj -3637 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 384.8313 169.0429 398.779] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3638 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 384.8313 196.8783 398.779] -/Subtype /Link -/A << /S /GoTo /D (a00093_7675e6b9adbddbd545d3aac8ca092fbb) >> ->> endobj -3639 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 360.921 169.0429 374.8687] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3640 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 360.921 203.6229 374.8687] -/Subtype /Link -/A << /S /GoTo /D (a00093_b4622e2599ff3a592db09219b2641682) >> ->> endobj -3641 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.183 337.0107 130.9264 350.9584] -/Subtype /Link -/A << /S /GoTo /D (a00093_1deb2899508216804823498a69378118) >> ->> endobj -3643 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 274.1638 169.0429 288.1115] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3644 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 274.1638 189.795 288.1115] -/Subtype /Link -/A << /S /GoTo /D (a00093_5d8996950cdf3d8130cc3ad340eb9dff) >> ->> endobj -3645 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 250.2534 169.0429 264.2011] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3646 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 250.2534 188.6791 264.2011] -/Subtype /Link -/A << /S /GoTo /D (a00093_7f7bb2145afba5df00c6e10ddefa8ae1) >> ->> endobj -3647 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 226.3431 169.0429 240.2908] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3648 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 226.3431 187.5831 240.2908] -/Subtype /Link -/A << /S /GoTo /D (a00093_dc69abadd5aa07c7d74f9292db2cd93c) >> ->> endobj -3649 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 202.4328 169.0429 216.3805] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3650 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 202.4328 199.7475 216.3805] -/Subtype /Link -/A << /S /GoTo /D (a00093_8da121d6e50992ec55778f9b2141552d) >> ->> endobj -3651 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.183 178.5224 143.1005 192.4701] -/Subtype /Link -/A << /S /GoTo /D (a00093_3983b45977630418d3038231aa8b68ed) >> ->> endobj -3653 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 115.6755 169.0429 129.6232] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3654 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 115.6755 189.795 129.6232] -/Subtype /Link -/A << /S /GoTo /D (a00093_5d8996950cdf3d8130cc3ad340eb9dff) >> ->> endobj -3655 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 91.7652 169.0429 105.7129] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3656 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 91.7652 188.6791 105.7129] -/Subtype /Link -/A << /S /GoTo /D (a00093_7f7bb2145afba5df00c6e10ddefa8ae1) >> ->> endobj -3619 0 obj << -/D [3617 0 R /XYZ 90 757.9346 null] ->> endobj -1000 0 obj << -/D [3617 0 R /XYZ 90 739.9346 null] ->> endobj -246 0 obj << -/D [3617 0 R /XYZ 90 739.9346 null] ->> endobj -3620 0 obj << -/D [3617 0 R /XYZ 90 685.8208 null] ->> endobj -3621 0 obj << -/D [3617 0 R /XYZ 90 584.5797 null] ->> endobj -3622 0 obj << -/D [3617 0 R /XYZ 90 584.5797 null] ->> endobj -3642 0 obj << -/D [3617 0 R /XYZ 90 306.6831 null] ->> endobj -3652 0 obj << -/D [3617 0 R /XYZ 90 148.1949 null] ->> endobj -3616 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3669 0 obj << -/Length 1396 -/Filter /FlateDecode ->> -stream -xڭ]o6+timV,Ê-.(Yqv&Ia}GPD3 QKߣ#$~$18QB!øL'+8~B)O}?Sd$pI&ǩBDR*tRVWU*۾obF4f9R -)dy~1io8Y#fHa#b M6NYs7cO: ݥ l6n04#&Q*{k-n춘15ͳCo2q<]mmU;%/ K-h}X5KSܽΚ/UDKyҝ1 -' iVׁ,aztZ"AK?X",u;`);tX; gyu ۯ3yQ@ZSdL?RSDG{A+uuk[ ^4s6#bzg3_&`s\q{Bַh; Zt,d=S>bЈrl_1<}ګBQ-⓹!,:: @҅YFR;=4:u5}y5OX`- -vȋ>):oew@u> !D۬F"L?bbvWihĥO~NoLO@d]c@) *`T-uixf_3.ث>4}mڵۦqs nZa4ĆHheѱ976.6|Ho T/u#!)ƌ'H5](֫dYٺe]uJ nd #!`Tզ -$_>; u᫬|G'|"!6à)Cxi@"j A.u6}Hi4 h |ty O0LUը(}vrhJpd0<>D-3VHsTd rf*::C(5:H:UDĕ[GE F5 -~,ȹ!>dg}WoK?"L8_{#,L|Iwʢ]퀜jҹCWBt_oWF󈅿I$"\ zBnh7; tn !Fo7CZ;c"ʴ.A(8 m?W1)n7?' 9]1q V;D -y?KRC¨DF1AF l6/naEfffPbG1w̌BDf jOvniog^oѼzendstream -endobj -3668 0 obj << -/Type /Page -/Contents 3669 0 R -/Resources 3667 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3615 0 R -/Annots [ 3671 0 R 3672 0 R 3673 0 R 3674 0 R 3675 0 R 3676 0 R 3677 0 R 3678 0 R 3679 0 R 3680 0 R 3681 0 R 3682 0 R 3683 0 R 3684 0 R 3685 0 R 3687 0 R 3688 0 R 3689 0 R 3690 0 R 3691 0 R 3692 0 R 3693 0 R 3694 0 R 3695 0 R ] ->> endobj -3671 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 713.4339 169.0429 727.3816] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3672 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 713.4339 187.5831 727.3816] -/Subtype /Link -/A << /S /GoTo /D (a00093_dc69abadd5aa07c7d74f9292db2cd93c) >> ->> endobj -3673 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 689.5236 169.0429 703.4713] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3674 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 689.5236 196.8783 703.4713] -/Subtype /Link -/A << /S /GoTo /D (a00093_7675e6b9adbddbd545d3aac8ca092fbb) >> ->> endobj -3675 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 665.6133 169.0429 679.561] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3676 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 665.6133 196.3204 679.561] -/Subtype /Link -/A << /S /GoTo /D (a00093_7a58d95f7f7827789ff52500e3d16c34) >> ->> endobj -3677 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 641.7029 169.0429 655.6506] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3678 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 641.7029 181.4959 655.6506] -/Subtype /Link -/A << /S /GoTo /D (a00093_b6e9a75167bdddd561373bc5b6ef501c) >> ->> endobj -3679 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 617.7926 169.0429 631.7403] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3680 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 617.7926 197.3963 631.7403] -/Subtype /Link -/A << /S /GoTo /D (a00093_3ad48284f7a91f78bb24096aad89056e) >> ->> endobj -3681 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 593.8823 169.0429 607.83] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3682 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 593.8823 203.633 607.83] -/Subtype /Link -/A << /S /GoTo /D (a00093_494ea6767a8a8fab7abe96b799d6c3b3) >> ->> endobj -3683 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 569.9719 169.0429 583.9196] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3684 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 569.9719 195.3339 583.9196] -/Subtype /Link -/A << /S /GoTo /D (a00093_e9205a565ea3c911a785fc4e87c91a58) >> ->> endobj -3685 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.183 546.0616 135.3497 560.0093] -/Subtype /Link -/A << /S /GoTo /D (a00093_e292b8977f6b81265bf14e1676face3e) >> ->> endobj -3687 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 483.297 169.0429 497.2446] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3688 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 483.297 189.795 497.2446] -/Subtype /Link -/A << /S /GoTo /D (a00093_5d8996950cdf3d8130cc3ad340eb9dff) >> ->> endobj -3689 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 459.3866 169.0429 473.3343] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3690 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 459.3866 188.6791 473.3343] -/Subtype /Link -/A << /S /GoTo /D (a00093_7f7bb2145afba5df00c6e10ddefa8ae1) >> ->> endobj -3691 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 435.4763 169.0429 449.424] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3692 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 435.4763 187.5831 449.424] -/Subtype /Link -/A << /S /GoTo /D (a00093_dc69abadd5aa07c7d74f9292db2cd93c) >> ->> endobj -3693 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [123.873 411.5659 169.0429 425.5136] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -3694 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.541 411.5659 196.8783 425.5136] -/Subtype /Link -/A << /S /GoTo /D (a00093_7675e6b9adbddbd545d3aac8ca092fbb) >> ->> endobj -3695 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.183 387.6556 138.1195 401.6033] -/Subtype /Link -/A << /S /GoTo /D (a00093_4f39f0fe6a820d260fe6cddf9ccaa832) >> ->> endobj -3670 0 obj << -/D [3668 0 R /XYZ 90 757.9346 null] ->> endobj -3686 0 obj << -/D [3668 0 R /XYZ 90 515.7752 null] ->> endobj -3667 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3703 0 obj << -/Length 1646 -/Filter /FlateDecode ->> -stream -xڭ_o6)<qZ[$F۵ulb -4uϑDZ)`j˼TfxcU__o'~7LoN-`Z.fM%0;g|7ΛyS?.ܬvnz̛vssam"@4r|2p&gམ>OziWjtj' oDǬA*pvbU^l4ᤜz4o7LI^i~BK-ъy<}7nnj CE]4tR0#8t)-M'5?O 8e7Kw -D r͜NEvh 7sK-Y5åYi1J%jF@zCdyW;IE]+6ݺ ])UIEUY_uʝmks4L#t Ӂӥttx:tt)9jZ^i TT]-p #0qix<2(T,N@ӥxt] ={8ԗF3-NY%U?ξ?wјd,&QFX.$cЕK1f`'w];=jP@JO9eY;%Gs:QQ.9f{`0 X2k&N((=S.y jP5Uqƽ/zx|AhLrV!%5Q*՗7EKfhl厢lЌ_vrieUIDT6Uy.s?,QFgX.##KiIEUwCu D9Ϥp0\$Ȕ`SBE]O W/zx>aHn=kȇIKܒ65kzSqdjNG%Sst -\'}5a/ȩVѾf ^+N|Ё9FW<0'袮GwmI-W%Up攂~;5x3ל)+x>2(T,N@ӥ|t|] +R<8]GN+N5 '=Ϭv" Ӗu*ٗ7EKfhh客hԼ8˷vZ2v[eN -HfuxYc9&BWn'No^ʄ1 -*U~Lr$#ÁU,Au=:|d [xN2#> endobj -3708 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 616.6656 133.6164 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3709 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 616.6656 148.8392 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00094_e1e60d56ea87dfa09230e25ca5ecf2fc) >> ->> endobj -3711 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 603.7142 133.6164 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3712 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 603.7142 147.7332 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00094_8cf0ca17b115ff2e3071b3fabcc43b53) >> ->> endobj -3714 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 590.3444 133.6164 600.6904] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3715 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 590.3444 148.2812 600.6904] -/Subtype /Link -/A << /S /GoTo /D (a00094_e57281f5bef284bc9545834ef8ed4a96) >> ->> endobj -3717 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 576.8351 133.6164 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3718 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 576.8351 151.6087 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00094_7a59f0dad059786238d8ab604630e7f3) >> ->> endobj -3720 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 563.8836 133.6164 574.7876] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3721 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 563.8836 166.2933 574.7876] -/Subtype /Link -/A << /S /GoTo /D (a00094_85d7f35662f7be20cd84e789a290dd4b) >> ->> endobj -3723 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 551.9085 133.6164 561.8361] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3724 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 551.9085 144.4155 561.8361] -/Subtype /Link -/A << /S /GoTo /D (a00094_0f27e16ddcf7199d514968204966f559) >> ->> endobj -3726 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 537.9808 133.6164 548.8847] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3727 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 537.9808 157.138 548.8847] -/Subtype /Link -/A << /S /GoTo /D (a00094_e45b31a0a277dd5325ad2a332358b21b) >> ->> endobj -3729 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 525.0293 138.5977 535.9333] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3730 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 525.0293 179.8327 535.9333] -/Subtype /Link -/A << /S /GoTo /D (a00094_af7a8a5310ad945de38f5b3ac755ae7d) >> ->> endobj -3732 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 512.0779 138.5977 522.9818] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3733 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 512.0779 178.1589 522.9818] -/Subtype /Link -/A << /S /GoTo /D (a00094_c8f124419a231f38bb6cdf5041757a27) >> ->> endobj -3735 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 499.1265 138.5977 510.0304] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3736 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 499.1265 182.5922 510.0304] -/Subtype /Link -/A << /S /GoTo /D (a00094_8d4e08d051b35b1c710c3be5b8bbfa05) >> ->> endobj -3738 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 486.175 138.5977 497.079] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3739 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 486.175 168.7542 497.079] -/Subtype /Link -/A << /S /GoTo /D (a00094_a81fff4836049cb3c018304d77337554) >> ->> endobj -3741 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 473.2236 138.5977 484.1275] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3742 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 473.2236 173.1875 484.1275] -/Subtype /Link -/A << /S /GoTo /D (a00094_025ffa46b799fa6952719c499a3ae17c) >> ->> endobj -3744 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 460.2722 133.6164 471.1761] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3745 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 460.2722 159.3497 471.1761] -/Subtype /Link -/A << /S /GoTo /D (a00094_2541fae506eb111ff1be2372e0919839) >> ->> endobj -3747 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 447.8787 133.6164 458.2247] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3748 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 447.8787 159.8977 458.2247] -/Subtype /Link -/A << /S /GoTo /D (a00094_71721395f1c7c42b8bcc111b339bea7c) >> ->> endobj -3750 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 434.3693 133.6164 445.2732] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3751 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 434.3693 170.7167 445.2732] -/Subtype /Link -/A << /S /GoTo /D (a00094_6af8a59d0ab8967aacea749d6e59ac90) >> ->> endobj -3753 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 421.4179 133.6164 432.3218] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3754 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 421.4179 154.9262 432.3218] -/Subtype /Link -/A << /S /GoTo /D (a00094_619d9755a5d4aaabdb2e5e6ea4c1e0bf) >> ->> endobj -3756 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 409.0244 133.6164 419.3704] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3757 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 409.0244 153.2627 419.3704] -/Subtype /Link -/A << /S /GoTo /D (a00094_7f0ab3fe3bcf1e3ed9f5950cb4474ec1) >> ->> endobj -3759 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 395.515 138.5977 406.419] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3760 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 395.515 184.256 406.419] -/Subtype /Link -/A << /S /GoTo /D (a00094_f4a1d8cfbe270393a2de02b0c743e474) >> ->> endobj -3762 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 382.5636 133.6164 393.4675] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3763 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 382.5636 154.1892 393.4675] -/Subtype /Link -/A << /S /GoTo /D (a00094_dc7001682017599549f57771f4cd1b9a) >> ->> endobj -3765 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 369.6122 133.6164 380.5161] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3766 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 369.6122 165.4367 380.5161] -/Subtype /Link -/A << /S /GoTo /D (a00094_dde3cf9a57445814d01b3c67da08afdb) >> ->> endobj -3704 0 obj << -/D [3702 0 R /XYZ 90 757.9346 null] ->> endobj -1001 0 obj << -/D [3702 0 R /XYZ 90 739.9346 null] ->> endobj -250 0 obj << -/D [3702 0 R /XYZ 90 739.9346 null] ->> endobj -3705 0 obj << -/D [3702 0 R /XYZ 90 716.7484 null] ->> endobj -3706 0 obj << -/D [3702 0 R /XYZ 90 634.6393 null] ->> endobj -3707 0 obj << -/D [3702 0 R /XYZ 90 634.6393 null] ->> endobj -3710 0 obj << -/D [3702 0 R /XYZ 90 620.6507 null] ->> endobj -3713 0 obj << -/D [3702 0 R /XYZ 90 607.6992 null] ->> endobj -3716 0 obj << -/D [3702 0 R /XYZ 90 594.3295 null] ->> endobj -3719 0 obj << -/D [3702 0 R /XYZ 90 580.8201 null] ->> endobj -3722 0 obj << -/D [3702 0 R /XYZ 90 567.8687 null] ->> endobj -3725 0 obj << -/D [3702 0 R /XYZ 90 555.8935 null] ->> endobj -3728 0 obj << -/D [3702 0 R /XYZ 90 541.9658 null] ->> endobj -3731 0 obj << -/D [3702 0 R /XYZ 90 529.0144 null] ->> endobj -3734 0 obj << -/D [3702 0 R /XYZ 90 516.063 null] ->> endobj -3737 0 obj << -/D [3702 0 R /XYZ 90 503.1115 null] ->> endobj -3740 0 obj << -/D [3702 0 R /XYZ 90 490.1601 null] ->> endobj -3743 0 obj << -/D [3702 0 R /XYZ 90 477.2087 null] ->> endobj -3746 0 obj << -/D [3702 0 R /XYZ 90 464.2572 null] ->> endobj -3749 0 obj << -/D [3702 0 R /XYZ 90 451.8637 null] ->> endobj -3752 0 obj << -/D [3702 0 R /XYZ 90 438.3544 null] ->> endobj -3755 0 obj << -/D [3702 0 R /XYZ 90 425.4029 null] ->> endobj -3758 0 obj << -/D [3702 0 R /XYZ 90 413.0094 null] ->> endobj -3761 0 obj << -/D [3702 0 R /XYZ 90 399.5001 null] ->> endobj -3764 0 obj << -/D [3702 0 R /XYZ 90 386.5486 null] ->> endobj -3701 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3769 0 obj << -/Length 1274 -/Filter /FlateDecode ->> -stream -xڵ]o6+f ] iU[$dٳ~J"YX/|aJzu'$XhB%vFf/_W^3XbS꾊H,Ym5X2Ilw]QwޖSZ[w 0sWAŇժJgM6fF F&b%ۙ`gogq cJ㙂 x52\w3J/KӄW,uH&(:Jɉ?D mǑ01/! -JY庴@6YrAtR&v:ݦNC/]}CZܺ]Q+}`w_=Q߸./sH$M&j̰O܈]hc caFp^~exu^3PF4g0Y րb9H 6t## rݵHwEw9ZH["$:eB9.-T=I5\Q>TSCpS1YNS=dƠfD1l)w -5FsWDn%W Ywzjz|>2ۺe[',pi\Ź8\ʢ`vb kk,nSZVqx1bKIS#_tgip?ͫ]#> endobj -3772 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 604.7351 139.9724 627.7038] -/Subtype /Link -/A << /S /GoTo /D (a00049) >> ->> endobj -3773 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [159.8378 604.7351 192.4453 627.7038] -/Subtype /Link -/A << /S /GoTo /D (a00046) >> ->> endobj -3776 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 522.2884 166.8215 533.1924] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -3777 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 522.2884 198.084 533.1924] -/Subtype /Link -/A << /S /GoTo /D (a00095_8a661a2d544100b82d0d14a1985083d5) >> ->> endobj -3779 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 483.4341 138.5977 494.3381] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3780 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 483.4341 159.9075 494.3381] -/Subtype /Link -/A << /S /GoTo /D (a00095_981392e295db4d024eea95805c51c371) >> ->> endobj -3782 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 444.5798 138.5977 455.4838] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3783 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 444.5798 160.4555 455.4838] -/Subtype /Link -/A << /S /GoTo /D (a00095_280a0c2a93544e597f92bbacf36ee1dc) >> ->> endobj -3785 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 406.7018 133.6164 416.6295] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3786 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 406.7018 144.4155 416.6295] -/Subtype /Link -/A << /S /GoTo /D (a00095_4da1d7815516cd2b5bda3a66fdf05198) >> ->> endobj -3788 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 366.8712 193.9395 377.7752] -/Subtype /Link -/A << /S /GoTo /D (a00153_ga92afb113e122f860392bfbd385f842e) >> ->> endobj -3789 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [194.4377 366.8712 229.0773 377.7752] -/Subtype /Link -/A << /S /GoTo /D (a00095_c8afa29e0aa5e789d6929b366d98ba56) >> ->> endobj -3770 0 obj << -/D [3768 0 R /XYZ 90 757.9346 null] ->> endobj -1002 0 obj << -/D [3768 0 R /XYZ 90 739.9346 null] ->> endobj -254 0 obj << -/D [3768 0 R /XYZ 90 739.9346 null] ->> endobj -3771 0 obj << -/D [3768 0 R /XYZ 90 685.9318 null] ->> endobj -3774 0 obj << -/D [3768 0 R /XYZ 90 541.2384 null] ->> endobj -3775 0 obj << -/D [3768 0 R /XYZ 90 541.2384 null] ->> endobj -3778 0 obj << -/D [3768 0 R /XYZ 90 502.5274 null] ->> endobj -3781 0 obj << -/D [3768 0 R /XYZ 90 463.6732 null] ->> endobj -3784 0 obj << -/D [3768 0 R /XYZ 90 424.8189 null] ->> endobj -3787 0 obj << -/D [3768 0 R /XYZ 90 385.9646 null] ->> endobj -3767 0 obj << -/Font << /F29 499 0 R /F26 485 0 R /F11 705 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3792 0 obj << -/Length 1294 -/Filter /FlateDecode ->> -stream -xڭ_o6)<qZ[$۳m,b鲂l]s$Q&BKM,X,h\2|=%V1U=+( +%qS2!$,O%]]Giݞ7`oܭO/]n{pq]$+8Z?Тrpkd@ Xˊ`<|,>/u c oX1skR<5j8OcxX)ϕdwyL׾U+?Wq}ha\!xxm_B)6g'4[? hV70L& `d7qFdRA?؀*"u~0&KyNÓopRtA7;gD1 -(#RP ϛ 8v%Tc!gW|-w(Zt3A͜F%LIE4X){QL(p2>FYȴNfn@z63CtM0+*׭DkfRm[jwqOt$,AOtt1)n~:p7D[QWrð߉x(M(Wz:G8?8]GJ.#kn!X_R*I8eU]6M1PܛI"bd =Ώ Nc1A1IvdljO])(j@ss4&wt|GqhJ?AQRyQvA/q|L< I=颧) Ԙ( -QS%2ٯ<^.{? -',Up|{Q 7E&hK;ECaWUu4TD(mJr>yLaN -hY>HÁttx xŀxU}l'"bH+-nZTz7C䌧DK830T$ʲ)z ] `xS w[K{M "\gܢ,ojRzSqhjJ1o*MMKUX'4^U%<˾jEYפtה.+7W/:c?ke(_wEyW%%Bg_A\M2"x]jjmnJ^TrݫOvQꪭs<;Ž[X 7vڽ$y|m}Xa1l!>ހ\`/};?:${߾?]^*l@Kf?w4[endstream -endobj -3791 0 obj << -/Type /Page -/Contents 3792 0 R -/Resources 3790 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3615 0 R -/Annots [ 3797 0 R 3798 0 R 3800 0 R 3801 0 R 3803 0 R 3804 0 R 3806 0 R 3807 0 R 3809 0 R 3810 0 R 3812 0 R 3813 0 R 3815 0 R 3816 0 R 3818 0 R 3819 0 R 3821 0 R 3822 0 R 3824 0 R 3825 0 R 3827 0 R 3828 0 R 3830 0 R 3831 0 R 3833 0 R 3834 0 R 3836 0 R 3837 0 R ] ->> endobj -3797 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 616.6656 133.6164 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3798 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 616.6656 148.8392 626.5933] -/Subtype /Link -/A << /S /GoTo /D (a00096_f1684ad96b8acf54154688df3883b801) >> ->> endobj -3800 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 603.7142 133.6164 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3801 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 603.7142 147.7332 613.6419] -/Subtype /Link -/A << /S /GoTo /D (a00096_ed119a030ebd3bf7c30a12071c27d441) >> ->> endobj -3803 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 590.3444 133.6164 600.6904] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3804 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 590.3444 148.2812 600.6904] -/Subtype /Link -/A << /S /GoTo /D (a00096_47140aa52cb9e6a2de38fdfc5da08df1) >> ->> endobj -3806 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 576.8351 133.6164 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3807 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 576.8351 151.6087 587.739] -/Subtype /Link -/A << /S /GoTo /D (a00096_569382bc53aa64c227e57efe88fe13ac) >> ->> endobj -3809 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 563.8836 133.6164 574.7876] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3810 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 563.8836 166.2933 574.7876] -/Subtype /Link -/A << /S /GoTo /D (a00096_8587178a29882482be20c2822b402b96) >> ->> endobj -3812 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 551.9085 133.6164 561.8361] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3813 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 551.9085 144.4155 561.8361] -/Subtype /Link -/A << /S /GoTo /D (a00096_6f8c65cfc8242197bcc3cb5b4735b16f) >> ->> endobj -3815 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 537.9808 133.6164 548.8847] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3816 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 537.9808 157.138 548.8847] -/Subtype /Link -/A << /S /GoTo /D (a00096_51bbbe3099c10ef26119ddc2aa51e35e) >> ->> endobj -3818 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 525.0293 138.5977 535.9333] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3819 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 525.0293 179.8327 535.9333] -/Subtype /Link -/A << /S /GoTo /D (a00096_f20186ef441ef5b600e8544a0f2d8d81) >> ->> endobj -3821 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 512.0779 138.5977 522.9818] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3822 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 512.0779 178.1589 522.9818] -/Subtype /Link -/A << /S /GoTo /D (a00096_a80e8d0fc768525fa3bfb3d4e4cf260d) >> ->> endobj -3824 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 499.1265 138.5977 510.0304] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3825 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 499.1265 182.5922 510.0304] -/Subtype /Link -/A << /S /GoTo /D (a00096_be2c98748e180c1747823cd2fb8ecf0e) >> ->> endobj -3827 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 486.175 138.5977 497.079] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3828 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 486.175 168.7542 497.079] -/Subtype /Link -/A << /S /GoTo /D (a00096_b20096ae4953caaa42f6bb2373c4494c) >> ->> endobj -3830 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 473.2236 138.5977 484.1275] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3831 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 473.2236 173.1875 484.1275] -/Subtype /Link -/A << /S /GoTo /D (a00096_e82f68cb91d8688a619d55d2a8572979) >> ->> endobj -3833 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 460.2722 138.5977 471.1761] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3834 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 460.2722 168.2065 471.1761] -/Subtype /Link -/A << /S /GoTo /D (a00096_c92d2f194f096e84791f95d7e8f0ba92) >> ->> endobj -3836 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 447.3207 138.5977 458.2247] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3837 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 447.3207 187.0258 458.2247] -/Subtype /Link -/A << /S /GoTo /D (a00096_858f970feb7462871c814953697a8ad7) >> ->> endobj -3793 0 obj << -/D [3791 0 R /XYZ 90 757.9346 null] ->> endobj -1003 0 obj << -/D [3791 0 R /XYZ 90 739.9346 null] ->> endobj -258 0 obj << -/D [3791 0 R /XYZ 90 739.9346 null] ->> endobj -3794 0 obj << -/D [3791 0 R /XYZ 90 716.7484 null] ->> endobj -3795 0 obj << -/D [3791 0 R /XYZ 90 634.6393 null] ->> endobj -3796 0 obj << -/D [3791 0 R /XYZ 90 634.6393 null] ->> endobj -3799 0 obj << -/D [3791 0 R /XYZ 90 620.6507 null] ->> endobj -3802 0 obj << -/D [3791 0 R /XYZ 90 607.6992 null] ->> endobj -3805 0 obj << -/D [3791 0 R /XYZ 90 594.3295 null] ->> endobj -3808 0 obj << -/D [3791 0 R /XYZ 90 580.8201 null] ->> endobj -3811 0 obj << -/D [3791 0 R /XYZ 90 567.8687 null] ->> endobj -3814 0 obj << -/D [3791 0 R /XYZ 90 555.8935 null] ->> endobj -3817 0 obj << -/D [3791 0 R /XYZ 90 541.9658 null] ->> endobj -3820 0 obj << -/D [3791 0 R /XYZ 90 529.0144 null] ->> endobj -3823 0 obj << -/D [3791 0 R /XYZ 90 516.063 null] ->> endobj -3826 0 obj << -/D [3791 0 R /XYZ 90 503.1115 null] ->> endobj -3829 0 obj << -/D [3791 0 R /XYZ 90 490.1601 null] ->> endobj -3832 0 obj << -/D [3791 0 R /XYZ 90 477.2087 null] ->> endobj -3835 0 obj << -/D [3791 0 R /XYZ 90 464.2572 null] ->> endobj -3790 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3840 0 obj << -/Length 1300 -/Filter /FlateDecode ->> -stream -xڭYnH+xQOob8Ό (H-@[$ -~KMXubd KM2 ɢG'8Ǫ8??KqdXDЌ(x2pv6?&Y8K˃_nwc9c.'i,3׽af=M GpV%`O=Ʌߙ' ƪ,p?Z7`'Xf)UĆCsi6i"N6u6[-*B56PGAն:BXV*)d]/t{('FpRK,YˏlSw@F 1L."PXjX.LZ" FQ1VҤrb7 -Lu쇧c:Zq/CjI> 5*Bߎӓ |%l$HSʗ"٪d>[VTz,+^k!@) I Rg«Y:n;ha.Q)|~\$q%PƢLDL39uT5CR'8ќ2T'QW'aڨ:kf hՄIpt0栧Fm!7#zX =՞pOu{= ՕwƮlE t{)܆yZzi 4T{;S\]i9КQ+g\%(n{ -5]EզvLwjLbڎTRBg1mj[6فk0iU5GX 7g+yaq3՜GxkB}"Vc -Zq -[m;gEc#/`-Yv$}B {R~aqs1\67mc.yUƍt{TY:rd}|۫OvjGSsaq;4NP]G#NoҸKlܥlqs d/Pю-"D~jX0ݍ:]LFy\CޫI"qNBP Dzv6.E{vQЊ뗼xn-oQ))wM#N;@*0=,3xzlEwz25SQsϰƭcXxKW"FIkRCc*ߏ/f4{Y+@tAba%Tx$xWXKӹ{a&x_íCXY.8;O~a\sZAWզ}B -򔶾ge:?endstream -endobj -3839 0 obj << -/Type /Page -/Contents 3840 0 R -/Resources 3838 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3875 0 R -/Annots [ 3843 0 R 3844 0 R 3847 0 R 3848 0 R 3850 0 R 3851 0 R 3853 0 R 3854 0 R 3856 0 R 3857 0 R 3859 0 R 3861 0 R 3863 0 R 3864 0 R 3866 0 R 3867 0 R 3869 0 R 3871 0 R 3872 0 R 3874 0 R ] ->> endobj -3843 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [106.7172 668.6407 154.358 690.8921] -/Subtype /Link -/A << /S /GoTo /D (a00040) >> ->> endobj -3844 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.2234 668.6407 222.4221 690.8921] -/Subtype /Link -/A << /S /GoTo /D (a00041) >> ->> endobj -3847 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 584.4605 133.6164 594.3882] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3848 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 584.4605 157.1377 594.3882] -/Subtype /Link -/A << /S /GoTo /D (a00097_5960d82e7aca2986b8509a0d87d6cbc8) >> ->> endobj -3850 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 571.509 133.6164 581.4367] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3851 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 571.509 154.3681 581.4367] -/Subtype /Link -/A << /S /GoTo /D (a00097_8ae6395641b7752dce47881e20cee970) >> ->> endobj -3853 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 557.5814 133.6164 568.4853] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -3854 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 557.5814 166.5525 568.4853] -/Subtype /Link -/A << /S /GoTo /D (a00097_6925d46b2819adb474a5f0036f02dd7d) >> ->> endobj -3856 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 544.6299 138.5977 555.5339] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3857 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 544.6299 157.138 555.5339] -/Subtype /Link -/A << /S /GoTo /D (a00097_7092781c50dcad50f473888585c85b83) >> ->> endobj -3859 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 532.2364 152.1466 542.5824] -/Subtype /Link -/A << /S /GoTo /D (a00097_a6487b9c1c773b32656065d0e19bf142) >> ->> endobj -3861 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 519.285 148.2711 529.631] -/Subtype /Link -/A << /S /GoTo /D (a00097_e87913860c6b05c6e6b060639b950098) >> ->> endobj -3863 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 505.7756 138.5977 516.6796] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3864 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 505.7756 193.1026 516.6796] -/Subtype /Link -/A << /S /GoTo /D (a00097_134ec55c3d5abaebfed4ff8edfedf1ea) >> ->> endobj -3866 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 492.8242 138.5977 503.7281] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3867 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 492.8242 195.3141 503.7281] -/Subtype /Link -/A << /S /GoTo /D (a00097_5a3116623c6a7da7c82db6c301ae0da3) >> ->> endobj -3869 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 479.8728 192.5346 490.7767] -/Subtype /Link -/A << /S /GoTo /D (a00097_606d2729bf411ade69044828403a72af) >> ->> endobj -3871 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 466.9213 138.5977 477.8253] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3872 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 466.9213 209.1522 477.8253] -/Subtype /Link -/A << /S /GoTo /D (a00097_2fca02673894f222b01ad2d3a4d7dd79) >> ->> endobj -3874 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 453.9699 175.3891 464.8738] -/Subtype /Link -/A << /S /GoTo /D (a00097_fb60f42593d305ea36d9b4303722696e) >> ->> endobj -3841 0 obj << -/D [3839 0 R /XYZ 90 757.9346 null] ->> endobj -1004 0 obj << -/D [3839 0 R /XYZ 90 739.9346 null] ->> endobj -262 0 obj << -/D [3839 0 R /XYZ 90 739.9346 null] ->> endobj -3842 0 obj << -/D [3839 0 R /XYZ 90 717.8172 null] ->> endobj -3845 0 obj << -/D [3839 0 R /XYZ 90 602.4342 null] ->> endobj -3846 0 obj << -/D [3839 0 R /XYZ 90 602.4342 null] ->> endobj -3849 0 obj << -/D [3839 0 R /XYZ 90 588.4455 null] ->> endobj -3852 0 obj << -/D [3839 0 R /XYZ 90 575.4941 null] ->> endobj -3855 0 obj << -/D [3839 0 R /XYZ 90 561.5664 null] ->> endobj -3858 0 obj << -/D [3839 0 R /XYZ 90 548.615 null] ->> endobj -3860 0 obj << -/D [3839 0 R /XYZ 90 536.2215 null] ->> endobj -3862 0 obj << -/D [3839 0 R /XYZ 90 523.27 null] ->> endobj -3865 0 obj << -/D [3839 0 R /XYZ 90 509.7607 null] ->> endobj -3868 0 obj << -/D [3839 0 R /XYZ 90 496.8093 null] ->> endobj -3870 0 obj << -/D [3839 0 R /XYZ 90 483.8578 null] ->> endobj -3873 0 obj << -/D [3839 0 R /XYZ 90 470.9064 null] ->> endobj -3838 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3878 0 obj << -/Length 293 -/Filter /FlateDecode ->> -stream -xڥQMk0 WYr,=meFs+=IZKB?AO~xz.$7by$?-< S;qb@Laq!_=2!'uلv]]߆`r&ʺ˺ϦižӫYVo?H^x B9OW,F$_l>s&bl@GdIkH960j} (63*1!7࣡mYm֕dho HBA?'sTG)iBuдSr{e\\CJ[mendstream -endobj -3877 0 obj << -/Type /Page -/Contents 3878 0 R -/Resources 3876 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3875 0 R ->> endobj -3879 0 obj << -/D [3877 0 R /XYZ 90 757.9346 null] ->> endobj -3876 0 obj << -/Font << /F29 499 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3882 0 obj << -/Length 836 -/Filter /FlateDecode ->> -stream -xڍVMo@WblMSToM!Lb ?,`R潷3;IC%2 ]~zAmNuWiG=5PM{A6mb t:7 PZpAiHo~'ܖ!W)ʚ7gICe֭UٔuM/Z L -8HIgDƨZO ˜HQsZͶO H1J΋q~ VH&l&u9. yC(ZRę=a>xVB(9_~cd-Ƕ=fk ,QNP> endobj -3885 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 437.3806 250.6249 458.582] -/Subtype/Link/A<> ->> endobj -3886 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 410.0836 212.6587 418.9302] -/Subtype /Link -/A << /S /GoTo /D (a00171) >> ->> endobj -3888 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 298.6746 202.2283 309.205] -/Subtype /Link -/A << /S /GoTo /D (a00163_gb97849f0d3ea858eee790b69591e6427) >> ->> endobj -3889 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 285.3496 217.7102 296.2535] -/Subtype /Link -/A << /S /GoTo /D (a00163_g03070adbf8faab0f34f87c1270964306) >> ->> endobj -3883 0 obj << -/D [3881 0 R /XYZ 90 757.9346 null] ->> endobj -266 0 obj << -/D [3881 0 R /XYZ 90 739.9346 null] ->> endobj -1064 0 obj << -/D [3881 0 R /XYZ 90 553.9527 null] ->> endobj -270 0 obj << -/D [3881 0 R /XYZ 90 553.9527 null] ->> endobj -3884 0 obj << -/D [3881 0 R /XYZ 90 517.4245 null] ->> endobj -3887 0 obj << -/D [3881 0 R /XYZ 90 317.251 null] ->> endobj -3880 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3893 0 obj << -/Length 1119 -/Filter /FlateDecode ->> -stream -xڥWo6~_!/Y`-K׬{j@XcyܴȒ,  xǻ -RӌKl~^\ 3uz,h` -dXAΏni6GWyr|Jwe\fnyu3u:UJh>}8&R3p`4(vqgcPMZ1:A<Ն"%p~_٤m|^6eHyKRQ#[:>*-c2vLȎhEŚ0xM;yݟ~ Po#KCV:\k6KC^E|J˂u)! --" aeO0RqT˅ZnE8P 7v,^UɅ︫-fkdR(Jj=a"~o3de+ &?YR"jAiHAO޷f%(oTP>XUj{Uۢrt;I'UY 4ppã|h ٵL@eGNי5!o͊`ΙęMBH^v-:f|_+k+{t h *.:F1)u,Nٳ ڔU$_X;D/elPSt)oQ, |"0Hгd}-NhPBNOqd -{v0^-dzoF&> ^k,:cS2zv_rPq/4 z$/(wS. I -*KI>~10\2m"80-XxtŒ1fI6uF@uGjOٝih{1iPR ;w -a J}iFM&(KL8LS*zv U/{7Ԅ -(LG?2$d2() }il%immKtMv { Zg\vbqiMsendstream -endobj -3892 0 obj << -/Type /Page -/Contents 3893 0 R -/Resources 3891 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3875 0 R -/Annots [ 3896 0 R 3897 0 R 3899 0 R 3901 0 R 3903 0 R 3904 0 R ] ->> endobj -3896 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -3897 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 609.4075 213.2166 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00172) >> ->> endobj -3899 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 516.2256 211.8219 526.1532] -/Subtype /Link -/A << /S /GoTo /D (a00078) >> ->> endobj -3901 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 458.3971 213.038 469.3011] -/Subtype /Link -/A << /S /GoTo /D (a00163_ge28f6cb60e86088d8886d0f804b4f37c) >> ->> endobj -3903 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 401.545 217.7102 412.4489] -/Subtype /Link -/A << /S /GoTo /D (a00163_g03070adbf8faab0f34f87c1270964306) >> ->> endobj -3904 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 388.9671 202.2283 399.4975] -/Subtype /Link -/A << /S /GoTo /D (a00163_gb97849f0d3ea858eee790b69591e6427) >> ->> endobj -3894 0 obj << -/D [3892 0 R /XYZ 90 757.9346 null] ->> endobj -1065 0 obj << -/D [3892 0 R /XYZ 90 739.9346 null] ->> endobj -274 0 obj << -/D [3892 0 R /XYZ 90 739.9346 null] ->> endobj -3895 0 obj << -/D [3892 0 R /XYZ 90 716.7484 null] ->> endobj -3898 0 obj << -/D [3892 0 R /XYZ 90 534.1992 null] ->> endobj -3900 0 obj << -/D [3892 0 R /XYZ 90 477.3471 null] ->> endobj -3902 0 obj << -/D [3892 0 R /XYZ 90 420.4949 null] ->> endobj -3891 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3908 0 obj << -/Length 2681 -/Filter /FlateDecode ->> -stream -xڽ[]o7},?d([+Yvv0T[ؒ&#rȹ"E"Yg9^3؀?6t&VjptDϯX1|~uyKn؊W˻]\:4DՈ||3x9tHnn,nܟՐI;TKVbNGF %5 o(aӑ¿y<8`wAn䊉Й$!::[31b1 \3Vs73tt:_߬7EGfA.Tztr~_-fOrٻ|޿Yt+5$m"=%JsͱČ% -\i~2r('Z@4AeÜ1fBogOuƷO#F>WWHvW#51VW-? *Dvf ԒS[d:X4)cf|H-'+^?Rq4_lfjv4f; ]ku,"mmkti@Y [g}XCa9zqTc;V믔Z2 JXF<@ގImgX| 3q{ T0o}WM-rslM{O z:[7Gr$8s34'qch^Wp]5ufӱ7& -#qU:!Uf!Axabo&䲂tw7Ǘd$q՛7$+7ZQ%^֦*. ΄\IjvX;&`Eay y{MDާhpI\'"Y"BBTe1 ;OJ+mslc`39"c3.#[ow_9I:|w瓋q⸻D&Ap;.Z _L 0nfMqyqIw?/.GV-clxy6 4 OO*zX6rY++۔@ۣ">%Hvx~2* UmE`ܲ~))`i}c`=X>"c=.#[ɩ-QPO*> AdVV1G D}jMk_]|ZOgI@WFi?QU\["~"ˌ2B L$nԽ.)QZZ<# ZO+b):Ϲ)]Vvc \yCG}\e$q3dbU5,gw%IU>!vc8ocwݸ$nn~ s{X*Q C wuB1"u&`v{Xn1my{MOoO.~NL(*jxvp%Ҡ -jx6ئjx3}Cyae1x1>a|Dx\FɈˍ&Wέ2 G*-n u:hH_!1 Gxo𘼇I܌YVx2TA -0NEn>Qv0=66n=܎Hf܆U6\U9%ؖM8לnp+1㼍!o#>2Os6jhPQbx;mܭw0=l7؍6v=؍Hf속ODJ)iP-w5䞮r2dVc r?pAePnKV `qg;\c%uM/궬ޤIED78f&)VZhIMT%Y Г\~>;} XALOhEU;-5 Ü7}?B:&w?q84!Banϋ8ˡoty[WÛܣ=ǥyX( opD[m|{G ;"Q8߬+[}WM=Z2PiF@}0R~4+f0!E BNbmֿx20^O_p;NiU/#~A21RtL~`B&endstream -endobj -3907 0 obj << -/Type /Page -/Contents 3908 0 R -/Resources 3906 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3875 0 R -/Annots [ 3911 0 R 3912 0 R 3914 0 R 3915 0 R 3917 0 R 3919 0 R 3921 0 R 3923 0 R 3925 0 R 3927 0 R 3929 0 R 3931 0 R 3933 0 R 3935 0 R 3937 0 R 3939 0 R 3941 0 R 3943 0 R 3945 0 R 3947 0 R 3948 0 R 3950 0 R 3951 0 R 3952 0 R 3953 0 R 3954 0 R 3955 0 R ] ->> endobj -3911 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 638.1863 274.5352 659.3878] -/Subtype/Link/A<> ->> endobj -3912 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 592.9052 189.974 601.7519] -/Subtype /Link -/A << /S /GoTo /D (a00173) >> ->> endobj -3914 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 480.609 174.2837 491.1394] -/Subtype /Link -/A << /S /GoTo /D (a00160_g070d2ce7b6bb7e5c05602aa8c308d0c4) >> ->> endobj -3915 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 468.0205 216.3555 477.9481] -/Subtype /Link -/A << /S /GoTo /D (a00160_gecf13b8dc783db2202ca5c34fe117fc3) >> ->> endobj -3917 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 454.8292 258.0292 464.7569] -/Subtype /Link -/A << /S /GoTo /D (a00102_96eb4534b574ece96ed36806039f73d3) >> ->> endobj -3919 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 441.638 288.6444 451.5657] -/Subtype /Link -/A << /S /GoTo /D (a00102_4350350ce0d4595876743d4c0a720bcc) >> ->> endobj -3921 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 428.4468 295.1 438.3745] -/Subtype /Link -/A << /S /GoTo /D (a00102_e7250008b68d1909d54040515eef8ebb) >> ->> endobj -3923 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 415.2556 305.9495 425.1832] -/Subtype /Link -/A << /S /GoTo /D (a00102_6a327c0ffd40f69fbcd5f01f12e5745c) >> ->> endobj -3925 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 402.0643 277.9346 411.992] -/Subtype /Link -/A << /S /GoTo /D (a00102_dd685a0f8b5e76a2687cc0f306813bfb) >> ->> endobj -3927 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 388.8731 241.5711 398.8008] -/Subtype /Link -/A << /S /GoTo /D (a00102_2e52037249bb98d7bbecf42e275beb07) >> ->> endobj -3929 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 375.6819 222.0444 385.6096] -/Subtype /Link -/A << /S /GoTo /D (a00102_72d99b1623afa14bd58c667b748c2ddc) >> ->> endobj -3931 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 362.4907 222.0444 372.4183] -/Subtype /Link -/A << /S /GoTo /D (a00102_c72f8777ccc45ae274449ea7a9f3de04) >> ->> endobj -3933 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 349.2994 261.3467 359.2271] -/Subtype /Link -/A << /S /GoTo /D (a00102_9f6c329c04baba17fe0f5b2a6597d713) >> ->> endobj -3935 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 336.1082 260.231 346.0359] -/Subtype /Link -/A << /S /GoTo /D (a00102_6aaa9da3d0f8d4c0799516d46d939942) >> ->> endobj -3937 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 322.917 261.546 332.8447] -/Subtype /Link -/A << /S /GoTo /D (a00102_8ee5e2c8e517d6e4f2198057f81e93c6) >> ->> endobj -3939 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 309.7258 222.0643 319.6534] -/Subtype /Link -/A << /S /GoTo /D (a00102_ee60b8757bacab269b0ccd7c240bf01d) >> ->> endobj -3941 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 296.5345 204.3509 306.4622] -/Subtype /Link -/A << /S /GoTo /D (a00102_bf4401501f1389872141a78b63f325a3) >> ->> endobj -3943 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 283.3433 219.2947 293.271] -/Subtype /Link -/A << /S /GoTo /D (a00102_55735650f879293d9b7b5fda6753d147) >> ->> endobj -3945 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 270.1521 209.3322 280.0797] -/Subtype /Link -/A << /S /GoTo /D (a00102_876c82c946543cd70c141e41417138e0) >> ->> endobj -3947 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 256.9608 214.4828 266.8885] -/Subtype /Link -/A << /S /GoTo /D (a00102_7bf0c086c7c41c12cc63324327932d91) >> ->> endobj -3948 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 243.7696 231.4091 253.6973] -/Subtype /Link -/A << /S /GoTo /D (a00160_g221d37ccde7e3fd0dd2c2eb0a6b15493) >> ->> endobj -3950 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 185.0539 194.0092 195.9579] -/Subtype /Link -/A << /S /GoTo /D (a00160_g7c5359305008e9183b18d6ab75f568bf) >> ->> endobj -3951 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 171.8627 187.9223 182.7667] -/Subtype /Link -/A << /S /GoTo /D (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) >> ->> endobj -3952 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 132.5288 138.5977 143.4328] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3953 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.5678 132.5288 205.5661 143.4328] -/Subtype /Link -/A << /S /GoTo /D (a00160_g66d19181ad5fe8b8f7c84d1f1d46a2ec) >> ->> endobj -3954 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 93.195 138.5977 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3955 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.5678 93.195 214.2533 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00160_g3191066cf8f76bd00b6843b77c37068f) >> ->> endobj -3909 0 obj << -/D [3907 0 R /XYZ 90 757.9346 null] ->> endobj -1066 0 obj << -/D [3907 0 R /XYZ 90 739.9346 null] ->> endobj -278 0 obj << -/D [3907 0 R /XYZ 90 739.9346 null] ->> endobj -3910 0 obj << -/D [3907 0 R /XYZ 90 716.6405 null] ->> endobj -3913 0 obj << -/D [3907 0 R /XYZ 90 499.4252 null] ->> endobj -3916 0 obj << -/D [3907 0 R /XYZ 90 472.0055 null] ->> endobj -3918 0 obj << -/D [3907 0 R /XYZ 90 458.8143 null] ->> endobj -3920 0 obj << -/D [3907 0 R /XYZ 90 445.6231 null] ->> endobj -3922 0 obj << -/D [3907 0 R /XYZ 90 432.4318 null] ->> endobj -3924 0 obj << -/D [3907 0 R /XYZ 90 419.2406 null] ->> endobj -3926 0 obj << -/D [3907 0 R /XYZ 90 406.0494 null] ->> endobj -3928 0 obj << -/D [3907 0 R /XYZ 90 392.8582 null] ->> endobj -3930 0 obj << -/D [3907 0 R /XYZ 90 379.6669 null] ->> endobj -3932 0 obj << -/D [3907 0 R /XYZ 90 366.4757 null] ->> endobj -3934 0 obj << -/D [3907 0 R /XYZ 90 353.2845 null] ->> endobj -3936 0 obj << -/D [3907 0 R /XYZ 90 340.0933 null] ->> endobj -3938 0 obj << -/D [3907 0 R /XYZ 90 326.902 null] ->> endobj -3940 0 obj << -/D [3907 0 R /XYZ 90 313.7108 null] ->> endobj -3942 0 obj << -/D [3907 0 R /XYZ 90 300.5196 null] ->> endobj -3944 0 obj << -/D [3907 0 R /XYZ 90 287.3283 null] ->> endobj -3946 0 obj << -/D [3907 0 R /XYZ 90 274.1371 null] ->> endobj -3949 0 obj << -/D [3907 0 R /XYZ 90 204.2437 null] ->> endobj -3906 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3959 0 obj << -/Length 737 -/Filter /FlateDecode ->> -stream -xڭVMO0WΌi? *m(J#;n*mJSiW9ĉ=o=F@8dČ'O 8J>Q&2Yb4$FPF 40@ M㬘Ms9j*vt|mVFYA[SfwTYj+,#hRc\%?74`dRqBIDK,q6j)ګ .KEDyI߯Ţ{U5dX[U.nhV7ӠԷ̫"@*9p*!$4/Oq7Q6z=Ϋ"_k 6e4i_Z' 걆 Zv#Egޖ5S)C!:! -qpd>rЇ~y&x^wĦH}(hsN6o{X6%c]BW$?_.XE> endobj -3961 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 703.2821 182.941 713.8125] -/Subtype /Link -/A << /S /GoTo /D (a00160_gdf916e0c752f5cda70d0bddb2be422ba) >> ->> endobj -3962 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [186.7567 703.2821 211.444 713.8125] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3963 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 664.4278 178.5273 674.9582] -/Subtype /Link -/A << /S /GoTo /D (a00160_gb50f78bbf36d912d69f6c1685d0b40e3) >> ->> endobj -3960 0 obj << -/D [3958 0 R /XYZ 90 757.9346 null] ->> endobj -3957 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3966 0 obj << -/Length 2209 -/Filter /FlateDecode ->> -stream -xڥY[~ׯ{'E]:SuDXRD'FޙPˋH˷3,ْ-TD!2{^/st@KV-gz fVҨc5犬7*}ne쮎;_ac8[=7Um>9GOEUg;z)꽽rS ~*N[]x79λKo߽`Sv6F7m,Fedii/x% ]; Jk™e@oA!?DK>[&0xCfbX4CJZ-jN7PCsՍwqnSɹC,pҸS *n4­(xX`_+tT|]!Xn/fzevYʜr? >ǘDbqM+)\x)&lh9&0Z}. 5CKAaձbZ58=A)iA:[]p8"ͽ7|G|z8!'nvwu[Rj%)!hH įW!GPf|,67pļ+U_?eBy_.vxRо6cٓ`+z̵dM] dlsAF%X#cO$T|>B$&:I1Jń/GhhA -Ɖb1􆀱6ACˋ8W6 &59|&ƒ`LSH)g:lKɲKP8D0 -qD:Y`vm'S ]Ttu*x3 a$y)vy5\P$2D`6/ 13DG+W% {h Ұ:7x9Ԡ d >5c @5a gcJFJ6)/2GJG5|0zY1;J[AMvOQT`jA V_u~Sa>1XizWUb 7XTCK]'l4=3{x=/h_g2 "w L*F`F1<ߤ6InfP/蛠1SSX*E'D+ n籭s9 -&%=Q0P4^Eɾ[3D 8MoUsp% D<9vJ\'Ug6O:)ҙےNwt:o!i+rҁJx7 -$N9įC}q]*?kA_u`HESoQC]MqwOl˪@~._P}+])0Cw۵qDAM};Tq{{ &B7WS:ګQp.Jr.1 atc842]e)=_|@5qOpS{cxf8 )/OO޴? 8Yendstream -endobj -3965 0 obj << -/Type /Page -/Contents 3966 0 R -/Resources 3964 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3984 0 R -/Annots [ 3969 0 R 3970 0 R 3972 0 R 3973 0 R 3974 0 R 3975 0 R 3977 0 R 3979 0 R 3980 0 R 3981 0 R 3982 0 R 3983 0 R ] ->> endobj -3969 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 639.4127 274.5352 660.6142] -/Subtype/Link/A<> ->> endobj -3970 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 612.7666 190.532 621.6133] -/Subtype /Link -/A << /S /GoTo /D (a00174) >> ->> endobj -3972 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.3051 493.1311 359.3784 504.0351] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -3973 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [321.4596 463.5516 356.3884 474.4555] -/Subtype /Link -/A << /S /GoTo /D (a00140) >> ->> endobj -3974 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [159.2897 309.3651 239.3189 320.2691] -/Subtype /Link -/A << /S /GoTo /D (a00153_ga92afb113e122f860392bfbd385f842e) >> ->> endobj -3975 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [336.7197 294.8746 372.0849 304.7798] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -3977 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 226.9876 237.9445 237.8916] -/Subtype /Link -/A << /S /GoTo /D (a00160_g3d768e989e308144190ae1a5ddfa9726) >> ->> endobj -3979 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 170.3828 194.0092 181.2867] -/Subtype /Link -/A << /S /GoTo /D (a00160_g7c5359305008e9183b18d6ab75f568bf) >> ->> endobj -3980 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 157.5616 188.4803 168.4655] -/Subtype /Link -/A << /S /GoTo /D (a00160_g6d9751d534453425c7a5a215d1d4414c) >> ->> endobj -3981 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [243.4737 157.5616 268.161 168.4655] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3982 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 119.3412 182.941 129.8716] -/Subtype /Link -/A << /S /GoTo /D (a00160_gdf916e0c752f5cda70d0bddb2be422ba) >> ->> endobj -3983 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [186.7567 119.3412 211.444 129.8716] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3967 0 obj << -/D [3965 0 R /XYZ 90 757.9346 null] ->> endobj -1067 0 obj << -/D [3965 0 R /XYZ 90 739.9346 null] ->> endobj -282 0 obj << -/D [3965 0 R /XYZ 90 739.9346 null] ->> endobj -3968 0 obj << -/D [3965 0 R /XYZ 90 716.7484 null] ->> endobj -3971 0 obj << -/D [3965 0 R /XYZ 90 553.0164 null] ->> endobj -3976 0 obj << -/D [3965 0 R /XYZ 90 245.8074 null] ->> endobj -3978 0 obj << -/D [3965 0 R /XYZ 90 189.2026 null] ->> endobj -3964 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3988 0 obj << -/Length 969 -/Filter /FlateDecode ->> -stream -xڽWMoFW(ݙX bImӲl(Ү3XzIZK O3oqsAlylaVH_E<Z߷oƖY:޴40 -7hQUo:U|w';{Y\wY^վן!mJ Moѧ<&vg&*~ Z"]!N #jx\3);T?jZpZG%b/4d6"ܭ5w]#@@5ՠT3n0Am,+JθE ¹%|qE;BӨM2;/:f*+tCe8LbF3Q@5Usa16g~$z4ee&CȆƻ*މWuYɭdc{˾؝42b'+qm!\J_ ) M&`.>#pZ6ePܧ;Xz=s - C-Of"f`9}tX )g:iV A&?2B.u-w}v͔YXT=c,>P_g^J[`@-@jFJmNf4"yDmD<˂^%3C^u$dN=8V j6R`4~z7k^<.GD#Oq9})H l^м -]W̫0Y\J|1I4G[ -?L6M -s8i5 YGzϱpI?۱('>{ -?K>{Iޣ\Y.S@Tɳ[3NڃVWE@sKdDҨ+(s:݊:˳2g/wrѼ?(^`Fu)=0_>lQV45O{g>endstream -endobj -3987 0 obj << -/Type /Page -/Contents 3988 0 R -/Resources 3986 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3984 0 R -/Annots [ 3990 0 R 3991 0 R 3992 0 R 3993 0 R 3994 0 R 3995 0 R ] ->> endobj -3990 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 726.8189 138.5977 737.7228] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3991 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.5678 726.8189 214.2533 737.7228] -/Subtype /Link -/A << /S /GoTo /D (a00160_g3191066cf8f76bd00b6843b77c37068f) >> ->> endobj -3992 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 688.3382 178.5273 698.8685] -/Subtype /Link -/A << /S /GoTo /D (a00160_gb50f78bbf36d912d69f6c1685d0b40e3) >> ->> endobj -3993 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 649.1103 138.5977 660.0142] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -3994 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.5678 649.1103 205.5661 660.0142] -/Subtype /Link -/A << /S /GoTo /D (a00160_g66d19181ad5fe8b8f7c84d1f1d46a2ec) >> ->> endobj -3995 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 610.256 187.9223 621.1599] -/Subtype /Link -/A << /S /GoTo /D (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) >> ->> endobj -3989 0 obj << -/D [3987 0 R /XYZ 90 757.9346 null] ->> endobj -3986 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -3998 0 obj << -/Length 1782 -/Filter /FlateDecode ->> -stream -xڭZkF_aDjy?Pj -ǛuI4ޱ=5U+$ֱ9sϝ$$$'J(dId_H}y ח>ٳ$Ier{WF Jhr0H,Tp8=;·?Vg_۬:zeHS`Oof6jIb= 'kf3Z$148ev~gP04RAP GpRJ0~XaUdedH Lu:Mv^Au&;pEyf0V¼{Gu[ b⼲P7Z LJ$S@Kկm b 0D\.7)FIA )!X!EF+׫]KuA CSPB%E ({RB(ّZ]<җ݋l@OkP jQuP`hN]kh jx1PwK]H -Sj"o"/=z1Iu" FZtԘw~ 8ҿazqzv5h$[|cĘΠҸD!I9/O"^0g%t''v;+$C.Oc^lN;cN4%$25:)yʡr*@D03(vC&(dvxp)!fc  BkKRooCO 26/< t]G%RTs^\+?~^NCŘQc: x5dH(eM!,nr39ۘN0E>䰌^\grz2 Z ,^Y #-!,nqѳ8XNE>Ⰼ^\g!;^‰aV<fv@!DRqC6ר: iG:byA ݨ_ڟvmxxaNnF|%Rl}u!F0oc;{2zql}bx腞cdc=ü>[S<uqz&n1:}cE=2^=:[qR4!'A$#V:0mV:/QXL>:yXy3K]͖U廬!*)Lj誶Ż0MüM7y6MDE/nF"?r!b= -p5i[B+e¨źDF1~P_eEv\/wov=D1݂^\^KjzrɊnz)/$fendstream -endobj -3997 0 obj << -/Type /Page -/Contents 3998 0 R -/Resources 3996 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3984 0 R -/Annots [ 4001 0 R 4002 0 R 4004 0 R 4005 0 R 4006 0 R 4007 0 R 4008 0 R 4009 0 R 4010 0 R 4012 0 R 4013 0 R 4014 0 R 4015 0 R 4016 0 R ] ->> endobj -4001 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 274.5352 657.906] -/Subtype/Link/A<> ->> endobj -4002 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 607.3502 185.6501 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00175) >> ->> endobj -4004 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 463.3525 176.5052 473.2801] -/Subtype /Link -/A << /S /GoTo /D (a00161_g3212e70c55244608ac16316888c354f0) >> ->> endobj -4005 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 450.401 176.4952 460.3287] -/Subtype /Link -/A << /S /GoTo /D (a00161_g6cda47c85ce1b58b501b44ac9cccc50e) >> ->> endobj -4006 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 436.4733 194.2087 447.3773] -/Subtype /Link -/A << /S /GoTo /D (a00161_gf7dd2757d1e766f65b01ba7c91c660a0) >> ->> endobj -4007 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 424.4982 173.7357 434.4258] -/Subtype /Link -/A << /S /GoTo /D (a00161_g34b924954ba5707d536df28d71a80d39) >> ->> endobj -4008 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 411.5467 173.7357 421.4744] -/Subtype /Link -/A << /S /GoTo /D (a00161_g9e97c58fe35f750ad192774be9408ac8) >> ->> endobj -4009 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 398.5953 173.7357 408.523] -/Subtype /Link -/A << /S /GoTo /D (a00161_g28cf9765e4b57451af559ab988ad7160) >> ->> endobj -4010 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 385.6439 173.7357 395.5715] -/Subtype /Link -/A << /S /GoTo /D (a00161_g17ccd786400fd08b941e11046df1668f) >> ->> endobj -4012 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 327.8154 189.0379 338.7194] -/Subtype /Link -/A << /S /GoTo /D (a00161_gbc331f73107958428bf1c392ba19b6f4) >> ->> endobj -4013 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 314.864 197.8948 325.7679] -/Subtype /Link -/A << /S /GoTo /D (a00161_g37e3103b9591790d484a450525739661) >> ->> endobj -4014 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [171.4857 276.0097 216.0979 286.9136] -/Subtype /Link -/A << /S /GoTo /D (a00161_gf0349a8481565e80f55a751e2b408d6d) >> ->> endobj -4015 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [446.0722 276.0097 470.7595 286.9136] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4016 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 237.1554 173.556 248.0593] -/Subtype /Link -/A << /S /GoTo /D (a00161_g64807ba7c221ddf735572d05021539f2) >> ->> endobj -3999 0 obj << -/D [3997 0 R /XYZ 90 757.9346 null] ->> endobj -1068 0 obj << -/D [3997 0 R /XYZ 90 739.9346 null] ->> endobj -286 0 obj << -/D [3997 0 R /XYZ 90 739.9346 null] ->> endobj -4000 0 obj << -/D [3997 0 R /XYZ 90 716.7484 null] ->> endobj -4003 0 obj << -/D [3997 0 R /XYZ 90 481.3261 null] ->> endobj -4011 0 obj << -/D [3997 0 R /XYZ 90 346.7654 null] ->> endobj -3996 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4020 0 obj << -/Length 2158 -/Filter /FlateDecode ->> -stream -xڭYHHEwI:EQ7qj@SkTDҎQ>Ck,ǂH"Bd `~}z O$`9(F$g<Z3n<"ZP5# )UY{&m{z`TR(~{Պ2$ir7u| `J9Ĵv,$0Ýzv1Q-~VGC_eu^f9*h83H9e1;΄Ywy5U^g |gd&͛w<݃zR~α$QBNb8e%G~'RdH"B-͋ ͡<b3I$8&}+0 yڰ-o]ؐ1o$|EH("qv+&V#(@ -bm$NCyx$ 6dtXcn(_'\mb\Bl]UAw9eLqhG_],k_0#(Ρ ՜ CsTK#nL &#P* ~YٱCP_Ź:7ō!KMsi59H2 Iv+S! Jr.ǡy iZ…lPv,pPo_a׹C %l1' ,XQM7QHpRٴ|.s9 - ?%V:P쨖եvmS 6'Qal͋.w0=DxԈsƌPMv~1i{`Q&k[]ցֵZ)>Z ]ĤkA&e |ѵ,_0ZCֵt=VOkY%l`{;8$6:+Ls;|kxCM. -gNcUypsd>Qf\Gj}iMsޣ;b]xK%W˾r~PREi[^tȫs:+<\pz*d=6~k4\-S&ڲEOsAFC \'4IO 0My{+"pꏳ5gNUЂ\& g[Nq -Є-O0Ӳvd-,e]u-kKbH~kuKb{qBC(jV9XA ->nBD$M+xSk)$ 'FI|e˙Ñ.~kgR[{PǽK_]6" -+ʕu}j?@ZH.Ɓ -1 A3@F9ʅue> D!_auė8 Ya/pA„C3*٢'rb6BI,앢$!^bC[hu91yqqJeR'N>'h 9Z%_wd˾1y}Y_|5#ySATn9KT_ :Rn't$ "E^w&n[ƚUFKAEC_^ưB}XY(ho2ǻ [] ^aj>99ʶxv-ݙU~zG?OXwl/Xendstream -endobj -4019 0 obj << -/Type /Page -/Contents 4020 0 R -/Resources 4018 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3984 0 R -/Annots [ 4023 0 R 4024 0 R 4026 0 R 4028 0 R 4029 0 R 4030 0 R 4031 0 R 4032 0 R 4033 0 R 4035 0 R 4036 0 R ] ->> endobj -4023 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 641.4254 274.5352 662.6268] -/Subtype/Link/A<> ->> endobj -4024 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 614.7347 186.2081 625.6386] -/Subtype /Link -/A << /S /GoTo /D (a00176) >> ->> endobj -4026 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 541.2703 183.1495 551.0484] -/Subtype /Link -/A << /S /GoTo /D (a00085) >> ->> endobj -4028 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.3051 441.6787 359.3784 452.5826] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -4029 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [321.4596 412.0991 356.3884 423.0031] -/Subtype /Link -/A << /S /GoTo /D (a00140) >> ->> endobj -4030 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 261.938 213.038 272.842] -/Subtype /Link -/A << /S /GoTo /D (a00153_g41aa744caa46913b3b3aedb2a4e78546) >> ->> endobj -4031 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 224.1492 190.8907 235.0531] -/Subtype /Link -/A << /S /GoTo /D (a00085) >> ->> endobj -4032 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [191.3888 224.1492 268.6482 235.0531] -/Subtype /Link -/A << /S /GoTo /D (a00153_g69646a81a922033c5281445a71f8ffed) >> ->> endobj -4033 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [336.7197 210.0611 372.0849 219.9664] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -4035 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 143.9152 217.4713 153.8429] -/Subtype /Link -/A << /S /GoTo /D (a00161_g029256bc17a12e1e86781887e11c0c7d) >> ->> endobj -4036 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.6302 105.1501 204.6385 116.0541] -/Subtype /Link -/A << /S /GoTo /D (a00161_gcff75c8c930abd6ff168e85373a4eb92) >> ->> endobj -4021 0 obj << -/D [4019 0 R /XYZ 90 757.9346 null] ->> endobj -1069 0 obj << -/D [4019 0 R /XYZ 90 739.9346 null] ->> endobj -290 0 obj << -/D [4019 0 R /XYZ 90 739.9346 null] ->> endobj -4022 0 obj << -/D [4019 0 R /XYZ 90 716.7484 null] ->> endobj -4025 0 obj << -/D [4019 0 R /XYZ 90 559.6875 null] ->> endobj -4027 0 obj << -/D [4019 0 R /XYZ 90 501.564 null] ->> endobj -4034 0 obj << -/D [4019 0 R /XYZ 90 161.3562 null] ->> endobj -4018 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4040 0 obj << -/Length 690 -/Filter /FlateDecode ->> -stream -xڥVn0+xfH9 -oiP(l TIUd1@ac3% aDKMY"F8| x7n! -|0IθdvnMl>[eIV,!>V(Zᑑ%J&;1좘 Fߢ;,Tv)ںzs,|_TCA7oD'EVjb q)FZPbjR'MG, Or ] pnP}4hks198XTȖv.6ii[YYK@?%DN]QYh$Mō6rL5Yk{nONOhv6iޏMpf]oZ,K3.֢ӤE11au9p./։R %J VJHx} PѳK^~p*сxT\KqzaLJr;{X8c)S~mSm]=%IBU -7 ob.΢κ5փ AI_{s\wooHDԚo"+Ӄ?)73:ݗ]sq͙q[g5rwWj^x򞅧~z /mendstream -endobj -4039 0 obj << -/Type /Page -/Contents 4040 0 R -/Resources 4038 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3984 0 R -/Annots [ 4043 0 R 4044 0 R 4045 0 R ] ->> endobj -4043 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 704.1539 179.6335 715.0578] -/Subtype /Link -/A << /S /GoTo /D (a00161_gb1fc692a2700b7a51517724364683f67) >> ->> endobj -4044 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 665.2996 173.556 676.2035] -/Subtype /Link -/A << /S /GoTo /D (a00161_g64807ba7c221ddf735572d05021539f2) >> ->> endobj -4045 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 652.3482 189.0379 663.2521] -/Subtype /Link -/A << /S /GoTo /D (a00161_gbc331f73107958428bf1c392ba19b6f4) >> ->> endobj -4041 0 obj << -/D [4039 0 R /XYZ 90 757.9346 null] ->> endobj -4042 0 obj << -/D [4039 0 R /XYZ 90 723.1038 null] ->> endobj -4038 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4048 0 obj << -/Length 1254 -/Filter /FlateDecode ->> -stream -xڭX]o6} / 6隵X- -UVb!YRe}Y2{/%)B@X.Tm&4xƿN|<: -OyD2`bi -R2wؔt -dmt!<$teq?yhKU+pL>}O(/A X˂D0''WqyIAp!z6J4CN:[5ڃ| 4N JGT oCe,';,ks8ɶ1켄BY;F -FB-y5R$%THKijiseDs>th-_2qet"qފ%$CGXZR/oZ{VuٝN@̒(#Y„%5 -o ɰ$yIns#T -#_%i>.NUyu. :Xri8Ŏ!p -@v'3YDHF=urUi1. n8Y%"(gw:V83ckyB`RMWrrfZc2:q7}x :âT0F {8jDíEI!{M#TMͩ%[Q"{jFnpgIY~`~d<B7g 0~{F*ZO39?@߾럿?ǝw#ղ/9 8endstream -endobj -4047 0 obj << -/Type /Page -/Contents 4048 0 R -/Resources 4046 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 3984 0 R -/Annots [ 4051 0 R 4052 0 R 4054 0 R 4056 0 R 4057 0 R 4058 0 R ] ->> endobj -4051 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4052 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 609.4075 185.0921 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00177) >> ->> endobj -4054 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 516.2256 223.1601 526.1532] -/Subtype /Link -/A << /S /GoTo /D (a00162_gaa60ca995565b799bb958c806e933665) >> ->> endobj -4056 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 458.7707 172.998 469.3011] -/Subtype /Link -/A << /S /GoTo /D (a00162_g69b075ef7e4d7bcf5a903d3d75baac02) >> ->> endobj -4057 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 419.9164 176.8634 430.4468] -/Subtype /Link -/A << /S /GoTo /D (a00162_gd1f18f739da7703628c3663209463a0d) >> ->> endobj -4058 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 380.6885 180.1912 391.5925] -/Subtype /Link -/A << /S /GoTo /D (a00162_g86beee1f69d05b16022dfb430470e9ce) >> ->> endobj -4049 0 obj << -/D [4047 0 R /XYZ 90 757.9346 null] ->> endobj -1070 0 obj << -/D [4047 0 R /XYZ 90 739.9346 null] ->> endobj -294 0 obj << -/D [4047 0 R /XYZ 90 739.9346 null] ->> endobj -4050 0 obj << -/D [4047 0 R /XYZ 90 716.7484 null] ->> endobj -4053 0 obj << -/D [4047 0 R /XYZ 90 534.1992 null] ->> endobj -4055 0 obj << -/D [4047 0 R /XYZ 90 477.3471 null] ->> endobj -4046 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4062 0 obj << -/Length 1385 -/Filter /FlateDecode ->> -stream -xڭY[o6~У `!K z[[ Blٵeݯߡ$Ť}(e}:G I0# -eNp?}[j2(#H%4_}jgs*ttN7f}HÌi/O\33%B;Mox4IJ6'+{7-gCS.6MFla%/͗7]K d(CmpobVU3tn@hH6 ́>/m b 0 pM0EQNޠ5!X!E8G+ӯۺiF4=-)Lzʧ~QU -idju)q?=ҧ݋l ,lyDǴ˅r$2\ߚx?ˀD -zț*+Jr_qJ -DI$H`V5~?0{q-;. ͑KƢhos -Kё8T,n0&Tx^G蒉&L`sPubWoCEb~;yX͋P> :QFz,^/`HἍzqrQoE/Ybq@Z bBNGʗo|}t@ z (~],-ͧy.jkh )RPWéHdX>, Vި۹GH9¢_)hb5ARNz+zqAwE]6k f LI2.w"[Bbd#-Cp0KatL#geG:` -aYCF,B-=agK|; &Qdˮ$4vjs`Vps6 -:dH[áM'Z^F+3q7Ȱ}X@Qݷs}E/YS1FPZ")T5cq ̅ !Ș4(m7ՠj[򢽡c&9WӋc5XS1U^!9Xx^yykc0^ܳv?`< p*_Xn_x46F!8ذYUWf *a qh*] 6 Hd5aca>Q(yaQnwj͈ B5eWWcYf*[q޾Ѩ~^݊ڿ8j^}}sendstream -endobj -4061 0 obj << -/Type /Page -/Contents 4062 0 R -/Resources 4060 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4074 0 R -/Annots [ 4065 0 R 4066 0 R 4068 0 R 4069 0 R 4070 0 R 4071 0 R 4072 0 R 4073 0 R ] ->> endobj -4065 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4066 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 609.4075 185.6501 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00178) >> ->> endobj -4068 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 550.8716 172.998 561.402] -/Subtype /Link -/A << /S /GoTo /D (a00162_g69b075ef7e4d7bcf5a903d3d75baac02) >> ->> endobj -4069 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 512.0173 176.8634 522.5477] -/Subtype /Link -/A << /S /GoTo /D (a00162_gd1f18f739da7703628c3663209463a0d) >> ->> endobj -4070 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 472.7894 180.1912 483.6934] -/Subtype /Link -/A << /S /GoTo /D (a00162_g86beee1f69d05b16022dfb430470e9ce) >> ->> endobj -4071 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 433.9352 175.2098 444.8391] -/Subtype /Link -/A << /S /GoTo /D (a00162_g984c4a8b65a3cb35460b073a40568c25) >> ->> endobj -4072 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 395.0809 185.1725 405.9848] -/Subtype /Link -/A << /S /GoTo /D (a00162_gf11c966b0e4f4ecaa73deb14bfb6830f) >> ->> endobj -4073 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 356.2266 188.49 367.1305] -/Subtype /Link -/A << /S /GoTo /D (a00162_g123c95a7bb55143cabba92446ce8f513) >> ->> endobj -4063 0 obj << -/D [4061 0 R /XYZ 90 757.9346 null] ->> endobj -1071 0 obj << -/D [4061 0 R /XYZ 90 739.9346 null] ->> endobj -298 0 obj << -/D [4061 0 R /XYZ 90 739.9346 null] ->> endobj -4064 0 obj << -/D [4061 0 R /XYZ 90 716.7484 null] ->> endobj -4067 0 obj << -/D [4061 0 R /XYZ 90 569.448 null] ->> endobj -4060 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4078 0 obj << -/Length 2227 -/Filter /FlateDecode ->> -stream -xڭ[]o}ׯ \7m"i*3PYVѴ$^rQᜳsfK/~ѹQ8!|s?Og=}b/;4:fDq_Lw\Opr_amzvh[UJhI߂3JjPœ"|~4' rSLG$0<5,q+F)]jηl|W}Kf~Sa6qJ!><]|Zy nۄUq{8"r]]5ם_K C*B5s-! bTZ -JR0m-D\wgCn#8;T=N&cv}&cڝ2]9BAW'j b6"ኌlN"{kvs"jKG4O[J{Oyo25vTɡ9w|P%f#sп:gD MV6cLy;c &ȧH7ǜҹ[P[l``mbɈ8`Xb1,y'X#b1.#[/WK'`[?y7҃ h< sM/ ֯Ÿ3<ʆc8ogx;qI܌ᯞ/%]| \BB1}%,8SXjVvcy;c ȧ8Hf߫7iS#k]F*|2xnX[;vc8ogw;qIܜ*Q"@!|:bx{G6Fh6NIV'8kF&xfz%u?2gѐUY+`Xc12\y'#3.#u:0 -Ua6Tn-3SW cd7NG>n\F7cwon_7'MG*Ø9##`1;~c8ow;qI\/cujl%!eB":TAU}\e[[* _1:Vc8ogu;qItsYPz<d309$/c3w-GLݣ8ip8&-c/an;]~ι-0`{;`//ߍqɉ -D+cJj"ka0Ȇr=^_Rĭw1^?/s?"}B`J>=Uts>{w7BaGd6aD -t]_`Xo3~6]EѹR-@RcPOa}}هk%PI")ow~UBXX]ǼqO)|\ELJCZuP|xoa -0`Q F# }p\J4CA祑ц񛬚Z$ ô$Z=oVl8 00=b'4LAEa.%0p7#4 Uⷚh O0}THLᠴ;ĘmA+~|b Fh,߂KJO~nO~gis//-_{J*ѻRR"(Յ,TrbCL\eU#w`e1us=-:">6.7f,DTI7lM^ -Vz._|u3ֳ5xW>w?K>o_/%̱o OU?eL-Jendstream -endobj -4077 0 obj << -/Type /Page -/Contents 4078 0 R -/Resources 4076 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4074 0 R -/Annots [ 4081 0 R 4082 0 R 4084 0 R 4085 0 R 4086 0 R 4087 0 R 4088 0 R 4089 0 R 4090 0 R 4091 0 R 4092 0 R 4093 0 R 4094 0 R 4095 0 R 4096 0 R 4097 0 R 4099 0 R 4100 0 R 4101 0 R 4102 0 R 4103 0 R ] ->> endobj -4081 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 638.7618 250.6249 659.9632] -/Subtype/Link/A<> ->> endobj -4082 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 611.4648 193.391 620.3114] -/Subtype /Link -/A << /S /GoTo /D (a00179) >> ->> endobj -4084 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 465.4097 176.5052 475.3374] -/Subtype /Link -/A << /S /GoTo /D (a00162_g3212e70c55244608ac16316888c354f0) >> ->> endobj -4085 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 452.4583 176.4952 462.386] -/Subtype /Link -/A << /S /GoTo /D (a00162_g6cda47c85ce1b58b501b44ac9cccc50e) >> ->> endobj -4086 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 439.5069 224.8339 449.4346] -/Subtype /Link -/A << /S /GoTo /D (a00162_ge429c985be88ed048f382511c9ff00de) >> ->> endobj -4087 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 426.5554 198.4231 436.4831] -/Subtype /Link -/A << /S /GoTo /D (a00162_g19709735f29dafeabb91e0882231f9f1) >> ->> endobj -4088 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 413.604 206.5625 423.5317] -/Subtype /Link -/A << /S /GoTo /D (a00162_g7e904ab59f7ee134cf3218a8219e7e29) >> ->> endobj -4089 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 400.6526 211.4442 410.5803] -/Subtype /Link -/A << /S /GoTo /D (a00162_g5025948dd998f65a13a375a37aa5edf5) >> ->> endobj -4090 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 387.7011 196.052 397.6288] -/Subtype /Link -/A << /S /GoTo /D (a00162_gbfc1d8d15852318927cda30e1bc0470a) >> ->> endobj -4091 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 374.7497 209.3322 384.6774] -/Subtype /Link -/A << /S /GoTo /D (a00162_gaaaaf66ea67900c36d01136d5bad1168) >> ->> endobj -4092 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 361.7983 213.2175 371.726] -/Subtype /Link -/A << /S /GoTo /D (a00162_g57aca709a33690cd4fb73fe199fa1bdd) >> ->> endobj -4093 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 348.8469 207.0906 358.7745] -/Subtype /Link -/A << /S /GoTo /D (a00162_g8b600918f84783490fd791ce773175ab) >> ->> endobj -4094 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 335.8954 215.23 345.8231] -/Subtype /Link -/A << /S /GoTo /D (a00162_g6b2d00412304e2d95e7b853cce5858b0) >> ->> endobj -4095 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 322.944 220.1117 332.8717] -/Subtype /Link -/A << /S /GoTo /D (a00162_g3318dec654781e9d6d8ec873636660c6) >> ->> endobj -4096 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 309.9926 204.7195 319.9202] -/Subtype /Link -/A << /S /GoTo /D (a00162_gf784a76fe619452eddf87e6376a4bf9d) >> ->> endobj -4097 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 297.0411 217.9996 306.9688] -/Subtype /Link -/A << /S /GoTo /D (a00162_g3a4852e2372e34e1c0142d1147fbe027) >> ->> endobj -4099 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 239.2127 175.2098 250.1166] -/Subtype /Link -/A << /S /GoTo /D (a00162_g984c4a8b65a3cb35460b073a40568c25) >> ->> endobj -4100 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 200.3584 188.49 211.2623] -/Subtype /Link -/A << /S /GoTo /D (a00162_g123c95a7bb55143cabba92446ce8f513) >> ->> endobj -4101 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 161.5041 185.1725 172.408] -/Subtype /Link -/A << /S /GoTo /D (a00162_gf11c966b0e4f4ecaa73deb14bfb6830f) >> ->> endobj -4102 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 123.0234 181.2968 133.5537] -/Subtype /Link -/A << /S /GoTo /D (a00162_g82ff99d50221f7c17df57dc6092ffc97) >> ->> endobj -4103 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 109.6984 196.7787 120.6023] -/Subtype /Link -/A << /S /GoTo /D (a00162_g52c3c5ab1b1aa0659b5e465f7fbcc409) >> ->> endobj -4079 0 obj << -/D [4077 0 R /XYZ 90 757.9346 null] ->> endobj -1072 0 obj << -/D [4077 0 R /XYZ 90 739.9346 null] ->> endobj -302 0 obj << -/D [4077 0 R /XYZ 90 739.9346 null] ->> endobj -4080 0 obj << -/D [4077 0 R /XYZ 90 716.7484 null] ->> endobj -4083 0 obj << -/D [4077 0 R /XYZ 90 483.3834 null] ->> endobj -4098 0 obj << -/D [4077 0 R /XYZ 90 258.1626 null] ->> endobj -4076 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4107 0 obj << -/Length 1235 -/Filter /FlateDecode ->> -stream -xڥX[sF}Whx`ө]Bݘ<%l3@AJbit9&`D 2Y_^%KC+!ga| I(Q-j[04k5k(#> bt4:x24vzsUA~%#keLƓhl|3_MYj$ -ա*jgQqR#1?o^º 1zy+}W^#qAqvCf6Å@F}nv;B%H_aQ7w˻q.,sS`rb[~HkX[/t>pAg D*uHT#exa(Dh0GjwIhF^ K/ VpI1 T.&l+e|͸]EEsS$[faO%ɉ],a%cJ2[c@qZO@"ܑw➙>)Ҕw$DuIRX2pMھ搳T }ɋGC¨_,NM>׏ŭ`rt7|Au`a@E/n7waci~jϿ Auendstream -endobj -4106 0 obj << -/Type /Page -/Contents 4107 0 R -/Resources 4105 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4074 0 R -/Annots [ 4110 0 R 4111 0 R 4113 0 R 4115 0 R 4116 0 R 4117 0 R 4119 0 R 4120 0 R 4122 0 R ] ->> endobj -4110 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 638.7618 250.6249 659.9632] -/Subtype/Link/A<> ->> endobj -4111 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 611.4648 193.9489 620.3114] -/Subtype /Link -/A << /S /GoTo /D (a00180) >> ->> endobj -4113 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 535.9072 190.8904 545.8349] -/Subtype /Link -/A << /S /GoTo /D (a00086) >> ->> endobj -4115 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 479.055 271.1301 488.9827] -/Subtype /Link -/A << /S /GoTo /D (a00162_g26440a35353cb457747a4cea372c62e9) >> ->> endobj -4116 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 466.1036 280.5446 476.0313] -/Subtype /Link -/A << /S /GoTo /D (a00162_g30fe27cba3c14ae7f9a7f118144af43a) >> ->> endobj -4117 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 452.1759 213.038 463.0799] -/Subtype /Link -/A << /S /GoTo /D (a00162_ge28f6cb60e86088d8886d0f804b4f37c) >> ->> endobj -4119 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 395.3237 198.6315 406.2277] -/Subtype /Link -/A << /S /GoTo /D (a00086) >> ->> endobj -4120 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.1296 395.3237 276.389 406.2277] -/Subtype /Link -/A << /S /GoTo /D (a00162_g4647b76d0ef50a5305505041f5775a37) >> ->> endobj -4122 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 338.4716 196.7787 349.3755] -/Subtype /Link -/A << /S /GoTo /D (a00162_g52c3c5ab1b1aa0659b5e465f7fbcc409) >> ->> endobj -4108 0 obj << -/D [4106 0 R /XYZ 90 757.9346 null] ->> endobj -1073 0 obj << -/D [4106 0 R /XYZ 90 739.9346 null] ->> endobj -306 0 obj << -/D [4106 0 R /XYZ 90 739.9346 null] ->> endobj -4109 0 obj << -/D [4106 0 R /XYZ 90 716.7484 null] ->> endobj -4112 0 obj << -/D [4106 0 R /XYZ 90 553.8809 null] ->> endobj -4114 0 obj << -/D [4106 0 R /XYZ 90 497.0287 null] ->> endobj -4118 0 obj << -/D [4106 0 R /XYZ 90 411.9902 null] ->> endobj -4121 0 obj << -/D [4106 0 R /XYZ 90 357.4215 null] ->> endobj -4105 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4126 0 obj << -/Length 2234 -/Filter /FlateDecode ->> -stream -xڵZے6}P%/ _\[u2r2ٝQvKh*LtImdUkAlDᏍeR+:_pŪ܍q9fDqG/c;.t/8Tt-^Eyt[68?voWYM[RB3O/ԽD8FJs|\뫇q't N1=:& |8֔5OOo*-+,c/ b(XKFRgHBBMqCeدB qtWƹ>:OzuqǶH%4)ŀЧ<=yd!$3DsYv>-c5_VO+(zջA}qحH[I bmR+Чp8W#4Warp`IHL*CeGjE E.1k0SXy \saNAkTQ_/&R kYd$qNYm - -FeDp2 v٭⡍;`vXn1y b7.#۴a6q.0gǟ^ݾ -ʈtiQ} -6M}u :XX0ƨp޺bu R$.Z?NLYLrFe4qLj)uY5,>`Xz1筭yX b=.#Z34|*hDJIRʨ½]K*3uBoD,_cT8o]1"h)\F-_=LIOL(pe[r%#w -\GIk#C,G5z ~'ūx.ssShaU3]va-,ᶤ\ò3o&32w?%.3M4DH T 0 -V-`VXj1筭yX b5.#Xogz8.,*q\F7q|zSRi7-Ca89E2s- Ԉ\LL//,, z*-Q8Yp+1oklGmpA74 \",IL˛-G1fXhEjXoy ´ TXyĿab=M󞶇Շmxn5%!>'(l-~D2@~Fh%dp? 3 C9)ip&?O[7&," -[E* 4ǘjqBT$qڮҾt.)p_Zy N!^`N@;w|_*:=nyZƤiֻN! L+^>S8#}X2tC-cËK?S?}3^5) W]5'^.CVD0 endstream -endobj -4125 0 obj << -/Type /Page -/Contents 4126 0 R -/Resources 4124 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4074 0 R -/Annots [ 4129 0 R 4130 0 R 4132 0 R 4133 0 R 4134 0 R 4135 0 R 4136 0 R 4137 0 R 4138 0 R 4139 0 R 4140 0 R 4141 0 R 4142 0 R 4143 0 R 4145 0 R 4146 0 R 4147 0 R 4148 0 R 4149 0 R ] ->> endobj -4129 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7782 274.5352 657.9796] -/Subtype/Link/A<> ->> endobj -4130 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 609.5548 205.0073 618.4014] -/Subtype /Link -/A << /S /GoTo /D (a00181) >> ->> endobj -4132 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 463.5277 255.0802 473.4554] -/Subtype /Link -/A << /S /GoTo /D (a00164_g31be289fd8ec3fe09b0088165d13976d) >> ->> endobj -4133 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 450.591 302.4923 460.5187] -/Subtype /Link -/A << /S /GoTo /D (a00164_g8714af98a550f10dc814db92b08d1b0d) >> ->> endobj -4134 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 437.6543 290.1386 447.582] -/Subtype /Link -/A << /S /GoTo /D (a00164_gc4357cec23abca29d2bb885803625a6a) >> ->> endobj -4135 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 424.7176 269.4366 434.6453] -/Subtype /Link -/A << /S /GoTo /D (a00164_g4d457c50e6f2cef57167c3804ce8bf7c) >> ->> endobj -4136 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 411.7809 275.7527 421.7086] -/Subtype /Link -/A << /S /GoTo /D (a00164_g863c94b0ed4a76997e53a3ccd5d0b6c3) >> ->> endobj -4137 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 398.8442 230.8912 408.7719] -/Subtype /Link -/A << /S /GoTo /D (a00164_g40fb1fb2d990ce04ae9bbee275627c03) >> ->> endobj -4138 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 385.9075 217.6111 395.8352] -/Subtype /Link -/A << /S /GoTo /D (a00164_gda99954e0f6905091885934e86c278cc) >> ->> endobj -4139 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 372.9708 239.2498 382.8985] -/Subtype /Link -/A << /S /GoTo /D (a00164_gd895686859ae7d178d31be04eb0a1a97) >> ->> endobj -4140 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 360.0341 236.0418 369.9618] -/Subtype /Link -/A << /S /GoTo /D (a00164_g38af81a4c9884ce89803fc3e52383112) >> ->> endobj -4141 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 347.0974 176.5052 357.0251] -/Subtype /Link -/A << /S /GoTo /D (a00164_g3212e70c55244608ac16316888c354f0) >> ->> endobj -4142 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 334.1607 176.4952 344.0884] -/Subtype /Link -/A << /S /GoTo /D (a00164_g6cda47c85ce1b58b501b44ac9cccc50e) >> ->> endobj -4143 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 320.2477 190.8811 331.1517] -/Subtype /Link -/A << /S /GoTo /D (a00164_g71e1b022f7b7fa3a154f19372b239935) >> ->> endobj -4145 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 263.4235 226.5766 274.3275] -/Subtype /Link -/A << /S /GoTo /D (a00164_g4433d3af16ea083a81576d0f18ba57c9) >> ->> endobj -4146 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 224.9723 221.0375 235.5026] -/Subtype /Link -/A << /S /GoTo /D (a00164_g41e616d3fcc17e0aabfe8ab45ef0d30f) >> ->> endobj -4147 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 186.1475 224.913 196.6778] -/Subtype /Link -/A << /S /GoTo /D (a00164_g0e0ea5f24b77f124ba33bcbc7ede5bfb) >> ->> endobj -4148 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.7915 146.949 236.5493 157.853] -/Subtype /Link -/A << /S /GoTo /D (a00164_g2a939aa4fcffabbce1dc1f784a7e0ad3) >> ->> endobj -4149 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 108.4978 192.9132 119.0281] -/Subtype /Link -/A << /S /GoTo /D (a00164_g3caacabb2fe1c71921e1a471719ccbd2) >> ->> endobj -4127 0 obj << -/D [4125 0 R /XYZ 90 757.9346 null] ->> endobj -1074 0 obj << -/D [4125 0 R /XYZ 90 739.9346 null] ->> endobj -310 0 obj << -/D [4125 0 R /XYZ 90 739.9346 null] ->> endobj -4128 0 obj << -/D [4125 0 R /XYZ 90 716.7484 null] ->> endobj -4131 0 obj << -/D [4125 0 R /XYZ 90 481.4867 null] ->> endobj -4144 0 obj << -/D [4125 0 R /XYZ 90 282.3587 null] ->> endobj -4124 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4153 0 obj << -/Length 834 -/Filter /FlateDecode ->> -stream -xڭVMO@WH2;h7PHLlh}޵b#吱yۙ!ЏB-5"R>pEg>k)2PmAq&c//'q>a{,6$-pM⬋6ɧLtQ(`^I\lP ;pI`>0n-Az?P~Ҧ#Pm6@=0׌+dV谊""aZD] 8W(EtgUYPi0^lAhe'v<ɢ-X sdۤGZGT(!#({I l?wV#9&d"!4DE hi՚ӂɇrexT/_*{HRg}oiح,Mr\i~Hװo:U>*M^yc0]mg*u f(1@#Qp&ѝc|D8:3n|PA8P+Il+˶w="GZ9k~z~'hX5XP>CPYN[oTGR_!cp u!Q 5]e>f|> endobj -4155 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 714.241 200.0962 724.7714] -/Subtype /Link -/A << /S /GoTo /D (a00164_g1d34be506a61db90dd7829117efdf8cf) >> ->> endobj -4156 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [172.012 675.0131 229.8943 685.9171] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> ->> endobj -4157 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [279.9163 675.0131 304.6036 685.9171] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4158 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 636.1588 208.3951 647.0628] -/Subtype /Link -/A << /S /GoTo /D (a00164_g9e6d2864f390a4ba1ac60dc65e2b9815) >> ->> endobj -4154 0 obj << -/D [4152 0 R /XYZ 90 757.9346 null] ->> endobj -4151 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4161 0 obj << -/Length 2081 -/Filter /FlateDecode ->> -stream -xڭZ[5~ϯK"KhYJi@J3ݨdɥx.a'3w|IHJ(dnwp q|YL<0H*MmA$(ŢmJ$ͩLMO_Spsl'n;cbthWIbI.J#f(chq7ɛON049AGpQjftyxWvYh`Evu-MmjYq=wfnoݝ *7nF@hUHl\xzv޽po.Gw<0¿%ϸ:o9B?!e8.3ժZJt1Jlt:J.H!̄(Q#aC`,(XvQ & _ZE=bQxѳ^VZ^A\0*4TH`a:I5$) \q M؀$5%ܯ5,[5cMFS1։qI Nbg?k +"i7jl%dzQT0mwI ==,9]:T^gs)U&I(#Ҽ&c1Lеq}WSkϱݥSQ H$8~4NgpJ5DFb%2k%D=+VXvDDk㦃t:A3gp6jp!]Bn/nەO>K-XV3^-ެ#4gsmX6u:qڲ0:$vtdJ hrMko-d JIn@66%7F*3jxNnd0%4on̛n{p^v0[5@!BN:3Fdaխ^>9jꨗbz3#ӳrF#nguhguhgkӮ7=C M;)e=ڍT3IhWgs=*\BiRŘ4+%]Zmp]4He Gvr?X!/0'yVS!$> -B"*Qh{> endobj -4164 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 638.5601 274.5352 659.7615] -/Subtype/Link/A<> ->> endobj -4165 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 611.1369 205.5653 619.9836] -/Subtype /Link -/A << /S /GoTo /D (a00182) >> ->> endobj -4167 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 517.644 202.5067 527.5717] -/Subtype /Link -/A << /S /GoTo /D (a00097) >> ->> endobj -4169 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 460.4808 309.3265 470.4085] -/Subtype /Link -/A << /S /GoTo /D (a00164_g5a5bfd7e9060903893481db90645187b) >> ->> endobj -4170 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 446.4691 213.038 457.373] -/Subtype /Link -/A << /S /GoTo /D (a00164_ge28f6cb60e86088d8886d0f804b4f37c) >> ->> endobj -4172 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 389.3059 210.2479 400.2098] -/Subtype /Link -/A << /S /GoTo /D (a00097) >> ->> endobj -4173 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [210.746 389.3059 288.0054 400.2098] -/Subtype /Link -/A << /S /GoTo /D (a00164_gdc5aec3587b2c55b714a6c2f37b56cba) >> ->> endobj -4175 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 332.5162 226.0986 343.0466] -/Subtype /Link -/A << /S /GoTo /D (a00164_gc4b119801e50cc1824498a1cdf9adc37) >> ->> endobj -4176 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [276.1106 332.5162 300.7979 343.0466] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4177 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 293.4938 220.0116 304.0242] -/Subtype /Link -/A << /S /GoTo /D (a00164_g6b942c1ef22f8cd1a726ef3364c9fbea) >> ->> endobj -4178 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 243.5125 215.05 254.0429] -/Subtype /Link -/A << /S /GoTo /D (a00164_g23705efb9077187881f094fc9be13bde) >> ->> endobj -4179 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 193.5312 209.501 204.0615] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf11d9915ec12a8cdd9fdcbb5e8fcd5c7) >> ->> endobj -4180 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 143.5499 205.0776 154.0802] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf8f12c820cc08da32aa62898bfc02db3) >> ->> endobj -4181 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 93.5686 192.9132 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00164_g3caacabb2fe1c71921e1a471719ccbd2) >> ->> endobj -4162 0 obj << -/D [4160 0 R /XYZ 90 757.9346 null] ->> endobj -1075 0 obj << -/D [4160 0 R /XYZ 90 739.9346 null] ->> endobj -314 0 obj << -/D [4160 0 R /XYZ 90 739.9346 null] ->> endobj -4163 0 obj << -/D [4160 0 R /XYZ 90 716.7106 null] ->> endobj -4166 0 obj << -/D [4160 0 R /XYZ 90 535.7017 null] ->> endobj -4168 0 obj << -/D [4160 0 R /XYZ 90 478.5385 null] ->> endobj -4171 0 obj << -/D [4160 0 R /XYZ 90 406.0564 null] ->> endobj -4174 0 obj << -/D [4160 0 R /XYZ 90 351.1766 null] ->> endobj -4159 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4185 0 obj << -/Length 1318 -/Filter /FlateDecode ->> -stream -xڵYMo6W 6I hmX8bԖw,$T r%> F4$ Ii&)*Y&4Y K?&W7,MR*ɂ"dta%b|=.,/_Gd]lY==e),_Tp O?'3VrU0O>}PS#oxA )Kvxs1٩'N[nKez&ĐK&Wb p$ .ߔv󯥡\ہ#Rtik@!I%SE/K8F$VOd?8|IhQ1 HJj=*ϖ5S|ߋBsBFQMWŒ٭qn(bME3;i6$\݀5:נUS5f]zk0X:>SzA})'jѡ"y5'\q=աSP -9N'Űm! -Tb9mu~ -<[ΔET+kk*o~<cWZw{=U.+r) y -#jpp@m*\)f ȶcQb[^0iJ q(Azj AHFb~H"( > xȣ_s;XU -N0s7-|,̞m;:I"LCEZ?ŏR"Cůr;ުp弴¡1`&%"5H1(\"8XT0`"~~`L$̞ݶ`/H*rH ?k$ -q8ؠf> endobj -4187 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [172.012 702.9085 229.8943 713.8125] -/Subtype /Link -/A << /S /GoTo /D (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) >> ->> endobj -4188 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [279.9163 702.9085 304.6036 713.8125] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4189 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 664.4278 200.0962 674.9582] -/Subtype /Link -/A << /S /GoTo /D (a00164_g1d34be506a61db90dd7829117efdf8cf) >> ->> endobj -4190 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 625.1999 208.3951 636.1039] -/Subtype /Link -/A << /S /GoTo /D (a00164_g9e6d2864f390a4ba1ac60dc65e2b9815) >> ->> endobj -4191 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 612.2485 226.5766 623.1524] -/Subtype /Link -/A << /S /GoTo /D (a00164_g4433d3af16ea083a81576d0f18ba57c9) >> ->> endobj -4192 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 573.7678 221.0375 584.2981] -/Subtype /Link -/A << /S /GoTo /D (a00164_g41e616d3fcc17e0aabfe8ab45ef0d30f) >> ->> endobj -4193 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0186 534.9135 224.913 545.4438] -/Subtype /Link -/A << /S /GoTo /D (a00164_g0e0ea5f24b77f124ba33bcbc7ede5bfb) >> ->> endobj -4194 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.7915 495.6856 236.5493 506.5895] -/Subtype /Link -/A << /S /GoTo /D (a00164_g2a939aa4fcffabbce1dc1f784a7e0ad3) >> ->> endobj -4186 0 obj << -/D [4184 0 R /XYZ 90 757.9346 null] ->> endobj -4183 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4198 0 obj << -/Length 923 -/Filter /FlateDecode ->> -stream -xڵVo6~_!t/; 6d)aC[ ,BlٓuwDGx0);1D% -lAo"?/bas5r2hd#3rdvWZ*!nq_nuwNlҦ8OˇmJ чOHCLX >\]>z{>pt(>]eq`9BQeVN& 36#د~z({$jVc-\Z/팚|t.ˢھ_~7Q0A,F` -D}6=p=~14lשqWFBi+l=Ө/҈ʧ-vuMթ8+g~!>dOhMƿyG":F>=wJĚs7jIfU6@$)ǽ&(7aut9$#uɳT Y!ۮߟ̝:pJ-?:g3ss53_-h}鷭ߩ}0.D|sx59 93/⌺sj[ lV}% +zjʯA_e04!C#C"4dgM0Nd2/)~y6~./~fS[.ny?rݭsf~0N_חM>):7N7> endobj -4201 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4202 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 607.3502 202.2478 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00183) >> ->> endobj -4204 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.2447 427.1275 226.8757 438.0314] -/Subtype /Link -/A << /S /GoTo /D (a00165_ge6f849e94cf6e214be8ffa9a548ecfcd) >> ->> endobj -4199 0 obj << -/D [4197 0 R /XYZ 90 757.9346 null] ->> endobj -1076 0 obj << -/D [4197 0 R /XYZ 90 739.9346 null] ->> endobj -318 0 obj << -/D [4197 0 R /XYZ 90 739.9346 null] ->> endobj -4200 0 obj << -/D [4197 0 R /XYZ 90 716.7484 null] ->> endobj -4203 0 obj << -/D [4197 0 R /XYZ 90 446.0774 null] ->> endobj -4196 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4208 0 obj << -/Length 1107 -/Filter /FlateDecode ->> -stream -xڥW]o6}o2u5k5Y8vf{),ր@*Ji&hb!R˅J$zD)~GW&XT2,(J$,/> b2esq5+݄_'],y1VdYV~;̽٘*92>odyՒ+D3+.PkY4zqWcPms^R=߰>hGk2J&q1s #2EK,/\m7oq.(Jוy)ݽs$ͼe.3[礛-# P  74mj3p%jr]v)09T{;n4є˃~>7UEuJ[#KjϑTZu֟gKv#[eGeZyW (f5ؚ0T !gͪf_튋") h%QջONOzu #Pbʎnj>: -# &x -QA_6zU80^<,_8n$P|Оq ?giXY'Z3%5D'yڀnTPF8όx -wA Ե1oQy1s?StObi6xxu*c@GQ1A¨d.ʹp' dۀ3n`>xo˅4"hit~HFdc>?}}o]"-P -bkU@&}'r70&sA4Β&OSbOj𴍮$JH JT -@[s0:VVyNwēV.ZO-i.䕗;\<;mi`s;wx $+؎=Cr"GramX4rࠁvr-꣢8ڀ\@=%8=AJ-*B[(gzWx+_(I"|2UB' 7~A.dP> endobj -4211 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4212 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 607.3502 202.8057 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00184) >> ->> endobj -4214 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 515.2493 197.5356 526.1532] -/Subtype /Link -/A << /S /GoTo /D (a00079) >> ->> endobj -4216 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 458.7707 232.9533 469.3011] -/Subtype /Link -/A << /S /GoTo /D (a00165_g1dbc635a2924806f42d7e3273a6a69b5) >> ->> endobj -4218 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.2447 375.6421 226.8757 386.546] -/Subtype /Link -/A << /S /GoTo /D (a00165_ge6f849e94cf6e214be8ffa9a548ecfcd) >> ->> endobj -4209 0 obj << -/D [4207 0 R /XYZ 90 757.9346 null] ->> endobj -1077 0 obj << -/D [4207 0 R /XYZ 90 739.9346 null] ->> endobj -322 0 obj << -/D [4207 0 R /XYZ 90 739.9346 null] ->> endobj -4210 0 obj << -/D [4207 0 R /XYZ 90 716.7484 null] ->> endobj -4213 0 obj << -/D [4207 0 R /XYZ 90 534.1992 null] ->> endobj -4215 0 obj << -/D [4207 0 R /XYZ 90 477.3471 null] ->> endobj -4217 0 obj << -/D [4207 0 R /XYZ 90 394.592 null] ->> endobj -4206 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4222 0 obj << -/Length 1627 -/Filter /FlateDecode ->> -stream -xڥY6+~0E܂"h,mA ؚ!%3$ʔH*>~dLLr4E~=!s} -~[L:H *U]A)byJͩLN`)AxUfx[nš̾.L^.:6gӿ'lL0bZ>`D$~XO>L4?;>:#ãp9: xZl'0'7v}_^ei1"Hs^AU'#DZ塀Ju~qP9ĺlCS4l%3C7sV4wUPa̠`0gx=zIFIܼS&,$mq7-$[P3C/Hiُ=[;U6 -ZѾfF*o[{W3lN-ID`//MUͺU|* quyCWפg0h0pYUګfQB\ۊDB+V>6qѱڢGfosb7B67gQ/9î\' 33$yyhk TL -f\M4  si>pUځVд$`fQ1B)Cs-9(ةRpAXU{y. ϟV51>,f2]iF(>X\ڛ(NĻҩqHHqp;pY cog>{ܪҌ#viG1u7aXݖe9x)4\:T㷢x]It[*Wkei1GpܷC`39ë`V>e(y Vr7O t G\A Aq;t| x nwU^t-T(e1"ɾ5P -QG\A)qߎ;r| x [* wUXU{)>~`ř,q4o C/Y(ɵ:?ջdɱu<=3w?B74!|}~hX}*W{nzx*@$cm+`;tF@<GNlRkʷ B uK).&z:kX1Q~U]l|"xi;2]5;Z##Xj)QAIݣb۰bw?]&wᐻԝ@zM);lXom< pU[`,2|+Iy0.4 5>Gm7aB4ԨPn9Ze' xϥ ay>A+fIЊ!+ra#xTK;gVm+#yc,8v[OJ_"!۰?yiKE̅3J?\<68kna*׶ :wznkhun\u`?bQZ/' //OФWu!v36}hA0^endstream -endobj -4242 0 obj << -/Type /Page -/Contents 4243 0 R -/Resources 4241 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4195 0 R -/Annots [ 4246 0 R 4247 0 R 4249 0 R 4250 0 R 4251 0 R 4252 0 R 4253 0 R 4254 0 R 4255 0 R 4256 0 R 4257 0 R ] ->> endobj -4246 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4247 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 609.4075 190.781 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00187) >> ->> endobj -4249 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 515.6229 179.0853 526.1532] -/Subtype /Link -/A << /S /GoTo /D (a00159_gd58a6c7e62ae59bf7a016ded12ca2910) >> ->> endobj -4250 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [207.5282 515.6229 265.4205 526.1532] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -4251 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [304.8984 500.6286 338.7573 510.5338] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -4252 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.3873 476.7686 192.6345 487.2989] -/Subtype /Link -/A << /S /GoTo /D (a00159_gfe5e93119035e14cc485760a176249ba) >> ->> endobj -4253 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [221.0774 476.7686 278.9697 487.2989] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -4254 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [357.8358 461.7743 391.6946 471.6795] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -4255 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 437.5407 180.9085 448.4446] -/Subtype /Link -/A << /S /GoTo /D (a00159_gceb952d27de8125d5146ac0bee325b8f) >> ->> endobj -4256 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [209.3513 437.5407 267.2437 448.4446] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -4257 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.2067 422.92 431.0655 432.8252] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -4244 0 obj << -/D [4242 0 R /XYZ 90 757.9346 null] ->> endobj -1079 0 obj << -/D [4242 0 R /XYZ 90 739.9346 null] ->> endobj -330 0 obj << -/D [4242 0 R /XYZ 90 739.9346 null] ->> endobj -4245 0 obj << -/D [4242 0 R /XYZ 90 719.4886 null] ->> endobj -4248 0 obj << -/D [4242 0 R /XYZ 90 534.1992 null] ->> endobj -4241 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4261 0 obj << -/Length 1733 -/Filter /FlateDecode ->> -stream -xڭYێ8}﯈Km|jB=5}a~8ĎբysR\U>.ǤG - %2b3bBsx>O'SSd$meA$(H=SC_O ܝ~7xj캥mLKG\WѢ7chpfngk~P ,>:B(Vգӈٜ`mqB4T* 2 U |$?3H4#_3p|H5(*H؍AXZ EZKVBP1dNB> U'W'i޶N|u!S'i7Nb- QTfP9b[7ߝ"/ ܰЎc๏YzZnmOӲl{{4'FG+*KcYy[V42 .|@bLI2^fJ͔WzvN&DSym;5tl݄64Z UhHFr>6->Gh7йrFs[WW`J]Ӽ;(H)lȺf<rq{(͡W ;T\S12aLb*96->Gh7nJD0nj&0fX=Q~9RRLX=bV}?B/Κ|7q6Q[P g3gmIOJߢ2>S AϔX110"BJ`BڮE^gϊUxQZmw]%rnnmG=;X6U8P&< 홹s͋ҿ3endstream -endobj -4260 0 obj << -/Type /Page -/Contents 4261 0 R -/Resources 4259 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4195 0 R -/Annots [ 4264 0 R 4265 0 R 4267 0 R 4269 0 R 4270 0 R 4271 0 R 4273 0 R 4274 0 R 4275 0 R 4276 0 R 4277 0 R 4278 0 R 4279 0 R 4280 0 R 4281 0 R ] ->> endobj -4264 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4265 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 609.4075 191.339 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00188) >> ->> endobj -4267 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 551.4743 196.4299 561.402] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -4269 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 494.0195 227.9818 504.5498] -/Subtype /Link -/A << /S /GoTo /D (a00159_ga680bc3f3a1a8a6aec20fe729d138cb8) >> ->> endobj -4270 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 481.068 223.0005 491.5984] -/Subtype /Link -/A << /S /GoTo /D (a00159_g720ac440c7b24bdd07c53ba146e36fb2) >> ->> endobj -4271 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 468.1166 178.1689 478.6469] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -4273 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 385.3616 179.0853 395.8919] -/Subtype /Link -/A << /S /GoTo /D (a00159_gd58a6c7e62ae59bf7a016ded12ca2910) >> ->> endobj -4274 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [207.5282 385.3616 265.4205 395.8919] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -4275 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [304.8984 370.3672 338.7573 380.2725] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -4276 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.3873 346.5073 192.6345 357.0376] -/Subtype /Link -/A << /S /GoTo /D (a00159_gfe5e93119035e14cc485760a176249ba) >> ->> endobj -4277 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [221.0774 346.5073 278.9697 357.0376] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -4278 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [357.8358 331.5129 391.6946 341.4182] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -4279 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 307.2794 180.9085 318.1833] -/Subtype /Link -/A << /S /GoTo /D (a00159_gceb952d27de8125d5146ac0bee325b8f) >> ->> endobj -4280 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [209.3513 307.2794 267.2437 318.1833] -/Subtype /Link -/A << /S /GoTo /D (a00081) >> ->> endobj -4281 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.2067 292.6586 431.0655 302.5639] -/Subtype /Link -/A << /S /GoTo /D (a00159_gf31774d02a69fd3f1c2b282454438cba) >> ->> endobj -4262 0 obj << -/D [4260 0 R /XYZ 90 757.9346 null] ->> endobj -1080 0 obj << -/D [4260 0 R /XYZ 90 739.9346 null] ->> endobj -334 0 obj << -/D [4260 0 R /XYZ 90 739.9346 null] ->> endobj -4263 0 obj << -/D [4260 0 R /XYZ 90 719.4886 null] ->> endobj -4266 0 obj << -/D [4260 0 R /XYZ 90 569.448 null] ->> endobj -4268 0 obj << -/D [4260 0 R /XYZ 90 512.5958 null] ->> endobj -4272 0 obj << -/D [4260 0 R /XYZ 90 403.9379 null] ->> endobj -4259 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4285 0 obj << -/Length 1524 -/Filter /FlateDecode ->> -stream -xڥXmo6_!t@a3lK.-ݗTIʒ'͊a}Hʴ(KE=w<yP!/^@yn~1Czy)֗/- 3on#쭒s_,1Ce$U}Jlmj&]yZrʧ  W/g7m&% I+Dr 9 ( |v{ CRDE>3.?+T%8Gt4uD)QPiWپB+*G*>OwiD| P3/(Wø,8BFl7[7K_Σ:C*1Sv:v<6vY>S0`=Sgό~6;f4 fTgq o C0gIOwѤD@bQj ϳE"ԓkrvg4H4?&xquf#.w{2w2]" yJ, ,>_v1!K)٦ȊzݗYѤ^|̚򢀥^o^ˤUBn_Iݔ+z&yT,G - nK!B8ߕ?9ʊuYڠ}+ ש^j )CG'qH(\MRcioqsEmfyq!ߦ8\E0.zGkmvylqB"?ujv/:S .B$. 4Ϻ$%aRP,N}j] OӵUVOv?w*Q!qFjJ֞<?A=^# D%0F#6M1v>'ʟBq3\M77o߽qj9?NjBvJ`9d>?lK`,Fl:c`m}BO?%f8:ooD}4qFjJ66W%z^VU4rM~]*}D]9??0ǭq6xrG?O9K`rFlrc-ʍ(g}N?rf8r7n>qFjJ ?Ot=Ԃb-0NlkqQ~v?y%߷vS H@Wq?}P=O(#?eZڇƥ)Cd -ג-`w @pNZ'L-QԋH ^/΃~AX?%&7 !_@|~@ ~)IYi R,߈endstream -endobj -4284 0 obj << -/Type /Page -/Contents 4285 0 R -/Resources 4283 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4298 0 R -/Annots [ 4288 0 R 4289 0 R 4290 0 R 4292 0 R 4293 0 R 4294 0 R 4295 0 R 4297 0 R ] ->> endobj -4288 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4289 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [294.3312 566.4382 625.0908 576.7194] -/Subtype/Link/A<> ->> endobj -4290 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 532.6241 218.2873 541.4707] -/Subtype /Link -/A << /S /GoTo /D (a00190) >> ->> endobj -4292 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 474.0882 185.352 484.6185] -/Subtype /Link -/A << /S /GoTo /D (a00155_g2c1bb4fa6d7a6ff951a41c73fc721109) >> ->> endobj -4293 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 461.1368 205.845 471.6671] -/Subtype /Link -/A << /S /GoTo /D (a00155_g1ec8b8f4710dce1fa7fb87d3a31541ae) >> ->> endobj -4294 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 448.1853 183.1503 458.7157] -/Subtype /Link -/A << /S /GoTo /D (a00155_gd8eec328a4868d767f0c00c8d1c6cfc1) >> ->> endobj -4295 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 435.2339 185.91 445.7642] -/Subtype /Link -/A << /S /GoTo /D (a00155_gca51ceb2f5d855dfde55bcedf8d3b92d) >> ->> endobj -4297 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.7556 378.0081 190.6918 388.9121] -/Subtype /Link -/A << /S /GoTo /D (a00155_g2bdc4b7b4038454a79f1b2a94a6d2a98) >> ->> endobj -4286 0 obj << -/D [4284 0 R /XYZ 90 757.9346 null] ->> endobj -1081 0 obj << -/D [4284 0 R /XYZ 90 739.9346 null] ->> endobj -338 0 obj << -/D [4284 0 R /XYZ 90 739.9346 null] ->> endobj -4287 0 obj << -/D [4284 0 R /XYZ 90 716.7484 null] ->> endobj -4291 0 obj << -/D [4284 0 R /XYZ 90 492.6645 null] ->> endobj -4296 0 obj << -/D [4284 0 R /XYZ 90 394.6746 null] ->> endobj -4283 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4302 0 obj << -/Length 1578 -/Filter /FlateDecode ->> -stream -xڥX[o6~0fx%݆mI֦[񰇶0YV`ߡHʴ(K"D~9i1d/|2zDt gO4(7j A ϗ' )'* ^~Jzj˨Lnj$k3/#X>0"aHǻ|lGQ蚜 {v#hfzf@3J8eA?$$`DNP! -Q#Cd%0 Ȉhۤicq>H q¹=ocdkl,5ejB5=Fa4>a6@@ LΘm* F QO)W&˯S3Jv;'Lje OS'ɶP !Qęգq\}rUu?ϖfD۞,4.P}LII%S"&_I\DsUc>l9L L$A$Rk?yTg1[L=1A"dA1@Ҍ[IFqi#q<9Qz4%sK~9mYguk#I)œS9?iʳz{Hwf|ɫl<5퓳>K\w-L,rݲa0lp8xFZ DmDYFӕ.z^!C]>arXʦXu\@rmϖs8Zq:Vj:fZe!bA{ twT?e)DA:Ȯ|m>{:Wzg0ڵ63&\rHvzMң ~8͜ځL\xitl? -6^j!Sޯz9O}"?/ c?䆃+X,~Y<1yxX8" r -g ab(Cl8C`_y ټd J7 ?ׅ"`4U.O=Uk -y'kY%mro^zFyp;ds }c`u9YS3m'c6>FK&l DqB~*pp.:EDp2c5 H-0`~Jz^A>ٰ>-}6y/ %w{۵]0VCZ><>ͧ><'duc>CgX j(~RT3TѩzoʊMn`zԡi]sP/KOaǃiź~'u[:!iy(AP05Far <}U^Ï<*ۗ[y+SB_SvM3So+ 7ӏ/^:qnUq͊t>endstream -endobj -4301 0 obj << -/Type /Page -/Contents 4302 0 R -/Resources 4300 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4298 0 R -/Annots [ 4305 0 R 4306 0 R 4307 0 R 4309 0 R 4310 0 R 4311 0 R 4312 0 R 4313 0 R 4315 0 R ] ->> endobj -4305 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4306 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [89.0037 554.483 445.4449 564.3808] -/Subtype/Link/A<> ->> endobj -4307 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 538.2933 203.3535 547.1399] -/Subtype /Link -/A << /S /GoTo /D (a00191) >> ->> endobj -4309 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 480.3601 235.723 490.2877] -/Subtype /Link -/A << /S /GoTo /D (a00155_g44311ecc30759ca38b4069182247bdae) >> ->> endobj -4310 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 466.806 185.352 477.3363] -/Subtype /Link -/A << /S /GoTo /D (a00155_g2c1bb4fa6d7a6ff951a41c73fc721109) >> ->> endobj -4311 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 453.8545 205.845 464.3849] -/Subtype /Link -/A << /S /GoTo /D (a00155_g1ec8b8f4710dce1fa7fb87d3a31541ae) >> ->> endobj -4312 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 440.9031 183.1503 451.4334] -/Subtype /Link -/A << /S /GoTo /D (a00155_gd8eec328a4868d767f0c00c8d1c6cfc1) >> ->> endobj -4313 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 427.9517 185.91 438.482] -/Subtype /Link -/A << /S /GoTo /D (a00155_gca51ceb2f5d855dfde55bcedf8d3b92d) >> ->> endobj -4315 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [207.1599 370.7259 224.0961 381.6298] -/Subtype /Link -/A << /S /GoTo /D (a00155_g3983e0c026396d5c4506779d770007ba) >> ->> endobj -4303 0 obj << -/D [4301 0 R /XYZ 90 757.9346 null] ->> endobj -1082 0 obj << -/D [4301 0 R /XYZ 90 739.9346 null] ->> endobj -342 0 obj << -/D [4301 0 R /XYZ 90 739.9346 null] ->> endobj -4304 0 obj << -/D [4301 0 R /XYZ 90 716.7484 null] ->> endobj -4308 0 obj << -/D [4301 0 R /XYZ 90 498.3337 null] ->> endobj -4314 0 obj << -/D [4301 0 R /XYZ 90 387.3924 null] ->> endobj -4300 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4319 0 obj << -/Length 637 -/Filter /FlateDecode ->> -stream -xڥUKo@W>x3}E*( Aɭ8%N߳k&nl -!o;aD E $W#"x?NCDIAHXSdIŻ۝UѭEI@E#ÍAAr3>Lν6%8׿FVe(7ZaA2aSEߣo{5 Q2jO06fՏ md%P#DKiQ()xҳb;LhMy-׵';'t> endobj -4322 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 638.7618 250.6249 659.9632] -/Subtype/Link/A<> ->> endobj -4323 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 611.4648 174.0239 620.3114] -/Subtype /Link -/A << /S /GoTo /D (a00192) >> ->> endobj -4320 0 obj << -/D [4318 0 R /XYZ 90 757.9346 null] ->> endobj -1083 0 obj << -/D [4318 0 R /XYZ 90 739.9346 null] ->> endobj -346 0 obj << -/D [4318 0 R /XYZ 90 739.9346 null] ->> endobj -4321 0 obj << -/D [4318 0 R /XYZ 90 716.7484 null] ->> endobj -4317 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4327 0 obj << -/Length 2258 -/Filter /FlateDecode ->> -stream -xڭZ]s۸}ׯH3NId&[[}(mkV\j^$v=~0%sqs!)?25xBq9]?M~?!_7神d$} rˌ(:_PCo~KgvWWWؗr{[~\/l`XN~ O7݇ Fh1 -0"ӄS>&w{F@_a#75BkU:(/xv>|:GqNد ۸ #D -YL*ϊUQi8g% bA-*x~>ʃ iN(kquVx,Vc+P7Z LJo_h ˜py9UW`$-Q=avVH&.lf3;չ%$xZRęT=(T6vߧ lDO2 ;b 쿞:X(7HR-iXg-pT!IUa~[ *}8T -L%:x{ nwNskWގRDK;&-a[ oy5DBDYShGQ̪\=qW\WSO0bpZ}ޓ/Fbd=(q X(lF6sasX'&Ӎvji[Hƹ5D'aV\}V,5jޖ5~?v%1lp[F`5*IIix@xZכ<Èx/FxOQm {|.71K G#`B9d%JcJSJP7pm {JűxfH5wʶm@mZ6aۖۦÈx۶|/CX1D ZF:́g#[r8P9-Aw cƤQ-0C/WC Ci2ᗉ-{͗\|o6^(P}0UҺ(#BK|LQH^۟>]Kd44lKszl<>A7/P3MwpĖۋ]livN(K_Ĺ&|׹unHpnF9wn[|s3aD^zc{z[\xT&mx}ΐ`YkbqR0vnĖ3/Qغ3oNì?}uq='3ۓwAoQԼLUv@vZ{;oÈxޮaSY2!f6L`Lp66 ˛p7F¨LPN,I3(3ft6h߇}z.[;j^|mz.Bv{f A`^uGx%>0"ދׯm :Mj)xT&mxB'H1=6&,ݧʴۡr[nB71>r:`No@wcvݻ0~"Ԁq8uu wۘui-|fA}o)WDbqsU 4> endobj -4330 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.6594 250.6249 657.8608] -/Subtype/Link/A<> ->> endobj -4331 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 607.2769 190.0737 618.1808] -/Subtype /Link -/A << /S /GoTo /D (a00194) >> ->> endobj -4333 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 515.1065 181.8351 526.0104] -/Subtype /Link -/A << /S /GoTo /D (a00083) >> ->> endobj -4334 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 502.1362 163.7728 513.0401] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4336 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 419.2928 204.7292 430.1968] -/Subtype /Link -/A << /S /GoTo /D (a00158_g26ae707402e494f3895a9f012a93ea29) >> ->> endobj -4337 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [206.0542 419.2928 231.2894 430.1968] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4338 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 380.401 215.2497 391.3049] -/Subtype /Link -/A << /S /GoTo /D (a00158_g84901a5aa60040e96d272a69977edd22) >> ->> endobj -4339 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [216.5747 380.401 241.8099 391.3049] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4340 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 341.5091 210.8263 352.413] -/Subtype /Link -/A << /S /GoTo /D (a00158_g70d236d1cf34b4e21836edda60247b70) >> ->> endobj -4341 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [212.1513 341.5091 237.3865 352.413] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4342 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 302.6172 234.079 313.5211] -/Subtype /Link -/A << /S /GoTo /D (a00158_gb0ad55aa96dd1d200cd0fc5a99f6a4f7) >> ->> endobj -4343 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [235.404 302.6172 260.6392 313.5211] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4344 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 263.7253 274.846 274.6292] -/Subtype /Link -/A << /S /GoTo /D (a00158_g10d9a9201cba1a6db623284c475c6cea) >> ->> endobj -4345 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [276.171 263.7253 301.4062 274.6292] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4346 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 224.8334 216.3655 235.7373] -/Subtype /Link -/A << /S /GoTo /D (a00158_g5d56800f82bfc7bbf53bb4a659589812) >> ->> endobj -4347 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [217.6905 224.8334 242.9257 235.7373] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4348 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 185.9415 231.2097 196.8454] -/Subtype /Link -/A << /S /GoTo /D (a00158_gd895ab98c54d9966ff554aa873151751) >> ->> endobj -4349 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [232.5347 185.9415 257.7699 196.8454] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4350 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 147.0496 225.0331 157.9535] -/Subtype /Link -/A << /S /GoTo /D (a00158_gb5d9c0becf7cb32d0aaef466839dd92e) >> ->> endobj -4351 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [226.3581 147.0496 251.5933 157.9535] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4352 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 108.1577 229.4168 119.0617] -/Subtype /Link -/A << /S /GoTo /D (a00158_g4ab2de595d36e9e55dd61f6ecd139162) >> ->> endobj -4353 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [230.7417 108.1577 255.9769 119.0617] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4328 0 obj << -/D [4326 0 R /XYZ 90 757.9346 null] ->> endobj -1084 0 obj << -/D [4326 0 R /XYZ 90 739.9346 null] ->> endobj -350 0 obj << -/D [4326 0 R /XYZ 90 739.9346 null] ->> endobj -4329 0 obj << -/D [4326 0 R /XYZ 90 716.74 null] ->> endobj -4332 0 obj << -/D [4326 0 R /XYZ 90 534.0752 null] ->> endobj -4335 0 obj << -/D [4326 0 R /XYZ 90 438.2616 null] ->> endobj -4325 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4357 0 obj << -/Length 1660 -/Filter /FlateDecode ->> -stream -xڵZk7_1U6oݥK)PHEVivXd[!ǜs|ΆU(CZ|=d)\?FθqjvQjv&Snn8[ͳWU0;W цwY̳5.A%YU}0xq$/nFG:ͅRREie`f9qrjhQMJ0߼nOq%v\UDaLG>~K)_p:}jˈxLFVx/N?uu(u vͧ漎XN?Qݺ^-!"C(8yLtC9F#icWsW_&! >m&R5tdÄq~"^o&Œ%v0f̽[ @-c'jvh^؇ًק-aV -%˭H(DC^ޠV(Xv!Qݺ֎(42ˆjC8b肽̳?Y[ϋehPp-DpDFIƒa_ E -f -E ݪIJu'P9տi`|cE+:n-4$Bہ  XV__ ɇmq&ݏ)%R5[؀m}B".oJ6oeduV~Gx6qf6`AؓBdz/JHxT@n# -#Ϊa " 3,B$np]+ sr p=6o6˿!)HJ3fPCc]o^<"#7gNSGB!BjL mE£ -uCPBDF@mgb\nU1@VNLռ8>j9w#$vsˌ~CJ؜sbdu(

    };0)è KxDw^a!ua g[g{Sx70|ὉxLbVwכmoQ"3)0֬ZlLM~zzvD9M.搹nrW%ȕ_7 -05V # -d7ۀBD'%FPoa1XƀE܁;/ iXə,D:jpyv3T^ooU&BP2݃x E$ Q\{G<#[8A$&܀ʉ"#Jn8zY k[cC6mGFU;)R"(17rowq=ëodu$X)u!0 f&L~OmE#:3]:"`,?rڎwgŻt\< 8DJ_S ;Oo(Dp ? - "'̷q~O]xxxxi -6myv'z/_ǓI1q?*a!endstream -endobj -4356 0 obj << -/Type /Page -/Contents 4357 0 R -/Resources 4355 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4298 0 R -/Annots [ 4359 0 R 4360 0 R 4361 0 R 4362 0 R 4363 0 R 4364 0 R 4365 0 R 4366 0 R 4367 0 R 4368 0 R 4369 0 R 4370 0 R 4371 0 R 4372 0 R 4374 0 R 4375 0 R 4376 0 R 4377 0 R 4378 0 R 4379 0 R ] ->> endobj -4359 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 713.8674 207.4989 724.7714] -/Subtype /Link -/A << /S /GoTo /D (a00158_gfa11b2a1faf395ae2a6626e01c482d5d) >> ->> endobj -4360 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [208.8238 713.8674 234.059 724.7714] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4361 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 675.0131 244.0317 685.9171] -/Subtype /Link -/A << /S /GoTo /D (a00158_gc7cc1dba1819f7fcdaa9ff9eed5a08f4) >> ->> endobj -4362 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [245.3566 675.0131 270.5918 685.9171] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4363 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 636.1588 205.2872 647.0628] -/Subtype /Link -/A << /S /GoTo /D (a00158_g4a264bb64ae706d53f572b1d9e4037a2) >> ->> endobj -4364 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [206.6122 636.1588 231.8474 647.0628] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4365 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 597.3045 232.7343 608.2085] -/Subtype /Link -/A << /S /GoTo /D (a00158_g55ce98ea4d6f22e9d5068b904d4d2447) >> ->> endobj -4366 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [234.0593 597.3045 259.2945 608.2085] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4367 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 558.4502 244.4801 569.3542] -/Subtype /Link -/A << /S /GoTo /D (a00158_g2ebfe5c8a7f3173714efdf2df74fc392) >> ->> endobj -4368 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [245.805 558.4502 271.0402 569.3542] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4369 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.8747 519.5959 255.1444 530.4999] -/Subtype /Link -/A << /S /GoTo /D (a00158_ga87ff36af81990e6ffe20d76d5e4606f) >> ->> endobj -4370 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [256.4694 519.5959 281.7046 530.4999] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4371 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [432.9613 519.5959 458.1965 530.4999] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4372 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [474.7532 519.5959 484.4966 530.4999] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4374 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 450.7886 138.5977 461.6925] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4375 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 450.7886 198.084 461.6925] -/Subtype /Link -/A << /S /GoTo /D (a00158_g3178402dd725776415bf9745e7bf92ba) >> ->> endobj -4376 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [226.5269 450.7886 251.7621 461.6925] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4377 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [257.2416 450.7886 282.4768 461.6925] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4378 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.5466 437.8372 196.7092 448.7411] -/Subtype /Link -/A << /S /GoTo /D (a00158_g3b19f65e48079d8105be2a99b5b4b2ae) >> ->> endobj -4379 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.1521 437.8372 250.3873 448.7411] -/Subtype /Link -/A << /S /GoTo /D (a00082) >> ->> endobj -4358 0 obj << -/D [4356 0 R /XYZ 90 757.9346 null] ->> endobj -4373 0 obj << -/D [4356 0 R /XYZ 90 469.7385 null] ->> endobj -4355 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4382 0 obj << -/Length 1695 -/Filter /FlateDecode ->> -stream -xڭY]F}ϯ%a?PU T<Bnݍ&=K>$sνgc`# -e|B<]N=&1H*u d~?%Pkx+ \yfջt4w˗e#[G%$_q^N0bF |C ~NN~ox/ '_C(VUӈٜ`vW&3n+( 2BRFLHMz)0$easoSD -bM i"Vf J8TxFpYET=zį8aad LlOU๋.N4K^0gV3\mj@  bY@ M)T>hWtWkD4Ts 5cpPlߨtсi`œ1us](GBR õuQmk! vXmWwDmv8 WŨ0bgZѫh]b4:QbG5QeF}.: /vo7<=c;7./irnoM_jIh/X/\€_Dt_t~0z;<(k%coQ1U-p)igp+jT*2;2$ȟn:/&4-,E-"xn"#,"[[Ļxdr;d)CѠ"QlCvADGG# C YET=BWݺG x uH}8Rܹ-۱|w`ۉ7FB8FK]f7$F ,aúMû#%>ax^ÿ{xu7 -"gnx-{9Z]"Uud:rxe`#Auqv>0})ǐUR7?f.!DF1] nQ)(yinG웗OBWǴ~˒Ռ uM{W7Ka$܆d_nendstream -endobj -4381 0 obj << -/Type /Page -/Contents 4382 0 R -/Resources 4380 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4298 0 R -/Annots [ 4385 0 R 4386 0 R 4388 0 R 4390 0 R 4391 0 R 4393 0 R 4394 0 R 4395 0 R 4396 0 R 4397 0 R 4399 0 R 4400 0 R 4401 0 R 4402 0 R ] ->> endobj -4385 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 630.2193 250.6249 651.4207] -/Subtype/Link/A<> ->> endobj -4386 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 596.8117 174.5819 607.7156] -/Subtype /Link -/A << /S /GoTo /D (a00195) >> ->> endobj -4388 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 512.3371 148.2809 522.1152] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4390 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 445.4868 184.2462 456.3907] -/Subtype /Link -/A << /S /GoTo /D (a00142_ge6bae7dc0225468c8a5ac269df549892) >> ->> endobj -4391 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [185.5712 445.4868 195.3146 456.3907] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4393 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 350.0315 204.7293 360.9354] -/Subtype /Link -/A << /S /GoTo /D (a00142_g3d4c8bd4aada659eb34f5d2ffd3e7901) >> ->> endobj -4394 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 305.7728 194.7667 316.6767] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) >> ->> endobj -4395 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [196.0917 305.7728 205.835 316.6767] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4396 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 261.5141 184.8042 272.418] -/Subtype /Link -/A << /S /GoTo /D (a00142_g7b04a0035bef29d905496c23bae066d2) >> ->> endobj -4397 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [186.1292 261.5141 195.8725 272.418] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4399 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 166.0587 223.997 176.9627] -/Subtype /Link -/A << /S /GoTo /D (a00142_g99e43010ec61327164466aa2d902de45) >> ->> endobj -4400 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.322 166.0587 235.0654 176.9627] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4401 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 121.8 226.2087 132.704] -/Subtype /Link -/A << /S /GoTo /D (a00142_gad14bbbf092b90aa0a5a4f9169504a8d) >> ->> endobj -4402 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [227.5337 121.8 237.2771 132.704] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4383 0 obj << -/D [4381 0 R /XYZ 90 757.9346 null] ->> endobj -1085 0 obj << -/D [4381 0 R /XYZ 90 739.9346 null] ->> endobj -354 0 obj << -/D [4381 0 R /XYZ 90 739.9346 null] ->> endobj -4384 0 obj << -/D [4381 0 R /XYZ 90 715.5325 null] ->> endobj -4387 0 obj << -/D [4381 0 R /XYZ 90 533.9892 null] ->> endobj -4389 0 obj << -/D [4381 0 R /XYZ 90 467.1389 null] ->> endobj -4392 0 obj << -/D [4381 0 R /XYZ 90 371.6836 null] ->> endobj -4398 0 obj << -/D [4381 0 R /XYZ 90 187.7108 null] ->> endobj -4380 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4406 0 obj << -/Length 1720 -/Filter /FlateDecode ->> -stream -xڭZ[o9}W HjnBխ*ba%Dmx3܋'.>Ǟ2xXipq?[ـOB iIpvs lq*qaW/V벼)wcFfaҔ)`:unIb|KFL+1j^`D̽X8*Q]#!H A]\T5\j1_Wu=KWM@ >~^e‚n,g(6OF#,IA)Hc),OM1s -Z&dw[C.ȡvv~L(Ϯg//v616}tQC1D)[Q->" eb(۱,r7ܬpS>^C)b t, -{yz[3,?Wځ6U-yk1&btZ/dpel?}☓tuuq+!WR*DaÀ N ^XM iDqk_k::k$K8DE=1(̠[Dlۡ ((YFҚgJ6@$`nR4"3ݽs4Ty>_zKn:X55xh Iƣ5543H#*N޽;@LhGq4g7)pXU^zTz 1sQH@%"x"҈"p>}=7(hCAQKr;K):If9dΑs2vP.f篣MY0JGohfзtQb7׶4F3iNIF+ZǝwSj7 cG71ZHYb>DPÈUI't^GHd<:, {HAѨ=~~[nc1endstream -endobj -4405 0 obj << -/Type /Page -/Contents 4406 0 R -/Resources 4404 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4430 0 R -/Annots [ 4409 0 R 4410 0 R 4411 0 R 4412 0 R 4414 0 R 4415 0 R 4416 0 R 4417 0 R 4419 0 R 4421 0 R 4422 0 R 4423 0 R 4424 0 R 4426 0 R 4427 0 R 4428 0 R 4429 0 R ] ->> endobj -4409 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 704.1539 234.5175 715.0578] -/Subtype /Link -/A << /S /GoTo /D (a00142_g2f8f70c30b9ee08a103fbd69a4365c4c) >> ->> endobj -4410 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [235.8425 704.1539 245.5859 715.0578] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4411 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 665.2996 197.387 676.2035] -/Subtype /Link -/A << /S /GoTo /D (a00142_g9e97a0b4d5cc7764d8e19758f5da53ae) >> ->> endobj -4412 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.712 665.2996 208.4553 676.2035] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4414 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 582.5446 207.0905 593.4485] -/Subtype /Link -/A << /S /GoTo /D (a00142_gcd3ac045f0a4ae63412e3b3d8780e8ab) >> ->> endobj -4415 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [208.4154 582.5446 218.1588 593.4485] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4416 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 543.6903 187.0159 554.5942] -/Subtype /Link -/A << /S /GoTo /D (a00142_g905451249dca72ce0385bf2a9ff178ee) >> ->> endobj -4417 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [188.3408 543.6903 198.0842 554.5942] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4419 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 461.3088 216.3557 471.8392] -/Subtype /Link -/A << /S /GoTo /D (a00142_gfa82b860a64b67d25ab3abc21811896f) >> ->> endobj -4421 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 378.1802 194.2089 389.0841] -/Subtype /Link -/A << /S /GoTo /D (a00142_g155cba6121323726d02c00284428fed6) >> ->> endobj -4422 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [195.5338 378.1802 205.2772 389.0841] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4423 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 339.3259 229.068 350.2298] -/Subtype /Link -/A << /S /GoTo /D (a00142_ge3c821e3a388615528efda9d23c7d115) >> ->> endobj -4424 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [230.393 339.3259 240.1363 350.2298] -/Subtype /Link -/A << /S /GoTo /D (a00084) >> ->> endobj -4426 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 257.5471 206.8414 267.4748] -/Subtype /Link -/A << /S /GoTo /D (a00142_g7b5319b5b65761a845fcd1500fde4cdc) >> ->> endobj -4427 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 244.5957 200.296 254.5234] -/Subtype /Link -/A << /S /GoTo /D (a00142_gcfae9053e5c107a1aed6b228c917d2ea) >> ->> endobj -4428 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 231.6442 198.0843 241.5719] -/Subtype /Link -/A << /S /GoTo /D (a00142_g9ff1e8936a8a26bff54c05f8a989b93b) >> ->> endobj -4429 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 218.6928 207.489 228.6205] -/Subtype /Link -/A << /S /GoTo /D (a00142_ge469332907e0617d72d5e2dd4297119d) >> ->> endobj -4407 0 obj << -/D [4405 0 R /XYZ 90 757.9346 null] ->> endobj -4408 0 obj << -/D [4405 0 R /XYZ 90 720.8203 null] ->> endobj -4413 0 obj << -/D [4405 0 R /XYZ 90 599.211 null] ->> endobj -4418 0 obj << -/D [4405 0 R /XYZ 90 477.6017 null] ->> endobj -4420 0 obj << -/D [4405 0 R /XYZ 90 394.8466 null] ->> endobj -4425 0 obj << -/D [4405 0 R /XYZ 90 275.5208 null] ->> endobj -4404 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4433 0 obj << -/Length 1429 -/Filter /FlateDecode ->> -stream -xڭX[o6}Y~3]0`k++_2Y$ʲ(SZ!u}෻fKb*+( KVoSj`q%MX.;lmvv]׶e%4Y!%|JZlfqi.7 N0?< a|Jiz(_V&/xl8f|nMi Vʺ4J*3s,M-~WKjYY<{̀ۦݜ˴U߻.>ksRly';n$`t!R>-p]K(XKRB5_HP=ʫaoh ޼CtkT \WMa}(@nňN}OUZ 6Wc*;K˾d0abFePa\G/Щ:G)JmV\؃4cD%򖽻T>E:v[tfU"QSj=ieOQN!j6[V$ -EeO߹1h=:7\n7mi? τ>`} - dık1% Z-ڱCMTӾ挦bF5,><~EP[|y N3!GM5ׂQIUyȂ U0\'xuR瞐PacL+ -@HD9_DUmʇXd\bM huhN0𢏮!ibDހjkE7yKik7 )9G -DX+ZN0.D -`~IIߟ,Gߗ >@!B:ysm1q:TepE/cJE\f>:bڿGǼosQ=MyKTE_P,7Si -ٿw'/EPղvp#.OF@f СƃJ QhaͅC/Bru/ϻb[x*sG[jO@P 7X@xt@ -"޷ ~_'հ-Zj|6x1\yU۹#*B `GAjT?#IIC2:66C18jt#\=˞Zcߏԇ}s;[Ru8Zk|WJ]d}N1'ʁ>aIQ]', @79u^ۼ\VS?u:'+~f6g;ޮ3|xC|vߓ=Jm$endstream -endobj -4432 0 obj << -/Type /Page -/Contents 4433 0 R -/Resources 4431 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4430 0 R -/Annots [ 4436 0 R 4437 0 R 4439 0 R 4440 0 R 4441 0 R 4442 0 R 4443 0 R 4444 0 R 4445 0 R 4446 0 R ] ->> endobj -4436 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4437 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 609.4075 186.7559 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00196) >> ->> endobj -4439 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 515.6229 172.9881 526.1532] -/Subtype /Link -/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> ->> endobj -4440 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [201.4309 515.6229 224.4542 526.1532] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -4441 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 476.7686 180.7289 487.2989] -/Subtype /Link -/A << /S /GoTo /D (a00156_gedaf3e48c2b04229b85455fb948468d6) >> ->> endobj -4442 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [209.1718 476.7686 232.195 487.2989] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -4443 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 437.9143 186.816 448.4446] -/Subtype /Link -/A << /S /GoTo /D (a00156_gcb807bd57e5489b386b876af5c1f163a) >> ->> endobj -4444 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.2588 437.9143 238.2821 448.4446] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -4445 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.9214 398.6864 184.6543 409.5903] -/Subtype /Link -/A << /S /GoTo /D (a00156_g6d71dececfce707c668e6257aad5906e) >> ->> endobj -4446 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.0971 398.6864 236.1204 409.5903] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -4434 0 obj << -/D [4432 0 R /XYZ 90 757.9346 null] ->> endobj -1086 0 obj << -/D [4432 0 R /XYZ 90 739.9346 null] ->> endobj -358 0 obj << -/D [4432 0 R /XYZ 90 739.9346 null] ->> endobj -4435 0 obj << -/D [4432 0 R /XYZ 90 716.7484 null] ->> endobj -4438 0 obj << -/D [4432 0 R /XYZ 90 534.1992 null] ->> endobj -4431 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4450 0 obj << -/Length 1521 -/Filter /FlateDecode ->> -stream -xڥYَ6}W %(.MQM- x,g^JL6rt=L2 $38SB!ø6 }/ksj22#H%4ݾYjDjM^^OCQKk>UqgeqKJk$Jݾ\vۑh9 -&;mFh}14{XpazwQ?06TAX GpR -6 2Bԡ62Јo*H&Mqޔj:76%l8+&5C_]oݍCaU&F`6Z9ZSA3%0\+)T>&"('P#"L\C[nYMU q&~*Qr@}?<ҧDry9s1BAj/[ -Fi5.$B?XMa;븯.w\PI($ ZVż#ĵ -a;$%bGd}JDQ[FE$ -yn.[0 ~ds8mɄ0zM^M_WeS]:,8,Tɕ)LH4ƱR*Be[9E3vT^0h=ף 23 Ӄ)Ak{ )He|!7 ÌJ! a5r8Q#/X`Ѯ],Q8[MxK(33xn%v)WZqc=b/9*&D%2ڗ/{y?(^۰3MtfOv\Q0GD *\q5$'ŜSpE aIyR - СĄ)8rXFVP(M;F}#[+VE m$JI -=UӫxG_-|,:&r"i݃8XJֽ0xN~޴{>"{}Y*i(Ck@$lPiBj2 >#;|F`ۨu*LW>c|}s1+&GGDlWus4zj7{ -ߚäHdž-/B2K"/oR3`ɿ`Q28T4# 1dn!:|G7b -Q-t*L<0pJ%Ű3ACgPǤܕ+.bs)S>xFY1~h0>mRXA8X 1 kK5L J~ -觝O^/JÊf-B JQՠw疢'xq# `CI|*L> endobj -4453 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4454 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 609.4075 187.3139 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00197) >> ->> endobj -4456 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 534.931 161.5608 543.7776] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -4458 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 450.4922 172.9881 461.0226] -/Subtype /Link -/A << /S /GoTo /D (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) >> ->> endobj -4459 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [201.4309 450.4922 224.4542 461.0226] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -4460 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 411.6379 180.7289 422.1683] -/Subtype /Link -/A << /S /GoTo /D (a00156_gedaf3e48c2b04229b85455fb948468d6) >> ->> endobj -4461 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [209.1718 411.6379 232.195 422.1683] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -4462 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 372.7836 186.816 383.314] -/Subtype /Link -/A << /S /GoTo /D (a00156_gcb807bd57e5489b386b876af5c1f163a) >> ->> endobj -4463 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.2588 372.7836 238.2821 383.314] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -4464 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.9214 333.5557 184.6543 344.4597] -/Subtype /Link -/A << /S /GoTo /D (a00156_g6d71dececfce707c668e6257aad5906e) >> ->> endobj -4465 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [213.0971 333.5557 236.1204 344.4597] -/Subtype /Link -/A << /S /GoTo /D (a00087) >> ->> endobj -4451 0 obj << -/D [4449 0 R /XYZ 90 757.9346 null] ->> endobj -1087 0 obj << -/D [4449 0 R /XYZ 90 739.9346 null] ->> endobj -362 0 obj << -/D [4449 0 R /XYZ 90 739.9346 null] ->> endobj -4452 0 obj << -/D [4449 0 R /XYZ 90 716.7484 null] ->> endobj -4455 0 obj << -/D [4449 0 R /XYZ 90 551.8236 null] ->> endobj -4457 0 obj << -/D [4449 0 R /XYZ 90 469.0686 null] ->> endobj -4448 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4469 0 obj << -/Length 1547 -/Filter /FlateDecode ->> -stream -xڥY[o6}Y/PC":tEJ"ı2jPDuFR$?)a\f ܞ}1y #wG A /SlN ejZ]~K}rU=Pٷb6Ē3 gkPw5-#b ͞&2e3048AG uã0ZUN#*fs1Vo)ZzpOO*2BÖDKg~+aXݦs<,oFEyWn|S^wY_ucmm@c/돻PлO}p]qQ?@hI6 ҁ>*LVm l 0w3PS%q5G`aڑ~|j[m!f_ǗiIgԯT6Jַ3w'=1 [Vd/V{Z(7HR-nkQ!g5vD8ñmq +$ \w@V]a;HߛDBsMJYx:D[9?B_զ+CW֎mEDԂ!et'{*d8b{,qHRPB5mq!A4 UŎ%Ja :-* 3Rvy_\"E鑏gçdvY\~T12JpSL 0r₌~, *(i`̧7ojsq}y9Ph%x ,3^=R SNCϹFh= > -, QƗtH|~QXa=pn3ݸ⦀y8i0wEJX# d(L x;X:1F/q6>o:SBW Br]HE-*!Rh7 'R$0;X:1F/q6>o:SW ¿\W05'ZTB.D:0M$LJG|RwkfKjH+l՜ʋ] (%iQ}d N/70CBk6$VXlSvb"赋8o.|tp.*AZT!|@ 3ZTB|^>u#Z|RAni( ‰thQ)~eKtkg|@$[X2cm&ӥ}Ju%ݒ(ȺsZT(ӯ3 p;b1qOKO!aSs HCtqG ᚑ#PD5>RM'>zE%E6OEj8e"_*Ũ]"`uA{~XmޜWՌi|!g99ty<8^>^endstream -endobj -4468 0 obj << -/Type /Page -/Contents 4469 0 R -/Resources 4467 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4430 0 R -/Annots [ 4472 0 R 4473 0 R 4476 0 R 4478 0 R 4481 0 R 4483 0 R 4485 0 R 4486 0 R 4487 0 R 4489 0 R 4490 0 R 4492 0 R 4493 0 R 4494 0 R ] ->> endobj -4472 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4473 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 607.3502 217.1919 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00198) >> ->> endobj -4476 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 516.2256 200.2959 526.1532] -/Subtype /Link -/A << /S /GoTo /D (a00131_5320d4457a472d8888ec1905bc0e0a1c) >> ->> endobj -4478 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 504.3552 188.6795 513.2018] -/Subtype /Link -/A << /S /GoTo /D (a00131_5f2e1fcf0055d20ce17664b1027bb9eb) >> ->> endobj -4481 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 445.4457 207.3094 456.3496] -/Subtype /Link -/A << /S /GoTo /D (a00131_1273664aba3e6a2a46e87dcb1a5f19ad) >> ->> endobj -4483 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 432.4943 226.6668 443.3982] -/Subtype /Link -/A << /S /GoTo /D (a00131_890e822616a6839dfbf51dcb591b8e99) >> ->> endobj -4485 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 419.5428 208.4056 430.4468] -/Subtype /Link -/A << /S /GoTo /D (a00131_88460bea09a462d0e22511cb567eee14) >> ->> endobj -4486 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [212.2212 419.5428 265.1324 430.4468] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4487 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.295 419.5428 398.1028 430.4468] -/Subtype /Link -/A << /S /GoTo /D (a00092) >> ->> endobj -4489 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 406.5914 220.5797 417.4953] -/Subtype /Link -/A << /S /GoTo /D (a00131_1d5ce7047650f3ecee0814dbc8714099) >> ->> endobj -4490 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [224.3954 406.5914 277.3066 417.4953] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4492 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 393.64 191.7182 404.5439] -/Subtype /Link -/A << /S /GoTo /D (a00092) >> ->> endobj -4493 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.6883 393.64 287.4687 404.5439] -/Subtype /Link -/A << /S /GoTo /D (a00131_692d80636342d564422ccd9296ad568d) >> ->> endobj -4494 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.2843 393.64 344.1955 404.5439] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4470 0 obj << -/D [4468 0 R /XYZ 90 757.9346 null] ->> endobj -1088 0 obj << -/D [4468 0 R /XYZ 90 739.9346 null] ->> endobj -366 0 obj << -/D [4468 0 R /XYZ 90 739.9346 null] ->> endobj -4471 0 obj << -/D [4468 0 R /XYZ 90 716.7484 null] ->> endobj -4474 0 obj << -/D [4468 0 R /XYZ 90 534.1992 null] ->> endobj -4475 0 obj << -/D [4468 0 R /XYZ 90 534.1992 null] ->> endobj -4477 0 obj << -/D [4468 0 R /XYZ 90 520.2106 null] ->> endobj -4479 0 obj << -/D [4468 0 R /XYZ 90 464.3956 null] ->> endobj -4480 0 obj << -/D [4468 0 R /XYZ 90 464.3956 null] ->> endobj -4482 0 obj << -/D [4468 0 R /XYZ 90 449.4308 null] ->> endobj -4484 0 obj << -/D [4468 0 R /XYZ 90 436.4793 null] ->> endobj -4488 0 obj << -/D [4468 0 R /XYZ 90 423.5279 null] ->> endobj -4491 0 obj << -/D [4468 0 R /XYZ 90 410.5765 null] ->> endobj -4467 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4498 0 obj << -/Length 1405 -/Filter /FlateDecode ->> -stream -xڥX[o6}Y^[0 됵k][N8rK}He;ߍR`#ƅiVb4=<~7!C7o.4҂fZqJhq4Uٜr<=ϯTv7#OCmj];5yT -Dٗo7^ʙ FߓO_pWV7i4))s7_N`lĜ!L22?19o톀D,euXUg/w6 cݺ{Xqgӳڇaquf\l{76{{WZ[4tZpupٷo?XBìPad!BXc6S8F31%̌vw1&"(I{{*%k-jd}l!fkAQ8dvOT)R v wG }1"[#Fd{ZhJQ1o5H- w&)L!4u[@W COrX)cf՛W{Gv^/ܴ7@@ЛQ[3*y:D[˲P7єV -W':+Teי.tnxPm{܏0L@ŎL)۴`($GxaX>m4LtL O'4Dvmݺ$]V8ǸCH5"zCLbZoҔXKIHòN2;:0֫8܀&n:_np#]Q+0\?c&cQT,c4}ț}ЧUDv*=D%OxTF5w(gs]t8HfC0]qJ<jSψ50-O{ƣb Ehi, q [TnIvR"4o!o]ii(-ϰ9BO;ã22(˒ 04(,64tg f4 ΤG-wܧĈۨ6@*, F_tiS#TWDc$!XD_mf:UHR xOgۍܰnϑ ѕL;£r2k2;b>5ET9\}uǀIxTu?]T^R`L1SW^țzLLi(]]˱)BHJ",zaoc$A{( g)ًp-VjL{.fOP/(vdw3ʧW=}?F$Yendstream -endobj -4497 0 obj << -/Type /Page -/Contents 4498 0 R -/Resources 4496 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4430 0 R -/Annots [ 4501 0 R 4502 0 R 4504 0 R 4507 0 R 4509 0 R 4510 0 R 4511 0 R 4513 0 R 4514 0 R 4516 0 R 4517 0 R 4518 0 R 4520 0 R ] ->> endobj -4501 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4502 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 607.3502 217.7498 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00199) >> ->> endobj -4504 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 532.8737 216.3454 543.7776] -/Subtype /Link -/A << /S /GoTo /D (a00092) >> ->> endobj -4507 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 476.0215 207.3094 486.9254] -/Subtype /Link -/A << /S /GoTo /D (a00132_1273664aba3e6a2a46e87dcb1a5f19ad) >> ->> endobj -4509 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 463.0701 208.4056 473.974] -/Subtype /Link -/A << /S /GoTo /D (a00132_88460bea09a462d0e22511cb567eee14) >> ->> endobj -4510 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [212.2212 463.0701 265.1324 473.974] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4511 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [320.295 463.0701 398.1028 473.974] -/Subtype /Link -/A << /S /GoTo /D (a00092) >> ->> endobj -4513 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 450.1186 220.5797 461.0226] -/Subtype /Link -/A << /S /GoTo /D (a00132_1d5ce7047650f3ecee0814dbc8714099) >> ->> endobj -4514 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [224.3954 450.1186 277.3066 461.0226] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4516 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 437.1672 191.7182 448.0711] -/Subtype /Link -/A << /S /GoTo /D (a00092) >> ->> endobj -4517 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.6883 437.1672 287.4687 448.0711] -/Subtype /Link -/A << /S /GoTo /D (a00132_692d80636342d564422ccd9296ad568d) >> ->> endobj -4518 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [291.2843 437.1672 344.1955 448.0711] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4520 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 424.2158 226.6668 435.1197] -/Subtype /Link -/A << /S /GoTo /D (a00132_890e822616a6839dfbf51dcb591b8e99) >> ->> endobj -4499 0 obj << -/D [4497 0 R /XYZ 90 757.9346 null] ->> endobj -1111 0 obj << -/D [4497 0 R /XYZ 90 739.9346 null] ->> endobj -370 0 obj << -/D [4497 0 R /XYZ 90 739.9346 null] ->> endobj -4500 0 obj << -/D [4497 0 R /XYZ 90 716.7484 null] ->> endobj -4503 0 obj << -/D [4497 0 R /XYZ 90 551.8236 null] ->> endobj -4505 0 obj << -/D [4497 0 R /XYZ 90 494.9714 null] ->> endobj -4506 0 obj << -/D [4497 0 R /XYZ 90 494.9714 null] ->> endobj -4508 0 obj << -/D [4497 0 R /XYZ 90 480.0066 null] ->> endobj -4512 0 obj << -/D [4497 0 R /XYZ 90 467.0551 null] ->> endobj -4515 0 obj << -/D [4497 0 R /XYZ 90 454.1037 null] ->> endobj -4519 0 obj << -/D [4497 0 R /XYZ 90 441.1523 null] ->> endobj -4496 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4524 0 obj << -/Length 902 -/Filter /FlateDecode ->> -stream -xڥVKo8W(ΐ"EŶM) -V䵤m;HG`􇡁03"Uz@ot 'cW7aFqn{Lrj%B q Y"d0L]1.u/6o˺7ZJ -VnuL-ßp\.|< I˷Ôp;x'QW^/iew ~*nc:*ua/8 #3RdY 2C}Y9!mf},R$F8pכsäؖvX]*z1hk _j۟11pcsAwN8;/rݡkdoP`XВ,TB30 =酒7޹~X3fp3,?njj1m25:l݈?@[iϐ-r\7)\xjZ7IjhV KJ^7*ynfPB$nN^>Xp ײW)CᚚlBd}^934-U&h)RFy5TZ[#6 ZJD| ,Uxùg5KހRjT7Y ʉ#?b"[ߨ\r92ƅ-qzE As{,z(%f'# - NtDBJ{kЫyc[C 6ITTT*% T5B|X)j5v.$CZ3-☷e\Ǵs n ..("kb.#"̛Uu-fM<~`Jendstream -endobj -4523 0 obj << -/Type /Page -/Contents 4524 0 R -/Resources 4522 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4430 0 R -/Annots [ 4527 0 R 4528 0 R 4530 0 R ] ->> endobj -4527 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 250.6249 657.906] -/Subtype/Link/A<> ->> endobj -4528 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 607.3502 200.0459 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00201) >> ->> endobj -4530 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 550.498 201.2321 561.402] -/Subtype /Link -/A << /S /GoTo /D (a00154_gb4b17aaf20d630f30919b19937b966a3) >> ->> endobj -4525 0 obj << -/D [4523 0 R /XYZ 90 757.9346 null] ->> endobj -1112 0 obj << -/D [4523 0 R /XYZ 90 739.9346 null] ->> endobj -374 0 obj << -/D [4523 0 R /XYZ 90 739.9346 null] ->> endobj -4526 0 obj << -/D [4523 0 R /XYZ 90 716.7484 null] ->> endobj -4529 0 obj << -/D [4523 0 R /XYZ 90 569.448 null] ->> endobj -4522 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4534 0 obj << -/Length 2879 -/Filter /FlateDecode ->> -stream -xڥmo7S-p^)(Klq>[9Hhb~f%=\;id_9K6-1շ>>]8;/x4M#BNWI7ەOn?lz|y}?n]rNpbivg]rZz\Aow8S΄rm*ub_1 C稅>I0 g)->IyY©mc -Ą* MDux 7w] @jgq%tt};{^?<^ܾ\]Y" g'F ]ʇs47~ޫY˾Y%mU,[f6Wߺ>9|-FFi7wj-sޚ^N«w( N;&p i -2l[?iEUCry6_ޮp!$L_ιٌMo]gԎ)#pЬڦi]1mN׌{^'*c+x2#|st@'L -Ոc _]ЊY;)v 4 @<j0=j\Sxx ]-uj 51J:oU& )\g<7&1;̹1%HgJrGݔymgG'Hd# mߏ); - 6j2PrDiVNkPidq7ˆI3MAU~%Y|r (AVL9"ʴo}+('54o፼ -UKXm^ k.㔑deʔ#LFطrb^CN#(_,rʰB*T%kBk(7CE  +Se7RƾtY@8eϔiH[e7D &_H@Q2eQ}#e[A91L _>{%l*U+&J@+gڎtAϠ t[W. ?セBd 5r:N1TeĄ"LFȴ/vKЏ-z^D_yY _9 (AVK9"oċ}+&54b9?6ʐ7U{ Wb42b= (AVL9"̴oČ}+0'54 睡U)Sh$즥Ca9ʜ)Gęoļ3Fs~qOg!tCW! -t쇶 -Da9ʘ)Goļ3Fyye.㣓w8[qmC& -9hIJla>)Goļ=F7C]!EA' -yFnM',g P̟rDiVOkidq4(f&"qBdmk<'zB?V}a3j FdFA9FAF}+Eb^(4mGDP*;X5W|SwB.y0uLibDU@(gQ_Fѐ+poU)Ku` *EU>V(s68&:UKvIG ӊk:C??@/7+YB2 -=abqtPASvϠiA'Qjso?Vm/lD3gh}f@/\$ -üb]mc^߇ogBO/z)'ɹپ> endobj -4537 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 635.166 274.5352 656.3674] -/Subtype/Link/A<> ->> endobj -4538 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 603.5642 179.0052 614.4681] -/Subtype /Link -/A << /S /GoTo /D (a00202) >> ->> endobj -4541 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 471.0445 221.2372 481.5748] -/Subtype /Link -/A << /S /GoTo /D (a00135_534d9e416324fb8ecca6b9cb4b1f6a6a) >> ->> endobj -4542 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 457.1975 187.0257 467.1251] -/Subtype /Link -/A << /S /GoTo /D (a00150_g88e60aa2cf23e1c65d630701db08c743) >> ->> endobj -4543 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 442.7477 190.9012 452.6754] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6020613f5062417d9811cfa837215c83) >> ->> endobj -4544 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 428.298 189.2474 438.2257] -/Subtype /Link -/A << /S /GoTo /D (a00150_g5ca559def464ef20d8b1f7d32f2f160d) >> ->> endobj -4545 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 413.8483 189.2474 423.776] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1320fd0006a2f70138bc2d0018dda829) >> ->> endobj -4546 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 399.3986 191.6086 409.3262] -/Subtype /Link -/A << /S /GoTo /D (a00150_g44b3b1ab31a403ba28ec135adfcbefef) >> ->> endobj -4547 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 384.9489 192.007 394.8765] -/Subtype /Link -/A << /S /GoTo /D (a00150_gc84f499cba8a02fc0e306c10b2acabf0) >> ->> endobj -4548 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 370.4991 189.7953 380.4268] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1425d4a0c2760adb653a04c0fb137a8d) >> ->> endobj -4549 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 356.0494 215.2498 365.9771] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1215163245304bad20d6c5608ad75ab7) >> ->> endobj -4550 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 341.5997 221.8948 351.5274] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9f1822e1d231235edacad691f3cb7bbb) >> ->> endobj -4551 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 327.15 214.7117 337.0776] -/Subtype /Link -/A << /S /GoTo /D (a00150_g691688604655ea8943d15f14c60027d8) >> ->> endobj -4552 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 312.7003 239.0603 322.6279] -/Subtype /Link -/A << /S /GoTo /D (a00150_g12f3bf821224b8e7b48a57ed3cea15cf) >> ->> endobj -4553 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 298.2505 239.7177 308.1782] -/Subtype /Link -/A << /S /GoTo /D (a00150_g5c5b1834e497f53ad0ef947bbe9777fa) >> ->> endobj -4554 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 283.8008 204.1812 293.7285] -/Subtype /Link -/A << /S /GoTo /D (a00150_gd58231410d58e34b455328b888a9e73c) >> ->> endobj -4555 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 269.3511 244.6991 279.2788] -/Subtype /Link -/A << /S /GoTo /D (a00150_g207d17b633cd095120a74bc1f2257b17) >> ->> endobj -4556 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 254.9014 209.1625 264.829] -/Subtype /Link -/A << /S /GoTo /D (a00150_g4cc3e223b63f27b546d62e9a258dba5a) >> ->> endobj -4557 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 240.4517 305.6302 250.3793] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1cea57e3ea526f210b1068e6dcf7b4f4) >> ->> endobj -4558 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 226.0019 321.0623 235.9296] -/Subtype /Link -/A << /S /GoTo /D (a00150_g62c03e0a308cc23929a80fe8d8f9dc1e) >> ->> endobj -4559 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 210.9495 218.1788 221.4799] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1d3211dbbdfb22d6a47b60dddcf945e8) >> ->> endobj -4560 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 197.1025 341.9936 207.0302] -/Subtype /Link -/A << /S /GoTo /D (a00150_g42288d5c3cf4b10becefec657f441e54) >> ->> endobj -4561 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 182.6528 341.0573 192.5804] -/Subtype /Link -/A << /S /GoTo /D (a00150_g8387881de3a8bfd3c0d57b9d04ac9b7e) >> ->> endobj -4562 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 167.2268 167.0009 178.1307] -/Subtype /Link -/A << /S /GoTo /D (a00150_g24f52ac52d6e714cb04a5aa01be3bdd0) >> ->> endobj -4563 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [198.7613 167.2268 256.6538 178.1307] -/Subtype /Link -/A << /S /GoTo /D (a00094) >> ->> endobj -4564 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [273.2016 167.2268 305.9885 178.1307] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -4565 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 152.7771 172.5401 163.681] -/Subtype /Link -/A << /S /GoTo /D (a00150_g96544dedc1cdc71ad2ad54bf1d5e5433) >> ->> endobj -4566 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [204.3005 152.7771 262.193 163.681] -/Subtype /Link -/A << /S /GoTo /D (a00094) >> ->> endobj -4567 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 138.3273 191.3593 149.2313] -/Subtype /Link -/A << /S /GoTo /D (a00150_g4309376690872fa4beb4f025f5cc199b) >> ->> endobj -4568 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [223.1197 138.3273 288.763 149.2313] -/Subtype /Link -/A << /S /GoTo /D (a00091) >> ->> endobj -4569 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [305.3108 138.3273 338.0977 149.2313] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -4570 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 123.8776 186.9261 134.7816] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb9435261753469accec0c9bf8a5a2686) >> ->> endobj -4571 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [218.6865 123.8776 279.3487 134.7816] -/Subtype /Link -/A << /S /GoTo /D (a00096) >> ->> endobj -4572 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [295.8965 123.8776 328.6835 134.7816] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -4573 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 109.8015 191.6285 120.3318] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9c0814ed491fa452ec97910c0728d410) >> ->> endobj -4574 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 95.3518 189.2275 105.8821] -/Subtype /Link -/A << /S /GoTo /D (a00150_g013c3a06a8b58589a77f4a3442f89c2a) >> ->> endobj -4535 0 obj << -/D [4533 0 R /XYZ 90 757.9346 null] ->> endobj -1113 0 obj << -/D [4533 0 R /XYZ 90 739.9346 null] ->> endobj -378 0 obj << -/D [4533 0 R /XYZ 90 739.9346 null] ->> endobj -4536 0 obj << -/D [4533 0 R /XYZ 90 716.0742 null] ->> endobj -4539 0 obj << -/D [4533 0 R /XYZ 90 491.1191 null] ->> endobj -4540 0 obj << -/D [4533 0 R /XYZ 90 491.1191 null] ->> endobj -4532 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4579 0 obj << -/Length 2957 -/Filter /FlateDecode ->> -stream -xڵ\[o[~УF,,@8}h6IؒVsHfay}87̡,fY3g J>z!xuח2 Vue -fr!Tn~~^>/^no7fwZ凫\e +Nxg*x3p&B -U?C3B NixFѽ%%\O1zΧkӃ|=d`ѐ-1XANMoL@εڷ˵qhDBj)n6uRɈ;=,kDTXaifdq̸LLQRg9#5NPRK0ZjK gV#{pzYj-z0˧ՈbuDi.2 M 'j@cZK0LkW?yDUom;a<-ǥ&-/y MQRK0ZjA B"*] ]Enޖv۾!|Qv2=A 'J4" {z#OC#qϲ3"20r [Ů$aweȨVA%fyщLSPv|rE}n9jj'd^`vKi)`GG$݇r>P,"ǚ^]۩x"Z}G+0dX)|?$l9dpƒpUgF%c*7wt7vP#r:@yp5J F'5.']Ty=$7!rQ}d Ys:J^0zA4x*=evKi *EP3eTw %l-uPO BS zvɄƜG e as9 &(!JӢDvpxrk|]-`NO|LTlݠ -<Z#r_:h88ųfTAu73ͥA$Kցm@En|i^3 xa[:| ZO@“ vG>2d QcY=I%SJV^1nĎlFaOF't -}f-7M'մr L`eRm 5]4͚.ҚniEn%bPwgZvb?h^?қ:"$s|E8Gr -0[1E'Xt<GҒ3c4ծ0Z҅ALҸ,/-)Y&I~AH(=!( PO @“ vǯx?@#(¯䞙!QBVOK^G -vY%; Fя z עwsCWFQm_I]3iE =(!wi;{&[l㋍/n|%2i"ƦM}y;mO6]{2cEm2FoȪL;hlysN lµw_rm,zvg[MD (N,x +K:+iib}'#f:7夁ħ%b=t kD?WcO'VV䑾w]9_OoP֌j 0RGok: -XV{Yx3dp=1WrJsϞP >mna>8<%is|,wY3 Sƕp(GEr欦a >8<%i3| , wYny?űǢ5Jr -EOvOp'9|FU(8(S2y b PVcBх0\d;z8pECۻ21CUSe`A<>~) TOrf:>k+]RpC'-(1qݫ7^߽|߿E~; -Xxi3,J|aqbcSWZ>K5,(a4 RƐ:{b:t5-ʴ! LM8"ޘ0xt ,xl$ā>OWT#xUh_]^WÒq~.u!O/^+!~.N:Y?{S ,uDwendstream -endobj -4578 0 obj << -/Type /Page -/Contents 4579 0 R -/Resources 4577 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4575 0 R -/Annots [ 4582 0 R 4583 0 R 4584 0 R 4585 0 R 4586 0 R 4587 0 R 4588 0 R 4589 0 R 4590 0 R 4591 0 R 4592 0 R 4593 0 R 4594 0 R 4595 0 R 4596 0 R 4597 0 R 4598 0 R 4599 0 R 4600 0 R 4601 0 R 4602 0 R 4603 0 R 4604 0 R 4605 0 R 4606 0 R 4607 0 R 4608 0 R 4609 0 R 4610 0 R 4611 0 R 4612 0 R 4613 0 R 4615 0 R 4616 0 R 4617 0 R 4618 0 R 4619 0 R 4620 0 R 4621 0 R 4622 0 R 4623 0 R 4624 0 R 4625 0 R ] ->> endobj -4582 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 704.2391 180.1912 715.1431] -/Subtype /Link -/A << /S /GoTo /D (a00150_g22f140b02c354dfebcc7ad481c3bcd68) >> ->> endobj -4583 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [184.0068 704.2391 208.6941 715.1431] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4584 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 665.5553 177.9699 676.4593] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6832e4d2d046536b6472f7ac92340f68) >> ->> endobj -4585 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.7856 665.5553 201.4916 676.4593] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4586 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.8776 665.5553 256.5649 676.4593] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4587 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 626.8716 138.5977 637.7755] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4588 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 626.8716 189.7953 637.7755] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb6683dd83fe1c8de9a24086d4b69e907) >> ->> endobj -4589 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.6109 626.8716 218.2983 637.7755] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4590 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [241.84 626.8716 266.5273 637.7755] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4591 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 588.1878 138.5977 599.0917] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4592 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 588.1878 197.5461 599.0917] -/Subtype /Link -/A << /S /GoTo /D (a00150_g2addf34c7d457c1a7899a7e2171ef1e9) >> ->> endobj -4593 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 549.504 138.5977 560.4079] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4594 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 549.504 201.9695 560.4079] -/Subtype /Link -/A << /S /GoTo /D (a00150_g85b65e38aa74eba18979156f97a94a87) >> ->> endobj -4595 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 510.8202 166.9111 521.7241] -/Subtype /Link -/A << /S /GoTo /D (a00150_gc48ed5f0d27721ef62a3ed02a5ad8d2e) >> ->> endobj -4596 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 472.1364 152.9837 483.0403] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -4597 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [160.9538 472.1364 211.6433 483.0403] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9c24fba2cd8f7f62accb0a0d5bbe4dad) >> ->> endobj -4598 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.459 472.1364 268.3701 483.0403] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4599 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [307.2043 472.1364 331.8917 483.0403] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4600 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 433.4526 172.9089 444.3565] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -4601 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.8791 433.4526 236.859 444.3565] -/Subtype /Link -/A << /S /GoTo /D (a00150_g79c4110211247df3fb30b8cf1c4c02af) >> ->> endobj -4602 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [240.6746 433.4526 293.5858 444.3565] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4603 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [332.42 433.4526 357.1073 444.3565] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4604 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 394.7688 185.1725 405.6728] -/Subtype /Link -/A << /S /GoTo /D (a00150_gaa585784b0914cac1d37f07f85457008) >> ->> endobj -4605 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [188.9881 394.7688 213.6754 405.6728] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4606 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 356.085 175.2098 366.989] -/Subtype /Link -/A << /S /GoTo /D (a00150_gdd1ab3704ecd4900eec61a6897d32dc8) >> ->> endobj -4607 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [179.0255 356.085 203.7128 366.989] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4608 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 317.4012 183.4989 328.3052] -/Subtype /Link -/A << /S /GoTo /D (a00150_g266263ac78a1361a2b1d15741d3b0675) >> ->> endobj -4609 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.3145 317.4012 207.0205 328.3052] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4610 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 304.9087 138.5977 315.439] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4611 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 304.9087 162.6772 315.439] -/Subtype /Link -/A << /S /GoTo /D (a00150_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -4612 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [166.4928 304.9087 191.1801 315.439] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4613 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 265.8513 171.8826 276.7552] -/Subtype /Link -/A << /S /GoTo /D (a00150_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -4615 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 183.3435 166.8215 194.2474] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4616 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 183.3435 221.3367 194.2474] -/Subtype /Link -/A << /S /GoTo /D (a00150_g7d3673f52f5846b6961d23b150decd54) >> ->> endobj -4617 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 170.4773 166.8215 181.3812] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4618 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 170.4773 213.028 181.3812] -/Subtype /Link -/A << /S /GoTo /D (a00150_g20df5c82f2a15a508c19e505b5d9de2b) >> ->> endobj -4619 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 157.6111 166.8215 168.515] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4620 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 157.6111 220.2307 168.515] -/Subtype /Link -/A << /S /GoTo /D (a00150_g3237be0d9ec457de0177689ee23c0d5c) >> ->> endobj -4621 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 144.7449 168.4754 155.6489] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -4622 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.9735 144.7449 218.5572 155.6489] -/Subtype /Link -/A << /S /GoTo /D (a00150_g499bb98a0b4ae9a98553ede81317606d) >> ->> endobj -4623 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 131.8787 133.6164 142.7827] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4624 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 131.8787 166.9014 142.7827] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -4625 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.3873 93.195 192.0768 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> ->> endobj -4580 0 obj << -/D [4578 0 R /XYZ 90 757.9346 null] ->> endobj -4581 0 obj << -/D [4578 0 R /XYZ 90 723.1038 null] ->> endobj -4614 0 obj << -/D [4578 0 R /XYZ 90 202.2081 null] ->> endobj -4577 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4628 0 obj << -/Length 1404 -/Filter /FlateDecode ->> -stream -xڭYr6}WQz ylgiV\GhGS[rtiBXPx<{{v X.T1~/避]22읝3[XbSi3"b8̠dӷ3'TOb_1yX[$Wlb$/{pkd7Pֲ''/8QPI 7EvV (^ajHZ|\ T[S|:[7~XwtkNdXUT\\,hfW5f6ʈb +Ș,kð.9z^# D .$KAbps|\&Q9v6H@Z5eL( 4}oEw+)4v;359o;q%mexA-Z^N׸nUcdsS6^xKc1э$F fF<ɩap vH1<1 5Jt`IeeivqԊHy^"@J/KzIK|R^d\[Oj6_J ը \C5(l$כr_<i;`Dx,/œfW'f碳t\X`:նK |;2.ny@kܜ7p 8n/*!J4؋O_j6 EW gD4fWgDH' wNnYMGO.q _kl~} e~|Xv\a$v vꙢAI}M|8?j)b57patRͪh\.KQLqGOޟo$fq'endstream -endobj -4627 0 obj << -/Type /Page -/Contents 4628 0 R -/Resources 4626 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4575 0 R -/Annots [ 4630 0 R 4631 0 R 4632 0 R 4633 0 R 4634 0 R 4635 0 R 4636 0 R 4637 0 R 4638 0 R 4639 0 R 4640 0 R 4641 0 R 4642 0 R 4643 0 R 4644 0 R 4645 0 R 4646 0 R 4647 0 R 4648 0 R ] ->> endobj -4630 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.3873 702.9085 195.9522 713.8125] -/Subtype /Link -/A << /S /GoTo /D (a00150_ga05a3dde2048480fa3ab2a5961898d18) >> ->> endobj -4631 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 689.9571 138.5977 700.861] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4632 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 689.9571 170.976 700.861] -/Subtype /Link -/A << /S /GoTo /D (a00150_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> ->> endobj -4633 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 651.1028 138.5977 662.0067] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4634 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 651.1028 174.8513 662.0067] -/Subtype /Link -/A << /S /GoTo /D (a00150_g5b5615dc240daed20949c0fded2b4679) >> ->> endobj -4635 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 638.1514 133.6164 649.0553] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4636 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 638.1514 172.6397 649.0553] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb4ef6b00924990e7a293f66715b6d1d1) >> ->> endobj -4637 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 625.1999 152.9837 636.1039] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -4638 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [160.9538 625.1999 200.0271 636.1039] -/Subtype /Link -/A << /S /GoTo /D (a00150_g788ffac72342f6172343d7f8099cbe1a) >> ->> endobj -4639 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 586.3456 152.9837 597.2496] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -4640 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.4818 586.3456 196.4305 597.2496] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> ->> endobj -4641 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 573.3942 138.5977 584.2981] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4642 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 573.3942 200.3154 584.2981] -/Subtype /Link -/A << /S /GoTo /D (a00150_g236d5c7872f59c8fe7b701c7252b976e) >> ->> endobj -4643 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 560.4428 172.9089 571.3467] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -4644 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.8791 560.4428 239.8777 571.3467] -/Subtype /Link -/A << /S /GoTo /D (a00150_g210f227119fc972e6222c9cb452e15a9) >> ->> endobj -4645 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 521.5885 172.9089 532.4924] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -4646 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.4071 521.5885 236.281 532.4924] -/Subtype /Link -/A << /S /GoTo /D (a00150_geb533744817cf6695d75293369c2248b) >> ->> endobj -4647 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 508.637 133.6164 519.541] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4648 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 508.637 177.0532 519.541] -/Subtype /Link -/A << /S /GoTo /D (a00150_g2a0cf5d86c58fab216414ce59bf1fea1) >> ->> endobj -4629 0 obj << -/D [4627 0 R /XYZ 90 757.9346 null] ->> endobj -4626 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4651 0 obj << -/Length 1995 -/Filter /FlateDecode ->> -stream -xڵm6WȠ(˶p@.~j@k#~ٓdo(\ʔInƲ4<e9dҌ8G8+ -FZR9_?t$A:_o]ŗ+)+PA?irNmϧwެJ0I~ϷݻFL+1`DSfz= GG83 h~t -Q\zhw=CU/ZTMe$H 鄘Y%"V]ՖhkT5zBzXy#YoU}aL7g{3>-7_-7u"@b.FJqF*AQa@ H:Xݹ~}m` -FIڸgmmy>/ ^T5!ݒ"mjQ yj=p1 ݎ4Jp-x ޢx-LӡRڌߍ"ʩn)y'61e 9p1%{;˰9v  -߶vڛiaOu8]C7w,7W;3ѧ?a >?)09Trv}rB ,OINڇHoЯܚ8 -A~d.V*A4'M0]n.7Sr!rSv,5e& -9^10 z܋}A/ޮ?un -( CMy7@#@RVOKFCƢaX{,IXg:vO?\MϹ*}n;&h#2.ں `m$xd"qtbx1Žo/]`> gRs ͹B9A/T!In -SzCBxڍH#1A8f* /q!6pȼO$\k X6cyY%C#]fqN&6tm'6ζmX+ - аsBdW'5P6mڝfnDzVMDDZjWdpZ'5pPA6^"E?qCJ­D -Cfn4/+9W!lm;x$bq_5e}Ub,K -~t$7ce^sc'endstream -endobj -4650 0 obj << -/Type /Page -/Contents 4651 0 R -/Resources 4649 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4575 0 R -/Annots [ 4654 0 R 4655 0 R 4657 0 R 4658 0 R 4659 0 R 4660 0 R 4661 0 R 4662 0 R 4663 0 R 4665 0 R 4666 0 R 4667 0 R 4668 0 R 4669 0 R ] ->> endobj -4654 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 638.4748 274.5352 659.6763] -/Subtype/Link/A<> ->> endobj -4655 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 579.3616 179.5632 590.2656] -/Subtype /Link -/A << /S /GoTo /D (a00203) >> ->> endobj -4657 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 504.4427 177.6109 515.3466] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -4658 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 465.3492 197.5362 476.2531] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -4659 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 426.2558 175.9567 437.1597] -/Subtype /Link -/A << /S /GoTo /D (a00093) >> ->> endobj -4660 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 387.1623 196.4301 398.0663] -/Subtype /Link -/A << /S /GoTo /D (a00094) >> ->> endobj -4661 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 374.0913 204.1809 384.9952] -/Subtype /Link -/A << /S /GoTo /D (a00091) >> ->> endobj -4662 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 361.0203 199.1998 371.9242] -/Subtype /Link -/A << /S /GoTo /D (a00096) >> ->> endobj -4663 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 347.9493 193.1026 358.8532] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -4665 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 264.6323 210.8161 275.5362] -/Subtype /Link -/A << /S /GoTo /D (a00144_g12b467f314489259dd718228d0827a51) >> ->> endobj -4666 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 225.5388 211.922 236.4428] -/Subtype /Link -/A << /S /GoTo /D (a00144_g20bc87e5c063c3f4b01547be6e5a0148) >> ->> endobj -4667 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 186.4454 202.5074 197.3493] -/Subtype /Link -/A << /S /GoTo /D (a00144_g41d37ea1e3bd24f7b51e9409aceaaa80) >> ->> endobj -4668 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 147.3519 209.7101 158.2559] -/Subtype /Link -/A << /S /GoTo /D (a00144_geb79c914cf137e6d27fd7583e5a66679) >> ->> endobj -4669 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 108.2585 203.6134 119.1624] -/Subtype /Link -/A << /S /GoTo /D (a00144_gd8e8bc9bc0e2ea4a24a8a024fd3a7f7c) >> ->> endobj -4652 0 obj << -/D [4650 0 R /XYZ 90 757.9346 null] ->> endobj -1114 0 obj << -/D [4650 0 R /XYZ 90 739.9346 null] ->> endobj -382 0 obj << -/D [4650 0 R /XYZ 90 739.9346 null] ->> endobj -4653 0 obj << -/D [4650 0 R /XYZ 90 716.6946 null] ->> endobj -4656 0 obj << -/D [4650 0 R /XYZ 90 523.5122 null] ->> endobj -4664 0 obj << -/D [4650 0 R /XYZ 90 283.7018 null] ->> endobj -4649 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4673 0 obj << -/Length 2412 -/Filter /FlateDecode ->> -stream -xڽ[]6}_b_l`7bil:}J@ck&B=k˓Ϳ_iJ.]=W\M#/P`\.O7xh^ oߚoC?n^Ţ@rqp R#Znc{aOWzW=T˪YۗjIX}{sÝgLx1IZ,>'N{?>Nȱ@-UP& -I#EZ21_4 =c_4`8|atPՀ`)*" gP)^QeS1mKd ۷]ç҈4V>>V]SuOi. QBÅDqt[{m]޻`;aFu39קΤ`ϒREL}hLTjtUUjě6֘i{B9LP]$ir`HTYtYm~ݯ.ZuNLb]+cD0#WYYPeLIByC ys  3h+L8ITRQ;L6!;╽XYЇ=YqWUe;u{< +&g"Y0=<>Q8nÍ؅F!fso NuNHH:dM"Ĉ7$M"F׉c_:@lsUp}-g2$! @{p̺yv/}b9̵shi*x@oY$fe87bm7KmyҚn A@--maD4!f0 Fcfq)\ J$GjL LenwP{p0.0fu4()ZBZyC suZ79P|!{[ԸJ8T*(Z y:?cPi e:]]A)I'%*Y[tTqxB[gc9|K*}SzXDv>K~cendstream -endobj -4672 0 obj << -/Type /Page -/Contents 4673 0 R -/Resources 4671 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4575 0 R -/Annots [ 4675 0 R 4676 0 R 4677 0 R 4678 0 R 4679 0 R 4680 0 R 4681 0 R 4682 0 R 4683 0 R 4684 0 R 4685 0 R 4686 0 R 4687 0 R 4688 0 R 4689 0 R 4690 0 R 4691 0 R 4692 0 R 4693 0 R 4694 0 R 4695 0 R ] ->> endobj -4675 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 713.9553 210.8161 724.8593] -/Subtype /Link -/A << /S /GoTo /D (a00144_g5323320b7316647042016f17c4e881be) >> ->> endobj -4676 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 675.2769 185.9198 686.1808] -/Subtype /Link -/A << /S /GoTo /D (a00146_ga4360412ee9350fba725f98a137169fe) >> ->> endobj -4677 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 636.5984 198.084 647.5023] -/Subtype /Link -/A << /S /GoTo /D (a00146_g1024f8a5fa65e82bf848b2e6590d9628) >> ->> endobj -4678 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 597.9199 213.1775 608.8238] -/Subtype /Link -/A << /S /GoTo /D (a00146_gfd5ebb56a1bd1da9878aa886a2075e80) >> ->> endobj -4679 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [242.9955 597.9199 285.9441 608.8238] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> ->> endobj -4680 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 585.0564 222.4327 595.9603] -/Subtype /Link -/A << /S /GoTo /D (a00146_gbaf0bb2b6a4424b4eb69e45e457c2583) >> ->> endobj -4681 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 546.3779 205.2871 557.2818] -/Subtype /Link -/A << /S /GoTo /D (a00146_gf20aaf4292cb0d2a1b10bc0a568b51fa) >> ->> endobj -4682 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 507.6994 218.0093 518.6033] -/Subtype /Link -/A << /S /GoTo /D (a00146_g2c64c8c36bc84f9336f6a2184ea51883) >> ->> endobj -4683 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 469.0209 242.358 479.9248] -/Subtype /Link -/A << /S /GoTo /D (a00146_gf5c2ad5acf3cc23b8262e9ba6a15136b) >> ->> endobj -4684 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 430.3424 211.932 441.2463] -/Subtype /Link -/A << /S /GoTo /D (a00147_gef14e83c046e19ab9fe9d1bbcca276c2) >> ->> endobj -4685 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 417.4789 194.2086 428.3828] -/Subtype /Link -/A << /S /GoTo /D (a00147_g1a1bc437c09ddef238abab41d77c3177) >> ->> endobj -4686 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 378.8004 207.3095 389.7043] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8411c95a4d89367ad2d9d6bde1a3d537) >> ->> endobj -4687 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 340.1219 185.9097 351.0258] -/Subtype /Link -/A << /S /GoTo /D (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) >> ->> endobj -4688 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 301.4434 185.9099 312.3474] -/Subtype /Link -/A << /S /GoTo /D (a00147_g88d2ccf7cd821f89d9a8df7e3948b56c) >> ->> endobj -4689 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 262.765 182.0444 273.6689] -/Subtype /Link -/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> ->> endobj -4690 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 224.0865 196.4303 234.9904] -/Subtype /Link -/A << /S /GoTo /D (a00147_g64a238a5c02640a7a4aef004163aeb47) >> ->> endobj -4691 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.6975 209.5536 410.5505 219.4589] -/Subtype /Link -/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> ->> endobj -4692 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 185.408 190.333 196.3119] -/Subtype /Link -/A << /S /GoTo /D (a00147_g81ac47cee1c18f6aa479044069db7ca3) >> ->> endobj -4693 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [377.83 170.8751 416.683 180.7804] -/Subtype /Link -/A << /S /GoTo /D (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) >> ->> endobj -4694 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 146.7295 224.0965 157.6334] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga9de254b8aa308eb4aab17efdde622d2) >> ->> endobj -4695 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 108.051 198.383 118.9549] -/Subtype /Link -/A << /S /GoTo /D (a00147_g26a14b8dae3f861830af9e7cf1e03725) >> ->> endobj -4674 0 obj << -/D [4672 0 R /XYZ 90 757.9346 null] ->> endobj -4671 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4698 0 obj << -/Length 2146 -/Filter /FlateDecode ->> -stream -xڭ]o+F=ћmN{@Ns"ъIt%*Ϯ]/̶+p.I щQ8!d7lxο Mq1fDq'_;0~~X~6Ͷuv{ߧCUJhyotսD8&O%9>H.ͻ8 휤Xa'w -13is8TQ-uQMrdgrN{ߊ+1UEI_-_)ۦH.51ܰrXEPali(J# ҇ -(GA  \}@щhy;B/AC{_ʋ>N^A;RF7>ofޕs*}H*2Z Z "=Gp.N)cVxuHu\g!ἉAYm޾K뷗VH&UR*"QȆ&dא Qčdn5[o ~ڌ4" -hU| JqL e#갉 o%.7~װM؏޽;J?y8a/>"99wvNb2Y@p"t8_ba)\FhT6P yaFyqÌW) sX¦=NrEM~~ꉗnHR!Ѣ0'1SL y(B?@hWo뙖PsI2cc:pptQ29W3xԑ6$uc:jK L AeB#AnqZ2~ȅuW!`$J| ʼn' )OgܯN6$_7࡛\ Pdw%ʏO O}C_qrõ$R^2W#"pWd!Wy+%q\F7-g Y4!Ecn?%,l,@# 蠮H2Rʿonw@|S BӃG5m[=]5hu{wS8I# Λ̑0(y92/g$&|D` -K_DRwdcU6@ns$bY<^*Jtð-w]ⲻ*s{1lBaOG$j< `/$o(/nq -{!eqc| ۋ݄*/ ,iyNy,G[Dp"V~f>@9%gr5D}ogÍ")W!i"Ş*,@44'ʼne 4 ћ96$\B"_Nj"aE.S2}H Wn3†<ߩ6Yz4..7a~^0>p I)POvWnmWeS|F1qK`0endstream -endobj -4697 0 obj << -/Type /Page -/Contents 4698 0 R -/Resources 4696 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4575 0 R -/Annots [ 4700 0 R 4701 0 R 4702 0 R 4703 0 R 4704 0 R 4705 0 R 4706 0 R 4707 0 R 4708 0 R 4709 0 R 4710 0 R 4711 0 R 4712 0 R 4713 0 R 4714 0 R 4715 0 R 4716 0 R ] ->> endobj -4700 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 713.8976 188.5699 724.8016] -/Subtype /Link -/A << /S /GoTo /D (a00147_gde6634974418e3240c212b9b16864368) >> ->> endobj -4701 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 675.1037 205.825 686.0076] -/Subtype /Link -/A << /S /GoTo /D (a00147_gdb971fb1525d0c5002f52125b05f3218) >> ->> endobj -4702 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 636.3098 190.8911 647.2137] -/Subtype /Link -/A << /S /GoTo /D (a00147_gef6c4140c632b6a406779342cf3b6eb6) >> ->> endobj -4703 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 597.5159 195.3145 608.4198] -/Subtype /Link -/A << /S /GoTo /D (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) >> ->> endobj -4704 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 558.7219 200.8635 569.6259] -/Subtype /Link -/A << /S /GoTo /D (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) >> ->> endobj -4705 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 519.928 191.2995 530.832] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga8933ad15a2e2947dae4a5cff50e6007) >> ->> endobj -4706 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 481.1341 180.9385 492.0381] -/Subtype /Link -/A << /S /GoTo /D (a00147_g58bb90796c1cdad3aac2ecf44d87b20e) >> ->> endobj -4707 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 442.3402 204.1906 453.2441] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga87feebc7cffd4d8300e776cf64e4fec) >> ->> endobj -4708 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 403.5463 180.9384 414.4502] -/Subtype /Link -/A << /S /GoTo /D (a00147_gb5fecbc62edd128012cea0f47b57ab9f) >> ->> endobj -4709 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 364.7524 214.9411 375.6563] -/Subtype /Link -/A << /S /GoTo /D (a00147_gf2dbaceb10c67783a115075b5b6d66df) >> ->> endobj -4710 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 325.9585 203.0756 336.8624] -/Subtype /Link -/A << /S /GoTo /D (a00147_ga20812098a4663c8a9fc4ce8e95391b6) >> ->> endobj -4711 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 287.1645 203.6235 298.0685] -/Subtype /Link -/A << /S /GoTo /D (a00147_ge5ab69d40013e6cf86ef1763c95d920e) >> ->> endobj -4712 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 248.3706 190.8912 259.2745] -/Subtype /Link -/A << /S /GoTo /D (a00148_g87f0b54ade0d159fba495089128a4932) >> ->> endobj -4713 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 209.5767 195.8725 220.4806] -/Subtype /Link -/A << /S /GoTo /D (a00148_g53fbda0e8c31d4882294c8dc3cb5f487) >> ->> endobj -4714 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 170.7828 215.1402 181.6867] -/Subtype /Link -/A << /S /GoTo /D (a00148_g769512993b7b27271909d6daa4748b60) >> ->> endobj -4715 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 131.9889 213.028 142.8928] -/Subtype /Link -/A << /S /GoTo /D (a00148_g210e629f7252e4bc8458cbdf260b3318) >> ->> endobj -4716 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 93.195 234.0589 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00148_g6b16e0bac41821c1fbe0c267071642f0) >> ->> endobj -4699 0 obj << -/D [4697 0 R /XYZ 90 757.9346 null] ->> endobj -4696 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4719 0 obj << -/Length 3007 -/Filter /FlateDecode ->> -stream -xڭr7j|ȝ-ɎnRebH>l3 KEi~13b#c#GGFԣOt_@w94ף&fDqG_ǖp7y?=|O߾~8߾'̎狛#k3k&~<8%.9%4 ;$>/eSM0b]Q7LWbTS|$jv|1/̥&؞y8\4F7{s`x@'ÙU"*)6ۖY=tBB އj,vJe~Z;Hw|y 0 SY^( $ 82`C%"n>ʞsXU}-`=XGYfv|Ϗ7sd=\0U(<o+-;^Q"2zǃX㾩oCg-Q;^wi|>>s7܁eu#&з{fO\m`p7J.Ybvy*M -0QVG9oB}g-4OOfdL"$UŝSKeeNaywcܩ;@5Mi_܂a?j{qmHU-5棨ba -rgW?W3a@:Z}\@73oQčߞOKŽtQU19=_?ErU);H9S(W(ثˉ4P(IUISA$Ӯ,w5c -0QV'9Ҹo" }Hg-4i<Ύ -jTDtYEe tIc4HCҙy i<"n$=;9=>:Wi1~!*^F HtIc4HCҙy i<"n$]]Qɖs,#j9,[E ɉݻ+(p7 3xE\8/KȖtQU12n{k -{2`sq6@[ iq/;qFr$U%.l!x3Mc[P:o}o;3o፧Qč]\Mώ6Sk$SX-W7wy3?c}P(`GY6` 6m(Bؽgq2IUIsM6O@/tUA;:@W(f'b˗KQ"$U=~iecC&8ƸS#v0jй/~w)jILd}m_eu#&зpfނO !r:eːT T3ͷ ->|Is9c38CΙy g<"naSaHJ\h6Ooͅ#TP(pGY7p 7m(FܯOή~0N/OfWox5FQDF߄{lx7 -0QVǍ9ܸo }pg-40n77LwaT l (n7ᆾ 3xE\8>9{S^UUH}8*~> 17Beu̘#&зsfނO 7BwúԌX'-^d$%tE”vUi;H;hW(Fo_Ngrd[Ux)CLmCgZHŒ^C:1GMo̼5F7O}2i4^o!VBtxo@91GMo̼3F7O?\\e(mJ$U%\{,^(`sq6[Xiq]FGWӓkmOӆW"P Ƶm|ܖ%:Wagᡬгw!]?|~1=)VQ{{޾zX`#*B&+בֿok/ TڽD*T{ҿ*>&Ωgy' +Em$11męy (⦏/>lOW'}wOњDQ%. [;ҷ4rxlw݉k1uж2^a³{ޝO'Low~!+ńqZħwף_?QL Oendstream -endobj -4718 0 obj << -/Type /Page -/Contents 4719 0 R -/Resources 4717 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4756 0 R -/Annots [ 4721 0 R 4722 0 R 4723 0 R 4724 0 R 4725 0 R 4726 0 R 4727 0 R 4728 0 R 4729 0 R 4730 0 R 4731 0 R 4732 0 R 4733 0 R 4734 0 R 4735 0 R 4736 0 R 4737 0 R 4738 0 R 4739 0 R 4740 0 R 4741 0 R 4742 0 R 4743 0 R 4744 0 R 4745 0 R 4746 0 R 4747 0 R 4748 0 R 4749 0 R 4750 0 R 4751 0 R 4752 0 R 4753 0 R 4754 0 R 4755 0 R ] ->> endobj -4721 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 702.8842 216.9034 713.7882] -/Subtype /Link -/A << /S /GoTo /D (a00148_g969d7fff37a979737da045e0d538a9bd) >> ->> endobj -4722 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 663.9813 195.8725 674.8853] -/Subtype /Link -/A << /S /GoTo /D (a00148_g22fa0681cd463191d7a01fe85d86996f) >> ->> endobj -4723 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 625.0784 195.8725 635.9824] -/Subtype /Link -/A << /S /GoTo /D (a00148_gffcd2fbe181e2aaefbf970551c302af5) >> ->> endobj -4724 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 586.1755 195.8725 597.0795] -/Subtype /Link -/A << /S /GoTo /D (a00148_ge23534479ead15af8ff08ace26a47fb5) >> ->> endobj -4725 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 547.2726 195.8725 558.1766] -/Subtype /Link -/A << /S /GoTo /D (a00148_g165b603ec150e26efec7be199c9c2901) >> ->> endobj -4726 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 508.7434 180.7494 519.2737] -/Subtype /Link -/A << /S /GoTo /D (a00148_g69a7a4951ff21b302267532c21ee78fc) >> ->> endobj -4727 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 471.5241 169.3122 480.3708] -/Subtype /Link -/A << /S /GoTo /D (a00148_g118e9d76568ab81ad97f138d4ea1ddd2) >> ->> endobj -4728 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 457.4674 214.6224 467.3951] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6bfa488f87f68a6f7f4a3efb9e45eaf8) >> ->> endobj -4729 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 444.4916 216.6746 454.4193] -/Subtype /Link -/A << /S /GoTo /D (a00150_g39ce739bd352d7e348e37395ce903e43) >> ->> endobj -4730 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 431.5159 206.9409 441.4436] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf848ce44c810492e7a35c2d23a429f45) >> ->> endobj -4731 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 418.5402 193.6609 428.4679] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf0ed78fd2be24d849cdd5af75e3b2674) >> ->> endobj -4732 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 405.5645 200.3059 415.4921] -/Subtype /Link -/A << /S /GoTo /D (a00150_g57e6dc1d58a36d0ed53a3dd29ccc5798) >> ->> endobj -4733 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 392.5887 201.9198 402.5164] -/Subtype /Link -/A << /S /GoTo /D (a00150_ga4c4310e54f18541b09e1e251fe7b22d) >> ->> endobj -4734 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 379.613 229.0778 389.5407] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf84316f469ce0726985c0702db49a989) >> ->> endobj -4735 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 366.6373 220.769 376.5649] -/Subtype /Link -/A << /S /GoTo /D (a00150_g2d3ba4b14d6d2f6576f9b547800b7945) >> ->> endobj -4736 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 353.6615 193.9898 363.5892] -/Subtype /Link -/A << /S /GoTo /D (a00150_gabc40c09f49d15acb1b1a7f02bb3a807) >> ->> endobj -4737 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 340.6858 199.7479 350.6135] -/Subtype /Link -/A << /S /GoTo /D (a00150_g041aea91aa6ef84dcc6cac3c51db9b2f) >> ->> endobj -4738 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 327.1074 243.3742 337.6377] -/Subtype /Link -/A << /S /GoTo /D (a00150_gd605357e29affb0d3104294c90f09905) >> ->> endobj -4739 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 314.7343 252.8785 324.662] -/Subtype /Link -/A << /S /GoTo /D (a00150_g5c97ae587595b5444be80f5ecc1d3382) >> ->> endobj -4740 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 301.7586 224.6544 311.6863] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf0ccbc3bb2a3ba1ebc255c7b3fcedd24) >> ->> endobj -4741 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 288.7829 207.4989 298.7106] -/Subtype /Link -/A << /S /GoTo /D (a00150_g28eda870cff3d8e3cf2949e6f57a502b) >> ->> endobj -4742 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 275.8072 221.3369 285.7348] -/Subtype /Link -/A << /S /GoTo /D (a00150_ga5e3c856b86725125d19fccc34cd9eb5) >> ->> endobj -4743 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 262.8314 218.5673 272.7591] -/Subtype /Link -/A << /S /GoTo /D (a00150_g8af482dec973db57d8b3bd3f69461488) >> ->> endobj -4744 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 249.8557 234.7964 259.7834] -/Subtype /Link -/A << /S /GoTo /D (a00150_gae59b70658f28ee6e998eaaab05e423f) >> ->> endobj -4745 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 236.8799 224.5549 246.8076] -/Subtype /Link -/A << /S /GoTo /D (a00150_ga533c394b1fa0030205534befa31c525) >> ->> endobj -4746 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 223.9042 224.5549 233.8319] -/Subtype /Link -/A << /S /GoTo /D (a00150_g160128ab5d2ea3cc497b91ee4eb4ef99) >> ->> endobj -4747 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 210.9285 211.9222 220.8562] -/Subtype /Link -/A << /S /GoTo /D (a00150_g64d9affc680a445d708234e70450477b) >> ->> endobj -4748 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 197.9528 222.8911 207.8804] -/Subtype /Link -/A << /S /GoTo /D (a00150_gfff0ed43201bf1e2020de1a0d6cac070) >> ->> endobj -4749 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 184.977 219.2748 194.9047] -/Subtype /Link -/A << /S /GoTo /D (a00150_gd135fb0cfdfb2c212f0f51865a3640e4) >> ->> endobj -4750 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 172.0013 214.1439 181.929] -/Subtype /Link -/A << /S /GoTo /D (a00150_g13dfcb4a5f920e108253ade527a66cc2) >> ->> endobj -4751 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 159.0256 211.7529 168.9532] -/Subtype /Link -/A << /S /GoTo /D (a00150_gde29ec025e6754afd8cc24c954a8dec8) >> ->> endobj -4752 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 146.0498 238.2734 155.9775] -/Subtype /Link -/A << /S /GoTo /D (a00150_ge0825474feee11b4e038bfe71757875f) >> ->> endobj -4753 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [289.3868 130.4285 318.6011 140.3338] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -4754 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 107.1469 229.7753 117.0746] -/Subtype /Link -/A << /S /GoTo /D (a00150_g359951eecd80541c2101f628a9da9146) >> ->> endobj -4755 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 94.1712 223.6882 104.0989] -/Subtype /Link -/A << /S /GoTo /D (a00150_g517c770991459cc62dc009c0d3875c6a) >> ->> endobj -4720 0 obj << -/D [4718 0 R /XYZ 90 757.9346 null] ->> endobj -4717 0 obj << -/Font << /F29 499 0 R /F50 1172 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4759 0 obj << -/Length 3015 -/Filter /FlateDecode ->> -stream -xڵ\r7}Wj_Z%klj]Q)T(ʎ13tcmJ$3}}C7f$O,_8XP..oO#'z /K?/NRE`Jj$Xrq~{*?[ ;}xuo ?o^no6ˇ:nwOȴVFYI8y/֠Tf>p&B-Ups悱ůҵK\:xU,^p˴zPIi+F- -q "Hf[[ms eN:Q3o;țR'tK:3O?.΄?/:Iƣ \)-ʚJBJ8ƥӮ.v6Xx.yg"p\izӹ8]),'Q:RY&MO5i Fc,܎f3^q;@nr=j -EK}zGl`6I?Fe|3\~gPc 7E`Pn"ADcl;v `18os;?j &?_<3tbN EK m JiG F;c,fG3]q4@cLi>A QRq ){We޾ -XPɤf:( - FXΛ} [KqCdA "ASʇ(XP$c8owFPTsWc hP`(1(a=12^p4&5^9}n\ݏD+% #e|7EK{l9Ǥ3=f$TZ8B_jAW.=~-%s\%\NPxdjS3+ 1aXL5DG]ľ*.];Td~;)wmMA_s:6.`:L0WYHԍVq %Λbh -}3 Y']NJ&,hDCȉVƊ=@mӭA b0ys T V3bW/\1`LĢ#cQr`n7愖y-qGeՃ@ X"ˇe,cv -vzv)GB1H'MqX~:lbh‚&'TKmGʡ0 "g8N*icH'-ǬͽD#{5&Hvvuo_uQ8k`lZƹd@,rq%/ŵM{9nFq#5BBQ^0c6>G }شEtE[҉mN'{؇O --au+ȴ-"iK𦴭xɴg-@nJۛqffR(K (vg|ԶZ-)'<@.9RgA9# -ʜmE ~96K>{nsGxuQɔV3i6)a[Ft!Ki7tKt='q-rSJ?&kgP+$-L*6?pzԠ/w:!Ҭ 3 @Ɣ*ɤ֒)G5nђJkzi%V=MN CwTN'Ӆ>#>)JMi3.~77cwpQCnKnv^,ph<='}|UPtN YI괄BH #t)T+^g^ #[[ Eq;n -BNASڣWCeedPf:? KjfJɤjڜhF[wpp.mR%= -;cN(5gΑFO!BevluB:TeF ^AÕYgֻׁu٢S--ۜIsyH2BF*H2"c00Oi0K;q=@Ba as9XBht񄵆rcRQ3˅iTy5iUktja^Gi{q>2pl8j20PaF AX((b1q$`Jw.JDoNX$\Ih6lϟJo^> endobj -4761 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 727.7951 225.3421 737.7228] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf72d7b9a737707dcfb2c41fec2b6792e) >> ->> endobj -4762 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 714.8475 234.7566 724.7752] -/Subtype /Link -/A << /S /GoTo /D (a00150_gad0321f4c570f9983c6de81ece3ddc20) >> ->> endobj -4763 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 701.9 209.1527 711.8276] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6bc12c6c7b56f73ce5d57abfdcdc6eb5) >> ->> endobj -4764 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 688.9524 220.2212 698.8801] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb948296aea6b6b3aa1f156799c4d479c) >> ->> endobj -4765 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 676.0048 218.5673 685.9325] -/Subtype /Link -/A << /S /GoTo /D (a00150_g17d111686f98e4c09db73a770ac3f1a4) >> ->> endobj -4766 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 662.4546 229.0778 672.9849] -/Subtype /Link -/A << /S /GoTo /D (a00150_g6f2b90c597ec23f39ec716ccec11233c) >> ->> endobj -4767 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 649.507 227.424 660.0373] -/Subtype /Link -/A << /S /GoTo /D (a00150_g15f2617f7dc1713f9d10282125c6027b) >> ->> endobj -4768 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 637.1621 227.424 647.0897] -/Subtype /Link -/A << /S /GoTo /D (a00150_gee37386b2ab828787c05227eb109def7) >> ->> endobj -4770 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 579.341 170.966 590.2449] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4771 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [171.4642 579.341 229.3566 590.2449] -/Subtype /Link -/A << /S /GoTo /D (a00150_g20ceef9d0868d391c2f33041b02cb1f1) >> ->> endobj -4772 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 540.4944 170.966 551.3983] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4773 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [171.4642 540.4944 229.3566 551.3983] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9ebb4dac683163840eab9c6c41ad61f7) >> ->> endobj -4774 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.2787 527.5468 204.1712 538.4507] -/Subtype /Link -/A << /S /GoTo /D (a00150_g20ceef9d0868d391c2f33041b02cb1f1) >> ->> endobj -4775 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [204.6693 527.5468 257.5805 538.4507] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4777 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 470.7019 166.9111 481.6059] -/Subtype /Link -/A << /S /GoTo /D (a00145_gc48ed5f0d27721ef62a3ed02a5ad8d2e) >> ->> endobj -4778 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 431.8554 180.1912 442.7593] -/Subtype /Link -/A << /S /GoTo /D (a00145_g22f140b02c354dfebcc7ad481c3bcd68) >> ->> endobj -4779 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [184.0068 431.8554 208.6941 442.7593] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4780 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 393.0088 175.2098 403.9127] -/Subtype /Link -/A << /S /GoTo /D (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) >> ->> endobj -4781 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [179.0255 393.0088 203.7128 403.9127] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4782 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 354.1622 185.1725 365.0661] -/Subtype /Link -/A << /S /GoTo /D (a00147_gaa585784b0914cac1d37f07f85457008) >> ->> endobj -4783 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [188.9881 354.1622 213.6754 365.0661] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4784 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 315.3156 152.9837 326.2195] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -4785 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [160.9538 315.3156 211.6433 326.2195] -/Subtype /Link -/A << /S /GoTo /D (a00147_g8096b0c4b543dc408f4dd031ddae7240) >> ->> endobj -4786 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [215.459 315.3156 268.3701 326.2195] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4787 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [307.2043 315.3156 331.8917 326.2195] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4788 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 276.469 171.8826 287.3729] -/Subtype /Link -/A << /S /GoTo /D (a00147_g04b053a623aac7cd4195157d470661b3) >> ->> endobj -4789 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 237.6224 172.9089 248.5263] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -4790 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.8791 237.6224 236.859 248.5263] -/Subtype /Link -/A << /S /GoTo /D (a00147_g79c4110211247df3fb30b8cf1c4c02af) >> ->> endobj -4791 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [240.6746 237.6224 293.5858 248.5263] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4792 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [332.42 237.6224 357.1073 248.5263] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4793 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 199.1494 138.5977 209.6798] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4794 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 199.1494 162.6772 209.6798] -/Subtype /Link -/A << /S /GoTo /D (a00148_ga22b04cac8cf283ca12f028578bebc06) >> ->> endobj -4795 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [166.4928 199.1494 191.1801 209.6798] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4796 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 159.9292 183.4989 170.8332] -/Subtype /Link -/A << /S /GoTo /D (a00150_g266263ac78a1361a2b1d15741d3b0675) >> ->> endobj -4797 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [187.3145 159.9292 207.0205 170.8332] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4798 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 146.9817 138.5977 157.8856] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4799 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 146.9817 189.7953 157.8856] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb6683dd83fe1c8de9a24086d4b69e907) >> ->> endobj -4800 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.6109 146.9817 218.2983 157.8856] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4801 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [241.84 146.9817 266.5273 157.8856] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4802 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 108.1351 138.5977 119.039] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4803 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 108.1351 197.5461 119.039] -/Subtype /Link -/A << /S /GoTo /D (a00150_g2addf34c7d457c1a7899a7e2171ef1e9) >> ->> endobj -4760 0 obj << -/D [4758 0 R /XYZ 90 757.9346 null] ->> endobj -4769 0 obj << -/D [4758 0 R /XYZ 90 596.0036 null] ->> endobj -4776 0 obj << -/D [4758 0 R /XYZ 90 489.648 null] ->> endobj -4757 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4806 0 obj << -/Length 1902 -/Filter /FlateDecode ->> -stream -xZr6}WQa`qc.$3mC]d[[vtiB"`Cǣ1){vؐZ:R˅NtxoqϋbpvvhU# /#C t?nl9ff4[L[F1cW.9ss\^I~P­ÿf- y|=~`p3,@VZ` SXDHFFUDp#L'lڀQH>l(5 ׸{YU>RYvWcazݢ5Q$= R'(X͟דI(%VsH,*C('Bq1|׬]h -j -\-I(5X|jˠɛay(וśOɘln͵}鶁.w1z|}}nO˓yZKeeaLHMi@3R Zإw2ָ[ iVrYFs8,I+r9z4[Un>VRyx}$yD׷xidj/\@_@FW`ϼ/_hBtAǀTxX>L3'iv!Pbvɝb; ;s}d¡EQ+B]stY@&l)nRt fjMJ&SbdrTڊլ:z}Z6)f^j'Ձ&Uwv0~C6 N<ɰq՘f$"כ)rްξ&`e-t[shp?  pq:9DշC|qD pk8<*/CZCD)&;)E뢸jǫD -XPzvֲ>Xn>8WRaIxx̤م9J㐤գQb}q{)S \˴״&Fe7n{7`Αn!">_;z>.QlOT;o b`@<:P3<.%%gy\ƨkʻվܫp$Y -Ty;a#R+= xggcvvr:]񰒘2,f!U6Z,PȳUs"#BBd1 q]q̮,qeqb~,WZ.f"IpaʻXt*oZpoDw)$rxݞ3"@asY\QdGFq?8~/Ҍ%#̝-frO$w?bS0W_:30RoOk$" endstream -endobj -4805 0 obj << -/Type /Page -/Contents 4806 0 R -/Resources 4804 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4756 0 R -/Annots [ 4808 0 R 4809 0 R 4810 0 R 4811 0 R 4813 0 R 4814 0 R 4815 0 R 4816 0 R 4817 0 R 4818 0 R 4819 0 R 4820 0 R 4821 0 R 4822 0 R 4823 0 R 4824 0 R 4825 0 R 4826 0 R 4827 0 R 4828 0 R 4829 0 R 4830 0 R 4831 0 R 4832 0 R 4833 0 R 4834 0 R 4835 0 R 4836 0 R 4837 0 R ] ->> endobj -4808 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 713.8674 138.5977 724.7714] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4809 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 713.8674 201.9695 724.7714] -/Subtype /Link -/A << /S /GoTo /D (a00150_g85b65e38aa74eba18979156f97a94a87) >> ->> endobj -4810 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 675.0131 138.5977 685.9171] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4811 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 675.0131 204.7393 685.9171] -/Subtype /Link -/A << /S /GoTo /D (a00150_g7023a34ba9e9d03b5fbedbcb32924453) >> ->> endobj -4813 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 592.2581 133.6164 603.162] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4814 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 592.2581 166.9014 603.162] -/Subtype /Link -/A << /S /GoTo /D (a00146_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -4815 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.3873 553.4038 192.0768 564.3077] -/Subtype /Link -/A << /S /GoTo /D (a00150_g561b8eda32e059d4e7397f776268cc63) >> ->> endobj -4816 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 514.5495 138.5977 525.4534] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4817 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 514.5495 170.976 525.4534] -/Subtype /Link -/A << /S /GoTo /D (a00149_g12a33f0c09711167bdf3dd7d7cf8c5a1) >> ->> endobj -4818 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 475.6952 152.9837 486.5991] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -4819 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [160.9538 475.6952 200.0271 486.5991] -/Subtype /Link -/A << /S /GoTo /D (a00150_g788ffac72342f6172343d7f8099cbe1a) >> ->> endobj -4820 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 436.8409 152.9837 447.7448] -/Subtype /Link -/A << /S /GoTo /D (a00088) >> ->> endobj -4821 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.4818 436.8409 196.4305 447.7448] -/Subtype /Link -/A << /S /GoTo /D (a00150_gf703683056d2bfa5c81fa157dcb20fe2) >> ->> endobj -4822 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 423.8895 133.6164 434.7934] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4823 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 423.8895 177.0532 434.7934] -/Subtype /Link -/A << /S /GoTo /D (a00151_g2a0cf5d86c58fab216414ce59bf1fea1) >> ->> endobj -4824 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 385.0352 172.9089 395.9391] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -4825 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.8791 385.0352 239.8777 395.9391] -/Subtype /Link -/A << /S /GoTo /D (a00150_g210f227119fc972e6222c9cb452e15a9) >> ->> endobj -4826 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 346.1809 172.9089 357.0848] -/Subtype /Link -/A << /S /GoTo /D (a00095) >> ->> endobj -4827 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.4071 346.1809 236.281 357.0848] -/Subtype /Link -/A << /S /GoTo /D (a00150_geb533744817cf6695d75293369c2248b) >> ->> endobj -4828 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 333.2295 151.3294 344.1334] -/Subtype /Link -/A << /S /GoTo /D (a00093) >> ->> endobj -4829 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [151.8276 333.2295 185.3713 344.1334] -/Subtype /Link -/A << /S /GoTo /D (a00150_g9ee50a40597e67fce96541ab56c3b712) >> ->> endobj -4830 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 294.3752 133.6164 305.2791] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4831 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.1145 294.3752 172.6397 305.2791] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb4ef6b00924990e7a293f66715b6d1d1) >> ->> endobj -4832 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 281.4237 166.8215 292.3277] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4833 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 281.4237 221.3367 292.3277] -/Subtype /Link -/A << /S /GoTo /D (a00150_g7d3673f52f5846b6961d23b150decd54) >> ->> endobj -4834 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 268.4723 166.8215 279.3762] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4835 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 268.4723 220.2307 279.3762] -/Subtype /Link -/A << /S /GoTo /D (a00150_g3237be0d9ec457de0177689ee23c0d5c) >> ->> endobj -4836 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 255.5209 166.8215 266.4248] -/Subtype /Link -/A << /S /GoTo /D (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) >> ->> endobj -4837 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.3196 255.5209 213.028 266.4248] -/Subtype /Link -/A << /S /GoTo /D (a00150_g20df5c82f2a15a508c19e505b5d9de2b) >> ->> endobj -4807 0 obj << -/D [4805 0 R /XYZ 90 757.9346 null] ->> endobj -4812 0 obj << -/D [4805 0 R /XYZ 90 611.208 null] ->> endobj -4804 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4840 0 obj << -/Length 1472 -/Filter /FlateDecode ->> -stream -xڭX]o6}Y^~ a[0")Q[.%QDIt",[^~@D"CXp~A;k|~^d&2(*":CWkfw(.~z}H|_$_}Z~ݦmXI&g2dw- %` qe{W~Q5>;a{ {׽ӄcWR,Ǘ99@/ >ͫ>m@Up,SpMy`)WGW, ;c`Xʦ:OwɩCp[&t-(O LJcn?RmOd8(Z -:ׄGK@.ʟ4J9ƒP!eE/t1 3OޢFw4&1pJ%Me{ i\ĪZQcMT_"Gk1B[ui{-i!cdK9 -Iҵ(C~49B22ΉzjڹV*rEP")oW;~m02]-J*RJC*:T f'MUBBLݧ2C +țl^L8 Y;åSʔ\1Q)ԅOqlI_PA[T(/J~]1tmj9==>‹Χ,7 K -W8T(ylPJO%jtH ;|\ I(?/ {N#il]ُ9Έ9<->P?nUP#Hn9_ -%F f -gŒ rjK=+F(Q 觠tzl&eM7[SU+d ;˴! -8W$N)1kaAf&D-zFgp\H(Yz143vp}zhCy&1m07 nRO;{2Ɲ?NVN|O7G0Xu|ݦƮ}+~nZ|@~)t>C+G,g?.٣Ŏr{la=r4oE~;+MDT=|sgTgH -T^QS>w!Ouv>SٵezZOCO'\("op -*6߳"X3EAωfE\Jm$s21@qgY;p_(@#5z/4'5 KRgJ. z.yzzptBkg76Ksݢ蝫5*DzNk6W-1Qk>{zYR$R RgV|TjGTϺ pֽ ږ3lhq1o}~"7v7h+[_'j.zWL.q77ǻܻWZJ6> endobj -4843 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 274.5352 657.906] -/Subtype/Link/A<> ->> endobj -4844 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 607.3502 201.6901 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00204) >> ->> endobj -4846 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 532.8737 177.9699 543.7776] -/Subtype /Link -/A << /S /GoTo /D (a00151_g6832e4d2d046536b6472f7ac92340f68) >> ->> endobj -4847 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.7856 532.8737 201.4916 543.7776] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4848 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [231.8776 532.8737 256.5649 543.7776] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4849 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 494.0194 138.5977 504.9233] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4850 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 494.0194 189.7953 504.9233] -/Subtype /Link -/A << /S /GoTo /D (a00151_gb6683dd83fe1c8de9a24086d4b69e907) >> ->> endobj -4851 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.6109 494.0194 218.2983 504.9233] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4852 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [241.84 494.0194 266.5273 504.9233] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4853 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 455.1651 138.5977 466.069] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4854 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 455.1651 197.5461 466.069] -/Subtype /Link -/A << /S /GoTo /D (a00151_g2addf34c7d457c1a7899a7e2171ef1e9) >> ->> endobj -4855 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 416.3108 138.5977 427.2147] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4856 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.0958 416.3108 201.9695 427.2147] -/Subtype /Link -/A << /S /GoTo /D (a00151_g85b65e38aa74eba18979156f97a94a87) >> ->> endobj -4841 0 obj << -/D [4839 0 R /XYZ 90 757.9346 null] ->> endobj -1115 0 obj << -/D [4839 0 R /XYZ 90 739.9346 null] ->> endobj -386 0 obj << -/D [4839 0 R /XYZ 90 739.9346 null] ->> endobj -4842 0 obj << -/D [4839 0 R /XYZ 90 716.7484 null] ->> endobj -4845 0 obj << -/D [4839 0 R /XYZ 90 551.8236 null] ->> endobj -4838 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4860 0 obj << -/Length 1799 -/Filter /FlateDecode ->> -stream -xڭYko6_a`hڵۀ40mԏuݯߥDʔ)ZFl{ϥH1c%2|5[8rD38]flTn A _-O4bdzFGmOѼ9\ͷ⦀szRL!ӏWGW -'R0I/xb_0bFW1W#Ni4' *,P?Z -W` {0&6AF:6چϋ "-Pϋ|Sj"6Ul8VbUw_n;'XlKV᲋MWH Vc4zY ˜A,Bԃx:US%i&`a_V.g[bmROHp3.9F#c@G eGeA-Wc=T1*mҩkQhVÓCRkE>/>`Loo/(ZDR=#SoOmn2ǟX k5mX*dϣrQ4K\e'؇$ -Iy }XZ¼˾{`Cع.8`Hݱhkݦ\ߢHI>`,r`r`$ACG۞; qLVs !%@;)CS'[Tn&K}p#ȹD*rD~ŭˋ7v~U4]4Q2@,Úu% r҇B;T IҶ"CjpPߡx.*0&Hr)hAizzS]X n8Yo 8xpחÛq|@32̿uרL7LYo=*28L}m̕A}R|SAӼmC)tZFxV/"R"L<*G-a6a>cYJnq9,!]YϺ k1YD5C3C5ߧ)M$DDt=(G~rm&T(}b (Q;:C(-#[o/NuHKˁGa`M}O#T+)X73ÿ@ n1qsd$`LqGю){P#{D,8O,Y@=,߁)ƠӼm۪T"l .(n.a) I7 Pnl7BD1wԣZc B$PӾчLd̖ũGtj_S"&LȅDe:B/i0ӌ[Xa3ެ̜Q ͼ+W&~^D`h& `l9JP; }=:egJ.fZ#o\Lyݖ؍uO;;b?ٌ" Y9m촊(nl`AIP9lj(=JPg!ft W{^Çkfs;Un{ǸBB&2u{0 w{7.gTDqCW5 XeQ9z-u4La^ zLڽ> endobj -4863 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 636.7045 274.5352 657.906] -/Subtype/Link/A<> ->> endobj -4864 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 607.3502 196.7088 618.2541] -/Subtype /Link -/A << /S /GoTo /D (a00205) >> ->> endobj -4866 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 515.6229 216.8139 526.1532] -/Subtype /Link -/A << /S /GoTo /D (a00152_g7a7c46ffaba30477b8c9e3e61bd2e106) >> ->> endobj -4867 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 503.2741 202.6371 513.2018] -/Subtype /Link -/A << /S /GoTo /D (a00152_g06ba7b414e718081998f2814090debf1) >> ->> endobj -4868 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 490.3227 237.9346 500.2504] -/Subtype /Link -/A << /S /GoTo /D (a00152_gbb56b549f7ab4d86e1cc39b8afc70d1e) >> ->> endobj -4869 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 476.395 167.0009 487.2989] -/Subtype /Link -/A << /S /GoTo /D (a00152_g24f52ac52d6e714cb04a5aa01be3bdd0) >> ->> endobj -4870 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [248.2853 476.395 281.0723 487.2989] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -4871 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 463.4436 175.8576 474.3475] -/Subtype /Link -/A << /S /GoTo /D (a00152_g9f2196e2705036869611962425e404bf) >> ->> endobj -4872 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [264.3448 463.4436 297.1318 474.3475] -/Subtype /Link -/A << /S /GoTo /D (a00150_gb81e78f890dbbee50c533a9734b74fd9) >> ->> endobj -4874 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 406.5914 184.6146 417.4953] -/Subtype /Link -/A << /S /GoTo /D (a00152_g2d9d28afa353f662b9bb5234fc419f72) >> ->> endobj -4875 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 367.7371 192.3555 378.641] -/Subtype /Link -/A << /S /GoTo /D (a00152_g058a8e6025f67b021862281f1911fcef) >> ->> endobj -4876 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 328.8828 191.7978 339.7867] -/Subtype /Link -/A << /S /GoTo /D (a00152_g902c4a360134096224bc2655f623aa5f) >> ->> endobj -4877 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 290.0285 184.0569 300.9324] -/Subtype /Link -/A << /S /GoTo /D (a00152_g54b27e45df15e10a0eb1a3e3a91417d2) >> ->> endobj -4861 0 obj << -/D [4859 0 R /XYZ 90 757.9346 null] ->> endobj -1116 0 obj << -/D [4859 0 R /XYZ 90 739.9346 null] ->> endobj -390 0 obj << -/D [4859 0 R /XYZ 90 739.9346 null] ->> endobj -4862 0 obj << -/D [4859 0 R /XYZ 90 716.7484 null] ->> endobj -4865 0 obj << -/D [4859 0 R /XYZ 90 534.1992 null] ->> endobj -4873 0 obj << -/D [4859 0 R /XYZ 90 425.5413 null] ->> endobj -4858 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F14 636 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4881 0 obj << -/Length 1913 -/Filter /FlateDecode ->> -stream -xڭZnF}W͋KPMk'un(`$"$9ԐCh`ZxxB1c%2b3Tgp|~flT A ϗ&ts o7/u^-N|{̎n;05״*$G>ԽaČ/#b oF2a=z;S8uq#7]Uixr*]z7ȇ;.#fb.haJRAsOʍao/1zyA>qA\WC~5f ט$'F%\sKUucZ# Hёl 2>V[GsEɯխ2`/t]¬[0j&a ڇCǬ`VmByc;t(sOWɝwgFKySP+5jVj|FM$>9ejrqtycM7Z{HUqF;> endobj -4884 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 638.7618 274.5352 659.9632] -/Subtype/Link/A<> ->> endobj -4885 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 609.4075 197.2667 620.3114] -/Subtype /Link -/A << /S /GoTo /D (a00206) >> ->> endobj -4887 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [138.5376 534.931 188.6792 545.8349] -/Subtype /Link -/A << /S /GoTo /D (a00090) >> ->> endobj -4889 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 453.1522 237.3867 463.0799] -/Subtype /Link -/A << /S /GoTo /D (a00152_g3e1562e8a6de32268e5df92a52152f91) >> ->> endobj -4890 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 440.2007 226.8662 450.1284] -/Subtype /Link -/A << /S /GoTo /D (a00152_g03d140db75de3d3cdfbbab1c4fed8d8d) >> ->> endobj -4891 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 427.2493 231.8475 437.177] -/Subtype /Link -/A << /S /GoTo /D (a00152_gbb558f3a9b1ec015e83c314aba694e35) >> ->> endobj -4892 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 413.3216 198.642 424.2256] -/Subtype /Link -/A << /S /GoTo /D (a00152_g737337d6a51e31b236c8233d024138a8) >> ->> endobj -4893 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 400.3702 206.3828 411.2741] -/Subtype /Link -/A << /S /GoTo /D (a00144_g30e827f33eacff55ecb4d8fb5a11d5d1) >> ->> endobj -4895 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 317.6152 184.6146 328.5191] -/Subtype /Link -/A << /S /GoTo /D (a00152_g2d9d28afa353f662b9bb5234fc419f72) >> ->> endobj -4896 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 278.7609 191.7978 289.6648] -/Subtype /Link -/A << /S /GoTo /D (a00152_g902c4a360134096224bc2655f623aa5f) >> ->> endobj -4897 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 239.9066 184.0569 250.8105] -/Subtype /Link -/A << /S /GoTo /D (a00152_g54b27e45df15e10a0eb1a3e3a91417d2) >> ->> endobj -4898 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 201.0523 192.3555 211.9562] -/Subtype /Link -/A << /S /GoTo /D (a00152_g058a8e6025f67b021862281f1911fcef) >> ->> endobj -4900 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [113.9104 118.2972 168.4754 129.2012] -/Subtype /Link -/A << /S /GoTo /D (a00089) >> ->> endobj -4901 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.9735 118.2972 218.5572 129.2012] -/Subtype /Link -/A << /S /GoTo /D (a00152_g499bb98a0b4ae9a98553ede81317606d) >> ->> endobj -4882 0 obj << -/D [4880 0 R /XYZ 90 757.9346 null] ->> endobj -1117 0 obj << -/D [4880 0 R /XYZ 90 739.9346 null] ->> endobj -394 0 obj << -/D [4880 0 R /XYZ 90 739.9346 null] ->> endobj -4883 0 obj << -/D [4880 0 R /XYZ 90 716.7484 null] ->> endobj -4886 0 obj << -/D [4880 0 R /XYZ 90 553.8809 null] ->> endobj -4888 0 obj << -/D [4880 0 R /XYZ 90 471.1259 null] ->> endobj -4894 0 obj << -/D [4880 0 R /XYZ 90 336.5651 null] ->> endobj -4899 0 obj << -/D [4880 0 R /XYZ 90 137.2472 null] ->> endobj -4879 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4905 0 obj << -/Length 2075 -/Filter /FlateDecode ->> -stream -xڭYm6_a*5wJAq6Ikz hBkӻjlɕlP$eYrzA1E g)2#kKzhƱDW Q@^06=M|$OTqdGeE鬑mt֚NȮ >qlcv| L瓳uu0) SN2`1dLVMSvm!Aa_nz<хIҢr*&) Nս ";g >].H0Ǥ| bk6l̓5 أZH!I91&SZT$ BD[Wm/ksv׋ EE7x)=m6r-a/t;n`9$ fUY3IBD5] ,Yۘe C(' -0XǮ qJۑgR/+lߣl T>L\M#&'ǚkdr=caWSv]<=/UçsӾsу?`ں29+9;8eZ1)m|h\q8_7* EJOzD~T++EXKMم -9R~D*1~>{)7zzm~wK% -ޛp< Ȃ 5"#ÒAFEjp - -Zn}=&Ӟ0<[p*}ٟf}zߙa'I`1[0B)bUq닩nf޼u}9l8ݹЙ{hӛ#R"K#֐N $->SN]B R~hMbDx"ڄ]Oi_@ 7zz=V{Naɉx)!@~nH$25GA8J \&{.wX+Aڅ|gomJG6G&YƑ#@ ,[ߒ&!PM2p v=Zv6~&Lz?bޮ(T1|*U] 9c'Us7S;ܬ՝M!. -C)Ljb@ -G%$H4H -@:ni mn@盫_YM6RHD8j ?(*Gt,@jB7@Z{LG䔵㴍mn.[b}cGp]ua3zu5_ҶNUWVW7gA1 2 휉 #^o=CBmtPk+  +^TCQk -PQbnw'A+p{G>>Nջֈ@endstream -endobj -4904 0 obj << -/Type /Page -/Contents 4905 0 R -/Resources 4903 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4918 0 R -/Annots [ 4908 0 R 4909 0 R 4911 0 R 4912 0 R 4913 0 R 4915 0 R 4916 0 R 4917 0 R ] ->> endobj -4908 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 630.6989 274.5352 651.9003] -/Subtype/Link/A<> ->> endobj -4909 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 556.0563 192.2954 566.9602] -/Subtype /Link -/A << /S /GoTo /D (a00207) >> ->> endobj -4911 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 392.5288 225.9098 402.4565] -/Subtype /Link -/A << /S /GoTo /D (a00153_g51195ea7cd5aa387a87f9d3b23905b62) >> ->> endobj -4912 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 348.6697 246.7912 358.5974] -/Subtype /Link -/A << /S /GoTo /D (a00153_g9069474ea570fd78c481aa164317dbaf) >> ->> endobj -4913 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 304.8107 245.6755 314.7384] -/Subtype /Link -/A << /S /GoTo /D (a00153_ge0f8cbeca9731af2171ffd37e79de893) >> ->> endobj -4915 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 210.2945 187.0159 220.2222] -/Subtype /Link -/A << /S /GoTo /D (a00153_gb61381673de27f31848c5396bf0b338e) >> ->> endobj -4916 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 166.4355 233.6306 176.3632] -/Subtype /Link -/A << /S /GoTo /D (a00153_gf963fdea2b75d27ef31e92d1d01359ee) >> ->> endobj -4917 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 122.5765 248.0566 132.5041] -/Subtype /Link -/A << /S /GoTo /D (a00153_gc3882366feda1cb759ccbfe98327a7db) >> ->> endobj -4906 0 obj << -/D [4904 0 R /XYZ 90 757.9346 null] ->> endobj -1118 0 obj << -/D [4904 0 R /XYZ 90 739.9346 null] ->> endobj -398 0 obj << -/D [4904 0 R /XYZ 90 739.9346 null] ->> endobj -4907 0 obj << -/D [4904 0 R /XYZ 90 715.6224 null] ->> endobj -4910 0 obj << -/D [4904 0 R /XYZ 90 491.4899 null] ->> endobj -4914 0 obj << -/D [4904 0 R /XYZ 90 228.4871 null] ->> endobj -4903 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4922 0 obj << -/Length 2097 -/Filter /FlateDecode ->> -stream -xڭs۸Whl%qimsH^. Ej<@rXX$# d( Ҍb}GOpi.s_R=HK*GJ$HPBG/cjʒqy  umJvQM1/ft6^ &1/pJFDk:ZqNO}Xa{GBP= -M}ln~Ř>iǺ9"T { 2q^qWJš-.*Xآ%i,e_&%4!ͥS#w譞է{<P E"A@DXҢH@K%Vj#nJ^ D3n&OտU״|MtWWy\-Cj[@5g3K^g-P{HN]mzJ"\^^H)?mĢ -FZ^[v㼶5FG\DB(gS %VI[98a}[Ƈvײ:F x@ E -o{Р@mJ0}Nl>OZ}-Z~ yݜRyjfçu=Ay7@{E2^gE-zDcĺT`KEF4aUJ*ƉEWH]X-jX7:zĺM_n1x@p,T JH#p -j!D -]U9 FFKݏp#_MM k`_66~-.Np}t? |f? S$|g]?'endstream -endobj -4921 0 obj << -/Type /Page -/Contents 4922 0 R -/Resources 4920 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4918 0 R -/Annots [ 4925 0 R 4926 0 R 4927 0 R 4929 0 R 4930 0 R 4931 0 R 4932 0 R 4933 0 R 4934 0 R 4935 0 R 4936 0 R 4937 0 R 4938 0 R ] ->> endobj -4925 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 701.9494 188.6795 711.877] -/Subtype /Link -/A << /S /GoTo /D (a00153_gdcf372ff9748996f7c05e9822a615384) >> ->> endobj -4926 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 658.7078 254.552 668.6355] -/Subtype /Link -/A << /S /GoTo /D (a00153_g92f3344ec8ca46893163399c89fafed5) >> ->> endobj -4927 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 615.4662 227.424 625.3938] -/Subtype /Link -/A << /S /GoTo /D (a00153_g196379ceb1219a99f4495e41ccc9bbfb) >> ->> endobj -4929 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 522.401 235.8724 532.3287] -/Subtype /Link -/A << /S /GoTo /D (a00153_gac0de06236b02659460445de30776e00) >> ->> endobj -4930 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 479.1594 202.5175 489.0871] -/Subtype /Link -/A << /S /GoTo /D (a00153_gf5fe83be78b78b9e7d9e7f1e34ab1cc5) >> ->> endobj -4931 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 435.9178 233.4713 445.8455] -/Subtype /Link -/A << /S /GoTo /D (a00153_g8f4ebd8ef6c0ea665ed351d87fec09fd) >> ->> endobj -4932 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 392.6762 215.0208 402.6039] -/Subtype /Link -/A << /S /GoTo /D (a00153_g51c1cd531ff0afb81620151f2248cd21) >> ->> endobj -4933 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 349.4346 187.9025 359.3623] -/Subtype /Link -/A << /S /GoTo /D (a00153_g15de27b044603284f68db05a378235a7) >> ->> endobj -4934 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 306.193 211.3245 316.1207] -/Subtype /Link -/A << /S /GoTo /D (a00153_g67cf1e0d2324c93f332c1f020c0fe8b3) >> ->> endobj -4935 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 262.9514 231.2496 272.8791] -/Subtype /Link -/A << /S /GoTo /D (a00153_g24aa5bc36939cc9a0833e1df01478a7e) >> ->> endobj -4936 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 208.1483 211.942 218.6786] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4910467b83a639f06739c82cd362037e) >> ->> endobj -4937 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 165.5093 259.1549 175.437] -/Subtype /Link -/A << /S /GoTo /D (a00153_g5b9dba2123705bce1ce95c3deca0bdad) >> ->> endobj -4938 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 122.2677 272.6941 132.1954] -/Subtype /Link -/A << /S /GoTo /D (a00153_g2bc3b489923793759526a3181eb667fa) >> ->> endobj -4923 0 obj << -/D [4921 0 R /XYZ 90 757.9346 null] ->> endobj -4924 0 obj << -/D [4921 0 R /XYZ 90 719.8332 null] ->> endobj -4928 0 obj << -/D [4921 0 R /XYZ 90 540.2849 null] ->> endobj -4920 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4941 0 obj << -/Length 1952 -/Filter /FlateDecode ->> -stream -xڭZko6_a_lS-dR浉ݶ[:k-ԴA=$ϽL~Xq*R$O˧fDWpUp9~KX"d<l,$ Jxe!Ʀc Fu?)&nRƲ bz~%DcoxF1_#"%?8evt7/47 S?NBځRwyqYeY~ŘE]; v7"|]`&8AeYQL~3oMT;8%I$V.x JiJ|am mpjUq2|0J6 ey03I۠IKIU")b`x߄7|A)8آƨ*gZ_KNV ꮭfdqIaK(K qAcsʋƵ; ݖ?\bG}‚"(Dys `H,:$g Zt{1%xVN$~즙CWJ)K'J&\o*ZC]U烃S$806?'6f)`7.?,+LD6 ĠHG|@$FhtHTwil&0LLH1J 3.rJ&jzj(BoBHJ6!`3"06@g gqz·3Lc׊N(BgwٛH)YdFC{Eʤ1Z}\[Cbi~_0MyܚJQ*$1ZX\-!:P|R4:vR}tGRgxpXHsD`!qnKW~ϭP/lMBRryFΠD,\*m0܈_\o\ʍu*?M\\ɰyl> ~ -LJu2z^,#Aծ9 -QY[m՜s6N\s ŎL?"THr`oBRA`J}LF۹(A2ev!ͤlʧGzt?Q8ѭ)*ٗ lU~wӣ3?}endstream -endobj -4940 0 obj << -/Type /Page -/Contents 4941 0 R -/Resources 4939 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4918 0 R -/Annots [ 4944 0 R 4945 0 R 4947 0 R 4948 0 R 4949 0 R 4950 0 R 4951 0 R 4952 0 R 4954 0 R 4956 0 R 4957 0 R ] ->> endobj -4944 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 705.1301 233.1426 715.0578] -/Subtype /Link -/A << /S /GoTo /D (a00153_gb1455b27c06532a399cf06d2c1d6d08d) >> ->> endobj -4945 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 666.2758 236.4303 676.2035] -/Subtype /Link -/A << /S /GoTo /D (a00153_g3090117ef3ff5775b77cb1960e442d07) >> ->> endobj -4947 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 583.5208 209.0629 593.4485] -/Subtype /Link -/A << /S /GoTo /D (a00153_g3589822ecb9d9c4145209756396b8a6b) >> ->> endobj -4948 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 544.6665 222.0741 554.5942] -/Subtype /Link -/A << /S /GoTo /D (a00153_g5726142fec34f35fb9ea19e5a45975c6) >> ->> endobj -4949 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 505.8122 214.124 515.7399] -/Subtype /Link -/A << /S /GoTo /D (a00153_g21664b7441cfa37d280228d23316d609) >> ->> endobj -4950 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 466.9579 228.3406 476.8856] -/Subtype /Link -/A << /S /GoTo /D (a00153_g156dd2891a57035e4afdc4c2bc0b0ebf) >> ->> endobj -4951 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 428.1036 212.4703 438.0313] -/Subtype /Link -/A << /S /GoTo /D (a00153_ge6f4a2453dbd8bc60e6a82774552366a) >> ->> endobj -4952 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [133.9153 388.2731 166.3534 399.177] -/Subtype /Link -/A << /S /GoTo /D (a00153_gb58e1ceb7cb73ca2bcd73146b6c1b4e7) >> ->> endobj -4954 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 255.3053 233.5112 265.233] -/Subtype /Link -/A << /S /GoTo /D (a00153_g285a80366aed9428f64282b8d13c918b) >> ->> endobj -4956 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 172.5503 245.6657 182.478] -/Subtype /Link -/A << /S /GoTo /D (a00153_gb6e04358481bd2057524fb874cfa472b) >> ->> endobj -4957 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 159.5989 229.0679 169.5265] -/Subtype /Link -/A << /S /GoTo /D (a00153_g6836f92f3692f3a4429eb599db40cbae) >> ->> endobj -4942 0 obj << -/D [4940 0 R /XYZ 90 757.9346 null] ->> endobj -4943 0 obj << -/D [4940 0 R /XYZ 90 720.8203 null] ->> endobj -4946 0 obj << -/D [4940 0 R /XYZ 90 599.211 null] ->> endobj -4953 0 obj << -/D [4940 0 R /XYZ 90 322.1845 null] ->> endobj -4955 0 obj << -/D [4940 0 R /XYZ 90 190.524 null] ->> endobj -4939 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F50 1172 0 R /F14 636 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4960 0 obj << -/Length 2082 -/Filter /FlateDecode ->> -stream -xڭ[o)~0ˋx[ElwzN[-:ˮ%~3DE76hRb#CKY )OOnt9Cb8]A:-) r<"sTgUdaiTř &_90iŇt/σ+?ʼnq[GP< -EOxKvf2['1#l76ZD1Q(Ew4wȮqNիwDJQy(m8bN0~f]yEFKXAU0Om{CqC0{si&u.-J#`%+䎍l޾k&"3xe&%Woyy*K> 9-LHjAQ8_}GHi)ZRӟl{ElQl 4(ZhJVYu7fpR8idJWrTr RQ@eޜ>&據}O﷽ivmqny2qQ=. 8=Q!UȖK=QYI}Diֶ/4W%QOD_cmh͞)1DuPqϏElnYl9&u>Iu,`eFnrzQ|vB'PU2J۰<vfx>źeqME x4]Fi#ܖ -qbC{M LB Kg՘8Lʂ>?;(-y/ٲuf$nO1r!S B8Qh(tǭ(=FC(tPnzvus};Ћ=$R=i1I#I -aLHfYS z9dh$~&a@ >&ɚC0~n &2gaY$V~ԱYkrs[T跨q:Hf~k]$V$@b#!$et6H5GS^ty%(G^ -P|P%1]P -qweWvYLZedr^DHɷoFP[Uf~j]xVxv"wEZa/k'bXeIݹyz$`B~Iep % ;EP(5Vs XO} ]r!vYMM{Y=~2=qɁ.h䠇‡53ZZ"εv##4^ ,ŤwbÐJ"{._fLKH  dʴQм# | hfrd> /eh -Ÿ1բ˗yyJe5/Sendstream -endobj -4959 0 obj << -/Type /Page -/Contents 4960 0 R -/Resources 4958 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4918 0 R -/Annots [ 4963 0 R 4964 0 R 4966 0 R 4967 0 R 4968 0 R 4969 0 R 4970 0 R 4971 0 R 4972 0 R 4973 0 R 4974 0 R 4975 0 R 4976 0 R ] ->> endobj -4963 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[0 1 1] -/Rect [176.9013 641.6664 250.6249 662.8678] -/Subtype/Link/A<> ->> endobj -4964 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.3666 617.2739 200.5842 628.1778] -/Subtype /Link -/A << /S /GoTo /D (a00208) >> ->> endobj -4966 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 491.778 298.8158 501.7057] -/Subtype /Link -/A << /S /GoTo /D (a00153_g3f6f1f6f98431f2d33ed30a30d2ccc35) >> ->> endobj -4967 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 454.9084 293.2467 464.8361] -/Subtype /Link -/A << /S /GoTo /D (a00153_g974c9b4bbe6b07cc1d64ac4fad278030) >> ->> endobj -4968 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 418.0389 263.8671 427.9666] -/Subtype /Link -/A << /S /GoTo /D (a00153_gcacc406c3bf7d0e00412e4c946252739) >> ->> endobj -4969 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 381.1693 265.0627 391.097] -/Subtype /Link -/A << /S /GoTo /D (a00153_gca1240bba5dd57f8c7c27123c84a1f6d) >> ->> endobj -4970 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 344.2997 245.6755 354.2274] -/Subtype /Link -/A << /S /GoTo /D (a00153_g3001114ddadc1f2ada5cc9a780e866fc) >> ->> endobj -4971 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 307.4302 220.231 317.3579] -/Subtype /Link -/A << /S /GoTo /D (a00153_g763f12007aad8cc0e483bf50f8a8d9b4) >> ->> endobj -4972 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 270.5606 286.1035 280.4883] -/Subtype /Link -/A << /S /GoTo /D (a00153_g9dd44616d41cef74d3beb51d8be5ecec) >> ->> endobj -4973 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.7309 233.6911 253.6255 243.6187] -/Subtype /Link -/A << /S /GoTo /D (a00153_g529648ad3b0b327a43689b0f1779ff55) >> ->> endobj -4974 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [177.0032 195.8452 196.7092 206.7492] -/Subtype /Link -/A << /S /GoTo /D (a00153_g4caecabca98b43919dd11be1c0d4cd8e) >> ->> endobj -4975 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.9845 158.9757 206.6718 169.8796] -/Subtype /Link -/A << /S /GoTo /D (a00153_g77570ac4fcab86864fa1916e55676da2) >> ->> endobj -4976 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [207.1599 122.1061 252.3298 133.01] -/Subtype /Link -/A << /S /GoTo /D (a00153_g727459e5c4f777543c81ffffa3df3f0c) >> ->> endobj -4961 0 obj << -/D [4959 0 R /XYZ 90 757.9346 null] ->> endobj -1119 0 obj << -/D [4959 0 R /XYZ 90 739.9346 null] ->> endobj -402 0 obj << -/D [4959 0 R /XYZ 90 739.9346 null] ->> endobj -4962 0 obj << -/D [4959 0 R /XYZ 90 716.7484 null] ->> endobj -4965 0 obj << -/D [4959 0 R /XYZ 90 542.7325 null] ->> endobj -4958 0 obj << -/Font << /F29 499 0 R /F23 482 0 R /F11 705 0 R /F26 485 0 R /F50 1172 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4980 0 obj << -/Length 1572 -/Filter /FlateDecode ->> -stream -xڽX}o8"&m;%@t:BƧr@UwY۷?mPHG8Zؿj# xO`9]A_xBӲ(ߖ"HѱĻ@9U.7WeS4i07#Q?$27B)}ND%Y,p_VoJn&!*ͻ{Qqս{c#Z4?uciȠ9f3czZ^'rDF> -!;Q[`1G&9.bU[QFCM8QQO \*3))ϕ]23{5Nq!9A/V.YxIk@O!<) %K5)>6cwo4pHR5crg@KF^cE>7Fq+IdX6$|,?Fr>.?R%!>6:qȐ``ClGkh2vFτU&r. -ʢ~ee9IK$ XFQƽ]˛Cawg8z]:-)Mɯ7g,׃ʣ]â M8YyC7pw;֛aQ|.=v7dL0Sǰ<!cb.VSh]>NΦA:PR*3{s' \@ᄀ7A ǃjaYb*W{€7`3 VjfZկ;7Ÿ IW;zI+iL"Oo4ޝ!R5(&'P/H^Oe-J=ˋ6 C"Ïmpܶϛ=q7mzDQ=[%dUbWt,# 5J" |H&,u -"in=Yg3|otU7 羏Ӛendstream -endobj -4979 0 obj << -/Type /Page -/Contents 4980 0 R -/Resources 4978 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4918 0 R ->> endobj -4981 0 obj << -/D [4979 0 R /XYZ 90 757.9346 null] ->> endobj -406 0 obj << -/D [4979 0 R /XYZ 90 739.9346 null] ->> endobj -1237 0 obj << -/D [4979 0 R /XYZ 90 549.2183 null] ->> endobj -410 0 obj << -/D [4979 0 R /XYZ 90 549.2183 null] ->> endobj -4978 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4984 0 obj << -/Length 1278 -/Filter /FlateDecode ->> -stream -xڽX[o*7~W {|YN6G:ъBPå\D^ -a5j؞{C{ -y _р{iyc=}Un˻ Q%Q'܋F)>#xѰWJD z[ ,>jfd>+=D70jv1ʱG6|$c7-fBpű r{zF 9HR#Ti&Q% -jyY;a5 kvϴ0IaV& ^nkKAlV9"I؎4,FNh8edS2ɰ<$c<^%1za%@`yzuCS~aRq2lz;Mĸv]mǍuC_fim0F3- '#eUbcR\ IV/Z_tZZҍ$zֶ *U.4ޝ>4 C2_Q@*O:0;y(6w0 !vb R*S3E(( %hd5oa'n:["T!@`$ρջՖ6!ːy,cYi@ˏZ (T(2/1*կ:Pd^64++Ph%ՎfܽiV_6g#yAH~캤-Pqʎ.+ZyàK0i~QQ'`L%5Щ^0(K~C`uS$(g96A`y]mKz/e0ْlIB[O7ǓA<$rz0EJ]Nװu#;i;@?+/$|R I3Fޤܚ[R4b%NhDPR.Iq%,=ݽ;6򯈡-Fן&MVh^Sj b|'c?EwX^@ 4UB>F Q=G2Yom'vP_i<**E)+*[ک*ĿeJ&x2|UWK] - )!y}R_CۻX*਒}L齳h]dW`y`|cB=8'}ZSN}%48h)ëd,dh_3{7%̊7/~!IK7Ra߾~{ɞ_yHendstream -endobj -4983 0 obj << -/Type /Page -/Contents 4984 0 R -/Resources 4982 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4918 0 R ->> endobj -4985 0 obj << -/D [4983 0 R /XYZ 90 757.9346 null] ->> endobj -4982 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4988 0 obj << -/Length 1353 -/Filter /FlateDecode ->> -stream -xn6_!3;n⮍X0dʲ#,\K "e2A;ύ4G`HBZЛm߮$s/8 ## q3x4?o< -}W45R4O+y޴ g_jBެE1)'wa(\0D\pOJ}ROumCx8]|i͇*4Ur,61:7|Qlb$k#%? WYn`@8cdoTenmүČJY>ʓȌ0/pK{KaqC`4S,hdpER>2L1TWA87g%1 -ϭl>Aex}'+kZP79pML0>gA+0g`T}K`5Q7 @J+7>ồM v_LDv.{#wbg!M՗u-A]6bt(N1ɁIg!XXY *#}0JW'%[ܦ*̍B|&>q9N\b}dqn\t(lEz(Uy`kA%T-XYh l\gd>'frga/.CfqjF;s"S S2qB*uYIfi|U6%d -OQbFV^8N(MaZԑdCK!J]u lgGë҇w7O]j6V.Zqm8]*FxF1.*aZAv:ղ"(no8f27ػeRԉu7ccT;:2ֈPzW(^)_[!<^ ҹ+o;_|KL^J=S-71fGL{ ,_G0cendstream -endobj -4987 0 obj << -/Type /Page -/Contents 4988 0 R -/Resources 4986 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4990 0 R ->> endobj -4989 0 obj << -/D [4987 0 R /XYZ 90 757.9346 null] ->> endobj -4986 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4993 0 obj << -/Length 1285 -/Filter /FlateDecode ->> -stream -xX[o6~S`oʻt.n4vY 6lUdCHeyÀ~<$tCǧ1a(^6wve[vyq{! J zA 7]@E>Aw~r)tt%Dl4OĴx6O;BF1J-pixyAΑtUet>,r> -@@$}=@a.8*=^١ P:C(p\(]Eck4+a -% qwrkv?]^?\Íz9lѐ2& RPaRU ncu>7ZoobsݟFY.B᫞( C -H8<*]4\('eĺƨ/*xaE*xeE{|'%1.墵,w(G?A)1đ̓ylcF(ŒËy8~{goZʍFHFsyxSQ$QF E6qICx+a - 豸"fBd`p+vZAM 4W^v8~a3#Ը@] `3v^}Po-h -C“#q }V3Ó3[ )*,DoNZˍbMmWR7komaޮ.]yuQ*U!nNzF;xGRI:\-0εߕB a+W|W^ԅȀ}]ێWu*G̰HYO [w1+=i,J%hDMv^µ*c]յ%#Q_̌p97!f_KҭRebmͮ1!Ʊ',=H|s!pe{ؕoe מ}9D|," -1֏Uݹ4Cy -ӥY+Ϙ̧{v-' *endstream -endobj -4992 0 obj << -/Type /Page -/Contents 4993 0 R -/Resources 4991 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4990 0 R ->> endobj -4994 0 obj << -/D [4992 0 R /XYZ 90 757.9346 null] ->> endobj -4991 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4997 0 obj << -/Length 1339 -/Filter /FlateDecode ->> -stream -xXmSF_Sr/| `Pp(Hr;~9xL2=ju(/ - @ʃ nqY t^a(8B0p0/@;]v<\B `GOKƞ7,7R8PLssc >w">x`fD?ظ';.pE&@!H.2JD~.!q07}?$&h^K+i (̹$Ky \Vt^?@QtXƵ~'yCYEwHZ zq+{°0k)8]&J]KC I,"΢kž}wr?9IgMpn5ޟw3,w-&&-,54$YHHtpq]YGA1~u2进%C&0qTDIv7&/$uzsEΤDjԽe(ux,.ﹰ>8}t;onԩ`³Awϟ8n"ݻM"8YHWӳ@r8tH%s/.!N&%A1xUMVZh,Ȧ-ۍ`ML86*D|༉6p"̆ha{fr#Vd+qKjb 4by +#7b#fDXbGw>KhظNnƧuUF(q_1,\!M>#E+Ezْ+/L`>݉6r.OޫUr߻/,ˆ;}i1F>  -E4&#]UlA_vLY_9#JRu3ӺFp7;mOnp] Xl{l<*i?>ÍN)o< =endstream -endobj -4996 0 obj << -/Type /Page -/Contents 4997 0 R -/Resources 4995 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4990 0 R ->> endobj -4998 0 obj << -/D [4996 0 R /XYZ 90 757.9346 null] ->> endobj -4995 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5001 0 obj << -/Length 970 -/Filter /FlateDecode ->> -stream -xW]o6}ׯ^{X~K갇.ZZ! bjXVb)Jr {h$oȆl.sO(k ڟ{ 5fGڝ?Zo~cnw5Ga0av Gd. z<"zrYVk]Ƿ 1F8Rqﭛ[h'=f? (&$o{mLc6mBnz&P2Az);jSe"^WVx,丱e".E+s(x\fP.Cj -\x0}86v'>L D\aσuFLrN9htq qo|d` jّ> -L =vxݳs7yU| ޖҗML=Y-e::0E2d{AҼASYK!Xсm1Vi -5jlN;7WqHYJ\4U=qe h2wS#(AE岓Y%!xODVB~CWI⡾ml/>ϣEp1Wסt<iwʹ&NKS'OxfI0 _@ IO"tZ;BT*DaWXYQ9Ţ4T-U'<JRB7NwS(w'S -VL[sN2`O/biRʡ{xM=jt՟pF::JWsY۲z=:(Tmv5 S@.f)IE.26pŕBÝ/?~+E8K,O mm|.D>k%T"[y3P.\U-n:2zt7l׶k{Y> endobj -5002 0 obj << -/D [5000 0 R /XYZ 90 757.9346 null] ->> endobj -4999 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5005 0 obj << -/Length 2011 -/Filter /FlateDecode ->> -stream -xڽYms_i;͝ RI̎c7lw\r¬ .ङ; a ۙfz9Gzst$<?T$Q?|7@GTrPj&Cy讋dI|ql%C|i(*K23L9ϧ * _p瀦v BV6gk5NQ(H@`"[ %1?|P*q DEAYاZ!I}⣖CykY^6% 3b896u{9z2;l,C.Àֲ'/%Do6K=U?07\ۢ{`+mz4m{݁~P(4yٕ]ҡkRGC,96$7!E\Ҍ.bS/ܢ,5A堄:b5@Ux)cSƱqH{[d M I -rO!Eط.V Iq=6)k8lRGQ#7TuWt[K='0`~@U ( -𴨙 1%S -6z\;FxhcLhf*!?O*_X$O'Q-A"eTu8Pz;r_wm! {vu_*6s\]ψ1ut6?tR{g62&.e̵L21˱5!u,9)L[˥`nZo( ִ Я޷m5k˩NK{1wNp\Ec1uk`afjUי\ʤNү؀l5lpiU ^k60 }~1]bE,{> 74KF: -mV,^  cڟ-t>s0IЎuWoK*֫c5sM^.\k>+.44&;:;n-jx%&<ƋuOML,FwYmUX:x 6Ro6mԠxQh#1fLsfVlU^>oU±D7YM;1=?Չln3=b{Iq[ b -"O@4b|+}ɓ9MTȩݠ%^"> endobj -5006 0 obj << -/D [5004 0 R /XYZ 90 757.9346 null] ->> endobj -2465 0 obj << -/D [5004 0 R /XYZ 90 739.9346 null] ->> endobj -414 0 obj << -/D [5004 0 R /XYZ 90 739.9346 null] ->> endobj -5003 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5009 0 obj << -/Length 369 -/Filter /FlateDecode ->> -stream -xڥRKk1Wz-l$Ǫ}Md-Jf2/C ukr W! Mg!]wO^zXFe IIB`Ҍ8HO/h~fۏM~~Vi1ܹ%f5cSL X>;8{[aHxwbtgQw 2Di@ -8sM53 +$7n^FYR 37շM+E,AX΍r -lݑ-kߍbAM@LP١ZDi=4hc 7Ip)dk󻪮WKcKnendstream -endobj -5008 0 obj << -/Type /Page -/Contents 5009 0 R -/Resources 5007 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 4990 0 R ->> endobj -5010 0 obj << -/D [5008 0 R /XYZ 90 757.9346 null] ->> endobj -5007 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5013 0 obj << -/Length 1250 -/Filter /FlateDecode ->> -stream -xX[o6~:׈]RXK< Y` %Mr>Rɥ&6A<;(@cl9Υ~7@fڕn[x-sg<-pFGp']qdY^ ̤ bFxՀb#t" x |\(PLN28'j[l {p9 k FH>A ;FmKkpܑp=lF.~YREBTqOi O|=*Ī:+>g®I#*RvnHxsV? TUYTRE,6"GԯXOQi K[20BukAy &!\6I]_0pȗѺǀq;!#.2 (6*md6(/K5bjeC?%AC߃{i%vʮ^Mf\]wG^ĉPꨦU/,<jWؘB6D[\u, ܎9dv_)߯ E+5vt292prtL0/K &XŁ87"RӼں#i]BJz47eab ٕyW鬌W,bU%YFa6C]]A@$yjWJMQͪ!݀i2doc2ɦa"-7;M̚4Jt -1b(H=^]]XLJ籤!DvdN`7'`+(4H?&2}@E2vvЋnK1~UPM22zd hD}7y\rPM &mJ&/#F}sF _I7d}lF"r }oDfy$X"~>F|-6ߑ&FAim 7/@Գ^AI$>sGVRi݁Ixo ;"n%T{p> endobj -5014 0 obj << -/D [5012 0 R /XYZ 90 757.9346 null] ->> endobj -1366 0 obj << -/D [5012 0 R /XYZ 90 739.9346 null] ->> endobj -418 0 obj << -/D [5012 0 R /XYZ 90 739.9346 null] ->> endobj -5011 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5018 0 obj << -/Length 790 -/Filter /FlateDecode ->> -stream -xڭVmk0_ad̪t^`[ O] Nf9v2w.I.tG:1Kg 7|1lnx?>B$ Wb8O\I9k:+;?ZvP0cwuM( c;PAMrQe}q(|\u+m|I2f(7&T$RIL4HCp4[^p~>%[mdZ9oYvrWzN;ӤN:I qo{ܵ-:+,ʦ#7 ]ߕ;7y9MrK*KμIsW}g.]N:y켵%r`BO#"Vm`ܒ1zo9Y4Ϟ XR-'Ajr$.T` gB>f4 "h!ss"(-hry2j"ؗ|֓}F9Ŷg]b$ ->(+;y>t/ a{O~@endstream -endobj -5017 0 obj << -/Type /Page -/Contents 5018 0 R -/Resources 5016 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5015 0 R ->> endobj -5019 0 obj << -/D [5017 0 R /XYZ 90 757.9346 null] ->> endobj -5016 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5022 0 obj << -/Length 1194 -/Filter /FlateDecode ->> -stream -xX[o6~:`׈%)mK"YfHbѱ0Ere)I1]ɡKux;WR$HOg#0I(q?h3eG|=Zx}wt4D^R5WUO|˹heg^&PAxb[r -t?u+ %Ao>zNC$8)ֆQB\ JCyxv$ߘ*tK<[}k:HJg>2 -d&aeew#/SLng@vΫ,M9 cTcq(mϪzׯ\vt 5{U,JHMi^’F,}76Ȱ=pHGDzEIOޱEjrRߤl[=0RƫE^(NݚTL*-/LlE1l W[ѡete{$P[%09ge1=.;oYW,<ժ-Ufi:-,>DT[54zYW3PR\s:冝:K ۿL<=+!~|rR8EaDp9q%!dh@>8q"nҝ)1ѷ!?ZŪX6X;mT˼V\-@s[wZEg^ ϶ysx<ՅՉ[}ZgWmY8l8׸I&W+ ˘~3X2, ׷Ds:4B Kfnd 4`2M&< 7>a+&{j;B Z|ShqZ= Z;$HCɝn^}E \rk'c+oQ/Z5m]QXxGD&lDa5 `1%/JݓXYPH׍8J܋ a|JU]1b:O9>na`>?SgF:'cF@xsƍ1]> endobj -5023 0 obj << -/D [5021 0 R /XYZ 90 757.9346 null] ->> endobj -1367 0 obj << -/D [5021 0 R /XYZ 90 739.9346 null] ->> endobj -422 0 obj << -/D [5021 0 R /XYZ 90 739.9346 null] ->> endobj -5020 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5026 0 obj << -/Length 1686 -/Filter /FlateDecode ->> -stream -xY[o6~02`K%)ht]nP{h@X,y͊")dGI<2/;ύ"B>C4\MRftL϶8< S |Q(rD_ ] AX0 x`y][o{e`LXd‹NS@;8ഷ`FIֺM84navt0 ׂu[A+k|  ҳ%8T{w<q][#z?bw(qlNZUESJɬɍIIM ;"V(ni:[ bh $Uk(Sjza5k_kLQW avS(%ecYލ̞_}TkbS"\g >:4P_ˆ) lY)[#="hg}].kuBg/_|NG ̳0]w;Hhg6[֭Esj=< ㋰N~| -y%OA9i.SgdaX{b/[%hX -R٩-EL/y3% -JJ5/Lʑ 0 -jtWi _6AYءԜr^AZl&2JM> endobj -5027 0 obj << -/D [5025 0 R /XYZ 90 757.9346 null] ->> endobj -1566 0 obj << -/D [5025 0 R /XYZ 90 739.9346 null] ->> endobj -426 0 obj << -/D [5025 0 R /XYZ 90 739.9346 null] ->> endobj -5024 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5030 0 obj << -/Length 1036 -/Filter /FlateDecode ->> -stream -xڽWmo6_!Cc;C۸Y-ik"˵0YrR7)*vW,!|9xDr 8qlF$ė#dԶ/W[p5_)[1tbc -0S{7Apfkˁ t9C.6iQ4y#=jslmF&G<8Z&9FYBBTyv1رl$O~R9sՐpb3,-< -LLm~I~EyaAQf!PlLP=Q߹A#qJ ͛ȓLW e]iA.@i~+ F@|3}zqus5,JeqWVaV Tm+?raO q~`Z%qW&'«(xoܙJá*@E57r_D_k?Ya>MZGs1HMxiF7}>=~ , IErh*9&f-)h nO3mu*aqb('-n%]TQb}xI睢tMW9ᗅ$1#: -Sʢ;9 <MN~UjR+:U$6"+~fz-a>[}Po Ks&=9!MN`84v~;S< -3@vg#Ī`XK\ -!}BBMo.nWpuvՉ[n'y4L>v )A b0Ħ$voiH~+ KcQX V(}B$(SN4jFr 1J =1ܼ2Q9W] I2LLTI>^'Ky§> endobj -5031 0 obj << -/D [5029 0 R /XYZ 90 757.9346 null] ->> endobj -5028 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5034 0 obj << -/Length 1357 -/Filter /FlateDecode ->> -stream -xڽX[o6~Euٚ"ѱP[ReiiPIG8NÏz{ kWRw^fQiIN>ލ^Ͷ 0F8~]|^A@kՁ#FFnFC @`!VAKZe X`wB0=R !@@".ɔ+,ǵ-)R.SYq35 y f K53`"5q]Ykao L@ -i( bmXݣ_c~]e1>OqGw #T H]lعI2};Ҍ*&\'9Xڤ`VFafeGx(XB9#J'gg.m!,.]d<]fpŽquP"Dt.⮨'iR +13ᮖgl~6#?}!|jgg^Św=DW/UG]Pjod* 7wƕO]b@ !׭qSa}W¯7Wr}~sD?Tendstream -endobj -5033 0 obj << -/Type /Page -/Contents 5034 0 R -/Resources 5032 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5015 0 R ->> endobj -5035 0 obj << -/D [5033 0 R /XYZ 90 757.9346 null] ->> endobj -3302 0 obj << -/D [5033 0 R /XYZ 90 739.9346 null] ->> endobj -430 0 obj << -/D [5033 0 R /XYZ 90 739.9346 null] ->> endobj -5032 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5038 0 obj << -/Length 1998 -/Filter /FlateDecode ->> -stream -xZkoF_aT1aI_U%6r xU[pրeQ|xҫy9,2;9^;?>wFo<Y30cLf سMϼ$}<39z;) -"<kGUH8=vގXX2#sP؍/ئ&&.}UO_~rsYmzNᾊ"fYVcEͫ٫Fx.ǗGڮ4yص ggAyayx -mJ7s/\E޿sxv -ndyMD| 9A9w5QTW`HPnt]Q & :Qړx#҆&WmҧA8(;r֏ܹ>y(k!I^] ֭Fs7(NTNlqmTڹb)-0bԖnE~--0+Kӗcܭ~O( ;a-ԗ-GȮJ/LbN~Uj/-CmZ6^ zd~~Z7 F]zfC3jU+͐mjh}lI!~^iY^H\՝0g` 9 )Y };$Hp8H*ޓv>)5=I;ͽ^1Q1Bu#^t/^3' nDD5oD|X[?tvҿl96?:$c я!X]H/.bJ ׿;YK?]^vqU=GYF '{+̖0 Ł(/Pfhw9>=?B # Jendstream -endobj -5037 0 obj << -/Type /Page -/Contents 5038 0 R -/Resources 5036 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5040 0 R ->> endobj -5039 0 obj << -/D [5037 0 R /XYZ 90 757.9346 null] ->> endobj -1567 0 obj << -/D [5037 0 R /XYZ 90 739.9346 null] ->> endobj -434 0 obj << -/D [5037 0 R /XYZ 90 739.9346 null] ->> endobj -5036 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5043 0 obj << -/Length 1362 -/Filter /FlateDecode ->> -stream -xڵXo6B!Rd7 7Kș݀0TZ#ka(J& -0;% |nY2xMTxEA)$>1 pOWf AwQYi;9]ϷʨLYMg0y8 ƙ չ؋o:1%L0"JQ/5Ugݨ~0HAᙕFAj ~Bt{l~*, ; r0m=z9k5`(/k[> -$%κA\6:@;Xgqd|Qs8E!.)ZQ!v1HrBDݕ(DdIG[g#ORY\&Kg4Kmj'6s;^;k\.Rgv;b0cղ0,iw,|V=l4c !"&< .ƭ.u:!A(6>m\K;bU it{D-3J!JPʆpn -΄H(]f/g\jݞ_wL$>dxjx:'twD<|;UBZ#IDnVT(tpԟ5"1l@n,|&i,:I(ā.-JJR٨98 -Fg "p>z|#L;LD2)v(xQDYI0ˆms@+?&ŷM@r pC F>!Y՗H`U']AiSZQPѲl蚨Ș%~!/&** -\]09r+~Clf&83ŏ(\|4vhZlNǃԁXu0_IUq - ! T̮PKbOJPPzjjpZIJDl jH]S}1m=ble?:5;D}_S|̯)+_٫aj9og~(@x VN&L -_Ǥ54" - >?QO|Rc,?55z dYMpT00O2S—QYr]ؘ.ӋSf& dfJrdĨV]^#J%tnal֙lolݤ~cK^RfRE򺡩&pV=Vbendstream -endobj -5042 0 obj << -/Type /Page -/Contents 5043 0 R -/Resources 5041 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5040 0 R ->> endobj -5044 0 obj << -/D [5042 0 R /XYZ 90 757.9346 null] ->> endobj -5041 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5047 0 obj << -/Length 1592 -/Filter /FlateDecode ->> -stream -xY[o6~ -tX%)^u@zE6ok+XJe9meIoXR8P(L*<-:(Џu0>Oey+Q -'<8$tU(zP7aٍMOn8?(!b\ 7s p\iXı -ڰFJA!V%uXBsh? GQo.iuz\OV,KWLeH(%kC,lr.6EhKtUL.RW_inW)cXJ`Mk"2\E mϏ8ղ0h:kj֨nkXueާͳm*Uo!#uk3I'rLn۹'窩!j(erU&lfә.|Jg$lvFu<7:ݟ;*U봱︡ -DV|K|3 -A0's [StHr[qИc.Uf "*z@ - -TPD8[2wdճcC -Gke5S`_}C9ڷf#K%nT<:Ntk -;\%ˢ +X/cG`Vu:D^No-ӃI3}8f06/#M:UemoR}K(ſcwM̽M@:>L[f*`fR[hu ;6rr9UA=LĶ}FF|K -byJ혚5 /CvMaE*wIځ)> endobj -5048 0 obj << -/D [5046 0 R /XYZ 90 757.9346 null] ->> endobj -5045 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5051 0 obj << -/Length 1707 -/Filter /FlateDecode ->> -stream -xms6{~EЋ%lЕA6ۗ˹H`;-#k;r}\j[*)g=@?h{ w ~A? ?}ޡT Yu[}+ȘV|{iH~VPJdDaXr2L[lzOtNmUS#>Z[7վMZ?uٟ:A.;r+A>޽lFY~UKvc&7m$>C0.y< ahp8<:7-4gIF~_ 3×R~{FimU݃Qie-WWٺ/P0)~D)x\,|War{x\> endobj -5052 0 obj << -/D [5050 0 R /XYZ 90 757.9346 null] ->> endobj -5049 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5055 0 obj << -/Length 1755 -/Filter /FlateDecode ->> -stream -xY[s8~ϯ2B-tdΰ0,0 0c;C%;+ۧelrt.߹H"c d8Rh13h~>"ۃ~os/_+ɴ $pPpQC"2; ?M^},뱔p:z6iW q&^'<#||x1)k>棓џ-QOp s &`FAE0#8 "\.;N#0׿kA -疖<| -T*3ɒ9<<;}훷?;(K|:WYgNz߽z9s pKZ{ :Vf7`3)sQ 7ȳy¶Ue^mJ*3rm0{ìH:I&U68h,Ų=NK`?NbT@%C> -$%0(S`{\qQ@فѬYZÆ VU Ag62N˞4[ ˧Vr֦E}NAY8D$Y6؇;Uޮl8[5`f.JlZU438 `C0sLa$b=ҤE"2,ThThG""@,|5~V"WV}<];m <PD -FFtXm4*knǕh3Me5]2_Q|Eya1'UR,,bShH׃`e5%,U&Յ34ˋE8otb#gUWdQFz&UɹVwzǚ"b]Oz sWmA͇Ft(S$}QgjGY.Y"ͪZry [O d0GJ ;l&nLx"׶rm:1eD_,b9x7צ~"SճK9aܨXEVqV(v`e1oK[TK65G,{mU5̓쬚59 m.0qFeh;kz5WYs[cT:]C^:&ZQ#ui Wy0ӾqCOtfsp^a#ZkC_dh*@n]]Ќͻ!_$㽼0OO6yDq*Y6)fi83o$9m;F_DžG'u)ҥ&ٸ/m)iMInDvHJguM.#ڹ};Oudl5(iu$ (`'h+YuO6Q'Ywa052@w6IUV-s-F}LئlߺͮLnԖŒ&z^uRێ9˜&L1JQʐ"u&1a6sW @}IPv}:E,.`lր.m - ~-G 97xƨ*̙Yfr_ 5!h/ R3;~-OcY@ԂA2ўg ߌ-1덦taxyY˼ -&Sj Ϋ "tRIBݼ.Mpdsb>O+wFyf7// ?X'~@?aަTcu=ف/i~qyugO=Jȡpendstream -endobj -5054 0 obj << -/Type /Page -/Contents 5055 0 R -/Resources 5053 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5040 0 R ->> endobj -5056 0 obj << -/D [5054 0 R /XYZ 90 757.9346 null] ->> endobj -5053 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5059 0 obj << -/Length 1399 -/Filter /FlateDecode ->> -stream -xX[o6~ -lJ%)^۵@zE,kg{h@D-94 Q"%2-n ΍:@CG SgZ@=ywu?p'(xVQ#"g<| Kꌾ_g*<8xP,|p6Q>}@` IL}?,[c'A<#9l"xR͐o\'|QM"`DžRuWK~f8rVWQBMg/HVHqPvE#|,"ԩj`^6 rcɝS`5Kz]%qwUzI{Z) !Нxtdy;#Ңti/:rt:t4:K-/.-㤟sta7ux ߎGgw[P_WiF}- "bPԛVmÚ5o;Ɏ3lڛP֗iPnzXdδ-aI{ {C}PoÈ͕% key%gY_+DAuWlLMw -Gkbd`xcyޚ ՖcU7>c(#ݵn^AO8T;g'Iro襑 aw MLqr\RaNJ$o:xͥP eP8oCSFu)4)DM!-oȵ^t=a3}RIJ0 S&AlV&EN͚ L#Ǝ0/R-Y&{P{I.g)գ=C0J&j}z~rb;nqzp4#kg(vHe1Y`Gܨ2܈ŲS^E#+ɕZ&> endobj -5060 0 obj << -/D [5058 0 R /XYZ 90 757.9346 null] ->> endobj -5057 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5063 0 obj << -/Length 1263 -/Filter /FlateDecode ->> -stream -xXKs6WԄ$&ӴVS{\x4ٜH‡]^i)vst{-ȁ:@@(wft.d2îw~^'ܙ,J v&~E,lrPȸbpRhb#tR$s- ΪG1޸[-G l"6`ܑ=D0,qzh" !z9.Pm9)rO˵eUC2rӕ2f(ZLSRt,zRͥ@syrF.)e' =쑊HǠ1x}\.>"I?B#]F{]|hp86S?zTy3ՙFgKY-F6#huhendstream -endobj -5062 0 obj << -/Type /Page -/Contents 5063 0 R -/Resources 5061 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5065 0 R ->> endobj -5064 0 obj << -/D [5062 0 R /XYZ 90 757.9346 null] ->> endobj -5061 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5068 0 obj << -/Length 2089 -/Filter /FlateDecode ->> -stream -xZmoF_a*5bfHbNq'=K \?߅|Cux_gf@]C]>]l:l7uv=tF8k/$Ĉ⺶gEOqQd/Òl EI0be -L%O珿خ~ bWX) -tʺcu~+!c?. OT, bY"DK,- ~r ۗJ>@&h.g24'a( r?]OfXI[Տ{FkI閬p< TaI1|U~~6lӗlT -8<5ړz7"t=RZy Ly|HUHP]gCJ4cRY_A(rcyv3Yq'F*in"yedEvPr=Q!Lf$ʒ5K(.E/۴pM$<.%4iO«<NF)FOV|Z4i[j-&t]؉(ĭm$(m.Ԓ@uϰ[#.maf̈!JY.m[4N.4{V)ΌXon8gX^J9&mPۘn -9S*zpEpKgZw & Iw B=Q[5#OYcR -ߑ`/o"l7J-`zFa,&L -@ |UH[dwP_,{!OXW:'s#=2ۏNMAjCRH43{dߪOPCߧfY \h|~?b[,h`<;Z٤01ha60}=t5Jk`;[}+|ۓLdiXә95,6><`;jR?h_k XJT/j-P7]pR`ci5zQ~0T#ā1fx ~lPW#ٽ\2<}a 5lݞMDis chdi>Ь(NêpfiPՊ0`'nZc'f5nd`j}m Xߟ&X&I[N骩[% ->YՅfMliI!~^KWTzAE[mvC|ΩoXgQN*Iwy,vוX7}NCa쮚Ӡ))QgVs)뮟n [mtU|W̲>R^窒EZ/KܫW ''{ kbȉ$7 -aa Ln6[Vx}FS+ CQEd"V =[ċ@,F@ -U'3~R"LnM~o%&0I+'0<_vR$I2W3,|.wb8coXlL$W?\s%Fc.F_K܏g_(d.?‡K$^8p G?q΂ĜwY[,H >={@d_&')'endstream -endobj -5067 0 obj << -/Type /Page -/Contents 5068 0 R -/Resources 5066 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5065 0 R ->> endobj -5069 0 obj << -/D [5067 0 R /XYZ 90 757.9346 null] ->> endobj -2466 0 obj << -/D [5067 0 R /XYZ 90 739.9346 null] ->> endobj -438 0 obj << -/D [5067 0 R /XYZ 90 739.9346 null] ->> endobj -5066 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5072 0 obj << -/Length 572 -/Filter /FlateDecode ->> -stream -xڭTKo@WFvf[."F\JeI#:qJw^'ة#R|؝ͬCCbhB22sW6F%R"i]A! %7&0 a UDBzݎD +^2ip1#6$WX7@GlH h-#@03ui_;ꄾ$q'ps}jߗR@guh)2jx^{,J i_d=ϳ$ -ITI`(h,JHG{>|]Q;+H(QkO 9? 2Vؤ/<>9 J%`<)pNi VZBS@wA푮|t5Ƌ<^&w_9P#-?J6^:B1#Mޗi@?jnUqOY%i8|qݗM!QT>%s}_߫B7Awm: -RWXTq:Y9rDa Ux&^̯wa2,Y9 M#&üFcMo[ngiv8J{ۡendstream -endobj -5071 0 obj << -/Type /Page -/Contents 5072 0 R -/Resources 5070 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5065 0 R ->> endobj -5073 0 obj << -/D [5071 0 R /XYZ 90 757.9346 null] ->> endobj -5070 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5076 0 obj << -/Length 2024 -/Filter /FlateDecode ->> -stream -xZ[oH}v+mRńn&%6IN.qj 8i~CDbswe!Pf 12NjC|9{Gέ2#PZl0ph dGPb%h-pQ`o7(LCg / XUL }|] e8y, pe,á?!G+9Pwd k&x@bRNGe٣OSG>BĊ\OG!F%BR x$bdYE|^8 q Mb=v: \/N""@mj]ڨ{/#YVaDO^&q7*[0N[<'s4#q"KbpX􊄓Lf>) qMH((9k_IUƵ=:KZgb{AM2}X̡B_:ptBuQ\VjD-jIJp6磈81,7 .iS ֝㹴U;C?^E:ڨ?r@p IѷgXe*kjgXy%bkEĉ:2l[uÜOu3NWQ40~ۢj.*CJ&8Ee,6) 튑3)b4P|^â4{ &_0!X+$bºU Xi]6Uy谹ii"UeNNehKK7Bt?(?)sO0TdLL0SC[jP&r/Ic'NL,:OJQsoAI\{ ՘\\i]M5/_P -QbXd9SHbi,tC,WXT3'3EV8JhFWlm_s:WYyM5CXԪ/X53`.ԉVԏ*Vbܝf3gMOt՝umƘ%.&=`ˬem E  U`uDT]C=vbg'0;l)5ń:=`U&KsxO5H!AVJuCb. 17*_ތ~:Ku܈ʻ"SOj18Ꮿ_=]\tVdʓ?$?m$Zuuqz:PddXw$+1tyݏ w",-$n#yxtHZ 4viȜUgiF\›d b4e^G 6NA1bR*l\= <ԡΩқ%Ex{ÊؘS(EeH7[q?8c$Q,*PJ-M,]-҇"]ƷO44@$TJTQ!חQ}TJTdYFeDhFV*' P81 <La480s 8s3I"9ypijL6:@wԷKRo.P5QO,mכ EȊ%_7uӱyO׳nMLEY_jIs> endobj -5081 0 obj << -/D [5079 0 R /XYZ 90 757.9346 null] ->> endobj -5078 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5084 0 obj << -/Length 982 -/Filter /FlateDecode ->> -stream -xX[sF~WЗ)djNS9q<VKL]@6E`ǣ{;dCl mN9ev}XvԸSg=K[0ea!@1¶aQ~z^)!˗]e$Me~wfM[0J~?YW^(gD -j )\Lv5)&~Afю V|y2vpt>~;M<ϼg)ئq/c )Ս^jrʟ#\Zq]_~RXA -!X0s1.0kyɶ wH$"j8/&xSt^w6Í2Zj)XE<Η0W^yAhPߢ}t6ja_8 -2=5M>zQ-$:G]c/SH)3v?!-̯ I -D̈7p>TH0P!!Qؐp!i†x|p4XHTQ*R^P6O -ڴiR31Hi[A&%Ǽ3G -~jW!;\\LM -=«iM3GęA _af GOCplIpnқ:#o6LVb 8iLx2g.hJxD|GCg ^Olcfb>}ͿyB{/ wMϋALDb]'<_PdЎh"1@Xn!KJDYoQ"DLkčHWXi ]O]=AHq?\wY] > endobj -5085 0 obj << -/D [5083 0 R /XYZ 90 757.9346 null] ->> endobj -5082 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5088 0 obj << -/Length 1329 -/Filter /FlateDecode ->> -stream -xYmo6_OC<,%0-ۺdmާYvْ+K}HʒJ+~)1I<ݑB? PE5_i:x+cM7gg8 mVDwk@ j2pys=yHLJņ!=Cd`l0 - ރ4?}Mcs<T<[D&)@hKkYt0QQ %0_2N;dV;?D%51L7"Uw;FVJBL&TyG%%EHuxm8lBԦ5!̒"*A.+-Qq;XOByi*7d 2 7lYR (|;QJ,,i=gD`찳!J敃nE7|YYr,2GQF:QwB5:0*3`(ld[=QK f6Uj?n_1{\[$hqu\nAjev6`ɢmm t]|rVom*o,=sd͝c&UP/A+зacҽؙIhϝܳ[~9 -Pٲ}(C| g{D EvI` EyX&R"&; L.!zr}7bv:ҫG}9q]e endstream -endobj -5087 0 obj << -/Type /Page -/Contents 5088 0 R -/Resources 5086 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5090 0 R ->> endobj -5089 0 obj << -/D [5087 0 R /XYZ 90 757.9346 null] ->> endobj -5086 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5093 0 obj << -/Length 1936 -/Filter /FlateDecode ->> -stream -xYmsF_I;ScaWv:Hei;.d1"":Dw>!eQf^n8`Oo9e0IC{] !F78N8q2+gM=C K''m}ҙnQAahv)y r;0wᕱ8|A Ár2P,hOD|H`42QPa,{C Pf9a_ɣ4İd@PHaIGuY  bCrl̰"c|bDaDI@ã#^pitdgf=|lpOMO,P[@{:pdG; 0HS%SA/8)|@AHnyA1?NB?عh@ ٸTʺx҇nl;S]Zy5jC-@84p Pp#TyFl wNKU|oks] _Ƭ2pȩ" -^K]B@ Oc5UѱGX?#56Я@4:EoZ~!1#/N vX0N;E8y!Ꮮ ::}.2<n?$OQf_rJg{[eTS#=x4TGʠa,;:B.~]es|~b [,hdڿ^٤0hc6};t7J"xK~o5s2>5kEnDU2մj˕4,vTd[jS\WJA[PZ3u>`е~PZ];̠v*LuS%7j &=>D/{گj~}81~`*zɏϓݖ>YkE90VJf~'iX5,Z1VYY;Ƚ [3֍730*;Ƣ0 cUɜū}сnai%/mS-m٦>_6LmX\*5-`tԭ\|EҾw*wUcuf#z[j04^K%zIq`x1'3x qt)_ BeUE|j-Ez>uܿORBV5OfsDzڍtrЕ ]BrNJ|E~H_N,n%uN)b]<)WHI7!8A?zŕ"-5~b߻()튋'ןiE +d$Q[z ;E)@)~'NA9q{ wH> endobj -5094 0 obj << -/D [5092 0 R /XYZ 90 757.9346 null] ->> endobj -2467 0 obj << -/D [5092 0 R /XYZ 90 739.9346 null] ->> endobj -446 0 obj << -/D [5092 0 R /XYZ 90 739.9346 null] ->> endobj -5091 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5097 0 obj << -/Length 919 -/Filter /FlateDecode ->> -stream -xڥWKo@WXҠfo…7pJ'5Jl -3ݤvش읝=ÏljHf\2#⯇p?l3G'﨎5Ғx< A oG<RKBWY̱BXHlX( 5z;)v&IgS,ˆi%phMe)ye.@AX%d玔nQWOk(Q-)C`1D\rВPb|* R:;xSyjRs *DAEEYFQC>8{w23EUeILC$IºРYUΊѴ2sQeU6d; qH#(1 h׿Vꆔ- -Z i-_Q긅jy@)KzVWcHC"pGEjs#̾R"u/zWkri"/t\O(sw84o?iq̿0u\UwN) ~dK7 {Vy@eht$1Y3Md]fb|hˉjIAxIOmh&_wǀ - _>.d -f(TmJo+SC=&(BPjE1+abQr4zǐHh´E u_ůObbP>׫|g])VɬNKMM04:@cJ:66 XŘ&A۵v~H>D` #Ƙ3Mfm3w\[SFˎ7ޫBLIp/"|Ԯl{"n_waoDck(=?m_D'~F3P{ 8jw؜<7s=4| >endstream -endobj -5096 0 obj << -/Type /Page -/Contents 5097 0 R -/Resources 5095 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5090 0 R ->> endobj -5098 0 obj << -/D [5096 0 R /XYZ 90 757.9346 null] ->> endobj -5095 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5101 0 obj << -/Length 1899 -/Filter /FlateDecode ->> -stream -xYmo6_a BR0LD-ܬLD-e(Glْ2y04v):諲*袤?d?pί]AJ[(|:AH9 dcNIQ'PeH+dYqgQ~Ẁɢy} Q :zyes{K=ObPH "bJ Op8a^5$U<Mq(}LrB0sp*iŀ~(e&EWi] wA< Q! IBHo[xZ%VHulPZH Q#"PD/llOJq 00''V $^ ژ'ZZZ"H+ϒ_䗯[dHX㥿endstream -endobj -5100 0 obj << -/Type /Page -/Contents 5101 0 R -/Resources 5099 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5090 0 R ->> endobj -5102 0 obj << -/D [5100 0 R /XYZ 90 757.9346 null] ->> endobj -1540 0 obj << -/D [5100 0 R /XYZ 90 739.9346 null] ->> endobj -450 0 obj << -/D [5100 0 R /XYZ 90 739.9346 null] ->> endobj -5099 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5105 0 obj << -/Length 1195 -/Filter /FlateDecode ->> -stream -xX[o6~0`ۈ![>t[$p q,0[N9k݂}G"H -h/ E(!04PB#Lo{4w=p! ?{/2b$x^p@gC&A/8ir|DT*$w1`T\B.S3TG 7Z0r~ "g pFQ(MbhI%yvp>~3L!8 -YD2NЍ4NKy4<; )#5IE-Mv%}f!5ם+M2p4ON93~_OCg(^Q u%f>b8GE)6Ҋ\_P(/5la0`#]xfӅ( ̇ݯ&RIU7Z)U7I?ǫuA(0H,/ct@FLfvo \lNzR9/ /5APYhױ!ŢR"͢&P uW= /κgWxW mրb1M-LE l2AdQ] 4OӈoO9m?8=HY eZ-ؚۊtܤ̎ԝNX]eɟ/ȣI-h+>~dd48w;?O -##`2nHEr$;ѣc0#V{}"rw]kղZ a^=fv4G[jڴ?NjðFݰ&:Vzy TUrdC`9N`DR:!~q5}Qbw ;H-=/QJГ2y C ڇYՕUmI2]'*o(ծ -ï` GJ(ZoATwZA[s900ۿ=YԞLT}V[o/9+= 9hhr=,8_i4w>pxzI=Stth^Hyid)劻D$h*Q.ݜA4^f}/_N 0& œde^n}8X`{M;<^ywk'4oQ9endstream -endobj -5104 0 obj << -/Type /Page -/Contents 5105 0 R -/Resources 5103 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5090 0 R ->> endobj -5106 0 obj << -/D [5104 0 R /XYZ 90 757.9346 null] ->> endobj -5103 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5109 0 obj << -/Length 1205 -/Filter /FlateDecode ->> -stream -xr6`/2i,Ė69QR{+'ף)愢J  E 4b|#,8^A@%o_e68'Af - fSG 0p]. 8Ћhy$/2]`1ͪPv)S!dɞsDYu)*nm:ޯ6 -%kNTڼ67Ga]ύtiUҭ]|*5.q~+S`ffܕ%sѡfu,pm˜ޯ͙6 (<Q;/?٤x*jrgu9F -t\hVVS;ӱ:gv&;PWѠS.xo蚨zդaiV;VpԢ~AH#Mտ~o gg͙9HQǿ;tYuGtHf y6֡p\A v^F.v;%@`u7Ɋġ^w$`|g *T"l*#+{Y;GZQG+z'N4VU3쏜` QD &MӨj% -Ĩ=N`iF1E6ɓMTY V}W/.Ⱦ ې/~M:8ի!"<=ӹ/OɳY sendstream -endobj -5108 0 obj << -/Type /Page -/Contents 5109 0 R -/Resources 5107 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5090 0 R ->> endobj -5110 0 obj << -/D [5108 0 R /XYZ 90 757.9346 null] ->> endobj -5107 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5113 0 obj << -/Length 1224 -/Filter /FlateDecode ->> -stream -xX[o6}^ -{X%퀬u -.++Ur-9YI[hlw(? - "A(=w=dC94=E FGa/B3دӼHH7@ƥZ -cF{ƖqO,K=Y(; !pG1weGO4"x G"lHXF0z^g y]T].t/+jVM)3ww`U |a4nd8}3{}9y;&+$j|Z$@V@iuh&:LLfJSig/ygɊ6N'c=i"7KXQpŀ3FFmې NHBԆC-|#zLAfOkŨFr@YЭz*@kZTV4zuT9Պׯ^[WA[A*vJmGC!t`h Bo12Z4}BTkbUeIY<6M;Y;QW9)Enendstream -endobj -5112 0 obj << -/Type /Page -/Contents 5113 0 R -/Resources 5111 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5115 0 R ->> endobj -5114 0 obj << -/D [5112 0 R /XYZ 90 757.9346 null] ->> endobj -5111 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5118 0 obj << -/Length 1020 -/Filter /FlateDecode ->> -stream -xXKsHWe/aWC J*w)"llHmiFAiP/)Oo;@ ^GXHMj e0V&=i &yLh(2Dk% Uv?yWk'D -؟z!&M'νzD-"rzC8x?` ,5vLyea4/OO_Ti#! Vz%P/I N( ݈G8nCt4r!xFnSa7ڎם j>g) bHWc(53P"cwȗ5YO`}[n&?j}|ʌTۭ7čZ_}j7ݖUma+AT-n9:GuxhĜPfd-&@">)σ_-*H,|̗*/T9t_q\5_nԣ{w 3endstream -endobj -5117 0 obj << -/Type /Page -/Contents 5118 0 R -/Resources 5116 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5115 0 R ->> endobj -5119 0 obj << -/D [5117 0 R /XYZ 90 757.9346 null] ->> endobj -5116 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5122 0 obj << -/Length 633 -/Filter /FlateDecode ->> -stream -xڭUo0~_G2)ϿwncPn#o]UQb*4H:ja xEAw|sGާ'JRIA(JaDz2: NL4i(ʠt]QLBUWpuMPf( Jz0A)̂am:j#גDhZv#HM'? K,G#iL''viob΍ -sɅ&ˆir-z5ϊ(U% _r1kU>+'Idm 6^&]bQ-\9X p9!4pK.V%hO}sv>\?drt Yۀy -`^+bЏiyu16El+P" ,U_5 g{d;uNʰQsʓ:8e߯.`R.nFLQ T%--ټy;]{x9I -RxN miiFKHT$tfdvP]/Arn%ǔSbwi&!ba7_]4vOvX<>|Sj{ endstream -endobj -5121 0 obj << -/Type /Page -/Contents 5122 0 R -/Resources 5120 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5115 0 R ->> endobj -5123 0 obj << -/D [5121 0 R /XYZ 90 757.9346 null] ->> endobj -5120 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5126 0 obj << -/Length 1857 -/Filter /FlateDecode ->> -stream -xڵYmo:_mN-潻MhÔB]M AK HkMBddZ9cc.v%AbE> էt9JWa]g Fv)X=Z##8t˹3hZaAs>v48dzp,tQeCfWWm T,a ˲G?cfea,u%2$@n8.B&  2TDβ ywӢNfXQ{5 -#[?g4dX팘9L.&UlL>DM8Nɏ멑(ʞ*,E abM@2#*/`τko„{zժ3K: КLHz}VK YisT{绮EFAU:,zc<\T! & Iq@BG6 lMt/Z,NdY'wc=8T qK""|/H8xX$RDxozB7~i/Bsp -ɽ(VibkLI~"1E>t4Sy8;B/M7,0xS'G3u f܇CV=}na7Ra,,8cXNg8lb28vFV![2́ O1!_qeNy҇wFMM8pXDz\{뀷F&]eǭńD~c#^=[Di6E@7HꉂEDt[UKml@Zx9ζpcI=ޕ̹6eέji8GKGy>] H3u L Wm[Roit>,Ͷ6"ЯGCbEXMnn\ $~;clKη(%֬UPwؼ##g*qj9zoQGԶlz^Qd&Ү P ѝ${Εi2Kf=~OpǶFUGO;ۺV:h59i-4Vil<$vӺ+i<_' 44FKR uێ%Br*րW] +î[֤ngӗ*U)-UaiFoRK'G^e -Ѷ 7!  WrȩA8>4|Ԧe7Nkt6 ]^ -7w^\ff'O0ϲ? YrCOrO0 ?y&`z>q +.rB;IU2>W^*XF˔T=GSx%޻ĝϳUf}VCD!~!Z} -*5|Hd}SӪ>:Ǯz1 ʗL -o=&ϡ28X(2#QqB ~n~{f5M|<ъd=9$"ũ1,BW<;Ϫ{gKo,endstream -endobj -5125 0 obj << -/Type /Page -/Contents 5126 0 R -/Resources 5124 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5115 0 R ->> endobj -5127 0 obj << -/D [5125 0 R /XYZ 90 757.9346 null] ->> endobj -2469 0 obj << -/D [5125 0 R /XYZ 90 739.9346 null] ->> endobj -454 0 obj << -/D [5125 0 R /XYZ 90 739.9346 null] ->> endobj -5124 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5130 0 obj << -/Length 616 -/Filter /FlateDecode ->> -stream -xڥTo0~_a/dR\^ֵ+B"A`hCS9A 4)}I.f@U@Ыq‘GM$i( 0@Q2u4FN-pPL&\ -EA79p&g043zL+~`КUSv0Scu"W@# JBi+"!Y6_5nMnӛttlD]Ʊ%$g|NmvŶښIJFLp6XQ"Q;QlKE5KSn-rΉ8łPվ^y"wD4oTM^vY^xtA/[7{^鞷o23&gZؤtN6ڛuBXuz8=)x1iDM'˥1ɊU/kq>\ĭL(}K#ֱ>ku0nϭaI-+ج ڤފtXz01z+67dJ}g[33׹?xtakQB=C;5ʇCc|5OSlO`fendstream -endobj -5129 0 obj << -/Type /Page -/Contents 5130 0 R -/Resources 5128 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5115 0 R ->> endobj -5131 0 obj << -/D [5129 0 R /XYZ 90 757.9346 null] ->> endobj -5128 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5134 0 obj << -/Length 1803 -/Filter /FlateDecode ->> -stream -xڭY[s6~_> ״I8f3}J˘-o#`Y~X.ss$%x飥kO-glh?.zmFū_gy_piLwKB+E域奍.lKxs> -O VYzNո,~GP@&={7ľOۅE($/wu!~6e'Im&WFHwF!fpL³M=w"b" -468Rt4Р GByUQXR/ߴ /;6hoEEq6W5MhJ>6G-HoApeV[M˱&w>J<9[fVȣudaFiPLjۏ>yon}sُÚ6 K B5yEsM=CͦY@(VW|ĥ~O)hq=NM -q)j, `c%j>fCyKNO^iQl+d`Tf ؖw-g67w]H AKX[0R*cb'1УPrM3X}~ՙ& ύqmYb4יͷrRqc]#~ҏ<xW#=1oZفm)*(-;-+MOҚ2߈8࿏!&x>ΛN[{@ J%6ƺnD_6쁏s&wc~dDixUAL=:y$Qt>V)A+xPM50RzIe"2QeEDWA"ILe➷z_Wʢ|VL c'1lxq[&El̷e,G*9@6.rt~ʏJJR4ZKIFa#sۈOK5\Oq$%,.\ ~F)AEhx:V`2&eC[x VB0$w6~UC]=ղ#qخ2šBڧSAhP=+l<%l@Xh!~FYܷH|@ivqzE͞C>PEg -_]g%^OI4<*k{լZ3q a_D))T${cBey5GOvVq`g|\*+񃌓\^ ynR݋H!ALltՊ{zRLE 5^ڒm>@zI-oڡ,qm|֢ODi5߂  7vQbwVfݼ:Nu7^y4)EKP4 F-thD()6rl\LP0xD\) bv b7`Ԧe(8 bi9n?jA<$ rVm'mf1{aTzHYehf K;h6@)v.Yg׀sGU8)φJUOAPgIu׎es.i}%b$~`=lzcgEVvP] ZB ~lA[v벳y1- hvfc[!;y9w}R.9$R:8DvNJe<9J#n{ }YL/zMk BNs]GeHQendstream -endobj -5133 0 obj << -/Type /Page -/Contents 5134 0 R -/Resources 5132 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5115 0 R ->> endobj -5135 0 obj << -/D [5133 0 R /XYZ 90 757.9346 null] ->> endobj -5136 0 obj << -/D [5133 0 R /XYZ 90 739.9346 null] ->> endobj -458 0 obj << -/D [5133 0 R /XYZ 90 739.9346 null] ->> endobj -5132 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5139 0 obj << -/Length 1533 -/Filter /FlateDecode ->> -stream -xXK6WF _ȤE$d -+KqA{)[ɡf83p?rt|Ptj -n6g` ff_0fFD.M0I7/b µK0onjC.޼Ny9g$v+^jтz”6"S0GYu0VAu -s5)EOj c@PtƷ8K]Mq'K[}~=L COigwt9(/`G% -,6mҠKVQD x.gz5L@WziM{b-ッ}O/DV+O -dx" L'Tr _&Wf 1- (dQ~~q >f|kq'X]^=}+X_s7weY P_[ӉZB  -U0gv;!q(L0ICD*pFeR,L%с |mŗ-~s'39SIjd VIfrΜ*^B QZyIIfAfFyx1.LR/HmSy%Ov":˳Ə#ɻ< *w2vӁaKQ yTg_[~6W'Vޔ vǾf -Ƽ~~ ;|{OU<Ԩ3vFu&qe8!Ҧ}Jixoĕ'o -*[x+50{vp&(u]ViyrQ>[V.w=ZޖUUW 4`>4Jyd^dD1E( #/XP)S69!aI c]P?mp /.ŵ23V: Le援{msLݽ>q)M| GJ1cdb.Mv5S#+c`S :qjjn)n$T(u;S#CBCRB4o|$_OSynD(?Ƃt"ck&+М}ec_-%itmNױG(5|H?JXsL[WznԠ)',sT M1@.ն)s.l."ad_=aSV-[oi (,. IF]G'G -#[zS# .AyQMicXDE)xg:B[yYZl~bڿy=#qk?iC~ՆO w{G6@ԟlCuvyuߝ)n۝nDL}{U6T˫5nJ - cCK1?o5nq10OdϿAendstream -endobj -5138 0 obj << -/Type /Page -/Contents 5139 0 R -/Resources 5137 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5141 0 R ->> endobj -5140 0 obj << -/D [5138 0 R /XYZ 90 757.9346 null] ->> endobj -5137 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5144 0 obj << -/Length 2011 -/Filter /FlateDecode ->> -stream -xZoF*bN6M#6InSFjKlÆN?L{C*;EQyAz;@G?sPeT2_An_qt4dVfߥE`آw75,*K70H·;`"/l߿_~g>a2G\ap38V{\'4L n(C *`YLmG^,Y)("E,ǰT3 thtFbx2 (: Fr]bLXP]OaXI U{TF0k -x$t[썅nbgTb b>o& -WYSy[i^#Q ΣO%x =D^њOQ&,q\P/( (BYa$* VEi[h)j -7%0QPm4sx)'UЙTU -Rp1s.V.l@uN0oRoqSWD_YHXV:.#QL%i>7[Hl <%O7^:M4acߵr@LLIҝRinTnbGSZ4imϜ8Zh? vae^(/G qhVcpXUj\}zOqB3qKɸwC9`;ͅ{A }AF^zZa,60"' +R[\\*ԃxUvH)wBM7$ōV]dm4cFgBSEpPâ,{ &g|\69˘εfrH2?}Rnَ,Rfd >e:qpL,M~v7հL|繥d?"^ͧeZ1t2OcvA;q:ƕyE;7y{[KܡSù pf%sJ_# -,/i/iwqJ+xWG0bR%ψ|Km:/yTIٴ؛NԼ&pj1)UQ:Vf?cdx"g]iԀϡCxaW¨5ڋ.LsbwpldugӴkuv9ZMƘv :-lc.-k1w s_i(i\ީ5 vRs]sV35 uS%x(7s4K`XAi6bcԸgGkw7s2rQ̵vF'45.cVS3w%C'q്GszC:?9lE[ndHgrz/ -$Qz{Y4ٗ> -%Y&~ֲ+Z} OI%E/{ˀ,S'/Y=ѿt@AAJ&Xendstream -endobj -5143 0 obj << -/Type /Page -/Contents 5144 0 R -/Resources 5142 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5141 0 R ->> endobj -5145 0 obj << -/D [5143 0 R /XYZ 90 757.9346 null] ->> endobj -2468 0 obj << -/D [5143 0 R /XYZ 90 739.9346 null] ->> endobj -462 0 obj << -/D [5143 0 R /XYZ 90 739.9346 null] ->> endobj -5142 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5148 0 obj << -/Length 1024 -/Filter /FlateDecode ->> -stream -xڵX[o8~WDڗ2RR;ei[Riw.BDStqʄMv}$,$` d19Ԛ[ZJs- _p+۶pchY<*VS1a偹?үrKvB`kr1):/qr=-0pQKZ0Ei$v.$Tl#ЄQ 40ww>M2wo!38r7\7&F* v!_? m.WqZ9I#nm߁pQ /+etUMx3I7R ]8Kv9j+jWm" ؄Rwwèn (/5/1/$\F3*)n&Ĝ(ܔ(Da;\k}j\YqϿ.BQ > C+Mbln >xn6i=ʱ׈rL/M9;+弊,K*d%$ 4{ -f?t4!kHԣ'$KcuIFxQ˝PNv(NwSL&x|(J#&50 Yk^̩^N>U?o߯ zU|4?Xendstream -endobj -5147 0 obj << -/Type /Page -/Contents 5148 0 R -/Resources 5146 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5141 0 R ->> endobj -5149 0 obj << -/D [5147 0 R /XYZ 90 757.9346 null] ->> endobj -5146 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5152 0 obj << -/Length 839 -/Filter /FlateDecode ->> -stream -xڽVYo@~K^->*JMc8$;c{mik(RݙoRIh.LiWr\"0w^w=QvV8o"6xfh> .Ae\Afs}C^8pKw J@kNxS MIM*w< - - 8@.\%kP68o?&&<o-@ -0!X g&I u n.M$ړt?n`T<ޮ2Jk`?_SKݦs^Gsrj$J!V\DmfFMph[fê !ǡKÞF}|Ȫ%iIICT 63llN}m2pTbB %L2JMXperrY0;`3JU1w̉Uo;sg!JQendstream -endobj -5151 0 obj << -/Type /Page -/Contents 5152 0 R -/Resources 5150 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5141 0 R ->> endobj -5153 0 obj << -/D [5151 0 R /XYZ 90 757.9346 null] ->> endobj -5150 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5156 0 obj << -/Length 1973 -/Filter /FlateDecode ->> -stream -xڵY}sH?"9uZs 6!:(0zo%PG:}~mwCC#4wvxw5'eF8ihn$=7Hf(c%p6ut7 F%}3;t78G wIt#$fH!!GB} !Ȱ`<XaGR(iX@pr&!9@ -|yCK}V#3$A' $mbok=8ؔA|{i_Mxd5jX|2n\]L̻J+|q7lR{*7(Vfƿgl1P0[/.sXxvBD^N.e5Y# _'r(Eaoݺlnj$sBzbx& -wc7s)jUtvn-[t7M؉q54CXO? O&Mq/:SXE+?89; F”#&vI+kFu~LLjRCdJhlE-ƆqoؘRrE!1e+kQ9(4نس1b\K M^uSנ~T{$-%ؙUe%ơ>D<;][IG5 Pw/N"oMSQ{0l6jVC&v1 D^.-(uQ6;$؊0Ľ}yz& nI Hl -o&>TWԡ\1=K$7e;:V; -94ta)ٗ|GR+U;lS#-L#pϰXB& ֝!*v ogϰ] -rJuB;ec ŝgH#A;^?2,c3Vs[N$煝zNGީ #]t?u ]0%48$4Rt];Kp>>BQR ǏhW>& G܇g(pkFU|MĭK]{괨]~4Ô9bϞŔTRW a^/`E„\L)\\, - dք%˷CJZ'3ԡ\94?| EFbQ!+XenjJ_j) -.i&bS_ct=(s.vPW'&Zu? R@ZS߫maoWh"`\+WFɱƌykbp02 ιҴQePwpbQbSTj#rV\t0U]_-M-ʛLA&M4 ӚwjZCƮBf6v[ns3Sn$.]B0u81jj`mXj^Z[$ZȶEQU0T"Ϥ$a;*w(D0ؗ9oȂ@95/e%-W.s<'8o]BG ?!gޜy+ÿ_plQ|(mN81f }~ᏟT'PϿ_endstream -endobj -5155 0 obj << -/Type /Page -/Contents 5156 0 R -/Resources 5154 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5141 0 R ->> endobj -5157 0 obj << -/D [5155 0 R /XYZ 90 757.9346 null] ->> endobj -1539 0 obj << -/D [5155 0 R /XYZ 90 739.9346 null] ->> endobj -466 0 obj << -/D [5155 0 R /XYZ 90 739.9346 null] ->> endobj -5154 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5160 0 obj << -/Length 1022 -/Filter /FlateDecode ->> -stream -xXKo8W؋݅T>$>Zm4iwc- WcJrt})re$H/MD$qf>vŎD'ϜxCε>a+vݟ"=}E#=syLhO|4p Ggt3@}!oR:ޮTZLd>F0ڭl (废{?"g ugA` -9=$_nc4UkA>pBfjt _8 /8FaehG'XGR #`NpD//Fc-e@~E^] O'2@XD.m j -TߎO­ëѕmΡAh GtiB7h -)88jQ7XmnD- K\^ng۸0SL}0)gX+ ZzV2,=L>X}_T3T`go?JT2Ob,2˜i -<|z5f\ N$<$7URF}@Nf h⿐LCb.FxvO'iyTtu>'uP/u&uu^AF;0H^OÈG= ئyrb`(&]= U*RUT.}# - _F&7In0Gp`V6_r0iwEGQ^ǡx\[ZUyTRyM+LʝJ暏AK ib -P&0PǀeL5;m;j9˿8gWnB7_6Evg XUBKj:SRj׿ a)<Aš%~uKͩ(?hE)*UfNm8@E=#0g5L~m],g~Dݞoendstream -endobj -5159 0 obj << -/Type /Page -/Contents 5160 0 R -/Resources 5158 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5141 0 R ->> endobj -5161 0 obj << -/D [5159 0 R /XYZ 90 757.9346 null] ->> endobj -5158 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5164 0 obj << -/Length 1373 -/Filter /FlateDecode ->> -stream -xXmo6_OC,_ķvi k7>tr"ԕ\IN;$+c- G=x"0HHr4E|_A>Ox1=}EuTDEA)dH#ǔUҼFyc0̣11IḱLc{#>48)?/+h8qBD#OGi9Ǝ"7\-"N[yKy,*slqKP(DBU=S;;ˋ7A5Ү+(TVR4q4&X5S[Qox5mHE=ll@M[jʮtn%727: xPR즨gim_WEGv-6"l숩u`4)ሚ,#"sƆ9j6 @cf{ !͑ɐsҚYjm6#[xp'3P,Av2l`C~Uw:M>laKf&NT9}AN -X4VH)̤cfQY%W-Lfٕs1­~3'|]1En苣b(P -uL6"to|Gv, a:,Ql(Y70;o~rjL!`ʴ^.pp_9sG3iJݾ֤IݑssSyeFM4:f|l6*M]_1aC+y3*dknN78½׾bBQQ]/U 2Ut>!VGe W^Br:CƝ tS%)VwS,Q`}RԄV b.Rn3,)|x29٪y[yh ;ĠlGԲtN`@K}ž=i5W ~6ln*Ti>Cl -sE|۵6G `Nt?mR Yb=F˝ /qWL)oi߆; Sz -kiZjewmK:&UPjA4W;Z+>F3l-ڧsжseP{ӓ'.N,I|Fy`<ұJn48))e+}?Wk% þ^>gj -GZWi9]E.I莔 H#W]6 -Fwp@KaNզ2En?c¡Ӳ?uOg_*򣢴?ī;4t oeendstream -endobj -5163 0 obj << -/Type /Page -/Contents 5164 0 R -/Resources 5162 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5166 0 R ->> endobj -5165 0 obj << -/D [5163 0 R /XYZ 90 757.9346 null] ->> endobj -5162 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5169 0 obj << -/Length 1411 -/Filter /FlateDecode ->> -stream -xXW6_' lmۡ#P(Y'$JcӔ'YI:28`wՕ- ~˥c¬|ւl :C - :AdwmDPF.pA{vN )hCAs0F\$لyIܹ]ʲF1=E 85/I \DE(LQM2K|q,D_W/YF< P,i? GLPI:'پCZ 4~@;6W9cgyGziI{@ըwl3f^5kvjRuԽ'-5M^>PUׄh{雑* faLJX6@ǂBCg -Cga j`+:+d SMa@у^̌d62C\  bW5#1lBCRlR.= ~!A\T @S-!PKok 絤AeQs"XWa64*Wc 9 LPo=hw6=msF#UA{{e}vȃ!OUs ) ޗu_$hTbPItU0m-L tsguW0Юda҃)Vi{jn!.#4NSSs~{ӏ s={ e`25a[bQ(I-4KWQ?+ Thꮃ -)袜0RKڿ_¾VFQ0)|;<>_\wt-'-L$QvEcX$.: Ch?0Rb/Eoުփ -;tZ*U Ҙ69XGQhc1p Vn*B,oB!@/2'\@)J>n<8EOC 5:MfQdPjE魁(:z=[,6 <"%1H9-9A ҶݻN$;XW[f͟sz> endobj -5170 0 obj << -/D [5168 0 R /XYZ 90 757.9346 null] ->> endobj -5167 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5173 0 obj << -/Length 1556 -/Filter /FlateDecode ->> -stream -xYr6}Wyڄq#H$ugrqd4ģa(:T6.DB.jψ$n{v`A? 4 (&ZHdW=|=!O\hUпWPD?p BS6.IE@҄Hf´KiL$3>\`JQ"t@ ӚW=E0\v|6ELRĔ5Fq16qjCMv&hFe2@&$Nxj$Xr:KpLִyVEfQZ`)<}]M:;)4JvKM'ʑR5ЍYY!^! 0;o(d{;Ix[%.u=*ƹA d/Vu2kvY=b[$R U9TRڑP )8,Idg2u^&4VxYsROf"!*!m0bD9UU7Fu:ͯr+̒vLYܐЎ:;(ʓ#**ۉ#e^-J * -{| -wl1M!t+co"Od]'zN|`jPFQ!MkdNH t֒D}lV6Ķ^LI>tFj+# ɨfq1Aq#:ݑ-T*s~h?%8w -F́5y"[A: *EADbl:YwiQlA頷qvz_u0o nI]=nOK1&.Jlj]1}AcL?b9#AԱcH7[G[4W 1vmW- l9J|hR*4Z#upHB]e̝5Ua <:Xm.MF 77~ ԻV<"Ө79m*'pU\6m=2w읬MI腟%;d܁I4y:7E{,MjfG*qykx>R(Uy[^ h|DF8Ʃ_]M Ȗ}(Yu$Pt_eh Hvzns洎pt{tpz(~:}{x}>튩H'FBq_Ɔ$/گӉܼ:b탩+}C xPٻ#<,^~gӯ7(cxRendstream -endobj -5172 0 obj << -/Type /Page -/Contents 5173 0 R -/Resources 5171 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5166 0 R ->> endobj -5174 0 obj << -/D [5172 0 R /XYZ 90 757.9346 null] ->> endobj -5171 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5177 0 obj << -/Length 1192 -/Filter /FlateDecode ->> -stream -xX[S6~ϯp_IY{ulg;.Y0&iS)N{,9Dq´K:\td G~qQ$L4e"Pt ˇ=1eޫDG:тhth8h491H 9>MΊ|p>: G [Q4=Pxt`ItciB#4!8!E+AJF䦨| qu:aq/Ľei,bK,S׬ZfLib 2Ո|PX"dztcLU"Ԋ=rb`[lB לmbO2~EUU65/C֪VٟzAPxů B"bNg7&r8 {3%pC%I\ =cU\^3I" UN`O~5ߖ7)r?emZ -Tv(6>|i>uZ.q6X$B{C\ 8*ǫW>N3߹5\fZy -s-pBSO-M=/sE 1GkbIh1bq[X .|0 -t3(:E6 F$$Sۖ,mHAvU -fEݝk':f[ նh2wmd|Q߾;9~]Gϧ'GM,6{-U̶ kj^`M;"*هSG|b'7m^N]\kSDG IhIT,:4vxF/O/>~ex%tݙ4wŦo@җ7ߤObkt6:_.K3PO+Xg*xG'Isp+}Jվ5ȏt[#BzR6"͸6m)2՞URgf_úL>im@oX{A6]dpU=;|PziQmR#/ˢΗ,Ml*0;פkޯ(cLklOy+,kUCWl`&>[_ 47 -D0%%Ud,X&7%]a{~ls??kB__M/K.{kvCb.QFpendstream -endobj -5176 0 obj << -/Type /Page -/Contents 5177 0 R -/Resources 5175 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5166 0 R ->> endobj -5178 0 obj << -/D [5176 0 R /XYZ 90 757.9346 null] ->> endobj -5175 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5181 0 obj << -/Length 866 -/Filter /FlateDecode ->> -stream -xڽV[OA~_}s&[>XC$,US0m -!s9܆|Yz=Yr,v5vs?8 #݋`^^uL Щ_>+ŚSof#>0Ns"l4YG~N̾y Je/1]?AވjkYcnD:L{Z8aQD.GYdxhSO:UcYm[wc?tz@,HԗŋZzDn,k]BaƄ 1گTlS"+ (zK<qRq-t:txö Pќϟ(o@-QQ"?ꨉsBB9R"Y8$dʴ 4=ʼ]ȮԬGA0Rp -OղXƫGd}VãGdG|endstream -endobj -5180 0 obj << -/Type /Page -/Contents 5181 0 R -/Resources 5179 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5166 0 R ->> endobj -5182 0 obj << -/D [5180 0 R /XYZ 90 757.9346 null] ->> endobj -5179 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5185 0 obj << -/Length 1880 -/Filter /FlateDecode ->> -stream -xڵYmo:_mN-{wu5І) v6e4- !kM:2]Zzsy|lll-2Ԟ,ZZvNmS%$i*A j;ޗ#$HǧH28C\)jJ7l2v \s>t'L?[_~lW+ڋxV֧LH''B@(p1 6X&Bѓ?nVįܖ,弻 >MHmMa$T(Stwii֧p@ReYiʉ;_!/QYݙ"s*إ*'HN+Z4vF}㆔016o*iDJc=ؑ&63s!)QWPc&1.HYkRut?cX6똱3vY3ϸc6-J|N2<`yXF ~DsWgl_EqSj:Y#3$])ˣl[!]+l lqW]> Q,wv*lywzMpsY:֡e]KjwA=:L9="5M~@Ꟈn\Ac#z7Vl Ci2k hbqm8lce⫡7(^V; o8wo^ q"052rΨ^5?2t ׌k DWio],E_/ZTmB~װqP`ci=;FV? -uG bրmQծ+ƑP2YuF8{ta;3r|Ϲ2ͮ[7FGS])ڮhc09#ԧ:-k4t s왷,-NsPyu72xOj07Xˇe8{0ruL)a[ _5o\郎m&ufv>gV[9wT`ufp=F[l<٦= -jԺ7FF=8En.N$ \S|rcN(8TЩ՝+cw(tQ77w^If' r(dC\J%nHEeԘ&d'Wo^Kϧo> qo<.`4Q-iõ7U+iffٛ`)/1sk$NkxdlC$ e"[)oWFLU.<}(ɲRZ*}_6VJ/썝j:wJEOLUe$HNf.`G{Ó$2*R}~?7:^ť^IsZnX9(ȥ}> endobj -5186 0 obj << -/D [5184 0 R /XYZ 90 757.9346 null] ->> endobj -2486 0 obj << -/D [5184 0 R /XYZ 90 739.9346 null] ->> endobj -470 0 obj << -/D [5184 0 R /XYZ 90 739.9346 null] ->> endobj -5183 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5189 0 obj << -/Length 1221 -/Filter /FlateDecode ->> -stream -xYKo6WY "%mM\=eCX^lSDٖBّ rofDr8#h/#'r}-8̚-+ f͘&wP$Xή-R&}vF6G7 -Q#w] @c+٘4hz:`D1bq j@aѩ11M|[E^ (L SR:ٴ>%bt4+rA4(2qC3."$O(Xփu -QOa6/leY5;/ -I)Xb^M˯_ -4ߋ"$4Ik]k$sv>TK͚LIƝ4?Vp@ҸU]_iuTPDizw4 +e:Mkc  -Og\F[.|ދQPi4llx\qXq8 HtTz n,_gImP%o9ny;'S%ih bkz]ur/maD:aim.9=7DlHxSJ^PC~E;2!=w6RZ?p:Bɝ1^tR%MGeQ}"f쨠9G-r/}Y?4Iu$`TӣFۆrXh-_C8.n~lKOOàۅ(W2#VW98>Iz"'\ʦeIN7s&رސ}zK-$)oĝ{M(֫ [و 4΢]nHYIqWei!v$6z2~`ʪҲX:ܫ0Ԍ 6f  GM5AUeSf<k"z~mE"fW{ kz֚PK2|ZIo$zkc( -~7$G4K1{NbgOw]E Ik5RprZN* ЋS~{0䠥(;銬s o^F(H_D"rku(5/gK=}E1 -a ӱqU ʫ FE)1x=>*endstream -endobj -5188 0 obj << -/Type /Page -/Contents 5189 0 R -/Resources 5187 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5191 0 R ->> endobj -5190 0 obj << -/D [5188 0 R /XYZ 90 757.9346 null] ->> endobj -5187 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5194 0 obj << -/Length 1641 -/Filter /FlateDecode ->> -stream -xڵZ[8~ϯqPۀݧlw*Uj#*'x\@&Ϳ_l@R!~>`h6q\l֢ b/D,bx.WD"r~|'AxImĪ?.fIA &gzgE`(oBAx^<x"G?DgT><1-D_:BM p9A9qm?@Q{$fŮVsUkϖ | /1+^\-zW*=_MHlɏ[T{Rbj$aRs7kFβU9_'4@Q:ܫC@m֜cX|sEL-huߕ<);V^d#Z$qiZc - v1J[~ByۃôOP$ -%@6+k[$Ȇ8qPIMӦs6mW:Hl]7|E].;BirC񙬺#<9x֬0O9cŋ6_0)~Nwbyrr,Wpҋћ1qBa4 - -25bLJ,)Hai'{d88IXq<k5G5o[g;:6p0ØLr}s׷ζ~?#?ʣɴ:+L~iN_IԊL@?Tu*'!]׌kf|j@mG xq!Ȃ*iThN-ҥζ ,^-ffi;Dd5"2!}W! ]6Dy#Sytwy AbQM$KXFT^> ?{4D]AAn pzGLHˇӫ#[#?kvr_D^íendstream -endobj -5193 0 obj << -/Type /Page -/Contents 5194 0 R -/Resources 5192 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5191 0 R ->> endobj -5195 0 obj << -/D [5193 0 R /XYZ 90 757.9346 null] ->> endobj -5192 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5198 0 obj << -/Length 885 -/Filter /FlateDecode ->> -stream -xڽW[O0~ϯƷ8 {:څiJDHSc'4! w|ΗdClڮPfOgrBfy 3m 3;F{|rd-> endobj -5199 0 obj << -/D [5197 0 R /XYZ 90 757.9346 null] ->> endobj -5196 0 obj << -/Font << /F29 499 0 R /F26 485 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5202 0 obj << -/Length 3602 -/Filter /FlateDecode ->> -stream -xڝ\n7}WQLˣ/ZGb -BGcKX0'bf͉ NSuXgE~/~ّՖz; ~?3pJ뛋&P:ˏ.^c%eJ=\ow򟋿8ȎH <% #`6Œ4BBh^?=n/k:4ud ?}KO}ƓҠ]D7,E_΀霿 -::!tΨg:]====?N8;~]N7(;quQ2Za\fRRYJЂ*; xʄr* OJLoTaxlDա 8C*ఇғug$8)ȆF|50#D -ZAQɠe - OJL -e4:$T6`I7, JA}fG<) 1~~J/m_3j-CG>)cNfXjHC6,oWϡ6S#A6큄'jQ쁄 E : (L= ߨm5P8g h4HmЀ+( fBq5THxR`*~ -=T7*mP j\IǨr^eێ#xDkT=Jʊ 9!~A3v 92Il߹"pRRu0 -uΠKDy `ܠX!xk0I5yLcLŎh093 O>^OdAo!ItFT!9ZQu_<ಏ~> pR|y:hL!` -JP-`ɀp{7;Ƅ'VkQ~D_/aDuhQ2gxamnnn{BfO>aDM{&ם<4@l gkFT5H,;V濁*I^;vߦp{pv g{GJƓIoXWXc}+KK'0r{E ?I B\ -P -,M |pd!-q &4&$HxR`"~d;%+F@}L{EB -nd4@di.Ȣ@kYFT5"5zV†aY\ k,3eYVY,S]4L}7f4'xyy$f“{'LӢ8}_0# -@]l6=RD8g\ɢʟ4^kCHyd?:!ts:;?d9\< )4pR1 *LchPّc4:!~ Oo?Q~#PmOJA&apB=_@ABuh -Xʇ/0.sK;a%l{ OJݲwB[!VsUuHW8 Kۧ NŎ7qYN~г'=VhZdtP֠Χ炛}8(Vi %PO#߰ӾnJAk=FTu}G5-ӣ9͉`%'fi_=_̉uV ntn~ hs⧋.߾?|ij4z8ߔݧ'{ڨṞyHu)5JITRc^WcMIu! * IuΐRP%+gM\yLδ~LC(;գe&q98OvΈL5FO Y匠frW/~E7RƓY_wQ` hdIxl*hz8*d;#R;10>t4@]kP?z9~Ps_w[ j+3'YDu1tN-{yu8sp×|*x"3× 4{p@  -#a%T+3ΙU6NA/;4Mo4'xl/P653j$Du8s hF@ĝDa#,g:ދkeNQ) Vɰ22F=_6ڬMg"~?w/WW߶ۇ}oC'*e<) ~JWYW #C;$9vxew%vI)w=OxR`pAssAOkVDBיִWS@7Mt<) .3a)W|ΏlcE]x Owp#ی.G<) 54~IӶý CQ=%Xq`_s$\E/X~7m1or?z9~f8ϧ/ )MJ8R -+Ce ڜ<:9r3M䗧)xr>bA|1St?P9:S\-BS:<d]endstream -endobj -5201 0 obj << -/Type /Page -/Contents 5202 0 R -/Resources 5200 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5191 0 R -/Annots [ 5204 0 R 5205 0 R 5206 0 R 5207 0 R 5208 0 R 5209 0 R 5210 0 R 5211 0 R 5212 0 R 5213 0 R 5214 0 R 5215 0 R 5216 0 R 5217 0 R 5218 0 R 5219 0 R 5220 0 R 5221 0 R 5222 0 R 5223 0 R 5224 0 R 5225 0 R 5226 0 R 5227 0 R 5228 0 R 5229 0 R 5230 0 R 5231 0 R 5232 0 R 5233 0 R 5234 0 R 5235 0 R 5236 0 R 5237 0 R 5238 0 R 5239 0 R 5240 0 R 5241 0 R 5242 0 R 5243 0 R 5244 0 R 5245 0 R 5246 0 R 5247 0 R 5248 0 R 5249 0 R 5250 0 R 5251 0 R 5252 0 R 5253 0 R 5254 0 R 5255 0 R 5256 0 R 5257 0 R 5258 0 R 5259 0 R 5260 0 R 5261 0 R 5262 0 R 5263 0 R 5264 0 R 5265 0 R 5266 0 R 5267 0 R 5268 0 R 5269 0 R 5270 0 R 5271 0 R 5272 0 R ] ->> endobj -5204 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [144.9034 619.7797 156.8586 630.6836] -/Subtype /Link -/A << /S /GoTo /D (page.36) >> ->> endobj -5205 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [217.4706 607.7527 234.407 618.6566] -/Subtype /Link -/A << /S /GoTo /D (page.147) >> ->> endobj -5206 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [218.0285 595.7257 234.965 606.6296] -/Subtype /Link -/A << /S /GoTo /D (page.148) >> ->> endobj -5207 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [172.7487 583.6987 189.6852 594.6027] -/Subtype /Link -/A << /S /GoTo /D (page.149) >> ->> endobj -5208 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.3067 571.6718 190.2432 582.5757] -/Subtype /Link -/A << /S /GoTo /D (page.151) >> ->> endobj -5209 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.4535 559.6448 180.3899 570.5487] -/Subtype /Link -/A << /S /GoTo /D (page.153) >> ->> endobj -5210 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.0114 547.6178 180.9479 558.5217] -/Subtype /Link -/A << /S /GoTo /D (page.154) >> ->> endobj -5211 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [170.6363 535.5908 187.5728 546.4947] -/Subtype /Link -/A << /S /GoTo /D (page.156) >> ->> endobj -5212 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [171.1943 523.5638 188.1308 534.4678] -/Subtype /Link -/A << /S /GoTo /D (page.157) >> ->> endobj -5213 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [178.9352 511.5368 195.8717 522.4408] -/Subtype /Link -/A << /S /GoTo /D (page.158) >> ->> endobj -5214 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [179.4931 499.5099 196.4296 510.4138] -/Subtype /Link -/A << /S /GoTo /D (page.159) >> ->> endobj -5215 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [202.1679 487.4829 219.1044 498.3868] -/Subtype /Link -/A << /S /GoTo /D (page.160) >> ->> endobj -5216 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [202.7258 475.4559 219.6623 486.3598] -/Subtype /Link -/A << /S /GoTo /D (page.162) >> ->> endobj -5217 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [201.4608 463.4289 218.3973 474.3329] -/Subtype /Link -/A << /S /GoTo /D (page.164) >> ->> endobj -5218 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [202.0188 451.402 218.9553 462.3059] -/Subtype /Link -/A << /S /GoTo /D (page.165) >> ->> endobj -5219 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [185.9692 439.375 202.9056 450.2789] -/Subtype /Link -/A << /S /GoTo /D (page.166) >> ->> endobj -5220 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [232.6036 427.348 244.5587 438.2519] -/Subtype /Link -/A << /S /GoTo /D (page.74) >> ->> endobj -5221 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.7603 392.8518 165.7155 403.0385] -/Subtype /Link -/A << /S /GoTo /D (page.94) >> ->> endobj -5222 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.1837 380.8248 170.1389 391.0115] -/Subtype /Link -/A << /S /GoTo /D (page.94) >> ->> endobj -5223 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [155.0254 368.7978 166.9805 378.9845] -/Subtype /Link -/A << /S /GoTo /D (page.94) >> ->> endobj -5224 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [135.4892 344.7439 147.4444 354.9305] -/Subtype /Link -/A << /S /GoTo /D (page.94) >> ->> endobj -5225 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [135.4892 320.6899 147.4444 330.8766] -/Subtype /Link -/A << /S /GoTo /D (page.94) >> ->> endobj -5226 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [211.603 307.9457 223.5582 318.8496] -/Subtype /Link -/A << /S /GoTo /D (page.79) >> ->> endobj -5227 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [141.0181 284.7592 157.9546 295.6631] -/Subtype /Link -/A << /S /GoTo /D (page.123) >> ->> endobj -5228 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [148.3408 273.4495 165.2773 283.6361] -/Subtype /Link -/A << /S /GoTo /D (page.105) >> ->> endobj -5229 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [144.2461 250.263 161.1826 260.4496] -/Subtype /Link -/A << /S /GoTo /D (page.113) >> ->> endobj -5230 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [165.2768 238.236 182.2133 248.4227] -/Subtype /Link -/A << /S /GoTo /D (page.124) >> ->> endobj -5231 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 213.4648 175.27 224.3687] -/Subtype /Link -/A << /S /GoTo /D (page.56) >> ->> endobj -5232 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.6425 189.4108 138.5976 200.3147] -/Subtype /Link -/A << /S /GoTo /D (page.67) >> ->> endobj -5233 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 177.3838 175.27 188.2878] -/Subtype /Link -/A << /S /GoTo /D (page.60) >> ->> endobj -5234 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.1403 154.0471 216.0768 164.2338] -/Subtype /Link -/A << /S /GoTo /D (page.121) >> ->> endobj -5235 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [152.6645 141.3029 169.601 152.2068] -/Subtype /Link -/A << /S /GoTo /D (page.121) >> ->> endobj -5236 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.3933 117.2489 151.3298 128.1528] -/Subtype /Link -/A << /S /GoTo /D (page.121) >> ->> endobj -5237 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.9906 105.2219 167.9271 116.1259] -/Subtype /Link -/A << /S /GoTo /D (page.125) >> ->> endobj -5238 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [350.8746 619.7797 367.8111 630.6836] -/Subtype /Link -/A << /S /GoTo /D (page.121) >> ->> endobj -5239 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [354.1917 607.7527 371.1282 618.6566] -/Subtype /Link -/A << /S /GoTo /D (page.126) >> ->> endobj -5240 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.1781 585.2835 372.1146 595.4701] -/Subtype /Link -/A << /S /GoTo /D (page.167) >> ->> endobj -5241 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.7361 573.2565 372.6726 583.4432] -/Subtype /Link -/A << /S /GoTo /D (page.168) >> ->> endobj -5242 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.3297 561.2295 401.2849 571.4162] -/Subtype /Link -/A << /S /GoTo /D (page.90) >> ->> endobj -5243 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.298 526.0161 372.2345 536.2027] -/Subtype /Link -/A << /S /GoTo /D (page.103) >> ->> endobj -5244 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [360.8372 501.9621 377.7737 512.1488] -/Subtype /Link -/A << /S /GoTo /D (page.103) >> ->> endobj -5245 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.6463 489.9351 396.5828 500.1218] -/Subtype /Link -/A << /S /GoTo /D (page.103) >> ->> endobj -5246 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.761 477.9081 392.6975 488.0948] -/Subtype /Link -/A << /S /GoTo /D (page.103) >> ->> endobj -5247 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [373.5691 465.8812 390.5056 476.0678] -/Subtype /Link -/A << /S /GoTo /D (page.104) >> ->> endobj -5248 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.298 441.8272 372.2345 452.0139] -/Subtype /Link -/A << /S /GoTo /D (page.103) >> ->> endobj -5249 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [366.3662 429.8002 383.3027 439.9869] -/Subtype /Link -/A << /S /GoTo /D (page.127) >> ->> endobj -5250 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.298 405.7463 372.2345 415.9329] -/Subtype /Link -/A << /S /GoTo /D (page.103) >> ->> endobj -5251 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.298 381.6923 372.2345 391.8789] -/Subtype /Link -/A << /S /GoTo /D (page.104) >> ->> endobj -5252 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [462.3752 368.948 479.3117 379.852] -/Subtype /Link -/A << /S /GoTo /D (page.102) >> ->> endobj -5253 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [390.3358 345.7615 402.291 356.6655] -/Subtype /Link -/A << /S /GoTo /D (page.95) >> ->> endobj -5254 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [360.8269 334.4518 372.7821 344.6385] -/Subtype /Link -/A << /S /GoTo /D (page.27) >> ->> endobj -5255 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [333.709 321.7076 350.6455 332.6115] -/Subtype /Link -/A << /S /GoTo /D (page.128) >> ->> endobj -5256 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.918 310.3979 409.8731 320.5845] -/Subtype /Link -/A << /S /GoTo /D (page.96) >> ->> endobj -5257 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [399.0338 298.3709 410.9889 308.5576] -/Subtype /Link -/A << /S /GoTo /D (page.97) >> ->> endobj -5258 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [426.6999 286.3439 438.6551 296.5306] -/Subtype /Link -/A << /S /GoTo /D (page.97) >> ->> endobj -5259 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [412.085 274.3169 424.0402 284.5036] -/Subtype /Link -/A << /S /GoTo /D (page.97) >> ->> endobj -5260 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [387.9554 262.29 399.9106 272.4766] -/Subtype /Link -/A << /S /GoTo /D (page.97) >> ->> endobj -5261 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [390.1671 250.263 402.1223 260.4496] -/Subtype /Link -/A << /S /GoTo /D (page.98) >> ->> endobj -5262 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [457.5143 238.236 469.4695 248.4227] -/Subtype /Link -/A << /S /GoTo /D (page.98) >> ->> endobj -5263 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [387.3975 226.209 399.3526 236.3957] -/Subtype /Link -/A << /S /GoTo /D (page.98) >> ->> endobj -5264 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [415.4025 214.182 427.3577 224.3687] -/Subtype /Link -/A << /S /GoTo /D (page.99) >> ->> endobj -5265 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [413.878 202.1551 425.8332 212.3417] -/Subtype /Link -/A << /S /GoTo /D (page.99) >> ->> endobj -5266 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [407.7013 190.1281 419.6565 200.3147] -/Subtype /Link -/A << /S /GoTo /D (page.99) >> ->> endobj -5267 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.4946 178.1011 405.4498 188.2878] -/Subtype /Link -/A << /S /GoTo /D (page.99) >> ->> endobj -5268 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [416.7473 166.0741 433.6837 176.2608] -/Subtype /Link -/A << /S /GoTo /D (page.100) >> ->> endobj -5269 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [427.1483 154.0471 444.0848 164.2338] -/Subtype /Link -/A << /S /GoTo /D (page.100) >> ->> endobj -5270 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.6343 129.2759 365.5895 140.1798] -/Subtype /Link -/A << /S /GoTo /D (page.96) >> ->> endobj -5271 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [351.7713 117.2489 368.7078 128.1528] -/Subtype /Link -/A << /S /GoTo /D (page.129) >> ->> endobj -5272 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.6343 93.195 365.5895 104.0989] -/Subtype /Link -/A << /S /GoTo /D (page.97) >> ->> endobj -5203 0 obj << -/D [5201 0 R /XYZ 90 757.9346 null] ->> endobj -5200 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5275 0 obj << -/Length 3125 -/Filter /FlateDecode ->> -stream -xڥr9uiGK3a"艞C^z̔Jrpa~UdYRB!ø\}vW_/o?S2H*Wc A ]m>vxrzͫa!!s*z[Ķo'īb_#b ]};o.ۙ^J9JI$ -ߪ)o7'1SMOӈpV"/Ys0 fޮQ?!&OxUaId@çGȰçק{s#X) hpؿʩ ->=}˰-,Nױ4]-؄X*ӊ,%Z,Va@\tK_t\GpZXܴ") -Z*jZT#Nq8NN2 b -\%ri%؄St>[jBq$_>€''9:ȿΩj9I1T;[?=~vDởF#8YO_txXj<?*b&YТd=:N!)IEY`4e?0'q\2rq9ۛ W–Ϩ0lYC0t T[ GJHZS.l.ޝnN^H1[>€#'2:PgԴ8H&}1@( ;;23fyD! mҁ4co6gi\<[89ͳp۽a@Y,ω"OwOgG0Q*v N?eV0h1S\=X&a8r}:ڃEtw! ($kw̟et?ߩz>asP( >|_ZQzK€ҟ[`)Ky-!p8~߼UƓ)ච04v+kXMYs38.qbjC(ó™TJ8 8P840`l28 €BvG 6AS\=&8!9/OJ #,9@a{f00NpgfUa y~}9{y,i€/Dڮ@p -kO8R# 8YN_tpDYZwI_/Da@UJ_tT@ -(VcpxmTl -Zh&iZ4X#k ,XCOd'oEsoW3b %G 뺄Eޠ1{#W{ˇ@_ij PE)'Xz8X~EI PE x\c*#$x-A+~$L5 9YP_'v5eQTM Tl9 z`":w*~Æ-:NV.-wt":cђMG_A3~sGiKѼ{! (4kwUfw49) R9Wf4c*SN@R&r!N?dV hd0O;U=[O@R(@ |mo:"p{0 -a.C0Х - nG-CI܁Wl= ,"qy}Ma0[ ~J!m^22v ET=[iփ?ߋӁ]H:! (O݉*MeځtU=[bGV޲)Tˇ@_gjmPIiqgcSgbYi{lSP;p€/;Pӱu#Q0tPR"ic1 ɺAm=(!|ݟ儂!':P'Զp%!D#ɌXN(hrJ Ej:B)Oz~{y/F ==Rt?V! (J=t 4z"qpnEH{ -ZK(@P -INt?Ww.`d90AzxTtl= }E{I@! Lg!€Rٙ;c& :@Vsͪ'\K>$ ̬€ Ln%}g` KAҁU=[>3+-](0V€Ri470;UOr:y{zˣx SKMì€|H۝d0gkH^*w,,PI;1,\TϾ~JjnmH8$cv 5Nճu̿׌ZgCAt1ݱ l&@Mֳ -1=?}@äT-6NeuΦmpl"sNK};GQV!$vrD=O:ŰϿ9Rp<%~m/퍆o0бdO!Yځd6z=̻|*m,.ѰiQn?WY+y]1gjf ψJxaThb$2^OG>"=Ջfߧi ^_M_qyeG ا'~x>Qqx};}p2#>}=/۫kLendstream -endobj -5274 0 obj << -/Type /Page -/Contents 5275 0 R -/Resources 5273 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5191 0 R -/Annots [ 5277 0 R 5278 0 R 5279 0 R 5280 0 R 5281 0 R 5282 0 R 5283 0 R 5284 0 R 5285 0 R 5286 0 R 5287 0 R 5288 0 R 5289 0 R 5290 0 R 5291 0 R 5292 0 R 5293 0 R 5294 0 R 5295 0 R 5296 0 R 5297 0 R 5298 0 R 5299 0 R 5300 0 R 5301 0 R 5302 0 R 5303 0 R 5304 0 R 5305 0 R 5306 0 R 5307 0 R 5308 0 R 5309 0 R 5310 0 R 5311 0 R 5312 0 R 5313 0 R 5314 0 R 5315 0 R 5316 0 R 5317 0 R 5318 0 R 5319 0 R 5320 0 R 5321 0 R 5322 0 R 5323 0 R 5324 0 R 5325 0 R 5326 0 R 5327 0 R 5328 0 R 5329 0 R 5330 0 R 5331 0 R 5332 0 R 5333 0 R 5334 0 R 5335 0 R 5336 0 R 5337 0 R 5338 0 R 5339 0 R 5340 0 R ] ->> endobj -5277 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 714.8637 149.1082 725.7676] -/Subtype /Link -/A << /S /GoTo /D (page.97) >> ->> endobj -5278 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 690.9534 149.1082 701.8573] -/Subtype /Link -/A << /S /GoTo /D (page.97) >> ->> endobj -5279 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 667.043 149.1082 677.947] -/Subtype /Link -/A << /S /GoTo /D (page.97) >> ->> endobj -5280 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 643.1327 149.1082 654.0366] -/Subtype /Link -/A << /S /GoTo /D (page.98) >> ->> endobj -5281 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 619.2223 149.1082 630.1263] -/Subtype /Link -/A << /S /GoTo /D (page.98) >> ->> endobj -5282 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 595.312 149.1082 606.2159] -/Subtype /Link -/A << /S /GoTo /D (page.98) >> ->> endobj -5283 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 571.4017 149.1082 582.3056] -/Subtype /Link -/A << /S /GoTo /D (page.99) >> ->> endobj -5284 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 547.4913 149.1082 558.3953] -/Subtype /Link -/A << /S /GoTo /D (page.99) >> ->> endobj -5285 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 523.581 149.1082 534.4849] -/Subtype /Link -/A << /S /GoTo /D (page.99) >> ->> endobj -5286 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 499.6707 149.1082 510.5746] -/Subtype /Link -/A << /S /GoTo /D (page.99) >> ->> endobj -5287 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 475.7603 154.0895 486.6643] -/Subtype /Link -/A << /S /GoTo /D (page.100) >> ->> endobj -5288 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [137.153 451.85 154.0895 462.7539] -/Subtype /Link -/A << /S /GoTo /D (page.100) >> ->> endobj -5289 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [101.7359 439.8948 118.6724 450.7988] -/Subtype /Link -/A << /S /GoTo /D (page.130) >> ->> endobj -5290 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [160.9536 428.6569 172.9088 438.8436] -/Subtype /Link -/A << /S /GoTo /D (page.31) >> ->> endobj -5291 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.9911 416.7018 162.9463 426.8884] -/Subtype /Link -/A << /S /GoTo /D (page.31) >> ->> endobj -5292 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.2028 404.7466 165.158 414.9333] -/Subtype /Link -/A << /S /GoTo /D (page.32) >> ->> endobj -5293 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.4332 392.7914 162.3883 402.9781] -/Subtype /Link -/A << /S /GoTo /D (page.32) >> ->> endobj -5294 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [173.2774 380.8363 185.2326 391.0229] -/Subtype /Link -/A << /S /GoTo /D (page.32) >> ->> endobj -5295 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [182.5426 368.8811 194.4978 379.0678] -/Subtype /Link -/A << /S /GoTo /D (page.33) >> ->> endobj -5296 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.5739 356.9259 175.5291 367.1126] -/Subtype /Link -/A << /S /GoTo /D (page.33) >> ->> endobj -5297 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [170.9163 344.9708 182.8715 355.1574] -/Subtype /Link -/A << /S /GoTo /D (page.33) >> ->> endobj -5298 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.7045 333.0156 212.6596 343.2022] -/Subtype /Link -/A << /S /GoTo /D (page.33) >> ->> endobj -5299 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [190.184 321.0604 202.1392 331.2471] -/Subtype /Link -/A << /S /GoTo /D (page.34) >> ->> endobj -5300 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [192.3957 309.1053 204.3508 319.2919] -/Subtype /Link -/A << /S /GoTo /D (page.34) >> ->> endobj -5301 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [160.3958 297.1501 172.351 307.3367] -/Subtype /Link -/A << /S /GoTo /D (page.34) >> ->> endobj -5302 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [195.2549 285.1949 207.2101 295.3816] -/Subtype /Link -/A << /S /GoTo /D (page.35) >> ->> endobj -5303 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.6612 260.5673 133.6163 271.4712] -/Subtype /Link -/A << /S /GoTo /D (page.31) >> ->> endobj -5304 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.6612 236.657 133.6163 247.5609] -/Subtype /Link -/A << /S /GoTo /D (page.31) >> ->> endobj -5305 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.6612 212.7466 133.6163 223.6506] -/Subtype /Link -/A << /S /GoTo /D (page.32) >> ->> endobj -5306 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.6612 188.8363 133.6163 199.7402] -/Subtype /Link -/A << /S /GoTo /D (page.32) >> ->> endobj -5307 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.6612 164.926 133.6163 175.8299] -/Subtype /Link -/A << /S /GoTo /D (page.32) >> ->> endobj -5308 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.6612 141.0156 133.6163 151.9196] -/Subtype /Link -/A << /S /GoTo /D (page.33) >> ->> endobj -5309 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.6612 117.1053 133.6163 128.0092] -/Subtype /Link -/A << /S /GoTo /D (page.33) >> ->> endobj -5310 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [121.6612 93.195 133.6163 104.0989] -/Subtype /Link -/A << /S /GoTo /D (page.33) >> ->> endobj -5311 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [338.1425 714.8039 350.0976 725.7079] -/Subtype /Link -/A << /S /GoTo /D (page.33) >> ->> endobj -5312 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [338.1425 690.774 350.0976 701.678] -/Subtype /Link -/A << /S /GoTo /D (page.34) >> ->> endobj -5313 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [338.1425 666.7441 350.0976 677.6481] -/Subtype /Link -/A << /S /GoTo /D (page.34) >> ->> endobj -5314 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [338.1425 642.7143 350.0976 653.6182] -/Subtype /Link -/A << /S /GoTo /D (page.34) >> ->> endobj -5315 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [338.1425 618.6844 350.0976 629.5883] -/Subtype /Link -/A << /S /GoTo /D (page.35) >> ->> endobj -5316 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [377.4249 584.4129 394.3613 594.5995] -/Subtype /Link -/A << /S /GoTo /D (page.106) >> ->> endobj -5317 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.9641 572.3979 399.9006 582.5846] -/Subtype /Link -/A << /S /GoTo /D (page.106) >> ->> endobj -5318 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [396.0846 559.6657 413.0211 570.5696] -/Subtype /Link -/A << /S /GoTo /D (page.106) >> ->> endobj -5319 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [387.3974 547.6507 404.3339 558.5547] -/Subtype /Link -/A << /S /GoTo /D (page.106) >> ->> endobj -5320 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.4062 535.6358 399.3427 546.5397] -/Subtype /Link -/A << /S /GoTo /D (page.107) >> ->> endobj -5321 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [354.74 512.3232 371.6765 522.5098] -/Subtype /Link -/A << /S /GoTo /D (page.106) >> ->> endobj -5322 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [354.74 488.2933 371.6765 498.48] -/Subtype /Link -/A << /S /GoTo /D (page.106) >> ->> endobj -5323 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [354.74 464.2634 371.6765 474.4501] -/Subtype /Link -/A << /S /GoTo /D (page.106) >> ->> endobj -5324 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [354.74 440.2335 371.6765 450.4202] -/Subtype /Link -/A << /S /GoTo /D (page.106) >> ->> endobj -5325 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [354.74 416.2036 371.6765 426.3903] -/Subtype /Link -/A << /S /GoTo /D (page.107) >> ->> endobj -5326 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [357.5095 381.2149 374.446 391.4015] -/Subtype /Link -/A << /S /GoTo /D (page.111) >> ->> endobj -5327 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [357.5095 357.185 374.446 367.3716] -/Subtype /Link -/A << /S /GoTo /D (page.111) >> ->> endobj -5328 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [357.5095 333.1551 374.446 343.3417] -/Subtype /Link -/A << /S /GoTo /D (page.111) >> ->> endobj -5329 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [357.5095 309.1252 374.446 319.3118] -/Subtype /Link -/A << /S /GoTo /D (page.112) >> ->> endobj -5330 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [357.5095 285.0953 374.446 295.2819] -/Subtype /Link -/A << /S /GoTo /D (page.112) >> ->> endobj -5331 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [392.3786 260.3481 409.3151 271.2521] -/Subtype /Link -/A << /S /GoTo /D (page.109) >> ->> endobj -5332 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.1173 248.3332 391.0538 259.2371] -/Subtype /Link -/A << /S /GoTo /D (page.109) >> ->> endobj -5333 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [373.0113 236.3182 389.9478 247.2222] -/Subtype /Link -/A << /S /GoTo /D (page.109) >> ->> endobj -5334 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [394.5899 225.0206 411.5264 235.2072] -/Subtype /Link -/A << /S /GoTo /D (page.108) >> ->> endobj -5335 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [349.7687 200.2734 366.7051 211.1773] -/Subtype /Link -/A << /S /GoTo /D (page.109) >> ->> endobj -5336 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [349.7687 176.2435 366.7051 187.1475] -/Subtype /Link -/A << /S /GoTo /D (page.109) >> ->> endobj -5337 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [349.7687 152.2136 366.7051 163.1176] -/Subtype /Link -/A << /S /GoTo /D (page.109) >> ->> endobj -5338 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.0858 140.1987 370.0223 151.1026] -/Subtype /Link -/A << /S /GoTo /D (page.131) >> ->> endobj -5339 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [361.903 117.9421 378.8395 128.1288] -/Subtype /Link -/A << /S /GoTo /D (page.110) >> ->> endobj -5340 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [367.4819 93.9122 384.4183 104.0989] -/Subtype /Link -/A << /S /GoTo /D (page.111) >> ->> endobj -5276 0 obj << -/D [5274 0 R /XYZ 90 757.9346 null] ->> endobj -5273 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5343 0 obj << -/Length 4208 -/Filter /FlateDecode ->> -stream -xڥ\mo_oNu"mZtui;%|۝zfγp5;;w(C=  C;wiϯ~=hFg ??G?/]%] ͼOz~:>Pœ_$gN~_ (D3WpLܠ3bS@#@@aI Bg -~gm48a5q5d <7~5`հΚSs.=>.t')ݪsn5;>{VUUʘ=zD[=hqr `>?9 $T>n( /?5_ tF%gя(58:4cOKR&)eA i%}sL90>`\ 65/%1Ä}A~ּro}@a1vn!=85}>ZX !]u/1 &oD)SF7Cy.erc"RVJVwQk -ދŵ΂?lw_'S V/Fҋp -lJιXS&< -rޒ.-yq*+fƚ);׷t5f}A/~ -M(5)- -9ǻ%Wv -Kn -r^Sgm|7T7O@aIi8 ,Qʨ?YP]PW,(5)@ (z;'7XS 7½v:)x~<}y=~wSM7D|3L{ &#BH2 en7?o!S=!s%ܠ3W~Re3(+y - /II螼aGE?گ0Q 'Œ9* -(ի.g(;4ǒ?l{sGC1%y3ShK Җ܍꿷 -~;Ť>o8Q"gؼ !7͛︚X;o8ƙ7z'_-D ۛO\L &'3Lr(Qڊ8M߈PS"`3,E6p0w{| eglS -!7J+nKPYj*f[ -(+D-# l76Uq?h,?;^4E[@! DH p{ ^IXFFbD3Vj^u_FjTcZ?;8UdDsN`0M&{(#B8SnyV<=nŮ ƺ >ܠ3~ A&^?0$8t<v}A~eO~&jO 43!˥R3 hf+l&@w$/I5(60^f#}W`&+\?}J'բ@G&Igxl?-Na&cDrΠͩp^䯥 4)@斕 -hFPOhR:f6rPo+Pm -Ca,퍰h+g<~A/~7[h(6ϨZ@_Oܩ[?P5pp@ - R+Vi]& r|O 00r:ߍ*97!7+P$= R#hFQ~zu2r^qT4 -F~pw7P -tnbӓ?}j%2_E-%+#~ :cmOm'1WM(5)$,։R *F\#Я 325"l.kT/kΚ4bPF7it%_raOW)3XS)0 -eYJQ\/zwZ`GUA/)~ǃ6'iSƚt+Uu:A]h?­ۿؒ9(Z/;PiB%۫^̵nCnۭk׮mj-*04-#q[&>}bdk#7Q/Ou$†wV/P.' Gr? Q/ʅFe@w|%$K?CM!7XH…qBnU$QkR -S'xg}םE줽ʷc.;u VCqBXL¿d1vWL#.ӧQf6" F4ZgM@JrM/V;GU/`E - -!Q!n т mJ,V7hN_iJK0d+ aM:iAuOEz›߾3WJekJET:kRJc- w~N!Ns?B_XAs^gЇ*p@l?>;݋UMPkT'܇~{Ws4wzCPɿ֨HEx{oWХ|WH놝.Qf&Qe -eYD@ T/0q̿}j VL!}zɿe֘e-΄:OOS`O/Fab^/k\>7_w8 07X9L0 _<DXBeI?[x_Z0;8'4JP> endobj -5345 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.1937 726.8189 175.1302 737.7228] -/Subtype /Link -/A << /S /GoTo /D (page.111) >> ->> endobj -5346 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.175 714.8347 180.1115 725.7386] -/Subtype /Link -/A << /S /GoTo /D (page.111) >> ->> endobj -5347 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [166.4925 702.8505 183.429 713.7544] -/Subtype /Link -/A << /S /GoTo /D (page.112) >> ->> endobj -5348 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [154.8659 691.5836 171.8024 701.7702] -/Subtype /Link -/A << /S /GoTo /D (page.112) >> ->> endobj -5349 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [144.3453 679.5994 161.2818 689.7861] -/Subtype /Link -/A << /S /GoTo /D (page.132) >> ->> endobj -5350 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.1573 667.6152 193.1124 677.8019] -/Subtype /Link -/A << /S /GoTo /D (page.62) >> ->> endobj -5351 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [115.0158 655.631 131.9522 665.8177] -/Subtype /Link -/A << /S /GoTo /D (page.133) >> ->> endobj -5352 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [169.6507 642.9296 181.6059 653.8335] -/Subtype /Link -/A << /S /GoTo /D (page.92) >> ->> endobj -5353 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.7314 631.6627 170.6866 641.8493] -/Subtype /Link -/A << /S /GoTo /D (page.92) >> ->> endobj -5354 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.8185 619.6785 176.7736 629.8651] -/Subtype /Link -/A << /S /GoTo /D (page.92) >> ->> endobj -5355 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.9906 607.6943 162.9457 617.8809] -/Subtype /Link -/A << /S /GoTo /D (page.93) >> ->> endobj -5356 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [147.0354 594.9928 158.9906 605.8968] -/Subtype /Link -/A << /S /GoTo /D (page.91) >> ->> endobj -5357 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.941 571.7417 146.8962 581.9284] -/Subtype /Link -/A << /S /GoTo /D (page.92) >> ->> endobj -5358 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.941 547.7734 146.8962 557.96] -/Subtype /Link -/A << /S /GoTo /D (page.92) >> ->> endobj -5359 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.941 523.805 146.8962 533.9916] -/Subtype /Link -/A << /S /GoTo /D (page.92) >> ->> endobj -5360 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [134.941 499.8366 146.8962 510.0233] -/Subtype /Link -/A << /S /GoTo /D (page.93) >> ->> endobj -5361 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 464.7047 151.3298 475.6086] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5362 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 440.7363 151.3298 451.6403] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5363 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [135.4992 417.4852 147.4543 427.6719] -/Subtype /Link -/A << /S /GoTo /D (page.67) >> ->> endobj -5364 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [155.9724 404.7838 167.9276 415.6877] -/Subtype /Link -/A << /S /GoTo /D (page.67) >> ->> endobj -5365 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [162.6073 392.7996 174.5625 403.7035] -/Subtype /Link -/A << /S /GoTo /D (page.71) >> ->> endobj -5366 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [204.4604 381.5327 216.4156 391.7193] -/Subtype /Link -/A << /S /GoTo /D (page.66) >> ->> endobj -5367 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [144.7047 368.8312 156.6599 379.7352] -/Subtype /Link -/A << /S /GoTo /D (page.71) >> ->> endobj -5368 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [162.6173 356.847 174.5725 367.751] -/Subtype /Link -/A << /S /GoTo /D (page.67) >> ->> endobj -5369 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.9911 344.8628 162.9463 355.7668] -/Subtype /Link -/A << /S /GoTo /D (page.72) >> ->> endobj -5370 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [162.6073 332.8787 174.5625 343.7826] -/Subtype /Link -/A << /S /GoTo /D (page.67) >> ->> endobj -5371 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [144.9136 320.8945 156.8688 331.7984] -/Subtype /Link -/A << /S /GoTo /D (page.68) >> ->> endobj -5372 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [170.3681 308.9103 182.3233 319.8142] -/Subtype /Link -/A << /S /GoTo /D (page.68) >> ->> endobj -5373 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.798 296.9261 155.7531 307.83] -/Subtype /Link -/A << /S /GoTo /D (page.72) >> ->> endobj -5374 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.2123 284.9419 165.1675 295.8459] -/Subtype /Link -/A << /S /GoTo /D (page.68) >> ->> endobj -5375 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.8852 272.9577 161.8403 283.8617] -/Subtype /Link -/A << /S /GoTo /D (page.69) >> ->> endobj -5376 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.1937 260.9735 170.1488 271.8775] -/Subtype /Link -/A << /S /GoTo /D (page.69) >> ->> endobj -5377 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [145.4615 248.9894 157.4167 259.8933] -/Subtype /Link -/A << /S /GoTo /D (page.72) >> ->> endobj -5378 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [174.7915 237.0052 186.7466 247.9091] -/Subtype /Link -/A << /S /GoTo /D (page.69) >> ->> endobj -5379 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [167.8977 225.021 179.8528 235.9249] -/Subtype /Link -/A << /S /GoTo /D (page.70) >> ->> endobj -5380 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [177.5613 213.0368 189.5164 223.9407] -/Subtype /Link -/A << /S /GoTo /D (page.70) >> ->> endobj -5381 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.175 201.0526 175.1302 211.9566] -/Subtype /Link -/A << /S /GoTo /D (page.70) >> ->> endobj -5382 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [224.8828 189.7857 236.8379 199.9724] -/Subtype /Link -/A << /S /GoTo /D (page.76) >> ->> endobj -5383 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [194.1583 177.0843 206.1134 187.9882] -/Subtype /Link -/A << /S /GoTo /D (page.46) >> ->> endobj -5384 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [203.0152 165.1001 214.9704 176.004] -/Subtype /Link -/A << /S /GoTo /D (page.37) >> ->> endobj -5385 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [193.0528 153.8332 205.008 164.0198] -/Subtype /Link -/A << /S /GoTo /D (page.55) >> ->> endobj -5386 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [201.5208 141.849 213.476 152.0356] -/Subtype /Link -/A << /S /GoTo /D (page.41) >> ->> endobj -5387 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.255 129.8648 212.2101 140.0514] -/Subtype /Link -/A << /S /GoTo /D (page.40) >> ->> endobj -5388 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [227.9218 117.1633 239.877 128.0673] -/Subtype /Link -/A << /S /GoTo /D (page.89) >> ->> endobj -5389 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.415 105.1791 185.3515 116.0831] -/Subtype /Link -/A << /S /GoTo /D (page.169) >> ->> endobj -5390 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.4811 93.195 170.4176 104.0989] -/Subtype /Link -/A << /S /GoTo /D (page.170) >> ->> endobj -5391 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [340.6329 726.8189 357.5693 737.7228] -/Subtype /Link -/A << /S /GoTo /D (page.171) >> ->> endobj -5392 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [356.6827 714.8637 373.6192 725.7676] -/Subtype /Link -/A << /S /GoTo /D (page.172) >> ->> endobj -5393 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [341.1908 702.9085 358.1273 713.8125] -/Subtype /Link -/A << /S /GoTo /D (page.174) >> ->> endobj -5394 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.3649 690.9534 370.3014 701.8573] -/Subtype /Link -/A << /S /GoTo /D (page.176) >> ->> endobj -5395 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.9228 678.9982 370.8593 689.9021] -/Subtype /Link -/A << /S /GoTo /D (page.177) >> ->> endobj -5396 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [383.8008 667.043 400.7373 677.947] -/Subtype /Link -/A << /S /GoTo /D (page.178) >> ->> endobj -5397 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.3588 655.0879 401.2953 665.9918] -/Subtype /Link -/A << /S /GoTo /D (page.179) >> ->> endobj -5398 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [366.6549 643.1327 383.5913 654.0366] -/Subtype /Link -/A << /S /GoTo /D (page.180) >> ->> endobj -5399 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [345.6142 631.1775 362.5507 642.0815] -/Subtype /Link -/A << /S /GoTo /D (page.181) >> ->> endobj -5400 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [346.1721 619.2223 363.1086 630.1263] -/Subtype /Link -/A << /S /GoTo /D (page.184) >> ->> endobj -5401 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.299 607.2672 385.2355 618.1711] -/Subtype /Link -/A << /S /GoTo /D (page.190) >> ->> endobj -5402 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [363.3177 595.312 380.2542 606.2159] -/Subtype /Link -/A << /S /GoTo /D (page.191) >> ->> endobj -5403 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [363.8757 583.3568 380.8121 594.2608] -/Subtype /Link -/A << /S /GoTo /D (page.192) >> ->> endobj -5404 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [358.9043 571.4017 375.8408 582.3056] -/Subtype /Link -/A << /S /GoTo /D (page.193) >> ->> endobj -5405 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 547.4913 387.1685 558.3953] -/Subtype /Link -/A << /S /GoTo /D (page.47) >> ->> endobj -5406 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 523.581 387.1685 534.4849] -/Subtype /Link -/A << /S /GoTo /D (page.48) >> ->> endobj -5407 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 499.6707 387.1685 510.5746] -/Subtype /Link -/A << /S /GoTo /D (page.48) >> ->> endobj -5408 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 475.7603 367.8111 486.6643] -/Subtype /Link -/A << /S /GoTo /D (page.83) >> ->> endobj -5409 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.1238 451.85 355.079 462.7539] -/Subtype /Link -/A << /S /GoTo /D (page.67) >> ->> endobj -5410 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [360.2693 439.8948 372.2245 450.7988] -/Subtype /Link -/A << /S /GoTo /D (page.74) >> ->> endobj -5411 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.1238 415.9845 355.079 426.8884] -/Subtype /Link -/A << /S /GoTo /D (page.71) >> ->> endobj -5412 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.1238 392.0742 355.079 402.9781] -/Subtype /Link -/A << /S /GoTo /D (page.66) >> ->> endobj -5413 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.846 368.1638 367.8012 379.0678] -/Subtype /Link -/A << /S /GoTo /D (page.77) >> ->> endobj -5414 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 344.2535 367.8111 355.1574] -/Subtype /Link -/A << /S /GoTo /D (page.83) >> ->> endobj -5415 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.846 320.3431 367.8012 331.2471] -/Subtype /Link -/A << /S /GoTo /D (page.77) >> ->> endobj -5416 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.846 296.4328 367.8012 307.3367] -/Subtype /Link -/A << /S /GoTo /D (page.78) >> ->> endobj -5417 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 272.5225 367.8111 283.4264] -/Subtype /Link -/A << /S /GoTo /D (page.83) >> ->> endobj -5418 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 248.6121 367.8111 259.5161] -/Subtype /Link -/A << /S /GoTo /D (page.83) >> ->> endobj -5419 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.1238 224.7018 355.079 235.6057] -/Subtype /Link -/A << /S /GoTo /D (page.71) >> ->> endobj -5420 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.9642 212.7466 386.9194 223.6506] -/Subtype /Link -/A << /S /GoTo /D (page.44) >> ->> endobj -5421 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 188.8363 367.8111 199.7402] -/Subtype /Link -/A << /S /GoTo /D (page.83) >> ->> endobj -5422 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 164.926 367.8111 175.8299] -/Subtype /Link -/A << /S /GoTo /D (page.84) >> ->> endobj -5423 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.1238 141.0156 355.079 151.9196] -/Subtype /Link -/A << /S /GoTo /D (page.67) >> ->> endobj -5424 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [360.2693 129.0605 372.2245 139.9644] -/Subtype /Link -/A << /S /GoTo /D (page.75) >> ->> endobj -5425 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 105.1501 387.1685 116.0541] -/Subtype /Link -/A << /S /GoTo /D (page.48) >> ->> endobj -5344 0 obj << -/D [5342 0 R /XYZ 90 757.9346 null] ->> endobj -5341 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5428 0 obj << -/Length 2842 -/Filter /FlateDecode ->> -stream -xڭ]S9V-]& `\l13RZ#Ÿrt~ `L44Aq9{<“{G{{jޟ?] rrmA$(ogO~~7X!,i -fztv[Ķ~ǓĻ#Vb#5<q7_ٽ&A66 `pPٍy] Gz1lD\j$5ֱ`>b~MD*7曻rQ%%}xa.~&9iv0t7c9p.$X}"ӁI>0p? Fzk{ÄvQU#~m[2%i!hT[bX=MKRPuA6v1v +@,QGͮ~vU -QnBb>KDP| +~j0û*ǛחW`ͬ۔ 7UcEy!x #\vm'T -ǘB03?ofۯ%H8kVKQ_Ua0k|X;ktvY:BI$j}6?moB0է&F? &ư*ӱSu3@2. kpU4ѡ3D}Fi]4LӽĬ}$EEd %uX9|vzO/ԥ~EÇX?hSH*b>g?a  <.'U-QӨ~ոogll̎儊LFf"0Ebi0)if'̯<BrQUkT2zoR)L0X? V4W,Ĵoo<%!uzJADɅTRZJf+nq6_F+Hfn>tHa!en=Cd𻠂;#kӋb 7)f# eЇA `A]9nQq[0'OÄ'n=GiB#OUP5i(ퟁ~ނ.ef S fkm4L?|ؙs#g6j41Y˚M2[B&̌I.~&-vۇ ߜgicX?YQEd.K :!&7zBADȅEyB%DGI: D2Dd'Q!ra%D~jQPB"쾂,LQEgQ#lİ!I -LH?TAB(44RZ!ra-"G9e)vcHDZ  J.D)SU-%̐\&V&K T>*ϢU *0ŒkYIq k12dTn4H™ٹLn[ M#iu+ >h:C|PAҏxmm/v0h%0 ΍ݶؒ{?>@f_GTHx>OŨ%a0M"G)g'JA͔Ȳ|(ֲ; .qSfm(#>Fdٰj?>xD7 0s@Pә3 -\4Lq[L8bXET=кrzqj>A'4}(Ohh=xЁ8F5 b?ʳl`U&2psϝJE6>hT=`|xy|~"ggF$@B(#U=!TWhPM)H(f RzJ.BOO{y] }l["tmfenZ/!vw'yRa*: c~ulT0[!v 4`ӥ9 mf-@H`d`"m5r6qԼ z0|TIՃ:1֐|ZPM+Hh. -"<-X -}v/hBD~`SAna+ VVPuCz^vTz v'/NUhhTo`sAn@KC_oUO*46ztOOǿ_rƆ`An@cC_rU)78>;/'LAi-*GTC6fSá_`And g(/PUhs/Tr0~&`U=V]{=!rr9v r+zFC|9}z vۧ:6O P.P] @ Z73x9PO8uQ%Q)tItۇrZPA<*4Z@"<(Xԃ -MDԒ -R"IThH-֋}JC,^² :e0'L[֑بh0hslkѦRslEHUHwrnW;{|!GwߙݫfW7hmtϷԬb?^v] endstream -endobj -5427 0 obj << -/Type /Page -/Contents 5428 0 R -/Resources 5426 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5491 0 R -/Annots [ 5430 0 R 5431 0 R 5432 0 R 5433 0 R 5434 0 R 5435 0 R 5436 0 R 5437 0 R 5438 0 R 5439 0 R 5440 0 R 5441 0 R 5442 0 R 5443 0 R 5444 0 R 5445 0 R 5446 0 R 5447 0 R 5448 0 R 5449 0 R 5450 0 R 5451 0 R 5452 0 R 5453 0 R 5454 0 R 5455 0 R 5456 0 R 5457 0 R 5458 0 R 5459 0 R 5460 0 R 5461 0 R 5462 0 R 5463 0 R 5464 0 R 5465 0 R 5466 0 R 5467 0 R 5468 0 R 5469 0 R 5470 0 R 5471 0 R 5472 0 R 5473 0 R 5474 0 R 5475 0 R 5476 0 R 5477 0 R 5478 0 R 5479 0 R 5480 0 R 5481 0 R 5482 0 R 5483 0 R 5484 0 R 5485 0 R 5486 0 R 5487 0 R 5488 0 R 5489 0 R 5490 0 R ] ->> endobj -5430 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 726.8189 170.6871 737.7228] -/Subtype /Link -/A << /S /GoTo /D (page.48) >> ->> endobj -5431 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.0658 714.8637 148.0023 725.7676] -/Subtype /Link -/A << /S /GoTo /D (page.134) >> ->> endobj -5432 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.6425 702.9085 138.5976 713.8125] -/Subtype /Link -/A << /S /GoTo /D (page.72) >> ->> endobj -5433 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.6425 678.9982 138.5976 689.9021] -/Subtype /Link -/A << /S /GoTo /D (page.67) >> ->> endobj -5434 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 667.043 170.6871 677.947] -/Subtype /Link -/A << /S /GoTo /D (page.52) >> ->> endobj -5435 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 643.1327 170.6871 654.0366] -/Subtype /Link -/A << /S /GoTo /D (page.48) >> ->> endobj -5436 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 619.2223 151.3298 630.1263] -/Subtype /Link -/A << /S /GoTo /D (page.84) >> ->> endobj -5437 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 595.312 170.6871 606.2159] -/Subtype /Link -/A << /S /GoTo /D (page.49) >> ->> endobj -5438 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [146.5575 583.3568 163.494 594.2608] -/Subtype /Link -/A << /S /GoTo /D (page.136) >> ->> endobj -5439 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [142.1342 571.4017 159.0707 582.3056] -/Subtype /Link -/A << /S /GoTo /D (page.137) >> ->> endobj -5440 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 547.4913 151.3298 558.3953] -/Subtype /Link -/A << /S /GoTo /D (page.84) >> ->> endobj -5441 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 523.581 151.3298 534.4849] -/Subtype /Link -/A << /S /GoTo /D (page.84) >> ->> endobj -5442 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [161.8004 499.6707 173.7556 510.5746] -/Subtype /Link -/A << /S /GoTo /D (page.37) >> ->> endobj -5443 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [161.8004 475.7603 173.7556 486.6643] -/Subtype /Link -/A << /S /GoTo /D (page.37) >> ->> endobj -5444 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [161.8004 451.85 173.7556 462.7539] -/Subtype /Link -/A << /S /GoTo /D (page.38) >> ->> endobj -5445 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.6358 439.8948 174.5723 450.7988] -/Subtype /Link -/A << /S /GoTo /D (page.138) >> ->> endobj -5446 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.6425 415.9845 138.5976 426.8884] -/Subtype /Link -/A << /S /GoTo /D (page.68) >> ->> endobj -5447 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.9323 404.0293 151.8875 414.9333] -/Subtype /Link -/A << /S /GoTo /D (page.40) >> ->> endobj -5448 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.4829 380.119 170.4381 391.0229] -/Subtype /Link -/A << /S /GoTo /D (page.41) >> ->> endobj -5449 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 356.2087 175.27 367.1126] -/Subtype /Link -/A << /S /GoTo /D (page.56) >> ->> endobj -5450 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 332.2983 175.27 343.2022] -/Subtype /Link -/A << /S /GoTo /D (page.56) >> ->> endobj -5451 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 308.388 175.27 319.2919] -/Subtype /Link -/A << /S /GoTo /D (page.56) >> ->> endobj -5452 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 284.4776 175.27 295.3816] -/Subtype /Link -/A << /S /GoTo /D (page.57) >> ->> endobj -5453 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 260.5673 175.27 271.4712] -/Subtype /Link -/A << /S /GoTo /D (page.57) >> ->> endobj -5454 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 236.657 175.27 247.5609] -/Subtype /Link -/A << /S /GoTo /D (page.58) >> ->> endobj -5455 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 212.7466 175.27 223.6506] -/Subtype /Link -/A << /S /GoTo /D (page.58) >> ->> endobj -5456 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 188.8363 175.27 199.7402] -/Subtype /Link -/A << /S /GoTo /D (page.58) >> ->> endobj -5457 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 164.926 175.27 175.8299] -/Subtype /Link -/A << /S /GoTo /D (page.59) >> ->> endobj -5458 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [163.3149 141.0156 175.27 151.9196] -/Subtype /Link -/A << /S /GoTo /D (page.59) >> ->> endobj -5459 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.6425 117.1053 138.5976 128.0092] -/Subtype /Link -/A << /S /GoTo /D (page.68) >> ->> endobj -5460 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.788 105.1501 155.7432 116.0541] -/Subtype /Link -/A << /S /GoTo /D (page.75) >> ->> endobj -5461 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.1238 726.8189 355.079 737.7228] -/Subtype /Link -/A << /S /GoTo /D (page.72) >> ->> endobj -5462 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [382.8644 714.8637 394.8196 725.7676] -/Subtype /Link -/A << /S /GoTo /D (page.61) >> ->> endobj -5463 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.1238 690.9534 355.079 701.8573] -/Subtype /Link -/A << /S /GoTo /D (page.68) >> ->> endobj -5464 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 678.9982 387.1685 689.9021] -/Subtype /Link -/A << /S /GoTo /D (page.52) >> ->> endobj -5465 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 655.0879 367.8111 665.9918] -/Subtype /Link -/A << /S /GoTo /D (page.84) >> ->> endobj -5466 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 631.1775 367.8111 642.0815] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5467 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 607.2672 367.8111 618.1711] -/Subtype /Link -/A << /S /GoTo /D (page.88) >> ->> endobj -5468 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 583.3568 367.8111 594.2608] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5469 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 559.4465 367.8111 570.3504] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5470 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 535.5362 367.8111 546.4401] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5471 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 511.6258 387.1685 522.5298] -/Subtype /Link -/A << /S /GoTo /D (page.49) >> ->> endobj -5472 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.2816 499.6707 403.2181 510.5746] -/Subtype /Link -/A << /S /GoTo /D (page.139) >> ->> endobj -5473 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 475.7603 387.1685 486.6643] -/Subtype /Link -/A << /S /GoTo /D (page.49) >> ->> endobj -5474 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.9642 451.85 386.9194 462.7539] -/Subtype /Link -/A << /S /GoTo /D (page.42) >> ->> endobj -5475 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.9642 427.9397 386.9194 438.8436] -/Subtype /Link -/A << /S /GoTo /D (page.43) >> ->> endobj -5476 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 404.0293 367.8111 414.9333] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5477 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 380.119 387.1685 391.0229] -/Subtype /Link -/A << /S /GoTo /D (page.49) >> ->> endobj -5478 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [374.9642 356.2087 386.9194 367.1126] -/Subtype /Link -/A << /S /GoTo /D (page.43) >> ->> endobj -5479 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 332.2983 367.8111 343.2022] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5480 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 308.388 367.8111 319.2919] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5481 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 284.4776 387.1685 295.3816] -/Subtype /Link -/A << /S /GoTo /D (page.50) >> ->> endobj -5482 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 260.5673 387.1685 271.4712] -/Subtype /Link -/A << /S /GoTo /D (page.50) >> ->> endobj -5483 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 236.657 367.8111 247.5609] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5484 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.1238 212.7466 355.079 223.6506] -/Subtype /Link -/A << /S /GoTo /D (page.69) >> ->> endobj -5485 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 200.7915 387.1685 211.6954] -/Subtype /Link -/A << /S /GoTo /D (page.53) >> ->> endobj -5486 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.2817 176.8811 390.2369 187.7851] -/Subtype /Link -/A << /S /GoTo /D (page.38) >> ->> endobj -5487 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.2817 152.9708 390.2369 163.8747] -/Subtype /Link -/A << /S /GoTo /D (page.38) >> ->> endobj -5488 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.2817 129.0605 390.2369 139.9644] -/Subtype /Link -/A << /S /GoTo /D (page.38) >> ->> endobj -5489 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [343.1238 105.1501 355.079 116.0541] -/Subtype /Link -/A << /S /GoTo /D (page.69) >> ->> endobj -5490 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [356.4136 93.195 368.3688 104.0989] -/Subtype /Link -/A << /S /GoTo /D (page.40) >> ->> endobj -5429 0 obj << -/D [5427 0 R /XYZ 90 757.9346 null] ->> endobj -5426 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5494 0 obj << -/Length 3664 -/Filter /FlateDecode ->> -stream -xڭ\nF}W5/y؞ęqeA (Rb5V-6Y2 eϭSF6PmeRoNW'lxχ#NsylA38㛋Ng?^|Gv?N^]'v%4z %Y ~97w'O'N9~0ԒPLԲY~5$n.1r 1FRwӟ8m6YB&QO~W)'2LBXHT^Tzt{=]F`)R6I¨V@3~*nR %Zg@3 -a ”pCfi28IѮe25QDY%u#o/]9qc/$bDZ7ШpС58V9ycr'ʙPWIHRTcDR<JEF)"B1u O|F!>qAq%/( p*֗D+6iD..+(%R/I2drP_#[QVEäCPhwDE$Lsif1(%mpp ^gn(XZszu 0vRfY@R0^x{3&Z%,֭Uq@OL)[.Wkbdq\3i`{`[Nu:|k)sFX锷X.Ⱥ_ی߷!v=ۤvmQ+VE~ٟ -Zl.CPKv+pA -L;PL -K\ͫ1NO|}1ϟT많83u2uͩRP*n{C>, TrY YSgFv=h -f+q+M..W,_O7ppnj‎@6 -dM ,*aPGUU9^ 0޿|{W/g4pW+tSvtY>B |wyKV~j{\EYX1Z;DI[CnewJwn6mfSnaw9rgvֈ:F%Fߜ5PzݩI*a^wKf,_21h -FeJUd64V/p}4"EhV0=zV3lJJZuYVhNw3?[a@aE7Ʊc/o.˹t=nT'^/OГga$my s~tɘ{ f)BKVY YRghKqSp^0 xNR<)x^#) 蔌A~1yqW~-QNeEGp&Ԓ3yS•L33 3 {Ym*pV(7( {8tY,&B.7\3IgǬY8Y@p} -^iQX# ?;J'00֐l O7wNG4Wߠ!3oW}9NS7hq!!~v[kWv?# -c F_"4_ xV[DH (5$Fo%yE n.[nʏҘ -c/mw꼺vn#淢FN.0Ґ}컋/絻2F¬B'm 8J &{}G Ml1`w4=SR -Sk -lFCPTn&yH-Ϥ(5HCvsr#Ƣ-R0go20Ґ},֗`1Mj0{^3 -!]$C1lKt9e9fރs(Z7K6CMYY`"u}P N/ tr^^^=/HKӂGg!$e]9)(s.x:$M{N؀Ge3ƻ -T]l@a!ӿ}h -`|yCP_v[—Wbcmy.׎5u `Olͧ~jin]H &|:0֠A 4zRlwN -޷3$M͏M/-1M?0iu&܄QkP vGO -PhXkx4]*i]v@aAܰ؝ 悝V(74AA~REAz%=sxn{$|,/%=0y̍zz3}ݷ摒d>Qhu<ڳ"avex?vԊgYsq@ꙷ;~1ByZFS_='2O&x>le7]FHC_GYkx_Jt^ɾ>0֐~?~X{#|]}!ҿ$ɯ{`Ik/Zo)oDICٛS7 U,{Q}9%uL=~O^A☴m&]2W3g ] -6,X -Rasz~:loΠv7_O_~/o>m<_^d|8W]TR]endstream -endobj -5493 0 obj << -/Type /Page -/Contents 5494 0 R -/Resources 5492 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5491 0 R -/Annots [ 5496 0 R 5497 0 R 5498 0 R 5499 0 R 5500 0 R 5501 0 R 5502 0 R 5503 0 R 5504 0 R 5505 0 R 5506 0 R 5507 0 R 5508 0 R 5509 0 R 5510 0 R 5511 0 R 5512 0 R 5513 0 R 5514 0 R 5515 0 R 5516 0 R 5517 0 R 5518 0 R 5519 0 R 5520 0 R 5521 0 R 5522 0 R 5523 0 R 5524 0 R 5525 0 R 5526 0 R 5527 0 R 5528 0 R 5529 0 R 5530 0 R 5531 0 R 5532 0 R 5533 0 R 5534 0 R 5535 0 R 5536 0 R 5537 0 R 5538 0 R 5539 0 R 5540 0 R 5541 0 R 5542 0 R 5543 0 R 5544 0 R 5545 0 R 5546 0 R 5547 0 R 5548 0 R 5549 0 R 5550 0 R 5551 0 R 5552 0 R 5553 0 R 5554 0 R 5555 0 R 5556 0 R 5557 0 R 5558 0 R 5559 0 R 5560 0 R 5561 0 R 5562 0 R 5563 0 R 5564 0 R 5565 0 R 5566 0 R 5567 0 R 5568 0 R 5569 0 R 5570 0 R 5571 0 R 5572 0 R 5573 0 R ] ->> endobj -5496 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [161.8004 714.8637 173.7556 725.7676] -/Subtype /Link -/A << /S /GoTo /D (page.39) >> ->> endobj -5497 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.8077 690.9534 155.7628 701.8573] -/Subtype /Link -/A << /S /GoTo /D (page.89) >> ->> endobj -5498 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.6425 667.043 138.5976 677.947] -/Subtype /Link -/A << /S /GoTo /D (page.72) >> ->> endobj -5499 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 643.1327 151.3298 654.0366] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5500 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [129.4116 631.1775 146.3481 642.0815] -/Subtype /Link -/A << /S /GoTo /D (page.140) >> ->> endobj -5501 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 607.2672 151.3298 618.1711] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5502 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 583.3568 170.6871 594.2608] -/Subtype /Link -/A << /S /GoTo /D (page.50) >> ->> endobj -5503 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 559.4465 151.3298 570.3504] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5504 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 535.5362 151.3298 546.4401] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5505 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.6425 511.6258 138.5976 522.5298] -/Subtype /Link -/A << /S /GoTo /D (page.69) >> ->> endobj -5506 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.788 499.6707 155.7432 510.5746] -/Subtype /Link -/A << /S /GoTo /D (page.75) >> ->> endobj -5507 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [149.885 487.7155 166.8215 498.6194] -/Subtype /Link -/A << /S /GoTo /D (page.142) >> ->> endobj -5508 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 463.8052 151.3298 474.7091] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5509 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 439.8948 170.6871 450.7988] -/Subtype /Link -/A << /S /GoTo /D (page.50) >> ->> endobj -5510 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 415.9845 151.3298 426.8884] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5511 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 392.0742 151.3298 402.9781] -/Subtype /Link -/A << /S /GoTo /D (page.88) >> ->> endobj -5512 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 368.1638 170.6871 379.0678] -/Subtype /Link -/A << /S /GoTo /D (page.50) >> ->> endobj -5513 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [139.3746 344.2535 151.3298 355.1574] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5514 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [150.9911 332.2983 167.9276 343.2022] -/Subtype /Link -/A << /S /GoTo /D (page.143) >> ->> endobj -5515 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.6425 308.388 138.5976 319.2919] -/Subtype /Link -/A << /S /GoTo /D (page.70) >> ->> endobj -5516 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 296.4328 170.6871 307.3367] -/Subtype /Link -/A << /S /GoTo /D (page.53) >> ->> endobj -5517 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.4829 272.5225 170.4381 283.4264] -/Subtype /Link -/A << /S /GoTo /D (page.43) >> ->> endobj -5518 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.4829 248.6121 170.4381 259.5161] -/Subtype /Link -/A << /S /GoTo /D (page.44) >> ->> endobj -5519 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 224.7018 170.6871 235.6057] -/Subtype /Link -/A << /S /GoTo /D (page.51) >> ->> endobj -5520 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 200.7915 170.6871 211.6954] -/Subtype /Link -/A << /S /GoTo /D (page.51) >> ->> endobj -5521 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.6425 176.8811 138.5976 187.7851] -/Subtype /Link -/A << /S /GoTo /D (page.70) >> ->> endobj -5522 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 152.9708 170.6871 163.8747] -/Subtype /Link -/A << /S /GoTo /D (page.51) >> ->> endobj -5523 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [152.6548 141.0156 169.5913 151.9196] -/Subtype /Link -/A << /S /GoTo /D (page.144) >> ->> endobj -5524 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [126.6425 117.1053 138.5976 128.0092] -/Subtype /Link -/A << /S /GoTo /D (page.70) >> ->> endobj -5525 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.732 105.1501 170.6871 116.0541] -/Subtype /Link -/A << /S /GoTo /D (page.54) >> ->> endobj -5526 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.8559 726.8189 367.8111 737.7228] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5527 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [375.2133 702.9085 387.1685 713.8125] -/Subtype /Link -/A << /S /GoTo /D (page.51) >> ->> endobj -5528 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.5781 678.9982 380.5333 689.9021] -/Subtype /Link -/A << /S /GoTo /D (page.47) >> ->> endobj -5529 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [377.9828 667.043 389.938 677.947] -/Subtype /Link -/A << /S /GoTo /D (page.48) >> ->> endobj -5530 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [371.2382 655.0879 383.1934 665.9918] -/Subtype /Link -/A << /S /GoTo /D (page.48) >> ->> endobj -5531 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [368.578 643.1327 380.5332 654.0366] -/Subtype /Link -/A << /S /GoTo /D (page.48) >> ->> endobj -5532 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [373.5593 631.1775 385.5145 642.0815] -/Subtype /Link -/A << /S /GoTo /D (page.48) >> ->> endobj -5533 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.0886 619.2223 391.0438 630.1263] -/Subtype /Link -/A << /S /GoTo /D (page.52) >> ->> endobj -5534 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [388.4933 607.2672 400.4485 618.1711] -/Subtype /Link -/A << /S /GoTo /D (page.48) >> ->> endobj -5535 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [376.8768 595.312 388.832 606.2159] -/Subtype /Link -/A << /S /GoTo /D (page.49) >> ->> endobj -5536 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.6937 583.3568 381.6488 594.2608] -/Subtype /Link -/A << /S /GoTo /D (page.52) >> ->> endobj -5537 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [363.6067 571.4017 375.5618 582.3056] -/Subtype /Link -/A << /S /GoTo /D (page.49) >> ->> endobj -5538 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [381.0513 559.4465 393.0064 570.3504] -/Subtype /Link -/A << /S /GoTo /D (page.49) >> ->> endobj -5539 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [363.6068 547.4913 375.5619 558.3953] -/Subtype /Link -/A << /S /GoTo /D (page.49) >> ->> endobj -5540 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [373.0012 535.5362 384.9564 546.4401] -/Subtype /Link -/A << /S /GoTo /D (page.50) >> ->> endobj -5541 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [373.9678 523.581 385.923 534.4849] -/Subtype /Link -/A << /S /GoTo /D (page.50) >> ->> endobj -5542 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [366.3665 511.6258 378.3216 522.5298] -/Subtype /Link -/A << /S /GoTo /D (page.53) >> ->> endobj -5543 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [364.7126 499.6707 376.6678 510.5746] -/Subtype /Link -/A << /S /GoTo /D (page.50) >> ->> endobj -5544 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [383.5318 487.7155 395.4869 498.6194] -/Subtype /Link -/A << /S /GoTo /D (page.50) >> ->> endobj -5545 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [385.7439 475.7603 397.699 486.6643] -/Subtype /Link -/A << /S /GoTo /D (page.50) >> ->> endobj -5546 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.379 463.8052 396.3342 474.7091] -/Subtype /Link -/A << /S /GoTo /D (page.53) >> ->> endobj -5547 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [397.6094 451.85 409.5646 462.7539] -/Subtype /Link -/A << /S /GoTo /D (page.51) >> ->> endobj -5548 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.2917 439.8948 398.2469 450.7988] -/Subtype /Link -/A << /S /GoTo /D (page.51) >> ->> endobj -5549 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [406.7647 427.9397 418.7199 438.8436] -/Subtype /Link -/A << /S /GoTo /D (page.51) >> ->> endobj -5550 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.6563 415.9845 391.6115 426.8884] -/Subtype /Link -/A << /S /GoTo /D (page.54) >> ->> endobj -5551 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.9777 404.0293 401.9329 414.9333] -/Subtype /Link -/A << /S /GoTo /D (page.51) >> ->> endobj -5552 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [372.4537 380.119 384.4089 391.0229] -/Subtype /Link -/A << /S /GoTo /D (page.74) >> ->> endobj -5553 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [379.0986 368.1638 391.0538 379.0678] -/Subtype /Link -/A << /S /GoTo /D (page.75) >> ->> endobj -5554 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.8494 356.2087 398.8046 367.1126] -/Subtype /Link -/A << /S /GoTo /D (page.75) >> ->> endobj -5555 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [391.2728 344.2535 403.228 355.1574] -/Subtype /Link -/A << /S /GoTo /D (page.75) >> ->> endobj -5556 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.2816 320.3431 398.2368 331.2471] -/Subtype /Link -/A << /S /GoTo /D (page.77) >> ->> endobj -5557 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.5408 308.388 390.4959 319.2919] -/Subtype /Link -/A << /S /GoTo /D (page.77) >> ->> endobj -5558 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.8393 296.4328 398.7945 307.3367] -/Subtype /Link -/A << /S /GoTo /D (page.78) >> ->> endobj -5559 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.2816 272.5225 398.2368 283.4264] -/Subtype /Link -/A << /S /GoTo /D (page.37) >> ->> endobj -5560 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [394.5903 260.5673 406.5455 271.4712] -/Subtype /Link -/A << /S /GoTo /D (page.37) >> ->> endobj -5561 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.4843 248.6121 405.4395 259.5161] -/Subtype /Link -/A << /S /GoTo /D (page.38) >> ->> endobj -5562 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [385.1757 236.657 397.1308 247.5609] -/Subtype /Link -/A << /S /GoTo /D (page.38) >> ->> endobj -5563 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [389.051 224.7018 401.0062 235.6057] -/Subtype /Link -/A << /S /GoTo /D (page.38) >> ->> endobj -5564 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [393.4843 212.7466 405.4395 223.6506] -/Subtype /Link -/A << /S /GoTo /D (page.38) >> ->> endobj -5565 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [392.3784 200.7915 404.3335 211.6954] -/Subtype /Link -/A << /S /GoTo /D (page.39) >> ->> endobj -5566 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [363.4177 177.5984 375.3729 187.7851] -/Subtype /Link -/A << /S /GoTo /D (page.56) >> ->> endobj -5567 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [351.9805 165.6432 363.9356 175.8299] -/Subtype /Link -/A << /S /GoTo /D (page.60) >> ->> endobj -5568 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.5408 152.9708 390.4959 163.8747] -/Subtype /Link -/A << /S /GoTo /D (page.56) >> ->> endobj -5569 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [373.5594 141.0156 385.5146 151.9196] -/Subtype /Link -/A << /S /GoTo /D (page.56) >> ->> endobj -5570 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.5408 129.0605 390.4959 139.9644] -/Subtype /Link -/A << /S /GoTo /D (page.56) >> ->> endobj -5571 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.5408 117.1053 390.4959 128.0092] -/Subtype /Link -/A << /S /GoTo /D (page.57) >> ->> endobj -5572 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.5408 105.1501 390.4959 116.0541] -/Subtype /Link -/A << /S /GoTo /D (page.57) >> ->> endobj -5573 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [378.5408 93.195 390.4959 104.0989] -/Subtype /Link -/A << /S /GoTo /D (page.58) >> ->> endobj -5495 0 obj << -/D [5493 0 R /XYZ 90 757.9346 null] ->> endobj -5492 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -5576 0 obj << -/Length 3800 -/Filter /FlateDecode ->> -stream -xڥ\kS7ίR~쐵cg) -õC-GmH-*UNδ[_0/<[Xm,οmW-L\nJX~<Nbmh˟9ʴGBݭeɵ4DT5͞q6WC>?F_NJ<*3? {RQL:J Jk7`.ihYg xR k;#Vr_0:Yk*7'˃w ^@A|B.xR䂉 <)? Úu0r)sq|7H84ؑd^9xR`;_ǀFTM9k[ϡngo<) 0wm%oʏlT5]pekSɬ'vWyC{)sQ=4L=zBQͬFxR`_ >7Q=$76TףY`s2U'W\USFP2͟pYBSQd֫OJ~g$LZQ$H`7=`ۿq$~-4kP嬅ϔÚup,\Bpxh.~lJx6H1IiH0 \h#Ú06\İN ;m{'` zOJ\k3ߜFT5i.{dsvpOJrwF 8_ŏVkBm=v<3 zEBu\LS7Q=4y'W緧gA&)zU2IǪd Pދ7U2:I`X =hNNMZd&a$LD?欯M€걦3.*s\=\_# -驳p)#Hqh8aMrwœչN.o^`axF2AēK߹헭\Q=4w'UoL6AēK_|()"ǚd,\O~:ɇrv.)IiuIߙixXSKkVAχ'_=./ -u'%uuD0);z@+~+.۫ }/,<*myOJ'~l#&kO mw'2L 7M=-Q=ڤf(f?Y(ž^>]`P#lf&j3m -֘j}^PAkUlju `^ʹI+^wne}Z3GoY`Z Sk:Y:Z:T]2˰4$5XiXҝI6SIIʔ}, 64fz¬d*mM*p:#Lo<¥+ 6I5ºRM0/f$;fgI%}Yf4 UtUIfЎRI;+y2YN%7O_|&FXWeLdҞpi;iEDTI/UO'&BwA!}`4"DT6zKD/Њ<=^ -M2º2@}MxFQ;my^HPIm -*׫xuގ~ .G!l`̬?} ]7wյS$H7endstream -endobj -5575 0 obj << -/Type /Page -/Contents 5576 0 R -/Resources 5574 0 R -/MediaBox [0 0 595.2756 841.8898] -/Parent 5491 0 R -/Annots [ 5578 0 R 5579 0 R 5580 0 R 5581 0 R 5582 0 R 5583 0 R 5584 0 R 5585 0 R 5586 0 R 5587 0 R 5588 0 R 5589 0 R 5590 0 R 5591 0 R 5592 0 R 5593 0 R 5594 0 R 5595 0 R 5596 0 R 5597 0 R 5598 0 R 5599 0 R 5600 0 R 5601 0 R 5602 0 R 5603 0 R 5604 0 R 5605 0 R 5606 0 R 5607 0 R 5608 0 R 5609 0 R 5610 0 R 5611 0 R 5612 0 R 5613 0 R 5614 0 R 5615 0 R 5616 0 R 5617 0 R 5618 0 R 5619 0 R 5620 0 R 5621 0 R 5622 0 R 5623 0 R 5624 0 R 5625 0 R 5626 0 R 5627 0 R 5628 0 R 5629 0 R 5630 0 R 5631 0 R 5632 0 R 5633 0 R 5634 0 R 5635 0 R 5636 0 R 5637 0 R 5638 0 R 5639 0 R 5640 0 R 5641 0 R 5642 0 R 5643 0 R 5644 0 R 5645 0 R 5646 0 R 5647 0 R ] ->> endobj -5578 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [179.215 726.8189 191.1701 737.7228] -/Subtype /Link -/A << /S /GoTo /D (page.58) >> ->> endobj -5579 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.3271 714.6576 193.2823 725.5615] -/Subtype /Link -/A << /S /GoTo /D (page.58) >> ->> endobj -5580 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [183.0903 702.4963 195.0455 713.4002] -/Subtype /Link -/A << /S /GoTo /D (page.59) >> ->> endobj -5581 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [200.2458 690.335 212.201 701.2389] -/Subtype /Link -/A << /S /GoTo /D (page.59) >> ->> endobj -5582 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [144.7047 666.0124 156.6599 676.9163] -/Subtype /Link -/A << /S /GoTo /D (page.44) >> ->> endobj -5583 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [152.1068 653.8511 164.0619 664.755] -/Subtype /Link -/A << /S /GoTo /D (page.41) >> ->> endobj -5584 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [164.271 641.6898 176.2262 652.5938] -/Subtype /Link -/A << /S /GoTo /D (page.42) >> ->> endobj -5585 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [188.6196 629.5285 200.5748 640.4325] -/Subtype /Link -/A << /S /GoTo /D (page.43) >> ->> endobj -5586 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [171.4741 617.3672 183.4293 628.2712] -/Subtype /Link -/A << /S /GoTo /D (page.43) >> ->> endobj -5587 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [184.1963 605.2059 196.1514 616.1099] -/Subtype /Link -/A << /S /GoTo /D (page.43) >> ->> endobj -5588 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [208.5449 593.0447 220.5001 603.9486] -/Subtype /Link -/A << /S /GoTo /D (page.44) >> ->> endobj -5589 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [143.798 568.7221 155.7531 579.626] -/Subtype /Link -/A << /S /GoTo /D (page.61) >> ->> endobj -5590 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [144.9136 544.3995 156.8688 555.3034] -/Subtype /Link -/A << /S /GoTo /D (page.40) >> ->> endobj -5591 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [158.1937 532.2382 170.1488 543.1421] -/Subtype /Link -/A << /S /GoTo /D (page.40) >> ->> endobj -5592 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [136.6051 508.6329 148.5603 518.8195] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5593 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [131.6238 496.4716 143.579 506.6582] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5594 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [202.0594 484.3103 214.0145 494.497] -/Subtype /Link -/A << /S /GoTo /D (page.83) >> ->> endobj -5595 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [202.6172 472.149 214.5724 482.3357] -/Subtype /Link -/A << /S /GoTo /D (page.83) >> ->> endobj -5596 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.3295 459.9877 211.2847 470.1744] -/Subtype /Link -/A << /S /GoTo /D (page.83) >> ->> endobj -5597 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [194.5275 447.8264 206.4827 458.0131] -/Subtype /Link -/A << /S /GoTo /D (page.83) >> ->> endobj -5598 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [175.2499 435.6651 187.205 445.8518] -/Subtype /Link -/A << /S /GoTo /D (page.83) >> ->> endobj -5599 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.6981 423.5038 211.6533 433.6905] -/Subtype /Link -/A << /S /GoTo /D (page.84) >> ->> endobj -5600 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [168.7045 411.3426 180.6597 421.5292] -/Subtype /Link -/A << /S /GoTo /D (page.84) >> ->> endobj -5601 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [192.0967 399.1812 204.0519 409.3679] -/Subtype /Link -/A << /S /GoTo /D (page.84) >> ->> endobj -5602 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [211.8625 387.02 223.8176 397.2066] -/Subtype /Link -/A << /S /GoTo /D (page.84) >> ->> endobj -5603 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.6582 374.8587 211.6134 385.0453] -/Subtype /Link -/A << /S /GoTo /D (page.84) >> ->> endobj -5604 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [178.6573 362.6974 190.6124 372.884] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5605 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [144.3559 349.8188 156.3111 360.7227] -/Subtype /Link -/A << /S /GoTo /D (page.88) >> ->> endobj -5606 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [180.311 338.3748 192.2662 348.5614] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5607 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [177.5114 326.2135 189.4666 336.4002] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5608 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [197.4366 314.0522 209.3917 324.2389] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5609 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [212.9782 301.8909 224.9333 312.0776] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5610 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [199.8175 289.7296 211.7727 299.9163] -/Subtype /Link -/A << /S /GoTo /D (page.85) >> ->> endobj -5611 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.3418 277.5683 237.297 287.755] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5612 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [154.0895 265.407 166.0446 275.5937] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5613 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [188.261 253.2457 200.2162 263.4324] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5614 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [157.0877 240.3672 169.0429 251.2711] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5615 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [189.1772 228.2059 201.1324 239.1098] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5616 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [178.129 216.7619 190.0842 226.9485] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5617 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [238.881 204.6006 250.8362 214.7872] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5618 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [153.2028 192.4393 165.158 202.6259] -/Subtype /Link -/A << /S /GoTo /D (page.86) >> ->> endobj -5619 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [191.947 179.5607 203.9021 190.4647] -/Subtype /Link -/A << /S /GoTo /D (page.88) >> ->> endobj -5620 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [220.739 168.1167 232.6941 178.3034] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5621 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [181.2077 155.9554 193.1629 166.1421] -/Subtype /Link -/A << /S /GoTo /D (page.87) >> ->> endobj -5622 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [179.2346 130.9155 191.1898 141.8195] -/Subtype /Link -/A << /S /GoTo /D (page.89) >> ->> endobj -5623 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [155.6932 118.7543 172.6297 129.6582] -/Subtype /Link -/A << /S /GoTo /D (page.196) >> ->> endobj -5624 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [236.3796 93.9122 248.3347 104.0989] -/Subtype /Link -/A << /S /GoTo /D (page.61) >> ->> endobj -5625 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [353.106 727.5361 370.0425 737.7228] -/Subtype /Link -/A << /S /GoTo /D (page.114) >> ->> endobj -5626 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [355.1585 715.581 372.095 725.7676] -/Subtype /Link -/A << /S /GoTo /D (page.120) >> ->> endobj -5627 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [403.9849 691.6706 420.9214 701.8573] -/Subtype /Link -/A << /S /GoTo /D (page.115) >> ->> endobj -5628 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [399.5614 679.7155 416.4979 689.9021] -/Subtype /Link -/A << /S /GoTo /D (page.116) >> ->> endobj -5629 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [414.4954 667.7603 431.4319 677.947] -/Subtype /Link -/A << /S /GoTo /D (page.116) >> ->> endobj -5630 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [420.5824 655.8051 437.5189 665.9918] -/Subtype /Link -/A << /S /GoTo /D (page.116) >> ->> endobj -5631 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [408.4181 643.85 425.3546 654.0366] -/Subtype /Link -/A << /S /GoTo /D (page.116) >> ->> endobj -5632 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [386.2814 631.1775 403.2179 642.0815] -/Subtype /Link -/A << /S /GoTo /D (page.117) >> ->> endobj -5633 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [412.2935 619.9396 429.23 630.1263] -/Subtype /Link -/A << /S /GoTo /D (page.117) >> ->> endobj -5634 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [413.9572 607.2672 430.8937 618.1711] -/Subtype /Link -/A << /S /GoTo /D (page.118) >> ->> endobj -5635 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [390.1568 595.312 407.0933 606.2159] -/Subtype /Link -/A << /S /GoTo /D (page.118) >> ->> endobj -5636 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [409.5338 584.0741 426.4703 594.2608] -/Subtype /Link -/A << /S /GoTo /D (page.118) >> ->> endobj -5637 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.1259 560.1638 386.0624 570.3504] -/Subtype /Link -/A << /S /GoTo /D (page.115) >> ->> endobj -5638 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.1259 536.2535 386.0624 546.4401] -/Subtype /Link -/A << /S /GoTo /D (page.116) >> ->> endobj -5639 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.1259 512.3431 386.0624 522.5298] -/Subtype /Link -/A << /S /GoTo /D (page.116) >> ->> endobj -5640 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.1259 488.4328 386.0624 498.6194] -/Subtype /Link -/A << /S /GoTo /D (page.116) >> ->> endobj -5641 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.1259 464.5224 386.0624 474.7091] -/Subtype /Link -/A << /S /GoTo /D (page.116) >> ->> endobj -5642 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.1259 440.6121 386.0624 450.7988] -/Subtype /Link -/A << /S /GoTo /D (page.117) >> ->> endobj -5643 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.1259 416.7018 386.0624 426.8884] -/Subtype /Link -/A << /S /GoTo /D (page.117) >> ->> endobj -5644 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.1259 392.7914 386.0624 402.9781] -/Subtype /Link -/A << /S /GoTo /D (page.118) >> ->> endobj -5645 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.1259 368.8811 386.0624 379.0678] -/Subtype /Link -/A << /S /GoTo /D (page.118) >> ->> endobj -5646 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [372.443 356.9259 389.3795 367.1126] -/Subtype /Link -/A << /S /GoTo /D (page.145) >> ->> endobj -5647 0 obj << -/Type /Annot -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [369.1259 333.0156 386.0624 343.2022] -/Subtype /Link -/A << /S /GoTo /D (page.118) >> ->> endobj -5577 0 obj << -/D [5575 0 R /XYZ 90 757.9346 null] ->> endobj -5574 0 obj << -/Font << /F29 499 0 R /F23 482 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -4977 0 obj -[474 0 R /Fit] -endobj -4919 0 obj -[474 0 R /Fit] -endobj -4902 0 obj -[474 0 R /Fit] -endobj -4878 0 obj -[474 0 R /Fit] -endobj -4857 0 obj -[474 0 R /Fit] -endobj -4670 0 obj -[474 0 R /Fit] -endobj -4576 0 obj -[474 0 R /Fit] -endobj -4531 0 obj -[474 0 R /Fit] -endobj -4521 0 obj -[474 0 R /Fit] -endobj -4495 0 obj -[474 0 R /Fit] -endobj -4466 0 obj -[474 0 R /Fit] -endobj -4447 0 obj -[474 0 R /Fit] -endobj -4403 0 obj -[474 0 R /Fit] -endobj -4354 0 obj -[474 0 R /Fit] -endobj -4324 0 obj -[474 0 R /Fit] -endobj -4316 0 obj -[474 0 R /Fit] -endobj -4299 0 obj -[474 0 R /Fit] -endobj -4282 0 obj -[474 0 R /Fit] -endobj -4258 0 obj -[474 0 R /Fit] -endobj -4240 0 obj -[474 0 R /Fit] -endobj -4219 0 obj -[474 0 R /Fit] -endobj -4205 0 obj -[474 0 R /Fit] -endobj -4182 0 obj -[474 0 R /Fit] -endobj -4150 0 obj -[474 0 R /Fit] -endobj -4123 0 obj -[474 0 R /Fit] -endobj -4104 0 obj -[474 0 R /Fit] -endobj -4075 0 obj -[474 0 R /Fit] -endobj -4059 0 obj -[474 0 R /Fit] -endobj -4037 0 obj -[474 0 R /Fit] -endobj -4017 0 obj -[474 0 R /Fit] -endobj -3985 0 obj -[474 0 R /Fit] -endobj -3956 0 obj -[474 0 R /Fit] -endobj -3905 0 obj -[474 0 R /Fit] -endobj -3890 0 obj -[474 0 R /Fit] -endobj -3700 0 obj -[474 0 R /Fit] -endobj -3699 0 obj -[474 0 R /Fit] -endobj -3698 0 obj -[474 0 R /Fit] -endobj -3697 0 obj -[474 0 R /Fit] -endobj -3696 0 obj -[474 0 R /Fit] -endobj -3666 0 obj -[474 0 R /Fit] -endobj -3665 0 obj -[474 0 R /Fit] -endobj -3664 0 obj -[474 0 R /Fit] -endobj -3663 0 obj -[474 0 R /Fit] -endobj -3662 0 obj -[474 0 R /Fit] -endobj -3661 0 obj -[474 0 R /Fit] -endobj -3660 0 obj -[474 0 R /Fit] -endobj -3659 0 obj -[474 0 R /Fit] -endobj -3658 0 obj -[474 0 R /Fit] -endobj -3657 0 obj -[474 0 R /Fit] -endobj -5648 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] ->> endobj -1228 0 obj << -/Length1 1642 -/Length2 9543 -/Length3 532 -/Length 10417 -/Filter /FlateDecode ->> -stream -xteT%K4{@pw OpK0sי=fMzU]o0(aU G_ uuGua<:0T t<`",,Jp (I  P \ w@؍ L8iڻX^< N0Wg h Pzg`W5A\ &m 6qA@8v08sC}R@+}x  n+ E PtA> -x*{p~`$"YUDɍ>݃'r_B]$'-"\^\пpG@]Y7NOW4/D@xqr.|EvwuAf Cptaȇʼ> [?_5O{WjUw'']gx5me o# ubwъ0'b+?# +PzBzP$`tz.` y} -rt \>~qV?HtW&<@u<$-p29,!^T}E-IܟZ>?mLay3NQٌU1}&Ʀ9: nޫPGXKbf~M{K$: 0!jۣ*2,6^ qLBc>ީ;7!uhzoS7MLOhNAQ"w})1 ̎1W OA)hA{Y+(R GB9sR'&U7H?^O276%*GгJ&JD ڛEaǥS -S)[*(ABi'#rRmB[@6ϱOCg0ְ܄pWbHG?N _C@qR_P몵o5M$`ChrAʼ6 |J<[8J ؔ{N'2qGti?^o㽭4v4^Nu5m蛼ZAcs6!"B,r0Ag_@?<}2Tmlϰz&i2Eܭ>zC)EQ׎VQ+L)ƶ-"[|BG&~vf_}mVEkF̤f?"7QV G8=V?B&,'{t#{*eia+= "P>EbP2 -Q1j[bN미bdN϶lk3-٠PID l])Hf`鏄]4V{Jό%59u^ A1w̒\5 SW:.+C z@VI*(Սm(IC &-ÎڜԆtǷ|scz-XZW|cbM+?-QMY1/(sڣ>HiN:Waxò -ތqv.=WMJ~xa:ܷ0 Ζ.erH5ԻyLl [rxzO.:ׂʊElXibO>8eaφNon2>R;*b 8fjG,T̳vr ;Ah;'S2A"TO /ʼn(,>Q;6d+ -J Ut:I#-Մ|;");!^x Z -: -v -z'uD]1 -q'lwN]h4T)&o9/=RT{ׇ]Kg1:u17 tnѯ!4&v-3Pj O{pX6݌݅ɄX;GxwE`4WL $֊6%SmF  ڄzR0# ]o&yKUb -[d  LʰWMv#_[i5 >4 \*NW=ᷰef(l ~w%ǟvYO|M$Lce<1D:<{y l)&DA0@.lFΧ;X%!0>{?oehqchBᗓMKykg5 k Fù{òĂ)ge'Y<{y$ċ8;W&f wL|DԟzCd8l;+萰JoI/.kM4I;eȨqȩ`զM///X'-݌&󎯲p& $Gf( -Rm뷠4Wy -]~;/(32u qo}Bă_#Q5lپUFKQSe~nxaJ/Sxe*N3,xQx_}ys=tl>ݦg#zeFE5QUqr&gƱ/i=3hz74wx XGUܓɔU SU'wTP>KNIhC%> hC5n {6x K+[2^״͗(6|>a\cM͞jT_XqBU aK$vwXn"Թ+ E*Ƴ󇴎t\\!eZ܋ CUcX~9mZ - 2}K8z kl73_lY9O[=9->?%ȿ>&[j.#5<gteں\eULj/T(zVI/3^$|~8&\oeFās8;q䢋PS XMiׄeSpalښcB{,se艨oZz8<0\xg -(̎i$ƙ63!CʹuH9ˏpTvӠ* :$/6Rq RZ3ȶǭyaɍ"/N,.*/"W4o2e -'0Q{V͕n/^lW^˖(ϭ ^4;ϲ(խo:2w|Hq]x%`/{5%_"qunH:n&f!cMS]!eK6 1ydi#OҚݢp5פtrMs)ߔ ` 7'8KGLxe[H9 6$L8/Q&׳rѪb$sJu/A:`P&bTk9iK~CVwۡ ="c{.)2GS=w$Wٶ#fOOfZ^(rGkqd$iYT݄h&Y!@OhC}Ftz^O k|v!wޥ}gOuTi[k&&l'@s8Ût+N$3 7/?a Zȯ}DUo·Pr铯}?rҨl )$AEmcOȲM2l 6)믞"G,^o4{Ý"C`G[ ڬ-v -mz`cFW?t8FdQ@#Eru he_H(aas G_=am#;ߥ${<\( `ݿӕ~|OW>u< ~`izxLnTBG4di̚@:z_{"te}]ғVΏ-Ə  zÉ28pԵF*ΣEG/Sʣ*тp%.c-^sI=]U=Ia3 },uH._q_Crr״&àa͙fվX̡{Tj>t%Hwb -@L& 1bJgK.KpUjRHMTnJ+}KM2YШD-k_".S>zTRՏS.D&GOgB G9`㛫'[|$d@ny(γWm;n%~LKM_n_ pq"b~g2PPw'҂^9VzMr. w\3Ħ܅|J¹򉬦8)lcamc1d{ xmKI6WbJb ~p-+;m -iKoJb1|@}vP,}3<) <+p0YbB@(pH種jk T,b#@L]QS.3oM5+zF̙}Iv`M7`7߾W -۲A5Z>:oE/o}FLO&~z9)60H$#HI3(gOP(5C.˖dO}x^NE -Wr޼^_Do֞} ,q8$<jfXm`grĠ];?.Zwl'oiqMů^J=Z;!,N\H- $_iVӡO`O&A~S!ߥRPk``즏)ɨYѻũQ?u!cܔ>p8Z{ /ڛ|Ĝ}AtkI;a~.v1gnhE`zvzջ<ϞX`!lxARlhF~&6 -B0ϐg;br 䕭?z&\jXIb4{\E~{cV~(Y[3/%C{\"~B @)Y∰p,TY̩vDq>huڂ\SHMyQo۾ُ/P(j[sy'o@y4]n(]Fu<c^"j\ RX"7$0ʰ,T du2*_"͞_K-T `yj`[n~X襾z~XK`8p`ݩU`',+2~y5ԫ-FNtM5dČqSlKlcVn U^.#ucr4 n1j$@eMIqe8v#(~)tO ?KV景{ cLt v-Dx.dwl74H]܂Omř - ۗXK uvdx -gkES*4+duyۏ;ef]>WhY3pyMӈgߜe[X -F#d[B /m0[M/xW$)́~l`Tse&9gCܾ> M0Y׸;N8MIJs( (tfLEhK DLϩS OG%D:NoS*CO^,pV/Uל˨߮լQܬs܋ ո3s6IjwEv#Y9Դ<\1]#}sHP=pV'G hZ!Wke$@gp4IYZWA;b8LbW1U'/jGùw,x%784/T>@S@ns([}XnnɮխngE>Ѡ#*MlF(4mNG]RvU&'H lQI=m[tߜL=[ ZtP!#gI)9#7#&_LC2OIڴ#>T9,O_ 9C_Y-]H5f'ϲ^i,?@ͼjcQ¥ݥقΒyܝ"0>-:OYҮF$H \A{/VJg\(K䃅jGI|'/S>_ϻ\jClS6 ,ަgR#m2<-NWoMr^umPIUQ"~G}eqq`SYYEUxy GY\kȉެoEinY,!yeXr/koM0GaIE2X -AM,p}jo- -?J5Ngic%zcA==rO+nڋmklXeF=`E}{[ޓ<;$OE]GMk]~1PuNu)ڭ}uiݺ[ቶ+ًƯ(oE^ ->-$0U(ɨ.KQaԬ_GH%0JԸj+E*I|4ˢ^X2Jtc8_39s?\{<)d|cLѵ$$HڈMMm %=osg/bn~RM3ؗtX,KY6uHSbVꑤB!6rdX64c e 'id-נj̬-u2ޓ3ӰM4߳+XiI6:C 9c/`@LJL#66tg@v|CgWkG~.=j 5/5#4a#bu39c{Jn-v,~Yy^/^[atCc;fD{d(m{ټ֔zb13SA2>Vg3(  x,ekߘj`fQ>Pa75Sel)6ڌwb\hNi WvΈFJHղ OqÀJ5l.4 nOL!'Xql?Lj/Abׁf"IB[.O}hšQ':,eq}~3d Ƴ9 "{,irvҡB0=n%*&yXv69|q4DE8pƪDxJ(8p0=V ì'vo k8c\9. syw}RqY2Mdm8I2uV )!~T΀+JHIlFi>~[W澝DThɶz/bC#|6ŗO+~*h:A,~|~};+u.pd"`IVm{6媂zN, #{7Wt5Ä;܉l2nmx!MFNϣEȅ $n9fyca#1Ǜu Vt] -l܁9٬+fu#QcOӷvdv.< CKR3Ӎ ;w"ލVV| #[?|֫,d:yRċ qJ]oŖȮP)=yW'_lEadžرJ'VIx+a{)ܲt7~7՘ &z{j>`P^ٲ܌CL٘C;bUj-<{Y$,>yׄIYt=TB-Ue my4 hD1e-}~𨍦G-zҚ 6,^`5ַqA;ZiKՅ&j΀j mߔ8WTD{ŌSEBU wt֭ 47ōMw cES+ *4dU'? 8] -AnFx,[GO)UqZ/p'VC~g5 GœpG{endstream -endobj -1229 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 5648 0 R -/FirstChar 2 -/LastChar 122 -/Widths 5649 0 R -/BaseFont /NUDUEK+NimbusRomNo9L-MediItal -/FontDescriptor 1227 0 R ->> endobj -1227 0 obj << -/Ascent 688 -/CapHeight 688 -/Descent -209 -/FontName /NUDUEK+NimbusRomNo9L-MediItal -/ItalicAngle -15.3 -/StemV 120 -/XHeight 462 -/FontBBox [-200 -324 996 964] -/Flags 4 -/CharSet (/fi/zero/one/two/three/six/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/r/s/t/u/v/z) -/FontFile 1228 0 R ->> endobj -5649 0 obj -[556 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 500 500 500 500 0 0 500 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 500 0 500 500 444 500 444 333 500 556 278 278 500 278 778 556 500 500 0 389 389 278 556 444 0 0 0 389 ] -endobj -1171 0 obj << -/Length1 1647 -/Length2 16082 -/Length3 532 -/Length 16971 -/Filter /FlateDecode ->> -stream -xڬcx%\-vVl۶mvǶmccN:[6`ljcF7v0 ̋=vWLuA " Ml<&f0 r.S(T@G'{s3;3wd,C'? jhki -qw)*DFoˮjgbdcigW FXX[ۿ!S;_8aYTx:W&uY{A( -v+40?!,yE MܝCTN2ӁEZcsJ_o)Kٍv B.s3/6~m1w Qjڐw`D\(j/]^e[_)umpBBhyۂh 3MÙ`}U^n!\xt*JC>tgu+ZWC{Q89X[7AÑLX:yzw( Q4O~@qjT*f\cB.Ϝ :0LJy$&?1rf8LMcK>/2ue7 MUvAd(8A;!R:FZg믬N䯁y8A,1J=lH?٫X?Td2Mzz~ S\ \-Үz}2\?s_NTBR|X$刄~>edR7]"+=X8B?$7˴F -SGWpݘ /={C-КCڐ9 -h<N,,{⃜(n<-"[ԉif9i^G#e@p%M({Qo{dy*VqI(h1&nMGaC{+z.bTT|i9J \ŕ]Ŧ-XQ?IO,{HIy[ x?prn7l{cٻj6K!'wш>HxawZ.m"5tˢJ.^޴ʽ}SSYt+ tjD)Y ?Ȝ SvA;0ڽUܥ3N(pe N{IY-A%REњ۵/98~rZ}JwuJAM*n* -=00=F>(}6]!b Dou,aš$^WV&3J;FOg_k%~5%j+'3'ѧyr8 )ܡ\0hFlEKUagF2\a7b#D c8QUGol FU2b0_ǪN5vH=PC_w{G׏F!3kUI:!FU@>PZc{d[^0[R{{Zc&Fz͑vJ;ƨe%0TLm`7L5%t 4C_pA&9ƧMvƐ7ZFzKׄa+pϒ8=lWGLi_Xt*{NsSov$Q,J WQn@-FbE)T.m=ײ ~'/ˎX  " -BJa2{e7dR|6-H-S|1I2>neWxJi''OnLdsη^;`*FF:+<|HryڗdU~49vb y2E^o[jtuj~FRຏ`B65Z.7W/|69uy[se[*zwRKD}4;fXꁉ%QEw-f*!]ț7QJ6ae9,ElA;gRR&|wPݰ?-vqZCLM?QCD}w1" vNRntM; ]Xs>کT6bx?SfJ?J{Qg[pY]eanOu@aR;E[*cgt eϨǙgkNMPTY߿ w8,T%dÒCƜW GIBWr<9ZJG!Kͅ*M f QCBPT:֜ah gـf%Fnbyq;@(8@?Aozލ afMDˆ2IJ$Lp!?Wv~i$vY$_+Ⱦ -}4gr4eՎsDQ]Vv -&EIDlijVU\*roϜKm' Niҋ}}heRcu煞\ (PV zqZKœɥ M?%-k[ LJIn{`ɺ~3-wq-8;kQ'N#6l!!`c%1Gb&uO #3a ,o2)ko O贈߻ZdmbTX; -_s3B$x`+_ߋb^uG/DJZTHvt|hirV]zk/~0܈OqEŋmkɅYO2@Ba*^.鉔rnC^ڲr^;*Lk#cܡ8=?OHsEnȭZJskd)IOfV@THlDDk/};Z W0"[T6O16cVG5~?K遝">rb/PXUhng?S(*yu^ UH mI J =^<9#B1y>\Qj;s߷6uM$7eM0GYo> N@f>&bp{SF$2䍬PwYHAYCwŁ~g *VwbA+^6B%.G؜q{&MeN?+{+#rH67MS ğ'Z))}T9(ev#`zsP=Z(j}'HiZ/~7ps]>T40SQ! 6FP8,'d&~':CmFx !mхs߁gKhxFt40#w -&~ B>D#'Vyk ,*Ȏ(%Am7AuiXI.zL5fUU㳀z Wʮ5ljmMEݚ\0K\>c5TQLouc5Ӆu-|};v-6?1H quOƌ3fj~prSMH0;~)עaئ!>H>HE}.|g & zKC4O[o(#WBgk-( 9Ix$2Ӥ*xJs[?bU(ЩܼGI8{EVŜ^kfɳoPePM3 -,,ˁ T<;]FJ$Nfx}[m~x⮖%oH^&q}K&H x7fK{qc/O%a|8v!F,"'t2AA<&N&{;v!י'@7 -.iv{X[osTʡw9ή*-ݞ l+]znp/7| 87ua_ b@hv/VdG+]Z0k'Jr+Ն\/xx16]o~ -UyOjHeՌwsib- ezq_Y C+f]9)߶VabqtfEgé|@g>-(RZe{ =q qbZB៪,mXX,Nt$/ 6iE1%s0sLw&9iLVCNzx^Ø< $$dԞZE "zU -F_ܕ WE{%kζ*EIqă;so JB(8 +&CqK%R;ūL({?}֜}<u-:vA[9EwM(~HX)I& 3"C['x ؼ缳M"@r z_?dݿ2x e -;9}UF)Yu"t#AoMa{v`ZڌbX7D?oP*tg_WEݬ DyHXW%7큨&tvq_9> 1 . @È趖a?ayF>v_yRM#vsCI/$@*x}`X]d}Bz~)'lGFjTQ0 S4J'b=P<@Za:h63Kb|Pu|ڔZ88)n"9CWḵFX,|{Is/cVC5}ٺ -څw6٘B2uL:f[HwI,iَCw~e -KEXhwgƎOp$J'xΙO=K5|S4T89|%X1"]xJ>+İ[jN[ )j:˰kg!D[C`S~|>϶hl%3[V!ET.=[PD9SܝBOapYh0EngQ^qV2grq*Y@m|{노4}ò&Z7Q }SP W@E~zydjn篶,Vg=k6);ī]}ԗJ'nFdT-bY |A쵱 n(/Tuhgbȃb`r2?FxI F<|46Eo[g8qɛ9eN ^ڱ'լдIB1W|q,λm3&IžR;$a+vkU=uz^\$+C=T?ܭ5|JSs|im}cBML[D#1&.@DK.{6xA#oJU+j`Aj悘k%}*3}!`"&nϰN`aP%m0 LHz$A,DCYqB 3~ȁ/Ն}bR&8{⮴/;>J1+(<LbG>fME!7Y,[}8𥕨½F W2"u  ~Ċk#y K_MDyMuEBރ;BZ>GłT1h8ղt;kIJ7Q[0!9|IUTm,ꂌchHz$Lp[۳np j= ɧo$F̝Lt^Xq,J [:pVs󶚞'_gn\$ $YtzXn]׬w@#2,s@N|E'OTc%MM3w8| -S- J -ժ**#i^J'&}G垹R3-8@}N!0."bbyBh9y; f&0=)>!՞yW,!VsFb} pK>&{;^2k^He$Q % iC{K ?k<Ƞ>^2-47d[ImicHD~/OԵ Ѳ -}Lkr+WOQ3nꫝ3apXL^ 791c ->l(w4!zQgMMLJg JV}bD"TmJQ_%܏=5,<4ejCC'm-2z$`ޠ \FB;6=kJ="n>ɩjW\ޢ]J@/dn%pH^1 pHʀs^%h;A%G8 W󭍓ﶼ>;r -ǔdW,g,t޲앵46d&``fVB)wI34;>hE^uvxYsh2 }G2YTגj~Khnғonh+nѯ|ٽ,ddܪva^a+|ՒgXIEB1تSi{&AE*%mSY! C?`ȘޮG3]o~$;5!9#';!urk2k:h7 tE 0x: "J#+]ˆ6[)&w:׺0)CۉKN[aM۲?_CXx^\ť>ќ=[TO;Oտ¬А|J ``C"#6/8vK=(,ƞFLWxIA(n헀 f̌Jy3N'xuDwo7,e+9_DǬNej0R:g2i/&kD^KL eK<Smܻ@c am31q\o/'>F1ʟ5)@k緎9w2?.~{oL앎+s$쀔.ǟ)!\ [~ Юn<$A2= OY"br=XF+}6ZiX}Oy|z/$'\yMg7mdGQUn財KěY^C!޹1mC2{*G7ܼj .?bz/{To\II|0TlWm9%Pw-7~N.l%~EF0Z鳟򀝩WNH|1Os_i{ꢉ`4LM3+1^"CuXR`zYUyU2߀Np$4zydĬ\gy_3M>9?5*{|Մ,X(Ѣ3@Hl,vKz -A"pƱ&-QԸ{{\&8Y͂Mt+G ҝX^(vx2!Wz+v"Dn_äp8oҰkzڞ?t];y\DX\ppZdCti׻a4($H-{EN1ad/$1}x ڼLOBd`]L5[Idmatnt#QZKfV)=naT_ g!pPr#'Ȋ\dx5/Bw4g#IJ6'=Oӂп =c{ 0ap9z}S6< H0dX_e9@:'x27NOP_<6%EXIi͛P|)Ux,M?<3Pqjd Oui USίUVpK):r}):QW Tr̫R&)0$L֐!0զ^ym vq]xi2JY|0MmD3Jp<YIpZ b'T}1w)/IM \;(-.!Z -.zofa ﳰRzK a'! v @QVew"׿&莂u"6ܦ_D$8#Oew^%PO`QI6cfS ~vשLNʮ@M=A42NF!-jy$Jї鹻\ 2m -`{r슟y{yQ7N_&I͏Wuգ&-N7ڸō 気w8KCg s膮fUqw"YBj<-/D2J?s#$x7Rbax' 3TŇdz>tXalY(j\b$QW I lWJaP C[fk샿?e%;HVkt"4!s/j/sCR'2 DvQdsJNx6?M_ h88I湯aVOlsPۅ ޚ$fIr\5˞FP6qR sImG)|4>1ѐ -ɭ?pps=h{(k.փ`dSV&0UQ)n("4zSlZزoAOg{yo %aGD21d2BFz(P Ġ'>D>j>tyL֬# ª˚}tHNIvQڪwng4D펣tB ;Ģ [9oYRé~_ڰSdYO -k);d_A[},/$3'E+ӺbtA32Ibº)@6 ۫{k?PUNsA2p 0rbK;%SUO~-lNݔY"m]ǟv"]4UӤcn0xڻ3uN-*yΐCC\Zi+Ȏ-nƁysoX}iŤ )DSuOb JNBˆL[ؙxA_Gb ) :8sH>V'4I>.}UQBC;sqpS#ab;GB :mH]}7ݗc#5x=Tv.˓CK^bLzǧ:u xWECϔ (u՝tc耄,|\74=w"Zv">jy n}/%oF;ըHf~1-!U3L냾X`{!t([`Cn(yF<;W:V/0R̓.s%"=ڠ- ?pʼn➇umG~7cS0Np_,MQ3&DC$v> Q'X\ߩKt^^Th΄\ZUz,;+)L=CnqXjZwVhd(_u%L<%OMZhf4X>~1}xK{ CFX9ȹץDMaMTh^C4{Zo-PڷN*r|(orch m: - ޖ >QUPjPd3*?sXkZE3!t߀SXõcfP2iq)xpp_Gzٗ#\)Y;ެrF]jkp~m+2LH'BXQs/C |V*lgڌVkw2 G:S9_MްWJQD]܏Rۼ/~N y/ZԹfL{~K)Dh8#50j^*#oJuЂn"";ݺ"V /t"$V=C|JNGP@F_X#Y[щ_<% >1QԤוQ~K- -G`hK۵\pa4LO6źTʟ뀭 6fsYx%N;G)mK×2{^u}Ť{e -X_`?˼'͡iR_3stg +|*O\*N/ecSp\Q0?iBb&ɒm>xc.30RfNY%8X^ V/3phڮ {3#) sB_{$N{2Tvɧ֊:6;}ҽ(77^>:ҒK~Bm߾|c5O#I,t*ZHt8/ȴʦMK$Gl> endobj -1170 0 obj << -/Ascent 668 -/CapHeight 668 -/Descent -193 -/FontName /GLIAQG+NimbusRomNo9L-ReguItal -/ItalicAngle -15.5 -/StemV 78 -/XHeight 441 -/FontBBox [-169 -270 1010 924] -/Flags 4 -/CharSet (/fi/fl/quotedbl/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/six/eight/question/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/W/Y/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) -/FontFile 1171 0 R ->> endobj -5650 0 obj -[500 500 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 420 0 0 0 0 333 333 333 0 0 250 333 250 278 500 500 500 500 500 0 500 0 500 0 0 0 0 0 0 500 0 611 611 667 722 611 611 722 722 333 0 667 556 833 667 722 611 722 611 500 556 722 0 833 0 556 0 0 0 0 0 500 0 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 ] -endobj -704 0 obj << -/Length1 771 -/Length2 1151 -/Length3 532 -/Length 1712 -/Filter /FlateDecode ->> -stream -xRkTSWRIzX%2yj   b,/7^zD|PIUEltST -@}0|VZ_sJ59;4HCaP %&GR 3MтqXN "'`!>`V +/28"W0}" # -9 -rBk -0z&`L΄,bR8! -lš$A࿅!mƻTgהL: EBVRXk1LjoȚ^?xOQG9os9T: RE9fF/P12ry{;Y[3ny59*H[7_=Koq*$Y°jRsy~g-Զ;=Mc6]p/ĕ V˄\0=Lq-_gv{$᱒*] a5T[-U^,6+pIop2֧ḑ/^=c>T{^ Tmn9(~h˂]Q ڝKw֝48o>(*n_ڈc 8v9瞊PŠ+bӳvچ+u UL<>lk,O6^Yư{ǷV.ڱ"tP3ğ:up7w$Z{Lw~G[rz}4Zc1([]d;0AZ4un4z9Heq7K]Ě*!*[*9^n3̱'gە w'WF:9BIMe7w-p3%Ʀ6H;[UWc5-ѸsVSƥce;/eGXh^&.}mS?a[t+tiR45\*q8FE(olY=,o> endobj -703 0 obj << -/Ascent 694 -/CapHeight 683 -/Descent -194 -/FontName /PAZEBY+CMMI10 -/ItalicAngle -14.04 -/StemV 72 -/XHeight 431 -/FontBBox [-32 -250 1048 750] -/Flags 4 -/CharSet (/less/greater) -/FontFile 704 0 R ->> endobj -5652 0 obj -[778 0 778 ] -endobj -5651 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 60/less 61/.notdef 62/greater 63/.notdef] ->> endobj -635 0 obj << -/Length1 821 -/Length2 1061 -/Length3 532 -/Length 1656 -/Filter /FlateDecode ->> -stream -xRkXT-KM-iYO;|u [gѵ^#8~À_~p,`䄎#>"Lm)3\v8қwۻϿ5u* }@`KA;vE VR;GCrkm׻w0BR6w kn/ojT-`+4YC[muɥaS_c[3-sSg=l6w7gb/,ϸ9,r`>Сo{2;|:ljh}aӟJ#"Ό#ZhHnv#sF}BZD&vʖ5G"lb_kNG+usKpEb=xZM~|' su`9U{wF]"%b@ K˪bey}>料m2~h!wkߺLW}~ũW۰c1O z+UY[I-1"gJ6Cٺ5=i%KƹF:nNm\&k˙sO/r^{Danj͊{$q|+鍏]tDO$]^ͯ8-G (]m(ǹ31괉9.6"P_4 ]\P͘vZiʝ=֑G#LȠT!'[hqsIkKE:o2y$H2C? υ% FѤ⑟ς&endstream -endobj -636 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 5653 0 R -/FirstChar 3 -/LastChar 110 -/Widths 5654 0 R -/BaseFont /DKDCMS+CMSY10 -/FontDescriptor 634 0 R ->> endobj -634 0 obj << -/Ascent 750 -/CapHeight 683 -/Descent -194 -/FontName /DKDCMS+CMSY10 -/ItalicAngle -14.035 -/StemV 85 -/XHeight 431 -/FontBBox [-29 -960 1116 775] -/Flags 4 -/CharSet (/asteriskmath/similar/arrowright/backslash) -/FontFile 635 0 R ->> endobj -5654 0 obj -[500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 778 0 0 0 0 0 0 0 0 1000 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 ] -endobj -5653 0 obj << -/Type /Encoding -/Differences [ 0 /.notdef 3/asteriskmath 4/.notdef 24/similar 25/.notdef 33/arrowright 34/.notdef 110/backslash 111/.notdef] ->> endobj -498 0 obj << -/Length1 1626 -/Length2 16798 -/Length3 532 -/Length 17712 -/Filter /FlateDecode ->> -stream -xڬct}&vvl;۶m۶m۶mÎ}jϺPYϕK?R'6}i7x$TE;]4'A zcoeN>!gXn_H܊HѻP/'C7]Gm膤wpw~S]_.<+* />z~460$W9yĿ 7j+ڱWcMnKvH )ʛS&ܩ) -`=4G͔|E3#ɳ -J>ߩO pq!Hڑ6cmniNM}Ț[0E$d~` ̵ -N/,ȑCSzv -T W c$ķT1S@o%|TQyφ!^AkDYsfvjJI'q8 *1|ͨe -ÙDqs–2سzG3? -( -#;}_ssӖAW"@`Q.ny{{hFQ@i֠QLbȈ={sFc0qaLN\AqY#WrOj6\OxE%? R#)sG@AR_^hmq"NrxTJv 9IXAFTF8,)#|3ɭ~tŢ -/ ]AcQb&M\plKl5e䟐"PrwA1oᆫZtU2]Tm !Zҋf!o0DϺz}?AU7kFׯ\_vЧ5+[<~ -2MZ!$qdDz Y8R6KU &U~]9 -‹{?ma`P ߳n.2GYHq@{V =s\aOtq=Axeuc#fudDf"EE7?C$.g HHAxӚE0{]Ȝ$JR+byQV*eTn,j緪,>?%3c -%. u/^JK'ISby[Y;'cDT>;>7:VԬgrVZW:4dOIe(N[rh^7r UcK&ߟ)bwHRіQBenx' :fr׸D%6 -yܻ(o)x%ײI=mƵ G*InYP괣FZn,a1x(T{w*2CR1|^AZ.1dvUP[4irσhn3_5B &7K\^0 fҴa$0/CR0iM?6voj+}Fd|@b--7X y'Պn)CO#NrDo:V9#  ! ]Ҭ*s\~Պ)F)*m0n<&r]^!hB>U R.-%D/DzJ(u]Z}njF?UV\{1ff߫eaǶp׋9AfL9;k& k/#[yu'_֤ݬ?&9AgP/F28O*To~Td#hϙ׮`4NGc阔Yp~*萠zO.%oYBJi!]$:4υ0J~r+1%]QR7 -s`R}﹂1G}"-\7([@?Y܌O })bVQnDO! . m` r;:35x.f 4fr:c踰۬ZB{ȴc,<ٸ$%Ӟ1Rh$Yig)S7Tf977ъ1=a=ͅch}ټso=D(gM[o8:]@?B=B>i(w4dq>dn+f`G]fii]Y贈Y}T*)s\%T S,y-l9 NYv.dJ -9V˜)(+Hfcz KJ-j1juG"j ɔ6p2hi^yD@]brx5Z +>el[,gNf'ê&*0_d;xߢ7t _8]E9TG>C;ϛҐt)NtæO Z'jcۢʆkЧ$bDD`͜';WyF^XYSC -!2cL"ȱ\ugJPْPW.sݣVtSߊx IpUo郜9@Q .7Z3{Zk][]mQN%Zz܁L|`M֬F 9YUD -[)ZE}}3 s '8^XpY-?@fc9h'aat@'wC ms#P*%R\"u#({VYPO`pS.(DVmcb@w0EḑuױhM/Rs8Ea\'a a +XT-tti/k,dirʚY|0N8W*k·|=4>ݩn Ǧi__N$ӚnĎoke,ܫBq-%%6]ue -л>FUyBsNNjZH͞|-XWZa/Ad_;^%ƽ`"lMQ -ILNF6$+߫^(R'?OC5s6F~QQ NKAOwSx[<[hTIm18ٳbR1XvdF|dۅ&DRa^iܱ#=@WgW{O}9ux;ܢo,zڬ|O3Ebʶ+Z -}rk!; lCiט - yAu}NEuf61׿O(5`·N\u^ ^L?cj`90y^y},4Ԫ_Jjj]Z=ʮ|AɎwAd -HFoIZ4pV܎V! OKҲGHO<)*CKwc/RD㿮6'8ӁTֿ"OrFޞQ>^biagN79;k5O'Xo9~c\jo.ɇ'n>4 o BT gɓ*? "<}!h!ۍq5v8R %fEN>`=\$ju -%Qm%Q]b~͕eWdA -q9G@LKqXw:I>̝00<ϪtlBa $xNJ%t!^3 _,nV=p(%TFXYO,F}LE|OzYS!P7J"t,t OAB `+c%{]tYDF -B9flSxiDJ-=84C"&Z4+:P7#$ χfL^8jkK^`x6P -q<:Rݸ5L  [nw}#/8^ %ȨӗQϷrqS([H Ze#|U s ^b CbԽ>]&18J5"n-cw` cLOcn<۠nK-ҡKl DVa8gIy*;5!;jk_G9F;C@n낖\S(5lU,9GmY~C$;4D,4 D${jGUzPȠ4a[67/ lQ/FE >^ht.S<ycf)k^ZϔŸ3Л; ݀|H%:iG22@KM$>:dOu}m1# *|+#j-s 14ܤi#|*|/P]~PfDMD -H\KU=Xpǡ&xE[ ˛DpǾ cM m1UsonR&Wx^Ր ?7e{Ⱥ7YlWl!hi'^MT ?gmz]}P71{ul2AǟɃe&+,y bL듡Yڎ -wM/C׮iW_[{seO| 6ktm:YЂާUuō _R -L̃T7)*CpA\N T6,.8r46'F#5]7vzp%o{mK(?mҶ堔ZZS=b3;(;sۣ&n)aB mɃ|%3)*;YqI b[[)m$o;qNL9APWCO9ˆG6'QVo^|WC[?N+$d % lۦw̆Yرr+N@0C9˥uv5k߅ 43;Ymuh +2E1Gq3*,>#O :u=?`OE"\YﭖR&,I=~IwmTa郲'J钁pEf%Ф'id ϰ'iUڝu/eO ߍn\„$r>.=?,f"N~tV'qCN'|i{Y2ᚭ}Ow,hwWHJtJoԏNH0چ6SOg}we9r-6;d~%-Mb -p4z6pꕜI= P硲ᑇI8YDŽ@xRVj Sm8}MTȡ4n, (MD%}HsMDϻua?mIٖLJP - >*ڗͭů&hC*~Bs`D;,Y?n ->wV?nYلR~gQƙ<ӊ˩ؠ7@ (]]M,6Ζx_͏+ Z` IWIOe;?+G۳ˉzNbqK;ϧEaJ8Q1;wKu 5Śý66ܧCbZv^Ɇ%^F-&ե<-w0)-S7݆7% G6Tp4-!G1EІybqjP)a{uNHD_@ =[?+0Bъr&."s7jQjS՚yJFa<.PpDMx :`$1uB]G߉H3bVGpRZ.$cRC,1)/CS X~|6%V'q}e#)IrU7&? Xò8 Xh@E˹[t&=QmPcY"\XOԎ$+*CahgVy?5<ӡ[˛1 9ڮ]ͦ*̓qFYCsHev4ڧ 4Iź î?UM*(ΗrKB7o:as@nƨMtH>^oT/lOQ -BmSp|UԖ1<h*sT\ǁi-֪K!t/ȏƊX8ΐnPw!tA !6{"ԅ[of{j d9uC>z3x%4E3~wL,b5پJj>(v<5meJ!߿ np;5$,hF-%E3Xlr 'b~46 _)v742.+ϙĐLal)M ܳS< ->O8R#ibcJ]i9Z" Ya˪kH۝M|?"5{jҜ4iao,ЫcĿG)h8)e qE0*=‘(|s{*8$gԧC!xmKPsv_5.VOkF"!*g g,ϹW-Oȣ6!.=0 \="8~׆q}l7OCs/ߘe ݪQM?zW c!'Lcu`f -V @bJX-M_ q#S~!"2Ϧ:kcXZ2.nW,;fg#iPw?q7=uFC -pRr/6_ԢJ]RmHKg ;R̕t4.diqVlyʐMW3ryK -㐄pɀُ]~ek錶Ӭ|5M$ GzFQgK˩ī, (@[:v5x0ME wvqXyFy0jxlzc=T)-^{+3\wLRܖF >(0spzZ'2l@Wc[Q=on{p 9)i)WD6=Z&2EBvG%Rgʳ0$lŧIǟ!*XM F^ MȐ`rTn]_(oɅv}ʫpB+*pKe(6Wbx2!Q7%I2gARSwꗫ>H)Dªf *S䘽FZRWkYE>XCSUh]A\l%H~%Lޟ̍!<;z :Ļq^աoE?i`K)?UeMȜU_pjj74.h6\T5+i&wa?UIVip&Z)t[(x /q2_JM|UH8xDC=ߓ:A}_I"ZK@]߮* ;Z Vu b%켇!SaP=gII.G0Fy>M.&yru^p4(Ȉݹ ^A=]p#R\?31*3'p#U(Ġ ~ z{{3uWF#5SB )՘ɧיőB[gtuԭi"κNe𳴉ʡ_| 97w1n2M$n3@"Sݤ77hh6k"~;7ĺΞȁ4ծSv|ӨĻ4.V׈RXRZVA(5;=&'wj[n>Bh48"nҢSǖ SR^i>-XZNG=C!C⭄Z} ]2+ P!åpTjƓVsʾ55@7׉S$o7Gmnűwb^ҙZΣ}VډPmSNMT=);ℱ@Q }{Bx0 lRfNBH(; qpS#oF_O;<뮴ٹ'&d`C)hCTDyQ\jmFQh 2*HiC}eJ}OTa@]8 OBh%]RL4 ." ^kug-q,ICIޗLO fA}F?Q!c`_Hxp02ޮ!Gb&*CtMHf]y+ rGf=MĤb6ŵ=X^h009cN`Z BMw^@0NP7_F˺Mgkd0s+*mdxk;-yMN57دy*dHth}f"|PJS#G[;>Z4]3A|*KBz# Uvi4:8i,pLIYu-9uP>K\2Mߪ/.3,\]ߤ (*Fd8NtP36Fl`$bdk܄aN_xxo83۴=@Gj9k^s>X8'/P2X^$07V!F<{9u:CşI*A͊anFZ܍EmʑҰ'-zߥbN]bD]Ƶ5@= ˯W}a)V%+ݦk5KS,Y Dޟq-b&pUf~* ˮp 6u:Iٰ)e(+2t?C - *lFH)@~ZɈZ$~ę&g7S&PMelTBYF,c.*iy͡ K{@*yJ? \5@`<30Ӥ 5̴f[b8$m&(cqToa|Ye :Q4K䵚ͯ*ba&>AηtRLn\0tTj?P!4 lڈx5囷 vܣCDݵgOt>EAᅡ-*5r%" -2"b'm0%;fEj'd,ɋg! orؘi n1+~ #欇# B܎'a“MT䇀e e;t|+ I^Jk}oѬxނ֞(󢨦Ŗ3R3ϪE,@?U@qStsH06$ YE!c5. oM3"7%079BCkWa{ƟR(gt*=?w -|& T7M%[ܧpk{ͧ~4LKSS9iر/Y[T_ ݕ&vz`l 39&FGZ[hJ+%a's n!)k~4jR>)IaGUwk_i z* -P@'B1@0LQ-?n՚e:xX@XfJaR5k_  rd[_9x%xAr|C (Dgi5Cyu#u - Lpt783ɉZfEq._r%X_VK^iBAV1NY:pYf.ߺy-PZSt 4Q'otC"յlݲ5 9vVR9f4L"߶>ʐc՟dpo8ɣ_yk' v缽=⨧݇yD5 ->?($}BEް^|iLLg쎦";ڂw]g)!ҠM:y}ܞs8v җγܜ9P׏ZW5jjׄM[ 3.dbqΔ׶P˧3y-7$ gkę=Q/}ce'z.5LqYLtS2Ruov}_[% >|xәUKvp%^L|;]G/le -e[488F+ac''#Jv*V_~vI[{s]X_=ˤ-|i7m\pX1$!sۇɪoc%_~?JwӷLΩrnWH~-_/:_uŋl(|gŏߙ~U,sgÁf޻7MgqG-S'law?#t} -d[,J=Zg;fU`u8󝤥xΠlO/iNg˂o]ϖ &M?׳9i=Ρ~5_wsˬndhڮw> 6n=o}[?n^^/%VU0E^h%/Ġ֠uqGb9lr_87nnGVts/]49_k_S k7=4-ѾGaˉs &`k{[n_ե{ܹj#a~i}^ Gw}b_dz~rJm>-~XcEN67e/}|Ǔ"_'mkbK_5uc@!5`XXTXەendstream -endobj -499 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 5648 0 R -/FirstChar 2 -/LastChar 151 -/Widths 5655 0 R -/BaseFont /SPHROT+NimbusRomNo9L-Medi -/FontDescriptor 497 0 R ->> endobj -497 0 obj << -/Ascent 690 -/CapHeight 690 -/Descent -209 -/FontName /SPHROT+NimbusRomNo9L-Medi -/ItalicAngle 0 -/StemV 140 -/XHeight 461 -/FontBBox [-168 -341 1000 960] -/Flags 4 -/CharSet (/fi/exclam/numbersign/parenleft/parenright/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/question/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/emdash) -/FontFile 498 0 R ->> endobj -5655 0 obj -[556 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 333 0 500 0 0 0 0 333 333 0 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 0 0 0 0 500 0 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 0 722 556 667 722 722 1000 722 722 667 333 0 333 0 500 0 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 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 1000 ] -endobj -484 0 obj << -/Length1 1612 -/Length2 19242 -/Length3 532 -/Length 20154 -/Filter /FlateDecode ->> -stream -xڬcxe&WXɊm۶mkŶ]a%۪ضm۶O{w>}~=pg5I iMLδt \9K[#'Y; ௐT(blP75a;{GKs g:%55I1yO_O'Ks )/)`fic -WДP˩M6#Kc)ɔ`f`l44'XNC_7SwcST4{SG[K'K'!o@c+7WBv-l)99;;Z;FUwvؙ43v:ZΦ22X:z_i8Y+_tox_V+Kg'S3:XF163(@3;#ÿ&.SjQ3304xLL`P߱LG-B/ ccl _憶64T7w8Ά!4KÿNb& -3C\hbhc 4迚 ed`5ֳ[e -4U$DDsJ/*ڙ?BBv/ڿ77 #!ڿ`,kh[2 -tFhlgϬ(;M6vqtn߂_njnj hgl;=Fจvo7#`}qJA]mrIS})ntd\\bʞ< 6v@zb3hy--6qE%w(6fG'Jb<TG)h?A䟞%?= t@PgrB E;dk{EPB6ܴ^}wz吒`Dʼ*[eޓ S[ye%+4Яg'x'9g\HE0xp'zoIҿ>]S:{z=74^\O@;R]މSgIH$3q^݈{ƺL$[O:ic I[aH߄`PõܘqᙢGek/I|;#c6\{b&9 LQ_Dp8Fsa_}Gi@''.DsTe$6mdewO?J c ކFWOfƢG녶"YiGs ߴG_{~1iOús Pv$6#@^g:t< -;˿=OMlxVH4!bȪ4. -u zt/!J&cd>9Ό>5 TLjwPg}[[ _gݭs*U/dw$ۄ*^p xDEtLB41%@%cȬQduPTx>Diޟcȱz zz^N&^_fm:[n5QCE8 Ru??_.WA3` "=2sjҮҟ%QRvIE|ܑωbSO*="&QMW\5loas2o-ʐr{ލݬiB$}16s11Ǯf6_~Z4ik㗳5K5#C@Q:R}R׶[0jX,<*zzoLv8KJ.(!Tlϟ<<`:836Bh_`6d&a )U#4;ڝA;cpf&eǥ(dm8pug B:FpJ%0O\wִ*־2=X7©';@՗cQEm53OgxCWڿ$ɹ,:LB̅N !7å%ۜ]< dn+!ϭu:OIYƤx+nt)C7K"T6'yTG74泎1Hr|rܲ}t`}ɑy+ 5My5@[UPFQ%gQk3w`,PX{!_ xjh#;bnzvh:~_ }`҉=e\g9.:(d=߅)qBz3fnux<\QВI ~ii&J,uPq؈sHJ@"kT/IG% =]99+J]Xp+q>12cw7L !YɑUmh6}~˷7)5 tHBAj+z(*y#~PqPB )T|bxYɐve"! Ő~@ 񂅳*tTot5BcVCA ̡W{`!yJڍհYEڡ25aR4`R52vK 3jA -Surx@}0DS'0Jho]KAÕA@eI*TP[~O\ oԀDH$j _k+8~Wr)fhΠ&}f"B;ktsP:|ةt#9Hݴ}Nt'̪_v@@TlW`_iԝׇry -L\H^-=]5fy>AuӾPPm-K9,MDҀD8p4sRVD+}0W+ON -ZJݜԐphOcBsa2U$eҲnV;=2|Q Rb=Wy58_FBEK᱈uSi%M阄w6N&|ްX0&E}[1YBþ={YL.49?fd[WA f, Tq zrCkytnatM}ϱF`<@ˣ* {'ꅝ/+DŽ3\(c_@[' -gkʵš -/`J 7y8ZŽas -J+5F3Z!^ Nth4DOc}= ~< ,ǒq/l&;H -Mv?fл15Ovد:~q\ cJ:,4K\] -*942mմF u<:]53ϊgR[k9c]g?Vƪ;w`46&H_j%/@^{G`rE}Y J -70hPZ,>J_Ƶ6ޘZ?1E~2HJT2rE#n/R6j7"ڶYθڊ`õ]2wvLOx*ƔXkΉ8hsB1kp=cFtni'Vt?85"4~CYx0n9ʽ|"o~ Fz:Ds!1Hm*_UBՇ%֡0.^pw+1<` @&1SJ(y*58F:w 4Y_ Ò)M(\-T%j5gX9``4K -2iV" 8QG?I }MaS$i i};r_7.& -ks[1t̪a8vڭ.52~>TP:Tkz~ aG:A7X +Eq#;UO. -\s0Vֱޢv7SNvm k[tTϱ4uU+Yev%"td{ oQtDyIJYA{Bv %%&ިwNfgqfRnc -&P[)2ZNUy7o(M7i:}{֥N,kv,F G}vk$ܽ _+T n+j|EXG -Zuplsl|!aQaP h\ w6!P8>$!^6k'"?R൮D(G[Q`0~-C ’Y퍓[N}R>w­[xdt:aXK_Hn5nXЏ -!Lz~m#Hru~XK؎9qல?5qbun8V5fxJ*mBKuޔSo%rIt.-a܂)fI㕛w S3kVݤ'\!_Z<((kOs or+D.q(,U͝tCg~y6l7v0&^KLpQU NuV›o)5.5B‰聺9 !<ȢҠ{AMUbs/ҪBwE7emiD:\6GpIϸ -YD+Z܂$8$=5TXe UDd|͛d%,fsSC>>JK>> .*V) IFrkrSeU- f@YDQKz:p6 ♘aKG:Hts,ZޕԬ@e'ԳInp^Tc$YA{(+k #هEJzݎٗs:>^2jH*eݿ(#Evv gyržDyjmӾ;_}IZ3ߒ[iN\ǮU>W"!%ccg&:~9ltx䖘?uЭPr2 h8Y-FtȘ2_ AXq-h•qN;6V\W#8ߋeG~.2KUpXMbhF8EyqT-͘ΩS'fՇ.o׊n?XxJc`VWg ܫ79ρҸEd ~l?^dǭ/{CbV5[z0#` {e}f@~Qm]spcZس]p|ŤDTba#eOhq=G3G8,7ܽ=;i-"YJ8}tu9[&${Do ,>h _˗$Ȃ;>ՁO$ !T4cȎ+98' dֳY# ^+ + !MS! w?R9Tvaͯ)Yu*މRG Tu@\ϰ.pbY1h}ldVD\ѭFGJ#&[<xrS$GX {쵖ndYf4<(^ٰs]cç\@*//ŻlÍH|v= QA7\_t|0 AKZy+?`6V9͓(~R1냹ݢlfzVmC^6 Fbu1 MSfη+rr,Ѷ&HK%XMcx9k^m fzW1(v]s0WehhVXP>}ZŠ9q;IhO]2JZፏU^B"obE/yY%g0awHRhd~o -{ fȩHg֗B7~8(PNS,}z -gw j {B&1A)قWR)#y?\@Fd e,СxQM&&4b2iCy5&e kVZTdX`!=ߡ6{Y=⿲T{)d(ϺІ5F$IWRm-+4k>nE&зސ/L * ޭub# -xx3ݗ*fewRׄ5}Ifk2;2Û4E6xhJ-8;|w?H3YҖM1? )6`I0ŎT1UV?W"ubuDrn}.wCȻy9INGkmyIՓm:,{*zM_iy_JBtdM`9Y):59NIrKC6Irλq!\Sɷ3]R0Q[X !89e0آ%4BE:Y\pɳ.o@" u%ۮ6c\j^Kq >*}- 0۪#LVɰ %p&<;ˎB88fS} oWܦBe*Kkl?Wf<&qi27+P|SuAtM`Q<6)uyM+/Ӡs^ aS7Z' "E4sZ2O:店*ZQ: ] !쥷KakQc@%|PKz${bҘ/Bʩ@a4zgU!ݏO!!<-qimA jxtsrՓİVF.h XRJ>~b!ƀoȹr^?K -;P颔# "yEOBytH[4e(28BGuANSKuUAt=z 'X~Q -uqȵ=MR^  -6i8jJI}YbNT-O[HUji$7Qv/BtJU9nZF<,4XsEXz衄jWܜ"kiW>|\rxdbr/Gg^as߾Of1.Hk2X -/ -ȍoBtvL}k/)-K]L;6ĔdwjBä%Y.̿kxgO&)SO.N4F6s?&D~K6#2,ܼ*pvg?݀a9%.XBS=X̓g92+,C.fDc*Ɵ!Ü**mX1nJ_UQ4øMe군]hx:yj Ԣ""` wnƒS9 5ږ$Ā"!7*hu@-q 1KP,H5ZdM` ;:9@0X|1#BV#g{u@qc)4q?̞D<9rAX#F.SOyNKߍ,,_](۾Hc1)L 2+eKA#7ߍ} Y=;s%8jW12HƔ/eMGzz0I]ϫWPd!5%v 5N?>!Nʕݍ:d?kI^gx t;3I̾ Hۍx I<7CKv{]ѣL~c|γ16]]oA Um.ҢtRuI #}~` -ۺ/ïrFV'oE^!s"/rw#)ksZij8p?0Xm'$k6F֟[<;Mތ_#fpf!5C_IhnDf}ɚ:z^@ָXwK0!bL[:퀟oD3;|L s`SS*SZ~d;v{-::uLOx=3a-&fSmդKg$qQn0v`^}d<쏾ZmU)6yHG@ w0SQ( xy'9`XGm Ԯ/Ds`A|L`(:OzQ4A4PREDi&^ 4"û}|y~ZUF,v_tdZ> D% OCP,op)I|[3fmSa`hDz JΣ&,`:QO;h%TbD&<;\/6}"/#9*4YVS| =&,i -^܀q-qu2Wbp+^NȫبdWݡ D HR1ui?oZyL6@}T( yV]ne[yNS%$K fpcs1?< r8G!e{"rax/.?He]8LzR!Z. l|FV͵MD1?jXTui7^8R4Y܊.9ʞ3;|+`<EV{*r T}ź5$Yt2^et,=}fMj?^(2=OcJȥVf1LXg -"@j=1O+{CƓm߇i]}b -n!>$)y魻-p䳞nXbԚUc[9K5O3S-aS~{î95qȣI?R@.KGг뾛҆2&|q$e31T룄.Zo/bB񨶝&J]Lc۲%ȫ0/"%`wpM-:/}~r=_NL~wmq!HA]22K?\_|b|Cb~Di=(;'ߠ9}ߏJ1_Y\,A1~;]kcBJt$$pU@5U`ZL# V ;d[0Ʋ6$CZ_ j]kN @pi,z["-v[|"F듺叙X<8#^+&"p -X4:T_HNg?=,erOxJf`an̡8YwEm@lBBSgLݐ2 IG -ARp!XkcjN]xqL*߈^czdxgmM׺nVX&$w 8bսL^韮NjGGJ~f"gf(XXҔ]nDYJ{6g i|ڐ~nZ`I:sc7 #C]* ~%P,ƤTLVi2\b{8HNLj5+Eo{ RQ/OFeL~V:~"Q$˶#tR͈#$iXYWdC٘? iF 3O -j2p%5Aht)|,oxvc]) p18f'QZ.K+d螉8]~ ;>fν3t2%=W -z&06l240a}@ƒ@ v20mѷ/.6%֨7!.}܆lpu !;g4UPz UϫlNⶂ${y@=a -l gQv*\fz+F`Wy@C-c =]{d٪T!Y,Ɣ6DL|B@mkyi.CaApE' -m 5B#fSnxn(K/T]vK7L+ dDw4FsuG 0'r"8bWMi2kicq蝘`._RGG9hN?BN$8M9bMJaw!Ak:M 5oZjP5&RdhfÊ 5wːy ܡiS8x-k~d@CPǒOpHfz0n\AU6U&%nm=ϲ( [fs0<2,wNX:' ))–ftiP U2pveߥ큥l$MA\0Hz=Kjܩ%1yVlN[I[r}we``}! :'߉c}MYr8c Tf+`s:f =e-a~/L;/>\b IDϦ{ؒ2ζӋ&^("&py%'}Έxӄ&vs!i/c)ȣ Jvu/G" -t>=!aB+mlfUM?(v5=F%"%ȳP!ݹ ~  Nqz'KJ Ka.kO]# NwDH(M7%xa#VCeglSJaxU<ҹ݃ژd:n_ $s/`^Kg@\SY$oǁ -lK8)2D1uT>qrڪ8q=Y5qx o-C^ 6=(' -"T!8ėPy2 84`n[nRfOE+7 MrɚGݪEVOCF/rVy AEhKI/M<'l\zng"誤&o25)56 PUܸ;vAZ}^.UhDg0e2OŖ7Q+rq=t< YZI!r#*yTuU]=,o&L껏La{<)<{`6zwᏒZ_HKx~'bޛM ƠN3f[Ʋmlo&W% NchV/ 總F™KhQ@ .SXЮr o΃"SaܽU+k2 =>6dP뉻{ʜJKX),?mA:Q#zR@TJq t&so(ÂД3yXV C_Ntg|";j:n~ I^C^2(ʷRpX?KFЖ lmga?@'U'MCʹUIdUnX :`KgRmɰkUP).*kxDyZCdrLda@`36pV<\CVJAmSxzAԨlrYϼWU.9AӰ.tnf̪OЭ֌fY<*Icƈ`;˄p3:1h" R|g<0:A%ӶO+7)$($-MR9[Bh?-ޮjuȧYQAF}ɡmr9pr7֎F,<+QyUy%k&Z-*8V-%xOyxNdU# d5[pWvy|4p;g$(d¢KGެ/kBGҫ󋼴YuHHg4{G[  P~SxLͳT8 .|} 9qh`w-o~%\i>`{AT,jUK*VcDmJmMŨM[ۈWz>ɤ9cOOޫ38g -Us -K{0G۝^{`y.3MOٳwJ4WtmC%%OFHF,$2oMa UsYCqasZCQ%XQv %Uoذ?+޳dd9$j>ܬ4xq+)&ϡBčP ˟oZ9Z_HQ:vm"*OmEBzDv-HS߾%Ol98]aސ)z3dyO!* rq`ՇEl UƖv#Þx3JN\_]T']YO䅿] (Jڲ4|nf,)wڧ:ES˓ݶi{=z?/ -P{A~n@N ^Iӓ* -KFp(k)x3 8 O4V٦g|wS#e[ ;VQL v'Ԋw0[u{?^)^9&@]ӛS>'\K{Xz5˒"1oS!i; MxWtϋ, rcƒijHcBKDԊ鳉a"Ci䂡QljQ@?)InKNm2m8>xu5}fbuy"=$[NzVW\O#eP!Pc~HCt c75yD`%UKܿcj|yъ ICq-5zhvz?*|SEvo!'E箾!/y8FL~V$9lo,PL:^c屎O=c=]owQx -+KIjn]a d f`hh*|pkvѹ-[q,7`?R -9ٜ5>D]n5w# '?Dԥr2U40^4diܫRI9 {+dܭդaOx Ӱߣl[[ ŦL/ *OqY|DgLA-jsRFPIt0<`_%w'Ȱ u2_>nϡiW8mh= -Vx3_w4?<&l+te vr>v[e?Dj]<ݡ6 ) ĥED`G*2Du!bfO m@IA2g_gpikP-YС~sJp;%)e2 w_Ҿ -%֌6Wɕg Q'a[W>Bc5 EF" c [.6{KdmlcsBb9(҃I^@CAS^eB@q:)?į@"&5UHMjZ5)d8V}H`dޕC//ws~/Vf[HT ř=׍;|ؚ+Eĝ)o*,|G"︥Jyjߚ^ȿr v@N2C񣷻HG T=%ԘRG4p}ODzXIiGqIK60:dm4 Dfan=^yH3DUdZ4Yx0:Oa}֐Xާ}CQ*Wa_M0;({n"X|`Kǜx_ͯO4TK)v\k"VwCI.}V)LTXg-,3D&q~QзRJ[%]ڢ~CW_lw""PVS;<co/' -"~qp~R)k&hFG#_r!3`p};dVj ˩3g7 +ZÇʼVS&s"=4ѓOhߍ?8kCC9J+h;]-)~>QT))&QV3QO`ʭGa2/Nj $?\\ (Oe5ylujt;t6QBc1Qhнa!p98eqݗa k᜻Ҍ"R; elG\f\w_ԉF;(0I:ЊT܀!R h/_\(RX p@ -|>i2$`L=9٢Άqw ç)<]fjq\EڈTc㹢NV)r+HqMp?=G SrlWQG;*=w~hdP Wc{W k=2Dv%E^Cb:;s:rOj{-'Y!`+pT,'޶ -n!f\Xd -"O/Qhl יްI -&|<N Q.Sڬ'~.N]boȪ$g,xO?}Ɯ>{}((\y wS `(XfS$AfI@kG[FQ$ToࠥvW(}Pi tG -{<\) S' |ku4?{u_fIzO$PAI4ޝ4(Z!%-6h#.V]`m` Gm.1qD4ҽ;s 5~jmGA.]pm4NaM翫(F}<}4>[ endstream -endobj -485 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 5648 0 R -/FirstChar 33 -/LastChar 125 -/Widths 5656 0 R -/BaseFont /THDDQC+NimbusMonL-Regu -/FontDescriptor 483 0 R ->> endobj -483 0 obj << -/Ascent 625 -/CapHeight 557 -/Descent -147 -/FontName /THDDQC+NimbusMonL-Regu -/ItalicAngle 0 -/StemV 41 -/XHeight 426 -/FontBBox [-12 -237 650 811] -/Flags 4 -/CharSet (/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright) -/FontFile 484 0 R ->> endobj -5656 0 obj -[600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] -endobj -481 0 obj << -/Length1 1630 -/Length2 19123 -/Length3 532 -/Length 20039 -/Filter /FlateDecode ->> -stream -xڬUT]%Y{pww]pwww!s]Ns^lmC9 -1PD5vqV疥WEF K{;Q#4M,,fnnn8r@AMKK\alin -wځB_`fi((jIK$@; @ kisR6&vK`pvX 1Ns'#;v&6.WofzSw98Y:*NΖ{&./_V3t0tv1/pq3 -N@s#'S_L?/98x+_^K3ƌoNvp슔=zS5 voFv6S=oJ }$7PB oWG+=2Fvw 9bl-mRc=8 5av4R$=>P \ã͍J -H'VI}?^(QfoHi_FbX*[Pt2^o_qHqGI#HĨ:aUh՛ҿW7ns̅.Ȑ74J{˶;Klɒԏ}ϊZ -1AZ=6 oБl%TJ@+b,ȢAd`#**&Q{$Yl F@,x>PNiBY{/8ՋeNPzr!I8W5*ػ|79rm^aaE,JzD;?řRa - -q.xĦF^źiZ a[}[4Jgc5~X4k!d ^x3TWsb&:0#DZw^ɲ~Cԟ[-y#%Kq9*٪ȅ[#2jU%}Dkm[H{-0&hmELP[cD,"HRܟ[!aߊ绬Wpl7f6Xt3k fɱS;,WةKϞxCu9OpZŝ>r L}TL㡈*(G,6e༈7IpXO堪 [8+́DXɤ+YZ1<YL$l*. ^?+LXM;os\E^r7y/OS/$7o 3n" W1H]sjd6f5 n(r.8`53ksLgk{Ke*d9rǨYA ;]-8vCjJ--j C%ث$Fc3$3"{qfnh ^q^wRLL5.ƧHbKD -%0MY;qCdπJDF޸;\~2FWchHqͭ-k<&Jz<\So `_c f}p- ዯӜ}Fk@벡>綑 U6נRxa)Ҭ;-_u%ŲaT"UuZS҈5}gQAV hϡo!__e%5\nم -0ۄwMݠ8%<˵|cՕ|_ T;6V}\&RpnpD*fYZe, xN޿xÜ$.>P|N=2{G.wۏCefO+Uju%pn){~"(T)[/nmI,;4C³Hl!N/P ПMF*(]=ضsM9ywg<595Z4.)@׸Z 42$B=wVzAo?V); -*zwE[m[50A$ [^9'oY44&cNIZz7gk&He;wҎ7m y)aP6Bu%'Up -i1g&UnD=R[b%muYsaytsywQmhHbGEYWmHoKzwY+PSũ5l@@HOj ڀyp -*3Sz@|yqqX<쎛f:ņk93'o%$”TBi)S^L?.I&)_(EU4#(b<7(\M`tFh1X;F4&CnKwCbR]+'vͅAI[`}|H ;͏9e -VD:W,C |J(-oB坴pm2#Pw$B=`aC:*z);">;v`Iց͡+lm >ݺF,F -W3%^lu5SgAԝJQ7dM,7slm0;L\~`s|OZkve. -x+DA = *a/~耤o9>i.S6@aS⫯|S0/h݃ڋ(|65qSᖨvh]1 ;H @y'J1cH]\?iJo8ALӞBt&2K g͕BO16D:y/@*mdVpE`iTsMO:`@XNRR zG_\T^69"+ϨjcuE+|QبVqR ڈA(Ef -{YL[S͘Ъ$p΁JHPKH,̲'+ЋL}YY) \u9;o7.Xɏ}.įoH%(ns"aN!EfT2ppAVң%!{lCjBwM[ho;T8?9^Ԯ|:vtyKg/GY#;/|krp2*X=:rPGø%N}p=_}oQ -zQ_Hd~ӓ"C7-XpT&l6Nr Y4z~w?g܋@تxThzƈLAOb8kNA!_1qfMn,(7)w= >&X4vWV:H?EN5}m 42iT2\`OIS|ruʽ^Jwbf{;ȗ0/]Sp,땔 BP[[&Xn@/y Pr?}S jaBM[It?J<B~h}3>|jne3.)jՎ .+:ch)qPsf|,ΰ(ukޓ W/ HG}16H=60qxUgmVIfͳĐb:1M@SE_I_7ھ6;uD,W.p?fQJ`^1CEtR,p56 NY+{M@Tabk e;$/Ŏ|hg0㦅sU䣲Qď߅,h-^%--SNxP1z PMxrxaCsN7FS (ܥ!йs8db3USK.O@ Ēt\竒1_xŽBRaƻh(U([ !ܺ #kwQa${򷃴Mw#!r͘{u ;UZLjz0ߊ7Vt,4n{m?iZ[D3TzMƦNJtCEB#X3$,ӻƐ׷eu\%B8&/L6{ yMpW t*$~(c?^nj=/7F9y<ϥkп+E Up2wc*YcZ!N|sC6M,`5N K:7SUgD2SR]؟+$݌p : lkrQ諚:b5]۲Liu;A^Ѕ-eУB[ -у3zr iAi/\.%a -qЮC{Q&'`q̧2b"C|j{]ZX"F$Wqg;vud.LY9bɋTyĪ$nW$#\z{/ON0YfX!Q=XsIǹ '?brcR_yDdȚ KĺQ*B%źNIR1X@. K'6&x+>!r⠯^(; -JW8T~a-7N (%iU}BC=;oǓVb[?t$m$ނ" -T%{jE3Ɲ'J)&<7.)Q^ZRYiE=Gs~4BPn9kN&Bp٢ȫ`=J#|/~0e}O*h7xd_3DyhyˡG(٢rUopVʈ`.>IU8 -&:0̘ _j $O=Vq4w8GAk [&55@D{J^-i&+z:N^+U>=U~*HnVV^G`FKoBJ R{@a>K+iwW,yrSt+T,) I}pCKKR-Lږ#@ *ۡ]1!ez9_w؞q{B=%~)Ji=iZ?wJ@WO)w:8QԔk}vzb mʀ7a"<#8_pM6YwH˚V4_ w ,Hn!M 0B2Tgofa:JQ/ו.2X`2,3SuM#65hqe>qdd"se_xh]6= $4,B :D2Z @H _J3cYR0AA4A̲mTk Q-T=sӛfXeTk;pb|a[B?IW -up]%(gz7j[Eb x\/rO\p/R-i>di +` ;(C\$K93'Cku>]2 iۻ!ҡF{vdOS2ěf?q~9":_`i]9tlZsxp͝ h=_J(vqK %|u &8M]zU!"bIuNSBrjӥ=pɵ ܍$:Y2Lxb}t٦]҆z+h]L&+ٌpg }Fܷ,5 @L۳s8Y]zhttQ[.F?Y!^w5:l9)'ׄȺ(\CcX Vҹs%htKyqǗCr3#Nm1wx#&Feq)CFQwk}*$GP:jCS C@)3d0Ssw\9Z\~966)>%lFx7E,$ ^wWi#M>jß"Wϼ,wy1DOLQ WqPKzA.EA}ڈ||?Jw+C!TGJab-9͘zFD ti:Zqf|B7]1uC# D0Ol]ʫevIPҸ1sk>ϹX`s&Szb~>Om7h `*S:iX6 ̪e3ԳluRˣeEi3\+ޜ360GuE\\Z~DpCQ P$dC|CmKy Ʃ0u\m͞غ]}ov b2tĄpEw;G2`DcuR??Vz͈/@LGH 50{ɓ:͓ߵR=6F:OBWOu( Kn!º!j>(g72—sCH(xZ1cywPnL5ަU/?0a~lAS3p=ϪV9Yn5>QAA -CL&zQZ$hC FH-NZ|K785'\)좬q:Ϧd*L$1ؘ -]83G IO^}ϻ\F5xZqoJ:(M?շF%e -n$[}+Y{"4TAo#PYRy% ɦ!f"/Д`靧E𗓢8~(dϼ+8Ky#X1zmQ0ٽhݥ>`O9Yh mr wpL Ϯ@tlu=~YBB1ȴт-z0q`ƼYxw_&مڪ5>^?b4we['?lUyg&l4Ig_&*p[)8Q [1u2m//Uj$}-usӸ6xzGPYhzI԰vb;@8Dso>ή钽dɱj<ӎ'mM0COZMFMWUc?6! [)jh] <憦GM>!KI;-3,fw?L8DK(a$-K&%Uv&ఏR={$'1_pyX&{+%F2x'^,0|.Oϕ@9BB1^?A10|E-G ̑vnbL)xI8Pr i |u}wo`"#yf=@жֲUj߀AoP|ҹA˅H(iy+97Hb%.0>wVbBMhU3emJ]%KsW f̭KP}LU{ӏ*Gr7=i7Z1T7OgOT@| -4.lMW!j^"ɛC: `ѝ;SXq}^DKt,[PݠCa ´E;u}# u@)c)Zz,gC86i6QNgū哽IFOx#._Ӱ(qjzL"%3iH=wpH޻a&l<}ѿUPӊ{=aO% Si5&H5J$9! r*g4C#>U .>ي#TG.d:̾^kkmFoϒIcju-?/?Y3$'C8F$)}kA">ph P1<]Ι2ܣd8,O3HQ͋eܿ*&\G U恣aN Br{`#dPQIz dIq1rȌhq(QI:r`6*\Jv[Ľ{=ŋţjC!:9jkjڹ*ڳ8` q/qKO͚uҲj;=jxF䭤'QCEKD6Nv]h3r9ͻ -, mm o_ĥ&ŲjĵVeVǩZ}qU_s#gЫf a, -j8Hf )a<7ש%+ɍZ?,!|opLhڨ!99XYdz/5 K|U3bٲ<( [&YtbY @]ܥt-0 ¸N;v?1`eԞNV=Svmّ%5g)W<(A~ȥb[aեxէ ,*.}Gg.G"?L#w ӤfQ H7X2:@˸f7DLDUxv L6C*0X=XbU˔wK&Py#Z|chKWs\[4< t U(9®(*سa7Édۛ*M -.Aݐ5 6cP8 JXKDm0a]{*&&ㄜ!ʇ%:s=X\+V1\mw<ѣ=r酞i[UxA[kgON3\QZN"u,Sey譝S'`*ɕ͊>]|'؈vr($]`4ٓHVUHTR2GMj:$~i.3 ⤭_ˊUXƨ~/iaaW$,VTn2-6_6r.aئgP7[c/qCN&[Xs ?g)gM-%#.ӼT |_N8ckugU2}aKې`'L&$.yNܗw_JeinyogtkpGng!i0'BACPUz?{s63Jd^]7-N -^_''t׮->o0]Gv&H,\|iL݇pʛ|bh=C0;'B@h'|scDWK)bsygD# ay9E AkO[" (<X[gc{ZmfwseU,mzvfS Xw.7T^B.UqMF/՘PX鼿I |$O١)>7 89:A9I3 Kz )SIB^o^.$?䱖;ִXPpx7jfI虲'K".ɟQĶ0A.?lR %N3˧F9b˩7ZѣP_.^˂ J>]w9S0EinhN k0~xp&^g]zxRh-_YtNYU[c'#︐ ;*(2uxZFnX(ގ0f'Ti "ol1jQX۩?jY{JH 9roz/~¼:hGWEI=.0[GQSUU0K~k/,IA~?,4@*`7 3d5X3C W|g`zfc+TتV;U[wp8IpY(Wൃ 2jna틍Վ&B(r7Dkbg71"ѕFgm2S`^ `3v(UuQzįkëxۯuqFn5I '82J'>5hf.=CD|DLVVY7u\jnFBQ^5bIb|ek3PYM -9މW߃O{6D 0Huⴴa,kZd0h,X^p`(mB|>p)΍k2B/ e>QXLBh -WEbbkhcS4>zOu[yk88ɺt\l 5n% *WJ5υ94=Ȼ_VljQkiD{µldO<!ot\:hY(!ވ.]hWƦ>9HV}9cV=&v`NēEˀ)DQ\Zԉ85 -z8|1eLۋwS# L?9!-o~OZ 0&E ,\%DrEޔQۄ` mTvm.cFoz?*tւ !y kʂ~=<+d}tV"z:,-+O .@V/p ҝLHD&Zܤee!3 -*Q~XhH `qQ#(zV! -hm -|gRq DR# <ф|?,9hXDM -*|>`\ -S"ڤESO`6MV,Չ ӯ3t-R~~)MWr-%80\Dem? Pޏ4m9h@[i22sǸAB_tx\hU Mn-d~P\]ElS#M6 -+OwŬ%@Y42O2OT$Wl/˨w̒ &%z6wBp{U8 `1zkBѾOx-Jc`Eqq%i=|cpa983ԢJIgE ̥YʭR8~ڜ #% b g191 ;3")7D>8 7 bjPK@h@VB52<6GhDEjxz~D oc)4!%Heñ.b;m4ʓ*AAgוh|(ɜ-/#sJx[Ŷ;z#{iݞ~gƘ67kܑII4t /3%B6_.\oWEGy6 -#Ŕ7m*n@כ<[ ',:[8i\5 -EF*` tҩtKH'1&ңQQrtv}Ǒ6G,H -JSkphl~]@ wML-r%aNq3>.[Ca8<83\\;3Z1xz~v>N(蓗"Ys\یao+.gxԤ&a^SY]M9zoZm(M&]"=0d%<ÍH)BϾoW;By_ pT)d=avk6 S+,ZG&5O+0eq [GrU(4n}JW![^&B VO#ӻo[I9z'] SS`o}AVi%s!BfR+:Q .1@$̡?K7J!*źGlA>K'vR Fmo`}z ^UHuf glW!YyLj 獬XEڄnb -ur𾨝!niS(wlxq8:B -u2KAܢVEgkP:1 glZ:]ꑒ%tx,\_٫[Φ ^xw&پno /ΆꞌGzʼnHP@'6:\Uբ8}hd(!aUI-$U;R՗NN?2Q@eyA)BJ5|5tؕq3pVǿU[GLRC CHר~ah5=8iuDԏ -xkYkT`P1/*"HaQL:'&nO"? E$Ccr|C3lhۃB;e.r=n&վkdYaJ)!ҐPlS_gp~&I߽7ߴ@az6ʭ;sw8KBRU񵨾6ԡjG H?1^bS1x$Y˸??cFhk~Rpz_LYLɦ<-'"!xbdpKZ1"ʺU6-ȉy :7\l@w& yM9K0n7P$E >nPqqatLUi'F7jQH:~k$E`^xlv{uy zbijY0XoR`+䪬]V~Cǘ@ lcox!Sl]`,\5ț؏Z=Z{|{k]mamZK=Vkp).Y*;"~O}c>'j|Ms7]#j@^f9&F_ӁSF\.OO?q͙۶3ξҞu.-0:ߌjc zm܄HJ|p|T-:]k7'8fӻ?d1޿ Jh&;LfϽ 쬿!%>P\:&;[K8¼&u1r_(FShsaL 簿OYArqd/1@٪Hs} M v!r꜄$hB_]#XzĵJыy 6WJ ީG5'J5^5[ -|>]%_rpvQ&  [h?P()Jq}yRTF/ep +OG -#QHV:j byiE\4a٦& -J\xNzzHk{` ]lEsR:6јԹ%dK*uTZ1l+(o1vP؎~+9`5/zk-a\}8u` :i5n Ho4g:\Hv.dx,$<*Zئ<$b|-cق_;yE`u{3O9T+ -bpy 7viCPXMe]\N5f_Mе|H|U[cm> AK6U86W[/ﰙC#@7p_9%99s)jMYoߵZlD24X\]2 -6,#TJoqL'?vC z9y.IZu(q6'wU nWb$cT莓6XE0|awMHvwnR >v,W՘LQMUq_>,T2R>A]Iaizp3{:r3;Hg }F:3*֧U‰ͺɥ''Nf`LzOr"l{s()c7`IHPP@%j @ ػrb>ڀ93{a&zr vʑN/:X\u5QZ;.3z2`e`3MUn˱5,y/Yc >"WC?&]fS\1IT3˩3/GnGXtl7)q7~`#ݎ`Ou,nBdZN]S-v݊f/2ZoҌ)B2)_k>F -'2̈q=]6dij1Uzҍ&8VJ>:B+1Jt] -t+TzŻ{8>Qp si\MO#Xn28qV4t"P"NHC  zB=*=6tt),>vN_tkAO#6=B^S-QrKq%^ *lǂkג%J'ZO%Oo|yq'-endstream -endobj -482 0 obj << -/Type /Font -/Subtype /Type1 -/Encoding 5648 0 R -/FirstChar 2 -/LastChar 149 -/Widths 5657 0 R -/BaseFont /MMQLGF+NimbusRomNo9L-Regu -/FontDescriptor 480 0 R ->> endobj -480 0 obj << -/Ascent 678 -/CapHeight 651 -/Descent -216 -/FontName /MMQLGF+NimbusRomNo9L-Regu -/ItalicAngle 0 -/StemV 85 -/XHeight 450 -/FontBBox [-168 -281 1000 924] -/Flags 4 -/CharSet (/fi/fl/exclam/quotedbl/numbersign/dollar/ampersand/quoteright/parenleft/parenright/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/question/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/braceright/bullet) -/FontFile 481 0 R ->> endobj -5657 0 obj -[556 556 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 333 408 500 500 0 778 333 333 333 0 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 0 564 0 444 0 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 0 333 0 500 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 0 480 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 350 ] -endobj -486 0 obj << -/Type /Pages -/Count 6 -/Parent 5658 0 R -/Kids [474 0 R 491 0 R 495 0 R 527 0 R 566 0 R 606 0 R] ->> endobj -648 0 obj << -/Type /Pages -/Count 6 -/Parent 5658 0 R -/Kids [630 0 R 659 0 R 664 0 R 683 0 R 691 0 R 718 0 R] ->> endobj -770 0 obj << -/Type /Pages -/Count 6 -/Parent 5658 0 R -/Kids [752 0 R 776 0 R 788 0 R 795 0 R 807 0 R 815 0 R] ->> endobj -829 0 obj << -/Type /Pages -/Count 6 -/Parent 5658 0 R -/Kids [823 0 R 831 0 R 844 0 R 857 0 R 868 0 R 874 0 R] ->> endobj -905 0 obj << -/Type /Pages -/Count 6 -/Parent 5658 0 R -/Kids [878 0 R 907 0 R 911 0 R 936 0 R 940 0 R 1006 0 R] ->> endobj -1063 0 obj << -/Type /Pages -/Count 6 -/Parent 5658 0 R -/Kids [1010 0 R 1090 0 R 1121 0 R 1126 0 R 1150 0 R 1167 0 R] ->> endobj -1231 0 obj << -/Type /Pages -/Count 6 -/Parent 5659 0 R -/Kids [1199 0 R 1239 0 R 1257 0 R 1269 0 R 1285 0 R 1292 0 R] ->> endobj -1340 0 obj << -/Type /Pages -/Count 6 -/Parent 5659 0 R -/Kids [1323 0 R 1347 0 R 1357 0 R 1369 0 R 1387 0 R 1413 0 R] ->> endobj -1437 0 obj << -/Type /Pages -/Count 6 -/Parent 5659 0 R -/Kids [1422 0 R 1439 0 R 1455 0 R 1459 0 R 1487 0 R 1522 0 R] ->> endobj -1565 0 obj << -/Type /Pages -/Count 6 -/Parent 5659 0 R -/Kids [1542 0 R 1569 0 R 1587 0 R 1600 0 R 1620 0 R 1640 0 R] ->> endobj -1674 0 obj << -/Type /Pages -/Count 6 -/Parent 5659 0 R -/Kids [1651 0 R 1685 0 R 1703 0 R 1712 0 R 1721 0 R 1728 0 R] ->> endobj -1754 0 obj << -/Type /Pages -/Count 6 -/Parent 5659 0 R -/Kids [1740 0 R 1757 0 R 1779 0 R 1849 0 R 1946 0 R 2002 0 R] ->> endobj -2072 0 obj << -/Type /Pages -/Count 6 -/Parent 5660 0 R -/Kids [2057 0 R 2074 0 R 2089 0 R 2102 0 R 2117 0 R 2139 0 R] ->> endobj -2163 0 obj << -/Type /Pages -/Count 6 -/Parent 5660 0 R -/Kids [2160 0 R 2165 0 R 2196 0 R 2208 0 R 2245 0 R 2259 0 R] ->> endobj -2292 0 obj << -/Type /Pages -/Count 6 -/Parent 5660 0 R -/Kids [2266 0 R 2294 0 R 2321 0 R 2353 0 R 2376 0 R 2398 0 R] ->> endobj -2425 0 obj << -/Type /Pages -/Count 6 -/Parent 5660 0 R -/Kids [2416 0 R 2427 0 R 2437 0 R 2471 0 R 2488 0 R 2500 0 R] ->> endobj -2549 0 obj << -/Type /Pages -/Count 6 -/Parent 5660 0 R -/Kids [2529 0 R 2556 0 R 2576 0 R 2587 0 R 2606 0 R 2631 0 R] ->> endobj -2701 0 obj << -/Type /Pages -/Count 6 -/Parent 5660 0 R -/Kids [2684 0 R 2703 0 R 2719 0 R 2736 0 R 2750 0 R 2754 0 R] ->> endobj -2809 0 obj << -/Type /Pages -/Count 6 -/Parent 5661 0 R -/Kids [2790 0 R 2811 0 R 2821 0 R 2860 0 R 2879 0 R 2891 0 R] ->> endobj -2942 0 obj << -/Type /Pages -/Count 6 -/Parent 5661 0 R -/Kids [2932 0 R 2944 0 R 2997 0 R 3023 0 R 3033 0 R 3052 0 R] ->> endobj -3130 0 obj << -/Type /Pages -/Count 6 -/Parent 5661 0 R -/Kids [3106 0 R 3137 0 R 3153 0 R 3170 0 R 3185 0 R 3192 0 R] ->> endobj -3238 0 obj << -/Type /Pages -/Count 6 -/Parent 5661 0 R -/Kids [3231 0 R 3240 0 R 3244 0 R 3288 0 R 3304 0 R 3314 0 R] ->> endobj -3357 0 obj << -/Type /Pages -/Count 6 -/Parent 5661 0 R -/Kids [3344 0 R 3359 0 R 3391 0 R 3402 0 R 3412 0 R 3444 0 R] ->> endobj -3474 0 obj << -/Type /Pages -/Count 6 -/Parent 5661 0 R -/Kids [3460 0 R 3476 0 R 3516 0 R 3532 0 R 3541 0 R 3556 0 R] ->> endobj -3615 0 obj << -/Type /Pages -/Count 6 -/Parent 5662 0 R -/Kids [3607 0 R 3617 0 R 3668 0 R 3702 0 R 3768 0 R 3791 0 R] ->> endobj -3875 0 obj << -/Type /Pages -/Count 6 -/Parent 5662 0 R -/Kids [3839 0 R 3877 0 R 3881 0 R 3892 0 R 3907 0 R 3958 0 R] ->> endobj -3984 0 obj << -/Type /Pages -/Count 6 -/Parent 5662 0 R -/Kids [3965 0 R 3987 0 R 3997 0 R 4019 0 R 4039 0 R 4047 0 R] ->> endobj -4074 0 obj << -/Type /Pages -/Count 6 -/Parent 5662 0 R -/Kids [4061 0 R 4077 0 R 4106 0 R 4125 0 R 4152 0 R 4160 0 R] ->> endobj -4195 0 obj << -/Type /Pages -/Count 6 -/Parent 5662 0 R -/Kids [4184 0 R 4197 0 R 4207 0 R 4221 0 R 4242 0 R 4260 0 R] ->> endobj -4298 0 obj << -/Type /Pages -/Count 6 -/Parent 5662 0 R -/Kids [4284 0 R 4301 0 R 4318 0 R 4326 0 R 4356 0 R 4381 0 R] ->> endobj -4430 0 obj << -/Type /Pages -/Count 6 -/Parent 5663 0 R -/Kids [4405 0 R 4432 0 R 4449 0 R 4468 0 R 4497 0 R 4523 0 R] ->> endobj -4575 0 obj << -/Type /Pages -/Count 6 -/Parent 5663 0 R -/Kids [4533 0 R 4578 0 R 4627 0 R 4650 0 R 4672 0 R 4697 0 R] ->> endobj -4756 0 obj << -/Type /Pages -/Count 6 -/Parent 5663 0 R -/Kids [4718 0 R 4758 0 R 4805 0 R 4839 0 R 4859 0 R 4880 0 R] ->> endobj -4918 0 obj << -/Type /Pages -/Count 6 -/Parent 5663 0 R -/Kids [4904 0 R 4921 0 R 4940 0 R 4959 0 R 4979 0 R 4983 0 R] ->> endobj -4990 0 obj << -/Type /Pages -/Count 6 -/Parent 5663 0 R -/Kids [4987 0 R 4992 0 R 4996 0 R 5000 0 R 5004 0 R 5008 0 R] ->> endobj -5015 0 obj << -/Type /Pages -/Count 6 -/Parent 5663 0 R -/Kids [5012 0 R 5017 0 R 5021 0 R 5025 0 R 5029 0 R 5033 0 R] ->> endobj -5040 0 obj << -/Type /Pages -/Count 6 -/Parent 5664 0 R -/Kids [5037 0 R 5042 0 R 5046 0 R 5050 0 R 5054 0 R 5058 0 R] ->> endobj -5065 0 obj << -/Type /Pages -/Count 6 -/Parent 5664 0 R -/Kids [5062 0 R 5067 0 R 5071 0 R 5075 0 R 5079 0 R 5083 0 R] ->> endobj -5090 0 obj << -/Type /Pages -/Count 6 -/Parent 5664 0 R -/Kids [5087 0 R 5092 0 R 5096 0 R 5100 0 R 5104 0 R 5108 0 R] ->> endobj -5115 0 obj << -/Type /Pages -/Count 6 -/Parent 5664 0 R -/Kids [5112 0 R 5117 0 R 5121 0 R 5125 0 R 5129 0 R 5133 0 R] ->> endobj -5141 0 obj << -/Type /Pages -/Count 6 -/Parent 5664 0 R -/Kids [5138 0 R 5143 0 R 5147 0 R 5151 0 R 5155 0 R 5159 0 R] ->> endobj -5166 0 obj << -/Type /Pages -/Count 6 -/Parent 5664 0 R -/Kids [5163 0 R 5168 0 R 5172 0 R 5176 0 R 5180 0 R 5184 0 R] ->> endobj -5191 0 obj << -/Type /Pages -/Count 6 -/Parent 5665 0 R -/Kids [5188 0 R 5193 0 R 5197 0 R 5201 0 R 5274 0 R 5342 0 R] ->> endobj -5491 0 obj << -/Type /Pages -/Count 3 -/Parent 5665 0 R -/Kids [5427 0 R 5493 0 R 5575 0 R] ->> endobj -5658 0 obj << -/Type /Pages -/Count 36 -/Parent 5666 0 R -/Kids [486 0 R 648 0 R 770 0 R 829 0 R 905 0 R 1063 0 R] ->> endobj -5659 0 obj << -/Type /Pages -/Count 36 -/Parent 5666 0 R -/Kids [1231 0 R 1340 0 R 1437 0 R 1565 0 R 1674 0 R 1754 0 R] ->> endobj -5660 0 obj << -/Type /Pages -/Count 36 -/Parent 5666 0 R -/Kids [2072 0 R 2163 0 R 2292 0 R 2425 0 R 2549 0 R 2701 0 R] ->> endobj -5661 0 obj << -/Type /Pages -/Count 36 -/Parent 5666 0 R -/Kids [2809 0 R 2942 0 R 3130 0 R 3238 0 R 3357 0 R 3474 0 R] ->> endobj -5662 0 obj << -/Type /Pages -/Count 36 -/Parent 5666 0 R -/Kids [3615 0 R 3875 0 R 3984 0 R 4074 0 R 4195 0 R 4298 0 R] ->> endobj -5663 0 obj << -/Type /Pages -/Count 36 -/Parent 5666 0 R -/Kids [4430 0 R 4575 0 R 4756 0 R 4918 0 R 4990 0 R 5015 0 R] ->> endobj -5664 0 obj << -/Type /Pages -/Count 36 -/Parent 5667 0 R -/Kids [5040 0 R 5065 0 R 5090 0 R 5115 0 R 5141 0 R 5166 0 R] ->> endobj -5665 0 obj << -/Type /Pages -/Count 9 -/Parent 5667 0 R -/Kids [5191 0 R 5491 0 R] ->> endobj -5666 0 obj << -/Type /Pages -/Count 216 -/Parent 5668 0 R -/Kids [5658 0 R 5659 0 R 5660 0 R 5661 0 R 5662 0 R 5663 0 R] ->> endobj -5667 0 obj << -/Type /Pages -/Count 45 -/Parent 5668 0 R -/Kids [5664 0 R 5665 0 R] ->> endobj -5668 0 obj << -/Type /Pages -/Count 261 -/Kids [5666 0 R 5667 0 R] ->> endobj -5669 0 obj << -/Type /Outlines -/First 7 0 R -/Last 407 0 R -/Count 9 ->> endobj -471 0 obj << -/Title 472 0 R -/A 469 0 R -/Parent 407 0 R -/Prev 467 0 R ->> endobj -467 0 obj << -/Title 468 0 R -/A 465 0 R -/Parent 407 0 R -/Prev 463 0 R -/Next 471 0 R ->> endobj -463 0 obj << -/Title 464 0 R -/A 461 0 R -/Parent 407 0 R -/Prev 459 0 R -/Next 467 0 R ->> endobj -459 0 obj << -/Title 460 0 R -/A 457 0 R -/Parent 407 0 R -/Prev 455 0 R -/Next 463 0 R ->> endobj -455 0 obj << -/Title 456 0 R -/A 453 0 R -/Parent 407 0 R -/Prev 451 0 R -/Next 459 0 R ->> endobj -451 0 obj << -/Title 452 0 R -/A 449 0 R -/Parent 407 0 R -/Prev 447 0 R -/Next 455 0 R ->> endobj -447 0 obj << -/Title 448 0 R -/A 445 0 R -/Parent 407 0 R -/Prev 443 0 R -/Next 451 0 R ->> endobj -443 0 obj << -/Title 444 0 R -/A 441 0 R -/Parent 407 0 R -/Prev 439 0 R -/Next 447 0 R ->> endobj -439 0 obj << -/Title 440 0 R -/A 437 0 R -/Parent 407 0 R -/Prev 435 0 R -/Next 443 0 R ->> endobj -435 0 obj << -/Title 436 0 R -/A 433 0 R -/Parent 407 0 R -/Prev 431 0 R -/Next 439 0 R ->> endobj -431 0 obj << -/Title 432 0 R -/A 429 0 R -/Parent 407 0 R -/Prev 427 0 R -/Next 435 0 R ->> endobj -427 0 obj << -/Title 428 0 R -/A 425 0 R -/Parent 407 0 R -/Prev 423 0 R -/Next 431 0 R ->> endobj -423 0 obj << -/Title 424 0 R -/A 421 0 R -/Parent 407 0 R -/Prev 419 0 R -/Next 427 0 R ->> endobj -419 0 obj << -/Title 420 0 R -/A 417 0 R -/Parent 407 0 R -/Prev 415 0 R -/Next 423 0 R ->> endobj -415 0 obj << -/Title 416 0 R -/A 413 0 R -/Parent 407 0 R -/Prev 411 0 R -/Next 419 0 R ->> endobj -411 0 obj << -/Title 412 0 R -/A 409 0 R -/Parent 407 0 R -/Next 415 0 R ->> endobj -407 0 obj << -/Title 408 0 R -/A 405 0 R -/Parent 5669 0 R -/Prev 267 0 R -/First 411 0 R -/Last 471 0 R -/Count -16 ->> endobj -403 0 obj << -/Title 404 0 R -/A 401 0 R -/Parent 267 0 R -/Prev 399 0 R ->> endobj -399 0 obj << -/Title 400 0 R -/A 397 0 R -/Parent 267 0 R -/Prev 395 0 R -/Next 403 0 R ->> endobj -395 0 obj << -/Title 396 0 R -/A 393 0 R -/Parent 267 0 R -/Prev 391 0 R -/Next 399 0 R ->> endobj -391 0 obj << -/Title 392 0 R -/A 389 0 R -/Parent 267 0 R -/Prev 387 0 R -/Next 395 0 R ->> endobj -387 0 obj << -/Title 388 0 R -/A 385 0 R -/Parent 267 0 R -/Prev 383 0 R -/Next 391 0 R ->> endobj -383 0 obj << -/Title 384 0 R -/A 381 0 R -/Parent 267 0 R -/Prev 379 0 R -/Next 387 0 R ->> endobj -379 0 obj << -/Title 380 0 R -/A 377 0 R -/Parent 267 0 R -/Prev 375 0 R -/Next 383 0 R ->> endobj -375 0 obj << -/Title 376 0 R -/A 373 0 R -/Parent 267 0 R -/Prev 371 0 R -/Next 379 0 R ->> endobj -371 0 obj << -/Title 372 0 R -/A 369 0 R -/Parent 267 0 R -/Prev 367 0 R -/Next 375 0 R ->> endobj -367 0 obj << -/Title 368 0 R -/A 365 0 R -/Parent 267 0 R -/Prev 363 0 R -/Next 371 0 R ->> endobj -363 0 obj << -/Title 364 0 R -/A 361 0 R -/Parent 267 0 R -/Prev 359 0 R -/Next 367 0 R ->> endobj -359 0 obj << -/Title 360 0 R -/A 357 0 R -/Parent 267 0 R -/Prev 355 0 R -/Next 363 0 R ->> endobj -355 0 obj << -/Title 356 0 R -/A 353 0 R -/Parent 267 0 R -/Prev 351 0 R -/Next 359 0 R ->> endobj -351 0 obj << -/Title 352 0 R -/A 349 0 R -/Parent 267 0 R -/Prev 347 0 R -/Next 355 0 R ->> endobj -347 0 obj << -/Title 348 0 R -/A 345 0 R -/Parent 267 0 R -/Prev 343 0 R -/Next 351 0 R ->> endobj -343 0 obj << -/Title 344 0 R -/A 341 0 R -/Parent 267 0 R -/Prev 339 0 R -/Next 347 0 R ->> endobj -339 0 obj << -/Title 340 0 R -/A 337 0 R -/Parent 267 0 R -/Prev 335 0 R -/Next 343 0 R ->> endobj -335 0 obj << -/Title 336 0 R -/A 333 0 R -/Parent 267 0 R -/Prev 331 0 R -/Next 339 0 R ->> endobj -331 0 obj << -/Title 332 0 R -/A 329 0 R -/Parent 267 0 R -/Prev 327 0 R -/Next 335 0 R ->> endobj -327 0 obj << -/Title 328 0 R -/A 325 0 R -/Parent 267 0 R -/Prev 323 0 R -/Next 331 0 R ->> endobj -323 0 obj << -/Title 324 0 R -/A 321 0 R -/Parent 267 0 R -/Prev 319 0 R -/Next 327 0 R ->> endobj -319 0 obj << -/Title 320 0 R -/A 317 0 R -/Parent 267 0 R -/Prev 315 0 R -/Next 323 0 R ->> endobj -315 0 obj << -/Title 316 0 R -/A 313 0 R -/Parent 267 0 R -/Prev 311 0 R -/Next 319 0 R ->> endobj -311 0 obj << -/Title 312 0 R -/A 309 0 R -/Parent 267 0 R -/Prev 307 0 R -/Next 315 0 R ->> endobj -307 0 obj << -/Title 308 0 R -/A 305 0 R -/Parent 267 0 R -/Prev 303 0 R -/Next 311 0 R ->> endobj -303 0 obj << -/Title 304 0 R -/A 301 0 R -/Parent 267 0 R -/Prev 299 0 R -/Next 307 0 R ->> endobj -299 0 obj << -/Title 300 0 R -/A 297 0 R -/Parent 267 0 R -/Prev 295 0 R -/Next 303 0 R ->> endobj -295 0 obj << -/Title 296 0 R -/A 293 0 R -/Parent 267 0 R -/Prev 291 0 R -/Next 299 0 R ->> endobj -291 0 obj << -/Title 292 0 R -/A 289 0 R -/Parent 267 0 R -/Prev 287 0 R -/Next 295 0 R ->> endobj -287 0 obj << -/Title 288 0 R -/A 285 0 R -/Parent 267 0 R -/Prev 283 0 R -/Next 291 0 R ->> endobj -283 0 obj << -/Title 284 0 R -/A 281 0 R -/Parent 267 0 R -/Prev 279 0 R -/Next 287 0 R ->> endobj -279 0 obj << -/Title 280 0 R -/A 277 0 R -/Parent 267 0 R -/Prev 275 0 R -/Next 283 0 R ->> endobj -275 0 obj << -/Title 276 0 R -/A 273 0 R -/Parent 267 0 R -/Prev 271 0 R -/Next 279 0 R ->> endobj -271 0 obj << -/Title 272 0 R -/A 269 0 R -/Parent 267 0 R -/Next 275 0 R ->> endobj -267 0 obj << -/Title 268 0 R -/A 265 0 R -/Parent 5669 0 R -/Prev 179 0 R -/Next 407 0 R -/First 271 0 R -/Last 403 0 R -/Count -34 ->> endobj -263 0 obj << -/Title 264 0 R -/A 261 0 R -/Parent 179 0 R -/Prev 259 0 R ->> endobj -259 0 obj << -/Title 260 0 R -/A 257 0 R -/Parent 179 0 R -/Prev 255 0 R -/Next 263 0 R ->> endobj -255 0 obj << -/Title 256 0 R -/A 253 0 R -/Parent 179 0 R -/Prev 251 0 R -/Next 259 0 R ->> endobj -251 0 obj << -/Title 252 0 R -/A 249 0 R -/Parent 179 0 R -/Prev 247 0 R -/Next 255 0 R ->> endobj -247 0 obj << -/Title 248 0 R -/A 245 0 R -/Parent 179 0 R -/Prev 243 0 R -/Next 251 0 R ->> endobj -243 0 obj << -/Title 244 0 R -/A 241 0 R -/Parent 179 0 R -/Prev 239 0 R -/Next 247 0 R ->> endobj -239 0 obj << -/Title 240 0 R -/A 237 0 R -/Parent 179 0 R -/Prev 235 0 R -/Next 243 0 R ->> endobj -235 0 obj << -/Title 236 0 R -/A 233 0 R -/Parent 179 0 R -/Prev 231 0 R -/Next 239 0 R ->> endobj -231 0 obj << -/Title 232 0 R -/A 229 0 R -/Parent 179 0 R -/Prev 227 0 R -/Next 235 0 R ->> endobj -227 0 obj << -/Title 228 0 R -/A 225 0 R -/Parent 179 0 R -/Prev 223 0 R -/Next 231 0 R ->> endobj -223 0 obj << -/Title 224 0 R -/A 221 0 R -/Parent 179 0 R -/Prev 219 0 R -/Next 227 0 R ->> endobj -219 0 obj << -/Title 220 0 R -/A 217 0 R -/Parent 179 0 R -/Prev 215 0 R -/Next 223 0 R ->> endobj -215 0 obj << -/Title 216 0 R -/A 213 0 R -/Parent 179 0 R -/Prev 211 0 R -/Next 219 0 R ->> endobj -211 0 obj << -/Title 212 0 R -/A 209 0 R -/Parent 179 0 R -/Prev 207 0 R -/Next 215 0 R ->> endobj -207 0 obj << -/Title 208 0 R -/A 205 0 R -/Parent 179 0 R -/Prev 203 0 R -/Next 211 0 R ->> endobj -203 0 obj << -/Title 204 0 R -/A 201 0 R -/Parent 179 0 R -/Prev 199 0 R -/Next 207 0 R ->> endobj -199 0 obj << -/Title 200 0 R -/A 197 0 R -/Parent 179 0 R -/Prev 195 0 R -/Next 203 0 R ->> endobj -195 0 obj << -/Title 196 0 R -/A 193 0 R -/Parent 179 0 R -/Prev 191 0 R -/Next 199 0 R ->> endobj -191 0 obj << -/Title 192 0 R -/A 189 0 R -/Parent 179 0 R -/Prev 187 0 R -/Next 195 0 R ->> endobj -187 0 obj << -/Title 188 0 R -/A 185 0 R -/Parent 179 0 R -/Prev 183 0 R -/Next 191 0 R ->> endobj -183 0 obj << -/Title 184 0 R -/A 181 0 R -/Parent 179 0 R -/Next 187 0 R ->> endobj -179 0 obj << -/Title 180 0 R -/A 177 0 R -/Parent 5669 0 R -/Prev 79 0 R -/Next 267 0 R -/First 183 0 R -/Last 263 0 R -/Count -21 ->> endobj -175 0 obj << -/Title 176 0 R -/A 173 0 R -/Parent 79 0 R -/Prev 171 0 R ->> endobj -171 0 obj << -/Title 172 0 R -/A 169 0 R -/Parent 79 0 R -/Prev 167 0 R -/Next 175 0 R ->> endobj -167 0 obj << -/Title 168 0 R -/A 165 0 R -/Parent 79 0 R -/Prev 163 0 R -/Next 171 0 R ->> endobj -163 0 obj << -/Title 164 0 R -/A 161 0 R -/Parent 79 0 R -/Prev 159 0 R -/Next 167 0 R ->> endobj -159 0 obj << -/Title 160 0 R -/A 157 0 R -/Parent 79 0 R -/Prev 155 0 R -/Next 163 0 R ->> endobj -155 0 obj << -/Title 156 0 R -/A 153 0 R -/Parent 79 0 R -/Prev 151 0 R -/Next 159 0 R ->> endobj -151 0 obj << -/Title 152 0 R -/A 149 0 R -/Parent 79 0 R -/Prev 147 0 R -/Next 155 0 R ->> endobj -147 0 obj << -/Title 148 0 R -/A 145 0 R -/Parent 79 0 R -/Prev 143 0 R -/Next 151 0 R ->> endobj -143 0 obj << -/Title 144 0 R -/A 141 0 R -/Parent 79 0 R -/Prev 139 0 R -/Next 147 0 R ->> endobj -139 0 obj << -/Title 140 0 R -/A 137 0 R -/Parent 79 0 R -/Prev 135 0 R -/Next 143 0 R ->> endobj -135 0 obj << -/Title 136 0 R -/A 133 0 R -/Parent 79 0 R -/Prev 131 0 R -/Next 139 0 R ->> endobj -131 0 obj << -/Title 132 0 R -/A 129 0 R -/Parent 79 0 R -/Prev 127 0 R -/Next 135 0 R ->> endobj -127 0 obj << -/Title 128 0 R -/A 125 0 R -/Parent 79 0 R -/Prev 123 0 R -/Next 131 0 R ->> endobj -123 0 obj << -/Title 124 0 R -/A 121 0 R -/Parent 79 0 R -/Prev 119 0 R -/Next 127 0 R ->> endobj -119 0 obj << -/Title 120 0 R -/A 117 0 R -/Parent 79 0 R -/Prev 115 0 R -/Next 123 0 R ->> endobj -115 0 obj << -/Title 116 0 R -/A 113 0 R -/Parent 79 0 R -/Prev 111 0 R -/Next 119 0 R ->> endobj -111 0 obj << -/Title 112 0 R -/A 109 0 R -/Parent 79 0 R -/Prev 107 0 R -/Next 115 0 R ->> endobj -107 0 obj << -/Title 108 0 R -/A 105 0 R -/Parent 79 0 R -/Prev 103 0 R -/Next 111 0 R ->> endobj -103 0 obj << -/Title 104 0 R -/A 101 0 R -/Parent 79 0 R -/Prev 99 0 R -/Next 107 0 R ->> endobj -99 0 obj << -/Title 100 0 R -/A 97 0 R -/Parent 79 0 R -/Prev 95 0 R -/Next 103 0 R ->> endobj -95 0 obj << -/Title 96 0 R -/A 93 0 R -/Parent 79 0 R -/Prev 91 0 R -/Next 99 0 R ->> endobj -91 0 obj << -/Title 92 0 R -/A 89 0 R -/Parent 79 0 R -/Prev 87 0 R -/Next 95 0 R ->> endobj -87 0 obj << -/Title 88 0 R -/A 85 0 R -/Parent 79 0 R -/Prev 83 0 R -/Next 91 0 R ->> endobj -83 0 obj << -/Title 84 0 R -/A 81 0 R -/Parent 79 0 R -/Next 87 0 R ->> endobj -79 0 obj << -/Title 80 0 R -/A 77 0 R -/Parent 5669 0 R -/Prev 71 0 R -/Next 179 0 R -/First 83 0 R -/Last 175 0 R -/Count -24 ->> endobj -75 0 obj << -/Title 76 0 R -/A 73 0 R -/Parent 71 0 R ->> endobj -71 0 obj << -/Title 72 0 R -/A 69 0 R -/Parent 5669 0 R -/Prev 63 0 R -/Next 79 0 R -/First 75 0 R -/Last 75 0 R -/Count -1 ->> endobj -67 0 obj << -/Title 68 0 R -/A 65 0 R -/Parent 63 0 R ->> endobj -63 0 obj << -/Title 64 0 R -/A 61 0 R -/Parent 5669 0 R -/Prev 55 0 R -/Next 71 0 R -/First 67 0 R -/Last 67 0 R -/Count -1 ->> endobj -59 0 obj << -/Title 60 0 R -/A 57 0 R -/Parent 55 0 R ->> endobj -55 0 obj << -/Title 56 0 R -/A 53 0 R -/Parent 5669 0 R -/Prev 47 0 R -/Next 63 0 R -/First 59 0 R -/Last 59 0 R -/Count -1 ->> endobj -51 0 obj << -/Title 52 0 R -/A 49 0 R -/Parent 47 0 R ->> endobj -47 0 obj << -/Title 48 0 R -/A 45 0 R -/Parent 5669 0 R -/Prev 7 0 R -/Next 55 0 R -/First 51 0 R -/Last 51 0 R -/Count -1 ->> endobj -43 0 obj << -/Title 44 0 R -/A 41 0 R -/Parent 7 0 R -/Prev 39 0 R ->> endobj -39 0 obj << -/Title 40 0 R -/A 37 0 R -/Parent 7 0 R -/Prev 35 0 R -/Next 43 0 R ->> endobj -35 0 obj << -/Title 36 0 R -/A 33 0 R -/Parent 7 0 R -/Prev 31 0 R -/Next 39 0 R ->> endobj -31 0 obj << -/Title 32 0 R -/A 29 0 R -/Parent 7 0 R -/Prev 27 0 R -/Next 35 0 R ->> endobj -27 0 obj << -/Title 28 0 R -/A 25 0 R -/Parent 7 0 R -/Prev 23 0 R -/Next 31 0 R ->> endobj -23 0 obj << -/Title 24 0 R -/A 21 0 R -/Parent 7 0 R -/Prev 19 0 R -/Next 27 0 R ->> endobj -19 0 obj << -/Title 20 0 R -/A 17 0 R -/Parent 7 0 R -/Prev 15 0 R -/Next 23 0 R ->> endobj -15 0 obj << -/Title 16 0 R -/A 13 0 R -/Parent 7 0 R -/Prev 11 0 R -/Next 19 0 R ->> endobj -11 0 obj << -/Title 12 0 R -/A 9 0 R -/Parent 7 0 R -/Next 15 0 R ->> endobj -7 0 obj << -/Title 8 0 R -/A 5 0 R -/Parent 5669 0 R -/Next 47 0 R -/First 11 0 R -/Last 43 0 R -/Count -9 ->> endobj -5670 0 obj << -/Names [(Doc-Start) 479 0 R (Item.1) 1160 0 R (Item.2) 1161 0 R (Item.3) 1162 0 R (a00036) 1566 0 R (a00037) 3302 0 R (a00038) 1267 0 R (a00039) 2467 0 R (a00040) 1539 0 R (a00041) 2486 0 R (a00042) 1366 0 R (a00043) 1367 0 R (a00044) 1540 0 R (a00045) 2469 0 R (a00046) 1567 0 R (a00047) 2466 0 R (a00048) 1237 0 R (a00049) 2465 0 R (a00050) 2468 0 R (a00051) 5136 0 R (a00077) 985 0 R (a00077_1d2f2751b0865045486c9aa59d0d0971) 3275 0 R (a00077_20541305548441e5dcb2e1e7e6f300eb) 3278 0 R (a00077_2391bb18db5f620e0e9fb848ae5ba5e9) 3265 0 R (a00077_27df2817055bc099821d96eb60a40b34) 3281 0 R (a00077_31471b5e27bda51832d0fa49bd6d9b54) 3251 0 R (a00077_5361ef75bfbdb469b5cc31f0060a2670) 3267 0 R (a00077_564bab93ef6a268a5de2fab885c1d32a) 3269 0 R (a00077_5e16ca335dfd7394527f602da879fca2) 3284 0 R (a00077_7a520a57d7d0541524f34a7685635597) 3272 0 R (a00077_cfd36e02c7498d766ff802575e981612) 3256 0 R (a00077_e0b137a3875ad12a99e5e3e0e177fd12) 3254 0 R (a00077_e707c39412e09d3a47f0b3c5dad33725) 3262 0 R (a00077_e80af46ceef63eab3c786525370ae720) 3259 0 R (a00078) 986 0 R (a00078_4b1b1436b50ed7638aece35f41421196) 3298 0 R (a00078_4da86e9feb5e5835eb15163c2cb61116) 3300 0 R (a00078_a9825b5977b2d4dec66e6bd09e6ae6ea) 3295 0 R (a00079) 987 0 R (a00079_1513a9e88921750d2a611b518f6fc207) 3311 0 R (a00079_9a84c69ec5a4705ccb1ca99fcd120add) 3309 0 R (a00080) 988 0 R (a00080_16a3a3056f44b7245ce085b937a269dd) 3339 0 R (a00080_447eb700ea7a185e0f155934995d49e5) 3329 0 R (a00080_468c04fff28e784f93ebc3f0849211dd) 3335 0 R (a00080_4c6f843219271d25766ee5969e435d1a) 3327 0 R (a00080_5e274a8f8b5fb2b3999c54fe27c76e46) 3333 0 R (a00080_6df929b448ea98bc44d41f5e96237bda) 3341 0 R (a00080_78f82878f3fd0e7401c7d7d3b3fefbef) 3337 0 R (a00080_94fcc9f5c47f419040d849ce58beae35) 3331 0 R (a00080_9dd8edeece221c853a4c4516bf1b01c2) 3321 0 R (a00080_c39694ece9526b84012f90f2bb00af9f) 3319 0 R (a00080_e261f08e1556287d241764fb2e99fc26) 3324 0 R (a00081) 989 0 R (a00081_164124d48fe85bc98d9a300382a5245d) 3351 0 R (a00081_5595902fd42d874e35a70206fad8f6d0) 3353 0 R (a00081_b42c7af6114fde5d21206a2e18a7d3ee) 3349 0 R (a00081_b5801722740492e69bcc73687476009f) 3355 0 R (a00082) 990 0 R (a00082_17aacf7c5e2046c1f3ab50faa1b2f7eb) 3365 0 R (a00082_19b82696bd84a803250cbf9812f2f125) 3377 0 R (a00082_31f25efccba9fd043047133d0d0ba5ab) 3369 0 R (a00082_a408ca8630154ebd039f37a828399f7b) 3380 0 R (a00082_a6bfaf327ce839ba70accd71014398d0) 3386 0 R (a00082_b973f2e16c2883a8a0164d716cce5a31) 3372 0 R (a00082_c3d1bfbb1abde31973c015de97ce2f84) 3375 0 R (a00082_d6bd03239291629676e4c0286ebb650f) 3383 0 R (a00082_fda184638130452f3570966acc5b97f9) 3388 0 R (a00083) 991 0 R (a00083_20fae11b540a561c622a0d74cb4b9f97) 3399 0 R (a00083_5e8637b1514d03eb3eb12dc9a502e27e) 3396 0 R (a00084) 992 0 R (a00084_c3fa0fa86689e3e7c039a16c16861dbe) 3408 0 R (a00085) 993 0 R (a00085_04833004cec509a41c502429df308e35) 3429 0 R (a00085_0560495c60c68d62617ff1f3d0c424a4) 3437 0 R (a00085_0bb4f34164e7207c2db26b77f23ccfff) 3420 0 R (a00085_3592a1f5ae100db2ed9c0810b41c7bc7) 3423 0 R (a00085_503c2994a4e52300516e2b820f0fc65b) 3427 0 R (a00085_5ed2615cec9e633d90ac5968771976eb) 3440 0 R (a00085_668cab7d54ff0a2fc2a2179ca06b0798) 3425 0 R (a00085_68204df6bde3e3c27271ebde10579a57) 3434 0 R (a00085_a312da7b5f6441140721ec7e55f345a8) 3431 0 R (a00086) 994 0 R (a00086_cca775e46d4405b7775b328f7694f7e7) 3451 0 R (a00087) 995 0 R (a00087_e8eb428c05bc1dee022246a3063d277c) 3470 0 R (a00087_fe557d333c06cf65f52023f45f5b0a3a) 3472 0 R (a00088) 714 0 R (a00088_0cd09beee671e7e9efb0b4aced10249e) 3485 0 R (a00088_0ef3ae2764714bf90620075c374c262e) 3497 0 R (a00088_1df6aa054ef2fa634ac4c6f418228285) 3488 0 R (a00088_2d9732cf5752d30bd11cb25dc7d0c8d3) 3522 0 R (a00088_3347ef1b6e8581402445d1a0280c7a14) 3500 0 R (a00088_4289c59840b128f2f6526e9da2711d47) 3525 0 R (a00088_70297b3e6d4eaae7bd828cb50bd1efe3) 3491 0 R (a00088_79510aa86d3fa0a0fc6cfc49b1da7279) 3482 0 R (a00088_8f6b08a5ba2a8d75ca7279e2056aa8c6) 3494 0 R (a00088_97f9e1fda815bfb8b1f4577c355ade20) 3528 0 R (a00088_a5f58074435cdc180f17de69651beebd) 3519 0 R (a00088_db7a3fadb68df5fdd37e8b91a2c751ea) 3503 0 R (a00088_e3aa9cc25e45b663e6aabc54c013019e) 3512 0 R (a00088_eb9fcbd3c9b0a795dcd63f33c323d65c) 3509 0 R (a00088_ef661afb3aa82f0437d2ed8d3c20be76) 3506 0 R (a00089) 996 0 R (a00089_aacd5fa1806e0f0dd0bc96dd36507ad8) 3537 0 R (a00090) 997 0 R (a00090_1abbbe7bc5d7d033c727691528b85b8d) 3549 0 R (a00090_b684c17bf48c8e3b3fcf97b06b4c6ee1) 3546 0 R (a00090_c9273cc1fcdaeeddc523ca9f34977e06) 3552 0 R (a00091) 998 0 R (a00091_0ec6a6cbcbfd191d393738c16d54e5e1) 3585 0 R (a00091_266ea23d75c83f15b915ce54100e51c5) 3594 0 R (a00091_308463cc7b3d45d2dbcdcedd4cde9bb9) 3570 0 R (a00091_4619e69ec86a47f6abe945b39ec7f63a) 3573 0 R (a00091_55be3d5413ce49c5c4f5576def12d7ec) 3576 0 R (a00091_55e7764a9f6ed05aaa98076b9f6770a5) 3579 0 R (a00091_7d472d8b3c41618d39c93c4ca92fb3f4) 3561 0 R (a00091_805f8fd5533a6d4b6793e0645005da4c) 3597 0 R (a00091_967def494c68cfc8a08d5a6c4dbbc25d) 3603 0 R (a00091_a3f2d9cb20290019b2743e8df31a2f8b) 3564 0 R (a00091_a6d51f3fa5da9b7f9cd37ae69600c04a) 3600 0 R (a00091_b15853725b233d526b291db0347d4ecd) 3567 0 R (a00091_babb9c2be394477af97f79507bcb4c86) 3582 0 R (a00091_e27f4949613fe3c1de5a839af01d99dd) 3588 0 R (a00091_fa0fe6ca88f692d22af70ff007411252) 3591 0 R (a00092) 999 0 R (a00092_4dc3294d67d705f7248ef57e4259424f) 3612 0 R (a00093) 1000 0 R (a00093_0c816f34c0187f2154c91a18d3ad87c8) 3661 0 R (a00093_1deb2899508216804823498a69378118) 3622 0 R (a00093_3983b45977630418d3038231aa8b68ed) 3642 0 R (a00093_3ad48284f7a91f78bb24096aad89056e) 3698 0 R (a00093_494ea6767a8a8fab7abe96b799d6c3b3) 3699 0 R (a00093_4f39f0fe6a820d260fe6cddf9ccaa832) 3686 0 R (a00093_5d8996950cdf3d8130cc3ad340eb9dff) 3657 0 R (a00093_6157452bdc9921f44b2e22e4b5969258) 3662 0 R (a00093_7675e6b9adbddbd545d3aac8ca092fbb) 3664 0 R (a00093_7a58d95f7f7827789ff52500e3d16c34) 3696 0 R (a00093_7f7bb2145afba5df00c6e10ddefa8ae1) 3658 0 R (a00093_8082509468b2ac80ed7746aa1a5bc4f7) 3663 0 R (a00093_8da121d6e50992ec55778f9b2141552d) 3666 0 R (a00093_b4622e2599ff3a592db09219b2641682) 3665 0 R (a00093_b6e9a75167bdddd561373bc5b6ef501c) 3697 0 R (a00093_b93e351c3abba0c700b26b7b07e9527d) 3660 0 R (a00093_dc69abadd5aa07c7d74f9292db2cd93c) 3659 0 R (a00093_e292b8977f6b81265bf14e1676face3e) 3652 0 R (a00093_e9205a565ea3c911a785fc4e87c91a58) 3700 0 R (a00094) 1001 0 R (a00094_025ffa46b799fa6952719c499a3ae17c) 3740 0 R (a00094_0f27e16ddcf7199d514968204966f559) 3722 0 R (a00094_2541fae506eb111ff1be2372e0919839) 3743 0 R (a00094_619d9755a5d4aaabdb2e5e6ea4c1e0bf) 3752 0 R (a00094_6af8a59d0ab8967aacea749d6e59ac90) 3749 0 R (a00094_71721395f1c7c42b8bcc111b339bea7c) 3746 0 R (a00094_7a59f0dad059786238d8ab604630e7f3) 3716 0 R (a00094_7f0ab3fe3bcf1e3ed9f5950cb4474ec1) 3755 0 R (a00094_85d7f35662f7be20cd84e789a290dd4b) 3719 0 R (a00094_8cf0ca17b115ff2e3071b3fabcc43b53) 3710 0 R (a00094_8d4e08d051b35b1c710c3be5b8bbfa05) 3734 0 R (a00094_a81fff4836049cb3c018304d77337554) 3737 0 R (a00094_af7a8a5310ad945de38f5b3ac755ae7d) 3728 0 R (a00094_c8f124419a231f38bb6cdf5041757a27) 3731 0 R (a00094_dc7001682017599549f57771f4cd1b9a) 3761 0 R (a00094_dde3cf9a57445814d01b3c67da08afdb) 3764 0 R (a00094_e1e60d56ea87dfa09230e25ca5ecf2fc) 3707 0 R (a00094_e45b31a0a277dd5325ad2a332358b21b) 3725 0 R (a00094_e57281f5bef284bc9545834ef8ed4a96) 3713 0 R (a00094_f4a1d8cfbe270393a2de02b0c743e474) 3758 0 R (a00095) 1002 0 R (a00095_280a0c2a93544e597f92bbacf36ee1dc) 3781 0 R (a00095_4da1d7815516cd2b5bda3a66fdf05198) 3784 0 R (a00095_8a661a2d544100b82d0d14a1985083d5) 3775 0 R (a00095_981392e295db4d024eea95805c51c371) 3778 0 R (a00095_c8afa29e0aa5e789d6929b366d98ba56) 3787 0 R (a00096) 1003 0 R (a00096_47140aa52cb9e6a2de38fdfc5da08df1) 3802 0 R (a00096_51bbbe3099c10ef26119ddc2aa51e35e) 3814 0 R (a00096_569382bc53aa64c227e57efe88fe13ac) 3805 0 R (a00096_6f8c65cfc8242197bcc3cb5b4735b16f) 3811 0 R (a00096_8587178a29882482be20c2822b402b96) 3808 0 R (a00096_858f970feb7462871c814953697a8ad7) 3835 0 R (a00096_a80e8d0fc768525fa3bfb3d4e4cf260d) 3820 0 R (a00096_b20096ae4953caaa42f6bb2373c4494c) 3826 0 R (a00096_be2c98748e180c1747823cd2fb8ecf0e) 3823 0 R (a00096_c92d2f194f096e84791f95d7e8f0ba92) 3832 0 R (a00096_e82f68cb91d8688a619d55d2a8572979) 3829 0 R (a00096_ed119a030ebd3bf7c30a12071c27d441) 3799 0 R (a00096_f1684ad96b8acf54154688df3883b801) 3796 0 R (a00096_f20186ef441ef5b600e8544a0f2d8d81) 3817 0 R (a00097) 1004 0 R (a00097_134ec55c3d5abaebfed4ff8edfedf1ea) 3862 0 R (a00097_2fca02673894f222b01ad2d3a4d7dd79) 3870 0 R (a00097_5960d82e7aca2986b8509a0d87d6cbc8) 3846 0 R (a00097_5a3116623c6a7da7c82db6c301ae0da3) 3865 0 R (a00097_606d2729bf411ade69044828403a72af) 3868 0 R (a00097_6925d46b2819adb474a5f0036f02dd7d) 3852 0 R (a00097_7092781c50dcad50f473888585c85b83) 3855 0 R (a00097_8ae6395641b7752dce47881e20cee970) 3849 0 R (a00097_a6487b9c1c773b32656065d0e19bf142) 3858 0 R (a00097_e87913860c6b05c6e6b060639b950098) 3860 0 R (a00097_fb60f42593d305ea36d9b4303722696e) 3873 0 R (a00100) 1064 0 R (a00101) 1065 0 R (a00102) 1066 0 R (a00102_2e52037249bb98d7bbecf42e275beb07) 3926 0 R (a00102_4350350ce0d4595876743d4c0a720bcc) 3918 0 R (a00102_55735650f879293d9b7b5fda6753d147) 3942 0 R (a00102_6a327c0ffd40f69fbcd5f01f12e5745c) 3922 0 R (a00102_6aaa9da3d0f8d4c0799516d46d939942) 3934 0 R (a00102_72d99b1623afa14bd58c667b748c2ddc) 3928 0 R (a00102_7bf0c086c7c41c12cc63324327932d91) 3946 0 R (a00102_876c82c946543cd70c141e41417138e0) 3944 0 R (a00102_8ee5e2c8e517d6e4f2198057f81e93c6) 3936 0 R (a00102_96eb4534b574ece96ed36806039f73d3) 3916 0 R (a00102_9f6c329c04baba17fe0f5b2a6597d713) 3932 0 R (a00102_bf4401501f1389872141a78b63f325a3) 3940 0 R (a00102_c72f8777ccc45ae274449ea7a9f3de04) 3930 0 R (a00102_dd685a0f8b5e76a2687cc0f306813bfb) 3924 0 R (a00102_e7250008b68d1909d54040515eef8ebb) 3920 0 R (a00102_ee60b8757bacab269b0ccd7c240bf01d) 3938 0 R (a00103) 1067 0 R (a00104) 1068 0 R (a00105) 1069 0 R (a00106) 1070 0 R (a00107) 1071 0 R (a00108) 1072 0 R (a00109) 1073 0 R (a00110) 1074 0 R (a00111) 1075 0 R (a00112) 1076 0 R (a00113) 1077 0 R (a00114) 1078 0 R (a00120) 1079 0 R (a00121) 1080 0 R (a00123) 1081 0 R (a00124) 1082 0 R (a00125) 1083 0 R (a00127) 1084 0 R (a00128) 1085 0 R (a00129) 1086 0 R (a00130) 1087 0 R (a00131) 1088 0 R (a00131_1273664aba3e6a2a46e87dcb1a5f19ad) 4480 0 R (a00131_1d5ce7047650f3ecee0814dbc8714099) 4488 0 R (a00131_5320d4457a472d8888ec1905bc0e0a1c) 4475 0 R (a00131_5f2e1fcf0055d20ce17664b1027bb9eb) 4477 0 R (a00131_692d80636342d564422ccd9296ad568d) 4491 0 R (a00131_88460bea09a462d0e22511cb567eee14) 4484 0 R (a00131_890e822616a6839dfbf51dcb591b8e99) 4482 0 R (a00132) 1111 0 R (a00132_1273664aba3e6a2a46e87dcb1a5f19ad) 4506 0 R (a00132_1d5ce7047650f3ecee0814dbc8714099) 4512 0 R (a00132_692d80636342d564422ccd9296ad568d) 4515 0 R (a00132_88460bea09a462d0e22511cb567eee14) 4508 0 R (a00132_890e822616a6839dfbf51dcb591b8e99) 4519 0 R (a00134) 1112 0 R (a00135) 1113 0 R (a00135_534d9e416324fb8ecca6b9cb4b1f6a6a) 4540 0 R (a00136) 1114 0 R (a00137) 1115 0 R (a00138) 1116 0 R (a00139) 1117 0 R (a00140) 1118 0 R (a00141) 1119 0 R (a00142) 657 0 R (a00142_authors) 1137 0 R (a00142_g155cba6121323726d02c00284428fed6) 1235 0 R (a00142_g2f8f70c30b9ee08a103fbd69a4365c4c) 1148 0 R (a00142_g2ffbb9e554e08a343ae2f9de4bedfdfc) 1144 0 R (a00142_g3d4c8bd4aada659eb34f5d2ffd3e7901) 1196 0 R (a00142_g7b04a0035bef29d905496c23bae066d2) 1146 0 R (a00142_g7b5319b5b65761a845fcd1500fde4cdc) 1215 0 R (a00142_g905451249dca72ce0385bf2a9ff178ee) 1233 0 R (a00142_g99e43010ec61327164466aa2d902de45) 1145 0 R (a00142_g9e97a0b4d5cc7764d8e19758f5da53ae) 1197 0 R (a00142_g9ff1e8936a8a26bff54c05f8a989b93b) 1219 0 R (a00142_gad14bbbf092b90aa0a5a4f9169504a8d) 1147 0 R (a00142_gcd3ac045f0a4ae63412e3b3d8780e8ab) 1232 0 R (a00142_gcfae9053e5c107a1aed6b228c917d2ea) 1217 0 R (a00142_ge3c821e3a388615528efda9d23c7d115) 1236 0 R (a00142_ge469332907e0617d72d5e2dd4297119d) 1221 0 R (a00142_ge6bae7dc0225468c8a5ac269df549892) 1143 0 R (a00142_gfa82b860a64b67d25ab3abc21811896f) 1234 0 R (a00142_pt-autovars) 1153 0 R (a00142_pt-desc) 1141 0 R (a00142_pt-impl) 1157 0 R (a00142_pt-scheduling) 1155 0 R (a00143) 649 0 R (a00143_g41bf109b6a45328d5744c0a76563fb6c) 1312 0 R (a00143_g54a466311575a727830a92a6c3621cb2) 1305 0 R (a00143_g5eced097547fd3fac4ba2a255493d921) 1307 0 R (a00143_gd85fc90c30d1fc37c63c4844be5fe09d) 1309 0 R (a00144) 651 0 R (a00144_g12b467f314489259dd718228d0827a51) 1341 0 R (a00144_g20bc87e5c063c3f4b01547be6e5a0148) 1338 0 R (a00144_g30e827f33eacff55ecb4d8fb5a11d5d1) 1345 0 R (a00144_g41d37ea1e3bd24f7b51e9409aceaaa80) 1342 0 R (a00144_g5323320b7316647042016f17c4e881be) 1344 0 R (a00144_gd8e8bc9bc0e2ea4a24a8a024fd3a7f7c) 1336 0 R (a00144_geb79c914cf137e6d27fd7583e5a66679) 1343 0 R (a00145) 652 0 R (a00145_g22f140b02c354dfebcc7ad481c3bcd68) 1382 0 R (a00145_gc48ed5f0d27721ef62a3ed02a5ad8d2e) 1378 0 R (a00146) 653 0 R (a00146_g1024f8a5fa65e82bf848b2e6590d9628) 678 0 R (a00146_g2c64c8c36bc84f9336f6a2184ea51883) 1409 0 R (a00146_ga4360412ee9350fba725f98a137169fe) 677 0 R (a00146_gb81e78f890dbbee50c533a9734b74fd9) 1411 0 R (a00146_gbaf0bb2b6a4424b4eb69e45e457c2583) 1407 0 R (a00146_gf20aaf4292cb0d2a1b10bc0a568b51fa) 1408 0 R (a00146_gf5c2ad5acf3cc23b8262e9ba6a15136b) 1410 0 R (a00146_gfd5ebb56a1bd1da9878aa886a2075e80) 1394 0 R (a00147) 655 0 R (a00147_g04b053a623aac7cd4195157d470661b3) 743 0 R (a00147_g0a8bb9d6d0f1f56852ccfccbbad6c5d8) 804 0 R (a00147_g1a1bc437c09ddef238abab41d77c3177) 716 0 R (a00147_g26a14b8dae3f861830af9e7cf1e03725) 715 0 R (a00147_g58bb90796c1cdad3aac2ecf44d87b20e) 750 0 R (a00147_g61db1dcb7c760e4dd5d60bf4e5576dca) 745 0 R (a00147_g64a238a5c02640a7a4aef004163aeb47) 1471 0 R (a00147_g79c4110211247df3fb30b8cf1c4c02af) 1520 0 R (a00147_g7b2ac4b18bd2ac3912fe67b3b17158c3) 749 0 R (a00147_g8096b0c4b543dc408f4dd031ddae7240) 773 0 R (a00147_g81ac47cee1c18f6aa479044069db7ca3) 805 0 R (a00147_g8411c95a4d89367ad2d9d6bde1a3d537) 1483 0 R (a00147_g88d2ccf7cd821f89d9a8df7e3948b56c) 746 0 R (a00147_ga20812098a4663c8a9fc4ce8e95391b6) 1516 0 R (a00147_ga87feebc7cffd4d8300e776cf64e4fec) 1492 0 R (a00147_ga8933ad15a2e2947dae4a5cff50e6007) 744 0 R (a00147_ga9de254b8aa308eb4aab17efdde622d2) 1484 0 R (a00147_gaa585784b0914cac1d37f07f85457008) 1518 0 R (a00147_gb5fecbc62edd128012cea0f47b57ab9f) 742 0 R (a00147_gdb971fb1525d0c5002f52125b05f3218) 772 0 R (a00147_gdd1ab3704ecd4900eec61a6897d32dc8) 771 0 R (a00147_gde6634974418e3240c212b9b16864368) 1485 0 R (a00147_ge5ab69d40013e6cf86ef1763c95d920e) 1517 0 R (a00147_gef14e83c046e19ab9fe9d1bbcca276c2) 1464 0 R (a00147_gef6c4140c632b6a406779342cf3b6eb6) 747 0 R (a00147_gf2dbaceb10c67783a115075b5b6d66df) 1515 0 R (a00147_gfbd5fc486dfdf6bf6fc9db52b1f418c4) 748 0 R (a00148) 1654 0 R (a00148_g118e9d76568ab81ad97f138d4ea1ddd2) 1668 0 R (a00148_g165b603ec150e26efec7be199c9c2901) 1683 0 R (a00148_g210e629f7252e4bc8458cbdf260b3318) 1677 0 R (a00148_g22fa0681cd463191d7a01fe85d86996f) 1680 0 R (a00148_g53fbda0e8c31d4882294c8dc3cb5f487) 1675 0 R (a00148_g69a7a4951ff21b302267532c21ee78fc) 1617 0 R (a00148_g6b16e0bac41821c1fbe0c267071642f0) 1678 0 R (a00148_g769512993b7b27271909d6daa4748b60) 1676 0 R (a00148_g87f0b54ade0d159fba495089128a4932) 774 0 R (a00148_g969d7fff37a979737da045e0d538a9bd) 1679 0 R (a00148_ga22b04cac8cf283ca12f028578bebc06) 1618 0 R (a00148_ge23534479ead15af8ff08ace26a47fb5) 1682 0 R (a00148_gffcd2fbe181e2aaefbf970551c302af5) 1681 0 R (a00149) 654 0 R (a00149_g12a33f0c09711167bdf3dd7d7cf8c5a1) 1748 0 R (a00150) 1760 0 R (a00150_g013c3a06a8b58589a77f4a3442f89c2a) 1923 0 R (a00150_g041aea91aa6ef84dcc6cac3c51db9b2f) 1809 0 R (a00150_g04b053a623aac7cd4195157d470661b3) 1997 0 R (a00150_g1215163245304bad20d6c5608ad75ab7) 1880 0 R (a00150_g12a33f0c09711167bdf3dd7d7cf8c5a1) 1755 0 R (a00150_g12f3bf821224b8e7b48a57ed3cea15cf) 1886 0 R (a00150_g1320fd0006a2f70138bc2d0018dda829) 1872 0 R (a00150_g13dfcb4a5f920e108253ade527a66cc2) 1835 0 R (a00150_g1425d4a0c2760adb653a04c0fb137a8d) 1878 0 R (a00150_g15f2617f7dc1713f9d10282125c6027b) 1862 0 R (a00150_g160128ab5d2ea3cc497b91ee4eb4ef99) 1827 0 R (a00150_g17d111686f98e4c09db73a770ac3f1a4) 1858 0 R (a00150_g1cea57e3ea526f210b1068e6dcf7b4f4) 1896 0 R (a00150_g1d3211dbbdfb22d6a47b60dddcf945e8) 1900 0 R (a00150_g1ef35301f43a5bbb9f89f07b5a36b9a0) 1519 0 R (a00150_g207d17b633cd095120a74bc1f2257b17) 1892 0 R (a00150_g20ceef9d0868d391c2f33041b02cb1f1) 1926 0 R (a00150_g20df5c82f2a15a508c19e505b5d9de2b) 2014 0 R (a00150_g210f227119fc972e6222c9cb452e15a9) 1981 0 R (a00150_g22f140b02c354dfebcc7ad481c3bcd68) 1990 0 R (a00150_g236d5c7872f59c8fe7b701c7252b976e) 2042 0 R (a00150_g24f52ac52d6e714cb04a5aa01be3bdd0) 1906 0 R (a00150_g266263ac78a1361a2b1d15741d3b0675) 1935 0 R (a00150_g28eda870cff3d8e3cf2949e6f57a502b) 1817 0 R (a00150_g2a0cf5d86c58fab216414ce59bf1fea1) 2049 0 R (a00150_g2addf34c7d457c1a7899a7e2171ef1e9) 679 0 R (a00150_g2d3ba4b14d6d2f6576f9b547800b7945) 1805 0 R (a00150_g3237be0d9ec457de0177689ee23c0d5c) 2011 0 R (a00150_g359951eecd80541c2101f628a9da9146) 1841 0 R (a00150_g39ce739bd352d7e348e37395ce903e43) 1793 0 R (a00150_g42288d5c3cf4b10becefec657f441e54) 1902 0 R (a00150_g4309376690872fa4beb4f025f5cc199b) 1913 0 R (a00150_g44b3b1ab31a403ba28ec135adfcbefef) 1874 0 R (a00150_g499bb98a0b4ae9a98553ede81317606d) 2023 0 R (a00150_g4cc3e223b63f27b546d62e9a258dba5a) 1894 0 R (a00150_g517c770991459cc62dc009c0d3875c6a) 1843 0 R (a00150_g561b8eda32e059d4e7397f776268cc63) 1998 0 R (a00150_g57e6dc1d58a36d0ed53a3dd29ccc5798) 1799 0 R (a00150_g5b5615dc240daed20949c0fded2b4679) 2033 0 R (a00150_g5c5b1834e497f53ad0ef947bbe9777fa) 1888 0 R (a00150_g5c97ae587595b5444be80f5ecc1d3382) 1813 0 R (a00150_g5ca559def464ef20d8b1f7d32f2f160d) 1870 0 R (a00150_g6020613f5062417d9811cfa837215c83) 1868 0 R (a00150_g62c03e0a308cc23929a80fe8d8f9dc1e) 1898 0 R (a00150_g64d9affc680a445d708234e70450477b) 1829 0 R (a00150_g6832e4d2d046536b6472f7ac92340f68) 681 0 R (a00150_g691688604655ea8943d15f14c60027d8) 1884 0 R (a00150_g6bc12c6c7b56f73ce5d57abfdcdc6eb5) 1854 0 R (a00150_g6bfa488f87f68a6f7f4a3efb9e45eaf8) 1791 0 R (a00150_g6f2b90c597ec23f39ec716ccec11233c) 1860 0 R (a00150_g7023a34ba9e9d03b5fbedbcb32924453) 1989 0 R (a00150_g788ffac72342f6172343d7f8099cbe1a) 1999 0 R (a00150_g79c4110211247df3fb30b8cf1c4c02af) 1993 0 R (a00150_g7d3673f52f5846b6961d23b150decd54) 2008 0 R (a00150_g8387881de3a8bfd3c0d57b9d04ac9b7e) 1904 0 R (a00150_g85b65e38aa74eba18979156f97a94a87) 680 0 R (a00150_g88e60aa2cf23e1c65d630701db08c743) 1866 0 R (a00150_g8af482dec973db57d8b3bd3f69461488) 1821 0 R (a00150_g96544dedc1cdc71ad2ad54bf1d5e5433) 1910 0 R (a00150_g9c0814ed491fa452ec97910c0728d410) 1921 0 R (a00150_g9c24fba2cd8f7f62accb0a0d5bbe4dad) 1992 0 R (a00150_g9ebb4dac683163840eab9c6c41ad61f7) 1929 0 R (a00150_g9ee50a40597e67fce96541ab56c3b712) 2000 0 R (a00150_g9f1822e1d231235edacad691f3cb7bbb) 1882 0 R (a00150_ga05a3dde2048480fa3ab2a5961898d18) 2029 0 R (a00150_ga22b04cac8cf283ca12f028578bebc06) 1996 0 R (a00150_ga4c4310e54f18541b09e1e251fe7b22d) 1801 0 R (a00150_ga533c394b1fa0030205534befa31c525) 1825 0 R (a00150_ga5e3c856b86725125d19fccc34cd9eb5) 1819 0 R (a00150_gaa585784b0914cac1d37f07f85457008) 1994 0 R (a00150_gabc40c09f49d15acb1b1a7f02bb3a807) 1807 0 R (a00150_gad0321f4c570f9983c6de81ece3ddc20) 1852 0 R (a00150_gae59b70658f28ee6e998eaaab05e423f) 1823 0 R (a00150_gb4ef6b00924990e7a293f66715b6d1d1) 2005 0 R (a00150_gb6683dd83fe1c8de9a24086d4b69e907) 1944 0 R (a00150_gb81e78f890dbbee50c533a9734b74fd9) 1453 0 R (a00150_gb9435261753469accec0c9bf8a5a2686) 1917 0 R (a00150_gb948296aea6b6b3aa1f156799c4d479c) 1856 0 R (a00150_gc48ed5f0d27721ef62a3ed02a5ad8d2e) 1991 0 R (a00150_gc84f499cba8a02fc0e306c10b2acabf0) 1876 0 R (a00150_gd135fb0cfdfb2c212f0f51865a3640e4) 1833 0 R (a00150_gd58231410d58e34b455328b888a9e73c) 1890 0 R (a00150_gd605357e29affb0d3104294c90f09905) 1811 0 R (a00150_gdd1ab3704ecd4900eec61a6897d32dc8) 1995 0 R (a00150_gde29ec025e6754afd8cc24c954a8dec8) 1837 0 R (a00150_ge0825474feee11b4e038bfe71757875f) 1847 0 R (a00150_geb533744817cf6695d75293369c2248b) 1984 0 R (a00150_gee37386b2ab828787c05227eb109def7) 1864 0 R (a00150_gf0ccbc3bb2a3ba1ebc255c7b3fcedd24) 1815 0 R (a00150_gf0ed78fd2be24d849cdd5af75e3b2674) 1797 0 R (a00150_gf703683056d2bfa5c81fa157dcb20fe2) 1406 0 R (a00150_gf72d7b9a737707dcfb2c41fec2b6792e) 1845 0 R (a00150_gf84316f469ce0726985c0702db49a989) 1803 0 R (a00150_gf848ce44c810492e7a35c2d23a429f45) 1795 0 R (a00150_gfff0ed43201bf1e2020de1a0d6cac070) 1831 0 R (a00151) 1777 0 R (a00151_g2a0cf5d86c58fab216414ce59bf1fea1) 2184 0 R (a00151_g2addf34c7d457c1a7899a7e2171ef1e9) 2193 0 R (a00151_g6832e4d2d046536b6472f7ac92340f68) 2188 0 R (a00151_g85b65e38aa74eba18979156f97a94a87) 2194 0 R (a00151_gb6683dd83fe1c8de9a24086d4b69e907) 2192 0 R (a00152) 1775 0 R (a00152_g03d140db75de3d3cdfbbab1c4fed8d8d) 2220 0 R (a00152_g058a8e6025f67b021862281f1911fcef) 2257 0 R (a00152_g06ba7b414e718081998f2814090debf1) 2228 0 R (a00152_g24f52ac52d6e714cb04a5aa01be3bdd0) 2232 0 R (a00152_g2d9d28afa353f662b9bb5234fc419f72) 2239 0 R (a00152_g3e1562e8a6de32268e5df92a52152f91) 2218 0 R (a00152_g499bb98a0b4ae9a98553ede81317606d) 2250 0 R (a00152_g54b27e45df15e10a0eb1a3e3a91417d2) 1420 0 R (a00152_g737337d6a51e31b236c8233d024138a8) 2224 0 R (a00152_g7a7c46ffaba30477b8c9e3e61bd2e106) 2226 0 R (a00152_g902c4a360134096224bc2655f623aa5f) 2243 0 R (a00152_g9f2196e2705036869611962425e404bf) 2235 0 R (a00152_gbb558f3a9b1ec015e83c314aba694e35) 2222 0 R (a00152_gbb56b549f7ab4d86e1cc39b8afc70d1e) 2230 0 R (a00153) 650 0 R (a00153_g156dd2891a57035e4afdc4c2bc0b0ebf) 2371 0 R (a00153_g15de27b044603284f68db05a378235a7) 2344 0 R (a00153_g196379ceb1219a99f4495e41ccc9bbfb) 2324 0 R (a00153_g21664b7441cfa37d280228d23316d609) 2370 0 R (a00153_g24aa5bc36939cc9a0833e1df01478a7e) 2346 0 R (a00153_g285a80366aed9428f64282b8d13c918b) 2374 0 R (a00153_g2bc3b489923793759526a3181eb667fa) 2349 0 R (a00153_g3001114ddadc1f2ada5cc9a780e866fc) 2284 0 R (a00153_g3090117ef3ff5775b77cb1960e442d07) 2351 0 R (a00153_g3589822ecb9d9c4145209756396b8a6b) 2368 0 R (a00153_g3f6f1f6f98431f2d33ed30a30d2ccc35) 2276 0 R (a00153_g41aa744caa46913b3b3aedb2a4e78546) 713 0 R (a00153_g4910467b83a639f06739c82cd362037e) 2347 0 R (a00153_g4caecabca98b43919dd11be1c0d4cd8e) 1321 0 R (a00153_g51195ea7cd5aa387a87f9d3b23905b62) 2314 0 R (a00153_g51c1cd531ff0afb81620151f2248cd21) 2343 0 R (a00153_g529648ad3b0b327a43689b0f1779ff55) 2290 0 R (a00153_g5726142fec34f35fb9ea19e5a45975c6) 2369 0 R (a00153_g5b9dba2123705bce1ce95c3deca0bdad) 2348 0 R (a00153_g67cf1e0d2324c93f332c1f020c0fe8b3) 2345 0 R (a00153_g6836f92f3692f3a4429eb599db40cbae) 2388 0 R (a00153_g69646a81a922033c5281445a71f8ffed) 2395 0 R (a00153_g727459e5c4f777543c81ffffa3df3f0c) 2313 0 R (a00153_g763f12007aad8cc0e483bf50f8a8d9b4) 2286 0 R (a00153_g77570ac4fcab86864fa1916e55676da2) 1385 0 R (a00153_g8f4ebd8ef6c0ea665ed351d87fec09fd) 2342 0 R (a00153_g9069474ea570fd78c481aa164317dbaf) 2315 0 R (a00153_g92f3344ec8ca46893163399c89fafed5) 2319 0 R (a00153_g974c9b4bbe6b07cc1d64ac4fad278030) 2278 0 R (a00153_g9dd44616d41cef74d3beb51d8be5ecec) 2288 0 R (a00153_ga92afb113e122f860392bfbd385f842e) 2396 0 R (a00153_gac0de06236b02659460445de30776e00) 2340 0 R (a00153_gb1455b27c06532a399cf06d2c1d6d08d) 2350 0 R (a00153_gb58e1ceb7cb73ca2bcd73146b6c1b4e7) 2373 0 R (a00153_gb61381673de27f31848c5396bf0b338e) 2317 0 R (a00153_gb6e04358481bd2057524fb874cfa472b) 2386 0 R (a00153_gc3882366feda1cb759ccbfe98327a7db) 2307 0 R (a00153_gca1240bba5dd57f8c7c27123c84a1f6d) 2282 0 R (a00153_gcacc406c3bf7d0e00412e4c946252739) 2280 0 R (a00153_gdcf372ff9748996f7c05e9822a615384) 2310 0 R (a00153_ge0f8cbeca9731af2171ffd37e79de893) 2316 0 R (a00153_ge6f4a2453dbd8bc60e6a82774552366a) 2372 0 R (a00153_gf5fe83be78b78b9e7d9e7f1e34ab1cc5) 2341 0 R (a00153_gf963fdea2b75d27ef31e92d1d01359ee) 2318 0 R (a00154) 1776 0 R (a00154_gb4b17aaf20d630f30919b19937b966a3) 2497 0 R (a00155) 1165 0 R (a00155_g1ec8b8f4710dce1fa7fb87d3a31541ae) 2513 0 R (a00155_g2bdc4b7b4038454a79f1b2a94a6d2a98) 2526 0 R (a00155_g2c1bb4fa6d7a6ff951a41c73fc721109) 2511 0 R (a00155_g3983e0c026396d5c4506779d770007ba) 2524 0 R (a00155_g44311ecc30759ca38b4069182247bdae) 2509 0 R (a00155_gca51ceb2f5d855dfde55bcedf8d3b92d) 2517 0 R (a00155_gd8eec328a4868d767f0c00c8d1c6cfc1) 2515 0 R (a00156) 2532 0 R (a00156_g6614d96fdfcd95c95ec6e6f63071ff51) 2551 0 R (a00156_g6d71dececfce707c668e6257aad5906e) 2554 0 R (a00156_gcb807bd57e5489b386b876af5c1f163a) 2553 0 R (a00156_gedaf3e48c2b04229b85455fb948468d6) 2552 0 R (a00157) 2550 0 R (a00157_g78ab77b57cf2e00089f0a3a22508524c) 2601 0 R (a00157_ge3ced0551b26c9b99cb45a86f34d100a) 2595 0 R (a00157_ge5b7160f2e653725ba5e2024c3cb7bff) 2603 0 R (a00158) 656 0 R (a00158_g10d9a9201cba1a6db623284c475c6cea) 2674 0 R (a00158_g26ae707402e494f3895a9f012a93ea29) 2628 0 R (a00158_g2ebfe5c8a7f3173714efdf2df74fc392) 2682 0 R (a00158_g3178402dd725776415bf9745e7bf92ba) 2662 0 R (a00158_g3b19f65e48079d8105be2a99b5b4b2ae) 2667 0 R (a00158_g4a264bb64ae706d53f572b1d9e4037a2) 2680 0 R (a00158_g4ab2de595d36e9e55dd61f6ecd139162) 2678 0 R (a00158_g55ce98ea4d6f22e9d5068b904d4d2447) 2681 0 R (a00158_g5d56800f82bfc7bbf53bb4a659589812) 2675 0 R (a00158_g70d236d1cf34b4e21836edda60247b70) 2629 0 R (a00158_g84901a5aa60040e96d272a69977edd22) 2626 0 R (a00158_ga87ff36af81990e6ffe20d76d5e4606f) 2656 0 R (a00158_gb0ad55aa96dd1d200cd0fc5a99f6a4f7) 2673 0 R (a00158_gb5d9c0becf7cb32d0aaef466839dd92e) 2677 0 R (a00158_gc7cc1dba1819f7fcdaa9ff9eed5a08f4) 2679 0 R (a00158_gd895ab98c54d9966ff554aa873151751) 2676 0 R (a00158_gfa11b2a1faf395ae2a6626e01c482d5d) 2627 0 R (a00159) 2757 0 R (a00159_g720ac440c7b24bdd07c53ba146e36fb2) 2772 0 R (a00159_ga680bc3f3a1a8a6aec20fe729d138cb8) 2770 0 R (a00159_gceb952d27de8125d5146ac0bee325b8f) 2787 0 R (a00159_gd58a6c7e62ae59bf7a016ded12ca2910) 2788 0 R (a00159_gf31774d02a69fd3f1c2b282454438cba) 2785 0 R (a00159_gfe5e93119035e14cc485760a176249ba) 2786 0 R (a00160) 1315 0 R (a00160_g070d2ce7b6bb7e5c05602aa8c308d0c4) 2834 0 R (a00160_g221d37ccde7e3fd0dd2c2eb0a6b15493) 2838 0 R (a00160_g3191066cf8f76bd00b6843b77c37068f) 2858 0 R (a00160_g3d768e989e308144190ae1a5ddfa9726) 2832 0 R (a00160_g66d19181ad5fe8b8f7c84d1f1d46a2ec) 2854 0 R (a00160_g6d9751d534453425c7a5a215d1d4414c) 2856 0 R (a00160_g7c5359305008e9183b18d6ab75f568bf) 2841 0 R (a00160_gb50f78bbf36d912d69f6c1685d0b40e3) 2849 0 R (a00160_gdf916e0c752f5cda70d0bddb2be422ba) 2857 0 R (a00160_ge4dcbbe6c641d2e3b8537b479df5fc99) 2855 0 R (a00160_gecf13b8dc783db2202ca5c34fe117fc3) 2836 0 R (a00161) 1316 0 R (a00161_g029256bc17a12e1e86781887e11c0c7d) 2901 0 R (a00161_g17ccd786400fd08b941e11046df1668f) 2917 0 R (a00161_g28cf9765e4b57451af559ab988ad7160) 2915 0 R (a00161_g3212e70c55244608ac16316888c354f0) 2905 0 R (a00161_g34b924954ba5707d536df28d71a80d39) 2911 0 R (a00161_g37e3103b9591790d484a450525739661) 2929 0 R (a00161_g64807ba7c221ddf735572d05021539f2) 2921 0 R (a00161_g6cda47c85ce1b58b501b44ac9cccc50e) 2907 0 R (a00161_g9e97c58fe35f750ad192774be9408ac8) 2913 0 R (a00161_gb1fc692a2700b7a51517724364683f67) 2928 0 R (a00161_gbc331f73107958428bf1c392ba19b6f4) 2923 0 R (a00161_gcff75c8c930abd6ff168e85373a4eb92) 2903 0 R (a00161_gf0349a8481565e80f55a751e2b408d6d) 2930 0 R (a00161_gf7dd2757d1e766f65b01ba7c91c660a0) 2909 0 R (a00162) 1317 0 R (a00162_g123c95a7bb55143cabba92446ce8f513) 3020 0 R (a00162_g19709735f29dafeabb91e0882231f9f1) 2968 0 R (a00162_g26440a35353cb457747a4cea372c62e9) 2956 0 R (a00162_g30fe27cba3c14ae7f9a7f118144af43a) 2958 0 R (a00162_g3212e70c55244608ac16316888c354f0) 2962 0 R (a00162_g3318dec654781e9d6d8ec873636660c6) 2984 0 R (a00162_g3a4852e2372e34e1c0142d1147fbe027) 2988 0 R (a00162_g4647b76d0ef50a5305505041f5775a37) 2993 0 R (a00162_g5025948dd998f65a13a375a37aa5edf5) 2972 0 R (a00162_g52c3c5ab1b1aa0659b5e465f7fbcc409) 3001 0 R (a00162_g57aca709a33690cd4fb73fe199fa1bdd) 2978 0 R (a00162_g69b075ef7e4d7bcf5a903d3d75baac02) 3013 0 R (a00162_g6b2d00412304e2d95e7b853cce5858b0) 2982 0 R (a00162_g6cda47c85ce1b58b501b44ac9cccc50e) 2964 0 R (a00162_g7e904ab59f7ee134cf3218a8219e7e29) 2970 0 R (a00162_g82ff99d50221f7c17df57dc6092ffc97) 3007 0 R (a00162_g86beee1f69d05b16022dfb430470e9ce) 3016 0 R (a00162_g8b600918f84783490fd791ce773175ab) 2980 0 R (a00162_g984c4a8b65a3cb35460b073a40568c25) 3003 0 R (a00162_gaa60ca995565b799bb958c806e933665) 2990 0 R (a00162_gaaaaf66ea67900c36d01136d5bad1168) 2976 0 R (a00162_gbfc1d8d15852318927cda30e1bc0470a) 2974 0 R (a00162_gd1f18f739da7703628c3663209463a0d) 3021 0 R (a00162_ge28f6cb60e86088d8886d0f804b4f37c) 2960 0 R (a00162_ge429c985be88ed048f382511c9ff00de) 2966 0 R (a00162_gf11c966b0e4f4ecaa73deb14bfb6830f) 3019 0 R (a00162_gf784a76fe619452eddf87e6376a4bf9d) 2986 0 R (a00163) 1318 0 R (a00163_g03070adbf8faab0f34f87c1270964306) 3047 0 R (a00163_gb97849f0d3ea858eee790b69591e6427) 3049 0 R (a00163_ge28f6cb60e86088d8886d0f804b4f37c) 3044 0 R (a00164) 1319 0 R (a00164_g0e0ea5f24b77f124ba33bcbc7ede5bfb) 3134 0 R (a00164_g1d34be506a61db90dd7829117efdf8cf) 3120 0 R (a00164_g23705efb9077187881f094fc9be13bde) 3102 0 R (a00164_g2a939aa4fcffabbce1dc1f784a7e0ad3) 3135 0 R (a00164_g31be289fd8ec3fe09b0088165d13976d) 3072 0 R (a00164_g3212e70c55244608ac16316888c354f0) 3090 0 R (a00164_g38af81a4c9884ce89803fc3e52383112) 3088 0 R (a00164_g3caacabb2fe1c71921e1a471719ccbd2) 3116 0 R (a00164_g40fb1fb2d990ce04ae9bbee275627c03) 3082 0 R (a00164_g41e616d3fcc17e0aabfe8ab45ef0d30f) 3133 0 R (a00164_g4433d3af16ea083a81576d0f18ba57c9) 3132 0 R (a00164_g4d457c50e6f2cef57167c3804ce8bf7c) 3078 0 R (a00164_g5a5bfd7e9060903893481db90645187b) 3068 0 R (a00164_g6b942c1ef22f8cd1a726ef3364c9fbea) 3101 0 R (a00164_g6cda47c85ce1b58b501b44ac9cccc50e) 3092 0 R (a00164_g71e1b022f7b7fa3a154f19372b239935) 3094 0 R (a00164_g863c94b0ed4a76997e53a3ccd5d0b6c3) 3080 0 R (a00164_g8714af98a550f10dc814db92b08d1b0d) 3074 0 R (a00164_g9e6d2864f390a4ba1ac60dc65e2b9815) 3122 0 R (a00164_gc4357cec23abca29d2bb885803625a6a) 3076 0 R (a00164_gc4b119801e50cc1824498a1cdf9adc37) 3100 0 R (a00164_gd895686859ae7d178d31be04eb0a1a97) 3086 0 R (a00164_gda99954e0f6905091885934e86c278cc) 3084 0 R (a00164_gdc5aec3587b2c55b714a6c2f37b56cba) 3097 0 R (a00164_ge28f6cb60e86088d8886d0f804b4f37c) 3070 0 R (a00164_gf11d9915ec12a8cdd9fdcbb5e8fcd5c7) 3103 0 R (a00164_gf8f12c820cc08da32aa62898bfc02db3) 3104 0 R (a00164_gf9385ef9ecc74c7d53ff2f15e62bfde3) 3131 0 R (a00165) 1320 0 R (a00165_g14e276fa8e765f774f4162619f1c8fc1) 3220 0 R (a00165_g1dbc635a2924806f42d7e3273a6a69b5) 3228 0 R (a00165_g3212e70c55244608ac16316888c354f0) 3208 0 R (a00165_g648ddfb2dde2cc55034e4e0ea41cb6d1) 3225 0 R (a00165_g71e1b022f7b7fa3a154f19372b239935) 3210 0 R (a00165_g79f9a50c2cccb967d38a2eeb45d2fd75) 3214 0 R (a00165_g7d7920c1e51cc4eef80206ebd6fee3f4) 3204 0 R (a00165_g820fb27c50e7bb4ac6d9eae1b06630a5) 3218 0 R (a00165_g8a645f8831837320c4e0c704e871abcf) 3206 0 R (a00165_gc364305cee969a0be43c071722b136e6) 3229 0 R (a00165_ge3f8f7deae69854853b0c8ebb82c380d) 3212 0 R (a00165_ge6f849e94cf6e214be8ffa9a548ecfcd) 3223 0 R (a00165_gf7dd2757d1e766f65b01ba7c91c660a0) 3216 0 R (a00171) 3890 0 R (a00172) 3905 0 R (a00173) 3956 0 R (a00174) 3985 0 R (a00175) 4017 0 R (a00176) 4037 0 R (a00177) 4059 0 R (a00178) 4075 0 R (a00179) 4104 0 R (a00180) 4123 0 R (a00181) 4150 0 R (a00182) 4182 0 R (a00183) 4205 0 R (a00184) 4219 0 R (a00185) 4240 0 R (a00187) 4258 0 R (a00188) 4282 0 R (a00190) 4299 0 R (a00191) 4316 0 R (a00192) 4324 0 R (a00194) 4354 0 R (a00195) 4403 0 R (a00196) 4447 0 R (a00197) 4466 0 R (a00198) 4495 0 R (a00199) 4521 0 R (a00201) 4531 0 R (a00202) 4576 0 R (a00203) 4670 0 R (a00204) 4857 0 R (a00205) 4878 0 R (a00206) 4902 0 R (a00207) 4919 0 R (a00208) 4977 0 R (chapter*.1) 500 0 R (chapter.1) 6 0 R (chapter.2) 46 0 R (chapter.3) 54 0 R (chapter.4) 62 0 R (chapter.5) 70 0 R (chapter.6) 78 0 R (chapter.7) 178 0 R (chapter.8) 266 0 R (chapter.9) 406 0 R (index) 632 0 R (main_api) 685 0 R (main_appevents) 694 0 R (main_arch) 668 0 R (main_checksums) 669 0 R (main_closing) 729 0 R (main_congestioncontrol) 862 0 R (main_connect) 759 0 R (main_connstate) 697 0 R (main_delack) 871 0 R (main_errors) 734 0 R (main_example1) 768 0 R (main_example2) 784 0 R (main_example3) 791 0 R (main_example4) 793 0 R (main_example5) 802 0 R (main_example6) 812 0 R (main_examples) 767 0 R (main_flowcontrol) 860 0 R (main_icmp) 840 0 R (main_ip) 834 0 R (main_ipbroadcast) 838 0 R (main_ipreass) 836 0 R (main_listeb) 848 0 R (main_listen) 741 0 R (main_longarith) 673 0 R (main_mainloop) 662 0 R (main_memory) 676 0 R (main_performance) 866 0 R (main_polling) 738 0 R (main_protoimpl) 828 0 R (main_rawapi) 688 0 R (main_recvdata) 706 0 R (main_rexmit) 854 0 R (main_rexmitdata) 725 0 R (main_rttest) 852 0 R (main_senddata) 711 0 R (main_slidingwindow) 850 0 R (main_tcp) 842 0 R (main_tcpip) 661 0 R (main_uIPIntroduction) 647 0 R (main_urgdata) 864 0 R (page.1) 478 0 R (page.10) 797 0 R (page.100) 2738 0 R (page.101) 2752 0 R (page.102) 2756 0 R (page.103) 2792 0 R (page.104) 2813 0 R (page.105) 2823 0 R (page.106) 2862 0 R (page.107) 2881 0 R (page.108) 2893 0 R (page.109) 2934 0 R (page.11) 809 0 R (page.110) 2946 0 R (page.111) 2999 0 R (page.112) 3025 0 R (page.113) 3035 0 R (page.114) 3054 0 R (page.115) 3108 0 R (page.116) 3139 0 R (page.117) 3155 0 R (page.118) 3172 0 R (page.119) 3187 0 R (page.12) 817 0 R (page.120) 3194 0 R (page.121) 3233 0 R (page.122) 3242 0 R (page.123) 3246 0 R (page.124) 3290 0 R (page.125) 3306 0 R (page.126) 3316 0 R (page.127) 3346 0 R (page.128) 3361 0 R (page.129) 3393 0 R (page.13) 825 0 R (page.130) 3404 0 R (page.131) 3414 0 R (page.132) 3446 0 R (page.133) 3462 0 R (page.134) 3478 0 R (page.135) 3518 0 R (page.136) 3534 0 R (page.137) 3543 0 R (page.138) 3558 0 R (page.139) 3609 0 R (page.14) 833 0 R (page.140) 3619 0 R (page.141) 3670 0 R (page.142) 3704 0 R (page.143) 3770 0 R (page.144) 3793 0 R (page.145) 3841 0 R (page.146) 3879 0 R (page.147) 3883 0 R (page.148) 3894 0 R (page.149) 3909 0 R (page.15) 846 0 R (page.150) 3960 0 R (page.151) 3967 0 R (page.152) 3989 0 R (page.153) 3999 0 R (page.154) 4021 0 R (page.155) 4041 0 R (page.156) 4049 0 R (page.157) 4063 0 R (page.158) 4079 0 R (page.159) 4108 0 R (page.16) 859 0 R (page.160) 4127 0 R (page.161) 4154 0 R (page.162) 4162 0 R (page.163) 4186 0 R (page.164) 4199 0 R (page.165) 4209 0 R (page.166) 4223 0 R (page.167) 4244 0 R (page.168) 4262 0 R (page.169) 4286 0 R (page.17) 870 0 R (page.170) 4303 0 R (page.171) 4320 0 R (page.172) 4328 0 R (page.173) 4358 0 R (page.174) 4383 0 R (page.175) 4407 0 R (page.176) 4434 0 R (page.177) 4451 0 R (page.178) 4470 0 R (page.179) 4499 0 R (page.18) 876 0 R (page.180) 4525 0 R (page.181) 4535 0 R (page.182) 4580 0 R (page.183) 4629 0 R (page.184) 4652 0 R (page.185) 4674 0 R (page.186) 4699 0 R (page.187) 4720 0 R (page.188) 4760 0 R (page.189) 4807 0 R (page.19) 880 0 R (page.190) 4841 0 R (page.191) 4861 0 R (page.192) 4882 0 R (page.193) 4906 0 R (page.194) 4923 0 R (page.195) 4942 0 R (page.196) 4961 0 R (page.197) 4981 0 R (page.198) 4985 0 R (page.199) 4989 0 R (page.2) 493 0 R (page.20) 909 0 R (page.200) 4994 0 R (page.201) 4998 0 R (page.202) 5002 0 R (page.203) 5006 0 R (page.204) 5010 0 R (page.205) 5014 0 R (page.206) 5019 0 R (page.207) 5023 0 R (page.208) 5027 0 R (page.209) 5031 0 R (page.21) 913 0 R (page.210) 5035 0 R (page.211) 5039 0 R (page.212) 5044 0 R (page.213) 5048 0 R (page.214) 5052 0 R (page.215) 5056 0 R (page.216) 5060 0 R (page.217) 5064 0 R (page.218) 5069 0 R (page.219) 5073 0 R (page.22) 938 0 R (page.220) 5077 0 R (page.221) 5081 0 R (page.222) 5085 0 R (page.223) 5089 0 R (page.224) 5094 0 R (page.225) 5098 0 R (page.226) 5102 0 R (page.227) 5106 0 R (page.228) 5110 0 R (page.229) 5114 0 R (page.23) 942 0 R (page.230) 5119 0 R (page.231) 5123 0 R (page.232) 5127 0 R (page.233) 5131 0 R (page.234) 5135 0 R (page.235) 5140 0 R (page.236) 5145 0 R (page.237) 5149 0 R (page.238) 5153 0 R (page.239) 5157 0 R (page.24) 1008 0 R (page.240) 5161 0 R (page.241) 5165 0 R (page.242) 5170 0 R (page.243) 5174 0 R (page.244) 5178 0 R (page.245) 5182 0 R (page.246) 5186 0 R (page.247) 5190 0 R (page.248) 5195 0 R (page.249) 5199 0 R (page.25) 1012 0 R (page.250) 5203 0 R (page.251) 5276 0 R (page.252) 5344 0 R (page.253) 5429 0 R (page.254) 5495 0 R (page.255) 5577 0 R (page.26) 1092 0 R (page.27) 1123 0 R (page.28) 1128 0 R (page.29) 1152 0 R (page.3) 568 0 R (page.30) 1169 0 R (page.31) 1201 0 R (page.32) 1241 0 R (page.33) 1259 0 R (page.34) 1271 0 R (page.35) 1287 0 R (page.36) 1294 0 R (page.37) 1325 0 R (page.38) 1349 0 R (page.39) 1359 0 R (page.4) 608 0 R (page.40) 1371 0 R (page.41) 1389 0 R (page.42) 1415 0 R (page.43) 1424 0 R (page.44) 1441 0 R (page.45) 1457 0 R (page.46) 1461 0 R (page.47) 1489 0 R (page.48) 1524 0 R (page.49) 1544 0 R (page.5) 693 0 R (page.50) 1571 0 R (page.51) 1589 0 R (page.52) 1602 0 R (page.53) 1622 0 R (page.54) 1642 0 R (page.55) 1653 0 R (page.56) 1687 0 R (page.57) 1705 0 R (page.58) 1714 0 R (page.59) 1723 0 R (page.6) 720 0 R (page.60) 1730 0 R (page.61) 1742 0 R (page.62) 1759 0 R (page.63) 1781 0 R (page.64) 1851 0 R (page.65) 1948 0 R (page.66) 2004 0 R (page.67) 2059 0 R (page.68) 2076 0 R (page.69) 2091 0 R (page.7) 754 0 R (page.70) 2104 0 R (page.71) 2119 0 R (page.72) 2141 0 R (page.73) 2162 0 R (page.74) 2167 0 R (page.75) 2198 0 R (page.76) 2210 0 R (page.77) 2247 0 R (page.78) 2261 0 R (page.79) 2268 0 R (page.8) 778 0 R (page.80) 2296 0 R (page.81) 2323 0 R (page.82) 2355 0 R (page.83) 2378 0 R (page.84) 2400 0 R (page.85) 2418 0 R (page.86) 2429 0 R (page.87) 2439 0 R (page.88) 2473 0 R (page.89) 2490 0 R (page.9) 790 0 R (page.90) 2502 0 R (page.91) 2531 0 R (page.92) 2558 0 R (page.93) 2578 0 R (page.94) 2589 0 R (page.95) 2608 0 R (page.96) 2633 0 R (page.97) 2686 0 R (page.98) 2705 0 R (page.99) 2721 0 R (section*.10) 1207 0 R (section*.100) 3407 0 R (section*.101) 3419 0 R (section*.102) 3450 0 R (section*.103) 3469 0 R (section*.104) 3481 0 R (section*.105) 3536 0 R (section*.106) 3545 0 R (section*.107) 3560 0 R (section*.108) 3611 0 R (section*.109) 3621 0 R (section*.11) 1209 0 R (section*.110) 3706 0 R (section*.111) 3774 0 R (section*.112) 3795 0 R (section*.113) 3845 0 R (section*.114) 3887 0 R (section*.115) 3898 0 R (section*.116) 3900 0 R (section*.117) 3902 0 R (section*.118) 3913 0 R (section*.119) 3949 0 R (section*.12) 1214 0 R (section*.120) 3971 0 R (section*.121) 3976 0 R (section*.122) 3978 0 R (section*.123) 4003 0 R (section*.124) 4011 0 R (section*.125) 4025 0 R (section*.126) 4027 0 R (section*.127) 4034 0 R (section*.128) 4042 0 R (section*.129) 4053 0 R (section*.13) 1296 0 R (section*.130) 4055 0 R (section*.131) 4067 0 R (section*.132) 4083 0 R (section*.133) 4098 0 R (section*.134) 4112 0 R (section*.135) 4114 0 R (section*.136) 4118 0 R (section*.137) 4121 0 R (section*.138) 4131 0 R (section*.139) 4144 0 R (section*.14) 1304 0 R (section*.140) 4166 0 R (section*.141) 4168 0 R (section*.142) 4171 0 R (section*.143) 4174 0 R (section*.144) 4203 0 R (section*.145) 4213 0 R (section*.146) 4215 0 R (section*.147) 4217 0 R (section*.148) 4227 0 R (section*.149) 4237 0 R (section*.15) 1327 0 R (section*.150) 4248 0 R (section*.151) 4266 0 R (section*.152) 4268 0 R (section*.153) 4272 0 R (section*.154) 4291 0 R (section*.155) 4296 0 R (section*.156) 4308 0 R (section*.157) 4314 0 R (section*.158) 4332 0 R (section*.159) 4335 0 R (section*.16) 1373 0 R (section*.160) 4373 0 R (section*.161) 4387 0 R (section*.162) 4389 0 R (section*.163) 4392 0 R (section*.164) 4398 0 R (section*.165) 4408 0 R (section*.166) 4413 0 R (section*.167) 4418 0 R (section*.168) 4420 0 R (section*.169) 4425 0 R (section*.17) 1391 0 R (section*.170) 4438 0 R (section*.171) 4455 0 R (section*.172) 4457 0 R (section*.173) 4474 0 R (section*.174) 4479 0 R (section*.175) 4503 0 R (section*.176) 4505 0 R (section*.177) 4529 0 R (section*.178) 4539 0 R (section*.179) 4581 0 R (section*.18) 1401 0 R (section*.180) 4614 0 R (section*.181) 4656 0 R (section*.182) 4664 0 R (section*.183) 4769 0 R (section*.184) 4776 0 R (section*.185) 4812 0 R (section*.186) 4845 0 R (section*.187) 4865 0 R (section*.188) 4873 0 R (section*.189) 4886 0 R (section*.19) 1463 0 R (section*.190) 4888 0 R (section*.191) 4894 0 R (section*.192) 4899 0 R (section*.193) 4910 0 R (section*.194) 4914 0 R (section*.195) 4924 0 R (section*.196) 4928 0 R (section*.197) 4943 0 R (section*.198) 4946 0 R (section*.199) 4953 0 R (section*.2) 1163 0 R (section*.20) 1498 0 R (section*.200) 4955 0 R (section*.201) 4965 0 R (section*.21) 1656 0 R (section*.22) 1670 0 R (section*.23) 1744 0 R (section*.24) 1762 0 R (section*.25) 1765 0 R (section*.26) 1782 0 R (section*.27) 1790 0 R (section*.28) 1925 0 R (section*.29) 1934 0 R (section*.3) 1173 0 R (section*.30) 1975 0 R (section*.31) 2169 0 R (section*.32) 2171 0 R (section*.33) 2183 0 R (section*.34) 2212 0 R (section*.35) 2215 0 R (section*.36) 2217 0 R (section*.37) 2238 0 R (section*.38) 2249 0 R (section*.39) 2272 0 R (section*.4) 1175 0 R (section*.40) 2275 0 R (section*.41) 2300 0 R (section*.42) 2304 0 R (section*.43) 2309 0 R (section*.44) 2326 0 R (section*.45) 2337 0 R (section*.46) 2356 0 R (section*.47) 2363 0 R (section*.48) 2365 0 R (section*.49) 2385 0 R (section*.5) 1177 0 R (section*.50) 2492 0 R (section*.51) 2494 0 R (section*.52) 2504 0 R (section*.53) 2508 0 R (section*.54) 2523 0 R (section*.55) 2535 0 R (section*.56) 2538 0 R (section*.57) 2540 0 R (section*.58) 2594 0 R (section*.59) 2597 0 R (section*.6) 1180 0 R (section*.60) 2614 0 R (section*.61) 2616 0 R (section*.62) 2619 0 R (section*.63) 2661 0 R (section*.64) 2764 0 R (section*.65) 2767 0 R (section*.66) 2769 0 R (section*.67) 2775 0 R (section*.68) 2828 0 R (section*.69) 2831 0 R (section*.7) 1186 0 R (section*.70) 2840 0 R (section*.71) 2895 0 R (section*.72) 2898 0 R (section*.73) 2900 0 R (section*.74) 2919 0 R (section*.75) 2948 0 R (section*.76) 2953 0 R (section*.77) 2955 0 R (section*.78) 2992 0 R (section*.79) 3000 0 R (section*.8) 1191 0 R (section*.80) 3038 0 R (section*.81) 3041 0 R (section*.82) 3043 0 R (section*.83) 3046 0 R (section*.84) 3062 0 R (section*.85) 3065 0 R (section*.86) 3067 0 R (section*.87) 3096 0 R (section*.88) 3109 0 R (section*.89) 3196 0 R (section*.9) 1202 0 R (section*.90) 3200 0 R (section*.91) 3202 0 R (section*.92) 3222 0 R (section*.93) 3250 0 R (section*.94) 3294 0 R (section*.95) 3308 0 R (section*.96) 3318 0 R (section*.97) 3348 0 R (section*.98) 3364 0 R (section*.99) 3395 0 R (section.1.1) 10 0 R (section.1.2) 14 0 R (section.1.3) 18 0 R (section.1.4) 22 0 R (section.1.5) 26 0 R (section.1.6) 30 0 R (section.1.7) 34 0 R (section.1.8) 38 0 R (section.1.9) 42 0 R (section.2.1) 50 0 R (section.3.1) 58 0 R (section.4.1) 66 0 R (section.5.1) 74 0 R (section.6.1) 82 0 R (section.6.10) 118 0 R (section.6.11) 122 0 R (section.6.12) 126 0 R (section.6.13) 130 0 R (section.6.14) 134 0 R (section.6.15) 138 0 R (section.6.16) 142 0 R (section.6.17) 146 0 R (section.6.18) 150 0 R (section.6.19) 154 0 R (section.6.2) 86 0 R (section.6.20) 158 0 R (section.6.21) 162 0 R (section.6.22) 166 0 R (section.6.23) 170 0 R (section.6.24) 174 0 R (section.6.3) 90 0 R (section.6.4) 94 0 R (section.6.5) 98 0 R (section.6.6) 102 0 R (section.6.7) 106 0 R (section.6.8) 110 0 R (section.6.9) 114 0 R (section.7.1) 182 0 R (section.7.10) 218 0 R (section.7.11) 222 0 R (section.7.12) 226 0 R (section.7.13) 230 0 R (section.7.14) 234 0 R (section.7.15) 238 0 R (section.7.16) 242 0 R (section.7.17) 246 0 R (section.7.18) 250 0 R (section.7.19) 254 0 R (section.7.2) 186 0 R (section.7.20) 258 0 R (section.7.21) 262 0 R (section.7.3) 190 0 R (section.7.4) 194 0 R (section.7.5) 198 0 R (section.7.6) 202 0 R (section.7.7) 206 0 R (section.7.8) 210 0 R (section.7.9) 214 0 R (section.8.1) 270 0 R (section.8.10) 306 0 R (section.8.11) 310 0 R (section.8.12) 314 0 R (section.8.13) 318 0 R (section.8.14) 322 0 R (section.8.15) 326 0 R (section.8.16) 330 0 R (section.8.17) 334 0 R (section.8.18) 338 0 R (section.8.19) 342 0 R (section.8.2) 274 0 R (section.8.20) 346 0 R (section.8.21) 350 0 R (section.8.22) 354 0 R (section.8.23) 358 0 R (section.8.24) 362 0 R (section.8.25) 366 0 R (section.8.26) 370 0 R (section.8.27) 374 0 R (section.8.28) 378 0 R (section.8.29) 382 0 R (section.8.3) 278 0 R (section.8.30) 386 0 R (section.8.31) 390 0 R (section.8.32) 394 0 R (section.8.33) 398 0 R (section.8.34) 402 0 R (section.8.4) 282 0 R (section.8.5) 286 0 R (section.8.6) 290 0 R (section.8.7) 294 0 R (section.8.8) 298 0 R (section.8.9) 302 0 R (section.9.1) 410 0 R (section.9.10) 446 0 R (section.9.11) 450 0 R (section.9.12) 454 0 R (section.9.13) 458 0 R (section.9.14) 462 0 R (section.9.15) 466 0 R (section.9.16) 470 0 R (section.9.2) 414 0 R (section.9.3) 418 0 R (section.9.4) 422 0 R (section.9.5) 426 0 R (section.9.6) 430 0 R (section.9.7) 434 0 R (section.9.8) 438 0 R (section.9.9) 442 0 R (subsection.1.4.1) 670 0 R (subsection.1.4.2) 674 0 R (subsection.1.6.1) 689 0 R (subsection.1.7.1) 769 0 R (subsection.1.7.2) 785 0 R (subsection.1.7.3) 792 0 R (subsection.1.7.4) 798 0 R (subsection.1.7.5) 803 0 R (subsection.1.7.6) 813 0 R (subsection.1.8.1) 835 0 R (subsection.1.8.2) 841 0 R (subsection.1.8.3) 847 0 R (subsection.1.9.1) 872 0 R (subsection.6.1.1) 1124 0 R (subsection.6.1.2) 1138 0 R (subsection.6.1.3) 1142 0 R (subsection.6.1.4) 1154 0 R (subsection.6.1.5) 1156 0 R (subsection.6.1.6) 1158 0 R (subsection.6.1.7) 1223 0 R (subsection.6.10.1) 2168 0 R (subsection.6.10.2) 2187 0 R (subsection.6.11.1) 2211 0 R (subsection.6.11.2) 2253 0 R (subsection.6.12.1) 2269 0 R (subsection.6.12.2) 2390 0 R (subsection.6.12.3) 2443 0 R (subsection.6.12.4) 2484 0 R (subsection.6.13.1) 2491 0 R (subsection.6.13.2) 2496 0 R (subsection.6.14.1) 2503 0 R (subsection.6.15.1) 2533 0 R (subsection.6.15.2) 2559 0 R (subsection.6.16.1) 2590 0 R (subsection.6.16.2) 2600 0 R (subsection.6.17.1) 2609 0 R (subsection.6.17.2) 2670 0 R (subsection.6.18.1) 2758 0 R (subsection.6.18.2) 2793 0 R (subsection.6.18.3) 2799 0 R (subsection.6.19.1) 2824 0 R (subsection.6.19.2) 2863 0 R (subsection.6.2.1) 1295 0 R (subsection.6.20.1) 2894 0 R (subsection.6.20.2) 2935 0 R (subsection.6.21.1) 2947 0 R (subsection.6.21.2) 3012 0 R (subsection.6.22.1) 3036 0 R (subsection.6.23.1) 3055 0 R (subsection.6.23.2) 3128 0 R (subsection.6.24.1) 3195 0 R (subsection.6.24.2) 3234 0 R (subsection.6.24.3) 3236 0 R (subsection.6.3.1) 1326 0 R (subsection.6.3.2) 1335 0 R (subsection.6.4.1) 1372 0 R (subsection.6.4.2) 1377 0 R (subsection.6.5.1) 1390 0 R (subsection.6.5.2) 1404 0 R (subsection.6.5.3) 1449 0 R (subsection.6.6.1) 1462 0 R (subsection.6.6.2) 1512 0 R (subsection.6.6.3) 1604 0 R (subsection.6.7.1) 1655 0 R (subsection.6.7.2) 1688 0 R (subsection.6.7.3) 1731 0 R (subsection.6.8.1) 1743 0 R (subsection.6.8.2) 1747 0 R (subsection.6.9.1) 1761 0 R (subsection.6.9.2) 2052 0 R (subsection.6.9.3) 2060 0 R (subsection.6.9.4) 2124 0 R (subsection.7.1.1) 3247 0 R (subsection.7.10.1) 3447 0 R (subsection.7.11.1) 3463 0 R (subsection.7.12.1) 3479 0 R (subsection.7.13.1) 3535 0 R (subsection.7.14.1) 3544 0 R (subsection.7.15.1) 3559 0 R (subsection.7.16.1) 3610 0 R (subsection.7.17.1) 3620 0 R (subsection.7.18.1) 3705 0 R (subsection.7.19.1) 3771 0 R (subsection.7.2.1) 3291 0 R (subsection.7.20.1) 3794 0 R (subsection.7.21.1) 3842 0 R (subsection.7.3.1) 3307 0 R (subsection.7.4.1) 3317 0 R (subsection.7.5.1) 3347 0 R (subsection.7.6.1) 3362 0 R (subsection.7.7.1) 3394 0 R (subsection.7.8.1) 3405 0 R (subsection.7.9.1) 3415 0 R (subsection.8.1.1) 3884 0 R (subsection.8.10.1) 4109 0 R (subsection.8.11.1) 4128 0 R (subsection.8.12.1) 4163 0 R (subsection.8.13.1) 4200 0 R (subsection.8.14.1) 4210 0 R (subsection.8.15.1) 4224 0 R (subsection.8.16.1) 4245 0 R (subsection.8.17.1) 4263 0 R (subsection.8.18.1) 4287 0 R (subsection.8.19.1) 4304 0 R (subsection.8.2.1) 3895 0 R (subsection.8.20.1) 4321 0 R (subsection.8.21.1) 4329 0 R (subsection.8.22.1) 4384 0 R (subsection.8.23.1) 4435 0 R (subsection.8.24.1) 4452 0 R (subsection.8.25.1) 4471 0 R (subsection.8.26.1) 4500 0 R (subsection.8.27.1) 4526 0 R (subsection.8.28.1) 4536 0 R (subsection.8.29.1) 4653 0 R (subsection.8.3.1) 3910 0 R (subsection.8.30.1) 4842 0 R (subsection.8.31.1) 4862 0 R (subsection.8.32.1) 4883 0 R (subsection.8.33.1) 4907 0 R (subsection.8.34.1) 4962 0 R (subsection.8.4.1) 3968 0 R (subsection.8.5.1) 4000 0 R (subsection.8.6.1) 4022 0 R (subsection.8.7.1) 4050 0 R (subsection.8.8.1) 4064 0 R (subsection.8.9.1) 4080 0 R (subsubsection.1.6.1.1) 695 0 R (subsubsection.1.6.1.10) 760 0 R (subsubsection.1.6.1.2) 698 0 R (subsubsection.1.6.1.3) 707 0 R (subsubsection.1.6.1.4) 712 0 R (subsubsection.1.6.1.5) 726 0 R (subsubsection.1.6.1.6) 730 0 R (subsubsection.1.6.1.7) 735 0 R (subsubsection.1.6.1.8) 739 0 R (subsubsection.1.6.1.9) 755 0 R (subsubsection.1.8.1.1) 837 0 R (subsubsection.1.8.1.2) 839 0 R (subsubsection.1.8.3.1) 849 0 R (subsubsection.1.8.3.2) 851 0 R (subsubsection.1.8.3.3) 853 0 R (subsubsection.1.8.3.4) 855 0 R (subsubsection.1.8.3.5) 861 0 R (subsubsection.1.8.3.6) 863 0 R (subsubsection.1.8.3.7) 865 0 R (subsubsection.6.1.7.1) 1224 0 R (subsubsection.6.1.7.10) 1276 0 R (subsubsection.6.1.7.11) 1279 0 R (subsubsection.6.1.7.12) 1282 0 R (subsubsection.6.1.7.13) 1289 0 R (subsubsection.6.1.7.2) 1242 0 R (subsubsection.6.1.7.3) 1246 0 R (subsubsection.6.1.7.4) 1248 0 R (subsubsection.6.1.7.5) 1252 0 R (subsubsection.6.1.7.6) 1261 0 R (subsubsection.6.1.7.7) 1262 0 R (subsubsection.6.1.7.8) 1264 0 R (subsubsection.6.1.7.9) 1272 0 R (subsubsection.6.10.2.1) 2189 0 R (subsubsection.6.10.2.2) 2199 0 R (subsubsection.6.10.2.3) 2203 0 R (subsubsection.6.10.2.4) 2205 0 R (subsubsection.6.11.2.1) 2254 0 R (subsubsection.6.11.2.2) 2256 0 R (subsubsection.6.11.2.3) 2263 0 R (subsubsection.6.12.2.1) 2391 0 R (subsubsection.6.12.2.10) 2414 0 R (subsubsection.6.12.2.11) 2419 0 R (subsubsection.6.12.2.12) 2420 0 R (subsubsection.6.12.2.13) 2422 0 R (subsubsection.6.12.2.14) 2423 0 R (subsubsection.6.12.2.15) 2424 0 R (subsubsection.6.12.2.16) 2430 0 R (subsubsection.6.12.2.17) 2431 0 R (subsubsection.6.12.2.18) 2432 0 R (subsubsection.6.12.2.19) 2433 0 R (subsubsection.6.12.2.2) 2392 0 R (subsubsection.6.12.2.20) 2434 0 R (subsubsection.6.12.2.21) 2435 0 R (subsubsection.6.12.2.22) 2440 0 R (subsubsection.6.12.2.23) 2441 0 R (subsubsection.6.12.2.24) 2442 0 R (subsubsection.6.12.2.3) 2393 0 R (subsubsection.6.12.2.4) 2394 0 R (subsubsection.6.12.2.5) 2401 0 R (subsubsection.6.12.2.6) 2402 0 R (subsubsection.6.12.2.7) 2403 0 R (subsubsection.6.12.2.8) 2406 0 R (subsubsection.6.12.2.9) 2412 0 R (subsubsection.6.12.3.1) 2444 0 R (subsubsection.6.12.3.2) 2454 0 R (subsubsection.6.12.3.3) 2463 0 R (subsubsection.6.12.3.4) 2474 0 R (subsubsection.6.12.3.5) 2480 0 R (subsubsection.6.12.4.1) 2485 0 R (subsubsection.6.13.2.1) 2498 0 R (subsubsection.6.15.2.1) 2560 0 R (subsubsection.6.15.2.2) 2565 0 R (subsubsection.6.15.2.3) 2571 0 R (subsubsection.6.15.2.4) 2580 0 R (subsubsection.6.16.2.1) 2602 0 R (subsubsection.6.16.2.2) 2604 0 R (subsubsection.6.17.2.1) 2671 0 R (subsubsection.6.17.2.10) 2727 0 R (subsubsection.6.17.2.11) 2730 0 R (subsubsection.6.17.2.12) 2739 0 R (subsubsection.6.17.2.13) 2742 0 R (subsubsection.6.17.2.14) 2746 0 R (subsubsection.6.17.2.2) 2689 0 R (subsubsection.6.17.2.3) 2693 0 R (subsubsection.6.17.2.4) 2695 0 R (subsubsection.6.17.2.5) 2698 0 R (subsubsection.6.17.2.6) 2708 0 R (subsubsection.6.17.2.7) 2713 0 R (subsubsection.6.17.2.8) 2716 0 R (subsubsection.6.17.2.9) 2724 0 R (subsubsection.6.18.2.1) 2794 0 R (subsubsection.6.18.3.1) 2800 0 R (subsubsection.6.18.3.2) 2805 0 R (subsubsection.6.18.3.3) 2815 0 R (subsubsection.6.19.2.1) 2864 0 R (subsubsection.6.19.2.2) 2868 0 R (subsubsection.6.19.2.3) 2872 0 R (subsubsection.6.19.2.4) 2876 0 R (subsubsection.6.19.2.5) 2886 0 R (subsubsection.6.20.2.1) 2936 0 R (subsubsection.6.20.2.2) 2937 0 R (subsubsection.6.20.2.3) 2940 0 R (subsubsection.6.21.2.1) 3014 0 R (subsubsection.6.21.2.2) 3017 0 R (subsubsection.6.21.2.3) 3026 0 R (subsubsection.6.21.2.4) 3028 0 R (subsubsection.6.21.2.5) 3030 0 R (subsubsection.6.23.2.1) 3129 0 R (subsubsection.6.23.2.10) 3188 0 R (subsubsection.6.23.2.2) 3142 0 R (subsubsection.6.23.2.3) 3145 0 R (subsubsection.6.23.2.4) 3148 0 R (subsubsection.6.23.2.5) 3156 0 R (subsubsection.6.23.2.6) 3160 0 R (subsubsection.6.23.2.7) 3173 0 R (subsubsection.6.23.2.8) 3177 0 R (subsubsection.6.23.2.9) 3180 0 R (subsubsection.6.24.2.1) 3235 0 R (subsubsection.6.24.3.1) 3237 0 R (subsubsection.6.3.2.1) 1337 0 R (subsubsection.6.3.2.2) 1339 0 R (subsubsection.6.3.2.3) 1350 0 R (subsubsection.6.3.2.4) 1351 0 R (subsubsection.6.3.2.5) 1353 0 R (subsubsection.6.3.2.6) 1355 0 R (subsubsection.6.3.2.7) 1364 0 R (subsubsection.6.4.2.1) 1379 0 R (subsubsection.6.4.2.2) 1383 0 R (subsubsection.6.5.2.1) 1405 0 R (subsubsection.6.5.2.2) 1418 0 R (subsubsection.6.5.2.3) 1427 0 R (subsubsection.6.5.2.4) 1431 0 R (subsubsection.6.5.2.5) 1434 0 R (subsubsection.6.5.2.6) 1445 0 R (subsubsection.6.5.3.1) 1450 0 R (subsubsection.6.6.2.1) 1513 0 R (subsubsection.6.6.2.10) 1564 0 R (subsubsection.6.6.2.11) 1575 0 R (subsubsection.6.6.2.12) 1577 0 R (subsubsection.6.6.2.13) 1581 0 R (subsubsection.6.6.2.14) 1582 0 R (subsubsection.6.6.2.15) 1590 0 R (subsubsection.6.6.2.16) 1593 0 R (subsubsection.6.6.2.17) 1596 0 R (subsubsection.6.6.2.18) 1598 0 R (subsubsection.6.6.2.19) 1603 0 R (subsubsection.6.6.2.2) 1526 0 R (subsubsection.6.6.2.3) 1530 0 R (subsubsection.6.6.2.4) 1533 0 R (subsubsection.6.6.2.5) 1535 0 R (subsubsection.6.6.2.6) 1545 0 R (subsubsection.6.6.2.7) 1551 0 R (subsubsection.6.6.2.8) 1555 0 R (subsubsection.6.6.2.9) 1559 0 R (subsubsection.6.6.3.1) 1605 0 R (subsubsection.6.6.3.2) 1615 0 R (subsubsection.6.6.3.3) 1627 0 R (subsubsection.6.6.3.4) 1633 0 R (subsubsection.6.6.3.5) 1646 0 R (subsubsection.6.7.2.1) 1689 0 R (subsubsection.6.7.2.10) 1725 0 R (subsubsection.6.7.2.11) 1726 0 R (subsubsection.6.7.2.2) 1696 0 R (subsubsection.6.7.2.3) 1697 0 R (subsubsection.6.7.2.4) 1706 0 R (subsubsection.6.7.2.5) 1708 0 R (subsubsection.6.7.2.6) 1710 0 R (subsubsection.6.7.2.7) 1716 0 R (subsubsection.6.7.2.8) 1718 0 R (subsubsection.6.7.2.9) 1719 0 R (subsubsection.6.7.3.1) 1732 0 R (subsubsection.6.8.2.1) 1749 0 R (subsubsection.6.9.2.1) 2053 0 R (subsubsection.6.9.3.1) 2061 0 R (subsubsection.6.9.3.10) 2105 0 R (subsubsection.6.9.3.11) 2107 0 R (subsubsection.6.9.3.12) 2114 0 R (subsubsection.6.9.3.13) 2120 0 R (subsubsection.6.9.3.2) 2065 0 R (subsubsection.6.9.3.3) 2068 0 R (subsubsection.6.9.3.4) 2077 0 R (subsubsection.6.9.3.5) 2085 0 R (subsubsection.6.9.3.6) 2086 0 R (subsubsection.6.9.3.7) 2092 0 R (subsubsection.6.9.3.8) 2096 0 R (subsubsection.6.9.3.9) 2099 0 R (subsubsection.6.9.4.1) 2125 0 R (subsubsection.6.9.4.2) 2128 0 R (subsubsection.6.9.4.3) 2135 0 R (subsubsection.6.9.4.4) 2142 0 R (subsubsection.6.9.4.5) 2146 0 R (subsubsection.6.9.4.6) 2153 0 R (subsubsection.6.9.4.7) 2156 0 R] -/Limits [(Doc-Start) (subsubsection.6.9.4.7)] ->> endobj -5671 0 obj << -/Kids [5670 0 R] ->> endobj -5672 0 obj << -/Dests 5671 0 R ->> endobj -5673 0 obj << -/Type /Catalog -/Pages 5668 0 R -/Outlines 5669 0 R -/Names 5672 0 R -/PageMode /UseOutlines -/OpenAction 473 0 R ->> endobj -5674 0 obj << -/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfeTeX-1.21a)/Keywords() -/CreationDate (D:20060612102335+02'00') -/PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) ->> endobj -xref -0 5675 -0000000001 65535 f -0000000002 00000 f -0000000003 00000 f -0000000004 00000 f -0000000000 00000 f -0000000009 00000 n -0000050642 00000 n -0001261026 00000 n -0000000054 00000 n -0000000093 00000 n -0000050814 00000 n -0001260954 00000 n -0000000140 00000 n -0000000171 00000 n -0000054400 00000 n -0001260868 00000 n -0000000219 00000 n -0000000258 00000 n -0000054521 00000 n -0001260782 00000 n -0000000306 00000 n -0000000342 00000 n -0000058977 00000 n -0001260696 00000 n -0000000390 00000 n -0000000440 00000 n -0000059339 00000 n -0001260610 00000 n -0000000488 00000 n -0000000524 00000 n -0000063433 00000 n -0001260524 00000 n -0000000572 00000 n -0000000628 00000 n -0000080583 00000 n -0001260438 00000 n -0000000676 00000 n -0000000703 00000 n -0000102655 00000 n -0001260352 00000 n -0000000751 00000 n -0000000794 00000 n -0000110315 00000 n -0001260279 00000 n -0000000842 00000 n -0000000872 00000 n -0000119269 00000 n -0001260154 00000 n -0000000918 00000 n -0000000957 00000 n -0000119326 00000 n -0001260093 00000 n -0000001005 00000 n -0000001039 00000 n -0000125101 00000 n -0001259967 00000 n -0000001085 00000 n -0000001130 00000 n -0000125158 00000 n -0001259906 00000 n -0000001178 00000 n -0000001220 00000 n -0000134932 00000 n -0001259780 00000 n -0000001266 00000 n -0000001313 00000 n -0000134989 00000 n -0001259719 00000 n -0000001361 00000 n -0000001403 00000 n -0000147442 00000 n -0001259593 00000 n -0000001449 00000 n -0000001486 00000 n -0000147500 00000 n -0001259532 00000 n -0000001534 00000 n -0000001570 00000 n -0000154678 00000 n -0001259403 00000 n -0000001616 00000 n -0000001663 00000 n -0000154795 00000 n -0001259329 00000 n -0000001711 00000 n -0000001742 00000 n -0000193044 00000 n -0001259242 00000 n -0000001790 00000 n -0000001821 00000 n -0000196930 00000 n -0001259155 00000 n -0000001869 00000 n -0000001915 00000 n -0000205317 00000 n -0001259068 00000 n -0000001963 00000 n -0000002010 00000 n -0000210149 00000 n -0001258979 00000 n -0000002058 00000 n -0000002105 00000 n -0000228508 00000 n -0001258888 00000 n -0000002154 00000 n -0000002199 00000 n -0000271738 00000 n -0001258796 00000 n -0000002248 00000 n -0000002292 00000 n -0000288517 00000 n -0001258704 00000 n -0000002341 00000 n -0000002397 00000 n -0000293232 00000 n -0001258612 00000 n -0000002446 00000 n -0000002486 00000 n -0000377976 00000 n -0001258520 00000 n -0000002536 00000 n -0000002591 00000 n -0000387992 00000 n -0001258428 00000 n -0000002641 00000 n -0000002692 00000 n -0000399293 00000 n -0001258336 00000 n -0000002742 00000 n -0000002791 00000 n -0000440708 00000 n -0001258244 00000 n -0000002841 00000 n -0000002892 00000 n -0000446093 00000 n -0001258152 00000 n -0000002942 00000 n -0000002981 00000 n -0000451263 00000 n -0001258060 00000 n -0000003031 00000 n -0000003064 00000 n -0000462282 00000 n -0001257968 00000 n -0000003114 00000 n -0000003149 00000 n -0000468114 00000 n -0001257876 00000 n -0000003199 00000 n -0000003239 00000 n -0000502385 00000 n -0001257784 00000 n -0000003289 00000 n -0000003342 00000 n -0000517178 00000 n -0001257692 00000 n -0000003392 00000 n -0000003424 00000 n -0000531752 00000 n -0001257600 00000 n -0000003474 00000 n -0000003512 00000 n -0000543323 00000 n -0001257508 00000 n -0000003562 00000 n -0000003595 00000 n -0000554956 00000 n -0001257416 00000 n -0000003645 00000 n -0000003677 00000 n -0000563002 00000 n -0001257324 00000 n -0000003727 00000 n -0000003757 00000 n -0000590334 00000 n -0001257246 00000 n -0000003807 00000 n -0000003837 00000 n -0000600208 00000 n -0001257113 00000 n -0000003884 00000 n -0000003940 00000 n -0000600326 00000 n -0001257034 00000 n -0000003989 00000 n -0000004040 00000 n -0000603631 00000 n -0001256941 00000 n -0000004089 00000 n -0000004149 00000 n -0000605400 00000 n -0001256848 00000 n -0000004198 00000 n -0000004255 00000 n -0000609814 00000 n -0001256755 00000 n -0000004304 00000 n -0000004355 00000 n -0000612585 00000 n -0001256662 00000 n -0000004404 00000 n -0000004455 00000 n -0000618018 00000 n -0001256569 00000 n -0000004504 00000 n -0000004546 00000 n -0000620396 00000 n -0001256476 00000 n -0000004595 00000 n -0000004644 00000 n -0000622307 00000 n -0001256383 00000 n -0000004693 00000 n -0000004732 00000 n -0000627362 00000 n -0001256290 00000 n -0000004781 00000 n -0000004831 00000 n -0000631195 00000 n -0001256197 00000 n -0000004881 00000 n -0000004934 00000 n -0000634149 00000 n -0001256104 00000 n -0000004984 00000 n -0000005026 00000 n -0000641477 00000 n -0001256011 00000 n -0000005076 00000 n -0000005124 00000 n -0000646798 00000 n -0001255918 00000 n -0000005174 00000 n -0000005229 00000 n -0000649327 00000 n -0001255825 00000 n -0000005279 00000 n -0000005333 00000 n -0000657364 00000 n -0001255732 00000 n -0000005383 00000 n -0000005440 00000 n -0000659751 00000 n -0001255639 00000 n -0000005490 00000 n -0000005550 00000 n -0000668586 00000 n -0001255546 00000 n -0000005600 00000 n -0000005649 00000 n -0000685418 00000 n -0001255453 00000 n -0000005699 00000 n -0000005755 00000 n -0000690785 00000 n -0001255360 00000 n -0000005805 00000 n -0000005860 00000 n -0000698518 00000 n -0001255267 00000 n -0000005910 00000 n -0000005966 00000 n -0000705116 00000 n -0001255188 00000 n -0000006016 00000 n -0000006071 00000 n -0000708522 00000 n -0001255054 00000 n -0000006118 00000 n -0000006164 00000 n -0000708641 00000 n -0001254975 00000 n -0000006213 00000 n -0000006278 00000 n -0000711484 00000 n -0001254882 00000 n -0000006327 00000 n -0000006392 00000 n -0000720157 00000 n -0001254789 00000 n -0000006441 00000 n -0000006496 00000 n -0000727972 00000 n -0001254696 00000 n -0000006545 00000 n -0000006600 00000 n -0000735780 00000 n -0001254603 00000 n -0000006649 00000 n -0000006700 00000 n -0000740603 00000 n -0001254510 00000 n -0000006749 00000 n -0000006800 00000 n -0000745469 00000 n -0001254417 00000 n -0000006849 00000 n -0000006904 00000 n -0000749092 00000 n -0001254324 00000 n -0000006953 00000 n -0000007008 00000 n -0000756051 00000 n -0001254231 00000 n -0000007057 00000 n -0000007114 00000 n -0000759655 00000 n -0001254138 00000 n -0000007164 00000 n -0000007221 00000 n -0000766391 00000 n -0001254045 00000 n -0000007271 00000 n -0000007332 00000 n -0000773837 00000 n -0001253952 00000 n -0000007382 00000 n -0000007443 00000 n -0000779421 00000 n -0001253859 00000 n -0000007493 00000 n -0000007554 00000 n -0000782070 00000 n -0001253766 00000 n -0000007604 00000 n -0000007665 00000 n -0000786980 00000 n -0001253673 00000 n -0000007715 00000 n -0000007772 00000 n -0000791134 00000 n -0001253580 00000 n -0000007822 00000 n -0000007867 00000 n -0000796289 00000 n -0001253487 00000 n -0000007917 00000 n -0000007962 00000 n -0000800130 00000 n -0001253394 00000 n -0000008012 00000 n -0000008066 00000 n -0000804148 00000 n -0001253301 00000 n -0000008116 00000 n -0000008166 00000 n -0000805832 00000 n -0001253208 00000 n -0000008216 00000 n -0000008259 00000 n -0000812562 00000 n -0001253115 00000 n -0000008309 00000 n -0000008355 00000 n -0000823125 00000 n -0001253022 00000 n -0000008405 00000 n -0000008448 00000 n -0000832696 00000 n -0001252929 00000 n -0000008498 00000 n -0000008544 00000 n -0000836815 00000 n -0001252836 00000 n -0000008594 00000 n -0000008640 00000 n -0000841704 00000 n -0001252743 00000 n -0000008690 00000 n -0000008743 00000 n -0000846631 00000 n -0001252650 00000 n -0000008793 00000 n -0000008846 00000 n -0000849074 00000 n -0001252557 00000 n -0000008896 00000 n -0000008946 00000 n -0000859493 00000 n -0001252464 00000 n -0000008996 00000 n -0000009040 00000 n -0000881877 00000 n -0001252371 00000 n -0000009090 00000 n -0000009134 00000 n -0000929043 00000 n -0001252278 00000 n -0000009184 00000 n -0000009236 00000 n -0000934010 00000 n -0001252185 00000 n -0000009286 00000 n -0000009337 00000 n -0000939281 00000 n -0001252092 00000 n -0000009387 00000 n -0000009438 00000 n -0000943710 00000 n -0001251999 00000 n -0000009488 00000 n -0000009535 00000 n -0000958897 00000 n -0001251920 00000 n -0000009585 00000 n -0000009635 00000 n -0000961041 00000 n -0001251800 00000 n -0000009682 00000 n -0000009731 00000 n -0000961160 00000 n -0001251721 00000 n -0000009780 00000 n -0000009807 00000 n -0000971633 00000 n -0001251628 00000 n -0000009856 00000 n -0000009883 00000 n -0000974077 00000 n -0001251535 00000 n -0000009932 00000 n -0000009979 00000 n -0000976886 00000 n -0001251442 00000 n -0000010028 00000 n -0000010078 00000 n -0000979044 00000 n -0001251349 00000 n -0000010127 00000 n -0000010160 00000 n -0000982262 00000 n -0001251256 00000 n -0000010209 00000 n -0000010242 00000 n -0000984732 00000 n -0001251163 00000 n -0000010291 00000 n -0000010319 00000 n -0000998489 00000 n -0001251070 00000 n -0000010368 00000 n -0000010396 00000 n -0001001910 00000 n -0001250977 00000 n -0000010445 00000 n -0000010471 00000 n -0001008669 00000 n -0001250884 00000 n -0000010521 00000 n -0000010547 00000 n -0001012312 00000 n -0001250791 00000 n -0000010597 00000 n -0000010626 00000 n -0001021683 00000 n -0001250698 00000 n -0000010676 00000 n -0000010705 00000 n -0001024927 00000 n -0001250605 00000 n -0000010755 00000 n -0000010791 00000 n -0001029296 00000 n -0001250512 00000 n -0000010841 00000 n -0000010871 00000 n -0001034310 00000 n -0001250419 00000 n -0000010921 00000 n -0000010952 00000 n -0001046200 00000 n -0001250340 00000 n -0000011002 00000 n -0000011033 00000 n -0000011547 00000 n -0000011669 00000 n -0000016126 00000 n -0000011085 00000 n -0000016010 00000 n -0000016068 00000 n -0001242506 00000 n -0001222170 00000 n -0001242331 00000 n -0001221173 00000 n -0001200724 00000 n -0001221000 00000 n -0001243568 00000 n -0000015772 00000 n -0000015908 00000 n -0000015988 00000 n -0000016558 00000 n -0000016378 00000 n -0000016239 00000 n -0000016500 00000 n -0000022817 00000 n -0000018502 00000 n -0000016599 00000 n -0001199754 00000 n -0001181745 00000 n -0001199579 00000 n -0000022759 00000 n -0000018836 00000 n -0000018990 00000 n -0000019148 00000 n -0000019305 00000 n -0000019463 00000 n -0000019621 00000 n -0000019779 00000 n -0000019937 00000 n -0000020095 00000 n -0000020253 00000 n -0000020411 00000 n -0000020565 00000 n -0000020723 00000 n -0000020877 00000 n -0000021035 00000 n -0000021189 00000 n -0000021347 00000 n -0000021502 00000 n -0000021660 00000 n -0000021815 00000 n -0000021973 00000 n -0000022130 00000 n -0000022287 00000 n -0000022445 00000 n -0000022603 00000 n -0000031940 00000 n -0000025826 00000 n -0000022902 00000 n -0000026248 00000 n -0000026406 00000 n -0000026564 00000 n -0000026722 00000 n -0000026879 00000 n -0000027036 00000 n -0000027195 00000 n -0000027354 00000 n -0000027512 00000 n -0000027671 00000 n -0000027830 00000 n -0000027989 00000 n -0000028148 00000 n -0000028305 00000 n -0000028464 00000 n -0000028622 00000 n -0000028780 00000 n -0000028939 00000 n -0000029098 00000 n -0000029253 00000 n -0000029409 00000 n -0000029566 00000 n -0000029724 00000 n -0000029882 00000 n -0000030039 00000 n -0000030197 00000 n -0000030355 00000 n -0000030512 00000 n -0000030670 00000 n -0000030829 00000 n -0000030988 00000 n -0000031147 00000 n -0000031306 00000 n -0000031465 00000 n -0000031624 00000 n -0000031783 00000 n -0000040835 00000 n -0000034654 00000 n -0000032025 00000 n -0000040777 00000 n -0000035076 00000 n -0000035235 00000 n -0000035394 00000 n -0000035552 00000 n -0000035710 00000 n -0000035865 00000 n -0000036023 00000 n -0000036181 00000 n -0000036338 00000 n -0000036496 00000 n -0000036654 00000 n -0000036812 00000 n -0000036970 00000 n -0000037128 00000 n -0000037286 00000 n -0000037445 00000 n -0000037604 00000 n -0000037763 00000 n -0000037922 00000 n -0000038080 00000 n -0000038237 00000 n -0000038395 00000 n -0000038553 00000 n -0000038712 00000 n -0000038871 00000 n -0000039030 00000 n -0000039189 00000 n -0000039348 00000 n -0000039507 00000 n -0000039666 00000 n -0000039825 00000 n -0000039984 00000 n -0000040143 00000 n -0000040302 00000 n -0000040461 00000 n -0000040620 00000 n -0000046161 00000 n -0000042649 00000 n -0000040920 00000 n -0000046103 00000 n -0000042943 00000 n -0000043102 00000 n -0000043261 00000 n -0000043420 00000 n -0000043575 00000 n -0000043732 00000 n -0000043889 00000 n -0000044045 00000 n -0000044203 00000 n -0000044360 00000 n -0000044518 00000 n -0000044676 00000 n -0000044834 00000 n -0000044992 00000 n -0000045151 00000 n -0000045309 00000 n -0000045468 00000 n -0000045627 00000 n -0000045785 00000 n -0000045944 00000 n -0000050870 00000 n -0000048686 00000 n -0000046246 00000 n -0000050698 00000 n -0000048908 00000 n -0001181090 00000 n -0001179151 00000 n -0001180927 00000 n -0000049085 00000 n -0000049266 00000 n -0000049419 00000 n -0000049572 00000 n -0000049725 00000 n -0000049877 00000 n -0000050030 00000 n -0000050183 00000 n -0000050336 00000 n -0000050489 00000 n -0000050756 00000 n -0001243686 00000 n -0000192985 00000 n -0000399234 00000 n -0000196871 00000 n -0000205258 00000 n -0000210090 00000 n -0000288458 00000 n -0000228449 00000 n -0000468055 00000 n -0000154736 00000 n -0000054578 00000 n -0000054214 00000 n -0000050981 00000 n -0000054336 00000 n -0000054457 00000 n -0000059396 00000 n -0000057806 00000 n -0000054663 00000 n -0000057980 00000 n -0000058165 00000 n -0000058913 00000 n -0000059034 00000 n -0000059098 00000 n -0000058352 00000 n -0000058539 00000 n -0000059155 00000 n -0000059219 00000 n -0000058726 00000 n -0000059276 00000 n -0000210507 00000 n -0000213343 00000 n -0000352804 00000 n -0000357012 00000 n -0000348138 00000 n -0000063606 00000 n -0000062916 00000 n -0000059481 00000 n -0000063370 00000 n -0000063066 00000 n -0000063218 00000 n -0000063490 00000 n -0000063548 00000 n -0000069322 00000 n -0000067224 00000 n -0000063691 00000 n -0000068779 00000 n -0000068837 00000 n -0000068901 00000 n -0000067422 00000 n -0000068957 00000 n -0000069021 00000 n -0000067609 00000 n -0000067762 00000 n -0000067915 00000 n -0000068068 00000 n -0001178798 00000 n -0001176803 00000 n -0001178635 00000 n -0000069078 00000 n -0000069142 00000 n -0000068220 00000 n -0000068407 00000 n -0000068594 00000 n -0000069200 00000 n -0000069264 00000 n -0000418407 00000 n -0000641418 00000 n -0000244942 00000 n -0000244692 00000 n -0000075888 00000 n -0000072812 00000 n -0000069420 00000 n -0000075284 00000 n -0000073042 00000 n -0000073229 00000 n -0000073416 00000 n -0000073603 00000 n -0000075342 00000 n -0000075406 00000 n -0000073789 00000 n -0000073976 00000 n -0000075463 00000 n -0000075527 00000 n -0000074163 00000 n -0000074350 00000 n -0000074537 00000 n -0000075585 00000 n -0000075649 00000 n -0000074724 00000 n -0000074910 00000 n -0000075706 00000 n -0000075768 00000 n -0000075097 00000 n -0000075826 00000 n -0000244817 00000 n -0000263016 00000 n -0000249100 00000 n -0000239531 00000 n -0000235785 00000 n -0000239656 00000 n -0000239280 00000 n -0000249349 00000 n -0000245067 00000 n -0000080761 00000 n -0000078469 00000 n -0000075973 00000 n -0000080287 00000 n -0000080345 00000 n -0000078675 00000 n -0000078862 00000 n -0000079049 00000 n -0000080403 00000 n -0000080467 00000 n -0000079202 00000 n -0000079389 00000 n -0000079576 00000 n -0000079727 00000 n -0000079914 00000 n -0000080100 00000 n -0000080525 00000 n -0000080640 00000 n -0000080704 00000 n -0001243804 00000 n -0000257346 00000 n -0000239781 00000 n -0000257227 00000 n -0000276318 00000 n -0000085379 00000 n -0000083929 00000 n -0000080859 00000 n -0000085199 00000 n -0000084111 00000 n -0000084298 00000 n -0000084485 00000 n -0000084672 00000 n -0000084859 00000 n -0000085257 00000 n -0000085321 00000 n -0000085046 00000 n -0000087042 00000 n -0000086689 00000 n -0000085477 00000 n -0000086811 00000 n -0000086869 00000 n -0000086927 00000 n -0000086985 00000 n -0000090294 00000 n -0000089340 00000 n -0000087140 00000 n -0000090056 00000 n -0000090114 00000 n -0000089498 00000 n -0000089683 00000 n -0000089869 00000 n -0000090172 00000 n -0000090236 00000 n -0000249225 00000 n -0000248975 00000 n -0000093049 00000 n -0000092347 00000 n -0000090392 00000 n -0000092871 00000 n -0000092497 00000 n -0000092684 00000 n -0000092929 00000 n -0000092992 00000 n -0000096038 00000 n -0000095069 00000 n -0000093160 00000 n -0000095980 00000 n -0000095235 00000 n -0000095422 00000 n -0000095607 00000 n -0000095794 00000 n -0000099558 00000 n -0000098914 00000 n -0000096136 00000 n -0000099438 00000 n -0000099064 00000 n -0000099251 00000 n -0000099496 00000 n -0001243922 00000 n -0000103257 00000 n -0000102475 00000 n -0000099669 00000 n -0000102597 00000 n -0000102712 00000 n -0000102776 00000 n -0000102833 00000 n -0000102897 00000 n -0000102955 00000 n -0000103017 00000 n -0000103074 00000 n -0000103138 00000 n -0000103195 00000 n -0000106861 00000 n -0000106140 00000 n -0000103342 00000 n -0000106262 00000 n -0000106320 00000 n -0000106378 00000 n -0000106437 00000 n -0000106495 00000 n -0000106559 00000 n -0000106617 00000 n -0000106681 00000 n -0000106739 00000 n -0000106803 00000 n -0000110372 00000 n -0000109706 00000 n -0000106946 00000 n -0000109828 00000 n -0000109886 00000 n -0000109950 00000 n -0000110008 00000 n -0000110072 00000 n -0000110129 00000 n -0000110193 00000 n -0000110251 00000 n -0000112698 00000 n -0000112396 00000 n -0000110457 00000 n -0000112518 00000 n -0000112576 00000 n -0000112640 00000 n -0000113323 00000 n -0000113143 00000 n -0000112783 00000 n -0000113265 00000 n -0000119383 00000 n -0000115083 00000 n -0000113395 00000 n -0000119211 00000 n -0000115409 00000 n -0000115567 00000 n -0000115726 00000 n -0000115884 00000 n -0000116043 00000 n -0000116202 00000 n -0000116361 00000 n -0000116520 00000 n -0000116678 00000 n -0000116837 00000 n -0000116995 00000 n -0000117153 00000 n -0000117311 00000 n -0000117469 00000 n -0000117626 00000 n -0000117784 00000 n -0000117941 00000 n -0000118100 00000 n -0000118259 00000 n -0000118418 00000 n -0000118577 00000 n -0000118736 00000 n -0000118895 00000 n -0000119052 00000 n -0001244040 00000 n -0000120004 00000 n -0000119824 00000 n -0000119468 00000 n -0000119946 00000 n -0000125215 00000 n -0000121416 00000 n -0000120076 00000 n -0000125043 00000 n -0000121718 00000 n -0000121876 00000 n -0000122034 00000 n -0000122192 00000 n -0000122350 00000 n -0000122508 00000 n -0000122665 00000 n -0000122823 00000 n -0000122980 00000 n -0000123138 00000 n -0000123297 00000 n -0000123456 00000 n -0000123614 00000 n -0000123773 00000 n -0000123931 00000 n -0000124090 00000 n -0000124249 00000 n -0000124408 00000 n -0000124566 00000 n -0000124725 00000 n -0000124884 00000 n -0000125847 00000 n -0000125667 00000 n -0000125300 00000 n -0000125789 00000 n -0000135046 00000 n -0000127872 00000 n -0000125919 00000 n -0000134874 00000 n -0000128342 00000 n -0000128495 00000 n -0000128653 00000 n -0000128805 00000 n -0000128963 00000 n -0000129115 00000 n -0000129273 00000 n -0000129426 00000 n -0000129584 00000 n -0000129737 00000 n -0000129895 00000 n -0000130047 00000 n -0000130204 00000 n -0000130357 00000 n -0000130515 00000 n -0000130668 00000 n -0000130825 00000 n -0000130978 00000 n -0000131136 00000 n -0000131289 00000 n -0000131448 00000 n -0000131601 00000 n -0000131760 00000 n -0000131912 00000 n -0000132070 00000 n -0000132223 00000 n -0000132382 00000 n -0000132535 00000 n -0000132693 00000 n -0000132846 00000 n -0000133005 00000 n -0000133158 00000 n -0000133317 00000 n -0000133469 00000 n -0000133627 00000 n -0000133780 00000 n -0000133939 00000 n -0000134092 00000 n -0000134250 00000 n -0000134403 00000 n -0000134562 00000 n -0000134715 00000 n -0000600267 00000 n -0000603572 00000 n -0000605341 00000 n -0000609755 00000 n -0000612526 00000 n -0000617959 00000 n -0000620337 00000 n -0000622248 00000 n -0000627303 00000 n -0000631136 00000 n -0000634090 00000 n -0000646739 00000 n -0000649268 00000 n -0000657305 00000 n -0000659692 00000 n -0000668526 00000 n -0000685358 00000 n -0000690725 00000 n -0000698458 00000 n -0000705056 00000 n -0000135684 00000 n -0000135499 00000 n -0000135131 00000 n -0000135624 00000 n -0000147558 00000 n -0000138967 00000 n -0000135757 00000 n -0000147382 00000 n -0000139555 00000 n -0000139708 00000 n -0000139867 00000 n -0000140021 00000 n -0000140180 00000 n -0000140334 00000 n -0000140493 00000 n -0000140647 00000 n -0000140805 00000 n -0000140959 00000 n -0000141118 00000 n -0000141272 00000 n -0000141431 00000 n -0000141585 00000 n -0000141744 00000 n -0000141897 00000 n -0000142055 00000 n -0000142208 00000 n -0000142367 00000 n -0000142521 00000 n -0000142681 00000 n -0000142835 00000 n -0000142994 00000 n -0000143148 00000 n -0000143308 00000 n -0000143462 00000 n -0000143622 00000 n -0000143776 00000 n -0000143936 00000 n -0000144090 00000 n -0000144250 00000 n -0000144404 00000 n -0000144564 00000 n -0000144718 00000 n -0000144877 00000 n -0000145031 00000 n -0000145191 00000 n -0000145344 00000 n -0000145503 00000 n -0000145655 00000 n -0000145815 00000 n -0000145969 00000 n -0000146128 00000 n -0000146282 00000 n -0000146442 00000 n -0000146595 00000 n -0000146755 00000 n -0000146909 00000 n -0000147069 00000 n -0000147223 00000 n -0001244159 00000 n -0000708581 00000 n -0000711424 00000 n -0000720097 00000 n -0000727912 00000 n -0000735720 00000 n -0000740543 00000 n -0000745409 00000 n -0000749032 00000 n -0000755991 00000 n -0000759595 00000 n -0000766331 00000 n -0000773777 00000 n -0000779361 00000 n -0000782010 00000 n -0000786920 00000 n -0000791074 00000 n -0000796229 00000 n -0000800070 00000 n -0000804088 00000 n -0000805772 00000 n -0000812502 00000 n -0000823065 00000 n -0000832636 00000 n -0000836755 00000 n -0000841644 00000 n -0000152463 00000 n -0000149284 00000 n -0000147644 00000 n -0000152403 00000 n -0000149584 00000 n -0000149738 00000 n -0000149898 00000 n -0000150051 00000 n -0000150211 00000 n -0000150363 00000 n -0000150522 00000 n -0000150676 00000 n -0000150836 00000 n -0000150990 00000 n -0000151150 00000 n -0000151304 00000 n -0000151464 00000 n -0000151618 00000 n -0000151776 00000 n -0000151930 00000 n -0000152090 00000 n -0000152243 00000 n -0000846571 00000 n -0000849014 00000 n -0000859433 00000 n -0000881817 00000 n -0000928983 00000 n -0000933950 00000 n -0000939221 00000 n -0000943650 00000 n -0000958837 00000 n -0000154913 00000 n -0000154492 00000 n -0000152549 00000 n -0000154618 00000 n -0000154853 00000 n -0000160237 00000 n -0000157887 00000 n -0000154999 00000 n -0000159925 00000 n -0000158115 00000 n -0000158303 00000 n -0000158491 00000 n -0000158679 00000 n -0000158867 00000 n -0000159054 00000 n -0000159241 00000 n -0000159428 00000 n -0000159985 00000 n -0000160051 00000 n -0000159581 00000 n -0000159753 00000 n -0000160111 00000 n -0000160177 00000 n -0000179694 00000 n -0000175554 00000 n -0000186461 00000 n -0000175674 00000 n -0000186586 00000 n -0000182836 00000 n -0000164053 00000 n -0000162923 00000 n -0000160349 00000 n -0000163384 00000 n -0000163444 00000 n -0000163510 00000 n -0000163570 00000 n -0000163629 00000 n -0000163689 00000 n -0000163755 00000 n -0000163079 00000 n -0000163815 00000 n -0000163873 00000 n -0000163933 00000 n -0000163993 00000 n -0000163233 00000 n -0000446033 00000 n -0000169637 00000 n -0000166048 00000 n -0000164139 00000 n -0000169220 00000 n -0001175964 00000 n -0001158689 00000 n -0001175783 00000 n -0000169280 00000 n -0000166339 00000 n -0000169340 00000 n -0000166493 00000 n -0000169399 00000 n -0000166647 00000 n -0000166835 00000 n -0000169457 00000 n -0000166989 00000 n -0000167177 00000 n -0000167365 00000 n -0000167518 00000 n -0000167706 00000 n -0000169517 00000 n -0000167860 00000 n -0000168047 00000 n -0000168200 00000 n -0000168386 00000 n -0000169577 00000 n -0000168538 00000 n -0000168726 00000 n -0000168880 00000 n -0000169067 00000 n -0000182711 00000 n -0000182585 00000 n -0000175738 00000 n -0000171876 00000 n -0000169737 00000 n -0000174956 00000 n -0000175016 00000 n -0000172158 00000 n -0000172346 00000 n -0000172500 00000 n -0000172688 00000 n -0000175076 00000 n -0000172842 00000 n -0000175136 00000 n -0000173030 00000 n -0000173218 00000 n -0000173372 00000 n -0000173559 00000 n -0000175195 00000 n -0000175255 00000 n -0000173712 00000 n -0000175315 00000 n -0000173900 00000 n -0000175375 00000 n -0000174087 00000 n -0000175434 00000 n -0000174275 00000 n -0000175494 00000 n -0000175614 00000 n -0000174462 00000 n -0000174614 00000 n -0001158068 00000 n -0001147348 00000 n -0001157887 00000 n -0000174802 00000 n -0001244284 00000 n -0000179820 00000 n -0000179568 00000 n -0000182460 00000 n -0000186712 00000 n -0000188422 00000 n -0000961100 00000 n -0000179945 00000 n -0000177550 00000 n -0000175852 00000 n -0000179448 00000 n -0000179508 00000 n -0000177778 00000 n -0000177931 00000 n -0000178118 00000 n -0000179634 00000 n -0000178272 00000 n -0000179760 00000 n -0000178426 00000 n -0000178580 00000 n -0000178768 00000 n -0000179885 00000 n -0000178922 00000 n -0000179075 00000 n -0000179263 00000 n -0000182900 00000 n -0000181610 00000 n -0000180045 00000 n -0000182400 00000 n -0000181784 00000 n -0000182526 00000 n -0000182651 00000 n -0000181938 00000 n -0000182777 00000 n -0000182092 00000 n -0000182246 00000 n -0001001850 00000 n -0000186838 00000 n -0000184801 00000 n -0000183000 00000 n -0000186341 00000 n -0000186401 00000 n -0000185011 00000 n -0000185165 00000 n -0000185353 00000 n -0000186527 00000 n -0000185541 00000 n -0000185695 00000 n -0000186652 00000 n -0000185849 00000 n -0000186001 00000 n -0000186778 00000 n -0000186188 00000 n -0000188548 00000 n -0000187898 00000 n -0000186938 00000 n -0000188362 00000 n -0000188054 00000 n -0000188488 00000 n -0000188208 00000 n -0000193522 00000 n -0000190467 00000 n -0000188648 00000 n -0000192925 00000 n -0000193102 00000 n -0000193162 00000 n -0000190722 00000 n -0000190876 00000 n -0000191030 00000 n -0000191183 00000 n -0000191337 00000 n -0000191491 00000 n -0000191644 00000 n -0000193222 00000 n -0000193282 00000 n -0000191797 00000 n -0000193342 00000 n -0000191985 00000 n -0000193402 00000 n -0000192173 00000 n -0000192361 00000 n -0000193462 00000 n -0000192549 00000 n -0000192737 00000 n -0000517118 00000 n -0000531692 00000 n -0000543263 00000 n -0000554896 00000 n -0000562942 00000 n -0000590274 00000 n -0000434357 00000 n -0000197412 00000 n -0000195297 00000 n -0000193622 00000 n -0000196811 00000 n -0000196988 00000 n -0000197048 00000 n -0000195498 00000 n -0000195684 00000 n -0000195871 00000 n -0000196059 00000 n -0000196247 00000 n -0000196435 00000 n -0000196623 00000 n -0000197108 00000 n -0000197168 00000 n -0000197227 00000 n -0000197286 00000 n -0000197352 00000 n -0001244409 00000 n -0000200040 00000 n -0000199788 00000 n -0000202437 00000 n -0000199664 00000 n -0000199914 00000 n -0000200166 00000 n -0000199106 00000 n -0000197526 00000 n -0000199604 00000 n -0000199730 00000 n -0000199854 00000 n -0000199262 00000 n -0000199980 00000 n -0000199450 00000 n -0000200106 00000 n -0000202562 00000 n -0000201358 00000 n -0000200279 00000 n -0000202377 00000 n -0000201541 00000 n -0000201729 00000 n -0000201883 00000 n -0000202035 00000 n -0000202502 00000 n -0000202189 00000 n -0000974017 00000 n -0000976826 00000 n -0000205795 00000 n -0000203949 00000 n -0000202675 00000 n -0000205198 00000 n -0000205375 00000 n -0000205435 00000 n -0000204141 00000 n -0000204329 00000 n -0000204516 00000 n -0000205495 00000 n -0000205554 00000 n -0000205612 00000 n -0000204703 00000 n -0000204856 00000 n -0000205670 00000 n -0000205736 00000 n -0000205010 00000 n -0000434237 00000 n -0000210626 00000 n -0000207924 00000 n -0000205909 00000 n -0000210030 00000 n -0000210207 00000 n -0000210267 00000 n -0000208152 00000 n -0000208340 00000 n -0000210327 00000 n -0000208527 00000 n -0000208715 00000 n -0000208903 00000 n -0000209091 00000 n -0000209279 00000 n -0000209467 00000 n -0000210387 00000 n -0000209654 00000 n -0000209842 00000 n -0000210447 00000 n -0000210566 00000 n -0000332435 00000 n -0000217247 00000 n -0000217372 00000 n -0000217498 00000 n -0000221567 00000 n -0000221753 00000 n -0000213467 00000 n -0000212625 00000 n -0000210726 00000 n -0000213283 00000 n -0000212790 00000 n -0000212943 00000 n -0000213407 00000 n -0000213097 00000 n -0000392779 00000 n -0000217624 00000 n -0000215451 00000 n -0000213566 00000 n -0000217187 00000 n -0000215670 00000 n -0000215823 00000 n -0000217313 00000 n -0000215977 00000 n -0000216165 00000 n -0000216319 00000 n -0000217438 00000 n -0000216472 00000 n -0000216659 00000 n -0000217564 00000 n -0000216811 00000 n -0000216999 00000 n -0001244534 00000 n -0000221873 00000 n -0000219935 00000 n -0000217737 00000 n -0000221507 00000 n -0000220145 00000 n -0000220333 00000 n -0000220485 00000 n -0000221633 00000 n -0000220638 00000 n -0000220826 00000 n -0000220980 00000 n -0000221693 00000 n -0000221813 00000 n -0000221133 00000 n -0000221320 00000 n -0000366579 00000 n -0000222615 00000 n -0000222429 00000 n -0000221986 00000 n -0000222555 00000 n -0000228807 00000 n -0000224914 00000 n -0000222701 00000 n -0000228389 00000 n -0000228567 00000 n -0000228627 00000 n -0000228687 00000 n -0000225205 00000 n -0000225392 00000 n -0000225580 00000 n -0000225768 00000 n -0000225956 00000 n -0000226144 00000 n -0000228747 00000 n -0000226331 00000 n -0000226518 00000 n -0000226706 00000 n -0000226893 00000 n -0000227078 00000 n -0000227266 00000 n -0000227453 00000 n -0000227641 00000 n -0000227828 00000 n -0000228016 00000 n -0000228203 00000 n -0000252502 00000 n -0000252376 00000 n -0000239405 00000 n -0000235904 00000 n -0000231345 00000 n -0000228920 00000 n -0000235545 00000 n -0000231672 00000 n -0000231860 00000 n -0000235605 00000 n -0000232048 00000 n -0000232236 00000 n -0000232424 00000 n -0000232612 00000 n -0000232800 00000 n -0000235665 00000 n -0000232987 00000 n -0000233175 00000 n -0000233363 00000 n -0000233551 00000 n -0000233739 00000 n -0000233893 00000 n -0000234081 00000 n -0000234268 00000 n -0000234456 00000 n -0000234644 00000 n -0000234798 00000 n -0000234985 00000 n -0000235173 00000 n -0000235725 00000 n -0000235844 00000 n -0000235359 00000 n -0000252124 00000 n -0000249474 00000 n -0000252250 00000 n -0000266327 00000 n -0000322029 00000 n -0000263140 00000 n -0000239844 00000 n -0000237455 00000 n -0000236017 00000 n -0000239220 00000 n -0000237683 00000 n -0000239345 00000 n -0000237836 00000 n -0000237990 00000 n -0000238143 00000 n -0000239471 00000 n -0000238297 00000 n -0000238451 00000 n -0000239596 00000 n -0000238605 00000 n -0000239721 00000 n -0000238759 00000 n -0000238913 00000 n -0000239066 00000 n -0001034250 00000 n -0001012252 00000 n -0000245192 00000 n -0000241893 00000 n -0000239930 00000 n -0000244572 00000 n -0000244632 00000 n -0000242166 00000 n -0000242354 00000 n -0000242542 00000 n -0000242696 00000 n -0000242850 00000 n -0000244757 00000 n -0000243004 00000 n -0000243158 00000 n -0000243312 00000 n -0000244882 00000 n -0000243466 00000 n -0000243654 00000 n -0000243808 00000 n -0000245007 00000 n -0000243962 00000 n -0000244115 00000 n -0000244268 00000 n -0000244421 00000 n -0000245132 00000 n -0001244659 00000 n -0000978984 00000 n -0000984672 00000 n -0000249538 00000 n -0000247081 00000 n -0000245278 00000 n -0000248915 00000 n -0000247309 00000 n -0000247463 00000 n -0000247617 00000 n -0000249040 00000 n -0000247770 00000 n -0000249165 00000 n -0000247958 00000 n -0000248146 00000 n -0000248300 00000 n -0000249290 00000 n -0000249414 00000 n -0000248454 00000 n -0000248608 00000 n -0000248761 00000 n -0000252566 00000 n -0000251053 00000 n -0000249624 00000 n -0000252004 00000 n -0000252064 00000 n -0000251236 00000 n -0000251389 00000 n -0000252190 00000 n -0000251543 00000 n -0000251696 00000 n -0000252316 00000 n -0000251850 00000 n -0000252442 00000 n -0000257471 00000 n -0000255076 00000 n -0000252666 00000 n -0000257047 00000 n -0000257107 00000 n -0000257167 00000 n -0000257286 00000 n -0000255304 00000 n -0000255458 00000 n -0000255646 00000 n -0000255834 00000 n -0000256022 00000 n -0000256176 00000 n -0000256364 00000 n -0000256552 00000 n -0000256706 00000 n -0000257411 00000 n -0000256859 00000 n -0000276072 00000 n -0000285635 00000 n -0000263264 00000 n -0000260267 00000 n -0000257597 00000 n -0000262956 00000 n -0000260531 00000 n -0000260719 00000 n -0000260906 00000 n -0000261060 00000 n -0000263081 00000 n -0000261214 00000 n -0000261401 00000 n -0000261589 00000 n -0000261743 00000 n -0000261897 00000 n -0000263204 00000 n -0000262051 00000 n -0000262205 00000 n -0000262393 00000 n -0000262581 00000 n -0000262769 00000 n -0000266453 00000 n -0000265051 00000 n -0000263390 00000 n -0000266267 00000 n -0000265243 00000 n -0000265397 00000 n -0000265550 00000 n -0000266393 00000 n -0000265703 00000 n -0000265891 00000 n -0000266079 00000 n -0000272037 00000 n -0000268528 00000 n -0000266566 00000 n -0000271618 00000 n -0000271678 00000 n -0000271797 00000 n -0000271857 00000 n -0000268801 00000 n -0000268989 00000 n -0000269177 00000 n -0000269365 00000 n -0000269552 00000 n -0000269740 00000 n -0000269928 00000 n -0000270116 00000 n -0000270303 00000 n -0000270490 00000 n -0000270678 00000 n -0000271917 00000 n -0000270866 00000 n -0000271977 00000 n -0000271054 00000 n -0000271242 00000 n -0000271430 00000 n -0001244784 00000 n -0000276192 00000 n -0000280515 00000 n -0000280390 00000 n -0000282714 00000 n -0000282589 00000 n -0000276443 00000 n -0000278150 00000 n -0000278275 00000 n -0000280264 00000 n -0000276507 00000 n -0000274118 00000 n -0000272137 00000 n -0000275952 00000 n -0000276012 00000 n -0000276132 00000 n -0000274346 00000 n -0000274534 00000 n -0000274688 00000 n -0000274842 00000 n -0000274996 00000 n -0000275150 00000 n -0000276258 00000 n -0000276383 00000 n -0000275304 00000 n -0000275492 00000 n -0000275646 00000 n -0000275798 00000 n -0000278400 00000 n -0000277567 00000 n -0000276620 00000 n -0000278030 00000 n -0000278090 00000 n -0000277723 00000 n -0000278216 00000 n -0000277876 00000 n -0000278340 00000 n -0000280641 00000 n -0000279740 00000 n -0000278499 00000 n -0000280204 00000 n -0000279896 00000 n -0000280330 00000 n -0000280050 00000 n -0000280455 00000 n -0000280581 00000 n -0000282839 00000 n -0000282228 00000 n -0000280754 00000 n -0000282529 00000 n -0000282375 00000 n -0000282655 00000 n -0000282779 00000 n -0000285755 00000 n -0000284299 00000 n -0000282952 00000 n -0000285515 00000 n -0000285575 00000 n -0000285695 00000 n -0000284491 00000 n -0000284679 00000 n -0000284867 00000 n -0000285054 00000 n -0000285207 00000 n -0000285361 00000 n -0000288876 00000 n -0000287148 00000 n -0000285855 00000 n -0000288398 00000 n -0000288576 00000 n -0000288636 00000 n -0000287340 00000 n -0000287528 00000 n -0000288696 00000 n -0000288756 00000 n -0000288816 00000 n -0000287715 00000 n -0000287903 00000 n -0000288091 00000 n -0000288244 00000 n -0001244909 00000 n -0000371117 00000 n -0000293471 00000 n -0000291184 00000 n -0000288976 00000 n -0000293112 00000 n -0000293172 00000 n -0000293291 00000 n -0000293351 00000 n -0000291421 00000 n -0000291574 00000 n -0000293411 00000 n -0000291727 00000 n -0000291881 00000 n -0000292035 00000 n -0000292189 00000 n -0000292343 00000 n -0000292497 00000 n -0000292651 00000 n -0000292804 00000 n -0000292958 00000 n -0000387932 00000 n -0000440648 00000 n -0000377916 00000 n -0000305355 00000 n -0000296574 00000 n -0000293571 00000 n -0000303557 00000 n -0000303617 00000 n -0000297036 00000 n -0000297190 00000 n -0000297344 00000 n -0000297498 00000 n -0000297650 00000 n -0000297804 00000 n -0000297958 00000 n -0000303677 00000 n -0000303737 00000 n -0000298112 00000 n -0000303797 00000 n -0000298300 00000 n -0000303857 00000 n -0000298488 00000 n -0000303917 00000 n -0000298676 00000 n -0000303977 00000 n -0000298863 00000 n -0000304037 00000 n -0000299051 00000 n -0000304097 00000 n -0000299238 00000 n -0000304157 00000 n -0000299426 00000 n -0000304217 00000 n -0000299613 00000 n -0000304277 00000 n -0000299801 00000 n -0000304337 00000 n -0000299989 00000 n -0000304397 00000 n -0000300177 00000 n -0000304457 00000 n -0000300365 00000 n -0000304517 00000 n -0000300552 00000 n -0000304577 00000 n -0000300740 00000 n -0000304637 00000 n -0000300928 00000 n -0000304697 00000 n -0000301116 00000 n -0000304757 00000 n -0000301304 00000 n -0000304816 00000 n -0000301491 00000 n -0000304876 00000 n -0000301679 00000 n -0000304936 00000 n -0000301866 00000 n -0000304996 00000 n -0000302054 00000 n -0000305056 00000 n -0000302242 00000 n -0000305116 00000 n -0000302430 00000 n -0000302618 00000 n -0000302806 00000 n -0000305176 00000 n -0000302994 00000 n -0000305236 00000 n -0000303182 00000 n -0000305295 00000 n -0000303370 00000 n -0000343805 00000 n -0000322209 00000 n -0000309191 00000 n -0000305455 00000 n -0000319812 00000 n -0000319872 00000 n -0000309815 00000 n -0000319932 00000 n -0000310003 00000 n -0000319992 00000 n -0000310191 00000 n -0000320052 00000 n -0000310379 00000 n -0000320112 00000 n -0000310567 00000 n -0000320172 00000 n -0000310754 00000 n -0000320232 00000 n -0000310941 00000 n -0000320292 00000 n -0000311128 00000 n -0000320352 00000 n -0000311315 00000 n -0000320411 00000 n -0000311503 00000 n -0000320471 00000 n -0000311691 00000 n -0000320531 00000 n -0000311879 00000 n -0000320591 00000 n -0000312067 00000 n -0000320651 00000 n -0000312254 00000 n -0000320711 00000 n -0000312442 00000 n -0000320771 00000 n -0000312630 00000 n -0000320831 00000 n -0000312817 00000 n -0000320891 00000 n -0000313005 00000 n -0000320950 00000 n -0000313193 00000 n -0000321010 00000 n -0000313380 00000 n -0000321069 00000 n -0000313568 00000 n -0000321129 00000 n -0000313756 00000 n -0000321189 00000 n -0000313944 00000 n -0000321249 00000 n -0000314132 00000 n -0000321309 00000 n -0000314320 00000 n -0000321369 00000 n -0000314507 00000 n -0000321429 00000 n -0000314695 00000 n -0000321489 00000 n -0000314883 00000 n -0000315071 00000 n -0000315225 00000 n -0000321549 00000 n -0000315413 00000 n -0000315601 00000 n -0000321609 00000 n -0000315754 00000 n -0000315942 00000 n -0000316095 00000 n -0000321669 00000 n -0000316283 00000 n -0000316471 00000 n -0000316625 00000 n -0000321729 00000 n -0000316813 00000 n -0000321789 00000 n -0000317001 00000 n -0000321849 00000 n -0000321909 00000 n -0000317188 00000 n -0000317375 00000 n -0000321969 00000 n -0000317563 00000 n -0000317750 00000 n -0000317938 00000 n -0000318126 00000 n -0000322089 00000 n -0000322149 00000 n -0000318314 00000 n -0000318502 00000 n -0000318690 00000 n -0000318878 00000 n -0000319066 00000 n -0000319254 00000 n -0000319440 00000 n -0000319626 00000 n -0000348261 00000 n -0000332615 00000 n -0000325139 00000 n -0000322335 00000 n -0000332316 00000 n -0000325610 00000 n -0000325798 00000 n -0000325986 00000 n -0000326174 00000 n -0000326362 00000 n -0000326550 00000 n -0000326738 00000 n -0000326926 00000 n -0000327114 00000 n -0000327302 00000 n -0000327488 00000 n -0000327642 00000 n -0000327830 00000 n -0000328017 00000 n -0000328205 00000 n -0000328359 00000 n -0000328546 00000 n -0000328734 00000 n -0000328920 00000 n -0000329108 00000 n -0000329296 00000 n -0000329484 00000 n -0000329672 00000 n -0000329860 00000 n -0000330048 00000 n -0000330236 00000 n -0000332376 00000 n -0000330424 00000 n -0000330611 00000 n -0000330765 00000 n -0000330953 00000 n -0000331107 00000 n -0000332495 00000 n -0000331295 00000 n -0000331449 00000 n -0000332555 00000 n -0000331637 00000 n -0000331791 00000 n -0000331978 00000 n -0000332130 00000 n -0000361148 00000 n -0000356886 00000 n -0000352679 00000 n -0000348386 00000 n -0000361023 00000 n -0000361274 00000 n -0000352929 00000 n -0000348018 00000 n -0000356760 00000 n -0000366399 00000 n -0000370931 00000 n -0000371243 00000 n -0000343925 00000 n -0000335313 00000 n -0000332728 00000 n -0000343145 00000 n -0000343205 00000 n -0000335811 00000 n -0000335997 00000 n -0000343265 00000 n -0000336183 00000 n -0000336370 00000 n -0000343325 00000 n -0000336557 00000 n -0000336745 00000 n -0000343385 00000 n -0000336933 00000 n -0000337121 00000 n -0000337308 00000 n -0000337496 00000 n -0000337684 00000 n -0000337872 00000 n -0000338059 00000 n -0000338247 00000 n -0000343445 00000 n -0000338435 00000 n -0000338589 00000 n -0000338777 00000 n -0000338965 00000 n -0000339153 00000 n -0000343505 00000 n -0000339341 00000 n -0000339528 00000 n -0000339716 00000 n -0000343565 00000 n -0000339903 00000 n -0000340091 00000 n -0000340279 00000 n -0000340467 00000 n -0000340655 00000 n -0000340807 00000 n -0000340993 00000 n -0000341147 00000 n -0000343625 00000 n -0000341335 00000 n -0000341523 00000 n -0000341711 00000 n -0000341865 00000 n -0000342053 00000 n -0000342207 00000 n -0000343685 00000 n -0000342394 00000 n -0000342582 00000 n -0000343745 00000 n -0000343865 00000 n -0000342770 00000 n -0000342957 00000 n -0000348450 00000 n -0000346188 00000 n -0000344051 00000 n -0000347898 00000 n -0000347958 00000 n -0000348078 00000 n -0000346398 00000 n -0000346586 00000 n -0000346774 00000 n -0000348201 00000 n -0000346961 00000 n -0000347149 00000 n -0000348326 00000 n -0000347337 00000 n -0000347524 00000 n -0000347711 00000 n -0001245034 00000 n -0000352993 00000 n -0000350915 00000 n -0000348563 00000 n -0000352559 00000 n -0000352619 00000 n -0000351125 00000 n -0000351279 00000 n -0000351467 00000 n -0000351655 00000 n -0000351843 00000 n -0000351997 00000 n -0000352185 00000 n -0000352744 00000 n -0000352869 00000 n -0000352372 00000 n -0000357075 00000 n -0000355321 00000 n -0000353119 00000 n -0000356640 00000 n -0000356700 00000 n -0000355513 00000 n -0000355701 00000 n -0000355889 00000 n -0000356826 00000 n -0000356077 00000 n -0000356265 00000 n -0000356952 00000 n -0000356452 00000 n -0000361338 00000 n -0000359260 00000 n -0000357201 00000 n -0000360903 00000 n -0000360963 00000 n -0000359470 00000 n -0000361089 00000 n -0000359657 00000 n -0000359811 00000 n -0000359999 00000 n -0000360187 00000 n -0000360375 00000 n -0000360562 00000 n -0000361214 00000 n -0000360716 00000 n -0000366705 00000 n -0000363663 00000 n -0000361464 00000 n -0000366219 00000 n -0000366279 00000 n -0000363918 00000 n -0000364106 00000 n -0000364294 00000 n -0000366339 00000 n -0000366459 00000 n -0000364482 00000 n -0000364669 00000 n -0000366519 00000 n -0000364856 00000 n -0000365043 00000 n -0000365229 00000 n -0000365383 00000 n -0000365537 00000 n -0000365691 00000 n -0000366645 00000 n -0000365843 00000 n -0000366031 00000 n -0000371369 00000 n -0000368514 00000 n -0000366831 00000 n -0000370871 00000 n -0000370997 00000 n -0000368769 00000 n -0000368922 00000 n -0000369075 00000 n -0000371057 00000 n -0000369229 00000 n -0000369383 00000 n -0000369537 00000 n -0000369691 00000 n -0000369845 00000 n -0000369999 00000 n -0000371183 00000 n -0000370153 00000 n -0000370341 00000 n -0000371309 00000 n -0000370529 00000 n -0000370683 00000 n -0000372116 00000 n -0000371930 00000 n -0000371481 00000 n -0000372056 00000 n -0001245159 00000 n -0000378512 00000 n -0000374607 00000 n -0000372202 00000 n -0000377856 00000 n -0000378035 00000 n -0000378095 00000 n -0000374889 00000 n -0000378155 00000 n -0000375042 00000 n -0000375230 00000 n -0000375418 00000 n -0000375606 00000 n -0000375793 00000 n -0000375980 00000 n -0000376167 00000 n -0000376352 00000 n -0000376540 00000 n -0000376728 00000 n -0000376916 00000 n -0000378215 00000 n -0000378275 00000 n -0000377104 00000 n -0000377292 00000 n -0000378335 00000 n -0000378394 00000 n -0000378453 00000 n -0000377480 00000 n -0000377668 00000 n -0000381661 00000 n -0000381787 00000 n -0000381907 00000 n -0000382027 00000 n -0000380483 00000 n -0000378639 00000 n -0000381601 00000 n -0000381727 00000 n -0000380666 00000 n -0000380853 00000 n -0000381041 00000 n -0000381847 00000 n -0000381228 00000 n -0000381967 00000 n -0000381415 00000 n -0000388949 00000 n -0000384494 00000 n -0000382140 00000 n -0000387872 00000 n -0000388051 00000 n -0000388111 00000 n -0000384785 00000 n -0000384938 00000 n -0000388171 00000 n -0000385091 00000 n -0000388231 00000 n -0000388290 00000 n -0000385245 00000 n -0000388349 00000 n -0000385433 00000 n -0000388409 00000 n -0000385621 00000 n -0000388469 00000 n -0000385809 00000 n -0000388529 00000 n -0000385994 00000 n -0000388589 00000 n -0000386182 00000 n -0000388649 00000 n -0000386370 00000 n -0000388709 00000 n -0000386558 00000 n -0000386746 00000 n -0000388769 00000 n -0000386934 00000 n -0000387122 00000 n -0000388829 00000 n -0000388889 00000 n -0000387310 00000 n -0000387498 00000 n -0000387686 00000 n -0000392659 00000 n -0000392904 00000 n -0000391564 00000 n -0000389062 00000 n -0000392421 00000 n -0000391738 00000 n -0000392481 00000 n -0000392540 00000 n -0000391926 00000 n -0000392080 00000 n -0000392599 00000 n -0000392719 00000 n -0000392268 00000 n -0000392844 00000 n -0000394464 00000 n -0000394590 00000 n -0000393943 00000 n -0000393004 00000 n -0000394404 00000 n -0000394099 00000 n -0000394530 00000 n -0000394252 00000 n -0000400012 00000 n -0000396814 00000 n -0000394676 00000 n -0000399174 00000 n -0000399352 00000 n -0000397060 00000 n -0000397214 00000 n -0000399412 00000 n -0000397368 00000 n -0000397519 00000 n -0000399472 00000 n -0000399532 00000 n -0000397672 00000 n -0000399592 00000 n -0000397860 00000 n -0000399652 00000 n -0000398048 00000 n -0000399712 00000 n -0000398236 00000 n -0000399772 00000 n -0000398424 00000 n -0000399832 00000 n -0000398612 00000 n -0000399892 00000 n -0000398799 00000 n -0000399952 00000 n -0000398987 00000 n -0001245284 00000 n -0000404937 00000 n -0000402275 00000 n -0000400112 00000 n -0000404577 00000 n -0000402512 00000 n -0000402700 00000 n -0000402888 00000 n -0000404637 00000 n -0000403075 00000 n -0000403263 00000 n -0000403451 00000 n -0000404697 00000 n -0000403639 00000 n -0000403827 00000 n -0000404757 00000 n -0000404015 00000 n -0000404817 00000 n -0000404877 00000 n -0000404203 00000 n -0000404391 00000 n -0000434483 00000 n -0000423147 00000 n -0000426061 00000 n -0000423273 00000 n -0000428677 00000 n -0000426187 00000 n -0000433926 00000 n -0000410241 00000 n -0000407307 00000 n -0000405037 00000 n -0000410001 00000 n -0000410061 00000 n -0000407562 00000 n -0000410121 00000 n -0000407749 00000 n -0000407937 00000 n -0000408125 00000 n -0000408313 00000 n -0000408501 00000 n -0000408689 00000 n -0000408877 00000 n -0000409065 00000 n -0000409251 00000 n -0000409438 00000 n -0000410181 00000 n -0000409625 00000 n -0000409813 00000 n -0000418706 00000 n -0000423021 00000 n -0000423399 00000 n -0000434052 00000 n -0000428173 00000 n -0000425809 00000 n -0000425935 00000 n -0000428425 00000 n -0000428047 00000 n -0000428551 00000 n -0000418951 00000 n -0000418826 00000 n -0000414757 00000 n -0000412676 00000 n -0000410341 00000 n -0000414517 00000 n -0000414577 00000 n -0000412895 00000 n -0000413083 00000 n -0000413271 00000 n -0000413458 00000 n -0000413646 00000 n -0000413833 00000 n -0000414637 00000 n -0000414021 00000 n -0000414697 00000 n -0000414209 00000 n -0000414363 00000 n -0000419203 00000 n -0000428299 00000 n -0000425684 00000 n -0000419077 00000 n -0000425558 00000 n -0000437772 00000 n -0000422895 00000 n -0000419267 00000 n -0000416738 00000 n -0000414883 00000 n -0000418347 00000 n -0000416948 00000 n -0000417135 00000 n -0000417289 00000 n -0000417477 00000 n -0000417631 00000 n -0000417817 00000 n -0000418466 00000 n -0000418526 00000 n -0000417971 00000 n -0000418586 00000 n -0000418159 00000 n -0000418646 00000 n -0000418766 00000 n -0000418891 00000 n -0000419017 00000 n -0000419143 00000 n -0000434608 00000 n -0000437586 00000 n -0000423525 00000 n -0000421173 00000 n -0000419367 00000 n -0000422775 00000 n -0000422835 00000 n -0000422961 00000 n -0000423087 00000 n -0000421383 00000 n -0000421536 00000 n -0000423213 00000 n -0000421690 00000 n -0000421841 00000 n -0000422027 00000 n -0000422214 00000 n -0000422402 00000 n -0000423339 00000 n -0000422587 00000 n -0000423465 00000 n -0000426251 00000 n -0000425163 00000 n -0000423611 00000 n -0000425498 00000 n -0000425624 00000 n -0000425750 00000 n -0000425310 00000 n -0000425875 00000 n -0000426001 00000 n -0000426127 00000 n -0001245409 00000 n -0000428741 00000 n -0000427801 00000 n -0000426337 00000 n -0000427927 00000 n -0000427987 00000 n -0000428113 00000 n -0000428239 00000 n -0000428365 00000 n -0000428491 00000 n -0000428617 00000 n -0000434672 00000 n -0000430633 00000 n -0000428827 00000 n -0000433806 00000 n -0000433866 00000 n -0000433992 00000 n -0000434117 00000 n -0000434177 00000 n -0000434297 00000 n -0000430933 00000 n -0000431121 00000 n -0000431275 00000 n -0000431429 00000 n -0000431583 00000 n -0000431737 00000 n -0000431891 00000 n -0000432045 00000 n -0000432199 00000 n -0000434423 00000 n -0000432353 00000 n -0000432540 00000 n -0000432694 00000 n -0000432848 00000 n -0000433002 00000 n -0000433156 00000 n -0000433310 00000 n -0000433464 00000 n -0000434548 00000 n -0000433618 00000 n -0000971573 00000 n -0000998429 00000 n -0001008609 00000 n -0001029236 00000 n -0001021623 00000 n -0000437892 00000 n -0000435994 00000 n -0000434758 00000 n -0000437466 00000 n -0000437526 00000 n -0000436204 00000 n -0000436357 00000 n -0000436511 00000 n -0000436665 00000 n -0000436819 00000 n -0000437652 00000 n -0000436973 00000 n -0000437158 00000 n -0000437312 00000 n -0000437712 00000 n -0000437832 00000 n -0001046140 00000 n -0000441127 00000 n -0000440091 00000 n -0000438005 00000 n -0000440588 00000 n -0000440767 00000 n -0000440827 00000 n -0000440247 00000 n -0000440887 00000 n -0000440400 00000 n -0000440947 00000 n -0000441007 00000 n -0000441067 00000 n -0000446810 00000 n -0000443198 00000 n -0000441227 00000 n -0000445973 00000 n -0000446152 00000 n -0000446212 00000 n -0000443462 00000 n -0000443615 00000 n -0000443766 00000 n -0000446272 00000 n -0000446331 00000 n -0000443917 00000 n -0000446390 00000 n -0000444103 00000 n -0000446450 00000 n -0000444290 00000 n -0000446510 00000 n -0000444477 00000 n -0000446570 00000 n -0000444665 00000 n -0000444851 00000 n -0000445038 00000 n -0000445224 00000 n -0000445412 00000 n -0000446630 00000 n -0000446690 00000 n -0000445598 00000 n -0000446750 00000 n -0000445786 00000 n -0000451561 00000 n -0000448918 00000 n -0000446923 00000 n -0000451143 00000 n -0000451203 00000 n -0000451322 00000 n -0000449164 00000 n -0000451381 00000 n -0000449317 00000 n -0000449470 00000 n -0000451441 00000 n -0000449623 00000 n -0000451501 00000 n -0000449777 00000 n -0000449965 00000 n -0000450119 00000 n -0000450307 00000 n -0000450460 00000 n -0000450647 00000 n -0000450801 00000 n -0000450989 00000 n -0001245534 00000 n -0000462222 00000 n -0000459096 00000 n -0000456241 00000 n -0000456365 00000 n -0000456121 00000 n -0000456491 00000 n -0000453780 00000 n -0000451687 00000 n -0000456001 00000 n -0000456061 00000 n -0000456181 00000 n -0000454026 00000 n -0000454180 00000 n -0000454334 00000 n -0000454486 00000 n -0000456306 00000 n -0000454640 00000 n -0000454791 00000 n -0000454979 00000 n -0000455167 00000 n -0000455320 00000 n -0000456431 00000 n -0000455474 00000 n -0000455627 00000 n -0000455814 00000 n -0000459222 00000 n -0000457854 00000 n -0000456604 00000 n -0000459036 00000 n -0000458046 00000 n -0000459162 00000 n -0000458234 00000 n -0000458388 00000 n -0000458576 00000 n -0000458730 00000 n -0000458882 00000 n -0000462886 00000 n -0000460946 00000 n -0000459335 00000 n -0000462162 00000 n -0000462341 00000 n -0000461138 00000 n -0000461292 00000 n -0000461446 00000 n -0000462401 00000 n -0000462461 00000 n -0000461600 00000 n -0000462521 00000 n -0000461788 00000 n -0000461974 00000 n -0000462580 00000 n -0000462640 00000 n -0000462700 00000 n -0000462760 00000 n -0000462826 00000 n -0000468412 00000 n -0000465547 00000 n -0000462986 00000 n -0000467995 00000 n -0000468173 00000 n -0000465802 00000 n -0000465955 00000 n -0000466142 00000 n -0000466328 00000 n -0000468233 00000 n -0000466516 00000 n -0000468292 00000 n -0000466669 00000 n -0000466823 00000 n -0000468352 00000 n -0000466977 00000 n -0000467163 00000 n -0000467315 00000 n -0000467503 00000 n -0000467657 00000 n -0000467843 00000 n -0000477719 00000 n -0000486199 00000 n -0000486450 00000 n -0000490963 00000 n -0000477839 00000 n -0000471354 00000 n -0000468512 00000 n -0000477359 00000 n -0000471789 00000 n -0000471976 00000 n -0000472129 00000 n -0000472316 00000 n -0000472469 00000 n -0000472657 00000 n -0000472811 00000 n -0000472999 00000 n -0000473153 00000 n -0000473340 00000 n -0000473493 00000 n -0000473681 00000 n -0000473835 00000 n -0000474023 00000 n -0000474176 00000 n -0000474363 00000 n -0000474516 00000 n -0000474704 00000 n -0000474858 00000 n -0000475046 00000 n -0000475200 00000 n -0000475384 00000 n -0000477419 00000 n -0000475533 00000 n -0000475721 00000 n -0000475875 00000 n -0000476029 00000 n -0000477479 00000 n -0000477539 00000 n -0000476183 00000 n -0000476371 00000 n -0000476558 00000 n -0000476712 00000 n -0000477599 00000 n -0000476866 00000 n -0000477053 00000 n -0000477659 00000 n -0000477779 00000 n -0000477206 00000 n -0000494550 00000 n -0000486324 00000 n -0000481628 00000 n -0000490711 00000 n -0000490837 00000 n -0000481880 00000 n -0000481754 00000 n -0000482006 00000 n -0000490585 00000 n -0000494676 00000 n -0000482132 00000 n -0000479734 00000 n -0000477952 00000 n -0000481568 00000 n -0000479962 00000 n -0000480116 00000 n -0000481694 00000 n -0000480270 00000 n -0000480424 00000 n -0000480578 00000 n -0000481820 00000 n -0000480732 00000 n -0000481946 00000 n -0000480886 00000 n -0000481040 00000 n -0000482072 00000 n -0000481228 00000 n -0000481382 00000 n -0001245659 00000 n -0000486575 00000 n -0000484436 00000 n -0000482245 00000 n -0000486139 00000 n -0000484655 00000 n -0000484809 00000 n -0000486265 00000 n -0000484963 00000 n -0000485117 00000 n -0000485304 00000 n -0000485491 00000 n -0000486390 00000 n -0000485644 00000 n -0000485798 00000 n -0000486515 00000 n -0000485985 00000 n -0000491027 00000 n -0000488658 00000 n -0000486688 00000 n -0000490525 00000 n -0000488886 00000 n -0000489040 00000 n -0000490651 00000 n -0000489194 00000 n -0000489348 00000 n -0000490777 00000 n -0000489536 00000 n -0000489690 00000 n -0000490903 00000 n -0000489877 00000 n -0000490030 00000 n -0000490217 00000 n -0000490371 00000 n -0000494802 00000 n -0000493119 00000 n -0000491140 00000 n -0000494430 00000 n -0000494490 00000 n -0000493320 00000 n -0000493474 00000 n -0000494616 00000 n -0000493627 00000 n -0000493780 00000 n -0000493934 00000 n -0000494742 00000 n -0000494088 00000 n -0000494242 00000 n -0000495759 00000 n -0000495573 00000 n -0000494928 00000 n -0000495699 00000 n -0000502863 00000 n -0000498394 00000 n -0000495872 00000 n -0000502265 00000 n -0000502325 00000 n -0000502444 00000 n -0000498712 00000 n -0000498900 00000 n -0000499088 00000 n -0000499276 00000 n -0000499464 00000 n -0000502504 00000 n -0000499652 00000 n -0000499805 00000 n -0000502564 00000 n -0000499958 00000 n -0000502624 00000 n -0000502684 00000 n -0000500112 00000 n -0000502744 00000 n -0000500299 00000 n -0000500487 00000 n -0000502803 00000 n -0000500675 00000 n -0000500863 00000 n -0000501017 00000 n -0000501205 00000 n -0000501393 00000 n -0000501547 00000 n -0000501735 00000 n -0000501923 00000 n -0000502077 00000 n -0000507376 00000 n -0000507556 00000 n -0000507676 00000 n -0000510243 00000 n -0000507802 00000 n -0000505092 00000 n -0000502976 00000 n -0000507256 00000 n -0000507316 00000 n -0000507436 00000 n -0000505329 00000 n -0000505517 00000 n -0000505705 00000 n -0000505893 00000 n -0000507496 00000 n -0000507616 00000 n -0000506046 00000 n -0000506200 00000 n -0000506386 00000 n -0000506574 00000 n -0000507742 00000 n -0000506728 00000 n -0000506882 00000 n -0000507070 00000 n -0001245784 00000 n -0000510368 00000 n -0000509166 00000 n -0000507928 00000 n -0000510183 00000 n -0000509349 00000 n -0000510308 00000 n -0000509503 00000 n -0000509657 00000 n -0000509843 00000 n -0000510031 00000 n -0000517832 00000 n -0000513059 00000 n -0000510481 00000 n -0000517058 00000 n -0000517237 00000 n -0000513377 00000 n -0000513565 00000 n -0000513753 00000 n -0000517297 00000 n -0000513941 00000 n -0000514094 00000 n -0000517356 00000 n -0000517415 00000 n -0000514247 00000 n -0000517474 00000 n -0000514435 00000 n -0000517534 00000 n -0000514622 00000 n -0000517594 00000 n -0000514810 00000 n -0000517654 00000 n -0000517713 00000 n -0000514998 00000 n -0000515186 00000 n -0000515372 00000 n -0000515557 00000 n -0000515744 00000 n -0000515931 00000 n -0000516119 00000 n -0000517772 00000 n -0000516307 00000 n -0000516494 00000 n -0000516682 00000 n -0000516870 00000 n -0000522262 00000 n -0000525329 00000 n -0000522016 00000 n -0000521896 00000 n -0000522142 00000 n -0000522387 00000 n -0000519877 00000 n -0000517945 00000 n -0000521776 00000 n -0000521836 00000 n -0000521956 00000 n -0000520105 00000 n -0000520291 00000 n -0000520445 00000 n -0000522082 00000 n -0000520599 00000 n -0000520786 00000 n -0000520940 00000 n -0000522202 00000 n -0000521094 00000 n -0000521281 00000 n -0000521435 00000 n -0000522328 00000 n -0000521589 00000 n -0000525455 00000 n -0000523959 00000 n -0000522500 00000 n -0000525269 00000 n -0000524160 00000 n -0000524347 00000 n -0000524501 00000 n -0000524655 00000 n -0000525395 00000 n -0000524808 00000 n -0000524962 00000 n -0000525116 00000 n -0000532767 00000 n -0000528057 00000 n -0000525568 00000 n -0000531632 00000 n -0000531811 00000 n -0000531871 00000 n -0000528357 00000 n -0000528510 00000 n -0000531931 00000 n -0000528663 00000 n -0000531989 00000 n -0000532049 00000 n -0000528817 00000 n -0000532109 00000 n -0000529005 00000 n -0000532169 00000 n -0000529192 00000 n -0000532229 00000 n -0000529379 00000 n -0000532289 00000 n -0000529567 00000 n -0000532349 00000 n -0000529755 00000 n -0000532409 00000 n -0000529943 00000 n -0000532469 00000 n -0000530131 00000 n -0000532529 00000 n -0000530319 00000 n -0000532588 00000 n -0000530505 00000 n -0000532648 00000 n -0000530693 00000 n -0000532707 00000 n -0000530880 00000 n -0000531068 00000 n -0000531256 00000 n -0000531444 00000 n -0000535644 00000 n -0000535524 00000 n -0000535770 00000 n -0000535896 00000 n -0000534744 00000 n -0000532880 00000 n -0000535404 00000 n -0000535464 00000 n -0000535584 00000 n -0000535710 00000 n -0000534909 00000 n -0000535063 00000 n -0000535836 00000 n -0000535217 00000 n -0001245909 00000 n -0000544822 00000 n -0000538364 00000 n -0000536009 00000 n -0000543203 00000 n -0000543382 00000 n -0000543442 00000 n -0000538727 00000 n -0000538880 00000 n -0000539032 00000 n -0000539184 00000 n -0000543502 00000 n -0000539337 00000 n -0000543562 00000 n -0000543622 00000 n -0000539491 00000 n -0000543682 00000 n -0000539679 00000 n -0000543742 00000 n -0000539866 00000 n -0000543802 00000 n -0000540053 00000 n -0000543862 00000 n -0000540239 00000 n -0000543922 00000 n -0000540427 00000 n -0000543982 00000 n -0000540614 00000 n -0000544042 00000 n -0000540802 00000 n -0000544102 00000 n -0000540990 00000 n -0000544162 00000 n -0000541178 00000 n -0000544222 00000 n -0000541364 00000 n -0000544282 00000 n -0000541552 00000 n -0000544342 00000 n -0000541740 00000 n -0000544402 00000 n -0000541928 00000 n -0000544462 00000 n -0000542113 00000 n -0000544522 00000 n -0000542301 00000 n -0000544582 00000 n -0000542488 00000 n -0000544642 00000 n -0000542676 00000 n -0000544702 00000 n -0000544762 00000 n -0000542864 00000 n -0000543017 00000 n -0000549572 00000 n -0000546868 00000 n -0000544935 00000 n -0000548902 00000 n -0000548962 00000 n -0000549022 00000 n -0000547096 00000 n -0000549082 00000 n -0000547284 00000 n -0000547470 00000 n -0000547656 00000 n -0000549142 00000 n -0000547844 00000 n -0000548032 00000 n -0000548219 00000 n -0000548406 00000 n -0000549202 00000 n -0000549262 00000 n -0000549322 00000 n -0000548594 00000 n -0000549382 00000 n -0000549448 00000 n -0000548748 00000 n -0000549508 00000 n -0000551883 00000 n -0000552009 00000 n -0000552133 00000 n -0000551136 00000 n -0000549699 00000 n -0000551763 00000 n -0000551823 00000 n -0000551301 00000 n -0000551949 00000 n -0000551455 00000 n -0000552074 00000 n -0000551609 00000 n -0000555493 00000 n -0000553460 00000 n -0000552246 00000 n -0000554836 00000 n -0000555015 00000 n -0000553661 00000 n -0000555075 00000 n -0000553815 00000 n -0000553968 00000 n -0000555135 00000 n -0000554120 00000 n -0000555193 00000 n -0000555253 00000 n -0000554273 00000 n -0000555313 00000 n -0000555373 00000 n -0000554460 00000 n -0000555433 00000 n -0000554648 00000 n -0000564257 00000 n -0000557971 00000 n -0000555593 00000 n -0000562882 00000 n -0000563061 00000 n -0000558334 00000 n -0000558520 00000 n -0000558706 00000 n -0000558894 00000 n -0000559081 00000 n -0000559269 00000 n -0000563121 00000 n -0000559455 00000 n -0000559608 00000 n -0000563181 00000 n -0000559761 00000 n -0000563241 00000 n -0000563301 00000 n -0000559915 00000 n -0000563361 00000 n -0000560103 00000 n -0000563421 00000 n -0000560287 00000 n -0000563481 00000 n -0000560475 00000 n -0000563541 00000 n -0000560663 00000 n -0000563600 00000 n -0000560851 00000 n -0000563660 00000 n -0000561039 00000 n -0000563720 00000 n -0000561227 00000 n -0000563780 00000 n -0000561415 00000 n -0000563840 00000 n -0000561603 00000 n -0000563900 00000 n -0000561791 00000 n -0000563959 00000 n -0000561979 00000 n -0000564019 00000 n -0000562167 00000 n -0000564079 00000 n -0000562355 00000 n -0000564139 00000 n -0000564198 00000 n -0000562543 00000 n -0000562696 00000 n -0000574040 00000 n -0000573915 00000 n -0000583119 00000 n -0000570197 00000 n -0000573789 00000 n -0000570317 00000 n -0000566753 00000 n -0000564357 00000 n -0000569838 00000 n -0000569898 00000 n -0000567026 00000 n -0000567214 00000 n -0000567402 00000 n -0000567589 00000 n -0000567775 00000 n -0000567962 00000 n -0000569958 00000 n -0000568150 00000 n -0000568338 00000 n -0000568525 00000 n -0000570018 00000 n -0000568713 00000 n -0000570078 00000 n -0000568900 00000 n -0000569088 00000 n -0000569276 00000 n -0000569464 00000 n -0000569650 00000 n -0000570137 00000 n -0000570257 00000 n -0001246034 00000 n -0000579305 00000 n -0000582868 00000 n -0000574166 00000 n -0000579431 00000 n -0000582994 00000 n -0000574230 00000 n -0000572098 00000 n -0000570430 00000 n -0000573729 00000 n -0000572317 00000 n -0000572470 00000 n -0000573855 00000 n -0000572624 00000 n -0000572776 00000 n -0000573980 00000 n -0000572929 00000 n -0000573082 00000 n -0000574106 00000 n -0000573236 00000 n -0000573424 00000 n -0000573576 00000 n -0000579495 00000 n -0000577021 00000 n -0000574343 00000 n -0000579185 00000 n -0000579245 00000 n -0000577258 00000 n -0000577446 00000 n -0000577599 00000 n -0000579371 00000 n -0000577753 00000 n -0000577941 00000 n -0000578129 00000 n -0000578316 00000 n -0000578504 00000 n -0000578691 00000 n -0000578878 00000 n -0000579031 00000 n -0000583183 00000 n -0000581241 00000 n -0000579608 00000 n -0000582748 00000 n -0000582808 00000 n -0000581451 00000 n -0000581639 00000 n -0000581792 00000 n -0000582934 00000 n -0000581946 00000 n -0000582099 00000 n -0000583059 00000 n -0000582253 00000 n -0000582441 00000 n -0000582594 00000 n -0000584621 00000 n -0000584038 00000 n -0000583282 00000 n -0000584501 00000 n -0000584561 00000 n -0000584194 00000 n -0000584347 00000 n -0000591352 00000 n -0000586870 00000 n -0000584707 00000 n -0000590214 00000 n -0000590393 00000 n -0000590453 00000 n -0000587161 00000 n -0000587313 00000 n -0000587466 00000 n -0000590513 00000 n -0000587619 00000 n -0000590572 00000 n -0000587773 00000 n -0000590632 00000 n -0000587960 00000 n -0000590692 00000 n -0000588148 00000 n -0000590752 00000 n -0000588336 00000 n -0000590812 00000 n -0000588524 00000 n -0000590872 00000 n -0000588712 00000 n -0000590932 00000 n -0000588900 00000 n -0000590992 00000 n -0000589087 00000 n -0000591052 00000 n -0000589275 00000 n -0000591112 00000 n -0000589463 00000 n -0000591172 00000 n -0000591232 00000 n -0000589651 00000 n -0000591292 00000 n -0000589839 00000 n -0000590027 00000 n -0000592778 00000 n -0000592958 00000 n -0000593078 00000 n -0000592532 00000 n -0000591465 00000 n -0000592658 00000 n -0000592718 00000 n -0000592838 00000 n -0000592898 00000 n -0000593018 00000 n -0001246159 00000 n -0000593729 00000 n -0000593543 00000 n -0000593178 00000 n -0000593669 00000 n -0000601284 00000 n -0000595273 00000 n -0000593802 00000 n -0000600148 00000 n -0000600385 00000 n -0000595636 00000 n -0000595790 00000 n -0000600445 00000 n -0000600505 00000 n -0000595943 00000 n -0000596097 00000 n -0000600565 00000 n -0000596284 00000 n -0000600625 00000 n -0000596471 00000 n -0000596625 00000 n -0000600685 00000 n -0000596812 00000 n -0000596966 00000 n -0000600745 00000 n -0000597152 00000 n -0000597340 00000 n -0000600805 00000 n -0000597527 00000 n -0000600865 00000 n -0000597714 00000 n -0000600925 00000 n -0000597900 00000 n -0000598088 00000 n -0000600984 00000 n -0000598275 00000 n -0000598463 00000 n -0000601044 00000 n -0000598650 00000 n -0000598838 00000 n -0000601104 00000 n -0000599025 00000 n -0000599213 00000 n -0000601164 00000 n -0000599400 00000 n -0000599588 00000 n -0000601224 00000 n -0000599775 00000 n -0000599962 00000 n -0000603990 00000 n -0000602297 00000 n -0000601383 00000 n -0000603512 00000 n -0000603690 00000 n -0000602489 00000 n -0000602643 00000 n -0000603750 00000 n -0000603810 00000 n -0000602797 00000 n -0000602951 00000 n -0000603870 00000 n -0000603138 00000 n -0000603930 00000 n -0000603325 00000 n -0000982202 00000 n -0000605699 00000 n -0000604751 00000 n -0000604076 00000 n -0000605281 00000 n -0000605459 00000 n -0000605519 00000 n -0000605579 00000 n -0000604907 00000 n -0000605639 00000 n -0000605094 00000 n -0000610651 00000 n -0000607083 00000 n -0000605798 00000 n -0000609695 00000 n -0000609873 00000 n -0000609933 00000 n -0000609993 00000 n -0000607338 00000 n -0000610053 00000 n -0000607524 00000 n -0000607678 00000 n -0000610113 00000 n -0000607865 00000 n -0000608019 00000 n -0000610172 00000 n -0000608206 00000 n -0000610232 00000 n -0000608391 00000 n -0000610292 00000 n -0000608576 00000 n -0000610352 00000 n -0000608763 00000 n -0000610412 00000 n -0000608950 00000 n -0000610472 00000 n -0000609137 00000 n -0000610532 00000 n -0000609323 00000 n -0000610591 00000 n -0000609510 00000 n -0000613003 00000 n -0000611545 00000 n -0000610750 00000 n -0000612466 00000 n -0000612644 00000 n -0000612704 00000 n -0000612764 00000 n -0000611719 00000 n -0000612824 00000 n -0000611906 00000 n -0000612884 00000 n -0000612093 00000 n -0000612943 00000 n -0000612280 00000 n -0001246284 00000 n -0000618735 00000 n -0000614566 00000 n -0000613102 00000 n -0000617899 00000 n -0000618077 00000 n -0000614857 00000 n -0000618137 00000 n -0000618196 00000 n -0000615010 00000 n -0000615163 00000 n -0000615316 00000 n -0000618255 00000 n -0000615502 00000 n -0000615690 00000 n -0000618315 00000 n -0000615876 00000 n -0000616064 00000 n -0000618375 00000 n -0000616251 00000 n -0000618435 00000 n -0000616438 00000 n -0000616626 00000 n -0000618495 00000 n -0000616813 00000 n -0000617001 00000 n -0000618555 00000 n -0000617188 00000 n -0000617342 00000 n -0000618615 00000 n -0000617528 00000 n -0000618675 00000 n -0000617713 00000 n -0000620695 00000 n -0000619550 00000 n -0000618860 00000 n -0000620277 00000 n -0000620455 00000 n -0000620515 00000 n -0000620575 00000 n -0000619715 00000 n -0000619903 00000 n -0000620635 00000 n -0000620090 00000 n -0000622546 00000 n -0000621494 00000 n -0000620794 00000 n -0000622188 00000 n -0000622366 00000 n -0000621659 00000 n -0000622426 00000 n -0000622486 00000 n -0000621813 00000 n -0000622001 00000 n -0000628080 00000 n -0000623872 00000 n -0000622632 00000 n -0000627243 00000 n -0000627421 00000 n -0000624163 00000 n -0000624317 00000 n -0000624471 00000 n -0000627481 00000 n -0000627541 00000 n -0000624625 00000 n -0000624813 00000 n -0000627601 00000 n -0000625000 00000 n -0000627661 00000 n -0000625187 00000 n -0000627721 00000 n -0000625374 00000 n -0000627781 00000 n -0000625561 00000 n -0000627840 00000 n -0000625748 00000 n -0000625935 00000 n -0000627900 00000 n -0000626119 00000 n -0000626307 00000 n -0000627960 00000 n -0000626494 00000 n -0000626682 00000 n -0000628020 00000 n -0000626869 00000 n -0000627057 00000 n -0000631434 00000 n -0000629238 00000 n -0000628179 00000 n -0000631076 00000 n -0000631254 00000 n -0000629457 00000 n -0000629611 00000 n -0000631314 00000 n -0000631374 00000 n -0000629765 00000 n -0000629952 00000 n -0000630138 00000 n -0000630326 00000 n -0000630514 00000 n -0000630700 00000 n -0000630888 00000 n -0000634446 00000 n -0000632654 00000 n -0000631533 00000 n -0000634030 00000 n -0000634208 00000 n -0000632855 00000 n -0000633042 00000 n -0000633196 00000 n -0000633350 00000 n -0000633504 00000 n -0000634268 00000 n -0000634327 00000 n -0000633658 00000 n -0000634386 00000 n -0000633843 00000 n -0001246409 00000 n -0000642316 00000 n -0000636745 00000 n -0000634558 00000 n -0000641358 00000 n -0000641536 00000 n -0000637090 00000 n -0000641596 00000 n -0000641656 00000 n -0000637244 00000 n -0000637432 00000 n -0000641716 00000 n -0000637618 00000 n -0000637803 00000 n -0000641776 00000 n -0000637987 00000 n -0000638175 00000 n -0000641836 00000 n -0000638362 00000 n -0000638550 00000 n -0000641896 00000 n -0000638737 00000 n -0000638923 00000 n -0000641956 00000 n -0000639108 00000 n -0000639296 00000 n -0000642016 00000 n -0000639483 00000 n -0000639671 00000 n -0000642076 00000 n -0000639858 00000 n -0000640046 00000 n -0000642136 00000 n -0000640233 00000 n -0000640421 00000 n -0000642196 00000 n -0000640608 00000 n -0000640796 00000 n -0000642256 00000 n -0000640983 00000 n -0000641171 00000 n -0000645321 00000 n -0000643347 00000 n -0000642442 00000 n -0000645021 00000 n -0000645081 00000 n -0000643557 00000 n -0000643745 00000 n -0000645141 00000 n -0000643932 00000 n -0000644120 00000 n -0000645201 00000 n -0000644307 00000 n -0000644495 00000 n -0000645261 00000 n -0000644682 00000 n -0000644835 00000 n -0000647037 00000 n -0000646148 00000 n -0000645421 00000 n -0000646679 00000 n -0000646857 00000 n -0000646917 00000 n -0000646977 00000 n -0000646304 00000 n -0000646492 00000 n -0000649685 00000 n -0000647959 00000 n -0000647149 00000 n -0000649208 00000 n -0000649386 00000 n -0000649446 00000 n -0000649506 00000 n -0000648151 00000 n -0000648305 00000 n -0000649566 00000 n -0000648492 00000 n -0000648646 00000 n -0000649626 00000 n -0000648833 00000 n -0000649021 00000 n -0000658442 00000 n -0000651222 00000 n -0000649797 00000 n -0000657245 00000 n -0000657423 00000 n -0000657483 00000 n -0000657543 00000 n -0000651630 00000 n -0000651818 00000 n -0000657603 00000 n -0000652005 00000 n -0000652193 00000 n -0000657663 00000 n -0000652380 00000 n -0000652568 00000 n -0000657723 00000 n -0000652755 00000 n -0000652942 00000 n -0000657783 00000 n -0000653128 00000 n -0000653316 00000 n -0000657843 00000 n -0000653503 00000 n -0000653691 00000 n -0000657903 00000 n -0000653878 00000 n -0000654066 00000 n -0000657963 00000 n -0000654252 00000 n -0000654440 00000 n -0000658023 00000 n -0000654627 00000 n -0000654815 00000 n -0000658083 00000 n -0000655002 00000 n -0000655190 00000 n -0000658142 00000 n -0000655377 00000 n -0000655563 00000 n -0000658202 00000 n -0000655748 00000 n -0000655936 00000 n -0000658262 00000 n -0000656123 00000 n -0000656311 00000 n -0000658322 00000 n -0000656498 00000 n -0000656685 00000 n -0000658382 00000 n -0000656871 00000 n -0000657059 00000 n -0000659990 00000 n -0000659135 00000 n -0000658528 00000 n -0000659632 00000 n -0000659810 00000 n -0000659870 00000 n -0000659930 00000 n -0000659291 00000 n -0000659445 00000 n -0001246534 00000 n -0000668945 00000 n -0000662093 00000 n -0000660076 00000 n -0000668466 00000 n -0000668645 00000 n -0000668705 00000 n -0000668765 00000 n -0000662519 00000 n -0000662706 00000 n -0000662891 00000 n -0000663077 00000 n -0000663262 00000 n -0000663448 00000 n -0000663633 00000 n -0000663820 00000 n -0000664006 00000 n -0000664191 00000 n -0000664375 00000 n -0000664561 00000 n -0000664745 00000 n -0000664932 00000 n -0000665118 00000 n -0000665304 00000 n -0000665489 00000 n -0000665675 00000 n -0000665860 00000 n -0000668825 00000 n -0000666046 00000 n -0000666233 00000 n -0000666418 00000 n -0000666605 00000 n -0000666791 00000 n -0000666978 00000 n -0000667164 00000 n -0000667351 00000 n -0000667537 00000 n -0000668885 00000 n -0000667723 00000 n -0000667910 00000 n -0000668095 00000 n -0000668281 00000 n -0001145426 00000 n -0001145393 00000 n -0001145360 00000 n -0001145327 00000 n -0001145294 00000 n -0001145261 00000 n -0001145228 00000 n -0001145195 00000 n -0001145162 00000 n -0001145129 00000 n -0000675485 00000 n -0000670548 00000 n -0000669071 00000 n -0000675365 00000 n -0000670902 00000 n -0000671089 00000 n -0000671275 00000 n -0000671462 00000 n -0000671648 00000 n -0000671834 00000 n -0000672019 00000 n -0000672206 00000 n -0000672392 00000 n -0000672579 00000 n -0000672765 00000 n -0000672950 00000 n -0000673133 00000 n -0000673320 00000 n -0000673506 00000 n -0000675425 00000 n -0000673692 00000 n -0000673878 00000 n -0000674062 00000 n -0000674249 00000 n -0000674435 00000 n -0000674621 00000 n -0000674806 00000 n -0000674993 00000 n -0000675179 00000 n -0001145096 00000 n -0001145063 00000 n -0001145030 00000 n -0001144997 00000 n -0001144964 00000 n -0000686796 00000 n -0000677312 00000 n -0000675585 00000 n -0000685298 00000 n -0000685477 00000 n -0000685537 00000 n -0000685597 00000 n -0000677810 00000 n -0000677998 00000 n -0000685657 00000 n -0000678185 00000 n -0000678373 00000 n -0000685717 00000 n -0000678560 00000 n -0000678748 00000 n -0000685777 00000 n -0000678935 00000 n -0000679122 00000 n -0000685837 00000 n -0000679308 00000 n -0000679496 00000 n -0000685897 00000 n -0000679683 00000 n -0000679871 00000 n -0000685957 00000 n -0000680058 00000 n -0000680246 00000 n -0000686017 00000 n -0000680432 00000 n -0000680620 00000 n -0000686077 00000 n -0000680807 00000 n -0000680995 00000 n -0000686137 00000 n -0000681182 00000 n -0000681370 00000 n -0000686196 00000 n -0000681557 00000 n -0000681743 00000 n -0000686256 00000 n -0000681928 00000 n -0000682116 00000 n -0000686316 00000 n -0000682303 00000 n -0000682491 00000 n -0000686376 00000 n -0000682678 00000 n -0000682866 00000 n -0000686436 00000 n -0000683053 00000 n -0000683241 00000 n -0000686496 00000 n -0000683428 00000 n -0000683616 00000 n -0000686556 00000 n -0000683803 00000 n -0000683991 00000 n -0000686616 00000 n -0000684178 00000 n -0000684364 00000 n -0000686676 00000 n -0000684548 00000 n -0000684736 00000 n -0000686736 00000 n -0000684923 00000 n -0000685111 00000 n -0000691264 00000 n -0000688237 00000 n -0000686882 00000 n -0000690665 00000 n -0000690844 00000 n -0000688483 00000 n -0000688637 00000 n -0000690904 00000 n -0000690964 00000 n -0000688791 00000 n -0000688979 00000 n -0000691024 00000 n -0000689165 00000 n -0000689353 00000 n -0000691084 00000 n -0000689540 00000 n -0000689728 00000 n -0000691144 00000 n -0000689915 00000 n -0000690103 00000 n -0000691204 00000 n -0000690290 00000 n -0000690478 00000 n -0000699536 00000 n -0000692765 00000 n -0000691390 00000 n -0000698398 00000 n -0000698577 00000 n -0000698637 00000 n -0000698697 00000 n -0000693155 00000 n -0000693343 00000 n -0000698757 00000 n -0000693530 00000 n -0000693718 00000 n -0000698817 00000 n -0000693905 00000 n -0000694093 00000 n -0000698877 00000 n -0000694280 00000 n -0000694467 00000 n -0000698937 00000 n -0000694653 00000 n -0000694841 00000 n -0000698997 00000 n -0000695028 00000 n -0000695216 00000 n -0000699057 00000 n -0000695403 00000 n -0000695591 00000 n -0000699117 00000 n -0000695777 00000 n -0000695965 00000 n -0000699177 00000 n -0000696152 00000 n -0000696340 00000 n -0000699237 00000 n -0000696527 00000 n -0000696715 00000 n -0000699296 00000 n -0000696902 00000 n -0000697088 00000 n -0000699356 00000 n -0000697273 00000 n -0000697461 00000 n -0000699416 00000 n -0000697648 00000 n -0000697836 00000 n -0000699476 00000 n -0000698023 00000 n -0000698211 00000 n -0000705952 00000 n -0000701003 00000 n -0000699622 00000 n -0000704996 00000 n -0000705175 00000 n -0000701321 00000 n -0000701474 00000 n -0000705235 00000 n -0000705295 00000 n -0000701628 00000 n -0000701816 00000 n -0000705355 00000 n -0000702003 00000 n -0000702190 00000 n -0000705415 00000 n -0000702376 00000 n -0000702564 00000 n -0000705475 00000 n -0000702751 00000 n -0000702939 00000 n -0000705535 00000 n -0000703125 00000 n -0000705594 00000 n -0000703312 00000 n -0000705654 00000 n -0000703497 00000 n -0000703685 00000 n -0000705712 00000 n -0000703872 00000 n -0000704060 00000 n -0000705772 00000 n -0000704247 00000 n -0000705832 00000 n -0000704434 00000 n -0000704622 00000 n -0000705892 00000 n -0000704809 00000 n -0001246659 00000 n -0000706598 00000 n -0000706412 00000 n -0000706038 00000 n -0000706538 00000 n -0000708819 00000 n -0000707588 00000 n -0000706671 00000 n -0000708462 00000 n -0000708700 00000 n -0000707762 00000 n -0000707933 00000 n -0000708760 00000 n -0000708087 00000 n -0000708274 00000 n -0001144931 00000 n -0000711783 00000 n -0000710131 00000 n -0000708931 00000 n -0000711364 00000 n -0000711543 00000 n -0000710323 00000 n -0000710494 00000 n -0000711603 00000 n -0000710648 00000 n -0000711663 00000 n -0000710802 00000 n -0000711723 00000 n -0000710989 00000 n -0000711176 00000 n -0001144898 00000 n -0000721355 00000 n -0000714657 00000 n -0000711895 00000 n -0000720037 00000 n -0000720216 00000 n -0000715038 00000 n -0000715214 00000 n -0000720276 00000 n -0000715367 00000 n -0000715554 00000 n -0000720336 00000 n -0000715742 00000 n -0000720396 00000 n -0000715929 00000 n -0000720456 00000 n -0000716115 00000 n -0000720516 00000 n -0000716299 00000 n -0000720576 00000 n -0000716486 00000 n -0000720636 00000 n -0000716672 00000 n -0000720696 00000 n -0000716859 00000 n -0000720756 00000 n -0000717046 00000 n -0000720816 00000 n -0000717233 00000 n -0000720876 00000 n -0000717420 00000 n -0000720936 00000 n -0000717606 00000 n -0000720996 00000 n -0000717791 00000 n -0000721055 00000 n -0000717978 00000 n -0000721115 00000 n -0000718165 00000 n -0000721175 00000 n -0000718351 00000 n -0000721235 00000 n -0000718538 00000 n -0000718725 00000 n -0000721295 00000 n -0000718913 00000 n -0000719101 00000 n -0000719289 00000 n -0000719477 00000 n -0000719665 00000 n -0000719851 00000 n -0001144865 00000 n -0000723099 00000 n -0000722312 00000 n -0000721494 00000 n -0000723039 00000 n -0000722477 00000 n -0000722664 00000 n -0000722851 00000 n -0000728271 00000 n -0000725502 00000 n -0000723212 00000 n -0000727852 00000 n -0000728031 00000 n -0000725748 00000 n -0000725924 00000 n -0000728091 00000 n -0000726077 00000 n -0000726231 00000 n -0000726385 00000 n -0000726573 00000 n -0000728151 00000 n -0000726727 00000 n -0000728211 00000 n -0000726915 00000 n -0000727103 00000 n -0000727291 00000 n -0000727478 00000 n -0000727665 00000 n -0001246784 00000 n -0001144832 00000 n -0000730839 00000 n -0000729460 00000 n -0000728410 00000 n -0000730779 00000 n -0000729652 00000 n -0000729840 00000 n -0000730028 00000 n -0000730216 00000 n -0000730404 00000 n -0000730592 00000 n -0000736019 00000 n -0000732815 00000 n -0000730952 00000 n -0000735660 00000 n -0000735839 00000 n -0000733079 00000 n -0000733254 00000 n -0000735899 00000 n -0000733408 00000 n -0000733596 00000 n -0000733783 00000 n -0000733971 00000 n -0000734159 00000 n -0000734347 00000 n -0000734534 00000 n -0000735959 00000 n -0000734722 00000 n -0000734910 00000 n -0000735097 00000 n -0000735285 00000 n -0000735473 00000 n -0001144799 00000 n -0000740901 00000 n -0000738397 00000 n -0000736158 00000 n -0000740483 00000 n -0000740662 00000 n -0000738634 00000 n -0000738810 00000 n -0000740722 00000 n -0000738964 00000 n -0000740782 00000 n -0000739118 00000 n -0000739272 00000 n -0000739426 00000 n -0000739611 00000 n -0000739765 00000 n -0000739953 00000 n -0000740841 00000 n -0000740107 00000 n -0000740295 00000 n -0001144766 00000 n -0000742646 00000 n -0000741798 00000 n -0000741027 00000 n -0000742526 00000 n -0000742586 00000 n -0000741963 00000 n -0000742151 00000 n -0000742338 00000 n -0000745708 00000 n -0000744081 00000 n -0000742746 00000 n -0000745349 00000 n -0000745528 00000 n -0000744273 00000 n -0000744444 00000 n -0000745588 00000 n -0000744598 00000 n -0000745648 00000 n -0000744786 00000 n -0000744973 00000 n -0000745161 00000 n -0001144733 00000 n -0000749270 00000 n -0000747313 00000 n -0000745847 00000 n -0000748972 00000 n -0000749151 00000 n -0000747523 00000 n -0000747694 00000 n -0000749211 00000 n -0000747848 00000 n -0000748034 00000 n -0000748222 00000 n -0000748410 00000 n -0000748598 00000 n -0000748786 00000 n -0001246909 00000 n -0001144700 00000 n -0000756290 00000 n -0000751717 00000 n -0000749409 00000 n -0000755931 00000 n -0000756110 00000 n -0000752044 00000 n -0000752216 00000 n -0000756170 00000 n -0000752369 00000 n -0000752557 00000 n -0000752744 00000 n -0000752932 00000 n -0000753120 00000 n -0000753307 00000 n -0000753495 00000 n -0000753682 00000 n -0000753870 00000 n -0000754057 00000 n -0000754245 00000 n -0000754431 00000 n -0000754618 00000 n -0000754806 00000 n -0000756230 00000 n -0000754994 00000 n -0000755182 00000 n -0000755368 00000 n -0000755555 00000 n -0000755743 00000 n -0001144667 00000 n -0000760014 00000 n -0000757745 00000 n -0000756429 00000 n -0000759535 00000 n -0000759714 00000 n -0000757964 00000 n -0000758136 00000 n -0000759774 00000 n -0000758290 00000 n -0000759834 00000 n -0000758444 00000 n -0000758631 00000 n -0000758819 00000 n -0000759894 00000 n -0000759006 00000 n -0000759160 00000 n -0000759954 00000 n -0000759347 00000 n -0001144634 00000 n -0000766630 00000 n -0000762441 00000 n -0000760126 00000 n -0000766271 00000 n -0000766450 00000 n -0000762750 00000 n -0000762926 00000 n -0000766510 00000 n -0000763080 00000 n -0000763268 00000 n -0000763455 00000 n -0000763642 00000 n -0000763830 00000 n -0000764018 00000 n -0000764206 00000 n -0000764394 00000 n -0000764582 00000 n -0000764770 00000 n -0000764958 00000 n -0000765146 00000 n -0000766570 00000 n -0000765334 00000 n -0000765522 00000 n -0000765710 00000 n -0000765897 00000 n -0000766083 00000 n -0001144601 00000 n -0000768668 00000 n -0000767684 00000 n -0000766769 00000 n -0000768608 00000 n -0000767858 00000 n -0000768045 00000 n -0000768232 00000 n -0000768420 00000 n -0000774196 00000 n -0000770943 00000 n -0000768781 00000 n -0000773717 00000 n -0000773896 00000 n -0000771207 00000 n -0000771383 00000 n -0000773956 00000 n -0000771537 00000 n -0000774016 00000 n -0000771690 00000 n -0000771878 00000 n -0000774076 00000 n -0000772064 00000 n -0000772218 00000 n -0000774136 00000 n -0000772405 00000 n -0000772593 00000 n -0000772781 00000 n -0000772969 00000 n -0000773155 00000 n -0000773342 00000 n -0000773530 00000 n -0001144568 00000 n -0000777506 00000 n -0000775734 00000 n -0000774335 00000 n -0000777446 00000 n -0000775944 00000 n -0000776131 00000 n -0000776319 00000 n -0000776507 00000 n -0000776695 00000 n -0000776883 00000 n -0000777071 00000 n -0000777258 00000 n -0001247034 00000 n -0000779600 00000 n -0000778623 00000 n -0000777619 00000 n -0000779301 00000 n -0000779480 00000 n -0000778788 00000 n -0000778959 00000 n -0000779540 00000 n -0000779113 00000 n -0001144535 00000 n -0000782368 00000 n -0000780913 00000 n -0000779725 00000 n -0000781950 00000 n -0000782129 00000 n -0000781096 00000 n -0000781267 00000 n -0000782189 00000 n -0000781421 00000 n -0000782249 00000 n -0000781575 00000 n -0000782309 00000 n -0000781763 00000 n -0001144502 00000 n -0000787218 00000 n -0000784215 00000 n -0000782507 00000 n -0000786860 00000 n -0000787039 00000 n -0000784470 00000 n -0000784642 00000 n -0000787099 00000 n -0000784796 00000 n -0000784983 00000 n -0000785171 00000 n -0000785359 00000 n -0000785547 00000 n -0000785735 00000 n -0000785922 00000 n -0000786110 00000 n -0000786297 00000 n -0000787158 00000 n -0000786485 00000 n -0000786673 00000 n -0001144469 00000 n -0000791313 00000 n -0000788865 00000 n -0000787344 00000 n -0000791014 00000 n -0000791193 00000 n -0000789102 00000 n -0000789273 00000 n -0000791253 00000 n -0000789426 00000 n -0000789614 00000 n -0000789768 00000 n -0000789956 00000 n -0000790144 00000 n -0000790298 00000 n -0000790486 00000 n -0000790674 00000 n -0000790828 00000 n -0001144436 00000 n -0000796587 00000 n -0000793266 00000 n -0000791452 00000 n -0000796169 00000 n -0000796348 00000 n -0000793539 00000 n -0000793710 00000 n -0000796408 00000 n -0000793863 00000 n -0000796467 00000 n -0000794016 00000 n -0000794204 00000 n -0000794391 00000 n -0000796527 00000 n -0000794579 00000 n -0000794767 00000 n -0000794921 00000 n -0000795109 00000 n -0000795297 00000 n -0000795451 00000 n -0000795639 00000 n -0000795827 00000 n -0000795981 00000 n -0001144403 00000 n -0000800369 00000 n -0000798331 00000 n -0000796726 00000 n -0000800010 00000 n -0000800189 00000 n -0000798541 00000 n -0000798712 00000 n -0000798920 00000 n -0000800249 00000 n -0000799074 00000 n -0000799261 00000 n -0000799448 00000 n -0000799636 00000 n -0000800309 00000 n -0000799822 00000 n -0001247159 00000 n -0001144370 00000 n -0000804387 00000 n -0000802153 00000 n -0000800494 00000 n -0000804028 00000 n -0000804207 00000 n -0000802372 00000 n -0000802543 00000 n -0000802753 00000 n -0000804267 00000 n -0000802907 00000 n -0000803094 00000 n -0000803280 00000 n -0000803467 00000 n -0000803655 00000 n -0000804327 00000 n -0000803840 00000 n -0001144337 00000 n -0000805951 00000 n -0000805230 00000 n -0000804512 00000 n -0000805712 00000 n -0000805891 00000 n -0000805386 00000 n -0000805558 00000 n -0001144304 00000 n -0000812799 00000 n -0000808402 00000 n -0000806063 00000 n -0000812442 00000 n -0000812621 00000 n -0000808738 00000 n -0000808910 00000 n -0000812679 00000 n -0000809064 00000 n -0000809218 00000 n -0000812739 00000 n -0000809372 00000 n -0000809560 00000 n -0000809714 00000 n -0000809901 00000 n -0000810054 00000 n -0000810241 00000 n -0000810394 00000 n -0000810581 00000 n -0000810734 00000 n -0000810921 00000 n -0000811074 00000 n -0000811262 00000 n -0000811416 00000 n -0000811604 00000 n -0000811758 00000 n -0000811946 00000 n -0000812100 00000 n -0000812288 00000 n -0001144271 00000 n -0000818487 00000 n -0000814666 00000 n -0000812925 00000 n -0000818367 00000 n -0000814984 00000 n -0000815172 00000 n -0000815325 00000 n -0000815513 00000 n -0000815667 00000 n -0000815855 00000 n -0000816009 00000 n -0000816197 00000 n -0000816351 00000 n -0000816539 00000 n -0000816692 00000 n -0000816880 00000 n -0000817034 00000 n -0000817188 00000 n -0000818427 00000 n -0000817342 00000 n -0000817530 00000 n -0000817717 00000 n -0000817871 00000 n -0000818025 00000 n -0000818213 00000 n -0000823484 00000 n -0000820376 00000 n -0000818600 00000 n -0000823005 00000 n -0000823184 00000 n -0000820640 00000 n -0000820812 00000 n -0000823244 00000 n -0000820966 00000 n -0000823304 00000 n -0000821120 00000 n -0000821308 00000 n -0000823364 00000 n -0000821462 00000 n -0000821650 00000 n -0000821838 00000 n -0000821991 00000 n -0000822178 00000 n -0000823424 00000 n -0000822331 00000 n -0000822518 00000 n -0000822671 00000 n -0000822855 00000 n -0001144238 00000 n -0000829047 00000 n -0000825411 00000 n -0000823610 00000 n -0000828688 00000 n -0000828748 00000 n -0000825702 00000 n -0000825890 00000 n -0000826044 00000 n -0000826231 00000 n -0000828808 00000 n -0000826384 00000 n -0000826572 00000 n -0000826726 00000 n -0000826914 00000 n -0000828867 00000 n -0000827068 00000 n -0000828927 00000 n -0000827256 00000 n -0000827444 00000 n -0000827598 00000 n -0000827785 00000 n -0000828987 00000 n -0000827938 00000 n -0000828126 00000 n -0000828313 00000 n -0000828501 00000 n -0001247284 00000 n -0000832875 00000 n -0000830657 00000 n -0000829147 00000 n -0000832576 00000 n -0000832755 00000 n -0000830885 00000 n -0000831056 00000 n -0000832815 00000 n -0000831210 00000 n -0000831398 00000 n -0000831552 00000 n -0000831740 00000 n -0000831893 00000 n -0000832080 00000 n -0000832234 00000 n -0000832422 00000 n -0001144205 00000 n -0000837054 00000 n -0000834616 00000 n -0000833014 00000 n -0000836695 00000 n -0000836874 00000 n -0000834853 00000 n -0000835024 00000 n -0000836934 00000 n -0000835178 00000 n -0000836994 00000 n -0000835331 00000 n -0000835519 00000 n -0000835673 00000 n -0000835861 00000 n -0000836014 00000 n -0000836200 00000 n -0000836353 00000 n -0000836541 00000 n -0001144172 00000 n -0000842363 00000 n -0000838821 00000 n -0000837193 00000 n -0000841584 00000 n -0000841763 00000 n -0000839085 00000 n -0000839256 00000 n -0000841823 00000 n -0000841883 00000 n -0000839410 00000 n -0000841943 00000 n -0000839597 00000 n -0000842003 00000 n -0000842063 00000 n -0000839784 00000 n -0000842123 00000 n -0000839971 00000 n -0000842183 00000 n -0000840158 00000 n -0000840345 00000 n -0000840533 00000 n -0000842243 00000 n -0000840686 00000 n -0000840873 00000 n -0000842303 00000 n -0000841061 00000 n -0000841213 00000 n -0000841398 00000 n -0001144139 00000 n -0000847170 00000 n -0000843974 00000 n -0000842488 00000 n -0000846511 00000 n -0000846690 00000 n -0000844229 00000 n -0000844400 00000 n -0000846750 00000 n -0000844554 00000 n -0000846810 00000 n -0000846870 00000 n -0000844708 00000 n -0000846930 00000 n -0000844895 00000 n -0000845081 00000 n -0000845268 00000 n -0000846990 00000 n -0000845420 00000 n -0000845607 00000 n -0000847050 00000 n -0000845795 00000 n -0000845949 00000 n -0000846136 00000 n -0000847110 00000 n -0000846324 00000 n -0001144106 00000 n -0000849252 00000 n -0000848278 00000 n -0000847295 00000 n -0000848954 00000 n -0000849133 00000 n -0000848443 00000 n -0000848614 00000 n -0000849193 00000 n -0000848768 00000 n -0001144073 00000 n -0000859732 00000 n -0000852338 00000 n -0000849378 00000 n -0000859373 00000 n -0000859552 00000 n -0000852800 00000 n -0000852975 00000 n -0000859612 00000 n -0000859672 00000 n -0000853129 00000 n -0000853316 00000 n -0000853504 00000 n -0000853692 00000 n -0000853879 00000 n -0000854066 00000 n -0000854254 00000 n -0000854441 00000 n -0000854629 00000 n -0000854817 00000 n -0000855005 00000 n -0000855191 00000 n -0000855379 00000 n -0000855567 00000 n -0000855755 00000 n -0000855943 00000 n -0000856130 00000 n -0000856318 00000 n -0000856506 00000 n -0000856694 00000 n -0000856882 00000 n -0000857070 00000 n -0000857258 00000 n -0000857412 00000 n -0000857600 00000 n -0000857787 00000 n -0000857939 00000 n -0000858127 00000 n -0000858280 00000 n -0000858468 00000 n -0000858656 00000 n -0000858810 00000 n -0000858998 00000 n -0000859186 00000 n -0001247409 00000 n -0001144040 00000 n -0000871562 00000 n -0000862895 00000 n -0000859857 00000 n -0000871382 00000 n -0000871442 00000 n -0000863420 00000 n -0000863608 00000 n -0000863796 00000 n -0000863984 00000 n -0000864172 00000 n -0000864360 00000 n -0000864548 00000 n -0000864736 00000 n -0000864924 00000 n -0000865110 00000 n -0000865298 00000 n -0000865486 00000 n -0000865673 00000 n -0000865860 00000 n -0000866048 00000 n -0000866202 00000 n -0000866390 00000 n -0000866577 00000 n -0000866765 00000 n -0000866919 00000 n -0000867106 00000 n -0000867294 00000 n -0000867480 00000 n -0000867668 00000 n -0000867856 00000 n -0000868042 00000 n -0000868228 00000 n -0000868416 00000 n -0000868604 00000 n -0000868791 00000 n -0000868978 00000 n -0000869165 00000 n -0000871502 00000 n -0000869353 00000 n -0000869541 00000 n -0000869729 00000 n -0000869917 00000 n -0000870104 00000 n -0000870291 00000 n -0000870478 00000 n -0000870632 00000 n -0000870820 00000 n -0000871008 00000 n -0000871196 00000 n -0000876957 00000 n -0000873160 00000 n -0000871675 00000 n -0000876897 00000 n -0000873469 00000 n -0000873657 00000 n -0000873844 00000 n -0000874030 00000 n -0000874218 00000 n -0000874406 00000 n -0000874594 00000 n -0000874782 00000 n -0000874936 00000 n -0000875124 00000 n -0000875278 00000 n -0000875466 00000 n -0000875654 00000 n -0000875842 00000 n -0000875996 00000 n -0000876184 00000 n -0000876338 00000 n -0000876525 00000 n -0000876711 00000 n -0000882116 00000 n -0000879146 00000 n -0000877070 00000 n -0000881757 00000 n -0000881936 00000 n -0000879410 00000 n -0000879586 00000 n -0000881996 00000 n -0000879740 00000 n -0000879894 00000 n -0000880048 00000 n -0000880202 00000 n -0000880356 00000 n -0000880510 00000 n -0000880664 00000 n -0000882056 00000 n -0000880818 00000 n -0000881006 00000 n -0000881193 00000 n -0000881381 00000 n -0000881569 00000 n -0001144007 00000 n -0000889059 00000 n -0000884735 00000 n -0000882242 00000 n -0000888999 00000 n -0000885062 00000 n -0000885250 00000 n -0000885438 00000 n -0000885625 00000 n -0000885813 00000 n -0000886001 00000 n -0000886189 00000 n -0000886377 00000 n -0000886565 00000 n -0000886752 00000 n -0000886939 00000 n -0000887127 00000 n -0000887315 00000 n -0000887503 00000 n -0000887691 00000 n -0000887878 00000 n -0000888066 00000 n -0000888254 00000 n -0000888440 00000 n -0000888625 00000 n -0000888813 00000 n -0000894940 00000 n -0000891399 00000 n -0000889172 00000 n -0000894880 00000 n -0000891690 00000 n -0000891878 00000 n -0000892065 00000 n -0000892253 00000 n -0000892441 00000 n -0000892629 00000 n -0000892815 00000 n -0000893003 00000 n -0000893191 00000 n -0000893379 00000 n -0000893567 00000 n -0000893755 00000 n -0000893943 00000 n -0000894131 00000 n -0000894319 00000 n -0000894507 00000 n -0000894694 00000 n -0000905215 00000 n -0000898128 00000 n -0000895040 00000 n -0000905155 00000 n -0000898581 00000 n -0000898769 00000 n -0000898957 00000 n -0000899145 00000 n -0000899333 00000 n -0000899521 00000 n -0000899709 00000 n -0000899897 00000 n -0000900085 00000 n -0000900273 00000 n -0000900461 00000 n -0000900649 00000 n -0000900837 00000 n -0000901025 00000 n -0000901212 00000 n -0000901399 00000 n -0000901587 00000 n -0000901775 00000 n -0000901963 00000 n -0000902150 00000 n -0000902338 00000 n -0000902526 00000 n -0000902714 00000 n -0000902902 00000 n -0000903090 00000 n -0000903278 00000 n -0000903466 00000 n -0000903654 00000 n -0000903842 00000 n -0000904029 00000 n -0000904216 00000 n -0000904404 00000 n -0000904592 00000 n -0000904780 00000 n -0000904968 00000 n -0001247534 00000 n -0000916718 00000 n -0000908411 00000 n -0000905315 00000 n -0000916539 00000 n -0000908918 00000 n -0000909106 00000 n -0000909294 00000 n -0000909479 00000 n -0000909667 00000 n -0000909855 00000 n -0000910043 00000 n -0000910229 00000 n -0000916599 00000 n -0000910416 00000 n -0000910602 00000 n -0000910789 00000 n -0000910976 00000 n -0000911164 00000 n -0000911352 00000 n -0000916659 00000 n -0000911540 00000 n -0000911728 00000 n -0000911916 00000 n -0000912104 00000 n -0000912292 00000 n -0000912480 00000 n -0000912668 00000 n -0000912856 00000 n -0000913010 00000 n -0000913198 00000 n -0000913385 00000 n -0000913573 00000 n -0000913760 00000 n -0000913914 00000 n -0000914101 00000 n -0000914289 00000 n -0000914475 00000 n -0000914663 00000 n -0000914851 00000 n -0000915039 00000 n -0000915227 00000 n -0000915415 00000 n -0000915603 00000 n -0000915791 00000 n -0000915979 00000 n -0000916165 00000 n -0000916352 00000 n -0000924609 00000 n -0000918814 00000 n -0000916831 00000 n -0000924490 00000 n -0000919213 00000 n -0000919401 00000 n -0000919589 00000 n -0000919777 00000 n -0000924550 00000 n -0000919965 00000 n -0000920152 00000 n -0000920339 00000 n -0000920527 00000 n -0000920715 00000 n -0000920902 00000 n -0000921056 00000 n -0000921244 00000 n -0000921398 00000 n -0000921586 00000 n -0000921774 00000 n -0000921962 00000 n -0000922116 00000 n -0000922304 00000 n -0000922458 00000 n -0000922645 00000 n -0000922799 00000 n -0000922987 00000 n -0000923175 00000 n -0000923363 00000 n -0000923551 00000 n -0000923739 00000 n -0000923927 00000 n -0000924115 00000 n -0000924303 00000 n -0000929222 00000 n -0000926275 00000 n -0000924722 00000 n -0000928923 00000 n -0000929102 00000 n -0000926530 00000 n -0000926705 00000 n -0000929162 00000 n -0000926859 00000 n -0000927047 00000 n -0000927235 00000 n -0000927423 00000 n -0000927611 00000 n -0000927799 00000 n -0000927987 00000 n -0000928173 00000 n -0000928360 00000 n -0000928547 00000 n -0000928735 00000 n -0001143974 00000 n -0000934249 00000 n -0000931241 00000 n -0000929361 00000 n -0000933890 00000 n -0000934069 00000 n -0000931496 00000 n -0000931671 00000 n -0000934129 00000 n -0000931825 00000 n -0000932013 00000 n -0000932201 00000 n -0000932389 00000 n -0000932576 00000 n -0000932763 00000 n -0000932951 00000 n -0000934189 00000 n -0000933139 00000 n -0000933327 00000 n -0000933514 00000 n -0000933702 00000 n -0001143941 00000 n -0000939640 00000 n -0000936382 00000 n -0000934388 00000 n -0000939161 00000 n -0000939340 00000 n -0000936646 00000 n -0000936822 00000 n -0000939400 00000 n -0000936976 00000 n -0000939460 00000 n -0000937129 00000 n -0000937317 00000 n -0000937505 00000 n -0000937692 00000 n -0000937879 00000 n -0000939520 00000 n -0000938067 00000 n -0000938255 00000 n -0000938443 00000 n -0000938631 00000 n -0000939580 00000 n -0000938819 00000 n -0000938973 00000 n -0001143908 00000 n -0000943949 00000 n -0000941922 00000 n -0000939766 00000 n -0000943590 00000 n -0000943769 00000 n -0000942132 00000 n -0000942308 00000 n -0000943829 00000 n -0000942462 00000 n -0000942650 00000 n -0000942838 00000 n -0000943889 00000 n -0000943026 00000 n -0000943214 00000 n -0000943402 00000 n -0001247659 00000 n -0001143875 00000 n -0000949125 00000 n -0000946253 00000 n -0000944075 00000 n -0000948945 00000 n -0000949005 00000 n -0000946508 00000 n -0000946695 00000 n -0000946882 00000 n -0000949065 00000 n -0000947069 00000 n -0000947256 00000 n -0000947444 00000 n -0000947632 00000 n -0000947820 00000 n -0000948008 00000 n -0000948195 00000 n -0000948383 00000 n -0000948570 00000 n -0000948757 00000 n -0000953857 00000 n -0000951258 00000 n -0000949225 00000 n -0000953559 00000 n -0000953619 00000 n -0000951495 00000 n -0000951683 00000 n -0000953679 00000 n -0000951871 00000 n -0000952059 00000 n -0000952247 00000 n -0000952434 00000 n -0000952622 00000 n -0000952810 00000 n -0000953738 00000 n -0000952997 00000 n -0000953798 00000 n -0000953184 00000 n -0000953371 00000 n -0000959076 00000 n -0000956133 00000 n -0000953970 00000 n -0000958777 00000 n -0000958956 00000 n -0000956388 00000 n -0000956560 00000 n -0000959016 00000 n -0000956714 00000 n -0000956901 00000 n -0000957089 00000 n -0000957277 00000 n -0000957464 00000 n -0000957652 00000 n -0000957839 00000 n -0000958027 00000 n -0000958215 00000 n -0000958403 00000 n -0000958591 00000 n -0001143842 00000 n -0000961219 00000 n -0000960855 00000 n -0000959202 00000 n -0000960981 00000 n -0000962850 00000 n -0000962664 00000 n -0000961305 00000 n -0000962790 00000 n -0000964556 00000 n -0000964370 00000 n -0000962936 00000 n -0000964496 00000 n -0001247784 00000 n -0000966194 00000 n -0000966008 00000 n -0000964642 00000 n -0000966134 00000 n -0000967886 00000 n -0000967700 00000 n -0000966280 00000 n -0000967826 00000 n -0000969209 00000 n -0000969023 00000 n -0000967972 00000 n -0000969149 00000 n -0000971692 00000 n -0000971387 00000 n -0000969295 00000 n -0000971513 00000 n -0000972414 00000 n -0000972228 00000 n -0000971778 00000 n -0000972354 00000 n -0000974136 00000 n -0000973831 00000 n -0000972500 00000 n -0000973957 00000 n -0001247909 00000 n -0000975279 00000 n -0000975093 00000 n -0000974222 00000 n -0000975219 00000 n -0000976945 00000 n -0000976640 00000 n -0000975365 00000 n -0000976766 00000 n -0000979103 00000 n -0000978798 00000 n -0000977031 00000 n -0000978924 00000 n -0000980492 00000 n -0000980306 00000 n -0000979189 00000 n -0000980432 00000 n -0000982321 00000 n -0000982016 00000 n -0000980578 00000 n -0000982142 00000 n -0000984791 00000 n -0000984486 00000 n -0000982407 00000 n -0000984612 00000 n -0001248034 00000 n -0000986506 00000 n -0000986320 00000 n -0000984877 00000 n -0000986446 00000 n -0000988451 00000 n -0000988265 00000 n -0000986592 00000 n -0000988391 00000 n -0000990511 00000 n -0000990325 00000 n -0000988537 00000 n -0000990451 00000 n -0000992619 00000 n -0000992433 00000 n -0000990597 00000 n -0000992559 00000 n -0000994371 00000 n -0000994185 00000 n -0000992705 00000 n -0000994311 00000 n -0000995987 00000 n -0000995801 00000 n -0000994457 00000 n -0000995927 00000 n -0001248159 00000 n -0000998548 00000 n -0000998243 00000 n -0000996073 00000 n -0000998369 00000 n -0000999473 00000 n -0000999287 00000 n -0000998634 00000 n -0000999413 00000 n -0001001969 00000 n -0001001664 00000 n -0000999559 00000 n -0001001790 00000 n -0001003303 00000 n -0001003117 00000 n -0001002055 00000 n -0001003243 00000 n -0001004638 00000 n -0001004452 00000 n -0001003389 00000 n -0001004578 00000 n -0001006320 00000 n -0001006134 00000 n -0001004724 00000 n -0001006260 00000 n -0001248284 00000 n -0001008728 00000 n -0001008423 00000 n -0001006406 00000 n -0001008549 00000 n -0001010000 00000 n -0001009814 00000 n -0001008814 00000 n -0001009940 00000 n -0001012371 00000 n -0001012066 00000 n -0001010086 00000 n -0001012192 00000 n -0001013919 00000 n -0001013733 00000 n -0001012457 00000 n -0001013859 00000 n -0001015477 00000 n -0001015291 00000 n -0001014005 00000 n -0001015417 00000 n -0001017054 00000 n -0001016868 00000 n -0001015563 00000 n -0001016994 00000 n -0001248409 00000 n -0001018427 00000 n -0001018241 00000 n -0001017140 00000 n -0001018367 00000 n -0001019413 00000 n -0001019227 00000 n -0001018513 00000 n -0001019353 00000 n -0001021742 00000 n -0001021437 00000 n -0001019499 00000 n -0001021563 00000 n -0001022711 00000 n -0001022525 00000 n -0001021828 00000 n -0001022651 00000 n -0001024986 00000 n -0001024681 00000 n -0001022797 00000 n -0001024807 00000 n -0001024867 00000 n -0001026872 00000 n -0001026686 00000 n -0001025072 00000 n -0001026812 00000 n -0001248534 00000 n -0001029355 00000 n -0001029050 00000 n -0001026958 00000 n -0001029176 00000 n -0001030732 00000 n -0001030546 00000 n -0001029441 00000 n -0001030672 00000 n -0001031924 00000 n -0001031738 00000 n -0001030818 00000 n -0001031864 00000 n -0001034369 00000 n -0001034064 00000 n -0001032010 00000 n -0001034190 00000 n -0001035744 00000 n -0001035558 00000 n -0001034455 00000 n -0001035684 00000 n -0001037470 00000 n -0001037284 00000 n -0001035830 00000 n -0001037410 00000 n -0001248659 00000 n -0001039234 00000 n -0001039048 00000 n -0001037556 00000 n -0001039174 00000 n -0001041143 00000 n -0001040957 00000 n -0001039320 00000 n -0001041083 00000 n -0001042688 00000 n -0001042502 00000 n -0001041229 00000 n -0001042628 00000 n -0001043907 00000 n -0001043721 00000 n -0001042774 00000 n -0001043847 00000 n -0001046259 00000 n -0001045954 00000 n -0001043993 00000 n -0001046080 00000 n -0001047833 00000 n -0001047647 00000 n -0001046345 00000 n -0001047773 00000 n -0001248784 00000 n -0001049827 00000 n -0001049641 00000 n -0001047919 00000 n -0001049767 00000 n -0001051065 00000 n -0001050879 00000 n -0001049913 00000 n -0001051005 00000 n -0001066356 00000 n -0001054834 00000 n -0001051151 00000 n -0001066296 00000 n -0001055593 00000 n -0001055748 00000 n -0001055903 00000 n -0001056058 00000 n -0001056214 00000 n -0001056370 00000 n -0001056526 00000 n -0001056682 00000 n -0001056838 00000 n -0001056994 00000 n -0001057150 00000 n -0001057306 00000 n -0001057462 00000 n -0001057618 00000 n -0001057774 00000 n -0001057929 00000 n -0001058084 00000 n -0001058238 00000 n -0001058393 00000 n -0001058548 00000 n -0001058703 00000 n -0001058858 00000 n -0001059013 00000 n -0001059167 00000 n -0001059323 00000 n -0001059479 00000 n -0001059634 00000 n -0001059789 00000 n -0001059942 00000 n -0001060097 00000 n -0001060250 00000 n -0001060406 00000 n -0001060561 00000 n -0001060717 00000 n -0001060873 00000 n -0001061029 00000 n -0001061185 00000 n -0001061341 00000 n -0001061497 00000 n -0001061652 00000 n -0001061807 00000 n -0001061963 00000 n -0001062119 00000 n -0001062274 00000 n -0001062430 00000 n -0001062585 00000 n -0001062741 00000 n -0001062896 00000 n -0001063051 00000 n -0001063205 00000 n -0001063359 00000 n -0001063514 00000 n -0001063669 00000 n -0001063823 00000 n -0001063978 00000 n -0001064133 00000 n -0001064287 00000 n -0001064440 00000 n -0001064594 00000 n -0001064748 00000 n -0001064902 00000 n -0001065056 00000 n -0001065210 00000 n -0001065365 00000 n -0001065520 00000 n -0001065676 00000 n -0001065832 00000 n -0001065987 00000 n -0001066143 00000 n -0001080323 00000 n -0001069648 00000 n -0001066442 00000 n -0001080263 00000 n -0001070362 00000 n -0001070516 00000 n -0001070670 00000 n -0001070822 00000 n -0001070976 00000 n -0001071130 00000 n -0001071283 00000 n -0001071437 00000 n -0001071591 00000 n -0001071744 00000 n -0001071898 00000 n -0001072053 00000 n -0001072206 00000 n -0001072362 00000 n -0001072517 00000 n -0001072672 00000 n -0001072826 00000 n -0001072981 00000 n -0001073136 00000 n -0001073291 00000 n -0001073446 00000 n -0001073601 00000 n -0001073756 00000 n -0001073910 00000 n -0001074065 00000 n -0001074219 00000 n -0001074374 00000 n -0001074529 00000 n -0001074683 00000 n -0001074838 00000 n -0001074993 00000 n -0001075147 00000 n -0001075302 00000 n -0001075457 00000 n -0001075610 00000 n -0001075765 00000 n -0001075918 00000 n -0001076073 00000 n -0001076228 00000 n -0001076383 00000 n -0001076539 00000 n -0001076695 00000 n -0001076851 00000 n -0001077007 00000 n -0001077163 00000 n -0001077317 00000 n -0001077469 00000 n -0001077623 00000 n -0001077777 00000 n -0001077931 00000 n -0001078086 00000 n -0001078240 00000 n -0001078395 00000 n -0001078550 00000 n -0001078705 00000 n -0001078861 00000 n -0001079017 00000 n -0001079173 00000 n -0001079329 00000 n -0001079485 00000 n -0001079641 00000 n -0001079797 00000 n -0001079953 00000 n -0001080108 00000 n -0001098160 00000 n -0001084698 00000 n -0001080409 00000 n -0001098100 00000 n -0001085565 00000 n -0001085721 00000 n -0001085876 00000 n -0001086031 00000 n -0001086187 00000 n -0001086343 00000 n -0001086498 00000 n -0001086653 00000 n -0001086808 00000 n -0001086963 00000 n -0001087118 00000 n -0001087273 00000 n -0001087428 00000 n -0001087582 00000 n -0001087734 00000 n -0001087887 00000 n -0001088041 00000 n -0001088196 00000 n -0001088351 00000 n -0001088506 00000 n -0001088661 00000 n -0001088816 00000 n -0001088971 00000 n -0001089126 00000 n -0001089279 00000 n -0001089434 00000 n -0001089589 00000 n -0001089744 00000 n -0001089899 00000 n -0001090051 00000 n -0001090206 00000 n -0001090361 00000 n -0001090516 00000 n -0001090671 00000 n -0001090826 00000 n -0001090980 00000 n -0001091135 00000 n -0001091289 00000 n -0001091444 00000 n -0001091599 00000 n -0001091753 00000 n -0001091907 00000 n -0001092060 00000 n -0001092214 00000 n -0001092368 00000 n -0001092523 00000 n -0001092677 00000 n -0001092833 00000 n -0001092989 00000 n -0001093145 00000 n -0001093301 00000 n -0001093457 00000 n -0001093611 00000 n -0001093767 00000 n -0001093923 00000 n -0001094079 00000 n -0001094235 00000 n -0001094390 00000 n -0001094545 00000 n -0001094701 00000 n -0001094857 00000 n -0001095012 00000 n -0001095166 00000 n -0001095321 00000 n -0001095476 00000 n -0001095628 00000 n -0001095783 00000 n -0001095937 00000 n -0001096091 00000 n -0001096245 00000 n -0001096400 00000 n -0001096554 00000 n -0001096708 00000 n -0001096863 00000 n -0001097018 00000 n -0001097172 00000 n -0001097327 00000 n -0001097482 00000 n -0001097636 00000 n -0001097790 00000 n -0001097945 00000 n -0001111329 00000 n -0001101169 00000 n -0001098246 00000 n -0001111269 00000 n -0001101856 00000 n -0001102010 00000 n -0001102166 00000 n -0001102321 00000 n -0001102476 00000 n -0001102628 00000 n -0001102782 00000 n -0001102937 00000 n -0001103090 00000 n -0001103245 00000 n -0001103401 00000 n -0001103556 00000 n -0001103710 00000 n -0001103865 00000 n -0001104020 00000 n -0001104173 00000 n -0001104329 00000 n -0001104484 00000 n -0001104639 00000 n -0001104793 00000 n -0001104946 00000 n -0001105099 00000 n -0001105251 00000 n -0001105404 00000 n -0001105557 00000 n -0001105709 00000 n -0001105862 00000 n -0001106015 00000 n -0001106167 00000 n -0001106320 00000 n -0001106475 00000 n -0001106629 00000 n -0001106783 00000 n -0001106938 00000 n -0001107092 00000 n -0001107247 00000 n -0001107402 00000 n -0001107557 00000 n -0001107712 00000 n -0001107867 00000 n -0001108022 00000 n -0001108177 00000 n -0001108332 00000 n -0001108488 00000 n -0001108643 00000 n -0001108796 00000 n -0001108951 00000 n -0001109106 00000 n -0001109260 00000 n -0001109415 00000 n -0001109570 00000 n -0001109724 00000 n -0001109879 00000 n -0001110034 00000 n -0001110188 00000 n -0001110342 00000 n -0001110497 00000 n -0001110652 00000 n -0001110807 00000 n -0001110962 00000 n -0001111116 00000 n -0001248909 00000 n -0001128122 00000 n -0001115160 00000 n -0001111415 00000 n -0001128062 00000 n -0001116000 00000 n -0001116155 00000 n -0001116310 00000 n -0001116463 00000 n -0001116618 00000 n -0001116774 00000 n -0001116929 00000 n -0001117083 00000 n -0001117238 00000 n -0001117393 00000 n -0001117548 00000 n -0001117702 00000 n -0001117857 00000 n -0001118012 00000 n -0001118166 00000 n -0001118321 00000 n -0001118476 00000 n -0001118630 00000 n -0001118785 00000 n -0001118941 00000 n -0001119095 00000 n -0001119249 00000 n -0001119404 00000 n -0001119559 00000 n -0001119713 00000 n -0001119867 00000 n -0001120022 00000 n -0001120176 00000 n -0001120332 00000 n -0001120487 00000 n -0001120641 00000 n -0001120796 00000 n -0001120951 00000 n -0001121106 00000 n -0001121258 00000 n -0001121413 00000 n -0001121567 00000 n -0001121722 00000 n -0001121877 00000 n -0001122032 00000 n -0001122185 00000 n -0001122340 00000 n -0001122495 00000 n -0001122650 00000 n -0001122805 00000 n -0001122960 00000 n -0001123113 00000 n -0001123268 00000 n -0001123423 00000 n -0001123578 00000 n -0001123732 00000 n -0001123886 00000 n -0001124039 00000 n -0001124194 00000 n -0001124349 00000 n -0001124504 00000 n -0001124659 00000 n -0001124813 00000 n -0001124968 00000 n -0001125123 00000 n -0001125277 00000 n -0001125432 00000 n -0001125586 00000 n -0001125741 00000 n -0001125896 00000 n -0001126051 00000 n -0001126206 00000 n -0001126360 00000 n -0001126514 00000 n -0001126669 00000 n -0001126824 00000 n -0001126979 00000 n -0001127134 00000 n -0001127289 00000 n -0001127444 00000 n -0001127599 00000 n -0001127754 00000 n -0001127909 00000 n -0001143756 00000 n -0001132089 00000 n -0001128208 00000 n -0001143696 00000 n -0001132857 00000 n -0001133011 00000 n -0001133166 00000 n -0001133321 00000 n -0001133474 00000 n -0001133629 00000 n -0001133783 00000 n -0001133937 00000 n -0001134092 00000 n -0001134247 00000 n -0001134402 00000 n -0001134557 00000 n -0001134710 00000 n -0001134865 00000 n -0001135020 00000 n -0001135175 00000 n -0001135329 00000 n -0001135483 00000 n -0001135637 00000 n -0001135792 00000 n -0001135947 00000 n -0001136101 00000 n -0001136256 00000 n -0001136411 00000 n -0001136566 00000 n -0001136719 00000 n -0001136874 00000 n -0001137028 00000 n -0001137183 00000 n -0001137337 00000 n -0001137492 00000 n -0001137647 00000 n -0001137802 00000 n -0001137957 00000 n -0001138110 00000 n -0001138264 00000 n -0001138418 00000 n -0001138573 00000 n -0001138728 00000 n -0001138882 00000 n -0001139036 00000 n -0001139190 00000 n -0001139344 00000 n -0001139498 00000 n -0001139653 00000 n -0001139808 00000 n -0001139964 00000 n -0001140118 00000 n -0001140273 00000 n -0001140427 00000 n -0001140583 00000 n -0001140739 00000 n -0001140894 00000 n -0001141050 00000 n -0001141204 00000 n -0001141360 00000 n -0001141514 00000 n -0001141670 00000 n -0001141825 00000 n -0001141981 00000 n -0001142137 00000 n -0001142293 00000 n -0001142449 00000 n -0001142605 00000 n -0001142761 00000 n -0001142917 00000 n -0001143073 00000 n -0001143229 00000 n -0001143385 00000 n -0001143540 00000 n -0001145459 00000 n -0001158368 00000 n -0001176406 00000 n -0001179043 00000 n -0001179012 00000 n -0001181580 00000 n -0001181334 00000 n -0001200247 00000 n -0001221781 00000 n -0001243077 00000 n -0001249007 00000 n -0001249128 00000 n -0001249254 00000 n -0001249380 00000 n -0001249506 00000 n -0001249632 00000 n -0001249758 00000 n -0001249884 00000 n -0001249973 00000 n -0001250100 00000 n -0001250190 00000 n -0001250264 00000 n -0001261136 00000 n -0001316039 00000 n -0001316080 00000 n -0001316120 00000 n -0001316254 00000 n -trailer -<< -/Size 5675 -/Root 5673 0 R -/Info 5674 0 R -/ID [ ] ->> -startxref -1316518 -%%EOF diff --git a/components/net/uip/lib/memb.c b/components/net/uip/lib/memb.c deleted file mode 100644 index 777b52f7bcf444a40ba78f9c98a054f29020d93b..0000000000000000000000000000000000000000 --- a/components/net/uip/lib/memb.c +++ /dev/null @@ -1,104 +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: memb.c,v 1.1 2006/06/12 08:21:43 adam Exp $ - */ - -/** - * \addtogroup memb - * @{ - */ - - /** - * \file - * Memory block allocation routines. - * \author Adam Dunkels - */ -#include - -#include "memb.h" - -/*---------------------------------------------------------------------------*/ -void -memb_init(struct memb_blocks *m) -{ - memset(m->count, 0, m->num); - memset(m->mem, 0, m->size * m->num); -} -/*---------------------------------------------------------------------------*/ -void * -memb_alloc(struct memb_blocks *m) -{ - int i; - - for(i = 0; i < m->num; ++i) { - if(m->count[i] == 0) { - /* If this block was unused, we increase the reference count to - indicate that it now is used and return a pointer to the - memory block. */ - ++(m->count[i]); - return (void *)((char *)m->mem + (i * m->size)); - } - } - - /* No free block was found, so we return NULL to indicate failure to - allocate block. */ - return NULL; -} -/*---------------------------------------------------------------------------*/ -char -memb_free(struct memb_blocks *m, void *ptr) -{ - int i; - char *ptr2; - - /* Walk through the list of blocks and try to find the block to - which the pointer "ptr" points to. */ - ptr2 = (char *)m->mem; - for(i = 0; i < m->num; ++i) { - - if(ptr2 == (char *)ptr) { - /* We've found to block to which "ptr" points so we decrease the - reference count and return the new value of it. */ - if(m->count[i] > 0) { - /* Make sure that we don't deallocate free memory. */ - --(m->count[i]); - } - return m->count[i]; - } - ptr2 += m->size; - } - return -1; -} -/*---------------------------------------------------------------------------*/ - -/** @} */ diff --git a/components/net/uip/lib/memb.h b/components/net/uip/lib/memb.h deleted file mode 100644 index b725ebe1087c75b456f92ad00c8927ecb3c08cc0..0000000000000000000000000000000000000000 --- a/components/net/uip/lib/memb.h +++ /dev/null @@ -1,142 +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: memb.h,v 1.1 2006/06/12 08:21:43 adam Exp $ - */ - -/** - * \defgroup memb Memory block management functions - * - * The memory block allocation routines provide a simple yet powerful - * set of functions for managing a set of memory blocks of fixed - * size. A set of memory blocks is statically declared with the - * MEMB() macro. Memory blocks are allocated from the declared - * memory by the memb_alloc() function, and are deallocated with the - * memb_free() function. - * - * \note Because of namespace clashes only one MEMB() can be - * declared per C module, and the name scope of a MEMB() memory - * block is local to each C module. - * - * The following example shows how to declare and use a memory block - * called "cmem" which has 8 chunks of memory with each memory chunk - * being 20 bytes large. - * - * @{ - */ - - -/** - * \file - * Memory block allocation routines. - * \author - * Adam Dunkels - * - */ - -#ifndef __MEMB_H__ -#define __MEMB_H__ - -/* - * Here we define a C preprocessing macro for concatenating to - * strings. We need use two macros in order to allow concatenation of - * two #defined macros. - */ -#define MEMB_CONCAT2(s1, s2) s1##s2 -#define MEMB_CONCAT(s1, s2) MEMB_CONCAT2(s1, s2) - -/** - * Declare a memory block. - * - * This macro is used to staticall declare a block of memory that can - * be used by the block allocation functions. The macro statically - * declares a C array with a size that matches the specified number of - * blocks and their individual sizes. - * - * Example: - \code -MEMB(connections, sizeof(struct connection), 16); - \endcode - * - * \param name The name of the memory block (later used with - * memb_init(), memb_alloc() and memb_free()). - * - * \param size The size of each memory chunk, in bytes. - * - * \param num The total number of memory chunks in the block. - * - */ -#define MEMB(name, structure, num) \ - static char MEMB_CONCAT(name,_memb_count)[num]; \ - static structure MEMB_CONCAT(name,_memb_mem)[num]; \ - static struct memb_blocks name = {sizeof(structure), num, \ - MEMB_CONCAT(name,_memb_count), \ - (void *)MEMB_CONCAT(name,_memb_mem)} - -struct memb_blocks { - unsigned short size; - unsigned short num; - char *count; - void *mem; -}; - -/** - * Initialize a memory block that was declared with MEMB(). - * - * \param m A memory block previosly declared with MEMB(). - */ -void memb_init(struct memb_blocks *m); - -/** - * Allocate a memory block from a block of memory declared with MEMB(). - * - * \param m A memory block previosly declared with MEMB(). - */ -void *memb_alloc(struct memb_blocks *m); - -/** - * Deallocate a memory block from a memory block previously declared - * with MEMB(). - * - * \param m m A memory block previosly declared with MEMB(). - * - * \param ptr A pointer to the memory block that is to be deallocated. - * - * \return The new reference count for the memory block (should be 0 - * if successfully deallocated) or -1 if the pointer "ptr" did not - * point to a legal memory block. - */ -char memb_free(struct memb_blocks *m, void *ptr); - -/** @} */ - -#endif /* __MEMB_H__ */ diff --git a/components/net/uip/rt-thread/clock-arch.c b/components/net/uip/rt-thread/clock-arch.c deleted file mode 100644 index fa2cade08bb6ca013c102e671deead89e2b631e1..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/clock-arch.c +++ /dev/null @@ -1,50 +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.c,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * Implementation of architecture-specific clock functionality - * \author - * Adam Dunkels - */ - -#include "clock-arch.h" -#include "stm32f10x.h" - -/*---------------------------------------------------------------------------*/ -clock_time_t -clock_time(void) -{ - return (rt_tick_get()); -} -/*---------------------------------------------------------------------------*/ diff --git a/components/net/uip/rt-thread/clock-arch.h b/components/net/uip/rt-thread/clock-arch.h deleted file mode 100644 index 3c8978f3bb17f5d5f77d6a3c64a003d8ce69e796..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/clock-arch.h +++ /dev/null @@ -1,40 +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__ - -typedef int clock_time_t; -#define CLOCK_CONF_SECOND 100 - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/components/net/uip/rt-thread/readme.txt b/components/net/uip/rt-thread/readme.txt deleted file mode 100644 index 4be911e853129f4025d1ae386d58f7a41a0b1b73..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/readme.txt +++ /dev/null @@ -1,12 +0,0 @@ -/************************************ -*** -*** -**** -******/ - - - -2010-11-21 -̫еͻɶ⣿ -2010-11-21 -һ⣺HELLO WORLDвӣϿ֮֮Ҳӣ \ No newline at end of file diff --git a/components/net/uip/rt-thread/uIPmain.c b/components/net/uip/rt-thread/uIPmain.c deleted file mode 100644 index 9d86f036fbf847f7813359baad902cdb83f1165b..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uIPmain.c +++ /dev/null @@ -1,127 +0,0 @@ -/* - * 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Adam Dunkels. - * 4. 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: main.c,v 1.16 2006/06/11 21:55:03 adam Exp $ - * - */ -#include "uip.h" -#include "uip_arp.h" -#include "stm32_eth.h" -#include "rtconfig.h" -#include "rtdef.h" -#include "uip_timer.h" -#include "rtthread.h" - - - - - -#define BUF ((struct uip_eth_hdr *)&uip_buf[0]) -// Define Prototypes -void TransmitPacket(void) -{ - int i; - u8_t data[1500]; - // Copy the header portion part - for(i=0; i < (UIP_LLH_LEN + 40); ++i) - { - data[i] = uip_buf[i]; - } - // Copy the data portion part - for(; i < uip_len; ++i) - { - data[i] = uip_appdata[i - UIP_LLH_LEN - 40 ]; - } - ETH_HandleTxPkt(data,uip_len); -} -void uip_tcpip_thread(void *parameter) -{ - int i; - static u8_t cnt; - while(1) - { - rt_thread_delay(CLOCK_SECOND*5); - 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(); - TransmitPacket(); - } - } -#if UIP_UDP - for (i = 0; i < UIP_UDP_CONNS; i++) - { - uip_udp_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(); - TransmitPacket(); - } - } -#endif /* UIP_UDP */ - /* Call the ARP timer function every 10 seconds. */ - if (++cnt > 2) uip_arp_timer(); - } -} - -rt_thread_t sys_thread_new(char *name, void (* thread)(void *arg), void *arg, int stacksize, int prio) -{ - rt_thread_t t; - t = rt_thread_create(name, thread, arg, stacksize, prio, 20); - RT_ASSERT(t != RT_NULL); - rt_thread_startup(t); - return t; -} - - -void uip_sys_init(void) -{ - - uip_init(); //uip init - sys_thread_new("uip",uip_tcpip_thread, RT_NULL, RT_LWIP_TCPTHREAD_STACKSIZE, RT_LWIP_TCPTHREAD_PRIORITY); - hello_world_init(); // -} - -/*---------------------------------------------------------------------------*/ -void uip_log(char *m) -{ - rt_kprintf("uIP log message: %s\n", m); -} diff --git a/components/net/uip/rt-thread/uip-conf.h b/components/net/uip/rt-thread/uip-conf.h deleted file mode 100644 index bb14c5389ad912ee62c9b4709ecef4a4ba3f1a20..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/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__ - -#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 20 - -/** - * Maximum number of listening TCP ports. - * - * \hideinitializer - */ -#define UIP_CONF_MAX_LISTENPORTS 40 - -/** - * uIP buffer size. - * - * \hideinitializer - */ -#define UIP_CONF_BUFFER_SIZE 420 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 1 - -/** - * 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_ARCH_ADD32 0 - -#define UIP_ETHADDR0 0x00 -#define UIP_ETHADDR1 0x33 -#define UIP_ETHADDR2 0x44 -#define UIP_ETHADDR3 0x55 -#define UIP_ETHADDR4 0x66 -#define UIP_ETHADDR5 0x77 -#include - -#endif /* __UIP_CONF_H__ */ - -/** @} */ -/** @} */ diff --git a/components/net/uip/rt-thread/uip_addr.h b/components/net/uip/rt-thread/uip_addr.h deleted file mode 100644 index 60101f7c93a6f12838a76dcd8af3e404f59e2fc8..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_addr.h +++ /dev/null @@ -1,8 +0,0 @@ - -#include "rtdef.h" - - - -struct ip_addr { - rt_uint16_t uip_ip4addr_t[2]; -} ; \ No newline at end of file diff --git a/components/net/uip/rt-thread/uip_arch.c b/components/net/uip/rt-thread/uip_arch.c deleted file mode 100644 index 69a13aa1d3d9e76ed77f53fbb1b7638d004905eb..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_arch.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - * 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.c,v 1.2.2.1 2003/10/04 22:54:17 adam Exp $ - * - */ - - -#include "uip.h" -#include "uip_arch.h" - -#define BUF ((struct uip_tcpip_hdr *)&uip_buf[UIP_LLH_LEN]) -#define IP_PROTO_TCP 6 - -/*-----------------------------------------------------------------------------------*/ -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]; - } - } - } -} -/*-----------------------------------------------------------------------------------*/ -u16_t uip_chksum(u16_t *sdata, u16_t len) -{ - u16_t acc; - - for (acc = 0; len > 1; len -= 2) { - u16_t u = ((unsigned char *)sdata)[0] + (((unsigned char *)sdata)[1] << 8); - if ((acc += u) < u) { - /* Overflow, so we add the carry to acc (i.e., increase by - one). */ - ++acc; - } - ++sdata; - } - - /* add up any odd byte */ - if(len == 1) { - acc += htons(((u16_t)(*(u8_t *)sdata)) << 8); - if(acc < htons(((u16_t)(*(u8_t *)sdata)) << 8)) { - ++acc; - } - } - - return acc; -} -/*-----------------------------------------------------------------------------------*/ -u16_t uip_ipchksum(void) -{ - return uip_chksum((u16_t *)&uip_buf[UIP_LLH_LEN], 20); -} -/*-----------------------------------------------------------------------------------*/ -u16_t uip_tcpchksum(void) -{ - u16_t hsum, sum; - - - /* Compute the checksum of the TCP header. */ - hsum = uip_chksum((u16_t *)&uip_buf[20 + UIP_LLH_LEN], 20); - - /* Compute the checksum of the data in the TCP packet and add it to - the TCP header checksum. */ - sum = uip_chksum((u16_t *)uip_appdata, - (u16_t)(((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - 40))); - - if((sum += hsum) < hsum) { - ++sum; - } - - if((sum += BUF->srcipaddr[0]) < BUF->srcipaddr[0]) { - ++sum; - } - if((sum += BUF->srcipaddr[1]) < BUF->srcipaddr[1]) { - ++sum; - } - if((sum += BUF->destipaddr[0]) < BUF->destipaddr[0]) { - ++sum; - } - if((sum += BUF->destipaddr[1]) < BUF->destipaddr[1]) { - ++sum; - } - - if((sum += (u16_t)htons((u16_t)IP_PROTO_TCP)) < (u16_t)htons((u16_t)IP_PROTO_TCP)) { - ++sum; - } - - hsum = (u16_t)htons((((u16_t)(BUF->len[0]) << 8) + BUF->len[1]) - 20); - - if((sum += hsum) < hsum) { - ++sum; - } - - return sum; -} - - diff --git a/components/net/uip/rt-thread/uip_eth.h b/components/net/uip/rt-thread/uip_eth.h deleted file mode 100644 index 1ca7800eb8ba4afd0246c8749487314f54ebe5b4..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_eth.h +++ /dev/null @@ -1,35 +0,0 @@ -#ifndef __NETIF_ETHERNETIF_H__ -#define __NETIF_ETHERNETIF_H__ - -//#include "lwip/netif.h" -#include - -#define NIOCTL_GADDR 0x01 -#define ETHERNET_MTU 1500 -struct pbuf -{ - rt_uint16_t len; -}; - -struct eth_device -{ - /* inherit from rt_device */ - struct rt_device parent; - - //struct eth_addr *ethaddr; - //struct netif *netif; - struct rt_semaphore tx_ack; - struct rt_semaphore tx_msg; - - /* eth device interface */ - struct pbuf* (*eth_rx)(rt_device_t dev); - rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p); -}; - -rt_err_t eth_device_ready(struct eth_device* dev); - -rt_err_t eth_device_init(struct eth_device* dev, const char* name); - -rt_err_t eth_system_device_init(void); - -#endif /* __NETIF_ETHERNETIF_H__ */ diff --git a/components/net/uip/rt-thread/uip_etharp.c b/components/net/uip/rt-thread/uip_etharp.c deleted file mode 100644 index 61e30fc6d00896ba604a303a5760e46abb92c673..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_etharp.c +++ /dev/null @@ -1,58 +0,0 @@ -#include "uip_pbuf.h" -#include "uip-conf.h" -#include "rtdef.h" -#include "uip.h" -#include "uip_arp.h" -#include "uip_netif.h" - -extern u16_t uip_len, uip_slen; -void -etharp_ip_input(struct netif *netif, struct pbuf *p) -{ - u8_t *ptr; - int i; - ptr = p->payload; - uip_len = p->len; - for (i=0;ilen;i++) uip_buf[i] = ptr[i]; - uip_arp_ipin(); - uip_input(); - return; -} -void -etharp_arp_input(struct netif *netif, struct eth_addr *ethaddr, struct pbuf *p) -{ - u8_t *ptr,*pdata; - //struct pbuf *q; - int i; - ptr = p->payload; - uip_len = p->len; - for (i=0;ilen;i++) uip_buf[i] = ptr[i]; - uip_arp_arpin(); //update arp table uip_arp_arpin - if (uip_len) - { - if (( pdata =(u8_t*)rt_malloc(1500*sizeof(u8_t))) ==RT_NULL) - { - pbuf_free(p); - return; - } - for (i=0; i < (UIP_LLH_LEN + 40); ++i) - { - pdata[i] = uip_buf[i]; - } - for (; i < uip_len; ++i) - { - pdata[i] = uip_appdata[i - UIP_LLH_LEN - 40 ]; - } - //q = p; - p ->payload = pdata; - p->len = uip_len; - netif->linkoutput(netif,p); - rt_free(pdata); - pbuf_free(p); - // pbuf_free(q); - return ; - - // return 0; //ERR_OK - } - pbuf_free(p); -} \ No newline at end of file diff --git a/components/net/uip/rt-thread/uip_etharp.h b/components/net/uip/rt-thread/uip_etharp.h deleted file mode 100644 index 758dc4b62f59dff47ad2b96195806daf2428dfdd..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_etharp.h +++ /dev/null @@ -1,15 +0,0 @@ -#include "uip_pbuf.h" -#include "uip-conf.h" -#include "rtdef.h" - - -struct eth_hdr { - u8_t ip_addrdest[6]; - u8_t ip_addrsrc[6]; - u16_t type; -} ; -#define ETHTYPE_ARP UIP_ETHTYPE_ARP -#define ETHTYPE_IP UIP_ETHTYPE_IP -#define ETHTYPE_VLAN 0x8100 -#define ETHTYPE_PPPOEDISC 0x8863 /* PPP Over Ethernet Discovery Stage */ -#define ETHTYPE_PPPOE 0x8864 /* PPP Over Ethernet Session Stage */ diff --git a/components/net/uip/rt-thread/uip_ethernetif.c b/components/net/uip/rt-thread/uip_ethernetif.c deleted file mode 100644 index 4fef184f4a678d703afb2069392ce8edddc78f71..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_ethernetif.c +++ /dev/null @@ -1,313 +0,0 @@ -/* - * File : ethernetif.c - * This file is part of RT-Thread RTOS - * COPYRIGHT (C) 2006 - 2010, RT-Thread Development Team - * - * The license and distribution terms for this file may be - * found in the file LICENSE in this distribution or at - * http://www.rt-thread.org/license/LICENSE - * - * Change Logs: - * Date Author Notes - * 2010-07-07 Bernard fix ethernetif_linkoutput send mail issue. - */ - -/* - * 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 - * - */ - -#include -#include "uip.h" -#include "uip_arp.h" -#include "uip_netif.h" -#include "uip_ethernetif.h" -#include "uip_ipaddr.h" - -#ifndef NULL -#define NULL (void *)0 -#endif /* NULL */ - -#define BUF ((struct uip_eth_hdr *)&uip_buf[0]) -extern u16_t uip_len, uip_slen; - -/* eth rx/tx thread */ -static struct rt_mailbox eth_rx_thread_mb; -static struct rt_thread eth_rx_thread; -#ifndef RT_LWIP_ETHTHREAD_PRIORITY -#define RT_ETHERNETIF_THREAD_PREORITY 0x90 -static char eth_rx_thread_mb_pool[48 * sizeof(rt_ubase_t)]; -static char eth_rx_thread_stack[1024]; -#else -#define RT_ETHERNETIF_THREAD_PREORITY RT_LWIP_ETHTHREAD_PRIORITY -static char eth_rx_thread_mb_pool[RT_LWIP_ETHTHREAD_MBOX_SIZE * sizeof(rt_ubase_t)]; -static char eth_rx_thread_stack[RT_LWIP_ETHTHREAD_STACKSIZE]; -#endif - -struct eth_tx_msg -{ - struct netif *netif; - struct pbuf *buf; -}; -static struct rt_mailbox eth_tx_thread_mb; -static struct rt_thread eth_tx_thread; -#ifndef RT_LWIP_ETHTHREAD_PRIORITY -static char eth_tx_thread_mb_pool[32 * sizeof(rt_ubase_t)]; -static char eth_tx_thread_stack[512]; -#else -static char eth_tx_thread_mb_pool[RT_LWIP_ETHTHREAD_MBOX_SIZE * sizeof(rt_ubase_t)]; -static char eth_tx_thread_stack[RT_LWIP_ETHTHREAD_STACKSIZE]; -#endif - -/* the interface provided to uIP */ -err_t eth_init(struct netif *netif) -{ - return 0; -} -extern err_t ethernetif_linkoutput(struct netif *netif, struct pbuf *p); - -err_t eth_input(struct pbuf *p,struct netif *inp) -{ - - struct eth_hdr *ethhdr; - - if(p != RT_NULL) - { -#ifdef LINK_STATS - //LINK_STATS_INC(link.recv); -#endif LINK_STATS - - ethhdr = p->payload; - - switch(uip_htons(ethhdr->type)) - { - case ETHTYPE_IP: //ETHTYPE_IP - etharp_ip_input(inp, p); - pbuf_header(p, -((rt_int16_t)sizeof(struct eth_hdr))); - if (tcpip_input(p, inp) != ERR_OK) - { - // discard packet - pbuf_free(p); - } - break; - - case ETHTYPE_ARP: - etharp_arp_input(inp, (struct eth_addr *)inp->hwaddr, p); - break; - - default: - pbuf_free(p); - p = RT_NULL; - break; - } - } - return ERR_OK; -} - -err_t ethernetif_output(struct netif *netif, struct pbuf *p, struct ip_addr *ipaddr) -{ - return etharp_output(netif, p, ipaddr); -} - -err_t ethernetif_linkoutput(struct netif *netif, struct pbuf *p) -{ - struct eth_tx_msg msg; - struct eth_device* enetif; - - enetif = (struct eth_device*)netif->state; - - /* send a message to eth tx thread */ - msg.netif = netif; - msg.buf = p; - if (rt_mb_send(ð_tx_thread_mb, (rt_uint32_t) &msg) == RT_EOK) - { - /* waiting for ack */ - rt_sem_take(&(enetif->tx_ack), RT_WAITING_FOREVER); - } - - return ERR_OK; -} -/* ethernetif APIs */ -rt_err_t eth_device_init(struct eth_device* dev, const char* name) -{ - struct netif* netif; - uip_ipaddr_t ipaddr; - netif = (struct netif*) rt_malloc (sizeof(struct netif)); - if (netif == RT_NULL) - { - rt_kprintf("malloc netif failed\n"); - return -RT_ERROR; - } - rt_memset(netif, 0, sizeof(struct netif)); - - /* set netif */ - dev->netif = netif; - /* register to rt-thread device manager */ - rt_device_register(&(dev->parent), name, RT_DEVICE_FLAG_RDWR); - dev->parent.type = RT_Device_Class_NetIf; - rt_sem_init(&(dev->tx_ack), name, 0, RT_IPC_FLAG_FIFO); - - /* set name */ - netif->name[0] = name[0]; - netif->name[1] = name[1]; - - /* set hw address to 6 */ - netif->hwaddr_len = 6; - /* maximum transfer unit */ - netif->mtu = ETHERNET_MTU; - /* broadcast capability */ - netif->flags = NETIF_FLAG_BROADCAST; - -#if LWIP_IGMP - /* igmp support */ - netif->flags |= NETIF_FLAG_IGMP; -#endif - - /* get hardware address */ - rt_device_control(&(dev->parent), NIOCTL_GADDR, netif->hwaddr); - - /* set output */ - netif->output = ethernetif_output; - netif->linkoutput = ethernetif_linkoutput; - - /* add netif to lwip */ - - if (netif_add(netif, IP_ADDR_ANY, IP_ADDR_BROADCAST, IP_ADDR_ANY, dev, - eth_init, eth_input) == RT_NULL) - { - /* failed, unregister device and free netif */ - rt_device_unregister(&(dev->parent)); - rt_free(netif); - return -RT_ERROR; - } - - netif_set_default(netif); - return RT_EOK; -} - -/* ethernet buffer */ -void eth_tx_thread_entry(void* parameter) -{ - struct eth_tx_msg* msg; - - while (1) - { - if (rt_mb_recv(ð_tx_thread_mb, (rt_uint32_t*)&msg, RT_WAITING_FOREVER) == RT_EOK) - { - struct eth_device* enetif; - - RT_ASSERT(msg->netif != RT_NULL); - RT_ASSERT(msg->buf != RT_NULL); - - enetif = (struct eth_device*)msg->netif->state; - if (enetif != RT_NULL) - { - /* call driver's interface */ - if (enetif->eth_tx(&(enetif->parent), msg->buf) != RT_EOK) - { - rt_kprintf("transmit eth packet failed\n"); - } - } - - /* send ack */ - rt_sem_release(&(enetif->tx_ack)); - } - } -} - -/* ethernet buffer */ -void eth_rx_thread_entry(void* parameter) -{ - struct eth_device* device; - - while (1) - { - if (rt_mb_recv(ð_rx_thread_mb, (rt_uint32_t*)&device, RT_WAITING_FOREVER) == RT_EOK) - { - struct pbuf *p; - - /* receive all of buffer */ - while (1) - { - p = device->eth_rx(&(device->parent)); - if (p != RT_NULL) - { - /* notify to upper layer */ - eth_input(p, device->netif); - } - else break; - } - } - } -} - -rt_err_t eth_device_ready(struct eth_device* dev) -{ - /* post message to ethernet thread */ - return rt_mb_send(ð_rx_thread_mb, (rt_uint32_t)dev); -} - -rt_err_t eth_system_device_init() -{ - rt_err_t result = RT_EOK; - - /* init rx thread */ - /* init mailbox and create ethernet thread */ - result = rt_mb_init(ð_rx_thread_mb, "erxmb", - ð_rx_thread_mb_pool[0], sizeof(eth_rx_thread_mb_pool)/sizeof(rt_ubase_t), - RT_IPC_FLAG_FIFO); - RT_ASSERT(result == RT_EOK); - - result = rt_thread_init(ð_rx_thread, "erx", eth_rx_thread_entry, RT_NULL, - ð_rx_thread_stack[0], sizeof(eth_rx_thread_stack), - RT_ETHERNETIF_THREAD_PREORITY, 16); - RT_ASSERT(result == RT_EOK); - - result = rt_thread_startup(ð_rx_thread); - RT_ASSERT(result == RT_EOK); - - /* init tx thread */ - /* init mailbox and create ethernet thread */ - - result = rt_mb_init(ð_tx_thread_mb, "etxmb", - ð_tx_thread_mb_pool[0], sizeof(eth_tx_thread_mb_pool)/sizeof(rt_ubase_t), - RT_IPC_FLAG_FIFO); - RT_ASSERT(result == RT_EOK); - - result = rt_thread_init(ð_tx_thread, "etx", eth_tx_thread_entry, RT_NULL, - ð_tx_thread_stack[0], sizeof(eth_tx_thread_stack), - RT_ETHERNETIF_THREAD_PREORITY, 16); - RT_ASSERT(result == RT_EOK); - - result = rt_thread_startup(ð_tx_thread); - RT_ASSERT(result == RT_EOK); - - return result; -} diff --git a/components/net/uip/rt-thread/uip_ethernetif.h b/components/net/uip/rt-thread/uip_ethernetif.h deleted file mode 100644 index 31a22e4eb98a1844b64de0a11615b00bc0c30c3a..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_ethernetif.h +++ /dev/null @@ -1,31 +0,0 @@ -#ifndef __NETIF_ETHERNETIF_H__ -#define __NETIF_ETHERNETIF_H__ - -//#include "lwip/netif.h" -#include "uip_netif.h" -#include - -#define NIOCTL_GADDR 0x01 -#define ETHERNET_MTU 1500 - -struct eth_device -{ - /* inherit from rt_device */ - struct rt_device parent; - - struct eth_addr *ethaddr; - struct netif *netif; - struct rt_semaphore tx_ack; - - /* eth device interface */ - struct pbuf* (*eth_rx)(rt_device_t dev); - rt_err_t (*eth_tx)(rt_device_t dev, struct pbuf* p); -}; - -rt_err_t eth_device_ready(struct eth_device* dev); - -rt_err_t eth_device_init(struct eth_device* dev, const char* name); - -rt_err_t eth_system_device_init(void); - -#endif /* __NETIF_ETHERNETIF_H__ */ diff --git a/components/net/uip/rt-thread/uip_ipaddr.h b/components/net/uip/rt-thread/uip_ipaddr.h deleted file mode 100644 index 98e2adf5da07fee31b508578d88c71df700f9996..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_ipaddr.h +++ /dev/null @@ -1,20 +0,0 @@ - -#include "rtdef.h" - - - - - - -/* ethernetif APIs */ -#define IP_ADDR_ANY_VALUE 0x00000000UL -#define IP_ADDR_BROADCAST_VALUE 0xffffffffUL - -//extern const struct ip_addr ip_addr_any; -//extern const struct ip_addr ip_addr_broadcast; - -/** IP_ADDR_ can be used as a fixed IP address - * for the wildcard and the broadcast address - */ -#define IP_ADDR_ANY ((struct ip_addr *)0) -#define IP_ADDR_BROADCAST ((struct ip_addr *)0) \ No newline at end of file diff --git a/components/net/uip/rt-thread/uip_netif.c b/components/net/uip/rt-thread/uip_netif.c deleted file mode 100644 index ce1d20dcf1f2686c4ce20db83511c4a369a9be51..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_netif.c +++ /dev/null @@ -1,53 +0,0 @@ -#include "rtdef.h" -#include "uip-conf.h" -#include "uip.h" -#include "uip_netif.h" -#include "uip_arp.h" -#include "rtconfig.h" -#include "uip_pbuf.h" - -void netif_set_default(struct netif *netif) -{ - -} -void netif_set_addr(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw) -{ - uip_ipaddr_t hipaddr; - uip_ipaddr(hipaddr, RT_LWIP_IPADDR0,RT_LWIP_IPADDR1,RT_LWIP_IPADDR2,RT_LWIP_IPADDR3); - uip_sethostaddr(hipaddr); - uip_ipaddr(hipaddr, RT_LWIP_GWADDR0,RT_LWIP_GWADDR1,RT_LWIP_GWADDR2,RT_LWIP_GWADDR3); - uip_setdraddr(hipaddr); - uip_ipaddr(hipaddr, RT_LWIP_MSKADDR0,RT_LWIP_MSKADDR1,RT_LWIP_MSKADDR2,RT_LWIP_MSKADDR3); - uip_setnetmask(hipaddr); - return ; -} - -struct netif * -netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw, - void *state, - err_t (* init)(struct netif *netif), - err_t (* input)(struct pbuf *p, struct netif *netif)) -{ - //if (netif_add(netif, IP_ADDR_ANY, IP_ADDR_BROADCAST, IP_ADDR_ANY, dev, - //eth_init, eth_input) == RT_NULL) - // netif->uip_hostaddr = ipaddr; - //netif->uip_draddr = netmask; - // netif->uip_netmask = gw; - // netif_set_addr(netif,ipaddr,netmask,gw); - - // call user specified initialization function for netif - if (init(netif) != 0) { - return RT_NULL; - } - netif->input = input; - netif->state = state; - netif_set_addr(netif,ipaddr,netmask,gw); - return netif; - -} -err_t etharp_output(struct netif *netif, struct pbuf *q, struct ip_addr *ipaddr) -{ - return 0; -} diff --git a/components/net/uip/rt-thread/uip_netif.h b/components/net/uip/rt-thread/uip_netif.h deleted file mode 100644 index e5e335330e292a9dec44597146053c6fa0e51d20..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_netif.h +++ /dev/null @@ -1,269 +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_NETIF_H__ -#define __LWIP_NETIF_H__ - -//#include "lwip/opt.h" - -#define ENABLE_LOOPBACK (LWIP_NETIF_LOOPBACK || LWIP_HAVE_LOOPIF) - -#include "lwip/err.h" - -#include "uip_ipaddr.h" - -//#include "lwip/inet.h" -//#include "lwip/pbuf.h" -#include "uip_pbuf.h" -#include "uip-conf.h" - -#if LWIP_DHCP -struct dhcp; -#endif -#if LWIP_AUTOIP -struct autoip; -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -/* Throughout this file, IP addresses are expected to be in - * the same byte order as in IP_PCB. */ - -/** must be the maximum of all used hardware address lengths - across all types of interfaces in use */ -#define NETIF_MAX_HWADDR_LEN 6U - -/** TODO: define the use (where, when, whom) of netif flags */ - -/** whether the network interface is 'up'. this is - * a software flag used to control whether this network - * interface is enabled and processes traffic. - */ -#define NETIF_FLAG_UP 0x01U -/** if set, the netif has broadcast capability */ -#define NETIF_FLAG_BROADCAST 0x02U -/** if set, the netif is one end of a point-to-point connection */ -#define NETIF_FLAG_POINTTOPOINT 0x04U -/** if set, the interface is configured using DHCP */ -#define NETIF_FLAG_DHCP 0x08U -/** if set, the interface has an active link - * (set by the network interface driver) */ -#define NETIF_FLAG_LINK_UP 0x10U -/** if set, the netif is an device using ARP */ -#define NETIF_FLAG_ETHARP 0x20U -/** if set, the netif has IGMP capability */ -#define NETIF_FLAG_IGMP 0x40U - -/** Generic data structure used for all lwIP network interfaces. - * The following fields should be filled in by the initialization - * function for the device driver: hwaddr_len, hwaddr[], mtu, flags */ -struct ip_addr { - rt_uint16_t uip_ip4addr_t[2]; -} ; - -struct netif { - /** pointer to next in linked list */ - struct netif *next; - - /** IP address configuration in network byte order */ - struct ip_addr ip_addr; - struct ip_addr netmask; - struct ip_addr gw; - - /** This function is called by the network device driver - * to pass a packet up the TCP/IP stack. */ - err_t (* input)(struct pbuf *p, struct netif *inp); - /** This function is called by the IP module when it wants - * to send a packet on the interface. This function typically - * first resolves the hardware address, then sends the packet. */ - err_t (* output)(struct netif *netif, struct pbuf *p, - struct ip_addr *ipaddr); - /** This function is called by the ARP module when it wants - * to send a packet on the interface. This function outputs - * the pbuf as-is on the link medium. */ - err_t (* linkoutput)(struct netif *netif, struct pbuf *p); -#if LWIP_NETIF_STATUS_CALLBACK - /** This function is called when the netif state is set to up or down - */ - void (* status_callback)(struct netif *netif); -#endif /* LWIP_NETIF_STATUS_CALLBACK */ -#if LWIP_NETIF_LINK_CALLBACK - /** This function is called when the netif link is set to up or down - */ - void (* link_callback)(struct netif *netif); -#endif /* LWIP_NETIF_LINK_CALLBACK */ - /** This field can be set by the device driver and could point - * to state information for the device. */ - void *state; -#if LWIP_DHCP - /** the DHCP client state information for this netif */ - struct dhcp *dhcp; -#endif /* LWIP_DHCP */ -#if LWIP_AUTOIP - /** the AutoIP client state information for this netif */ - struct autoip *autoip; -#endif -#if LWIP_NETIF_HOSTNAME - /* the hostname for this netif, NULL is a valid value */ - char* hostname; -#endif /* LWIP_NETIF_HOSTNAME */ - /** maximum transfer unit (in bytes) */ - u16_t mtu; - /** number of bytes used in hwaddr */ - u8_t hwaddr_len; - /** link level hardware address of this interface */ - u8_t hwaddr[NETIF_MAX_HWADDR_LEN]; - /** flags (see NETIF_FLAG_ above) */ - u8_t flags; - /** descriptive abbreviation */ - char name[2]; - /** number of this interface */ - u8_t num; -#if LWIP_SNMP - /** link type (from "snmp_ifType" enum from snmp.h) */ - u8_t link_type; - /** (estimate) link speed */ - u32_t link_speed; - /** timestamp at last change made (up/down) */ - u32_t ts; - /** counters */ - u32_t ifinoctets; - u32_t ifinucastpkts; - u32_t ifinnucastpkts; - u32_t ifindiscards; - u32_t ifoutoctets; - u32_t ifoutucastpkts; - u32_t ifoutnucastpkts; - u32_t ifoutdiscards; -#endif /* LWIP_SNMP */ -#if LWIP_IGMP - /* This function could be called to add or delete a entry in the multicast filter table of the ethernet MAC.*/ - err_t (*igmp_mac_filter)( struct netif *netif, struct ip_addr *group, u8_t action); -#endif /* LWIP_IGMP */ -#if LWIP_NETIF_HWADDRHINT - u8_t *addr_hint; -#endif /* LWIP_NETIF_HWADDRHINT */ -#if ENABLE_LOOPBACK - /* List of packets to be queued for ourselves. */ - struct pbuf *loop_first; - struct pbuf *loop_last; -#if LWIP_LOOPBACK_MAX_PBUFS - u16_t loop_cnt_current; -#endif /* LWIP_LOOPBACK_MAX_PBUFS */ -#endif /* ENABLE_LOOPBACK */ -}; - -#if LWIP_SNMP -#define NETIF_INIT_SNMP(netif, type, speed) \ - /* use "snmp_ifType" enum from snmp.h for "type", snmp_ifType_ethernet_csmacd by example */ \ - netif->link_type = type; \ - /* your link speed here (units: bits per second) */ \ - netif->link_speed = 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 -#else /* LWIP_SNMP */ -#define NETIF_INIT_SNMP(netif, type, speed) -#endif /* LWIP_SNMP */ - - -/** The list of network interfaces. */ -extern struct netif *netif_list; -/** The default network interface. */ -extern struct netif *netif_default; - -#define netif_init() /* Compatibility define, not init needed. */ - -struct netif *netif_add(struct netif *netif, struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw, - void *state, - err_t (* init)(struct netif *netif), - err_t (* input)(struct pbuf *p, struct netif *netif)); - -void -netif_set_addr(struct netif *netif,struct ip_addr *ipaddr, struct ip_addr *netmask, - struct ip_addr *gw); -void netif_remove(struct netif * netif); - -/* Returns a network interface given its name. The name is of the form - "et0", where the first two letters are the "name" field in the - netif structure, and the digit is in the num field in the same - structure. */ -struct netif *netif_find(char *name); - -void netif_set_default(struct netif *netif); - -void netif_set_ipaddr(struct netif *netif, struct ip_addr *ipaddr); -void netif_set_netmask(struct netif *netif, struct ip_addr *netmask); -void netif_set_gw(struct netif *netif, struct ip_addr *gw); - -void netif_set_up(struct netif *netif); -void netif_set_down(struct netif *netif); -u8_t netif_is_up(struct netif *netif); - -#if LWIP_NETIF_STATUS_CALLBACK -/* - * Set callback to be called when interface is brought up/down - */ -void netif_set_status_callback(struct netif *netif, void (* status_callback)(struct netif *netif)); -#endif /* LWIP_NETIF_STATUS_CALLBACK */ - -#if LWIP_NETIF_LINK_CALLBACK -void netif_set_link_up(struct netif *netif); -void netif_set_link_down(struct netif *netif); -u8_t netif_is_link_up(struct netif *netif); -/* - * Set callback to be called when link is brought up/down - */ -void netif_set_link_callback(struct netif *netif, void (* link_callback)(struct netif *netif)); -#endif /* LWIP_NETIF_LINK_CALLBACK */ - -#ifdef __cplusplus -} -#endif - -#if ENABLE_LOOPBACK -err_t netif_loop_output(struct netif *netif, struct pbuf *p, struct ip_addr *dest_ip); -void netif_poll(struct netif *netif); -#if !LWIP_NETIF_LOOPBACK_MULTITHREADING -void netif_poll_all(void); -#endif /* !LWIP_NETIF_LOOPBACK_MULTITHREADING */ -#endif /* ENABLE_LOOPBACK */ - -#endif /* __LWIP_NETIF_H__ */ diff --git a/components/net/uip/rt-thread/uip_pbuf.c b/components/net/uip/rt-thread/uip_pbuf.c deleted file mode 100644 index ea12e84e62c581845975e41b2733c20ca9a1a5db..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_pbuf.c +++ /dev/null @@ -1,50 +0,0 @@ -#include "uip_pbuf.h" -#include "rtdef.h" - -typedef rt_uint32_t mem_ptr_t; -#define LWIP_MEM_ALIGN(addr) ((void *)(((mem_ptr_t)(addr) + RT_ALIGN_SIZE - 1) & ~(mem_ptr_t)(RT_ALIGN_SIZE-1))) -#define LWIP_MEM_ALIGN_SIZE(size) (((size) + RT_ALIGN_SIZE - 1) & ~(RT_ALIGN_SIZE-1)) -#define SIZEOF_STRUCT_PBUF LWIP_MEM_ALIGN_SIZE(sizeof(struct pbuf)) - -u8_t -pbuf_free(struct pbuf *p) -{ - - //struct pbuf *q; - - if (p == RT_NULL) return 0; - rt_free(p); - //rt_free(&p->len); - - return 1; -} - -struct pbuf * -pbuf_alloc(pbuf_layer layer, u16_t length, pbuf_type type) -{ - struct pbuf *p; - u16_t offset = 0; - offset += 16; - - /* If pbuf is to be allocated in RAM, allocate memory for it. */ - p = (struct pbuf*)rt_malloc(LWIP_MEM_ALIGN_SIZE(SIZEOF_STRUCT_PBUF + offset) + LWIP_MEM_ALIGN_SIZE(length)); - if (p == RT_NULL) return RT_NULL; - /* Set up internal structure of the pbuf. */ - p->payload = LWIP_MEM_ALIGN((void *)((u8_t *)p + SIZEOF_STRUCT_PBUF + offset)); - p->len = length; - return p; -} - -u8_t -pbuf_header(struct pbuf *p, s16_t header_size_increment) // -{ - //extrat link header - uint8_t *ptr; - - ptr = p->payload; - ptr -= header_size_increment; - p->payload = ptr; - p->len += header_size_increment; - - return 0; -} \ No newline at end of file diff --git a/components/net/uip/rt-thread/uip_pbuf.h b/components/net/uip/rt-thread/uip_pbuf.h deleted file mode 100644 index 56c5bf5e9939426fadebb0a0ae7417cdb2b5ae9a..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_pbuf.h +++ /dev/null @@ -1,87 +0,0 @@ - -#ifndef __UIP_PBUF_H__ -#define __UIP_PBUF_H__ - -//#include "lwip/opt.h" -//#include "lwip/err.h" -#include "uip-conf.h" -#include "uip_etharp.h" - -typedef rt_int16_t s16_t; -typedef rt_int8_t err_t; -#ifdef __cplusplus -extern "C" { -#endif - -#define PBUF_TRANSPORT_HLEN 20 -#define PBUF_IP_HLEN 20 - -typedef enum { - PBUF_TRANSPORT, - PBUF_IP, - PBUF_LINK, - PBUF_RAW -} pbuf_layer; - -typedef enum { - PBUF_RAM, /* pbuf data is stored in RAM */ - PBUF_ROM, /* pbuf data is stored in ROM */ - PBUF_REF, /* pbuf comes from the pbuf pool */ - PBUF_POOL /* pbuf payload refers to RAM */ -} pbuf_type; - - -/** indicates this packet's data should be immediately passed to the application */ -#define PBUF_FLAG_PUSH 0x01U -#ifdef RT_USING_LWIP -struct pbuf { - /** next pbuf in singly linked pbuf chain */ - struct pbuf *next; - - /** pointer to the actual data in the buffer */ - void *payload; - - /** - * total length of this buffer and all next buffers in chain - * belonging to the same packet. - * - * For non-queue packet chains this is the invariant: - * p->tot_len == p->len + (p->next? p->next->tot_len: 0) - */ - u16_t tot_len; - - /** length of this buffer */ - u16_t len; - - /** pbuf_type as u8_t instead of enum to save space */ - u8_t /*pbuf_type*/ type; - - /** misc flags */ - u8_t flags; - - /** - * the reference count always equals the number of pointers - * that refer to this pbuf. This can be pointers from an application, - * the stack itself, or pbuf->next pointers from a chain. - */ - u16_t ref; - -}; -#else /* RT_USING_UIP */ -struct pbuf -{ - /** pointer to the actual data in the buffer */ - void *payload; - rt_uint16_t len; -}; -#endif -/* Initializes the pbuf module. This call is empty for now, but may not be in future. */ - - -struct pbuf *pbuf_alloc(pbuf_layer l, u16_t size, pbuf_type type); - -u8_t pbuf_header(struct pbuf *p, s16_t header_size); - -u8_t pbuf_free(struct pbuf *p); - -#endif /* __UIP_PBUF_H__ */ diff --git a/components/net/uip/rt-thread/uip_tcpip.c b/components/net/uip/rt-thread/uip_tcpip.c deleted file mode 100644 index 9e65a3c18a03d700696e2599fb959d11bc1d2c99..0000000000000000000000000000000000000000 --- a/components/net/uip/rt-thread/uip_tcpip.c +++ /dev/null @@ -1,41 +0,0 @@ -#include "uip_pbuf.h" -#include "uip-conf.h" -#include "rtdef.h" -#include "uip.h" -#include "uip_arp.h" -#include "uip_netif.h" - -err_t -tcpip_input(struct pbuf *p, struct netif *inp) -{ - int i; - u8_t *pdata; - if (uip_len) - { - uip_arp_out(); - if (( pdata =(u8_t*)rt_malloc(1500*sizeof(u8_t))) == RT_NULL) - { - pbuf_free(p); - return 1; - } - for (i=0; i < (UIP_LLH_LEN + 40); ++i) // 14+40 =54 - { - pdata[i] = uip_buf[i]; /* get dest an src ipaddr */ - } - // Copy the data portion part - for(; i < uip_len; ++i) - { - pdata[i] = uip_appdata[i - UIP_LLH_LEN - 40 ]; - } - p ->payload = pdata; - p->len = uip_len; - inp->linkoutput(inp,p); - rt_free(pdata); - return 1; - } - else - { - pbuf_free(p); - return 0; - } -} \ No newline at end of file diff --git a/components/net/uip/uip-1.0-changelog.txt b/components/net/uip/uip-1.0-changelog.txt deleted file mode 100644 index 1e6c61cf80eec207ffe41966e9dff1c3223e4d25..0000000000000000000000000000000000000000 --- a/components/net/uip/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/components/net/uip/unix/Makefile b/components/net/uip/unix/Makefile deleted file mode 100644 index ed64927b89fef891782dd748388a5cb9ddd8e37e..0000000000000000000000000000000000000000 --- a/components/net/uip/unix/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -# 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: Makefile,v 1.13 2006/06/11 21:55:03 adam Exp $ -# - -all: uip - -CC = gcc -AR = ar -APPS = webserver -CFLAGS = -Wall -g -I../uip -I. -fpack-struct -Os --include ../uip/Makefile.include - -uip: $(addprefix $(OBJECTDIR)/, main.o tapdev.o clock-arch.o) apps.a uip.a - -clean: - rm -fr *.o *~ *core uip $(OBJECTDIR) *.a diff --git a/components/net/uip/unix/clock-arch.c b/components/net/uip/unix/clock-arch.c deleted file mode 100644 index d140aaf785d9e3bac75f99a40e60fd924c1cb1b3..0000000000000000000000000000000000000000 --- a/components/net/uip/unix/clock-arch.c +++ /dev/null @@ -1,55 +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.c,v 1.2 2006/06/12 08:00:31 adam Exp $ - */ - -/** - * \file - * Implementation of architecture-specific clock functionality - * \author - * Adam Dunkels - */ - -#include "clock-arch.h" -#include - -/*---------------------------------------------------------------------------*/ -clock_time_t -clock_time(void) -{ - struct timeval tv; - struct timezone tz; - - gettimeofday(&tv, &tz); - - return tv.tv_sec * 1000 + tv.tv_usec / 1000; -} -/*---------------------------------------------------------------------------*/ diff --git a/components/net/uip/unix/clock-arch.h b/components/net/uip/unix/clock-arch.h deleted file mode 100644 index e51eee934f84f066a334d92152317f9a6353cc5a..0000000000000000000000000000000000000000 --- a/components/net/uip/unix/clock-arch.h +++ /dev/null @@ -1,40 +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__ - -typedef int clock_time_t; -#define CLOCK_CONF_SECOND 1000 - -#endif /* __CLOCK_ARCH_H__ */ diff --git a/components/net/uip/unix/main.c b/components/net/uip/unix/main.c deleted file mode 100644 index e4130e9dd9d376d6ed7abffaf660c44261c3f87a..0000000000000000000000000000000000000000 --- a/components/net/uip/unix/main.c +++ /dev/null @@ -1,218 +0,0 @@ -/* - * 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Adam Dunkels. - * 4. 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: main.c,v 1.16 2006/06/11 21:55:03 adam Exp $ - * - */ - - -#include "uip.h" -#include "uip_arp.h" -#include "tapdev.h" - -#include "timer.h" - -#define BUF ((struct uip_eth_hdr *)&uip_buf[0]) - -#ifndef NULL -#define NULL (void *)0 -#endif /* NULL */ - -/*---------------------------------------------------------------------------*/ -int -main(void) -{ - int i; - uip_ipaddr_t ipaddr; - struct timer periodic_timer, arp_timer; - - timer_set(&periodic_timer, CLOCK_SECOND / 2); - timer_set(&arp_timer, CLOCK_SECOND * 10); - - tapdev_init(); - uip_init(); - - uip_ipaddr(ipaddr, 192,168,0,2); - uip_sethostaddr(ipaddr); - uip_ipaddr(ipaddr, 192,168,0,1); - uip_setdraddr(ipaddr); - uip_ipaddr(ipaddr, 255,255,255,0); - uip_setnetmask(ipaddr); - - httpd_init(); - - /* telnetd_init();*/ - - /* hello_world_init();*/ - - /* { - u8_t mac[6] = {1,2,3,4,5,6}; - dhcpc_init(&mac, 6); - }*/ - - /*uip_ipaddr(ipaddr, 127,0,0,1); - smtp_configure("localhost", ipaddr); - SMTP_SEND("adam@sics.se", NULL, "uip-testing@example.com", - "Testing SMTP from uIP", - "Test message sent by uIP\r\n");*/ - - /* - webclient_init(); - resolv_init(); - uip_ipaddr(ipaddr, 195,54,122,204); - resolv_conf(ipaddr); - resolv_query("www.sics.se");*/ - - - - while(1) { - uip_len = tapdev_read(); - if(uip_len > 0) { - if(BUF->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(); - tapdev_send(); - } - } else if(BUF->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) { - tapdev_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(); - tapdev_send(); - } - } - -#if UIP_UDP - for(i = 0; i < UIP_UDP_CONNS; i++) { - uip_udp_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(); - tapdev_send(); - } - } -#endif /* UIP_UDP */ - - /* Call the ARP timer function every 10 seconds. */ - if(timer_expired(&arp_timer)) { - timer_reset(&arp_timer); - uip_arp_timer(); - } - } - } - return 0; -} -/*---------------------------------------------------------------------------*/ -void -uip_log(char *m) -{ - printf("uIP log message: %s\n", m); -} -void -resolv_found(char *name, u16_t *ipaddr) -{ - u16_t *ipaddr2; - - if(ipaddr == NULL) { - printf("Host '%s' not found.\n", name); - } else { - printf("Found name '%s' = %d.%d.%d.%d\n", name, - htons(ipaddr[0]) >> 8, - htons(ipaddr[0]) & 0xff, - htons(ipaddr[1]) >> 8, - htons(ipaddr[1]) & 0xff); - /* webclient_get("www.sics.se", 80, "/~adam/uip");*/ - } -} -#ifdef __DHCPC_H__ -void -dhcpc_configured(const struct dhcpc_state *s) -{ - uip_sethostaddr(s->ipaddr); - uip_setnetmask(s->netmask); - uip_setdraddr(s->default_router); - resolv_conf(s->dnsaddr); -} -#endif /* __DHCPC_H__ */ -void -smtp_done(unsigned char code) -{ - printf("SMTP done with code %d\n", code); -} -void -webclient_closed(void) -{ - printf("Webclient: connection closed\n"); -} -void -webclient_aborted(void) -{ - printf("Webclient: connection aborted\n"); -} -void -webclient_timedout(void) -{ - printf("Webclient: connection timed out\n"); -} -void -webclient_connected(void) -{ - printf("Webclient: connected, waiting for data...\n"); -} -void -webclient_datahandler(char *data, u16_t len) -{ - printf("Webclient: got %d bytes of data.\n", len); -} -/*---------------------------------------------------------------------------*/ diff --git a/components/net/uip/unix/tapdev.c b/components/net/uip/unix/tapdev.c deleted file mode 100644 index 417b2888032fa1438da83479c294f1f10703ea9d..0000000000000000000000000000000000000000 --- a/components/net/uip/unix/tapdev.c +++ /dev/null @@ -1,152 +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. - * - * Author: Adam Dunkels - * - * $Id: tapdev.c,v 1.8 2006/06/07 08:39:58 adam Exp $ - */ - -#define UIP_DRIPADDR0 192 -#define UIP_DRIPADDR1 168 -#define UIP_DRIPADDR2 0 -#define UIP_DRIPADDR3 1 - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#ifdef linux -#include -#include -#include -#define DEVTAP "/dev/net/tun" -#else /* linux */ -#define DEVTAP "/dev/tap0" -#endif /* linux */ - -#include "uip.h" - -static int drop = 0; -static int fd; - - -/*---------------------------------------------------------------------------*/ -void -tapdev_init(void) -{ - char buf[1024]; - - fd = open(DEVTAP, O_RDWR); - if(fd == -1) { - perror("tapdev: tapdev_init: open"); - exit(1); - } - -#ifdef linux - { - struct ifreq ifr; - memset(&ifr, 0, sizeof(ifr)); - ifr.ifr_flags = IFF_TAP|IFF_NO_PI; - if (ioctl(fd, TUNSETIFF, (void *) &ifr) < 0) { - perror(buf); - exit(1); - } - } -#endif /* Linux */ - - snprintf(buf, sizeof(buf), "ifconfig tap0 inet %d.%d.%d.%d", - UIP_DRIPADDR0, UIP_DRIPADDR1, UIP_DRIPADDR2, UIP_DRIPADDR3); - system(buf); - -} -/*---------------------------------------------------------------------------*/ -unsigned int -tapdev_read(void) -{ - fd_set fdset; - struct timeval tv, now; - int ret; - - tv.tv_sec = 0; - tv.tv_usec = 1000; - - - FD_ZERO(&fdset); - FD_SET(fd, &fdset); - - ret = select(fd + 1, &fdset, NULL, NULL, &tv); - if(ret == 0) { - return 0; - } - ret = read(fd, uip_buf, UIP_BUFSIZE); - if(ret == -1) { - perror("tap_dev: tapdev_read: read"); - } - - /* printf("--- tap_dev: tapdev_read: read %d bytes\n", ret);*/ - /* { - int i; - for(i = 0; i < 20; i++) { - printf("%x ", uip_buf[i]); - } - printf("\n"); - }*/ - /* check_checksum(uip_buf, ret);*/ - return ret; -} -/*---------------------------------------------------------------------------*/ -void -tapdev_send(void) -{ - int ret; - /* printf("tapdev_send: sending %d bytes\n", size);*/ - /* check_checksum(uip_buf, size);*/ - - /* drop++; - if(drop % 8 == 7) { - printf("Dropped a packet!\n"); - return; - }*/ - ret = write(fd, uip_buf, uip_len); - if(ret == -1) { - perror("tap_dev: tapdev_send: writev"); - exit(1); - } -} -/*---------------------------------------------------------------------------*/ diff --git a/components/net/uip/unix/tapdev.h b/components/net/uip/unix/tapdev.h deleted file mode 100644 index 280bc52b725e0e61ddb96b15fe5a05dce422894f..0000000000000000000000000000000000000000 --- a/components/net/uip/unix/tapdev.h +++ /dev/null @@ -1,45 +0,0 @@ -/* - * 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. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Adam Dunkels. - * 4. 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: tapdev.h,v 1.1 2002/01/10 06:22:56 adam Exp $ - * - */ - -#ifndef __TAPDEV_H__ -#define __TAPDEV_H__ - -void tapdev_init(void); -unsigned int tapdev_read(void); -void tapdev_send(void); - -#endif /* __TAPDEV_H__ */ diff --git a/components/net/uip/unix/uip-conf.h b/components/net/uip/unix/uip-conf.h deleted file mode 100644 index 2878c85b0d1bb574e0073c149cd54ab6a23c78be..0000000000000000000000000000000000000000 --- a/components/net/uip/unix/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 420 - -/** - * CPU byte order. - * - * \hideinitializer - */ -#define UIP_CONF_BYTE_ORDER LITTLE_ENDIAN - -/** - * Logging on or off - * - * \hideinitializer - */ -#define UIP_CONF_LOGGING 1 - -/** - * 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/include/rtdbg.h b/include/rtdbg.h index c0a4e682221e05a5fc036caf5585883081b360be..6a6ea3d670fbaab5028fd7b52038dbe6f7b62b11 100644 --- a/include/rtdbg.h +++ b/include/rtdbg.h @@ -178,6 +178,8 @@ extern "C" { #define LOG_RAW(...) dbg_raw(__VA_ARGS__) +#define LOG_HEX(name, width, buf, size) + #endif /* defined(RT_USING_ULOG) && define(DBG_ENABLE) */ #ifdef __cplusplus diff --git a/include/rtdef.h b/include/rtdef.h index a0d964bcb5c8fe4afcfbb6e7e23c9d16d8aba276..f5a09f815b9ce13211c91941dcc0516245778627 100644 --- a/include/rtdef.h +++ b/include/rtdef.h @@ -1044,6 +1044,10 @@ struct rt_device_blk_sectors #define RTGRAPHIC_CTRL_GET_INFO 3 #define RTGRAPHIC_CTRL_SET_MODE 4 #define RTGRAPHIC_CTRL_GET_EXT 5 +#define RTGRAPHIC_CTRL_SET_BRIGHTNESS 6 +#define RTGRAPHIC_CTRL_GET_BRIGHTNESS 7 +#define RTGRAPHIC_CTRL_GET_MODE 8 +#define RTGRAPHIC_CTRL_GET_STATUS 9 /* graphic deice */ enum @@ -1060,9 +1064,7 @@ enum RTGRAPHIC_PIXEL_FORMAT_RGB888, RTGRAPHIC_PIXEL_FORMAT_ARGB888, RTGRAPHIC_PIXEL_FORMAT_ABGR888, - RTGRAPHIC_PIXEL_FORMAT_ARGB565, - RTGRAPHIC_PIXEL_FORMAT_ALPHA, - RTGRAPHIC_PIXEL_FORMAT_COLOR, + RTGRAPHIC_PIXEL_FORMAT_RESERVED, }; /** @@ -1077,7 +1079,7 @@ struct rt_device_graphic_info { rt_uint8_t pixel_format; /**< graphic format */ rt_uint8_t bits_per_pixel; /**< bits per pixel */ - rt_uint16_t reserved; /**< reserved field */ + rt_uint16_t pitch; /**< bytes per line */ rt_uint16_t width; /**< width of graphic device */ rt_uint16_t height; /**< height of graphic device */ diff --git a/src/thread.c b/src/thread.c index 402ed66acb9c63a2569020a25c111b45152d84b3..34e96077d1a3f4fe653cb4df04932f0baf955c1e 100644 --- a/src/thread.c +++ b/src/thread.c @@ -573,6 +573,7 @@ rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t inc_tick) { register rt_base_t level; struct rt_thread *thread; + rt_tick_t cur_tick; RT_ASSERT(tick != RT_NULL); @@ -584,15 +585,19 @@ rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t inc_tick) /* disable interrupt */ level = rt_hw_interrupt_disable(); - if (rt_tick_get() - *tick < inc_tick) + cur_tick = rt_tick_get(); + if (cur_tick - *tick < inc_tick) { - *tick = *tick + inc_tick - rt_tick_get(); + rt_tick_t left_tick; + + *tick += inc_tick; + left_tick = *tick - cur_tick; /* suspend thread */ rt_thread_suspend(thread); /* reset the timeout of thread timer and start it */ - rt_timer_control(&(thread->thread_timer), RT_TIMER_CTRL_SET_TIME, tick); + rt_timer_control(&(thread->thread_timer), RT_TIMER_CTRL_SET_TIME, &left_tick); rt_timer_start(&(thread->thread_timer)); /* enable interrupt */ @@ -608,12 +613,10 @@ rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t inc_tick) } else { + *tick = cur_tick; rt_hw_interrupt_enable(level); } - /* get the wakeup tick */ - *tick = rt_tick_get(); - return RT_EOK; } RTM_EXPORT(rt_thread_delay_until);