From a3de7e8f042804935b95a0f89600e0da43afe594 Mon Sep 17 00:00:00 2001 From: hathach Date: Fri, 15 Feb 2019 01:55:07 +0700 Subject: [PATCH] remove SD 6.1.0 files --- .../s132_nrf52_6.1.0_API/include/ble.h | 667 -- .../s132_nrf52_6.1.0_API/include/ble_err.h | 93 - .../s132_nrf52_6.1.0_API/include/ble_gap.h | 2679 ----- .../s132_nrf52_6.1.0_API/include/ble_gatt.h | 229 - .../s132_nrf52_6.1.0_API/include/ble_gattc.h | 715 -- .../s132_nrf52_6.1.0_API/include/ble_gatts.h | 845 -- .../s132_nrf52_6.1.0_API/include/ble_hci.h | 135 - .../s132_nrf52_6.1.0_API/include/ble_l2cap.h | 506 - .../s132_nrf52_6.1.0_API/include/ble_ranges.h | 156 - .../s132_nrf52_6.1.0_API/include/ble_types.h | 215 - .../include/nrf52/nrf_mbr.h | 241 - .../s132_nrf52_6.1.0_API/include/nrf_error.h | 90 - .../include/nrf_error_sdm.h | 70 - .../include/nrf_error_soc.h | 85 - .../s132_nrf52_6.1.0_API/include/nrf_nvic.h | 491 - .../s132_nrf52_6.1.0_API/include/nrf_sdm.h | 367 - .../s132_nrf52_6.1.0_API/include/nrf_soc.h | 1007 -- .../s132_nrf52_6.1.0_API/include/nrf_svc.h | 90 - .../s132_nrf52_6.1.0_license-agreement.txt | 35 - .../s132_nrf52_6.1.0_softdevice.hex | 9426 ---------------- .../s140_nrf52_6.1.0_API/include/ble.h | 667 -- .../s140_nrf52_6.1.0_API/include/ble_err.h | 93 - .../s140_nrf52_6.1.0_API/include/ble_gap.h | 2691 ----- .../s140_nrf52_6.1.0_API/include/ble_gatt.h | 229 - .../s140_nrf52_6.1.0_API/include/ble_gattc.h | 715 -- .../s140_nrf52_6.1.0_API/include/ble_gatts.h | 845 -- .../s140_nrf52_6.1.0_API/include/ble_hci.h | 135 - .../s140_nrf52_6.1.0_API/include/ble_l2cap.h | 506 - .../s140_nrf52_6.1.0_API/include/ble_ranges.h | 156 - .../s140_nrf52_6.1.0_API/include/ble_types.h | 215 - .../include/nrf52/nrf_mbr.h | 242 - .../s140_nrf52_6.1.0_API/include/nrf_error.h | 90 - .../include/nrf_error_sdm.h | 70 - .../include/nrf_error_soc.h | 85 - .../s140_nrf52_6.1.0_API/include/nrf_nvic.h | 491 - .../s140_nrf52_6.1.0_API/include/nrf_sdm.h | 367 - .../s140_nrf52_6.1.0_API/include/nrf_soc.h | 1079 -- .../s140_nrf52_6.1.0_API/include/nrf_svc.h | 90 - .../s140_nrf52_6.1.0_license-agreement.txt | 35 - .../s140_nrf52_6.1.0_softdevice.hex | 9614 ----------------- 40 files changed, 36557 deletions(-) delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_err.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gap.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gatt.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gattc.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gatts.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_hci.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_l2cap.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_ranges.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_types.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf52/nrf_mbr.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error_sdm.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error_soc.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_nvic.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_sdm.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_soc.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_svc.h delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_license-agreement.txt delete mode 100644 lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_softdevice.hex delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_err.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gap.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gatt.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gattc.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gatts.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_hci.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_l2cap.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_ranges.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_types.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf52/nrf_mbr.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error_sdm.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error_soc.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_nvic.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_sdm.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_soc.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_svc.h delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_license-agreement.txt delete mode 100644 lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_softdevice.hex diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble.h deleted file mode 100644 index da1a06b..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble.h +++ /dev/null @@ -1,667 +0,0 @@ -/* - * Copyright (c) 2012 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_COMMON BLE SoftDevice Common - @{ - @defgroup ble_api Events, type definitions and API calls - @{ - - @brief Module independent events, type definitions and API calls for the BLE SoftDevice. - - */ - -#ifndef BLE_H__ -#define BLE_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_err.h" -#include "ble_gap.h" -#include "ble_l2cap.h" -#include "ble_gatt.h" -#include "ble_gattc.h" -#include "ble_gatts.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_COMMON_ENUMERATIONS Enumerations - * @{ */ - -/** - * @brief Common API SVC numbers. - */ -enum BLE_COMMON_SVCS -{ - SD_BLE_ENABLE = BLE_SVC_BASE, /**< Enable and initialize the BLE stack */ - SD_BLE_EVT_GET, /**< Get an event from the pending events queue. */ - SD_BLE_UUID_VS_ADD, /**< Add a Vendor Specific base UUID. */ - SD_BLE_UUID_DECODE, /**< Decode UUID bytes. */ - SD_BLE_UUID_ENCODE, /**< Encode UUID bytes. */ - SD_BLE_VERSION_GET, /**< Get the local version information (company ID, Link Layer Version, Link Layer Subversion). */ - SD_BLE_USER_MEM_REPLY, /**< User Memory Reply. */ - SD_BLE_OPT_SET, /**< Set a BLE option. */ - SD_BLE_OPT_GET, /**< Get a BLE option. */ - SD_BLE_CFG_SET, /**< Add a configuration to the BLE stack. */ - SD_BLE_UUID_VS_REMOVE, /**< Remove a Vendor Specific base UUID. */ -}; - -/** - * @brief BLE Module Independent Event IDs. - */ -enum BLE_COMMON_EVTS -{ - BLE_EVT_USER_MEM_REQUEST = BLE_EVT_BASE + 0, /**< User Memory request. @ref ble_evt_user_mem_request_t */ - BLE_EVT_USER_MEM_RELEASE = BLE_EVT_BASE + 1, /**< User Memory release. @ref ble_evt_user_mem_release_t */ -}; - -/**@brief BLE Connection Configuration IDs. - * - * IDs that uniquely identify a connection configuration. - */ -enum BLE_CONN_CFGS -{ - BLE_CONN_CFG_GAP = BLE_CONN_CFG_BASE + 0, /**< BLE GAP specific connection configuration. */ - BLE_CONN_CFG_GATTC = BLE_CONN_CFG_BASE + 1, /**< BLE GATTC specific connection configuration. */ - BLE_CONN_CFG_GATTS = BLE_CONN_CFG_BASE + 2, /**< BLE GATTS specific connection configuration. */ - BLE_CONN_CFG_GATT = BLE_CONN_CFG_BASE + 3, /**< BLE GATT specific connection configuration. */ - BLE_CONN_CFG_L2CAP = BLE_CONN_CFG_BASE + 4, /**< BLE L2CAP specific connection configuration. */ -}; - -/**@brief BLE Common Configuration IDs. - * - * IDs that uniquely identify a common configuration. - */ -enum BLE_COMMON_CFGS -{ - BLE_COMMON_CFG_VS_UUID = BLE_CFG_BASE, /**< Vendor specific base UUID configuration */ -}; - -/**@brief Common Option IDs. - * IDs that uniquely identify a common option. - */ -enum BLE_COMMON_OPTS -{ - BLE_COMMON_OPT_PA_LNA = BLE_OPT_BASE + 0, /**< PA and LNA options */ - BLE_COMMON_OPT_CONN_EVT_EXT = BLE_OPT_BASE + 1, /**< Extended connection events option */ - BLE_COMMON_OPT_EXTENDED_RC_CAL = BLE_OPT_BASE + 2, /**< Extended RC calibration option */ -}; - -/** @} */ - -/** @addtogroup BLE_COMMON_DEFINES Defines - * @{ */ - -/** @brief Required pointer alignment for BLE Events. -*/ -#define BLE_EVT_PTR_ALIGNMENT 4 - -/** @brief Leaves the maximum of the two arguments. -*/ -#define BLE_MAX(a, b) ((a) < (b) ? (b) : (a)) - -/** @brief Maximum possible length for BLE Events. - * @note The highest value used for @ref ble_gatt_conn_cfg_t::att_mtu in any connection configuration shall be used as a parameter. - * If that value has not been configured for any connections then @ref BLE_GATT_ATT_MTU_DEFAULT must be used instead. -*/ -#define BLE_EVT_LEN_MAX(ATT_MTU) ( \ - offsetof(ble_evt_t, evt.gattc_evt.params.prim_srvc_disc_rsp.services) + ((ATT_MTU) - 1) / 4 * sizeof(ble_gattc_service_t) \ -) - -/** @defgroup BLE_USER_MEM_TYPES User Memory Types - * @{ */ -#define BLE_USER_MEM_TYPE_INVALID 0x00 /**< Invalid User Memory Types. */ -#define BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES 0x01 /**< User Memory for GATTS queued writes. */ -/** @} */ - -/** @defgroup BLE_UUID_VS_COUNTS Vendor Specific base UUID counts - * @{ - */ -#define BLE_UUID_VS_COUNT_DEFAULT 10 /**< Default VS UUID count. */ -#define BLE_UUID_VS_COUNT_MAX 254 /**< Maximum VS UUID count. */ -/** @} */ - -/** @defgroup BLE_COMMON_CFG_DEFAULTS Configuration defaults. - * @{ - */ -#define BLE_CONN_CFG_TAG_DEFAULT 0 /**< Default configuration tag, SoftDevice default connection configuration. */ - -/** @} */ - -/** @} */ - -/** @addtogroup BLE_COMMON_STRUCTURES Structures - * @{ */ - -/**@brief User Memory Block. */ -typedef struct -{ - uint8_t *p_mem; /**< Pointer to the start of the user memory block. */ - uint16_t len; /**< Length in bytes of the user memory block. */ -} ble_user_mem_block_t; - -/**@brief Event structure for @ref BLE_EVT_USER_MEM_REQUEST. */ -typedef struct -{ - uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ -} ble_evt_user_mem_request_t; - -/**@brief Event structure for @ref BLE_EVT_USER_MEM_RELEASE. */ -typedef struct -{ - uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ - ble_user_mem_block_t mem_block; /**< User memory block */ -} ble_evt_user_mem_release_t; - -/**@brief Event structure for events not associated with a specific function module. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which this event occurred. */ - union - { - ble_evt_user_mem_request_t user_mem_request; /**< User Memory Request Event Parameters. */ - ble_evt_user_mem_release_t user_mem_release; /**< User Memory Release Event Parameters. */ - } params; /**< Event parameter union. */ -} ble_common_evt_t; - -/**@brief BLE Event header. */ -typedef struct -{ - uint16_t evt_id; /**< Value from a BLE__EVT series. */ - uint16_t evt_len; /**< Length in octets including this header. */ -} ble_evt_hdr_t; - -/**@brief Common BLE Event type, wrapping the module specific event reports. */ -typedef struct -{ - ble_evt_hdr_t header; /**< Event header. */ - union - { - ble_common_evt_t common_evt; /**< Common Event, evt_id in BLE_EVT_* series. */ - ble_gap_evt_t gap_evt; /**< GAP originated event, evt_id in BLE_GAP_EVT_* series. */ - ble_gattc_evt_t gattc_evt; /**< GATT client originated event, evt_id in BLE_GATTC_EVT* series. */ - ble_gatts_evt_t gatts_evt; /**< GATT server originated event, evt_id in BLE_GATTS_EVT* series. */ - ble_l2cap_evt_t l2cap_evt; /**< L2CAP originated event, evt_id in BLE_L2CAP_EVT* series. */ - } evt; /**< Event union. */ -} ble_evt_t; - - -/** - * @brief Version Information. - */ -typedef struct -{ - uint8_t version_number; /**< Link Layer Version number. See https://www.bluetooth.org/en-us/specification/assigned-numbers/link-layer for assigned values. */ - uint16_t company_id; /**< Company ID, Nordic Semiconductor's company ID is 89 (0x0059) (https://www.bluetooth.org/apps/content/Default.aspx?doc_id=49708). */ - uint16_t subversion_number; /**< Link Layer Sub Version number, corresponds to the SoftDevice Config ID or Firmware ID (FWID). */ -} ble_version_t; - -/** - * @brief Configuration parameters for the PA and LNA. - */ -typedef struct -{ - uint8_t enable :1; /**< Enable toggling for this amplifier */ - uint8_t active_high :1; /**< Set the pin to be active high */ - uint8_t gpio_pin :6; /**< The GPIO pin to toggle for this amplifier */ -} ble_pa_lna_cfg_t; - -/** - * @brief PA & LNA GPIO toggle configuration - * - * This option configures the SoftDevice to toggle pins when the radio is active for use with a power amplifier and/or - * a low noise amplifier. - * - * Toggling the pins is achieved by using two PPI channels and a GPIOTE channel. The hardware channel IDs are provided - * by the application and should be regarded as reserved as long as any PA/LNA toggling is enabled. - * - * @note @ref sd_ble_opt_get is not supported for this option. - * @note Setting this option while the radio is in use (i.e. any of the roles are active) may have undefined consequences - * and must be avoided by the application. - */ -typedef struct -{ - ble_pa_lna_cfg_t pa_cfg; /**< Power Amplifier configuration */ - ble_pa_lna_cfg_t lna_cfg; /**< Low Noise Amplifier configuration */ - - uint8_t ppi_ch_id_set; /**< PPI channel used for radio pin setting */ - uint8_t ppi_ch_id_clr; /**< PPI channel used for radio pin clearing */ - uint8_t gpiote_ch_id; /**< GPIOTE channel used for radio pin toggling */ -} ble_common_opt_pa_lna_t; - -/** - * @brief Configuration of extended BLE connection events. - * - * When enabled the SoftDevice will dynamically extend the connection event when possible. - * - * The connection event length is controlled by the connection configuration as set by @ref ble_gap_conn_cfg_t::event_length. - * The connection event can be extended if there is time to send another packet pair before the start of the next connection interval, - * and if there are no conflicts with other BLE roles requesting radio time. - * - * @note @ref sd_ble_opt_get is not supported for this option. - */ -typedef struct -{ - uint8_t enable : 1; /**< Enable extended BLE connection events, disabled by default. */ -} ble_common_opt_conn_evt_ext_t; - -/** - * @brief Enable/disable extended RC calibration. - * - * If extended RC calibration is enabled and the internal RC oscillator (@ref NRF_CLOCK_LF_SRC_RC) is used as the SoftDevice - * LFCLK source, the SoftDevice as a peripheral will by default try to increase the receive window if two consecutive packets - * are not received. If it turns out that the packets were not received due to clock drift, the RC calibration is started. - * This calibration comes in addition to the periodic calibration that is configured by @ref sd_softdevice_enable(). When - * using only peripheral connections, the periodic calibration can therefore be configured with a much longer interval as the - * peripheral will be able to detect and adjust automatically to clock drift, and calibrate on demand. - * - * If extended RC calibration is disabled and the internal RC oscillator is used as the SoftDevice LFCLK source, the - * RC oscillator is calibrated periodically as configured by @ref sd_softdevice_enable(). - * - * @note @ref sd_ble_opt_get is not supported for this option. - */ -typedef struct -{ - uint8_t enable : 1; /**< Enable extended RC calibration, enabled by default. */ -} ble_common_opt_extended_rc_cal_t; - -/**@brief Option structure for common options. */ -typedef union -{ - ble_common_opt_pa_lna_t pa_lna; /**< Parameters for controlling PA and LNA pin toggling. */ - ble_common_opt_conn_evt_ext_t conn_evt_ext; /**< Parameters for enabling extended connection events. */ - ble_common_opt_extended_rc_cal_t extended_rc_cal; /**< Parameters for enabling extended RC calibration. */ -} ble_common_opt_t; - -/**@brief Common BLE Option type, wrapping the module specific options. */ -typedef union -{ - ble_common_opt_t common_opt; /**< COMMON options, opt_id in @ref BLE_COMMON_OPTS series. */ - ble_gap_opt_t gap_opt; /**< GAP option, opt_id in @ref BLE_GAP_OPTS series. */ -} ble_opt_t; - -/**@brief BLE connection configuration type, wrapping the module specific configurations, set with - * @ref sd_ble_cfg_set. - * - * @note Connection configurations don't have to be set. - * In the case that no configurations has been set, or fewer connection configurations has been set than enabled connections, - * the default connection configuration will be automatically added for the remaining connections. - * When creating connections with the default configuration, @ref BLE_CONN_CFG_TAG_DEFAULT should be used in - * place of @ref ble_conn_cfg_t::conn_cfg_tag. - * - * @sa sd_ble_gap_adv_start() - * @sa sd_ble_gap_connect() - * - * @mscs - * @mmsc{@ref BLE_CONN_CFG} - * @endmscs - - */ -typedef struct -{ - uint8_t conn_cfg_tag; /**< The application chosen tag it can use with the - @ref sd_ble_gap_adv_start() and @ref sd_ble_gap_connect() calls - to select this configuration when creating a connection. - Must be different for all connection configurations added and not @ref BLE_CONN_CFG_TAG_DEFAULT. */ - union { - ble_gap_conn_cfg_t gap_conn_cfg; /**< GAP connection configuration, cfg_id is @ref BLE_CONN_CFG_GAP. */ - ble_gattc_conn_cfg_t gattc_conn_cfg; /**< GATTC connection configuration, cfg_id is @ref BLE_CONN_CFG_GATTC. */ - ble_gatts_conn_cfg_t gatts_conn_cfg; /**< GATTS connection configuration, cfg_id is @ref BLE_CONN_CFG_GATTS. */ - ble_gatt_conn_cfg_t gatt_conn_cfg; /**< GATT connection configuration, cfg_id is @ref BLE_CONN_CFG_GATT. */ - ble_l2cap_conn_cfg_t l2cap_conn_cfg; /**< L2CAP connection configuration, cfg_id is @ref BLE_CONN_CFG_L2CAP. */ - } params; /**< Connection configuration union. */ -} ble_conn_cfg_t; - -/** - * @brief Configuration of Vendor Specific base UUIDs, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_INVALID_PARAM Too many UUIDs configured. - */ -typedef struct -{ - uint8_t vs_uuid_count; /**< Number of 128-bit Vendor Specific base UUID bases to allocate memory for. - Default value is @ref BLE_UUID_VS_COUNT_DEFAULT. Maximum value is - @ref BLE_UUID_VS_COUNT_MAX. */ -} ble_common_cfg_vs_uuid_t; - -/**@brief Common BLE Configuration type, wrapping the common configurations. */ -typedef union -{ - ble_common_cfg_vs_uuid_t vs_uuid_cfg; /**< Vendor Specific base UUID configuration, cfg_id is @ref BLE_COMMON_CFG_VS_UUID. */ -} ble_common_cfg_t; - -/**@brief BLE Configuration type, wrapping the module specific configurations. */ -typedef union -{ - ble_conn_cfg_t conn_cfg; /**< Connection specific configurations, cfg_id in @ref BLE_CONN_CFGS series. */ - ble_common_cfg_t common_cfg; /**< Global common configurations, cfg_id in @ref BLE_COMMON_CFGS series. */ - ble_gap_cfg_t gap_cfg; /**< Global GAP configurations, cfg_id in @ref BLE_GAP_CFGS series. */ - ble_gatts_cfg_t gatts_cfg; /**< Global GATTS configuration, cfg_id in @ref BLE_GATTS_CFGS series. */ -} ble_cfg_t; - -/** @} */ - -/** @addtogroup BLE_COMMON_FUNCTIONS Functions - * @{ */ - -/**@brief Enable the BLE stack - * - * @param[in, out] p_app_ram_base Pointer to a variable containing the start address of the - * application RAM region (APP_RAM_BASE). On return, this will - * contain the minimum start address of the application RAM region - * required by the SoftDevice for this configuration. - * - * @note The memory requirement for a specific configuration will not increase between SoftDevices - * with the same major version number. - * - * @note At runtime the IC's RAM is split into 2 regions: The SoftDevice RAM region is located - * between 0x20000000 and APP_RAM_BASE-1 and the application's RAM region is located between - * APP_RAM_BASE and the start of the call stack. - * - * @details This call initializes the BLE stack, no BLE related function other than @ref - * sd_ble_cfg_set can be called before this one. - * - * @mscs - * @mmsc{@ref BLE_COMMON_ENABLE} - * @endmscs - * - * @retval ::NRF_SUCCESS The BLE stack has been initialized successfully. - * @retval ::NRF_ERROR_INVALID_STATE The BLE stack had already been initialized and cannot be reinitialized. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. - * @retval ::NRF_ERROR_NO_MEM One or more of the following is true: - * - The amount of memory assigned to the SoftDevice by *p_app_ram_base is not - * large enough to fit this configuration's memory requirement. Check *p_app_ram_base - * and set the start address of the application RAM region accordingly. - * - Dynamic part of the SoftDevice RAM region is larger then 64 kB which - * is currently not supported. - * @retval ::NRF_ERROR_RESOURCES The total number of L2CAP Channels configured using @ref sd_ble_cfg_set is too large. - */ -SVCALL(SD_BLE_ENABLE, uint32_t, sd_ble_enable(uint32_t * p_app_ram_base)); - -/**@brief Add configurations for the BLE stack - * - * @param[in] cfg_id Config ID, see @ref BLE_CONN_CFGS, @ref BLE_COMMON_CFGS, @ref - * BLE_GAP_CFGS or @ref BLE_GATTS_CFGS. - * @param[in] p_cfg Pointer to a ble_cfg_t structure containing the configuration value. - * @param[in] app_ram_base The start address of the application RAM region (APP_RAM_BASE). - * See @ref sd_ble_enable for details about APP_RAM_BASE. - * - * @note The memory requirement for a specific configuration will not increase between SoftDevices - * with the same major version number. - * - * @note If a configuration is set more than once, the last one set is the one that takes effect on - * @ref sd_ble_enable. - * - * @note Any part of the BLE stack that is NOT configured with @ref sd_ble_cfg_set will have default - * configuration. - * - * @note @ref sd_ble_cfg_set may be called at any time when the SoftDevice is enabled (see @ref - * sd_softdevice_enable) while the BLE part of the SoftDevice is not enabled (see @ref - * sd_ble_enable). - * - * @note Error codes for the configurations are described in the configuration structs. - * - * @mscs - * @mmsc{@ref BLE_COMMON_ENABLE} - * @endmscs - * - * @retval ::NRF_SUCCESS The configuration has been added successfully. - * @retval ::NRF_ERROR_INVALID_STATE The BLE stack had already been initialized. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid cfg_id supplied. - * @retval ::NRF_ERROR_NO_MEM The amount of memory assigned to the SoftDevice by app_ram_base is not - * large enough to fit this configuration's memory requirement. - */ -SVCALL(SD_BLE_CFG_SET, uint32_t, sd_ble_cfg_set(uint32_t cfg_id, ble_cfg_t const * p_cfg, uint32_t app_ram_base)); - -/**@brief Get an event from the pending events queue. - * - * @param[out] p_dest Pointer to buffer to be filled in with an event, or NULL to retrieve the event length. - * This buffer must be aligned to the extend defined by @ref BLE_EVT_PTR_ALIGNMENT. - * The buffer should be interpreted as a @ref ble_evt_t struct. - * @param[in, out] p_len Pointer the length of the buffer, on return it is filled with the event length. - * - * @details This call allows the application to pull a BLE event from the BLE stack. The application is signaled that - * an event is available from the BLE stack by the triggering of the SD_EVT_IRQn interrupt. - * The application is free to choose whether to call this function from thread mode (main context) or directly from the - * Interrupt Service Routine that maps to SD_EVT_IRQn. In any case however, and because the BLE stack runs at a higher - * priority than the application, this function should be called in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) - * every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the BLE stack. Failure to do so - * could potentially leave events in the internal queue without the application being aware of this fact. - * - * Sizing the p_dest buffer is equally important, since the application needs to provide all the memory necessary for the event to - * be copied into application memory. If the buffer provided is not large enough to fit the entire contents of the event, - * @ref NRF_ERROR_DATA_SIZE will be returned and the application can then call again with a larger buffer size. - * The maximum possible event length is defined by @ref BLE_EVT_LEN_MAX. The application may also "peek" the event length - * by providing p_dest as a NULL pointer and inspecting the value of *p_len upon return: - * - * \code - * uint16_t len; - * errcode = sd_ble_evt_get(NULL, &len); - * \endcode - * - * @mscs - * @mmsc{@ref BLE_COMMON_IRQ_EVT_MSC} - * @mmsc{@ref BLE_COMMON_THREAD_EVT_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Event pulled and stored into the supplied buffer. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. - * @retval ::NRF_ERROR_NOT_FOUND No events ready to be pulled. - * @retval ::NRF_ERROR_DATA_SIZE Event ready but could not fit into the supplied buffer. - */ -SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t *p_dest, uint16_t *p_len)); - - -/**@brief Add a Vendor Specific base UUID. - * - * @details This call enables the application to add a Vendor Specific base UUID to the BLE stack's table, for later - * use with all other modules and APIs. This then allows the application to use the shorter, 24-bit @ref ble_uuid_t - * format when dealing with both 16-bit and 128-bit UUIDs without having to check for lengths and having split code - * paths. This is accomplished by extending the grouping mechanism that the Bluetooth SIG standard base UUID uses - * for all other 128-bit UUIDs. The type field in the @ref ble_uuid_t structure is an index (relative to - * @ref BLE_UUID_TYPE_VENDOR_BEGIN) to the table populated by multiple calls to this function, and the UUID field - * in the same structure contains the 2 bytes at indexes 12 and 13. The number of possible 128-bit UUIDs available to - * the application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536, - * although restricted to modifying bytes 12 and 13 for each of the entries in the supplied array. - * - * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by - * the 16-bit uuid field in @ref ble_uuid_t. - * - * @note If a UUID is already present in the BLE stack's internal table, the corresponding index will be returned in - * p_uuid_type along with an @ref NRF_SUCCESS error code. - * - * @param[in] p_vs_uuid Pointer to a 16-octet (128-bit) little endian Vendor Specific base UUID disregarding - * bytes 12 and 13. - * @param[out] p_uuid_type Pointer to a uint8_t where the type field in @ref ble_uuid_t corresponding to this UUID will be stored. - * - * @retval ::NRF_SUCCESS Successfully added the Vendor Specific base UUID. - * @retval ::NRF_ERROR_INVALID_ADDR If p_vs_uuid or p_uuid_type is NULL or invalid. - * @retval ::NRF_ERROR_NO_MEM If there are no more free slots for VS UUIDs. - */ -SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const *p_vs_uuid, uint8_t *p_uuid_type)); - - -/**@brief Remove a Vendor Specific base UUID. - * - * @details This call removes a Vendor Specific base UUID that has been added with @ref sd_ble_uuid_vs_add. This function allows - * the application to reuse memory allocated for Vendor Specific base UUIDs. - * - * @note Currently this function can only be called with a p_uuid_type set to @ref BLE_UUID_TYPE_UNKNOWN or the last added UUID type. - * - * @param[in] p_uuid_type Pointer to a uint8_t where the type field in @ref ble_uuid_t::type corresponds to the UUID type that - * shall be removed. If the type is set to @ref BLE_UUID_TYPE_UNKNOWN, or the pointer is NULL, the last - * Vendor Specific base UUID will be removed. - * @param[out] p_uuid_type Pointer to a uint8_t where the type field in @ref ble_uuid_t corresponds to the UUID type that was - * removed. If function returns with a failure, it contains the last type that is in use by the ATT Server. - * - * @retval ::NRF_SUCCESS Successfully removed the Vendor Specific base UUID. - * @retval ::NRF_ERROR_INVALID_ADDR If p_uuid_type is invalid. - * @retval ::NRF_ERROR_INVALID_PARAM If p_uuid_type points to a non-valid UUID type. - * @retval ::NRF_ERROR_FORBIDDEN If the Vendor Specific base UUID is in use by the ATT Server. - */ - -SVCALL(SD_BLE_UUID_VS_REMOVE, uint32_t, sd_ble_uuid_vs_remove(uint8_t *p_uuid_type)); - - -/** @brief Decode little endian raw UUID bytes (16-bit or 128-bit) into a 24 bit @ref ble_uuid_t structure. - * - * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared - * to the corresponding ones in each entry of the table of Vendor Specific base UUIDs populated with @ref sd_ble_uuid_vs_add - * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index - * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type. - * - * @note If the UUID length supplied is 2, then the type set by this call will always be @ref BLE_UUID_TYPE_BLE. - * - * @param[in] uuid_le_len Length in bytes of the buffer pointed to by p_uuid_le (must be 2 or 16 bytes). - * @param[in] p_uuid_le Pointer pointing to little endian raw UUID bytes. - * @param[out] p_uuid Pointer to a @ref ble_uuid_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Successfully decoded into the @ref ble_uuid_t structure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_LENGTH Invalid UUID length. - * @retval ::NRF_ERROR_NOT_FOUND For a 128-bit UUID, no match in the populated table of UUIDs. - */ -SVCALL(SD_BLE_UUID_DECODE, uint32_t, sd_ble_uuid_decode(uint8_t uuid_le_len, uint8_t const *p_uuid_le, ble_uuid_t *p_uuid)); - - -/** @brief Encode a @ref ble_uuid_t structure into little endian raw UUID bytes (16-bit or 128-bit). - * - * @note The pointer to the destination buffer p_uuid_le may be NULL, in which case only the validity and size of p_uuid is computed. - * - * @param[in] p_uuid Pointer to a @ref ble_uuid_t structure that will be encoded into bytes. - * @param[out] p_uuid_le_len Pointer to a uint8_t that will be filled with the encoded length (2 or 16 bytes). - * @param[out] p_uuid_le Pointer to a buffer where the little endian raw UUID bytes (2 or 16) will be stored. - * - * @retval ::NRF_SUCCESS Successfully encoded into the buffer. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid UUID type. - */ -SVCALL(SD_BLE_UUID_ENCODE, uint32_t, sd_ble_uuid_encode(ble_uuid_t const *p_uuid, uint8_t *p_uuid_le_len, uint8_t *p_uuid_le)); - - -/**@brief Get Version Information. - * - * @details This call allows the application to get the BLE stack version information. - * - * @param[out] p_version Pointer to a ble_version_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Version information stored successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy (typically doing a locally-initiated disconnection procedure). - */ -SVCALL(SD_BLE_VERSION_GET, uint32_t, sd_ble_version_get(ble_version_t *p_version)); - - -/**@brief Provide a user memory block. - * - * @note This call can only be used as a response to a @ref BLE_EVT_USER_MEM_REQUEST event issued to the application. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_block Pointer to a user memory block structure or NULL if memory is managed by the application. - * - * @mscs - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_PEER_CANCEL_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_NOAUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Successfully queued a response to the peer. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_LENGTH Invalid user memory block length supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection state or no user memory request pending. - */ -SVCALL(SD_BLE_USER_MEM_REPLY, uint32_t, sd_ble_user_mem_reply(uint16_t conn_handle, ble_user_mem_block_t const *p_block)); - -/**@brief Set a BLE option. - * - * @details This call allows the application to set the value of an option. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} - * @endmscs - * - * @param[in] opt_id Option ID, see @ref BLE_COMMON_OPTS and @ref BLE_GAP_OPTS. - * @param[in] p_opt Pointer to a ble_opt_t structure containing the option value. - * - * @retval ::NRF_SUCCESS Option set successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. - * @retval ::NRF_ERROR_INVALID_STATE Unable to set the parameter at this time. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy or the previous procedure has not completed. - */ -SVCALL(SD_BLE_OPT_SET, uint32_t, sd_ble_opt_set(uint32_t opt_id, ble_opt_t const *p_opt)); - - -/**@brief Get a BLE option. - * - * @details This call allows the application to retrieve the value of an option. - * - * @param[in] opt_id Option ID, see @ref BLE_COMMON_OPTS and @ref BLE_GAP_OPTS. - * @param[out] p_opt Pointer to a ble_opt_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Option retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. - * @retval ::NRF_ERROR_INVALID_STATE Unable to retrieve the parameter at this time. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy or the previous procedure has not completed. - * @retval ::NRF_ERROR_NOT_SUPPORTED This option is not supported. - * - */ -SVCALL(SD_BLE_OPT_GET, uint32_t, sd_ble_opt_get(uint32_t opt_id, ble_opt_t *p_opt)); - -/** @} */ -#ifdef __cplusplus -} -#endif -#endif /* BLE_H__ */ - -/** - @} - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_err.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_err.h deleted file mode 100644 index 1b4820d..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_err.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2012 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_COMMON - @{ - @addtogroup nrf_error - @{ - @ingroup BLE_COMMON - @} - - @defgroup ble_err General error codes - @{ - - @brief General error code definitions for the BLE API. - - @ingroup BLE_COMMON -*/ -#ifndef NRF_BLE_ERR_H__ -#define NRF_BLE_ERR_H__ - -#include "nrf_error.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* @defgroup BLE_ERRORS Error Codes - * @{ */ -#define BLE_ERROR_NOT_ENABLED (NRF_ERROR_STK_BASE_NUM+0x001) /**< @ref sd_ble_enable has not been called. */ -#define BLE_ERROR_INVALID_CONN_HANDLE (NRF_ERROR_STK_BASE_NUM+0x002) /**< Invalid connection handle. */ -#define BLE_ERROR_INVALID_ATTR_HANDLE (NRF_ERROR_STK_BASE_NUM+0x003) /**< Invalid attribute handle. */ -#define BLE_ERROR_INVALID_ADV_HANDLE (NRF_ERROR_STK_BASE_NUM+0x004) /**< Invalid advertising handle. */ -#define BLE_ERROR_INVALID_ROLE (NRF_ERROR_STK_BASE_NUM+0x005) /**< Invalid role. */ -#define BLE_ERROR_BLOCKED_BY_OTHER_LINKS (NRF_ERROR_STK_BASE_NUM+0x006) /**< The attempt to change link settings failed due to the scheduling of other links. */ -/** @} */ - - -/** @defgroup BLE_ERROR_SUBRANGES Module specific error code subranges - * @brief Assignment of subranges for module specific error codes. - * @note For specific error codes, see ble_.h or ble_error_.h. - * @{ */ -#define NRF_L2CAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x100) /**< L2CAP specific errors. */ -#define NRF_GAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x200) /**< GAP specific errors. */ -#define NRF_GATTC_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x300) /**< GATT client specific errors. */ -#define NRF_GATTS_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x400) /**< GATT server specific errors. */ -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif - - -/** - @} - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gap.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gap.h deleted file mode 100644 index 692a38e..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gap.h +++ /dev/null @@ -1,2679 +0,0 @@ -/* - * Copyright (c) 2011 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_GAP Generic Access Profile (GAP) - @{ - @brief Definitions and prototypes for the GAP interface. - */ - -#ifndef BLE_GAP_H__ -#define BLE_GAP_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_hci.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup BLE_GAP_ENUMERATIONS Enumerations - * @{ */ - -/**@brief GAP API SVC numbers. - */ -enum BLE_GAP_SVCS -{ - SD_BLE_GAP_ADDR_SET = BLE_GAP_SVC_BASE, /**< Set own Bluetooth Address. */ - SD_BLE_GAP_ADDR_GET = BLE_GAP_SVC_BASE + 1, /**< Get own Bluetooth Address. */ - SD_BLE_GAP_WHITELIST_SET = BLE_GAP_SVC_BASE + 2, /**< Set active whitelist. */ - SD_BLE_GAP_DEVICE_IDENTITIES_SET = BLE_GAP_SVC_BASE + 3, /**< Set device identity list. */ - SD_BLE_GAP_PRIVACY_SET = BLE_GAP_SVC_BASE + 4, /**< Set Privacy settings*/ - SD_BLE_GAP_PRIVACY_GET = BLE_GAP_SVC_BASE + 5, /**< Get Privacy settings*/ - SD_BLE_GAP_ADV_SET_CONFIGURE = BLE_GAP_SVC_BASE + 6, /**< Configure an advertising set. */ - SD_BLE_GAP_ADV_START = BLE_GAP_SVC_BASE + 7, /**< Start Advertising. */ - SD_BLE_GAP_ADV_STOP = BLE_GAP_SVC_BASE + 8, /**< Stop Advertising. */ - SD_BLE_GAP_CONN_PARAM_UPDATE = BLE_GAP_SVC_BASE + 9, /**< Connection Parameter Update. */ - SD_BLE_GAP_DISCONNECT = BLE_GAP_SVC_BASE + 10, /**< Disconnect. */ - SD_BLE_GAP_TX_POWER_SET = BLE_GAP_SVC_BASE + 11, /**< Set TX Power. */ - SD_BLE_GAP_APPEARANCE_SET = BLE_GAP_SVC_BASE + 12, /**< Set Appearance. */ - SD_BLE_GAP_APPEARANCE_GET = BLE_GAP_SVC_BASE + 13, /**< Get Appearance. */ - SD_BLE_GAP_PPCP_SET = BLE_GAP_SVC_BASE + 14, /**< Set PPCP. */ - SD_BLE_GAP_PPCP_GET = BLE_GAP_SVC_BASE + 15, /**< Get PPCP. */ - SD_BLE_GAP_DEVICE_NAME_SET = BLE_GAP_SVC_BASE + 16, /**< Set Device Name. */ - SD_BLE_GAP_DEVICE_NAME_GET = BLE_GAP_SVC_BASE + 17, /**< Get Device Name. */ - SD_BLE_GAP_AUTHENTICATE = BLE_GAP_SVC_BASE + 18, /**< Initiate Pairing/Bonding. */ - SD_BLE_GAP_SEC_PARAMS_REPLY = BLE_GAP_SVC_BASE + 19, /**< Reply with Security Parameters. */ - SD_BLE_GAP_AUTH_KEY_REPLY = BLE_GAP_SVC_BASE + 20, /**< Reply with an authentication key. */ - SD_BLE_GAP_LESC_DHKEY_REPLY = BLE_GAP_SVC_BASE + 21, /**< Reply with an LE Secure Connections DHKey. */ - SD_BLE_GAP_KEYPRESS_NOTIFY = BLE_GAP_SVC_BASE + 22, /**< Notify of a keypress during an authentication procedure. */ - SD_BLE_GAP_LESC_OOB_DATA_GET = BLE_GAP_SVC_BASE + 23, /**< Get the local LE Secure Connections OOB data. */ - SD_BLE_GAP_LESC_OOB_DATA_SET = BLE_GAP_SVC_BASE + 24, /**< Set the remote LE Secure Connections OOB data. */ - SD_BLE_GAP_ENCRYPT = BLE_GAP_SVC_BASE + 25, /**< Initiate encryption procedure. */ - SD_BLE_GAP_SEC_INFO_REPLY = BLE_GAP_SVC_BASE + 26, /**< Reply with Security Information. */ - SD_BLE_GAP_CONN_SEC_GET = BLE_GAP_SVC_BASE + 27, /**< Obtain connection security level. */ - SD_BLE_GAP_RSSI_START = BLE_GAP_SVC_BASE + 28, /**< Start reporting of changes in RSSI. */ - SD_BLE_GAP_RSSI_STOP = BLE_GAP_SVC_BASE + 29, /**< Stop reporting of changes in RSSI. */ - SD_BLE_GAP_SCAN_START = BLE_GAP_SVC_BASE + 30, /**< Start Scanning. */ - SD_BLE_GAP_SCAN_STOP = BLE_GAP_SVC_BASE + 31, /**< Stop Scanning. */ - SD_BLE_GAP_CONNECT = BLE_GAP_SVC_BASE + 32, /**< Connect. */ - SD_BLE_GAP_CONNECT_CANCEL = BLE_GAP_SVC_BASE + 33, /**< Cancel ongoing connection procedure. */ - SD_BLE_GAP_RSSI_GET = BLE_GAP_SVC_BASE + 34, /**< Get the last RSSI sample. */ - SD_BLE_GAP_PHY_UPDATE = BLE_GAP_SVC_BASE + 35, /**< Initiate or respond to a PHY Update Procedure. */ - SD_BLE_GAP_DATA_LENGTH_UPDATE = BLE_GAP_SVC_BASE + 36, /**< Initiate or respond to a Data Length Update Procedure. */ - SD_BLE_GAP_QOS_CHANNEL_SURVEY_START = BLE_GAP_SVC_BASE + 37, /**< Start Quality of Service (QoS) channel survey module. */ - SD_BLE_GAP_QOS_CHANNEL_SURVEY_STOP = BLE_GAP_SVC_BASE + 38, /**< Stop Quality of Service (QoS) channel survey module. */ - SD_BLE_GAP_ADV_ADDR_GET = BLE_GAP_SVC_BASE + 39, /**< Get the Address used on air while Advertising. */ -}; - -/**@brief GAP Event IDs. - * IDs that uniquely identify an event coming from the stack to the application. - */ -enum BLE_GAP_EVTS -{ - BLE_GAP_EVT_CONNECTED = BLE_GAP_EVT_BASE, /**< Connected to peer. \n See @ref ble_gap_evt_connected_t */ - BLE_GAP_EVT_DISCONNECTED = BLE_GAP_EVT_BASE + 1, /**< Disconnected from peer. \n See @ref ble_gap_evt_disconnected_t. */ - BLE_GAP_EVT_CONN_PARAM_UPDATE = BLE_GAP_EVT_BASE + 2, /**< Connection Parameters updated. \n See @ref ble_gap_evt_conn_param_update_t. */ - BLE_GAP_EVT_SEC_PARAMS_REQUEST = BLE_GAP_EVT_BASE + 3, /**< Request to provide security parameters. \n Reply with @ref sd_ble_gap_sec_params_reply. \n See @ref ble_gap_evt_sec_params_request_t. */ - BLE_GAP_EVT_SEC_INFO_REQUEST = BLE_GAP_EVT_BASE + 4, /**< Request to provide security information. \n Reply with @ref sd_ble_gap_sec_info_reply. \n See @ref ble_gap_evt_sec_info_request_t. */ - BLE_GAP_EVT_PASSKEY_DISPLAY = BLE_GAP_EVT_BASE + 5, /**< Request to display a passkey to the user. \n In LESC Numeric Comparison, reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_passkey_display_t. */ - BLE_GAP_EVT_KEY_PRESSED = BLE_GAP_EVT_BASE + 6, /**< Notification of a keypress on the remote device.\n See @ref ble_gap_evt_key_pressed_t */ - BLE_GAP_EVT_AUTH_KEY_REQUEST = BLE_GAP_EVT_BASE + 7, /**< Request to provide an authentication key. \n Reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_auth_key_request_t. */ - BLE_GAP_EVT_LESC_DHKEY_REQUEST = BLE_GAP_EVT_BASE + 8, /**< Request to calculate an LE Secure Connections DHKey. \n Reply with @ref sd_ble_gap_lesc_dhkey_reply. \n See @ref ble_gap_evt_lesc_dhkey_request_t */ - BLE_GAP_EVT_AUTH_STATUS = BLE_GAP_EVT_BASE + 9, /**< Authentication procedure completed with status. \n See @ref ble_gap_evt_auth_status_t. */ - BLE_GAP_EVT_CONN_SEC_UPDATE = BLE_GAP_EVT_BASE + 10, /**< Connection security updated. \n See @ref ble_gap_evt_conn_sec_update_t. */ - BLE_GAP_EVT_TIMEOUT = BLE_GAP_EVT_BASE + 11, /**< Timeout expired. \n See @ref ble_gap_evt_timeout_t. */ - BLE_GAP_EVT_RSSI_CHANGED = BLE_GAP_EVT_BASE + 12, /**< RSSI report. \n See @ref ble_gap_evt_rssi_changed_t. */ - BLE_GAP_EVT_ADV_REPORT = BLE_GAP_EVT_BASE + 13, /**< Advertising report. \n See @ref ble_gap_evt_adv_report_t. */ - BLE_GAP_EVT_SEC_REQUEST = BLE_GAP_EVT_BASE + 14, /**< Security Request. \n See @ref ble_gap_evt_sec_request_t. */ - BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST = BLE_GAP_EVT_BASE + 15, /**< Connection Parameter Update Request. \n Reply with @ref sd_ble_gap_conn_param_update. \n See @ref ble_gap_evt_conn_param_update_request_t. */ - BLE_GAP_EVT_SCAN_REQ_REPORT = BLE_GAP_EVT_BASE + 16, /**< Scan request report. \n See @ref ble_gap_evt_scan_req_report_t. */ - BLE_GAP_EVT_PHY_UPDATE_REQUEST = BLE_GAP_EVT_BASE + 17, /**< PHY Update Request. \n Reply with @ref sd_ble_gap_phy_update. \n See @ref ble_gap_evt_phy_update_request_t. */ - BLE_GAP_EVT_PHY_UPDATE = BLE_GAP_EVT_BASE + 18, /**< PHY Update Procedure is complete. \n See @ref ble_gap_evt_phy_update_t. */ - BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST = BLE_GAP_EVT_BASE + 19, /**< Data Length Update Request. \n Reply with @ref sd_ble_gap_data_length_update.\n See @ref ble_gap_evt_data_length_update_request_t. */ - BLE_GAP_EVT_DATA_LENGTH_UPDATE = BLE_GAP_EVT_BASE + 20, /**< LL Data Channel PDU payload length updated. \n See @ref ble_gap_evt_data_length_update_t. */ - BLE_GAP_EVT_QOS_CHANNEL_SURVEY_REPORT = BLE_GAP_EVT_BASE + 21, /**< Channel survey report. \n See @ref ble_gap_evt_qos_channel_survey_report_t. */ - BLE_GAP_EVT_ADV_SET_TERMINATED = BLE_GAP_EVT_BASE + 22, /**< Advertising set terminated. \n See @ref ble_gap_evt_adv_set_terminated_t. */ -}; - -/**@brief GAP Option IDs. - * IDs that uniquely identify a GAP option. - */ -enum BLE_GAP_OPTS -{ - BLE_GAP_OPT_CH_MAP = BLE_GAP_OPT_BASE, /**< Channel Map. @ref ble_gap_opt_ch_map_t */ - BLE_GAP_OPT_LOCAL_CONN_LATENCY = BLE_GAP_OPT_BASE + 1, /**< Local connection latency. @ref ble_gap_opt_local_conn_latency_t */ - BLE_GAP_OPT_PASSKEY = BLE_GAP_OPT_BASE + 2, /**< Set passkey. @ref ble_gap_opt_passkey_t */ - BLE_GAP_OPT_COMPAT_MODE_1 = BLE_GAP_OPT_BASE + 3, /**< Compatibility mode. @ref ble_gap_opt_compat_mode_1_t */ - BLE_GAP_OPT_AUTH_PAYLOAD_TIMEOUT = BLE_GAP_OPT_BASE + 4, /**< Set Authenticated payload timeout. @ref ble_gap_opt_auth_payload_timeout_t */ - BLE_GAP_OPT_SLAVE_LATENCY_DISABLE = BLE_GAP_OPT_BASE + 5, /**< Disable slave latency. @ref ble_gap_opt_slave_latency_disable_t */ -}; - -/**@brief GAP Configuration IDs. - * - * IDs that uniquely identify a GAP configuration. - */ -enum BLE_GAP_CFGS -{ - BLE_GAP_CFG_ROLE_COUNT = BLE_GAP_CFG_BASE, /**< Role count configuration. */ - BLE_GAP_CFG_DEVICE_NAME = BLE_GAP_CFG_BASE + 1, /**< Device name configuration. */ -}; - -/**@brief GAP TX Power roles. - */ -enum BLE_GAP_TX_POWER_ROLES -{ - BLE_GAP_TX_POWER_ROLE_ADV = 1, /**< Advertiser role. */ - BLE_GAP_TX_POWER_ROLE_SCAN_INIT = 2, /**< Scanner and initiator role. */ - BLE_GAP_TX_POWER_ROLE_CONN = 3, /**< Connection role. */ -}; - -/** @} */ - -/**@addtogroup BLE_GAP_DEFINES Defines - * @{ */ - -/**@defgroup BLE_ERRORS_GAP SVC return values specific to GAP - * @{ */ -#define BLE_ERROR_GAP_UUID_LIST_MISMATCH (NRF_GAP_ERR_BASE + 0x000) /**< UUID list does not contain an integral number of UUIDs. */ -#define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST (NRF_GAP_ERR_BASE + 0x001) /**< Use of Whitelist not permitted with discoverable advertising. */ -#define BLE_ERROR_GAP_INVALID_BLE_ADDR (NRF_GAP_ERR_BASE + 0x002) /**< The upper two bits of the address do not correspond to the specified address type. */ -#define BLE_ERROR_GAP_WHITELIST_IN_USE (NRF_GAP_ERR_BASE + 0x003) /**< Attempt to modify the whitelist while already in use by another operation. */ -#define BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE (NRF_GAP_ERR_BASE + 0x004) /**< Attempt to modify the device identity list while already in use by another operation. */ -#define BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE (NRF_GAP_ERR_BASE + 0x005) /**< The device identity list contains entries with duplicate identity addresses. */ -/**@} */ - - -/**@defgroup BLE_GAP_ROLES GAP Roles - * @{ */ -#define BLE_GAP_ROLE_INVALID 0x0 /**< Invalid Role. */ -#define BLE_GAP_ROLE_PERIPH 0x1 /**< Peripheral Role. */ -#define BLE_GAP_ROLE_CENTRAL 0x2 /**< Central Role. */ -/**@} */ - - -/**@defgroup BLE_GAP_TIMEOUT_SOURCES GAP Timeout sources - * @{ */ -#define BLE_GAP_TIMEOUT_SRC_SCAN 0x01 /**< Scanning timeout. */ -#define BLE_GAP_TIMEOUT_SRC_CONN 0x02 /**< Connection timeout. */ -#define BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD 0x03 /**< Authenticated payload timeout. */ -/**@} */ - - -/**@defgroup BLE_GAP_ADDR_TYPES GAP Address types - * @{ */ -#define BLE_GAP_ADDR_TYPE_PUBLIC 0x00 /**< Public (identity) address.*/ -#define BLE_GAP_ADDR_TYPE_RANDOM_STATIC 0x01 /**< Random static (identity) address. */ -#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE 0x02 /**< Random private resolvable address. */ -#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03 /**< Random private non-resolvable address. */ -#define BLE_GAP_ADDR_TYPE_ANONYMOUS 0x7F /**< An advertiser may advertise without its address. - This type of advertising is called anonymous. */ -/**@} */ - - -/**@brief The default interval in seconds at which a private address is refreshed. */ -#define BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S (900) /* 15 minutes. */ -/**@brief The maximum interval in seconds at which a private address can be refreshed. */ -#define BLE_GAP_MAX_PRIVATE_ADDR_CYCLE_INTERVAL_S (41400) /* 11 hours 30 minutes. */ - - -/** @brief BLE address length. */ -#define BLE_GAP_ADDR_LEN (6) - -/**@defgroup BLE_GAP_PRIVACY_MODES Privacy modes - * @{ */ -#define BLE_GAP_PRIVACY_MODE_OFF 0x00 /**< Device will send and accept its identity address for its own address. */ -#define BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY 0x01 /**< Device will send and accept only private addresses for its own address. */ -#define BLE_GAP_PRIVACY_MODE_NETWORK_PRIVACY 0x02 /**< Device will send and accept only private addresses for its own address, - and will not accept a peer using identity address as sender address when - the peer IRK is exchanged, non-zero and added to the identity list. */ -/**@} */ - -/** @brief Invalid power level. */ -#define BLE_GAP_POWER_LEVEL_INVALID 127 - -/** @brief Advertising set handle not set. */ -#define BLE_GAP_ADV_SET_HANDLE_NOT_SET (0xFF) - -/** @brief The default number of advertising sets. */ -#define BLE_GAP_ADV_SET_COUNT_DEFAULT (1) - -/** @brief The maximum number of advertising sets supported by this SoftDevice. */ -#define BLE_GAP_ADV_SET_COUNT_MAX (1) - -/**@defgroup BLE_GAP_ADV_SET_DATA_SIZES Advertising data sizes. - * @{ */ -#define BLE_GAP_ADV_SET_DATA_SIZE_MAX (31) /**< Maximum data length for an advertising set. - If more advertising data is required, use extended advertising instead. */ -#define BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED (255) /**< Maximum supported data length for an extended advertising set. */ - -#define BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED (238) /**< Maximum supported data length for an extended connectable advertising set. */ -/**@}. */ - -/** @brief Set ID not available in advertising report. */ -#define BLE_GAP_ADV_REPORT_SET_ID_NOT_AVAILABLE 0xFF - -/**@defgroup BLE_GAP_EVT_ADV_SET_TERMINATED_REASON GAP Advertising Set Terminated reasons - * @{ */ -#define BLE_GAP_EVT_ADV_SET_TERMINATED_REASON_TIMEOUT 0x01 /**< Timeout value reached. */ -#define BLE_GAP_EVT_ADV_SET_TERMINATED_REASON_LIMIT_REACHED 0x02 /**< @ref ble_gap_adv_params_t::max_adv_evts was reached. */ -/**@} */ - -/**@defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format - * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm - * @{ */ -#define BLE_GAP_AD_TYPE_FLAGS 0x01 /**< Flags for discoverability. */ -#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02 /**< Partial list of 16 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03 /**< Complete list of 16 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04 /**< Partial list of 32 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05 /**< Complete list of 32 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /**< Partial list of 128 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07 /**< Complete list of 128 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08 /**< Short local device name. */ -#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 /**< Complete local device name. */ -#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A /**< Transmit power level. */ -#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D /**< Class of device. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E /**< Simple Pairing Hash C. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F /**< Simple Pairing Randomizer R. */ -#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 /**< Security Manager TK Value. */ -#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11 /**< Security Manager Out Of Band Flags. */ -#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /**< Slave Connection Interval Range. */ -#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14 /**< List of 16-bit Service Solicitation UUIDs. */ -#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15 /**< List of 128-bit Service Solicitation UUIDs. */ -#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16 /**< Service Data - 16-bit UUID. */ -#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17 /**< Public Target Address. */ -#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18 /**< Random Target Address. */ -#define BLE_GAP_AD_TYPE_APPEARANCE 0x19 /**< Appearance. */ -#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL 0x1A /**< Advertising Interval. */ -#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B /**< LE Bluetooth Device Address. */ -#define BLE_GAP_AD_TYPE_LE_ROLE 0x1C /**< LE Role. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 0x1D /**< Simple Pairing Hash C-256. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 0x1E /**< Simple Pairing Randomizer R-256. */ -#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID 0x20 /**< Service Data - 32-bit UUID. */ -#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID 0x21 /**< Service Data - 128-bit UUID. */ -#define BLE_GAP_AD_TYPE_LESC_CONFIRMATION_VALUE 0x22 /**< LE Secure Connections Confirmation Value */ -#define BLE_GAP_AD_TYPE_LESC_RANDOM_VALUE 0x23 /**< LE Secure Connections Random Value */ -#define BLE_GAP_AD_TYPE_URI 0x24 /**< URI */ -#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA 0x3D /**< 3D Information Data. */ -#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF /**< Manufacturer Specific Data. */ -/**@} */ - - -/**@defgroup BLE_GAP_ADV_FLAGS GAP Advertisement Flags - * @{ */ -#define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE (0x01) /**< LE Limited Discoverable Mode. */ -#define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE (0x02) /**< LE General Discoverable Mode. */ -#define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED (0x04) /**< BR/EDR not supported. */ -#define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER (0x08) /**< Simultaneous LE and BR/EDR, Controller. */ -#define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST (0x10) /**< Simultaneous LE and BR/EDR, Host. */ -#define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE Limited Discoverable Mode, BR/EDR not supported. */ -#define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE General Discoverable Mode, BR/EDR not supported. */ -/**@} */ - - -/**@defgroup BLE_GAP_ADV_INTERVALS GAP Advertising interval max and min - * @{ */ -#define BLE_GAP_ADV_INTERVAL_MIN 0x000020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */ -#define BLE_GAP_ADV_INTERVAL_MAX 0x004000 /**< Maximum Advertising interval in 625 us units, i.e. 10.24 s. */ - /**@} */ - - -/**@defgroup BLE_GAP_SCAN_INTERVALS GAP Scan interval max and min - * @{ */ -#define BLE_GAP_SCAN_INTERVAL_MIN 0x0004 /**< Minimum Scan interval in 625 us units, i.e. 2.5 ms. */ -#define BLE_GAP_SCAN_INTERVAL_MAX 0xFFFF /**< Maximum Scan interval in 625 us units, i.e. 40,959.375 s. */ - /** @} */ - - -/**@defgroup BLE_GAP_SCAN_WINDOW GAP Scan window max and min - * @{ */ -#define BLE_GAP_SCAN_WINDOW_MIN 0x0004 /**< Minimum Scan window in 625 us units, i.e. 2.5 ms. */ -#define BLE_GAP_SCAN_WINDOW_MAX 0xFFFF /**< Maximum Scan window in 625 us units, i.e. 40,959.375 s. */ - /** @} */ - - -/**@defgroup BLE_GAP_SCAN_TIMEOUT GAP Scan timeout max and min - * @{ */ -#define BLE_GAP_SCAN_TIMEOUT_MIN 0x0001 /**< Minimum Scan timeout in 10 ms units, i.e 10 ms. */ -#define BLE_GAP_SCAN_TIMEOUT_UNLIMITED 0x0000 /**< Continue to scan forever. */ - /** @} */ - -/**@defgroup BLE_GAP_SCAN_BUFFER_SIZE GAP Minimum scanner buffer size - * - * Scan buffers are used for storing advertising data received from an advertiser. - * If ble_gap_scan_params_t::extended is set to 0, @ref BLE_GAP_SCAN_BUFFER_MIN is the minimum scan buffer length. - * else the minimum scan buffer size is @ref BLE_GAP_SCAN_BUFFER_EXTENDED_MIN. - * @{ */ -#define BLE_GAP_SCAN_BUFFER_MIN (31) /**< Minimum data length for an - advertising set. */ -#define BLE_GAP_SCAN_BUFFER_MAX (31) /**< Maximum data length for an - advertising set. */ -#define BLE_GAP_SCAN_BUFFER_EXTENDED_MIN (255) /**< Minimum data length for an - extended advertising set. */ -#define BLE_GAP_SCAN_BUFFER_EXTENDED_MAX (1650) /**< Maximum data length for an - extended advertising set. */ -#define BLE_GAP_SCAN_BUFFER_EXTENDED_MAX_SUPPORTED (255) /**< Maximum supported data length for - an extended advertising set. */ -/** @} */ - -/**@defgroup BLE_GAP_ADV_TYPES GAP Advertising types - * - * Advertising types defined in Bluetooth Core Specification v5.0, Vol 6, Part B, Section 4.4.2. - * - * The maximum advertising data length is defined by @ref BLE_GAP_ADV_SET_DATA_SIZE_MAX. - * The maximum supported data length for an extended advertiser is defined by - * @ref BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED - * Note that some of the advertising types do not support advertising data. Non-scannable types do not support - * scan response data. - * - * @{ */ -#define BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED 0x01 /**< Connectable and scannable undirected - advertising events. */ -#define BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED_HIGH_DUTY_CYCLE 0x02 /**< Connectable non-scannable directed advertising - events. Advertising interval is less that 3.75 ms. - Use this type for fast reconnections. - @note Advertising data is not supported. */ -#define BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED 0x03 /**< Connectable non-scannable directed advertising - events. - @note Advertising data is not supported. */ -#define BLE_GAP_ADV_TYPE_NONCONNECTABLE_SCANNABLE_UNDIRECTED 0x04 /**< Non-connectable scannable undirected - advertising events. */ -#define BLE_GAP_ADV_TYPE_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED 0x05 /**< Non-connectable non-scannable undirected - advertising events. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_CONNECTABLE_NONSCANNABLE_UNDIRECTED 0x06 /**< Connectable non-scannable undirected advertising - events using extended advertising PDUs. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_CONNECTABLE_NONSCANNABLE_DIRECTED 0x07 /**< Connectable non-scannable directed advertising - events using extended advertising PDUs. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_SCANNABLE_UNDIRECTED 0x08 /**< Non-connectable scannable undirected advertising - events using extended advertising PDUs. - @note Only scan response data is supported. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_SCANNABLE_DIRECTED 0x09 /**< Non-connectable scannable directed advertising - events using extended advertising PDUs. - @note Only scan response data is supported. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED 0x0A /**< Non-connectable non-scannable undirected advertising - events using extended advertising PDUs. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_DIRECTED 0x0B /**< Non-connectable non-scannable directed advertising - events using extended advertising PDUs. */ -/**@} */ - -/**@defgroup BLE_GAP_ADV_FILTER_POLICIES GAP Advertising filter policies - * @{ */ -#define BLE_GAP_ADV_FP_ANY 0x00 /**< Allow scan requests and connect requests from any device. */ -#define BLE_GAP_ADV_FP_FILTER_SCANREQ 0x01 /**< Filter scan requests with whitelist. */ -#define BLE_GAP_ADV_FP_FILTER_CONNREQ 0x02 /**< Filter connect requests with whitelist. */ -#define BLE_GAP_ADV_FP_FILTER_BOTH 0x03 /**< Filter both scan and connect requests with whitelist. */ -/**@} */ - -/**@defgroup BLE_GAP_ADV_DATA_STATUS GAP Advertising data status - * @{ */ -#define BLE_GAP_ADV_DATA_STATUS_COMPLETE 0x00 /**< All data in the advertising event have been received. */ -#define BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA 0x01 /**< More data to be received. - @note This value will only be used if - @ref ble_gap_scan_params_t::report_incomplete_evts and - @ref ble_gap_adv_report_type_t::extended_pdu are set to true. */ -#define BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_TRUNCATED 0x02 /**< Incomplete data. Buffer size insufficient to receive more. - @note This value will only be used if - @ref ble_gap_adv_report_type_t::extended_pdu is set to true. */ -#define BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MISSED 0x03 /**< Failed to receive the remaining data. - @note This value will only be used if - @ref ble_gap_adv_report_type_t::extended_pdu is set to true. */ -/**@} */ - -/**@defgroup BLE_GAP_SCAN_FILTER_POLICIES GAP Scanner filter policies - * @{ */ -#define BLE_GAP_SCAN_FP_ACCEPT_ALL 0x00 /**< Accept all advertising packets except directed advertising packets - not addressed to this device. */ -#define BLE_GAP_SCAN_FP_WHITELIST 0x01 /**< Accept advertising packets from devices in the whitelist except directed - packets not addressed to this device. */ -#define BLE_GAP_SCAN_FP_ALL_NOT_RESOLVED_DIRECTED 0x02 /**< Accept all advertising packets specified in @ref BLE_GAP_SCAN_FP_ACCEPT_ALL. - In addition, accept directed advertising packets, where the advertiser's - address is a resolvable private address that cannot be resolved. */ -#define BLE_GAP_SCAN_FP_WHITELIST_NOT_RESOLVED_DIRECTED 0x03 /**< Accept all advertising packets specified in @ref BLE_GAP_SCAN_FP_WHITELIST. - In addition, accept directed advertising packets, where the advertiser's - address is a resolvable private address that cannot be resolved. */ -/**@} */ - -/**@defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values in 10 ms units - * @{ */ -#define BLE_GAP_ADV_TIMEOUT_HIGH_DUTY_MAX (128) /**< Maximum high duty advertising time in 10 ms units. Corresponds to 1.28 s. */ -#define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX (18000) /**< Maximum advertising time in 10 ms units corresponding to TGAP(lim_adv_timeout) = 180 s in limited discoverable mode. */ -#define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED (0) /**< Unlimited advertising in general discoverable mode. - For high duty cycle advertising, this corresponds to @ref BLE_GAP_ADV_TIMEOUT_HIGH_DUTY_MAX. */ -/**@} */ - - -/**@defgroup BLE_GAP_DISC_MODES GAP Discovery modes - * @{ */ -#define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE 0x00 /**< Not discoverable discovery Mode. */ -#define BLE_GAP_DISC_MODE_LIMITED 0x01 /**< Limited Discovery Mode. */ -#define BLE_GAP_DISC_MODE_GENERAL 0x02 /**< General Discovery Mode. */ -/**@} */ - - -/**@defgroup BLE_GAP_IO_CAPS GAP IO Capabilities - * @{ */ -#define BLE_GAP_IO_CAPS_DISPLAY_ONLY 0x00 /**< Display Only. */ -#define BLE_GAP_IO_CAPS_DISPLAY_YESNO 0x01 /**< Display and Yes/No entry. */ -#define BLE_GAP_IO_CAPS_KEYBOARD_ONLY 0x02 /**< Keyboard Only. */ -#define BLE_GAP_IO_CAPS_NONE 0x03 /**< No I/O capabilities. */ -#define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY 0x04 /**< Keyboard and Display. */ -/**@} */ - - -/**@defgroup BLE_GAP_AUTH_KEY_TYPES GAP Authentication Key Types - * @{ */ -#define BLE_GAP_AUTH_KEY_TYPE_NONE 0x00 /**< No key (may be used to reject). */ -#define BLE_GAP_AUTH_KEY_TYPE_PASSKEY 0x01 /**< 6-digit Passkey. */ -#define BLE_GAP_AUTH_KEY_TYPE_OOB 0x02 /**< Out Of Band data. */ -/**@} */ - - -/**@defgroup BLE_GAP_KP_NOT_TYPES GAP Keypress Notification Types - * @{ */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_START 0x00 /**< Passkey entry started. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_IN 0x01 /**< Passkey digit entered. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_OUT 0x02 /**< Passkey digit erased. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_CLEAR 0x03 /**< Passkey cleared. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_END 0x04 /**< Passkey entry completed. */ -/**@} */ - - -/**@defgroup BLE_GAP_SEC_STATUS GAP Security status - * @{ */ -#define BLE_GAP_SEC_STATUS_SUCCESS 0x00 /**< Procedure completed with success. */ -#define BLE_GAP_SEC_STATUS_TIMEOUT 0x01 /**< Procedure timed out. */ -#define BLE_GAP_SEC_STATUS_PDU_INVALID 0x02 /**< Invalid PDU received. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE1_BEGIN 0x03 /**< Reserved for Future Use range #1 begin. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE1_END 0x80 /**< Reserved for Future Use range #1 end. */ -#define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED 0x81 /**< Passkey entry failed (user canceled or other). */ -#define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE 0x82 /**< Out of Band Key not available. */ -#define BLE_GAP_SEC_STATUS_AUTH_REQ 0x83 /**< Authentication requirements not met. */ -#define BLE_GAP_SEC_STATUS_CONFIRM_VALUE 0x84 /**< Confirm value failed. */ -#define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP 0x85 /**< Pairing not supported. */ -#define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE 0x86 /**< Encryption key size. */ -#define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED 0x87 /**< Unsupported SMP command. */ -#define BLE_GAP_SEC_STATUS_UNSPECIFIED 0x88 /**< Unspecified reason. */ -#define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS 0x89 /**< Too little time elapsed since last attempt. */ -#define BLE_GAP_SEC_STATUS_INVALID_PARAMS 0x8A /**< Invalid parameters. */ -#define BLE_GAP_SEC_STATUS_DHKEY_FAILURE 0x8B /**< DHKey check failure. */ -#define BLE_GAP_SEC_STATUS_NUM_COMP_FAILURE 0x8C /**< Numeric Comparison failure. */ -#define BLE_GAP_SEC_STATUS_BR_EDR_IN_PROG 0x8D /**< BR/EDR pairing in progress. */ -#define BLE_GAP_SEC_STATUS_X_TRANS_KEY_DISALLOWED 0x8E /**< BR/EDR Link Key cannot be used for LE keys. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE2_BEGIN 0x8F /**< Reserved for Future Use range #2 begin. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE2_END 0xFF /**< Reserved for Future Use range #2 end. */ -/**@} */ - - -/**@defgroup BLE_GAP_SEC_STATUS_SOURCES GAP Security status sources - * @{ */ -#define BLE_GAP_SEC_STATUS_SOURCE_LOCAL 0x00 /**< Local failure. */ -#define BLE_GAP_SEC_STATUS_SOURCE_REMOTE 0x01 /**< Remote failure. */ -/**@} */ - - -/**@defgroup BLE_GAP_CP_LIMITS GAP Connection Parameters Limits - * @{ */ -#define BLE_GAP_CP_MIN_CONN_INTVL_NONE 0xFFFF /**< No new minimum connection interval specified in connect parameters. */ -#define BLE_GAP_CP_MIN_CONN_INTVL_MIN 0x0006 /**< Lowest minimum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ -#define BLE_GAP_CP_MIN_CONN_INTVL_MAX 0x0C80 /**< Highest minimum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_NONE 0xFFFF /**< No new maximum connection interval specified in connect parameters. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_MIN 0x0006 /**< Lowest maximum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_MAX 0x0C80 /**< Highest maximum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ -#define BLE_GAP_CP_SLAVE_LATENCY_MAX 0x01F3 /**< Highest slave latency permitted, in connection events. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE 0xFFFF /**< No new supervision timeout specified in connect parameters. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN 0x000A /**< Lowest supervision timeout permitted, in units of 10 ms, i.e. 100 ms. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX 0x0C80 /**< Highest supervision timeout permitted, in units of 10 ms, i.e. 32 s. */ -/**@} */ - - -/**@defgroup BLE_GAP_DEVNAME GAP device name defines. - * @{ */ -#define BLE_GAP_DEVNAME_DEFAULT "nRF5x" /**< Default device name value. */ -#define BLE_GAP_DEVNAME_DEFAULT_LEN 31 /**< Default number of octets in device name. */ -#define BLE_GAP_DEVNAME_MAX_LEN 248 /**< Maximum number of octets in device name. */ -/**@} */ - - -/**@brief Disable RSSI events for connections */ -#define BLE_GAP_RSSI_THRESHOLD_INVALID 0xFF - -/**@defgroup BLE_GAP_PHYS GAP PHYs - * @{ */ -#define BLE_GAP_PHY_AUTO 0x00 /**< Automatic PHY selection. Refer @ref sd_ble_gap_phy_update for more information.*/ -#define BLE_GAP_PHY_1MBPS 0x01 /**< 1 Mbps PHY. */ -#define BLE_GAP_PHY_2MBPS 0x02 /**< 2 Mbps PHY. */ -#define BLE_GAP_PHY_CODED 0x04 /**< Coded PHY. */ -#define BLE_GAP_PHY_NOT_SET 0xFF /**< PHY is not configured. */ - -/**@brief Supported PHYs in connections, for scanning, and for advertising. */ -#define BLE_GAP_PHYS_SUPPORTED (BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS) /**< All PHYs except @ref BLE_GAP_PHY_CODED are supported. */ - -/**@} */ - -/**@defgroup BLE_GAP_CONN_SEC_MODE_SET_MACROS GAP attribute security requirement setters - * - * See @ref ble_gap_conn_sec_mode_t. - * @{ */ -/**@brief Set sec_mode pointed to by ptr to have no access rights.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr) do {(ptr)->sm = 0; (ptr)->lv = 0;} while(0) -/**@brief Set sec_mode pointed to by ptr to require no protection, open link.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr) do {(ptr)->sm = 1; (ptr)->lv = 1;} while(0) -/**@brief Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 2;} while(0) -/**@brief Set sec_mode pointed to by ptr to require encryption and MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 3;} while(0) -/**@brief Set sec_mode pointed to by ptr to require LESC encryption and MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_LESC_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 4;} while(0) -/**@brief Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 1;} while(0) -/**@brief Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 2;} while(0) -/**@} */ - - -/**@brief GAP Security Random Number Length. */ -#define BLE_GAP_SEC_RAND_LEN 8 - - -/**@brief GAP Security Key Length. */ -#define BLE_GAP_SEC_KEY_LEN 16 - - -/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key Length. */ -#define BLE_GAP_LESC_P256_PK_LEN 64 - - -/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman DHKey Length. */ -#define BLE_GAP_LESC_DHKEY_LEN 32 - - -/**@brief GAP Passkey Length. */ -#define BLE_GAP_PASSKEY_LEN 6 - - -/**@brief Maximum amount of addresses in the whitelist. */ -#define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8) - - -/**@brief Maximum amount of identities in the device identities list. */ -#define BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT (8) - - -/**@brief Default connection count for a configuration. */ -#define BLE_GAP_CONN_COUNT_DEFAULT (1) - - -/**@defgroup BLE_GAP_EVENT_LENGTH GAP event length defines. - * @{ */ -#define BLE_GAP_EVENT_LENGTH_MIN (2) /**< Minimum event length, in 1.25 ms units. */ -#define BLE_GAP_EVENT_LENGTH_DEFAULT (3) /**< Default event length, in 1.25 ms units. */ -/**@} */ - - -/**@defgroup BLE_GAP_ROLE_COUNT GAP concurrent connection count defines. - * @{ */ -#define BLE_GAP_ROLE_COUNT_PERIPH_DEFAULT (1) /**< Default maximum number of connections concurrently acting as peripherals. */ -#define BLE_GAP_ROLE_COUNT_CENTRAL_DEFAULT (3) /**< Default maximum number of connections concurrently acting as centrals. */ -#define BLE_GAP_ROLE_COUNT_CENTRAL_SEC_DEFAULT (1) /**< Default number of SMP instances shared between all connections acting as centrals. */ -#define BLE_GAP_ROLE_COUNT_COMBINED_MAX (20) /**< Maximum supported number of concurrent connections in the peripheral and central roles combined. */ - -/**@} */ - -/**@brief Automatic data length parameter. */ -#define BLE_GAP_DATA_LENGTH_AUTO 0 - -/**@defgroup BLE_GAP_AUTH_PAYLOAD_TIMEOUT Authenticated payload timeout defines. - * @{ */ -#define BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MAX (48000) /**< Maximum authenticated payload timeout in 10 ms units, i.e. 8 minutes. */ -#define BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MIN (1) /**< Minimum authenticated payload timeout in 10 ms units, i.e. 10 ms. */ -/**@} */ - -/**@defgroup GAP_SEC_MODES GAP Security Modes - * @{ */ -#define BLE_GAP_SEC_MODE 0x00 /**< No key (may be used to reject). */ -/**@} */ - -/**@brief The total number of channels in Bluetooth Low Energy. */ -#define BLE_GAP_CHANNEL_COUNT (40) - -/**@defgroup BLE_GAP_QOS_CHANNEL_SURVEY_INTERVALS Quality of Service (QoS) Channel survey interval defines - * @{ */ -#define BLE_GAP_QOS_CHANNEL_SURVEY_INTERVAL_CONTINUOUS (0) /**< Continuous channel survey. */ -#define BLE_GAP_QOS_CHANNEL_SURVEY_INTERVAL_MIN_US (7500) /**< Minimum channel survey interval in microseconds (7.5 ms). */ -#define BLE_GAP_QOS_CHANNEL_SURVEY_INTERVAL_MAX_US (4000000) /**< Maximum channel survey interval in microseconds (4 s). */ - /**@} */ - -/** @} */ - - -/**@addtogroup BLE_GAP_STRUCTURES Structures - * @{ */ - -/**@brief Advertising event properties. */ -typedef struct -{ - uint8_t type; /**< Advertising type. See @ref BLE_GAP_ADV_TYPES. */ - uint8_t anonymous : 1; /**< Omit advertiser's address from all PDUs. - @note Anonymous advertising is only available for - @ref BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED and - @ref BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_DIRECTED. */ - uint8_t include_tx_power : 1; /**< This feature is not supported on this SoftDevice. */ -} ble_gap_adv_properties_t; - - -/**@brief Advertising report type. */ -typedef struct -{ - uint16_t connectable : 1; /**< Connectable advertising event type. */ - uint16_t scannable : 1; /**< Scannable advertising event type. */ - uint16_t directed : 1; /**< Directed advertising event type. */ - uint16_t scan_response : 1; /**< Received a scan response. */ - uint16_t extended_pdu : 1; /**< Received an extended advertising set. */ - uint16_t status : 2; /**< Data status. See @ref BLE_GAP_ADV_DATA_STATUS. */ - uint16_t reserved : 9; /**< Reserved for future use. */ -} ble_gap_adv_report_type_t; - -/**@brief Advertising Auxiliary Pointer. */ -typedef struct -{ - uint16_t aux_offset; /**< Time offset from the beginning of advertising packet to the auxiliary packet in 100 us units. */ - uint8_t aux_phy; /**< Indicates the PHY on which the auxiliary advertising packet is sent. See @ref BLE_GAP_PHYS. */ -} ble_gap_aux_pointer_t; - -/**@brief Bluetooth Low Energy address. */ -typedef struct -{ - uint8_t addr_id_peer : 1; /**< Only valid for peer addresses. - This bit is set by the SoftDevice to indicate whether the address has been resolved from - a Resolvable Private Address (when the peer is using privacy). - If set to 1, @ref addr and @ref addr_type refer to the identity address of the resolved address. - - This bit is ignored when a variable of type @ref ble_gap_addr_t is used as input to API functions. */ - uint8_t addr_type : 7; /**< See @ref BLE_GAP_ADDR_TYPES. */ - uint8_t addr[BLE_GAP_ADDR_LEN]; /**< 48-bit address, LSB format. - @ref addr is not used if @ref addr_type is @ref BLE_GAP_ADDR_TYPE_ANONYMOUS. */ -} ble_gap_addr_t; - - -/**@brief GAP connection parameters. - * - * @note When ble_conn_params_t is received in an event, both min_conn_interval and - * max_conn_interval will be equal to the connection interval set by the central. - * - * @note If both conn_sup_timeout and max_conn_interval are specified, then the following constraint applies: - * conn_sup_timeout * 4 > (1 + slave_latency) * max_conn_interval - * that corresponds to the following Bluetooth Spec requirement: - * The Supervision_Timeout in milliseconds shall be larger than - * (1 + Conn_Latency) * Conn_Interval_Max * 2, where Conn_Interval_Max is given in milliseconds. - */ -typedef struct -{ - uint16_t min_conn_interval; /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t max_conn_interval; /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t slave_latency; /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t conn_sup_timeout; /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/ -} ble_gap_conn_params_t; - - -/**@brief GAP connection security modes. - * - * Security Mode 0 Level 0: No access permissions at all (this level is not defined by the Bluetooth Core specification).\n - * Security Mode 1 Level 1: No security is needed (aka open link).\n - * Security Mode 1 Level 2: Encrypted link required, MITM protection not necessary.\n - * Security Mode 1 Level 3: MITM protected encrypted link required.\n - * Security Mode 1 Level 4: LESC MITM protected encrypted link using a 128-bit strength encryption key required.\n - * Security Mode 2 Level 1: Signing or encryption required, MITM protection not necessary.\n - * Security Mode 2 Level 2: MITM protected signing required, unless link is MITM protected encrypted.\n - */ -typedef struct -{ - uint8_t sm : 4; /**< Security Mode (1 or 2), 0 for no permissions at all. */ - uint8_t lv : 4; /**< Level (1, 2, 3 or 4), 0 for no permissions at all. */ - -} ble_gap_conn_sec_mode_t; - - -/**@brief GAP connection security status.*/ -typedef struct -{ - ble_gap_conn_sec_mode_t sec_mode; /**< Currently active security mode for this connection.*/ - uint8_t encr_key_size; /**< Length of currently active encryption key, 7 to 16 octets (only applicable for bonding procedures). */ -} ble_gap_conn_sec_t; - -/**@brief Identity Resolving Key. */ -typedef struct -{ - uint8_t irk[BLE_GAP_SEC_KEY_LEN]; /**< Array containing IRK. */ -} ble_gap_irk_t; - - -/**@brief Channel mask (40 bits). - * Every channel is represented with a bit positioned as per channel index defined in Bluetooth Core Specification v5.0, - * Vol 6, Part B, Section 1.4.1. The LSB contained in array element 0 represents channel index 0, and bit 39 represents - * channel index 39. If a bit is set to 1, the channel is not used. - */ -typedef uint8_t ble_gap_ch_mask_t[5]; - - -/**@brief GAP advertising parameters. */ -typedef struct -{ - ble_gap_adv_properties_t properties; /**< The properties of the advertising events. */ - ble_gap_addr_t const *p_peer_addr; /**< Address of a known peer. - @note ble_gap_addr_t::addr_type cannot be - @ref BLE_GAP_ADDR_TYPE_ANONYMOUS. - - When privacy is enabled and the local device uses - @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE addresses, - the device identity list is searched for a matching entry. If - the local IRK for that device identity is set, the local IRK - for that device will be used to generate the advertiser address - field in the advertising packet. - - If @ref ble_gap_adv_properties_t::type is directed, this must be - set to the targeted scanner or initiator. If the peer address is - in the device identity list, the peer IRK for that device will be - used to generate @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE - target addresses used in the advertising event PDUs. */ - uint32_t interval; /**< Advertising interval in 625 us units. @sa BLE_GAP_ADV_INTERVALS. - @note If @ref ble_gap_adv_properties_t::type is set to - @ref BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED_HIGH_DUTY_CYCLE - advertising, this parameter is ignored. */ - uint16_t duration; /**< Advertising duration in 10 ms units. When timeout is reached, - an event of type @ref BLE_GAP_EVT_ADV_SET_TERMINATED is raised. - @sa BLE_GAP_ADV_TIMEOUT_VALUES. - @note The SoftDevice will always complete at least one advertising - event even if the duration is set too low. */ - uint8_t max_adv_evts; /**< Maximum advertising events that shall be sent prior to disabling - advertising. Setting the value to 0 disables the limitation. When - the count of advertising events specified by this parameter - (if not 0) is reached, advertising will be automatically stopped - and an event of type @ref BLE_GAP_EVT_ADV_SET_TERMINATED is raised - @note If @ref ble_gap_adv_properties_t::type is set to - @ref BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED_HIGH_DUTY_CYCLE, - this parameter is ignored. */ - ble_gap_ch_mask_t channel_mask; /**< Channel mask for primary and secondary advertising channels. - At least one of the primary channels, that is channel index 37-39, must be used. - Masking away secondary advertising channels is not supported. */ - uint8_t filter_policy; /**< Filter Policy. @sa BLE_GAP_ADV_FILTER_POLICIES. */ - uint8_t primary_phy; /**< Indicates the PHY on which the primary advertising channel packets - are transmitted. If set to @ref BLE_GAP_PHY_AUTO, @ref BLE_GAP_PHY_1MBPS - will be used. - The only supported value by this SoftDevice is @ref BLE_GAP_PHY_1MBPS. */ - uint8_t secondary_phy; /**< Indicates the PHY on which the secondary advertising channel packets - are transmitted. - If set to @ref BLE_GAP_PHY_AUTO, @ref BLE_GAP_PHY_1MBPS will be used. - Valid values are - @ref BLE_GAP_PHY_1MBPS and @ref BLE_GAP_PHY_2MBPS. @ref BLE_GAP_PHY_CODED - is not supported by this SoftDevice. - If @ref ble_gap_adv_properties_t::type is an extended advertising type - and connectable, this is the PHY that will be used to establish a - connection and send AUX_ADV_IND packets on. - @note This parameter will be ignored when - @ref ble_gap_adv_properties_t::type is not an extended advertising type. */ - uint8_t set_id:4; /**< The advertising set identifier distinguishes this advertising set from other - advertising sets transmitted by this and other devices. - @note This parameter will be ignored when - @ref ble_gap_adv_properties_t::type is not an extended advertising type. */ - uint8_t scan_req_notification:1; /**< Enable scan request notifications for this advertising set. When a - scan request is received and the scanner address is allowed - by the filter policy, @ref BLE_GAP_EVT_SCAN_REQ_REPORT is raised. - @note This parameter will be ignored when - @ref ble_gap_adv_properties_t::type is a non-scannable - advertising type. */ -} ble_gap_adv_params_t; - - -/**@brief GAP advertising data buffers. - * - * The application must provide the buffers for advertisement. The memory shall reside in application RAM, and - * shall never be modified while advertising. The data shall be kept alive until either: - * - @ref BLE_GAP_EVT_ADV_SET_TERMINATED is raised. - * - @ref BLE_GAP_EVT_CONNECTED is raised with @ref ble_gap_evt_connected_t::adv_handle set to the corresponding - * advertising handle. - * - Advertising is stopped. - * - Advertising data is changed. - * To update advertising data while advertising, provide new buffers to @ref sd_ble_gap_adv_set_configure. */ -typedef struct -{ - ble_data_t adv_data; /**< Advertising data. - @note - Advertising data can only be specified for a @ref ble_gap_adv_properties_t::type - that is allowed to contain advertising data. */ - ble_data_t scan_rsp_data; /**< Scan response data. - @note - Scan response data can only be specified for a @ref ble_gap_adv_properties_t::type - that is scannable. */ -} ble_gap_adv_data_t; - - -/**@brief GAP scanning parameters. */ -typedef struct -{ - uint8_t extended : 1; /**< If 1, the scanner will accept extended advertising packets. - If set to 0, the scanner will not receive advertising packets - on secondary advertising channels, and will not be able - to receive long advertising PDUs. */ - uint8_t report_incomplete_evts : 1; /**< If 1, events of type @ref ble_gap_evt_adv_report_t may have - @ref ble_gap_adv_report_type_t::status set to - @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA. - This parameter is ignored when used with @ref sd_ble_gap_connect - @note This may be used to abort receiving more packets from an extended - advertising event, and is only available for extended - scanning, see @ref sd_ble_gap_scan_start. - @note This feature is not supported by this SoftDevice. */ - uint8_t active : 1; /**< If 1, perform active scanning by sending scan requests. - This parameter is ignored when used with @ref sd_ble_gap_connect. */ - uint8_t filter_policy : 2; /**< Scanning filter policy. @sa BLE_GAP_SCAN_FILTER_POLICIES. - @note Only @ref BLE_GAP_SCAN_FP_ACCEPT_ALL and - @ref BLE_GAP_SCAN_FP_WHITELIST are valid when used with - @ref sd_ble_gap_connect */ - uint8_t scan_phys; /**< Bitfield of PHYs to scan on. If set to @ref BLE_GAP_PHY_AUTO, - scan_phys will default to @ref BLE_GAP_PHY_1MBPS. - - If @ref ble_gap_scan_params_t::extended is set to 0, the only - supported PHY is @ref BLE_GAP_PHY_1MBPS. - - When used with @ref sd_ble_gap_scan_start, - the bitfield indicates the PHYs the scanner will use for scanning - on primary advertising channels. The scanner will accept - @ref BLE_GAP_PHYS_SUPPORTED as secondary advertising channel PHYs. - - When used with @ref sd_ble_gap_connect, the - bitfield indicates the PHYs on where a connection may be initiated. - If scan_phys contains @ref BLE_GAP_PHY_1MBPS and/or @ref BLE_GAP_PHY_2MBPS, - the primary scan PHY is @ref BLE_GAP_PHY_1MBPS. */ - uint16_t interval; /**< Scan interval in 625 us units. @sa BLE_GAP_SCAN_INTERVALS. */ - uint16_t window; /**< Scan window in 625 us units. @sa BLE_GAP_SCAN_WINDOW. */ - uint16_t timeout; /**< Scan timeout in 10 ms units. @sa BLE_GAP_SCAN_TIMEOUT. */ - ble_gap_ch_mask_t channel_mask; /**< Channel mask for primary and secondary advertising channels. - At least one of the primary channels, that is channel index 37-39, must be - set to 0. - Masking away secondary channels is not supported. */ -} ble_gap_scan_params_t; - - -/**@brief Privacy. - * - * The privacy feature provides a way for the device to avoid being tracked over a period of time. - * The privacy feature, when enabled, hides the local device identity and replaces it with a private address - * that is automatically refreshed at a specified interval. - * - * If a device still wants to be recognized by other peers, it needs to share it's Identity Resolving Key (IRK). - * With this key, a device can generate a random private address that can only be recognized by peers in possession of that key, - * and devices can establish connections without revealing their real identities. - * - * Both network privacy (@ref BLE_GAP_PRIVACY_MODE_NETWORK_PRIVACY) and device privacy (@ref BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY) - * are supported. - * - * @note If the device IRK is updated, the new IRK becomes the one to be distributed in all - * bonding procedures performed after @ref sd_ble_gap_privacy_set returns. - * The IRK distributed during bonding procedure is the device IRK that is active when @ref sd_ble_gap_sec_params_reply is called. - */ -typedef struct -{ - uint8_t privacy_mode; /**< Privacy mode, see @ref BLE_GAP_PRIVACY_MODES. Default is @ref BLE_GAP_PRIVACY_MODE_OFF. */ - uint8_t private_addr_type; /**< The private address type must be either @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE or @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE. */ - uint16_t private_addr_cycle_s; /**< Private address cycle interval in seconds. Providing an address cycle value of 0 will use the default value defined by @ref BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S. */ - ble_gap_irk_t *p_device_irk; /**< When used as input, pointer to IRK structure that will be used as the default IRK. If NULL, the device default IRK will be used. - When used as output, pointer to IRK structure where the current default IRK will be written to. If NULL, this argument is ignored. - By default, the default IRK is used to generate random private resolvable addresses for the local device unless instructed otherwise. */ -} ble_gap_privacy_params_t; - - -/**@brief PHY preferences for TX and RX - * @note tx_phys and rx_phys are bit fields. Multiple bits can be set in them to indicate multiple preferred PHYs for each direction. - * @code - * p_gap_phys->tx_phys = BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS; - * p_gap_phys->rx_phys = BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS; - * @endcode - * - */ -typedef struct -{ - uint8_t tx_phys; /**< Preferred transmit PHYs, see @ref BLE_GAP_PHYS. */ - uint8_t rx_phys; /**< Preferred receive PHYs, see @ref BLE_GAP_PHYS. */ -} ble_gap_phys_t; - -/** @brief Keys that can be exchanged during a bonding procedure. */ -typedef struct -{ - uint8_t enc : 1; /**< Long Term Key and Master Identification. */ - uint8_t id : 1; /**< Identity Resolving Key and Identity Address Information. */ - uint8_t sign : 1; /**< Connection Signature Resolving Key. */ - uint8_t link : 1; /**< Derive the Link Key from the LTK. */ -} ble_gap_sec_kdist_t; - - -/**@brief GAP security parameters. */ -typedef struct -{ - uint8_t bond : 1; /**< Perform bonding. */ - uint8_t mitm : 1; /**< Enable Man In The Middle protection. */ - uint8_t lesc : 1; /**< Enable LE Secure Connection pairing. */ - uint8_t keypress : 1; /**< Enable generation of keypress notifications. */ - uint8_t io_caps : 3; /**< IO capabilities, see @ref BLE_GAP_IO_CAPS. */ - uint8_t oob : 1; /**< The OOB data flag. - - In LE legacy pairing, this flag is set if a device has out of band authentication data. - The OOB method is used if both of the devices have out of band authentication data. - - In LE Secure Connections pairing, this flag is set if a device has the peer device's out of band authentication data. - The OOB method is used if at least one device has the peer device's OOB data available. */ - uint8_t min_key_size; /**< Minimum encryption key size in octets between 7 and 16. If 0 then not applicable in this instance. */ - uint8_t max_key_size; /**< Maximum encryption key size in octets between min_key_size and 16. */ - ble_gap_sec_kdist_t kdist_own; /**< Key distribution bitmap: keys that the local device will distribute. */ - ble_gap_sec_kdist_t kdist_peer; /**< Key distribution bitmap: keys that the remote device will distribute. */ -} ble_gap_sec_params_t; - - -/**@brief GAP Encryption Information. */ -typedef struct -{ - uint8_t ltk[BLE_GAP_SEC_KEY_LEN]; /**< Long Term Key. */ - uint8_t lesc : 1; /**< Key generated using LE Secure Connections. */ - uint8_t auth : 1; /**< Authenticated Key. */ - uint8_t ltk_len : 6; /**< LTK length in octets. */ -} ble_gap_enc_info_t; - - -/**@brief GAP Master Identification. */ -typedef struct -{ - uint16_t ediv; /**< Encrypted Diversifier. */ - uint8_t rand[BLE_GAP_SEC_RAND_LEN]; /**< Random Number. */ -} ble_gap_master_id_t; - - -/**@brief GAP Signing Information. */ -typedef struct -{ - uint8_t csrk[BLE_GAP_SEC_KEY_LEN]; /**< Connection Signature Resolving Key. */ -} ble_gap_sign_info_t; - - -/**@brief GAP LE Secure Connections P-256 Public Key. */ -typedef struct -{ - uint8_t pk[BLE_GAP_LESC_P256_PK_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key. Stored in the standard SMP protocol format: {X,Y} both in little-endian. */ -} ble_gap_lesc_p256_pk_t; - - -/**@brief GAP LE Secure Connections DHKey. */ -typedef struct -{ - uint8_t key[BLE_GAP_LESC_DHKEY_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman Key. Stored in little-endian. */ -} ble_gap_lesc_dhkey_t; - - -/**@brief GAP LE Secure Connections OOB data. */ -typedef struct -{ - ble_gap_addr_t addr; /**< Bluetooth address of the device. */ - uint8_t r[BLE_GAP_SEC_KEY_LEN]; /**< Random Number. */ - uint8_t c[BLE_GAP_SEC_KEY_LEN]; /**< Confirm Value. */ -} ble_gap_lesc_oob_data_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONNECTED. */ -typedef struct -{ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 - and the address is the device's identity address. */ - uint8_t role; /**< BLE role for this connection, see @ref BLE_GAP_ROLES */ - ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ - uint8_t adv_handle; /**< Advertising handle in which advertising has ended. - This variable is only set if role is set to @ref BLE_GAP_ROLE_PERIPH. */ - ble_gap_adv_data_t adv_data; /**< Advertising buffers corresponding to the terminated - advertising set. The advertising buffers provided in - @ref sd_ble_gap_adv_set_configure are now released. - This variable is only set if role is set to @ref BLE_GAP_ROLE_PERIPH. */ -} ble_gap_evt_connected_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_DISCONNECTED. */ -typedef struct -{ - uint8_t reason; /**< HCI error code, see @ref BLE_HCI_STATUS_CODES. */ -} ble_gap_evt_disconnected_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE. */ -typedef struct -{ - ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ -} ble_gap_evt_conn_param_update_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_PHY_UPDATE_REQUEST. */ -typedef struct -{ - ble_gap_phys_t peer_preferred_phys; /**< The PHYs the peer prefers to use. */ -} ble_gap_evt_phy_update_request_t; - -/**@brief Event Structure for @ref BLE_GAP_EVT_PHY_UPDATE. */ -typedef struct -{ - uint8_t status; /**< Status of the procedure, see @ref BLE_HCI_STATUS_CODES.*/ - uint8_t tx_phy; /**< TX PHY for this connection, see @ref BLE_GAP_PHYS. */ - uint8_t rx_phy; /**< RX PHY for this connection, see @ref BLE_GAP_PHYS. */ -} ble_gap_evt_phy_update_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST. */ -typedef struct -{ - ble_gap_sec_params_t peer_params; /**< Initiator Security Parameters. */ -} ble_gap_evt_sec_params_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_SEC_INFO_REQUEST. */ -typedef struct -{ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ - ble_gap_master_id_t master_id; /**< Master Identification for LTK lookup. */ - uint8_t enc_info : 1; /**< If 1, Encryption Information required. */ - uint8_t id_info : 1; /**< If 1, Identity Information required. */ - uint8_t sign_info : 1; /**< If 1, Signing Information required. */ -} ble_gap_evt_sec_info_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_PASSKEY_DISPLAY. */ -typedef struct -{ - uint8_t passkey[BLE_GAP_PASSKEY_LEN]; /**< 6-digit passkey in ASCII ('0'-'9' digits only). */ - uint8_t match_request : 1; /**< If 1 requires the application to report the match using @ref sd_ble_gap_auth_key_reply - with either @ref BLE_GAP_AUTH_KEY_TYPE_NONE if there is no match or - @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY if there is a match. */ -} ble_gap_evt_passkey_display_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_KEY_PRESSED. */ -typedef struct -{ - uint8_t kp_not; /**< Keypress notification type, see @ref BLE_GAP_KP_NOT_TYPES. */ -} ble_gap_evt_key_pressed_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_KEY_REQUEST. */ -typedef struct -{ - uint8_t key_type; /**< See @ref BLE_GAP_AUTH_KEY_TYPES. */ -} ble_gap_evt_auth_key_request_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST. */ -typedef struct -{ - ble_gap_lesc_p256_pk_t *p_pk_peer; /**< LE Secure Connections remote P-256 Public Key. This will point to the application-supplied memory - inside the keyset during the call to @ref sd_ble_gap_sec_params_reply. */ - uint8_t oobd_req :1; /**< LESC OOB data required. A call to @ref sd_ble_gap_lesc_oob_data_set is required to complete the procedure. */ -} ble_gap_evt_lesc_dhkey_request_t; - - -/**@brief Security levels supported. - * @note See Bluetooth Specification Version 4.2 Volume 3, Part C, Chapter 10, Section 10.2.1. -*/ -typedef struct -{ - uint8_t lv1 : 1; /**< If 1: Level 1 is supported. */ - uint8_t lv2 : 1; /**< If 1: Level 2 is supported. */ - uint8_t lv3 : 1; /**< If 1: Level 3 is supported. */ - uint8_t lv4 : 1; /**< If 1: Level 4 is supported. */ -} ble_gap_sec_levels_t; - - -/**@brief Encryption Key. */ -typedef struct -{ - ble_gap_enc_info_t enc_info; /**< Encryption Information. */ - ble_gap_master_id_t master_id; /**< Master Identification. */ -} ble_gap_enc_key_t; - - -/**@brief Identity Key. */ -typedef struct -{ - ble_gap_irk_t id_info; /**< Identity Resolving Key. */ - ble_gap_addr_t id_addr_info; /**< Identity Address. */ -} ble_gap_id_key_t; - - -/**@brief Security Keys. */ -typedef struct -{ - ble_gap_enc_key_t *p_enc_key; /**< Encryption Key, or NULL. */ - ble_gap_id_key_t *p_id_key; /**< Identity Key, or NULL. */ - ble_gap_sign_info_t *p_sign_key; /**< Signing Key, or NULL. */ - ble_gap_lesc_p256_pk_t *p_pk; /**< LE Secure Connections P-256 Public Key. When in debug mode the application must use the value defined - in the Core Bluetooth Specification v4.2 Vol.3, Part H, Section 2.3.5.6.1 */ -} ble_gap_sec_keys_t; - - -/**@brief Security key set for both local and peer keys. */ -typedef struct -{ - ble_gap_sec_keys_t keys_own; /**< Keys distributed by the local device. For LE Secure Connections the encryption key will be generated locally and will always be stored if bonding. */ - ble_gap_sec_keys_t keys_peer; /**< Keys distributed by the remote device. For LE Secure Connections, p_enc_key must always be NULL. */ -} ble_gap_sec_keyset_t; - - -/**@brief Data Length Update Procedure parameters. */ -typedef struct -{ - uint16_t max_tx_octets; /**< Maximum number of payload octets that a Controller supports for transmission of a single Link Layer Data Channel PDU. */ - uint16_t max_rx_octets; /**< Maximum number of payload octets that a Controller supports for reception of a single Link Layer Data Channel PDU. */ - uint16_t max_tx_time_us; /**< Maximum time, in microseconds, that a Controller supports for transmission of a single Link Layer Data Channel PDU. */ - uint16_t max_rx_time_us; /**< Maximum time, in microseconds, that a Controller supports for reception of a single Link Layer Data Channel PDU. */ -} ble_gap_data_length_params_t; - - -/**@brief Data Length Update Procedure local limitation. */ -typedef struct -{ - uint16_t tx_payload_limited_octets; /**< If > 0, the requested TX packet length is too long by this many octets. */ - uint16_t rx_payload_limited_octets; /**< If > 0, the requested RX packet length is too long by this many octets. */ - uint16_t tx_rx_time_limited_us; /**< If > 0, the requested combination of TX and RX packet lengths is too long by this many microseconds. */ -} ble_gap_data_length_limitation_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_STATUS. */ -typedef struct -{ - uint8_t auth_status; /**< Authentication status, see @ref BLE_GAP_SEC_STATUS. */ - uint8_t error_src : 2; /**< On error, source that caused the failure, see @ref BLE_GAP_SEC_STATUS_SOURCES. */ - uint8_t bonded : 1; /**< Procedure resulted in a bond. */ - uint8_t lesc : 1; /**< Procedure resulted in a LE Secure Connection. */ - ble_gap_sec_levels_t sm1_levels; /**< Levels supported in Security Mode 1. */ - ble_gap_sec_levels_t sm2_levels; /**< Levels supported in Security Mode 2. */ - ble_gap_sec_kdist_t kdist_own; /**< Bitmap stating which keys were exchanged (distributed) by the local device. If bonding with LE Secure Connections, the enc bit will be always set. */ - ble_gap_sec_kdist_t kdist_peer; /**< Bitmap stating which keys were exchanged (distributed) by the remote device. If bonding with LE Secure Connections, the enc bit will never be set. */ -} ble_gap_evt_auth_status_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONN_SEC_UPDATE. */ -typedef struct -{ - ble_gap_conn_sec_t conn_sec; /**< Connection security level. */ -} ble_gap_evt_conn_sec_update_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Source of timeout event, see @ref BLE_GAP_TIMEOUT_SOURCES. */ - union - { - ble_data_t adv_report_buffer; /**< If source is set to @ref BLE_GAP_TIMEOUT_SRC_SCAN, the released - scan buffer is contained in this field. */ - } params; /**< Event Parameters. */ -} ble_gap_evt_timeout_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_RSSI_CHANGED. */ -typedef struct -{ - int8_t rssi; /**< Received Signal Strength Indication in dBm. */ - uint8_t ch_index; /**< Data Channel Index on which the Signal Strength is measured (0-36). */ -} ble_gap_evt_rssi_changed_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_ADV_SET_TERMINATED */ -typedef struct -{ - uint8_t reason; /**< Reason for why the advertising set terminated. See - @ref BLE_GAP_EVT_ADV_SET_TERMINATED_REASON. */ - uint8_t adv_handle; /**< Advertising handle in which advertising has ended. */ - uint8_t num_completed_adv_events; /**< If @ref ble_gap_adv_params_t::max_adv_evts was not set to 0, - this field indicates the number of completed advertising events. */ - ble_gap_adv_data_t adv_data; /**< Advertising buffers corresponding to the terminated - advertising set. The advertising buffers provided in - @ref sd_ble_gap_adv_set_configure are now released. */ -} ble_gap_evt_adv_set_terminated_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_ADV_REPORT. - * - * @note If @ref ble_gap_adv_report_type_t::status is set to @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA, - * not all fields in the advertising report may be available. - * - * @note When ble_gap_adv_report_type_t::status is not set to @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA, - * scanning will be paused. To continue scanning, call @ref sd_ble_gap_scan_start. - */ -typedef struct -{ - ble_gap_adv_report_type_t type; /**< Advertising report type. See @ref ble_gap_adv_report_type_t. */ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr is resolved: - @ref ble_gap_addr_t::addr_id_peer is set to 1 and the address is the - peer's identity address. */ - ble_gap_addr_t direct_addr; /**< Contains the target address of the advertising event if - @ref ble_gap_adv_report_type_t::directed is set to 1. If the - SoftDevice was able to resolve the address, - @ref ble_gap_addr_t::addr_id_peer is set to 1 and the direct_addr - contains the local identity address. If the target address of the - advertising event is @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE, - and the SoftDevice was unable to resolve it, the application may try - to resolve this address to find out if the advertising event was - directed to us. */ - uint8_t primary_phy; /**< Indicates the PHY on which the primary advertising packet was received. - See @ref BLE_GAP_PHYS. */ - uint8_t secondary_phy; /**< Indicates the PHY on which the secondary advertising packet was received. - See @ref BLE_GAP_PHYS. This field is set to @ref BLE_GAP_PHY_NOT_SET if no packets - were received on a secondary advertising channel. */ - int8_t tx_power; /**< TX Power reported by the advertiser in the last packet header received. - This field is set to @ref BLE_GAP_POWER_LEVEL_INVALID if the - last received packet did not contain the Tx Power field. - @note TX Power is only included in extended advertising packets. */ - int8_t rssi; /**< Received Signal Strength Indication in dBm of the last packet received. */ - uint8_t ch_index; /**< Channel Index on which the last advertising packet is received (0-39). */ - uint8_t set_id; /**< Set ID of the received advertising data. Set ID is not present - if set to @ref BLE_GAP_ADV_REPORT_SET_ID_NOT_AVAILABLE. */ - uint16_t data_id:12; /**< The advertising data ID of the received advertising data. Data ID - is not present if @ref ble_gap_evt_adv_report_t::set_id is set to - @ref BLE_GAP_ADV_REPORT_SET_ID_NOT_AVAILABLE. */ - ble_data_t data; /**< Received advertising or scan response data. If - @ref ble_gap_adv_report_type_t::status is not set to - @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA, the data buffer provided - in @ref sd_ble_gap_scan_start is now released. */ - ble_gap_aux_pointer_t aux_pointer; /**< The offset and PHY of the next advertising packet in this extended advertising - event. @note This field is only set if @ref ble_gap_adv_report_type_t::status - is set to @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA. */ -} ble_gap_evt_adv_report_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_SEC_REQUEST. */ -typedef struct -{ - uint8_t bond : 1; /**< Perform bonding. */ - uint8_t mitm : 1; /**< Man In The Middle protection requested. */ - uint8_t lesc : 1; /**< LE Secure Connections requested. */ - uint8_t keypress : 1; /**< Generation of keypress notifications requested. */ -} ble_gap_evt_sec_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST. */ -typedef struct -{ - ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ -} ble_gap_evt_conn_param_update_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_SCAN_REQ_REPORT. */ -typedef struct -{ - uint8_t adv_handle; /**< Advertising handle for the advertising set which received the Scan Request */ - int8_t rssi; /**< Received Signal Strength Indication in dBm. */ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 - and the address is the device's identity address. */ -} ble_gap_evt_scan_req_report_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST. */ -typedef struct -{ - ble_gap_data_length_params_t peer_params; /**< Peer data length parameters. */ -} ble_gap_evt_data_length_update_request_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_DATA_LENGTH_UPDATE. */ -typedef struct -{ - ble_gap_data_length_params_t effective_params; /**< The effective data length parameters. */ -} ble_gap_evt_data_length_update_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_QOS_CHANNEL_SURVEY_REPORT. */ -typedef struct -{ - int8_t channel_energy[BLE_GAP_CHANNEL_COUNT]; /**< The measured energy on the Bluetooth Low Energy - channels, in dBm, indexed by Channel Index. - If no measurement is available for the given channel, channel_energy is set to - @ref BLE_GAP_POWER_LEVEL_INVALID. */ -} ble_gap_evt_qos_channel_survey_report_t; - -/**@brief GAP event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which event occurred. */ - union /**< union alternative identified by evt_id in enclosing struct. */ - { - ble_gap_evt_connected_t connected; /**< Connected Event Parameters. */ - ble_gap_evt_disconnected_t disconnected; /**< Disconnected Event Parameters. */ - ble_gap_evt_conn_param_update_t conn_param_update; /**< Connection Parameter Update Parameters. */ - ble_gap_evt_sec_params_request_t sec_params_request; /**< Security Parameters Request Event Parameters. */ - ble_gap_evt_sec_info_request_t sec_info_request; /**< Security Information Request Event Parameters. */ - ble_gap_evt_passkey_display_t passkey_display; /**< Passkey Display Event Parameters. */ - ble_gap_evt_key_pressed_t key_pressed; /**< Key Pressed Event Parameters. */ - ble_gap_evt_auth_key_request_t auth_key_request; /**< Authentication Key Request Event Parameters. */ - ble_gap_evt_lesc_dhkey_request_t lesc_dhkey_request; /**< LE Secure Connections DHKey calculation request. */ - ble_gap_evt_auth_status_t auth_status; /**< Authentication Status Event Parameters. */ - ble_gap_evt_conn_sec_update_t conn_sec_update; /**< Connection Security Update Event Parameters. */ - ble_gap_evt_timeout_t timeout; /**< Timeout Event Parameters. */ - ble_gap_evt_rssi_changed_t rssi_changed; /**< RSSI Event Parameters. */ - ble_gap_evt_adv_report_t adv_report; /**< Advertising Report Event Parameters. */ - ble_gap_evt_adv_set_terminated_t adv_set_terminated; /**< Advertising Set Terminated Event Parameters. */ - ble_gap_evt_sec_request_t sec_request; /**< Security Request Event Parameters. */ - ble_gap_evt_conn_param_update_request_t conn_param_update_request; /**< Connection Parameter Update Parameters. */ - ble_gap_evt_scan_req_report_t scan_req_report; /**< Scan Request Report Parameters. */ - ble_gap_evt_phy_update_request_t phy_update_request; /**< PHY Update Request Event Parameters. */ - ble_gap_evt_phy_update_t phy_update; /**< PHY Update Parameters. */ - ble_gap_evt_data_length_update_request_t data_length_update_request; /**< Data Length Update Request Event Parameters. */ - ble_gap_evt_data_length_update_t data_length_update; /**< Data Length Update Event Parameters. */ - ble_gap_evt_qos_channel_survey_report_t qos_channel_survey_report; /**< Quality of Service (QoS) Channel Survey Report Parameters. */ - } params; /**< Event Parameters. */ -} ble_gap_evt_t; - - -/** - * @brief BLE GAP connection configuration parameters, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_CONN_COUNT The connection count for the connection configurations is zero. - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - The sum of conn_count for all connection configurations combined exceeds UINT8_MAX. - * - The event length is smaller than @ref BLE_GAP_EVENT_LENGTH_MIN. - */ -typedef struct -{ - uint8_t conn_count; /**< The number of concurrent connections the application can create with this configuration. - The default and minimum value is @ref BLE_GAP_CONN_COUNT_DEFAULT. */ - uint16_t event_length; /**< The time set aside for this connection on every connection interval in 1.25 ms units. - The default value is @ref BLE_GAP_EVENT_LENGTH_DEFAULT, the minimum value is @ref BLE_GAP_EVENT_LENGTH_MIN. - The event length and the connection interval are the primary parameters - for setting the throughput of a connection. - See the SoftDevice Specification for details on throughput. */ -} ble_gap_conn_cfg_t; - - -/** - * @brief Configuration of maximum concurrent connections in the different connected roles, set with - * @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_CONN_COUNT The sum of periph_role_count and central_role_count is too - * large. The maximum supported sum of concurrent connections is - * @ref BLE_GAP_ROLE_COUNT_COMBINED_MAX. - * @retval ::NRF_ERROR_INVALID_PARAM central_sec_count is larger than central_role_count. - * @retval ::NRF_ERROR_RESOURCES The adv_set_count is too large. The maximum - * supported advertising handles is - * @ref BLE_GAP_ADV_SET_COUNT_MAX. - */ -typedef struct -{ - uint8_t adv_set_count; /**< Maximum number of advertising sets. Default value is @ref BLE_GAP_ADV_SET_COUNT_DEFAULT. */ - uint8_t periph_role_count; /**< Maximum number of connections concurrently acting as a peripheral. Default value is @ref BLE_GAP_ROLE_COUNT_PERIPH_DEFAULT. */ - uint8_t central_role_count; /**< Maximum number of connections concurrently acting as a central. Default value is @ref BLE_GAP_ROLE_COUNT_CENTRAL_DEFAULT. */ - uint8_t central_sec_count; /**< Number of SMP instances shared between all connections acting as a central. Default value is @ref BLE_GAP_ROLE_COUNT_CENTRAL_SEC_DEFAULT. */ - uint8_t qos_channel_survey_role_available:1; /**< If set, the Quality of Service (QoS) channel survey module is available to the - application using @ref sd_ble_gap_qos_channel_survey_start. */ -} ble_gap_cfg_role_count_t; - - -/** - * @brief Device name and its properties, set with @ref sd_ble_cfg_set. - * - * @note If the device name is not configured, the default device name will be - * @ref BLE_GAP_DEVNAME_DEFAULT, the maximum device name length will be - * @ref BLE_GAP_DEVNAME_DEFAULT_LEN, vloc will be set to @ref BLE_GATTS_VLOC_STACK and the device name - * will have no write access. - * - * @note If @ref max_len is more than @ref BLE_GAP_DEVNAME_DEFAULT_LEN and vloc is set to @ref BLE_GATTS_VLOC_STACK, - * the attribute table size must be increased to have room for the longer device name (see - * @ref sd_ble_cfg_set and @ref ble_gatts_cfg_attr_tab_size_t). - * - * @note If vloc is @ref BLE_GATTS_VLOC_STACK : - * - p_value must point to non-volatile memory (flash) or be NULL. - * - If p_value is NULL, the device name will initially be empty. - * - * @note If vloc is @ref BLE_GATTS_VLOC_USER : - * - p_value cannot be NULL. - * - If the device name is writable, p_value must point to volatile memory (RAM). - * - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - Invalid device name location (vloc). - * - Invalid device name security mode. - * @retval ::NRF_ERROR_INVALID_LENGTH One or more of the following is true: - * - The device name length is invalid (must be between 0 and @ref BLE_GAP_DEVNAME_MAX_LEN). - * - The device name length is too long for the given Attribute Table. - * @retval ::NRF_ERROR_NOT_SUPPORTED Device name security mode is not supported. - */ -typedef struct -{ - ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ - uint8_t vloc:2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ - uint8_t *p_value; /**< Pointer to where the value (device name) is stored or will be stored. */ - uint16_t current_len; /**< Current length in bytes of the memory pointed to by p_value.*/ - uint16_t max_len; /**< Maximum length in bytes of the memory pointed to by p_value.*/ -} ble_gap_cfg_device_name_t; - - -/**@brief Configuration structure for GAP configurations. */ -typedef union -{ - ble_gap_cfg_role_count_t role_count_cfg; /**< Role count configuration, cfg_id is @ref BLE_GAP_CFG_ROLE_COUNT. */ - ble_gap_cfg_device_name_t device_name_cfg; /**< Device name configuration, cfg_id is @ref BLE_GAP_CFG_DEVICE_NAME. */ -} ble_gap_cfg_t; - - -/**@brief Channel Map option. - * - * @details Used with @ref sd_ble_opt_get to get the current channel map - * or @ref sd_ble_opt_set to set a new channel map. When setting the - * channel map, it applies to all current and future connections. When getting the - * current channel map, it applies to a single connection and the connection handle - * must be supplied. - * - * @note Setting the channel map may take some time, depending on connection parameters. - * The time taken may be different for each connection and the get operation will - * return the previous channel map until the new one has taken effect. - * - * @note After setting the channel map, by spec it can not be set again until at least 1 s has passed. - * See Bluetooth Specification Version 4.1 Volume 2, Part E, Section 7.3.46. - * - * @retval ::NRF_SUCCESS Get or set successful. - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - Less then two bits in @ref ch_map are set. - * - Bits for primary advertising channels (37-39) are set. - * @retval ::NRF_ERROR_BUSY Channel map was set again before enough time had passed. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied for get. - * - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle (only applicable for get) */ - uint8_t ch_map[5]; /**< Channel Map (37-bit). */ -} ble_gap_opt_ch_map_t; - - -/**@brief Local connection latency option. - * - * @details Local connection latency is a feature which enables the slave to improve - * current consumption by ignoring the slave latency set by the peer. The - * local connection latency can only be set to a multiple of the slave latency, - * and cannot be longer than half of the supervision timeout. - * - * @details Used with @ref sd_ble_opt_set to set the local connection latency. The - * @ref sd_ble_opt_get is not supported for this option, but the actual - * local connection latency (unless set to NULL) is set as a return parameter - * when setting the option. - * - * @note The latency set will be truncated down to the closest slave latency event - * multiple, or the nearest multiple before half of the supervision timeout. - * - * @note The local connection latency is disabled by default, and needs to be enabled for new - * connections and whenever the connection is updated. - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle */ - uint16_t requested_latency; /**< Requested local connection latency. */ - uint16_t * p_actual_latency; /**< Pointer to storage for the actual local connection latency (can be set to NULL to skip return value). */ -} ble_gap_opt_local_conn_latency_t; - -/**@brief Disable slave latency - * - * @details Used with @ref sd_ble_opt_set to temporarily disable slave latency of a peripheral connection - * (see @ref ble_gap_conn_params_t::slave_latency). And to re-enable it again. When disabled, the - * peripheral will ignore the slave_latency set by the central. - * - * @note Shall only be called on peripheral links. - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle */ - uint8_t disable : 1; /**< Set to 1 to disable slave latency. Set to 0 enable it again.*/ -} ble_gap_opt_slave_latency_disable_t; - -/**@brief Passkey Option. - * - * @details Structure containing the passkey to be used during pairing. This can be used with @ref - * sd_ble_opt_set to make the SoftDevice use a preprogrammed passkey for authentication - * instead of generating a random one. - * - * @note Repeated pairing attempts using the same preprogrammed passkey makes pairing vulnerable to MITM attacks. - * - * @note @ref sd_ble_opt_get is not supported for this option. - * - */ -typedef struct -{ - uint8_t const * p_passkey; /**< Pointer to 6-digit ASCII string (digit 0..9 only, no NULL termination) passkey to be used during pairing. If this is NULL, the SoftDevice will generate a random passkey if required.*/ -} ble_gap_opt_passkey_t; - - -/**@brief Compatibility mode 1 option. - * - * @details This can be used with @ref sd_ble_opt_set to enable and disable - * compatibility mode 1. Compatibility mode 1 is disabled by default. - * - * @note Compatibility mode 1 enables interoperability with devices that do not support a value of - * 0 for the WinOffset parameter in the Link Layer CONNECT_IND packet. This applies to a - * limited set of legacy peripheral devices from another vendor. Enabling this compatibility - * mode will only have an effect if the local device will act as a central device and - * initiate a connection to a peripheral device. In that case it may lead to the connection - * creation taking up to one connection interval longer to complete for all connections. - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_INVALID_STATE When connection creation is ongoing while mode 1 is set. - */ -typedef struct -{ - uint8_t enable : 1; /**< Enable compatibility mode 1.*/ -} ble_gap_opt_compat_mode_1_t; - - -/**@brief Authenticated payload timeout option. - * - * @details This can be used with @ref sd_ble_opt_set to change the Authenticated payload timeout to a value other - * than the default of @ref BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MAX. - * - * @note The authenticated payload timeout event ::BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD will be generated - * if auth_payload_timeout time has elapsed without receiving a packet with a valid MIC on an encrypted - * link. - * - * @note The LE ping procedure will be initiated before the timer expires to give the peer a chance - * to reset the timer. In addition the stack will try to prioritize running of LE ping over other - * activities to increase chances of finishing LE ping before timer expires. To avoid side-effects - * on other activities, it is recommended to use high timeout values. - * Recommended timeout > 2*(connInterval * (6 + connSlaveLatency)). - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. auth_payload_timeout was outside of allowed range. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle */ - uint16_t auth_payload_timeout; /**< Requested timeout in 10 ms unit, see @ref BLE_GAP_AUTH_PAYLOAD_TIMEOUT. */ -} ble_gap_opt_auth_payload_timeout_t; - -/**@brief Option structure for GAP options. */ -typedef union -{ - ble_gap_opt_ch_map_t ch_map; /**< Parameters for the Channel Map option. */ - ble_gap_opt_local_conn_latency_t local_conn_latency; /**< Parameters for the Local connection latency option */ - ble_gap_opt_passkey_t passkey; /**< Parameters for the Passkey option.*/ - ble_gap_opt_compat_mode_1_t compat_mode_1; /**< Parameters for the compatibility mode 1 option.*/ - ble_gap_opt_auth_payload_timeout_t auth_payload_timeout; /**< Parameters for the authenticated payload timeout option.*/ - ble_gap_opt_slave_latency_disable_t slave_latency_disable; /**< Parameters for the Disable slave latency option */ -} ble_gap_opt_t; -/**@} */ - - -/**@addtogroup BLE_GAP_FUNCTIONS Functions - * @{ */ - -/**@brief Set the local Bluetooth identity address. - * - * The local Bluetooth identity address is the address that identifies this device to other peers. - * The address type must be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. - * - * @note The identity address cannot be changed while advertising, scanning or creating a connection. - * - * @note This address will be distributed to the peer during bonding. - * If the address changes, the address stored in the peer device will not be valid and the ability to - * reconnect using the old address will be lost. - * - * @note By default the SoftDevice will set an address of type @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC upon being - * enabled. The address is a random number populated during the IC manufacturing process and remains unchanged - * for the lifetime of each IC. - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @endmscs - * - * @param[in] p_addr Pointer to address structure. - * - * @retval ::NRF_SUCCESS Address successfully set. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_STATE The identity address cannot be changed while advertising, - * scanning or creating a connection. - */ -SVCALL(SD_BLE_GAP_ADDR_SET, uint32_t, sd_ble_gap_addr_set(ble_gap_addr_t const *p_addr)); - - -/**@brief Get local Bluetooth identity address. - * - * @note This will always return the identity address irrespective of the privacy settings, - * i.e. the address type will always be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. - * - * @param[out] p_addr Pointer to address structure to be filled in. - * - * @retval ::NRF_SUCCESS Address successfully retrieved. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. - */ -SVCALL(SD_BLE_GAP_ADDR_GET, uint32_t, sd_ble_gap_addr_get(ble_gap_addr_t *p_addr)); - - -/**@brief Get the Bluetooth device address used by the advertiser. - * - * @note This function will return the local Bluetooth address used in advertising PDUs. When - * using privacy, the SoftDevice will generate a new private address every - * @ref ble_gap_privacy_params_t::private_addr_cycle_s configured using - * @ref sd_ble_gap_privacy_set. Hence depending on when the application calls this API, the - * address returned may not be the latest address that is used in the advertising PDUs. - * - * @param[in] adv_handle The advertising handle to get the address from. - * @param[out] p_addr Pointer to address structure to be filled in. - * - * @retval ::NRF_SUCCESS Address successfully retrieved. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE The provided advertising handle was not found. - * @retval ::NRF_ERROR_INVALID_STATE The advertising set is currently not advertising. - */ -SVCALL(SD_BLE_GAP_ADV_ADDR_GET, uint32_t, sd_ble_gap_adv_addr_get(uint8_t adv_handle, ble_gap_addr_t *p_addr)); - - -/**@brief Set the active whitelist in the SoftDevice. - * - * @note Only one whitelist can be used at a time and the whitelist is shared between the BLE roles. - * The whitelist cannot be set if a BLE role is using the whitelist. - * - * @note If an address is resolved using the information in the device identity list, then the whitelist - * filter policy applies to the peer identity address and not the resolvable address sent on air. - * - * @mscs - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_PRIVATE_SCAN_MSC} - * @endmscs - * - * @param[in] pp_wl_addrs Pointer to a whitelist of peer addresses, if NULL the whitelist will be cleared. - * @param[in] len Length of the whitelist, maximum @ref BLE_GAP_WHITELIST_ADDR_MAX_COUNT. - * - * @retval ::NRF_SUCCESS The whitelist is successfully set/cleared. - * @retval ::NRF_ERROR_INVALID_ADDR The whitelist (or one of its entries) provided is invalid. - * @retval ::BLE_ERROR_GAP_WHITELIST_IN_USE The whitelist is in use by a BLE role and cannot be set or cleared. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. - * @retval ::NRF_ERROR_DATA_SIZE The given whitelist size is invalid (zero or too large); this can only return when - * pp_wl_addrs is not NULL. - */ -SVCALL(SD_BLE_GAP_WHITELIST_SET, uint32_t, sd_ble_gap_whitelist_set(ble_gap_addr_t const * const * pp_wl_addrs, uint8_t len)); - - -/**@brief Set device identity list. - * - * @note Only one device identity list can be used at a time and the list is shared between the BLE roles. - * The device identity list cannot be set if a BLE role is using the list. - * - * @param[in] pp_id_keys Pointer to an array of peer identity addresses and peer IRKs, if NULL the device identity list will be cleared. - * @param[in] pp_local_irks Pointer to an array of local IRKs. Each entry in the array maps to the entry in pp_id_keys at the same index. - * To fill in the list with the currently set device IRK for all peers, set to NULL. - * @param[in] len Length of the device identity list, maximum @ref BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT. - * - * @mscs - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_PRIVATE_SCAN_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_CONN_PRIV_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS The device identity list successfully set/cleared. - * @retval ::NRF_ERROR_INVALID_ADDR The device identity list (or one of its entries) provided is invalid. - * This code may be returned if the local IRK list also has an invalid entry. - * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE The device identity list is in use and cannot be set or cleared. - * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE The device identity list contains multiple entries with the same identity address. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. - * @retval ::NRF_ERROR_DATA_SIZE The given device identity list size invalid (zero or too large); this can - * only return when pp_id_keys is not NULL. - */ -SVCALL(SD_BLE_GAP_DEVICE_IDENTITIES_SET, uint32_t, sd_ble_gap_device_identities_set(ble_gap_id_key_t const * const * pp_id_keys, ble_gap_irk_t const * const * pp_local_irks, uint8_t len)); - - -/**@brief Set privacy settings. - * - * @note Privacy settings cannot be changed while advertising, scanning or creating a connection. - * - * @param[in] p_privacy_params Privacy settings. - * - * @mscs - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. - * @retval ::NRF_ERROR_INVALID_ADDR The pointer to privacy settings is NULL or invalid. - * Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. - * @retval ::NRF_ERROR_INVALID_PARAM Out of range parameters are provided. - * @retval ::NRF_ERROR_INVALID_STATE Privacy settings cannot be changed while advertising, scanning - * or creating a connection. - */ -SVCALL(SD_BLE_GAP_PRIVACY_SET, uint32_t, sd_ble_gap_privacy_set(ble_gap_privacy_params_t const *p_privacy_params)); - - -/**@brief Get privacy settings. - * - * @note ::ble_gap_privacy_params_t::p_device_irk must be initialized to NULL or a valid address before this function is called. - * If it is initialized to a valid address, the address pointed to will contain the current device IRK on return. - * - * @param[in,out] p_privacy_params Privacy settings. - * - * @retval ::NRF_SUCCESS Privacy settings read. - * @retval ::NRF_ERROR_INVALID_ADDR The pointer given for returning the privacy settings may be NULL or invalid. - * Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. - */ -SVCALL(SD_BLE_GAP_PRIVACY_GET, uint32_t, sd_ble_gap_privacy_get(ble_gap_privacy_params_t *p_privacy_params)); - - -/**@brief Configure an advertising set. Set, clear or update advertising and scan response data. - * - * @note The format of the advertising data will be checked by this call to ensure interoperability. - * Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and - * duplicating the local name in the advertising data and scan response data. - * - * @note In order to update advertising data while advertising, new advertising buffers must be provided. - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @endmscs - * - * @param[in,out] p_adv_handle Provide a pointer to a handle containing @ref BLE_GAP_ADV_SET_HANDLE_NOT_SET to configure - * a new advertising set. On success, a new handle is then returned through the pointer. - * Provide a pointer to an existing advertising handle to configure an existing advertising set. - * @param[in] p_adv_data Advertising data. If set to NULL, no advertising data will be used. See @ref ble_gap_adv_data_t. - * @param[in] p_adv_params Advertising parameters. When this function is used to update advertising data while advertising, - * this parameter must be NULL. See @ref ble_gap_adv_params_t. - * - * @retval ::NRF_SUCCESS Advertising set successfully configured. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied: - * - Invalid advertising data configuration specified. See @ref ble_gap_adv_data_t. - * - Invalid configuration of p_adv_params. See @ref ble_gap_adv_params_t. - * - Use of whitelist requested but whitelist has not been set, - * see @ref sd_ble_gap_whitelist_set. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR ble_gap_adv_params_t::p_peer_addr is invalid. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - It is invalid to provide non-NULL advertising set parameters while advertising. - * - It is invalid to provide the same data buffers while advertising. To update - * advertising data, provide new advertising buffers. - * @retval ::BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST Discoverable mode and whitelist incompatible. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE The provided advertising handle was not found. Use @ref BLE_GAP_ADV_SET_HANDLE_NOT_SET to - * configure a new advertising handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_FLAGS Invalid combination of advertising flags supplied. - * @retval ::NRF_ERROR_INVALID_DATA Invalid data type(s) supplied. Check the advertising data format specification - * given in Bluetooth Specification Version 5.0, Volume 3, Part C, Chapter 11. - * @retval ::NRF_ERROR_INVALID_LENGTH Invalid data length(s) supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported data length or advertising parameter configuration. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to configure a new advertising handle. Update an - * existing advertising handle instead. - * @retval ::BLE_ERROR_GAP_UUID_LIST_MISMATCH Invalid UUID list supplied. - */ -SVCALL(SD_BLE_GAP_ADV_SET_CONFIGURE, uint32_t, sd_ble_gap_adv_set_configure(uint8_t *p_adv_handle, ble_gap_adv_data_t const *p_adv_data, ble_gap_adv_params_t const *p_adv_params)); - - -/**@brief Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). - * - * @note Only one advertiser may be active at any time. - * - * @events - * @event{@ref BLE_GAP_EVT_CONNECTED, Generated after connection has been established through connectable advertising.} - * @event{@ref BLE_GAP_EVT_ADV_SET_TERMINATED, Advertising set has terminated.} - * @event{@ref BLE_GAP_EVT_SCAN_REQ_REPORT, A scan request was received.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @endmscs - * - * @param[in] adv_handle Advertising handle to advertise on, received from @ref sd_ble_gap_adv_set_configure. - * @param[in] conn_cfg_tag Tag identifying a configuration set by @ref sd_ble_cfg_set or - * @ref BLE_CONN_CFG_TAG_DEFAULT to use the default connection configuration. For non-connectable - * advertising, this is ignored. - * - * @retval ::NRF_SUCCESS The BLE stack has started advertising. - * @retval ::NRF_ERROR_INVALID_STATE adv_handle is not configured or already advertising. - * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached; connectable advertiser cannot be started. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE Advertising handle not found. Configure a new adveriting handle with @ref sd_ble_gap_adv_set_configure. - * @retval ::NRF_ERROR_NOT_FOUND conn_cfg_tag not found. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied: - * - Invalid configuration of p_adv_params. See @ref ble_gap_adv_params_t. - * - Use of whitelist requested but whitelist has not been set, see @ref sd_ble_gap_whitelist_set. - * @retval ::NRF_ERROR_RESOURCES Either: - * - adv_handle is configured with connectable advertising, but the event_length parameter - * associated with conn_cfg_tag is too small to be able to establish a connection on - * the selected advertising phys. Use @ref sd_ble_cfg_set to increase the event length. - * - Not enough BLE role slots available. - Stop one or more currently active roles (Central, Peripheral, Broadcaster or Observer) and try again. - * - p_adv_params is configured with connectable advertising, but the event_length parameter - * associated with conn_cfg_tag is too small to be able to establish a connection on - * the selected advertising phys. Use @ref sd_ble_cfg_set to increase the event length. - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported PHYs supplied to the call. - */ -SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(uint8_t adv_handle, uint8_t conn_cfg_tag)); - - -/**@brief Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @endmscs - * - * @param[in] adv_handle The advertising handle that should stop advertising. - * - * @retval ::NRF_SUCCESS The BLE stack has stopped advertising. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE Invalid advertising handle. - * @retval ::NRF_ERROR_INVALID_STATE The advertising handle is not advertising. - */ -SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(uint8_t adv_handle)); - - - -/**@brief Update connection parameters. - * - * @details In the central role this will initiate a Link Layer connection parameter update procedure, - * otherwise in the peripheral role, this will send the corresponding L2CAP request and wait for - * the central to perform the procedure. In both cases, and regardless of success or failure, the application - * will be informed of the result with a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE event. - * - * @details This function can be used as a central both to reply to a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST or to start the procedure unrequested. - * - * @events - * @event{@ref BLE_GAP_EVT_CONN_PARAM_UPDATE, Result of the connection parameter update procedure.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CPU_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} - * @mmsc{@ref BLE_GAP_MULTILINK_CPU_MSC} - * @mmsc{@ref BLE_GAP_MULTILINK_CTRL_PROC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_CPU_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_conn_params Pointer to desired connection parameters. If NULL is provided on a peripheral role, - * the parameters in the PPCP characteristic of the GAP service will be used instead. - * If NULL is provided on a central role and in response to a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST, the peripheral request will be rejected - * - * @retval ::NRF_SUCCESS The Connection Update procedure has been started successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. - * @retval ::NRF_ERROR_INVALID_STATE Disconnection in progress or link has not been established. - * @retval ::NRF_ERROR_BUSY Procedure already in progress, wait for pending procedures to complete and retry. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const *p_conn_params)); - - -/**@brief Disconnect (GAP Link Termination). - * - * @details This call initiates the disconnection procedure, and its completion will be communicated to the application - * with a @ref BLE_GAP_EVT_DISCONNECTED event. - * - * @events - * @event{@ref BLE_GAP_EVT_DISCONNECTED, Generated when disconnection procedure is complete.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CONN_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] hci_status_code HCI status code, see @ref BLE_HCI_STATUS_CODES (accepted values are @ref BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION and @ref BLE_HCI_CONN_INTERVAL_UNACCEPTABLE). - * - * @retval ::NRF_SUCCESS The disconnection procedure has been started successfully. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_INVALID_STATE Disconnection in progress or link has not been established. - */ -SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code)); - - -/**@brief Set the radio's transmit power. - * - * @param[in] role The role to set the transmit power for, see @ref BLE_GAP_TX_POWER_ROLES for - * possible roles. - * @param[in] handle The handle parameter is interpreted depending on role: - * - If role is @ref BLE_GAP_TX_POWER_ROLE_CONN, this value is the specific connection handle. - * - If role is @ref BLE_GAP_TX_POWER_ROLE_ADV, the advertising set identified with the advertising handle, - * will use the specified transmit power, and include it in the advertising packet headers if - * @ref ble_gap_adv_properties_t::include_tx_power set. - * - For all other roles handle is ignored. - * @param[in] tx_power Radio transmit power in dBm (see note for accepted values). - * - * @note Supported tx_power values: -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +3dBm and +4dBm. - * @note The initiator will have the same transmit power as the scanner. - * @note When a connection is created it will inherit the transmit power from the initiator or - * advertiser leading to the connection. - * - * @retval ::NRF_SUCCESS Successfully changed the transmit power. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE Advertising handle not found. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(uint8_t role, uint16_t handle, int8_t tx_power)); - - -/**@brief Set GAP Appearance value. - * - * @param[in] appearance Appearance (16-bit), see @ref BLE_APPEARANCES. - * - * @retval ::NRF_SUCCESS Appearance value set successfully. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - */ -SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance)); - - -/**@brief Get GAP Appearance value. - * - * @param[out] p_appearance Pointer to appearance (16-bit) to be filled in, see @ref BLE_APPEARANCES. - * - * @retval ::NRF_SUCCESS Appearance value retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t *p_appearance)); - - -/**@brief Set GAP Peripheral Preferred Connection Parameters. - * - * @param[in] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure with the desired parameters. - * - * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters set successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - */ -SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const *p_conn_params)); - - -/**@brief Get GAP Peripheral Preferred Connection Parameters. - * - * @param[out] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure where the parameters will be stored. - * - * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t *p_conn_params)); - - -/**@brief Set GAP device name. - * - * @note If the device name is located in application flash memory (see @ref ble_gap_cfg_device_name_t), - * it cannot be changed. Then @ref NRF_ERROR_FORBIDDEN will be returned. - * - * @param[in] p_write_perm Write permissions for the Device Name characteristic, see @ref ble_gap_conn_sec_mode_t. - * @param[in] p_dev_name Pointer to a UTF-8 encoded, non NULL-terminated string. - * @param[in] len Length of the UTF-8, non NULL-terminated string pointed to by p_dev_name in octets (must be smaller or equal than @ref BLE_GAP_DEVNAME_MAX_LEN). - * - * @retval ::NRF_SUCCESS GAP device name and permissions set successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @retval ::NRF_ERROR_FORBIDDEN Device name is not writable. - */ -SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len)); - - -/**@brief Get GAP device name. - * - * @note If the device name is longer than the size of the supplied buffer, - * p_len will return the complete device name length, - * and not the number of bytes actually returned in p_dev_name. - * The application may use this information to allocate a suitable buffer size. - * - * @param[out] p_dev_name Pointer to an empty buffer where the UTF-8 non NULL-terminated string will be placed. Set to NULL to obtain the complete device name length. - * @param[in,out] p_len Length of the buffer pointed by p_dev_name, complete device name length on output. - * - * @retval ::NRF_SUCCESS GAP device name retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - */ -SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t *p_dev_name, uint16_t *p_len)); - - -/**@brief Initiate the GAP Authentication procedure. - * - * @details In the central role, this function will send an SMP Pairing Request (or an SMP Pairing Failed if rejected), - * otherwise in the peripheral role, an SMP Security Request will be sent. - * - * @events - * @event{Depending on the security parameters set and the packet exchanges with the peer\, the following events may be generated:} - * @event{@ref BLE_GAP_EVT_SEC_PARAMS_REQUEST} - * @event{@ref BLE_GAP_EVT_SEC_INFO_REQUEST} - * @event{@ref BLE_GAP_EVT_PASSKEY_DISPLAY} - * @event{@ref BLE_GAP_EVT_KEY_PRESSED} - * @event{@ref BLE_GAP_EVT_AUTH_KEY_REQUEST} - * @event{@ref BLE_GAP_EVT_LESC_DHKEY_REQUEST} - * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE} - * @event{@ref BLE_GAP_EVT_AUTH_STATUS} - * @event{@ref BLE_GAP_EVT_TIMEOUT} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_SEC_REQ_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_SEC_REQ_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_sec_params Pointer to the @ref ble_gap_sec_params_t structure with the security parameters to be used during the pairing or bonding procedure. - * In the peripheral role, only the bond, mitm, lesc and keypress fields of this structure are used. - * In the central role, this pointer may be NULL to reject a Security Request. - * - * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - No link has been established. - * - An encryption is already executing or queued. - * @retval ::NRF_ERROR_NO_MEM The maximum number of authentication procedures that can run in parallel for the given role is reached. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. - * @retval ::NRF_ERROR_TIMEOUT A SMP timeout has occurred, and further SMP operations on this link is prohibited. - */ -SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const *p_sec_params)); - - -/**@brief Reply with GAP security parameters. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_PERIPH_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_CONFIRM_FAIL_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_KS_TOO_SMALL_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_APP_ERROR_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_REMOTE_PAIRING_FAIL_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_TIMEOUT_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] sec_status Security status, see @ref BLE_GAP_SEC_STATUS. - * @param[in] p_sec_params Pointer to a @ref ble_gap_sec_params_t security parameters structure. In the central role this must be set to NULL, as the parameters have - * already been provided during a previous call to @ref sd_ble_gap_authenticate. - * @param[in,out] p_sec_keyset Pointer to a @ref ble_gap_sec_keyset_t security keyset structure. Any keys generated and/or distributed as a result of the ongoing security procedure - * will be stored into the memory referenced by the pointers inside this structure. The keys will be stored and available to the application - * upon reception of a @ref BLE_GAP_EVT_AUTH_STATUS event. - * Note that the SoftDevice expects the application to provide memory for storing the - * peer's keys. So it must be ensured that the relevant pointers inside this structure are not NULL. The pointers to the local key - * can, however, be NULL, in which case, the local key data will not be available to the application upon reception of the - * @ref BLE_GAP_EVT_AUTH_STATUS event. - * - * @retval ::NRF_SUCCESS Successfully accepted security parameter from the application. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Security parameters has not been requested. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. - */ -SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const *p_sec_params, ble_gap_sec_keyset_t const *p_sec_keyset)); - - -/**@brief Reply with an authentication key. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_AUTH_KEY_REQUEST or a @ref BLE_GAP_EVT_PASSKEY_DISPLAY, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] key_type See @ref BLE_GAP_AUTH_KEY_TYPES. - * @param[in] p_key If key type is @ref BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL. - * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination) - * or NULL when confirming LE Secure Connections Numeric Comparison. - * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in little-endian format. - * - * @retval ::NRF_SUCCESS Authentication key successfully set. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Authentication key has not been requested. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const *p_key)); - - -/**@brief Reply with an LE Secure connections DHKey. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_dhkey LE Secure Connections DHKey. - * - * @retval ::NRF_SUCCESS DHKey successfully set. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - The peer is not authenticated. - * - The application has not pulled a @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST event. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_LESC_DHKEY_REPLY, uint32_t, sd_ble_gap_lesc_dhkey_reply(uint16_t conn_handle, ble_gap_lesc_dhkey_t const *p_dhkey)); - - -/**@brief Notify the peer of a local keypress. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] kp_not See @ref BLE_GAP_KP_NOT_TYPES. - * - * @retval ::NRF_SUCCESS Keypress notification successfully queued for transmission. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - Authentication key not requested. - * - Passkey has not been entered. - * - Keypresses have not been enabled by both peers. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy. Retry at later time. - */ -SVCALL(SD_BLE_GAP_KEYPRESS_NOTIFY, uint32_t, sd_ble_gap_keypress_notify(uint16_t conn_handle, uint8_t kp_not)); - - -/**@brief Generate a set of OOB data to send to a peer out of band. - * - * @note The @ref ble_gap_addr_t included in the OOB data returned will be the currently active one (or, if a connection has already been established, - * the one used during connection setup). The application may manually overwrite it with an updated value. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. Can be @ref BLE_CONN_HANDLE_INVALID if a BLE connection has not been established yet. - * @param[in] p_pk_own LE Secure Connections local P-256 Public Key. - * @param[out] p_oobd_own The OOB data to be sent out of band to a peer. - * - * @retval ::NRF_SUCCESS OOB data successfully generated. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_LESC_OOB_DATA_GET, uint32_t, sd_ble_gap_lesc_oob_data_get(uint16_t conn_handle, ble_gap_lesc_p256_pk_t const *p_pk_own, ble_gap_lesc_oob_data_t *p_oobd_own)); - -/**@brief Provide the OOB data sent/received out of band. - * - * @note An authentication procedure with OOB selected as an algorithm must be in progress when calling this function. - * @note A @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST event with the oobd_req set to 1 must have been received prior to calling this function. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_oobd_own The OOB data sent out of band to a peer or NULL if the peer has not received OOB data. - * Must correspond to @ref ble_gap_sec_params_t::oob flag in @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST. - * @param[in] p_oobd_peer The OOB data received out of band from a peer or NULL if none received. - * Must correspond to @ref ble_gap_sec_params_t::oob flag - * in @ref sd_ble_gap_authenticate in the central role or - * in @ref sd_ble_gap_sec_params_reply in the peripheral role. - * - * @retval ::NRF_SUCCESS OOB data accepted. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - Authentication key not requested - * - Not expecting LESC OOB data - * - Have not actually exchanged passkeys. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_LESC_OOB_DATA_SET, uint32_t, sd_ble_gap_lesc_oob_data_set(uint16_t conn_handle, ble_gap_lesc_oob_data_t const *p_oobd_own, ble_gap_lesc_oob_data_t const *p_oobd_peer)); - - -/**@brief Initiate GAP Encryption procedure. - * - * @details In the central role, this function will initiate the encryption procedure using the encryption information provided. - * - * @events - * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE, The connection security has been updated.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_ENC_MSC} - * @mmsc{@ref BLE_GAP_MULTILINK_CTRL_PROC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_SEC_REQ_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_master_id Pointer to a @ref ble_gap_master_id_t master identification structure. - * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. - * - * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE No link has been established. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::BLE_ERROR_INVALID_ROLE Operation is not supported in the Peripheral role. - * @retval ::NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, wait for pending procedures to complete and retry. - */ -SVCALL(SD_BLE_GAP_ENCRYPT, uint32_t, sd_ble_gap_encrypt(uint16_t conn_handle, ble_gap_master_id_t const *p_master_id, ble_gap_enc_info_t const *p_enc_info)); - - -/**@brief Reply with GAP security information. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * @note Data signing is not yet supported, and p_sign_info must therefore be NULL. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_ENC_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available. - * @param[in] p_id_info Pointer to a @ref ble_gap_irk_t identity information structure. May be NULL to signal none is available. - * @param[in] p_sign_info Pointer to a @ref ble_gap_sign_info_t signing information structure. May be NULL to signal none is available. - * - * @retval ::NRF_SUCCESS Successfully accepted security information. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - No link has been established. - * - No @ref BLE_GAP_EVT_SEC_REQUEST pending. - * - LE long term key requested command not allowed. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const *p_enc_info, ble_gap_irk_t const *p_id_info, ble_gap_sign_info_t const *p_sign_info)); - - -/**@brief Get the current connection security. - * - * @param[in] conn_handle Connection handle. - * @param[out] p_conn_sec Pointer to a @ref ble_gap_conn_sec_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Current connection security successfully retrieved. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t *p_conn_sec)); - - -/**@brief Start reporting the received signal strength to the application. - * - * A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called. - * - * @events - * @event{@ref BLE_GAP_EVT_RSSI_CHANGED, New RSSI data available. How often the event is generated is - * dependent on the settings of the threshold_dbm - * and skip_count input parameters.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} - * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] threshold_dbm Minimum change in dBm before triggering the @ref BLE_GAP_EVT_RSSI_CHANGED event. Events are disabled if threshold_dbm equals @ref BLE_GAP_RSSI_THRESHOLD_INVALID. - * @param[in] skip_count Number of RSSI samples with a change of threshold_dbm or more before sending a new @ref BLE_GAP_EVT_RSSI_CHANGED event. - * - * @retval ::NRF_SUCCESS Successfully activated RSSI reporting. - * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is already ongoing. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle, uint8_t threshold_dbm, uint8_t skip_count)); - - -/**@brief Stop reporting the received signal strength. - * - * @note An RSSI change detected before the call but not yet received by the application - * may be reported after @ref sd_ble_gap_rssi_stop has been called. - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} - * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * - * @retval ::NRF_SUCCESS Successfully deactivated RSSI reporting. - * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is not ongoing. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle)); - - -/**@brief Get the received signal strength for the last connection event. - * - * @ref sd_ble_gap_rssi_start must be called to start reporting RSSI before using this function. @ref NRF_ERROR_NOT_FOUND - * will be returned until RSSI was sampled for the first time after calling @ref sd_ble_gap_rssi_start. - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[out] p_rssi Pointer to the location where the RSSI measurement shall be stored. - * @param[out] p_ch_index Pointer to the location where Channel Index for the RSSI measurement shall be stored. - * - * @retval ::NRF_SUCCESS Successfully read the RSSI. - * @retval ::NRF_ERROR_NOT_FOUND No sample is available. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is not ongoing. - */ -SVCALL(SD_BLE_GAP_RSSI_GET, uint32_t, sd_ble_gap_rssi_get(uint16_t conn_handle, int8_t *p_rssi, uint8_t *p_ch_index)); - - -/**@brief Start or continue scanning (GAP Discovery procedure, Observer Procedure). - * - * @note A call to this function will require the application to keep the memory pointed by - * p_adv_report_buffer alive until the buffer is released. The buffer is released when the scanner is stopped - * or when this function is called with another buffer. - * - * @note The scanner will automatically stop in the following cases: - * - @ref sd_ble_gap_scan_stop is called. - * - @ref sd_ble_gap_connect is called. - * - A @ref BLE_GAP_EVT_TIMEOUT with source set to @ref BLE_GAP_TIMEOUT_SRC_SCAN is received. - * - When a @ref BLE_GAP_EVT_ADV_REPORT event is received and @ref ble_gap_adv_report_type_t::status is not set to - * @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA. In this case scanning is only paused to let the application - * access received data. The application must call this function to continue scanning, or call @ref sd_ble_gap_scan_stop - * to stop scanning. - * - * @note If a @ref BLE_GAP_EVT_ADV_REPORT event is received with @ref ble_gap_adv_report_type_t::status set to - * @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA, the scanner will continue scanning, and the application will - * receive more reports from this advertising event. The following reports will include the old and new received data. - * - * @events - * @event{@ref BLE_GAP_EVT_ADV_REPORT, An advertising or scan response packet has been received.} - * @event{@ref BLE_GAP_EVT_TIMEOUT, Scanner has timed out.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_SCAN_MSC} - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @endmscs - * - * @param[in] p_scan_params Pointer to scan parameters structure. When this function is used to continue - * scanning, this parameter must be NULL. - * @param[in] p_adv_report_buffer Pointer to buffer used to store incoming advertising data. - * The memory pointed to should be kept alive until the scanning is stopped. - * See @ref BLE_GAP_SCAN_BUFFER_SIZE for minimum and maximum buffer size. - * If the scanner receives advertising data larger than can be stored in the buffer, - * a @ref BLE_GAP_EVT_ADV_REPORT will be raised with @ref ble_gap_adv_report_type_t::status - * set to @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_TRUNCATED. - * - * @retval ::NRF_SUCCESS Successfully initiated scanning procedure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - Scanning is already ongoing and p_scan_params was not NULL - * - Scanning is not running and p_scan_params was NULL. - * - The scanner has timed out when this function is called to continue scanning. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. See @ref ble_gap_scan_params_t. - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported parameters supplied. See @ref ble_gap_scan_params_t. - * @retval ::NRF_ERROR_INVALID_LENGTH The provided buffer length is invalid. See @ref BLE_GAP_SCAN_BUFFER_MIN. - * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. - * Stop one or more currently active roles (Central, Peripheral or Broadcaster) and try again - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported PHYs supplied to the call. - */ -SVCALL(SD_BLE_GAP_SCAN_START, uint32_t, sd_ble_gap_scan_start(ble_gap_scan_params_t const *p_scan_params, ble_data_t const * p_adv_report_buffer)); - - -/**@brief Stop scanning (GAP Discovery procedure, Observer Procedure). - * - * @note The buffer provided in @ref sd_ble_gap_scan_start is released. - * - * @mscs - * @mmsc{@ref BLE_GAP_SCAN_MSC} - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Successfully stopped scanning procedure. - * @retval ::NRF_ERROR_INVALID_STATE Not in the scanning state. - */ -SVCALL(SD_BLE_GAP_SCAN_STOP, uint32_t, sd_ble_gap_scan_stop(void)); - - -/**@brief Create a connection (GAP Link Establishment). - * - * @note If a scanning procedure is currently in progress it will be automatically stopped when calling this function. - * The scanning procedure will be stopped even if the function returns an error. - * - * @events - * @event{@ref BLE_GAP_EVT_CONNECTED, A connection was established.} - * @event{@ref BLE_GAP_EVT_TIMEOUT, Failed to establish a connection.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_CONN_PRIV_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_CONN_MSC} - * @endmscs - * - * @param[in] p_peer_addr Pointer to peer identity address. If @ref ble_gap_scan_params_t::filter_policy is set to use - * whitelist, then p_peer_addr is ignored. - * @param[in] p_scan_params Pointer to scan parameters structure. - * @param[in] p_conn_params Pointer to desired connection parameters. - * @param[in] conn_cfg_tag Tag identifying a configuration set by @ref sd_ble_cfg_set or - * @ref BLE_CONN_CFG_TAG_DEFAULT to use the default connection configuration. - * - * @retval ::NRF_SUCCESS Successfully initiated connection procedure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid parameter(s) pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * - Invalid parameter(s) in p_scan_params or p_conn_params. - * - Use of whitelist requested but whitelist has not been set, see @ref sd_ble_gap_whitelist_set. - * - Peer address was not present in the device identity list, see @ref sd_ble_gap_device_identities_set. - * @retval ::NRF_ERROR_NOT_FOUND conn_cfg_tag not found. - * @retval ::NRF_ERROR_INVALID_STATE The SoftDevice is in an invalid state to perform this operation. This may be due to an - * existing locally initiated connect procedure, which must complete before initiating again. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Peer address. - * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached. - * @retval ::NRF_ERROR_RESOURCES Either: - * - Not enough BLE role slots available. - * Stop one or more currently active roles (Central, Peripheral or Observer) and try again. - * - The event_length parameter associated with conn_cfg_tag is too small to be able to - * establish a connection on the selected @ref ble_gap_scan_params_t::scan_phys. - * Use @ref sd_ble_cfg_set to increase the event length. - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported PHYs supplied to the call. - */ -SVCALL(SD_BLE_GAP_CONNECT, uint32_t, sd_ble_gap_connect(ble_gap_addr_t const *p_peer_addr, ble_gap_scan_params_t const *p_scan_params, ble_gap_conn_params_t const *p_conn_params, uint8_t conn_cfg_tag)); - - -/**@brief Cancel a connection establishment. - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_CONN_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Successfully canceled an ongoing connection procedure. - * @retval ::NRF_ERROR_INVALID_STATE No locally initiated connect procedure started or connection - * completed occurred. - */ -SVCALL(SD_BLE_GAP_CONNECT_CANCEL, uint32_t, sd_ble_gap_connect_cancel(void)); - - -/**@brief Initiate or respond to a PHY Update Procedure - * - * @details This function is used to initiate or respond to a PHY Update Procedure. It will always - * generate a @ref BLE_GAP_EVT_PHY_UPDATE event if successfully executed. - * If this function is used to initiate a PHY Update procedure and the only option - * provided in @ref ble_gap_phys_t::tx_phys and @ref ble_gap_phys_t::rx_phys is the - * currently active PHYs in the respective directions, the SoftDevice will generate a - * @ref BLE_GAP_EVT_PHY_UPDATE with the current PHYs set and will not initiate the - * procedure in the Link Layer. - * - * If @ref ble_gap_phys_t::tx_phys or @ref ble_gap_phys_t::rx_phys is @ref BLE_GAP_PHY_AUTO, - * then the stack will select PHYs based on the peer's PHY preferences and the local link - * configuration. The PHY Update procedure will for this case result in a PHY combination - * that respects the time constraints configured with @ref sd_ble_cfg_set and the current - * link layer data length. - * - * When acting as a central, the SoftDevice will select the fastest common PHY in each direction. - * - * If the peer does not support the PHY Update Procedure, then the resulting - * @ref BLE_GAP_EVT_PHY_UPDATE event will have a status set to - * @ref BLE_HCI_UNSUPPORTED_REMOTE_FEATURE. - * - * If the PHY procedure was rejected by the peer due to a procedure collision, the status - * will be @ref BLE_HCI_STATUS_CODE_LMP_ERROR_TRANSACTION_COLLISION or - * @ref BLE_HCI_DIFFERENT_TRANSACTION_COLLISION. - * If the peer responds to the PHY Update procedure with invalid parameters, the status - * will be @ref BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS. - * If the PHY procedure was rejected by the peer for a different reason, the status will - * contain the reason as specified by the peer. - * - * @events - * @event{@ref BLE_GAP_EVT_PHY_UPDATE, Result of the PHY Update Procedure.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_PHY_UPDATE} - * @mmsc{@ref BLE_GAP_PERIPHERAL_PHY_UPDATE} - * @endmscs - * - * @param[in] conn_handle Connection handle to indicate the connection for which the PHY Update is requested. - * @param[in] p_gap_phys Pointer to PHY structure. - * - * @retval ::NRF_SUCCESS Successfully requested a PHY Update. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported PHYs supplied to the call. - * @retval ::NRF_ERROR_INVALID_STATE No link has been established. - * @retval ::NRF_ERROR_BUSY Procedure is already in progress or not allowed at this time. Process pending events and wait for the pending procedure to complete and retry. - * - */ -SVCALL(SD_BLE_GAP_PHY_UPDATE, uint32_t, sd_ble_gap_phy_update(uint16_t conn_handle, ble_gap_phys_t const *p_gap_phys)); - - -/**@brief Initiate or respond to a Data Length Update Procedure. - * - * @note If the application uses @ref BLE_GAP_DATA_LENGTH_AUTO for one or more members of - * p_dl_params, the SoftDevice will choose the highest value supported in current - * configuration and connection parameters. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_dl_params Pointer to local parameters to be used in Data Length Update - * Procedure. Set any member to @ref BLE_GAP_DATA_LENGTH_AUTO to let - * the SoftDevice automatically decide the value for that member. - * Set to NULL to use automatic values for all members. - * @param[out] p_dl_limitation Pointer to limitation to be written when local device does not - * have enough resources or does not support the requested Data Length - * Update parameters. Ignored if NULL. - * - * @mscs - * @mmsc{@ref BLE_GAP_DATA_LENGTH_UPDATE_PROCEDURE_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Successfully set Data Length Extension initiation/response parameters. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter supplied. - * @retval ::NRF_ERROR_INVALID_STATE No link has been established. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameters supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED The requested parameters are not supported by the SoftDevice. Inspect - * p_dl_limitation to see which parameter is not supported. - * @retval ::NRF_ERROR_RESOURCES The connection event length configured for this link is not sufficient for the requested parameters. - * Use @ref sd_ble_cfg_set with @ref BLE_CONN_CFG_GAP to increase the connection event length. - * Inspect p_dl_limitation to see where the limitation is. - * @retval ::NRF_ERROR_BUSY Peer has already initiated a Data Length Update Procedure. Process the - * pending @ref BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST event to respond. - */ -SVCALL(SD_BLE_GAP_DATA_LENGTH_UPDATE, uint32_t, sd_ble_gap_data_length_update(uint16_t conn_handle, ble_gap_data_length_params_t const *p_dl_params, ble_gap_data_length_limitation_t *p_dl_limitation)); - -/**@brief Start the Quality of Service (QoS) channel survey module. - * - * @details The channel survey module provides measurements of the energy levels on - * the Bluetooth Low Energy channels. When the module is enabled, @ref BLE_GAP_EVT_QOS_CHANNEL_SURVEY_REPORT - * events will periodically report the measured energy levels for each channel. - * - * @note The measurements are scheduled with lower priority than other Bluetooth Low Energy roles, - * Radio Timeslot API events and Flash API events. - * - * @note The channel survey module will attempt to do measurements so that the average interval - * between measurements will be interval_us. However due to the channel survey module - * having the lowest priority of all roles and modules, this may not be possible. In that - * case fewer than expected channel survey reports may be given. - * - * @note In order to use the channel survey module, @ref ble_gap_cfg_role_count_t::qos_channel_survey_role_available - * must be set. This is done using @ref sd_ble_cfg_set. - * - * @param[in] interval_us Requested average interval for the measurements and reports. See - * @ref BLE_GAP_QOS_CHANNEL_SURVEY_INTERVALS for valid ranges. If set - * to @ref BLE_GAP_QOS_CHANNEL_SURVEY_INTERVAL_CONTINUOUS, the channel - * survey role will be scheduled at every available opportunity. - * - * @retval ::NRF_SUCCESS The module is successfully started. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter supplied. interval_us is out of the - * allowed range. - * @retval ::NRF_ERROR_INVALID_STATE Trying to start the module when already running. - * @retval ::NRF_ERROR_RESOURCES The channel survey module is not available to the application. - * Set @ref ble_gap_cfg_role_count_t::qos_channel_survey_role_available using - * @ref sd_ble_cfg_set. - */ -SVCALL(SD_BLE_GAP_QOS_CHANNEL_SURVEY_START, uint32_t, sd_ble_gap_qos_channel_survey_start(uint32_t interval_us)); - -/**@brief Stop the Quality of Service (QoS) channel survey module. - * - * @retval ::NRF_SUCCESS The module is successfully stopped. - * @retval ::NRF_ERROR_INVALID_STATE Trying to stop the module when it is not running. - */ -SVCALL(SD_BLE_GAP_QOS_CHANNEL_SURVEY_STOP, uint32_t, sd_ble_gap_qos_channel_survey_stop(void)); - - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_GAP_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gatt.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gatt.h deleted file mode 100644 index 9cb577c..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gatt.h +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright (c) 2013 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_GATT Generic Attribute Profile (GATT) Common - @{ - @brief Common definitions and prototypes for the GATT interfaces. - */ - -#ifndef BLE_GATT_H__ -#define BLE_GATT_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_hci.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_GATT_DEFINES Defines - * @{ */ - -/** @brief Default ATT MTU, in bytes. */ -#define BLE_GATT_ATT_MTU_DEFAULT 23 - -/**@brief Invalid Attribute Handle. */ -#define BLE_GATT_HANDLE_INVALID 0x0000 - -/**@brief First Attribute Handle. */ -#define BLE_GATT_HANDLE_START 0x0001 - -/**@brief Last Attribute Handle. */ -#define BLE_GATT_HANDLE_END 0xFFFF - -/** @defgroup BLE_GATT_TIMEOUT_SOURCES GATT Timeout sources - * @{ */ -#define BLE_GATT_TIMEOUT_SRC_PROTOCOL 0x00 /**< ATT Protocol timeout. */ -/** @} */ - -/** @defgroup BLE_GATT_WRITE_OPS GATT Write operations - * @{ */ -#define BLE_GATT_OP_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATT_OP_WRITE_REQ 0x01 /**< Write Request. */ -#define BLE_GATT_OP_WRITE_CMD 0x02 /**< Write Command. */ -#define BLE_GATT_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ -#define BLE_GATT_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ -#define BLE_GATT_OP_EXEC_WRITE_REQ 0x05 /**< Execute Write Request. */ -/** @} */ - -/** @defgroup BLE_GATT_EXEC_WRITE_FLAGS GATT Execute Write flags - * @{ */ -#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL 0x00 /**< Cancel prepared write. */ -#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE 0x01 /**< Execute prepared write. */ -/** @} */ - -/** @defgroup BLE_GATT_HVX_TYPES GATT Handle Value operations - * @{ */ -#define BLE_GATT_HVX_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATT_HVX_NOTIFICATION 0x01 /**< Handle Value Notification. */ -#define BLE_GATT_HVX_INDICATION 0x02 /**< Handle Value Indication. */ -/** @} */ - -/** @defgroup BLE_GATT_STATUS_CODES GATT Status Codes - * @{ */ -#define BLE_GATT_STATUS_SUCCESS 0x0000 /**< Success. */ -#define BLE_GATT_STATUS_UNKNOWN 0x0001 /**< Unknown or not applicable status. */ -#define BLE_GATT_STATUS_ATTERR_INVALID 0x0100 /**< ATT Error: Invalid Error Code. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_HANDLE 0x0101 /**< ATT Error: Invalid Attribute Handle. */ -#define BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED 0x0102 /**< ATT Error: Read not permitted. */ -#define BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED 0x0103 /**< ATT Error: Write not permitted. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_PDU 0x0104 /**< ATT Error: Used in ATT as Invalid PDU. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION 0x0105 /**< ATT Error: Authenticated link required. */ -#define BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED 0x0106 /**< ATT Error: Used in ATT as Request Not Supported. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_OFFSET 0x0107 /**< ATT Error: Offset specified was past the end of the attribute. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION 0x0108 /**< ATT Error: Used in ATT as Insufficient Authorization. */ -#define BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL 0x0109 /**< ATT Error: Used in ATT as Prepare Queue Full. */ -#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND 0x010A /**< ATT Error: Used in ATT as Attribute not found. */ -#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG 0x010B /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE 0x010C /**< ATT Error: Encryption key size used is insufficient. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH 0x010D /**< ATT Error: Invalid value size. */ -#define BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR 0x010E /**< ATT Error: Very unlikely error. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION 0x010F /**< ATT Error: Encrypted link required. */ -#define BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE 0x0110 /**< ATT Error: Attribute type is not a supported grouping attribute. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES 0x0111 /**< ATT Error: Encrypted link required. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN 0x0112 /**< ATT Error: Reserved for Future Use range #1 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END 0x017F /**< ATT Error: Reserved for Future Use range #1 end. */ -#define BLE_GATT_STATUS_ATTERR_APP_BEGIN 0x0180 /**< ATT Error: Application range begin. */ -#define BLE_GATT_STATUS_ATTERR_APP_END 0x019F /**< ATT Error: Application range end. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN 0x01A0 /**< ATT Error: Reserved for Future Use range #2 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END 0x01DF /**< ATT Error: Reserved for Future Use range #2 end. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN 0x01E0 /**< ATT Error: Reserved for Future Use range #3 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END 0x01FC /**< ATT Error: Reserved for Future Use range #3 end. */ -#define BLE_GATT_STATUS_ATTERR_CPS_WRITE_REQ_REJECTED 0x01FC /**< ATT Common Profile and Service Error: Write request rejected. */ -#define BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR 0x01FD /**< ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */ -#define BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG 0x01FE /**< ATT Common Profile and Service Error: Procedure Already in Progress. */ -#define BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE 0x01FF /**< ATT Common Profile and Service Error: Out Of Range. */ -/** @} */ - - -/** @defgroup BLE_GATT_CPF_FORMATS Characteristic Presentation Formats - * @note Found at http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml - * @{ */ -#define BLE_GATT_CPF_FORMAT_RFU 0x00 /**< Reserved For Future Use. */ -#define BLE_GATT_CPF_FORMAT_BOOLEAN 0x01 /**< Boolean. */ -#define BLE_GATT_CPF_FORMAT_2BIT 0x02 /**< Unsigned 2-bit integer. */ -#define BLE_GATT_CPF_FORMAT_NIBBLE 0x03 /**< Unsigned 4-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT8 0x04 /**< Unsigned 8-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT12 0x05 /**< Unsigned 12-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT16 0x06 /**< Unsigned 16-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT24 0x07 /**< Unsigned 24-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT32 0x08 /**< Unsigned 32-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT48 0x09 /**< Unsigned 48-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT64 0x0A /**< Unsigned 64-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT128 0x0B /**< Unsigned 128-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT8 0x0C /**< Signed 2-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT12 0x0D /**< Signed 12-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT16 0x0E /**< Signed 16-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT24 0x0F /**< Signed 24-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT32 0x10 /**< Signed 32-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT48 0x11 /**< Signed 48-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT64 0x12 /**< Signed 64-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT128 0x13 /**< Signed 128-bit integer. */ -#define BLE_GATT_CPF_FORMAT_FLOAT32 0x14 /**< IEEE-754 32-bit floating point. */ -#define BLE_GATT_CPF_FORMAT_FLOAT64 0x15 /**< IEEE-754 64-bit floating point. */ -#define BLE_GATT_CPF_FORMAT_SFLOAT 0x16 /**< IEEE-11073 16-bit SFLOAT. */ -#define BLE_GATT_CPF_FORMAT_FLOAT 0x17 /**< IEEE-11073 32-bit FLOAT. */ -#define BLE_GATT_CPF_FORMAT_DUINT16 0x18 /**< IEEE-20601 format. */ -#define BLE_GATT_CPF_FORMAT_UTF8S 0x19 /**< UTF-8 string. */ -#define BLE_GATT_CPF_FORMAT_UTF16S 0x1A /**< UTF-16 string. */ -#define BLE_GATT_CPF_FORMAT_STRUCT 0x1B /**< Opaque Structure. */ -/** @} */ - -/** @defgroup BLE_GATT_CPF_NAMESPACES GATT Bluetooth Namespaces - * @{ - */ -#define BLE_GATT_CPF_NAMESPACE_BTSIG 0x01 /**< Bluetooth SIG defined Namespace. */ -#define BLE_GATT_CPF_NAMESPACE_DESCRIPTION_UNKNOWN 0x0000 /**< Namespace Description Unknown. */ -/** @} */ - -/** @} */ - -/** @addtogroup BLE_GATT_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE GATT connection configuration parameters, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_INVALID_PARAM att_mtu is smaller than @ref BLE_GATT_ATT_MTU_DEFAULT. - */ -typedef struct -{ - uint16_t att_mtu; /**< Maximum size of ATT packet the SoftDevice can send or receive. - The default and minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. - @mscs - @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} - @mmsc{@ref BLE_GATTS_MTU_EXCHANGE} - @endmscs - */ -} ble_gatt_conn_cfg_t; - -/**@brief GATT Characteristic Properties. */ -typedef struct -{ - /* Standard properties */ - uint8_t broadcast :1; /**< Broadcasting of the value permitted. */ - uint8_t read :1; /**< Reading the value permitted. */ - uint8_t write_wo_resp :1; /**< Writing the value with Write Command permitted. */ - uint8_t write :1; /**< Writing the value with Write Request permitted. */ - uint8_t notify :1; /**< Notification of the value permitted. */ - uint8_t indicate :1; /**< Indications of the value permitted. */ - uint8_t auth_signed_wr :1; /**< Writing the value with Signed Write Command permitted. */ -} ble_gatt_char_props_t; - -/**@brief GATT Characteristic Extended Properties. */ -typedef struct -{ - /* Extended properties */ - uint8_t reliable_wr :1; /**< Writing the value with Queued Write operations permitted. */ - uint8_t wr_aux :1; /**< Writing the Characteristic User Description descriptor permitted. */ -} ble_gatt_char_ext_props_t; - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_GATT_H__ - -/** @} */ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gattc.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gattc.h deleted file mode 100644 index 7fb3920..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gattc.h +++ /dev/null @@ -1,715 +0,0 @@ -/* - * Copyright (c) 2011 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_GATTC Generic Attribute Profile (GATT) Client - @{ - @brief Definitions and prototypes for the GATT Client interface. - */ - -#ifndef BLE_GATTC_H__ -#define BLE_GATTC_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" -#include "ble_gatt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_GATTC_ENUMERATIONS Enumerations - * @{ */ - -/**@brief GATTC API SVC numbers. */ -enum BLE_GATTC_SVCS -{ - SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER = BLE_GATTC_SVC_BASE, /**< Primary Service Discovery. */ - SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, /**< Relationship Discovery. */ - SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, /**< Characteristic Discovery. */ - SD_BLE_GATTC_DESCRIPTORS_DISCOVER, /**< Characteristic Descriptor Discovery. */ - SD_BLE_GATTC_ATTR_INFO_DISCOVER, /**< Attribute Information Discovery. */ - SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, /**< Read Characteristic Value by UUID. */ - SD_BLE_GATTC_READ, /**< Generic read. */ - SD_BLE_GATTC_CHAR_VALUES_READ, /**< Read multiple Characteristic Values. */ - SD_BLE_GATTC_WRITE, /**< Generic write. */ - SD_BLE_GATTC_HV_CONFIRM, /**< Handle Value Confirmation. */ - SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. */ -}; - -/** - * @brief GATT Client Event IDs. - */ -enum BLE_GATTC_EVTS -{ - BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP = BLE_GATTC_EVT_BASE, /**< Primary Service Discovery Response event. \n See @ref ble_gattc_evt_prim_srvc_disc_rsp_t. */ - BLE_GATTC_EVT_REL_DISC_RSP, /**< Relationship Discovery Response event. \n See @ref ble_gattc_evt_rel_disc_rsp_t. */ - BLE_GATTC_EVT_CHAR_DISC_RSP, /**< Characteristic Discovery Response event. \n See @ref ble_gattc_evt_char_disc_rsp_t. */ - BLE_GATTC_EVT_DESC_DISC_RSP, /**< Descriptor Discovery Response event. \n See @ref ble_gattc_evt_desc_disc_rsp_t. */ - BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, /**< Attribute Information Response event. \n See @ref ble_gattc_evt_attr_info_disc_rsp_t. */ - BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP, /**< Read By UUID Response event. \n See @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t. */ - BLE_GATTC_EVT_READ_RSP, /**< Read Response event. \n See @ref ble_gattc_evt_read_rsp_t. */ - BLE_GATTC_EVT_CHAR_VALS_READ_RSP, /**< Read multiple Response event. \n See @ref ble_gattc_evt_char_vals_read_rsp_t. */ - BLE_GATTC_EVT_WRITE_RSP, /**< Write Response event. \n See @ref ble_gattc_evt_write_rsp_t. */ - BLE_GATTC_EVT_HVX, /**< Handle Value Notification or Indication event. \n Confirm indication with @ref sd_ble_gattc_hv_confirm. \n See @ref ble_gattc_evt_hvx_t. */ - BLE_GATTC_EVT_EXCHANGE_MTU_RSP, /**< Exchange MTU Response event. \n See @ref ble_gattc_evt_exchange_mtu_rsp_t. */ - BLE_GATTC_EVT_TIMEOUT, /**< Timeout event. \n See @ref ble_gattc_evt_timeout_t. */ - BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE /**< Write without Response transmission complete. \n See @ref ble_gattc_evt_write_cmd_tx_complete_t. */ -}; - -/** @} */ - -/** @addtogroup BLE_GATTC_DEFINES Defines - * @{ */ - -/** @defgroup BLE_ERRORS_GATTC SVC return values specific to GATTC - * @{ */ -#define BLE_ERROR_GATTC_PROC_NOT_PERMITTED (NRF_GATTC_ERR_BASE + 0x000) /**< Procedure not Permitted. */ -/** @} */ - -/** @defgroup BLE_GATTC_ATTR_INFO_FORMAT Attribute Information Formats - * @{ */ -#define BLE_GATTC_ATTR_INFO_FORMAT_16BIT 1 /**< 16-bit Attribute Information Format. */ -#define BLE_GATTC_ATTR_INFO_FORMAT_128BIT 2 /**< 128-bit Attribute Information Format. */ -/** @} */ - -/** @defgroup BLE_GATTC_DEFAULTS GATT Client defaults - * @{ */ -#define BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT 1 /**< Default number of Write without Response that can be queued for transmission. */ -/** @} */ - -/** @} */ - -/** @addtogroup BLE_GATTC_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE GATTC connection configuration parameters, set with @ref sd_ble_cfg_set. - */ -typedef struct -{ - uint8_t write_cmd_tx_queue_size; /**< The guaranteed minimum number of Write without Response that can be queued for transmission. - The default value is @ref BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT */ -} ble_gattc_conn_cfg_t; - -/**@brief Operation Handle Range. */ -typedef struct -{ - uint16_t start_handle; /**< Start Handle. */ - uint16_t end_handle; /**< End Handle. */ -} ble_gattc_handle_range_t; - - -/**@brief GATT service. */ -typedef struct -{ - ble_uuid_t uuid; /**< Service UUID. */ - ble_gattc_handle_range_t handle_range; /**< Service Handle Range. */ -} ble_gattc_service_t; - - -/**@brief GATT include. */ -typedef struct -{ - uint16_t handle; /**< Include Handle. */ - ble_gattc_service_t included_srvc; /**< Handle of the included service. */ -} ble_gattc_include_t; - - -/**@brief GATT characteristic. */ -typedef struct -{ - ble_uuid_t uuid; /**< Characteristic UUID. */ - ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ - uint8_t char_ext_props : 1; /**< Extended properties present. */ - uint16_t handle_decl; /**< Handle of the Characteristic Declaration. */ - uint16_t handle_value; /**< Handle of the Characteristic Value. */ -} ble_gattc_char_t; - - -/**@brief GATT descriptor. */ -typedef struct -{ - uint16_t handle; /**< Descriptor Handle. */ - ble_uuid_t uuid; /**< Descriptor UUID. */ -} ble_gattc_desc_t; - - -/**@brief Write Parameters. */ -typedef struct -{ - uint8_t write_op; /**< Write Operation to be performed, see @ref BLE_GATT_WRITE_OPS. */ - uint8_t flags; /**< Flags, see @ref BLE_GATT_EXEC_WRITE_FLAGS. */ - uint16_t handle; /**< Handle to the attribute to be written. */ - uint16_t offset; /**< Offset in bytes. @note For WRITE_CMD and WRITE_REQ, offset must be 0. */ - uint16_t len; /**< Length of data in bytes. */ - uint8_t const *p_value; /**< Pointer to the value data. */ -} ble_gattc_write_params_t; - -/**@brief Attribute Information for 16-bit Attribute UUID. */ -typedef struct -{ - uint16_t handle; /**< Attribute handle. */ - ble_uuid_t uuid; /**< 16-bit Attribute UUID. */ -} ble_gattc_attr_info16_t; - -/**@brief Attribute Information for 128-bit Attribute UUID. */ -typedef struct -{ - uint16_t handle; /**< Attribute handle. */ - ble_uuid128_t uuid; /**< 128-bit Attribute UUID. */ -} ble_gattc_attr_info128_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Service count. */ - ble_gattc_service_t services[1]; /**< Service data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_prim_srvc_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_REL_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Include count. */ - ble_gattc_include_t includes[1]; /**< Include data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_rel_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Characteristic count. */ - ble_gattc_char_t chars[1]; /**< Characteristic data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_char_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_DESC_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Descriptor count. */ - ble_gattc_desc_t descs[1]; /**< Descriptor data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_desc_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Attribute count. */ - uint8_t format; /**< Attribute information format, see @ref BLE_GATTC_ATTR_INFO_FORMAT. */ - union { - ble_gattc_attr_info16_t attr_info16[1]; /**< Attribute information for 16-bit Attribute UUID. - @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ - ble_gattc_attr_info128_t attr_info128[1]; /**< Attribute information for 128-bit Attribute UUID. - @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ - } info; /**< Attribute information union. */ -} ble_gattc_evt_attr_info_disc_rsp_t; - -/**@brief GATT read by UUID handle value pair. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint8_t *p_value; /**< Pointer to the Attribute Value, length is available in @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t::value_len. */ -} ble_gattc_handle_value_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP. */ -typedef struct -{ - uint16_t count; /**< Handle-Value Pair Count. */ - uint16_t value_len; /**< Length of the value in Handle-Value(s) list. */ - uint8_t handle_value[1]; /**< Handle-Value(s) list. To iterate through the list use @ref sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter. - @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_char_val_by_uuid_read_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_READ_RSP. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint16_t offset; /**< Offset of the attribute data. */ - uint16_t len; /**< Attribute data length. */ - uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_read_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP. */ -typedef struct -{ - uint16_t len; /**< Concatenated Attribute values length. */ - uint8_t values[1]; /**< Attribute values. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_char_vals_read_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_WRITE_RSP. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint8_t write_op; /**< Type of write operation, see @ref BLE_GATT_WRITE_OPS. */ - uint16_t offset; /**< Data offset. */ - uint16_t len; /**< Data length. */ - uint8_t data[1]; /**< Data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_write_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_HVX. */ -typedef struct -{ - uint16_t handle; /**< Handle to which the HVx operation applies. */ - uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ - uint16_t len; /**< Attribute data length. */ - uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_hvx_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. */ -typedef struct -{ - uint16_t server_rx_mtu; /**< Server RX MTU size. */ -} ble_gattc_evt_exchange_mtu_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ -} ble_gattc_evt_timeout_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE. */ -typedef struct -{ - uint8_t count; /**< Number of write without response transmissions completed. */ -} ble_gattc_evt_write_cmd_tx_complete_t; - -/**@brief GATTC event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which event occurred. */ - uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ - uint16_t error_handle; /**< In case of error: The handle causing the error. In all other cases @ref BLE_GATT_HANDLE_INVALID. */ - union - { - ble_gattc_evt_prim_srvc_disc_rsp_t prim_srvc_disc_rsp; /**< Primary Service Discovery Response Event Parameters. */ - ble_gattc_evt_rel_disc_rsp_t rel_disc_rsp; /**< Relationship Discovery Response Event Parameters. */ - ble_gattc_evt_char_disc_rsp_t char_disc_rsp; /**< Characteristic Discovery Response Event Parameters. */ - ble_gattc_evt_desc_disc_rsp_t desc_disc_rsp; /**< Descriptor Discovery Response Event Parameters. */ - ble_gattc_evt_char_val_by_uuid_read_rsp_t char_val_by_uuid_read_rsp; /**< Characteristic Value Read by UUID Response Event Parameters. */ - ble_gattc_evt_read_rsp_t read_rsp; /**< Read Response Event Parameters. */ - ble_gattc_evt_char_vals_read_rsp_t char_vals_read_rsp; /**< Characteristic Values Read Response Event Parameters. */ - ble_gattc_evt_write_rsp_t write_rsp; /**< Write Response Event Parameters. */ - ble_gattc_evt_hvx_t hvx; /**< Handle Value Notification/Indication Event Parameters. */ - ble_gattc_evt_exchange_mtu_rsp_t exchange_mtu_rsp; /**< Exchange MTU Response Event Parameters. */ - ble_gattc_evt_timeout_t timeout; /**< Timeout Event Parameters. */ - ble_gattc_evt_attr_info_disc_rsp_t attr_info_disc_rsp; /**< Attribute Information Discovery Event Parameters. */ - ble_gattc_evt_write_cmd_tx_complete_t write_cmd_tx_complete; /**< Write without Response transmission complete Event Parameters. */ - } params; /**< Event Parameters. @note Only valid if @ref gatt_status == @ref BLE_GATT_STATUS_SUCCESS. */ -} ble_gattc_evt_t; -/** @} */ - -/** @addtogroup BLE_GATTC_FUNCTIONS Functions - * @{ */ - -/**@brief Initiate or continue a GATT Primary Service Discovery procedure. - * - * @details This function initiates or resumes a Primary Service discovery procedure, starting from the supplied handle. - * If the last service has not been reached, this function must be called again with an updated start handle value to continue the search. - * - * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with - * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. - * - * @events - * @event{@ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_PRIM_SRVC_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] start_handle Handle to start searching from. - * @param[in] p_srvc_uuid Pointer to the service UUID to be found. If it is NULL, all primary services will be returned. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Primary Service Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER, uint32_t, sd_ble_gattc_primary_services_discover(uint16_t conn_handle, uint16_t start_handle, ble_uuid_t const *p_srvc_uuid)); - - -/**@brief Initiate or continue a GATT Relationship Discovery procedure. - * - * @details This function initiates or resumes the Find Included Services sub-procedure. If the last included service has not been reached, - * this must be called again with an updated handle range to continue the search. - * - * @events - * @event{@ref BLE_GATTC_EVT_REL_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_REL_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Relationship Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, uint32_t, sd_ble_gattc_relationships_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Characteristic Discovery procedure. - * - * @details This function initiates or resumes a Characteristic discovery procedure. If the last Characteristic has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @note If any of the discovered characteristics have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with - * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. - * - * @events - * @event{@ref BLE_GATTC_EVT_CHAR_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_CHAR_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Characteristic Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, uint32_t, sd_ble_gattc_characteristics_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Characteristic Descriptor Discovery procedure. - * - * @details This function initiates or resumes a Characteristic Descriptor discovery procedure. If the last Descriptor has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @events - * @event{@ref BLE_GATTC_EVT_DESC_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_DESC_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Characteristic to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Descriptor Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_DESCRIPTORS_DISCOVER, uint32_t, sd_ble_gattc_descriptors_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Read using Characteristic UUID procedure. - * - * @details This function initiates or resumes a Read using Characteristic UUID procedure. If the last Characteristic has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @events - * @event{@ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_READ_UUID_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_uuid Pointer to a Characteristic value UUID to read. - * @param[in] p_handle_range A pointer to the range of handles to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Read using Characteristic UUID procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, uint32_t, sd_ble_gattc_char_value_by_uuid_read(uint16_t conn_handle, ble_uuid_t const *p_uuid, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Read (Long) Characteristic or Descriptor procedure. - * - * @details This function initiates or resumes a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor - * to be read is longer than ATT_MTU - 1, this function must be called multiple times with appropriate offset to read the - * complete value. - * - * @events - * @event{@ref BLE_GATTC_EVT_READ_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_VALUE_READ_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] handle The handle of the attribute to be read. - * @param[in] offset Offset into the attribute value to be read. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Read (Long) procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_READ, uint32_t, sd_ble_gattc_read(uint16_t conn_handle, uint16_t handle, uint16_t offset)); - - -/**@brief Initiate a GATT Read Multiple Characteristic Values procedure. - * - * @details This function initiates a GATT Read Multiple Characteristic Values procedure. - * - * @events - * @event{@ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_READ_MULT_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handles A pointer to the handle(s) of the attribute(s) to be read. - * @param[in] handle_count The number of handles in p_handles. - * - * @retval ::NRF_SUCCESS Successfully started the Read Multiple Characteristic Values procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_CHAR_VALUES_READ, uint32_t, sd_ble_gattc_char_values_read(uint16_t conn_handle, uint16_t const *p_handles, uint16_t handle_count)); - - -/**@brief Perform a Write (Characteristic Value or Descriptor, with or without response, signed or not, long or reliable) procedure. - * - * @details This function can perform all write procedures described in GATT. - * - * @note Only one write with response procedure can be ongoing per connection at a time. - * If the application tries to write with response while another write with response procedure is ongoing, - * the function call will return @ref NRF_ERROR_BUSY. - * A @ref BLE_GATTC_EVT_WRITE_RSP event will be issued as soon as the write response arrives from the peer. - * - * @note The number of Write without Response that can be queued is configured by @ref ble_gattc_conn_cfg_t::write_cmd_tx_queue_size - * When the queue is full, the function call will return @ref NRF_ERROR_RESOURCES. - * A @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event will be issued as soon as the transmission of the write without response is complete. - * - * @note The application can keep track of the available queue element count for writes without responses by following the procedure below: - * - Store initial queue element count in a variable. - * - Decrement the variable, which stores the currently available queue element count, by one when a call to this function returns @ref NRF_SUCCESS. - * - Increment the variable, which stores the current available queue element count, by the count variable in @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event. - * - * @events - * @event{@ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE, Write without response transmission complete.} - * @event{@ref BLE_GATTC_EVT_WRITE_RSP, Write response received from the peer.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_VALUE_WRITE_WITHOUT_RESP_MSC} - * @mmsc{@ref BLE_GATTC_VALUE_WRITE_MSC} - * @mmsc{@ref BLE_GATTC_VALUE_LONG_WRITE_MSC} - * @mmsc{@ref BLE_GATTC_VALUE_RELIABLE_WRITE_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_write_params A pointer to a write parameters structure. - * - * @retval ::NRF_SUCCESS Successfully started the Write procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @retval ::NRF_ERROR_BUSY For write with response, procedure already in progress. Wait for a @ref BLE_GATTC_EVT_WRITE_RSP event and retry. - * @retval ::NRF_ERROR_RESOURCES Too many writes without responses queued. - * Wait for a @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event and retry. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_WRITE, uint32_t, sd_ble_gattc_write(uint16_t conn_handle, ble_gattc_write_params_t const *p_write_params)); - - -/**@brief Send a Handle Value Confirmation to the GATT Server. - * - * @mscs - * @mmsc{@ref BLE_GATTC_HVI_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] handle The handle of the attribute in the indication. - * - * @retval ::NRF_SUCCESS Successfully queued the Handle Value Confirmation for transmission. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no Indication pending to be confirmed. - * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_HV_CONFIRM, uint32_t, sd_ble_gattc_hv_confirm(uint16_t conn_handle, uint16_t handle)); - -/**@brief Discovers information about a range of attributes on a GATT server. - * - * @events - * @event{@ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, Generated when information about a range of attributes has been received.} - * @endevents - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range The range of handles to request information about. - * - * @retval ::NRF_SUCCESS Successfully started an attribute information discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_ATTR_INFO_DISCOVER, uint32_t, sd_ble_gattc_attr_info_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * p_handle_range)); - -/**@brief Start an ATT_MTU exchange by sending an Exchange MTU Request to the server. - * - * @details The SoftDevice sets ATT_MTU to the minimum of: - * - The Client RX MTU value, and - * - The Server RX MTU value from @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. - * - * However, the SoftDevice never sets ATT_MTU lower than @ref BLE_GATT_ATT_MTU_DEFAULT. - * - * @events - * @event{@ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] client_rx_mtu Client RX MTU size. - * - The minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. - * - The maximum value is @ref ble_gatt_conn_cfg_t::att_mtu in the connection configuration - used for this connection. - * - The value must be equal to Server RX MTU size given in @ref sd_ble_gatts_exchange_mtu_reply - * if an ATT_MTU exchange has already been performed in the other direction. - * - * @retval ::NRF_SUCCESS Successfully sent request to the server. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state or an ATT_MTU exchange was already requested once. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid Client RX MTU size supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, uint32_t, sd_ble_gattc_exchange_mtu_request(uint16_t conn_handle, uint16_t client_rx_mtu)); - -/**@brief Iterate through Handle-Value(s) list in @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. - * - * @param[in] p_gattc_evt Pointer to event buffer containing @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. - * @note If the buffer contains different event, behavior is undefined. - * @param[in,out] p_iter Iterator, points to @ref ble_gattc_handle_value_t structure that will be filled in with - * the next Handle-Value pair in each iteration. If the function returns other than - * @ref NRF_SUCCESS, it will not be changed. - * - To start iteration, initialize the structure to zero. - * - To continue, pass the value from previous iteration. - * - * \code - * ble_gattc_handle_value_t iter; - * memset(&iter, 0, sizeof(ble_gattc_handle_value_t)); - * while (sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(&ble_evt.evt.gattc_evt, &iter) == NRF_SUCCESS) - * { - * app_handle = iter.handle; - * memcpy(app_value, iter.p_value, ble_evt.evt.gattc_evt.params.char_val_by_uuid_read_rsp.value_len); - * } - * \endcode - * - * @retval ::NRF_SUCCESS Successfully retrieved the next Handle-Value pair. - * @retval ::NRF_ERROR_NOT_FOUND No more Handle-Value pairs available in the list. - */ -__STATIC_INLINE uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter); - -/** @} */ - -#ifndef SUPPRESS_INLINE_IMPLEMENTATION - -__STATIC_INLINE uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter) -{ - uint32_t value_len = p_gattc_evt->params.char_val_by_uuid_read_rsp.value_len; - uint8_t *p_first = p_gattc_evt->params.char_val_by_uuid_read_rsp.handle_value; - uint8_t *p_next = p_iter->p_value ? p_iter->p_value + value_len : p_first; - - if ((p_next - p_first) / (sizeof(uint16_t) + value_len) < p_gattc_evt->params.char_val_by_uuid_read_rsp.count) - { - p_iter->handle = (uint16_t)p_next[1] << 8 | p_next[0]; - p_iter->p_value = p_next + sizeof(uint16_t); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_NOT_FOUND; - } -} - -#endif /* SUPPRESS_INLINE_IMPLEMENTATION */ - -#ifdef __cplusplus -} -#endif -#endif /* BLE_GATTC_H__ */ - -/** - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gatts.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gatts.h deleted file mode 100644 index 394d8d1..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_gatts.h +++ /dev/null @@ -1,845 +0,0 @@ -/* - * Copyright (c) 2011 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_GATTS Generic Attribute Profile (GATT) Server - @{ - @brief Definitions and prototypes for the GATTS interface. - */ - -#ifndef BLE_GATTS_H__ -#define BLE_GATTS_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_hci.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" -#include "ble_gatt.h" -#include "ble_gap.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_GATTS_ENUMERATIONS Enumerations - * @{ */ - -/** - * @brief GATTS API SVC numbers. - */ -enum BLE_GATTS_SVCS -{ - SD_BLE_GATTS_SERVICE_ADD = BLE_GATTS_SVC_BASE, /**< Add a service. */ - SD_BLE_GATTS_INCLUDE_ADD, /**< Add an included service. */ - SD_BLE_GATTS_CHARACTERISTIC_ADD, /**< Add a characteristic. */ - SD_BLE_GATTS_DESCRIPTOR_ADD, /**< Add a generic attribute. */ - SD_BLE_GATTS_VALUE_SET, /**< Set an attribute value. */ - SD_BLE_GATTS_VALUE_GET, /**< Get an attribute value. */ - SD_BLE_GATTS_HVX, /**< Handle Value Notification or Indication. */ - SD_BLE_GATTS_SERVICE_CHANGED, /**< Perform a Service Changed Indication to one or more peers. */ - SD_BLE_GATTS_RW_AUTHORIZE_REPLY, /**< Reply to an authorization request for a read or write operation on one or more attributes. */ - SD_BLE_GATTS_SYS_ATTR_SET, /**< Set the persistent system attributes for a connection. */ - SD_BLE_GATTS_SYS_ATTR_GET, /**< Retrieve the persistent system attributes. */ - SD_BLE_GATTS_INITIAL_USER_HANDLE_GET, /**< Retrieve the first valid user handle. */ - SD_BLE_GATTS_ATTR_GET, /**< Retrieve the UUID and/or metadata of an attribute. */ - SD_BLE_GATTS_EXCHANGE_MTU_REPLY /**< Reply to Exchange MTU Request. */ -}; - -/** - * @brief GATT Server Event IDs. - */ -enum BLE_GATTS_EVTS -{ - BLE_GATTS_EVT_WRITE = BLE_GATTS_EVT_BASE, /**< Write operation performed. \n See @ref ble_gatts_evt_write_t. */ - BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST, /**< Read/Write Authorization request. \n Reply with @ref sd_ble_gatts_rw_authorize_reply. \n See @ref ble_gatts_evt_rw_authorize_request_t. */ - BLE_GATTS_EVT_SYS_ATTR_MISSING, /**< A persistent system attribute access is pending. \n Respond with @ref sd_ble_gatts_sys_attr_set. \n See @ref ble_gatts_evt_sys_attr_missing_t. */ - BLE_GATTS_EVT_HVC, /**< Handle Value Confirmation. \n See @ref ble_gatts_evt_hvc_t. */ - BLE_GATTS_EVT_SC_CONFIRM, /**< Service Changed Confirmation. \n No additional event structure applies. */ - BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. \n Reply with @ref sd_ble_gatts_exchange_mtu_reply. \n See @ref ble_gatts_evt_exchange_mtu_request_t. */ - BLE_GATTS_EVT_TIMEOUT, /**< Peer failed to respond to an ATT request in time. \n See @ref ble_gatts_evt_timeout_t. */ - BLE_GATTS_EVT_HVN_TX_COMPLETE /**< Handle Value Notification transmission complete. \n See @ref ble_gatts_evt_hvn_tx_complete_t. */ -}; - -/**@brief GATTS Configuration IDs. - * - * IDs that uniquely identify a GATTS configuration. - */ -enum BLE_GATTS_CFGS -{ - BLE_GATTS_CFG_SERVICE_CHANGED = BLE_GATTS_CFG_BASE, /**< Service changed configuration. */ - BLE_GATTS_CFG_ATTR_TAB_SIZE, /**< Attribute table size configuration. */ -}; - -/** @} */ - -/** @addtogroup BLE_GATTS_DEFINES Defines - * @{ */ - -/** @defgroup BLE_ERRORS_GATTS SVC return values specific to GATTS - * @{ */ -#define BLE_ERROR_GATTS_INVALID_ATTR_TYPE (NRF_GATTS_ERR_BASE + 0x000) /**< Invalid attribute type. */ -#define BLE_ERROR_GATTS_SYS_ATTR_MISSING (NRF_GATTS_ERR_BASE + 0x001) /**< System Attributes missing. */ -/** @} */ - -/** @defgroup BLE_GATTS_ATTR_LENS_MAX Maximum attribute lengths - * @{ */ -#define BLE_GATTS_FIX_ATTR_LEN_MAX (510) /**< Maximum length for fixed length Attribute Values. */ -#define BLE_GATTS_VAR_ATTR_LEN_MAX (512) /**< Maximum length for variable length Attribute Values. */ -/** @} */ - -/** @defgroup BLE_GATTS_SRVC_TYPES GATT Server Service Types - * @{ */ -#define BLE_GATTS_SRVC_TYPE_INVALID 0x00 /**< Invalid Service Type. */ -#define BLE_GATTS_SRVC_TYPE_PRIMARY 0x01 /**< Primary Service. */ -#define BLE_GATTS_SRVC_TYPE_SECONDARY 0x02 /**< Secondary Type. */ -/** @} */ - - -/** @defgroup BLE_GATTS_ATTR_TYPES GATT Server Attribute Types - * @{ */ -#define BLE_GATTS_ATTR_TYPE_INVALID 0x00 /**< Invalid Attribute Type. */ -#define BLE_GATTS_ATTR_TYPE_PRIM_SRVC_DECL 0x01 /**< Primary Service Declaration. */ -#define BLE_GATTS_ATTR_TYPE_SEC_SRVC_DECL 0x02 /**< Secondary Service Declaration. */ -#define BLE_GATTS_ATTR_TYPE_INC_DECL 0x03 /**< Include Declaration. */ -#define BLE_GATTS_ATTR_TYPE_CHAR_DECL 0x04 /**< Characteristic Declaration. */ -#define BLE_GATTS_ATTR_TYPE_CHAR_VAL 0x05 /**< Characteristic Value. */ -#define BLE_GATTS_ATTR_TYPE_DESC 0x06 /**< Descriptor. */ -#define BLE_GATTS_ATTR_TYPE_OTHER 0x07 /**< Other, non-GATT specific type. */ -/** @} */ - - -/** @defgroup BLE_GATTS_OPS GATT Server Operations - * @{ */ -#define BLE_GATTS_OP_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATTS_OP_WRITE_REQ 0x01 /**< Write Request. */ -#define BLE_GATTS_OP_WRITE_CMD 0x02 /**< Write Command. */ -#define BLE_GATTS_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ -#define BLE_GATTS_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ -#define BLE_GATTS_OP_EXEC_WRITE_REQ_CANCEL 0x05 /**< Execute Write Request: Cancel all prepared writes. */ -#define BLE_GATTS_OP_EXEC_WRITE_REQ_NOW 0x06 /**< Execute Write Request: Immediately execute all prepared writes. */ -/** @} */ - -/** @defgroup BLE_GATTS_VLOCS GATT Value Locations - * @{ */ -#define BLE_GATTS_VLOC_INVALID 0x00 /**< Invalid Location. */ -#define BLE_GATTS_VLOC_STACK 0x01 /**< Attribute Value is located in stack memory, no user memory is required. */ -#define BLE_GATTS_VLOC_USER 0x02 /**< Attribute Value is located in user memory. This requires the user to maintain a valid buffer through the lifetime of the attribute, since the stack - will read and write directly to the memory using the pointer provided in the APIs. There are no alignment requirements for the buffer. */ -/** @} */ - -/** @defgroup BLE_GATTS_AUTHORIZE_TYPES GATT Server Authorization Types - * @{ */ -#define BLE_GATTS_AUTHORIZE_TYPE_INVALID 0x00 /**< Invalid Type. */ -#define BLE_GATTS_AUTHORIZE_TYPE_READ 0x01 /**< Authorize a Read Operation. */ -#define BLE_GATTS_AUTHORIZE_TYPE_WRITE 0x02 /**< Authorize a Write Request Operation. */ -/** @} */ - -/** @defgroup BLE_GATTS_SYS_ATTR_FLAGS System Attribute Flags - * @{ */ -#define BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS (1 << 0) /**< Restrict system attributes to system services only. */ -#define BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS (1 << 1) /**< Restrict system attributes to user services only. */ -/** @} */ - -/** @defgroup BLE_GATTS_SERVICE_CHANGED Service Changed Inclusion Values - * @{ - */ -#define BLE_GATTS_SERVICE_CHANGED_DEFAULT (1) /**< Default is to include the Service Changed characteristic in the Attribute Table. */ -/** @} */ - -/** @defgroup BLE_GATTS_ATTR_TAB_SIZE Attribute Table size - * @{ - */ -#define BLE_GATTS_ATTR_TAB_SIZE_MIN (248) /**< Minimum Attribute Table size */ -#define BLE_GATTS_ATTR_TAB_SIZE_DEFAULT (1408) /**< Default Attribute Table size. */ -/** @} */ - -/** @defgroup BLE_GATTS_DEFAULTS GATT Server defaults - * @{ - */ -#define BLE_GATTS_HVN_TX_QUEUE_SIZE_DEFAULT 1 /**< Default number of Handle Value Notifications that can be queued for transmission. */ -/** @} */ - -/** @} */ - -/** @addtogroup BLE_GATTS_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE GATTS connection configuration parameters, set with @ref sd_ble_cfg_set. - */ -typedef struct -{ - uint8_t hvn_tx_queue_size; /**< Minimum guaranteed number of Handle Value Notifications that can be queued for transmission. - The default value is @ref BLE_GATTS_HVN_TX_QUEUE_SIZE_DEFAULT */ -} ble_gatts_conn_cfg_t; - -/**@brief Attribute metadata. */ -typedef struct -{ - ble_gap_conn_sec_mode_t read_perm; /**< Read permissions. */ - ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ - uint8_t vlen :1; /**< Variable length attribute. */ - uint8_t vloc :2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ - uint8_t rd_auth :1; /**< Read authorization and value will be requested from the application on every read operation. */ - uint8_t wr_auth :1; /**< Write authorization will be requested from the application on every Write Request operation (but not Write Command). */ -} ble_gatts_attr_md_t; - - -/**@brief GATT Attribute. */ -typedef struct -{ - ble_uuid_t const *p_uuid; /**< Pointer to the attribute UUID. */ - ble_gatts_attr_md_t const *p_attr_md; /**< Pointer to the attribute metadata structure. */ - uint16_t init_len; /**< Initial attribute value length in bytes. */ - uint16_t init_offs; /**< Initial attribute value offset in bytes. If different from zero, the first init_offs bytes of the attribute value will be left uninitialized. */ - uint16_t max_len; /**< Maximum attribute value length in bytes, see @ref BLE_GATTS_ATTR_LENS_MAX for maximum values. */ - uint8_t *p_value; /**< Pointer to the attribute data. Please note that if the @ref BLE_GATTS_VLOC_USER value location is selected in the attribute metadata, this will have to point to a buffer - that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location. - The stack may access that memory directly without the application's knowledge. For writable characteristics, this value must not be a location in flash memory.*/ -} ble_gatts_attr_t; - -/**@brief GATT Attribute Value. */ -typedef struct -{ - uint16_t len; /**< Length in bytes to be written or read. Length in bytes written or read after successful return.*/ - uint16_t offset; /**< Attribute value offset. */ - uint8_t *p_value; /**< Pointer to where value is stored or will be stored. - If value is stored in user memory, only the attribute length is updated when p_value == NULL. - Set to NULL when reading to obtain the complete length of the attribute value */ -} ble_gatts_value_t; - - -/**@brief GATT Characteristic Presentation Format. */ -typedef struct -{ - uint8_t format; /**< Format of the value, see @ref BLE_GATT_CPF_FORMATS. */ - int8_t exponent; /**< Exponent for integer data types. */ - uint16_t unit; /**< Unit from Bluetooth Assigned Numbers. */ - uint8_t name_space; /**< Namespace from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ - uint16_t desc; /**< Namespace description from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ -} ble_gatts_char_pf_t; - - -/**@brief GATT Characteristic metadata. */ -typedef struct -{ - ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ - ble_gatt_char_ext_props_t char_ext_props; /**< Characteristic Extended Properties. */ - uint8_t const *p_char_user_desc; /**< Pointer to a UTF-8 encoded string (non-NULL terminated), NULL if the descriptor is not required. */ - uint16_t char_user_desc_max_size; /**< The maximum size in bytes of the user description descriptor. */ - uint16_t char_user_desc_size; /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */ - ble_gatts_char_pf_t const *p_char_pf; /**< Pointer to a presentation format structure or NULL if the CPF descriptor is not required. */ - ble_gatts_attr_md_t const *p_user_desc_md; /**< Attribute metadata for the User Description descriptor, or NULL for default values. */ - ble_gatts_attr_md_t const *p_cccd_md; /**< Attribute metadata for the Client Characteristic Configuration Descriptor, or NULL for default values. */ - ble_gatts_attr_md_t const *p_sccd_md; /**< Attribute metadata for the Server Characteristic Configuration Descriptor, or NULL for default values. */ -} ble_gatts_char_md_t; - - -/**@brief GATT Characteristic Definition Handles. */ -typedef struct -{ - uint16_t value_handle; /**< Handle to the characteristic value. */ - uint16_t user_desc_handle; /**< Handle to the User Description descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ - uint16_t cccd_handle; /**< Handle to the Client Characteristic Configuration Descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ - uint16_t sccd_handle; /**< Handle to the Server Characteristic Configuration Descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ -} ble_gatts_char_handles_t; - - -/**@brief GATT HVx parameters. */ -typedef struct -{ - uint16_t handle; /**< Characteristic Value Handle. */ - uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ - uint16_t offset; /**< Offset within the attribute value. */ - uint16_t *p_len; /**< Length in bytes to be written, length in bytes written after return. */ - uint8_t const *p_data; /**< Actual data content, use NULL to use the current attribute value. */ -} ble_gatts_hvx_params_t; - -/**@brief GATT Authorization parameters. */ -typedef struct -{ - uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ - uint8_t update : 1; /**< If set, data supplied in p_data will be used to update the attribute value. - Please note that for @ref BLE_GATTS_AUTHORIZE_TYPE_WRITE operations this bit must always be set, - as the data to be written needs to be stored and later provided by the application. */ - uint16_t offset; /**< Offset of the attribute value being updated. */ - uint16_t len; /**< Length in bytes of the value in p_data pointer, see @ref BLE_GATTS_ATTR_LENS_MAX. */ - uint8_t const *p_data; /**< Pointer to new value used to update the attribute value. */ -} ble_gatts_authorize_params_t; - -/**@brief GATT Read or Write Authorize Reply parameters. */ -typedef struct -{ - uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ - union { - ble_gatts_authorize_params_t read; /**< Read authorization parameters. */ - ble_gatts_authorize_params_t write; /**< Write authorization parameters. */ - } params; /**< Reply Parameters. */ -} ble_gatts_rw_authorize_reply_params_t; - -/**@brief Service Changed Inclusion configuration parameters, set with @ref sd_ble_cfg_set. */ -typedef struct -{ - uint8_t service_changed : 1; /**< If 1, include the Service Changed characteristic in the Attribute Table. Default is @ref BLE_GATTS_SERVICE_CHANGED_DEFAULT. */ -} ble_gatts_cfg_service_changed_t; - -/**@brief Attribute table size configuration parameters, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_INVALID_LENGTH One or more of the following is true: - * - The specified Attribute Table size is too small. - * The minimum acceptable size is defined by @ref BLE_GATTS_ATTR_TAB_SIZE_MIN. - * - The specified Attribute Table size is not a multiple of 4. - */ -typedef struct -{ - uint32_t attr_tab_size; /**< Attribute table size. Default is @ref BLE_GATTS_ATTR_TAB_SIZE_DEFAULT, minimum is @ref BLE_GATTS_ATTR_TAB_SIZE_MIN. */ -} ble_gatts_cfg_attr_tab_size_t; - -/**@brief Config structure for GATTS configurations. */ -typedef union -{ - ble_gatts_cfg_service_changed_t service_changed; /**< Include service changed characteristic, cfg_id is @ref BLE_GATTS_CFG_SERVICE_CHANGED. */ - ble_gatts_cfg_attr_tab_size_t attr_tab_size; /**< Attribute table size, cfg_id is @ref BLE_GATTS_CFG_ATTR_TAB_SIZE. */ -} ble_gatts_cfg_t; - - -/**@brief Event structure for @ref BLE_GATTS_EVT_WRITE. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - ble_uuid_t uuid; /**< Attribute UUID. */ - uint8_t op; /**< Type of write operation, see @ref BLE_GATTS_OPS. */ - uint8_t auth_required; /**< Writing operation deferred due to authorization requirement. Application may use @ref sd_ble_gatts_value_set to finalize the writing operation. */ - uint16_t offset; /**< Offset for the write operation. */ - uint16_t len; /**< Length of the received data. */ - uint8_t data[1]; /**< Received data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gatts_evt_write_t; - -/**@brief Event substructure for authorized read requests, see @ref ble_gatts_evt_rw_authorize_request_t. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - ble_uuid_t uuid; /**< Attribute UUID. */ - uint16_t offset; /**< Offset for the read operation. */ -} ble_gatts_evt_read_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST. */ -typedef struct -{ - uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ - union { - ble_gatts_evt_read_t read; /**< Attribute Read Parameters. */ - ble_gatts_evt_write_t write; /**< Attribute Write Parameters. */ - } request; /**< Request Parameters. */ -} ble_gatts_evt_rw_authorize_request_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_SYS_ATTR_MISSING. */ -typedef struct -{ - uint8_t hint; /**< Hint (currently unused). */ -} ble_gatts_evt_sys_attr_missing_t; - - -/**@brief Event structure for @ref BLE_GATTS_EVT_HVC. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ -} ble_gatts_evt_hvc_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST. */ -typedef struct -{ - uint16_t client_rx_mtu; /**< Client RX MTU size. */ -} ble_gatts_evt_exchange_mtu_request_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ -} ble_gatts_evt_timeout_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_HVN_TX_COMPLETE. */ -typedef struct -{ - uint8_t count; /**< Number of notification transmissions completed. */ -} ble_gatts_evt_hvn_tx_complete_t; - -/**@brief GATTS event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which the event occurred. */ - union - { - ble_gatts_evt_write_t write; /**< Write Event Parameters. */ - ble_gatts_evt_rw_authorize_request_t authorize_request; /**< Read or Write Authorize Request Parameters. */ - ble_gatts_evt_sys_attr_missing_t sys_attr_missing; /**< System attributes missing. */ - ble_gatts_evt_hvc_t hvc; /**< Handle Value Confirmation Event Parameters. */ - ble_gatts_evt_exchange_mtu_request_t exchange_mtu_request; /**< Exchange MTU Request Event Parameters. */ - ble_gatts_evt_timeout_t timeout; /**< Timeout Event. */ - ble_gatts_evt_hvn_tx_complete_t hvn_tx_complete; /**< Handle Value Notification transmission complete Event Parameters. */ - } params; /**< Event Parameters. */ -} ble_gatts_evt_t; - -/** @} */ - -/** @addtogroup BLE_GATTS_FUNCTIONS Functions - * @{ */ - -/**@brief Add a service declaration to the Attribute Table. - * - * @note Secondary Services are only relevant in the context of the entity that references them, it is therefore forbidden to - * add a secondary service declaration that is not referenced by another service later in the Attribute Table. - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] type Toggles between primary and secondary services, see @ref BLE_GATTS_SRVC_TYPES. - * @param[in] p_uuid Pointer to service UUID. - * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully added a service declaration. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, Vendor Specific UUIDs need to be present in the table. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GATTS_SERVICE_ADD, uint32_t, sd_ble_gatts_service_add(uint8_t type, ble_uuid_t const *p_uuid, uint16_t *p_handle)); - - -/**@brief Add an include declaration to the Attribute Table. - * - * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential population is supported at this time). - * - * @note The included service must already be present in the Attribute Table prior to this call. - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] service_handle Handle of the service where the included service is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] inc_srvc_handle Handle of the included service. - * @param[out] p_include_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully added an include declaration. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, handle values need to match previously added services. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required. - * @retval ::NRF_ERROR_NOT_SUPPORTED Feature is not supported, service_handle must be that of the last added service. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, self inclusions are not allowed. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - */ -SVCALL(SD_BLE_GATTS_INCLUDE_ADD, uint32_t, sd_ble_gatts_include_add(uint16_t service_handle, uint16_t inc_srvc_handle, uint16_t *p_include_handle)); - - -/**@brief Add a characteristic declaration, a characteristic value declaration and optional characteristic descriptor declarations to the Attribute Table. - * - * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential population is supported at this time). - * - * @note Several restrictions apply to the parameters, such as matching permissions between the user description descriptor and the writable auxiliaries bits, - * readable (no security) and writable (selectable) CCCDs and SCCDs and valid presentation format values. - * - * @note If no metadata is provided for the optional descriptors, their permissions will be derived from the characteristic permissions. - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] service_handle Handle of the service where the characteristic is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] p_char_md Characteristic metadata. - * @param[in] p_attr_char_value Pointer to the attribute structure corresponding to the characteristic value. - * @param[out] p_handles Pointer to the structure where the assigned handles will be stored. - * - * @retval ::NRF_SUCCESS Successfully added a characteristic. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, service handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - */ -SVCALL(SD_BLE_GATTS_CHARACTERISTIC_ADD, uint32_t, sd_ble_gatts_characteristic_add(uint16_t service_handle, ble_gatts_char_md_t const *p_char_md, ble_gatts_attr_t const *p_attr_char_value, ble_gatts_char_handles_t *p_handles)); - - -/**@brief Add a descriptor to the Attribute Table. - * - * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential population is supported at this time). - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] char_handle Handle of the characteristic where the descriptor is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] p_attr Pointer to the attribute structure. - * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully added a descriptor. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, characteristic handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a characteristic context is required. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - */ -SVCALL(SD_BLE_GATTS_DESCRIPTOR_ADD, uint32_t, sd_ble_gatts_descriptor_add(uint16_t char_handle, ble_gatts_attr_t const *p_attr, uint16_t *p_handle)); - -/**@brief Set the value of a given attribute. - * - * @note Values other than system attributes can be set at any time, regardless of whether any active connections exist. - * - * @mscs - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. Ignored if the value does not belong to a system attribute. - * @param[in] handle Attribute handle. - * @param[in,out] p_value Attribute value information. - * - * @retval ::NRF_SUCCESS Successfully set the value of the attribute. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden handle supplied, certain attributes are not modifiable by the application. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied on a system attribute. - */ -SVCALL(SD_BLE_GATTS_VALUE_SET, uint32_t, sd_ble_gatts_value_set(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)); - -/**@brief Get the value of a given attribute. - * - * @note If the attribute value is longer than the size of the supplied buffer, - * @ref ble_gatts_value_t::len will return the total attribute value length (excluding offset), - * and not the number of bytes actually returned in @ref ble_gatts_value_t::p_value. - * The application may use this information to allocate a suitable buffer size. - * - * @note When retrieving system attribute values with this function, the connection handle - * may refer to an already disconnected connection. Refer to the documentation of - * @ref sd_ble_gatts_sys_attr_get for further information. - * - * @param[in] conn_handle Connection handle. Ignored if the value does not belong to a system attribute. - * @param[in] handle Attribute handle. - * @param[in,out] p_value Attribute value information. - * - * @retval ::NRF_SUCCESS Successfully retrieved the value of the attribute. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid attribute offset supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied on a system attribute. - * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - */ -SVCALL(SD_BLE_GATTS_VALUE_GET, uint32_t, sd_ble_gatts_value_get(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)); - -/**@brief Notify or Indicate an attribute value. - * - * @details This function checks for the relevant Client Characteristic Configuration descriptor value to verify that the relevant operation - * (notification or indication) has been enabled by the client. It is also able to update the attribute value before issuing the PDU, so that - * the application can atomically perform a value update and a server initiated transaction with a single API call. - * - * @note The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution. - * The Attribute Table has been updated if one of the following error codes is returned: @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, - * @ref NRF_ERROR_FORBIDDEN, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and @ref NRF_ERROR_RESOURCES. - * The caller can check whether the value has been updated by looking at the contents of *(@ref ble_gatts_hvx_params_t::p_len). - * - * @note Only one indication procedure can be ongoing per connection at a time. - * If the application tries to indicate an attribute value while another indication procedure is ongoing, - * the function call will return @ref NRF_ERROR_BUSY. - * A @ref BLE_GATTS_EVT_HVC event will be issued as soon as the confirmation arrives from the peer. - * - * @note The number of Handle Value Notifications that can be queued is configured by @ref ble_gatts_conn_cfg_t::hvn_tx_queue_size - * When the queue is full, the function call will return @ref NRF_ERROR_RESOURCES. - * A @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event will be issued as soon as the transmission of the notification is complete. - * - * @note The application can keep track of the available queue element count for notifications by following the procedure below: - * - Store initial queue element count in a variable. - * - Decrement the variable, which stores the currently available queue element count, by one when a call to this function returns @ref NRF_SUCCESS. - * - Increment the variable, which stores the current available queue element count, by the count variable in @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event. - * - * @events - * @event{@ref BLE_GATTS_EVT_HVN_TX_COMPLETE, Notification transmission complete.} - * @event{@ref BLE_GATTS_EVT_HVC, Confirmation received from the peer.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC} - * @mmsc{@ref BLE_GATTS_HVN_MSC} - * @mmsc{@ref BLE_GATTS_HVI_MSC} - * @mmsc{@ref BLE_GATTS_HVX_DISABLED_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in,out] p_hvx_params Pointer to an HVx parameters structure. If @ref ble_gatts_hvx_params_t::p_data - * contains a non-NULL pointer the attribute value will be updated with the contents - * pointed by it before sending the notification or indication. If the attribute value - * is updated, @ref ble_gatts_hvx_params_t::p_len is updated by the SoftDevice to - * contain the number of actual bytes written, else it will be set to 0. - * - * @retval ::NRF_SUCCESS Successfully queued a notification or indication for transmission, and optionally updated the attribute value. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true: - * - Invalid Connection State - * - Notifications and/or indications not enabled in the CCCD - * - An ATT_MTU exchange is ongoing - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied. Only attributes added directly by the application are available to notify and indicate. - * @retval ::BLE_ERROR_GATTS_INVALID_ATTR_TYPE Invalid attribute type(s) supplied, only characteristic values may be notified and indicated. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - * @retval ::NRF_ERROR_FORBIDDEN The connection's current security level is lower than the one required by the write permissions of the CCCD associated with this characteristic. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @retval ::NRF_ERROR_BUSY For @ref BLE_GATT_HVX_INDICATION Procedure already in progress. Wait for a @ref BLE_GATTS_EVT_HVC event and retry. - * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - * @retval ::NRF_ERROR_RESOURCES Too many notifications queued. - * Wait for a @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event and retry. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_HVX, uint32_t, sd_ble_gatts_hvx(uint16_t conn_handle, ble_gatts_hvx_params_t const *p_hvx_params)); - -/**@brief Indicate the Service Changed attribute value. - * - * @details This call will send a Handle Value Indication to one or more peers connected to inform them that the Attribute - * Table layout has changed. As soon as the peer has confirmed the indication, a @ref BLE_GATTS_EVT_SC_CONFIRM event will - * be issued. - * - * @note Some of the restrictions and limitations that apply to @ref sd_ble_gatts_hvx also apply here. - * - * @events - * @event{@ref BLE_GATTS_EVT_SC_CONFIRM, Confirmation of attribute table change received from peer.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTS_SC_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] start_handle Start of affected attribute handle range. - * @param[in] end_handle End of affected attribute handle range. - * - * @retval ::NRF_SUCCESS Successfully queued the Service Changed indication for transmission. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_NOT_SUPPORTED Service Changed not enabled at initialization. See @ref - * sd_ble_cfg_set and @ref ble_gatts_cfg_service_changed_t. - * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true: - * - Invalid Connection State - * - Notifications and/or indications not enabled in the CCCD - * - An ATT_MTU exchange is ongoing - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied, handles must be in the range populated by the application. - * @retval ::NRF_ERROR_BUSY Procedure already in progress. - * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_SERVICE_CHANGED, uint32_t, sd_ble_gatts_service_changed(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle)); - -/**@brief Respond to a Read/Write authorization request. - * - * @note This call should only be used as a response to a @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event issued to the application. - * - * @mscs - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} - * @mmsc{@ref BLE_GATTS_READ_REQ_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_WRITE_REQ_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_PEER_CANCEL_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_rw_authorize_reply_params Pointer to a structure with the attribute provided by the application. - * - * @note @ref ble_gatts_authorize_params_t::p_data is ignored when this function is used to respond - * to a @ref BLE_GATTS_AUTHORIZE_TYPE_READ event if @ref ble_gatts_authorize_params_t::update - * is set to 0. - * - * @retval ::NRF_SUCCESS Successfully queued a response to the peer, and in the case of a write operation, Attribute Table updated. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no authorization request pending. - * @retval ::NRF_ERROR_INVALID_PARAM Authorization op invalid, - * handle supplied does not match requested handle, - * or invalid data to be written provided by the application. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_reply(uint16_t conn_handle, ble_gatts_rw_authorize_reply_params_t const *p_rw_authorize_reply_params)); - - -/**@brief Update persistent system attribute information. - * - * @details Supply information about persistent system attributes to the stack, - * previously obtained using @ref sd_ble_gatts_sys_attr_get. - * This call is only allowed for active connections, and is usually - * made immediately after a connection is established with an known bonded device, - * often as a response to a @ref BLE_GATTS_EVT_SYS_ATTR_MISSING. - * - * p_sysattrs may point directly to the application's stored copy of the system attributes - * obtained using @ref sd_ble_gatts_sys_attr_get. - * If the pointer is NULL, the system attribute info is initialized, assuming that - * the application does not have any previously saved system attribute data for this device. - * - * @note The state of persistent system attributes is reset upon connection establishment and then remembered for its duration. - * - * @note If this call returns with an error code different from @ref NRF_SUCCESS, the storage of persistent system attributes may have been completed only partially. - * This means that the state of the attribute table is undefined, and the application should either provide a new set of attributes using this same call or - * reset the SoftDevice to return to a known state. - * - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS is used with this function, only the system attributes included in system services will be modified. - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS is used with this function, only the system attributes included in user services will be modified. - * - * @mscs - * @mmsc{@ref BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC} - * @mmsc{@ref BLE_GATTS_SYS_ATTRS_UNK_PEER_MSC} - * @mmsc{@ref BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_sys_attr_data Pointer to a saved copy of system attributes supplied to the stack, or NULL. - * @param[in] len Size of data pointed by p_sys_attr_data, in octets. - * @param[in] flags Optional additional flags, see @ref BLE_GATTS_SYS_ATTR_FLAGS - * - * @retval ::NRF_SUCCESS Successfully set the system attribute information. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid flags supplied. - * @retval ::NRF_ERROR_INVALID_DATA Invalid data supplied, the data should be exactly the same as retrieved with @ref sd_ble_gatts_sys_attr_get. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const *p_sys_attr_data, uint16_t len, uint32_t flags)); - - -/**@brief Retrieve persistent system attribute information from the stack. - * - * @details This call is used to retrieve information about values to be stored persistently by the application - * during the lifetime of a connection or after it has been terminated. When a new connection is established with the same bonded device, - * the system attribute information retrieved with this function should be restored using using @ref sd_ble_gatts_sys_attr_set. - * If retrieved after disconnection, the data should be read before a new connection established. The connection handle for - * the previous, now disconnected, connection will remain valid until a new one is created to allow this API call to refer to it. - * Connection handles belonging to active connections can be used as well, but care should be taken since the system attributes - * may be written to at any time by the peer during a connection's lifetime. - * - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS is used with this function, only the system attributes included in system services will be returned. - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS is used with this function, only the system attributes included in user services will be returned. - * - * @mscs - * @mmsc{@ref BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle of the recently terminated connection. - * @param[out] p_sys_attr_data Pointer to a buffer where updated information about system attributes will be filled in. The format of the data is described - * in @ref BLE_GATTS_SYS_ATTRS_FORMAT. NULL can be provided to obtain the length of the data. - * @param[in,out] p_len Size of application buffer if p_sys_attr_data is not NULL. Unconditionally updated to actual length of system attribute data. - * @param[in] flags Optional additional flags, see @ref BLE_GATTS_SYS_ATTR_FLAGS - * - * @retval ::NRF_SUCCESS Successfully retrieved the system attribute information. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid flags supplied. - * @retval ::NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer. - * @retval ::NRF_ERROR_NOT_FOUND No system attributes found. - */ -SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t *p_sys_attr_data, uint16_t *p_len, uint32_t flags)); - - -/**@brief Retrieve the first valid user attribute handle. - * - * @param[out] p_handle Pointer to an integer where the handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully retrieved the handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GATTS_INITIAL_USER_HANDLE_GET, uint32_t, sd_ble_gatts_initial_user_handle_get(uint16_t *p_handle)); - -/**@brief Retrieve the attribute UUID and/or metadata. - * - * @param[in] handle Attribute handle - * @param[out] p_uuid UUID of the attribute. Use NULL to omit this field. - * @param[out] p_md Metadata of the attribute. Use NULL to omit this field. - * - * @retval ::NRF_SUCCESS Successfully retrieved the attribute metadata, - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameters supplied. Returned when both @c p_uuid and @c p_md are NULL. - * @retval ::NRF_ERROR_NOT_FOUND Attribute was not found. - */ -SVCALL(SD_BLE_GATTS_ATTR_GET, uint32_t, sd_ble_gatts_attr_get(uint16_t handle, ble_uuid_t * p_uuid, ble_gatts_attr_md_t * p_md)); - -/**@brief Reply to an ATT_MTU exchange request by sending an Exchange MTU Response to the client. - * - * @details This function is only used to reply to a @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST event. - * - * @details The SoftDevice sets ATT_MTU to the minimum of: - * - The Client RX MTU value from @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST, and - * - The Server RX MTU value. - * - * However, the SoftDevice never sets ATT_MTU lower than @ref BLE_GATT_ATT_MTU_DEFAULT. - * - * @mscs - * @mmsc{@ref BLE_GATTS_MTU_EXCHANGE} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] server_rx_mtu Server RX MTU size. - * - The minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. - * - The maximum value is @ref ble_gatt_conn_cfg_t::att_mtu in the connection configuration - * used for this connection. - * - The value must be equal to Client RX MTU size given in @ref sd_ble_gattc_exchange_mtu_request - * if an ATT_MTU exchange has already been performed in the other direction. - * - * @retval ::NRF_SUCCESS Successfully sent response to the client. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no ATT_MTU exchange request pending. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid Server RX MTU size supplied. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_EXCHANGE_MTU_REPLY, uint32_t, sd_ble_gatts_exchange_mtu_reply(uint16_t conn_handle, uint16_t server_rx_mtu)); -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_GATTS_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_hci.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_hci.h deleted file mode 100644 index f0dde9a..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_hci.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_COMMON - @{ -*/ - - -#ifndef BLE_HCI_H__ -#define BLE_HCI_H__ -#ifdef __cplusplus -extern "C" { -#endif - -/** @defgroup BLE_HCI_STATUS_CODES Bluetooth status codes - * @{ */ - -#define BLE_HCI_STATUS_CODE_SUCCESS 0x00 /**< Success. */ -#define BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND 0x01 /**< Unknown BLE Command. */ -#define BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER 0x02 /**< Unknown Connection Identifier. */ -/*0x03 Hardware Failure -0x04 Page Timeout -*/ -#define BLE_HCI_AUTHENTICATION_FAILURE 0x05 /**< Authentication Failure. */ -#define BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING 0x06 /**< Pin or Key missing. */ -#define BLE_HCI_MEMORY_CAPACITY_EXCEEDED 0x07 /**< Memory Capacity Exceeded. */ -#define BLE_HCI_CONNECTION_TIMEOUT 0x08 /**< Connection Timeout. */ -/*0x09 Connection Limit Exceeded -0x0A Synchronous Connection Limit To A Device Exceeded -0x0B ACL Connection Already Exists*/ -#define BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED 0x0C /**< Command Disallowed. */ -/*0x0D Connection Rejected due to Limited Resources -0x0E Connection Rejected Due To Security Reasons -0x0F Connection Rejected due to Unacceptable BD_ADDR -0x10 Connection Accept Timeout Exceeded -0x11 Unsupported Feature or Parameter Value*/ -#define BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS 0x12 /**< Invalid BLE Command Parameters. */ -#define BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION 0x13 /**< Remote User Terminated Connection. */ -#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES 0x14 /**< Remote Device Terminated Connection due to low resources.*/ -#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF 0x15 /**< Remote Device Terminated Connection due to power off. */ -#define BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION 0x16 /**< Local Host Terminated Connection. */ -/* -0x17 Repeated Attempts -0x18 Pairing Not Allowed -0x19 Unknown LMP PDU -*/ -#define BLE_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A /**< Unsupported Remote Feature. */ -/* -0x1B SCO Offset Rejected -0x1C SCO Interval Rejected -0x1D SCO Air Mode Rejected*/ -#define BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS 0x1E /**< Invalid LMP Parameters. */ -#define BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR 0x1F /**< Unspecified Error. */ -/*0x20 Unsupported LMP Parameter Value -0x21 Role Change Not Allowed -*/ -#define BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT 0x22 /**< LMP Response Timeout. */ -#define BLE_HCI_STATUS_CODE_LMP_ERROR_TRANSACTION_COLLISION 0x23 /**< LMP Error Transaction Collision/LL Procedure Collision. */ -#define BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED 0x24 /**< LMP PDU Not Allowed. */ -/*0x25 Encryption Mode Not Acceptable -0x26 Link Key Can Not be Changed -0x27 Requested QoS Not Supported -*/ -#define BLE_HCI_INSTANT_PASSED 0x28 /**< Instant Passed. */ -#define BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED 0x29 /**< Pairing with Unit Key Unsupported. */ -#define BLE_HCI_DIFFERENT_TRANSACTION_COLLISION 0x2A /**< Different Transaction Collision. */ -/* -0x2B Reserved -0x2C QoS Unacceptable Parameter -0x2D QoS Rejected -0x2E Channel Classification Not Supported -0x2F Insufficient Security -*/ -#define BLE_HCI_PARAMETER_OUT_OF_MANDATORY_RANGE 0x30 /**< Parameter Out Of Mandatory Range. */ -/* -0x31 Reserved -0x32 Role Switch Pending -0x33 Reserved -0x34 Reserved Slot Violation -0x35 Role Switch Failed -0x36 Extended Inquiry Response Too Large -0x37 Secure Simple Pairing Not Supported By Host. -0x38 Host Busy - Pairing -0x39 Connection Rejected due to No Suitable Channel Found*/ -#define BLE_HCI_CONTROLLER_BUSY 0x3A /**< Controller Busy. */ -#define BLE_HCI_CONN_INTERVAL_UNACCEPTABLE 0x3B /**< Connection Interval Unacceptable. */ -#define BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT 0x3C /**< Directed Advertisement Timeout. */ -#define BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE 0x3D /**< Connection Terminated due to MIC Failure. */ -#define BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED 0x3E /**< Connection Failed to be Established. */ - -/** @} */ - - -#ifdef __cplusplus -} -#endif -#endif // BLE_HCI_H__ - -/** @} */ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_l2cap.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_l2cap.h deleted file mode 100644 index edaf664..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_l2cap.h +++ /dev/null @@ -1,506 +0,0 @@ -/* - * Copyright (c) 2011 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_L2CAP Logical Link Control and Adaptation Protocol (L2CAP) - @{ - @brief Definitions and prototypes for the L2CAP interface. - */ - -#ifndef BLE_L2CAP_H__ -#define BLE_L2CAP_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup BLE_L2CAP_TERMINOLOGY Terminology - * @{ - * @details - * - * L2CAP SDU - * - A data unit that the application can send/receive to/from a peer. - * - * L2CAP PDU - * - A data unit that is exchanged between local and remote L2CAP entities. - * It consists of L2CAP protocol control information and payload fields. - * The payload field can contain an L2CAP SDU or a part of an L2CAP SDU. - * - * L2CAP MTU - * - The maximum length of an L2CAP SDU. - * - * L2CAP MPS - * - The maximum length of an L2CAP PDU payload field. - * - * Credits - * - A value indicating the number of L2CAP PDUs that the receiver of the credit can send to the peer. - * @} */ - -/**@addtogroup BLE_L2CAP_ENUMERATIONS Enumerations - * @{ */ - -/**@brief L2CAP API SVC numbers. */ -enum BLE_L2CAP_SVCS -{ - SD_BLE_L2CAP_CH_SETUP = BLE_L2CAP_SVC_BASE + 0, /**< Set up an L2CAP channel. */ - SD_BLE_L2CAP_CH_RELEASE = BLE_L2CAP_SVC_BASE + 1, /**< Release an L2CAP channel. */ - SD_BLE_L2CAP_CH_RX = BLE_L2CAP_SVC_BASE + 2, /**< Receive an SDU on an L2CAP channel. */ - SD_BLE_L2CAP_CH_TX = BLE_L2CAP_SVC_BASE + 3, /**< Transmit an SDU on an L2CAP channel. */ - SD_BLE_L2CAP_CH_FLOW_CONTROL = BLE_L2CAP_SVC_BASE + 4, /**< Advanced SDU reception flow control. */ -}; - -/**@brief L2CAP Event IDs. */ -enum BLE_L2CAP_EVTS -{ - BLE_L2CAP_EVT_CH_SETUP_REQUEST = BLE_L2CAP_EVT_BASE + 0, /**< L2CAP Channel Setup Request event. - \n See @ref ble_l2cap_evt_ch_setup_request_t. */ - BLE_L2CAP_EVT_CH_SETUP_REFUSED = BLE_L2CAP_EVT_BASE + 1, /**< L2CAP Channel Setup Refused event. - \n See @ref ble_l2cap_evt_ch_setup_refused_t. */ - BLE_L2CAP_EVT_CH_SETUP = BLE_L2CAP_EVT_BASE + 2, /**< L2CAP Channel Setup Completed event. - \n See @ref ble_l2cap_evt_ch_setup_t. */ - BLE_L2CAP_EVT_CH_RELEASED = BLE_L2CAP_EVT_BASE + 3, /**< L2CAP Channel Released event. - \n No additional event structure applies. */ - BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED = BLE_L2CAP_EVT_BASE + 4, /**< L2CAP Channel SDU data buffer released event. - \n See @ref ble_l2cap_evt_ch_sdu_buf_released_t. */ - BLE_L2CAP_EVT_CH_CREDIT = BLE_L2CAP_EVT_BASE + 5, /**< L2CAP Channel Credit received. - \n See @ref ble_l2cap_evt_ch_credit_t. */ - BLE_L2CAP_EVT_CH_RX = BLE_L2CAP_EVT_BASE + 6, /**< L2CAP Channel SDU received. - \n See @ref ble_l2cap_evt_ch_rx_t. */ - BLE_L2CAP_EVT_CH_TX = BLE_L2CAP_EVT_BASE + 7, /**< L2CAP Channel SDU transmitted. - \n See @ref ble_l2cap_evt_ch_tx_t. */ -}; - -/** @} */ - -/**@addtogroup BLE_L2CAP_DEFINES Defines - * @{ */ - -/**@brief Maximum number of L2CAP channels per connection. */ -#define BLE_L2CAP_CH_COUNT_MAX (64) - -/**@brief Minimum L2CAP MTU, in bytes. */ -#define BLE_L2CAP_MTU_MIN (23) - -/**@brief Minimum L2CAP MPS, in bytes. */ -#define BLE_L2CAP_MPS_MIN (23) - -/**@brief Invalid CID. */ -#define BLE_L2CAP_CID_INVALID (0x0000) - -/**@brief Default number of credits for @ref sd_ble_l2cap_ch_flow_control. */ -#define BLE_L2CAP_CREDITS_DEFAULT (1) - -/**@defgroup BLE_L2CAP_CH_SETUP_REFUSED_SRCS L2CAP channel setup refused sources - * @{ */ -#define BLE_L2CAP_CH_SETUP_REFUSED_SRC_LOCAL (0x01) /**< Local. */ -#define BLE_L2CAP_CH_SETUP_REFUSED_SRC_REMOTE (0x02) /**< Remote. */ - /** @} */ - - /** @defgroup BLE_L2CAP_CH_STATUS_CODES L2CAP channel status codes - * @{ */ -#define BLE_L2CAP_CH_STATUS_CODE_SUCCESS (0x0000) /**< Success. */ -#define BLE_L2CAP_CH_STATUS_CODE_LE_PSM_NOT_SUPPORTED (0x0002) /**< LE_PSM not supported. */ -#define BLE_L2CAP_CH_STATUS_CODE_NO_RESOURCES (0x0004) /**< No resources available. */ -#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_AUTHENTICATION (0x0005) /**< Insufficient authentication. */ -#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_AUTHORIZATION (0x0006) /**< Insufficient authorization. */ -#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_ENC_KEY_SIZE (0x0007) /**< Insufficient encryption key size. */ -#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_ENC (0x0008) /**< Insufficient encryption. */ -#define BLE_L2CAP_CH_STATUS_CODE_INVALID_SCID (0x0009) /**< Invalid Source CID. */ -#define BLE_L2CAP_CH_STATUS_CODE_SCID_ALLOCATED (0x000A) /**< Source CID already allocated. */ -#define BLE_L2CAP_CH_STATUS_CODE_UNACCEPTABLE_PARAMS (0x000B) /**< Unacceptable parameters. */ -#define BLE_L2CAP_CH_STATUS_CODE_NOT_UNDERSTOOD (0x8000) /**< Command Reject received instead of LE Credit Based Connection Response. */ -#define BLE_L2CAP_CH_STATUS_CODE_TIMEOUT (0xC000) /**< Operation timed out. */ -/** @} */ - -/** @} */ - -/**@addtogroup BLE_L2CAP_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE L2CAP connection configuration parameters, set with @ref sd_ble_cfg_set. - * - * @note These parameters are set per connection, so all L2CAP channels created on this connection - * will have the same parameters. - * - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - rx_mps is smaller than @ref BLE_L2CAP_MPS_MIN. - * - tx_mps is smaller than @ref BLE_L2CAP_MPS_MIN. - * - ch_count is greater than @ref BLE_L2CAP_CH_COUNT_MAX. - * @retval ::NRF_ERROR_NO_MEM rx_mps or tx_mps is set too high. - */ -typedef struct -{ - uint16_t rx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP shall - be able to receive on L2CAP channels on connections with this - configuration. The minimum value is @ref BLE_L2CAP_MPS_MIN. */ - uint16_t tx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP shall - be able to transmit on L2CAP channels on connections with this - configuration. The minimum value is @ref BLE_L2CAP_MPS_MIN. */ - uint8_t rx_queue_size; /**< Number of SDU data buffers that can be queued for reception per - L2CAP channel. The minimum value is one. */ - uint8_t tx_queue_size; /**< Number of SDU data buffers that can be queued for transmission - per L2CAP channel. The minimum value is one. */ - uint8_t ch_count; /**< Number of L2CAP channels the application can create per connection - with this configuration. The default value is zero, the maximum - value is @ref BLE_L2CAP_CH_COUNT_MAX. - @note if this parameter is set to zero, all other parameters in - @ref ble_l2cap_conn_cfg_t are ignored. */ -} ble_l2cap_conn_cfg_t; - -/**@brief L2CAP channel RX parameters. */ -typedef struct -{ - uint16_t rx_mtu; /**< The maximum L2CAP SDU size, in bytes, that L2CAP shall be able to - receive on this L2CAP channel. - - Must be equal to or greater than @ref BLE_L2CAP_MTU_MIN. */ - uint16_t rx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP shall be - able to receive on this L2CAP channel. - - Must be equal to or greater than @ref BLE_L2CAP_MPS_MIN. - - Must be equal to or less than @ref ble_l2cap_conn_cfg_t::rx_mps. */ - ble_data_t sdu_buf; /**< SDU data buffer for reception. - - If @ref ble_data_t::p_data is non-NULL, initial credits are - issued to the peer. - - If @ref ble_data_t::p_data is NULL, no initial credits are - issued to the peer. */ -} ble_l2cap_ch_rx_params_t; - -/**@brief L2CAP channel setup parameters. */ -typedef struct -{ - ble_l2cap_ch_rx_params_t rx_params; /**< L2CAP channel RX parameters. */ - uint16_t le_psm; /**< LE Protocol/Service Multiplexer. Used when requesting - setup of an L2CAP channel, ignored otherwise. */ - uint16_t status; /**< Status code, see @ref BLE_L2CAP_CH_STATUS_CODES. - Used when replying to a setup request of an L2CAP - channel, ignored otherwise. */ -} ble_l2cap_ch_setup_params_t; - -/**@brief L2CAP channel TX parameters. */ -typedef struct -{ - uint16_t tx_mtu; /**< The maximum L2CAP SDU size, in bytes, that L2CAP is able to - transmit on this L2CAP channel. */ - uint16_t peer_mps; /**< The maximum L2CAP PDU payload size, in bytes, that the peer is - able to receive on this L2CAP channel. */ - uint16_t tx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP is able - to transmit on this L2CAP channel. This is effective tx_mps, - selected by the SoftDevice as - MIN( @ref ble_l2cap_ch_tx_params_t::peer_mps, @ref ble_l2cap_conn_cfg_t::tx_mps ) */ - uint16_t credits; /**< Initial credits given by the peer. */ -} ble_l2cap_ch_tx_params_t; - -/**@brief L2CAP Channel Setup Request event. */ -typedef struct -{ - ble_l2cap_ch_tx_params_t tx_params; /**< L2CAP channel TX parameters. */ - uint16_t le_psm; /**< LE Protocol/Service Multiplexer. */ -} ble_l2cap_evt_ch_setup_request_t; - -/**@brief L2CAP Channel Setup Refused event. */ -typedef struct -{ - uint8_t source; /**< Source, see @ref BLE_L2CAP_CH_SETUP_REFUSED_SRCS */ - uint16_t status; /**< Status code, see @ref BLE_L2CAP_CH_STATUS_CODES */ -} ble_l2cap_evt_ch_setup_refused_t; - -/**@brief L2CAP Channel Setup Completed event. */ -typedef struct -{ - ble_l2cap_ch_tx_params_t tx_params; /**< L2CAP channel TX parameters. */ -} ble_l2cap_evt_ch_setup_t; - -/**@brief L2CAP Channel SDU Data Buffer Released event. */ -typedef struct -{ - ble_data_t sdu_buf; /**< Returned reception or transmission SDU data buffer. The SoftDevice - returns SDU data buffers supplied by the application, which have - not yet been returned previously via a @ref BLE_L2CAP_EVT_CH_RX or - @ref BLE_L2CAP_EVT_CH_TX event. */ -} ble_l2cap_evt_ch_sdu_buf_released_t; - -/**@brief L2CAP Channel Credit received event. */ -typedef struct -{ - uint16_t credits; /**< Additional credits given by the peer. */ -} ble_l2cap_evt_ch_credit_t; - -/**@brief L2CAP Channel received SDU event. */ -typedef struct -{ - uint16_t sdu_len; /**< Total SDU length, in bytes. */ - ble_data_t sdu_buf; /**< SDU data buffer. - @note If there is not enough space in the buffer - (sdu_buf.len < sdu_len) then the rest of the SDU will be - silently discarded by the SoftDevice. */ -} ble_l2cap_evt_ch_rx_t; - -/**@brief L2CAP Channel transmitted SDU event. */ -typedef struct -{ - ble_data_t sdu_buf; /**< SDU data buffer. */ -} ble_l2cap_evt_ch_tx_t; - -/**@brief L2CAP event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which the event occured. */ - uint16_t local_cid; /**< Local Channel ID of the L2CAP channel, or - @ref BLE_L2CAP_CID_INVALID if not present. */ - union - { - ble_l2cap_evt_ch_setup_request_t ch_setup_request; /**< L2CAP Channel Setup Request Event Parameters. */ - ble_l2cap_evt_ch_setup_refused_t ch_setup_refused; /**< L2CAP Channel Setup Refused Event Parameters. */ - ble_l2cap_evt_ch_setup_t ch_setup; /**< L2CAP Channel Setup Completed Event Parameters. */ - ble_l2cap_evt_ch_sdu_buf_released_t ch_sdu_buf_released;/**< L2CAP Channel SDU Data Buffer Released Event Parameters. */ - ble_l2cap_evt_ch_credit_t credit; /**< L2CAP Channel Credit Received Event Parameters. */ - ble_l2cap_evt_ch_rx_t rx; /**< L2CAP Channel SDU Received Event Parameters. */ - ble_l2cap_evt_ch_tx_t tx; /**< L2CAP Channel SDU Transmitted Event Parameters. */ - } params; /**< Event Parameters. */ -} ble_l2cap_evt_t; - -/** @} */ - -/**@addtogroup BLE_L2CAP_FUNCTIONS Functions - * @{ */ - -/**@brief Set up an L2CAP channel. - * - * @details This function is used to: - * - Request setup of an L2CAP channel: sends an LE Credit Based Connection Request packet to a peer. - * - Reply to a setup request of an L2CAP channel (if called in response to a - * @ref BLE_L2CAP_EVT_CH_SETUP_REQUEST event): sends an LE Credit Based Connection - * Response packet to a peer. - * - * @note A call to this function will require the application to keep the SDU data buffer alive - * until the SDU data buffer is returned in @ref BLE_L2CAP_EVT_CH_RX or - * @ref BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED event. - * - * @events - * @event{@ref BLE_L2CAP_EVT_CH_SETUP, Setup successful.} - * @event{@ref BLE_L2CAP_EVT_CH_SETUP_REFUSED, Setup failed.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_L2CAP_CH_SETUP_MSC} - * @endmscs - * - * @param[in] conn_handle Connection Handle. - * @param[in,out] p_local_cid Pointer to a uint16_t containing Local Channel ID of the L2CAP channel: - * - As input: @ref BLE_L2CAP_CID_INVALID when requesting setup of an L2CAP - * channel or local_cid provided in the @ref BLE_L2CAP_EVT_CH_SETUP_REQUEST - * event when replying to a setup request of an L2CAP channel. - * - As output: local_cid for this channel. - * @param[in] p_params L2CAP channel parameters. - * - * @retval ::NRF_SUCCESS Successfully queued request or response for transmission. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_LENGTH Supplied higher rx_mps than has been configured on this link. - * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (L2CAP channel already set up). - * @retval ::NRF_ERROR_NOT_FOUND CID not found. - * @retval ::NRF_ERROR_RESOURCES The limit has been reached for available L2CAP channels, - * see @ref ble_l2cap_conn_cfg_t::ch_count. - */ -SVCALL(SD_BLE_L2CAP_CH_SETUP, uint32_t, sd_ble_l2cap_ch_setup(uint16_t conn_handle, uint16_t *p_local_cid, ble_l2cap_ch_setup_params_t const *p_params)); - -/**@brief Release an L2CAP channel. - * - * @details This sends a Disconnection Request packet to a peer. - * - * @events - * @event{@ref BLE_L2CAP_EVT_CH_RELEASED, Release complete.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_L2CAP_CH_RELEASE_MSC} - * @endmscs - * - * @param[in] conn_handle Connection Handle. - * @param[in] local_cid Local Channel ID of the L2CAP channel. - * - * @retval ::NRF_SUCCESS Successfully queued request for transmission. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is - * in progress for the L2CAP channel). - * @retval ::NRF_ERROR_NOT_FOUND CID not found. - */ -SVCALL(SD_BLE_L2CAP_CH_RELEASE, uint32_t, sd_ble_l2cap_ch_release(uint16_t conn_handle, uint16_t local_cid)); - -/**@brief Receive an SDU on an L2CAP channel. - * - * @details This may issue additional credits to the peer using an LE Flow Control Credit packet. - * - * @note A call to this function will require the application to keep the memory pointed by - * @ref ble_data_t::p_data alive until the SDU data buffer is returned in @ref BLE_L2CAP_EVT_CH_RX - * or @ref BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED event. - * - * @note The SoftDevice can queue up to @ref ble_l2cap_conn_cfg_t::rx_queue_size SDU data buffers - * for reception per L2CAP channel. - * - * @events - * @event{@ref BLE_L2CAP_EVT_CH_RX, The SDU is received.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_L2CAP_CH_RX_MSC} - * @endmscs - * - * @param[in] conn_handle Connection Handle. - * @param[in] local_cid Local Channel ID of the L2CAP channel. - * @param[in] p_sdu_buf Pointer to the SDU data buffer. - * - * @retval ::NRF_SUCCESS Buffer accepted. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is - * in progress for an L2CAP channel). - * @retval ::NRF_ERROR_NOT_FOUND CID not found. - * @retval ::NRF_ERROR_RESOURCES Too many SDU data buffers supplied. Wait for a - * @ref BLE_L2CAP_EVT_CH_RX event and retry. - */ -SVCALL(SD_BLE_L2CAP_CH_RX, uint32_t, sd_ble_l2cap_ch_rx(uint16_t conn_handle, uint16_t local_cid, ble_data_t const *p_sdu_buf)); - -/**@brief Transmit an SDU on an L2CAP channel. - * - * @note A call to this function will require the application to keep the memory pointed by - * @ref ble_data_t::p_data alive until the SDU data buffer is returned in @ref BLE_L2CAP_EVT_CH_TX - * or @ref BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED event. - * - * @note The SoftDevice can queue up to @ref ble_l2cap_conn_cfg_t::tx_queue_size SDUs for - * transmission per L2CAP channel. - * - * @note The application can keep track of the available credits for transmission by following - * the procedure below: - * - Store initial credits given by the peer in a variable. - * (Initial credits are provided in a @ref BLE_L2CAP_EVT_CH_SETUP event.) - * - Decrement the variable, which stores the currently available credits, by - * ceiling((@ref ble_data_t::len + 2) / tx_mps) when a call to this function returns - * @ref NRF_SUCCESS. (tx_mps is provided in a @ref BLE_L2CAP_EVT_CH_SETUP event.) - * - Increment the variable, which stores the currently available credits, by additional - * credits given by the peer in a @ref BLE_L2CAP_EVT_CH_CREDIT event. - * - * @events - * @event{@ref BLE_L2CAP_EVT_CH_TX, The SDU is transmitted.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_L2CAP_CH_TX_MSC} - * @endmscs - * - * @param[in] conn_handle Connection Handle. - * @param[in] local_cid Local Channel ID of the L2CAP channel. - * @param[in] p_sdu_buf Pointer to the SDU data buffer. - * - * @retval ::NRF_SUCCESS Successfully queued L2CAP SDU for transmission. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is - * in progress for the L2CAP channel). - * @retval ::NRF_ERROR_NOT_FOUND CID not found. - * @retval ::NRF_ERROR_DATA_SIZE Invalid SDU length supplied, must not be more than - * @ref ble_l2cap_ch_tx_params_t::tx_mtu provided in - * @ref BLE_L2CAP_EVT_CH_SETUP event. - * @retval ::NRF_ERROR_RESOURCES Too many SDUs queued for transmission. Wait for a - * @ref BLE_L2CAP_EVT_CH_TX event and retry. - */ -SVCALL(SD_BLE_L2CAP_CH_TX, uint32_t, sd_ble_l2cap_ch_tx(uint16_t conn_handle, uint16_t local_cid, ble_data_t const *p_sdu_buf)); - -/**@brief Advanced SDU reception flow control. - * - * @details Adjust the way the SoftDevice issues credits to the peer. - * This may issue additional credits to the peer using an LE Flow Control Credit packet. - * - * @mscs - * @mmsc{@ref BLE_L2CAP_CH_FLOW_CONTROL_MSC} - * @endmscs - * - * @param[in] conn_handle Connection Handle. - * @param[in] local_cid Local Channel ID of the L2CAP channel or @ref BLE_L2CAP_CID_INVALID to set - * the value that will be used for newly created channels. - * @param[in] credits Number of credits that the SoftDevice will make sure the peer has every - * time it starts using a new reception buffer. - * - @ref BLE_L2CAP_CREDITS_DEFAULT is the default value the SoftDevice will - * use if this function is not called. - * - If set to zero, the SoftDevice will stop issuing credits for new reception - * buffers the application provides or has provided. SDU reception that is - * currently ongoing will be allowed to complete. - * @param[out] p_credits NULL or pointer to a uint16_t. If a valid pointer is provided, it will be - * written by the SoftDevice with the number of credits that is or will be - * available to the peer. If the value written by the SoftDevice is 0 when - * credits parameter was set to 0, the peer will not be able to send more - * data until more credits are provided by calling this function again with - * credits > 0. This parameter is ignored when local_cid is set to - * @ref BLE_L2CAP_CID_INVALID. - * - * @note Application should take care when setting number of credits higher than default value. In - * this case the application must make sure that the SoftDevice always has reception buffers - * available (see @ref sd_ble_l2cap_ch_rx) for that channel. If the SoftDevice does not have - * such buffers available, packets may be NACKed on the Link Layer and all Bluetooth traffic - * on the connection handle may be stalled until the SoftDevice again has an available - * reception buffer. This applies even if the application has used this call to set the - * credits back to default, or zero. - * - * @retval ::NRF_SUCCESS Flow control parameters accepted. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is - * in progress for an L2CAP channel). - * @retval ::NRF_ERROR_NOT_FOUND CID not found. - */ -SVCALL(SD_BLE_L2CAP_CH_FLOW_CONTROL, uint32_t, sd_ble_l2cap_ch_flow_control(uint16_t conn_handle, uint16_t local_cid, uint16_t credits, uint16_t *p_credits)); - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_L2CAP_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_ranges.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_ranges.h deleted file mode 100644 index 0935bca..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_ranges.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 2012 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_COMMON - @{ - @defgroup ble_ranges Module specific SVC, event and option number subranges - @{ - - @brief Definition of SVC, event and option number subranges for each API module. - - @note - SVCs, event and option numbers are split into subranges for each API module. - Each module receives its entire allocated range of SVC calls, whether implemented or not, - but return BLE_ERROR_NOT_SUPPORTED for unimplemented or undefined calls in its range. - - Note that the symbols BLE__SVC_LAST is the end of the allocated SVC range, - rather than the last SVC function call actually defined and implemented. - - Specific SVC, event and option values are defined in each module's ble_.h file, - which defines names of each individual SVC code based on the range start value. -*/ - -#ifndef BLE_RANGES_H__ -#define BLE_RANGES_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#define BLE_SVC_BASE 0x60 /**< Common BLE SVC base. */ -#define BLE_SVC_LAST 0x6B /**< Common BLE SVC last. */ - -#define BLE_GAP_SVC_BASE 0x6C /**< GAP BLE SVC base. */ -#define BLE_GAP_SVC_LAST 0x9A /**< GAP BLE SVC last. */ - -#define BLE_GATTC_SVC_BASE 0x9B /**< GATTC BLE SVC base. */ -#define BLE_GATTC_SVC_LAST 0xA7 /**< GATTC BLE SVC last. */ - -#define BLE_GATTS_SVC_BASE 0xA8 /**< GATTS BLE SVC base. */ -#define BLE_GATTS_SVC_LAST 0xB7 /**< GATTS BLE SVC last. */ - -#define BLE_L2CAP_SVC_BASE 0xB8 /**< L2CAP BLE SVC base. */ -#define BLE_L2CAP_SVC_LAST 0xBF /**< L2CAP BLE SVC last. */ - - -#define BLE_EVT_INVALID 0x00 /**< Invalid BLE Event. */ - -#define BLE_EVT_BASE 0x01 /**< Common BLE Event base. */ -#define BLE_EVT_LAST 0x0F /**< Common BLE Event last. */ - -#define BLE_GAP_EVT_BASE 0x10 /**< GAP BLE Event base. */ -#define BLE_GAP_EVT_LAST 0x2F /**< GAP BLE Event last. */ - -#define BLE_GATTC_EVT_BASE 0x30 /**< GATTC BLE Event base. */ -#define BLE_GATTC_EVT_LAST 0x4F /**< GATTC BLE Event last. */ - -#define BLE_GATTS_EVT_BASE 0x50 /**< GATTS BLE Event base. */ -#define BLE_GATTS_EVT_LAST 0x6F /**< GATTS BLE Event last. */ - -#define BLE_L2CAP_EVT_BASE 0x70 /**< L2CAP BLE Event base. */ -#define BLE_L2CAP_EVT_LAST 0x8F /**< L2CAP BLE Event last. */ - - -#define BLE_OPT_INVALID 0x00 /**< Invalid BLE Option. */ - -#define BLE_OPT_BASE 0x01 /**< Common BLE Option base. */ -#define BLE_OPT_LAST 0x1F /**< Common BLE Option last. */ - -#define BLE_GAP_OPT_BASE 0x20 /**< GAP BLE Option base. */ -#define BLE_GAP_OPT_LAST 0x3F /**< GAP BLE Option last. */ - -#define BLE_GATT_OPT_BASE 0x40 /**< GATT BLE Option base. */ -#define BLE_GATT_OPT_LAST 0x5F /**< GATT BLE Option last. */ - -#define BLE_GATTC_OPT_BASE 0x60 /**< GATTC BLE Option base. */ -#define BLE_GATTC_OPT_LAST 0x7F /**< GATTC BLE Option last. */ - -#define BLE_GATTS_OPT_BASE 0x80 /**< GATTS BLE Option base. */ -#define BLE_GATTS_OPT_LAST 0x9F /**< GATTS BLE Option last. */ - -#define BLE_L2CAP_OPT_BASE 0xA0 /**< L2CAP BLE Option base. */ -#define BLE_L2CAP_OPT_LAST 0xBF /**< L2CAP BLE Option last. */ - - -#define BLE_CFG_INVALID 0x00 /**< Invalid BLE configuration. */ - -#define BLE_CFG_BASE 0x01 /**< Common BLE configuration base. */ -#define BLE_CFG_LAST 0x1F /**< Common BLE configuration last. */ - -#define BLE_CONN_CFG_BASE 0x20 /**< BLE connection configuration base. */ -#define BLE_CONN_CFG_LAST 0x3F /**< BLE connection configuration last. */ - -#define BLE_GAP_CFG_BASE 0x40 /**< GAP BLE configuration base. */ -#define BLE_GAP_CFG_LAST 0x5F /**< GAP BLE configuration last. */ - -#define BLE_GATT_CFG_BASE 0x60 /**< GATT BLE configuration base. */ -#define BLE_GATT_CFG_LAST 0x7F /**< GATT BLE configuration last. */ - -#define BLE_GATTC_CFG_BASE 0x80 /**< GATTC BLE configuration base. */ -#define BLE_GATTC_CFG_LAST 0x9F /**< GATTC BLE configuration last. */ - -#define BLE_GATTS_CFG_BASE 0xA0 /**< GATTS BLE configuration base. */ -#define BLE_GATTS_CFG_LAST 0xBF /**< GATTS BLE configuration last. */ - -#define BLE_L2CAP_CFG_BASE 0xC0 /**< L2CAP BLE configuration base. */ -#define BLE_L2CAP_CFG_LAST 0xDF /**< L2CAP BLE configuration last. */ - - - - - -#ifdef __cplusplus -} -#endif -#endif /* BLE_RANGES_H__ */ - -/** - @} - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_types.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_types.h deleted file mode 100644 index 88c9318..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/ble_types.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_COMMON - @{ - @defgroup ble_types Common types and macro definitions - @{ - - @brief Common types and macro definitions for the BLE SoftDevice. - */ - -#ifndef BLE_TYPES_H__ -#define BLE_TYPES_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_TYPES_DEFINES Defines - * @{ */ - -/** @defgroup BLE_CONN_HANDLES BLE Connection Handles - * @{ */ -#define BLE_CONN_HANDLE_INVALID 0xFFFF /**< Invalid Connection Handle. */ -#define BLE_CONN_HANDLE_ALL 0xFFFE /**< Applies to all Connection Handles. */ -/** @} */ - - -/** @defgroup BLE_UUID_VALUES Assigned Values for BLE UUIDs - * @{ */ -/* Generic UUIDs, applicable to all services */ -#define BLE_UUID_UNKNOWN 0x0000 /**< Reserved UUID. */ -#define BLE_UUID_SERVICE_PRIMARY 0x2800 /**< Primary Service. */ -#define BLE_UUID_SERVICE_SECONDARY 0x2801 /**< Secondary Service. */ -#define BLE_UUID_SERVICE_INCLUDE 0x2802 /**< Include. */ -#define BLE_UUID_CHARACTERISTIC 0x2803 /**< Characteristic. */ -#define BLE_UUID_DESCRIPTOR_CHAR_EXT_PROP 0x2900 /**< Characteristic Extended Properties Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_USER_DESC 0x2901 /**< Characteristic User Description Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG 0x2902 /**< Client Characteristic Configuration Descriptor. */ -#define BLE_UUID_DESCRIPTOR_SERVER_CHAR_CONFIG 0x2903 /**< Server Characteristic Configuration Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_PRESENTATION_FORMAT 0x2904 /**< Characteristic Presentation Format Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_AGGREGATE_FORMAT 0x2905 /**< Characteristic Aggregate Format Descriptor. */ -/* GATT specific UUIDs */ -#define BLE_UUID_GATT 0x1801 /**< Generic Attribute Profile. */ -#define BLE_UUID_GATT_CHARACTERISTIC_SERVICE_CHANGED 0x2A05 /**< Service Changed Characteristic. */ -/* GAP specific UUIDs */ -#define BLE_UUID_GAP 0x1800 /**< Generic Access Profile. */ -#define BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME 0x2A00 /**< Device Name Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_APPEARANCE 0x2A01 /**< Appearance Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_RECONN_ADDR 0x2A03 /**< Reconnection Address Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_PPCP 0x2A04 /**< Peripheral Preferred Connection Parameters Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_CAR 0x2AA6 /**< Central Address Resolution Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_RPA_ONLY 0x2AC9 /**< Resolvable Private Address Only Characteristic. */ -/** @} */ - - -/** @defgroup BLE_UUID_TYPES Types of UUID - * @{ */ -#define BLE_UUID_TYPE_UNKNOWN 0x00 /**< Invalid UUID type. */ -#define BLE_UUID_TYPE_BLE 0x01 /**< Bluetooth SIG UUID (16-bit). */ -#define BLE_UUID_TYPE_VENDOR_BEGIN 0x02 /**< Vendor UUID types start at this index (128-bit). */ -/** @} */ - - -/** @defgroup BLE_APPEARANCES Bluetooth Appearance values - * @note Retrieved from http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml - * @{ */ -#define BLE_APPEARANCE_UNKNOWN 0 /**< Unknown. */ -#define BLE_APPEARANCE_GENERIC_PHONE 64 /**< Generic Phone. */ -#define BLE_APPEARANCE_GENERIC_COMPUTER 128 /**< Generic Computer. */ -#define BLE_APPEARANCE_GENERIC_WATCH 192 /**< Generic Watch. */ -#define BLE_APPEARANCE_WATCH_SPORTS_WATCH 193 /**< Watch: Sports Watch. */ -#define BLE_APPEARANCE_GENERIC_CLOCK 256 /**< Generic Clock. */ -#define BLE_APPEARANCE_GENERIC_DISPLAY 320 /**< Generic Display. */ -#define BLE_APPEARANCE_GENERIC_REMOTE_CONTROL 384 /**< Generic Remote Control. */ -#define BLE_APPEARANCE_GENERIC_EYE_GLASSES 448 /**< Generic Eye-glasses. */ -#define BLE_APPEARANCE_GENERIC_TAG 512 /**< Generic Tag. */ -#define BLE_APPEARANCE_GENERIC_KEYRING 576 /**< Generic Keyring. */ -#define BLE_APPEARANCE_GENERIC_MEDIA_PLAYER 640 /**< Generic Media Player. */ -#define BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 704 /**< Generic Barcode Scanner. */ -#define BLE_APPEARANCE_GENERIC_THERMOMETER 768 /**< Generic Thermometer. */ -#define BLE_APPEARANCE_THERMOMETER_EAR 769 /**< Thermometer: Ear. */ -#define BLE_APPEARANCE_GENERIC_HEART_RATE_SENSOR 832 /**< Generic Heart rate Sensor. */ -#define BLE_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT 833 /**< Heart Rate Sensor: Heart Rate Belt. */ -#define BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE 896 /**< Generic Blood Pressure. */ -#define BLE_APPEARANCE_BLOOD_PRESSURE_ARM 897 /**< Blood Pressure: Arm. */ -#define BLE_APPEARANCE_BLOOD_PRESSURE_WRIST 898 /**< Blood Pressure: Wrist. */ -#define BLE_APPEARANCE_GENERIC_HID 960 /**< Human Interface Device (HID). */ -#define BLE_APPEARANCE_HID_KEYBOARD 961 /**< Keyboard (HID Subtype). */ -#define BLE_APPEARANCE_HID_MOUSE 962 /**< Mouse (HID Subtype). */ -#define BLE_APPEARANCE_HID_JOYSTICK 963 /**< Joystick (HID Subtype). */ -#define BLE_APPEARANCE_HID_GAMEPAD 964 /**< Gamepad (HID Subtype). */ -#define BLE_APPEARANCE_HID_DIGITIZERSUBTYPE 965 /**< Digitizer Tablet (HID Subtype). */ -#define BLE_APPEARANCE_HID_CARD_READER 966 /**< Card Reader (HID Subtype). */ -#define BLE_APPEARANCE_HID_DIGITAL_PEN 967 /**< Digital Pen (HID Subtype). */ -#define BLE_APPEARANCE_HID_BARCODE 968 /**< Barcode Scanner (HID Subtype). */ -#define BLE_APPEARANCE_GENERIC_GLUCOSE_METER 1024 /**< Generic Glucose Meter. */ -#define BLE_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR 1088 /**< Generic Running Walking Sensor. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE 1089 /**< Running Walking Sensor: In-Shoe. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE 1090 /**< Running Walking Sensor: On-Shoe. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP 1091 /**< Running Walking Sensor: On-Hip. */ -#define BLE_APPEARANCE_GENERIC_CYCLING 1152 /**< Generic Cycling. */ -#define BLE_APPEARANCE_CYCLING_CYCLING_COMPUTER 1153 /**< Cycling: Cycling Computer. */ -#define BLE_APPEARANCE_CYCLING_SPEED_SENSOR 1154 /**< Cycling: Speed Sensor. */ -#define BLE_APPEARANCE_CYCLING_CADENCE_SENSOR 1155 /**< Cycling: Cadence Sensor. */ -#define BLE_APPEARANCE_CYCLING_POWER_SENSOR 1156 /**< Cycling: Power Sensor. */ -#define BLE_APPEARANCE_CYCLING_SPEED_CADENCE_SENSOR 1157 /**< Cycling: Speed and Cadence Sensor. */ -#define BLE_APPEARANCE_GENERIC_PULSE_OXIMETER 3136 /**< Generic Pulse Oximeter. */ -#define BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP 3137 /**< Fingertip (Pulse Oximeter subtype). */ -#define BLE_APPEARANCE_PULSE_OXIMETER_WRIST_WORN 3138 /**< Wrist Worn(Pulse Oximeter subtype). */ -#define BLE_APPEARANCE_GENERIC_WEIGHT_SCALE 3200 /**< Generic Weight Scale. */ -#define BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS_ACT 5184 /**< Generic Outdoor Sports Activity. */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_DISP 5185 /**< Location Display Device (Outdoor Sports Activity subtype). */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_DISP 5186 /**< Location and Navigation Display Device (Outdoor Sports Activity subtype). */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_POD 5187 /**< Location Pod (Outdoor Sports Activity subtype). */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_POD 5188 /**< Location and Navigation Pod (Outdoor Sports Activity subtype). */ -/** @} */ - -/** @brief Set .type and .uuid fields of ble_uuid_struct to specified UUID value. */ -#define BLE_UUID_BLE_ASSIGN(instance, value) do {\ - instance.type = BLE_UUID_TYPE_BLE; \ - instance.uuid = value;} while(0) - -/** @brief Copy type and uuid members from src to dst ble_uuid_t pointer. Both pointers must be valid/non-null. */ -#define BLE_UUID_COPY_PTR(dst, src) do {\ - (dst)->type = (src)->type; \ - (dst)->uuid = (src)->uuid;} while(0) - -/** @brief Copy type and uuid members from src to dst ble_uuid_t struct. */ -#define BLE_UUID_COPY_INST(dst, src) do {\ - (dst).type = (src).type; \ - (dst).uuid = (src).uuid;} while(0) - -/** @brief Compare for equality both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ -#define BLE_UUID_EQ(p_uuid1, p_uuid2) \ - (((p_uuid1)->type == (p_uuid2)->type) && ((p_uuid1)->uuid == (p_uuid2)->uuid)) - -/** @brief Compare for difference both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ -#define BLE_UUID_NEQ(p_uuid1, p_uuid2) \ - (((p_uuid1)->type != (p_uuid2)->type) || ((p_uuid1)->uuid != (p_uuid2)->uuid)) - -/** @} */ - -/** @addtogroup BLE_TYPES_STRUCTURES Structures - * @{ */ - -/** @brief 128 bit UUID values. */ -typedef struct -{ - uint8_t uuid128[16]; /**< Little-Endian UUID bytes. */ -} ble_uuid128_t; - -/** @brief Bluetooth Low Energy UUID type, encapsulates both 16-bit and 128-bit UUIDs. */ -typedef struct -{ - uint16_t uuid; /**< 16-bit UUID value or octets 12-13 of 128-bit UUID. */ - uint8_t type; /**< UUID type, see @ref BLE_UUID_TYPES. If type is @ref BLE_UUID_TYPE_UNKNOWN, the value of uuid is undefined. */ -} ble_uuid_t; - -/**@brief Data structure. */ -typedef struct -{ - uint8_t *p_data; /**< Pointer to the data buffer provided to/from the application. */ - uint16_t len; /**< Length of the data buffer, in bytes. */ -} ble_data_t; - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* BLE_TYPES_H__ */ - -/** - @} - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf52/nrf_mbr.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf52/nrf_mbr.h deleted file mode 100644 index ea231b3..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf52/nrf_mbr.h +++ /dev/null @@ -1,241 +0,0 @@ -/* - * Copyright (c) 2014 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @defgroup nrf_mbr_api Master Boot Record API - @{ - - @brief APIs for updating SoftDevice and BootLoader - -*/ - -#ifndef NRF_MBR_H__ -#define NRF_MBR_H__ - -#include "nrf_svc.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup NRF_MBR_DEFINES Defines - * @{ */ - -/**@brief MBR SVC Base number. */ -#define MBR_SVC_BASE (0x18) - -/**@brief Page size in words. */ -#define MBR_PAGE_SIZE_IN_WORDS (1024) - -/** @brief The size that must be reserved for the MBR when a SoftDevice is written to flash. -This is the offset where the first byte of the SoftDevice hex file is written.*/ -#define MBR_SIZE (0x1000) - -/** @} */ - -/** @addtogroup NRF_MBR_ENUMS Enumerations - * @{ */ - -/**@brief nRF Master Boot Record API SVC numbers. */ -enum NRF_MBR_SVCS -{ - SD_MBR_COMMAND = MBR_SVC_BASE, /**< ::sd_mbr_command */ -}; - -/**@brief Possible values for ::sd_mbr_command_t.command */ -enum NRF_MBR_COMMANDS -{ - SD_MBR_COMMAND_COPY_BL, /**< Copy a new BootLoader. @see ::sd_mbr_command_copy_bl_t*/ - SD_MBR_COMMAND_COPY_SD, /**< Copy a new SoftDevice. @see ::sd_mbr_command_copy_sd_t*/ - SD_MBR_COMMAND_INIT_SD, /**< Initialize forwarding interrupts to SD, and run reset function in SD. Does not require any parameters in ::sd_mbr_command_t params.*/ - SD_MBR_COMMAND_COMPARE, /**< This command works like memcmp. @see ::sd_mbr_command_compare_t*/ - SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET, /**< Change the address the MBR starts after a reset. @see ::sd_mbr_command_vector_table_base_set_t*/ - SD_MBR_COMMAND_RESERVED, - SD_MBR_COMMAND_IRQ_FORWARD_ADDRESS_SET, /**< Start forwarding all interrupts to this address. @see ::sd_mbr_command_irq_forward_address_set_t*/ -}; - -/** @} */ - -/** @addtogroup NRF_MBR_TYPES Types - * @{ */ - -/**@brief This command copies part of a new SoftDevice - * - * The destination area is erased before copying. - * If dst is in the middle of a flash page, that whole flash page will be erased. - * If (dst+len) is in the middle of a flash page, that whole flash page will be erased. - * - * The user of this function is responsible for setting the BPROT registers. - * - * @retval ::NRF_SUCCESS indicates that the contents of the memory blocks where copied correctly. - * @retval ::NRF_ERROR_INTERNAL indicates that the contents of the memory blocks where not verified correctly after copying. - */ -typedef struct -{ - uint32_t *src; /**< Pointer to the source of data to be copied.*/ - uint32_t *dst; /**< Pointer to the destination where the content is to be copied.*/ - uint32_t len; /**< Number of 32 bit words to copy. Must be a multiple of @ref MBR_PAGE_SIZE_IN_WORDS words.*/ -} sd_mbr_command_copy_sd_t; - - -/**@brief This command works like memcmp, but takes the length in words. - * - * @retval ::NRF_SUCCESS indicates that the contents of both memory blocks are equal. - * @retval ::NRF_ERROR_NULL indicates that the contents of the memory blocks are not equal. - */ -typedef struct -{ - uint32_t *ptr1; /**< Pointer to block of memory. */ - uint32_t *ptr2; /**< Pointer to block of memory. */ - uint32_t len; /**< Number of 32 bit words to compare.*/ -} sd_mbr_command_compare_t; - - -/**@brief This command copies a new BootLoader. - * - * With this command, destination of BootLoader is always the address written in - * NRF_UICR->BOOTADDR. - * - * Destination is erased by this function. - * If (destination+bl_len) is in the middle of a flash page, that whole flash page will be erased. - * - * This function will use PROTENSET to protect the flash that is not intended to be written. - * - * On success, this function will not return. It will start the new BootLoader from reset-vector as normal. - * - * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen. - * @retval ::NRF_ERROR_FORBIDDEN if NRF_UICR->BOOTADDR is not set. - * @retval ::NRF_ERROR_INVALID_LENGTH if parameters attempts to read or write outside flash area. - * @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see SoftDevice Specification for more info) - */ -typedef struct -{ - uint32_t *bl_src; /**< Pointer to the source of the Bootloader to be be copied.*/ - uint32_t bl_len; /**< Number of 32 bit words to copy for BootLoader. */ -} sd_mbr_command_copy_bl_t; - -/**@brief Change the address the MBR starts after a reset - * - * Once this function has been called, this address is where the MBR will start to forward - * interrupts to after a reset. - * - * To restore default forwarding this function should be called with @ref address set to 0. The - * MBR will then start forwarding interrupts to the address in NFR_UICR->BOOTADDR or to the - * SoftDevice if the BOOTADDR is not set. - * - * On success, this function will not return. It will reset the device. - * - * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen. - * @retval ::NRF_ERROR_INVALID_ADDR if parameter address is outside of the flash size. - * @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see SoftDevice Specification for more info) - */ -typedef struct -{ - uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/ -} sd_mbr_command_vector_table_base_set_t; - -/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the MBR - * - * Unlike sd_mbr_command_vector_table_base_set_t, this function does not reset, and it does not - * change where the MBR starts after reset. - * - * @retval ::NRF_SUCCESS - */ -typedef struct -{ - uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/ -} sd_mbr_command_irq_forward_address_set_t; - -/**@brief Input structure containing data used when calling ::sd_mbr_command - * - * Depending on what command value that is set, the corresponding params value type must also be - * set. See @ref NRF_MBR_COMMANDS for command types and corresponding params value type. If command - * @ref SD_MBR_COMMAND_INIT_SD is set, it is not necessary to set any values under params. - */ -typedef struct -{ - uint32_t command; /**< Type of command to be issued. See @ref NRF_MBR_COMMANDS. */ - union - { - sd_mbr_command_copy_sd_t copy_sd; /**< Parameters for copy SoftDevice.*/ - sd_mbr_command_compare_t compare; /**< Parameters for verify.*/ - sd_mbr_command_copy_bl_t copy_bl; /**< Parameters for copy BootLoader. Requires parameter page. */ - sd_mbr_command_vector_table_base_set_t base_set; /**< Parameters for vector table base set. Requires parameter page.*/ - sd_mbr_command_irq_forward_address_set_t irq_forward_address_set; /**< Parameters for irq forward address set*/ - } params; /**< Command parameters. */ -} sd_mbr_command_t; - -/** @} */ - -/** @addtogroup NRF_MBR_FUNCTIONS Functions - * @{ */ - -/**@brief Issue Master Boot Record commands - * - * Commands used when updating a SoftDevice and bootloader. - * - * The @ref SD_MBR_COMMAND_COPY_BL and @ref SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET requires - * parameters to be retained by the MBR when resetting the IC. This is done in a separate flash - * page provided by the application. The UICR register UICR.NRFFW[1] must be set to an address - * corresponding to a page in the application flash space. This page will be cleared by the MBR and - * used to store the command before reset. When the UICR.NRFFW[1] field is set the page it refers - * to must not be used by the application. If the UICR.NRFFW[1] is set to 0xFFFFFFFF (the default) - * MBR commands which use flash will be unavailable and return @ref NRF_ERROR_NO_MEM. - * - * @param[in] param Pointer to a struct describing the command. - * - * @note For return values, see ::sd_mbr_command_copy_sd_t, ::sd_mbr_command_copy_bl_t, - * ::sd_mbr_command_compare_t, ::sd_mbr_command_vector_table_base_set_t, - * ::sd_mbr_command_irq_forward_address_set_t - * - * @retval ::NRF_ERROR_NO_MEM if UICR.NRFFW[1] is not set (i.e. is 0xFFFFFFFF). - * @retval ::NRF_ERROR_INVALID_PARAM if an invalid command is given. -*/ -SVCALL(SD_MBR_COMMAND, uint32_t, sd_mbr_command(sd_mbr_command_t* param)); - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // NRF_MBR_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error.h deleted file mode 100644 index 6badee9..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2014 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - - /** - @defgroup nrf_error SoftDevice Global Error Codes - @{ - - @brief Global Error definitions -*/ - -/* Header guard */ -#ifndef NRF_ERROR_H__ -#define NRF_ERROR_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/** @defgroup NRF_ERRORS_BASE Error Codes Base number definitions - * @{ */ -#define NRF_ERROR_BASE_NUM (0x0) ///< Global error base -#define NRF_ERROR_SDM_BASE_NUM (0x1000) ///< SDM error base -#define NRF_ERROR_SOC_BASE_NUM (0x2000) ///< SoC error base -#define NRF_ERROR_STK_BASE_NUM (0x3000) ///< STK error base -/** @} */ - -#define NRF_SUCCESS (NRF_ERROR_BASE_NUM + 0) ///< Successful command -#define NRF_ERROR_SVC_HANDLER_MISSING (NRF_ERROR_BASE_NUM + 1) ///< SVC handler is missing -#define NRF_ERROR_SOFTDEVICE_NOT_ENABLED (NRF_ERROR_BASE_NUM + 2) ///< SoftDevice has not been enabled -#define NRF_ERROR_INTERNAL (NRF_ERROR_BASE_NUM + 3) ///< Internal Error -#define NRF_ERROR_NO_MEM (NRF_ERROR_BASE_NUM + 4) ///< No Memory for operation -#define NRF_ERROR_NOT_FOUND (NRF_ERROR_BASE_NUM + 5) ///< Not found -#define NRF_ERROR_NOT_SUPPORTED (NRF_ERROR_BASE_NUM + 6) ///< Not supported -#define NRF_ERROR_INVALID_PARAM (NRF_ERROR_BASE_NUM + 7) ///< Invalid Parameter -#define NRF_ERROR_INVALID_STATE (NRF_ERROR_BASE_NUM + 8) ///< Invalid state, operation disallowed in this state -#define NRF_ERROR_INVALID_LENGTH (NRF_ERROR_BASE_NUM + 9) ///< Invalid Length -#define NRF_ERROR_INVALID_FLAGS (NRF_ERROR_BASE_NUM + 10) ///< Invalid Flags -#define NRF_ERROR_INVALID_DATA (NRF_ERROR_BASE_NUM + 11) ///< Invalid Data -#define NRF_ERROR_DATA_SIZE (NRF_ERROR_BASE_NUM + 12) ///< Invalid Data size -#define NRF_ERROR_TIMEOUT (NRF_ERROR_BASE_NUM + 13) ///< Operation timed out -#define NRF_ERROR_NULL (NRF_ERROR_BASE_NUM + 14) ///< Null Pointer -#define NRF_ERROR_FORBIDDEN (NRF_ERROR_BASE_NUM + 15) ///< Forbidden Operation -#define NRF_ERROR_INVALID_ADDR (NRF_ERROR_BASE_NUM + 16) ///< Bad Memory Address -#define NRF_ERROR_BUSY (NRF_ERROR_BASE_NUM + 17) ///< Busy -#define NRF_ERROR_CONN_COUNT (NRF_ERROR_BASE_NUM + 18) ///< Maximum connection count exceeded. -#define NRF_ERROR_RESOURCES (NRF_ERROR_BASE_NUM + 19) ///< Not enough resources for operation - -#ifdef __cplusplus -} -#endif -#endif // NRF_ERROR_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error_sdm.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error_sdm.h deleted file mode 100644 index 530959b..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error_sdm.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - - /** - @addtogroup nrf_sdm_api - @{ - @defgroup nrf_sdm_error SoftDevice Manager Error Codes - @{ - - @brief Error definitions for the SDM API -*/ - -/* Header guard */ -#ifndef NRF_ERROR_SDM_H__ -#define NRF_ERROR_SDM_H__ - -#include "nrf_error.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN (NRF_ERROR_SDM_BASE_NUM + 0) ///< Unknown LFCLK source. -#define NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION (NRF_ERROR_SDM_BASE_NUM + 1) ///< Incorrect interrupt configuration (can be caused by using illegal priority levels, or having enabled SoftDevice interrupts). -#define NRF_ERROR_SDM_INCORRECT_CLENR0 (NRF_ERROR_SDM_BASE_NUM + 2) ///< Incorrect CLENR0 (can be caused by erroneous SoftDevice flashing). - -#ifdef __cplusplus -} -#endif -#endif // NRF_ERROR_SDM_H__ - -/** - @} - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error_soc.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error_soc.h deleted file mode 100644 index 1e784b8..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_error_soc.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup nrf_soc_api - @{ - @defgroup nrf_soc_error SoC Library Error Codes - @{ - - @brief Error definitions for the SoC library - -*/ - -/* Header guard */ -#ifndef NRF_ERROR_SOC_H__ -#define NRF_ERROR_SOC_H__ - -#include "nrf_error.h" -#ifdef __cplusplus -extern "C" { -#endif - -/* Mutex Errors */ -#define NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN (NRF_ERROR_SOC_BASE_NUM + 0) ///< Mutex already taken - -/* NVIC errors */ -#define NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE (NRF_ERROR_SOC_BASE_NUM + 1) ///< NVIC interrupt not available -#define NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED (NRF_ERROR_SOC_BASE_NUM + 2) ///< NVIC interrupt priority not allowed -#define NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 3) ///< NVIC should not return - -/* Power errors */ -#define NRF_ERROR_SOC_POWER_MODE_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 4) ///< Power mode unknown -#define NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 5) ///< Power POF threshold unknown -#define NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 6) ///< Power off should not return - -/* Rand errors */ -#define NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES (NRF_ERROR_SOC_BASE_NUM + 7) ///< RAND not enough values - -/* PPI errors */ -#define NRF_ERROR_SOC_PPI_INVALID_CHANNEL (NRF_ERROR_SOC_BASE_NUM + 8) ///< Invalid PPI Channel -#define NRF_ERROR_SOC_PPI_INVALID_GROUP (NRF_ERROR_SOC_BASE_NUM + 9) ///< Invalid PPI Group - -#ifdef __cplusplus -} -#endif -#endif // NRF_ERROR_SOC_H__ -/** - @} - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_nvic.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_nvic.h deleted file mode 100644 index 1f79cc3..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_nvic.h +++ /dev/null @@ -1,491 +0,0 @@ -/* - * Copyright (c) 2016 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - * @defgroup nrf_nvic_api SoftDevice NVIC API - * @{ - * - * @note In order to use this module, the following code has to be added to a .c file: - * \code - * nrf_nvic_state_t nrf_nvic_state = {0}; - * \endcode - * - * @note Definitions and declarations starting with __ (double underscore) in this header file are - * not intended for direct use by the application. - * - * @brief APIs for the accessing NVIC when using a SoftDevice. - * - */ - -#ifndef NRF_NVIC_H__ -#define NRF_NVIC_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "nrf_error_soc.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup NRF_NVIC_DEFINES Defines - * @{ */ - -/**@defgroup NRF_NVIC_ISER_DEFINES SoftDevice NVIC internal definitions - * @{ */ - -#define __NRF_NVIC_NVMC_IRQn (30) /**< The peripheral ID of the NVMC. IRQ numbers are used to identify peripherals, but the NVMC doesn't have an IRQ number in the MDK. */ - -#define __NRF_NVIC_ISER_COUNT (2) /**< The number of ISER/ICER registers in the NVIC that are used. */ - -/**@brief Interrupt priority levels used by the SoftDevice. */ -#define __NRF_NVIC_SD_IRQ_PRIOS ((uint8_t)( \ - (1U << 0) /**< Priority level high .*/ \ - | (1U << 1) /**< Priority level medium. */ \ - | (1U << 4) /**< Priority level low. */ \ - )) - -/**@brief Interrupt priority levels available to the application. */ -#define __NRF_NVIC_APP_IRQ_PRIOS ((uint8_t)~__NRF_NVIC_SD_IRQ_PRIOS) - -/**@brief Interrupts used by the SoftDevice, with IRQn in the range 0-31. */ -#define __NRF_NVIC_SD_IRQS_0 ((uint32_t)( \ - (1U << POWER_CLOCK_IRQn) \ - | (1U << RADIO_IRQn) \ - | (1U << RTC0_IRQn) \ - | (1U << TIMER0_IRQn) \ - | (1U << RNG_IRQn) \ - | (1U << ECB_IRQn) \ - | (1U << CCM_AAR_IRQn) \ - | (1U << TEMP_IRQn) \ - | (1U << __NRF_NVIC_NVMC_IRQn) \ - | (1U << (uint32_t)SWI5_IRQn) \ - )) - -/**@brief Interrupts used by the SoftDevice, with IRQn in the range 32-63. */ -#define __NRF_NVIC_SD_IRQS_1 ((uint32_t)0) - -/**@brief Interrupts available for to application, with IRQn in the range 0-31. */ -#define __NRF_NVIC_APP_IRQS_0 (~__NRF_NVIC_SD_IRQS_0) - -/**@brief Interrupts available for to application, with IRQn in the range 32-63. */ -#define __NRF_NVIC_APP_IRQS_1 (~__NRF_NVIC_SD_IRQS_1) - -/**@} */ - -/**@} */ - -/**@addtogroup NRF_NVIC_VARIABLES Variables - * @{ */ - -/**@brief Type representing the state struct for the SoftDevice NVIC module. */ -typedef struct -{ - uint32_t volatile __irq_masks[__NRF_NVIC_ISER_COUNT]; /**< IRQs enabled by the application in the NVIC. */ - uint32_t volatile __cr_flag; /**< Non-zero if already in a critical region */ -} nrf_nvic_state_t; - -/**@brief Variable keeping the state for the SoftDevice NVIC module. This must be declared in an - * application source file. */ -extern nrf_nvic_state_t nrf_nvic_state; - -/**@} */ - -/**@addtogroup NRF_NVIC_INTERNAL_FUNCTIONS SoftDevice NVIC internal functions - * @{ */ - -/**@brief Disables IRQ interrupts globally, including the SoftDevice's interrupts. - * - * @retval The value of PRIMASK prior to disabling the interrupts. - */ -__STATIC_INLINE int __sd_nvic_irq_disable(void); - -/**@brief Enables IRQ interrupts globally, including the SoftDevice's interrupts. - */ -__STATIC_INLINE void __sd_nvic_irq_enable(void); - -/**@brief Checks if IRQn is available to application - * @param[in] IRQn IRQ to check - * - * @retval 1 (true) if the IRQ to check is available to the application - */ -__STATIC_INLINE uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn); - -/**@brief Checks if priority is available to application - * @param[in] priority priority to check - * - * @retval 1 (true) if the priority to check is available to the application - */ -__STATIC_INLINE uint32_t __sd_nvic_is_app_accessible_priority(uint32_t priority); - -/**@} */ - -/**@addtogroup NRF_NVIC_FUNCTIONS SoftDevice NVIC public functions - * @{ */ - -/**@brief Enable External Interrupt. - * @note Corresponds to NVIC_EnableIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_EnableIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt was enabled. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt has a priority not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn); - -/**@brief Disable External Interrupt. - * @note Corresponds to NVIC_DisableIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_DisableIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt was disabled. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn); - -/**@brief Get Pending Interrupt. - * @note Corresponds to NVIC_GetPendingIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_GetPendingIRQ documentation in CMSIS. - * @param[out] p_pending_irq Return value from NVIC_GetPendingIRQ. - * - * @retval ::NRF_SUCCESS The interrupt is available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq); - -/**@brief Set Pending Interrupt. - * @note Corresponds to NVIC_SetPendingIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_SetPendingIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt is set pending. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn); - -/**@brief Clear Pending Interrupt. - * @note Corresponds to NVIC_ClearPendingIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_ClearPendingIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt pending flag is cleared. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn); - -/**@brief Set Interrupt Priority. - * @note Corresponds to NVIC_SetPriority in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * @pre Priority is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_SetPriority documentation in CMSIS. - * @param[in] priority A valid IRQ priority for use by the application. - * - * @retval ::NRF_SUCCESS The interrupt and priority level is available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt priority is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority); - -/**@brief Get Interrupt Priority. - * @note Corresponds to NVIC_GetPriority in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_GetPriority documentation in CMSIS. - * @param[out] p_priority Return value from NVIC_GetPriority. - * - * @retval ::NRF_SUCCESS The interrupt priority is returned in p_priority. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE - IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority); - -/**@brief System Reset. - * @note Corresponds to NVIC_SystemReset in CMSIS. - * - * @retval ::NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN - */ -__STATIC_INLINE uint32_t sd_nvic_SystemReset(void); - -/**@brief Enter critical region. - * - * @post Application interrupts will be disabled. - * @note sd_nvic_critical_region_enter() and ::sd_nvic_critical_region_exit() must be called in matching pairs inside each - * execution context - * @sa sd_nvic_critical_region_exit - * - * @param[out] p_is_nested_critical_region If 1, the application is now in a nested critical region. - * - * @retval ::NRF_SUCCESS - */ -__STATIC_INLINE uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region); - -/**@brief Exit critical region. - * - * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter. - * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. - * - * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter. - * - * @retval ::NRF_SUCCESS - */ -__STATIC_INLINE uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region); - -/**@} */ - -#ifndef SUPPRESS_INLINE_IMPLEMENTATION - -__STATIC_INLINE int __sd_nvic_irq_disable(void) -{ - int pm = __get_PRIMASK(); - __disable_irq(); - return pm; -} - -__STATIC_INLINE void __sd_nvic_irq_enable(void) -{ - __enable_irq(); -} - -__STATIC_INLINE uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn) -{ - if (IRQn < 32) - { - return ((1UL<= (1 << __NVIC_PRIO_BITS)) - || (((1 << priority) & __NRF_NVIC_APP_IRQ_PRIOS) == 0) - ) - { - return 0; - } - return 1; -} - - -__STATIC_INLINE uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn) -{ - if (!__sd_nvic_app_accessible_irq(IRQn)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } - if (!__sd_nvic_is_app_accessible_priority(NVIC_GetPriority(IRQn))) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; - } - - if (nrf_nvic_state.__cr_flag) - { - nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] |= (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); - } - else - { - NVIC_EnableIRQ(IRQn); - } - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn) -{ - if (!__sd_nvic_app_accessible_irq(IRQn)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } - - if (nrf_nvic_state.__cr_flag) - { - nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] &= ~(1UL << ((uint32_t)(IRQn) & 0x1F)); - } - else - { - NVIC_DisableIRQ(IRQn); - } - - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - *p_pending_irq = NVIC_GetPendingIRQ(IRQn); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - NVIC_SetPendingIRQ(IRQn); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - NVIC_ClearPendingIRQ(IRQn); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if (!__sd_nvic_app_accessible_irq(IRQn)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } - - if (!__sd_nvic_is_app_accessible_priority(priority)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; - } - - NVIC_SetPriority(IRQn, (uint32_t)priority); - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - *p_priority = (NVIC_GetPriority(IRQn) & 0xFF); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_SystemReset(void) -{ - NVIC_SystemReset(); - return NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN; -} - -__STATIC_INLINE uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region) -{ - int was_masked = __sd_nvic_irq_disable(); - if (!nrf_nvic_state.__cr_flag) - { - nrf_nvic_state.__cr_flag = 1; - nrf_nvic_state.__irq_masks[0] = ( NVIC->ICER[0] & __NRF_NVIC_APP_IRQS_0 ); - NVIC->ICER[0] = __NRF_NVIC_APP_IRQS_0; - nrf_nvic_state.__irq_masks[1] = ( NVIC->ICER[1] & __NRF_NVIC_APP_IRQS_1 ); - NVIC->ICER[1] = __NRF_NVIC_APP_IRQS_1; - *p_is_nested_critical_region = 0; - } - else - { - *p_is_nested_critical_region = 1; - } - if (!was_masked) - { - __sd_nvic_irq_enable(); - } - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region) -{ - if (nrf_nvic_state.__cr_flag && (is_nested_critical_region == 0)) - { - int was_masked = __sd_nvic_irq_disable(); - NVIC->ISER[0] = nrf_nvic_state.__irq_masks[0]; - NVIC->ISER[1] = nrf_nvic_state.__irq_masks[1]; - nrf_nvic_state.__cr_flag = 0; - if (!was_masked) - { - __sd_nvic_irq_enable(); - } - } - - return NRF_SUCCESS; -} - -#endif /* SUPPRESS_INLINE_IMPLEMENTATION */ - -#ifdef __cplusplus -} -#endif - -#endif // NRF_NVIC_H__ - -/**@} */ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_sdm.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_sdm.h deleted file mode 100644 index df42edc..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_sdm.h +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @defgroup nrf_sdm_api SoftDevice Manager API - @{ - - @brief APIs for SoftDevice management. - -*/ - -#ifndef NRF_SDM_H__ -#define NRF_SDM_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "nrf_error_sdm.h" -#include "nrf_soc.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup NRF_SDM_DEFINES Defines - * @{ */ -#ifdef NRFSOC_DOXYGEN -/// Declared in nrf_mbr.h -#define MBR_SIZE 0 -#warning test -#endif - -/** @brief The major version for the SoftDevice binary distributed with this header file. */ -#define SD_MAJOR_VERSION (6) - -/** @brief The minor version for the SoftDevice binary distributed with this header file. */ -#define SD_MINOR_VERSION (1) - -/** @brief The bugfix version for the SoftDevice binary distributed with this header file. */ -#define SD_BUGFIX_VERSION (0) - -/** @brief The SoftDevice variant of this firmware. */ -#define SD_VARIANT_ID 132 - -/** @brief The full version number for the SoftDevice binary this header file was distributed - * with, as a decimal number in the form Mmmmbbb, where: - * - M is major version (one or more digits) - * - mmm is minor version (three digits) - * - bbb is bugfix version (three digits). */ -#define SD_VERSION (SD_MAJOR_VERSION * 1000000 + SD_MINOR_VERSION * 1000 + SD_BUGFIX_VERSION) - -/** @brief SoftDevice Manager SVC Base number. */ -#define SDM_SVC_BASE 0x10 - -/** @brief SoftDevice unique string size in bytes. */ -#define SD_UNIQUE_STR_SIZE 20 - -/** @brief Invalid info field. Returned when an info field does not exist. */ -#define SDM_INFO_FIELD_INVALID (0) - -/** @brief Defines the SoftDevice Information Structure location (address) as an offset from -the start of the SoftDevice (without MBR)*/ -#define SOFTDEVICE_INFO_STRUCT_OFFSET (0x2000) - -/** @brief Defines the absolute SoftDevice Information Structure location (address) when the - * SoftDevice is installed just above the MBR (the usual case). */ -#define SOFTDEVICE_INFO_STRUCT_ADDRESS (SOFTDEVICE_INFO_STRUCT_OFFSET + MBR_SIZE) - -/** @brief Defines the offset for the SoftDevice Information Structure size value relative to the - * SoftDevice base address. The size value is of type uint8_t. */ -#define SD_INFO_STRUCT_SIZE_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET) - -/** @brief Defines the offset for the SoftDevice size value relative to the SoftDevice base address. - * The size value is of type uint32_t. */ -#define SD_SIZE_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x08) - -/** @brief Defines the offset for FWID value relative to the SoftDevice base address. The FWID value - * is of type uint16_t. */ -#define SD_FWID_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x0C) - -/** @brief Defines the offset for the SoftDevice ID relative to the SoftDevice base address. The ID - * is of type uint32_t. */ -#define SD_ID_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x10) - -/** @brief Defines the offset for the SoftDevice version relative to the SoftDevice base address in - * the same format as @ref SD_VERSION, stored as an uint32_t. */ -#define SD_VERSION_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x14) - -/** @brief Defines the offset for the SoftDevice unique string relative to the SoftDevice base address. - * The SD_UNIQUE_STR is stored as an array of uint8_t. The size of array is @ref SD_UNIQUE_STR_SIZE. - */ -#define SD_UNIQUE_STR_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x18) - -/** @brief Defines a macro for retrieving the actual SoftDevice Information Structure size value - * from a given base address. Use @ref MBR_SIZE as the argument when the SoftDevice is - * installed just above the MBR (the usual case). */ -#define SD_INFO_STRUCT_SIZE_GET(baseaddr) (*((uint8_t *) ((baseaddr) + SD_INFO_STRUCT_SIZE_OFFSET))) - -/** @brief Defines a macro for retrieving the actual SoftDevice size value from a given base - * address. Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above - * the MBR (the usual case). */ -#define SD_SIZE_GET(baseaddr) (*((uint32_t *) ((baseaddr) + SD_SIZE_OFFSET))) - -/** @brief Defines the amount of flash that is used by the SoftDevice. - * Add @ref MBR_SIZE to find the first available flash address when the SoftDevice is installed - * just above the MBR (the usual case). - */ -#define SD_FLASH_SIZE 0x25000 - -/** @brief Defines a macro for retrieving the actual FWID value from a given base address. Use - * @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the usual - * case). */ -#define SD_FWID_GET(baseaddr) (*((uint16_t *) ((baseaddr) + SD_FWID_OFFSET))) - -/** @brief Defines a macro for retrieving the actual SoftDevice ID from a given base address. Use - * @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the - * usual case). */ -#define SD_ID_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_ID_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ - ? (*((uint32_t *) ((baseaddr) + SD_ID_OFFSET))) : SDM_INFO_FIELD_INVALID) - -/** @brief Defines a macro for retrieving the actual SoftDevice version from a given base address. - * Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR - * (the usual case). */ -#define SD_VERSION_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_VERSION_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ - ? (*((uint32_t *) ((baseaddr) + SD_VERSION_OFFSET))) : SDM_INFO_FIELD_INVALID) - -/** @brief Defines a macro for retrieving the address of SoftDevice unique str based on a given base address. - * Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR - * (the usual case). */ -#define SD_UNIQUE_STR_ADDR_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_UNIQUE_STR_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ - ? (((uint8_t *) ((baseaddr) + SD_UNIQUE_STR_OFFSET))) : SDM_INFO_FIELD_INVALID) - -/**@defgroup NRF_FAULT_ID_RANGES Fault ID ranges - * @{ */ -#define NRF_FAULT_ID_SD_RANGE_START 0x00000000 /**< SoftDevice ID range start. */ -#define NRF_FAULT_ID_APP_RANGE_START 0x00001000 /**< Application ID range start. */ -/**@} */ - -/**@defgroup NRF_FAULT_IDS Fault ID types - * @{ */ -#define NRF_FAULT_ID_SD_ASSERT (NRF_FAULT_ID_SD_RANGE_START + 1) /**< SoftDevice assertion. The info parameter is reserved for future used. */ -#define NRF_FAULT_ID_APP_MEMACC (NRF_FAULT_ID_APP_RANGE_START + 1) /**< Application invalid memory access. The info parameter will contain 0x00000000, - in case of SoftDevice RAM access violation. In case of SoftDevice peripheral - register violation the info parameter will contain the sub-region number of - PREGION[0], on whose address range the disallowed write access caused the - memory access fault. */ -/**@} */ - -/** @} */ - -/** @addtogroup NRF_SDM_ENUMS Enumerations - * @{ */ - -/**@brief nRF SoftDevice Manager API SVC numbers. */ -enum NRF_SD_SVCS -{ - SD_SOFTDEVICE_ENABLE = SDM_SVC_BASE, /**< ::sd_softdevice_enable */ - SD_SOFTDEVICE_DISABLE, /**< ::sd_softdevice_disable */ - SD_SOFTDEVICE_IS_ENABLED, /**< ::sd_softdevice_is_enabled */ - SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, /**< ::sd_softdevice_vector_table_base_set */ - SVC_SDM_LAST /**< Placeholder for last SDM SVC */ -}; - -/** @} */ - -/** @addtogroup NRF_SDM_DEFINES Defines - * @{ */ - -/**@defgroup NRF_CLOCK_LF_ACCURACY Clock accuracy - * @{ */ - -#define NRF_CLOCK_LF_ACCURACY_250_PPM (0) /**< Default: 250 ppm */ -#define NRF_CLOCK_LF_ACCURACY_500_PPM (1) /**< 500 ppm */ -#define NRF_CLOCK_LF_ACCURACY_150_PPM (2) /**< 150 ppm */ -#define NRF_CLOCK_LF_ACCURACY_100_PPM (3) /**< 100 ppm */ -#define NRF_CLOCK_LF_ACCURACY_75_PPM (4) /**< 75 ppm */ -#define NRF_CLOCK_LF_ACCURACY_50_PPM (5) /**< 50 ppm */ -#define NRF_CLOCK_LF_ACCURACY_30_PPM (6) /**< 30 ppm */ -#define NRF_CLOCK_LF_ACCURACY_20_PPM (7) /**< 20 ppm */ -#define NRF_CLOCK_LF_ACCURACY_10_PPM (8) /**< 10 ppm */ -#define NRF_CLOCK_LF_ACCURACY_5_PPM (9) /**< 5 ppm */ -#define NRF_CLOCK_LF_ACCURACY_2_PPM (10) /**< 2 ppm */ -#define NRF_CLOCK_LF_ACCURACY_1_PPM (11) /**< 1 ppm */ - -/** @} */ - -/**@defgroup NRF_CLOCK_LF_SRC Possible LFCLK oscillator sources - * @{ */ - -#define NRF_CLOCK_LF_SRC_RC (0) /**< LFCLK RC oscillator. */ -#define NRF_CLOCK_LF_SRC_XTAL (1) /**< LFCLK crystal oscillator. */ -#define NRF_CLOCK_LF_SRC_SYNTH (2) /**< LFCLK Synthesized from HFCLK. */ - -/** @} */ - -/** @} */ - -/** @addtogroup NRF_SDM_TYPES Types - * @{ */ - -/**@brief Type representing LFCLK oscillator source. */ -typedef struct -{ - uint8_t source; /**< LF oscillator clock source, see @ref NRF_CLOCK_LF_SRC. */ - uint8_t rc_ctiv; /**< Only for ::NRF_CLOCK_LF_SRC_RC: Calibration timer interval in 1/4 second - units (nRF52: 1-32). - @note To avoid excessive clock drift, 0.5 degrees Celsius is the - maximum temperature change allowed in one calibration timer - interval. The interval should be selected to ensure this. - - @note Must be 0 if source is not ::NRF_CLOCK_LF_SRC_RC. */ - uint8_t rc_temp_ctiv; /**< Only for ::NRF_CLOCK_LF_SRC_RC: How often (in number of calibration - intervals) the RC oscillator shall be calibrated if the temperature - hasn't changed. - 0: Always calibrate even if the temperature hasn't changed. - 1: Only calibrate if the temperature has changed (legacy - nRF51 only). - 2-33: Check the temperature and only calibrate if it has changed, - however calibration will take place every rc_temp_ctiv - intervals in any case. - - @note Must be 0 if source is not ::NRF_CLOCK_LF_SRC_RC. - - @note For nRF52, the application must ensure calibration at least once - every 8 seconds to ensure +/-500 ppm clock stability. The - recommended configuration for ::NRF_CLOCK_LF_SRC_RC on nRF52 is - rc_ctiv=16 and rc_temp_ctiv=2. This will ensure calibration at - least once every 8 seconds and for temperature changes of 0.5 - degrees Celsius every 4 seconds. See the Product Specification - for the nRF52 device being used for more information.*/ - uint8_t accuracy; /**< External clock accuracy used in the LL to compute timing - windows, see @ref NRF_CLOCK_LF_ACCURACY.*/ -} nrf_clock_lf_cfg_t; - -/**@brief Fault Handler type. - * - * When certain unrecoverable errors occur within the application or SoftDevice the fault handler will be called back. - * The protocol stack will be in an undefined state when this happens and the only way to recover will be to - * perform a reset, using e.g. CMSIS NVIC_SystemReset(). - * If the application returns from the fault handler the SoftDevice will call NVIC_SystemReset(). - * - * @note This callback is executed in HardFault context, thus SVC functions cannot be called from the fault callback. - * - * @param[in] id Fault identifier. See @ref NRF_FAULT_IDS. - * @param[in] pc The program counter of the instruction that triggered the fault. - * @param[in] info Optional additional information regarding the fault. Refer to each Fault identifier for details. - * - * @note When id is set to @ref NRF_FAULT_ID_APP_MEMACC, pc will contain the address of the instruction being executed at the time when - * the fault is detected by the CPU. The CPU program counter may have advanced up to 2 instructions (no branching) after the one that triggered the fault. - */ -typedef void (*nrf_fault_handler_t)(uint32_t id, uint32_t pc, uint32_t info); - -/** @} */ - -/** @addtogroup NRF_SDM_FUNCTIONS Functions - * @{ */ - -/**@brief Enables the SoftDevice and by extension the protocol stack. - * - * @note Some care must be taken if a low frequency clock source is already running when calling this function: - * If the LF clock has a different source then the one currently running, it will be stopped. Then, the new - * clock source will be started. - * - * @note This function has no effect when returning with an error. - * - * @post If return code is ::NRF_SUCCESS - * - SoC library and protocol stack APIs are made available. - * - A portion of RAM will be unavailable (see relevant SDS documentation). - * - Some peripherals will be unavailable or available only through the SoC API (see relevant SDS documentation). - * - Interrupts will not arrive from protected peripherals or interrupts. - * - nrf_nvic_ functions must be used instead of CMSIS NVIC_ functions for reliable usage of the SoftDevice. - * - Interrupt latency may be affected by the SoftDevice (see relevant SDS documentation). - * - Chosen low frequency clock source will be running. - * - * @param p_clock_lf_cfg Low frequency clock source and accuracy. - If NULL the clock will be configured as an RC source with rc_ctiv = 16 and .rc_temp_ctiv = 2 - In the case of XTAL source, the PPM accuracy of the chosen clock source must be greater than or equal to the actual characteristics of your XTAL clock. - * @param fault_handler Callback to be invoked in case of fault, cannot be NULL. - * - * @retval ::NRF_SUCCESS - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE SoftDevice is already enabled, and the clock source and fault handler cannot be updated. - * @retval ::NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION SoftDevice interrupt is already enabled, or an enabled interrupt has an illegal priority level. - * @retval ::NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN Unknown low frequency clock source selected. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid clock source configuration supplied in p_clock_lf_cfg. - */ -SVCALL(SD_SOFTDEVICE_ENABLE, uint32_t, sd_softdevice_enable(nrf_clock_lf_cfg_t const * p_clock_lf_cfg, nrf_fault_handler_t fault_handler)); - - -/**@brief Disables the SoftDevice and by extension the protocol stack. - * - * Idempotent function to disable the SoftDevice. - * - * @post SoC library and protocol stack APIs are made unavailable. - * @post All interrupts that was protected by the SoftDevice will be disabled and initialized to priority 0 (highest). - * @post All peripherals used by the SoftDevice will be reset to default values. - * @post All of RAM become available. - * @post All interrupts are forwarded to the application. - * @post LFCLK source chosen in ::sd_softdevice_enable will be left running. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_DISABLE, uint32_t, sd_softdevice_disable(void)); - -/**@brief Check if the SoftDevice is enabled. - * - * @param[out] p_softdevice_enabled If the SoftDevice is enabled: 1 else 0. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_IS_ENABLED, uint32_t, sd_softdevice_is_enabled(uint8_t * p_softdevice_enabled)); - -/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the SoftDevice - * - * This function is only intended to be called when a bootloader is enabled. - * - * @param[in] address The base address of the interrupt vector table for forwarded interrupts. - - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, uint32_t, sd_softdevice_vector_table_base_set(uint32_t address)); - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // NRF_SDM_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_soc.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_soc.h deleted file mode 100644 index d599576..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_soc.h +++ /dev/null @@ -1,1007 +0,0 @@ -/* - * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - * @defgroup nrf_soc_api SoC Library API - * @{ - * - * @brief APIs for the SoC library. - * - */ - -#ifndef NRF_SOC_H__ -#define NRF_SOC_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "nrf_error_soc.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup NRF_SOC_DEFINES Defines - * @{ */ - -/**@brief The number of the lowest SVC number reserved for the SoC library. */ -#define SOC_SVC_BASE (0x20) /**< Base value for SVCs that are available when the SoftDevice is disabled. */ -#define SOC_SVC_BASE_NOT_AVAILABLE (0x2C) /**< Base value for SVCs that are not available when the SoftDevice is disabled. */ - -/**@brief Guaranteed time for application to process radio inactive notification. */ -#define NRF_RADIO_NOTIFICATION_INACTIVE_GUARANTEED_TIME_US (62) - -/**@brief The minimum allowed timeslot extension time. */ -#define NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US (200) - -/**@brief The maximum processing time to handle a timeslot extension. */ -#define NRF_RADIO_MAX_EXTENSION_PROCESSING_TIME_US (17) - -/**@brief The latest time before the end of a timeslot the timeslot can be extended. */ -#define NRF_RADIO_MIN_EXTENSION_MARGIN_US (79) - -#define SOC_ECB_KEY_LENGTH (16) /**< ECB key length. */ -#define SOC_ECB_CLEARTEXT_LENGTH (16) /**< ECB cleartext length. */ -#define SOC_ECB_CIPHERTEXT_LENGTH (SOC_ECB_CLEARTEXT_LENGTH) /**< ECB ciphertext length. */ - -#define SD_EVT_IRQn (SWI2_IRQn) /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */ -#define SD_EVT_IRQHandler (SWI2_IRQHandler) /**< SoftDevice Event IRQ handler. Used for both protocol events and SoC events. - The default interrupt priority for this handler is set to 6 */ -#define RADIO_NOTIFICATION_IRQn (SWI1_IRQn) /**< The radio notification IRQ number. */ -#define RADIO_NOTIFICATION_IRQHandler (SWI1_IRQHandler) /**< The radio notification IRQ handler. - The default interrupt priority for this handler is set to 6 */ -#define NRF_RADIO_LENGTH_MIN_US (100) /**< The shortest allowed radio timeslot, in microseconds. */ -#define NRF_RADIO_LENGTH_MAX_US (100000) /**< The longest allowed radio timeslot, in microseconds. */ - -#define NRF_RADIO_DISTANCE_MAX_US (128000000UL - 1UL) /**< The longest timeslot distance, in microseconds, allowed for the distance parameter (see @ref nrf_radio_request_normal_t) in the request. */ - -#define NRF_RADIO_EARLIEST_TIMEOUT_MAX_US (128000000UL - 1UL) /**< The longest timeout, in microseconds, allowed when requesting the earliest possible timeslot. */ - -#define NRF_RADIO_START_JITTER_US (2) /**< The maximum jitter in @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START relative to the requested start time. */ - -/**@brief Mask of PPI channels reserved by the SoftDevice when the SoftDevice is disabled. */ -#define NRF_SOC_SD_PPI_CHANNELS_SD_DISABLED_MSK ((uint32_t)(0)) - -/**@brief Mask of PPI channels reserved by the SoftDevice when the SoftDevice is enabled. */ -#define NRF_SOC_SD_PPI_CHANNELS_SD_ENABLED_MSK ((uint32_t)( \ - (1U << 17) \ - | (1U << 18) \ - | (1U << 19) \ - | (1U << 20) \ - | (1U << 21) \ - | (1U << 22) \ - | (1U << 23) \ - | (1U << 24) \ - | (1U << 25) \ - | (1U << 26) \ - | (1U << 27) \ - | (1U << 28) \ - | (1U << 29) \ - | (1U << 30) \ - | (1U << 31) \ - )) - -/**@brief Mask of PPI channels available to the application when the SoftDevice is disabled. */ -#define NRF_SOC_APP_PPI_CHANNELS_SD_DISABLED_MSK (~NRF_SOC_SD_PPI_CHANNELS_SD_DISABLED_MSK) - -/**@brief Mask of PPI channels available to the application when the SoftDevice is enabled. */ -#define NRF_SOC_APP_PPI_CHANNELS_SD_ENABLED_MSK (~NRF_SOC_SD_PPI_CHANNELS_SD_ENABLED_MSK) - -/**@brief Mask of PPI groups reserved by the SoftDevice when the SoftDevice is disabled. */ -#define NRF_SOC_SD_PPI_GROUPS_SD_DISABLED_MSK ((uint32_t)(0)) - -/**@brief Mask of PPI groups reserved by the SoftDevice when the SoftDevice is enabled. */ -#define NRF_SOC_SD_PPI_GROUPS_SD_ENABLED_MSK ((uint32_t)( \ - (1U << 4) \ - | (1U << 5) \ - )) - -/**@brief Mask of PPI groups available to the application when the SoftDevice is disabled. */ -#define NRF_SOC_APP_PPI_GROUPS_SD_DISABLED_MSK (~NRF_SOC_SD_PPI_GROUPS_SD_DISABLED_MSK) - -/**@brief Mask of PPI groups available to the application when the SoftDevice is enabled. */ -#define NRF_SOC_APP_PPI_GROUPS_SD_ENABLED_MSK (~NRF_SOC_SD_PPI_GROUPS_SD_ENABLED_MSK) - -/**@} */ - -/**@addtogroup NRF_SOC_ENUMS Enumerations - * @{ */ - -/**@brief The SVC numbers used by the SVC functions in the SoC library. */ -enum NRF_SOC_SVCS -{ - SD_PPI_CHANNEL_ENABLE_GET = SOC_SVC_BASE, - SD_PPI_CHANNEL_ENABLE_SET = SOC_SVC_BASE + 1, - SD_PPI_CHANNEL_ENABLE_CLR = SOC_SVC_BASE + 2, - SD_PPI_CHANNEL_ASSIGN = SOC_SVC_BASE + 3, - SD_PPI_GROUP_TASK_ENABLE = SOC_SVC_BASE + 4, - SD_PPI_GROUP_TASK_DISABLE = SOC_SVC_BASE + 5, - SD_PPI_GROUP_ASSIGN = SOC_SVC_BASE + 6, - SD_PPI_GROUP_GET = SOC_SVC_BASE + 7, - SD_FLASH_PAGE_ERASE = SOC_SVC_BASE + 8, - SD_FLASH_WRITE = SOC_SVC_BASE + 9, - SD_FLASH_PROTECT = SOC_SVC_BASE + 10, - SD_PROTECTED_REGISTER_WRITE = SOC_SVC_BASE + 11, - SD_MUTEX_NEW = SOC_SVC_BASE_NOT_AVAILABLE, - SD_MUTEX_ACQUIRE = SOC_SVC_BASE_NOT_AVAILABLE + 1, - SD_MUTEX_RELEASE = SOC_SVC_BASE_NOT_AVAILABLE + 2, - SD_RAND_APPLICATION_POOL_CAPACITY_GET = SOC_SVC_BASE_NOT_AVAILABLE + 3, - SD_RAND_APPLICATION_BYTES_AVAILABLE_GET = SOC_SVC_BASE_NOT_AVAILABLE + 4, - SD_RAND_APPLICATION_VECTOR_GET = SOC_SVC_BASE_NOT_AVAILABLE + 5, - SD_POWER_MODE_SET = SOC_SVC_BASE_NOT_AVAILABLE + 6, - SD_POWER_SYSTEM_OFF = SOC_SVC_BASE_NOT_AVAILABLE + 7, - SD_POWER_RESET_REASON_GET = SOC_SVC_BASE_NOT_AVAILABLE + 8, - SD_POWER_RESET_REASON_CLR = SOC_SVC_BASE_NOT_AVAILABLE + 9, - SD_POWER_POF_ENABLE = SOC_SVC_BASE_NOT_AVAILABLE + 10, - SD_POWER_POF_THRESHOLD_SET = SOC_SVC_BASE_NOT_AVAILABLE + 11, - SD_POWER_RAM_POWER_SET = SOC_SVC_BASE_NOT_AVAILABLE + 13, - SD_POWER_RAM_POWER_CLR = SOC_SVC_BASE_NOT_AVAILABLE + 14, - SD_POWER_RAM_POWER_GET = SOC_SVC_BASE_NOT_AVAILABLE + 15, - SD_POWER_GPREGRET_SET = SOC_SVC_BASE_NOT_AVAILABLE + 16, - SD_POWER_GPREGRET_CLR = SOC_SVC_BASE_NOT_AVAILABLE + 17, - SD_POWER_GPREGRET_GET = SOC_SVC_BASE_NOT_AVAILABLE + 18, - SD_POWER_DCDC_MODE_SET = SOC_SVC_BASE_NOT_AVAILABLE + 19, - SD_APP_EVT_WAIT = SOC_SVC_BASE_NOT_AVAILABLE + 21, - SD_CLOCK_HFCLK_REQUEST = SOC_SVC_BASE_NOT_AVAILABLE + 22, - SD_CLOCK_HFCLK_RELEASE = SOC_SVC_BASE_NOT_AVAILABLE + 23, - SD_CLOCK_HFCLK_IS_RUNNING = SOC_SVC_BASE_NOT_AVAILABLE + 24, - SD_RADIO_NOTIFICATION_CFG_SET = SOC_SVC_BASE_NOT_AVAILABLE + 25, - SD_ECB_BLOCK_ENCRYPT = SOC_SVC_BASE_NOT_AVAILABLE + 26, - SD_ECB_BLOCKS_ENCRYPT = SOC_SVC_BASE_NOT_AVAILABLE + 27, - SD_RADIO_SESSION_OPEN = SOC_SVC_BASE_NOT_AVAILABLE + 28, - SD_RADIO_SESSION_CLOSE = SOC_SVC_BASE_NOT_AVAILABLE + 29, - SD_RADIO_REQUEST = SOC_SVC_BASE_NOT_AVAILABLE + 30, - SD_EVT_GET = SOC_SVC_BASE_NOT_AVAILABLE + 31, - SD_TEMP_GET = SOC_SVC_BASE_NOT_AVAILABLE + 32, - SVC_SOC_LAST = SOC_SVC_BASE_NOT_AVAILABLE + 37 -}; - -/**@brief Possible values of a ::nrf_mutex_t. */ -enum NRF_MUTEX_VALUES -{ - NRF_MUTEX_FREE, - NRF_MUTEX_TAKEN -}; - -/**@brief Power modes. */ -enum NRF_POWER_MODES -{ - NRF_POWER_MODE_CONSTLAT, /**< Constant latency mode. See power management in the reference manual. */ - NRF_POWER_MODE_LOWPWR /**< Low power mode. See power management in the reference manual. */ -}; - - -/**@brief Power failure thresholds */ -enum NRF_POWER_THRESHOLDS -{ - NRF_POWER_THRESHOLD_V17 = 4UL, /**< 1.7 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V18, /**< 1.8 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V19, /**< 1.9 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V20, /**< 2.0 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V21, /**< 2.1 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V22, /**< 2.2 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V23, /**< 2.3 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V24, /**< 2.4 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V25, /**< 2.5 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V26, /**< 2.6 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V27, /**< 2.7 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V28 /**< 2.8 Volts power failure threshold. */ -}; - - - -/**@brief DC/DC converter modes. */ -enum NRF_POWER_DCDC_MODES -{ - NRF_POWER_DCDC_DISABLE, /**< The DCDC is disabled. */ - NRF_POWER_DCDC_ENABLE /**< The DCDC is enabled. */ -}; - -/**@brief Radio notification distances. */ -enum NRF_RADIO_NOTIFICATION_DISTANCES -{ - NRF_RADIO_NOTIFICATION_DISTANCE_NONE = 0, /**< The event does not have a notification. */ - NRF_RADIO_NOTIFICATION_DISTANCE_800US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_1740US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_2680US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_3620US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_4560US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_5500US /**< The distance from the active notification to start of radio activity. */ -}; - - -/**@brief Radio notification types. */ -enum NRF_RADIO_NOTIFICATION_TYPES -{ - NRF_RADIO_NOTIFICATION_TYPE_NONE = 0, /**< The event does not have a radio notification signal. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_ACTIVE, /**< Using interrupt for notification when the radio will be enabled. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE, /**< Using interrupt for notification when the radio has been disabled. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_BOTH, /**< Using interrupt for notification both when the radio will be enabled and disabled. */ -}; - -/**@brief The Radio signal callback types. */ -enum NRF_RADIO_CALLBACK_SIGNAL_TYPE -{ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_START, /**< This signal indicates the start of the radio timeslot. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0, /**< This signal indicates the NRF_TIMER0 interrupt. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO, /**< This signal indicates the NRF_RADIO interrupt. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_FAILED, /**< This signal indicates extend action failed. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_SUCCEEDED /**< This signal indicates extend action succeeded. */ -}; - -/**@brief The actions requested by the signal callback. - * - * This code gives the SOC instructions about what action to take when the signal callback has - * returned. - */ -enum NRF_RADIO_SIGNAL_CALLBACK_ACTION -{ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE, /**< Return without action. */ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND, /**< Request an extension of the current - timeslot. Maximum execution time for this action: - @ref NRF_RADIO_MAX_EXTENSION_PROCESSING_TIME_US. - This action must be started at least - @ref NRF_RADIO_MIN_EXTENSION_MARGIN_US before - the end of the timeslot. */ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_END, /**< End the current radio timeslot. */ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END /**< Request a new radio timeslot and end the current timeslot. */ -}; - -/**@brief Radio timeslot high frequency clock source configuration. */ -enum NRF_RADIO_HFCLK_CFG -{ - NRF_RADIO_HFCLK_CFG_XTAL_GUARANTEED, /**< The SoftDevice will guarantee that the high frequency clock source is the - external crystal for the whole duration of the timeslot. This should be the - preferred option for events that use the radio or require high timing accuracy. - @note The SoftDevice will automatically turn on and off the external crystal, - at the beginning and end of the timeslot, respectively. The crystal may also - intentionally be left running after the timeslot, in cases where it is needed - by the SoftDevice shortly after the end of the timeslot. */ - NRF_RADIO_HFCLK_CFG_NO_GUARANTEE /**< This configuration allows for earlier and tighter scheduling of timeslots. - The RC oscillator may be the clock source in part or for the whole duration of the timeslot. - The RC oscillator's accuracy must therefore be taken into consideration. - @note If the application will use the radio peripheral in timeslots with this configuration, - it must make sure that the crystal is running and stable before starting the radio. */ -}; - -/**@brief Radio timeslot priorities. */ -enum NRF_RADIO_PRIORITY -{ - NRF_RADIO_PRIORITY_HIGH, /**< High (equal priority as the normal connection priority of the SoftDevice stack(s)). */ - NRF_RADIO_PRIORITY_NORMAL, /**< Normal (equal priority as the priority of secondary activities of the SoftDevice stack(s)). */ -}; - -/**@brief Radio timeslot request type. */ -enum NRF_RADIO_REQUEST_TYPE -{ - NRF_RADIO_REQ_TYPE_EARLIEST, /**< Request radio timeslot as early as possible. This should always be used for the first request in a session. */ - NRF_RADIO_REQ_TYPE_NORMAL /**< Normal radio timeslot request. */ -}; - -/**@brief SoC Events. */ -enum NRF_SOC_EVTS -{ - NRF_EVT_HFCLKSTARTED, /**< Event indicating that the HFCLK has started. */ - NRF_EVT_POWER_FAILURE_WARNING, /**< Event indicating that a power failure warning has occurred. */ - NRF_EVT_FLASH_OPERATION_SUCCESS, /**< Event indicating that the ongoing flash operation has completed successfully. */ - NRF_EVT_FLASH_OPERATION_ERROR, /**< Event indicating that the ongoing flash operation has timed out with an error. */ - NRF_EVT_RADIO_BLOCKED, /**< Event indicating that a radio timeslot was blocked. */ - NRF_EVT_RADIO_CANCELED, /**< Event indicating that a radio timeslot was canceled by SoftDevice. */ - NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN, /**< Event indicating that a radio timeslot signal callback handler return was invalid. */ - NRF_EVT_RADIO_SESSION_IDLE, /**< Event indicating that a radio timeslot session is idle. */ - NRF_EVT_RADIO_SESSION_CLOSED, /**< Event indicating that a radio timeslot session is closed. */ - NRF_EVT_NUMBER_OF_EVTS -}; - -/**@} */ - - -/**@addtogroup NRF_SOC_STRUCTURES Structures - * @{ */ - -/**@brief Represents a mutex for use with the nrf_mutex functions. - * @note Accessing the value directly is not safe, use the mutex functions! - */ -typedef volatile uint8_t nrf_mutex_t; - -/**@brief Parameters for a request for a timeslot as early as possible. */ -typedef struct -{ - uint8_t hfclk; /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */ - uint8_t priority; /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */ - uint32_t length_us; /**< The radio timeslot length (in the range 100 to 100,000] microseconds). */ - uint32_t timeout_us; /**< Longest acceptable delay until the start of the requested timeslot (up to @ref NRF_RADIO_EARLIEST_TIMEOUT_MAX_US microseconds). */ -} nrf_radio_request_earliest_t; - -/**@brief Parameters for a normal radio timeslot request. */ -typedef struct -{ - uint8_t hfclk; /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */ - uint8_t priority; /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */ - uint32_t distance_us; /**< Distance from the start of the previous radio timeslot (up to @ref NRF_RADIO_DISTANCE_MAX_US microseconds). */ - uint32_t length_us; /**< The radio timeslot length (in the range [100..100,000] microseconds). */ -} nrf_radio_request_normal_t; - -/**@brief Radio timeslot request parameters. */ -typedef struct -{ - uint8_t request_type; /**< Type of request, see @ref NRF_RADIO_REQUEST_TYPE. */ - union - { - nrf_radio_request_earliest_t earliest; /**< Parameters for requesting a radio timeslot as early as possible. */ - nrf_radio_request_normal_t normal; /**< Parameters for requesting a normal radio timeslot. */ - } params; /**< Parameter union. */ -} nrf_radio_request_t; - -/**@brief Return parameters of the radio timeslot signal callback. */ -typedef struct -{ - uint8_t callback_action; /**< The action requested by the application when returning from the signal callback, see @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION. */ - union - { - struct - { - nrf_radio_request_t * p_next; /**< The request parameters for the next radio timeslot. */ - } request; /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END. */ - struct - { - uint32_t length_us; /**< Requested extension of the radio timeslot duration (microseconds) (for minimum time see @ref NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US). */ - } extend; /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND. */ - } params; /**< Parameter union. */ -} nrf_radio_signal_callback_return_param_t; - -/**@brief The radio timeslot signal callback type. - * - * @note In case of invalid return parameters, the radio timeslot will automatically end - * immediately after returning from the signal callback and the - * @ref NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN event will be sent. - * @note The returned struct pointer must remain valid after the signal callback - * function returns. For instance, this means that it must not point to a stack variable. - * - * @param[in] signal_type Type of signal, see @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE. - * - * @return Pointer to structure containing action requested by the application. - */ -typedef nrf_radio_signal_callback_return_param_t * (*nrf_radio_signal_callback_t) (uint8_t signal_type); - -/**@brief AES ECB parameter typedefs */ -typedef uint8_t soc_ecb_key_t[SOC_ECB_KEY_LENGTH]; /**< Encryption key type. */ -typedef uint8_t soc_ecb_cleartext_t[SOC_ECB_CLEARTEXT_LENGTH]; /**< Cleartext data type. */ -typedef uint8_t soc_ecb_ciphertext_t[SOC_ECB_CIPHERTEXT_LENGTH]; /**< Ciphertext data type. */ - -/**@brief AES ECB data structure */ -typedef struct -{ - soc_ecb_key_t key; /**< Encryption key. */ - soc_ecb_cleartext_t cleartext; /**< Cleartext data. */ - soc_ecb_ciphertext_t ciphertext; /**< Ciphertext data. */ -} nrf_ecb_hal_data_t; - -/**@brief AES ECB block. Used to provide multiple blocks in a single call - to @ref sd_ecb_blocks_encrypt.*/ -typedef struct -{ - soc_ecb_key_t const * p_key; /**< Pointer to the Encryption key. */ - soc_ecb_cleartext_t const * p_cleartext; /**< Pointer to the Cleartext data. */ - soc_ecb_ciphertext_t * p_ciphertext; /**< Pointer to the Ciphertext data. */ -} nrf_ecb_hal_data_block_t; - -/**@} */ - -/**@addtogroup NRF_SOC_FUNCTIONS Functions - * @{ */ - -/**@brief Initialize a mutex. - * - * @param[in] p_mutex Pointer to the mutex to initialize. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_MUTEX_NEW, uint32_t, sd_mutex_new(nrf_mutex_t * p_mutex)); - -/**@brief Attempt to acquire a mutex. - * - * @param[in] p_mutex Pointer to the mutex to acquire. - * - * @retval ::NRF_SUCCESS The mutex was successfully acquired. - * @retval ::NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN The mutex could not be acquired. - */ -SVCALL(SD_MUTEX_ACQUIRE, uint32_t, sd_mutex_acquire(nrf_mutex_t * p_mutex)); - -/**@brief Release a mutex. - * - * @param[in] p_mutex Pointer to the mutex to release. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_MUTEX_RELEASE, uint32_t, sd_mutex_release(nrf_mutex_t * p_mutex)); - -/**@brief Query the capacity of the application random pool. - * - * @param[out] p_pool_capacity The capacity of the pool. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RAND_APPLICATION_POOL_CAPACITY_GET, uint32_t, sd_rand_application_pool_capacity_get(uint8_t * p_pool_capacity)); - -/**@brief Get number of random bytes available to the application. - * - * @param[out] p_bytes_available The number of bytes currently available in the pool. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RAND_APPLICATION_BYTES_AVAILABLE_GET, uint32_t, sd_rand_application_bytes_available_get(uint8_t * p_bytes_available)); - -/**@brief Get random bytes from the application pool. - * - * @param[out] p_buff Pointer to unit8_t buffer for storing the bytes. - * @param[in] length Number of bytes to take from pool and place in p_buff. - * - * @retval ::NRF_SUCCESS The requested bytes were written to p_buff. - * @retval ::NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES No bytes were written to the buffer, because there were not enough bytes available. -*/ -SVCALL(SD_RAND_APPLICATION_VECTOR_GET, uint32_t, sd_rand_application_vector_get(uint8_t * p_buff, uint8_t length)); - -/**@brief Gets the reset reason register. - * - * @param[out] p_reset_reason Contents of the NRF_POWER->RESETREAS register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RESET_REASON_GET, uint32_t, sd_power_reset_reason_get(uint32_t * p_reset_reason)); - -/**@brief Clears the bits of the reset reason register. - * - * @param[in] reset_reason_clr_msk Contains the bits to clear from the reset reason register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RESET_REASON_CLR, uint32_t, sd_power_reset_reason_clr(uint32_t reset_reason_clr_msk)); - -/**@brief Sets the power mode when in CPU sleep. - * - * @param[in] power_mode The power mode to use when in CPU sleep, see @ref NRF_POWER_MODES. @sa sd_app_evt_wait - * - * @retval ::NRF_SUCCESS The power mode was set. - * @retval ::NRF_ERROR_SOC_POWER_MODE_UNKNOWN The power mode was unknown. - */ -SVCALL(SD_POWER_MODE_SET, uint32_t, sd_power_mode_set(uint8_t power_mode)); - -/**@brief Puts the chip in System OFF mode. - * - * @retval ::NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN - */ -SVCALL(SD_POWER_SYSTEM_OFF, uint32_t, sd_power_system_off(void)); - -/**@brief Enables or disables the power-fail comparator. - * - * Enabling this will give a SoftDevice event (NRF_EVT_POWER_FAILURE_WARNING) when the power failure warning occurs. - * The event can be retrieved with sd_evt_get(); - * - * @param[in] pof_enable True if the power-fail comparator should be enabled, false if it should be disabled. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_POF_ENABLE, uint32_t, sd_power_pof_enable(uint8_t pof_enable)); - - -/**@brief Sets the power failure comparator threshold value. - * - * - * @param[in] threshold The power-fail threshold value to use, see @ref NRF_POWER_THRESHOLDS. - * - * @retval ::NRF_SUCCESS The power failure threshold was set. - * @retval ::NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN The power failure threshold is unknown. - */ -SVCALL(SD_POWER_POF_THRESHOLD_SET, uint32_t, sd_power_pof_threshold_set(uint8_t threshold)); - - -/**@brief Writes the NRF_POWER->RAM[index].POWERSET register. - * - * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWERSET register to write to. - * @param[in] ram_powerset Contains the word to write to the NRF_POWER->RAM[index].POWERSET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAM_POWER_SET, uint32_t, sd_power_ram_power_set(uint8_t index, uint32_t ram_powerset)); - -/**@brief Writes the NRF_POWER->RAM[index].POWERCLR register. - * - * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWERCLR register to write to. - * @param[in] ram_powerclr Contains the word to write to the NRF_POWER->RAM[index].POWERCLR register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAM_POWER_CLR, uint32_t, sd_power_ram_power_clr(uint8_t index, uint32_t ram_powerclr)); - -/**@brief Get contents of NRF_POWER->RAM[index].POWER register, indicates power status of RAM[index] blocks. - * - * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWER register to read from. - * @param[out] p_ram_power Content of NRF_POWER->RAM[index].POWER register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAM_POWER_GET, uint32_t, sd_power_ram_power_get(uint8_t index, uint32_t * p_ram_power)); - -/**@brief Set bits in the general purpose retention registers (NRF_POWER->GPREGRET*). - * - * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. - * @param[in] gpregret_msk Bits to be set in the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_SET, uint32_t, sd_power_gpregret_set(uint32_t gpregret_id, uint32_t gpregret_msk)); - -/**@brief Clear bits in the general purpose retention registers (NRF_POWER->GPREGRET*). - * - * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. - * @param[in] gpregret_msk Bits to be clear in the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_CLR, uint32_t, sd_power_gpregret_clr(uint32_t gpregret_id, uint32_t gpregret_msk)); - -/**@brief Get contents of the general purpose retention registers (NRF_POWER->GPREGRET*). - * - * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. - * @param[out] p_gpregret Contents of the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_GET, uint32_t, sd_power_gpregret_get(uint32_t gpregret_id, uint32_t *p_gpregret)); - -/**@brief Enable or disable the DC/DC regulator. - * - * @param[in] dcdc_mode The mode of the DCDC, see @ref NRF_POWER_DCDC_MODES. - * - * @retval ::NRF_SUCCESS - * @retval ::NRF_ERROR_INVALID_PARAM The DCDC mode is invalid. - */ -SVCALL(SD_POWER_DCDC_MODE_SET, uint32_t, sd_power_dcdc_mode_set(uint8_t dcdc_mode)); - - -/**@brief Request the high frequency crystal oscillator. - * - * Will start the high frequency crystal oscillator, the startup time of the crystal varies - * and the ::sd_clock_hfclk_is_running function can be polled to check if it has started. - * - * @see sd_clock_hfclk_is_running - * @see sd_clock_hfclk_release - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_REQUEST, uint32_t, sd_clock_hfclk_request(void)); - -/**@brief Releases the high frequency crystal oscillator. - * - * Will stop the high frequency crystal oscillator, this happens immediately. - * - * @see sd_clock_hfclk_is_running - * @see sd_clock_hfclk_request - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_RELEASE, uint32_t, sd_clock_hfclk_release(void)); - -/**@brief Checks if the high frequency crystal oscillator is running. - * - * @see sd_clock_hfclk_request - * @see sd_clock_hfclk_release - * - * @param[out] p_is_running 1 if the external crystal oscillator is running, 0 if not. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_IS_RUNNING, uint32_t, sd_clock_hfclk_is_running(uint32_t * p_is_running)); - -/**@brief Waits for an application event. - * - * An application event is either an application interrupt or a pended interrupt when the interrupt - * is disabled. - * - * When the application waits for an application event by calling this function, an interrupt that - * is enabled will be taken immediately on pending since this function will wait in thread mode, - * then the execution will return in the application's main thread. - * - * In order to wake up from disabled interrupts, the SEVONPEND flag has to be set in the Cortex-M - * MCU's System Control Register (SCR), CMSIS_SCB. In that case, when a disabled interrupt gets - * pended, this function will return to the application's main thread. - * - * @note The application must ensure that the pended flag is cleared using ::sd_nvic_ClearPendingIRQ - * in order to sleep using this function. This is only necessary for disabled interrupts, as - * the interrupt handler will clear the pending flag automatically for enabled interrupts. - * - * @note If an application interrupt has happened since the last time sd_app_evt_wait was - * called this function will return immediately and not go to sleep. This is to avoid race - * conditions that can occur when a flag is updated in the interrupt handler and processed - * in the main loop. - * - * @post An application interrupt has happened or a interrupt pending flag is set. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_APP_EVT_WAIT, uint32_t, sd_app_evt_wait(void)); - -/**@brief Get PPI channel enable register contents. - * - * @param[out] p_channel_enable The contents of the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_GET, uint32_t, sd_ppi_channel_enable_get(uint32_t * p_channel_enable)); - -/**@brief Set PPI channel enable register. - * - * @param[in] channel_enable_set_msk Mask containing the bits to set in the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_SET, uint32_t, sd_ppi_channel_enable_set(uint32_t channel_enable_set_msk)); - -/**@brief Clear PPI channel enable register. - * - * @param[in] channel_enable_clr_msk Mask containing the bits to clear in the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_CLR, uint32_t, sd_ppi_channel_enable_clr(uint32_t channel_enable_clr_msk)); - -/**@brief Assign endpoints to a PPI channel. - * - * @param[in] channel_num Number of the PPI channel to assign. - * @param[in] evt_endpoint Event endpoint of the PPI channel. - * @param[in] task_endpoint Task endpoint of the PPI channel. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_CHANNEL The channel number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ASSIGN, uint32_t, sd_ppi_channel_assign(uint8_t channel_num, const volatile void * evt_endpoint, const volatile void * task_endpoint)); - -/**@brief Task to enable a channel group. - * - * @param[in] group_num Number of the channel group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_TASK_ENABLE, uint32_t, sd_ppi_group_task_enable(uint8_t group_num)); - -/**@brief Task to disable a channel group. - * - * @param[in] group_num Number of the PPI group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_TASK_DISABLE, uint32_t, sd_ppi_group_task_disable(uint8_t group_num)); - -/**@brief Assign PPI channels to a channel group. - * - * @param[in] group_num Number of the channel group. - * @param[in] channel_msk Mask of the channels to assign to the group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_ASSIGN, uint32_t, sd_ppi_group_assign(uint8_t group_num, uint32_t channel_msk)); - -/**@brief Gets the PPI channels of a channel group. - * - * @param[in] group_num Number of the channel group. - * @param[out] p_channel_msk Mask of the channels assigned to the group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_GET, uint32_t, sd_ppi_group_get(uint8_t group_num, uint32_t * p_channel_msk)); - -/**@brief Configures the Radio Notification signal. - * - * @note - * - The notification signal latency depends on the interrupt priority settings of SWI used - * for notification signal. - * - To ensure that the radio notification signal behaves in a consistent way, the radio - * notifications must be configured when there is no protocol stack or other SoftDevice - * activity in progress. It is recommended that the radio notification signal is - * configured directly after the SoftDevice has been enabled. - * - In the period between the ACTIVE signal and the start of the Radio Event, the SoftDevice - * will interrupt the application to do Radio Event preparation. - * - Using the Radio Notification feature may limit the bandwidth, as the SoftDevice may have - * to shorten the connection events to have time for the Radio Notification signals. - * - * @param[in] type Type of notification signal, see @ref NRF_RADIO_NOTIFICATION_TYPES. - * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE shall be used to turn off radio - * notification. Using @ref NRF_RADIO_NOTIFICATION_DISTANCE_NONE is - * recommended (but not required) to be used with - * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE. - * - * @param[in] distance Distance between the notification signal and start of radio activity, see @ref NRF_RADIO_NOTIFICATION_DISTANCES. - * This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or - * @ref NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE is used. - * - * @retval ::NRF_ERROR_INVALID_PARAM The group number is invalid. - * @retval ::NRF_ERROR_INVALID_STATE A protocol stack or other SoftDevice is running. Stop all - * running activities and retry. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RADIO_NOTIFICATION_CFG_SET, uint32_t, sd_radio_notification_cfg_set(uint8_t type, uint8_t distance)); - -/**@brief Encrypts a block according to the specified parameters. - * - * 128-bit AES encryption. - * - * @note: - * - The application may set the SEVONPEND bit in the SCR to 1 to make the SoftDevice sleep while - * the ECB is running. The SEVONPEND bit should only be cleared (set to 0) from application - * main or low interrupt level. - * - * @param[in, out] p_ecb_data Pointer to the ECB parameters' struct (two input - * parameters and one output parameter). - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_ECB_BLOCK_ENCRYPT, uint32_t, sd_ecb_block_encrypt(nrf_ecb_hal_data_t * p_ecb_data)); - -/**@brief Encrypts multiple data blocks provided as an array of data block structures. - * - * @details: Performs 128-bit AES encryption on multiple data blocks - * - * @note: - * - The application may set the SEVONPEND bit in the SCR to 1 to make the SoftDevice sleep while - * the ECB is running. The SEVONPEND bit should only be cleared (set to 0) from application - * main or low interrupt level. - * - * @param[in] block_count Count of blocks in the p_data_blocks array. - * @param[in,out] p_data_blocks Pointer to the first entry in a contiguous array of - * @ref nrf_ecb_hal_data_block_t structures. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_ECB_BLOCKS_ENCRYPT, uint32_t, sd_ecb_blocks_encrypt(uint8_t block_count, nrf_ecb_hal_data_block_t * p_data_blocks)); - -/**@brief Gets any pending events generated by the SoC API. - * - * The application should keep calling this function to get events, until ::NRF_ERROR_NOT_FOUND is returned. - * - * @param[out] p_evt_id Set to one of the values in @ref NRF_SOC_EVTS, if any events are pending. - * - * @retval ::NRF_SUCCESS An event was pending. The event id is written in the p_evt_id parameter. - * @retval ::NRF_ERROR_NOT_FOUND No pending events. - */ -SVCALL(SD_EVT_GET, uint32_t, sd_evt_get(uint32_t * p_evt_id)); - -/**@brief Get the temperature measured on the chip - * - * This function will block until the temperature measurement is done. - * It takes around 50 us from call to return. - * - * @param[out] p_temp Result of temperature measurement. Die temperature in 0.25 degrees Celsius. - * - * @retval ::NRF_SUCCESS A temperature measurement was done, and the temperature was written to temp - */ -SVCALL(SD_TEMP_GET, uint32_t, sd_temp_get(int32_t * p_temp)); - -/**@brief Flash Write -* -* Commands to write a buffer to flash -* -* If the SoftDevice is enabled: -* This call initiates the flash access command, and its completion will be communicated to the -* application with exactly one of the following events: -* - @ref NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. -* - @ref NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. -* -* If the SoftDevice is not enabled no event will be generated, and this call will return @ref NRF_SUCCESS when the - * write has been completed -* -* @note -* - This call takes control over the radio and the CPU during flash erase and write to make sure that -* they will not interfere with the flash access. This means that all interrupts will be blocked -* for a predictable time (depending on the NVMC specification in the device's Product Specification -* and the command parameters). -* - The data in the p_src buffer should not be modified before the @ref NRF_EVT_FLASH_OPERATION_SUCCESS -* or the @ref NRF_EVT_FLASH_OPERATION_ERROR have been received if the SoftDevice is enabled. -* - This call will make the SoftDevice trigger a hardfault when the page is written, if it is -* protected. -* -* -* @param[in] p_dst Pointer to start of flash location to be written. -* @param[in] p_src Pointer to buffer with data to be written. -* @param[in] size Number of 32-bit words to write. Maximum size is the number of words in one -* flash page. See the device's Product Specification for details. -* -* @retval ::NRF_ERROR_INVALID_ADDR Tried to write to a non existing flash address, or p_dst or p_src was unaligned. -* @retval ::NRF_ERROR_BUSY The previous command has not yet completed. -* @retval ::NRF_ERROR_INVALID_LENGTH Size was 0, or higher than the maximum allowed size. -* @retval ::NRF_ERROR_FORBIDDEN Tried to write to an address outside the application flash area. -* @retval ::NRF_SUCCESS The command was accepted. -*/ -SVCALL(SD_FLASH_WRITE, uint32_t, sd_flash_write(uint32_t * p_dst, uint32_t const * p_src, uint32_t size)); - - -/**@brief Flash Erase page -* -* Commands to erase a flash page -* If the SoftDevice is enabled: -* This call initiates the flash access command, and its completion will be communicated to the -* application with exactly one of the following events: -* - @ref NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. -* - @ref NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. -* -* If the SoftDevice is not enabled no event will be generated, and this call will return @ref NRF_SUCCESS when the -* erase has been completed -* -* @note -* - This call takes control over the radio and the CPU during flash erase and write to make sure that -* they will not interfere with the flash access. This means that all interrupts will be blocked -* for a predictable time (depending on the NVMC specification in the device's Product Specification -* and the command parameters). -* - This call will make the SoftDevice trigger a hardfault when the page is erased, if it is -* protected. -* -* -* @param[in] page_number Page number of the page to erase -* -* @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. -* @retval ::NRF_ERROR_INVALID_ADDR Tried to erase to a non existing flash page. -* @retval ::NRF_ERROR_BUSY The previous command has not yet completed. -* @retval ::NRF_ERROR_FORBIDDEN Tried to erase a page outside the application flash area. -* @retval ::NRF_SUCCESS The command was accepted. -*/ -SVCALL(SD_FLASH_PAGE_ERASE, uint32_t, sd_flash_page_erase(uint32_t page_number)); - - -/**@brief Flash Protection set - * - * Commands to set the flash protection configuration registers. - This sets the CONFIGx registers of the BPROT peripheral. - * - * @note Not all parameters are valid for all products. Some bits in each parameter may not be - * valid for your product. Please refer your Product Specification for more details. - * - * @note To read the values read them directly. They are only write-protected. - * - * @note It is possible to use @ref sd_protected_register_write instead of this function. - * - * @param[in] block_cfg0 Value to be written to the configuration register. - * @param[in] block_cfg1 Value to be written to the configuration register. - * @param[in] block_cfg2 Value to be written to the configuration register. - * @param[in] block_cfg3 Value to be written to the configuration register. - * - * @retval ::NRF_ERROR_NOT_SUPPORTED Non-zero value supplied to one or more of the unsupported parameters. - * @retval ::NRF_SUCCESS Values successfully written to configuration registers. - */ -SVCALL(SD_FLASH_PROTECT, uint32_t, sd_flash_protect(uint32_t block_cfg0, uint32_t block_cfg1, uint32_t block_cfg2, uint32_t block_cfg3)); - -/**@brief Opens a session for radio timeslot requests. - * - * @note Only one session can be open at a time. - * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) will be called when the radio timeslot - * starts. From this point the NRF_RADIO and NRF_TIMER0 peripherals can be freely accessed - * by the application. - * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0) is called whenever the NRF_TIMER0 - * interrupt occurs. - * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO) is called whenever the NRF_RADIO - * interrupt occurs. - * @note p_radio_signal_callback() will be called at ARM interrupt priority level 0. This - * implies that none of the sd_* API calls can be used from p_radio_signal_callback(). - * - * @param[in] p_radio_signal_callback The signal callback. - * - * @retval ::NRF_ERROR_INVALID_ADDR p_radio_signal_callback is an invalid function pointer. - * @retval ::NRF_ERROR_BUSY If session cannot be opened. - * @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. - * @retval ::NRF_SUCCESS Otherwise. - */ - SVCALL(SD_RADIO_SESSION_OPEN, uint32_t, sd_radio_session_open(nrf_radio_signal_callback_t p_radio_signal_callback)); - -/**@brief Closes a session for radio timeslot requests. - * - * @note Any current radio timeslot will be finished before the session is closed. - * @note If a radio timeslot is scheduled when the session is closed, it will be canceled. - * @note The application cannot consider the session closed until the @ref NRF_EVT_RADIO_SESSION_CLOSED - * event is received. - * - * @retval ::NRF_ERROR_FORBIDDEN If session not opened. - * @retval ::NRF_ERROR_BUSY If session is currently being closed. - * @retval ::NRF_SUCCESS Otherwise. - */ - SVCALL(SD_RADIO_SESSION_CLOSE, uint32_t, sd_radio_session_close(void)); - -/**@brief Requests a radio timeslot. - * - * @note The request type is determined by p_request->request_type, and can be one of @ref NRF_RADIO_REQ_TYPE_EARLIEST - * and @ref NRF_RADIO_REQ_TYPE_NORMAL. The first request in a session must always be of type @ref NRF_RADIO_REQ_TYPE_EARLIEST. - * @note For a normal request (@ref NRF_RADIO_REQ_TYPE_NORMAL), the start time of a radio timeslot is specified by - * p_request->distance_us and is given relative to the start of the previous timeslot. - * @note A too small p_request->distance_us will lead to a @ref NRF_EVT_RADIO_BLOCKED event. - * @note Timeslots scheduled too close will lead to a @ref NRF_EVT_RADIO_BLOCKED event. - * @note See the SoftDevice Specification for more on radio timeslot scheduling, distances and lengths. - * @note If an opportunity for the first radio timeslot is not found before 100 ms after the call to this - * function, it is not scheduled, and instead a @ref NRF_EVT_RADIO_BLOCKED event is sent. - * The application may then try to schedule the first radio timeslot again. - * @note Successful requests will result in nrf_radio_signal_callback_t(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START). - * Unsuccessful requests will result in a @ref NRF_EVT_RADIO_BLOCKED event, see @ref NRF_SOC_EVTS. - * @note The jitter in the start time of the radio timeslots is +/- @ref NRF_RADIO_START_JITTER_US us. - * @note The nrf_radio_signal_callback_t(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) call has a latency relative to the - * specified radio timeslot start, but this does not affect the actual start time of the timeslot. - * @note NRF_TIMER0 is reset at the start of the radio timeslot, and is clocked at 1MHz from the high frequency - * (16 MHz) clock source. If p_request->hfclk_force_xtal is true, the high frequency clock is - * guaranteed to be clocked from the external crystal. - * @note The SoftDevice will neither access the NRF_RADIO peripheral nor the NRF_TIMER0 peripheral - * during the radio timeslot. - * - * @param[in] p_request Pointer to the request parameters. - * - * @retval ::NRF_ERROR_FORBIDDEN If session not opened or the session is not IDLE. - * @retval ::NRF_ERROR_INVALID_ADDR If the p_request pointer is invalid. - * @retval ::NRF_ERROR_INVALID_PARAM If the parameters of p_request are not valid. - * @retval ::NRF_SUCCESS Otherwise. - */ - SVCALL(SD_RADIO_REQUEST, uint32_t, sd_radio_request(nrf_radio_request_t const * p_request)); - -/**@brief Write register protected by the SoftDevice - * - * This function writes to a register that is write-protected by the SoftDevice. Please refer to your - * SoftDevice Specification for more details about which registers that are protected by SoftDevice. - * This function can write to the following protected peripheral: - * - BPROT - * - * @note Protected registers may be read directly. - * @note Register that are write-once will return @ref NRF_SUCCESS on second set, even the value in - * the register has not changed. See the Product Specification for more details about register - * properties. - * - * @param[in] p_register Pointer to register to be written. - * @param[in] value Value to be written to the register. - * - * @retval ::NRF_ERROR_INVALID_ADDR This function can not write to the reguested register. - * @retval ::NRF_SUCCESS Value successfully written to register. - * - */ -SVCALL(SD_PROTECTED_REGISTER_WRITE, uint32_t, sd_protected_register_write(volatile uint32_t * p_register, uint32_t value)); - -/**@} */ - -#ifdef __cplusplus -} -#endif -#endif // NRF_SOC_H__ - -/**@} */ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_svc.h b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_svc.h deleted file mode 100644 index 292c692..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_API/include/nrf_svc.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -#ifndef NRF_SVC__ -#define NRF_SVC__ - -#include "stdint.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SVCALL_AS_NORMAL_FUNCTION -#define SVCALL(number, return_type, signature) return_type signature -#else - -#ifndef SVCALL -#if defined (__CC_ARM) -#define SVCALL(number, return_type, signature) return_type __svc(number) signature -#elif defined (__GNUC__) -#ifdef __cplusplus -#define GCC_CAST_CPP (uint16_t) -#else -#define GCC_CAST_CPP -#endif -#define SVCALL(number, return_type, signature) \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \ - __attribute__((naked)) \ - __attribute__((unused)) \ - static return_type signature \ - { \ - __asm( \ - "svc %0\n" \ - "bx r14" : : "I" (GCC_CAST_CPP number) : "r0" \ - ); \ - } \ - _Pragma("GCC diagnostic pop") - -#elif defined (__ICCARM__) -#define PRAGMA(x) _Pragma(#x) -#define SVCALL(number, return_type, signature) \ -PRAGMA(swi_number = (number)) \ - __swi return_type signature; -#else -#define SVCALL(number, return_type, signature) return_type signature -#endif -#endif // SVCALL - -#endif // SVCALL_AS_NORMAL_FUNCTION - -#ifdef __cplusplus -} -#endif -#endif // NRF_SVC__ diff --git a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_license-agreement.txt b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_license-agreement.txt deleted file mode 100644 index 2d1bc12..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_license-agreement.txt +++ /dev/null @@ -1,35 +0,0 @@ -Copyright (c) 2007 - 2018, Nordic Semiconductor ASA -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form, except as embedded into a Nordic - Semiconductor ASA integrated circuit in a product or a software update for - such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -4. This software, with or without modification, must only be used with a - Nordic Semiconductor ASA integrated circuit. - -5. Any software provided in binary form under this license must not be reverse - engineered, decompiled, modified and/or disassembled. - -THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_softdevice.hex b/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_softdevice.hex deleted file mode 100644 index 02054b8..0000000 --- a/lib/softdevice/s132_nrf52_6.1.0/s132_nrf52_6.1.0_softdevice.hex +++ /dev/null @@ -1,9426 +0,0 @@ -:020000040000FA -:1000000000040020E90800007D050000C908000088 -:1000100087050000910500009B050000000000001E -:100020000000000000000000000000000D090000BA -:10003000A505000000000000AF050000B9050000A4 -:10004000C3050000CD050000D7050000E105000054 -:10005000EB050000F5050000FF05000009060000A3 -:10006000130600001D0600002706000031060000F0 -:100070003B060000450600004F0600005906000040 -:10008000630600006D060000770600008106000090 -:100090008B060000950600009F060000A9060000E0 -:1000A000B3060000BD060000C7060000D106000030 -:1000B000DB060000E5060000EF060000F906000080 -:1000C000030700000D0700001707000021070000CC -:1000D0002B070000350700003F070000490700001C -:1000E000530700005D07000067070000710700006C -:1000F0007B070000850700008F07000099070000BC -:10010000A30700001FB500F003F88DE80F001FBD26 -:1001100000F0E0BB1FB56FF00100009040100390AD -:10012000029001904FF010208069000B420900F00E -:100130001F045DF822300120A04083434DF8223097 -:10014000684600F045F91FBDF0B54FF6FF734FF458 -:10015000B4751A466E1E11E0A94201D3344600E080 -:100160000C46091B30F8027B641E3B441A44F9D14B -:100170009CB204EB134394B204EB12420029EBD17E -:1001800098B200EB134002EB124140EA0140F0BD8F -:10019000DE4992B00446D1E90001CDE91001FF2209 -:1001A0004021684600F03CFB94E80F008DE80F000A -:1001B000684610A902E004C841F8042D8842FAD12B -:1001C00010216846FFF7C0FF1090AA208DF8440068 -:1001D000FFF7A0FF00F0F3F84FF01024A069102201 -:1001E0006946803000F002F9A069082210A900F0E9 -:1001F000FDF800F0D8F84FF080510A6949690068AD -:100200004A43824201D8102070470020704710B541 -:10021000D0E900214FF0805002EB8103026944696C -:100220006243934209D84FF01022536903EB8103D4 -:100230000169406941438B4201D9092010BD5069D1 -:10024000401C01D0002010BD0F2010BD70B501680A -:100250000446AF4D4FF01020072952D2DFE801F0DD -:10026000330419293C1E2500D4E902656468294637 -:10027000304600F0CDF82A462146304600F0B6F868 -:10028000AA002146304600F09FFA002800D0032043 -:1002900070BD00F051FB4FF4805007E0201DFFF7C8 -:1002A000AAFF0028F4D100F047FB60682860002016 -:1002B00070BD241D94E80700920000F085FA002824 -:1002C000F6D00E2070BD8069401C12D0201DFFF7B3 -:1002D0009EFF0028F6D109E08069401C09D0201D4E -:1002E000FFF789FF0028EDD1606820B12046FFF7B5 -:1002F0004FFF042070BDFFF70DFF00F060F800F025 -:1003000052F8072070BD10B50C46182802D0012005 -:10031000086010BD2068FFF799FF206010BD4FF006 -:100320001024A069401C05D0A569A66980353079E4 -:10033000AA2808D06069401C2DD060690068401C64 -:1003400029D060692CE010212846FFF7FDFE3168B6 -:1003500081421CD1A16901F18002C03105E030B1B8 -:1003600008CA51F8040D984201D1012000E0002094 -:100370008A42F4D158B1286810B1042803D0FEE7AE -:10038000284600F057F862496868086008E000F005 -:1003900016F800F008F84FF480500168491C01D0AD -:1003A00000F0A4FAFEE7BFF34F8F5A4801685A4A9B -:1003B00001F4E06111430160BFF34F8FFEE74FF09E -:1003C00010208169491C02D0806900F0AEB87047E6 -:1003D000524A01681160121D416811604F4A8168DC -:1003E00010321160111DC068086070472DE9F0419E -:1003F00017460D460646002406E03046296800F000 -:10040000A7F8641C2D1D361DBC42F6D3BDE8F08153 -:1004100070B50C4605464FF4806608E0284600F0AB -:1004200084F8B44205D3A4F5806405F58055002C0A -:10043000F4D170BD4168044609B1012500E00025F2 -:100440004FF010267069A268920000F0BDF9C8B1A3 -:10045000204600F01AF89DB17669A56864684FF4EB -:10046000002084420AD2854208D229463046FFF74E -:10047000CFFF2A4621463046FFF7B8FFFFF79FFF20 -:10048000FFF791FFFFF746FEF8E72DE9FF414FF038 -:100490001024616980680D0B01EB800000F6FF708D -:1004A000010B0020009001900290024603906846E4 -:1004B00001230BE0560902F01F0C50F8267003FAD6 -:1004C0000CFC47EA0C0740F82670521CAA42F1D3F4 -:1004D0000AE04A0901F01F0650F8225003FA06F616 -:1004E000354340F82250491C8029F2D3A169090BF9 -:1004F0004A0901F01F0150F822408B409C4340F80C -:100500002240FFF765FFBDE8FF8100005C090000A5 -:10051000000000200CED00E00400FA050006004099 -:10052000144801680029FCD07047134A0221116069 -:1005300010490B68002BFCD00F4B1B1D186008687E -:100540000028FCD00020106008680028FCD070470C -:10055000094B10B501221A60064A1468002CFCD021 -:10056000016010680028FCD0002018601068002886 -:10057000FCD010BD00E4014004E5014008208F4993 -:1005800009680958084710208C4909680958084724 -:1005900014208A49096809580847182087490968BA -:1005A0000958084730208549096809580847382004 -:1005B00082490968095808473C2080490968095858 -:1005C000084740207D4909680958084744207B496D -:1005D00009680958084748207849096809580847B0 -:1005E0004C20764909680958084750207349096822 -:1005F0000958084754207149096809580847582084 -:100600006E490968095808475C206C49096809580F -:100610000847602069490968095808476420674904 -:100620000968095808476820644909680958084753 -:100630006C20624909680958084770205F490968B9 -:100640000958084774205D49096809580847782007 -:100650005A490968095808477C20584909680958C7 -:10066000084780205549096809580847842053499C -:1006700009680958084788205049096809580847F7 -:100680008C204E4909680958084790204B49096851 -:10069000095808479420494909680958084798208B -:1006A00046490968095808479C204449096809587F -:1006B0000847A0204149096809580847A4203F4934 -:1006C000096809580847A8203C490968095808479B -:1006D000AC203A49096809580847B02037490968E9 -:1006E00009580847B4203549096809580847B8200F -:1006F0003249096809580847BC2030490968095837 -:100700000847C0202D49096809580847C4202B49CB -:10071000096809580847C82028490968095808473E -:10072000CC202649096809580847D0202349096880 -:1007300009580847D4202149096809580847D82092 -:100740001E49096809580847DC201C4909680958EE -:100750000847E0201949096809580847E420174963 -:10076000096809580847E8201449096809580847E2 -:10077000EC201249096809580847F0200F49096818 -:1007800009580847F4200D49096809580847F82016 -:100790000A49096809580847FC20084909680958A6 -:1007A00008475FF480700549096809580847000048 -:1007B00003480449024A034B704700000000002030 -:1007C000680900006809000040EA010310B59B07B2 -:1007D0000FD1042A0DD310C808C9121F9C42F8D0AB -:1007E00020BA19BA884201D9012010BD4FF0FF305C -:1007F00010BD1AB1D30703D0521C07E0002010BD72 -:1008000010F8013B11F8014B1B1B07D110F8013BFD -:1008100011F8014B1B1B01D1921EF1D1184610BDDE -:1008200002F0FF0343EA032242EA024200F005B865 -:100830007047704770474FF000020429C0F01280E3 -:1008400010F0030C00F01B80CCF1040CBCF1020F83 -:1008500018BF00F8012BA8BF20F8022BA1EB0C0158 -:1008600000F00DB85FEAC17C24BF00F8012B00F84E -:10087000012B48BF00F8012B70474FF0000200B574 -:10088000134694469646203922BFA0E80C50A0E8B3 -:100890000C50B1F12001BFF4F7AF090728BFA0E861 -:1008A0000C5048BF0CC05DF804EB890028BF40F82D -:1008B000042B08BF704748BF20F8022B11F0804F6F -:1008C00018BF00F8012B7047014B1B68DB68184705 -:1008D0000000002009480A497047FFF7FBFFFFF7B7 -:1008E00011FC00BD20BFFDE7064B1847064A10600B -:1008F000016881F30888406800470000680900002B -:10090000680900001F030000000000201EF0040F13 -:100910000CBFEFF30881EFF3098188690238007892 -:10092000182803D100E00000074A1047074A126860 -:100930002C3212681047000000B5054B1B68054AB1 -:100940009B58984700BD00000703000000000020EE -:100950005809000004000000001000000000000022 -:0809600000FFFFFF0090D0032F -:1010000078130020394D0200EDBF00009F4C020014 -:10101000EDBF0000EDBF0000EDBF000000000000CC -:10102000000000000000000000000000954D0200DC -:10103000EDBF000000000000EDBF0000EDBF0000AC -:10104000FD4D0200034E0200EDBF0000EDBF0000A9 -:10105000EDBF0000EDBF0000EDBF0000EDBF0000E0 -:10106000094E0200EDBF0000EDBF00000F4E020070 -:10107000EDBF0000154E02001B4E0200214E020083 -:10108000EDBF0000EDBF0000EDBF0000EDBF0000B0 -:10109000EDBF0000EDBF0000EDBF0000EDBF0000A0 -:1010A000EDBF0000274E0200EDBF0000EDBF0000C5 -:1010B000EDBF0000EDBF0000EDBF0000EDBF000080 -:1010C0002D4E0200EDBF0000EDBF0000EDBF00009F -:1010D000EDBF0000EDBF0000EDBF0000EDBF000060 -:1010E000EDBF0000EDBF0000EDBF0000EDBF000050 -:1010F000EDBF0000EDBF0000EDBF0000EDBF000040 -:10110000EDBF0000EDBF000000F002F823F003FE89 -:101110000AA090E8000C82448344AAF10107DA4552 -:1011200001D123F0F8FDAFF2090EBAE80F0013F079 -:10113000010F18BFFB1A43F001031847DC410200FE -:10114000FC4102000A444FF0000C10F8013B13F080 -:10115000070408BF10F8014B1D1108BF10F8015B10 -:10116000641E05D010F8016B641E01F8016BF9D103 -:1011700013F0080F1EBF10F8014BAD1C0C1B09D15A -:101180006D1E58BF01F801CBFAD505E014F8016BCC -:1011900001F8016B6D1EF9D59142D6D3704700005E -:1011A0000023002400250026103A28BF78C1FBD870 -:1011B000520728BF30C148BF0B6070471FB500F011 -:1011C0003DF88DE80F001FBD1EF0040F0CBFEFF3BC -:1011D0000880EFF30980014A104700002FBF00008C -:1011E000F0B44046494652465B460FB402A0013077 -:1011F00001B50648004700BF01BC86460FBC8046CB -:10120000894692469B46F0BC7047000009110000D9 -:101210008269034981614FF001001044704700006A -:101220002512000001B41EB400B514F01FFD01B476 -:101230000198864601BC01B01EBD000023F068BDC8 -:1012400070B51A4C054609202070A01C00F0D1F89A -:101250005920A08029462046BDE8704008F0B0B86B -:1012600008F0B9B870B50C461149097829B1A0F158 -:1012700060015E2908D3012013E0602804D06928AA -:1012800002D043F201000CE020CC0A4E94E80E009C -:1012900006EB8000A0F58050241FD0F8806E284611 -:1012A000B047206070BD012070470000080000209A -:1012B00018000020784E02003249884201D20120F5 -:1012C00070470020704770B50446A0F500002E4E10 -:1012D000B0F1786F02D23444A4F500042948844266 -:1012E00001D2012500E0002500F043F848B125B9FE -:1012F000B44204D32548006808E0012070BD0020F6 -:1013000070BD002DF9D1B442F9D321488442F6D200 -:10131000F3E710B50446A0F50000B0F1786F03D2F2 -:1013200019480444A4F5000400F023F84FF080416C -:1013300030B11648006804E08C4204D2012003E07A -:1013400013488442F8D2002080F0010010BD10B58F -:1013500020B1FFF7DEFF08B1012010BD002010BD55 -:1013600010B520B1FFF7AFFF08B1012010BD00207C -:1013700010BD084808490068884201D10120704723 -:101380000020704700600200000000201C000020C8 -:101390000800002054000020BEBAFECA10B5044662 -:1013A0000021012000F03DF800210B2000F039F869 -:1013B0000421192000F035F804210D2000F031F847 -:1013C00004210E2000F02DF804210F2000F029F850 -:1013D0000421C84300F025F80621162000F021F86A -:1013E0000621152000F01DF82046FFF729FF0020F8 -:1013F00010BDAF2101807047FFF732BF1148704721 -:1014000010487047104A10B514680F4B0F4A083344 -:101410001A60FFF727FF0C48001D046010BD7047DD -:1014200070474907090E002804DB00F1E02080F82E -:101430000014704700F00F0000F1E02080F8141D48 -:101440007047000003F9004210050240010000014E -:10145000FE48002101604160018170472DE9F7439A -:10146000044692B091464068FFF771FF40B1606852 -:10147000FFF776FF20B9607800F00300022801D062 -:10148000012000E00020F14E30724846FFF71BFFBC -:1014900018B1102015B0BDE8F0834946012001F0D5 -:1014A0008EFE0028F6D101258DF842504FF4C05031 -:1014B000ADF84000002210A9284606F0F7FB0028EE -:1014C000E8D18DF842504FF428504FF00008ADF8A5 -:1014D000400047461C216846CDF81C8023F0B3FB32 -:1014E0009DF81C0008AA20F00F00401C20F0F0001E -:1014F00010308DF81C0020788DF81D0061789DF863 -:101500001E0061F3420040F001008DF81E009DF8BE -:1015100000000AA940F002008DF800002089ADF813 -:101520003000ADF83270608907AFADF834000B972A -:10153000606810AC0E900A94684606F0AAF900287C -:10154000A8D1BDF8200030808DF8425042F601202D -:10155000ADF840009DF81E0008AA20F00600801C8F -:1015600020F001008DF81E000220ADF83000ADF82B -:10157000340013A80E900AA9684606F08AF90028DC -:1015800088D1BDF820007080311D484600F033F945 -:10159000002887D18DF8425042F6A620ADF84000D1 -:1015A0001C216846CDF81C8023F04DFB9DF81C00E3 -:1015B000ADF8345020F00F00401C20F0F000103047 -:1015C0008DF81C009DF81D0008AA20F0FF008DF882 -:1015D0001D009DF81E000AA920F0060040F0010041 -:1015E000801C8DF81E009DF800008DF8445040F0DE -:1015F00002008DF80000CDE90A4711A80E90ADF861 -:101600003050684606F045F9002899D1BDF8200011 -:10161000F08000203EE73EB504460820ADF800000B -:101620002046FFF750FE08B110203EBD21460120A4 -:1016300001F0C5FD0028F8D12088ADF804006088CD -:10164000ADF80600A088ADF80800E088ADF80A0003 -:101650007E4801AB6A468088002106F023FDBDF874 -:1016600000100829E1D003203EBD1FB5044600202C -:1016700002900820ADF80800CDF80CD02046FFF706 -:1016800022FE10B1102004B010BD704802AA81885B -:101690004FF6FF7006F048FF0028F4D1BDF808109F -:1016A000082901D00320EEE7BDF800102180BDF825 -:1016B00002106180BDF80410A180BDF80610E18021 -:1016C000E1E701B582B00220ADF800005F4802AB4F -:1016D0006A464088002106F0E5FCBDF800100229AA -:1016E00000D003200EBD1CB5002100910221ADF8F1 -:1016F00000100190FFF70DFE08B110201CBD5348EB -:101700006A4641884FF6FF7006F00EFFBDF80010E4 -:101710000229F3D003201CBDFEB54C4C06461546ED -:10172000207A0F46C00705D00846FFF7CCFD18B158 -:101730001020FEBD0F20FEBDF82D01D90C20FEBDEE -:101740003046FFF7C0FD18BB208801A905F0A6FDB3 -:101750000028F4D130788DF80500208801A906F022 -:101760007FFC0028EBD100909DF800009DF805104B -:1017700040F002008DF80000090703D040F0080097 -:101780008DF800002088694606F007FC0028D6D1B5 -:10179000ADF8085020883B4602AA002106F082FCE2 -:1017A000BDF80810A942CAD00320FEBD7CB505468D -:1017B0000020009001900888ADF800000C462846F3 -:1017C0000195FFF7C4FD18B92046FFF7A2FD08B147 -:1017D00010207CBD15B1BDF8000050B11B486A4611 -:1017E00001884FF6FF7006F09FFEBDF800102180C3 -:1017F0007CBD0C207CBD30B593B0044600200D4666 -:101800000090142101A823F01EFA1C2108A823F03F -:101810001AFA9DF80000CDF808D020F00F00401C07 -:1018200020F0F00010308DF800009DF8010020F04D -:10183000FF008DF801009DF8200040F002008DF8B7 -:10184000200001208DF8460002E000001C0200206C -:1018500042F60420ADF8440011A801902088ADF8AC -:101860003C006088ADF83E00A088ADF84000E088FC -:10187000ADF842009DF8020006AA20F00600801C88 -:1018800020F001008DF802000820ADF80C00ADF842 -:1018900010000FA8059001A908A805F0FAFF00287C -:1018A00003D1BDF818002880002013B030BD00001F -:1018B000F0B5007B059F1E4614460D46012800D05A -:1018C000FFDF0C2030803A203880002C08D0287AA6 -:1018D000032806D0287B012800D0FFDF1720608175 -:1018E000F0BDA889FBE72DE9F04786B0144691F8D2 -:1018F0000C900E9A0D46B9F1010F0BD01021007B10 -:101900002E8A8846052807D0062833D0FFDF06B088 -:10191000BDE8F0870221F2E7E8890C2100EB4000E6 -:1019200001EB4000188033201080002CEFD0E889B4 -:10193000608100271AE00096688808F1020301AA76 -:10194000696900F084FF06EB0800801C07EB470183 -:1019500086B204EB4102BDF8040090810DF106014E -:1019600040460E3212F02FFC7F1CBFB26089B84295 -:10197000E1D8CCE734201080E889B9F1010F11D00B -:10198000122148430E301880002CC0D0E8896081B5 -:101990004846B9F1010F00D00220207300270DF155 -:1019A000040A1FE00621ECE70096688808F10203AC -:1019B00001AA696900F04BFF06EB0800801C86B2A3 -:1019C000B9F1010F12D007EBC70004EB4000BDF8DE -:1019D0000410C18110220AF10201103023F092F8A4 -:1019E0007F1CBFB26089B842DED890E707EB4701A1 -:1019F00004EB4102BDF80400D0810AF10201404627 -:101A0000103212F0E0FBEBE72DE9F0470E4688B00C -:101A100090F80CC096F80C80378AF5890C20109944 -:101A200002F10C044FF0000ABCF1030F08D0BCF126 -:101A3000040F3ED0BCF1070F7DD0FFDF08B067E791 -:101A400005EB850C00EB4C00188031200880002A43 -:101A5000F4D0A8F1060000F0FF09558125E0182117 -:101A600001A823F0F0F800977088434601AA716935 -:101A700000F0EDFEBDF804002080BDF80600E08017 -:101A8000BDF808002081A21C0DF10A01484612F0A1 -:101A90009AFBB9F1000F00D018B184F804A0A4F8A3 -:101AA00002A007EB080087B20A346D1EADB2D6D291 -:101AB000C4E705EB850C00EB4C0018803220088051 -:101AC000002ABBD0A8F1050000F0FF09558137E0DE -:101AD00000977088434601AA716900F0B8FE9DF82E -:101AE0000600BDF80410E1802179420860F300018E -:101AF00062F34101820862F38201C20862F3C3010A -:101B0000020962F30411420962F34511820962F38A -:101B100086112171C0096071BDF80700208122463D -:101B20000DF10901484612F04EFB18B184F802A0ED -:101B3000A4F800A000E007E007EB080087B20A3431 -:101B40006D1EADB2C4D279E7A8F1020084B205FBE4 -:101B500008F000F10E0CA3F800C035230B80002A1A -:101B6000A6D055819481009783B270880E32716936 -:101B700000F06DFE62E72DE9F84F1E460A9D0C4607 -:101B800081462AB1607A00F58070D080E0891081AA -:101B900099F80C000C274FF000084FF00E0A0D28A2 -:101BA00073D2DFE800F09E070E1C28303846556AD5 -:101BB00073737300214648460095FFF779FEBDE830 -:101BC000F88F207B9146082802D0032800D0FFDF41 -:101BD000378030200AE000BFA9F80A80EFE7207BB9 -:101BE0009146042800D0FFDF378031202880B9F1EA -:101BF000000FF1D1E3E7207B9146042800D0FFDFFE -:101C000037803220F2E7207B9146022800D0FFDFA8 -:101C100037803320EAE7207B1746022800D0FFDF19 -:101C20003420A6F800A02880002FC8D0A7F80A808A -:101C3000C5E7207B1746042800D0FFDF3520A6F833 -:101C400000A02880002FBAD04046A7F80A8012E0F2 -:101C5000207B1746052802D0062800D0FFDF102081 -:101C6000308036202880002FA9D0E0897881A7F81D -:101C70000E80B9F80E00B881A1E7207B91460728B5 -:101C800000D0FFDF37803720B0E72AE04FF01200A6 -:101C900018804FF038001700288090D0E0897881B4 -:101CA000A7F80E80A7F8108099F80C000A2805D034 -:101CB0000B2809D00C280DD0FFDF80E7207B0A28F5 -:101CC00000D0FFDF01200AE0207B0B2800D0FFDFDF -:101CD000042004E0207B0C2800D0FFDF05203873AF -:101CE0006DE7FFDF6BE770B50C46054601F0ABFB17 -:101CF00020B10078222804D2082070BD43F20200EF -:101D000070BD0521284610F0D1FC206008B10020EC -:101D100070BD032070BD30B44880087820F00F00FB -:101D2000C01C20F0F000903001F8080B1DCA81E8BB -:101D30001D0030BC07F0C5BB2DE9FF4784B000276C -:101D40008246029707989046894612300AF09EF91B -:101D5000401D20F00306079828B907A95046FFF751 -:101D6000C2FF002854D1B9F1000F05D00798017BBC -:101D700019BB052504681BE098F80000092803D06A -:101D80000D2812D0FFDF46E0079903254868B0B35D -:101D9000497B42887143914239D98AB2B3B2011D5D -:101DA00010F0F7FA0446078002E0079C0425083487 -:101DB0000CB1208810B1032D29D02CE00798012107 -:101DC00012300AF095F9ADF80C00024602AB294634 -:101DD000504608F0E4F9070001D1A01C02900798D2 -:101DE0003A461230C8F80400A8F802A003A94046F9 -:101DF000029B0AF08AF9D8B10A2817D200E006E05F -:101E0000DFE800F007091414100B0D14141213204E -:101E100014E6002012E6112010E608200EE643F238 -:101E200003000BE6072009E60D2007E6032005E680 -:101E3000BDF80C002346CDE900702A4650460799AC -:101E400000F015FD57B9032D08D10798B3B2417BB7 -:101E5000406871438AB2011D10F0AFFAB9F1000F6A -:101E6000D7D0079981F80C90D3E72DE9FE4F914622 -:101E70001A881C468A468046FAB102AB494608F0E9 -:101E80008EF9050019D04046A61C278810F052FD97 -:101E90003246072629463B46009610F060F9208816 -:101EA0002346CDE900504A465146404600F0DFFC4B -:101EB000002020800120BDE8FE8F0020FBE710B548 -:101EC00086B01C46AAB104238DF800301388ADF803 -:101ED00008305288ADF80A208A788DF80E200988DB -:101EE000ADF80C1000236A462146FFF725FF06B027 -:101EF00010BD1020FBE770B50D46052110F0D6FB94 -:101F0000040000D1FFDF294604F11200BDE8704053 -:101F10000AF0D7B82DE9F8430D468046002607F0B1 -:101F2000CDFA04462878102878D2DFE800F0773B15 -:101F30003453313112313131083131313131287975 -:101F4000001FC0B2022801D0102810D114BBFFDF3F -:101F500035E004B9FFDF0521404610F0A7FB007B08 -:101F6000032806D004280BD0072828D0FFDF072637 -:101F700055E02879801FC0B2022820D050B1F6E782 -:101F80002879401FC0B2022819D0102817D0EEE7D8 -:101F900004B9FFDF13E004B9FFDF287901280ED16F -:101FA000172137E00521404610F080FB070000D1E3 -:101FB000FFDF07F1120140460AF060F82CB12A4613 -:101FC00021464046FFF7A7FE29E01321404602F0D4 -:101FD000F1FC24E004B9FFDF0521404610F066FB68 -:101FE000060000D1FFDF694606F112000AF050F842 -:101FF000060000D0FFDFA988172901D2172200E0D0 -:102000000A46BDF80000824202D9014602E005E01E -:102010001729C5D3404600F03AFCD0E7FFDF304631 -:10202000BDE8F883401D20F0030219B102FB01F066 -:10203000001D00E000201044704713B5009848B11F -:102040000024684610F04FF9002C02D1F74A00999D -:1020500011601CBD01240020F4E72DE9F0470C4677 -:1020600015462421204622F0EEFD05B9FFDFA878B1 -:1020700060732888DFF8B4A3401D20F00301AF7817 -:102080008946DAF8000010F04CF9060000D1FFDFB5 -:102090004FF000082660A6F8008077B109FB07F131 -:1020A000091D0AD0DAF8000010F03BF9060000D153 -:1020B000FFDF6660C6F8008001E0C4F8048029886C -:1020C00004F11200BDE8F04709F0CABF2DE9F0475E -:1020D000804601F112000D46814609F0D7FF401DF0 -:1020E000D24F20F003026E7B14462968386810F046 -:1020F00043F93EB104FB06F2121D03D0696838684B -:1021000010F03AF9052010F079FA0446052010F095 -:102110007DFA201A012802D1386810F0F7F84946F4 -:102120004046BDE8F04709F0B0BF70B5054605214F -:1021300010F0BCFA040000D1FFDF04F112012846C0 -:10214000BDE8704009F09ABF2DE9F04F91B04FF013 -:10215000000BADF834B0ADF804B047880C46054626 -:1021600092460521384610F0A1FA060000D1FFDFA3 -:1021700024B1A780A4F806B0A4F808B029780922F1 -:102180000B20B2EB111F7DD12A7A04F11001382700 -:102190004FF00C084FF001090391102A73D2DFE8C9 -:1021A00002F072F2F1F07F08D2888D9F3DDBF3EEF2 -:1021B000B6B6307B022800D0FFDFA88908EBC0014B -:1021C000ADF804103021ADF83410002C25D060811A -:1021D000B5F80E9000271DE004EBC708317C88F8A5 -:1021E0000E10F189A8F80C10CDF80090688804232F -:1021F00004AA296900F02BFBBDF81010A8F81010F4 -:1022000009F10400BDF812107F1C1FFA80F9A8F82C -:102210001210BFB26089B842DED80DE1307B0228CF -:1022200000D0FFDFE98908EBC100ADF804003020E1 -:10223000ADF83400287B0A90001FC0B20F90002C2C -:10224000EBD06181B5F81090002725E0CDF8009023 -:102250006888696903AA0A9B00F0F9FA0A9804EBF6 -:10226000C70848441FFA80F908F10C0204A90F9826 -:1022700011F0A9FF18B188F80EB0A8F80CB0BDF89D -:102280000C1001E0D4E0CFE0A8F81010BDF80E105B -:102290007F1CA8F81210BFB26089B842D6D8CBE034 -:1022A0000DA8009001AB224629463046FFF71BFBE4 -:1022B000C2E0307B082805D0FFDF03E0307B082830 -:1022C00000D0FFDFE8891030ADF804003620ADF80B -:1022D0003400002C3FD0A9896181F189A18127E0D8 -:1022E000307B092800D0FFDFA88900F10C01ADF890 -:1022F00004103721ADF83410002C2CD06081E8890F -:102300000090AB89688804F10C02296956E0E889DD -:102310003921103080B2ADF80400ADF83410002C33 -:1023200074D0A9896181287A0E280AD002212173EC -:10233000E989E181288A0090EB8968886969039AB4 -:102340003CE00121F3E70DA8009001AB22462946AD -:102350003046FFF759FB6FE0307B0A2800D0FFDFE3 -:102360001220ADF80400ADF834704CB3A989618136 -:10237000A4F810B0A4F80EB084F80C905CE020E053 -:1023800002E031E039E042E0307B0B2800D0FFDF93 -:10239000288AADF834701230ADF8040084B10421FD -:1023A0002173A9896181E989E181298A2182688A69 -:1023B00000902B8A688804F11202696900F047FADC -:1023C0003AE0307B0C2800D0FFDF1220ADF804008B -:1023D000ADF834703CB305212173A4F80AB0A4F819 -:1023E0000EB0A4F810B027E00DA8009001AB224673 -:1023F00029463046FFF75CFA1EE00DA8009001ABBD -:10240000224629463046FFF7B6FB15E034E03B2173 -:10241000ADF80400ADF8341074B3A4F80690A4F835 -:1024200008B084F80AB007E0FFDF05E010000020E4 -:10243000297A012917D0FFDFBDF80400AAF80000AF -:102440006CB1BDF834002080BDF804006080BDF898 -:102450003400392803D03C2801D086F80CB011B0E4 -:102460000020BDE8F08F3C21ADF80400ADF8341039 -:1024700014B1697AA172DFE7AAF80000EFE72DE94D -:10248000F84356880F46804615460521304610F021 -:102490000DF9040000D1FFDF123400943B464146A1 -:1024A00030466A6809F065FFBAE570B50D4605214A -:1024B00010F0FCF8040000D1FFDF294604F11200FF -:1024C000BDE8704009F0EFBD70B50D46052110F074 -:1024D000EDF8040000D1FFDF294604F11200BDE849 -:1024E000704009F00DBE70B50546052110F0DEF80C -:1024F000040000D1FFDF04F1080321462846BDE8AF -:1025000070400422B1E470B50546052110F0CEF804 -:10251000040000D1FFDF214628462368BDE8704053 -:102520000522A2E470B50646052110F0BFF80400AC -:1025300000D1FFDF04F1120009F0A8FD401D20F0DA -:10254000030511E0011D008803224318214630468F -:10255000FFF78BFC00280BD0607BABB2684382B2E4 -:102560006068011D0FF05FFF606841880029E9D1B4 -:1025700070BD70B50E46054606F0A0FF040000D100 -:10258000FFDF0120207266726580207820F00F0046 -:10259000C01C20F0F00030302070BDE8704006F024 -:1025A00090BF2DE9F0438BB00D461446814606A935 -:1025B000FFF799FB002814D14FF6FF7601274FF45F -:1025C00020588CB103208DF800001020ADF81000C9 -:1025D00007A8059007AA204604A911F013FE78B1B8 -:1025E00007200BB0BDE8F0830820ADF808508DF847 -:1025F0000E708DF80000ADF80A60ADF80C800CE0AC -:102600000698A17801742188C1818DF80E70ADF80B -:102610000850ADF80C80ADF80A606A4602214846C1 -:10262000069BFFF789FBDCE708B501228DF8022045 -:1026300042F60202ADF800200A4603236946FFF77E -:102640003EFC08BD08B501228DF8022042F60302C7 -:10265000ADF800200A4604236946FFF730FC08BDA8 -:1026600000B587B079B102228DF800200A88ADF854 -:1026700008204988ADF80A1000236A460521FFF7B3 -:102680005BFB07B000BD1020FBE709B1072316E490 -:102690000720704770B588B00D461446064606A957 -:1026A000FFF721FB00280ED17CB10620ADF80850C1 -:1026B0008DF80000ADF80A40069B6A460821DC81CF -:1026C0003046FFF739FB08B070BD05208DF80000DB -:1026D000ADF80850F0E700B587B059B107238DF881 -:1026E0000030ADF80820039100236A460921FFF766 -:1026F00023FBC6E71020C4E770B588B00C46064639 -:10270000002506A9FFF7EFFA0028DCD10698012181 -:10271000123009F0EDFC9CB12178062921D2DFE8C6 -:1027200001F0200505160318801E80B2C01EE28845 -:1027300080B20AB1A3681BB1824203D90C20C2E760 -:102740001020C0E7042904D0A08850B901E0062079 -:10275000B9E7012913D0022905D004291CD0052985 -:102760002AD00720AFE709208DF800006088ADF877 -:102770000800E088ADF80A00A068039023E00A2072 -:102780008DF800006088ADF80800E088ADF80A0018 -:10279000A0680A25039016E00B208DF800006088E1 -:1027A000ADF80800A088ADF80A00E088ADF80C008C -:1027B000A0680B25049006E00C208DF800006078DE -:1027C0008DF808000C256A4629463046069BFFF71F -:1027D000B3FA78E700B587B00D228DF80020ADF888 -:1027E000081000236A461946FFF7A6FA49E700B524 -:1027F00087B071B102228DF800200A88ADF8082058 -:102800004988ADF80A1000236A460621FFF794FABA -:1028100037E7102035E770B586B0064601200D4633 -:10282000ADF808108DF80000014600236A463046D6 -:10283000FFF782FA040008D12946304605F04CFC27 -:102840000021304605F066FC204606B070BDF8B5A4 -:102850001C4615460E46069F10F05AF82346FF1DEB -:10286000BCB231462A4600940FF045FCF8BD30B4A6 -:102870001146DDE902423CB1032903D0002330BCFC -:1028800008F018BB0123FAE71A8030BC704770B516 -:102890000C460546FFF72FFB2146284605F02BFC8A -:1028A0002846BDE87040012105F034BC4FF0E0221D -:1028B0004FF400400021C2F88001BFF34F8FBFF3F7 -:1028C0006F8F1748016001601649900208607047D9 -:1028D000134900B500220A600A60124B4FF0607283 -:1028E0001A60002808BF00BD0F4A104BDFF840C037 -:1028F00001280CD002281CBFFFDF00BD03200860A8 -:102900001A604FF4000000BFCCF8000000BD0220A8 -:1029100008601A604FF04070F6E700B5FFDF00BDB9 -:1029200000F5004008F501409C02002014F500402D -:1029300004F5014070B50B2000F0BDF9082000F04F -:10294000BAF900210B2000F0D4F90021082000F092 -:10295000D0F9F44C01256560A5600020C4F8400161 -:10296000C4F84401C4F848010B2000F0B5F9082070 -:1029700000F0B2F90B2000F091F9256070BD10B5A0 -:102980000B2000F098F9082000F095F9E5480121A6 -:1029900041608160E4490A68002AFCD10021C0F846 -:1029A0004011C0F84411C0F848110B2000F094F910 -:1029B000BDE81040082000F08FB910B50B2000F0E2 -:1029C0008BF9BDE81040082000F086B900B530B1A1 -:1029D000012806D0022806D0FFDF002000BDD34822 -:1029E00000BDD34800BDD248001D00BD70B5D1491F -:1029F0004FF000400860D04DC00BC5F80803CF4829 -:102A000000240460C5F840410820C43500F053F9A3 -:102A1000C5F83C41CA48047070BD08B5C14A0021E0 -:102A200028B1012811D002281CD0FFDF08BD4FF4C7 -:102A30008030C2F80803C2F84803BB483C3001604C -:102A4000C2F84011BDE80840D0E74FF40030C2F8AA -:102A50000803C2F84803B44840300160C2F844118A -:102A6000B3480CE04FF48020C2F80803C2F84803D2 -:102A7000AD4844300160C2F84811AD48001D0068FF -:102A8000009008BD70B516460D460446022800D9D0 -:102A9000FFDF0022A348012304F110018B4000EB6B -:102AA0008401C1F8405526B1C1F84021C0F8043373 -:102AB00003E0C0F80833C1F84021C0F8443370BDCA -:102AC0002DE9F0411D46144630B1012833D00228CB -:102AD00038D0FFDFBDE8F081891E002221F07F4160 -:102AE0001046FFF7CFFF012D23D00020944D924FC9 -:102AF000012668703E61914900203C39086002203F -:102B0000091D08608D490420303908608B483D3428 -:102B1000046008206C6000F0DFF83004C7F804039C -:102B2000082000F0BBF88349F007091F08602E70E9 -:102B3000D0E70120DAE7012B02D00022012005E0D6 -:102B40000122FBE7012B04D000220220BDE8F04166 -:102B500098E70122F9E774480068704770B500F003 -:102B6000D8F8704C0546D4F840010026012809D158 -:102B7000D4F80803C00305D54FF48030C4F8080327 -:102B8000C4F84061D4F8440101280CD1D4F80803FA -:102B9000800308D54FF40030C4F80803C4F844613A -:102BA000012012F0FCFAD4F8480101280CD1D4F825 -:102BB0000803400308D54FF48020C4F80803C4F884 -:102BC0004861022012F0EBFA5E48056070BD70B5F6 -:102BD00000F09FF85A4D0446287850B1FFF706FFE1 -:102BE000687818B10020687012F0D9FA554804606E -:102BF00070BD0320F8E74FF0E0214FF40010C1F85A -:102C000000027047152000F067B84B4901200861A9 -:102C1000082000F061B848494FF47C10C1F808035F -:102C20000020024601EB8003C3F84025C3F8402191 -:102C3000401CC0B20628F5D37047410A43F609523A -:102C40005143C0F3080010FB02F000F5807001EB67 -:102C50005020704710B5430B48F2376463431B0C98 -:102C60005C020C60384C03FB0400384B4CF2F72438 -:102C700043435B0D13FB04F404EB402000F580702C -:102C80004012107008681844086010BD2C48406855 -:102C9000704729490120C1F800027047002809DB6C -:102CA00000F01F02012191404009800000F1E02066 -:102CB000C0F80011704700280DDB00F01F02012151 -:102CC00091404009800000F1E020C0F88011BFF37E -:102CD0004F8FBFF36F8F7047002809DB00F01F0292 -:102CE000012191404009800000F1E020C0F88012ED -:102CF00070474907090E002804DB00F1E02080F846 -:102D00000014704700F00F0000F1E02080F8141D5F -:102D100070470C48001F00680A4A0D49121D1160D7 -:102D20007047000000B0004004B500404081004002 -:102D300044B1004008F5014000800040408500405B -:102D40003400002014050240F7C2FFFF6F0C0100A1 -:102D5000010000010A4810B5046809490948083112 -:102D6000086012F0B0FA0648001D046010BD064964 -:102D7000002008604FF0E0210220C1F88002704777 -:102D80001005024001000001FC1F004010B50D209D -:102D900000F077F8C4B26FF0040000F072F8C0B22F -:102DA000844200D0FFDF3E490120086010BD70B5AD -:102DB0000D2000F048F83B4C0020C4F8000101252C -:102DC000C4F804530D2000F04FF825604FF0E021C7 -:102DD0006014C1F8000170BD10B50D2000F033F88B -:102DE0003048012141600021C0F80011BDE81040C9 -:102DF0000D2000F039B82C4810B504682A492B483A -:102E0000083108602749D1F80001012804D0FFDF0C -:102E10002548001D046010BD2148001D00680022E7 -:102E2000C0B2C1F8002112F09BFEF1E710B51D48B9 -:102E3000D0F800110029FBD0FFF7DDFFBDE81040FE -:102E40000D2000F011B800280DDB00F01F02012159 -:102E500091404009800000F1E020C0F88011BFF3EC -:102E60004F8FBFF36F8F7047002809DB00F01F0200 -:102E7000012191404009800000F1E020C0F880125B -:102E80007047002804DB00F1E02090F8000405E022 -:102E900000F00F0000F1E02090F8140D4009704799 -:102EA00004D5004000D000401005024001000001A0 -:102EB0004FF0E0214FF00070C1F8800101F5C071C2 -:102EC000BFF34F8FBFF36F8FC1F80001384B8022E3 -:102ED00083F8002441F8800C704700B502460420B6 -:102EE000344903E001EBC0031B792BB1401EC0B293 -:102EF000F8D2FFDFFF2000BD41F8302001EBC00118 -:102F000000224A718A7101220A7100BD294A0021FA -:102F100002EBC0000171704710B50446042800D3CD -:102F2000FFDF244800EBC4042079012800D0FFDF34 -:102F30006079A179401CC0B2814200D060714FF02D -:102F4000E0214FF00070C1F8000210BD2DE9F04102 -:102F500019480568184919480831086014480426BA -:102F600090F80004134F4009154C042818D0FFDFD7 -:102F700016E0217807EBC1000279012A08D14279D5 -:102F800083799A4204D04279827157F831008047A0 -:102F90002078401CC0B22070042801D3002020708B -:102FA000761EF6B2E5D20448001D0560BDE8F0814A -:102FB00019E000E0D40500201005024001000001E6 -:102FC000500000200548064A0168914201D10021C5 -:102FD000016004490120086070470000540000208F -:102FE000BEBAFECA40E5014070B50C46054609F080 -:102FF0005DFB21462846BDE870400AF042BC7047A0 -:103000002CFFFFFFDBE5B15100600200AF00FFFFC6 -:103010008400000068915B008308DF2FACFED63986 -:1030200029D64B9DC15EF1868A16B47C30B5F84D29 -:103030000446062CA9780ED2DFE804F0030E0E0E2B -:103040000509FFDF08E0022906D0FFDF04E00329BD -:1030500002D0FFDF00E0FFDFAC7030BD30B50446CA -:103060001038EB4D07280CD2DFE800F0040C060CFA -:103070000C0C0C00FFDF05E0287E112802D0FFDFDA -:1030800000E0FFDF2C7630BD2DE9F04111F024FA8D -:10309000044612F0F5FB201AC5B206200FF0AEFA76 -:1030A000044606200FF0B2FA211AD94C207E1228CD -:1030B00018D000200F1807200FF0A0FA06460720AE -:1030C0000FF0A4FA301A3918207E13280CD00020F3 -:1030D0000144A078042809D000200844281AC0B26E -:1030E000BDE8F0810120E5E70120F1E70120F4E7E8 -:1030F000C74810B590F825004108C54800F12600E2 -:1031000005D00DF09CFABDE8104005F0F9BF0DF0B8 -:1031100077FAF8E730B50446A1F120000D460A28F9 -:103120004AD2DFE800F005070C1C2328353A3F445B -:10313000FFDF42E0207820283FD1FFDF3DE0B448A8 -:103140008178052939D0007E122836D020782428AD -:1031500033D0252831D023282FD0FFDF2DE0207851 -:1031600022282AD0232828D8FFDF26E0207822280A -:1031700023D0FFDF21E0207822281ED024281CD075 -:1031800026281AD0272818D0292816D0FFDF14E0C7 -:103190002078252811D0FFDF0FE0207825280CD0DB -:1031A000FFDF0AE02078252807D0FFDF05E0207840 -:1031B000282802D0FFDF00E0FFDF257030BD1FB5FB -:1031C00004466A46002001F02FFEB4B1BDF802208B -:1031D0004FF6FF700621824201D1ADF80210BDF812 -:1031E0000420824201D1ADF80410BDF808108142DC -:1031F00003D14FF44860ADF8080068460DF090FF29 -:1032000005F07EFF04B010BD70B514460D460646AD -:10321000FEF759F858B90DB1A54201D90C2070BD7F -:10322000002408E056F82400FEF74DF808B11020FD -:1032300070BD641CE4B2AC42F4D3002070BD2DE933 -:10324000F04105461F4690460E4600240068FEF7F2 -:1032500087F830B9A98828680844401EFEF780F82E -:1032600008B110203CE728680028A88802D0B8429E -:1032700002D850E00028F5D0092031E72968085D20 -:10328000B8B1671CCA5D152A2ED03CDC152A3AD28B -:10329000DFE802F03912222228282A2A313139396E -:1032A00039393939393939392200085D30BB641C64 -:1032B000A4B2A242F9D833E00228DDD1A01C085CF8 -:1032C00088F80000072801D2400701D40A2007E748 -:1032D000307840F0010015E0C143C90707E001283C -:1032E00007D010E00620FBE60107A1F1805100297C -:1032F000F5D01846F4E63078810701D50B20EFE6CB -:1033000040F0020030702868005D384484B2A8881C -:10331000A04202D2B0E74FF4485382B2A242ADD8E5 -:103320000020DDE610B5027843F2022354080122A2 -:10333000022C12D003DC3CB1012C16D106E0032C88 -:1033400010D07F2C11D112E0002011E080790324ED -:10335000B4EB901F09D10A700BE08079B2EB901F9B -:1033600003D1F8E780798009F5D0184610BDFF2019 -:103370000870002010BD08B500208DF8000024481A -:1033800090F82E1049B190F82F0002280ED0032893 -:103390000ED0FFDF9DF8000008BD1D4869462530AE -:1033A00001F091FD0028F5D0FFDFF3E7032000E0F6 -:1033B00001208DF80000EDE738B50C46054669465A -:1033C00001F081FD00280DD19DF80010207861F3F7 -:1033D0004700207055F8010FC4F80100A888A4F830 -:1033E0000500002038BD38B51378A8B1022813D0E5 -:1033F000FF281AD007A46D46246800944C7905EB89 -:103400009414247864F347031370032809D00FE061 -:10341000E80100200302FF0123F0FE0313700228DD -:10342000F3D1D8B240F0010005E043F0FE00107087 -:10343000107820F0010010700868C2F80100888838 -:10344000A2F8050038BD02210FF030B938B50C469E -:103450000978222901D2082038BDADF800008DF886 -:10346000022068460DF02DF905F04AFE050003D153 -:1034700021212046FFF74EFE284638BD1CB500200E -:103480008DF80000CDF80100ADF80500FE4890F879 -:103490002E00022801D0012000E000208DF8070056 -:1034A00068460DF069FA002800D0FFDF1CBD00223D -:1034B0000A80437892B263F3451222F040020A80F8 -:1034C00000780C282BD2DFE800F02A06090E11162E -:1034D000191C1F220C2742F0110009E042F01D00C8 -:1034E00008800020704742F0110012E042F0100006 -:1034F00040F00200F4E742F01000F1E742F0010072 -:10350000EEE742F0010004E042F00200E8E742F09A -:10351000020040F00400E3E742F00400E0E7072087 -:1035200070472DE9FF478AB00025BDF82C60824620 -:103530001C4690468DF81C50700703D56068FDF757 -:10354000C2FE68B9D04F4FF0010997F82E0058B16C -:1035500097F82F00022807D16068FDF701FF18B126 -:1035600010200EB0BDE8F087300702D5A089802872 -:1035700016D8700705D4B8F1000F02D097F82400D0 -:1035800070B1E07DC0F300108DF81B00617D072055 -:1035900041B1012906D00229E3D00429E1D12CE070 -:1035A0000720DEE749468DF81790F00609D4A27D82 -:1035B000072032B1012A04D0022A05D0042AD0D132 -:1035C0001BE08DF8191002E002208DF819008DF82B -:1035D00015806068B0B107A9FFF7A4FE0028C0D12C -:1035E0009DF81C00FF280AD0606850F8011FCDF834 -:1035F0000F108088ADF8130008E00620B1E743F211 -:103600000220AEE7CDF80F50ADF81350E07B002854 -:10361000F3D1207C0028F0D1607C0028EDD1A07C83 -:103620000028EAD1E07CC006E7D18DF800A0BDF803 -:103630002C00ADF80200A0680190A068029004F18F -:103640000F0001F034FC8DF80C00FFF794FE8DF8AC -:103650000D009DF81C008DF80E008DF816508DF8A9 -:103660001850E07D08A900F00F008DF81A00684698 -:103670000DF09DFE05F044FD73E7F0B58FB0002519 -:103680008DF830508DF814508DF8345006468DF872 -:103690002850019502950395049519B10FC901AC05 -:1036A00084E80F00784CA078052801D004280CD1BC -:1036B00001986168884200D120B90398E168884286 -:1036C00003D110B108200FB0F0BD207DC00601D598 -:1036D0001F2700E0FF273B460DAA05A903A8FFF717 -:1036E000AEFD0028EFD1A08AC10702D0C00600D4E9 -:1036F000EE273B460AAA0CA901A8FFF7A0FD002867 -:10370000E1D19DF81400C00701D00A20DBE7A08AB0 -:10371000410708D4A17D31B19DF82810890702D056 -:1037200043F20120CFE79DF82810C90709D04007D0 -:1037300007D4208818B144F25061884201D907208B -:10374000C1E78DF818508DF81960BDF80800ADF884 -:103750001A000198079006A80DF043FE05F0D0FC72 -:103760000028B0D18DF820508DF82160BDF81000F0 -:10377000ADF822000398099008A80DF051FE05F05D -:10378000BFFC00289FD101AD241D95E80F0084E8FF -:103790000F00002097E770B586B00D46040005D0F5 -:1037A000FDF7DEFD20B1102006B070BD0820FBE75C -:1037B0002078C107A98802D0FF2902D303E01F297E -:1037C00001D20920F0E780073BD4FFF75DFC38B158 -:1037D0002178C1F3C100012804D0032802D005E0FC -:1037E0001320E1E7284890F82400C8B1C8074FF03B -:1037F00001064FF0000502D08DF80F6001E08DF852 -:103800000F50FFF7B8FD8DF8000020786946C0F32F -:10381000C1008DF8010060788DF80250C20801D017 -:103820000720C1E778B1C20701D08DF80260820796 -:1038300005D59DF8022042F002028DF802204007D3 -:1038400003D50620B0E78DF80260002022780B181F -:10385000C2F38002DA7001EB40026388D380401C1F -:10386000A388C0B253810228F0D3207A0028E8D17F -:10387000607A0028E5D1A07A0028E2D1E07A002819 -:10388000DFD1207BC00601E0E8010020D9D104F19E -:10389000080001F00CFB8DF80E0068460DF097F95A -:1038A00005F02EFC00288DD18DF810608DF8115098 -:1038B000E088ADF81200ADF8145004A80DF0DAF964 -:1038C00005F01EFC00288CD12078C00701D01520FF -:1038D00000E01320FFF7C2FB002065E72DE9FF475A -:1038E0000220FC4E8DF804000027708EADF8060013 -:1038F000B84643F202094CE001A80EF03EFE050076 -:1039000006D0708EA8B3A6F83280ADF806803EE0EF -:10391000039CA07F01072DD504F124000090A28E06 -:10392000BDF80800214604F1360301F054FC0500FF -:1039300005D04D452AD0112D3CD0FFDF3AE0A07FC5 -:1039400020F00801E07F420862F3C711A1778108E7 -:1039500061F30000E07794F8210000F01F0084F884 -:1039600020002078282826D129212046FFF7D2FBE5 -:1039700021E014E040070AD5BDF8080004F10E016B -:1039800001F0ABFA05000DD04D4510D100257F1C8C -:10399000FFB202200EF032FE401CB842ACD8052D1A -:1039A00011D008E0A07F20F00400A07703E0112DE3 -:1039B00000D0FFDF0025BDF806007086052D04D07D -:1039C000284604B0CEE5A6F832800020F9E770B5AD -:1039D0000646FFF738FD054605F070FD040000D1EE -:1039E000FFDF6680207820F00F00801C20F0F000C0 -:1039F000203020700320207295F83E006072BDE8F0 -:103A0000704005F05EBD2DE9F04786B0040000D19E -:103A1000FFDF2078AF4D20F00F00801C20F0F00079 -:103A20007030207060680178491F1B2933D2DFE8AD -:103A300001F0FC32323255FB320EFBFB42FA3232DD -:103A40003278FAFAF9F83232FAFAF7F6FA00C6885A -:103A50003046FFF7F8FC0546304607F029F9E0B19B -:103A60006068007A85F83E0021212846FFF752FB66 -:103A70003046FEF75AFB304603F050FE3146012037 -:103A800012F02EFBA87F20F01000A877FFF726FF8A -:103A9000002800D0FFDF06B064E5207820F0F000B9 -:103AA000203020700320207266806068007A607287 -:103AB00005F007FDD8E7C5882846FFF7C4FC00B924 -:103AC000FFDF60680079012800D0FFDF6068017ABD -:103AD00006B02846BDE8F04707F0C9BCC6883046A6 -:103AE000FFF7B1FC050000D1FFDF05F0EAFC6068DC -:103AF00031460089288160684089688160688089D2 -:103B0000A881012012F0ECFA0020A875A87F00F02F -:103B100003000228BFD1FFF7E1FE0028BBD0FFDF82 -:103B2000B9E700790228B6D000B1FFDF05F0C9FC83 -:103B30006668B6F806A0307A361D012806D0687E81 -:103B4000814605F049FA070003D101E0E878F7E77C -:103B5000FFDF0022022150460EF09FFD040000D13D -:103B6000FFDF22212046FFF7D5FA3079012800D067 -:103B70000220A17F804668F30101A177308B20816C -:103B8000708B6081B08BA08184F822908DF80880C2 -:103B9000B8680090F86801906A46032150460EF01C -:103BA0007CFD00B9FFDFB888ADF81000B8788DF85B -:103BB000120004AA052150460EF06FFD00B9FFDF88 -:103BC000B888ADF80C00F8788DF80E0003AA04212F -:103BD00050460EF062FD00B9FFDF062106F112002B -:103BE00001F099F940B37079800700D5FFDF717952 -:103BF000E07D61F34700E075D6F80600A0617089AA -:103C0000A083062106F10C0001F085F9F0B195F8CA -:103C100025004108607861F34700607006E040E0ED -:103C200038E070E058E04DE02EE042E0D5F82600A4 -:103C3000C4F80200688D12E0E07D20F0FE00801CD8 -:103C4000E075D6F81200A061F08AD9E7607820F01C -:103C5000FE00801C6070F068C4F80200308AE080CA -:103C6000B8F1010F04D0B8F1020F05D0FFDF12E761 -:103C70000320FFF7DBF90EE7287E122800D0FFDFD4 -:103C80001120FFF7EBF906E706B02046BDE8F04744 -:103C900001F02ABD05F015FC15F8300F40F00200C8 -:103CA00005E005F00EFC15F8300F40F00400287018 -:103CB000F1E6287E13280AD01528D8D15FF0160027 -:103CC000FFF7CCF906B0BDE8F04705F0FABB1420C9 -:103CD000F6E70000E8010020A978052909D00429A9 -:103CE000C5D105F0EEFB022006B0BDE8F047FFF7B6 -:103CF0009DB900790028BAD0E87801F0BFF805F046 -:103D0000E0FB0320F0E7287E122802D1687E01F054 -:103D1000B5F81120D4E72DE9F047054600784FF0BB -:103D200000080009DFF8C0A891460C464646012865 -:103D300075D0022874D007280AD00A2871D0FFDF76 -:103D4000A9F8006014B1A4F800806680002009E49E -:103D50006968012704F108000A784FF0020C4FF659 -:103D6000FF73172A7ED00EDC142A32D006DC052A17 -:103D700068D0092A10D0102A75D120E0152A73D0F6 -:103D8000162AF9D1F8E0183A082A6CD2DFE802F0D6 -:103D9000F36B6B0ACAF2DFF1C8884FF012081026E5 -:103DA00021468DE14FF01C080A26BCB38888A0800C -:103DB0006868807920726868C0796072C0E74FF0E7 -:103DC0001B08142654B30320207268688088A080E2 -:103DD000B6E70A793C2AB3D00D1D4FF010082C2607 -:103DE000E4B16988A180298B6182298B2182698B4A -:103DF000A182A98BE1826B790246A91D1846FFF7C3 -:103E0000F2FA2979002001290CD084F80FC0FF2193 -:103E10002176E06120626062A06291E70FE02EE10E -:103E200051E18CE1E77320760AF1040090E80E007E -:103E3000DAF81000C4E90930C4E9071280E7A9F8EC -:103E4000006083E72C264FF01D08002CF7D00546B4 -:103E5000A380887B2A880F1D60F300022A80887B5C -:103E6000400802E09DE007E1BEE060F341022A80E5 -:103E7000887B800860F382022A80887BB91CC00896 -:103E800060F3C3022A80B87A0011401C60F3041268 -:103E900002F07F0028807878AA1CFFF7A4FA387D0A -:103EA00005F1090207F11501FFF79DFA387B01F0D2 -:103EB00041F82874787B01F03DF86874F87EA874A6 -:103EC000787AE874387F2875B87B6875388AE88214 -:103ED000DAF81C00A861B87A524697F808A0C0F337 -:103EE0004111012904D0108C504503D2824609E0CB -:103EF000FFDF10E0022903D0288820F0600009E0ED -:103F0000504504D1288820F06000403002E0288825 -:103F100040F060002880A4F824A0524607F11D015B -:103F2000A86996E011264FF02008002C87D0A380C6 -:103F3000686804F10A02007920726868007B607288 -:103F400069688B1D48791946FFF74DFAF8E60A268D -:103F50004FF02108002CE9D08888A080686880791B -:103F600020726868C07960729AF8301021F00401FC -:103F70009FE065E04CE06FE00B264FF02208002C3C -:103F8000D4D0C888A0806868007920726868007AF8 -:103F900000F0D0FF60726868407A00F0CBFFA0723A -:103FA000CEE61C264FF02608002CBFD0A380686800 -:103FB000407960726868007AA0720AF1040090E8A3 -:103FC0000E00DAF81000C4E90530C4E9031268688D -:103FD00000793C2803D0432803D0FFDFB0E62772E6 -:103FE000AEE684F808C0ABE610264FF02408002C9B -:103FF0009CD08888A0806868807920816868807AF1 -:10400000608168680089A08168688089E08197E69E -:1040100010264FF02308002C88D08888A08068687C -:10402000C088208168680089608168684089A081B3 -:1040300068688089E0819AF8301021F0020138E048 -:1040400030264FF02508002C85D0A38069682822EF -:10405000496820F057FD73E614264FF01B08002C2A -:104060008ED0A380686800790128BAD02772DAE977 -:104070000710C4E9031063E64A46214660E0287A47 -:10408000012803D0022817D0FFDF59E610264FF091 -:104090001F08002C89D06888A080A8892081E88921 -:1040A0006081288AA081688AE0819AF8301021F026 -:1040B00001018AF8301043E64FF012081026688894 -:1040C00000F016FF3CE6287AC8B3012838D0022851 -:1040D00036D0032801D0FFDF32E609264FF0110861 -:1040E000002C85D06F883846FFF7ADF990F822A0F4 -:1040F000A780687A2072042138460EF0E9FA05217B -:1041000038460EF0E5FA002138460EF0E1FA0121BA -:1041100038460EF0DDFA032138460EF0D9FA0221B6 -:1041200038460EF0D5FA062138460EF0D1FA0721AE -:1041300038460EF0CDFA504600F0A0FE00E6FFE74C -:104140002846BDE8F04701F059BC70B5012803D0FE -:10415000052800D0FFDF70BD8DB22846FFF773F948 -:10416000040000D1FFDF20782128F4D005F0A6F963 -:1041700080B1017821F00F01891C21F0F00110318C -:1041800001700221017245800020A075BDE87040D9 -:1041900005F097B921462846BDE870401322FFF785 -:1041A00055B92DE9F04116460C00804600D1FFDFDD -:1041B000307820F00F00801C20F0F00010303070BC -:1041C0002078012804D0022818D0FFDFBDE8F08154 -:1041D0004046FFF738F9050000D1FFDF0320A8753E -:1041E00005F06FF994E80F00083686E80F00FE48E6 -:1041F00010F8301F41F001010170E7E74046FFF77A -:1042000022F9050000D1FFDFA1884FF6FF700027DB -:10421000814202D1E288824203D0814201D1E0880A -:1042200040B105F04EF994E80F00083686E80F001B -:10423000AF75CBE7A87D0128C8D17823002241467D -:1042400011F0A4FE0220A875C0E738B505460C465B -:104250000846FDF738F818BB203D062D4AD2DFE8A6 -:1042600005F0031B373C42300021052011F00EFF02 -:1042700008B1112038BDA01C0CF0A5FF04F040FFD0 -:10428000050038D1002208231146052011F07EFEDA -:10429000052830D0FFDF2EE06068FDF758F808B140 -:1042A000102038BD618820886A460DF03AFA04F083 -:1042B00027FF05001FD16068E8B1BDF8001001803C -:1042C00019E0A07800F0010120880DF05BFA0EE003 -:1042D000206801F03FFE05460DE0207800F0010067 -:1042E0000CF076F903E0618820880DF096F904F06F -:1042F00007FFF0E70725284638BD70B505460C4690 -:104300000846FDF706F808B1102070BD202D07D033 -:10431000212D0DD0222D0BD0252D09D0072070BDC9 -:104320002088A11C0CF02AFABDE8704004F0E8BE19 -:10433000062070BDAC482530704708B53421AA4826 -:1043400020F081FC0120FEF771FE1120FEF786FEB1 -:10435000A5496846263105F047F8A3489DF8002096 -:1043600010F8251F62F3470121F0010101700021BF -:1043700041724FF46171A0F8071002218172FEF7BB -:10438000B7FE00B1FFDFFDF763F801F078F908BD73 -:1043900010B50C464021204620F033FCA07F20F0D1 -:1043A0000300A077202020700020A07584F823004F -:1043B00010BD70472DE9FC410746FCF784FF10B1A2 -:1043C0001020BDE8FC81884E06F12501D6F82500B5 -:1043D0000090B6F82950ADF8045096F82B408DF8AF -:1043E00006403846FEF7E8FF0028EAD1FEF780FED7 -:1043F0000028E6D0009946F8251FB580B471E0E7A3 -:1044000010B50446FCF785FF08B1102010BD7648B2 -:104410007549224690F8250026314008FEF7E3FF53 -:10442000002010BD3EB504460D460846FCF771FF5E -:1044300008B110203EBD14B143F204003EBD6A48ED -:104440008078052803D0042801D008203EBD6946A5 -:1044500002A80AF05DFA2A4669469DF80800FEF7B0 -:10446000C2FF00203EBDFEB50D4604004FF0000720 -:1044700011D00822FEF7C8FE002811D1002608E05E -:1044800054F826006946FEF74DFF002808D1761C37 -:10449000F6B2AE42F4D30BF0E5FF10B143F20320C5 -:1044A000FEBD514E86F824700CB300271BE000BF00 -:1044B00054F8270002A9FEF735FF00B1FFDF9DF891 -:1044C00008008DF8000054F8270050F8011FCDF8BF -:1044D00001108088ADF8050068460BF0E8FF00B1D8 -:1044E000FFDF7F1CFFB2AF42E2D386F824500020EA -:1044F000FEBD2DE9F0478AB01546894604001ED05E -:104500000F4608222946FEF77FFE002811D100261B -:1045100013E000BF54F826006946103000F0D3FCC9 -:10452000002806D13FB157F82600FCF7CCFE10B1A9 -:1045300010200AB00BE4761CF6B2AE42EAD3002695 -:10454000A5F101081CE000BF06F1010A0AF0FF070F -:1045500012E000BF54F82600017C4A0854F82710E6 -:104560000B7CB2EB530F05D106221130113120F034 -:104570009DFA58B17F1CFFB2AF42EBD30AF0FF06A1 -:104580004645E1DB4E4624B1012003E043F205201D -:10459000CFE700200BF0B0FF10B90BF0B9FF10B15E -:1045A00043F20420C5E774B300270DF1170828E093 -:1045B00054F827006946103000F085FC00B1FFDF99 -:1045C00054F82700102250F8111FCDF801108088F0 -:1045D000ADF8050054F827100DF1070020F092FA0D -:1045E000AEB156F8271001E0E80100201022404645 -:1045F00020F088FA68460BF03FFF00B1FFDF7F1C18 -:10460000FFB2AF42D4D3FEF739FF002091E7404616 -:1046100001F094FCEEE730B585B00446FCF753FE9C -:1046200018B96068FCF79CFE10B1102005B030BDD1 -:1046300060884AF2B811884206D82078F84D28B12F -:10464000012806D0022804D00720EFE7FEF750FD2E -:1046500018E06078022804D0032802D043F2022038 -:10466000E4E785F82F00C1B200200090ADF8040007 -:1046700002292CD0032927D0FFDF68460BF0DFFF8B -:1046800004F03EFD0028D1D1606801F04AFC20789A -:1046900058B101208DF800000DF1010001F04EFC31 -:1046A00068460DF0D3F800B1FFDF207885F82E00C2 -:1046B000FEF7E4FE608860B1A88580B20BF014FFBD -:1046C00000B1FFDF0020B1E78DF80500D5E74020FD -:1046D000FAE74FF46170EFE710B50446FCF719FEF6 -:1046E00020B9606838B1FCF732FE08B1102010BD67 -:1046F000606801F023FCCA4830F82C1F6180C17843 -:10470000617080782070002010BD2DE9F8431446B8 -:1047100089460646FCF7FDFDA0B94846FCF720FE99 -:1047200080B92046FCF71CFE60B9BD4DA878012871 -:1047300000D13CB13178FF2906D049B143F20400E1 -:10474000BDE8F8831020FBE7012801D00420F7E73B -:10475000CCB3052811D004280FD069462046FEF7B7 -:10476000A6FE0028ECD1217D49B1012909D00229FA -:1047700009D0032909D00720E2E70820E0E7024634 -:1047800004E0012202E0022200E0032280462346E8 -:10479000174600200099FEF7C4FE0028D0D1A0895A -:1047A0002880A07BE875BDF80000A882AF75BDF831 -:1047B0000010090701D5A18931B1A1892980C0075D -:1047C00004D0032003E006E08021F7E70220FEF793 -:1047D0002DFC86F800804946BDE8F8430020FEF72E -:1047E0004CBF7CB58E4C05460E46A078022803D0FF -:1047F000032801D008207CBD15B143F204007CBD24 -:1048000007200DF003FF10B9A078032806D0FEF7AB -:104810003BFC28B1A078032804D009E012207CBD1D -:1048200013207CBD304600F00CFB0028F9D1E67067 -:10483000FEF7A1FD09F0A9FF01208DF800008DF819 -:1048400001008DF802502088ADF80400E07D8DF85D -:10485000060068460CF0A4FE04F052FC0028E0D1EB -:10486000A078032804D00420FEF7E0FB00207CBDE4 -:10487000E07800F0F6FA0520F6E71CB510B143F237 -:1048800004001CBD664CA078042803D0052801D084 -:1048900008201CBD00208DF8000001218DF80110BA -:1048A0008DF8020068460CF07BFE04F029FC00281D -:1048B000EFD1A078052805D05FF00200FEF7B6FB27 -:1048C00000201CBDE07800F0D9FA0320F6E72DE9BE -:1048D000FC4180460E4603250846FCF741FD0028B2 -:1048E00066D14046FEF7AFFD040004D020782228B0 -:1048F00004D2082065E543F2020062E5A07F00F0E3 -:1049000003073EB1012F0CD000203146FEF757FCC3 -:104910000500EFD1012F06D0022F1AD0FFDF284665 -:104920004FE50120F1E7A07D3146022801D011B109 -:1049300007E0112045E56846FCF797FE0028D9D12D -:104940006946404606F056FD0500E8D10120A075F5 -:10495000E5E7A07D032804D1314890F83000C00776 -:1049600001D02EB30EE026B1A07F40071ED4002157 -:1049700000E00121404606F05DFD0500CFD1A075A5 -:10498000002ECCD03146404600F0A7FA054611284B -:10499000C5D1A07F4107C2D4316844F80E1F7168A9 -:1049A000616040F0040020740025B8E71125B6E7E7 -:1049B000102006E570B50C460546FEF744FD0100E3 -:1049C00005D022462846BDE87040FEF73FBD43F2C1 -:1049D000020070BD10B5012807D1114B9B78012B47 -:1049E00000D011B143F2040010BD0BF0AFFDBDE8E3 -:1049F000104004F085BB012300F04ABA00231A4698 -:104A0000194600F045BA70B506460C460846FCF754 -:104A10005AFC18B92068FCF77CFC18B1102070BD56 -:104A2000E8010020F94D2A7E112A04D0132A00D370 -:104A30003EB10820F3E721463046FEF7ACFE60B1F8 -:104A4000EDE70920132A0DD0142A0BD0A188FF29E5 -:104A5000E5D31520FEF702FB0020D4E90012C5E9DA -:104A60000712DCE7A1881F29D9D31320F2E71CB570 -:104A7000E648007E132801D208201CBD00208DF8D6 -:104A8000000068460CF0F6F804F03AFB0028F4D178 -:104A90001120FEF7E3FA00201CBD2DE9F04FDFF8EE -:104AA0006CA3814691B09AF818009B4615460C46B7 -:104AB000132803D3FFF7DBFF00281FD12046FCF7A4 -:104AC00002FC78BB2846FCF7FEFB58BB20784FF071 -:104AD0000107C0074FF0000102D08DF83A7001E0E5 -:104AE0008DF83A1020788846C0F3C1008DF8000098 -:104AF00060788DF80910C10803D0072011B0BDE817 -:104B0000F08F80B1C10701D08DF80970810705D5FC -:104B10009DF8091041F002018DF80910400704D5F5 -:104B20000620EBE718E08DF8097000206E4606EBD2 -:104B3000400162884A81401CA288C0B20A820328D0 -:104B4000F5D32078C0F3C100012821D003281FD05D -:104B50004846FCF7B8FB08B11020CFE799F80000F1 -:104B6000400808D0012809D0022807D0032805D022 -:104B700043F20220C2E78DF8028001E08DF8027056 -:104B8000484650F8011FCDF803108088ADF80700A3 -:104B9000FEF7F1FB8DF801000020424606EB4001D4 -:104BA0002B88CB826B888B83AB884B84EB880B85FF -:104BB000401CCA85C0B28A860328EFD3E088ADF8CE -:104BC0003C0068460CF074F9002896D19AF8180059 -:104BD0005546112801D0082090E706200DF016FD5B -:104BE00038B12078C0F3C100012804D0032802D0D6 -:104BF00006E0122082E795F8240000283FF47DAFFC -:104C0000FEF742FA022801D2132077E7584600F057 -:104C100018F9002885D185F819B068460CF05AFAC1 -:104C200004F06EFA040098D1687E00F01AF91220A0 -:104C3000FEF714FA204661E770B5744D287E1228FD -:104C400001D00820EBE60CF048FA04F059FA040011 -:104C500005D1687E00F012F91120FEF7FFF9204619 -:104C6000DDE670B5064615460C460846FCF751FBD6 -:104C700018B92846FCF74DFB08B11020CFE62A46AC -:104C8000214630460CF02DFD04F03AFA0028F5D10B -:104C900021787F29F2D10520C1E67CB505460C4676 -:104CA0000846FCF710FB08B110207CBD2846FEF733 -:104CB000CAFB20B10078222804D208207CBD43F230 -:104CC00002007CBD514890F83000400701D511200A -:104CD0007CBD2178C80802D16078C20801D00720C5 -:104CE0007CBD890801D1800801D006207CBDADF8CB -:104CF000005020788DF8020060788DF803000220C3 -:104D0000ADF8040068460BF0D1FE04F0F9F97CBD63 -:104D100070B586B014460D460646FEF794FB28B1E2 -:104D20000078222805D2082006B078E643F2020077 -:104D3000FAE72846FCF714FB20B944B12046FCF7FB -:104D400006FB08B11020EFE700202060A0802F486C -:104D500090F83000800701D51120E5E703A930461F -:104D60000BF058FD18B100BF04F0CAF9DCE7ADF84C -:104D70000060BDF81400ADF80200BDF81600ADF8F3 -:104D80000400BDF81000BDF81210ADF80600ADF833 -:104D900008107DB1298809B1ADF80610698809B1FC -:104DA000ADF80210A98809B1ADF80810E98809B179 -:104DB000ADF80410DCB1BDF80610814201D9081A23 -:104DC0002080BDF80210BDF81400814201D9081AF4 -:104DD0006080BDF80800BDF80410BDF8162001443D -:104DE000BDF812001044814201D9081AA08068461B -:104DF0000BF0C1FDB8E71CB505490968CDE9001005 -:104E000068460CF057F804F07BF91CBDE80100205F -:104E1000EC4F02001CB500200090019068460CF099 -:104E200049F804F06DF9F0E7108008885080488850 -:104E30009080C88810818888D0800020508190811F -:104E4000704710B5044604F0C7F830B1407830B16F -:104E5000204604F0DAFB002010BD052010BD122012 -:104E600010BD10B504F0B8F8040000D1FFDF607881 -:104E700000B9FFDF6078401E607010BD10B504F00F -:104E8000ABF8040000D1FFDF6078401C607010BDFB -:104E90001CB5ADF800008DF802308DF803108DF8C8 -:104EA000042068460CF0E0FB04F02AF9ADE70CB5ED -:104EB00026A2D2E90012CDE900120079694601EB81 -:104EC000501000780CBD0278520804D0012A02D09C -:104ED00043F202207047FEF725BA1FB56A46FFF776 -:104EE000A3FF68460CF02CF904F00AF904B010BDD9 -:104EF00070B50C0006460DD0FEF7A5FA050000D1EE -:104F0000FFDFA68028892081288960816889A081A7 -:104F1000A889E08183E510B500231A4603E0845C8C -:104F20002343521CD2B28A42F9D30BB1002010BDE8 -:104F3000012010BD00B530B1012803D0022801D0F6 -:104F4000FFDF002000BDFF2000BD000007060504B4 -:104F50000302010010B50446FCF7B5F908B11020B2 -:104F600010BD2078C0F30210042807D86078072805 -:104F700004D3A178102901D8814201D2072010BDA5 -:104F8000E078410706D421794A0703D4000701D409 -:104F9000080701D5062010BD002010BD10B51378FC -:104FA0005C08837F64F3C713837713789C08C37FFF -:104FB00064F30003C3771078C309487863F34100B2 -:104FC000487013781C090B7864F347130B7013783F -:104FD000DB0863F3000048705078487110BD10B5CD -:104FE000C4780B7864F300030B70C478640864F32E -:104FF00041030B70C478A40864F382030B70C47877 -:10500000E40864F3C3030B700379117863F30001C0 -:10501000117003795B0863F34101117003799B08F8 -:1050200063F3820111700079C00860F3C30111704D -:1050300010BD70B514460D46064604F03FFA80B127 -:105040000178182221F00F01891C21F0F001A03114 -:1050500000F8081B21461FF09AFDBDE8704004F0DF -:1050600030BA29463046BDE870401322FEF7EEB94B -:105070002DE9F047064608A8894690E830041F4607 -:105080009046142128461FF0DEFD0021CAF80010CA -:10509000B8F1000F03D0B9F1000F03D114E0387854 -:1050A000C00711D02068FCF734F9C0BBB8F1000F7D -:1050B00007D12068123028602068143068602068AA -:1050C000A8602168CAF800103878800724D5606885 -:1050D000FCF73DF918BBB9F1000F21D0FFF72AF911 -:1050E0000168C6F868118188A6F86C11807986F885 -:1050F0006E0101F0F8FCF94FEF60626862B196F85A -:10510000680106F2691140081032FEF76CF91022AE -:10511000394660681FF0F6FC0020BDE8F08706E025 -:10512000606820B1E8606068C6F86401F4E71020A8 -:10513000F3E730B5054608780C4620F00F00401C18 -:1051400020F0F001103121700020607095F82300EC -:1051500030B104280FD0052811D0062814D0FFDF65 -:1051600020780121B1EB101F04D295F8200000F047 -:105170001F00607030BD21F0F000203002E021F00F -:10518000F00030302070EBE721F0F0004030F9E71C -:10519000F0B591B0022715460C4606463A46ADF8E2 -:1051A0000870092103AB04F0FAFF0490002810D026 -:1051B00004208DF804008DF80170E0340996059400 -:1051C0008DF818500AA968460EF060FF00B1FFDFA5 -:1051D000012011B0F0BD10B588B00C460A99ADF8A9 -:1051E0000000C3B11868CDF802005868CDF8060079 -:1051F000ADF80A20102203A81FF084FC68460CF0CA -:105200000FF803F07DFF002803D1A17F41F01001CA -:10521000A17708B010BD0020CDF80200E6E72DE927 -:10522000F84F0646808A0D4680B28246FEF70BF99B -:1052300004463078DFF8A48200274FF00209A8F175 -:1052400020080F2870D2DFE800F06FF23708387DB1 -:105250008CC8F1F0EFF35FF3F300A07F00F00300E0 -:10526000022809D05FF0000080F0010150460DF0E7 -:105270001DFA050003D101E00120F5E7FFDF98F8F2 -:105280005C10C90702D0D8F860000BE0032105F1DB -:105290001D0010F046FCD5F81D009149B0FBF1F25D -:1052A00001FB1200C5F81D0070686867B068A86748 -:1052B0002078252800D0FFDFCAE0A07F00F003009F -:1052C000022809D05FF0000080F0010150460DF087 -:1052D000EDF9060003D101E00120F5E7FFDF3078AA -:1052E000810702D52178252904D040F001003070D3 -:1052F000BDE8F88F85F80090307F287106F11D0019 -:105300002D36C5E90206F3E7A07F00F0030002286E -:1053100008D0002080F0010150460DF0C7F90400CC -:1053200004D102E00120F5E7A7E1FFDF2078C10604 -:1053300004D5072028703D346C60D9E740F00800A0 -:105340002070D5E7E07F000700D5FFDF307CB28812 -:1053500000F0010301B05046BDE8F04F092105F00F -:10536000A9BD04B9FFDF716821B1102204F1240046 -:105370001FF0C8FB28212046FDF7CCFEA07F00F0DF -:10538000030002280ED104F12400002300901A46E5 -:1053900021465046FFF71FFF112807D0292120463C -:1053A000FDF7B8FE307A84F82000A1E7A07F00075F -:1053B00000D5FFDF14F81E0F40F008002070E782D0 -:1053C000A761E761C109607861F34100014660F3BC -:1053D00082016170307AE0708AE7A07F00F00300FC -:1053E000022809D05FF0000080F0010150460DF066 -:1053F0005DF9040003D101E00120F5E7FFDF0221A0 -:1054000004F1850010F08DFB0420287004F5B470C1 -:105410006860B4F885002882304810387C346C61AC -:10542000C5E9028064E703E024E15BE02DE015E0DC -:10543000A07F00F00300022807D0002080F00101C7 -:1054400050460DF033F918B901E00120F6E7FFDF0F -:10545000324621465046BDE8F84FEAE504B9FFDF81 -:1054600020782128A1D93079012803D1E07F40F0AC -:105470000800E077324621465046FFF7DAFD204625 -:10548000BDE8F84F2321FDF745BE3279AA8005F12A -:1054900008030921504604F082FEE86010B105209F -:1054A000287025E7A07F00F00300022808D0002024 -:1054B00080F0010150460DF0F9F8040003D101E03D -:1054C0000120F5E7FFDF04F1620102231022081F2B -:1054D0000CF073FF07703179417009E74802002032 -:1054E00040420F00A07F00F00300022808D00020F7 -:1054F00080F0010150460DF0D9F8050003D101E01C -:105500000120F5E7FFDF95F8840000F00300012893 -:105510007AD1A07F00F00307E07F10F0010602D0EF -:10552000022F04D133E095F8A000C0072BD0D5F8A6 -:10553000601121B395F88320087C62F3870008741A -:10554000A17FCA09D5F8601162F341000874D5F84B -:10555000601166F300000874AEB1D5F86001102246 -:1055600004F1240188351FF0CDFA287E40F00100B7 -:105570002876287820F0010005F8880900E016B1A7 -:10558000022F04D02DE095F88800C00727D0D5F869 -:105590005C1121B395F88320087C62F387000874BE -:1055A000A17FCA09D5F85C1162F341000874D5F8EF -:1055B0005C1166F3000008748EB1D5F85C0110220E -:1055C00004F1240188351FF09DFA287840F001008D -:1055D00005F8180B287820F0010005F8A009022F23 -:1055E00044D0002000EB400005EBC00090F888009C -:1055F000800709D595F87C00D5F86421400805F1AD -:105600007D011032FDF7EFFE8DF8009095F88400D3 -:105610006A4600F003008DF8010095F888108DF8B7 -:10562000021095F8A0008DF803002146504601F0C5 -:1056300043FA2078252805D0212807D0FFDF2078DD -:10564000222803D922212046FDF764FDA07F00F027 -:10565000030002280CD0002080F0010150460DF01C -:1056600037F800283FF44FAEFFDF41E60120B9E7ED -:105670000120F1E7706847703AE6FFDF38E670B561 -:10568000FE4C002584F85C5025660EF0CCFC04F13D -:105690001001204603F0CEFE84F8305070BD70B586 -:1056A0000D46FDF7D0FE040000D1FFDF4FF4B871C6 -:1056B00028461FF0C8FA04F124002861A07F00F0FA -:1056C0000300022808D0012105F1E0000EF0ACFC37 -:1056D000002800D0FFDF70BD0221F5E70A46014631 -:1056E00002F1E0000EF0C0BC70B50546406886B01F -:1056F00001780A2906D00D2933D00E292FD0FFDFDB -:1057000006B070BD86883046FDF79DFE040000D1CE -:10571000FFDF20782128F3D028281BD168680221D8 -:105720000E3001F0BEF9A8B168680821801D01F0B3 -:10573000B8F978B104F1240130460BF033FF03F0DF -:10574000DFFC00B1FFDF06B02046BDE87040292134 -:10575000FDF7E0BC06B0BDE8704003F0B2BE012129 -:1057600001726868C6883046FDF76DFE040000D1FE -:10577000FFDFA07F00F00301022902D120F010001A -:10578000A077207821280AD06868017A09B10079C9 -:1057900080B1A07F00F00300022862D0FFDFA07F6D -:1057A00000F003000228ABD1FEF798F80028A7D03C -:1057B000FFDFA5E703F085FEA17F08062BD5E07F7C -:1057C000C00705D094F8200000F01F00102820D05A -:1057D0005FF0050084F82300207829281DD02428B4 -:1057E000DDD13146042010F07BFC22212046FDF75C -:1057F00091FCA07F00F00300022830D05FF0000091 -:1058000080F0010130460CF063FF0028C7D0FFDFB5 -:10581000C5E70620DEE70420DCE701F003000228EC -:1058200008D0002080F0010130460CF03FFF050059 -:1058300003D101E00120F5E7FFDF25212046FDF738 -:1058400069FC03208DF80000694605F1E0000EF0C8 -:1058500002FC0228A3D00028A1D0FFDF9FE701208F -:10586000CEE703F02EFE9AE72DE9F04387B0994684 -:10587000164688460746FDF7E6FD04004BD0207823 -:10588000222848D3232846D0E07F000743D4A07FB6 -:1058900000F00300022809D05FF0000080F0010151 -:1058A00038460CF003FF050002D00CE00120F5E7BC -:1058B000A07F00F00300022805D001210022384615 -:1058C0000CF0EBFE05466946284601F01CF90098ED -:1058D00000B9FFDF45B10098E03505612078222846 -:1058E00006D0242804D007E000990020086103E0D6 -:1058F00025212046FDF70EFC0098012141704762EA -:10590000868001A9C0E902890EF0C0FB022802D0FE -:10591000002800D0FFDF07B0BDE8F08370B586B087 -:105920000546FDF790FD017822291ED9807F00F001 -:105930000300022808D0002080F0010128460CF066 -:10594000B5FE04002FD101E00120F5E7FFDF2AE0DA -:10595000B4F85E0004F1620630440178427829B15F -:1059600021462846FFF714FCB0B9C9E6ADF804207B -:105970000921284602AB04F012FC03900028F4D061 -:1059800005208DF80000694604F1E0000EF063FB8D -:10599000022801D000B1FFDF02231022314604F1BA -:1059A0005E000CF040FDB4F860000028D0D1A7E6FE -:1059B00010B586B00446FDF746FD017822291BD9B3 -:1059C000807F00F00300022808D0002080F0010151 -:1059D00020460CF06BFE040003D101E00120F5E746 -:1059E000FFDF06208DF80000694604F1E0000EF0AC -:1059F00032FB002800D0FFDF06B010BD2DE9F05FBC -:105A000005460C4600270078904601093E4604F101 -:105A1000080BBA4602297DD0072902D00A2909D1EC -:105A200046E0686801780A2905D00D2930D00E2992 -:105A30002ED0FFDFBBE114271C26002C6BD0808802 -:105A4000A080FDF700FD5FEA000900D1FFDF99F8B3 -:105A500017005A46400809F11801FDF7C4FC6868B0 -:105A6000C0892082696851F8060FC4F8120048689E -:105A7000C4F81600A07E20F0060001E028020020F5 -:105A800040F00100A07699F81E0040F020014DE0A2 -:105A90001A270A26002CD1D0C088A080FDF7D3FC9D -:105AA000050000D1FFDF59462846FFF742FB7EE1A3 -:105AB0000CB1A88BA080287A0B287DD006DC0128A9 -:105AC0007BD0022808D0032804D135E00D2875D0FA -:105AD0000E2874D0FFDF6AE11E270926002CADD006 -:105AE000A088FDF7B0FC5FEA000900D1FFDF287B4A -:105AF00000F003000128207A1BD020F00100207262 -:105B0000297B890861F341002072297BC90861F370 -:105B1000820001E041E1F2E02072297B090961F392 -:105B2000C300207299F81E0040F0400189F81E1051 -:105B30003DE140F00100E2E713270D26002CAAD03A -:105B4000A088FDF780FC8146807F00F003000228DA -:105B500008D0002080F00101A0880CF0A7FD05000E -:105B600003D101E00120F5E7FFDF99F81E0000F006 -:105B70000302022A50D0686F817801F003010129E5 -:105B8000217A4BD021F00101217283789B0863F3C5 -:105B9000410121728378DB0863F3820121728378EB -:105BA0001B0963F3C3012172037863F306112172A9 -:105BB000437863F3C71103E061E0A9E090E0A1E05E -:105BC000217284F809A0C178A172022A29D0027931 -:105BD000E17A62F30001E1720279520862F3410155 -:105BE000E1720279920862F38201E1720279D208CD -:105BF00062F3C301E1724279217B62F300012173F8 -:105C00004279520862F3410121734279920862F3AA -:105C100082012173407928E0A86FADE741F00101CE -:105C2000B2E74279E17A62F30001E1724279520807 -:105C300062F34101E1724279920862F38201E172FA -:105C40004279D20862F3C301E1720279217B62F3E7 -:105C5000000121730279520862F341012173027934 -:105C6000920862F3820121730079C00860F3C301D6 -:105C7000217399F80000232831D9262140E0182704 -:105C80001026E4B3A088FDF7DEFB8346807F00F09A -:105C90000300022809D0002080F00101A0880CF048 -:105CA00005FD5FEA000903D101E00120F4E7FFDF11 -:105CB000E868A06099F8000040F0040189F800103D -:105CC00099F80100800708D5012020739BF8000097 -:105CD00023286CD92721584651E084F80CA066E0AF -:105CE00015270F265CB1A088FDF7ADFB8146062283 -:105CF0005946E86808F093FA0120A073A0E041E05B -:105D000048463CE016270926E4B3287B20724EE083 -:105D1000287B19270E26ACB3C4F808A0A4F80CA061 -:105D2000012807D0022805D0032805D0042803D075 -:105D3000FFDF0DE0207207E0697B042801F00F010E -:105D400041F0800121721ED0607A20F00300607261 -:105D5000A088FDF778FB05460078212827D0232866 -:105D600000D0FFDFA87F00F00300022813D000203E -:105D700080F00101A0880CF0ABFC22212846FDF741 -:105D8000C9F914E004E0607A20F00300401CDEE76B -:105D9000A8F8006010E00120EAE70CB16888A08054 -:105DA000287A68B301280AD002284FD0FFDFA8F86C -:105DB00000600CB1278066800020BDE8F09F1527A9 -:105DC0000F26002CE4D0A088FDF73DFB807F00F07B -:105DD0000300022808D0002080F00101A0880CF008 -:105DE00065FC050003D101E00120F5E7FFDFD5F8F0 -:105DF0001D000622594608F012FA84F80EA0D6E7D4 -:105E000017270926002CC3D0A088FDF71CFB81466C -:105E1000807F00F00300022808D0002080F00101FC -:105E2000A0880CF043FC050003D101E00120F5E758 -:105E3000FFDF6878800701D5022000E00120207292 -:105E400099F800002328B2D9272159E719270E26EF -:105E5000002C9DD0A088FDF7F6FA5FEA000900D17A -:105E6000FFDFC4F808A0A4F80CA084F808A0A07A6A -:105E700040F00300A07299F81E10C90961F3820076 -:105E8000A07299F81F2099F81E1012EAD11F05D0B0 -:105E900099F8201001F01F0110292BD020F00800E4 -:105EA000A07299F81F10607A61F3C3006072697A7A -:105EB00001F003010129A2D140F00400607299F8B9 -:105EC0001E0000F003000228E87A16D0217B60F360 -:105ED00000012173AA7A607B62F300006073EA7AA2 -:105EE000520862F341012173A97A490861F3410024 -:105EF00060735CE740F00800D2E7617B60F300016B -:105F00006173AA7A207B62F300002073EA7A520858 -:105F100062F341016173A97A490861F3410020737A -:105F200045E710B5FE4C30B10146102204F12000C7 -:105F30001EF0E8FD012084F8300010BD10B50446C5 -:105F400000F0D1FDF64920461022BDE81040203176 -:105F50001EF0D8BD70B5F24D06004FF0000413D00E -:105F6000FBF7B1F908B110240CE00621304608F027 -:105F70003DF9411C05D028665FF0010085F85C0002 -:105F800000E00724204670BD0020F7E7007810F0FD -:105F90000F0204D0012A05D0022A0CD110E000091A -:105FA00009D10AE00009012807D0022805D00328FA -:105FB00003D0042801D007207047087000207047E4 -:105FC0000620704705282AD2DFE800F003070F17E4 -:105FD0001F00087820F0FF001EE0087820F00F0076 -:105FE000401C20F0F000103016E0087820F00F0080 -:105FF000401C20F0F00020300EE0087820F00F0068 -:10600000401C20F0F000303006E0087820F00F004F -:10601000401C20F0F000403008700020704707203E -:1060200070472DE9F041804688B00D4600270846AC -:10603000FBF796F9A8B94046FDF705FA040003D02E -:106040002078222815D104E043F2020008B0BDE810 -:10605000F08145B9A07F410603D500F00300022876 -:1060600001D01020F2E7A07FC10601D4010702D5BC -:106070000DB10820EAE7E17F090701D50D20E5E72A -:1060800000F00300022805D125B12846FEF762FF83 -:106090000700DBD1A07F00F00300022808D0002019 -:1060A00080F0010140460CF001FB060002D00FE039 -:1060B0000120F5E7A07F00F0030002280ED00020A9 -:1060C00080F00101002240460CF0E7FA060007D0FC -:1060D000A07F00F00300022804D009E00120EFE7D0 -:1060E0000420B3E725B12A4631462046FEF756FF85 -:1060F0006946304600F007FD009800B9FFDF0099BF -:10610000022006F1E0024870C1F824804A610022B2 -:106110000A81A27F02F00302022A1CD0012008712A -:10612000287800F00102087E62F3010008762A78E0 -:10613000520862F3820008762A78920862F3C3005C -:1061400008762A78D20862F30410087624212046C3 -:10615000FCF7E0FF33E035B30871301D886130781B -:10616000400908777078C0F340004877287800F03D -:106170000102887F62F301008877A27FD20962F36F -:1061800082008877E27F62F3C3008877727862F3D7 -:1061900004108877A878C87701F1210228462031B9 -:1061A000FEF71DFF03E00320087105200876252176 -:1061B0002046FCF7AFFFA07F20F04000A07701A9A8 -:1061C00000980DF063FF022801D000B1FFDF3846D0 -:1061D0003CE72DE9FF4F534A0D4699B09A4607CA4E -:1061E0000AAB002783E807001998FDF72CF9060091 -:1061F00006D03078262806D008201DB0BDE8F08FE4 -:1062000043F20200F9E7B07F00F00309B9F1020F91 -:106210000AD05DB91B98FEF79DFE0028EDD1B07F36 -:1062200000F00300022801D11B9890BBB07F00F062 -:106230000300022808D0002080F0010119980CF01A -:1062400035FA040003D101E00120F5E7FFDF852DD9 -:1062500028D007DCF5B1812D1ED0822D1ED0832DD4 -:1062600008D11DE0862D1FD0882D1FD0892D1FD06D -:106270008A2D1FD00F2020710F281DD003F01EF98A -:10628000E0B101208DF83C00201D10902079B8B1BC -:106290005BE111E00020EEE70120ECE70220EAE7F5 -:1062A0000320E8E70520E6E70620E4E70820E2E728 -:1062B0000920E0E70A20DEE707209EE711209CE79F -:1062C000B9F1020F03D0A56F03D1A06F02E0656F93 -:1062D000FAE7606F804632D04FF0010001904FF036 -:1062E00002000090214630461B9AFEF757FE1B988D -:1062F000007800F00101A87861F30100A870B17F77 -:10630000C90961F38200A870F17F61F3C300A8702E -:10631000617861F30410A87020784009287003E0C8 -:1063200028020020F44F02006078C0F3400068703B -:106330001B988078E87000206871287103E00220C3 -:10634000019001200090A87898F80210C0F3C000D6 -:10635000C1F3C00108405FEA000B2DD05046FAF7A8 -:10636000B2FF78BBDAF80C00FAF7ADFF50BBDAF8F1 -:106370001C00FAF7A8FF28BBDAF80C00A060DAF8D6 -:106380001C00E060607898F8012042EA500100BFEC -:1063900061F34100607098F80210C0B200EA111178 -:1063A00061F30000607000202077009906F117006B -:1063B000022908D0012107E0607898F8012002EA5C -:1063C0005001E5E732E0002104EB810148610199C9 -:1063D000701C022901D0012100E0002104EB8101A1 -:1063E0004861A87800F00300012857D198F802000E -:1063F00000F00300012851D1B9F1020F04D02A1D89 -:10640000691D1B98FEF7EBFD287998F804100840E9 -:106410008DF83400697998F8052011408DF838100E -:1064200008433BD05046FAF74EFF08B11020E4E68F -:106430000AF110010491B9F1020F17D008460021AA -:1064400004F18C03CDE9000304F5AE7202920DABAA -:106450005A462046FEF70CFE0028E8D1B9F1020F9B -:1064600008D0504608D14FF0010107E050464FF0E8 -:106470000101E5E70498F5E74FF0000104F1A403FA -:10648000CDE9000304F5B072029281F001010EAB78 -:106490005A462046FEF7ECFD0028C8D160788007F8 -:1064A00034D4A87898F80210C0F38000C1F38001BA -:1064B00008432BD0297898F800000AAAB9F1020FF6 -:1064C00006D032F811204300DA4002F003070AE058 -:1064D00032F810204B00DA4012F0030705D0012FEC -:1064E0000BD0022F0BD0032F07D0BBF1000F0DD024 -:1064F000012906D0042904D008E00227F5E7012786 -:10650000F3E7012801D0042800D10427B07F40F030 -:106510008000B077F17F6BF30001F177607880073E -:1065200006D50320A071BBF1000F0ED1002028E09A -:106530000220022F18D0012F18D0042F29D00020BC -:10654000A071B07F20F08000B07725213046FCF7A5 -:10655000E1FD0FA904F1E0000DF07DFD10B102286E -:1065600000D0FFDF002048E6A071DFE7A0710D2119 -:1065700004F120001EF067FB207840F0020020703C -:1065800001208DF85C0017AA3146199800F094FAA2 -:10659000DBE70120A071D8E72DE9F04387B09046F2 -:1065A000894604460025FCF74EFF060006D03078E9 -:1065B000272806D0082007B0BDE8F08343F2020088 -:1065C000F9E7B07F00F00300022809D05FF0000077 -:1065D00080F0010120460CF069F8040003D101E0CD -:1065E0000120F5E7FFDFA7795FEA090005D0012860 -:1065F00021D0B9F1020F26D110E0B8F1000F22D15D -:10660000012F05D0022F05D0032F05D0FFDF2DE08D -:106610000C252BE0012529E0022527E04046FAF76A -:1066200052FEB0B9032F0ED11022414604F11D00D5 -:106630001EF068FA1AE0012F02D0022F03D104E005 -:10664000B8F1000F12D00720B5E74046FAF73BFE3D -:1066500008B11020AFE7102104F11D001EF0D1FA9F -:106660000621404607F0C2FDC4F81D002078252110 -:1066700040F0020020703046FCF74CFD2078C10746 -:1066800013D020F00100207002208DF8000004F1EA -:106690001D0002908DF804506946C3300DF0DBFCFC -:1066A000022803D010B1FFDF00E02577002082E749 -:1066B00030B587B00D460446FCF7C5FEA0B1807F1B -:1066C00000F00300022812D05FF0000080F001010A -:1066D00020460BF0EBFF04000ED02846FAF7F3FD3E -:1066E00038B1102007B030BD43F20200FAE70120B4 -:1066F000ECE72078400701D40820F3E7294604F1AD -:106700003D00202205461EF0FDF9207840F01000E3 -:10671000207001070FD520F00800207007208DF8A9 -:106720000000694604F1E00001950DF094FC022898 -:1067300001D000B1FFDF0020D4E770B50D4606465A -:10674000FCF781FE18B10178272921D102E043F23C -:10675000020070BD807F00F00300022808D00020F6 -:1067600080F0010130460BF0A1FF040003D101E0ED -:106770000120F5E7FFDFA079022809D16078C00782 -:1067800006D02A4621463046FEF702FD10B10FE042 -:10679000082070BDB4F860000E280BD204F162012D -:1067A00002231022081F0BF008FE01210170457022 -:1067B000002070BD112070BD70B5064614460D4610 -:1067C0000846FAF780FD18B92046FAF7A2FD08B18D -:1067D000102070BDA6F57F40FF380ED03046FCF784 -:1067E00032FE38B1417822464B08811C1846FCF72E -:1067F000FAFD07E043F2020070BD2046FDF700FEFF -:106800000028F9D11021E01D0FF08BF9E21D294677 -:1068100004F1170000F087F9002070BD2DE9F04168 -:1068200004468AB01546884600270846FAF798FDC0 -:1068300018B92846FAF794FD10B110200AB006E402 -:106840002046FCF700FE060003D0307827281AD136 -:1068500002E043F20200F1E7B07F00F003000228FB -:1068600008D0002080F0010120460BF01FFF04003B -:1068700003D101E00120F5E7FFDF2078400702D5D2 -:106880006078800701D40820D8E7B07F00F00300CB -:10689000022803D0A06F03D1A16F02E0606FFAE776 -:1068A000616F407800B19DB1487810B1B8F1000F28 -:1068B0000ED0ADB1EA1D06A8E16800F034F910224F -:1068C00006A905F117001EF0F1F818B1042707E03A -:1068D0000720B3E71022E91D04F12D001EF012F984 -:1068E000B8F1000F06D0102208F1070104F11D00D5 -:1068F0001EF008F92078252140F002002070304673 -:10690000FCF708FC2078C10715D020F001002070AA -:1069100002208DF8000004F11D0002901030039059 -:106920008DF804706946B3300DF095FB022803D052 -:1069300010B1FFDF00E0277700207FE7F8B51546AC -:106940000E460746FCF77FFD040004D0207822287D -:1069500004D00820F8BD43F20200F8BDA07F00F08B -:106960000300022802D043F20500F8BD3046FAF7D2 -:10697000AAFC18B92846FAF7A6FC08B11020F8BD01 -:1069800000953288B31C21463846FEF724FC1128B6 -:1069900015D00028F3D1297C4A08A17F62F3C711E2 -:1069A000A177297CE27F61F30002E277297C8908E4 -:1069B00084F82010A17F21F04001A177F8BDA17FCC -:1069C0000907FBD4D6F80200C4F83600D6F8060052 -:1069D000C4F83A003088A0861022294604F1240029 -:1069E0001EF090F8287C4108E07F61F34100E077D9 -:1069F000297C61F38200E077287C800884F82100FC -:106A0000A07F40F00800A0770020D3E770B50D46C6 -:106A100006460BB1072070BDFCF715FD040007D03A -:106A20002078222802D3A07F800604D4082070BDDD -:106A300043F2020070BDADB1294630460AF0B2FD06 -:106A400002F05EFB297C4A08A17F62F3C711A1779F -:106A5000297CE27F61F30002E277297C890884F8CF -:106A6000201004E030460AF0C0FD02F049FBA17F8F -:106A700021F02001A17770BD70B50D46FCF7E3FC55 -:106A8000040005D02846FAF744FC20B1102070BD60 -:106A900043F2020070BD29462046FEF74AFB002063 -:106AA00070BD04E010F8012B0AB100207047491EA8 -:106AB00089B2F7D20120704770B51546064602F03C -:106AC000FDFC040000D1FFDF207820F00F00801CC7 -:106AD00020F0F0002030207066802868A060BDE8BB -:106AE000704002F0EEBC10B5134C94F83000002852 -:106AF00008D104F12001A1F110000DF0EEFA0120FF -:106B000084F8300010BD10B190F8B9202AB10A48BD -:106B100090F8350018B1002003E0B83001E00648D5 -:106B200034300860704708B50023009313460A46C6 -:106B30000BF0B7FF08BD00002802002018B18178D3 -:106B4000012938D101E010207047018842F6011276 -:106B5000881A914231D018DC42F60102A1EB020002 -:106B600091422AD00CDC41B3B1F5C05F25D06FF45F -:106B7000C050081821D0A0F57060FF381BD11CE070 -:106B800001281AD002280AD117E0B0F5807F14D06E -:106B900008DC012811D002280FD003280DD0FF28CF -:106BA00009D10AE0B0F5817F07D0A0F580700338E5 -:106BB00003D0012801D0002070470F2070470A2819 -:106BC0001FD008DC0A2818D2DFE800F0191B1F1FAD -:106BD000171F231D1F21102815D008DC0B2812D0E9 -:106BE0000C2810D00D2816D00F2806D10DE0112842 -:106BF0000BD084280BD087280FD0032070470020AB -:106C0000704705207047072070470F207047042009 -:106C10007047062070470C20704743F2020070470F -:106C200038B50C46050041D06946FFF7AFF900289A -:106C300019D19DF80010607861F302006070694618 -:106C4000681CFFF7A3F900280DD19DF800106078AB -:106C500061F3C5006070A978C1F34101012903D037 -:106C6000022905D0072038BD217821F0200102E05B -:106C7000217841F020012170410704D0A978C9088A -:106C800061F386106070607810F0380F07D0A97833 -:106C9000090961F3C710607010F0380F02D16078F5 -:106CA000400603D5207840F040002070002038BD19 -:106CB00070B504460020088015466068FFF7B0FFF5 -:106CC000002816D12089A189884211D8606880786F -:106CD000C0070AD0B1F5007F0AD840F20120B1FB0D -:106CE000F0F200FB1210288007E0B1F5FF7F01D918 -:106CF0000C2070BD01F201212980002070BD10B56B -:106D00000478137864F3000313700478640864F360 -:106D1000410313700478A40864F3820313700478A9 -:106D2000E40864F3C30313700478240964F30413C0 -:106D300013700478640964F34513137000788009B4 -:106D400060F38613137031B10878C10701D1800751 -:106D500001D5012000E0002060F3C713137010BDBF -:106D60004278530702D002F0070306E012F0380F12 -:106D700002D0C2F3C20300E001234A7863F30202A7 -:106D80004A70407810F0380F02D0C0F3C20005E01E -:106D9000430702D000F0070000E0012060F3C502C5 -:106DA0004A7070472DE9F04F95B00D00824612D021 -:106DB000122128461DF025FF4FF6FF7B05AA012171 -:106DC000584607F03AF80024264637464FF4205834 -:106DD0006FF4205973E0102015B0BDE8F08F00BFAC -:106DE0009DF81E0001280AD1BDF81C1041450BD0AA -:106DF00011EB09000AD001280CD002280CD0042C79 -:106E00000ED0052C0FD10DE0012400E00224BDF8C6 -:106E10001A6008E0032406E00424BDF81A7002E0BA -:106E2000052400E00624BDF81A10514547D12C7402 -:106E3000BEB34FF0000810AA4FF0070ACDE9028256 -:106E4000CDE900A80DF13C091023CDF81090424681 -:106E50003146584607F0A4F808BBBDF83C002A4666 -:106E6000C0B210A90DF0AFF9C8B9AE81CFB1CDE96C -:106E700000A80DF1080C0AAE40468CE8410213232D -:106E800000223946584607F08BF840B9BDF83C005F -:106E9000F11CC01EC0B22A1D0DF095F910B10320DF -:106EA0009AE70AE0BDF82900E881062C05D19DF893 -:106EB0001E00A872BDF81C00288100208CE705A8E0 -:106EC00006F0C7FF00288BD0FFF779FE84E72DE995 -:106ED000F0471C46DDE90978DDF8209015460E00E4 -:106EE000824600D1FFDF0CB1208818B1D5B1112046 -:106EF000BDE8F087022D01D0012100E0002106F15C -:106F0000140005F089FEA8F8000002463B46294619 -:106F1000504603F044F9C9F8000008B9A41C3C60CD -:106F20000020E5E71320E3E7F0B41446DDE904525E -:106F30008DB1002314B1022C09D101E0012306E038 -:106F40000D7CEE0703D025F0010501230D742146C9 -:106F5000F0BC03F0AFBF1A80F0BC70472DE9FE4FC4 -:106F600091461A881C468A468046FAB102AB4946C9 -:106F700003F015F9050019D04046A61C27880BF030 -:106F8000D9FC3246072629463B4600960BF0E7F827 -:106F900020882346CDE900504A4651464046FFF737 -:106FA000C3FF002020800120BDE8FE8F0020FBE70A -:106FB0002DE9F04786B082460EA8904690E8B000D2 -:106FC000894604AA05A903A88DE807001E462A469B -:106FD00021465046FFF77BFF039901B1012139702B -:106FE000002818D1F94904F1140204AB0860039891 -:106FF00005998DE8070042464946504606F0C3F918 -:10700000A8B1092811D2DFE800F005080510100A20 -:107010000C0C0E00002006B06AE71120FBE70720E9 -:10702000F9E70820F7E70D20F5E70320F3E7BDF8BF -:1070300010100398CDE9000133462A4621465046F8 -:10704000FFF772FFE6E72DE9F04389B00D46DDE971 -:10705000108781461C461646142103A81DF0F3FD37 -:10706000012002218DF810108DF80C008DF81170A0 -:10707000ADF8146064B1A278D20709D08DF816007B -:10708000E088ADF81A00A088ADF81800A068079055 -:1070900008A80095CDE90110424603A948466B684F -:1070A000FFF786FF09B0BDE8F083F0B58BB0002490 -:1070B0000646069407940727089405A809940194A6 -:1070C00000970294CDE903400D4610232246304636 -:1070D00006F066FF78B90AA806A901940097029401 -:1070E000CDE90310BDF8143000222946304606F0E1 -:1070F0002DFD002801D0FFF762FD0BB0F0BD06F0BA -:10710000CDBB2DE9FC410C468046002602F0D6F9A5 -:10711000054620780D287DD2DFE800F0BC0713B3C8 -:1071200025BD49496383AF959B00A848006820B1FD -:10713000417841F010014170ADE0404602F0EEF9B7 -:10714000A9E0042140460BF0B1FA070000D1FFDFAF -:1071500007F11401404605F0F3FCA5BB132140469E -:10716000FDF728FC97E0042140460BF09FFA07004A -:1071700000D1FFDFE088ADF800000020B8819DF865 -:107180000000010704D5C00602D5A088B88105E03B -:107190009DF8010040067ED5A088F88105B9FFDF83 -:1071A00022462946404601F0BDFC022673E0E188F4 -:1071B000ADF800109DF8011009060FD5072803D07F -:1071C00006280AD00AE024E0042140460BF06EFABB -:1071D000060000D1FFDFA088F0810226CDB9FFDFD5 -:1071E00017E0042140460BF061FA070000D1FFDFF1 -:1071F00007F1140006F089FB90F0010F02D1E0794D -:10720000000648D5387C022640F00200387405B9E3 -:10721000FFDF00E03EE022462946404601F082FCC6 -:1072200039E0042140460BF041FA017C002D01F0C9 -:107230000206C1F340016171017C21F00201017479 -:10724000E7D1FFDFE5E702260121404602F098F989 -:1072500021E0042140460BF029FA054660680090C1 -:107260002089ADF8040001226946404602F0A9F9E0 -:10727000287C20F0020028740DE0002DC9D1FFDF2A -:10728000C7E7022600214046FBF71EF9002DC0D1BA -:10729000FFDFBEE7FFDF3046BDE8FC813EB50C00F6 -:1072A00009D001466B4601AA002006F0FBFE20B182 -:1072B000FFF785FC3EBD10203EBD00202080A07061 -:1072C0009DF8050002A900F00700FEF77BFE50B90B -:1072D0009DF8080020709DF8050002A9C0F3C200C7 -:1072E000FEF770FE08B103203EBD9DF808006070F7 -:1072F0009DF80500C109A07861F30410A0709DF805 -:107300000510890961F3C300A0709DF80410890677 -:1073100001D5022100E0012161F342009DF8001037 -:1073200061F30000A07000203EBD70B51446064613 -:107330000D4651EA040005D075B10846FAF707F882 -:1073400078B901E0072070BD2946304606F00BFFF2 -:1073500010B1BDE8704032E454B12046F9F7F7FFB0 -:1073600008B1102070BD21463046BDE8704095E759 -:10737000002070BD2DE9FC5F0C46904605460027B5 -:1073800001780822007A3E46B2EB111F7ED104F14B -:107390000A0100910A31821E4FF0020A04F1080B23 -:1073A0000191092A73D2DFE802F0ECDF05F4272708 -:1073B0007AA9CD00688804210BF078F9060000D185 -:1073C000FFDFB08920B152270726C2E08C020020DF -:1073D00051271026002C7DD06888A0800120A07144 -:1073E000A88900220099FFF7A0FF002873D1A8897F -:1073F0002081288AE081D1E0B5F81290072824D1B5 -:10740000E87B000621D5512709F1140086B2002C33 -:10741000E1D0A88900220099FFF787FF00285AD100 -:107420006888A08084F806A0A88920810120A07324 -:10743000288A2082A4F81290A88A009068884B4677 -:10744000A969019A01F04BFBA8E0502709F112004D -:1074500086B2002C3ED0A88900225946FFF765FF6E -:10746000002838D16888A080A889E080287A072879 -:1074700013D002202073288AE081E87BC009607362 -:10748000A4F81090A88A0090688801E083E080E06A -:107490004B4604F11202A969D4E70120EAE7B5F8E6 -:1074A0001290512709F1140086B2002C66D068882A -:1074B00004210BF0FBF883466888A080A88900228D -:1074C0000099FFF732FF00286ED184F806A0A88942 -:1074D000208101E052E067E00420A073288A208226 -:1074E000A4F81290A88A009068884B46A969019A6E -:1074F00001F0F5FAA989ABF80E104FE06888FBF7A8 -:10750000A2FF0746688804210BF0D0F8064607B9A9 -:10751000FFDF06B9FFDF687BC00702D051271426C2 -:1075200001E0502712264CB36888A080502F06D067 -:1075300084F806A0287B594601F0E1FA2EE0287B6A -:10754000A11DF9E7FE49A8894989814205D154273F -:1075500006269CB16888A08020E053270BE068884D -:10756000A080A889E08019E0688804210BF09EF8CB -:1075700000B9FFDF55270826002CF0D1A8F80060DD -:1075800011E056270726002CF8D06888A08000203C -:1075900013E0FFDF02E0012808D0FFDFA8F8006059 -:1075A0000CB1278066800020BDE8FC9F5727072686 -:1075B000002CE3D06888A080687AA071EEE7401DB7 -:1075C00020F0030009B14143091D01EB4000704761 -:1075D00013B5DB4A00201071009848B100246846BA -:1075E0000AF081FE002C02D1D64A009911601CBD20 -:1075F00001240020F4E770B50D46064686B0144617 -:107600005C2128461DF01FFB04B9FFDFA0786874D9 -:10761000A2782188284601F09CFA0020A881E88100 -:10762000228805F11401304605F06FFA6A460121FF -:10763000304606F002FC19E09DF80300000715D55E -:10764000BDF806103046FFF730FD9DF80300BDF889 -:10765000061040F010008DF80300BDF80300ADF8EF -:107660001400FF233046059A06F048FD684606F0F0 -:10767000F0FB0028E0D006B070BD10B50C4601F15B -:10768000140005F079FA0146627C2046BDE81040FE -:1076900001F094BA30B50446A94891B04FF6FF7591 -:1076A000C18905AA284606F0C8FB30E09DF81E00F7 -:1076B000A0422AD001282AD1BDF81C00B0F5205FD5 -:1076C00003D042F60101884221D1002002AB0AAA70 -:1076D0000CA9019083E8070007200090BDF81A105C -:1076E00010230022284606F05BFC38B9BDF82800BC -:1076F0000BAAC0B20CA90CF066FD10B1032011B0AA -:1077000030BD9DF82E00A04201D10020F7E705A86A -:1077100006F09FFB0028C9D00520F0E770B50546AC -:1077200004210AF0C3FF040000D1FFDF04F11401BB -:107730000C46284605F004FA21462846BDE870406C -:1077400005F005BA70B58AB00C460646FBF77BFE1D -:10775000050014D02878222827D30CB1A08890B136 -:1077600001208DF80C0003208DF8100000208DF80A -:10777000110054B1A088ADF81800206807E043F26A -:1077800002000AB070BD0920FBE7ADF818000590B3 -:10779000042130460AF08AFF040000D1FFDF04F123 -:1077A000140005F000FA000701D40820E9E701F011 -:1077B00085FE60B108A802210094CDE9011095F87A -:1077C000232003A930466368FFF7F2FBD9E71120B5 -:1077D000D7E72DE9F04FB2F802A0834689B01546ED -:1077E00089465046FBF72FFE0746042150460AF013 -:1077F0005DFF0026044605964FF002080696ADF898 -:107800001C6007B9FFDF04B9FFDF4146504603F0B3 -:10781000BCFE50B907AA06A905A88DE80700424694 -:10782000214650466368FFF752FB454807AB0660A8 -:10783000DDE9051204F11400CDF80090CDE9032034 -:10784000CDE9013197F82320594650466B6805F081 -:10785000F3F906000AD0022E04D0032E14D0042E11 -:1078600000D0FFDF09B03046BDE8F08FBDF81C0046 -:107870000028F7D00599CDE9001042462146504630 -:107880006368FFF751FBEDE7687840F00800687027 -:10789000E8E72DE9F04F99B004464FF0000828487A -:1078A000ADF81C80ADF82080ADF82480A0F80880E9 -:1078B000ADF81480ADF81880ADF82C80ADF82880B4 -:1078C000007916460D464746012808D0022806D002 -:1078D000032804D0042802D0082019B0C4E72046A9 -:1078E000F9F7F1FC80BB2846F9F7EDFC60BB606856 -:1078F000F9F736FD40BB606848B16089218988424C -:1079000002D8B1F5007F01D90C20E6E780460EAA27 -:1079100006A92846FFF7CCF90028DED168688078F0 -:10792000C0F34100022808D19DF8190010F0380F6B -:1079300003D02869F9F70BFD30B905A9206904E0E7 -:107940008C0200201400002020E0FFF769F90028D5 -:10795000C3D1206948B1607880079DF8150000F018 -:10796000380001D5F0B300E0E0BB9DF814008006BC -:107970000ED59DF8150010F0380F03D06068F9F7A8 -:10798000E6FC18B96068F9F7EBFC08B11020A4E731 -:107990000AA96069FFF744F900289ED1606940B1E7 -:1079A0009DF8290000F0070101293CD110F0380FA3 -:1079B00039D00BA9A069FFF733F900288DD19DF8C4 -:1079C000280080062FD49DF82C0080062BD4A069B7 -:1079D00050B19DF82D0000F00701012923D110F0CE -:1079E000380F00E01FE01ED0E06818B10078D0B179 -:1079F0001C2818D20FAA611C2046FFF780F901212C -:107A0000384661F30F2082468DF85210B94642F68F -:107A100003000F46ADF850000DF13F0218A9286889 -:107A20000CF0F0FB08B1072057E79DF8600015A99E -:107A3000CDF80090C01CCDE9019100F0FF0B0023B0 -:107A40000BF20122514614A806F03AF9F0BBBDF83A -:107A500054000C90FD492A8928690092CDE9010162 -:107A60006B89BDF838202868069906F029F90100CD -:107A70007ED120784FF0020AC10601D480062BD5B2 -:107A8000ADF80C90606950B90AA906A8FFF768F92B -:107A90009DF8290020F00700401C8DF829009DF872 -:107AA000280008A940F0C8008DF828008DF8527011 -:107AB00042F60210ADF8500003AACDF800A0CDE9BF -:107AC0000121002340F2032214A800E01EE00A99DD -:107AD00006F0F6F801004BD1DC484D4608385B460D -:107AE0000089ADF83D000FA8CDE90290CDF80490D3 -:107AF000CDF810904FF007090022CDF80090BDF8A6 -:107B000054104FF6FF7006F021F810B1FFF757F848 -:107B1000E3E69DF83C00000625D52946012060F3E8 -:107B20000F218DF852704FF42450ADF85000ADF88D -:107B30000C5062789DF80C00002362F300008DF871 -:107B40000C006278CDF800A0520862F341008DF875 -:107B50000C0003AACDE9012540F2032214A806F087 -:107B6000AFF8010004D1606888B32069A8B900E0CB -:107B700086E005A906A8FFF7F3F86078800706D429 -:107B80009DF8150020F038008DF8150005E09DF8EF -:107B9000140040F040008DF814008DF8527042F649 -:107BA0000110ADF85000208940F20121B0FBF1F244 -:107BB00001FB1202606809ABCDF80080CDE901033A -:107BC000002314A8059906F07BF8010058D120780D -:107BD000C00729D0ADF80C50A06950B90BA906A870 -:107BE000FFF7BEF89DF82D0020F00700401C8DF82F -:107BF0002D009DF82C008DF8527040F040008DF85B -:107C00002C0042F60310ADF8500007A903AACDF8E6 -:107C100000A0CDE90121002340F2032214A80B9912 -:107C200006F04EF801002BD1E06868B32946012028 -:107C300060F30F218DF8527042F60410ADF8500039 -:107C4000E068002302788DF8582040788DF85900BC -:107C5000E06816AA4088ADF85A00E06800798DF80F -:107C60005C00E068C088ADF85D00CDF80090CDE91B -:107C700001254FF4027214A806F022F8010003D087 -:107C80000C9800F0C7FF28E67048032108380171FE -:107C900056B100893080BDF824007080BDF8200006 -:107CA000B080BDF81C00F080002016E670B50125FC -:107CB0008AB016460B46012802D0022816D104E0ED -:107CC0008DF80E504FF4205003E08DF80E5042F620 -:107CD0000100ADF80C005BB10024601C60F30F24C0 -:107CE00004AA08A918460CF08DFA18B1072048E537 -:107CF000102046E504A99DF820205448CDE9002134 -:107D0000801E02900023214603A802F2012205F002 -:107D1000D7FF10B1FEF753FF33E54C4808380EB1DA -:107D2000C1883180057100202BE5F0B593B007467E -:107D300001268DF83E6041F60100ADF83C0012AA24 -:107D40000FA93046FFF7B2FF002848D13F4C00256D -:107D5000083CE7B31C2102A81CF075FF9DF8080041 -:107D60008DF83E6040F020008DF8080042F60520B6 -:107D7000ADF83C000E959DF83A00119520F00600F4 -:107D8000801C8DF83A009DF838006A4620F0FF000C -:107D90008DF838009DF8390009A920F0FF008DF812 -:107DA00039000420ADF82C00ADF830000EA80A9080 -:107DB00011A80D900FA80990ADF82E5002A8FFF75A -:107DC00068FD00280BD1BDF80000608100E008E0EC -:107DD000BDF80400A081401CE0812571002013B093 -:107DE000F0BD6581A581BDF84800F4E72DE9F74FA6 -:107DF0001649A0B00024083917940A79A146012A2F -:107E000004D0022A02D0082023B02DE5CA8882427D -:107E100001D00620F8E721988A46824201D1072046 -:107E2000F2E701202146ADF848004FF6FF788DF8C3 -:107E30006E0042F6020B60F30F21ADF84A80ADF8F8 -:107E40006CB006918DF8724002E0000094020020B0 -:107E50001CA9ADF870401391ADF8508012A806F03F -:107E60001CF800252E462F460DAB072212A94046CE -:107E700006F016F878B10A285DD195B38EB3ADF847 -:107E80006450ADF866609DF85E008DF8144019AC42 -:107E9000012864D06BE09DF83A001FB3012859D146 -:107EA000BDF8381059451FD118A809A901940294AA -:107EB000CDE9031007200090BDF8361010230022F2 -:107EC000404606F06DF8B0BBBDF86000042801D054 -:107ED00006284AD1BDF82410219881423AD10F20BA -:107EE00092E73AE0012835D1BDF83800B0F5205FBF -:107EF00003D042F6010188422CD1BAF80600BDF841 -:107F00003610884201D1012700E0002705B19EB15B -:107F1000219881421ED118A809AA01940294CDE9A2 -:107F20000320072000900D4610230022404606F053 -:107F300037F800B902E02DE04E460BE0BDF86000D6 -:107F4000022801D0102810D1C0B217AA09A90CF03C -:107F50003AF950B9BDF8369086E7052054E705A9EF -:107F600017A8221D0CF04EF908B103204CE79DF82C -:107F700014000023001DC2B28DF814202298009234 -:107F8000CDE901401BA8069905F09AFE10B902221E -:107F90008AF80420FEF713FE36E710B50B46401EA4 -:107FA00088B084B205AA00211846FEF7A8FE00207A -:107FB0000DF1080C06AA05A901908CE8070007201E -:107FC00000900123002221464FF6FF7005F0BEFD10 -:107FD0000446BDF81800012800D0FFDF2046FEF758 -:107FE000EEFD08B010BDF0B5F74F044687B0387904 -:107FF0000E46032804D0042802D0082007B0F0BDA4 -:1080000004AA03A92046FEF753FE0500F6D16068D6 -:108010008078C0F3410002280AD19DF80D0010F0CD -:10802000380F05D02069F9F792F908B11020E5E77B -:10803000208905AA21698DE807006389BDF8102011 -:108040002068039905F03CFE10B1FEF7B8FDD5E7B6 -:1080500016B1BDF814003080042038712846CDE7F1 -:10806000F8B50C0006460CD001464FF6FF7500230C -:108070006A46284606F016F828B100BFFEF79FFDB5 -:10808000F8BD1020F8BD69462046FEF7C9FD00285E -:10809000F8D1A078314600F001032846009A06F096 -:1080A0002DF8EBE730B587B0144600220DF1080C2F -:1080B00005AD01928CE82C00072200920A46014689 -:1080C00023884FF6FF7005F041FDBDF814102180A4 -:1080D000FEF775FD07B030BD70B50D4604210AF0FE -:1080E000E5FA040000D1FFDF294604F11400BDE8E1 -:1080F000704004F051BD70B50D4604210AF0D6FA67 -:10810000040000D1FFDF294604F11400BDE87040EF -:1081100004F065BD70B50D4604210AF0C7FA0400ED -:1081200000D1FFDF294604F11400BDE8704004F0DF -:108130007DBD70B5054604210AF0B8FA040000D1EF -:10814000FFDF214628462368BDE870400122FEF784 -:1081500005BF70B5064604210AF0A8FA040000D154 -:10816000FFDF04F1140004F007FD401D20F00305BB -:1081700011E0011D00880022431821463046FEF719 -:10818000EDFE00280BD0607CABB2684382B2A068E1 -:10819000011D0AF048F9A06841880029E9D170BDA5 -:1081A00070B5054604210AF081FA040000D1FFDF12 -:1081B000214628466368BDE870400222FEF7CEBE25 -:1081C00070B50E46054601F079F9040000D1FFDFD5 -:1081D0000120207266726580207820F00F00001D5B -:1081E00020F0F00040302070BDE8704001F069B927 -:1081F00010B50446012900D0FFDF2046BDE810403D -:108200000121FAF761B92DE9F04F97B04FF0000A5C -:108210000C008346ADF814A0D04619D0E06830B108 -:10822000A068A8B10188ADF81410A0F800A05846C5 -:10823000FBF709F9070043F2020961D038782228D8 -:108240005CD3042158460AF031FA050005D103E059 -:10825000102017B0BDE8F08FFFDF05F1140004F027 -:108260008BFC401D20F00306A078012803D00228D3 -:1082700001D00720EDE7218807AA584605F0DDFD6B -:1082800030BB07A805F0E5FD10BB07A805F0E1FD30 -:1082900048B99DF82600012805D1BDF82400A0F5B5 -:1082A0002451023902D04FF45050D2E7E068B0B107 -:1082B000CDE902A00720009005AACDF804A0049201 -:1082C000A2882188BDF81430584605F03FFC10B153 -:1082D000FEF775FCBDE7A168BDF8140008809DF8A5 -:1082E0001F00C00602D543F20140B2E70B9838B137 -:1082F000A1780078012905D080071AD40820A8E7C2 -:108300004846A6E7C007F9D002208DF83C00A868CF -:108310004FF00009A0B1697C4288714391420FD9A6 -:108320008AB2B3B2011D0AF034F88046A0F800A06A -:1083300006E003208DF83C00D5F800804FF00109DD -:108340009DF8200010F0380F00D1FFDF9DF82000CD -:108350001E49C0F3C200084497F8231010F8010C1E -:10836000884201D90F2074E72088ADF8400014A995 -:108370000095CDE90191434607220FA95846FEF723 -:1083800017FE002891D19DF8500050B9A07801281F -:1083900007D1687CB3B2704382B2A868011D0AF0AD -:1083A0000CF8002055E770B5064615460C46084601 -:1083B000FEF7C4FB002805D12A4621463046BDE819 -:1083C000704073E470BD11E58C020020FE4F020086 -:1083D00070B51E4614460D0009D044B1616831B134 -:1083E00038B1FC49C988814203D0072070BD1020F4 -:1083F00070BD2068FEF7A2FB0028F9D13246214665 -:108400002846BDE87040FFF744BA70B515460C0029 -:1084100006D038B1EF490989814203D0072070BDE9 -:10842000102070BD2068FEF789FB0028F9D129468D -:108430002046BDE87040D6E570B5064686B00D46CC -:1084400014461046F8F765FFD0BB6068F8F788FF60 -:10845000B0BBA6F57F40FF3803D03046FAF7F3FFF4 -:1084600080B128466946FEF79DFC00280CD19DF896 -:1084700010100F2008293DD2DFE801F0080606069B -:10848000060A0A0843F2020006B070BD0320FBE7AB -:108490009DF80210012908D1BDF80010B1F5C05FA8 -:1084A000F2D06FF4C052D142EED09DF806100129EF -:1084B0000DD1BDF80410A1F52851062907D200E01E -:1084C00029E0DFE801F0030304030303DCE79DF880 -:1084D0000A1001290FD1BDF80810B1F5245FD3D0DF -:1084E000A1F60211B1F50051CED00129CCD002295C -:1084F00001D1C9E7FFDF606878B9002305AA2946E2 -:10850000304605F0CFFD10B1FEF759FBBCE79DF8F2 -:108510001400800601D41020B6E761882246284660 -:108520006368FFF7BFFDAFE72DE9F043814687B0F1 -:10853000884614461046F8F7ECFE18B1102007B034 -:10854000BDE8F083002306AA4146484605F0AAFD8F -:1085500018B100BFFEF733FBF1E79DF81800C00625 -:1085600002D543F20140EAE70025072705A8019557 -:1085700000970295CDE9035062884FF6FF7341469C -:10858000484605F00DFD060013D16068F8F7C1FEFE -:1085900060B960680195CDE9025000970495238881 -:1085A00062884146484605F0FBFC0646BDF81400CB -:1085B00020803046CEE739B1864B0A889B899A42A3 -:1085C00002D843F2030070471DE610B586B0814C17 -:1085D0000423ADF81430638943B1A4898C4201D2DD -:1085E000914205D943F2030006B010BD0620FBE717 -:1085F000ADF81010002100910191ADF8003002217A -:108600008DF8021005A9029104A90391ADF812207A -:108610006946FFF7F8FDE7E72DE9FC4781460D467F -:108620000846F8F750FE88BB4846FAF70CFF5FEAA9 -:1086300000080AD098F80000222829D304214846CF -:108640000AF034F8070005D103E043F20200BDE868 -:10865000FC87FFDF07F1140004F0A5FA064628782E -:10866000012803D0022804D00720F0E7B0070FD577 -:1086700002E016F01C0F0BD0A8792C1DC00709D002 -:10868000E08838B1A068F8F71EFE18B11020DEE7C8 -:108690000820DCE721882A780720B1F5847F35D0CF -:1086A0001EDC40F20315A1F20313A94226D00EDC12 -:1086B000B1F5807FCBD003DCF9B1012926D1C6E723 -:1086C000A1F58073013BC2D0012B1FD113E0012B18 -:1086D000BDD0022B1AD0032BB9D0042B16D112E037 -:1086E000A1F20912082A11D2DFE802F00B040410EB -:1086F00010101004ABE7022AA9D007E0012AA6D087 -:1087000004E0320700E0F206002AA0DACDB200F061 -:10871000D5FE50B198F82300CDE90005FA8923462B -:1087200039464846FEF78FFC91E711208FE72DE987 -:10873000F04F8BB01F4615460C4683460026FAF7CD -:1087400082FE28B10078222805D208200BB081E5EE -:1087500043F20200FAE7B80801D00720F6E7032F3A -:1087600000D100274FF6FF79CCB1022D73D32046FC -:10877000F8F7F6FD30B904EB0508A8F10100F8F7A9 -:10878000EFFD08B11020E1E7AD1EAAB22146484630 -:1087900005F057FD38F8021C88425CD1ADB20D4996 -:1087A000B80702D58889401C00E001201FFA80F834 -:1087B000F80701D08F8900E04F4605AA4146584688 -:1087C00005F03BFB4FF0070A4FF00009DCB32046F1 -:1087D0000BE000008C020020408810283BD8361D9A -:1087E000304486B2AE4236D2A01902884245F3D355 -:1087F00051E000BF9DF8170002074CD594B304EB7D -:108800000608361DB8F80230B6B2102B23D89A19D4 -:10881000AA4220D8B8F8002091421CD1C0061CD52D -:10882000CDE900A90DF1080C0AAAA11948468CE867 -:108830000700B8F800100022584605F087F920B16B -:10884000FEF7BDF982E726E005E0B8F80200BDF8C2 -:108850002810884201D00B2078E7B8F80200304495 -:1088600086B207E0FFE7C00604D55846FEF71DFCB8 -:10887000002888D19DF81700BDF81A1020F01000CC -:108880008DF81700BDF81700ADF80000FF2358461B -:10889000009A05F033FC05A805F0DBFA18B9BDF81D -:1088A0001A10B942A6D90421584609F0FFFE040067 -:1088B00000D1FFDFA2895AB1CDE900A94D460023BE -:1088C00021465846FEF7BFFB0028BBD1A5813DE7F6 -:1088D00000203BE72DE9FF4F8BB01E4617000D46E9 -:1088E0004FF0000412D0B00802D007200FB0B1E45E -:1088F000032E00D100265DB10846F8F728FD28B9FF -:108900003888691E0844F8F722FD08B11020EDE709 -:10891000C64AB00701D5D18900E00121F0074FF622 -:10892000FF7802D0D089401E00E0404686B206AAF9 -:108930000B9805F082FA4FF000094FF0070B0DF18C -:10894000140A38E09DF81B00000734D5CDF80490D8 -:10895000CDF800B0CDF80890CDE9039A4346002247 -:108960000B9805F01DFB60BB05B3BDF814103A88E9 -:1089700021442819091D8A4230D3BDF81E2020F851 -:10898000022BBDF8142020F8022BCDE900B9CDE967 -:108990000290CDF810A0BDF81E10BDF814300022D2 -:1089A0000B9805F0FDFA08B103209FE7BDF814000D -:1089B0002044001D84B206A805F04BFA20B10A2815 -:1089C00006D0FEF7FCF891E7BDF81E10B142B9D908 -:1089D00034B17DB13888A11C884203D20C2085E7D0 -:1089E000052083E722462946404605F02AFC014639 -:1089F00028190180A41C3C80002077E710B50446AC -:108A0000F8F787FC08B1102010BD8848C089208085 -:108A1000002010BDF0B58BB00D460646142103A80A -:108A20001CF011F901208DF80C008DF810000020C9 -:108A30008DF81100ADF814503046FAF704FD48B136 -:108A40000078222812D30421304609F02FFE0400BA -:108A500005D103E043F202000BB0F0BDFFDF04F1EB -:108A60001400074604F09FF8800601D40820F3E7BD -:108A7000207C022140F00100207409A80094CDE977 -:108A80000110072203A930466368FEF791FA20B16E -:108A9000217C21F001012174DEE729463046F9F7F7 -:108AA00004FD08A9384604F06DF800B1FFDFBDF8F9 -:108AB0002040172C01D2172000E02046A84201D9FF -:108AC0002C4602E0172C00D2172421463046FFF72F -:108AD00012FB21463046F9F70EFA0020BCE7F8B544 -:108AE0001C4615460E46069F09F012FF2346FF1D41 -:108AF000BCB231462A46009409F0FDFAF8BD70B5C3 -:108B00000C4605460E2120461CF07BF800202080F4 -:108B10002DB1012D01D0FFDF70BD062000E0052042 -:108B2000A07170BD10B548800878134620F00F0082 -:108B3000001D20F0F00080300C4608701422194609 -:108B400004F108001CF023F800F0BBFC3748046077 -:108B500010BD2DE9F047DFF8D890491D064621F0F9 -:108B6000030117460C46D9F8000009F0DAFB0500AE -:108B700000D1FFDF4FF000083560A5F800802146E6 -:108B8000D9F8000009F0CDFB050000D1FFDF7560CA -:108B9000A5F800807FB104FB07F1091D0BD0D9F8BF -:108BA000000009F0BEFB040000D1FFDFB460C4F890 -:108BB0000080BDE8F087C6F80880FAE72DE9F041AB -:108BC0001746491D21F00302194D06460168144657 -:108BD000286809F0D1FB22467168286809F0CCFBAF -:108BE0003FB104FB07F2121D03D0B168286809F0F9 -:108BF000C3FB042009F002FD0446042009F006FD31 -:108C0000201A012804D12868BDE8F04109F07EBB94 -:108C1000BDE8F08110B50C4605F0DBF800B1FFDFD0 -:108C20002046BDE81040FDF7CABF00008C020020BE -:108C30001400002038B50C468288817B19B1418927 -:108C4000914200D90A462280C188121D90B26A461C -:108C500008F0D0FDBDF80000032800D30320C1B206 -:108C6000208800F0D7FF38BD38B50C468288817B5C -:108C700019B10189914200D90A462280C188121D8A -:108C800090B26A4608F0B6FDBDF80000022800D395 -:108C90000220C1B2208800F0BDFF401CC0B238BD28 -:108CA0002DE9FE4F82468B46F94814460BF103022C -:108CB000D0E90010CDE9011022F0030268464FF41C -:108CC0009071009209F00FFBF24E002C02D1F24A93 -:108CD00000999160009901440091357F05F10105EB -:108CE00004D1E8B20BF008FA00B1FFDF009800EB06 -:108CF0000510C01C20F0030100915CB9707AB27AB3 -:108D00001044C2B200200870308C80B204F0E9FE3A -:108D100000B1FFDF0098316A0844009021466846A0 -:108D200000F03BFF80460098C01C20F0030000903C -:108D3000B37AF27A717A04B1002009F0CAFB009983 -:108D4000084400902146684600F06FFFD148002794 -:108D50003D4690F801900CE0284600F001FF0646E1 -:108D600081788088F9F75EF971786D1C00FB0177D6 -:108D7000EDB24D45F0D10098C01C20F003000090EA -:108D800004B100203946F9F758F900990027084442 -:108D90000090C0483D4690F801900CE0284600F055 -:108DA000DFFE0646C1788088FEF709FC71786D1CED -:108DB00000FB0177EDB24D45F0D10098C01C20F0CA -:108DC0000300009004B100203946FEF701FC009931 -:108DD0004FF0000908440090AE484D4647780EE039 -:108DE000284600F0BDFE0646807B30B106F1080043 -:108DF00001F00FFF727800FB02996D1CEDB2BD42CD -:108E0000EED10098C01C20F00300009004B10020B7 -:108E1000494601F002FF0099084400902146684647 -:108E200000F075FE0098C01D20F007000090DAF8F1 -:108E30000010814204D3A0EB0B01B1F5803F04DBAD -:108E40004FF00408CAF8000004E0CAF80000B8F1C6 -:108E5000000F02D04046BDE8FE8F34BB8F49002092 -:108E6000009A03F057F8FBF768FA8A4801AA002134 -:108E70001030F8F7F3FA00B1FFDF8648407FFEF7C5 -:108E800054FF00B1FFDF83484FF4F67140301BF010 -:108E9000DAFE80480421403080F8E91180F8EA11B8 -:108EA000062180F8EB11032101710020D3E770B592 -:108EB000784C06464034207804EB4015E0780835BD -:108EC00090B9A01990F8E80100280ED0A0780F28DA -:108ED00000D3FFDF202128461BF0B5FE687866F33B -:108EE000020068700120E070284670BD2DE9F04155 -:108EF00005460C4600270078052190463E46B1EB1A -:108F0000101F00D0FFDF287A50B101280ED0FFDFFC -:108F1000A8F800600CB1278066800020BDE8F081D1 -:108F20000127092674B16888A08008E0022714266A -:108F300044B16888A0802869E060A88A2082287BE4 -:108F40002072E5E7A8F80060E7E730B5514C012052 -:108F5000002120706170207260720322A272E072A0 -:108F600021732174052121831F21618360744CA129 -:108F700061610A2121776077474D4FF4B06020622C -:108F80006868C11C21F00301814200D0FFDF6868DE -:108F9000606030BD30B5404C1568636810339D4249 -:108FA00002D20420136030BD3A4B5D785A6802EB60 -:108FB0000512107051700320D0801720908001207E -:108FC000D0709070002090735878401C5870606882 -:108FD00010306060002030BD70B506462D4800247A -:108FE000457807E0204600F0BBFD0178B14204D08F -:108FF000641CE4B2AC42F5D1002070BDF7B5074661 -:1090000008780C4610B3FFF7E7FF0546A7F12006E6 -:10901000202F06D0052E19D2DFE806F00F2B2B15D6 -:109020001A0000F0A8FD0DB1697800E00021401A97 -:10903000A17880B20844FF2808D8A07830B1A08871 -:10904000022831D202E0608817282DD20720FEBD09 -:10905000207AE0B161881729F8D3A1881729F5D3C0 -:10906000A1790029F2D0E1790029EFD0402804D974 -:10907000ECE7242F18D1207A48B161884FF6FB70B5 -:10908000814202D8A18881420ED90420FEBD0BE0A6 -:1090900004500200A8030020180000200000002057 -:1090A0006E5246357800000065B9207802AA012189 -:1090B000FFF770FF0028E9D12078FFF78DFF05004A -:1090C00000D1FFDF052E18D2DFE806F0030B0E08F3 -:1090D0001100A0786870A088E8800FE06088A88000 -:1090E0000CE0A078A87009E0A078E87006E054F8D9 -:1090F000020FA8606068E86000E0FFDF0020C5E7BD -:109100001A2835D00DDC132832D2DFE800F01B31ED -:10911000203131272723252D313129313131312F8C -:109120000F00302802D003DC1E2821D10720704711 -:109130003A3809281CD2DFE800F0151B0F1B1B1B57 -:109140001B1B07000020704743F20400704743F2E6 -:1091500002007047042070470D2070470F207047B1 -:109160000820704711207047132070470620704771 -:109170000320704710B5007800F0010008F02CFBC8 -:10918000BDE81040BCE710B5007800F0010008F021 -:109190002CFBBDE81040B3E70EB5017801F00101EA -:1091A0008DF80010417801F001018DF8011001786F -:1091B000C1F340018DF802104178C1F340018DF8F0 -:1091C0000310017889088DF80410417889088DF81A -:1091D000051081788DF80610C1788DF80710007998 -:1091E0008DF80800684607F037FAFFF789FF0EBDD3 -:1091F0002DE9F84FDFF8F883FE4C00264FF4907706 -:109200001FE0012000F054FD0120FFF750FE05464D -:109210003946D8F8080009F084F8686000B9FFDF23 -:10922000686807F0AAF8B0B12846FAF7ECFB2846C0 -:1092300000F044FD28B93A466968D8F8080009F0FA -:109240009BF894F9E9010428DBDA022009F0D6F949 -:1092500007460025A5E03A466968D8F8080009F0F5 -:109260008BF8F2E7B8F802104046491C89B2A8F81A -:109270000210B94201D3002141800221B8F8020056 -:1092800009F014FA002864D0B8F80200694608F022 -:1092900015FAFFF735FF00B1FFDF9DF8000078B148 -:1092A000B8F8020009F046FB5FEA000900D1FFDFD1 -:1092B000484608F0B4FD18B1B8F8020002F054F9BD -:1092C000B8F8020009F024FB5FEA000900D1FFDFD3 -:1092D000484608F09CFDE0BB0321B8F8020009F005 -:1092E000E5F95FEA000B47D1FFDF45E0DBF810004E -:1092F00010B10078FF2849D0022000F0D9FC0220EC -:10930000FFF7D5FD8246484608F08DFECAF80400F6 -:1093100000B9FFDFDAF8040008F055FF00210090E3 -:109320000170B8F802105046AAF8021001F01EFEB3 -:10933000484608F04AFF00B9FFDF504600F0BEFC87 -:1093400018B99AF80100000704D50098CBF810006E -:1093500012E024E0DBF8100038B10178491C11F06C -:10936000FF01017008D1FFDF06E0002211464846E8 -:1093700000F0CBFB00B9FFDF94F9EA01022805DB1E -:10938000B8F8020001F0B7FD0028AFD194F9E90167 -:10939000042804DB484608F07CFF00B101266D1C60 -:1093A000EDB2BD4204D294F9EA010228BFF65AAFE9 -:1093B000002E7FF422AFBDE8F84F032000F078BC08 -:1093C00010B58B4CE06008682061AFF2DB10F9F754 -:1093D00084FD607010BD87480021403801708448CA -:1093E000017085494160704770B505464FF0805067 -:1093F0000C46D0F8A410491C05D1D0F8A810C943D8 -:109400000904090C0BD050F8A01F01F001012970CC -:10941000416821608068A080287830B970BD06213D -:1094200020460CF07EFB01202870607940F0C000DF -:10943000607170BD70B54FF080540D46D4F8801047 -:10944000491C0BD1D4F88410491C07D1D4F88810DA -:10945000491C03D1D4F88C10491C0CD0D4F88010CE -:109460000160D4F884104160D4F888108160D4F889 -:109470008C10C16002E010210CF053FBD4F8900076 -:10948000401C0BD1D4F89400401C07D1D4F89800AC -:10949000401C03D1D4F89C00401C09D054F8900F14 -:1094A000286060686860A068A860E068E86070BDD7 -:1094B0002846BDE8704010210CF033BB4D480079C0 -:1094C000F5E470B54B4CE07830B3207804EB4010F5 -:1094D000407A00F00700204490F9E801002800DC01 -:1094E000FFDF2078002504EB4010407A00F00700F1 -:1094F000011991F8E801401E81F8E8012078401C2C -:10950000C0B220700F2800D12570A078401CA07038 -:109510000CF0FEF9E57070BDFFDF70BD3EB505468D -:10952000032109F0C3F80446284609F0F1F905467D -:1095300004B9FFDF206918B10078FF2800D1FFDFF0 -:1095400001AA6946284600F0E0FA60B9FFDF0AE0A8 -:10955000002202A9284600F0D8FA00B9FFDF9DF8E2 -:10956000080000B1FFDF9DF80000411E8DF80010DB -:10957000EED220690199884201D1002020613EBDD0 -:1095800070B50546A0F57F400C46FF3800D1FFDFDF -:10959000012C01D0FFDF70BDFFF790FF040000D168 -:1095A000FFDF207820F00F00401D20F0F000503049 -:1095B000207065800020207201202073BDE870407B -:1095C0007FE72DE9F04116460D460746FFF776FF87 -:1095D000040000D1FFDF207820F00F00401D20F0B4 -:1095E000F00050302070678001202072286805E06C -:1095F00018000020E8030020F81300202061A8884C -:10960000A0822673BDE8F0415BE77FB5FFF7E4FC7D -:10961000040000D1FFDF02A92046FFF70BFB05463F -:1096200003A92046FFF720FB8DF800508DF80100BC -:10963000BDF80800001DADF80200BDF80C00001DCB -:10964000ADF80400E088ADF80600684608F0ACF814 -:10965000002800D0FFDF7FBD2DE9F041FB4C06461E -:10966000207808B1082059E43046F7F752FE08B1D7 -:10967000102053E4F64D287808B9FFF766FCA87A65 -:10968000697A0844C7B200F076FAB84207D2381AAD -:10969000C1B232460020FFF77DFC0028E3D16068AC -:1096A000C01C20F00300606000F05DFB61680122D7 -:1096B0000844804601463046FFF7F2FA070012D010 -:1096C0000020FFF789FC06000BD006F1130061684B -:1096D00020F00300884200D0FFDF6878401E6870E9 -:1096E000666038461AE4002241463046FFF7D8FA51 -:1096F00000B1FFDF306860604FF6FF7060800120CE -:10970000207000200AE42DE9F0410446CF481746B6 -:109710000E46007808B10820A5E70846F7F7D3FD04 -:1097200008B110209FE7CA4D287808B9FFF70DFC53 -:10973000601E1E2807D8012C22D13078FE281FD8A1 -:10974000287700208FE7A4F120001F2805D8E0B279 -:109750003A463146BDE8F04150E4A4F140001F28EC -:1097600005D831462046BDE8F04100F0CFBAA4F15B -:10977000A0001F2804D80020A02C03D0A12C06D0C4 -:10978000072070E7317801F0010169776BE73168F4 -:109790000922F82901D38B0701D0104663E76B7CBF -:1097A00003F00303012B04D16B8BD7339CB28C42A3 -:1097B000F3D8296257E72DE9F04781460E4608465F -:1097C000F7F7A7FD48B94846F7F7C1FD28B909F1F1 -:1097D000030020F00301494502D01020BDE8F087C6 -:1097E0009B484FF0000A4030817869B1417880464B -:1097F00000EB41140834378832460021204600F03F -:109800006BFA050004D027E0A6F800A00520E5E7E4 -:10981000B9F1000F24D03088B84201D90C251FE0DF -:10982000607800F00705284600F042FA08EB0507CB -:10983000324697F8E8014946401C87F8E80120467F -:1098400007F5F47700F048FA05463878401E38707E -:10985000032000F02DFA2DB10C2D01D0A6F800A0A8 -:109860002846BBE76078794E00F00701012923D034 -:1098700002290CD0032934D0FFDF98F801104046AC -:10988000491CC9B288F801100F2935D036E061684B -:1098900021B1000702D46088FFF740FE98F8EA0182 -:1098A0004746012802D17078F9F736FB97F9EA01AB -:1098B0000428E2DBFFDFE0E7616821B14FF490723A -:1098C000B06808F059FD98F8E9014746032802D12D -:1098D0007078F9F721FB97F9E9010428CDDBFFDF68 -:1098E000CBE7C00602D56088FFF718FE98F9EB01B8 -:1098F0000628C2DBFFDFC0E780F801A08178491E9F -:109900008170617801F0070101EB080090F8E8111F -:10991000491C80F8E811A3E770B50D460446F7F737 -:10992000D2FC18B92846F7F7F4FC08B1102070BD36 -:1099300029462046BDE870400AF015BC70B50546C2 -:109940000AF034FCC4B22846F7F701FD08B1102034 -:1099500070BD35B128782C7018B1A04201D0072015 -:1099600070BD2046FDF796FE052805D10AF022FCC1 -:10997000012801D0002070BD0F2070BD70B50446D5 -:1099800015460E460846F7F79EFC18B92846F7F725 -:10999000C0FC08B1102070BD022C03D0102C01D0E7 -:1099A000092070BD2A46314620460AF00CFC0028EA -:1099B000F7D0052070BD70B514460D460646F7F782 -:1099C00082FC38B92846F7F7A4FC18B92046F7F707 -:1099D000BEFC08B1102070BD2246294630460AF070 -:1099E00011FC0028F7D0072070BD3EB50446F7F7FC -:1099F00090FC08B110203EBD684606F096FDFFF7CA -:109A00007FFB0028F7D19DF806002070BDF8080004 -:109A10006080BDF80A00A08000203EBD70B50546FC -:109A20000C460846F7F793FC20B93CB12068F7F7DD -:109A300070FC08B1102070BDA08828B121462846CE -:109A4000BDE87040FDF77EBE092070BD1800002003 -:109A5000A803002070B504460D460846F7F733FC0E -:109A600030B9601E1E2814D82846F7F72CFC08B120 -:109A70001020EAE7032C01D90720E6E704B9FFDF4D -:109A8000FC4800EB840050F8041C2846BDE87040F8 -:109A90000847A4F120001F2805D829462046BDE824 -:109AA0007040FAF7D2BBF02CE6D1A868F7F70BFCB0 -:109AB0000028DDD1284607F0DFFEBDE87040FFF743 -:109AC0001FBB70B504460D460846F7F722FC30B9B7 -:109AD000601E1E280FD82846F7F7F5FB08B11020A6 -:109AE000B3E7012C03D0022C01D0032C01D10620B6 -:109AF000ABE70720A9E7A4F120001F28F9D82946E1 -:109B00002046BDE87040FAF7F8BB08F04FB938B509 -:109B10000446D948007B00F00105D9B904F042FBA6 -:109B20000DB1226800E00022D4484178C06806F0F8 -:109B3000EAFBD2481030C0788DF8000010B101283F -:109B400002D004E0012000E000208DF8000068460B -:109B500006F063FD002D02D020682830206038BD5B -:109B600030B5C54D04466878A04200D8FFDF68686C -:109B700000EB041030BD70B5BF4800252C46467878 -:109B800007E02046FFF7ECFF4078641C2844C5B28C -:109B9000E4B2B442F5D1284657E72DE9F0410C462E -:109BA00007464FF0000800F00CF90646FF2801D9DF -:109BB0004FF013083868C01C20F003023A6054EAE2 -:109BC000080421D1AC48F3B2072124300CF0AEF9DF -:109BD00009E0072C10D2DFE804F0060408080A04A4 -:109BE0000600A74804E0A74802E0A74800E0A7480D -:109BF0000CF0BCF9054600E0FFDFA54200D0FFDF16 -:109C0000641CE4B2072CE4D3386800EB061038601B -:109C1000404628E5021D5143452900D2452108440C -:109C2000C01CB0FBF2F0C0B270472DE9FC5F0646E5 -:109C300091484FF000088B464746444690F8019003 -:109C400022E02046FFF78CFF050000D1FFDF687897 -:109C500069463844C7B22846FEF7ECFF824601A9A0 -:109C60002846FFF701F80346BDF804005246001DE0 -:109C700081B2BDF80000001D80B208F095FD6A7841 -:109C8000641C00FB0288E4B24C45DAD13068C01C89 -:109C900020F003003060BBF1000F00D000204246EE -:109CA000394608F08FFD316808443060BDE8FC9FFC -:109CB0007149403108710020C87070476E494031C9 -:109CC000CA782AB10A7801EB42110831814201D0E9 -:109CD00001207047002070472DE9F04106460078CA -:109CE000154600F00F0400201080601E0F46052866 -:109CF00000D3FFDF5F482A46183800EB840039465E -:109D000050F8043C3046BDE8F041184770B50C46A9 -:109D1000402802D0412806D120E0A07861780D18B3 -:109D2000E178814201D907208FE62078012801D906 -:109D300013208AE6FF2D08D80AF0CEFB06460BF06A -:109D40009FFD301A801EA84201DA12207DE64A48A3 -:109D50002168816021790173002076E6BDE87040BA -:109D6000084600F059B82DE9F0470027DFF808A1B0 -:109D70003E463D46B9463C469AF801800AE02046F8 -:109D8000FFF7EEFE4178807B0E4410FB0155641C0A -:109D9000E4B27F1C4445F2D109EB8700C6EBC60153 -:109DA00000EB81009AF8092000EB850101EBC2016C -:109DB0009AF80A209AF80B0001EBC20101EB80002F -:109DC0000CE52DE9F047DFF8B0900026344699F80D -:109DD000090099F80A2099F801700244D5B299F85F -:109DE0000B20104400F0FF0808E02046FFF7B8FE03 -:109DF000817B407811FB0066641CE4B2BC42F4D164 -:109E000099F8091099F80A0029442944414400B1FD -:109E1000012008443044E1E438B50446407800F0BD -:109E20000300012803D002280BD0072038BD60684A -:109E300058B1F7F795FAD0B96068F7F788FA20B902 -:109E400015E06068F7F73FFA88B969462046FCF7E5 -:109E50009DF80028EAD1607800F00300022817D1AD -:109E60009DF80000A0B16068F7F771FA80B110208A -:109E700038BD000024500200A80300201800002074 -:109E80004B410000E7AC0000E92F0000EB3E010071 -:109E90006189F8290DD8208988420AD8607800F0B5 -:109EA00003020A48012A06D1D731026A89B28A42DE -:109EB00001D20920DCE794E80E0000F1100585E8E6 -:109EC0000E000AB9002101830020D1E7A803002079 -:109ED0002DE9F041074614468846084601F022FD68 -:109EE000064608EB88001C22796802EBC0000D18BA -:109EF000688C58B14146384601F01CFD014678682F -:109F00000078C200082305F120000CE0E88CA8B11D -:109F10004146384601F015FD01467868082340782F -:109F2000C20005F1240008F07EFA38B10621217242 -:109F30006681D0E90010C4E9031009E028780928F7 -:109F40000BD00520207266816868E06000202870D0 -:109F50002046BDE8F04101F0DBBC0720207266819D -:109F6000F4E72DE9F04116460D460746406801EB3F -:109F700085011C2202EBC1014418204601F003FDBB -:109F800040B10021708865F30F2160F31F41062066 -:109F90000CF0A6F809202070324629463846BDE864 -:109FA000F04195E72DE9F0410E46074600241C21BB -:109FB000F07816E004EB8403726801EBC303D25C13 -:109FC0006AB1FFF77BFA050000D1FFDF6F802A46F8 -:109FD00021463046FFF7C5FF0120BDE8F081641C33 -:109FE000E4B2A042E6D80020F7E770B506460024A8 -:109FF0001C21C0780AE000BF04EB8403726801EB07 -:10A00000C303D5182A782AB1641CE4B2A042F3D85D -:10A01000402070BD282128461AF0F3FD7068808921 -:10A020002881204670BD70B5034600201C25DC78D1 -:10A030000DE000BF00EB80065A6805EBC60632440F -:10A04000167816B1128A8A4204D0401CC0B28442EB -:10A05000F0D8402070BDF0B5044600201C26E578FD -:10A060000EE000BF00EB8007636806EBC7073B44C8 -:10A070001F788F4202D15B78934204D0401CC0B25B -:10A080008542EFD84020F0BD0078032801D00020A1 -:10A090007047012070470078022801D000207047E7 -:10A0A000012070470078072801D000207047012068 -:10A0B00070472DE9F041064688461078F17815463C -:10A0C000884200D3FFDF2C781C27641CF078E4B2B0 -:10A0D000A04201D8201AC4B204EB8401706807EBD7 -:10A0E000C1010844017821B14146884708B12C706C -:10A0F00073E72878A042E8D1402028706DE770B55A -:10A1000014460B880122A240134207D113430B804F -:10A1100001230A22011D08F050F9047070BD2DE9D9 -:10A12000FF4F81B00878DDE90E7B9A4691460E46D6 -:10A1300040072CD4019808F0FDFB040000D1FFDF9C -:10A1400007F1040820461FFA88F107F03CFD0500DE -:10A1500000D1FFDF204629466A4607F086FF0098B7 -:10A16000A0F80370A0F805A0284608F02CF80178A4 -:10A1700069F306016BF3C711017020461FFA88F1DD -:10A1800007F064FD00B9FFDF019806F02EF806EB3A -:10A190000900017F491C017705B0BDE8F08F2DE96A -:10A1A000F84F0E469A4691460746032108F07EFA7C -:10A1B0000446008DDFF8B885002518B198F8000036 -:10A1C000B0421ED1384608F0B5FB070000D1FFDFD2 -:10A1D00009F10401384689B207F0F5FC050010D0FA -:10A1E000384629466A4607F040FF009800210A4693 -:10A1F0000180817006F0B2F80098C01DCAF8000016 -:10A2000021E098F80000B04216D104F1260734F896 -:10A21000341F012000FA06F911EA090F00D0FFDF10 -:10A220002088012340EA090020800A22391D38468F -:10A2300008F0DEF8067006E0324604F1340104F15D -:10A240002600FFF75CFF0A2188F800102846BDE8C9 -:10A25000F88FFEB515460C46064602AB0C220621C9 -:10A26000FFF79DFF002827D00299607812220A701C -:10A27000801C487008224A80A07002982988052313 -:10A2800081806988C180A9880181E9884181002590 -:10A290000C20CDE90005062221463046FFF73FFF9E -:10A2A0002946002266F31F41F02310460BF06EFE94 -:10A2B0006078801C60700120FEBDFEB514460D461E -:10A2C0000622064602AB1146FFF769FF002812D0AE -:10A2D000029B132000211870A87858700220588023 -:10A2E0009C800620CDE90001024605232946304620 -:10A2F000FFF715FF0120FEBD2DE9FE430C46804609 -:10A3000044E002AB0E2207214046FFF748FF002839 -:10A3100041D060681C2267788678BF1C06EB8601F6 -:10A3200002EBC101451802981421017047700A21FF -:10A330004180698A0181E98A4181A9888180A9894E -:10A340008181304601F0EEFA029905230722C88088 -:10A350006F700420287000250E20CDE900052146ED -:10A360004046FFF7DCFE294666F30F2168F31F41E4 -:10A37000F023002206200BF009FE6078FD49801CC6 -:10A38000607062682046921CFFF793FE60688078D8 -:10A390004028B6D10120BDE8FE83FEB50D46064635 -:10A3A00038E002AB0E2207213046FFF7F8FE002806 -:10A3B00035D068681C23C17801EB810203EBC2022F -:10A3C0008418029815220270627842700A22428034 -:10A3D000A2894281A2888281084601F0A3FA01463F -:10A3E00002988180618AC180E18A0181A088B8B128 -:10A3F0000020207000210E20CDE900010523072256 -:10A4000029463046FFF78BFE6A68DB492846D21C96 -:10A41000FFF74FFE6868C0784028C2D10120FEBD1A -:10A420000620E6E72DE9FE430C46814644E020463F -:10A4300001F093FAD0B302AB082207214846FFF798 -:10A44000AEFE0028A7D060681C2265780679AD1C96 -:10A4500006EB860102EBC10147180298B7F810809D -:10A4600006210170457004214180304601F05AFAFE -:10A470000146029805230722C180A0F804807D7060 -:10A48000082038700025CDE9000521464846FFF731 -:10A4900046FE294666F30F2169F31F41F02300228F -:10A4A00006200BF073FD6078801C60706268B34911 -:10A4B0002046121DFFF7FDFD606801794029B6D1E5 -:10A4C000012068E72DE9F34F83B00E4680E0304667 -:10A4D00001F043FA002875D071681C2091F80680BD -:10A4E00008EB880200EBC2000C184146304601F030 -:10A4F00028FA0146A078C30070684078C20004F1D1 -:10A50000240007F0ACFF07468088E18B401A80B238 -:10A51000002581B3AA46218B814200D80846814696 -:10A52000024602AB07210398FFF739FE010028D04D -:10A53000BAF1000F03D0029AB888022510808B462A -:10A54000E28B3968A9EB05001FFA80FA0A440398E8 -:10A55000009208F0EFF9ED1D009A59465346009518 -:10A5600007F0FDFDE08B504480B2E083B98888425B -:10A5700009D1012508E0FFE7801C4FF0010A80B2F5 -:10A58000C9E7002008E60025CDE90095238A0722C7 -:10A5900031460398FFF7C3FDE089401EE0818DB18D -:10A5A000A078401CA0707068F178427811FB02F12D -:10A5B000CAB2816901230E3007F0FFFE80F80080E7 -:10A5C0000020E08372686E493046921DFFF771FDEE -:10A5D0007068817940297FF47AAF0120DCE570B59D -:10A5E000064648680D4614468179402910D104EB8F -:10A5F00084011C2202EBC101084401F0E5F90028A6 -:10A6000006D06868294684713046BDE8704059E735 -:10A6100070BDFEB50C460746002645E0204601F019 -:10A620009CF9D8B360681C22417901EB810102EBEF -:10A63000C1014518688900B9FFDF02AB0822072174 -:10A640003846FFF7ACFD002833D002996078162217 -:10A650000A70801C4870042048806068407901F0CE -:10A6600061F9014602980523072281806989C1802A -:10A670000820CDE9000621463846FFF750FD6078F6 -:10A68000801C6070A88969890844B0F5803F00D3B8 -:10A69000FFDFA88969890844A8816E816268394909 -:10A6A0002046521DFFF705FD606841794029B5D16C -:10A6B0000120FEBD30B5438C458BC3F3C704002396 -:10A6C00045B1838B641EED1AC38A6D1E1D4495FB34 -:10A6D000F3F3E4B22CB1008918B1A04200D82046AF -:10A6E00003444FF6FF70834200D3034613800C707F -:10A6F00030BD2DE9FC41074616460D46486802EB81 -:10A7000086011C2202EBC10144186A4601A92046B9 -:10A71000FFF7D0FFA089618901448AB2BDF800101B -:10A72000914212D0081A00D50020608168684079F3 -:10A7300040280AD1204601F03DF9002805D068687C -:10A74000294646713846FFF764FFBDE8FC812DE9D4 -:10A75000FE4F8946804615465088032107F0A6FF24 -:10A760008346B8F8020040280ED240200DE00000D9 -:10A770002C00002089A0000097A00000A5A00000E8 -:10A78000C9B90000B5B90000403880B28246014620 -:10A79000584601F0E2F800287ED00AEB8A001C221D -:10A7A000DBF8041002EBC0000C18204601F0EBF8B7 -:10A7B000002877D1B8F80000E18A88423CD8A18906 -:10A7C000D1B348456ED100265146584601F0B2F843 -:10A7D000218C0F18608B48B9B9F1020F62D3B8F819 -:10A7E00004006083618A884226D80226A9EB06000D -:10A7F0001FFA80F9B888A28B801A002814DD494618 -:10A80000814500DA084683B2688869680291396830 -:10A810000A44CDE9003208F07BF8DDE90121F61D9C -:10A82000009B009607F067FCA18B01EB090080B24A -:10A83000A083618B884207D9688803B05246594685 -:10A84000BDE8F04F01F0DDB81FD14FF009002872CC -:10A85000B8F802006881D7E90001C5E90401608BFE -:10A86000A881284601F054F85146584601F062F894 -:10A870000146DBF8040008230078C20004F1200040 -:10A8800007F0D1FD0020A0836083A0890AF0FF02B9 -:10A89000401EA081688800E004E003B05946BDE88E -:10A8A000F04F26E7BDE8FE8F2DE9F041064615463C -:10A8B0000F461C461846F6F706FD18B92068F6F74D -:10A8C00028FD08B1102013E47168688C0978B0EB9A -:10A8D000C10F01D313200BE43946304601F02AF8AA -:10A8E0000146706808230078C20005F1200007F0D7 -:10A8F00064FDD4E90012C0E900120020E3E710B5BE -:10A900000446032107F0D2FE0146007800F0030060 -:10A91000022805D02046BDE8104001F1140298E459 -:10A920008A8A2046BDE81040C7E470B5044603217A -:10A9300007F0BCFE054601462046FFF773FD0028E0 -:10A9400016D029462046FFF764FE002810D029467D -:10A950002046FFF722FD00280AD029462046FFF7AF -:10A96000CBFC002804D029462046BDE87040A9E56C -:10A9700070BD2DE9F0410C4680461EE0E17842783A -:10A9800011FB02F1CAB2816901230E3007F04BFDC1 -:10A99000077860681C22C179491EC17107EB8701E5 -:10A9A000606802EBC10146183946204600F0D5FF29 -:10A9B00018B1304600F0E0FF20B16068C17900298D -:10A9C000DCD180E7FEF77AFD050000D1FFDF0A2029 -:10A9D0002872384600F0A6FF68813946204600F00C -:10A9E000B0FF0146606808234078C20006F12400E9 -:10A9F00007F019FDD0E90010C5E90310A5F80280A1 -:10AA0000284600F085FFB07800B9FFDFB078401E1F -:10AA1000B07058E770B50C460546032107F046FEB6 -:10AA200001464068C2792244C2712846BDE87040A0 -:10AA30009FE72DE9FE4F8246507814460F464FF0AF -:10AA4000000800284FD0012807D0022822D0FFDFBD -:10AA50002068B8606068F86024E702AB0E22082125 -:10AA60005046FFF79CFB0028F2D0029815210523E1 -:10AA70000170217841700A214180C0F80480C0F83B -:10AA80000880A0F80C80628882810E20CDE9000841 -:10AA9000082221E0A678304600F044FF054606EB88 -:10AAA00086012C22786802EBC1010822465A02ABCB -:10AAB00011465046FFF773FB0028C9D002980721C2 -:10AAC0000170217841700421418008218580C68071 -:10AAD000CDE9001805230A4639465046FFF71FFB0B -:10AAE00087F80880DEE6A678022516B1022E13D07C -:10AAF000FFDF2A1D914602AB08215046FFF74FFBAE -:10AB00000028A5D002980121022E01702178417001 -:10AB10004580868002D005E00625EAE7A188C1804D -:10AB2000E1880181CDE90098052308223946504685 -:10AB3000D4E710B50446032107F0B8FD014600F143 -:10AB400008022046BDE8104073E72DE9F05F0C468F -:10AB500001281DD0957992F80480567905EB85017E -:10AB60001F2202EBC10121F0030B08EB060111FBD0 -:10AB700005F14FF6FF7202EAC10909F1030115FB65 -:10AB80000611F94F21F0031A40B101283DD124E00C -:10AB90006168E57891F800804E78DFE7594678687B -:10ABA00007F0BFFB606000B9FFDF594660681AF02C -:10ABB0004AF8E5705146786807F0B3FB6168486170 -:10ABC00000B9FFDF6068426902EB090181616068DA -:10ABD00080F800806068467017E0606852464169FE -:10ABE000786807F0C9FB5A466168786807F0C4FBCB -:10ABF000032007F003FD0446032007F007FD201A99 -:10AC0000012802D1786807F081FB0BEB0A00BDE850 -:10AC1000F09F02460021022097E773B5D24D0A202B -:10AC20002870009848B100244FEA0D0007F05BFB44 -:10AC3000002C01D1009969607CBD01240020F5E75A -:10AC400070B50C4615463821204619F0FCFF012648 -:10AC500066700A2104F11C0019F0F5FF05B9FFDF49 -:10AC6000297A207861F301002070A879002817D094 -:10AC70002A4621460020FFF768FF6168402088705F -:10AC80006168C8706168087161684871616888713D -:10AC90006168288808816168688848816068868161 -:10ACA00070BDC878002802D0002201204DE770470F -:10ACB00070B50546002165F31F4100200BF010FA26 -:10ACC0000321284607F0F2FC040000D1FFDF2146F3 -:10ACD0002846FFF767F9002804D0207840F01000DC -:10ACE0002070012070BD2DE9FF4180460E460F0CFB -:10ACF000FEF7E4FB050007D06F800321384607F01C -:10AD0000D5FC040008D106E004B03846BDE8F041A7 -:10AD10001321F9F74FBEFFDF5FEA080005D0B8F155 -:10AD2000060F18D0FFDFBDE8FF8120782A4620F00B -:10AD3000080020700020ADF8020002208DF800000D -:10AD40004FF6FF70ADF80400ADF8060069463846CE -:10AD5000F9F727FAE7E7C6F3072101EB81021C2385 -:10AD6000606803EBC202805C042803D008280AD084 -:10AD7000FFDFD8E7012000904FF440432A462046E9 -:10AD800000F008FECFE704B02A462046BDE8F041B7 -:10AD9000FFF7E7B82DE9F05F0027B0F80A9090467A -:10ADA0000C4605463E46B9F1400F01D2402001E075 -:10ADB000A9F140001FFA80FA287AC01E08286BD239 -:10ADC000DFE800F00D04192058363C4772271026A2 -:10ADD000002C6CD0D5E90301C4E902015CE07027C6 -:10ADE0001226002C63D00A2205F10C0104F10800A0 -:10ADF00019F0CDFE50E071270C26002C57D0E868E2 -:10AE0000A06049E0742710269CB3D5E90301C4E98A -:10AE100002016888032107F049FC8346FEF74EFBD8 -:10AE200002466888508051465846FFF751F833E093 -:10AE300075270A26ECB1A88920812DE076271426F3 -:10AE4000BCB105F10C0004F1080307C883E8070052 -:10AE500022E07727102664B1D5E90301C4E9020195 -:10AE60006888032107F022FC01466888FFF781FD0E -:10AE700012E01CE073270826CCB16888032107F094 -:10AE800015FC01460078C00606D56888FFF78AF8E9 -:10AE900010B96888F8F79BFDA8F800602CB12780EE -:10AEA000A4F8069066806888A0800020AFE6A8F825 -:10AEB0000060FAE72DE9FC410C461E461746804625 -:10AEC000032107F0F3FB05460A2C0AD2DFE804F061 -:10AED00005050505050509090907042303E00623FF -:10AEE00001E0FFDF0023CDE90076224629464046F7 -:10AEF000FFF715F929E438B50546A0F57F40FF387E -:10AF000030D0284607F004FD040000D1FFDF2046C2 -:10AF100007F089F8002815D001466A46204607F058 -:10AF2000A4F800980321B0F80540284607F0BEFBBE -:10AF30000546052C03D0402C05D2402404E0007ABD -:10AF400080B1002038BD403CA4B2214600F005FD90 -:10AF500040B1686804EB84013E2202EBC101405A13 -:10AF60000028EFD0012038BD2C0000202DE9F04F43 -:10AF7000054689B0408807F0CBFC040000D1FFDF14 -:10AF800006AA2046696800F0C1FC069C001F34F840 -:10AF9000031F218063886380228881B28A4205D1A1 -:10AFA000042B0AD0052B1DD0062B15D02A4620468F -:10AFB000FFF7CDFB09B0BDE8F08F1646241D2A46E9 -:10AFC00021463046F7F75BFA0828F3D12A46214696 -:10AFD0003046FCF7FEFBEDE76888211D6B68FAF749 -:10AFE00043FCE7E717466888032107F05FFB4FF053 -:10AFF00000088DF804800646ADF80680042FD9D3EA -:10B000006279002AD6D020794FF6FF794FF01C0ADA -:10B0100013282CD008DC012878D0062847D0072830 -:10B0200075D0122874D106E0142872D0152871D07A -:10B0300016286DD1ACE10C2F6AD1307800F00301F5 -:10B04000022965D140F0080030706079B0700120AD -:10B050008DF804002089ADF808006089ADF80A0079 -:10B06000A089ADF80C00E089ADF80E0019E0B078C9 -:10B0700090429FD1307801079CD5062F9AD120F0BD -:10B08000080030706888414660F31F4100200BF0D3 -:10B0900027F802208DF80400ADF808902089ADF85B -:10B0A0000A0068882A4601A9F9F77BF882E7082F89 -:10B0B00080D12789B4F80A90402F01D2402001E0C6 -:10B0C000A7F1400080B280460146304600F045FCC2 -:10B0D00008B3716808EB88002C2202EBC000095A03 -:10B0E0004945E3D1FE4807AAD0E90210CDE907108F -:10B0F00060798DF81C0008F0FF048DF81E40688808 -:10B100003146FFF796FC2A46214639E0B6E014E0C6 -:10B110003CE039E0E6E0F248D0E90010CDE9071064 -:10B120006079ADF820708DF81C00ADF82290688829 -:10B1300007AA3146FFF77DFC3CE7082FB6D16089AE -:10B14000B4F80880402801D2402000E0403887B29F -:10B150003946304600F001FC0028A7D007EB8702F3 -:10B1600071680AEBC2000844028A42459ED1017808 -:10B1700008299BD140786179884297D1F9B22A4653 -:10B180003046FEF7EEFE15E70E2F07D0CDF81C80F7 -:10B19000CDF8208060798DF81C00C8E76189E789C7 -:10B1A0008B46B4F80C903046FEF73DFFABF1400102 -:10B1B000402901D309204AE0B9F1170F01D3172F15 -:10B1C00001D20B2043E040280ED000EB80027168D2 -:10B1D0000AEBC20008440178012903D14078617963 -:10B1E0008842A9D00A2032E03046FEF7FEFE014632 -:10B1F00040282BD001EB810372680AEBC30002EBFD -:10B200000008012288F80020627988F8012070681F -:10B2100022894089B84200D93846248A03232B72F8 -:10B22000AA82EF812882A5F80C906C82084600F073 -:10B2300079FB6881A8F81490A8F81870A8F80E4057 -:10B24000A8F810B0284600F063FBB3E604200521FF -:10B250002972A5F80A80E88101212973A049D1E962 -:10B260000421CDE9072161798DF81C10ADF81E008D -:10B27000688807AA3146FFF7DCFBE3E7062FE4D333 -:10B28000B078904215D13078010712D520F008002F -:10B2900030706888414660F31F4100200AF020FFAB -:10B2A00002208DF804002089ADF80800ADF80A905E -:10B2B000F7E604213046FEF7CEFE04464028C4D00F -:10B2C0000220830300902A462146304600F062FBAC -:10B2D0004146688864F30F2160F31F4106200AF09D -:10B2E000FFFE67E60E2FB0D104213046FEF7B3FE15 -:10B2F00081464028A9D04146688869F30F2160F350 -:10B300001F4106200AF0ECFE208A0790E089009099 -:10B310007068A7894089B84200D938468346B4F896 -:10B320000A8020890590484600F0FCFA6881079859 -:10B3300040B10220079B00902A464946304600F063 -:10B3400029FB37E6B8F1170F1ED3172F1CD30420A3 -:10B35000287200986882EF81A5F810B0A5F80C80DB -:10B3600009EB89020AEBC2007168009A0C18059873 -:10B37000A4F81480A4F818B0E2812082284600F0D6 -:10B38000C7FA0620207015E601200B230090D3E7B2 -:10B39000082FA6D121893046FEF745FE07464028F2 -:10B3A0009FD007EB870271680AEBC2000844804611 -:10B3B00000F0E9FA002894D16489B8F80E0020441E -:10B3C000B0F5803F05D368883A46314600F019FB56 -:10B3D000F0E5002C85D0A8F80E0068883A46314682 -:10B3E000FFF7FDF808202872384600F09BFA6881C4 -:10B3F000AC8127E770B50D460646032107F056F9E4 -:10B40000040004D02078000704D5112070BD43F259 -:10B41000020070BD2A4621463046FEF71AFF18B9D1 -:10B42000286860616868A061207840F0080020709A -:10B43000002070BD70B50D460646032107F036F9B1 -:10B44000040004D02078000704D4082070BD43F223 -:10B45000020070BD2A4621463046FEF72EFF00B995 -:10B46000A582207820F008002070002070BD2DE912 -:10B47000F04F0E4691B08046032107F017F90446BD -:10B48000404607F057FA07460020079008900990B9 -:10B49000ADF830000A9002900390049004B9FFDFE9 -:10B4A0000DF108091FBBFFDF21E038460BA9002280 -:10B4B00006F07CFC9DF82C0000F07F050A2D00D3DF -:10B4C000FFDF6019017F491E01779DF82C000006FF -:10B4D0000DD52A460CA907A8FEF711FE02E00000D0 -:10B4E0003050020019F80510491C09F80510761EA5 -:10B4F000F6B2DAD204F13400FA4D04F1260BDFF88B -:10B50000E8A304F12A07069010E05846069900F0D7 -:10B510006AFA064628700A2800D3FFDF5AF8261078 -:10B5200040468847E08CC05DB04202D0208D0028A4 -:10B53000EBD10A202870EC4D4E4628350EE00CA9C0 -:10B5400007A800F050FA0446375D55F8240000B90A -:10B55000FFDF55F82420394640469047BDF81E00CD -:10B560000028ECD111B026E510B5032107F09EF8B4 -:10B57000040000D1FFDF0A2104F11C0019F063FB75 -:10B58000207840F00400207010BD10B50C46032157 -:10B5900007F08CF82044007F002800D0012010BD67 -:10B5A0002DE9F84F894615468246032107F07EF8BB -:10B5B000070004D02846F5F786FE40B903E043F2C1 -:10B5C0000200BDE8F88F4846F5F7A3FE08B1102049 -:10B5D000F7E7786828B169880089814201D9092094 -:10B5E000EFE7B9F800001C2418B1402809D2402028 -:10B5F00008E03846FEF7F9FC8046402819D11320B0 -:10B60000DFE7403880B280460146384600F0A5F9B1 -:10B6100048B108EB8800796804EBC000085C012899 -:10B6200003D00820CDE70520CBE7FDF747FF060054 -:10B630000BD008EB8800796804EBC0000C18B9F84F -:10B64000000020B1E88910B113E01120B9E7288883 -:10B65000172802D36888172801D20720B1E7686845 -:10B6600038B12B1D224641463846FFF71DF9002808 -:10B67000A7D104F10C0269462046FFF71BF8288881 -:10B6800060826888E082B9F8000030B10220207042 -:10B69000E889A080E889A0B12BE003202070A88968 -:10B6A000A08078688178402905D180F802803946E9 -:10B6B0005046FEF721FE404600F034F9A9F800009C -:10B6C00021E07868218B4089884200D90846208390 -:10B6D000A6F802A004203072B9F800007081E08959 -:10B6E0007082F181208B3082A08AB081304600F0D8 -:10B6F0000FF97868C178402905D180F80380394670 -:10B700005046FEF74AFE00205BE770B50D46064640 -:10B71000032106F0CBFF040003D0402D04D24025C6 -:10B7200003E043F2020070BD403DADB2294600F097 -:10B7300014F958B105EB85011C22606802EBC101C8 -:10B74000084400F020F918B1082070BD052070BD34 -:10B750002A462146304600F054F9002070BD2DE9FC -:10B76000F0410D4616468046032106F09FFF044631 -:10B77000402D01D2402500E0403DADB28CB12946BC -:10B7800000F0EBF880B105EB85011C22606802EB4C -:10B79000C1014718384600F0F6F838B10820BDE876 -:10B7A000F08143F20200FAE70520F8E733463A4613 -:10B7B00029462046FFF778F80028F0D1EAB2214662 -:10B7C0004046FEF796FF0020E9E72DE9F0410D46DF -:10B7D00016468046032106F069FF0446402D01D23B -:10B7E000402500E0403DAFB224B13046F5F76BFD97 -:10B7F00038B902E043F20200D1E73068F5F763FDA3 -:10B8000008B11020CBE73946204600F0A6F860B119 -:10B8100007EB87011C22606802EBC101451828462E -:10B8200000F0B1F818B10820B9E70520B7E7B088F3 -:10B83000A98A884201D90C20B1E76168E88C49786F -:10B84000B0EBC10F01D31320A9E73946204600F021 -:10B8500078F80146606808234078C20005F12400AA -:10B8600006F0ABFDD6E90012C0E90012FAB221469B -:10B870004046FEF7B4FE002091E72DE9F0470D4663 -:10B880001F4690468146032106F010FF0446402DD6 -:10B8900001D2402001E0A5F1400086B23CB14DB19B -:10B8A0003846F5F754FD50B11020BDE8F08743F25B -:10B8B0000200FAE76068C8B1A0F80C8024E03146C5 -:10B8C000204600F04AF888B106EB86011C22606829 -:10B8D00002EBC1014518284600F055F840B1082098 -:10B8E000E3E700002C000020485002000520DCE7C0 -:10B8F000A5F80880F2B221464846FEF7FAFE1FB1CD -:10B90000A8896989084438800020CEE706F0ADBBDD -:10B91000017821F00F01491C21F0F0011031017074 -:10B92000FDF7CFBD10B50446402800D9FFDF4034F5 -:10B93000A0B210BD406842690078484302EBC000E5 -:10B940007047C2784068037812FB03F2437840697D -:10B9500001FB032100EBC1007047C2788A4209D97C -:10B96000406801EB81011C2202EBC101405C08B17F -:10B9700001207047002070470078062801D9012077 -:10B980007047002070470078062801D001207047DA -:10B9900000207047F0B401EB81061C27446807EBD8 -:10B9A000C6063444049D05262670E3802571F0BC4C -:10B9B000FEF78EBA10B5418911B1FFF7DDFF08B16E -:10B9C000002010BD012010BD10B5C18C8278B1EBF4 -:10B9D000C20F04D9C18911B1FFF7CEFF08B1002011 -:10B9E00010BD012010BD10B50C4601230A22011D17 -:10B9F00006F019FD007821880122824091432180C0 -:10BA000010BDF0B402EB82051C264C6806EBC505A0 -:10BA1000072363554B681C79402C03D11A71F0BC85 -:10BA2000FEF700BDF0BC704710B5EFF3108000F0DA -:10BA3000010472B6F7484178491C417040780128EA -:10BA400001D109F08DFF002C00D162B610BD70B598 -:10BA5000F04CA07848B90125A570FFF7E5FF09F083 -:10BA600090FF20B1002009F05AFF002070BD4FF078 -:10BA70008040E570C0F80453F7E770B5EFF310802D -:10BA800000F0010572B6E34C607800B9FFDF607822 -:10BA9000401E6070607808B909F066FF002D00D183 -:10BAA00062B670BDDB4810B5817821B10021C1704C -:10BAB0008170FFF7E2FF002010BD10B5044609F0C9 -:10BAC00060FFD4498978084000D001202060002020 -:10BAD00010BD10B5FFF7A8FF09F053FF02220123A4 -:10BAE000CC49540728B1CC48026023610320087276 -:10BAF00002E00A72C4F804330020887110BD2DE9F9 -:10BB0000F84FDFF810934278817889F804200026F6 -:10BB100089F80510074689F806600078DFF8FCB25E -:10BB2000354620B1012811D0022811D0FFDF09F0DD -:10BB30003AFF4FF0804498B109F03CFFB0420FD17A -:10BB4000304609F03BFF0028FAD041E00126EEE73D -:10BB5000FFF76AFF58460168C907FCD00226E6E7EE -:10BB60000120E060C4F80451AD490E600107D1F82E -:10BB70004412AB4AC1F3423124321160A849343136 -:10BB800008604FF0020AC4F804A3A060A548016849 -:10BB9000C94341F3001101F10108016841F01001AE -:10BBA000016000E020BFD4F804010028FAD030463C -:10BBB00009F004FF0028FAD0B8F1000F04D1994829 -:10BBC000016821F010010160C4F808A3C4F8045111 -:10BBD00099F805004E4680B1387870B909F0D1FE69 -:10BBE00080460AF065F86FF00042B8F1000F02D00D -:10BBF000C6E9032001E0C6E90302DBF80000C00744 -:10BC000001D009F0BAFE387810B13572BDE8F88F6E -:10BC10004FF01808C4F808830127A7614FF4A070FB -:10BC2000ADF80000BDF80000411EADF80010F9D2DB -:10BC3000C4F80C51C4F810517648C01D09F0D0FE6C -:10BC40003570FFF746FF676175493079203108602C -:10BC5000C4F80483DAE770B5050000D1FFDF4FF0C8 -:10BC600080424FF0FF30C2F808030021C2F80011F3 -:10BC7000C2F80411C2F80C11C2F81011654C6170C1 -:10BC800009F08BFE10B10120A0706070634800685D -:10BC9000C00701D009F071FE2846BDE870402EE7CC -:10BCA0005C48007A002800D0012070472DE9FC5F35 -:10BCB0005D48D0F800905C4A5C4908321160840607 -:10BCC000D4F8080100B10120D4F8001111B14FF0EF -:10BCD000010801E04FF00008D4F8041101B101217E -:10BCE0000191D4F80C1101B101210091D4F8101187 -:10BCF00001B10121474D8A4695F800B0002620B1D8 -:10BD0000C4F80861012009F00AFE4248C01D09F08C -:10BD10006FFE00B1FFDF0127B8F1000F10D0C4F8AB -:10BD20000873E87818B1EE70002009F0F8FD287A61 -:10BD3000022805D1032028723748022101602761BB -:10BD4000019808B1C4F80461009850B1C4F80C61BE -:10BD5000287A032800D0FFDF2F4806602F72FFF7F4 -:10BD60008CFEBAF1000F07D0C4F81061287A0128C0 -:10BD700001D100F05DF86761BBF1000F07D02E70B4 -:10BD8000287A012801D1FFF7A4FEFFF776FE2148AB -:10BD9000C01D09F043FE2449091DC1F80090BDE80B -:10BDA000FC9F1C4810B5C01D09F022FE194940B186 -:10BDB000012008704FF0E021C1F80002BDE81040FA -:10BDC00032E6087A012801D1FFF783FE1148BDE869 -:10BDD0001040C01D09F022BE70B50E4CA07808B905 -:10BDE00009F0C2FD01208507A861207A00260328FA -:10BDF0000AD100BFD5F80C0120B9002009F0DEFD02 -:10BE00000028F7D1C5F80C6126724FF0FF30C5F855 -:10BE1000080370BD3C000020340C00400C040040BE -:10BE20001805004010ED00E010050240010000017F -:10BE300070B5134C6079F0B1012803D0A179401E90 -:10BE4000814218DA09F09DFD054609F031FF61795C -:10BE5000012902D9A179491CA1710DB1216900E024 -:10BE6000E168411A022902DA11F1020FD1DC0DB1A9 -:10BE7000206100E0E060BDE870402AE6C9E700000C -:10BE80003C00002010B5202000F07FF8202000F0BA -:10BE90008DF84D49202081F80004F5F7AFFA4B49A1 -:10BEA00008604B48D0F8041341F00101C0F80413B6 -:10BEB000D0F8041341F08071C0F804134249012006 -:10BEC0001C39C1F8000110BD10B5202000F05DF84C -:10BED0003E480021C8380160001D01603D4A481EEF -:10BEE00010603B4AC2F80803384B1960C2F80001E1 -:10BEF000C2F8600138490860BDE81040202000F019 -:10BF000055B834493548091F0860704731493348EE -:10BF1000086070472D48C8380160001D521E02603D -:10BF200070472C4901200860BFF34F8F70472DE9FF -:10BF3000F0412849D0F8188028480860244CD4F8EB -:10BF400000010025244E6F1E28B14046F5F7B4F9D4 -:10BF500040B9002111E0D4F8600198B14046F5F7EE -:10BF6000ABF948B1C4F80051C4F860513760BDE87E -:10BF7000F041202000F01AB831684046BDE8F04199 -:10BF800018F08CBEFFDFBDE8F08100280DDB00F06B -:10BF90001F02012191404009800000F1E020C0F81B -:10BFA0008011BFF34F8FBFF36F8F7047002809DBFD -:10BFB00000F01F02012191404009800000F1E020C3 -:10BFC000C0F880127047000020E000E0C806024080 -:10BFD0000000024018050240000402400100000178 -:10BFE0000F4A12680D498A420CD118470C4A126850 -:10BFF0000A4B9A4206D101B509F02CFEFFF781FFEA -:10C00000BDE801400749096809580847064807493B -:10C01000054A064B7047000000000000BEBAFECA89 -:10C020005400002004000020781300207813002022 -:10C03000F8B51D46DDE906470E000AD006F07AFC89 -:10C040002346FF1DBCB231462A46009406F087F80D -:10C05000F8BDD0192246194618F054FD2046F8BD07 -:10C0600070B50D460446102118F0CBFD2581172030 -:10C070006081A07B40F00A00A07370BD4FF6FF7294 -:10C080000A80014602200AF02BB8704700897047E9 -:10C09000827BD30701D1920703D4808908800020D6 -:10C0A000704705207047827B920700D581817047D9 -:10C0B00001460020098841F6FE52114200D00120BD -:10C0C000704700B50346807BC00701D0052000BD46 -:10C0D00059811846FFF7ECFFC00703D0987B40F06A -:10C0E00004009873987B40F001009873002000BD15 -:10C0F000827B520700D509B14089704717207047ED -:10C10000827B61F3C302827370472DE9FC5F0E46A8 -:10C11000044601789646012000FA01F14DF6FF52DF -:10C1200001EA020962684FF6FF7B1188594502D186 -:10C130000920BDE8FC9FB9F1000F05D041F6FE557E -:10C14000294201D00120F4E741EA090111801D00D4 -:10C1500014D000232B7094F800C0052103221F4641 -:10C160004FF0020ABCF10E0F76D2DFE80CF0F909AD -:10C17000252F47646B77479193B4D1D80420D8E733 -:10C18000616820898B7B9B0767D517284AD30B8969 -:10C19000834247D38989172901D3814242D185F847 -:10C1A00000A0A5F801003280616888816068817B09 -:10C1B00021F002018173C6E0042028702089A5F8CF -:10C1C00001006089A5F803003180BCE0208A318835 -:10C1D000C01D1FFA80F8414524D30620287020890D -:10C1E000A5F801006089A5F80300A089A5F805005D -:10C1F0000721208ACDE90001636941E00CF0FF00CE -:10C20000082810D0082028702089A5F8010060892E -:10C21000A5F8030031806A1D694604F10C0007F09F -:10C22000F1FF10B15EE01020EDE730889DF80010BE -:10C230000844308087E00A2028702089A5F8010092 -:10C24000328044E00C2028702089A5F80100608924 -:10C25000A5F8030031803AE082E064E02189338868 -:10C2600000EB41021FFA82F843453BD3B8F1050FBA -:10C2700038D30E222A700BEA4101CDE90010E368A1 -:10C2800060882A467146FFF7D3FEA6F800805AE080 -:10C290004020287060893188C01C1FFA80F8414511 -:10C2A00020D32878714620F03F0012302870208972 -:10C2B000A5F801006089CDE9000260882A46E3689C -:10C2C000FFF7B6FEA6F80080287840063BD46168E8 -:10C2D0002089888037E0A0893288401D1FFA80F8C5 -:10C2E000424501D204273DE0162028702089A5F898 -:10C2F00001006089A5F80300A089CDE900016088EC -:10C300002A4671462369FFF793FEA6F80080DEE710 -:10C3100018202870207A6870A6F800A013E06168E1 -:10C320000A88920401D405271CE0C9882289914219 -:10C3300001D0062716E01E21297030806068018830 -:10C3400021F400510180B9F1000F0BD061887823EE -:10C350000022022009F01AFE61682078887006E049 -:10C36000338003276068018821EA0901018038468B -:10C37000DFE62DE9FF4F85B01746129C0D001E46E3 -:10C380001CD03078C10703D000F03F00192801D934 -:10C39000012100E000212046FFF7AAFEA8420DD3AC -:10C3A0002088A0F57F41FF3908D03078410601D4BC -:10C3B000000605D5082009B0BDE8F08F0720FAE790 -:10C3C00000208DF800008DF8010030786B1E00F021 -:10C3D0003F0C0121A81E4FF0050A4FF002094FF053 -:10C3E000030B9AB2BCF1200F75D2DFE80CF08B1072 -:10C3F000745E7468748C749C74B674BB74C974D5A0 -:10C4000074E2747474F274F074EF74EE748B052D2E -:10C4100078D18DF80090A0788DF804007088ADF880 -:10C42000060030798DF80100707800F03F000C288C -:10C4300029D00ADCA0F10200092863D2DFE800F06D -:10C44000126215621A621D622000122824D004DCD8 -:10C450000E281BD01028DBD11BE016281FD018286F -:10C46000D6D11FE02078800701E02078400700281F -:10C4700048DAEFE020780007F9E72078C006F6E711 -:10C4800020788006F3E720784006F0E72078000661 -:10C49000EDE72088C005EAE720884005E7E7208827 -:10C4A0000005E4E72088C004E1E72078800729D56B -:10C4B000032D27D18DF800B0B6F8010082E0217875 -:10C4C00049071FD5062D1DD381B27078012803D0EE -:10C4D000022817D102E0CAE0022000E01020042266 -:10C4E0008DF8002072788DF80420801CB1FBF0F2EA -:10C4F000ADF8062092B242438A4203D10397ADF8C9 -:10C500000890A7E07AE02078000777D598B28208F3 -:10C510008DF800A0ADF80420B0EB820F6ED1029729 -:10C52000ADF8061096E02178C90667D5022D65D3CF -:10C5300081B206208DF80000707802285ED300BF1B -:10C54000B1FBF0F28DF80400ADF8062092B2424340 -:10C550008A4253D1ADF808907BE0207880064DD513 -:10C56000072003E0207840067FD508208DF80000E2 -:10C57000A088ADF80400ADF80620ADF8081068E01A -:10C580002078000671D50920ADF804208DF8000050 -:10C59000ADF8061002975DE02188C90565D5022D2A -:10C5A00063D381B20A208DF80000707804285CD330 -:10C5B000C6E72088400558D5012D56D10B208DF8AF -:10C5C0000000A088ADF8040044E021E026E016E079 -:10C5D000FFE72088000548D5052D46D30C208DF8AF -:10C5E0000000A088ADF80400B6F803006D1FADF898 -:10C5F0000850ADF80600ADF80AA02AE035E0208822 -:10C60000C00432D5012D30D10D208DF8000021E07D -:10C610002088800429D4B6F80100E080A07B0007C0 -:10C6200023D5032D21D3307800F03F001B2818D0EC -:10C630000F208DF80000208840F40050A4F800007E -:10C64000B6F80100ADF80400ED1EADF80650ADF8E7 -:10C6500008B0039769460598F5F75CFC050008D01B -:10C6600016E00E208DF80000EAE7072510E0082507 -:10C670000EE0307800F03F001B2809D01D2807D0BD -:10C680000220059909F02CFD208800F4005020803C -:10C69000A07B400708D52046FFF70AFDC00703D15D -:10C6A000A07B20F00400A073284684E61FB5022872 -:10C6B00006D101208DF8000088B26946F5F72AFC02 -:10C6C0001FBD0000F8B51D46DDE906470E000AD083 -:10C6D00006F030F92346FF1DBCB231462A460094CD -:10C6E00005F03DFDF8BDD0192246194618F00AFAAA -:10C6F0002046F8BD2DE9FF4F8DB09B46DDE91B5765 -:10C70000DDF87CA00C46082B05D0E06901F002F9A9 -:10C7100050B11020D2E02888092140F01000288074 -:10C720008AF80010022617E0E16901208871E269A9 -:10C730004FF420519180E1698872E06942F601016D -:10C740000181E069002181732888112140F02000D7 -:10C7500028808AF80010042638780A900A20387059 -:10C760004FF0020904F118004D460C9001F095FBC2 -:10C77000B04681E0BBF1100F0ED1022D0CD0A9EB19 -:10C780000800801C80B20221CDE9001005AB5246A2 -:10C790001E990D98FFF796FFBDF816101A98814262 -:10C7A00003D9F74800790F9004E003D10A9808B143 -:10C7B00038702FE04FF00201CDE900190DF116039A -:10C7C00052461E990D98FFF77DFF1D980088401B6B -:10C7D000801B83B2C6F1FF00984200D203461E9927 -:10C7E0000BA8D9B15FF00002DDF878C0CDE90320D5 -:10C7F00009EB060189B2CDE901C10F980090BDF89F -:10C80000161000220D9801F0CBFB387070B1C0B249 -:10C81000832807D0BDF8160020833AE00AEB09010F -:10C820008A19E1E7022011B0BDE8F08FBDF82C00B5 -:10C83000811901F0FF08022D0DD09AF80120424520 -:10C8400006D1BDF82010814207D0B8F1FF0F04D007 -:10C850009AF801801FE08AF80180C94800680178D1 -:10C86000052902D1BDF81610818009EB08001FFAD6 -:10C8700080F905EB080085B2DDE90C1005AB0F9AD5 -:10C8800001F00EFB28B91D980088411B4145BFF6F9 -:10C8900071AF022D13D0BBF1100F0CD1A9EB080022 -:10C8A000801C81B20220CDE9000105AB52461E99E1 -:10C8B0000D98FFF707FF1D980580002038700020B5 -:10C8C000B1E72DE9F8439C46089E13460027B26B5A -:10C8D0009AB3491F8CB2F18FA1F57F45FF3D05D07A -:10C8E0005518AD882944891D8DB200E0002529190D -:10C8F000B6F83C800831414520D82A44BCF80110E4 -:10C9000022F8021BBCF8031022F8021B984622F8FA -:10C91000024B914605F0FCFF4FF00C0C41464A4695 -:10C920002346CDF800C005F0E6FBF587B16B00208B -:10C930002944A41D2144088003E001E0092700E008 -:10C9400083273846BDE8F88310B50B88848F9C4256 -:10C950000CD9846BE018048844B1848824F4004422 -:10C96000A41D23440B801060002010BD0A2010BDC0 -:10C970002DE9F0478AB00025904689468246ADF8F9 -:10C98000185007274BE0059806888088000446D495 -:10C99000A8F8006007A8019500970295CDE903501B -:10C9A0004FF4007300223146504601F0F9FA0400BA -:10C9B0003CD1BDF81800ADF82000059804888188A6 -:10C9C000B44216D10A0414D401950295039521F4BA -:10C9D00000410097049541F4804342882146504627 -:10C9E00001F0B4F804000BD10598818841F40041AE -:10C9F000818005AA08A94846FFF7A6FF0400DCD0FD -:10CA00000097059802950195039504950188BDF856 -:10CA10001C300022504601F099F80A2C06D105AAD4 -:10CA200006A94846FFF790FF0400ACD0ADF81850B7 -:10CA300004E00598818821F40041818005AA06A9B7 -:10CA40004846FFF781FF0028F3D00A2C03D0204688 -:10CA50000AB0BDE8F0870020FAE710B50C46896BF4 -:10CA600086B051B10C218DF80010A18FADF80810DF -:10CA7000A16B01916946FAF744FB00204FF6FF7164 -:10CA8000A063E187A08706B010BD2DE9F0410D46F7 -:10CA90000746896B0020069E1446002911D0012B01 -:10CAA0000FD1324629463846FFF762FF002808D1E9 -:10CAB000002C06D0324629463846BDE8F04100F049 -:10CAC00038BFBDE8F0812DE9FC411446DDE9087C62 -:10CAD0000E46DDE90A15521DBCF800E092B29645FB -:10CAE00002D20720BDE8FC81ACF8002017222A7092 -:10CAF000A5F80160A5F803300522CDE900423B46C8 -:10CB00002A46FFF7DFFD0020ECE770B50C4615461E -:10CB10004821204618F097F804F1080044F81C0F4B -:10CB200000204FF6FF71E06161842084A584172006 -:10CB3000E08494F82A0040F00A0084F82A0070BDCE -:10CB40004FF6FF720A800146032009F0C9BA30B5DA -:10CB500085B00C460546FFF780FFA18E284629B117 -:10CB600001218DF800106946FAF7CBFA0020E06247 -:10CB70002063606305B030BDB0F84000704700002E -:10CB80005800002090F84620920703D4408808807F -:10CB90000020F3E70620F1E790F846209207EDD554 -:10CBA000A0F84410EAE70146002009880A0700D5EA -:10CBB000012011F0F00F01D040F00200CA0501D5AC -:10CBC00040F004008A0501D540F008004A0501D56F -:10CBD00040F010000905D1D540F02000CEE700B5A7 -:10CBE000034690F84600C00701D0062000BDA3F818 -:10CBF00042101846FFF7D7FF10F03E0F05D093F80C -:10CC0000460040F0040083F8460013F8460F40F059 -:10CC100001001870002000BD90F84620520700D592 -:10CC200011B1B0F84200A9E71720A7E710F8462F86 -:10CC300061F3C3020270A1E72DE9FF4F9BB00E0024 -:10CC4000DDE92B34DDE92978289D24D02878C10737 -:10CC500003D000F03F00192801D9012100E0002194 -:10CC60002046FFF7D9FFB04215D32878410600F0DF -:10CC70003F010CD41E290CD0218811F47F6F0AD1FA -:10CC80003A8842B1A1F57F42FF3A04D001E012296F -:10CC900001D1000602D504201FB0C5E5F9491D9851 -:10CCA0004FF0000A08718DF818A08DF83CA00FAA6B -:10CCB0000A60ADF81CA0ADF850A02978994601F0A3 -:10CCC0003F02701F5B1C04F1180C4FF0060E4FF072 -:10CCD000040BCDF858C01F2A7ED2DFE802F07D7D1C -:10CCE000107D267DAC7DF47DF37DF27DF17DF47DBC -:10CCF000F07D7D7DEF7DEE7D7D7D7D7DED0094F889 -:10CD00004610B5F80100890701D5032E02D08DF831 -:10CD100018B022E34FF40061ADF850106080032199 -:10CD20008DF83C10ADF84000D8E2052EEFD1B5F8F3 -:10CD300001002083ADF81C00B5F80310618308B131 -:10CD4000884201D901207FE10020A07220814FF6A6 -:10CD5000FF702084169801F0A0F8052089F80000E3 -:10CD60000220029083460AAB1D9A16991B9801F087 -:10CD700097F890BB9DF82E00012804D0022089F876 -:10CD80000100102003E0012089F801000220059035 -:10CD9000002203A90BA807F035FAE8BB9DF80C00A8 -:10CDA000059981423DD13A88801CA2EB0B0181425A -:10CDB00037DB02990220CDE900010DF12A034A4632 -:10CDC00041461B98FFF77EFC02980BF1020B801C7A -:10CDD00080B217AA03A901E0A0E228E002900BA804 -:10CDE00007F010FA02999DF80C00CDE9000117AB8D -:10CDF0004A4641461B98FFF765FC9DF80C100AABAC -:10CE00000BEB01001FFA80FB02981D9A084480B2C8 -:10CE1000029016991B9800E003E001F041F8002809 -:10CE2000B6D0BBF1020F02D0A7F800B053E20A203F -:10CE30008DF818004FE200210391072EFFF467AF31 -:10CE4000B5F801002083ADF81C00B5F8032062831B -:10CE500000283FF477AF90423FF674AF0120A072F4 -:10CE6000B5F8050020810020A073E06900F052FDB4 -:10CE700078B9E16901208871E2694FF4205191800D -:10CE8000E1698872E06942F601010181E0690021EF -:10CE90008173F01F20841E986062072060841698BA -:10CEA00000F0FBFF072089F80000012004900290A9 -:10CEB0000020ADF82A0028E01DE2A3E13AE1EAE013 -:10CEC00016E2AEE086E049E00298012814D0E0695D -:10CED0008079012803D1BDF82800ADF80E00049830 -:10CEE00003ABCDE900B04A4641461B98FFF7EAFB89 -:10CEF0000498001D80B20490BDF82A00ADF80C0023 -:10CF0000ADF80E00059880B202900AAB1D9A1699F2 -:10CF10001B9800F0C5FF28B902983988001D0590BC -:10CF20008142D1D20298012881D0E069807901281C -:10CF300005D0BDF82810A1F57F40FF3803D1BDF81A -:10CF40002800ADF80E00049803ABCDE900B04A46C6 -:10CF500041461B98FFF7B6FB0298BBE1072E02D0B3 -:10CF6000152E7FF4D4AEB5F801102183ADF81C1056 -:10CF7000B5F80320628300293FF4E4AE91423FF606 -:10CF8000E1AE0121A1724FF0000BA4F808B084F8C3 -:10CF90000EB0052E07D0C0B2691DE26907F013F983 -:10CFA00000287FF444AF4FF6FF70208401A906AA41 -:10CFB00014A8CDF800B081E885032878214600F058 -:10CFC0003F031D9A1B98FFF795FB8246208BADF817 -:10CFD0001C0080E10120032EC3D14021ADF8501088 -:10CFE000B5F801102183ADF81C100AAAB8F1000FA2 -:10CFF00000D00023CDE9020304921D98CDF80480EF -:10D00000009038880022401E83B21B9800F0C8FFB1 -:10D010008DF8180090BB0B2089F80000BDF828009F -:10D0200037E04FF0010C052E9BD18020ADF8500069 -:10D03000B5F801102183B5F803002084ADF81C1069 -:10D04000B0F5007F03D907208DF8180085E140F482 -:10D050007C4222840CA8B8F1000F00D00023CDE957 -:10D060000330CDE9018C1D9800903888401E83B2B2 -:10D070001B9800F095FF8DF8180028B18328A8D1DF -:10D080000220BDE0580000200D2189F80010BDF8F5 -:10D090003000401C1EE1032E04D248067FF537AE57 -:10D0A000002017E1B5F80110ADF81C1028784006F3 -:10D0B00002D58DF83CE002E007208DF83C004FF0EF -:10D0C00000080320CDE902081E9BCDF810801D98B2 -:10D0D0000193A6F1030B00901FFA8BF342461B98B5 -:10D0E00000F034FD8DF818008DF83C802978490651 -:10D0F0000DD52088C00506D5208BBDF81C108842B0 -:10D1000001D1C4F8248040468DF81880E2E08328DD -:10D1100001D14FF0020A4FF48070ADF85000BDF815 -:10D120001C002083A4F820B01E9860620320608455 -:10D130001321CCE0052EFFF4EAADB5F80110ADF8EF -:10D140001C10A28F62B3A2F57F43FE3B28D00822B9 -:10D150008DF83C204FF0000B0523CDE9023BDDF8B4 -:10D1600078C0CDF810B01D9A80B2CDF804C040F45C -:10D1700000430092B5F803201B9800F0E7FC8DF8FF -:10D180003CB04FF400718DF81800ADF850108328B2 -:10D1900010D0F8B1A18FA1F57F40FE3807D0DCE0B8 -:10D1A0000B228DF83C204FF6FE72A287D2E7A4F83E -:10D1B0003CB0D2E000942B4631461E9A1B98FFF7F4 -:10D1C00080FB8DF8180008B183284BD1BDF81C00F6 -:10D1D000208355E700942B4631461E9A1B98FFF793 -:10D1E00070FB8DF81800E8BBE18FA06B0844811D2F -:10D1F0008DE882034388828801881B98FFF763FCCF -:10D20000824668E095F80180022E70D15FEA08003E -:10D2100002D0B8F1010F6AD109208DF83C0007A8AF -:10D2200000908DF840804346002221461B98FFF76E -:10D230002CFC8DF842004FF0000B8DF843B050B934 -:10D24000B8F1010F12D0B8F1000F04D1A18FA1F5F0 -:10D250007F40FF380AD0A08F40B18DF83CB04FF42A -:10D26000806000E037E0ADF850000DE00FA91B989A -:10D27000F9F747FF82468DF83CB04FF48060ADF877 -:10D280005000BAF1020F06D0FC480068C07928B1FE -:10D290008DF8180027E0A4F8188044E0BAF1000FD8 -:10D2A00003D081208DF818003DE007A80090434688 -:10D2B000012221461B98FFF7E8FB8DF81800214654 -:10D2C0001B98FFF7CAFB9DF8180020B9192189F8AF -:10D2D0000010012038809DF83C0020B10FA91B9858 -:10D2E000F9F70FFF8246BAF1000F33D01BE018E0C8 -:10D2F0008DF818E031E02078000712D5012E10D10A -:10D300000A208DF83C00E088ADF8400003201B990E -:10D3100008F0E6FE0820ADF85000C1E648067FF5AB -:10D32000F6AC4FF0040A2088BDF850100843208066 -:10D33000BDF8500080050BD5A18FA1F57F40FE38C8 -:10D3400006D11E98E06228982063A6864FF0030A53 -:10D350005046A1E49DF8180078B1012089F800003A -:10D36000297889F80110BDF81C10A9F802109DF861 -:10D37000181089F80410052038802088BDF8501056 -:10D3800088432080E4E72DE9FF4F8846087895B070 -:10D39000012181404FF20900249C0140ADF820108A -:10D3A0002088DDF88890A0F57F424FF0000AFF3A10 -:10D3B00006D039B1000705D5012019B0BDE8F08FBE -:10D3C0000820FAE7239E4FF0000B0EA886F800B065 -:10D3D00018995D460988ADF83410A8498DF81CB03D -:10D3E000179A0A718DF838B0086098F80000012883 -:10D3F0003BD0022809D003286FD1307820F03F00BD -:10D400001D303070B8F80400E08098F80010032058 -:10D41000022904D1317821F03F011B31317094F899 -:10D420004610090759D505ABB9F1000F13D00021FB -:10D4300002AA82E80B000720CDE90009BDF83400FC -:10D44000B8F80410C01E83B20022159800F0A8FDA1 -:10D450000028D1D101E0F11CEAE7B8F80400A6F8F1 -:10D460000100BDF81400C01C04E198F805108DF807 -:10D470001C1098F80400012806D04FF4007A022806 -:10D480002CD00328B8D16CE12188B8F8080011F439 -:10D490000061ADF8201020D017281CD3B4F840103C -:10D4A000814218D3B4F84410172901D3814212D114 -:10D4B000317821F03F01C91C3170A6F80100032129 -:10D4C000ADF83410A4F8440094F8460020F00200AF -:10D4D00084F8460065E105257EE177E1208808F1C2 -:10D4E000080700F4FE60ADF8200010F0F00F1BD02C -:10D4F00010F0C00F03D03888228B9042EBD199B93D -:10D50000B878C00710D0B9680720CDE902B1CDF8CE -:10D5100004B00090CDF810B0FB88BA88398815980F -:10D5200000F014FB0028D6D12398BDF82010401C31 -:10D5300080294ED006DC10290DD020290BD040299F -:10D5400087D124E0B1F5807F6ED051457ED0B1F512 -:10D55000806F97D1DEE0C80601D5082000E01020DA -:10D5600082460DA907AA0520CDE902218DF83800D1 -:10D57000ADF83CB0CDE9049608A93888CDE90001A2 -:10D580005346072221461598FFF7B4F8A8E09DF806 -:10D590001C2001214FF00A0A002A9BD105ABB9F1EA -:10D5A000000F00D00020CDE902100720CDE90009CE -:10D5B000BDF834000493401E83B2218B00221598DD -:10D5C00000F0EEFC8DF81C000B203070BDF814004C -:10D5D00020E09DF81C2001214FF00C0A002A22D1E6 -:10D5E00013ABB9F1000F00D00020CDE902100720E5 -:10D5F000CDE900090493BDF83400228C401E83B2AB -:10D60000218B159800F0CCFC8DF81C000D2030709B -:10D61000BDF84C00401CADF8340005208DF83800F2 -:10D62000208BADF83C00BCE03888218B88427FF429 -:10D6300052AF9DF81C004FF0120A00281CD1606AFE -:10D64000A8B1B878C0073FF446AF00E018E0BA6868 -:10D650000720CDE902B2CDF804B00090CDF810B0AB -:10D66000FB88BA88159800F071FA8DF81C00132019 -:10D6700030700120ADF8340093E000005800002025 -:10D680003988208B8142D2D19DF81C004FF0160AB8 -:10D690000028A06B08D0E0B34FF6FF7000215F4672 -:10D6A000ADF808B0019027E068B1B978C907BED1DC -:10D6B000E18F0DAB0844821D03968DE80C02438870 -:10D6C0008288018809E0B878C007BCD0BA680DAB81 -:10D6D00003968DE80C02BB88FA881598FFF7F3F9DA -:10D6E00005005ED0072D72D076E0019005AA02A950 -:10D6F0002046FFF729F90146E28FBDF80800824273 -:10D7000001D00029F1D0E08FA16B08440780019877 -:10D71000E08746E09DF81C004FF0180A40B1208BCE -:10D72000C8B13888208321461598FFF796F938E06C -:10D7300004F118000090237E012221461598FFF77E -:10D74000A4F98DF81C000028EDD1192030700120BB -:10D75000ADF83400E7E7052521461598FFF77DF978 -:10D760003AE0208800F40070ADF8200050452DD13B -:10D77000A08FA0F57F41FE3901D006252CE0D8F816 -:10D7800008004FF0160A48B1A063B8F80C10A18742 -:10D790004FF6FF71E187A0F800B002E04FF6FF708E -:10D7A000A087BDF8200030F47F611AD078230022D2 -:10D7B0000320159908F0EAFB98F8000020712088F2 -:10D7C000BDF82010084320800EE000E007252088E7 -:10D7D000BDF8201088432080208810F47F6F1CD073 -:10D7E0003AE02188814321809DF8380020B10EA9BC -:10D7F0001598F9F786FC05469DF81C000028EBD02B -:10D8000086F801A001203070208B70809DF81C00EC -:10D8100030710520ADF83400DEE7A18EE1B1189833 -:10D820000DAB0088ADF834002398CDE90304CDE9B1 -:10D830000139206B0090E36A179A1598FFF7FCF9FD -:10D84000054601208DF838000EA91598F9F759FC06 -:10D8500000B10546A4F834B094F8460040070AD554 -:10D860002046FFF7A0F910F03E0F04D114F8460F40 -:10D8700020F0040020701898BDF83410018028466C -:10D880009BE500B585B0032806D102208DF8000085 -:10D8900088B26946F9F735FC05B000BD10B5384CC3 -:10D8A0000B782268012B02D0022B2AD111E01378C9 -:10D8B0000BB1052B01D10423137023688A889A8049 -:10D8C0002268CB88D38022680B89138149895181D2 -:10D8D0000DE08B8893802268CB88D38022680B89E7 -:10D8E00013814B8953818B89938109691161216867 -:10D8F000F9F707FC226800210228117003D00028E4 -:10D9000000D0812010BD832010BD806B002800D086 -:10D91000012070478178012909D10088B0F5205F86 -:10D9200003D042F60101884201D100207047072050 -:10D930007047F0B587B0002415460E460746ADF88F -:10D94000184011E005980088288005980194811DF1 -:10D95000CDE902410721049400918388428801881F -:10D96000384600F0F3F830B905AA06A93046FEF7AC -:10D97000EBFF0028E6D00A2800D1002007B0F0BD58 -:10D980005800002010B58B7883B102789A4205D1F7 -:10D990000B885BB102E08B79091D4BB18B789A4201 -:10D9A000F9D1B0F801300C88A342F4D1002010BDA9 -:10D9B000812010BD072826D012B1012A27D103E00B -:10D9C000497801F0070102E04978C1F3C201052955 -:10D9D0001DD2DFE801F00318080C12000AB1032081 -:10D9E00070470220704704280DD250B10DE0052881 -:10D9F00009D2801E022808D303E0062803D003289A -:10DA000003D005207047002070470F207047812009 -:10DA10007047C0B282060BD4000607D5FE48807A54 -:10DA20004143C01D01EBD00080B2704708467047EB -:10DA30000020704770B513880B800B781C0625D525 -:10DA4000F54CA47A844204D843F0100008700020FA -:10DA500070BD956800F0070605EBD0052D78F54000 -:10DA600065F304130B701378D17803F0030341EAD4 -:10DA7000032140F20123B1FBF3F503FB151192687A -:10DA8000E41D00FB012000EBD40070BD906870BD68 -:10DA900037B51446BDF8041011809DF804100A062D -:10DAA0001ED5C1F30013DC49A568897A814208D8E4 -:10DAB000FE2811D1C91DC9085A42284617F099F805 -:10DAC0000AE005EBD00100F0070201250878954037 -:10DAD000A843934018430870207820F0100020706D -:10DAE0003EBD2DE9F0410746C81C0E4620F003005C -:10DAF000B04202D08620BDE8F081C74D00203446F8 -:10DB00002E60AF802881AA72E8801AE0E988491C5B -:10DB1000E980810614D4E17800F0030041EA002096 -:10DB200040F20121B0FBF1F201FB12012068FFF786 -:10DB300070FF2989084480B22881381A3044A060D7 -:10DB40000C3420784107E1D40020D4E72DE9FF4FC1 -:10DB500089B01646DDE9168A0F46994623F44045FA -:10DB6000084600F00DFB04000FD0099804F064FD96 -:10DB70000290207800060AD5A748817A029881424F -:10DB800005D887200DB0BDE8F08F0120FAE72246C6 -:10DB900001A90298FFF74EFF834600208DF80C0084 -:10DBA0004046B8F1070F1AD001222146FFF702FFC5 -:10DBB0000028E7D12078400611D502208DF80C000E -:10DBC000ADF81070BDF80400ADF81200ADF81460A7 -:10DBD0001898ADF81650CDF81CA0ADF818005FEA03 -:10DBE000094004D500252E46A84601270CE02178DF -:10DBF000E07801F0030140EA012040F20121B0FB8E -:10DC0000F1F2804601FB12875FEA494009D5B84529 -:10DC100007D1A178207901F0030140EA0120B04248 -:10DC200001D3BE4201D90720ACE7A8191FFA80F939 -:10DC3000B94501D90D20A5E79DF80C0028B103A92D -:10DC40000998F9F75CFA00289CD1B84507D1A0786B -:10DC50004FEA192161F30100A07084F804901A982A -:10DC600000B10580199850EA0A0027D0199830B100 -:10DC70000BEB06002A46199916F044FF0EE00BEB59 -:10DC800006085746189E099804F042FE2B46F61DDA -:10DC9000B5B239464246009504F02DFA224601A954 -:10DCA0000298FFF7C7FE9DF80400224620F01000FE -:10DCB0008DF80400DDE90110FFF7EAFE002061E7BE -:10DCC0002DE9FF4FDFF8509182461746B9F806104C -:10DCD000D9F8000001EB410100EB810440F2012082 -:10DCE000B2FBF0F185B000FB11764D46DDF84C80BB -:10DCF00031460698FFF78DFE29682A898B46611AFE -:10DD00000C3101441144AB8889B28B4202D8842083 -:10DD100009B038E70699CDB2290603D5A90601D581 -:10DD20000620F5E7B9F806C00CF1010C1FFA8CFCCF -:10DD3000A9F806C0149909B1A1F800C0A90602D536 -:10DD4000C4F8088007E0104480B2A9F80800191A46 -:10DD500001EB0B00A0602246FE200699FFF798FE1B -:10DD6000E77026712078390A61F30100320AA17840 -:10DD700040F0040062F30101A17020709AF80200E3 -:10DD80006071BAF80000E08000262673280602D5EC -:10DD900099F80A7000E00127A80601D54FF00008A5 -:10DDA0004D4600244FF007090FE0CDE902680196C7 -:10DDB000CDF800900496E9882046129B089AFFF758 -:10DDC000C5FE0028A4D1641CE4B2BC42EDD30020FF -:10DDD0009EE72DE9F047804600F0D2F9070005D014 -:10DDE000002644460C4D40F2012919E00120BDE80F -:10DDF000F087204600F0C4F90278C17802F00302EF -:10DE000041EA0222B2FBF9F309FB13210068FFF794 -:10DE100000FE304486B201E0F4050020641CA4B288 -:10DE2000E988601E8142E4DCA8F10100E8802889CD -:10DE3000801B288100203870D9E710B5144631B115 -:10DE4000491E218004F0F8FBA070002010BD0120C5 -:10DE500010BD10B5D24904460088CA88904201D34B -:10DE60000A2010BD096800EB400001EB80025079E8 -:10DE7000A072D08820819178107901F0030140EAE6 -:10DE80000120A081A078E11CFFF7D4FD206120884B -:10DE9000401C2080E080002010BD012101827047DD -:10DEA0002DE9FF4F85B04FF6FF788246A3F800803A -:10DEB00048681F460D4680788DF80600486800883F -:10DEC000ADF8040000208DF80A00088A0C88A042F2 -:10DED00000D304462C8241E0288A401C2882701D11 -:10DEE0006968FFF74FFDB8BB3988414501D1601E15 -:10DEF00038806888A04236D3B178307901F00301C8 -:10DF000040EA012901A9701DFFF73CFD20BB2989CA -:10DF100041452CD0002231460798FFF74BFDD8B978 -:10DF20002989494518D1E9680391B5F80AC0D6F89E -:10DF300008B05046CDF800C004F0EAFCDDF800C09F -:10DF40005A460CF1070C1FFA8CFC4B460399CDF88E -:10DF500000C004F09AF850B1641CA4B2204600F04E -:10DF60000FF90600B8D1641E2C820A20D0E67C800E -:10DF70007079B871F088B8803178F07801F00301D9 -:10DF800040EA01207881A7F80C90504604F054FB39 -:10DF9000324607F10801FFF74DFD38610020B7E672 -:10DFA0002DE9FF4F87B081461C469246DDF860B0F0 -:10DFB000DDF85480089800F0E3F805000CD04846DE -:10DFC00004F03AFB2978090608D57549897A814217 -:10DFD00004D887200BB0D6E50120FBE7CAF3090679 -:10DFE0002A4601A9FFF726FD0746149807281CD0EA -:10DFF00000222946FFF7DEFC0028EBD128784006F6 -:10E0000013D501208DF808000898ADF80C00BDF874 -:10E010000400ADF80E00ADF81060ADF8124002A992 -:10E020004846F9F76CF80028D4D12978E87801F04F -:10E03000030140EA0121AA78287902F0030240EAAC -:10E040000220564507D0B1F5007F04D9611E8142F8 -:10E0500001DD0B20BEE7864201D90720BAE7801B0D -:10E0600085B2A54200D92546BBF1000F01D0ABF81F -:10E070000050179818B1B9192A4616F043FDB8F1A7 -:10E08000000F0DD03E4448464446169F04F052FC13 -:10E090002146FF1DBCB232462B46009404F05FF8C7 -:10E0A000002097E72DE9F04107461D461646084631 -:10E0B00000F066F804000BD0384604F0BDFA217871 -:10E0C000090607D53649897A814203D8872012E5A7 -:10E0D000012010E522463146FFF7ACFC65B12178FE -:10E0E000E07801F0030140EA0120B0F5007F01D89B -:10E0F000012000E0002028700020FCE42DE9F04120 -:10E1000007461D461646084600F03AF804000BD0B4 -:10E11000384604F091FA2178090607D52049897A12 -:10E12000814203D88720E6E40120E4E42246314618 -:10E13000FFF7AEFCFF2D14D02178E07801F0030248 -:10E1400040EA022040F20122B0FBF2F302FB13008E -:10E1500015B900F2012080B2E070000A60F30101FD -:10E1600021700020C7E410B50C4600F009F828B172 -:10E17000C18821804079A070002010BD012010BD11 -:10E180000749CA88824209D340B1096800EB4000C0 -:10E190006FF00B0202EB80000844704700207047CC -:10E1A000F405002010B508F05DF9F4F77FFB07F0E7 -:10E1B000E3FFBDE8104008F0ABB8202834BF0120D1 -:10E1C00000207047012303FA00F04FF0A04200291D -:10E1D00014BFC2F80C05C2F8080570474FF0A04103 -:10E1E000012202FA00F0C1F81805704770B5034625 -:10E1F000002002466FF02F050EE09C5CA4F1300673 -:10E200000A2E02D34FF0FF3070BD00EB800005EB0B -:10E210004000521C2044D2B28A42EED370BD30B5C9 -:10E220000A230BE0B0FBF3F403FB1404B0FBF3F0A0 -:10E230008D183034521E05F8014CD2B2002AF1D1AB -:10E2400030BD30B500234FF6FF7510E0040A44EAF4 -:10E25000002084B2C85C6040C0F30314604005EA4B -:10E2600000344440E0B25B1C84EA40109BB293420D -:10E27000ECD330BD2DE9F041FE4B0026012793F889 -:10E2800060501C7893F864C0B8B183F88D40A3F84F -:10E290008E1083F88C2083F88A70BCF1000F0CBFBD -:10E2A00083F8906083F89050F3488068008804F009 -:10E2B0002FFBBDE8F04103F0C5BF4FF6FF7083F8B8 -:10E2C0008D40A3F88E0083F88C2083F88A70BCF10F -:10E2D000000F14BF83F8905083F89060BDE8F08180 -:10E2E00070B5E54E0446306890F898100025012975 -:10E2F00019D090F89210012924D090F868100129C3 -:10E300002AD090F88A1001291CBF002070BD6570CA -:10E3100017212170D0F88C106160B0F89010218125 -:10E3200080F88A5016E065701C212170D0F8991091 -:10E330006160D0F89D10A16090F8A110217380F861 -:10E34000985007E0657007212170D0F89410616043 -:10E3500080F89250012070BD65701421217000F189 -:10E360006A012022201D16F0CDFB012121723068A8 -:10E3700080F86850BF48B0F86C20A0F89420B268CC -:10E38000537B80F8963080F89210108804F0C0FA21 -:10E3900003F067FFDEE7B848006890F868100029CE -:10E3A00014BFB0F86C004FF6FF70704770B5B24CF8 -:10E3B00006462068002808BFFFDF0025206845705A -:10E3C0006660002808BFFFDF2068417800291CBF75 -:10E3D000FFDF70BDA42116F036FC2068FF2101701C -:10E3E0007F2180F8361013214184282180F86510A0 -:10E3F000012180F8581080F85D5008F0ACFCBDE8B1 -:10E40000704007F0E6BE9C490968097881420CBF5C -:10E410000120002070479848006890F82200C0F35F -:10E42000400070479448006890F8220000F0010016 -:10E4300070479148006890F82200C0F300107047C0 -:10E440002DE9F0438C48D0F800C09CF82400BCF8BB -:10E450002240C0F38001C0F34002114400F00100EB -:10E460000144C4F30010F0B1132C17D009DC102CB8 -:10E4700002BF824830F81100BDE8F083122C0DD0A5 -:10E4800008E0152C08BF7E4809D01D2C04BF7D482C -:10E49000BDE8F083FFDF0020BDE8F0837A4830F864 -:10E4A0001100BDE8F0839CF85A209CF85B002E26F2 -:10E4B00000234FF47A774FF014084FF04009022AF6 -:10E4C00004BF4AF2D745B5FBF7F510D0012A04BFC7 -:10E4D0004AF22F75B5FBF7F510D04AF62315B5FBB8 -:10E4E000F7F5082A08BF4E4613D0042A18D01E4656 -:10E4F000082A0ED0042A13D0022A49D003F1280694 -:10E50000042A0FD0082A1CBF4FF01908082204D093 -:10E510000AE04FF0140806F5A8764FF0400203E039 -:10E5200006F5A8764FF0100218FB026212FB0152AA -:10E53000C1EB0111554D01EB810105EB8101114446 -:10E5400014F0010F4FF4C8724FF4BF7504BFC4F349 -:10E550004006002E6FD0C4F3400601F5A571EEB160 -:10E56000082804BF164640270CD0042804BF2E46B6 -:10E57000102707D0022807BF03F11806042703F16C -:10E580002806082707EB870706EB870631441CE0BF -:10E5900003F118064FF019080422C5E7082804BF44 -:10E5A000164640270CD0042804BF2E46102707D05B -:10E5B000022807BF03F11806042703F128060827DD -:10E5C00007EB871706EB870631449C31082804BF08 -:10E5D000164640270CD0042804BF2E46102707D02B -:10E5E000022807BF03F11806042703F128060827AD -:10E5F000C7EBC70707EB470706EB470631449831DF -:10E6000014F0010F18D0082808BF40200CD00428AF -:10E6100004BF2A46102007D0022807BF03F11802C2 -:10E62000042003F12802082000EB400303EB001054 -:10E63000104401444FE052E0082804BF144640262D -:10E640000CD0042804BF2C46102607D0022807BF90 -:10E6500003F11804042603F12804082606EB8616A5 -:10E66000BCF83CC004EB86042144BCF1EB0F32D96A -:10E670000EE000000006002060000020AC50020008 -:10E68000B45002008E891300A4500200D4FEFFFF94 -:10E6900044F255240CF10B0C0CFB04FC4FEA9C5C7F -:10E6A000082807D0042802D0022805D008E02A460E -:10E6B000102008E0402006E003F11802042002E0E8 -:10E6C00003F12802082000EB801002EB800000F527 -:10E6D000A5700CFB001101F26510BDE8F08301F597 -:10E6E000A571082804BF144640260CD0042804BF96 -:10E6F0002C46102607D0022807BF03F11804042671 -:10E7000003F12804082606EB8616BCF844C004EB87 -:10E7100086042144BCF1EB0FDDD944F255240CF101 -:10E720000B0C0CFB04FC4FEA9C5C0828C2D00428AC -:10E73000BDD00228C4D1BFE7FE4840F27121006875 -:10E74000806A48437047FB48006890F8350000280D -:10E7500018BF0120704710B5F74C207B022818BF66 -:10E76000032808D1207D04F115010DF024F90828B3 -:10E770001CBF012010BD207B002816BF02280020EE -:10E780000120BDE8104008F0FDBEEB49087370475A -:10E79000E849096881F8300070472DE9F047E54CF9 -:10E7A0002168087B002816BF02280020012048733A -:10E7B00001F10E0108F0D0FE2168087B022816BF87 -:10E7C00003280122002281F82F204FF0080081F851 -:10E7D0002D00487B01F10E034FF001064FF00007BA -:10E7E000012804BF5B7913F0C00F0AD001F10E03BA -:10E7F000012804D1587900F0C000402801D0002041 -:10E8000000E0012081F82E00002A04BF91F82200C8 -:10E8100010F0040F07D0087D01F115010DF0CBF8C1 -:10E82000216881F82D002068476006F081F8216892 -:10E83000C14D4FF00009886095F82D000DF0D7F814 -:10E84000804695F82F00002818BFB8F1000F04D0BB -:10E8500095F82D000CF092FE68B195F83000002874 -:10E860001CBF95F82E0000281DD0697B05F10E0015 -:10E8700001290ED012E06E734A4605F10E014046A2 -:10E8800008F0BFFE95F82D1005F10E000DF0A6F969 -:10E8900009E0407900F0C000402831D0394605F148 -:10E8A0000E0008F0E5FE2068C77690F8220010F010 -:10E8B000040F08BFBDE8F087002795F82D000CF085 -:10E8C00011FF050008BFBDE8F08710210DF015FF0E -:10E8D000002818BFBDE8F08720683A4600F11C0107 -:10E8E000C676284608F08DFE206800F11C0160689D -:10E8F0000EF012FA6068BDE8F04701210EF027BA69 -:10E900000DF0A9F94A4605F10E0108F07AFECAE7B2 -:10E91000884A1268137B0370D2F80E000860508A90 -:10E920008880704778B584490446824D407B0873DF -:10E930002A68207810706088ADF8000080B200F07E -:10E940000101C0F3400341EA4301C0F3800341EAFF -:10E950008301C0F3C00341EAC301C0F3001341EADD -:10E960000311C0F3401341EA4311C0F3801041EAA0 -:10E9700080105084E07D012808BF012603D00228C2 -:10E9800014BFFFDF0226286880F85A60607E0128E5 -:10E9900008BF012603D0022814BFFFDF0226286823 -:10E9A00080F85B60217B80F82410418C1D290CBF0E -:10E9B000002161688162617D80F83510A17B0029AA -:10E9C00016BF0229002101210175D4F80F10C0F8EB -:10E9D0001510B4F81310A0F81910A17EB0F8662035 -:10E9E00061F30302A0F86620E17E012918BF00212F -:10E9F00080F83410002078BD4E480068408CC0F389 -:10EA0000001131B1C0F38000002804BF1F207047FF -:10EA100002E0C0F3400109B10020704710F0010F7F -:10EA200014BFEE20FF20704742480068408CC0F3BE -:10EA3000001119B1C0F3800028B102E0C0F340001A -:10EA400008B100207047012070473A490022096848 -:10EA50000A664B8C1D2B0CBF81F8642081F8640082 -:10EA600070470023334A126882F859309164A2F843 -:10EA70004C00012082F8590070472E4A002312688A -:10EA800082F85830A2F854000120116582F858002D -:10EA900070472849096881F85D007047254800687B -:10EAA00090F95D0070472348006890F82200C0F399 -:10EAB000401070471F48006890F82200C0F3C00063 -:10EAC0007047012070471B48006890F85B00704752 -:10EAD00070B508F0F8F808F0D7F807F0C9FF08F0AB -:10EAE00051F8144C2068016E491C016690F83300FF -:10EAF000002530B108F02FF907F06BFB206880F893 -:10EB000033502068457090F8371021B1BDE870404F -:10EB1000042009F001BA90F8641001B3006E81423C -:10EB20001DD8042009F0F8F9206890F8220010F0B0 -:10EB3000010F03E0600000200006002007D0A0685D -:10EB400043220188BDE870400120FFF793BBBDE878 -:10EB5000704043224FF6FF710020FFF78BBBBDE8EA -:10EB60007040002009F0D8B92DE9F047FF4E8146EA -:10EB700082B030680F464FF00008458C15F0030F47 -:10EB800010D015F0010F05F0020005D0002808BFD5 -:10EB90004FF0010806D004E0002818BF4FF002082B -:10EBA00000D1FFDF4FF0000A544615F0010F05F0C9 -:10EBB00002000DD080B915F0040F0DD04AF0080006 -:10EBC000002F1CBF40F0010040F0020440D090E054 -:10EBD00010B115F0040F0DD015F0070F10D015F07F -:10EBE000010F05F0020036D0002808BF15F0040F11 -:10EBF00027D03DE0002F18BF4AF0090479D134E056 -:10EC00002FB14AF0080415F0200F14D071E03168DC -:10EC100005F02002B1F84400104308BF4AF0010497 -:10EC200067D04AF0180415F0200F62D191F85A10FD -:10EC300008295AD156E0316891F85A10082951D163 -:10EC400053E04AF00800002F18BF40F0010450D1F3 -:10EC500040F010044DE0002818BF15F0040F07D055 -:10EC6000002F18BF4AF00B0443D14AF0180440E0CB -:10EC700015F0030F3CD115F0040F39D077B131688E -:10EC80004AF0080091F85A1008290CBF40F002041D -:10EC900020F0020415F0200F22D02AE0316805F0A0 -:10ECA0002002B1F84400104308BF4AF0030420D00A -:10ECB0004AF0180015F0200F09D000BF91F85A1043 -:10ECC000082914BF40F0020420F0020411E091F87A -:10ECD0005A20082A14BF40F0010020F00100EDE79F -:10ECE000082902D024F0010403E044F0010400E00C -:10ECF000FFDF15F0400F1BD0C7B93168B1F84400F1 -:10ED0000002804BF488C10F0010F0BD110F0020F47 -:10ED100008BF10F0200F05D115F0010F08BF15F046 -:10ED2000020F03D091F85A00082801D044F04004A3 -:10ED30007068A0F800A0017821F02001017007217F -:10ED40000DF0B6FF414670680EF0A9F921467068D3 -:10ED50000EF0B1F914F0010F0AD006230022844905 -:10ED600070680EF082F93068417B70680DF0E2FF48 -:10ED700014F0020F18D0D6E90010B9F1000F4FF0CF -:10ED800006034FF0010207D01C310EF06EF901218D -:10ED900070680DF0DCFF07E015310EF066F93068A1 -:10EDA000017D70680DF0D3FF14F0040F18BFFFDF72 -:10EDB00014F0080F17D0CDF800A03068BDF800108F -:10EDC0000223B0F86600020962F30B01ADF80010EF -:10EDD0009DF80110032260F307118DF801106946B8 -:10EDE00070680EF042F9012F61D13068B0F844101C -:10EDF000E9B390F82200C0F34000C0BB70680EF089 -:10EE00004AF9401CC7B23068B0F84420B0F8561038 -:10EE1000551AC7F1FF018D42A8BF0D46AA423AD943 -:10EE200090F8220010F0010F35D144F01004214673 -:10EE300070680EF040F9F81CC0B2ED1E284482B292 -:10EE40003068B0F86610036E090951FA83F190F842 -:10EE50005C30484F1944BC460023E1FB07C31B0943 -:10EE60006FF0240C03FB0C1180F85C1000E01EE036 -:10EE700090F85B00012101F025F80090BDF800003A -:10EE80009DF80210032340EA01400190042201A9E9 -:10EE900070680EF0EAF83068AAB2016C70680EF083 -:10EEA00038F93068B0F856102944A0F8561014F01C -:10EEB000400F06D0D6E90010012306225D310EF086 -:10EEC000D4F814F0200F18BFFFDF0020002818BF6F -:10EED000FFDF02B0BDE8F0872DE9F843234C20683E -:10EEE000002808BFFFDF2068417839BB0178FF297F -:10EEF00024D0002680F83160A0F85660867080F833 -:10EF00003760304607F052FE07F046FB206890F964 -:10EF10005D0007F002FC184807F005FC174807F0F1 -:10EF20002BFE606807F045FE206890F8240010F082 -:10EF3000010F06D0252007F0FEFB09E00C20BDE8FC -:10EF4000F88310F0020F18BF262076D007F0F3FBED -:10EF5000206890F85A10252007F0EAFA206880F817 -:10EF60002C6007F01DFE20680AE000006000002011 -:10EF70000E06002053E4B36EA05002009D50020024 -:10EF800090F85A10002007F02DFC0F21052007F003 -:10EF900098FB206890F82E10002901BF90F82F10E0 -:10EFA000002990F8220010F0040F75D005F0C0FC85 -:10EFB000054620682946806806F0D6F9DFF82C84DB -:10EFC000074690FBF8F008FB10704142284605F018 -:10EFD000B0F92168886097FBF8F04A6810444860EF -:10EFE0000CF0E6FC01462068426891426FD8C0E907 -:10EFF0000165FF4D4FF0010895F82D000CF0F7FC6E -:10F00000814695F82F000127002818BFB9F1000F9D -:10F0100004D095F82D000CF0B1FAA8B195F83000A5 -:10F0200000281CBF95F82E00002825D0697B05F12B -:10F030000E00012916D01AE0FFE710F0040F14BFEC -:10F040002720FFDF82D183E73A466F7305F10E0177 -:10F05000484608F0D6FA95F82D1005F10E000CF090 -:10F06000BDFD09E0407900F0C000402815D04146C0 -:10F0700005F10E0008F0FCFA206890F8220010F06C -:10F08000040F24D095F82D000CF02CFB05001ED0A9 -:10F0900010210DF032FB40B119E00CF0DCFD3A46D6 -:10F0A00005F10E0108F0ADFAE6E720683A4600F1F6 -:10F0B0001C01C776284608F0A4FA206800F11C015C -:10F0C00060680DF029FE012160680DF040FE2068A7 -:10F0D000417B0E3007F0D9FA206890F8581059B3E8 -:10F0E000B0F85410A0F84410016D016490F822109B -:10F0F000C1F30011E9B9B0F8660002210509ADF8C5 -:10F100000050684606F0EEFC28B1BDF80000C0F3E0 -:10F110000B00A84204D1BDF80000401CADF800006F -:10F120002168BDF80000B1F8662060F30F12A1F865 -:10F130006620206880F85860206890F8591031B136 -:10F14000B0F84C108187816C816380F85960B0F809 -:10F150006610026E090951FA82F190F85C20DFF81E -:10F1600094C2114463460022E1FB0C3212096FF095 -:10F17000240302FB031180F85C100CF09CFC0321BB -:10F1800060680CF01BFD216881F833000020BDE8A9 -:10F19000F8839949886070472DE9F043964C83B015 -:10F1A000226892F831303BB1508C1D2808BFFFDF38 -:10F1B00003B0BDE8F0438BE401260027F1B105461A -:10F1C00092F85C0007F0B7FA206890F85B10FF2017 -:10F1D00007F0AEF920684FF4A57190F85B2000208D -:10F1E00007F009FC206890F8221011F0030F00F0DE -:10F1F0002D81002D00F0248100F028B992F8221012 -:10F200008046D07EC1F30011002956D005466068C3 -:10F210000780017821F020010170518C132937D02B -:10F220001FDC102908BF022144D0122908BF062183 -:10F2300040D0FFDF6E4D606805F10E010DF05EFD00 -:10F24000697B60680DF076FD2068418C1D2918BF30 -:10F25000152965D0B0F84420016C60680DF083FD7D -:10F260005EE0152918BF1D29E3D14FF001010DF013 -:10F270001FFD6068017841F020010170216885B1AF -:10F280001C310DF049FD012160680DF060FDD1E7F2 -:10F2900000210DF00DFD6068017841F02001017042 -:10F2A000C8E715310DF038FD2068017D60680DF06C -:10F2B0004EFDBFE70DF0FCFCBCE70021FFF754FC5E -:10F2C0006068C17811F03F0F2AD0017911F0100F5A -:10F2D00026D00DF0EBFC2368024693F82410C1F30E -:10F2E0008000C1F3400C604401F0010100EB010C0F -:10F2F00093F82C10C1F38000C1F34005284401F0BD -:10F3000001010844ACEB0000C1B293F85A0000F0D0 -:10F31000D9FD009003230422694660680DF0A5FE24 -:10F320002068002590F8241090F82C0021EA0002B3 -:10F3300012F0010F18BF01250ED111F0020F04D0F9 -:10F3400010F0020F08BF022506D011F0040F03D001 -:10F3500010F0040F08BF0425B8F1000F2BD0012DC9 -:10F360001BD0022D08BF26201BD0042D14BFFFDFA9 -:10F37000272016D0206890F85A10252007F0D8F8DA -:10F38000206890F82210C1F3001169B101224FF4F6 -:10F390009671002007F02FFB0DE0252007F0CBF938 -:10F3A000E8E707F0C8F9E5E790F85A204FF49671BE -:10F3B000002007F020FB206890F82C10294380F8EB -:10F3C0002C1090F8242032EA01011CD04670418CA8 -:10F3D00013292BD026DC102904BF03B0BDE8F0832D -:10F3E000122923D0C1F30010002807E040420F008B -:10F3F0000006002053E4B36E6000002018BFFFDF5A -:10F4000003B0BDE8F083418C1D2908BF80F82C7043 -:10F41000DCD0C1F30011002914BF80F8316080F8FE -:10F420003170D3E7152918BF1D29DBD190F85A2078 -:10F4300003B04FF00101BDE8F043084607F0C8BC37 -:10F4400090F85B200121084607F0C2FC2168002DDE -:10F45000C87E7CD04A8C3D46C2F34000002808BFDD -:10F4600047F0080512F0400F18BF45F0400500288E -:10F4700019BFD1F83890B1F83C80D1F84090B1F87C -:10F4800044806068072107800DF012FC002160684D -:10F490000DF005FE294660680DF00DFE15F0080F11 -:10F4A00015D02068BDF800100223B0F866000209EC -:10F4B00062F30B01ADF800109DF80110032260F318 -:10F4C00007118DF80110694660680DF0CEFD606887 -:10F4D0000DF0AAFC2168C0F1FE00B1F85620A8EB9F -:10F4E00002018142A8BF0146CFB2D019404542D2A5 -:10F4F00045F0100160680DF0DEFD60680DF094FCD1 -:10F500002168C0F1FE00B1F85610A8EB010181425C -:10F51000A8BF0146CFB260680DF0BDFD3844421C63 -:10F520002068B0F86610036E090951FA83F190F86B -:10F530005C30FF4D1944AC460023E1FB05C31B09B9 -:10F540006FF0240C03FB0C1180F85C1000E038E035 -:10F5500090F85B00012100F0B5FC0090BDF80000C0 -:10F560009DF80210032340EA01400190042201A902 -:10F5700060680DF07AFD216891F8220010F0400FCC -:10F5800005D0012306225D3160680DF06EFD206814 -:10F590003A46B0F8560000EB090160680DF0B9FD7D -:10F5A0002068B0F856103944A0F8561007F0AEFEA7 -:10F5B000002818BFFFDF20684670867003B0BDE8E2 -:10F5C000F0830121FFF7D0FAF0E7DA4810B50068C0 -:10F5D000417841B90078FF2805D000210846FFF79F -:10F5E000DBFD002010BD07F06EFB07F04DFB07F0C0 -:10F5F0003FFA07F0C7FA0C2010BD10B5CD4C2068BB -:10F6000090F8220010F0010F1CBFA06801884FF095 -:10F610003C0212BF01204FF6FF710020FEF72AFEC8 -:10F620002168012081F8370010BDC249096881F8BE -:10F63000320070472DE9F041002608F039FC00281F -:10F6400000F0F380BB4C2068417800270125012998 -:10F6500006D0022901D003297BD0FFDFBDE8F0816D -:10F66000817802270029418C37D0C1F34002002A5B -:10F6700008BF11F0010F6DD090F85B204FF0010131 -:10F680004FF0000007F0A4FB216891F82200C0F3BE -:10F690004000002814BF0C20222091F85B1006F0D7 -:10F6A00047FF2068477090F8330020B106F07DFDD9 -:10F6B000402007F03DFB206890F83400002818BF78 -:10F6C00007F063FB0021962007F0A2FA07F015FE71 -:10F6D000002818BFFFDFBDE8F081C1F3001282B13E -:10F6E00010293ED090F8330020B106F05EFD402096 -:10F6F00007F01EFB206890F8221011F0040F35D09F -:10F7000042E090F8242090F82C309A4229D1B0F8A9 -:10F710004400002808BF11F0010F05D111F0020FBD -:10F7200008BF11F0200F7DD04FF001014FF0000015 -:10F73000FFF732FD2068418C11F0010F04BFC1F3C7 -:10F74000400100290AD1B0F85610B0F84420914287 -:10F7500001E032E026E018BFBDE8F08180F83150CA -:10F76000B9E7BDE8F0410021012015E590F835101A -:10F77000012914BF0329102646F00E0190F85A20E3 -:10F780004FF0000007F024FB206890F834000028B8 -:10F7900018BF07F0FAFA0021962007F039FA20681E -:10F7A000477098E7B0F85610B0F8440081423CD05A -:10F7B000BDE8F04101210846EEE48178D9B1418CE1 -:10F7C00011F0010F1CD080F8685090F86A20B0F852 -:10F7D0006C100120FEF74EFD2068477007F073FAA9 -:10F7E00007F052FA07F044F907F0CCF9BDE8F04110 -:10F7F000032008F091BB8178BDE8F0410120CBE403 -:10F8000011F0020F08BFFFDF3FF465AFB0F85610EC -:10F81000808F814209D001210846FFF7BDFC0320FB -:10F82000216800E001E0487055E7BDE8F041FFF7CE -:10F830004FB9FFF74DB910B53E4C206890F8341021 -:10F8400049B1363007F0ACFA18B921687F2081F849 -:10F85000360007F090FA206890F8330018B107F0EE -:10F860007AFA06F0B6FC08F023FBA8B1206890F8FD -:10F870002210C1F3001179B14078022818BFFFDFD0 -:10F8800000210120FFF788FC2068417800291EBF75 -:10F8900040780128FFDF10BDBDE81040FFF718B920 -:10F8A0002DE9F047234C0F4680462168B8F1030F3D -:10F8B000488C08BFC0F3400508D000F0010591F85E -:10F8C0003200002818BF4FF0010901D14FF00009A4 -:10F8D00006F025FF0646B8F1030F0CBF4FF00208F3 -:10F8E0004FF0010835EA090008BFBDE8F08720683D -:10F8F00090F8330068B10CF0C1F838700146FF2869 -:10F9000007D06068C01C0CF092F838780CF0C3F88F -:10F91000064360680178C1F3801221680B7D9A422A -:10F920000DD10622C01C153115F0C0F8002803E0E7 -:10F9300053E4B36E6000002008BF012000D0002017 -:10F940003978FF2906D0C8B9206890F82D00884280 -:10F9500016D113E0A0B1616811F8030BC0F3801059 -:10F960000CF029F805460CF089F938B128460BF05F -:10F97000B9FE18B110210CF0C0FE08B1012000E062 -:10F980000020216891F8221011F0040F01D0F0B18D -:10F990001AE0CEB9FE4890F83500002818BF40455F -:10F9A00015D1616811F8030BC0F380100CF003F857 -:10F9B00004460CF063F938B120460BF093FE18B101 -:10F9C00010210CF09AFE10B10120BDE8F087002054 -:10F9D000BDE8F0872DE9F04FEE4D074683B028686B -:10F9E00000264078022818BFFFDF28684FF07F0903 -:10F9F00090F8341049B1363007F0D2F9002804BF2E -:10FA0000286880F8369007F0B6F968680DF072F94A -:10FA10000446002F00F0048268680DF0F6FA002812 -:10FA200000F0FE8106F049FE002800F0F981FF2079 -:10FA3000DFF864B3DFF8588300274FF0010A062C83 -:10FA400080F00082DFE804F0EFEFEF03EFF78DF8CE -:10FA5000000069460320FFF723FF002800F0E48040 -:10FA6000296891F8340010B191F89800D0B1286855 -:10FA7000817801294CD06868042107800DF018F9BD -:10FA800008F10E0168680DF039F998F80D106868F2 -:10FA90000DF050F92868828F816B68680DF087F946 -:10FAA00000F04DB99DF8000081F898A00A7881F81F -:10FAB0009920FF280FD001F19B029A310BF0A0FF93 -:10FAC000002808BFFFDF286890F89A1041F0020173 -:10FAD00080F89A100DE068680278C2F3801281F80D -:10FAE0009A20D0F80320C1F89B20B0F80700A1F8B5 -:10FAF0009F00286800F1A10490F836007F2808BF15 -:10FB0000FFDF286890F83610217080F83690AEE755 -:10FB100090F822009BF80490C0F38014686864F3A6 -:10FB20008619072107800DF0C3F8002168680DF0E1 -:10FB3000B6FA494668680DF0BEFA0623002208F1BD -:10FB40000E0168680DF091FA2868417B68680DF035 -:10FB5000F1F868680DF068F929688A8FC0F1FE0134 -:10FB60008A42B8BF1146CFB2BA423DD9F81EC7B2D9 -:10FB700049F0100A514668680DF09DFA68680DF06A -:10FB80008AFA3844431C2868B0F86610026E0909E6 -:10FB900051FA82F190F85C20DFF800920A44C846DE -:10FBA0004FF0000CE2FB098C4FEA1C116FF0240CA3 -:10FBB00001FB0C2180F85C1090F85B001A460121D3 -:10FBC00000F080F90190BDF804009DF806100323B1 -:10FBD00040EA01400290042202A968680DF045FA4B -:10FBE000514668680DF067FA34B1D5E90010012379 -:10FBF00006225D310DF039FA28683A46816B686853 -:10FC00000DF087FA2868A0F85670818F8F420CBFDC -:10FC10000121002180F8311007F078FB002818BF7F -:10FC2000FFDF8CE007E00DE128688078002840F0D5 -:10FC3000F98000F0F5B88DF8000068680178C1F32C -:10FC40008019D0F803100191B0F80700ADF8080052 -:10FC500069460520FFF724FE0028286873D08178C4 -:10FC6000002972D090F85BA0D5E90104D0F80F10FC -:10FC7000C4F80E10B0F813106182417D2175817DAA -:10FC80006175B0F81710E182B0F819106180B0F812 -:10FC90001B10A180B0F81D10E18000F11F0104F1DC -:10FCA000080015F0E4F8686890F8241001F01F01CE -:10FCB000217690F82400400984F86C0184F854A05F -:10FCC00084F855A0286890F8651084F8561090F8CC -:10FCD0005D0084F857009DF80010A86800F050F906 -:10FCE000022008F019F96868DBF800400DF1040AF9 -:10FCF000078008210CF0DCFF002168680DF0CFF9C7 -:10FD0000214668680DF0D7F90623002208F10E019C -:10FD100068680DF0AAF92868417B68680DF00AF858 -:10FD2000494668680DF013F80623012251466868B9 -:10FD30000DF09BF907F0EAFA002818BFFFDF032057 -:10FD40002968487070E066E0FFE76868AC684FF0CB -:10FD500001080278617BC2F3401211406173D0F850 -:10FD60000F10C4F80E10B0F813106182417D217598 -:10FD7000817D6175B0F81710E182B0F819106180CB -:10FD8000B0F81B10A180B0F81D10E18008E0000061 -:10FD900000060020600000209850020053E4B36E7B -:10FDA00000F11F0104F1080015F061F8686890F88F -:10FDB000241001F01F01217690F82400400984F8F6 -:10FDC0006C0184F8548084F85580286890F8651098 -:10FDD00084F8561090F85D0084F857009DF80010E4 -:10FDE000A86800F0CDF8286880F868A090F86A202C -:10FDF000B0F86C100120FEF73DFA2868477006F055 -:10FE000062FF06F041FF06F033FE06F0BBFE012064 -:10FE100008F082F808E090F82200C0F3001008B162 -:10FE2000012601E0FEF754FE286890F8330018B16F -:10FE300006F091FF06F0CDF966B100210120FFF731 -:10FE4000ABF910E0286890F82200C0F300100028F9 -:10FE5000E8D0E5E728688178012904D190F85B10A3 -:10FE6000FF2006F065FB28684178002919BF41781A -:10FE7000012903B0BDE8F08F4078032818BFFFDFE9 -:10FE800003B0BDE8F08F70B5794C06460D4620688A -:10FE9000807858B106F014FB21680346304691F88B -:10FEA0005B202946BDE8704008F0DDBD06F008FB88 -:10FEB00021680346304691F85A202946BDE8704033 -:10FEC00008F0D1BD78B50C4600210091082804BF88 -:10FED0004FF4C87040210DD0042804BF4FF4BF7008 -:10FEE000102107D0022807BF01F11800042101F1F9 -:10FEF00028000821521D02FB01065D489DF80010F4 -:10FF0000006890F85C2062F3050141F040058DF82F -:10FF1000005090F85B00012804BF9DF8020020F01B -:10FF2000E0002AD0022818BFFFDF21D025F0800092 -:10FF30008DF80000C4EB041000EB80001E2101EBE3 -:10FF4000800006FB04044B48844228BFFFDF4A4878 -:10FF5000A0FB0410BDF80110000960F30C01ADF81E -:10FF60000110BDF800009DF8021040EA014078BD84 -:10FF70009DF8020020F0E00020308DF80200D5E767 -:10FF80002DE9F0413A4D04460E46286890F8680085 -:10FF9000002818BFFFDF0027286880F86A702188D2 -:10FFA000A0F86C106188A0F88210A188A0F88410D5 -:10FFB000E188A0F8861094F86C1180F8881090F809 -:10FFC0002F1049B1427B00F10E01012A04D1497979 -:10FFD00001F0C001402934D090F8301041B1427B8B -:10FFE00000F10E01012A04BF497911F0C00F28D099 -:10FFF00000F1760014F032FF6868FF2E0178C1F33B -:020000040001F9 -:1000000080116176D0F80310C4F81A10B0F8070018 -:10001000E08328681DD0C167E18BA0F8801000F153 -:100020007002511E30460BF0EBFC002808BFFFDFCA -:10003000286890F86F1041F0020180F86F10BDE859 -:10004000F081D0F80E10C0F87610418AA0F87A102E -:10005000D2E7C767A0F88070617E80F86F10D4F88F -:100060001A100167E18BA0F87410BDE8F081000060 -:1000700060000020C4BF0300898888880178406838 -:1000800029B190F80C1190F8730038B901E001F033 -:10009000ABBC19B1042901D0012070470020704782 -:1000A00070B50C460546062102F000FB606008B101 -:1000B000002006E00721284602F0F8FA606018B137 -:1000C00001202070002070BD022070BD2DE9FC478A -:1000D0000C4606466946FFF7E3FF00287DD19DF8F0 -:1000E000000050B1FEF757F9B0427CD021463046AF -:1000F00009F038FE002873D12DE00DF089FAB042E6 -:1001000071D02146304612F02BFB002868D1019DAA -:1001100095F8D00022E0012000E00020804695F80C -:1001200037004FF0010A4FF00009F0B195F83800A0 -:1001300080071AD584F8019084F800A084F8049010 -:10014000E68095F839102172698F6181A98FA181AC -:1001500085F8379044E0019D95F80C01583500284A -:10016000DBD1E87E0028D8D0D5E7304602F0E2FBAC -:10017000070000D1FFDF384601F0F2FD40B184F8FE -:1001800001900F212170E680208184F804A027E0EF -:10019000304602F0BDFB070000D1FFDFB8F1000FD1 -:1001A00021D0384601F033FEB8B19DF8000038B9CF -:1001B0000198D0F8F8004188B14201D180F8009050 -:1001C000304607F048F984F801900C21217084F83A -:1001D0000490E680297F217200E004E085F81B90FE -:1001E0000120BDE8FC870020FBE71CB56946FFF74E -:1001F00057FF00B1FFDF684601F002FCFA4900201A -:100200008968A1F8D2001CBD2DE9FC4104460E46C8 -:10021000062002F0F3F90546072002F0EFF9284422 -:10022000C7B20025A8463E4417E02088401C80B293 -:100230002080B04202D34046A4F8008080B2B84289 -:1002400004D3B04202D20020BDE8FC816946FFF72A -:1002500027FF0028F8D06D1CEDB2AE42E5D84FF66E -:10026000FF7020801220EFE738B54FF6FF70ADF831 -:1002700000000DE00621BDF8000002F029FA044656 -:100280000721BDF8000002F023FA0CB100B1FFDF36 -:1002900000216846FFF7B8FF0028EBD038BD70B5E5 -:1002A00007F046F90BF073F9D04C4FF6FF760025B6 -:1002B0006683A683CEA0257001680079A4F1400270 -:1002C000657042F8421FA11C1071601C12F014FCF2 -:1002D00025721B2060814FF4A471A181E0812182ED -:1002E0000321A1740422E274A082E082A4F13E0002 -:1002F000218305704680BC480C300570A4F11000C5 -:100300000570468070BD70B5B74C16460D466060EE -:10031000217007F087F8FFF7A7FFFFF7C0FF2078ED -:1003200010F073FAB4480DF0E7FD2178606812F020 -:10033000F6FA20780AF0B6FB284608F049F9AE48EC -:10034000FEF734F82178606809F0F2FD3146207834 -:1003500013F094F9BDE870400BF019B910B5012401 -:100360000AB1002010BD21B1012903D0002420468C -:1003700010BD02210CF00AFFF9E72DE9F047040057 -:1003800000D1FFDF994802211C308146FFF73CFF76 -:1003900000B1FFDF954D0620B5F81C8002F02EF964 -:1003A0000646072002F02AF93044C6B2701CC7B2D4 -:1003B000A88BB04228D120460DF0A0F8B0B120782B -:1003C00018283FD1207901283CD1E088062102F08D -:1003D0006DF9040000D1FFDF208807F03CF8208889 -:1003E000062102F075F940B3FFDF2BE0287860B3F7 -:1003F00000266670142020702021201D14F023FC9C -:10040000022020712E701DE0B84217D12046FDF762 -:1004100067FFD0B12078172814D1207968B1E0881F -:10042000072102F043F940B1008807F014F8E08892 -:10043000072102F04DF900B1FFDF03E02146FFF78D -:1004400045FE10B10120BDE8F08702214846FFF7C4 -:10045000DBFE10B9A98B4145AAD12046BDE8F04783 -:1004600013F052B910B501F067FA08B10C2010BDB5 -:100470000BF0E0F8002010BD10B50446007818B16C -:10048000012801D0122010BD01F067FA20B10BF055 -:1004900081FA08B10C2010BD207801F00FFAE21D9E -:1004A00004F11703611CBDE810400BF068B910B5EA -:1004B000044601F041FA08B10C2010BD207828B1A3 -:1004C000012803D0FF280BD0122010BD01F0F6F94F -:1004D000611C0BF06FF808B1002010BD072010BDA3 -:1004E00001200BF0A1F8F7E710B50BF056FA08B1B0 -:1004F000002010BD302010BD10B5044601F02DFACB -:1005000008B10C2010BD20460BF041FA002010BDB0 -:1005100010B501F022FA20B10BF03CFA08B10C2022 -:1005200010BD0BF091F9002010BDFF2181704FF636 -:10053000FF7181802C4949680A7882718A8802811A -:100540004988418101214170002070471CB5002479 -:1005500012F1080F15D00CDC12F1280F11D012F196 -:10056000140F0ED012F1100F0BD012F10C0F0ED190 -:1005700007E012F1040F04D01AB1032A01D0042AB3 -:1005800005D1012806D0022808D003280AD0122459 -:1005900020461CBD1046FEF77CFAF9E710460DF028 -:1005A00051FCF5E7084614466946FFF779FD08B1A6 -:1005B0000224EDE79DF80000019880F857400024E0 -:1005C000E6E710B5134601220CF0D4F8002010BD68 -:1005D00010B5044610F0FCFE05280FD0204610F0A0 -:1005E00003F9002010BD00006C000020E40700208B -:1005F000FFFFFFFF1F000000A40600200C20F1E712 -:1006000010B5044601F0A9F908B10C20EAE721462B -:10061000002006F08EFF0020E4E710B5044610F03D -:1006200071F950B108F04DFA38B1207807F0F5FFB4 -:1006300020780DF0F3FE0020D4E70C20D2E710B5AF -:10064000044601F08AF908B10C20CBE721460120CD -:1006500006F06FFF0020C5E738B504464FF6FF707F -:10066000ADF80000A079E179884216D02079FDF735 -:10067000A4FD90B16079FDF7A0FD70B10022A079D2 -:10068000114613F011FC40B90022E079114613F035 -:100690000BFC10B9207A072801D9122038BD08F0C8 -:1006A0001DFA60B910F094FE48B900216846FFF7C2 -:1006B000ABFD20B1204605F016FF002038BD0C2010 -:1006C00038BD2DE9FC41817805461A2925D00EDC7C -:1006D00016292DD2DFE801F02C2C2C2C2C212C2CCF -:1006E0002C2C2C2C2C2C2C2C2C2C2C2121212A2970 -:1006F0001ED00BDCA1F11E010C2919D2DFE801F09C -:1007000018181818181818181818180D3A39042934 -:100710000ED2DFE801F00D020D022888B0F5706FEF -:1007200006D201276946FFF7BBFC18B102208BE512 -:10073000122089E59DF8000001F0CCF8019C08B179 -:10074000F43401E004F5B8749DF8000001F0C2F83B -:10075000019E08B1F53601E006F271166846FFF712 -:100760008DFC08B1207808B10C206DE52770A878C1 -:100770003070684601F044F9002065E57CB50D460F -:100780006946FFF78DFC002618B12E602E710220FD -:100790007CBD9DF8000001F09DF8019C9DF80000D3 -:1007A000583401F097F8019884F840608168296016 -:1007B000017B297194F840100029F5D100207CBDFF -:1007C00070B50D4604460189002380880CF031F98C -:1007D000696A81421DD2401A401CA1884008091A4A -:1007E0008AB2A2802189081A2081668895F854105F -:1007F00010460CF0F8F8864200D230466080E68859 -:1008000095F8551020890CF0EEF8864200D230465B -:10081000E08070BDF0B585B00D46064603A9FFF730 -:100820003FFC00282DD19DF80C0060B300220499F4 -:10083000FB20B1F84A30FB2B00D30346B1F84C4003 -:10084000FB20FB2C00D30446DFF890CA9CE8811003 -:1008500000900197CDF808C0ADF80230ADF8064021 -:100860006846FFF7ADFF6E80BDF80400E880BDF874 -:1008700008006881BDF80200A880BDF80600288144 -:10088000002005B0F0BD0122D1E72DE9F04186B08E -:10089000044600886946FFF703FC002868D12189D7 -:1008A000E08801F0BCF8002862D1A188608801F0DE -:1008B000B6F800285CD12189E08801F0BEF8002854 -:1008C00056D1A188608801F0B8F8070050D120887F -:1008D00002A9FFF79FFF00B1FFDFBDF8101062888B -:1008E0000920914244D3BDF80C10E28891423FD3D5 -:1008F000BDF81210BDF80E2023891144A2881A44B5 -:10090000914235D39DF80000019D4FF0000801266B -:1009100040B185F89B61019890F8DE0105F5CD7531 -:1009200040B914E085F80561019890F8280105F5B3 -:10093000827508B13A2718E0E08868806088E8800E -:100940002089A880A08828810122019909E0E088F7 -:1009500068806088E8802089A880A0882881019923 -:1009600000222846FFF72CFF2E7085F801803846BC -:1009700006B0BDE8F08188E710B5044600F0EDFF51 -:1009800020B10BF007F808B10C202BE6207800F01E -:1009900095FFE279611C0BF07EF908B1002021E699 -:1009A00002201FE610B503780446002B406813466A -:1009B0000A46014608D001200CF06BF96168496ACB -:1009C000884203D901200DE60020F5E7002009E662 -:1009D000887800B90320C97801B903211070197013 -:1009E0000020704710B586B00446008803A9FFF7C1 -:1009F00057FB002806D1A08830B1012804D0022876 -:100A000002D0122006B0EDE56B4602AA214603A8EB -:100A1000FFF7DEFF0028F5D19DF80C300022012100 -:100A2000002B049B06D083F8A511049B93F8F231A8 -:100A30004BBB20E083F80F11049B93F834313BB992 -:100A4000049B93F80E311BB9049B93F87D300BB1D6 -:100A50003A200CE0049B83F80E11049B9DF80810CB -:100A600083F81011049B9DF8001083F8111104996C -:100A700081F80F21C6E7049B93F8A4311BB9049BAE -:100A800093F87D300BB13A200CE0049B83F8A4115D -:100A9000049B9DF8081083F8A611049B9DF8001094 -:100AA00083F8A711049981F8A521ABE710B5044696 -:100AB0000020A17801B90120E2780AB940F00200D3 -:100AC00000F0C5FF002803D12046BDE8104089E7AB -:100AD00088E52DE9F04104460078012804D018B1DA -:100AE000022801D003281ED1607828B1012803D044 -:100AF000022801D0032816D1E07B10B9A078012884 -:100B000011D1A07830F005020DD110F0050F0AD0F8 -:100B1000400801D011202CE7E078E68862890F4672 -:100B200018B1012801D0122023E7104600F09FFFE2 -:100B3000302558B13946304600F0A3FF30B1A07BD4 -:100B40000028F0D00728EED8002012E7284610E74A -:100B50001FB5044600F0E3FE10B10C2004B041E5DF -:100B6000022104F10A0000F096FFA0788DF8080039 -:100B7000A0788DF8000060788DF8040020788DF85A -:100B80000300A07B8DF80500E07B00B101208DF80B -:100B90000600A078C0070DD0E078012813D0A0B1DE -:100BA0005FF000008DF80100E088ADF80A00608970 -:100BB000ADF80C0002A80FF0B1FE0028CED16846B7 -:100BC0000DF031FCCAE70220ECE70120EAE710B59E -:100BD00004460121FFF77DFF002803D12046BDE830 -:100BE0001040B5E7FEE40278012A01D0BAB118E05E -:100BF00042783AB1012A05D0022A12D189B18188FE -:100C000079B100E059B1418849B1808838B101EB30 -:100C10008101490000EB8000B1EB002F01D20020E0 -:100C200070471220704770B5044600780D460128C1 -:100C300009D010F0CDFB052803D00FF080FD00286F -:100C400000D00C2070BD0DF0CFFA88B10DF0E1FAA4 -:100C50000DF0C6FB0028F5D125B160780DF076FBCC -:100C60000028EFD1A1886088BDE870400FF071BE08 -:100C7000122070BD10B504460121FFF7B4FF002813 -:100C800004D12046BDE810400121CCE7AAE42DE9BB -:100C9000F0470746B0F84C50FB2092460E46FB2D1D -:100CA00000D30546DFF83886B8F80A00A84200D21B -:100CB000054697F85510284600F020FEB8F80C10AD -:100CC000814200D208468146B7F84A40FB20FB2CFF -:100CD00000D30446B8F80E00A04200D2044697F8AC -:100CE0005410204600F00AFEB8F81010814200D2DD -:100CF00008464FF4A4721B2C01D0904203D11B2D47 -:100D000025D0914523D0F580A6F808907480B08056 -:100D1000524639463046FFF753FD01203070F088C7 -:100D20001B38E02800D9FFDF70881B38E02800D985 -:100D3000FFDF30894FF4E064A0F5A470A04200D931 -:100D4000FFDFB088A0F5A470A04200D9FFDFBDE8A6 -:100D5000F087F0B5871FDDE9056540F67B44A742C3 -:100D600013D28F1FA74210D288420ED8B2F5FA7F55 -:100D70000BD2A3F10A00241FA04206D2521C4A4300 -:100D8000B2EB830F01DAAE4201D90020F0BD0120A1 -:100D9000F0BD2DE9FC41477A04468846780778D0B3 -:100DA000F80876D1780701D51120C0E494F83A000C -:100DB00008B9012F78D100252E46F8071BD088F0FE -:100DC0000105208A294600F052FE48B36089294671 -:100DD00000F057FE20B3208A6189884264D8A18E32 -:100DE000E08DCDE90001238D628CA18BE08AFFF7B5 -:100DF000B0FFA8B10125B8070ED504EB4500828EDF -:100E0000C18DCDE90012038D428C818BC08AFFF722 -:100E1000A0FF28B16D1C2E46B8F1000F02D027E0CC -:100E2000302084E4228A01211DE0B14203D004EB8A -:100E30004100008A024404EB4100C38A878ABB4216 -:100E400032D1838B478BBB422ED1438C078CBB4264 -:100E50002AD1038DC78CBB4226D1438900898342A6 -:100E600022D1491CC9B2A942DFD3608990421BD369 -:100E7000207810B1012817D10EE0A078B8F1000F4A -:100E800008D048B1012807D0022805D003280BD18B -:100E900002E009E00028EDD1607838B1012805D0E2 -:100EA000022803D0032801D0122040E400203EE4B1 -:100EB00000216EE70178C90702D0406812F0F7BB45 -:100EC00012F0C4BB2DE9F0438DB00D46AFF6E00241 -:100ED000D2E9008701462846FFF75BFF00280CD1C6 -:100EE00000F01DFD40B9FE4E307828B90CF090FBA3 -:100EF000A0F57F41FF3903D00C200DB0BDE8F08391 -:100F0000032105F1100000F0C6FDF54808AA3E389F -:100F10000890F4480990F248062110380A900BA86E -:100F200001F092FB040035D003210BF0C2F9B18A25 -:100F3000A4F84A10F28AA4F84C20F37C0093B1463E -:100F4000B37C208801F06DFC00B1FFDF208806F043 -:100F500081FA218804F10E0000F009FDE2A004F1FD -:100F6000120600680490032104A804F0B1FD0020DB -:100F700004A90A5C3254401CC0B20328F9D3A88BE0 -:100F80006080688CA080288DE080687AC10703D0DB -:100F9000012106E00920B0E7800701D5022100E029 -:100FA0000021B9F818000A460FF068FD0146A0625A -:100FB00020460FF071FD002684F85E6084F85F60C3 -:100FC000A87800F07BFC6076D5F80300C4F81A001E -:100FD000B5F80700E083C4F808802773012084F87F -:100FE0000001024604F582712046FFF750FE8DF89D -:100FF00000600121684604F06BFD9DF8000000F0E0 -:101000000701C0F3C1021144C0F3401008448DF839 -:101010000000401D2076092801D2083020760021EA -:1010200020460BF046F968780DF0E9F8A9782878A1 -:10103000EA1C0DF0B7F848B10DF0EBF8A978287864 -:10104000EA1C0DF05DF9060002D038E0122636E009 -:10105000687A00F001010020CA0700D0012089074A -:1010600001D540F002000DF086F8060027D1214698 -:1010700003200DF06FF9060021D1687A00F001011C -:101080008DF80810C00705D06889ADF80A00288AD5 -:10109000ADF80C0002A80FF041FC064695F83A00A6 -:1010A00000B101200DF079F84EB90DF099F9060064 -:1010B00005D1A98F20460FF0D3FB060008D0208869 -:1010C00006F0C9F92088062101F002FB00B1FFDF1C -:1010D000304612E701460020F4E638B58048007833 -:1010E00078B910F075F9052805D00CF091FAA0F543 -:1010F0007F41FF3905D068460FF06FFC040002D035 -:101100000CE00C2038BD0098008806F0A4F9009887 -:101110000621008801F0DCFA00B1FFDF204638BD6F -:101120001CB582894189CDE900120389C288818872 -:101130004088FFF70EFE08B100201CBD30201CBD0A -:1011400070B50546FFF7ECFF00280ED12888062170 -:1011500001F0ACFA040007D000F046FC20B1D4F84E -:10116000F800017831B901E0022070BDD4F84411D3 -:10117000097809B13A2070BD05218171D4F8F810C1 -:1011800000200881D4F8F810A8884881D4F8F81015 -:10119000E8888881D4F8F8102889C881D4F8F80044 -:1011A000028941898A4204D88279082A01D88A4270 -:1011B00001D3122070BD29884180D4F8F810022094 -:1011C0000870002070BD3EB504460BF065FAB0B162 -:1011D00043480125A0F140024570236842F8423F90 -:1011E00023790021137141706946062001F0E7F967 -:1011F00000B1FFDF684601F0C0F910B10EE0122027 -:101200003EBDBDF80440029880F80051684601F0E8 -:10121000B4F918B9BDF80400A042F4D100203EBDD5 -:1012200070B505460088062101F040FA040007D099 -:1012300000F0DAFB20B1D4F8F810087830B901E0FA -:10124000022070BDD4F84401007808B13A2070BD86 -:101250009620005D10F0010F18D0D5F8020048600C -:10126000D5F80600886054F8F80F6989102281814A -:10127000206805F10C010E3013F044FC21680320B6 -:101280000870216828884880002070BD0C2070BD3F -:1012900038B504460078EF2856D86088ADF80000CD -:1012A000009800F009FCD0B36188080708D4D4E99D -:1012B0000120824248D8202A46D3B0F5804F43D837 -:1012C000207B60B307283FD8607B28B1012803D07A -:1012D000022801D0032837D14A0707E0BC5002009A -:1012E000E4070020780000201122330003D40228F4 -:1012F00001D0032805D1A07B08B1012824D14807DB -:1013000007D4607D28B1012803D0022801D003282A -:101310001AD1C806E07D03D5012815D110E013E0ED -:10132000012801D003280FD1C80609D4607E012806 -:1013300003D0022801D0032806D1A07E0F2803D8AD -:10134000E07E18B1012801D0122038BD002038BD40 -:10135000F8B515460E46044607F0C0FB08B10C2050 -:10136000F8BD2046FFF794FF0028F9D1E07D03285F -:101370000BD0A078C00602D4607E032805D0FDF70C -:101380008DFB3070A07515B10CE01120F8BDFF2069 -:101390008DF8000069460020FDF76FFB69460020CC -:1013A000FDF75FFB2046BDE8F840FDF7BBBA002221 -:1013B000CEE770B50C46054612B11F2907D80CE0E0 -:1013C000FF2C04D8FDF735F818B11F2C01D91220D5 -:1013D00070BD2846FDF717F808B1002070BD422007 -:1013E00070BD10B50446408810B1FDF71DFB78B103 -:1013F0002078618800F001026078FFF7DAFF0028AA -:1014000005D1FDF7F9FA6288824203D907203DE44D -:1014100012203BE410466168FDF72FFB002035E405 -:1014200010B50446408810B1FCF7F5FF70B1207884 -:10143000618800F001026078FFF7BBFF002804D14B -:1014400060886168FDF70DFB00201FE412201DE499 -:101450007CB5054640784224012808D8A878FCF7D6 -:10146000D2FF20B128781224012802D090B1204662 -:101470007CBDFDF71FFB20B1A8880028F7D080288D -:10148000F5D8FDF71EFB60B168780028EFD028780A -:10149000012808D006F0FEF8044606F0F6FF002802 -:1014A00072D00C207CBDFDF756F910B9FDF7FBFAA0 -:1014B00090B307F013FB0028F3D1FCF76CFFA0F505 -:1014C0007F41FF39EDD1FDF768F9AE8842F2107027 -:1014D0004643A879FDF7B9FAFCF7A4FFF8B100225A -:1014E000072101A801F0B0F804001FD0F74803213C -:1014F000846020460AF098FD2046FDF74AFEF44D30 -:10150000A88AA4F84A00E88AA4F84C00FCF791FFE6 -:1015100070B1288B01210FE0FFE712207CBD31461E -:10152000002007F07DF868B3FFDF37E009207CBDBD -:10153000FDF7C9FA0146288B07F01DF90146A062A4 -:101540000022204606F0A9F8FCF773FF08B9FDF762 -:10155000BAFAE87C0090AB7CEA8AA98A208801F07C -:1015600060F900B1FFDF208805F074FF31462046A6 -:1015700007F056F800B1FFDF002204F5CD712046D8 -:10158000FFF785FB0AE0FFE744B1208805F063FF21 -:101590002088072101F09CF800B1FFDF00207CBD0E -:1015A000002155E770B50D46072101F07FF80400D2 -:1015B00003D094F8730110B10AE0022070BD94F8D2 -:1015C0006500142801D0152802D194F8C00108B193 -:1015D0000C2070BD1022294604F5BA7013F092FA5F -:1015E000012084F87301002070BD10B5072101F0BF -:1015F0005DF818B190F8731111B107E0022006E709 -:1016000090F86510142903D0152901D00C20FEE6AE -:10161000022180F873110020F9E62DE9FC410C4607 -:101620004BF68032122194421CD8DCB16946FEF799 -:1016300037FD002815D19DF8000000F04BF9019E00 -:101640009DF80000583600F045F9019DAD1C2F882B -:101650002246394630460AF0A2FC2888B842F6D124 -:10166000002022E4084620E47CB504460088694650 -:10167000FEF716FD002810D19DF8000000F02AF9B1 -:10168000019D9DF80000583500F024F90198A278DA -:1016900090F82C10914201D10C207CBD7F21297241 -:1016A000A9720021E972E17880F82D10217980F883 -:1016B0002E10A17880F82C1000207CBD1CB50C46A3 -:1016C0006946FEF7EDFC00280AD19DF8000000F005 -:1016D00001F9019890F8730000B1012020700020FA -:1016E0001CBD7CB50D4614466946FEF7D9FC0028A2 -:1016F00009D19DF8000000F0EDF8019890F82C0059 -:10170000012801D00C207CBD9DF8000000F0E2F81B -:10171000019890F86010297090F861002070002006 -:101720007CBD70B50D461646072100F0BFFF18B30B -:1017300081880124C388428804EB4104AC4217D855 -:1017400042F210746343A4106243B3FBF2F2521EE0 -:1017500094B24FF4FA72944200D91446A54200D2D2 -:101760002C46491C641CB4FBF1F24A43521E91B250 -:1017700090F8AC211AB901E0022070BD01843180DB -:10178000002070BD10B50C46072100F08FFF48B156 -:1017900080F8DF4024B190F8DD1009B107F001F8BE -:1017A000002034E6022032E6017899B1417889B10F -:1017B00041881B290ED381881B290BD3C18802299C -:1017C00008D343490268403941F8522F40684860C5 -:1017D000002070471220704710B504460FF04AF9F8 -:1017E000204606F097FF002011E610B506F095FFA1 -:1017F00000200CE62DE9F04115460F460646012271 -:10180000114638460FF03AF904460121384606F0F1 -:10181000B2FF844200D2044601213046653C00F00C -:101820005EF806460121002000F059F830440121FD -:101830009630844206D900F19601201AB0FBF1F0EF -:10184000401C81B229800020BDE8F08110B504461B -:1018500000F083F808B10C20D9E5601C0AF0F6F915 -:10186000207800F00100FCF793FF207800F00100E1 -:101870000CF0CAFC0020CAE510B50446072000F0B1 -:10188000AFFE08B10C20C2E52078C00710D00022BE -:101890006078114612F008FB08B11220B7E5A06885 -:1018A00008F0A3FE6078616808F0A8FE0020AEE5AD -:1018B000002008F09AFE00210846F5E718B102283A -:1018C00001D0012070470020704700006C0000200C -:1018D000E407002008B10020F6E70120F4E710B586 -:1018E000012904D0022905D0FFDF20468FE5C00082 -:1018F000503001E080002C3084B2F6E711F00C0F7C -:1019000004D04FF4747101EB801006E0022902D07C -:10191000C000703001E080003C3080B2D4E710B5E8 -:101920000FF056FD042805D00FF052FD052801D018 -:1019300000206CE501206AE510B5FFF7F0FF10B15B -:101940000CF012FD28B907F0C9F820B1FCF7FBFE36 -:1019500008B101205BE5002059E510B5FFF7DFFF76 -:1019600018B907F0BBF8002800D001204FE52DE999 -:10197000FE4300250F4680460A260421404604F017 -:10198000D0F840460AF064FE062000F037FE044618 -:1019900015E06946062000F012FE0AE0BDF80400DA -:1019A000B84206D00298042241460E3013F07EF869 -:1019B00050B1684600F0E1FD0500EFD0641E002C38 -:1019C00006DD002DE5D005E040460AF04AFEF5E7C9 -:1019D00005B9FFDFD8F800000AF0EBFA761E01D057 -:1019E0000028CAD0BDE8FE8390F8D01090F87300AC -:1019F00020B919B1042901D0012065E7002063E76F -:101A0000017800290AD0416891F8DD20002A05D02C -:101A1000002281F8DD20406806F0C3BE54E71B3881 -:101A2000E12806D2B1F5A47F03D344F2902081428D -:101A300001D9122048E7002046E7FB2803D840F6EA -:101A40004800814201D911203EE700203CE770B5F3 -:101A500014460546012200F053F8002806D121461D -:101A60002846BDE87040002200F04AB870BD042846 -:101A700003D321B9B0F5804F01D9002024E701201C -:101A800022E7042803D321B9B0F5804F01D9002003 -:101A90001AE7012018E710B500224FF4C84408E007 -:101AA00030F81230A34200D9234620F81230521CDD -:101AB000D2B28A42F4D3AAE480B2C1060BD40107A1 -:101AC0001CD481064FEAC07101D5B9B900E099B1C3 -:101AD000800713D410E0410610D481060ED4C1074C -:101AE0004FEA807104D0002902DB400704D405E0EE -:101AF000010703D4400701D40120E5E60020E3E616 -:101B00000AB1012200E00222024202D1880802D179 -:101B100009B10020D8E61120D6E6000030B50588CE -:101B200025F4004421448CB24FF4004194420AD27F -:101B3000121B92B21B339A4201D2A94307E005F46B -:101B40000041214303E0A21A92B2A943114301804C -:101B500030BD0844083050434A31084480B27047D1 -:101B600070B51D4616460B46044629463046049A73 -:101B7000FFF7EFFF0646B34200D2FFDF28212046E1 -:101B800013F061F84FF6FF70A082283EB0B265777F -:101B90006080B0F5004F00D9FFDF618805F13C009F -:101BA000814200D2FFDF60880835401B343880B2A4 -:101BB00020801B2800D21B2020800020A07770BD31 -:101BC0008161886170472DE9F05F0D46C188044648 -:101BD00000F12809008921F4004620F4004800F0B3 -:101BE00062FB10B10020BDE8F09F4FF0000A4FF0FB -:101BF000010BB0450CD9617FA8EB0600401A0838EC -:101C0000854219DC09EB06000021058041801AE0BD -:101C10006088617F801B471A083F0DD41B2F00DAB4 -:101C2000FFDFBD4201DC294600E0B9B2681A0204B8 -:101C3000120C04D0424502DD84F817A0D2E709EB6C -:101C400006000180428084F817B0CCE770B50446E6 -:101C500000F12802C088E37D20F400402BB110443D -:101C60000288438813448B4201D2002070BD0025B6 -:101C70008A4202D30180458008E0891A0904090CD0 -:101C8000418003D0A01D00F01EFB08E0637F0088A8 -:101C90000833184481B26288A01DFFF73FFFE57545 -:101CA000012070BD70B5034600F12804C588808806 -:101CB00020F400462644A84202D10020188270BDBC -:101CC00098893588A84206D3401B75882D1A204470 -:101CD000ADB2C01E05E02C1AA5B25C7F2044304492 -:101CE000401D0C88AC4200D90D809C8924B1002491 -:101CF00014700988198270BD0124F9E770B5044693 -:101D000000F12801808820F400404518208A00282E -:101D100025D0A189084480B2A08129886A8811440D -:101D2000814200D2FFDF2888698800260844A18903 -:101D3000884212D1A069807F2871698819B1201D5D -:101D400000F0C1FA08E0637F28880833184481B2A4 -:101D50006288201DFFF7E2FEA6812682012070BD69 -:101D60002DE9F041418987880026044600F12805C5 -:101D7000B94218D004F10A0821F4004028444188EF -:101D800019B1404600F09FFA08E0637F00880833ED -:101D9000184481B262884046FFF7C0FE761C618914 -:101DA000B6B2B942E8D13046BDE8F0812DE9F04144 -:101DB00004460B4627892830A68827F40041B4F84A -:101DC0000A8001440D46B74201D10020ECE70AB178 -:101DD000481D106023B1627F691D184612F092FE03 -:101DE0002E88698804F1080021B18A1996B200F0A2 -:101DF0006AFA06E0637F62880833991989B2FFF7AF -:101E00008DFE474501D1208960813046CCE781882D -:101E1000C088814201D101207047002070470189AC -:101E20008088814201D1012070470020704770B541 -:101E30008588C38800F1280425F4004223F400417A -:101E400014449D421AD08389058A5E1925886388C7 -:101E5000EC18A64214D313B18B4211D30EE0437F8A -:101E600008325C192244408892B2801A80B223332F -:101E7000984201D211B103E08A4201D1002070BD25 -:101E8000012070BD2DE9F0478846C18804460089CD -:101E900021F4004604F1280720F4004507EB060969 -:101EA00000F001FA002178BBB54204D9627FA81B7B -:101EB000801A002503E06088627F801B801A083842 -:101EC00023D4E28962B1B9F80020B9F802303BB1FD -:101ED000E81A2177404518DBE0893844801A09E088 -:101EE000801A217740450ADB607FE1890830304461 -:101EF00039440844C01EA4F81280BDE8F087454567 -:101F000003DB01202077E7E7FFE761820020F4E7A9 -:101F10002DE9F74F044600F12805C088884620F4D3 -:101F2000004A608A05EB0A0608B1404502D200204B -:101F3000BDE8FE8FE08978B13788B6F8029007EBEC -:101F40000901884200D0FFDF207F4FF0000B50EAEC -:101F5000090106D088B33BE00027A07FB946307165 -:101F6000F2E7E18959B1607F2944083050440844C0 -:101F7000B4F81F1020F8031D94F821108170E28935 -:101F800007EB080002EB0801E1813080A6F802B0FF -:101F900002985F4650B1637F30880833184481B29D -:101FA0006288A01DFFF7BAFDE78121E0607FE1892B -:101FB00008305044294408442DE0FFE7E089B4F894 -:101FC0001F102844C01B20F8031D94F821108170B5 -:101FD00009EB0800E28981B202EB0800E08137805A -:101FE00071800298A0B1A01D00F06DF9A4F80EB0A8 -:101FF000A07F401CA077A07D08B1E088A08284F873 -:1020000016B000BFA4F812B084F817B001208FE713 -:10201000E0892844C01B30F8031DA4F81F10807805 -:1020200084F82100EEE710B5818800F1280321F43F -:1020300000442344848AC288A14212D0914210D025 -:10204000818971B9826972B11046FFF7E8FE50B913 -:102050001089283220F40040104419790079884210 -:1020600001D1002010BD184610BD00F12803407FAB -:1020700008300844C01E1060088808B9DB1E1360D1 -:1020800008884988084480B270472DE9F04100F182 -:102090002806407F1C4608309046431808884D8823 -:1020A000069ADB1EA0B1C01C80B2904214D9801ADF -:1020B000A04200DB204687B298183A46414612F00B -:1020C000F5FC002816D1E01B84B2B844002005E0DE -:1020D000ED1CADB2F61EE8E7101A80B20119A94254 -:1020E00006D8304422464146BDE8F04112F0DEBC3D -:1020F0004FF0FF3058E62DE9F04100F12804407F11 -:102100001E46083090464318002508884F88069AD6 -:10211000DB1E90B1C01C80B2904212D9801AB0422E -:1021200000DB304685B299182A46404612F0EAFC98 -:10213000701B86B2A844002005E0FF1CBFB2E41E5D -:10214000EAE7101A80B28119B94206D8211832463E -:10215000404612F0D7FCA81985B2284624E62DE99E -:10216000F04100F12804407F1E4608309046431895 -:10217000002508884F88069ADB1E90B1C01C80B2EB -:10218000904212D9801AB04200DB304685B29818CE -:102190002A46414612F0B6FC701B86B2A8440020C5 -:1021A00005E0FF1CBFB2E41EEAE7101A80B28119F5 -:1021B000B94206D820443246414612F0A3FCA81981 -:1021C00085B22846F0E5401D704710B5044600F181 -:1021D0002801C288808820F400431944904206D028 -:1021E000A28922B9228A12B9A28A904201D1002082 -:1021F00010BD0888498831B1201D00F064F8002026 -:102200002082012010BD637F62880833184481B2A8 -:10221000201DFFF783FCF2E70021C1810177418295 -:10222000C1758175704703881380C28942B1C28825 -:1022300022F4004300F128021A440A60C089704762 -:102240000020704710B50446808AA0F57F41FF3911 -:1022500000D0FFDFE088A082E08900B10120A075F6 -:1022600010BD4FF6FF71818200218175704710B556 -:102270000446808AA0F57F41FF3900D1FFDFA07DB1 -:1022800028B9A088A18A884201D1002010BD012070 -:1022900010BD8188828A914201D1807D08B10020E1 -:1022A00070470120704720F4004221F400439A4215 -:1022B00007D100F4004001F40041884201D0012020 -:1022C00070470020704730B5044600880D4620F462 -:1022D0000040A84200D2FFDF21884FF4004088432D -:1022E0002843208030BD70B50C00054609D0082C6D -:1022F00000D2FFDF1DB1A1B2286800F044F8201D14 -:1023000070BD0DB100202860002070BD0021026862 -:1023100003E093881268194489B2002AF9D100F0C9 -:1023200032B870B500260D460446082900D2FFDFFA -:10233000206808B91EE0044620688188A94202D0BE -:1023400001680029F7D181880646A94201D10068B9 -:102350000DE005F1080293B20022994209D3284406 -:10236000491B02608180216809682160016020604A -:1023700000E00026304670BD00230B608A800268B2 -:102380000A600160704700234360021D0181026002 -:102390007047F0B50F460188408815460C181E4658 -:1023A000AC4200D3641B3044A84200D9FFDFA0191F -:1023B000A84200D9FFDF3819F0BD2DE9F041884669 -:1023C00006460188408815460C181F46AC4200D3CB -:1023D000641B3844A84200D9FFDFE019A84200D9A5 -:1023E000FFDF70883844708008EB0400BDE8F0819E -:1023F0002DE9F041054600881E461746841B884695 -:10240000BC4200D33C442C8068883044B84200D998 -:10241000FFDFA019B84200D9FFDF68883044688028 -:1024200008EB0400E2E72DE9F04106881D4604466A -:10243000701980B2174688462080B84201D3C01B6D -:1024400020806088A84200D2FFDF7019B84200D90E -:10245000FFDF6088401B608008EB0600C6E730B5F0 -:102460000D460188CC18944200D3A41A40889842A3 -:1024700000D8FFDF281930BD2DE9F041C84D0446D2 -:102480009046A8780E46A04200D8FFDF05EB8607ED -:10249000B86A50F8240000B1FFDFB868002816D0F1 -:1024A000304600F044F90146B868FFF73AFF0500EE -:1024B0000CD0B86A082E40F8245000D3FFDFB9488A -:1024C0004246294650F82630204698472846BDE81F -:1024D000F0812DE9F8431E468C1991460F460546BA -:1024E000FF2C00D9FFDFB14500D9FFDFE4B2009532 -:1024F0004DB300208046E81C20F00300A84200D025 -:10250000FFDF4946DFF89892684689F8001089F89D -:10251000017089F8024089F8034089F8044089F87D -:10252000054089F8066089F80770414600F008F90F -:10253000002142460F464B460098C01C20F0030085 -:10254000009012B10EE00120D4E703EB8106B062E7 -:10255000002005E0D6F828C04CF82070401CC0B21E -:10256000A042F7D30098491C00EB8400C9B2009048 -:102570000829E1D3401BBDE8F88310B50446EEF707 -:10258000C8FE08B1102010BD2078854A618802EB92 -:10259000800092780EE0836A53F8213043B14A1CE0 -:1025A0006280A180806A50F82100A060002010BDE8 -:1025B000491C89B28A42EED86180052010BD70B5F1 -:1025C00005460C460846EEF7A4FE08B1102070BD83 -:1025D000082D01D3072070BD25700020608070BDDC -:1025E0000EB56946FFF7EBFF00B1FFDF6846FFF766 -:1025F000C4FF08B100200EBD01200EBD10B5044679 -:10260000082800D3FFDF6648005D10BD3EB50546D3 -:1026100000246946FFF7D3FF18B1FFDF01E0641C17 -:10262000E4B26846FFF7A9FF0028F8D02846FFF774 -:10263000E5FF001BC0B23EBD59498978814201D9EE -:10264000C0B27047FF2070472DE9F041544B062976 -:1026500003D007291CD19D7900E0002500244FF606 -:10266000FF7603EB810713F801C00AE06319D7F87E -:1026700028E09BB25EF823E0BEF1000F04D0641C9A -:10268000A4B2A445F2D8334603801846B34201D120 -:1026900000201CE7BDE8F041EEE6A0F57F43FF3BDC -:1026A00001D0082901D300207047E5E6A0F57F425C -:1026B000FF3A0BD0082909D2394A9378834205D9C9 -:1026C00002EB8101896A51F82000704700207047B1 -:1026D0002DE9F04104460D46A4F57F4143F2020086 -:1026E000FF3902D0082D01D30720F0E62C494FF026 -:1026F00000088A78A242F8D901EB8506B26A52F83E -:102700002470002FF1D027483946203050F825207A -:1027100020469047B16A284641F8248000F007F827 -:1027200002463946B068FFF727FE0020CFE61D4974 -:10273000403131F810004FF6FC71C01C0840704762 -:102740002DE9F843164E8846054600242868C01C2B -:1027500020F0030028602046FFF7E9FF315D484381 -:10276000B8F1000F01D0002200E02A680146009273 -:1027700032B100274FEA0D00FFF7B5FD1FB106E0AB -:1027800001270020F8E706EB8401009A8A60296897 -:10279000641C0844E4B22860082CD7D3EBE60000A0 -:1027A00004080020C850020070B50E461D461146B0 -:1027B00000F0D4F804462946304600F0D8F820440A -:1027C000001D70BD2DE9F04190460D4604004FF00C -:1027D000000610D00027E01C20F00300A04200D02B -:1027E000FFDFDDB141460020FFF77DFD0C3000EB3F -:1027F000850617B112E00127EDE7614F04F10C00E7 -:10280000A9003C602572606000EB85002060606874 -:1028100012F019FA41463868FFF765FD3046BDE809 -:10282000F0812DE9FF4F564C804681B020689A46D2 -:10283000934600B9FFDF2068027A424503D9416818 -:1028400051F8280020B143F2020005B0BDE8F08F36 -:102850005146029800F082F886B258460E9900F070 -:1028600086F885B27019001D87B22068A1463946E6 -:102870000068FFF756FD04001FD0678025802946B9 -:10288000201D0E9D07465A4601230095FFF768F963 -:102890002088314638440123029ACDF800A0FFF782 -:1028A0005FF92088C1193846FFF78AF9D9F8000086 -:1028B0004168002041F82840C7E70420C5E770B50B -:1028C0002F4C0546206800B9FFDF2068017AA94235 -:1028D0000ED9426852F8251051B1002342F8253034 -:1028E0004A880068FFF748FD216800200A7A08E05E -:1028F00043F2020070BD4B6853F8203033B9401CDE -:10290000C0B28242F7D80868FFF700FD002070BD12 -:1029100070B51B4E05460024306800B9FFDF3068F3 -:10292000017AA94204D9406850F8250000B1041D7D -:10293000204670BD70B5124E05460024306800B9BF -:10294000FFDF3068017AA94206D9406850F82510A7 -:1029500011B131F8040B4418204670BD10B50A4679 -:102960000121FFF7F6F8C01C20F0030010BD10B5E0 -:102970000A460121FFF7EDF8C01C20F0030010BD4E -:102980008000002070B50446C2F11005281912F02D -:10299000B9F815F0FF0108D0491EC9B28020605473 -:1029A0002046BDE8704012F02CB970BD30B505E08E -:1029B0005B1EDBB2CC5CD55C6C40C454002BF7D101 -:1029C00030BD10B5002409E00B78521E44EA4303E1 -:1029D00000F8013B11F8013BD2B2DC09002AF3D127 -:1029E00010BD2DE9F04389B01E46DDE9107990460F -:1029F0000D00044622D002460846F949FDF7E1FDE4 -:102A0000102221463846FFF7DCFFE07B000606D5A2 -:102A1000F34A3946102310320846FFF7C7FF102249 -:102A200039464846FFF7CDFFF87B000606D5EC4A4D -:102A30004946102310320846FFF7B8FF1021204600 -:102A400012F0DFF80DE0103EB6B208EB06011023DD -:102A500022466846FFF7AAFF224628466946FDF748 -:102A6000B0FD102EEFD818D0F2B241466846FFF7FD -:102A700089FF10234A46694604A8FFF797FF1023F1 -:102A8000224604A96846FFF791FF22462846694678 -:102A9000FDF797FD09B0BDE8F08310233A464146A3 -:102AA000EAE770B59CB01E460546134620980C46D2 -:102AB0008DF80800202219460DF1090012F022F8C5 -:102AC000202221460DF1290012F01CF817A913A8A5 -:102AD000CDE90001412302AA31462846FFF781FFD4 -:102AE0001CB070BD2DE9FF4F9FB014AEDDE92D5431 -:102AF00010AFBB49CDE90076202320311AA8FFF79B -:102B000070FF4FF000088DF808804FF001098DF834 -:102B1000099054F8010FCDF80A00A088ADF80E0016 -:102B200014F8010C1022C0F340008DF8100055F885 -:102B3000010FCDF81100A888ADF8150015F8010CAB -:102B40002C99C0F340008DF8170006A8824611F0BA -:102B5000D9FF0AA883461022229911F0D3FFA0487A -:102B60003523083802AA40688DF83C80CDE900760C -:102B70000E901AA91F98FFF734FF8DF808808DF882 -:102B800009902068CDF80A00A088ADF80E0014F86E -:102B9000010C1022C0F340008DF810002868CDF819 -:102BA0001100A888ADF8150015F8010C2C99C0F398 -:102BB00040008DF81700504611F0A4FF584610222F -:102BC000229911F09FFF86483523083802AA4068F1 -:102BD0008DF83C90CDE900760E901AA92098FFF769 -:102BE00000FF23B0BDE8F08FF0B59BB00C46054662 -:102BF000DDE922101E461746DDE92032D0F801C07B -:102C0000CDF808C0B0F805C0ADF80CC00078C0F32E -:102C100040008DF80E00D1F80100CDF80F00B1F89A -:102C20000500ADF8130008781946C0F340008DF890 -:102C300015001088ADF8160090788DF818000DF189 -:102C40001900102211F05EFF0DF12900102231460B -:102C500011F058FF0DF139001022394611F052FFE2 -:102C600017A913A8CDE90001412302AA214628464D -:102C7000FFF7B7FE1BB0F0BDF0B5A3B017460D4689 -:102C800004461E46102202A8289911F03BFF06A810 -:102C90002022394611F036FF0EA82022294611F0D5 -:102CA00031FF1EA91AA8CDE90001502302AA31461E -:102CB00016A8FFF796FE1698206023B0F0BDF0B579 -:102CC00089B00446DDE90E070D463978109EC1F340 -:102CD00040018DF8001031789446C1F340018DF821 -:102CE00001101968CDF802109988ADF8061099798D -:102CF0008DF808100168CDF809108188ADF80D1025 -:102D000080798DF80F0010236A46614604A8FFF70A -:102D10004DFE2246284604A9FDF753FCD6F80100D3 -:102D20000090B6F80500ADF80400D7F80100CDF822 -:102D30000600B7F80500ADF80A0000200390102344 -:102D40006A46214604A8FFF731FE2246284604A918 -:102D5000FDF737FC09B0F0BD1FB51C6800945B6837 -:102D6000019313680293526803920246084669462B -:102D7000FDF727FC1FBD10B588B00446106804900D -:102D80005068059000200690079008466A4604A9FE -:102D9000FDF717FCBDF80000208008B010BD1FB57E -:102DA0001288ADF800201A88ADF8022000220192A6 -:102DB00002920392024608466946FDF702FC1FBDD7 -:102DC0007FB5074B14460546083B9A1C6846FFF73B -:102DD000E6FF224669462846FFF7CDFF7FBD00008B -:102DE0002051020070B5044600780E46012813D029 -:102DF000052802D0092813D10EE0A0686169057882 -:102E0000042003F06DF9052D0AD078230022042058 -:102E1000616903F0BBF803E00420616903F060F925 -:102E200031462046BDE8704001F084B810B500F18D -:102E30002D03C2799C78411D144064F30102C271D4 -:102E4000D2070DD04A795C7922404A710A791B7900 -:102E50001A400A718278C9788A4200D9817010BDFF -:102E600000224A71F5E74178012900D00C21017058 -:102E700070472DE9F04F93B04FF0000B0C690D46F1 -:102E80008DF820B0097801260C2017464FF00D0868 -:102E90004FF0110A4FF008091B2975D2DFE811F035 -:102EA0001B00C20205031D035C036F03A103B603ED -:102EB000F7031804600492049F04EB04290533050A -:102EC00051055C05ED053006330662067E06F80600 -:102ED0001C07E506EA0614B120781D282AD0D5F88B -:102EE00008805FEA08004FD001208DF82000686A52 -:102EF00002220D908DF824200A208DF82500A86963 -:102F00000A90A8880028EED098F8001091B10F29F7 -:102F100010D27DD2DFE801F07C1349DEFCFBFAF928 -:102F2000F8F738089CF6F50002282DD124B1207856 -:102F30000C2801D00026EEE38DF82020CAE1042001 -:102F4000696A03F0CDF8A8880728EED1204600F082 -:102F5000ECFF022809D0204600F0E7FF032807D93C -:102F6000204600F0E2FF072802D20120207004E092 -:102F7000002CB8D020780128D7D198F80400C11FC0 -:102F80000A2902D30A2061E0C3E1A070D8F800103A -:102F9000E162B8F80410218698F8060084F832003F -:102FA000012028700320207044E00728BDD1002CA8 -:102FB00099D020780D28B8D198F8031094F82F20D4 -:102FC000C1F3C000C2F3C002104201D0062000E0ED -:102FD0000720890707D198F805100142D2D198F847 -:102FE00006100142CED194F8312098F8051020EA5D -:102FF00002021142C6D194F8322098F8061090438C -:103000000142BFD198F80400C11F0A29BAD200E0DA -:1030100006E2617D81427CD8D8F800106160B8F882 -:103020000410218198F80600A072012028700E205B -:10303000207003208DF82000686A0D9004F12D00A7 -:103040000990601D0A900F300B9021E12875FDE377 -:10305000412891D1204600F068FF042802D1E07891 -:10306000C00704D1204600F060FF0F2884D1A88C4F -:10307000D5F80C8080B24FF0400BE669FFF748FCB2 -:10308000324641465B464E46CDF80090FFF733F896 -:103090000B208DF82000686A0D90E06909900021EE -:1030A00008A8FFF79FFE2078042806D0A07D58B11D -:1030B000012809D003280AD048E305202070032006 -:1030C00028708DF82060CCE184F800A032E712204F -:1030D0002070E8E11128BCD1204600F026FF04282A -:1030E00002D1E078C00719D0204600F01EFF062864 -:1030F00005D1E078C00711D1A07D02280ED020466E -:1031000008E0CBE084E070E14FE122E102E1E8E099 -:1031100019E0AEE100F009FF11289AD1102208F160 -:10312000010104F13C0011F0EDFC607801286ED043 -:1031300012202070E078C00760D0A07D0028C8D0A1 -:103140000128C6D05AE0112890D1204600F0EDFEAB -:10315000082804D0204600F0E8FE132886D104F1A8 -:103160006C00102208F10101064611F0CBFC20781A -:1031700008280DD014202070E178C8070DD0A07D5C -:1031800002280AD06278022A04D00328A1D035E0B0 -:103190000920F0E708B1012837D1C80713D0A07D76 -:1031A00002281DD000200090D4E9062133460EA845 -:1031B000FFF777FC10220EA904F13C0011F076FC19 -:1031C000C8B1042042E7D4E90912201D8DE80700A8 -:1031D00004F12C0332460EA8616BFFF770FDE9E79E -:1031E000606BC1F34401491E0068C84000F0010053 -:1031F00040F08000D7E72078092806D185F80090B4 -:103200008DF8209032E32870EBE30920FBE79CE186 -:10321000112899D1204600F088FE0A2802D1E078D2 -:10322000C00704D1204600F080FE15288CD104F19F -:103230003C00102208F10101064611F063FC2078E1 -:103240000A2816D016202070D4E90932606B611D5F -:103250008DE80F0004F15C0304F16C0247310EA805 -:10326000FFF7C2FC10220EA9304611F01FFC18B166 -:10327000F6E20B20207071E22046FFF7D7FDA07820 -:10328000216A0A18C0F11001104611F0BAFC23E3BC -:10329000394608A8FFF7A6FD06463BE20228B8D14A -:1032A000204600F042FE042804D3204600F03DFEF4 -:1032B000082809D3204600F038FE0E2829D32046DE -:1032C00000F033FE122824D2A07D0228A1D10E20C6 -:1032D0008DF82000686A0D9098F801008DF82400A0 -:1032E000F0E3022895D1204600F01FFE002810D000 -:1032F000204600F01AFE0128F9D0204600F015FE05 -:103300000C28F4D004208DF8240098F801008DF8E2 -:1033100025005EE21128FCD1002CFAD02078172875 -:10332000F7D16178606A022911D0002101EB4101D7 -:10333000182606EBC1011022405808F1010111F0D6 -:10334000E1FB0420696A00F0E3FD2670F2E501214B -:10335000ECE70B28DDD1002CDBD020781828D8D161 -:103360006078616A02281CD05FF0000000EB400228 -:10337000102000EBC2000958B8F8010008806078FE -:10338000616A02280FD0002000EB4002142000EBFD -:10339000C2000958404650F8032F0A604068486050 -:1033A00039E00120E2E70120EEE71128B1D1002C3D -:1033B000AFD020781928ACD16178606A022912D088 -:1033C0005FF0000101EB41011C2202EBC101102260 -:1033D000405808F1010111F095FB0420696A00F0E2 -:1033E00097FD1A20B6E00121ECE7082891D1002CC6 -:1033F0008FD020781A288CD1606A98F80120017843 -:1034000062F347010170616AD8F8022041F8012F88 -:10341000B8F8060088800420696A00F079FD8EE221 -:10342000072013E63878012894D1182204F11400FB -:10343000796811F0ACFBE079C10894F82F0001EA3B -:10344000D001E07861F30000E070217D002974D1A3 -:103450002178032909D0C00725D0032028708DF8D2 -:103460002090686A0D90412004E3607DA178884235 -:1034700001D90620EAE502262671E179204621F0ED -:10348000E001E171617A21F0F0016172A17A21F02D -:10349000F001A172FFF7CAFC2E708DF82090686AC7 -:1034A0000D900720E6E20420ADE6387805289DD18E -:1034B0008DF82000686A0D90B8680A900720ADF872 -:1034C00024000A988DF830B06168016021898180FC -:1034D000A17A817104202070F4E23978052985D120 -:1034E0008DF82010696A0D91391D09AE0EC986E864 -:1034F0000E004121ADF824108DF830B01070A88C6A -:10350000D7F80C8080B24026A769FFF713FA41462E -:103510003A463346C846CDF80090FEF720FE00211B -:1035200008A8FFF75FFCE07820F03E00801CE07008 -:103530002078052802D00F200CE049E1A07D20B1C1 -:10354000012802D0032802D002E10720C0E584F858 -:103550000080EFE42070EDE4102104F15C0002F043 -:10356000E0FA606BB0BBA07D18B1012801D0052046 -:10357000FDE006202870F7486063A063BEE238785B -:10358000022894D1387908B12875B3E3A07D0228C8 -:1035900002D0032805D022E0B8680028F5D0606387 -:1035A0001CE06078012806D0A07994F82E1001283C -:1035B00005D0E84806E0A17994F82E00F7E7B8684E -:1035C0000028E2D06063E078C00701D0012902D072 -:1035D000E04803E003E0F8680028D6D0A0630620A6 -:1035E00011E68DF82090696A0D91E1784846C90787 -:1035F00009D06178022903D1A17D29B1012903D025 -:10360000A17D032900D00720287031E138780528F2 -:10361000BBD1207807281ED084F800A005208DF8A3 -:103620002000686A0D90B8680A90ADF824A08DF863 -:1036300030B003210170E178CA070FD0A27D022AC1 -:103640001AD000210091D4E9061204F15C03401C59 -:10365000FFF727FA67E384F80090DFE7D4E909234E -:10366000211D8DE80E0004F12C0304F15C02401CC6 -:10367000616BFFF724FB56E3626BC1F34401491E03 -:103680001268CA4002F0010141F08001DAE738789F -:103690000528BDD18DF82000686A0D90B8680A90A1 -:1036A000ADF824A08DF830B0042100F8011B1022E1 -:1036B00004F15C0111F026FA002108A8FFF792FB43 -:1036C0002078092801D0132044E70A2020709CE5C7 -:1036D000E078C10742D0A17D012902D0022927D07C -:1036E00038E0617808A8012916D004F16C01009136 -:1036F000D4E9061204F15C03001DFFF7BDFA0A20AD -:10370000287003268DF82080686A0D90002108A893 -:10371000FFF768FBDDE2C3E204F15C010091D4E94C -:10372000062104F16C03001DFFF7A6FA0026E9E765 -:10373000C0F3440114290DD24FF0006101EBB01029 -:103740004FEAB060E0706078012801D01020BFE43B -:103750000620FFE6607801283FF4B8AC0A2052E565 -:10376000E178C90708D0A17D012903D10B20287079 -:1037700004202FE028702DE00E2028706078616B07 -:10378000012817D004F15C0304F16C020EA8FFF7C6 -:10379000E3FA2046FFF74AFBA0780EAEC0F1100115 -:1037A000304411F02EFA06208DF82000686A099640 -:1037B0000D909AE004F16C0304F15C020EA8FFF78F -:1037C000CBFAE9E73978022903D139790029D1D038 -:1037D00029758FE28DF82000686A0D9058E53878D9 -:1037E0000728F6D1D4E909216078012809D000BF63 -:1037F00004F16C00CDE90002029105D104F16C03E3 -:1038000004E004F15C00F5E704F15C0304F14C0012 -:103810007A680646216AFFF765F96078012821D1A8 -:10382000A078216A0A18C0F11001104611F0E9F9D8 -:10383000D4E90923606B04F12D018DE80F0004F138 -:103840005C0304F16C0231460EA800E054E2FFF77D -:10385000CBF910220EA904F13C0011F027F908B1B0 -:103860000B20AFE485F800808DF82090686A0D90F9 -:103870008DF824A00CE538780528AAD18DF8200011 -:10388000686A0D90B8680A90ADF824A08DF830B041 -:1038900080F80080617801291AD0D4E9093204F156 -:1038A0002D01A66B03920096CDE9011304F16C0380 -:1038B00004F15C0204F14C01401CFFF795F9002172 -:1038C00008A8FFF78FFA6078012805D0152041E697 -:1038D000D4E90923611DE4E70E20287006208DF845 -:1038E0002000686ACDF824B00D90A0788DF82800EB -:1038F000CEE438780328C0D1E079C00770D00F201B -:103900002870072066E7387804286BD11422391D07 -:1039100004F1140011F03BF9616A208CA1F8090050 -:10392000616AA078C871E179626A01F003011172DD -:10393000616A627A0A73616AA07A81F824001620AB -:1039400061E485F800A08DF82090696A50460D91D9 -:1039500090E00000205102003878052842D1B86874 -:10396000A8616178606A022901D0012100E000218C -:1039700001EB4101142606EBC1014058082102F079 -:10398000D0F86178606A022901D0012100E00021AD -:1039900001EB410106EBC101425802A8E169FFF7C2 -:1039A0000FFA6078626A022801D0012000E000204E -:1039B00000EB4001102000EBC1000223105802A9C7 -:1039C0000932FEF7F3FF626AFD4B0EA80932A169C6 -:1039D000FFF7E5F96178606A022904D0012103E06C -:1039E00042E18BE0BDE0002101EB4101182606EB2E -:1039F000C101A27840580EA911F084F86178606A7C -:103A0000022901D0012100E0002101EB410106EB78 -:103A1000C1014058A1780844C1F1100111F0F1F83A -:103A200005208DF82000686A0D90A8690A90ADF80D -:103A300024A08DF830B0062101706278616A022AF4 -:103A400001D0012200E0002202EB420206EBC2029A -:103A5000401C8958102211F055F8002108A8FFF7E2 -:103A6000C1F91220C5F818B028708DF82090686A46 -:103A70000D900B208DF824000AE43878052870D1C9 -:103A80008DF82000686A0D90B8680A900B20ADF898 -:103A900024000A98072101706178626A022901D026 -:103AA000012100E0002101EB4103102101EBC301E2 -:103AB00051580988A0F801106178626A022902D081 -:103AC000012101E02FE1002101EB4103142101EB71 -:103AD000C30151580A6840F8032F4968416059E012 -:103AE0001920287001208DF8300077E61620287004 -:103AF0008DF830B0002108A8FFF774F9032617E10C -:103B000014202870B0E6387805282AD18DF82000D6 -:103B1000686A0D90B8680A90ADF824A08DF830B0AE -:103B200080F800906278616A4E46022A01D0012234 -:103B300000E0002202EB42021C2303EBC202401C05 -:103B40008958102210F0DEFF002108A8FFF74AF97B -:103B5000152028708DF82060686A0D908DF824601B -:103B60003CE680E0387805287DD18DF82000686A31 -:103B70000D90B8680A90ADF8249009210170616930 -:103B8000097849084170616951F8012FC0F8022095 -:103B90008988C18020781C28A8D1A1E7E078C007D7 -:103BA00002D04FF0060C01E04FF0070C60780228BD -:103BB0000AD000BF4FF0000000EB040101F1090141 -:103BC00005D04FF0010004E04FF00100F4E74FF0A2 -:103BD00000000B78204413EA0C030B7010F8092F37 -:103BE00002EA0C02027004D14FF01B0C84F800C0F2 -:103BF000D2B394F801C0BCF1010F00D09BB990F88A -:103C000000C0E0465FEACC7C04D028F001060670D4 -:103C1000102606E05FEA887C05D528F002060670CB -:103C200013262E70032694F801C0BCF1020F00D0B9 -:103C300092B991F800C05FEACC7804D02CF001066C -:103C40000E70172106E05FEA8C7805D52CF002068D -:103C50000E701921217000260078D0BBCAB3C3BBF7 -:103C60001C20207035E012E002E03878062841D1AF -:103C70001A2019E4207801283CD00C283AD020469C -:103C8000FFF7F1F809208DF82000686A0D9031E007 -:103C90003878052805D006203870032618202870AB -:103CA00046E005218DF82010686A0D90B8680A90EA -:103CB0000220ADF8240001208DF830000A98017030 -:103CC000297D4170394608A8FFF78CF80646182070 -:103CD0002870012E0ED02BE001208DF82000686A9C -:103CE0000D9003208DF82400287D8DF8250085F89F -:103CF00014B012E0287D80B11D202070172028709C -:103D00008DF82090686A0D9002208DF824003946C5 -:103D100008A8FFF767F806460AE00CB1FE202070FD -:103D20009DF8200020B1002108A8FFF75BF810E4FF -:103D300013B03046BDE8F08F2DE9F04387B00C4654 -:103D40004E6900218DF804100120257803460227D2 -:103D50004FF007094FF0050C85B1012D53D0022D0E -:103D600039D1FE2030708DF80030606A0590032054 -:103D70008DF80400207E8DF8050063E0217901298B -:103D800025D002292DD0032928D0042923D1B17DA3 -:103D9000022920D131780D1F042D04D30A3D032DB3 -:103DA00001D31D2917D12189022914D38DF804705C -:103DB000237020899DF8041088421BD2082001E05E -:103DC000185102008DF80000606A059057E0707885 -:103DD0000128EBD0052007B0BDE8F0831D2030702E -:103DE000E4E771780229F5D131780C29F3D18DF807 -:103DF0000490DDE7083402F804CB94E80B0082E875 -:103E00000B000320E7E71578052DE4D18DF800C0FD -:103E1000656A0595956802958DF8101094F80480F0 -:103E2000B8F1010F13D0B8F1020F2DD0B8F1030F84 -:103E30001CD0B8F1040FCED1ADF804700E2028705C -:103E4000207E687000216846FEF7CCFF0CE0ADF8DC -:103E500004700B202870207E002100F01F00687085 -:103E60006846FEF7BFFF37700020B4E7ADF8047076 -:103E70008DF8103085F800C0207E687027701146DC -:103E80006846FEF7AFFFA6E7ADF804902B70207FE1 -:103E90006870607F00F00100A870A07F00F01F0034 -:103EA000E870E27F2A71C0071CD094F8200000F06F -:103EB0000700687194F8210000F00700A871002144 -:103EC0006846FEF78FFF2868F062A8883086A879D8 -:103ED00086F83200A069407870752879B0700D209E -:103EE0003070C1E7A9716971E9E700B587B00428AE -:103EF0000CD101208DF800008DF804000020059100 -:103F00008DF8050001466846FEF76CFF07B000BD5E -:103F100070B50C46054602F0E3F821462846BDE898 -:103F200070407823002202F031B808B10078704761 -:103F30000C20704770B50C0005784FF000010CD0D4 -:103F400021702146F1F76BF969482178405D88427C -:103F500001D1032070BD022070BDF1F760F900208F -:103F600070BD0279012A05D000220A704B78012B1E -:103F700002D003E0042070470A758A610279930039 -:103F8000521C0271C15003207047F0B587B00F4634 -:103F900005460124287905EB800050F8046C707800 -:103FA000411E02290AD252493A46083901EB8000E3 -:103FB000314650F8043C2846984704460CB1012C81 -:103FC00011D12879401E10F0FF00287101D0032480 -:103FD000E0E70A208DF80000706A05900021019644 -:103FE0006846FFF7A7FF032CD4D007B02046F0BDEA -:103FF00070B515460A46044629461046FFF7C5FF28 -:10400000064674B12078FE280BD1207C30B1002008 -:104010002870294604F10C00FFF7B7FF2046FEF791 -:1040200022FF304670BD704770B50E4604467C21B5 -:1040300010F009FE0225012E03D0022E04D0052027 -:1040400070BD0120607000E065702046FEF70BFF38 -:10405000A575002070BD28B1027C1AB10A4600F196 -:104060000C01C5E70120704710B5044686B0042056 -:1040700002F036F82078FE2806D000208DF80000E7 -:1040800069462046FFF7E7FF06B010BD7CB50E4637 -:1040900000218DF804104178012903D0022903D0B2 -:1040A000002405E0046900E044690CB1217C89B179 -:1040B0006D4601462846FFF754FF032809D13246D2 -:1040C00029462046FFF794FF9DF80410002900D0F0 -:1040D00004207CBD04F10C05EBE730B40C4601462E -:1040E000034A204630BC034B0C3AFEF758BE000092 -:1040F0005C5102001851020070B50D46040011D049 -:1041000085B12101284610F07CFD10225449284633 -:1041100010F0F8FC524801210838018044804560C5 -:10412000002070BD012070BD70B54D4E00240546C5 -:10413000083E10E07068AA7B00EB0410817B91427E -:1041400008D1C17BEA7B914204D10C22294610F0B0 -:10415000ADFC30B1641C30888442EBDB4FF0FF30A3 -:1041600070BD204670BD70B50D46060006D02DB15D -:10417000FFF7DAFF002803DB401C14E0102070BDBD -:10418000374C083C20886288411C914201D90420A8 -:1041900070BD6168102201EB0010314610F0B2FCD6 -:1041A0002088401C20802870002070BD2C480838D2 -:1041B000008870472A4908390888012802D0401E23 -:1041C00008800020704770B514460D0018D0BCB1AF -:1041D0000021A170022802D0102811D105E0288802 -:1041E00070B10121A170108008E02846FFF79CFF04 -:1041F000002805DB401CA070A8892080002070BD2D -:10420000012070BD70B5054614460E000BD000208D -:104210003070A878012808D005D91149A1F108010A -:104220000A8890420AD9012070BD24B128782070F4 -:104230002888000A5070022008700FE064B14968B5 -:10424000102201EB00112046103910F05BFC287899 -:1042500020732888000A607310203070002070BD21 -:104260008C0000202DE9F04190460C4607460025C1 -:10427000FE48072F00EB881607D2DFE807F0070794 -:10428000070704040400012500E0FFDF06F81470AE -:10429000002D13D0F548803000EB880191F82700FD -:1042A000202803D006EB4000447001E081F826404E -:1042B00006EB44022020507081F82740BDE8F081D1 -:1042C000F0B51F4614460E460546202A00D1FFDFF2 -:1042D000E649E648803100EB871C0CEB440001EB1B -:1042E0008702202E07D00CEB460140784B784870AF -:1042F000184620210AE092F82530407882F82500FF -:10430000F6E701460CEB410005704078A142F8D178 -:1043100092F82740202C03D00CEB4404637001E09A -:1043200082F826300CEB41042023637082F82710BA -:10433000F0BD30B50D46CE4B44190022181A72EB71 -:10434000020100D2FFDFCB48854200DDFFDFC94814 -:104350004042854200DAFFDFC548401C844207DA4C -:10436000002C01DB204630BDC148401C201830BD68 -:10437000BF48C043FAE710B504460168407ABE4A18 -:1043800052F82020114450B10220084420F07F4010 -:10439000EEF753FC94F90810BDE81040C9E704207B -:1043A000F3E72DE9F047B14E803696F82D50DFF84F -:1043B000BC9206EB850090F8264034E009EB8517A7 -:1043C0004FF0070817F81400012806D004282ED053 -:1043D00005282ED0062800D0FFDF01F000F90146A5 -:1043E00007EB4400427806EB850080F8262090F821 -:1043F0002720A24202D1202280F82720084601F07F -:10440000F9F82A4621460120FFF72CFF9B48414638 -:1044100000EB041002682046904796F82D5006EBFA -:10442000850090F82640202CC8D1BDE8F0870220F6 -:1044300000E003208046D0E710B58C4C202180346A -:1044400084F8251084F8261084F82710002084F8BA -:10445000280084F82D0084F82E10411EA16044F835 -:10446000100B2074607420736073A0738449E0772C -:1044700020750870487000217C4A103C02F8110039 -:10448000491CC9B22029F9D30120EEF7C6FA002051 -:10449000EEF7C3FA012084F82200EEF709FD79480F -:1044A000EEF71BFD764CA41E20707748EEF715FD45 -:1044B0006070BDE81040EEF73DBA10B5EEF75FFA58 -:1044C0006F4CA41E2078EEF721FD6078EEF71EFDFC -:1044D000BDE8104001F0BBB8202070472DE9F34F34 -:1044E000624C0025803404EB810A89B09AF82500DB -:1044F000202821D0691E02916049009501EB001728 -:10450000391D03AB07C983E80700A18BADF81C1068 -:10451000A07F8DF81E009DF81500A046C8B10226A8 -:10452000554951F820400399A219114421F07F41C7 -:10453000019184B102210FE00120EEF76EFA002014 -:10454000EEF76BFAEEF739FA01F081F884F82F50A4 -:10455000A7E00426E4E700218DF81810022801D016 -:10456000012820D1039801190998081A801C9DF888 -:104570001C1020F07F4001B10221353181420BD265 -:1045800003208DF815000398C4F13201401A20F081 -:104590007F40322403900CE098F8240018B901F011 -:1045A000F0F900284DD0322C03D214B101F043F8B9 -:1045B00001E001F04CF8324A107820B3934652786B -:1045C000039B121B00219DF81840994601281BD01F -:1045D000032819D05FF000008DF81E00002A04DDCA -:1045E000981A039001208DF818009DF81C0000B166 -:1045F00002210398254A20F07F40039003AB0998DD -:1046000001F031F810B110E00120E5E79DF81D0040 -:1046100018B99BF80000032812D08DF81C50CDF873 -:104620000C908DF818408DF81E509DF8180058B168 -:1046300003980123811900221846EEF741FA06E09B -:1046400000200BB0BDE8F08F0120EEF7E6F997F9F6 -:104650000C20012300200199EEF732FAF87BC00705 -:1046600001D0EEF716FB012112E000004C0A0020F9 -:10467000FF7F841E0020A1076C5102004C0800201F -:104680009E0000203B5E0100A3430100FFFF3F00AE -:1046900088F82F108AF8285020226946F74810F031 -:1046A00076FA0120CDE72DE9F05FDFF8D0830646EA -:1046B00008EB860090F82550202D1FD0A8F180002F -:1046C0002C4600EB8617A0F50079DFF8B4B305E0BF -:1046D000A24607EB4A004478202C0AD0EEF73BFABA -:1046E00009EB04135A4601211B1D00F0BCFF0028F2 -:1046F000EED0AC4202D0334652461EE0E14808B14B -:10470000AFF30080EEF727FA98F82F206AB1D8F8B7 -:104710000C20411C891A0902CA1701EB1261091207 -:10472000002902DD0020BDE8F09F3146FFF7D6FEEC -:1047300008B10120F7E733462A4620210420FFF77D -:10474000BFFDEFE72DE9F041CC4C2569EEF703FA08 -:10475000401B0002C11700EB1160001200D4FFDF04 -:1047600094F8220000B1FFDF012784F8227094F84A -:104770002E00202800D1FFDF94F82E60202084F83E -:104780002E00002584F82F5084F8205084F8215002 -:10479000BD4825600078022833D0032831D000209E -:1047A0002077A068401C05D04FF0FF30A0600120AA -:1047B000EEF733F90020EEF730F9EEF72CFAEEF7CA -:1047C00024FAEEF7FAF80FF00BFCB048056005602C -:1047D0004FF0E0214FF40040B846C1F88002EEF7F8 -:1047E000C6FA94F82D703846FFF75DFF0028FAD01E -:1047F000A248803800EB871010F81600022802D07B -:1048000006E00120CCE73A4631460620FFF72AFDB4 -:1048100084F8238004EB870090F82600202804D039 -:104820009948801E4078EEF777FB207F002803D060 -:10483000EEF7E1F92577657740E5904910B591F8F5 -:104840002D200024803901EB821100BF11F81430B3 -:104850002BB1641CE4B2202CF8D3202010BD8C496D -:1048600001EB041108600020C87321460120FFF706 -:10487000F9FC204610BD10B5012801D0032800D155 -:1048800071B37E4A92F82D307C4C0022803C04EBC0 -:10489000831300BF13F812400CB1082010BD521C46 -:1048A000D2B2202AF6D3784A48B1022807D0072985 -:1048B00016D2DFE801F01506080A0C0E10000021E0 -:1048C0000AE01B2108E03A2106E0582104E07721A4 -:1048D00002E0962100E0B52151701070002010BD5B -:1048E000072010BD684810B54078EEF7A6F980B2F1 -:1048F00010BD10B5202811D2604991F82D30A1F1DA -:10490000800202EB831414F810303BB191F82D3083 -:1049100002EB831212F81020012A01D0002010BDF2 -:1049200091F82D2001460020FFF79CFC012010BDCE -:1049300010B5EEF710F9BDE81040EEF77EB92DE99D -:10494000F0410E464D4F01782025803F0C4607EB85 -:10495000831303E0254603EB45046478944202D0B8 -:10496000202CF7D108E0202C06D0A14206D103EB81 -:1049700041014978017007E000209FE403EB440007 -:1049800003EB450140784870424F7EB127B10021CA -:1049900040F2DD30AFF300803078A04206D127B17D -:1049A00000214FF47870AFF30080357027B10021FB -:1049B00040F2E530AFF3008001207FE410B542689B -:1049C0000B689A1A1202D41702EB1462121216D450 -:1049D000497A91B1427A82B92F4A006852F821107F -:1049E000126819441044001D891C081A0002C117DE -:1049F00000EB11600012322801DB012010BD002005 -:104A000010BD2DE9F04781461C48214E00EB810086 -:104A1000984690F825402020107006F50070154645 -:104A200000EB81170BE000BF06EB04104946001DA8 -:104A3000FFF7C4FF28B107EB44002C704478202C0A -:104A4000F2D1297888F8001013E000BF06EB0415B6 -:104A5000291D4846FFF7B2FF68B988F80040A97BD6 -:104A600099F80A00814201D80020DEE407EB4400F7 -:104A70004478202CEAD10120D7E40000CC0A0020A1 -:104A8000FFFF3F00000000009E00002000F50040F6 -:104A90004C080020000000006C5102002DE9FC4190 -:104AA0000E4607460024FE4D09E000BF9DF80000B9 -:104AB00005EB00108168384600F0E9FD01246B46E3 -:104AC00001AA31463846FFF79CFF0028EED0204669 -:104AD000BDE8FC8170B50446F2480125A54300EB12 -:104AE000841100EB8510402210F00CF8EE4E26B138 -:104AF000002140F25F40AFF30080EA48803000EBD5 -:104B0000850100EB8400D0F82500C1F8250026B10E -:104B1000002140F26340AFF30080284670BD2DE9CC -:104B2000FC418446DF481546089C00EB85170E467D -:104B300017F81400012803D0022801D00020C7E78D -:104B40000B46DA4A0121604600F08DFDA8B101ABA9 -:104B50006A4629463046FFF754FF70B1D1489DF8A8 -:104B600004209DF80010803000EB85068A4208D0B2 -:104B70002B460520FFF7A4FB0BE02A462146042024 -:104B800014E0202903D007EB4100407801E096F8BB -:104B9000250007EB440148709DF80000202809D04B -:104BA00007EB400044702A4621460320FFF75AFBDA -:104BB00001208DE706F8254F0120F070F3E7B84992 -:104BC00001EB0010001DFFF7D6BB7CB51D46134658 -:104BD00004460E4600F1080221461846EEF73AF860 -:104BE00094F908000F2804DD1F3820722068401C4B -:104BF000206096B10220AE4951F826104618206870 -:104C00006946801B20F07F40206094F9080028440A -:104C1000C01C1F2803DA012009E00420EBE701AAE9 -:104C2000EEF718F89DF8040010B10098401C0090B1 -:104C30000099206831440844C01C20F07F40606027 -:104C40007CBD2DE9FE430C460646097860799072DA -:104C5000207998461546507241B19248803090F8BC -:104C60002E1020290AD00069401D0BE0D4E9022350 -:104C7000217903B02846BDE8F043A6E78D48417886 -:104C8000701D084420F07F47217900222846A36840 -:104C9000FFF79BFF3946284600F0F9FCD4E90232C1 -:104CA00021796846FFF791FF41462846019CFFF7AE -:104CB000F5FE2B4622460021304600F0D4FC0028A9 -:104CC00003D13146284600F0E2FCBDE8FE832DE921 -:104CD000FE4F814600F097FC30B1002799F80000A4 -:104CE00020B10020BDE8FE8F0127F7E76D4D6E4C27 -:104CF0004FF0000A803524B1002140F2D640AFF3D6 -:104D0000008095F82D8085F823A0002624B100218D -:104D100040F2DB40AFF300801FB94046FFF7DAFEF8 -:104D2000804624B1002140F2E340AFF30080EDF76C -:104D300012FF43466A464946FFF783FF24B100212C -:104D400040F2E940AFF3008095F82E0020280CD007 -:104D500029690098401A0002C21700EB1260001285 -:104D600003D5684600F093FC012624B1002140F2EF -:104D7000F340AFF3008095F823000028BBD124B1A5 -:104D8000002140F2F940AFF30080EDF7E4FE6B46FE -:104D9000464A002100F067FC0028A3D027B941460D -:104DA0006846FFF77BFE064326B16846FFF7E3FA45 -:104DB000C9F8080024B1002140F20C50AFF3008084 -:104DC00001208FE72DE9FF5F8A46814600F01BFC3A -:104DD000344C803410B39AF80000002710B1012839 -:104DE00000D0FFDF304D25B1002140F28250AFF3FB -:104DF00000800120A84600905FEA080604D0002148 -:104E000040F28A50AFF30080009800F0F3FB94F872 -:104E10002D50002084F8230067B119E094F82E008B -:104E20000127202800D1FFDF9AF800000028D9D000 -:104E3000FFDFD7E72846FFF74DFE054626B10021E4 -:104E400040F29450AFF3008094F823000028D3D1AF -:104E500026B1002140F29E50AFF30080EDF77BFEBB -:104E600083462B4601AA5146FFF7EBFE5FEA060890 -:104E700004D0002140F2A550AFF300803B462A4603 -:104E800001A95846CDF80090FFF749FE064604EB0D -:104E9000850090F828B0B8F1000F11D000210BE088 -:104EA0004C0800204C0A002000000000FFFF3F00DB -:104EB0006C5102009E00002040F2AC50AFF3008025 -:104EC00000F08DFB0090B8F1000F04D0002140F2FB -:104ED000B250AFF3008094F8230000288CD1B8F1D1 -:104EE000000F04D0002140F2BA50AFF30080FE4919 -:104EF0000DF1040C01EB09109CE80E0000F1040018 -:104F000080E80E004EB35FEA080604D0002140F2AC -:104F1000C750AFF300803BEA070012D094F82E0090 -:104F200020280ED126B1002140F2CC50AFF30080F2 -:104F30002846FFF7B8FB20B99AF80000D8B301283B -:104F400049D0B8F1000F04D0002140F2E950AFF38E -:104F50000080284600F03CFB01265FEA080504D0EB -:104F6000002140F2F250AFF30080009800F042FBC5 -:104F700025B1002140F2F650AFF300808EB194F8D5 -:104F80002D0004EB800090F82600202809D025B1E0 -:104F9000002140F2FD50AFF30080D4484078EDF797 -:104FA000BBFF25B1002140F20260AFF3008004B0E6 -:104FB0003046BDE8F09FFFE7B8F1000F04D00021B4 -:104FC00040F2D450AFF3008094F82D2049460420DD -:104FD000FFF748F9C0E7002E3FF40EAF002140F282 -:104FE000DF50AFF3008007E72DE9F84FC04D814651 -:104FF00095F82D004FF00008BE4C4FF0010B4746CE -:1050000024B100214FF4C260AFF30080584600F095 -:10501000F1FA85F8237024B1002140F21560AFF356 -:10502000008095F82D00FFF755FD064695F8230002 -:1050300028B1002CE4D0002140F21B604BE024B1E9 -:10504000002140F21F60AFF30080A948803800EBD8 -:10505000861111F81900032856D1334605EB830A4F -:105060004A469AF82500904201D1012000E0002034 -:1050700000900AF125000021FFF761FC014600982D -:10508000014203D001228AF82820AF77E1B324B18E -:10509000002140F22460AFF30080324649460120EF -:1050A000FFF7E0F89AF828A024B1002140F22F6021 -:1050B000AFF3008000F093FA834624B1002140F260 -:1050C0003460AFF3008095F8230038B1002C97D0FE -:1050D00000214FF4C760AFF3008091E7BAF1000FF1 -:1050E00007D095F82E00202803D13046FFF7DBFAD1 -:1050F000E0B124B1002140F24C60AFF300803046B3 -:1051000000F066FA4FF0010824B1002140F255602A -:10511000AFF30080584600F06DFA24B1002140F250 -:105120005960AFF300804046BDE8F88F002CF1D005 -:10513000002140F24760AFF30080E6E70020EDF782 -:1051400045BC0120EDF742BC6848007870472DE966 -:10515000F041674C94F82E0020281FD194F82D6060 -:1051600004EB860797F82550202D00D1FFDF60491A -:10517000803901EB861000EB4500407807F8250FD9 -:105180000120F87084F82300294684F82E50324616 -:1051900002202234FFF766F8002020700DE42DE98C -:1051A000F041514E524C012538B1012821D002283E -:1051B00079D003287DD0FFDFF0E700F03CFAFFF75D -:1051C000C6FF207E00B1FFDF84F821500020EDF7FC -:1051D00024FCA168481C04D0012300221846EDF7E6 -:1051E0006FFC14F82E0F217806EB01110A680121DB -:1051F00054E0FFF7ACFF0120EDF70FFC94F821001D -:1052000050B1A068401C07D014F82E0F217806EB8F -:1052100001110A68062141E0207EDFF8D0800027D6 -:1052200008F10208012803D002281ED0FFDFB5E7ED -:10523000A777EDF7E0FC98F80000032801D1657727 -:105240002577607D2C4951F8200094F8201051B941 -:1052500048B161680123091A00221846EDF730FCB5 -:10526000022020769AE7277698E784F8205000F00D -:10527000E2F9A07F50B198F8010061680123091A92 -:1052800000221846EDF71CFC257600E0277614F87E -:105290002E0F217806EB01110A680021BDE8F041CC -:1052A000104700E005E011480078BDE8F041EDF757 -:1052B00033BEFFF74CFF14F82E0F217806EB0111D7 -:1052C0000A680521EAE710B5094C94F82E00202859 -:1052D00000D1FFDF14F82E0F2178034A02EB0111F1 -:1052E0000A6804210AE000004C0800209C0000200D -:1052F000CC0A0020000000006C510200BDE8104004 -:1053000010477CB5E74C054694F82E00202800D1C4 -:10531000FFDFA068401C00D0FFDF94F82E00E249B8 -:1053200001AA01EB0010694690F90C002844EDF742 -:1053300091FC9DF904000F2801DD012000E0002010 -:10534000009908446168084420F07F41A16094F806 -:105350002100002807D002B00123BDE870400022E0 -:105360001846EDF7ADBB7CBD30B5D04A0B1A541CC6 -:10537000B3EB940F12D3451AB5EB940F0ED39342AF -:1053800003D9101A43185B1C08E0954204D9511A3E -:105390000844401C434201E0FFDF0023184630BDB3 -:1053A0000123002201460220EDF78ABB0220EDF71F -:1053B00034BBEDF7D0BB2DE9FC47BA4C054694F859 -:1053C0002E00202800D1FFDF642D58D3B84A0021D9 -:1053D000521B71EB010052D394F82E20A0462046B8 -:1053E000DFF8C49290F82D7009EB0214D8F8000091 -:1053F00001AA28446946EDF72DFC9DF90400002818 -:1054000002DD0098401C0090A06800996268461870 -:10541000B21A22F07F42B2F5800F30D208EB870239 -:10542000444692F82520202A0AD009EB021252683D -:10543000101A0002C21700EB1260001288421EDB35 -:10544000A068401C10D0EDF786FBA168081A000286 -:10545000C11700EB11600012022810DD0120EDF7EA -:10546000DCFA4FF0FF30A06020682844206026F06E -:105470007F402061012084F82300BDE8FC870020E4 -:10548000FBE72DE9F047874C074694F82D00A4F17F -:10549000800606EB801010F8170000B9FFDF94F8C3 -:1054A0002D50A046834C24B1002140F66D00AFF38F -:1054B000008040F6790940F6820A06EB851600BFA7 -:1054C00016F81700012818D0042810D005280ED08F -:1054D00006280CD01CB100214846AFF3008020BF45 -:1054E000002CEDD000215046AFF30080E8E72A46BB -:1054F00039460120FEF7B6FEF2E74FF0010A4FF001 -:105500000009454624B1002140F68900AFF3008030 -:10551000504600F06FF885F8239024B1002140F642 -:105520008E00AFF3008095F82D00FFF7D3FA064602 -:1055300095F8230028B1002CE4D0002140F6940017 -:105540001FE024B1002140F69800AFF3008005EB86 -:10555000860000F1270133463A462630FFF7EFF97F -:1055600024B1002140F69C00AFF3008000F037F832 -:10557000824695F8230038B1002CC3D0002140F6B4 -:10558000A200AFF30080BDE785F82D60012085F80B -:105590002300504600F02EF8002C04D0002140F6E5 -:1055A000AF00AFF30080BDE8F08730B504463D485A -:1055B0000D4690F82D003B49803901EB801010F822 -:1055C000140000B9FFDF384800EB0410C57330BD8C -:1055D000344981F82D00012081F82300704710B56F -:1055E000354808B1AFF30080EFF3108000F0010000 -:1055F00072B610BD10B5002804D1304808B1AFF321 -:10560000008062B610BD2E480068C005C00D10D0E5 -:10561000103840B2002804DB00F1E02090F80004CC -:1056200005E000F00F0000F1E02090F8140D4009B3 -:1056300070470820704710B51A4C94F824000028D1 -:1056400004D1F6F7F1F9012084F8240010BD10B55B -:10565000144C94F82400002804D0F6F70EFA002029 -:1056600084F8240010BD10B51C685B68241A181A51 -:1056700024F07F4420F07F40A14206D8B4F5800F8B -:1056800003D2904201D8012010BD002010BDD0E906 -:105690000032D21A21F07F43114421F07F41C0E94A -:1056A00000317047CC0A00204C080020FF7F841E88 -:1056B000FF1FA10700000000000000000000000024 -:1056C00004ED00E02DE9F041044680074FF00005AD -:1056D0004FF001060CD56B48056006600EF009FB23 -:1056E00020B16948016841F48061016024F002043E -:1056F000E0044FF0FF3705D564484660C0F80873F2 -:1057000024F48054600003D56148056024F080448F -:10571000E0050FD55F48C0F80052C0F808735E4935 -:105720000D60091D0D605C4A04210C321160066198 -:1057300024F48074A00409D558484660C0F800528B -:10574000C0F808735648056024F40054C4F3803050 -:10575000C4F3C031884200D0FFDF14F4404F14D0AE -:1057600050484660C0F808734F488660C0F8005241 -:10577000C0F808734D490D600A1D16608660C0F8B8 -:1057800008730D60166024F4404420050AD548488B -:1057900046608660C0F80873C0F8487345480560E5 -:1057A00024F400640EF0F6FB4348044200D0FFDF0F -:1057B000BDE8F081F0B50022202501234FEA020464 -:1057C00020FA02F1C9072DD051B2002910DB00BF29 -:1057D0004FEA51174FEA870701F01F0607F1E0274C -:1057E00003FA06F6C7F88061BFF34F8FBFF36F8FE0 -:1057F0000CDB00BF4FEA51174FEA870701F01F0685 -:1058000007F1E02703FA06F6C7F8806204DB01F12E -:10581000E02181F8004405E001F00F0101F1E021F1 -:1058200081F8144D02F10102AA42C9D3F0BD10B5AE -:10583000224C20600846F6F70EFA2068FFF742FF78 -:105840002068FFF7B7FF0DF0E9FF00F01AF90EF03E -:10585000A1FB0EF0ECFAEDF72BFBBDE810400EF0CB -:105860008DB810B5154C2068FFF72CFF2068FFF7A6 -:10587000A1FF0EF08FFBF6F7AFFA0020206010BDFD -:105880000A207047FC1F00403C17004000C0004049 -:1058900004E50140008000400485004000D0004045 -:1058A00004D5004000E0004000F0004000F500405A -:1058B00000B0004008B50040FEFF0FFDA000002032 -:1058C00070B526490A680AB30022154601244B68C0 -:1058D0005B1C4B60092B00D34D600E7904FA06F374 -:1058E0000E681E420FD0EFF3108212F0010272B662 -:1058F00000D001220C689C430C6002B962B6496872 -:105900000160002070BD521C092AE0D3052070BD43 -:105910004FF0E0214FF48000C1F800027047EFF330 -:10592000108111F0010F72B64FF0010202FA00F27D -:105930000A48036842EA0302026000D162B6E7E760 -:105940000648002101604160704701218140034801 -:105950000068084000D0012070470000A40000202B -:1059600001208107086070470121880741600021FC -:10597000C0F80011184801707047174901200870DD -:1059800070474FF08040D0F80001012803D0124842 -:105990000078002800D00120704710480068C00738 -:1059A00000D0012070470D480C300068C00700D0BF -:1059B00001207047094814300068704707491031CA -:1059C0000A68D20306D5096801F00301814201D1BA -:1059D0000120704700207047AC0000200804004000 -:1059E000002101700846704701460020087070478A -:1059F000EFF3108101F0010172B60278012A01D0A3 -:105A0000012200E000220123037001B962B60AB14D -:105A1000002070474FF400507047E9E7EFF3108122 -:105A200011F0010F72B64FF00002027000D162B6A1 -:105A300000207047F2E700002DE9F04115460E46C0 -:105A40000446002700F0E7F8A84215D300234120C0 -:105A50000FE000BF94F84220A25CF25494F8421088 -:105A6000491CB1FBF0F200FB12115B1C84F84210E0 -:105A7000DBB2AB42EED3012700F0D9F83846BDE8DF -:105A8000F081704910B5802081F800046E49002033 -:105A900081F8420081F84100433181F8420081F8E9 -:105AA0004100433181F8420081F841006748FFF727 -:105AB00097FF6648401CFFF793FFEDF767F9BDE8D5 -:105AC000104000F0B4B8402070475F4800F0A3B821 -:105AD0000A4601465C48AFE7402070475A484330C9 -:105AE00000F099B80A46014657484330A4E74021E0 -:105AF00001700020704710B504465348863000F00E -:105B00008AF82070002010BD0A4601464E4810B5A4 -:105B10008630FFF791FF08B1002010BD42F2070068 -:105B200010BD70B50C460546412900D9FFDF484835 -:105B30000068103840B200F050F8C6B20D2000F0F6 -:105B40004CF8C0B2864203D2FFDF01E0EDF76EF9F8 -:105B5000224629463C48FFF76FFF0028F6D070BD6B -:105B60002DE9F041394F002506463F1D57F82540E5 -:105B7000204600F041F810B36D1CEDB2032DF5D3B3 -:105B80003148433000F038F8002825D02E4800F086 -:105B900033F8002820D02C48863000F02DF800285B -:105BA0001AD0EDF719F92948FFF722FFB0F5005F89 -:105BB00000D0FFDFBDE8F0412448FFF72FBF94F885 -:105BC00041004121265414F8410F401CB0FBF1F272 -:105BD00001FB12002070D3E751E7002804DB00F13D -:105BE000E02090F8000405E000F00F0000F1E02054 -:105BF00090F8140D4009704710F8411F4122491CCC -:105C0000B1FBF2F302FB13114078814201D1012074 -:105C100070470020704710F8411F4078814201D33F -:105C2000081A02E0C0F141000844C0B2704710B544 -:105C30000648FFF7DDFE002803D1BDE81040EDF770 -:105C4000B6B810BD0DE000E0FC0A0020B000002056 -:105C500004ED00E070B5154D2878401CC4B268789A -:105C6000844202D0F6F75DF92C7070BD2DE9F04149 -:105C70000E4C4FF0E02600BFF6F748F920BF40BFBA -:105C800020BF677820786070D6F80052EBF7B8FB39 -:105C9000854305D1D6F8040210B92078B842EBD07C -:105CA000F6F72FF90020BDE8F0810000C0000020C9 -:105CB0002DE9F041012528034FF0E0210026C1F82D -:105CC0008001BFF34F8FBFF36F8F1F4CC4F800618B -:105CD0000C2000F02CF81D4801680268C94341F30C -:105CE000001142F010020260C4F804532560491C00 -:105CF00000E020BFD4F80021002AFAD019B90168C9 -:105D000021F010010160124807686560C4F808536B -:105D1000C4F800610C2000F00AF83846BDE8F081B4 -:105D200010B50446FFF7C4FF2060002010BD002816 -:105D300009DB00F01F02012191404009800000F1C1 -:105D4000E020C0F88012704700C0004010ED00E075 -:105D500008C500402DE9F047FF4C0646FF21A0682A -:105D600000EB061211702178FF2910D04FF00809BE -:105D700009EB011109EB06174158C05900F0F4F97D -:105D8000002807DDA168207801EB06110870267055 -:105D9000BDE8F08794F8008045460DE0A06809EB67 -:105DA00005114158C05900F0DFF9002806DCA06851 -:105DB000A84600EB08100578FF2DEFD1A06800EB96 -:105DC000061100EB08100D700670E1E7F0B5E24B2C -:105DD0000446002001259A680C269B780CE000BF41 -:105DE00005EB0017D75DA74204D106EB0017D75982 -:105DF0008F4204D0401CC0B28342F1D8FF20F0BDD6 -:105E000070B5FFF7D6FAD44C08252278A16805EBC7 -:105E10000212895800F0A8F9012808DD2178A0684D -:105E200005EB01114058BDE87040FFF7B9BAFFF724 -:105E30008BF9BDE87040EDF76FB82DE9F041C64C25 -:105E40002578FFF7B6FAFF2D6ED04FF00808A2684C -:105E500008EB0516915900F087F90228A06801DDCA -:105E600080595DE000EB051109782170022101EBFA -:105E70000511425C5AB1521E4254815901F580010C -:105E800021F07F4181512846FFF764FF34E004236D -:105E9000012203EB051302EB051250F803C0875CE7 -:105EA000BCF1000F10D0BCF5007F10D9CCF3080274 -:105EB00050F806C00CEB423C2CF07F4C40F806C07A -:105EC000C3589A1A520A09E0FF2181540AE0825904 -:105ED00002EB4C3222F07F4282510022425428468B -:105EE000FFF738FF0C21A06801EB05114158E0686D -:105EF00050F82720384690472078FF2814D0FFF725 -:105F000058FA2278A16808EB02124546895800F039 -:105F10002BF9012893DD2178A06805EB0111405889 -:105F2000BDE8F041FFF73CBABDE8F081F0B51D4691 -:105F300014460E460746FF2B00D3FFDFA00700D014 -:105F4000FFDF8548FF210022C0E90247C5700671C6 -:105F50000170427082701046012204E002EB0013CF -:105F6000401CE154C0B2A842F8D3F0BD70B57A4CE1 -:105F7000064665782079854200D3FFDFE06840F867 -:105F800025606078401C6070284670BD2DE9FF5F79 -:105F90001D468B460746FF24FFF70BFADFF8B89142 -:105FA000064699F80100B84200D8FFDF00214FF003 -:105FB00001084FF00C0A99F80220D9F808000EE009 -:105FC00008EB0113C35CFF2B0ED0BB4205D10AEBDB -:105FD000011350F803C0DC450CD0491CC9B28A42F9 -:105FE000EED8FF2C02D00DE00C46F6E799F803102E -:105FF0008A4203D1FF2004B0BDE8F09F1446521C32 -:1060000089F8022008EB04110AEB0412475440F807 -:1060100002B00421029B0022012B01EB04110CD0E1 -:1060200040F801204FF4007808234FF0020C45455A -:1060300013D9E905C90D02D002E04550F2E7414607 -:1060400006EB413203EB041322F07F42C250691A7F -:106050000CEB0412490A81540BE005B9012506EB4B -:10606000453103EB041321F07F41C1500CEB0411C7 -:10607000425499F800502046FFF76CFE99F8000052 -:10608000A84201D0FFF7BCFE3846B4E770B50C4615 -:106090000546FFF78EF9064621462846FFF796FE8D -:1060A0000446FF281AD02C4D082101EB0411A868E2 -:1060B0004158304600F058F800F58050C11700EB09 -:1060C000D14040130221AA6801EB0411515C09B1CF -:1060D00000EB4120002800DC012070BD002070BDD5 -:1060E0002DE9F04788468146FFF770FE0746FF28F6 -:1060F0001BD0194D2E78A8683146344605E0BC42C5 -:1061000006D0264600EB06121478FF2CF7D10CE0DF -:10611000FF2C0AD0A6420CD100EB011000782870A9 -:10612000FF2804D0FFF76CFE03E0002030E6FFF705 -:106130003DF941464846FFF7A9FF0123A9680246F9 -:1061400003EB0413FF20C854A878401EB84200D1C6 -:10615000A87001EB041001E0C80B002001EB061150 -:1061600000780870104613E6081A0002C11700EB09 -:1061700011600012704700005E48002101704170FC -:1061800010218170704770B5054616460C460220F6 -:10619000ECF79EFB5749012008705749F01E086034 -:1061A00056480560001F046070BD10B50220ECF772 -:1061B0008FFB50490120087051480021C0F80011A0 -:1061C000C0F80411C0F808114E494FF400000860EF -:1061D00010BD48480178D9B14B4A4FF40001116015 -:1061E0004749D1F800310022002B1CBFD1F80431FF -:1061F000002B02D0D1F8081119B142704FF01001F4 -:1062000004E04FF00101417040490968817002705B -:106210004FF00000ECF75CBB10B50220ECF758FB28 -:1062200034480122002102703548C0F80011C0F83E -:106230000411C0F80811026010BD2E480178002931 -:1062400004BF407870472E48D0F80011002904BFE1 -:1062500002207047D0F8001100291CBFD0F80411AB -:10626000002905D0D0F80801002804BF012070479C -:10627000002070471F4800B50278214B4078C821A4 -:10628000491EC9B282B1D3F800C1BCF1000F10D0D1 -:10629000D3F8000100281CBFD3F8040100280BD05C -:1062A000D3F8080150B107E0022802D0012805D038 -:1062B00002E00029E4D1FFDF002000BD012000BD85 -:1062C0000C480178002904BF807870470C48D0F84A -:1062D000001100291CBFD0F80411002902D0D0F809 -:1062E000080110B14FF01000704708480068C0B2B4 -:1062F00070470000C200002010F5004008F5004083 -:1063000000F0004004F5014008F5014000F40040B1 -:106310004C48002101704170704770B50646144624 -:106320000D460120ECF7D4FA47480660001D0460D2 -:10633000001D056070BD70B5424901250D7040EA31 -:106340000241424A41F080711160414C0026C4F87C -:106350000461404A4FF040711160002802BFC4F848 -:106360000052256070BD012818BFFFDFC4F800622D -:1063700025604FF000703849086070BD31480178E1 -:1063800079B1344A4FF0407111603149D1F804219C -:106390000021002A08BF417002D0304A12684270C2 -:1063A00001700020ECF794BA26480178002904BF58 -:1063B000407870472648D0F80401002808BF70478D -:1063C00026480068C0B27047002808BF704730B543 -:1063D0001C480078002808BFFFDF1D48D0F80411D2 -:1063E000002918BF30BD0224C0F80443DFF870C094 -:1063F000DCF80010C1F30015DCF8001041F01001CA -:10640000CCF80010D0F80411002904BF4FF400416B -:106410004FF0E02207D100BFC2F8801220BFD0F8B1 -:106420000431002BF8D02DB9DCF8001021F0100158 -:10643000CCF80010C0F8084330BD05490120886041 -:1064400070470000C500002008F5004004F500403A -:1064500000F0004008F5014004F5014000F4004060 -:1064600010ED00E010B5FA480024012144700470DA -:1064700044728472C17280F82540C462846318300B -:106480000EF0F0FCF349601E0860091D0860091D4C -:106490000C60091D0860091D0C60091D0860091DBC -:1064A0000860091D0860091D0860091D0860091DB4 -:1064B0000860091D0860091D0860091D086010BDFD -:1064C000E548016801F00F01032904BF012070476E -:1064D000006800F00F00042804BF0220704700B5D8 -:1064E000FFDF012000BD10B5D94C0168A1614168F2 -:1064F000E161007A84F82000207E48B1207FF7F720 -:106500006DFEA07E011C18BF0121207FF7F75AFE07 -:10651000607E002808BF10BD607FF7F75FFEE07E59 -:10652000011C18BF0121607FBDE81040F7F74ABE8B -:1065300030B500250446012904D002290CBF4FF0D4 -:106540008075FFDF45F4847040F48010C349086013 -:1065500044F44030091D40F00070086030BD30B593 -:1065600000250446012904D002290CBF4FF0807594 -:10657000FFDF45F4847040F48010B849086044F4AB -:106580004030091D40F000700860B548D0F80001A7 -:10659000002818BFFFDF30BD2DE9F04102254FF084 -:1065A000E02801240026C8F88051BFF34F8FBFF3C5 -:1065B0006F8FAC48066004600DF09BFBAA4F18B1CA -:1065C000386840F4806038600DF069FB38B1386895 -:1065D00020F0770040F0880040F0004038600DF077 -:1065E00076FB30B1A148016821F47F4141F4B051FC -:1065F0000160A0499E4808600DF069FB944948B1CC -:106600009D4881F8215005609D4A9C481060121FEA -:106610009C4810609C4A40F25B601060121F40F280 -:1066200003101060101F04608B4A0320106097480D -:10663000046091F82120002A14BF4FF4C022944A2C -:1066400042F44022934B1A60944B934A1A601B1FEA -:10665000934A1A60026822F440720260026842F4AF -:1066600080720260C8F880527D4A1020C2F804038C -:1066700081F83160CE62BDE8F0818A48016821F07E -:10668000010141F0807101607047714A0368C2F8EE -:1066900002308088D080117270476D4B10B51A7A25 -:1066A0008A4208D101460622981C0EF0FFF9002804 -:1066B00004BF012010BD002010BD654890F82500E2 -:1066C0007047634A517010707047F0B505468000FE -:1066D00000F1804000F580508B88C0F820360B78A0 -:1066E000D1F8011043EA0121C0F8001605F10800B5 -:1066F000012707FA00F66C4C002A04BF2068B0435B -:1067000004D0012A18BFFFDF2068304320602068D2 -:1067100007FA05F108432060F0BD0DF091BD4C482B -:1067200090F832007047614AC17811600068604992 -:10673000000208607047252808BF02210ED02628D5 -:1067400008BF1A210AD0272808BF502106D00A28DE -:1067500094BF0422062202EB4001C9B2554A1160DF -:106760005549086070472DE9F0413D4E80460320B1 -:106770000D46C6F80002364F97F82100002814BFD6 -:106780004FF4C02042484D49086028460DF086FD70 -:106790000124B8F1000F03D0B8F1010F16D018E0B2 -:1067A0000DF095FA78B1464A11685006022DD0F8DE -:1067B00020030CBFC0F30660C0F3062021F4FE41A5 -:1067C00041EA00201060BC72346002E00220B8721E -:1067D00074603C48C4643C4800682946BDE8F04108 -:1067E00000F09DBD2DE9F0410D461D4907460320EF -:1067F000C1F80002164C94F82100002814BF4FF491 -:10680000C02023482D4E306028460DF047FD17B1BB -:10681000012F5BD063E00DF05AFA78B128490A687D -:106820004806022DD0F820030CBFC0F30660C0F369 -:10683000062022F4FE4242EA002008600120A072F5 -:10684000A06B40F48010A0634FF4801046E000007D -:10685000D80B0020000E0040101500401415004019 -:1068600000100040FC1F00403C1700404017004053 -:106870002C000089781700406015004044800040DB -:106880009CF501402811004038150040501600408A -:106890000000040408F5014040800040A4F50140D8 -:1068A00010110040741700404016004024150040AD -:1068B0001C150040081500405415004004F5014027 -:1068C00088150040008000404C8500400220A072E6 -:1068D000A06B40F40010A0634FF400103060ECF7A0 -:1068E000D5F92946BDE8F04100F019BD2DE9F74F73 -:1068F000FB4C804682B003200E46C4F80002F94DDE -:1069000095F82100002814BF4FF4C020F648F74F37 -:10691000386004980DF0C2FCDFF8D4A34FF00109F1 -:10692000B8F1000F48D0B8F1010F18BFFFDF5CD0FD -:10693000F0480660F149F0480860A86B40F4002078 -:10694000A863D4F800824FF0100AC4F808A3002509 -:10695000C4F80052EA484FF4802BC0F800B0C4F8E5 -:106960000051C4F80C51C4F81051C4F80451C4F8D3 -:106970001451C4F818510DF0AAF9002818BFC4F832 -:106980002851E04800680090C4F80082C7F800B0C1 -:10699000C4F804A34FF400203860DB48C0F84C90E2 -:1069A000DA480068B04228BFFFDF3046049905B0DE -:1069B000BDE8F04F00F0B3BC0DF089F980B1D44AC6 -:1069C0000498116853060228D3F820030CBFC0F3C3 -:1069D0000660C0F3062021F4FE4141EA0020106069 -:1069E000CAF8004085F80A90A2E7CA48CAF8000031 -:1069F0000220A8729CE72DE9F041BA4C064600251A -:106A000094F8310017468846002808BFFFDF16B10A -:106A1000012E16D021E094F83100012808D094F816 -:106A20003020394640460DF046FCE16A451814E036 -:106A300094F830103A4640460DF07BFCE16A451868 -:106A40000BE094F8310094F8301001283A464046A3 -:106A500009D00DF096FCE16A45183A4629463046C1 -:106A6000BDE8F04142E70DF046FCE16A4518F4E765 -:106A70002DE9F84F9A4CD4F8000220F00B09D4F815 -:106A800004034FF0100AC0F30018C4F808A300264E -:106A9000C4F80062934D95F82100002814BF4FF40C -:106AA000C020914840F4402195480160A97A01270F -:106AB000012902D0022903D015E0297E11B912E084 -:106AC000697E81B1A97FEA7F07FA01F107FA02F234 -:106AD0001143016095F82000800000F1804000F52E -:106AE000C040C0F81065FF208DF80000C4F81061A8 -:106AF000276104E09DF80000401E8DF800009DF81D -:106B0000000018B1D4F810010028F3D09DF800005F -:106B1000002808BFFFDFC4F810610DF0D8F8002886 -:106B200018BFC4F828616E72AE72EF72C4F800929A -:106B3000B8F1000F18BFC4F804A3BDE8F88FFF2018 -:106B400008B58DF8000066480021C0F81011012139 -:106B5000016104E09DF80010491E8DF800109DF8B9 -:106B6000001019B1D0F810110029F3D09DF80000E1 -:106B7000002808BFFFDF08BD0068674920F07F409C -:106B8000086070474FF0E0200221C0F8801100F546 -:106B9000C070BFF34F8FBFF36F8FC0F80011704705 -:106BA0004FF0E0210220C1F8000170475B490870F6 -:106BB00070475B490860704770B50546ECF766F8AA -:106BC000484C2844E16A884298BFFFDF01202074C6 -:106BD000ECF75CF84119616194F8210040B1084478 -:106BE00060613F48D0F8001241F04001C0F8001247 -:106BF00045490020C1F844014A4960690860A06B1A -:106C00003A4940F48000A0634FF48000086070BDF2 -:106C100070B5344C05460220207443480E46016886 -:106C200001F00F01032908BF012207D0006800F01E -:106C30000F0004280EBF0222FFDF012294F831006A -:106C400094F8301001281AD028460DF0E1FB60615D -:106C500094F8210048B16169084460612048D0F887 -:106C6000001241F04001C0F8001227490020C1F88D -:106C700044016169E06A08442A49086070BD3346EE -:106C800028460DF093FBE2E71D494FF480000860B1 -:106C90001448816B21F480018163002101747047E5 -:106CA000C20002F1804202F5F832204BC2F81035E2 -:106CB000C2F81415012181400C4801600948826B1B -:106CC000114381637047104801214160C160002178 -:106CD000C0F84411134801600248C16270470000C7 -:106CE00000100040D80B00200000040404F501400F -:106CF000ACF501404885004048810040A8F50140BE -:106D000008F5014018110040008000404C8500400B -:106D100088150040041000403C150040C7000020CA -:106D20000415004044850040101500400411004047 -:106D300010B504460CF0CBFF00281CBFFC4880F8BF -:106D40002140FC480460FC48D0F8001241F04001AA -:106D5000C0F8001210BDF84810B5D0F8001221F0AC -:106D60004001C0F800120CF0B2FFF249002818BF31 -:106D70000220086010BDF048D0F8001221F0100188 -:106D8000C0F80012012181617047EB480021C0F872 -:106D90001C11D0F8001241F01001C0F80012704729 -:106DA000E54981B0D1F81C21012A1EBF002001B0A5 -:106DB0007047E24A126802F07F02524202700020DD -:106DC000C1F81C01DE4800680090012001B0704746 -:106DD000F0B517460C00064608BFFFDFD44D14F08F -:106DE000010F2F731CBF012CFFDF002E0CBF0120F1 -:106DF00002206872EC7201281CBF0228FFDFF0BD80 -:106E00002DE9F84FDFF83C9399F80000042828BFDB -:106E1000FFDFDFF834A3DAF84C11CC48C44C00266D -:106E20004FF00108D9B1A17A012902D0022903D07B -:106E300015E0217E11B912E0617E81B1A17FE27F70 -:106E400008FA01F108FA02F21143016094F82010E7 -:106E5000890001F1804101F5C041C1F81065BB48CE -:106E6000A16B0160A663217C002019B1DAF84411FE -:106E7000012900D00021A27AAF4F012A6DD0022A49 -:106E800073D000BFD7F8101101290CBF10210021C9 -:106E900041EA0005AE48016811F0FF0F03D0D7F8B2 -:106EA0001411012900D0002184F83210006810F07C -:106EB000FF0F03D0D7F81801012800D0002084F874 -:106EC0003300A448006884F83400FFF7B6F90128BD -:106ED00018BF002084F83500C7F80061C7F80C61BE -:106EE000C7F81061C7F80461C7F81461C7F81861E2 -:106EF0000CF0EDFE002818BFC7F82861964800681E -:106F000000909148C0F8446194480068DFF850A2AE -:106F10000090DAF80000A06294F8211000291CBF4C -:106F2000401AA0628F480068E0628F48016801F053 -:106F30000F01032908BF012007D0006800F00F00EF -:106F400004280EBF0220FFDF012084F83000A07A61 -:106F500084F83100022824D116E0D7F80C0101286A -:106F600014BF002008208DE7FFE7D7F80C010128A7 -:106F700014BF002002207D4A1268012A14BF042297 -:106F80000022104308437DE7607850B178490968D2 -:106F900009780840217831EA000008BF84F824808D -:106FA00001D084F8246015F0020F0AD0EBF76EFED2 -:106FB000A16A704A081A99F80010490852F821107D -:106FC000884715F0010F18BF4FF0000B12D000BF1B -:106FD000EBF75CFEE16A99F80020081A664951F85F -:106FE00022205946904700BF99F8000010F0010F89 -:106FF0002FD10CE015F0020F18BF4FF0010BE7D1B5 -:1070000015F0080F18BF4FF0020BE1D1ECE7DFF8E5 -:1070100060B1DBF80000007800F00F00072828BFFF -:1070200084F8256015D2DBF80000062200F1090182 -:10703000A01C0DF03BFD40B9207ADBF80010097868 -:10704000B0EBD11F08BF012001D04FF0000084F841 -:107050002500E17A4FF0000011F0020F1CBF15F07F -:10706000020F15F0040F19D111F0100F1CBF94F886 -:107070003320002A02D094F835207AB111F0080F9D -:107080001CBF94F82420002A08D111F0040F02D06C -:1070900094F8251011B115F0010F01D04FF0010047 -:1070A000617A19B1A0B1FFF7E3FC17E094F8210071 -:1070B000002814BF4FF4C021304924480160D7F89C -:1070C000000220F00300C7F8000284F80B8005E0FE -:1070D00001290DD0022918BFFFDF12D015F0010FD2 -:1070E0001AD0274899F8001050F82100804760E036 -:1070F000667284F80B8084F80A809621227B002037 -:1071000007E0667284F80B800220A072227B962131 -:107110000120FFF770FCE1E715F0020F34D01949A8 -:1071200099F8002028EA950051F82210884740E09D -:10713000D80B0020601500400010004048150040AA -:107140001C110040C70000200080004008F50140ED -:1071500040160040101400401811004044810040C7 -:107160004485004040850040101500400014004058 -:107170000415004084510200CC51020000000404B8 -:107180008C5102009C51020015F0080F06D0924865 -:1071900099F8001050F8210080470AE015F0100F10 -:1071A00008BFFFDF05D08D4899F8001050F8210086 -:1071B0008047A07A022818BFBDE8F88F207C0028FD -:1071C00008BFBDE8F88F8649C1F84461022815D090 -:1071D000012818BFFFDFE16A6069884298BFFFDFBE -:1071E000D4F81400CAF80000A06B7E4940F4800077 -:1071F000A0634FF480000860BDE8F88F6169E06A21 -:107200000844EFE738B50025774C002818BFC4F8CC -:107210000052C4F80051C4F80C51C4F81051C4F81D -:107220000451C4F81451C4F818510CF050FD002852 -:1072300018BFC4F828516D480068009038BD012877 -:1072400004BF28207047022804BF1820704700B5EB -:10725000FFDF282000BD012804BF41F6A47070475D -:10726000022804BF41F28830704700B5FFDF41F6C5 -:10727000A47000BD10B5022807D001280EBF42F649 -:10728000CE30FFDF41F66A0010BD0CF0FBFC30B9D8 -:107290000CF005FD002808BF41F6583001D041F23E -:1072A000643041F29A01084410BD012812BF02283F -:1072B0000020704700B5FFDF002000BD4A490820CC -:1072C000C1F800024A4890F82100002814BF4FF48A -:1072D000C020484848490860494948480860091D95 -:1072E00048480860091D48480860091D474808606B -:1072F0003C494FF440200860704745480168032925 -:107300001BBF006802280120002070474048016828 -:107310000B291BBF00680A28012000207047344950 -:107320008A7A012A49D0022A18BF70474B7E002B67 -:1073300008BF7047012A44D0CB7E4A7F13F1000C6E -:1073400018BF4FF0010C24231844324B1860244B13 -:107350000020C3F84C0110028CF0010240EA0250F8 -:1073600040F0031291F82000830003F1804303F5FD -:10737000C043C3F81025284A8B7F02EB8000DA0057 -:1073800002F1804202F5F832C2F81405DFF88CC031 -:10739000C2F810C5C97FCA0002F1804202F5F83276 -:1073A000C2F814051E48C2F81005012000FA03F2C5 -:1073B00088400C491043086070470B7E002BB9D100 -:1073C00070478B7E0A7F002B14BF4FF0010C4FF0EB -:1073D000000C1123B8E70000AC510200BC510200C0 -:1073E0000080004004F501400010004018110040EA -:1073F000D80B00200000040408F5014000110040F3 -:10740000A0F50140141000401C1100401010004075 -:10741000501500404C850040006000404C81004009 -:107420001011004010B53F4822210DF0EAFB3D4805 -:107430000024017821F010010170012105F0A6FE61 -:1074400039494FF6FF7081F8224088843749088017 -:10745000488010BD704734498A8C824218BF7047FB -:10746000002081F822004FF6FF70888470472D4974 -:10747000016070472D49088070472B498A8CA2F51E -:107480007F43FF3B03D0002101600846704791F81D -:1074900022202549012A1ABF0160012000207047DF -:1074A000214901F1220091F82220012A04BF002085 -:1074B0007047012202701D4800888884104670477A -:1074C0001A49488070471849184B8A8C5B889A4241 -:1074D00006D191F82220002A1EBF016001207047CA -:1074E000002070471048114A818C5288914209D17E -:1074F0004FF6FF71818410F8221F19B1002101702D -:1075000001207047002070470748084A818C528844 -:10751000914205D190F8220000281CBF002070473E -:10752000012070473A0C0020140C0020C8000020F5 -:107530007047574A012340B1012818BF70471370A4 -:107540000868906088889081704753700868C2F816 -:1075500002008888D08070474D4A10B1012807D0BA -:107560000EE0507860B1D2F802000860D08804E0E4 -:10757000107828B190680860908988800120704751 -:1075800000207047424910B1012803D006E0487836 -:1075900010B903E0087808B1012070470020704757 -:1075A00030B58DB00C4605460D2104A80DF04BFBFF -:1075B000E0788DF81F0020798DF81E0060798DF835 -:1075C0001D002868009068680190A8680290E8682B -:1075D000039068460CF0BCF920789DF82F10884283 -:1075E0000CD160789DF82E10884207D1A0789DF8C4 -:1075F0002D10884202BF01200DB030BD00200DB01B -:1076000030BD30B50C4605468DB04FF0030104F196 -:10761000030012B1FEF766FA01E0FEF782FA607924 -:107620000D2120F0C00040F04000607104A80DF072 -:107630000AFBE0788DF81F0020798DF81E00607934 -:107640008DF81D002868009068680190A868029075 -:10765000E868039068460CF07BF99DF82F002070D5 -:107660009DF82E0060709DF82D00A0700DB030BD0B -:1076700010B5002904464FF0060102D0FEF732FA99 -:1076800001E0FEF74EFA607920F0C000607110BD95 -:10769000CC000020FE48406870472DE9F0410F46BD -:1076A000064601461446012005F0CCF9054696F839 -:1076B0005500FFF7D0FD4AF2B12108444FF47A712A -:1076C000B0FBF1F0718840F271225143C0EB4100F0 -:1076D000001BA0F2653402F08BFF002818BF1E3C8F -:1076E000AF4234BF28463846A04203D2AF422CBF37 -:1076F0003C462C467462BDE8F0812DE9FF4F95B001 -:10770000044690F8550089461090DDE917100843AB -:107710001190E048002605780C2D28BFFFDFDE4FD2 -:1077200037F8158094F86C510C2D28BFFFDFDA482C -:1077300030F8150040441FFA80F894F865000D28D1 -:107740000CBF012000200B901798002804BF94F86C -:107750000C0103282BD10B9848B3B4F88E0148458F -:1077600025D1D4F81401C4F80001608840F2E24148 -:107770004843C4F80401B4F85A01B4F8E6100844C8 -:10778000C4F80801204602F03DFFB4F89201E082FF -:1077900094F890016075B4F894016080B4F8960193 -:1077A000A080B4F89801E080022084F80C01D4F89D -:1077B00064010F90D4F860010D90B4F8E670B4F84D -:1077C0005801D4F854110591179921B194F820115A -:1077D00051B100F0DDB804F1E001099174310A9172 -:1077E00004F5A075091D07E004F59A710991091DBA -:1077F0000A9104F59275091D0C91B4F85810A9EB83 -:107800000000A9EB01010FFA80FA0FFA81FBBAF12F -:10781000000F05DAD4F8500105900120DA461190E6 -:10782000002004909B480079E8B3F4F739FAD0B30C -:10783000B4F8F800022836D394F80C01022832D0AC -:1078400094F8230178BB94F86C81B8F10C0F28BF31 -:10785000FFDF914830F8180000F5C8601FFA80F883 -:1078600094F80C0101287DD0608840F2E241414348 -:107870000020B8F1000F05D0884808FB01F1B1FBEA -:10788000F0F0401C07EB0B01A1EB0A02D4F8141135 -:1078900080B2431A049902FB03110491C4F8140145 -:1078A000012084F8230194F80C01002874D00128E9 -:1078B00000F03B82022800F08E81032818BFFFDF12 -:1078C00000F068820498311A0598FCF732FD0A9995 -:1078D000012640F2712208600C98A0F80090002068 -:1078E00028702E710A980068A8606188D4F8140185 -:1078F0005143C0EB41006749A0F23530C861896946 -:10790000814287BF09990860099801600998616AF6 -:107910000068084400F2A510E86002F069FE10B1AA -:10792000E8681E30E8606E71B4F8D000A0EB090082 -:1079300000B20028C4BF032068710B980028189873 -:1079400000F07F82D8B100BFB4F8F81000290CBF56 -:107950000020B4F8FA00A4F8FA0094F8FC20401CC7 -:10796000504300E019E0884209D26879401E00289F -:1079700005DD6E71B4F8FA00401CA4F8FA001798FF -:10798000002800F0818294F82001002800F078821D -:1079900019B00220BDE8F08F65E094F86800032874 -:1079A00057D03B4894F8551090F8300005F05FF937 -:1079B000E18A40F27122514300EB41010020D4F8EA -:1079C0000421B8F1000F06D0344808FB02F2B2FBE4 -:1079D000F0F000F10100D4F80031D4F80821A0EB58 -:1079E000030C049BC4F8000102FB0C334FF00000B1 -:1079F00007D000BF294808FB01F1B1FBF0F000F10E -:107A00000100D4F81011C4F81001A0EB01011944D1 -:107A1000608840F2E24300FB03F34FF0000006D021 -:107A20001E4808FB03F3B3FBF0F000F1010007EB85 -:107A30000B03A3EB0A03A3EB0202D4F81431A2F167 -:107A40000102A0EB030302FB03110491C4F814012B -:107A500026E7E18A40F27122D4F8040101FB02F129 -:107A600000EB4101AAE70D98002808BFFFDF94F85A -:107A70005510074890F8300005F0F9F80790E18AB2 -:107A800040F271204143079800EB4101002007E0DC -:107A90005C0C0020DC000020DC51020040420F00A2 -:107AA000B8F1000F07D000BFFF4808FB01F1B1FBA0 -:107AB000F0F000F10100C4F81001618840F2E240EA -:107AC00001FB00F14FF0000006D0F74808FB01F180 -:107AD000B1FBF0F000F10100C4F8140186B22146B8 -:107AE0004FF00100D4F828A004F0ACFF074694F84A -:107AF0005500FFF7B0FB4AF2B12B58444FF47A78A7 -:107B0000B0FBF8F0618840F271225143C0EB4100B4 -:107B1000801BA0F2653602F06BFD002818BF1E3EE8 -:107B2000BA4534BF38465046B04203D2BA452CBF9E -:107B300056463E46666294F85500FFF7B6FB00F2E3 -:107B4000E140B0FBF8F10D980E1894F85500FFF7DE -:107B5000ACFB074694F85500FFF77DFB38444AF22A -:107B6000AB310844B0FBF8F1E28A40F271204243A5 -:107B70000798D4F8107100EB4200401AC01B304443 -:107B8000A0F12006617D40F2E24011FB00FA94F87A -:107B900055000090FFF75FFB5844B0FBF8F000EB96 -:107BA000470000EB0A070098FFF749FB384400F153 -:107BB0006201BE48816194F85500FFF776FB00F240 -:107BC000E140B0FBF8F10D980844301AB0F53D7F64 -:107BD00098BFFFDF76E6E18A40F27122D4F8040113 -:107BE000514300EB41010020B8F1000F07D000BF66 -:107BF000AD4808FB01F1B1FBF0F000F10100C4F861 -:107C00001001608840F2E24100FB01F14FF00000FA -:107C100006D0A54808FB01F1B1FBF0F000F101002E -:107C2000C4F8140186B221464FF00100D4F828A010 -:107C300004F008FF804694F85500FFF70CFB4AF269 -:107C4000B12B00EB0B014FF47A70B1FBF0F06188BF -:107C500040F271225143C0EB4100801BA0F2653617 -:107C600002F0C6FC002818BF1E3EC24534BF404685 -:107C70005046B04203D2C2452CBF564646466662C5 -:107C80000FBB1898F8B194F855603046FFF7E3FA47 -:107C900000EB0B014FF47A70B1FBF0F0D4F8101147 -:107CA000E28A084440F27123D4F804115A4301EBEC -:107CB00042010F1A3046FFF7C2FA0F99081A3844EA -:107CC000A0F120060AE0E28A40F27121D4F8040112 -:107CD000514300EB4100D4F81011461AD4F80821A2 -:107CE000D4F80011D4F8100101FB020A607D40F2C3 -:107CF000E24110FB01F894F855000746FFF7ABFA94 -:107D000000EB0B014FF47A70B1FBF0F000EB4A008E -:107D100080443846FFF793FA404400F1600163481D -:107D20008161012084F80C01CCE5618840F2712268 -:107D3000D4F814015143C0EB410101FB0AF6D4F819 -:107D4000081107EB0B02521AD4F800C1D4F8103115 -:107D5000521E0CFB013102FB001A607D40F2E24131 -:107D600010FB01F894F855000746FFF774FA4AF241 -:107D7000B12101444FF47A70B1FBF0F000EB4A00FE -:107D800080443846FFF75BFA404400F16001474801 -:107D9000816197E5618840F27122D4F81401514362 -:107DA000C0EB410000FB0AF694F8640024281CBFD5 -:107DB00094F8650024280BD1B4F88E01A9EB0000DB -:107DC00000B2002804DB94F89101002818BF10903D -:107DD0001198D8B1D7B90F9800281ABF0D9800286C -:107DE000FFDF94F85500FFF736FA4AF2B12101445B -:107DF0004FF47A70B1FBF0F0361A94F85500FFF7A3 -:107E00001EFA0F99081A3044A0F12006D4F8141174 -:107E100007EB0B0000FB01F71098FFF71CFA4AF282 -:107E2000B12101444FF47A70B1FBF0F000EB470749 -:107E30001098FFF704FA384400F160011B48816193 -:107E400040E500287FF480AD94F80C0100283FF451 -:107E500096AD618840F27122D4F814015143C0EB11 -:107E60004101284604F076FD0004000C3FF487AD84 -:107E70002299002918BF0880012019B0BDE8F08FB1 -:107E800094F85C01FDF7B0F894F85C012946FCF722 -:107E900099FF20B1179880F0010084F8210119B0F2 -:107EA0000020BDE8F08F000040420F00DC00002001 -:107EB00070B5FE4C607A00281CBF002070BD94F89D -:107EC000340038B1A16B606A884203D9F7F795FB9B -:107ED000002070BDA06AE8B1F6F72EFC0546F6F763 -:107EE000AFFA284442F210714618FCF721FD05460E -:107EF0002946E06AFDF738FAE562A16A82199142E3 -:107F000024BF081AA06205D20120A062F7F775FB12 -:107F1000002070BD012070BDF8B5E44C0246E44F6E -:107F200000256168606A052A48D2DFE802F0032F65 -:107F300034373E00A07A002660B101216846FDF783 -:107F4000D1FD9DF8000042F210710002B0FBF1F289 -:107F500001FB1206F6F7F0FB8119A069FCF7E9F9BD -:107F6000A061257403206075607A38B9207B04F124 -:107F70001001FCF727FF002808BFFFDF2584FCF76E -:107F8000E1FB7879BDE8F840EAF7C6BFBDE8F84004 -:107F9000002100F0A9BDC1F86001F8BDD1F8600171 -:107FA000BDE8F840012100F09FBD84F83450FCF793 -:107FB000C9FB7879BDE8F840EAF7AEBFFFDFF8BD4E -:107FC0002DE9F04FDFF8E492044683B099F8000001 -:107FD0008B4601270025B64E4FF00208032804BF48 -:107FE00099F80C00A0427CD1D9F80400706199F88E -:107FF0000000032818BFFFDF0324BBF1080F71D274 -:10800000DFE80BF0040F31312CD1D1C8C9F824506E -:10801000F6F762FF002818BFFFDFB47003B0BDE8B9 -:10802000F08FF6F70DFA0446D9F81C00A04228BFDD -:10803000C9F81C4005D2201AFDF7BDF9C9F81C404B -:1080400038B1F7F7C2FA002818BFFFDF03B0BDE868 -:10805000F08F03B00020BDE8F04F5DE703B0BDE84E -:10806000F04FFEF7CDBE89F8144089F8105099F80A -:1080700034004FF0010A42F2107B68B14FF47A717C -:10808000D9F81800FCF755F9C9F81800002109F1D2 -:10809000100004F05FFC1BE001216846FDF718FDAD -:1080A0009DF800000002B0FBFBF10BFB110AF6F794 -:1080B00043FB82445146D9F81800FCF73AF9C9F855 -:1080C0001800514609F1100004F044FC00F1010AC7 -:1080D000B9F82000411C0A293CBF5044A9F82000EF -:1080E00001E064E05FE0D9F8040038B1B9F820009D -:1080F000401C0A2828BF89F8158001D289F815404C -:1081000099F8090070BB99F8340040B1D9F83810DB -:10811000D9F82400884202D9F7F76FFA22E0D9F89B -:10812000280058B3F6F708FB0446F6F789F920440F -:1081300000EB0B08FCF7FCFB04462146D9F82C00A9 -:10814000FDF712F9C9F82C40D9F8281000EB080205 -:10815000914224BF081AC9F828000FD2C9F8287024 -:10816000F7F74BFA99F80C00FCF7C3FB89F80050BD -:10817000707903B0BDE8F04FEAF7CEBE99F80C0075 -:1081800009F11001FCF71EFE002808BFFFDF03B055 -:10819000BDE8F08F99F80C00FCF7ABFB89F80050B4 -:1081A00003B0BDE8F08FFFDF03B0BDE8F08F202CF7 -:1081B00028BFFFDFDFF8FC90072139F81400FAF739 -:1081C00075FA5FEA000A08BFFFDF202C28BFFFDF37 -:1081D00039F81400BAF80010884218BFFFDF54467F -:1081E000C6F814A04FF0200ABBF1080F80F04981B7 -:1081F000DFE80BF0049EA8A8A1F3F2F1C4F86051E7 -:10820000F580C4F8645194F8210138B9FCF790FB6B -:10821000D4F82C11FDF7A8F800281BDCB4F81E11C7 -:10822000B4F85800814206D1B4F8D410081AA4F862 -:10823000D600204605E0081AA4F8D600B4F81E11AE -:108240002046A4F85810D4F84811C4F82C11C0F8EE -:1082500050111DE0B4F81C11B4F85800081AA4F825 -:10826000D600B4F81C112046A4F85810D4F82C11EC -:10827000C4F84811C4F85011D4F83411C4F8E0100F -:10828000D4F83811C4F85411B4F83C11A4F85811BA -:1082900002F095F8FCF726FB814694F85500FEF7AE -:1082A000DAFF4AF2B121084406E000005C0C00202D -:1082B000DC000020980C00204FF47A71B0FBF1F044 -:1082C000D4F8141140F27122084461885143C0EB84 -:1082D0004100A0F1300AB9F1B70F98BF4FF0B709CC -:1082E0002146012004F0AEFB4844AAEB0000A0F2B6 -:1082F0001A39A2462146012004F0A4FBDAF8241022 -:108300009C30814288BF0D1AC6F80C904D4528BF9D -:108310004D46B560D4F84C01A0F2A5103061FCF7D1 -:10832000F0FF84F8207186F8028003B0BDE8F08F7A -:1083300002F059F901E0FEF763FD84F8207103B003 -:10834000BDE8F08FFCF7F4FAD4F85021014610464E -:10835000FDF70AF848B1628840F27123D4F814118D -:108360005A43C1EB4201B0FBF1F094F865100D29BE -:108370000FD0B4F85820B4F81E1113189942AEBFAC -:10838000481C401C1044A4F81E0194F8220178B93E -:1083900005E0B4F81E01401CA4F81E0108E0B4F882 -:1083A0001E01B4F8D410884204BF401CA4F81E017A -:1083B000B4F85A010DF1040B401CA4F85A01B4F8AA -:1083C0008000B4F87E10401AB4F85810401E0844DB -:1083D0001FFA80F812E046E03EE052E000231A4621 -:1083E0002046CDF800B0FFF788F9002804BF03B09D -:1083F000BDE8F08F012818BFFFDF25D0B4F81E11AB -:10840000A8EB010000B20028E8DA082084F8740024 -:1084100084F87370204601F095FD84F80C5194F8AF -:108420005C514FF6FF77202D00D3FFDF29F8157040 -:1084300094F85C01FCF75DFA84F85CA1707903B0F4 -:10844000BDE8F04FEAF768BDB4F81E01BDF80410AE -:108450000844A4F81E01D1E7FEF771FB03B0BDE8A4 -:10846000F04FFEF7CDBC94F80C01042818BFFFDFD5 -:1084700084F80C5194F85C514FF6FF77202DD5D33A -:10848000D3E7FFDF03B0BDE8F08F10B5F84C2078DC -:1084900050B101206072F7F7C8F82078032805D0A2 -:1084A000207A002808BF10BD0C2010BD207BFCF7EF -:1084B0009BFD207BFCF7E5FF207BFCF71AFA0028E8 -:1084C00008BFFFDF0020207010BD2DE9F04FE84FFE -:1084D00083B0387801244FF0000840B17C7201204D -:1084E000F7F7A3F83878032818BF387A0DD0DFF8EB -:1084F000849389F8034069460720FAF760F800285A -:1085000018BFFFDF4FF6FF7440E0387BFCF76CFDCF -:10851000387BFCF7B6FF387BFCF7EBF9002808BF87 -:10852000FFDF87F80080E2E7029800281CBF90F880 -:108530000C1100292AD00088A0421CBFDFF838A304 -:108540004FF0200B3AD00721FAF7B0F8040008BF2B -:10855000FFDF94F85C01FCF794FF84F80C8194F839 -:108560005C514FF6FF76202D28BFFFDF2AF81560FB -:1085700094F85C01FCF7BDF984F85CB1694607200A -:10858000FAF71DF8002818BFFFDF12E06846F9F778 -:10859000F4FF0028C8D011E0029800281CBF90F812 -:1085A0000C11002905D00088A0F57F41FF39CAD100 -:1085B00004E06846F9F7E1FF0028EDD089F8038070 -:1085C00087F8348087F80B8003B00020BDE8F08F77 -:1085D00070B50446A94890F80004A94D400995F8E3 -:1085E00000144909884218BFFFDF95F8140D4009AF -:1085F000A44991F800144909884218BFFFDF9D493A -:10860000002001224C7188700A7048700A71C8708D -:1086100097490870BDE8704057E796490870704761 -:108620002DE9F843924C064688462078002860D110 -:108630009548FCF702F9207320285AD0032766607A -:108640002770002565722572AEB1012106F1FC008C -:10865000FDF767FA0620F9F7D1FF81460720F9F701 -:10866000CDFF96F8FC104844B1FBF0F200FB12106D -:10867000401C86F8FC00FCF735F940F2F6518842C0 -:1086800038BF40F2F65000F59F7086B2F5F7D8FE7D -:10869000E061F6F751F84FF0010968B384F80A90E9 -:1086A000FCF746F9814601216846FDF711FA9DF86D -:1086B000000042F210710002B0FBF1F201FB120067 -:1086C00081194846FBF735FEA061C4E90A89277580 -:1086D00067752574207B04F11001FCF773FB0028FB -:1086E00008BFFFDF25840020F6F79FFF0020BDE8CC -:1086F000F8830C20BDE8F883FCF71AF93146FBF744 -:1087000018FEA061A57284F83490A8F28B50A5627F -:10871000A063DCE7574948707047564908717047B5 -:108720002DE9F041534C0646E088401CE080D4E936 -:1087300002516078D6F8607120B13A46284604F0BC -:108740003DF90546A068854205D02169281A0844EC -:108750002061FCF7D6FDA560AF4209D896F80C0160 -:10876000012805D0E078002804BF0120BDE8F08191 -:108770000020BDE8F08110B504460846FEF76BFD09 -:108780004AF2B12108444FF47A71B0FBF1F040F2A3 -:10879000E241614300F2353081428CBF081A00206B -:1087A00010BD70B5044682B0002084F8200194F812 -:1087B000DE00002807BF94F80C01032802B070BD4A -:1087C000FCF7B6F8D4F8502101461046FCF7CCFD72 -:1087D0000028DCBF02B070BD628840F27123D4F87B -:1087E00014115A43C1EB4201B0FBF1F0B4F8581038 -:1087F000401C0844A4F81C01B4F8D400B4F81C21AF -:10880000801A00B20028DCBF02B070BD012084F8DD -:108810002201B4F88000B4F87E2001AE801A401E18 -:10882000084485B212E00096B4F81C11002301221E -:108830002046FEF762FF002804BF02B070BD012889 -:108840000DD0022812BFFFDF02B070BDB4F81C01CA -:10885000281A00B20028BCBF02B070BDE3E7B4F82C -:108860001C01BDF804100844A4F81C01EEE7000048 -:108870005C0C0020DC000020980C002001E000E0EF -:108880000BE000E019E000E0C17F0100F8B5042230 -:10889000002506295BD2DFE801F007260319192A13 -:1088A000044680F80C2107E00446B748C078002849 -:1088B00018BF84F80C210AD0FBF744FFA4F85A51E2 -:1088C000B4F85800A4F81E0184F82251F8BD0095B0 -:1088D000B4F8D410012300222046FEF70EFF002832 -:1088E00018BFFFDFE8E7032180F80C11F8BD06464A -:1088F000876AB0F81401314685B2012004F0A2F86D -:10890000044696F85500FEF7A6FC4AF2B121084449 -:108910004FF47A71B0FBF1F0718840F2712251434B -:10892000C0EB4100401BA0F2653501F061FE00285C -:1089300018BF1E3DA74234BF20463846A84228BF74 -:108940002C4602D2A74228BF3C467462F8BDFFDF26 -:10895000F8BD2DE9F0478C4CA178022906BFE188CB -:108960000029BDE8F0876569C5F8640195F85500F0 -:10897000FEF765FCD5F86411081AA1680144A160EE -:10898000E1680844E060656995F82301002808BFA4 -:10899000BDE8F08795F80C01032818BFBDE8F08703 -:1089A00095F8558024780C2C28BFFFDF774E36F8D9 -:1089B000147095F86C410C2C28BFFFDF36F81400BA -:1089C000384495F86C7184B20C2F28BFFFDF36F85D -:1089D000170000F5C86087B24046FEF730FCD5F8B6 -:1089E00064110E1A4046FEF736FC4FF47A7900F215 -:1089F000E730B0FBF9F0361A4046FEF720FCD5F818 -:108A0000E010A1EB000A4046FEF725FC4AF2B12136 -:108A10000844B0FBF9F0AAEB0000A0F1600161434B -:108A2000B1FBF7F1292202EB50006031A0EB5102BB -:108A300000EB5100B24201D8B04201D8F3F7B1F9CE -:108A4000688840F2E241414300202CB104FB01F070 -:108A50004F49B0FBF1F0401CC5F81401002085F827 -:108A60002301BDE8F08770B50546474890F802C07D -:108A7000BCF1020F07BF406900F5B074454800F132 -:108A80002404002904BF256070BD4FF47A760129C3 -:108A90000DD002291CBFFFDF70BD1046FEF7EAFBB8 -:108AA00000F2E140B0FBF6F0281A206070BD1846D5 -:108AB000FEF7FBFB00F2E140B0FBF6F0281A206065 -:108AC00070BD3448007800281CBF0020704710B5E6 -:108AD0000720F9F785FD80F0010010BD2D480078D2 -:108AE000002818BF012070472DE9F843294C0025C4 -:108AF000814684F83450D4F8188084F83010E57238 -:108B00002570012727722946606803F08DFA616895 -:108B1000C1F85081267B81F85C61C1F86091C1F891 -:108B20005481B1F80080202E28BFFFDF1A4820F8BA -:108B30001680646884F80C510023A4F858511A4632 -:108B4000194620460095FEF7D8FD002818BFFFDF24 -:108B5000C4F80851C4F8005184F80C71A4F81E51EF -:108B6000A4F81C5184F82251B4F85800401EA4F80F -:108B70005800A4F85A51FBF7E5FD03484079BDE8D9 -:108B8000F843EAF7C9B90000DC000020DC5102001C -:108B900040420F005C0C0020980C00202DE9F041B1 -:108BA0000E46044604F00FFC0546204604F00FFC78 -:108BB000044603F082FFF94F010015D0386990F8A0 -:108BC00054208A4210D090F8A4311BB190F8A631FD -:108BD00023421FD02EB990F85130234201D18A424E -:108BE00018D890F8A401A8B1284603F066FF70B128 -:108BF000396991F85520824209D091F8A40118B141 -:108C000091F8A701284205D091F8A40110B10120E4 -:108C1000BDE8F0810020FBE730B5E04C85B0E069AD -:108C200000285ED0142168460CF00DF8206990F8F9 -:108C30005500FEF710FB4FF47A7100F5FA70B0FBA7 -:108C4000F1F5206990F85500FEF7F9FA2844ADF8DF -:108C5000060020690188ADF80010B0F85810ADF892 -:108C600004104188ADF8021090F8860130B1A06977 -:108C7000C11C039104F088FA8DF81000206990F867 -:108C800085018DF80800E169684688472069002160 -:108C900080F8861180F885110399002921D090F879 -:108CA000841100291DD190F86410272919D09DF84E -:108CB0001010039A002914D013780124FF2B12D02E -:108CC000072B0ED102290CD15178FF2909D100BF01 -:108CD00080F884410399C0F888119DF8101080F83D -:108CE000871105B030BD1B29F2D9FAE770B5AB4C3E -:108CF000206990F865001B2800D0FFDF206900255F -:108D000080F88D5090F8B80100B1FFDF206990F82D -:108D10008E1041B180F88E500188A0F8BC1180F807 -:108D2000BA510E2108E00188A0F8BC1180F8BA51B0 -:108D3000012180F8BE110D2180F8B8110088F9F7E3 -:108D4000E7FDF9F77FFA2079EAF7E6F8206980F87D -:108D5000655070BD70B5914CA07980072CD5A07876 -:108D6000002829D162692046D37801690D2B01F1D1 -:108D700058005FD00DDCA3F102034FF001050B2B6F -:108D800019D2DFE803F01A1844506127182C183A5A -:108D90006400152B6FD008DC112B4BD0122B5AD04E -:108DA000132B62D0142B06D166E0162B71D0172B33 -:108DB00070D0FF2B6FD0FFDF70BD91F867200123CB -:108DC000194603F05DFD0028F6D12169082081F8DD -:108DD000670070BD1079BDE8704001F0AEBC91F83D -:108DE0006600C00700D1FFDF01F066FC206910F8C3 -:108DF000661F21F00101017070BD91F86500102817 -:108E000000D0FFDF2069112180F88D5008E091F833 -:108E10006500142800D0FFDF2069152180F88D50EF -:108E200080F8651070BD91F86500152800D0FFDF4F -:108E3000172005E091F86500152800D0FFDF192004 -:108E4000216981F8650070BDBDE870404EE7BDE85E -:108E5000704001F046BC91F864200123002103F02A -:108E60000FFD00B9FFDF0E200FE011F8660F20F0B4 -:108E7000040008701DE00FE091F864200123002138 -:108E800003F0FEFC00B9FFDF1C20216981F86400BB -:108E900070BD12E01BE022E091F86600C0F3011003 -:108EA000012800D0FFDF206910F8661F21F01001B3 -:108EB0000170BDE8704001F0FFBB91F86420012310 -:108EC000002103F0DDFC00B9FFDF1F20DDE791F892 -:108ED0006500212801D000B1FFDF2220B0E7BDE806 -:108EE000704001F0F5BB2D48016991F86620130729 -:108EF00002D501218170704742F0080281F8662096 -:108F00008069C07881F8C90001F0CDBB10B5234C51 -:108F100021690A88A1F8FC2181F8FA0191F854002E -:108F200001F0B5FB216981F8FE0191F8550001F0CF -:108F3000AEFB216981F8FF01012081F8F8010020D2 -:108F400081F8A4012079BDE81040E9F7E5BF10B52C -:108F5000124C01230921206990F86420583003F055 -:108F60008FFC38B12169002001F87C0F087301F8EB -:108F7000180C10BD0120A07010BD70B5074D012365 -:108F800029462869896990F8642009790E2A01D157 -:108F9000122905D000241C2A05D006E0FC00002080 -:108FA000BDE87040D3E7142902D0202A08D009E098 -:108FB00080F8644080F88840BDE8704001F0E0BB74 -:108FC000162906D0262A01D1162902D0172909D040 -:108FD0000CE000F8644F80F82440407821280CD041 -:108FE0001A2017E090F86520222A07D0EA69002AA3 -:108FF00003D0FF2901D180F8863149E780F8654028 -:1090000001F05AFB286980F87D4090F8A4010028FF -:10901000F3D00020BDE8704078E72DE9F843FD4C1F -:10902000206990F86410202908D0002790F8651076 -:10903000222905D07FB300F1640503E00127F5E79D -:1090400000F1650510F8961F41F004010170A06958 -:1090500004F0C5F94FF00108002608B33946A069AD -:10906000FFF79CFDE0B16A46A169206903F034FD79 -:1090700090B3A06904F0B1F92169A1F88E01B1F8AB -:10908000581001F0EAFA40B32069282180F87410E2 -:1090900080F8738048E0FFE70220A070BDE8F88305 -:1090A000206990F8A40110B11E20FFF72FFFAFB187 -:1090B000A0692169C07881F8CA0008FA00F1C1F3FB -:1090C000006000B9FFDF20690A2180F8641090F881 -:1090D000880040B9FFDF06E009E01AE02E7001F0D9 -:1090E000EBFAFFF700FF206980F87D60D6E7206982 -:1090F00090F8A40118B10020FFF708FF2E70206936 -:1091000000F1650180F87D608D420DD180F86560C9 -:109110000AE020699DF8001080F890119DF8011078 -:1091200080F8911124202870206900F165018D429A -:1091300003D1BDE8F84301F0BFBA80F88860ADE71D -:1091400070B5B44C01230B21206990F8652058308C -:1091500003F096FB202650BB20690123002190F8E4 -:109160006520583003F08CFB0125F0B1206990F8A0 -:10917000640024281BD0A06904F00FF9C8B120694D -:1091800090F8961041F0040180F89610A1694A7990 -:1091900002F0070280F85120097901F0070180F8F8 -:1091A000501090F8A5311BBB06E0A57070E6A670C4 -:1091B0006EE6BDE8704096E690F8A431C3B900F1C0 -:1091C00054035E788E4205D11978914202D180F81D -:1091D0007D500DE000F5F9710D7002884A8090F81D -:1091E00050200A7190F8510048712079E9F794FEF7 -:1091F0002169212081F86500BDE8704001F053BA73 -:1092000070B58448006990F84E20448EC38E418F1B -:10921000B0F84050022A23D0A94200D32946018643 -:10922000C18FB0F84220914200D311468186018F50 -:10923000B0F84420914200D311464186818FB0F8A6 -:109240004620914200D31146C186418EA14200D9E9 -:109250000C464486C18E994200D90B46C38617E658 -:10926000028E914200D31146C68F828E964200D262 -:109270003246A94200D329460186B0F842108A42FC -:1092800000D30A468286002180F84E10CFE770B5E1 -:10929000604C206990F8660010F0300F04D0A07880 -:1092A00040F00100A070F3E5A06904F05BF848B35A -:1092B0002569A06904F052F828872569A06904F09F -:1092C00049F868872569A06904F04AF8A8872569E4 -:1092D000A06904F041F8E887A0794FF00102800707 -:1092E00003D56069C07814280FD0206990F8641005 -:1092F0001C290AD090F84E1001290DD090F89B112E -:1093000051B906E0BDE87040EDE5206980F84E20D7 -:1093100002E090F89A1131B1206910F8661F41F00F -:109320001001017016E090F8661041F0200180F8FD -:10933000661000F5D67103888B86038FCB86438F2A -:109340000B87838F4B87C08F888781F832202079E5 -:10935000E9F7E2FDBDE8704001F0A5B970B52D4C0C -:10936000206990F86610890707D590F864200123DA -:109370000821583003F084FAE8B1206990F8900091 -:10938000800712D4A06903F0C9FF216981F8910018 -:10939000A06930F8052FA1F892204088A1F8940028 -:1093A00011F8900F40F002000870206990F89010BA -:1093B000C90703D00FE00120A07069E590F86600AE -:1093C000800700D5FFDF206910F8661F41F0020119 -:1093D000017001F068F92069002590F864100629F1 -:1093E00006D180F8645080F888502079E9F794FD20 -:1093F000206990F88C110429DFD180F88C512079F4 -:10940000E9F78AFD206990F864100029D5D180F829 -:1094100088503DE5FC00002070B5FB4C0123002185 -:10942000206990F86520583003F02AFA012578B9B0 -:10943000206990F86520122A0AD0012305215830AE -:1094400003F01EFA10B10820A07021E5A5701FE5F9 -:10945000206990F88E0008B901F025F92169A0690A -:10946000E83103F03CFF2169A069C03103F042FFFD -:10947000206990F8C00100B1FFDF21690888A1F8D8 -:10948000C20101F5E271A06903F017FF2169A0692B -:1094900001F5E67103F019FF206980F8C05114212D -:1094A00080F865102079BDE87040E9F735BD70B5EA -:1094B000D54C01230021206990F86520583003F035 -:1094C000DFF90125A8B1A06903F0C3FE98B1A06936 -:1094D0002169B0F80D00A1F88E01B1F8581001F023 -:1094E000BCF858B12069282180F8741080F87350B6 -:1094F000CEE4A570CCE4BDE87040F4E4A069216935 -:10950000027981F89021B0F80520A1F8922103F0AA -:1095100093FE2169A1F89401A06903F090FE2169EE -:10952000A1F89601A06903F091FE2169A1F89801C4 -:109530000D2081F86500ABE47CB5B34CA079C00781 -:1095400038D0A06901230521C578206990F86520ED -:10955000583003F095F968B1AD1E0A2D06D2DFE848 -:1095600005F009090505090905050909A07840F074 -:109570000800A070A07800281CD1A06903F032FE7A -:1095800000286ED0A0690226C5781DB1012D01D03A -:10959000162D18D1206990F8640003F059F990B1A4 -:1095A000206990F864101F290DD0202903D0162DB2 -:1095B00016D0A6707CBD262180F86410162D02D02E -:1095C0002A20FFF7A3FC0C2D58D00CDC0C2D48D220 -:1095D000DFE805F033301D44A8A8489F57A8363966 -:1095E0002020A0707CBD0120152D6ED008DC112D2F -:1095F0006CD0122D6CD0132D64D0142D31D179E0A4 -:10960000162D7DD0182D7ED0FF2D2AD184E0206923 -:109610000123194690F86720583003F031F9F8B962 -:10962000A06903F043FE216981F87201072081F8E7 -:10963000670079E001F02BF976E0FFF738FF73E07F -:1096400001F005F970E0206990F86510112901D04A -:10965000A67069E0122180F8651065E0FFF7DCFE76 -:1096600062E05FE0206990F865001728F0D101F012 -:1096700023F821691B2081F8650055E0FFF76EFE95 -:1096800052E0206990F86600C00703D0A07840F04F -:10969000010022E06946A06903F047FE9DF8000042 -:1096A00000F02501206900F8961F9DF8011001F0D7 -:1096B0004101417000F0F7FF206910F8661F41F08A -:1096C000010113E0FFF743FC2EE016E01EE0FFE788 -:1096D000216991F86610490701D5A07024E000F0D7 -:1096E000E2FF206910F8661F41F0040101701BE0E1 -:1096F00006E008E0FFF7CBFD16E001F075F813E097 -:10970000FFF71EFD10E0FFF788FC0DE001F04BF8BD -:109710000AE0FFF732FC07E0E16919B1216981F83D -:10972000860101E0FFF7DFFB2069F0E92A12491CFE -:1097300042F10002C0E900127CBD70B5324CA07944 -:1097400000074AD5A078002847D1206990F8CB00BF -:10975000FE2800D1FFDF2069FE21002580F8CB1014 -:1097600090F86510192906D180F88D5000F0A4FFFB -:10977000206980F86550206990F864101F2902D094 -:10978000272921D119E090F8650003F061F878B13C -:1097900020692621012380F8641090F865200B21B0 -:1097A000583003F06DF878B92A20FFF7AFFB0BE0D3 -:1097B0002169202081F8640006E0012180F88511EC -:1097C00080F8645080F88850206990F86710082964 -:1097D00003D10221217080F8CB100EE40A490969F7 -:1097E00091F890210AB991F8542081F8542091F809 -:1097F00091210AB991F8552081F85520002802D00E -:109800000020FFF783BB7047FC00002070B5F84CC8 -:1098100006460D46206990F8CB00FE2800D0FFDFF9 -:109820002269002082F8CB6015B1A2F88A00BDE45D -:1098300022F8840F01201071B8E470B5EC4C0123BC -:109840000021206990F86420583003F019F80028AE -:1098500031D0206990F89A1111B190F89B1139B16B -:1098600090F8A41100295FD090F8A51121B35BE016 -:10987000B0F89C1120F8401FB0F85E114180B0F89C -:1098800060118180B0F86211C180002180F85A1106 -:1098900090F8260080060AD501F05DF8206910F8DE -:1098A000661F21F0200141F01001017002E000214B -:1098B00014203DE0012079E490F8652001230B217C -:1098C000583002F0DDFF78BB206990F8540000F0BA -:1098D000DEFE0546206990F8550000F0D8FE0646E9 -:1098E000206990F8A611284600F0C3FE50B1206907 -:1098F00090F8A711304600F0BCFE18B10020FFF729 -:1099000005FB11E020690123032190F86520583000 -:1099100002F0B6FF40B920690123022190F86520CA -:10992000583002F0ADFF08B100203FE400211620BE -:10993000FFF76CFFBEE710B548BBAD4C206990F84F -:109940006610CA0702D00121092018E08A070AD54B -:1099500001210C20FFF75AFF206910F8901F41F0F9 -:10996000010101702AE04A0702D50121132006E017 -:109970000A0707D510F8C91FC17001210720FFF79A -:1099800045FF1BE0C90602D590F89B1109B10020E4 -:1099900010BD90F89A1179B1B0F89C1120F8401FD1 -:1099A000B0F85E114180B0F860118180B0F86211AA -:1099B000C180002180F85A1100F0CDFF012010BDB8 -:1099C00070B58B4C206990F8CB10FE2978D1A17826 -:1099D000002975D190F8672001231946583002F00C -:1099E0004FFF00286CD1206990F8701149B1002117 -:1099F000A0F8821090F8711180F8CC10002102209C -:109A00005BE090F8652001230421583002F038FF14 -:109A10000546FFF790FF002852D1284600F0A6FF28 -:109A200000284DD120690123002190F8642058308E -:109A300002F026FF78B120690123042190F8652007 -:109A4000583002F01DFF30B9206990F87C0010B149 -:109A50000021122031E0206990F864200A2A0DD0FC -:109A6000002D2DD101230021583002F009FF78B1DB -:109A7000206990F88C1104290AD105E010F8CA1F5A -:109A800081700021072018E090F89000800718D01E -:109A9000FFF7D3FE002813D120690123002190F89D -:109AA0006420583002F0ECFE002809D0206990F8BC -:109AB0008401002804D00021FF20BDE87040A5E605 -:109AC00009E000210C20FFF7A1FE206910F8901F8B -:109AD00041F00101017070E43EB505466846FDF7AE -:109AE000CCFC00B9FFDF222100980BF08AF803219B -:109AF000009803F05FFB0098017821F010010170DD -:109B0000294603F07CFB3A4C0D2D40D00BDCA5F12F -:109B100002050B2D19D2DFE805F01F186019191F77 -:109B2000186D18192400152D78D008DC112D25D0BA -:109B3000122D0BD0132D09D0142D06D12BE0162D8C -:109B400042D0172D68D0FF2D67D0FFDFFDF7A8FCAE -:109B5000002800D1FFDF3EBD2169009891F8CC10AC -:109B600017E0E26800981178017191884171090A43 -:109B700081715188C171090A0172E7E703210098D8 -:109B800003F047FC0621009803F047FCDEE700984D -:109B900006210171DAE72069B0F84410009803F05B -:109BA000C9FB2069B0F84610009803F0C7FB206994 -:109BB000B0F84010009803F0C5FB2069B0F84210DF -:109BC000009803F0C3FBC1E70098216991F8A62132 -:109BD000027191F8A7114171B8E721690098F0313D -:109BE00003F08CFB21690098C43103F091FBADE7D1 -:109BF000FC000020F949D1E90001CDE9010120690B -:109C000001A990F8960000F025008DF80400009856 -:109C100003F0B9FB9AE701E019E023E02069B0F80E -:109C20004010009803F08EFB2069B0F842100098B5 -:109C300003F08CFB2069B0F84410009803F07AFB25 -:109C40002069B0F84610009803F078FB7EE72169A0 -:109C500091F8A40100280098B8D111F8542F02718E -:109C60004978B8E7206990F88721D0F888110098E2 -:109C700003F0D3FA6AE7DA4810B5006990F86A1081 -:109C800041B990F8652001230621583002F0F8FD13 -:109C9000002800D0012010BD70B5D14D286990F882 -:109CA000681039B1012905D0022906D0032904D052 -:109CB000FFDF1DE4B0F8D41037E090F867100829F2 -:109CC00036D0B0F87E10B0F8802000248B1C9A4269 -:109CD00006D3511A891E0C04240C01D0641EA4B2B0 -:109CE00090F87C1039B190F8642001230921583094 -:109CF00002F0C6FD40B3FFF7BEFF78B1296900202E -:109D0000B1F87820B1F876108B1C9A4203D3501A20 -:109D1000801E00D0401EA04200D284B20CB1641E4E -:109D2000A4B22869B0F8D4102144A0F8D01054E5AA -:109D3000B0F87E100329BDD330F8581F028D1144AE -:109D4000491CA0F8781048E50024EAE770B50C46F5 -:109D500005464FF4007120460AF075FF25803CE56A -:109D6000F8F7ADBD2DE9F0410D4607460721F8F79C -:109D70009DFC041E3CD094F8AC010026A8B16E7086 -:109D8000092028700BE0268484F8AC61D4F8AE0179 -:109D90006860D4F8B201A860B4F8B601A88194F85C -:109DA000AC010028EFD12E71BAE094F8B80190B35D -:109DB00094F8B8010D2813D00E2801D0FFDFAFE0D2 -:109DC0002088F8F7A5FD0746F8F751FA78B96E70C4 -:109DD0000E20287094F8BA0128712088E88014E0D9 -:109DE0002088F8F795FD0746F8F741FA10B10020F2 -:109DF000BDE8F0816E700D20287094F8BA012871CA -:109E00002088E88094F8BE01287284F8B86138464A -:109E1000F8F727FA84E0FFE794F8F00130B16E70AC -:109E20001020287084F8F061AF8079E094F8C001C8 -:109E300090B16E700A2028702088A880D4F8C411D0 -:109E4000C5F80610D4F8C811C5F80A10B4F8CC014A -:109E5000E88184F8C06163E094F8CE0140B16E708F -:109E60001A202870B4F8D001A88084F8CE6157E099 -:109E700094F8EA0170B16E701B20287005E000BFF5 -:109E800084F8EA61D4F8EC01686094F8EA010028EB -:109E9000F6D145E094F8D20190B16E70152028708B -:109EA00004F5EA7707E000BF84F8D2610A22394658 -:109EB000281D0AF06CFE94F8D2010028F4D12FE09E -:109EC00094F8DE0158B16E701D20287084F8DE61B0 -:109ED0000A2204F5F071281D0AF059FE20E094F8DA -:109EE000F20138B11E20287084F8F261D4F8F40130 -:109EF000686015E094F8F80100283FF479AF6E70BF -:109F00001620287008E000BF84F8F861D4F8FA0140 -:109F10006860B4F8FE01288194F8F8010028F3D1B4 -:109F2000012065E72E480021C161016208466AE40C -:109F300030B52B4D0C46E860FFF7F4FF00B1FFDFB2 -:109F40002C7130BD002180F8641080F8651080F815 -:109F5000681090F8DE1009B1022100E00321FEF73D -:109F600095BC2DE9F0411E4C0546206909B1002140 -:109F700004E0B0F8E610B0F8D6201144A0F8E610DE -:109F800090F8701139B990F86720012319465830BC -:109F900002F076FC30B1206930F8821FB0F854200E -:109FA00011440180206990F8883033B1B0F88410F2 -:109FB000B0F8D6201144A0F8841090F98C70002FCE -:109FC00006DDB0F88A10B0F8D6201144A0F88A1047 -:109FD00001213D2635B180F8746017E0F45102008C -:109FE000FC0000202278022A0AD0012A11D0A2788F -:109FF0002AB380F8731012F0140F0DD01E2113E055 -:10A0000090F8CC20062A3CD016223AE080F8731053 -:10A0100044E090F8722134E0110702D580F87460B2 -:10A020003CE0910603D5232180F8741036E09007B8 -:10A0300000D1FFDF21692A2081F874002AE02BB1CA -:10A04000B0F88420B0F886309A4210D2002F05DD97 -:10A05000B0F88A20B0F886309A4208D2B0F8823040 -:10A06000B0F88020934204D390F870310BB12222D3 -:10A0700007E090F868303BB1B0F87E30934209D3E6 -:10A08000082280F87420C1E7B0F87E20062A01D3A8 -:10A090003E22F6E7206990F8731019B12069BDE8F7 -:10A0A000F0414FE7BDE8F0410021FEF7EFBB2DE99D -:10A0B000F047F94C81460D4620690088F8F73AFCD4 -:10A0C000060000D1FFDFA0782843A070A0794FF0F0 -:10A0D00000058006206904D5A0F87E5080F8E45081 -:10A0E00003E030F87E1F491C0180FFF7C4FD012703 -:10A0F00040B3E088000506D5206990F86A1011B1D8 -:10A10000A0F876501EE02069B0F87610491C89B29C -:10A11000A0F87610B0F878208A4201D3531A00E0F4 -:10A120000023B4F808C00CF1050C634501D880F891 -:10A130007C70914206D3A0F8765080F8F0712079B7 -:10A14000E8F7EAFEA0794FF0020810F0600F0ED099 -:10A15000206990F8681011B1032908D102E080F855 -:10A16000687001E080F868800121FEF78FFB2069AC -:10A1700090F86810012904D1E188C90501D580F85B -:10A180006880B9F1000F70D1E188890502D5A0F887 -:10A19000F85003E030F8F81F491C018000F0A2FBE2 -:10A1A000FEF73AFDFFF70CFC00F054FF0028206991 -:10A1B00002D0A0F8D85003E030F8D81F491C018025 -:10A1C00000F04BFF38B1216991F8E400022807D86C -:10A1D000401C81F8E400206990F8E400022804D9CA -:10A1E000206920F8D85F458005732069012300218C -:10A1F00090F86520583002F043FB20B9206990F8B0 -:10A2000065000C2859D120690123002190F86420B1 -:10A21000583002F035FB48B320690123002190F843 -:10A220006720583002F02CFB00B3206990F86810CA -:10A23000022942D190F8E400C0B93046F7F7E7FDB3 -:10A24000A0B1216991F8CB00FE2836D1B1F8D20037 -:10A25000012832D981F8DD70B1F88000B1F87E2094 -:10A26000831E9A4203DB012004E032E025E0801ADD -:10A27000401E80B2B1F8D82023899A4201D301222E -:10A2800002E09A1A521C92B2904200D9104601285C -:10A2900001D181F8DD5091F8692192B1B1F8DA204D -:10A2A000B1F86A118A4201D3012102E0891A491CDE -:10A2B00089B2884205D9084603E02169012081F866 -:10A2C000DD502169B1F858201044A1F8D400FFF7FF -:10A2D000E3FCE088C0F340214846FFF742FE2069D6 -:10A2E00080F8DE50BDE8F047FDF7FCB86A49024649 -:10A2F0008878CB78184312D10846006942B1897931 -:10A30000090703D590F86700082808D001200EE659 -:10A31000B0F84810028E914201D8FEF701BA002031 -:10A3200005E670B55C4C05460E46E0882843E080A3 -:10A33000A80703D5E80700D0FFDF6661EA074FF002 -:10A3400000014FF001001AD0A661F278062A02D06F -:10A350000B2A14D10AE0226992F86530172B0ED12E -:10A360000023E2E9283302F8370C08E0226992F86A -:10A370006530112B03D182F8691082F88E00AA078C -:10A3800018D56269D278052A02D00B2A12D10AE0C8 -:10A39000216991F86520152A0CD10022E1E92A22D1 -:10A3A00001F83E0C06E0206990F86520102A01D1E2 -:10A3B00080F86A10280601D50820E07079E42DE9BC -:10A3C000F84F354C00254FF00108E580A570E57089 -:10A3D0004146257061F3070220619246814680F86C -:10A3E000DE800088F8F7A6FA070000D1FFDF2069B9 -:10A3F0000088FDF73FF820690088FDF761F82069C3 -:10A40000B0F8D21071B190F8CB10FE290FD190F8AE -:10A41000701189B190F8672001231946583002F075 -:10A420002FFA78B1206990F8CB00FE2804D020697B -:10A4300090F8CB00FFF750FB206990F8DF1089B14E -:10A44000258118E02069A0F8825090F8711180F8F9 -:10A45000CC1000210220FFF7D9F9206980F8DD50E7 -:10A460000220E7E790F8AC1119B9018C828891427B -:10A4700000D881882181B0F8D610491E8EB2B0F87C -:10A48000D8103144A0F8D81090F8DC1031B1A0F801 -:10A49000DA5080F8DC5006E0FC000020B0F8DA105A -:10A4A0003144A0F8DA1030F87E1F31440180FFF704 -:10A4B000E2FB20B1206930F8761F31440180206929 -:10A4C000B0F8D210012902D8491CA0F8D2100EB160 -:10A4D00080F8E45090F8DD10A1B1B0F8D8002189DF -:10A4E00088420FD23846F7F792FC58B1206990F8AD -:10A4F000691139B1B0F8DA10B0F86A01814201D3BC -:10A5000000F0AEFD206980F8DD5090F865100B2951 -:10A5100001D00C2916D1B0F85820B0F88E31D21ADB -:10A5200012B2002A0EDBD0F89011816090F89411DD -:10A530000173022101F078FD206980F8655080F8F0 -:10A54000988026E0242910D1B0F85810B0F88E2158 -:10A55000891A09B2002908DB90F8A401FFF73EF937 -:10A56000206900F8655F057613E090F864102429EF -:10A5700001D025290DD1B0F85810B0F88E01081A75 -:10A5800000B2002805DB0120FFF728F9206980F8D8 -:10A59000645020690146B0F8D620583001F066FFBB -:10A5A000206990F8691109B1A0F8DA50F7480090D5 -:10A5B000F74BF84A4946504600F0A4FC216A11B115 -:10A5C0006078FCF76DFB20690123052190F8652078 -:10A5D000583002F055F9002803D0BDE8F84F00F0DC -:10A5E0006ABABDE8F88F00F01BBDEB49C8619EE474 -:10A5F000E948C069002800D0012098E4E64A50707C -:10A60000116294E410B50446B0F894214388B0F880 -:10A610009611B0F898019A4205D1A388994202D1C7 -:10A62000E38898420FD02388A4F8B031A4F8B2216F -:10A63000A4F8B411A4F8B601012084F8AC01D648FE -:10A640000079E8F769FC0121204601F0EDFC0020CB -:10A6500004F8650F0320E07010BD401A00B247F601 -:10A66000FE71884201DC002801DC01205FE400204B -:10A670005DE4012802D0022805D102E0012904D0BE -:10A6800001E0022901D0002051E401204FE410B57F -:10A69000012804D0022804D0FFDF204610BD012489 -:10A6A000FBE70224F9E7BC480021006920F88A1F73 -:10A6B0008178491C81703AE4B74800B5016911F806 -:10A6C0008C0F401E40B20870002800DAFFDF00BD8A -:10A6D000B1482721006980F86410002180F88411B6 -:10A6E00025E410B5AC4C206990F88C11042916D1E2 -:10A6F00090F8642001230021583002F0C1F800B91D -:10A70000FFDF206990F89010890703D4062180F8B4 -:10A71000641004E0002180F8881080F88C11206912 -:10A7200090F86600800707D5FFF7C6FF206910F88C -:10A73000661F21F00201017010BD974910B509692B -:10A7400091F864200A2A09D191F8CA20824205D1E1 -:10A75000002081F8640081F8880010BD91F866201F -:10A76000130706D522F0080081F86600BDE8104006 -:10A77000A2E7FF2801D0FFDF10BDBDE81040A7E72A -:10A7800010B5854C05212069FEF780F8206990F806 -:10A790004E10012903D0BDE8104000F030B902216D -:10A7A00080F84E1010BD10B57B4C206910F8961F34 -:10A7B00041F004010170A06902F02DFE162806D1B7 -:10A7C000206990F86400202802D0262805D010BD0A -:10A7D000A06902F024FEFEF799FB2169002081F8B0 -:10A7E000640081F8880010BD70B56B4C01230A210C -:10A7F000206990F86420583002F042F810B3A06944 -:10A8000002F0B0FDA8B12569A06902F0A7FD288774 -:10A810002569A06902F09EFD68872569A06902F09C -:10A820009FFDA8872569A06902F096FDE887FEF7DD -:10A83000E7FC2169002081F8880081F86400BDE808 -:10A8400070409DE7A07840F00100A070B6E510B51B -:10A85000514C01230021206990F86520583002F006 -:10A860000FF830B1FFF71FFF2169102081F8650054 -:10A8700010BD20690123052190F86520583001F0B2 -:10A88000FFFF08B1082000E00120A07010BD70B5E6 -:10A89000414C01230021206990F86520583001F0D7 -:10A8A000EFFF012588B1A06902F0FDFC2169A1F844 -:10A8B0008E01B1F85810FFF7D0FE40B12069282171 -:10A8C00080F8741080F8735078E5A57076E52169FA -:10A8D000A06901F5C87102F0E1FC21690B2081F843 -:10A8E00065006BE510B5FEF728FFFEF725FE2A4C44 -:10A8F000A079400708D5A07830B9206990F86700A2 -:10A90000072801D101202070FEF724FAA079C006A3 -:10A9100009D5A07838B9206990F865100B2902D1C3 -:10A920000C2180F86510E07800070ED5206901231E -:10A93000052190F86520583001F0A2FF30B10820C1 -:10A94000A0702169002081F8B80110BDBDE8104059 -:10A95000002000F089BB10B5FEF752FCFFF710FF96 -:10A960000121BDE810401520FEF750BF10B50A4C7C -:10A97000216991F8652088B3102A0FD0142A10D0CD -:10A98000152A22D01B2A35D122E00000AFA00100F9 -:10A99000EDA2010023A30100FC00002001210B20F7 -:10A9A00018E0FBF79BF80C2816D320690821F0303B -:10A9B000FBF798F828B120690421C430FBF792F81E -:10A9C00000B9FFDF0121042004E000F038F803E0C3 -:10A9D00001210620FEF71AFF012010BDFFE7212A02 -:10A9E00008D191F87D0038B991F8A40110B191F81F -:10A9F000A50108B10020F0E701211720EAE7284B64 -:10AA000030B4186900F5D67201881185018E518520 -:10AA1000818E9185018FB0F84440A14200D3214638 -:10AA2000D185818FB0F84600814200D20846108659 -:10AA3000012082F82600187930BCE8F76DBA70B5AD -:10AA4000174C0025206990F8731101290AD00229BA -:10AA500025D190F88E10A9B1062180F8CC100121E3 -:10AA6000022017E090F8B811002918D100F1B003C6 -:10AA700000F1E801002200F5BA7001F07BFE01212F -:10AA8000052007E090F89600400701D5112000E06E -:10AA90000D200121FEF7BAFE206980F873518DE484 -:10AAA000FC00002030B5FF4C05462078002818BF78 -:10AAB000FFDF257230BDFB490120C87170472DE9C9 -:10AAC000F14FF94D2846297840680029044600F1E5 -:10AAD000580890F8551001F0AAFF94F85510668EAA -:10AAE00080B2082968D001F07EFF864238BF304628 -:10AAF000C7B2DFF8B093ED48C9F824006E68287833 -:10AB0000002896F86AA0B6F832B096F8551030468C -:10AB100001F08DFF96F8551080B2082950D001F051 -:10AB200062FF014658468B4528BF0846BAF1000F20 -:10AB30001CBF001D80B2C0B296F85510FBF70FFD88 -:10AB400098F81200002840D008F15801D74891E841 -:10AB50000E1000F5027686E80E10D8F86810C0F8DE -:10AB60002112D8F86C10C0F8251200F58170FCF79E -:10AB700020F8287800280CBF0120002080F0010177 -:10AB8000CB480176D8E91412C0E90412A0F583720B -:10AB9000D9F82410FBF7C1FB94F85500012808BF31 -:10ABA000002204D002281ABFFFDF0022012239460A -:10ABB0000120FBF7C0FB0EE0042101F014FF94E735 -:10ABC000042101F010FF0146ACE7D9F82400FBF79F -:10ABD000F0FFFBF7D3FB009818B900219620FCF793 -:10ABE00017F894F8542001210020FCF7F1F894F8AC -:10ABF0002C00012808BFFCF7C8F8022089F80000E3 -:10AC0000FCF77BFB002818BFFFDFBDE8F88F2DE9BC -:10AC1000F04FDFF894A283B050469AF800204068C5 -:10AC2000AAF11401009190F85D1000F15806044655 -:10AC30004FF00108AAF13407A9B3012900F0DB8025 -:10AC4000022900F0DD80032918BFFFDF00F0E68055 -:10AC5000386A0823017821F008010170B27903EA0B -:10AC6000C202114321F004010170F279042303EAC6 -:10AC70008202114321F01001017096F80590F86AE4 -:10AC8000F7F7D5F80546FCF73FFCB9F1020F00F0E5 -:10AC9000CC80B9F1010F00F0CB80B9F1030F00F0C7 -:10ACA000CA8000F0CBB8FFE7337B21464FF00209A2 -:10ACB0004FF0000B242B1CBF96F80DC0BCF1240FE5 -:10ACC00007D01F2B18BF202B19D0BCF1220F2ED07C -:10ACD00048E094F8545052B191F89001002846D0C1 -:10ACE000012D18BF012834D04FF002053FE091F844 -:10ACF000F20080B3012D18BF01282AD0F4E7BCF17F -:10AD0000220F14D072B391F8A60194F8545010F0A9 -:10AD1000010F18BF404604D0012D18BF012818D0DC -:10AD2000E2E710F0020F18BF4846F5D11FE0CAB1A4 -:10AD300090F8A61190F8510094F8545001EA0000E0 -:10AD400010F0010F18BF404606D0012D18BF012892 -:10AD5000CAD14FF001050AE010F0020F18BF4846B3 -:10AD6000F3D104E094F85450042D08BF0825294677 -:10AD7000204601F05AFE80B2294601F034FE218EB1 -:10AD8000814238BF0846ADF80800A4F84800009892 -:10AD9000FCF799FB68B1BA89396A42F48062BA81DA -:10ADA0007A694FF4806090470320707186F80380C1 -:10ADB0004EE701AA02A9F86AF6F774FF386210B1EB -:10ADC00096F8351029B10098FCF751FB86F80580FC -:10ADD0003EE79DF8041031B9A0F800B080F802B049 -:10ADE000012102F0E7F9BDF80810386A02F019FBFA -:10ADF00086F805902CE70098FCF739FB28E700BFA0 -:10AE0000B4F84800ADF8000001AA6946F86AF6F700 -:10AE100049FF3862002808BFFFDF19E70098FCF7F8 -:10AE200052FB002808BFFFDF12E7A84306D103E06A -:10AE3000A84303D100E00DB1012100E00021386AF0 -:10AE4000027842EA01110170717C00291CBF7179FE -:10AE500001293CD006F15801144891E80E1000F584 -:10AE6000027585E80E10B16EC0F82112F16EC0F8BF -:10AE7000251200F58170FBF79CFE9AF8000000286F -:10AE80000CBF012100210A480176D6E91212C0E95F -:10AE90000412A0F583713A6AFBF73FFA94F8540064 -:10AEA000012807E02001002054010020D80C0020D8 -:10AEB000E00E002008BF002204D002281ABFFFDFE6 -:10AEC00000220122FB210020FBF735FA03E0FBF70B -:10AED00070FEFBF753FA012194F855200846FBF762 -:10AEE00077FF87F80480386A018839828078B874DF -:10AEF00087F80080FCF70AFA002818BFFFDF03B0CC -:10AF0000BDE8F08F2DE9F0471D46174681460C46F7 -:10AF1000FE4EDDF82080307828B9002F1CBF002DB0 -:10AF2000B8F1000F00D1FFDFC6F81C80C6E90D9410 -:10AF3000C6E905754FF00000F071B071F070B070A7 -:10AF400030717071F24DB081F081287804F15807AA -:10AF50002088F7F7EFFCF0622088F7F7D9FC306320 -:10AF6000FBF71AFB94F95700FBF7D7FB04F112002B -:10AF7000FBF702FE04F10E00FBF7D5FB2878002852 -:10AF80000CBF03200120FBF711FEB87EFBF7D3FBBB -:10AF9000FBF706FE2878002804BFFF2094F85440F1 -:10AFA00019D0BF7C668E94F85510204601F03FFD05 -:10AFB00094F8551080B2082926D001F014FD0146FE -:10AFC00030468E4228BF0846002F1CBF001D80B2AD -:10AFD000C0B294F855402146FBF7C1FA2878C0B1B9 -:10AFE000686890F86801002818BFFBF746FB214607 -:10AFF0000120FBF7F7FB6868D0F8E000FBF7DCFD09 -:10B00000BDE8F04701205AE5042101F0ECFC0146BF -:10B01000D6E721460020FBF7E5FBBDE8F047F6E563 -:10B02000BB4800B501783438007819B1022818BF40 -:10B03000FFDF00BD012818BFFFDF00BDB34810B51A -:10B040000078022818BFFFDFBDE8104000F02FBADB -:10B0500000F02DBAAD4800797047AC48C078704711 -:10B06000AA490120487170472DE9F0470600A84819 -:10B07000A64D406800F15804686A90F8019018BF26 -:10B08000012E03D1296B09F0EDF96870687800276B -:10B090004FF00108A0B101283CD0022860D003285D -:10B0A0001CBFFFDFBDE8F087012E08BFBDE8F087B9 -:10B0B000286BF7F7B1F8287ABDE8F047E7F72CBF1F -:10B0C000012E14D0A86A002808BFFFDF6889C21CBF -:10B0D000D5E9091009F016FDA86A686201224946FF -:10B0E000286BF6F715FF022E08BFBDE8F087D4E9FC -:10B0F0001401401C41F10001C4E91401E079012868 -:10B1000001D1E77101E084F80780287ABDE8F047B3 -:10B11000E7F702BF012E14D0A86A002808BFFFDF9E -:10B120006889C21CD5E9091009F0ECFCA86A6862BC -:10B1300000224946286BF6F7EBFE022E08BFBDE859 -:10B14000F087D4E91410491C40F10000C4E9141040 -:10B15000E07901280CBFE77184F80780BDE8F0872B -:10B16000012E06D0286BF7F757F8022E08BFBDE86E -:10B17000F087D4E91410491C40F10000C4E9141010 -:10B18000E0790128BFD1BCE770B5614E3046A6F129 -:10B190003404406800F158052078012818BFFFDF0B -:10B1A000A87868B10021A970A289042042F00402A5 -:10B1B000A28162699047307800281CBF0120287165 -:10B1C000216A0322087832EA000009D1A28912F428 -:10B1D000806F05D042F00202A2816269022090478E -:10B1E0000121002000F082F918B1BDE8704000F0A4 -:10B1F0005EB9BDE87040002061E42DE9F14F444E96 -:10B2000000273046A6F134054068317800F1580A2D -:10B210002878B846022818BFFFDFE88940F400709C -:10B22000E88171683078FF2091F85410FBF797F9A6 -:10B23000009800289AF8120000F00181FBF7C4F88A -:10B24000FBF7B2F84FF0010990B99AF8120078B103 -:10B25000686A417861B100789AF80710C0F3C000BD -:10B26000884205D185F80290BDE8F84F00F01FB97B -:10B27000686A41786981002908BFAF6203D0286BF2 -:10B28000F6F700FEA862E88940F02000E881EF7040 -:10B290003078706800F15804834690F82C0001283B -:10B2A0001AD1FBF768FD2146584601F0A4FA98B17F -:10B2B0003078002870680CBF00F58A7000F5F570D2 -:10B2C000BBF800104180217A0171617A417180F8E8 -:10B2D0000090287AE7F720FE686A9AF8061000784E -:10B2E000C0F38000884240D03078706800F1580484 -:10B2F00090F85D00002834D0022850D06771307873 -:10B3000000281CBF207900280ED003E02001002077 -:10B31000540100202771AA89394642F01002AA81FF -:10B320006A694FF010009047E078A0B1E770FCF731 -:10B33000D9F8002808BFFFDF0820AA89002142F0C1 -:10B340000802AA816A699047D4E91202411C42F1BD -:10B350000000C4E91210A07901280CBFA77184F87D -:10B360000690E88940F48070E881696A9AF80730AD -:10B370000878C0F3C0029A424ED13278726800F069 -:10B38000030002F15804012818BF02282DD0032819 -:10B390001CBFA87940F0040012D0A8713CE0E86A14 -:10B3A000F6F7ACFC002808BFFFDFD4E91202411C0D -:10B3B00042F10000C4E91210287AE7F7ADFD9DE7DD -:10B3C00084F80290EA89484642F40062EA81AA8938 -:10B3D00042F00102AA816A699047E079012801D10F -:10B3E000E77119E084F8079016E0487818B3E98906 -:10B3F00041F40061E981A96A71B1FB2884BFA87991 -:10B4000040F01000C9D8E879002808BFC84603D02A -:10B4100080206A69002190470120009900F066F8B9 -:10B42000B0B1B8F1000F1CBF0020FFF71DFEBDE852 -:10B43000F84F00F03CB8E0790128D3D1D0E70028DC -:10B4400018BFFAF7FAFFE88940F04000E881E3E727 -:10B45000B8F1000F1CBF0120FFF706FEFFF7D7FB76 -:10B46000B8F1000F08BFBDE8F88F0220BDE8F84F23 -:10B47000FAE570B50D4606463C483C4900784C68F4 -:10B4800050B1FBF71DF8034694F854202946304686 -:10B49000BDE87040FDF7E7BAFBF712F8034694F8F1 -:10B4A000542029463046BDE8704005F074BF2F494E -:10B4B00010B54C68FBF707FCFBF7E6FBFBF7D8FA87 -:10B4C000FBF760FBFAF75AFF94F82C00012808BF3D -:10B4D000FBF751FC264C00216269E0899047E26944 -:10B4E000A179A07890470020207010BD70B5204C45 -:10B4F0000546002908BF012D06D1E07800F10100C2 -:10B50000C0B2E07001282ED8A169284688470028DB -:10B5100029D06179174839B1012D01BF417800293F -:10B52000017811F0100F1ED0A179E1B90F49097807 -:10B53000002908BF012D01D091B18DB90E490978BC -:10B5400011F0100F04BF007810F0100F0BD0A0897D -:10B5500048B9A06A20B9608910B111F0100F02D06B -:10B560004FF0000070BD4FF0010070BD540100208D -:10B5700020010020D80C002030010020FE498A78EC -:10B58000824286BF084490F843010020704710B5FE -:10B5900040F2D311F84809F034FBFF220821F748A4 -:10B5A00009F027FBF6480021417081704FF461716A -:10B5B000818010BD2DE9F0410E46054600F0ADFB3F -:10B5C000ED4C102816D004EBC00191F85A0110F090 -:10B5D000010F1CBF0120BDE8F081607808283CBF46 -:10B5E000012081F85A011CD26078401C6070012053 -:10B5F000BDE8F0816078082813D222780127501C1A -:10B60000207004EBC2083068C8F85401B088A8F86C -:10B610005801102A28BFFFDF88F8535188F85A7163 -:10B62000E2E70020BDE8F081D54988707047D44832 -:10B630008078704770B4D04800250178491E4BB21D -:10B64000002B46DB00EBC30191F85A1111F0010FFA -:10B650003BD04278D9B2521E427000EBC10282F850 -:10B660005A5190F802C00022BCF1000F0BD9841887 -:10B6700094F803618E4202D1102A26D103E0521CB5 -:10B68000D2B29445F3D80278521ED2B202708A42E6 -:10B690001BD000EBC20200EBC10CD2F85341CCF836 -:10B6A0005341D2F85721CCF85721847890F800C044 -:10B6B0000022002C09D9861896F8036166450CD142 -:10B6C000102A1CBF024482F80311591E4BB2002BF2 -:10B6D000B8DAAB48857070BC7047521CD2B2944245 -:10B6E000E9D8F2E7A4498A78824286BF01EB0010CC -:10B6F000C01C002070472DE9F04101261F469046EE -:10B700003446002500F009FB10282AD09A494FF052 -:10B71000000C01EBC00292F85A2102F001058A7870 -:10B72000002A1ED901EB0C0393F8033183421FD189 -:10B73000BCF1100F15D0002F18BF87F800C0887813 -:10B7400060450ED901EB0C1010F1030F09D001EB8D -:10B750000C0090F84B4190F83B0101280CBF0126EA -:10B76000002648EA050046EA04010840BDE8F081E9 -:10B770000CF1010303F0FF0C6245D3D8F1E72DE98A -:10B78000F05F1F4690460E46814600F0C6FA7A4D9D -:10B79000044610283CD00146AB780020002B0ED97F -:10B7A0002A1892F803218A4205D110281CBF1220C2 -:10B7B000BDE8F09F03E0401CC0B28342F0D8082BE4 -:10B7C0003FD2102C27D0AE781022701CA87005EB49 -:10B7D000061909F10300414600F0B2FF09F18300A8 -:10B7E0001022394600F0ACFF1021384600F085FFEA -:10B7F0003544102185F84301404600F07EFF85F86E -:10B800004B0185F80341002085F83B01BDE8F09F1E -:10B81000AB78082B15D22C78CA46601C287005EB33 -:10B82000C4093068C9F85401B0884FF0000BA9F87A -:10B830005801102C28BFFFDF89F853A189F85AB1AD -:10B84000C1E70720BDE8F09F70B44B488178491EDE -:10B850004BB2002BBCBF70BC704700BF817803F0B7 -:10B86000FF0C491ECAB2827050FA83F191F803119D -:10B8700094453ED000EB021500EB0C14D5F80360A4 -:10B88000C4F80360D5F80760C4F80760D5F80B600A -:10B89000C4F80B60D5F80F60C4F80F60D5F883606A -:10B8A000C4F88360D5F88760C4F88760D5F88B60EA -:10B8B000C4F88B60D5F88F50C4F88F50851800EB12 -:10B8C0000C0402EB420295F803610CEB4C0C00EB0C -:10B8D000420284F8036100EB4C0CD2F80B61CCF807 -:10B8E0000B61B2F80F21ACF80F2195F83B2184F8D9 -:10B8F0003B2100EBC10292F85A2112F0010F33D123 -:10B9000090F802C00022BCF1000F0BD9841894F803 -:10B9100003518D4202D1102A26D103E0521CD2B22B -:10B920009445F3D80278521ED2B202708A421BD0DC -:10B9300000EBC20200EBC10CD2F85341CCF85341EA -:10B94000D2F85721CCF85721847890F800C0002213 -:10B95000002C09D9851895F80351654512D1102A94 -:10B960001CBF024482F80311591E4BB2002BBFF6D4 -:10B9700075AF70BC70470000080F00206801002000 -:10B980005C010020521CD2B29442E3D8ECE7FE499D -:10B9900048707047FC484078704738B14AF2B81197 -:10B9A000884203D8F84988800120704700207047FA -:10B9B000F5488088704710B500F0AFF9102814D012 -:10B9C000F24A0146002092F802C0BCF1000F0CD9E7 -:10B9D000131893F803318B4203D1102818BF10BD00 -:10B9E00003E0401CC0B28445F2D8082010BDE749EE -:10B9F0008A78824286BF01EB0010833000207047B6 -:10BA0000E24B93F802C084459CBF00207047184465 -:10BA100090F8030103EBC00090F853310B70D0F89D -:10BA200054111160B0F85801908001207047D74A36 -:10BA3000114491F80321D4490A700268C1F8062024 -:10BA400080884881704770B516460C460546FBF75E -:10BA500082F9FAF7BEFBCC48407868B1CB488178D0 -:10BA600051B12A19002E0CBF8330C01CFAF78BFB92 -:10BA7000FAF7D2FB012070BD002070BD10B5FAF7B7 -:10BA8000F9FB002804BFFF2010BDBDE81040FAF705 -:10BA900017BCFAF7EFBBBD498A7882429CBF0020F1 -:10BAA0007047084490F8030101EBC00090F85A0178 -:10BAB00000F0010070472DE9F047B44E00273D46E5 -:10BAC000307800288CBFDFF8C882BDE8F0870024FA -:10BAD000B078002808D9311991F80321AA4204D07E -:10BAE000611CCCB2A042F6D81024A04286BF06EB5F -:10BAF0000410C01C002006EBC50999F85A1111F07A -:10BB0000010F16D050B1102C04D0311991F83B110F -:10BB1000012903D0102100F0F0FD50B108F80740D2 -:10BB200038467B1C99F8532109F5AA71DFB2FAF760 -:10BB3000CCFD681CC5B23078A842C8D8BDE8F087F3 -:10BB40002DE9F041914C00263546A07800288CBFA5 -:10BB50008F4FBDE8F0816119C0B291F80381A8420E -:10BB600086BF04EB0510C01C002091F83B11012991 -:10BB700003D0102100F0C1FD58B104EBC800BD5541 -:10BB800090F8532100F5AA713046731CDEB2FAF723 -:10BB90009CFD681CC5B2A078A842DCD8BDE8F08145 -:10BBA00001447A4810B500EB02100A4601218330A7 -:10BBB000FAF7E9FABDE81040FAF72EBB0A467249D7 -:10BBC00010B5497841B1714B997829B10244D81C1C -:10BBD000FAF7D9FA012010BD002010BD6B4A01EB25 -:10BBE000410102EB41010268C1F80B218088A1F8F4 -:10BBF0000F0170472DE9F041644D07460024A878F5 -:10BC0000002898BFBDE8F081C0B2A04217D905EB6B -:10BC1000041010F1830612D01021304600F06DFDA3 -:10BC200068B904EB440005EB400808F20B113A46F2 -:10BC30003046FBF7E6FCB8F80F01A8F80F01601CCE -:10BC4000C4B2A878A042DFD8BDE8F0810146102236 -:10BC5000504800F075BD4F4870474C498A78824281 -:10BC600003D90A1892F843210AB10020704700EB6B -:10BC7000400001EB400000F20B10704743498A7806 -:10BC8000824206D9084490F83B01002804BF0120F5 -:10BC90007047002070472DE9F0410E4607461546D3 -:10BCA0000621304600F029FD384C98B1A17871B1D9 -:10BCB00004F59D7011F0010F18BF00F8015FA17825 -:10BCC000490804D0457000F8025F491EFAD10120EE -:10BCD000BDE8F0813846314600F01FF8102819D031 -:10BCE000A3780021002B15D9621892F80321824213 -:10BCF0000BD1102918BF08290CD004EB010080F8E3 -:10BD00003B514FF00100BDE8F08101F10101C9B2E2 -:10BD10008B42E9D80020BDE8F0812DE9F0411B4DB0 -:10BD20000646002428780F46002811D905EBC400E8 -:10BD300090F85311B14206D10622394600F5AA7097 -:10BD400008F0B4FE38B1601CC4B22878A042EDD827 -:10BD50001020BDE8F0812046BDE8F0810B4910B409 -:10BD60004A7801EBC003521E4A70002283F85A2120 -:10BD700091F802C0BCF1000F16D98B1893F803415B -:10BD800084420DD1102A07E05C010020080F00203A -:10BD900068010020DB1000201CBF10BC704703E0CE -:10BDA000521CD2B29445E8D80A78521ED2B20A7018 -:10BDB00082421BD001EBC20201EBC003D2F853C197 -:10BDC000C3F853C1D2F85721C3F857218C7891F8A2 -:10BDD00000C00022002C09D98B1893F80331634569 -:10BDE00006D1102A1CBF114481F8030110BC704712 -:10BDF000521CD2B29442EFD810BC704770B449497B -:10BE00000D188A78521ED3B28B7095F80321984290 -:10BE10003DD001EB001401EB031C00EB4000DCF80B -:10BE20000360C4F80360DCF80760C4F80760DCF85E -:10BE30000B60C4F80B60DCF80F60C4F80F60DCF82E -:10BE40008360C4F88360DCF88760C4F88760DCF83E -:10BE50008B60C4F88B60DCF88FC0C4F88FC001EB36 -:10BE6000030C03EB43039CF8034101EB430385F808 -:10BE7000034101EB4000D3F80B41C0F80B41B3F88C -:10BE80000F31A0F80F319CF83B0185F83B0101EB25 -:10BE9000C20090F85A0110F0010F1CBF70BC70472F -:10BEA00000208C78002C0DD90B1893F803C1944511 -:10BEB00004D110281CBF70BC704703E0401CC0B206 -:10BEC0008442F1D80878401EC0B20870904204BF86 -:10BED00070BC704701EBC20301EBC000D0F853C146 -:10BEE000C3F853C1D0F85701C3F857018C780B78C9 -:10BEF0000020002C9CBF70BC704700BF01EB000C01 -:10BF00009CF803C19C4506D110281CBF084480F84A -:10BF1000032170BC7047401CC0B28442EED870BC94 -:10BF200070470000080F002010B50A7B02F01F02C6 -:10BF30000A73002202768B1893F808C00CF00103F4 -:10BF40004FEA5C0C0CF0010423444FEA5C0C0CF04B -:10BF5000010423444FEA5C0C0CF001041C444FEA3A -:10BF60005C0303F0010CA4445B0803F00104A44447 -:10BF70005B0803F00104A4440CEB530300EB020C38 -:10BF8000521C8CF8133090F818C0D2B26344037678 -:10BF9000052AD0D3D8B2252888BFFFDF10BD0023E3 -:10BFA000C383428401EBC202521EB2FBF1F1018451 -:10BFB000704770B46FF01F02010C02EA90251F2336 -:10BFC000A1F5AA4054381CBFA1F5AA40B0F1550014 -:10BFD00009D0A1F52850AA381EBFA1F52A40B0F11A -:10BFE000AA00012000D100204FF0000C62466446F8 -:10BFF0008CEA0106F6431643B6F1FF3F11D005F077 -:10C0000001064FEA5C0C4CEAC63C03F001065208FC -:10C010006D085B08641C42EAC632162CE8D370BC7B -:10C02000704770BC002070472DE9F04701270025BC -:10C03000044603290FD04FF4FA4300297CD001298C -:10C0400000F00681022918BFBDE8F0870146BDE86F -:10C05000F047583068E704F158067821304608F078 -:10C06000F2FDB571F57135737573F57335747571CE -:10C070007576B576212086F83E00412086F83F008F -:10C08000FE2086F8730084F82C50258484F85470C0 -:10C0900084F85570282084F856001B20208760877C -:10C0A0004FF4A470E087A0871B20208660864FF4A1 -:10C0B000A470E086A0861B20A4F84000A4F84400E9 -:10C0C0004FF4A470A4F84600A4F842001B20A4F882 -:10C0D0004A00A4F84C00A4F8480067734FF4486085 -:10C0E0006080A4F8D050A4F8D250A4F8D450A4F89A -:10C0F000D650A4F8D850A4F8DA5084F8DD5084F86B -:10C10000DF50A4F8E65084F8E450A4F8F850A4F8FE -:10C11000FA5084F89A5184F89B5184F8A45184F819 -:10C12000A55184F8695184F8705184F8735184F8EA -:10C130008C51BDE8F087FFE7A4F8E65084F8DE50A4 -:10C140006088FD490144B1FBF0F1A4F878104BF68A -:10C150008031A4F87A10E288A4F87E50B4F882C046 -:10C16000D2000CFB00FCB2FBF0F29CFBF0FC521C7A -:10C17000A4F882C092B202FB00FC04F15801A4F8BA -:10C180008020BCF5C84FC4BF521E0A85B3FBF0F235 -:10C19000521CCA8500F5802202F5EE32531EB3FB15 -:10C1A000F0F20A84CB8B03FB00F2B2FBF0F0C88301 -:10C1B000214604F15800FFF7B7FE07F088FDE8B309 -:10C1C000D4F80E006FF01F01020C01EA9026A2F5D0 -:10C1D000AA404FF01F0C54381CBFA2F5AA40B0F182 -:10C1E00055000AD0A2F52850AA381EBFA2F52A4051 -:10C1F000B0F1AA004FF0010901D14FF00009002071 -:10C200000146034680EA02086FEA080848EA010886 -:10C21000B8F1FF3F18D006F00108400840EAC830E6 -:10C2200049080CF0010876085B1C41EAC8314FEA66 -:10C230005C0C162BE6D3B9F1000F00E000E003D050 -:10C2400084F86851BDE8F08784F86871BDE8F0872C -:10C25000B4F89411B4F89821B4F802C004F158006D -:10C26000A4F87E50B4F88240D20004FB0CF4B2FB78 -:10C27000F1F294FBF1F4521C448592B202FB01F4FA -:10C280000285B4F5C84FC4BF521E0285B3FBF1F25C -:10C29000521CC285428C01EBC202521EB2FBF1F26B -:10C2A0000284C28B02FB0CF2B2FBF1F1C183BDE848 -:10C2B000F08770B50025044603290DD04FF4FA42EB -:10C2C000002963D001297DD0022918BF70BD014625 -:10C2D000BDE87040583027E604F158067821304612 -:10C2E00008F0B1FCB571F57135737573F57335747C -:10C2F00075717576B576212086F83E00412086F866 -:10C300003F00FE2086F8730084F82C50258401201D -:10C3100084F8540084F85500282184F856101B2115 -:10C32000218761874FF4A471E187A1871B212186B2 -:10C3300061864FF4A471E186A1861B21A4F8401008 -:10C34000A4F844104FF4A471A4F84610A4F84210C5 -:10C350001B21A4F84A10A4F84C10A4F848106073EC -:10C36000A4F8D850202084F8DA0084F8D050C4F81B -:10C37000D45084F8045184F8055184F80E5184F89F -:10C380000F5184F8F45084F8005170BD60886A49F8 -:10C390000144B1FBF0F1A4F878104BF68031A4F819 -:10C3A0007A10E388A4F87E50B4F882C0DB000CFB5E -:10C3B00000FC9CFBF0FCB3FBF0F304F15801A4F883 -:10C3C00082C000E022E05B1C9BB203FB00FCA4F8EF -:10C3D0008030BCF5C84FC4BF5B1E0B85B2FBF0F2CA -:10C3E000521CCA8500F5802202F5EE32531EB3FBC3 -:10C3F000F0F20A84CB8B03FB00F2B2FBF0F0C883AF -:10C40000214604F15800BDE870408DE5D4F8F830BD -:10C41000B4F802C004F158005989DB89A4F87E50B1 -:10C42000B4F88240DB0004FB0CF4B3FBF1F394FBA3 -:10C43000F1F45B1C44859BB203FB01F40385B4F566 -:10C44000C84FC4BF5B1E0385B2FBF1F2521CC2850C -:10C45000428C01EBC202521EB2FBF1F20284C28B8B -:10C4600002FB0CF2B2FBF1F1C18370BD2DE9F003C8 -:10C47000047E0CB1252C03D9BDE8F00312207047CF -:10C48000002A02BF0020BDE8F003704791F80DC0FC -:10C490001F260123294D4FF00008BCF1000F77D073 -:10C4A000BCF1010F1EBF1F20BDE8F0037047B0F8BC -:10C4B00000C00A7C8F7B91F80F907A404F7C87EA0E -:10C4C000090742EA072282EA0C0C00270CF0FF0958 -:10C4D0004FEA1C2C99FAA9F99CFAACFC4FEA1969AD -:10C4E0004FEA1C6C49EA0C2C0CEB0C1C7F1C94448E -:10C4F000FFB21FFA8CFC032FE8D38CEA020C0F4F1B -:10C500000022ECFB057212096FF0240502FB05C244 -:10C51000D2B201EBD207427602F007053F7A03FA66 -:10C5200005F52F4218BF82767ED104FB0CF2120C67 -:10C53000521CD2B2002403E0FFDB050053E4B36ECB -:10C5400000EB040C9CF813C094453CBFA2EB0C021A -:10C55000D2B212D30D194FF0000C2D7A03FA0CF75A -:10C560003D421CBF521ED2B2002A6AD00CF1010C0F -:10C570000CF0FF0CBCF1080FF0D304F1010C0CF02F -:10C58000FF04052CD7D33046BDE8F0037047FFE722 -:10C5900090F819C00C7E474604FB02C2FE4C4FF0D7 -:10C5A000000CE2FB054C4FEA1C1C6FF024040CFB52 -:10C5B0000422D2B201EBD204427602F0070C247AB4 -:10C5C00003FA0CFC14EA0C0F1FBF82764046BDE84C -:10C5D000F003704790F818C0B2FBFCF40CFB142277 -:10C5E000521CD2B25FF0000400EB040C9CF813C0A4 -:10C5F00094453CBFA2EB0C02D2B212D30D194FF0FE -:10C60000000C2D7A03FA0CF815EA080F1CBF521E15 -:10C61000D2B27AB10CF1010C0CF0FF0CBCF1080F96 -:10C62000F0D304F1010C00E00EE00CF0FF04052C47 -:10C63000DAD3A8E70CEBC40181763846BDE8F003F5 -:10C6400070470CEBC40181764046BDE8F0037047AB -:10C65000D24A016812681140D14A12681143016040 -:10C66000704730B4CF49CD4B00244FF0010C0A780D -:10C67000521CD2B20A70202A08BF0C700D781A68BA -:10C680000CFA05F52A42F2D0097802680CFA01F199 -:10C690005140016030BC7047017931F01F0113BF78 -:10C6A000002000221146704710B4435C491C03F07F -:10C6B000010C5B0803F00104A4445B0803F00104CF -:10C6C000A4445B0803F00104A4445B0803F00104E4 -:10C6D000A4445B0803F001045B08A44403F00104D4 -:10C6E000A4440CEB53031A44D2B20529DDDB012A22 -:10C6F0008CBF0120002010BC704730B40022A1F193 -:10C70000010CBCF1000F11DD431E11F0010F08BF39 -:10C7100013F8012F5C785FEA6C0C07D013F8025F06 -:10C7200022435C782A43BCF1010CF7D1491E5CBF5F -:10C73000405C0243002A0CBF0120002030BC70473F -:10C74000002A08BF70471144401E12F0010F03D0A9 -:10C7500011F8013D00F8013F520808BF704700BFC3 -:10C7600011F8013C437011F8023D00F8023F521EDF -:10C77000F6D1704770B58CB000F110041D46164616 -:10C780000DF1FF3C5FF0080014F8012C8CF801203B -:10C7900014F8022D0CF8022F401EF5D101F1100CF7 -:10C7A0006C460DF10F0108201CF8012C4A701CF892 -:10C7B000022D01F8022F401EF6D1204607F0C8F8DE -:10C7C0007EB16A1E04F130005FF0080110F8013CF0 -:10C7D000537010F8023D02F8023F491EF6D10CB02A -:10C7E00070BD08982860099868600A98A8600B983E -:10C7F000E8600CB070BD38B505460C466846FAF7DF -:10C80000CFFA002808BF38BD9DF900202272A07E13 -:10C81000607294F90A100020511A48BF494295F8F5 -:10C820002D308B42C8BF38BDFF2B08BF38BDE17A21 -:10C83000491CC9B2E17295F82E30994203D8A17A09 -:10C840007F2918BF38BDA2720020E072012038BDD8 -:10C850000C2818BF0B2810D00D2818BF1F280CD08B -:10C86000202818BF212808D0222818BF232804D048 -:10C8700024281EBF2628002070474FF00100704773 -:10C880000C2963D2DFE801F006090E13161B323CB7 -:10C89000415C484E002A5BD058E0072A18BF082A9E -:10C8A00056D053E00C2A18BF0B2A51D04EE00D2A67 -:10C8B0004ED04BE0A2F10F000C2849D946E023B13D -:10C8C000A2F110000B2843D940E0122A18BF112A08 -:10C8D0003ED090F8360020B1122A37D31A2A37D921 -:10C8E00034E0162A32D31A2A32D92FE0A2F10F01EE -:10C8F00003292DD990F8360008B31B2A28D925E042 -:10C90000002B08BF042A21D122E013B1062A1FD030 -:10C910001CE0012A1AD11BE01C2A1CBF1D2A1E2A5A -:10C9200016D013E01F2A18BF202A11D0212A18BFC1 -:10C93000222A0DD0232A1CBF242A262A08D005E04B -:10C9400013B10E2A04D001E0052A01D0002070475F -:10C95000012070472DE9F0410D4604468668F8F73E -:10C96000B6F958B9F7F7E4FF40F23471F7F7E1FC94 -:10C97000A0602046F8F7ABF90028F3D0DDB13046CF -:10C98000A168F8F7F1FC002815DD2844401EB0FB33 -:10C99000F5F707FB05F107E053E4B36EFC51020025 -:10C9A00000520200700100203046F7F7C2FCA06080 -:10C9B0003846BDE8F0810020BDE8F08170B504463E -:10C9C000904228BF70BD101B64280AD325188D42E1 -:10C9D00005D8F8F7F0FC00281CBF284670BD20469B -:10C9E00070BD6420F2E711F00C0F13D001F00401C8 -:10C9F00000290DBF4022102296214FF4167101F537 -:10CA0000BC71A0EB010388428CBF93FBF2F00020C5 -:10CA100080B27047022919BF6FF00D0101EBD00001 -:10CA20006FF00E0101EB9000F2E7808E7047C08E30 -:10CA30007047084418449830002A14BF042100218C -:10CA40000844704730B491F854300A8E13F00C0F3C -:10CA50004FF4747C1CBF0CEB821292B21DD08B8EF3 -:10CA6000934238BF1A464B8E91F8554014F00C0F84 -:10CA70001CBF0CEB83139BB217D0C98E994238BFF1 -:10CA80000B4600280CBF01200020D1189831002847 -:10CA900018BF0420084430BC7047022B07BF920027 -:10CAA0003C32D200703292B2D9E7022C07BF9B0011 -:10CAB0003C33DB0070339BB2DFE710F0010F1CBF8B -:10CAC0000120704710F0020F1CBF0220704710F0C9 -:10CAD000040018BF082070472DE9F04105461746AD -:10CAE00088460126084600F06EFC0446404600F0E9 -:10CAF0006EFC034610F0010F18BF012008D113F09F -:10CB0000020F18BF022003D113F0040018BF082041 -:10CB100014F0010F18BF4FF0010C20D050EA0C01A7 -:10CB200008BF002613F0030F08BF002014F0030F06 -:10CB300008BF4FF0000C95F85410814208BF002048 -:10CB4000387095F85510614508BF4FF0000C87F814 -:10CB500001C0002808BFBCF1000F1CD10DE014F08B -:10CB6000020F18BF4FF0020CD8D114F0040F14BFFD -:10CB70004FF0080C4FF0000CD0E7404600F02DFCC1 -:10CB8000B5F85810401A00B247F6FE71884201DC31 -:10CB9000002800DC00263046BDE8F08101281CBFDB -:10CBA00002280020704718B4CBB2C1F3072CC1B2E1 -:10CBB000C0F30720012B05D0022B08BFBCF1020FE8 -:10CBC0001BD002E0BCF1010F17D0012904D00229CB -:10CBD00008BF022811D001E001280ED001EA0C01A3 -:10CBE00061F3070210EA030060F30F22D0B210F0E5 -:10CBF000020F18BF02200BD106E0084003EA0C0127 -:10CC0000084060F30702EFE710F0010018BF0120B1 -:10CC10008DF80000C2F3072010F0020F18BF0220A9 -:10CC200003D110F0010018BF01208DF80100BDF8FC -:10CC3000000018BC7047162A10D12A220C2818BFF1 -:10CC40000D280FD04FF0230C1F280DD031B10878DC -:10CC5000012818BF002805D0162805D000207047ED -:10CC6000012070471A70FBE783F800C0F8E701293C -:10CC700002D0022905D007E0002804BF40F2E240BC -:10CC8000704740F6C410704700B5FFDF40F2E24045 -:10CC900000BD8A8EC98E00280CBF012000201144DF -:10CCA0009831002818BF0420084470474078704726 -:10CCB00030B50546007801F00F0220F00F00104358 -:10CCC0002870092912D2DFE801F0050705070509D8 -:10CCD000050B0F0006240BE00C2409E0222407E0DA -:10CCE00001240020E87003E00E2401E00024FFDFAF -:10CCF0006C7030BD007800F00F0070470A68C0F813 -:10CD000003208988A0F807107047D0F803200A6034 -:10CD1000B0F80700888070470A68C0F80920898841 -:10CD2000A0F80D107047D0F809200A60B0F80D0087 -:10CD3000888070470278402322F0400203EA811184 -:10CD40001143017070470078C0F38010704702787B -:10CD5000802322F0800203EAC11111430170704761 -:10CD60000078C009704770B514460E4605461F2A64 -:10CD700088BFFFDF2246314605F1090007F0C2FEF9 -:10CD8000A01D687070BD70B544780E460546062C2F -:10CD900038BFFFDFA01F84B21F2C88BF1F2422468C -:10CDA00005F10901304607F0ADFE204670BD70B5B3 -:10CDB00014460E4605461F2A88BFFFDF224631462D -:10CDC00005F1090007F09EFEA01D687070BD09689E -:10CDD000C0F80F1070470A88A0F8132089784175B1 -:10CDE000704790F8242001F01F0122F01F02114328 -:10CDF00080F824107047072988BF072190F8242065 -:10CE0000E02322F0E00203EA4111114380F82410EC -:10CE100070471F3008F02BB810B5044600F009FB2E -:10CE2000002818BF204410BDC17811F03F0F1BBF70 -:10CE3000027912F0010F0022012211F03F0F1BBFF7 -:10CE4000037913F0020F002301231A4402EB42027C -:10CE5000530011F03F0F1BBF027912F0080F0022A0 -:10CE6000012203EB420311F03F0F1BBF027912F0C6 -:10CE7000040F00220122134411F03F0F1BBF02795F -:10CE800012F0200F0022012202EBC20203EB420348 -:10CE900011F03F0F1BBF027912F0100F0022012288 -:10CEA00002EB42021A4411F03F0F1BBF007910F051 -:10CEB000400F00200120104410F0FF0014BF01219A -:10CEC00000210844C0B2704770B50278417802F082 -:10CED0000F02082A4DD2DFE802F004080B4C4C4C3C -:10CEE0000F14881F1F280AD943E00C2907D040E0FF -:10CEF000881F1F2803D93CE0881F1F2839D801202C -:10CF000070BD4A1EFE2A34D88446C07800258209A6 -:10CF1000032A09D000F03F04601C884204D8604610 -:10CF2000FFF782FFA04201D9284670BD9CF803009C -:10CF30004FF0010610F03F0F1EBF1CF104000078F7 -:10CF400010F0100F13D064460421604600F071FA0F -:10CF5000002818BF14EB0000E6D0017801F03F0173 -:10CF60002529E1D280780221B1EB501FDCD3304675 -:10CF700070BD002070BD70B50178012501F00F0172 -:10CF8000002404290AD007290DD008291CBF00203D -:10CF900070BD40780E2836D0204670BD4078801F86 -:10CFA0001F2830D9F8E7844640789CF803108A0996 -:10CFB000032AF1D001F03F06711C8142ECD8604693 -:10CFC000FFF732FFB042E7D89CF8030010F03F0FA4 -:10CFD0001EBF1CF10400007810F0100F13D066463D -:10CFE0000421604600F025FA002818BF16EB000067 -:10CFF000D2D0017801F03F012529CDD280780221DD -:10D00000B1EB501FC8D3284670BD10B4017801F0B1 -:10D010000F01032920D0052921D14478B0F8191037 -:10D02000B0F81BC0B0F81730827D222C17D106292A -:10D0300015D3B1F5486F98BFBCF5FA7F0FD272B126 -:10D04000082A98BF8A420AD28B429CBFB0F81D00C2 -:10D05000B0F5486F03D805E040780C2802D010BC2A -:10D060000020704710BC012070472DE9F0411F4699 -:10D0700014460D00064608BFFFDF2146304600F08B -:10D08000D8F9040008BFFFDF30193A462946BDE849 -:10D09000F04107F037BDC07800F03F007047C02274 -:10D0A00002EA8111C27802F03F021143C170704759 -:10D0B000C07880097047C9B201F00102C1F3400392 -:10D0C0001A4402EB4202C1F3800303EB4202C1F3B4 -:10D0D000C00302EB4302C1F3001303EB43031A4402 -:10D0E000C1F3401303EBC30302EB4302C1F380130C -:10D0F0001A4412F0FF0202D0521CD2B20171C3785E -:10D1000002F03F0103F0C0031943C170511C41708C -:10D1100070472DE9F0410546C078164600F03F04FF -:10D120001019401C0F46FF2888BFFFDF2819324620 -:10D130003946001D07F0E6FCA019401C6870BDE8E8 -:10D14000F081C178407801F03F01401A401E80B262 -:10D15000704710B590F803C00B460CF03F014478BF -:10D160000CF03F0CA4EB0C0CACF1010C1FFA8CF48E -:10D17000944288BF14462BB10844011D224618462C -:10D1800007F0C0FC204610BD4078704700B502781B -:10D1900001F0030322F003021A430270012914BFB5 -:10D1A0000229002104D0032916BFFFDF012100BDA1 -:10D1B000417000BD00B5027801F0030322F00302C4 -:10D1C0001A430270012914BF0229002104D0032947 -:10D1D00016BFFFDF012100BD417000BD007800F0E7 -:10D1E00003007047417841B1C078192803D2C04A82 -:10D1F000105C884201D1012070470020704730B593 -:10D2000001240546C17019293CBFB948445C02D3CA -:10D21000FF2918BFFFDF6C7030BD70B515460E4694 -:10D2200004461B2A88BFFFDF65702A463146E01C92 -:10D23000BDE8704007F066BCB0F807007047B0F872 -:10D2400009007047C172090A01737047B0F80B00FA -:10D25000704730B4B0F80720B0F809C0B0F8053016 -:10D260000179941F40F67A45AC4298BFBCF5FA7F2D -:10D270000ED269B1082998BF914209D293429FBF4B -:10D28000B0F80B00B0F5486F012030BC98BF704774 -:10D29000002030BC7047001D07F0E9BD021D0846A4 -:10D2A000114607F0E4BDB0F80900704700797047F7 -:10D2B0000A68426049688160704742680A60806815 -:10D2C000486070470988818170478089088070476D -:10D2D0000A68C0F80E204968C0F812107047D0F8EC -:10D2E0000E200A60D0F81200486070470968C0F844 -:10D2F00016107047D0F81600086070470A68426040 -:10D3000049688160704742680A6080684860704779 -:10D310000968C1607047C06808607047007970474D -:10D320000A68426049688160704742680A608068A4 -:10D33000486070470171090A417170478171090A9B -:10D34000C17170470172090A417270478172090AFE -:10D35000C172704780887047C088704700897047E5 -:10D360004089704701891B2924BF4189B1F5A47FF9 -:10D3700007D381881B2921BFC088B0F5A47F012075 -:10D380007047002070470A684260496881607047B2 -:10D3900042680A60806848607047017911F0070FA1 -:10D3A0001BBF407910F0070F002001207047017962 -:10D3B00011F0070F1BBF407910F0070F002001206C -:10D3C000704701717047007970474171704740792B -:10D3D00070478171090AC1717047C088704745A2C2 -:10D3E00082B0D2E90012CDE900120179407901F052 -:10D3F000070269461DF80220012A07D800F007003D -:10D40000085C01289EBF012002B07047002002B0D6 -:10D4100070470171704700797047417170474079DA -:10D42000704730B50C460546FB2988BFFFDF6C709E -:10D4300030BDC378024613F03F0008BF7047052097 -:10D44000127903F03F0312F0010F36D0002914BF08 -:10D450000B20704712F0020F32D0012914BF801D3B -:10D46000704700BF12F0040F2DD0022914BF401CDA -:10D47000704700BF12F0080F28D0032914BF801C8A -:10D48000704700BF12F0100F23D0042914BFC01C36 -:10D49000704700BF12F0200F1ED005291ABF1230AE -:10D4A000C0B2704712F0400F19D006291ABF401CB5 -:10D4B000C0B27047072918D114E00029CAD114E07E -:10D4C0000129CFD111E00229D4D10EE00329D9D10D -:10D4D0000BE00429DED108E00529E3D105E00629A7 -:10D4E000E8D102E0834288BF704700207047000007 -:10D4F0000452020000010102010202032DE9F04181 -:10D50000FE4E0446736893F828000127002528B1D1 -:10D5100093F8A001D8B993F84801C0B193F8480135 -:10D5200098B383F8A071D3F84C113C2269B36570AD -:10D53000201D07F0E7FA052020702771706890F829 -:10D54000A011002918BF80F8485107D034E083F8B3 -:10D55000A05103F12A014FF48E72E7E71D212A3012 -:10D5600007F04FFB70687F2180F84510FF2180F89D -:10D57000381080F82B1080F83E10818E21F0600169 -:10D580002031818680F8285016E0FFE793F82200CA -:10D59000012814D0187801281BD093F850010128D5 -:10D5A0001CBF0020BDE8F081657018202070D3F802 -:10D5B0005201606083F850510120BDE8F081657030 -:10D5C00007202070586A606083F822500120BDE86F -:10D5D000F0816570142020702022991C201D07F016 -:10D5E00091FA257271680D7081F85051C448828893 -:10D5F0008284D0F86421527B80F8262080F8227043 -:10D60000D1F864010088F5F783F9F4F72AFED3E72F -:10D61000BA4840680178002914BF80884FF6FF702F -:10D62000704770B5B54C0546606890F87411204697 -:10D630000629806803D0FFF73BFD38B117E0FFF7FC -:10D6400037FD90B9A068FFF733FD10E0616891F8ED -:10D650007401082809D025B191F83E00FF2806D0B2 -:10D6600003E091F82B00FF2801D0012070BD0020BD -:10D6700070BDF8B5A14C07460E46606890F82810BA -:10D68000002906BF90F848110029F8BD00F13305C4 -:10D6900020787F2808BFFFDF207828707F20207047 -:10D6A000606890F89A1100F5D470085C012808BFF2 -:10D6B000012503D0022814BFFFDF0225606880F82F -:10D6C000365090F8971180F8461090F87411072999 -:10D6D0000CD190F8A401012808BF012503D002282D -:10D6E00014BFFFDF0225606880F83750606890F84B -:10D6F00074010025062804D1A068FFF7D9FC002892 -:10D700003DD0606890F87411082904BF90F8A10119 -:10D7100002280ED04FF00301A068FFF77DFB40B157 -:10D7200041780A09616881F838200088C0F30B004D -:10D7300048870095A068FFF7DDFA01466068BDF8EC -:10D74000005090F83420520962F34615ADF80050AD -:10D75000072918BFFFDF1CD0BDF8000000906068EB -:10D76000BDF8001081860421A068FFF755FB002852 -:10D770007DD0B0F80100C004C00C79D0ABE0A06847 -:10D78000C17811F03F0F1CBF007910F0100FB8D115 -:10D79000CFE790F87411062916D0072936D008294A -:10D7A00073D00A2918BFFFDFD6D145F00A01ADF8C2 -:10D7B000001090F83E00FF2814BF0120002060F305 -:10D7C0008201ADF80010C7E7A068FFF771FC58B1FF -:10D7D000012808BF45F0010046D0022814BFFFDF32 -:10D7E00045F0020040D0B7E7A068C17811F03F0FC4 -:10D7F0001CBF007910F0020FAED00120FFF711FF1F -:10D80000002808BF45F004002ED0A5E7A068FFF768 -:10D810004FFCB0B1012804BF45F00100ADF8000095 -:10D820000FD0022898D145F00200ADF80000A168A1 -:10D83000CA7812F03F0F1CBF097911F0020F21D1F5 -:10D8400018E0A068C17811F03F0F1CBF007910F0FC -:10D85000020F05D1606890F83E00FF283FF47CAFCE -:10D86000BDF8000040F00400ADF8000074E726E0C9 -:10D870002AE00AE0616891F83E10FF2908BF20F015 -:10D880000400F1D040F00400EEE790F83E10FF29CC -:10D890001CBF45F00401ADF8001090F8A10102286A -:10D8A000BDF800000CBF40F0080020F00800ADF803 -:10D8B00000000CBF40F0020020F00200D4E76068D6 -:10D8C000818E21F0600105E06068818E21F06001A9 -:10D8D00001F140018186606890F87401A068C17808 -:10D8E00011F03F0F10D0017911F0400F0CD04FF024 -:10D8F0000601FFF791FA0078616803E074010020E7 -:10D90000EC10002081F84500606890F8740106284A -:10D9100004D00020FFF785FE18BB04E0022F18BFDB -:10D92000012FF6D1F8BDA068C17811F03F0F33D0B8 -:10D93000017911F0010F2FD0616801F12C0791F8E6 -:10D94000783101F12B05FF2B0CD03A4629461846B9 -:10D95000FEF756F8002808BFFFDF287840F00200E5 -:10D96000287019E0FFF7EFF92870A068FFF7C2F9F7 -:10D97000072804D23946A068FFF7C7F90CE0A06871 -:10D98000FFF7B8F9072807D10021A068FFF744FA8C -:10D99000016839608088B8800120FFF742FE80BBB3 -:10D9A000A068C17811F03F0F2BD0017911F0020F60 -:10D9B00027D0616801F13F0591F876216F1E1AB1F9 -:10D9C000022E18BF032E08D0FFF794F907280AD2B9 -:10D9D0002946A068FFF7A7F912E0D1F85A0128609C -:10D9E000B1F85E010BE0A068FFF784F9072807D1C2 -:10D9F0000121A068FFF710FA016829608088A880DB -:10DA00003E70606890F87401062808BFF8BD0728CA -:10DA100018BF082802D00A2806D0F8BDA068FFF772 -:10DA200047FB022808BFF8BD606800F14705A06801 -:10DA3000FFF787FB616891F83230C3F1FF02904233 -:10DA400028BF104605D98A8E22F0600202F14002FA -:10DA50008A86C2B203EB0501A068FFF77AFB616812 -:10DA600091F83220104481F83200F8BD2DE9F047DA -:10DA7000F74D06466C6894F82800002818BFBDE8EA -:10DA8000F0871D212A34204607F0BBF801272770B4 -:10DA9000A868FFF72FF920B3012827D002282AD041 -:10DAA000062818BFFFDF2BD004F11D01A868FFF77F -:10DAB0006AF92072686804F1020904F1010890F81B -:10DAC0007801FF2821D04A464146FDF799FF0028FA -:10DAD00008BFFFDF98F8000040F0020088F800005F -:10DAE00031E0608940F013006081DDE7608940F03B -:10DAF00015006081DEE7608940F010006081D3E7A7 -:10DB0000608940F012006081CEE7A868FFF71BF93A -:10DB100088F80000A868FFF7EDF8072804D2494606 -:10DB2000A868FFF7F2F80EE0A868FFF7E3F8072807 -:10DB300009D10021A868FFF76FF90168C9F8001042 -:10DB40008088A9F80400287804F109087F2808BF14 -:10DB5000FFDF287888F800004FF07F0985F80090F3 -:10DB6000277300206073FF20A073A17A11F0040FC7 -:10DB700008BF20752DD0686804F1150804F1140A57 -:10DB800090F8761119B1022E18BF032E09D0A8689B -:10DB9000FFF7B0F807280BD24146A868FFF7C3F893 -:10DBA00015E0D0F85A11C8F80010B0F85E010CE08A -:10DBB000A868FFF79FF8072809D10121A868FFF797 -:10DBC0002BF90168C8F800108088A8F804008AF8CA -:10DBD000006084F81B90686890F89711217780F8AE -:10DBE0002870BDE8F047062003F08BBB2DE9F0411B -:10DBF000974C606890F82810FF250026A1B91D21D8 -:10DC00002A3006F0FEFF60687F2180F8451080F81A -:10DC1000385080F82B5080F83E50818E21F0600102 -:10DC20002031818680F82860606800F5D47290F811 -:10DC30009A11895C80F8A411002002F082FFF8B1EB -:10DC4000F8F7AEFF6068834990F879010F5C3846B9 -:10DC5000F8F771FD606880F8977190F8A41125209D -:10DC6000F8F766FC606890F8A4110120F8F77BFDD6 -:10DC7000606890F86811032918BF022904D00FE0EA -:10DC8000BDE8F04100F064BF90F89A1100F5D4703F -:10DC9000085C012804D1012211460020F9F798F808 -:10DCA000F9F773F8606890F8A401012807BF01270D -:10DCB000032100270521A068FDF780FF616881F836 -:10DCC000760140B1002F0CBF50274027F8F76DFABE -:10DCD0003846F9F72DF86068D0F87C01F8F76CFF4A -:10DCE000606890F87811FF291CBF00F29110FDF7D1 -:10DCF0009EFE6068062180F8775180F8785180F8A0 -:10DD0000856180F8846180F8A16180F87411BDE8B4 -:10DD1000F08170B54E4C0646606800F5BA75204635 -:10DD2000806841B1D0F80510C5F81D10B0F80900A1 -:10DD3000A5F8210003E005F11D01FEF7E6FFA0684C -:10DD4000FFF701F885F82400A0680021032E018068 -:10DD500002D0052E04D046E00321FEF7A9FF42E0E1 -:10DD60000521FEF7A5FF6068D0F8640100F10E01FF -:10DD7000A068FFF72CF86068D0F8640100F1120188 -:10DD8000A068FFF728F8D4E90110D1F86421527D8A -:10DD90008275D1F86421D28AC275120A0276D1F84E -:10DDA000642152884276120A8276D1F864219288E0 -:10DDB000C276120A0277D1F86421D2884277120A19 -:10DDC0008277D1F864110831FFF723F86068D0F842 -:10DDD0006401017EA068FFF704F8606890F8AA115A -:10DDE000A068FFF708F805F11D01A068FEF794FF91 -:10DDF00095F82410A068FEF7AAFF606800F5AD75DD -:10DE000090F8596190F8751191B190F86811032953 -:10DE100006D190F86111002918BF90F87A0101D15C -:10DE200090F87701FDF719FF00281CBF0126054671 -:10DE30002946A068FEF762FF3146A068BDE8704041 -:10DE4000FEF778BF0249496881F873017047000006 -:10DE5000740100202052020070B5FE4D686890F8F1 -:10DE6000741102291FBF90F8741101290C2070BD94 -:10DE700000F166014FF00004C0F84C1180F84841F1 -:10DE80004FF01D0100F12A0006F0BBFE68687F21FB -:10DE900080F84510FF2180F8381080F82B1080F8AA -:10DEA0003E10818E21F060012031818680F828406B -:10DEB000047080F8224080F85041012680F8A0616B -:10DEC00090F8760130B1F8F746FFF8F782F9686804 -:10DED00080F876416868072180F8724180F86161B6 -:10DEE00080F8684180F8794180F8734180F8A14159 -:10DEF00080F86011002070BDD64910B58860486870 -:10DF00000021A0F8A51180F8A711012180F8741153 -:10DF1000FFF7A2FF002818BFFFDF10BD2DE9F04179 -:10DF2000CC4D0446686890F87401012818BF022897 -:10DF300004D003281CBF0C20BDE8F081607A0228C1 -:10DF400023D0F8F729FB0220F8F730FE686890F933 -:10DF50007301F8F7E2FBA868F8F72BFEBE48F8F764 -:10DF60000BFEBE48F8F7DFFB686890F8591100F522 -:10DF7000AD70F8F78AFB0F210720F8F7A2FB68685D -:10DF800090F86101F0B1FDF7DBFD6868217A00F5DA -:10DF9000D47280F89A11217A895C80F8A4116168A2 -:10DFA000C0F87C112168C0F88011627A6AB1012A38 -:10DFB00024D00526022A08BF80F8746176D0032A8F -:10DFC00075D0B5E0FDF777FDDFE7A54B90F860C1B0 -:10DFD000002100BF90F87921521CA3FB0264640861 -:10DFE000A4EB8404224480F879212CFA02F212F086 -:10DFF000010F03D1491CC9B20329EBD3002680F8D5 -:10E00000A16190F87111002904BF90F875010028F2 -:10E0100048D0F6F78DFC044668682146D0F86C01BC -:10E02000F7F7A2F9DFF83C82074690FBF8F008FB0F -:10E03000107041422046F6F77CF96968C1F86C011E -:10E0400097FBF8F0D1F89C211044C1F89C01FDF732 -:10E05000AFFC6A68D2F89C11884223D8C2F89C6150 -:10E06000C2F86C4192F8750100281CBF0120FDF731 -:10E07000C1FD0121686890F87221002A1CBF90F848 -:10E080007121002A0ED090F8593100F5AD72012BA4 -:10E0900004D1527902F0C002402A09D000F5AD70D7 -:10E0A000F9F7E6FA6968042081F8740140E009E0B4 -:10E0B0000124FDF7D0FD6968224601F5AD71F9F73D -:10E0C000A0FAEFE7002918BFFFDF686800F2A51487 -:10E0D00090F8A701400908BF012703D0012814BF09 -:10E0E00000270227F8F75CFD207800F03F04204667 -:10E0F000F8F721FB6868394680F89741FF20F8F768 -:10E1000017FA39460120F8F76DFBF8F73EFE0521B6 -:10E11000A868FDF753FD696881F8760128B150249D -:10E12000F8F743F82046F8F703FE686880F8746152 -:10E130000020BDE8F08110B5464C606890F874117D -:10E1400004290DD005291CBF0C2010BD90F8A10199 -:10E1500048B100F020FD6168082081F8740108E0F2 -:10E16000FFF744FD05E000F016FD6168072081F827 -:10E170007401002010BD3749002210F0010F4968DA -:10E1800002D0012281F8A82110F0080F03D0114419 -:10E19000082081F8A801002070472E49496881F8BD -:10E1A0007001704710B52B4C636893F85831022BFF -:10E1B00014BF032B00280BD100291ABF022901200C -:10E1C00000201146FDF7F7FB08281CBF012010BDF9 -:10E1D000606890F85801002816BF0228002001202E -:10E1E000BDE81040F9F7CEB91A48406890F85801D8 -:10E1F000002816BF022800200120F9F7C3B91549ED -:10E20000496881F8580170471249496881F87201DC -:10E21000704770B50F4C616891F85801002816BF1F -:10E2200002280020012081F8590101F5AD71F9F7AC -:10E2300093F9606890F85811022916BF032901214B -:10E24000002180F8751190F8592100F5AD734FF059 -:10E25000000509E0740100201D5202002352020053 -:10E26000ABAAAAAA40420F00012A04BF5B7913F0AF -:10E27000C00F0AD000F5AD73012A04D15A7902F01B -:10E28000C002402A01D0002200E0012280F8712162 -:10E29000002A04BF002970BDC0F89C51F6F748FB66 -:10E2A0006168C1F86C0191F8750100281CBF00205D -:10E2B000FDF7A0FC0026606890F8721100291ABFD3 -:10E2C00090F87111002970BD90F8592100F5AD71D9 -:10E2D000012A04D1497901F0C001402906D029461C -:10E2E000BDE8704000F5AD70F9F7C2B9FDF7B3FCB9 -:10E2F00061683246BDE8704001F5AD71F9F781B94A -:10E3000070B5FF4D0C4600280CBF0123002369683F -:10E3100081F8613181F86A014FF0080081F87A01D3 -:10E320000CD1002C1ABF022C012000201146FDF751 -:10E3300042FB6968082881F87A0101D0002070BD8D -:10E34000022C14BF032C1220F8D170BD002818BF76 -:10E35000112070470328EA4A526808BFC2F86411C6 -:10E3600082F8680100207047E548416891F868012B -:10E37000032804D0012818BF022807D004E091F830 -:10E380006A01012808BF70470020704791F86901B1 -:10E39000012814BF03280120F6D1704770B5F8F7A3 -:10E3A00092FCF8F771FCF8F763FBF8F7EBFBD44C41 -:10E3B0000025606890F8760130B1F8F7CCFCF7F7EB -:10E3C00008FF606880F8765160680121A0F8A551C7 -:10E3D00080F8A75180F8741180F85051002070BD6A -:10E3E000C74810B5406800F5C47006F0C2F80020B8 -:10E3F00010BDC3480121406890F86821032A03BF7B -:10E4000080F85211D0F864211288002218BF80F8D9 -:10E410005221A0F8542180F850117047B84949683A -:10E4200081F8AA0170470178002311F0010FB44967 -:10E4300049680AD04278032A08BFC1F8643181F8DC -:10E440006821012281F8A8211346027812F0040FF6 -:10E450000CD082784FF0000C032A08BFC1F864C1C9 -:10E4600081F868210B44082283F8A821C27881F83A -:10E4700058210279002A16BF022A0123002381F8BD -:10E48000613181F86921427981F86021807981F8D0 -:10E4900070014FF0000070479948406800F5D27055 -:10E4A00070472DE9F041964C05460E46606890F89D -:10E4B0007401032818BFFFDF022D1EBF032DFFDFED -:10E4C000BDE8F0814FF000074FF00105AEB1606884 -:10E4D00090F8371089B1818E21F0600101F140017F -:10E4E000818690F8282042B980F8285011F0080F52 -:10E4F00014BF0720062002F004FF6068A0F8A57191 -:10E5000080F8A77180F87451BDE8F08100F020BB5D -:10E510002DE9F0477A4C0646894660684FF00108BD -:10E52000072E90F8617138BF032533D3082E4FF0C2 -:10E53000000088BFBDE8F087FFF773F8002873D1AB -:10E54000A068C17811F03F0F12D0027912F0010FCC -:10E550000ED061684FF0050591F87621002A18BFAA -:10E56000B9F1000F16D091F8A411012909D011E0DA -:10E5700011F03F0F1ABF007910F0100F002F53D188 -:10E580004CE04FF001024FF00501FDF75CFA6168C5 -:10E5900081F87601A16808782944C0F3801030B171 -:10E5A000487900F0C000402808BF012000D00020BA -:10E5B000616891F87611002918BF002807D0FDF78F -:10E5C0005DFA0146606880F8771180F884816068A0 -:10E5D00090F87711FF292AD080F878110846FDF7C6 -:10E5E0005AFA40EA0705606890F87721FF2A18BFB9 -:10E5F000002D10D0072E0ED3A068C17811F03F0F68 -:10E6000009D0017911F0020F05D00B21FDF7C8FAEE -:10E61000606880F885812846BDE8F087FDF707F837 -:10E62000002808BFBDE8F0870120BDE8F087A36897 -:10E6300090F8612159191B78C3F3801C00F27713FD -:10E640006046FDF758F80546CDE7F0B52C4C074677 -:10E6500083B060686D460078002818BFFFDF002691 -:10E6600061688E70D1F8640102888A8042884A838A -:10E6700082888A83C088C88381F8206047B10121DD -:10E68000A068FEF7C9FB0546A0680078C10907E04D -:10E690006946A068FEF739FBA0680078C0F38011D6 -:10E6A0006068012790F87521002A18BF002904D05E -:10E6B0006A7902F0C002402A29D090F87221002A1B -:10E6C00018BF002903D0697911F0C00F1FD000F1E5 -:10E6D0000E0006F0C3FB616891F87801FF281CD09A -:10E6E00001F10802C91DFDF78BF9002808BFFFDF03 -:10E6F0006068C17941F00201C171D0F8911101E067 -:10E70000740100204161B0F89511018310E029687F -:10E71000C0F80E10A9884182DDE7D1F86401427E7D -:10E72000CA71D0F81A208A60C08B88814E610E832E -:10E7300060680770D0F8642190F8731182F8571060 -:10E74000D0F864010088F4F7E3F8F3F77BFD03B039 -:10E75000F0BD2DE9F041FC4C05460126606800271C -:10E7600090F86811012918BF022902D0032918BFA7 -:10E77000FFDF55B1A068FEF7A7FB18B9A068FEF748 -:10E78000FAFB10B100F085FA2DE0606890F8740192 -:10E790007F25801F062828BFBDE8F081DFE800F054 -:10E7A00003191930443EE848F8F7FAFA002808BF80 -:10E7B0002570F8F7E0FA606890F8760130B1F8F764 -:10E7C000CAFAF7F706FD606880F87671F8F750F935 -:10E7D00020E0DD48F8F7E4FA002808BF2570F8F7D4 -:10E7E000CAFA00F03CFA102880F0DE80DFE800F082 -:10E7F00036B6BFC3DCDC12CCD4DCDCDC249C38694C -:10E80000D148F8F7CDFA002808BF2570F8F7B3FA19 -:10E81000F8F72EF9BDE8F041FFF7E8B9CA48F8F774 -:10E82000BFFA30B9257004E0C748F8F7B9FA0028F4 -:10E83000F8D0F8F7A0FA9AE0032002F082F9002855 -:10E8400071D000210320FFF764FA0122114610461F -:10E85000F8F7BEFA61680C2081F87401BDE8F08118 -:10E86000606800F5BA75042002F06BF900287ED0CC -:10E870000E202870012002F044FDA0686168007835 -:10E88000C0F3401081F8990100210520FFF741FAFB -:10E89000AE49A0684FF0200CD1F864210378527B78 -:10E8A00023F020030CEA42121A430270D1F86401EB -:10E8B00095F82530427B1A4042732820D1F8641124 -:10E8C0002DE0062002F03DF9002850D09F4D0F208A -:10E8D00085F87401022002F014FD6068012190F8AF -:10E8E000A4210846F8F774FAA06861680078C0F3BC -:10E8F000401081F8990101210520FFF70AFAD5F8A7 -:10E9000064014673A068017821F020010170F8F7D6 -:10E91000FDFC002818BFFFDF2820D5F8641181F81E -:10E920005600BDE8F08122E0052002F00AF9F0B1BE -:10E9300001210320FFF7EDF9F8F7E8FC002818BFE4 -:10E94000FFDF6068012190F8A4210846F8F740FA3B -:10E9500061680D2081F87401BDE8F0816068A0F85D -:10E96000A57180F8A77180F87461BDE8F081BDE8F9 -:10E97000F04100F0EDB86168032081F87401BDE852 -:10E98000F041082002F0BDBC00F005F961680720E5 -:10E9900081F87401BDE8F08100F0FDF8616808209D -:10E9A00081F87401BDE8F081FFDFBDE8F08170B54A -:10E9B000654C606890F874110C2929D00D2932D06B -:10E9C0000E293BD00F291CBFFFDF70BD042002F0D1 -:10E9D00098FC606890F8A4110E20F7F7A9FD0021BB -:10E9E0009620F8F715F9F8F7D0F90521A068FDF79A -:10E9F000E5F8616881F8760128B15025F7F7D5FB75 -:10EA00002846F8F795F961680B2081F8740170BD0C -:10EA1000F8F7BBF900219620F8F7FAF861680920A9 -:10EA200081F8740170BD00219620F8F7F1F8F8F72D -:10EA3000ACF961680A2081F8740170BD0021A0F86A -:10EA4000A51180F8A711012180F874110020FFF7AB -:10EA5000FCFDBDE87040032002F053BC70B53A4C99 -:10EA6000606890F874117F25891F062928BF70BD42 -:10EA7000DFE801F017321D033D113348F8F790F934 -:10EA8000002808BF2570F8F776F9F7F7F1FFBDE821 -:10EA90007040FFF7ABB82C48F8F782F960BB2570DF -:10EAA0002AE02948F8F77CF9D8B9257019E090F8E0 -:10EAB000371089B1818E012221F0600140318186B9 -:10EAC00090F8283043B980F8282011F0080F14BFBF -:10EAD0000720062002F015FC1B48F8F761F9002812 -:10EAE000E3D0F8F748F9BDE8704000F031B81648B7 -:10EAF000F8F756F90028D2D0F8F73DF96068002100 -:10EB000000F5C47005F0E6FCBDE8704000F020B8E8 -:10EB100070B50D4C06460D46012908D0606890F886 -:10EB2000A4213046BDE87040134602F034BCF7F72C -:10EB3000C7FC61680346304691F8A4212946BDE828 -:10EB4000704002F028BC000074010020EC1000208E -:10EB500070B5F8F7B8F8F8F797F8F7F789FFF8F70E -:10EB600011F8F84C0025606890F8760130B1F8F79C -:10EB7000F2F8F7F72EFB606880F8765160680221A2 -:10EB800080F87411A0F8A55180F8A751BDE8704035 -:10EB9000002002F0B6BB2DE9F041EA4C616891F823 -:10EBA000A701400908BF012503D0012814BF002593 -:10EBB0000225D1F88021002A2FD001F2A5170028C4 -:10EBC00008BF012603D0012814BF00260226F7F74C -:10EBD000E7FF387800F03F073846F7F7ACFD60688C -:10EBE000314680F89771FF20F7F7A2FC6068324643 -:10EBF000D0F880110120F7F779FEF8F7C6F8052163 -:10EC0000A068FCF7DBFF616881F8760128B1502627 -:10EC1000F7F7CBFA3046F8F78BF86068D0F87C014C -:10EC2000F7F7CAFF606890F86811022906D0032937 -:10EC300004BF90F89001012804D008E090F89001FA -:10EC4000022804D12A4601210020F8F7C1F86068A3 -:10EC5000002180F8A45180F88411BDE8F081B94802 -:10EC600010B5406890F8371089B1818E012221F0EB -:10EC700060014031818690F8283043B980F828201F -:10EC800011F0080F14BF0720062002F03AFB022003 -:10EC900010BD2DE9F04FAB4D83B00024686890F8AB -:10ECA00074017F27801F26464FF00108062880F058 -:10ECB0003E82DFE800F003080893FDFC00F0ACFCA6 -:10ECC000044600F035BA9F48F8F76AF8002808BFF4 -:10ECD0002F70F8F750F8A868FEF70CF804460728DC -:10ECE0006AD1A868FEF7E4F9696891F89021824238 -:10ECF00062D191F87401062804D1A868FEF7D8F90A -:10ED0000002836D0686890F87411082904BF90F87C -:10ED1000A101022813D04FF00301A868FEF77CF888 -:10ED2000002849D06968437891F83820B2EB131F66 -:10ED300042D10088498FC0F30B0088423CD10021AA -:10ED40002046FFF7E5FBB0B38DF800608DF8046056 -:10ED50008DF80860A868FF24C17811F03F0F1CBF30 -:10ED6000007910F0020F1CD00120FEF75AFC50B1C0 -:10ED700017E0A868C17811F03F0F1CBF007910F0B0 -:10ED8000100FBFD1DBE702AA694601A800F0D4F951 -:10ED9000686890F859419DF80000002818BF44F0B9 -:10EDA000020423469DF808209DF804109DF80000F9 -:10EDB00000F0A0FA02E0FFE7FFF751FF04466868A1 -:10EDC00090F87601002800F0B381F7F7C4FFF7F759 -:10EDD00000FA686880F8766100F0AAB9A868FDF7C3 -:10EDE00089FF8146A9686868CA7890F891319A428B -:10EDF00021D10A7990F892319A421CD14A7990F83F -:10EE000093319A4217D18A7990F894319A4212D16B -:10EE1000CA7990F895319A420DD10A7A90F89631D4 -:10EE20009A4208D1097890F89801C1F38011814283 -:10EE300008BF012400D00024F7F71AFE4148F7F775 -:10EE4000AFFF002808BF2F70F7F795FFB9F1040F47 -:10EE500075D1002C73D0686890F8481100296ED1E4 -:10EE600090F8281021B190F8341011F0100F66D0EE -:10EE7000D0F84C411D21204605F0C3FE84F80080E7 -:10EE8000686804F1020A04F1010990F87801FF288A -:10EE90000FD052464946FCF7B3FD002808BFFFDFFC -:10EEA00099F8000040F0020089F800001FE04BE0F4 -:10EEB000FEE0A868FDF747FF89F80000A868FDF7A5 -:10EEC00019FF072804D25146A868FDF71EFF0EE07F -:10EED000A868FDF70FFF072809D10021A868FDF7F2 -:10EEE0009BFF0168CAF800108088AAF8040004F1AA -:10EEF0001D01A868FDF747FF2072287804F1090971 -:10EF00007F2808BFFFDF287889F800002F70686825 -:10EF1000618990F8A12162F3000141F01A01618139 -:10EF200084F80C806673FF21A1732175E77690F851 -:10EF30009711217780F84881072002F0E2F9062432 -:10EF400000F0F6B8740100204FF00208FD48F7F712 -:10EF500027FF002808BF2F70F7F70DFFA868FDF7FF -:10EF6000C9FE0446A868FEF7A3F8082C08BF0028CD -:10EF70007ED1A8684FF00301C27812F03F0F77D01E -:10EF8000007931EA000073D1686800F5BA7790F82B -:10EF90006101002814BFBE79FE784FF00009B878EF -:10EFA00078B1FCF76BFD0446FF280AD00146A8683B -:10EFB000401DFCF73CFDB4420CBF4FF001094FF07F -:10EFC00000090021A868FDF727FF062207F11D01AF -:10EFD00005F06CFD40B9A868FDF7B5FE97F8241060 -:10EFE000884208BF012000D0002059EA00095DD006 -:10EFF000686800F5AD7490F859A1787838B130465A -:10F00000FCF72BFE00281CBF04464FF0010A002726 -:10F01000A86801784FEAD11B0121FDF7FDFEBBF185 -:10F02000000F07D0407900F0C000402808BF4FF023 -:10F03000010B01D04FF0000B0121A868FDF7ECFE99 -:10F040000622214605F032FD30B9A868FDF788FE9A -:10F05000504508BF012401D04FF000043BEA0400F2 -:10F0600018BFFF2E0FD03046FCF7C1FC060000E0B1 -:10F070001CE008D00121A868FDF7CEFE014630460D -:10F08000F8F78EFA074644EA070019EA000F0DD098 -:10F090006868012100F5C47005F01CFA4FF0010802 -:10F0A0004046FFF7D2FA052002F02BF944463FE034 -:10F0B0000224A448F7F774FE002808BF2F70F7F762 -:10F0C0005AFEA868FDF716FE0646A868FDF7F0FF91 -:10F0D000072E08BF00282BD1A8684FF00101C27885 -:10F0E00012F03F0F24D00279914321D1696801F5D4 -:10F0F000BA760021FDF790FE062206F11D0105F00B -:10F10000D5FCA8B9A868FDF71EFE96F82410884221 -:10F110000ED16868012100F5C47005F0DBF9FF210C -:10F12000022000F099F8002818BF032400E0FFDF58 -:10F1300003B02046BDE8F08F2DE9F74F814C002544 -:10F14000914660688A4690F8750100280CBF4FF020 -:10F1500001084FF00008A0680178CE090121FDF7F1 -:10F160005BFE36B1407900F0C000402808BF0126A0 -:10F1700000D00026606890F87611002963D090F8DE -:10F1800068114FF0000B03291ED190F8611100297E -:10F1900018BF90F87A7117D0FF2F18BF082F22D010 -:10F1A0003846FCF7EBF9002818BF4FF00108002E95 -:10F1B00049D0606890F88501D0B1FCF76AFC05463B -:10F1C000606880F885B13EE0A168CA7812F03F0F10 -:10F1D00019BF097911F0010F90F82B10FF2918BF02 -:10F1E00090F87771D8D176B390F8840170B12AE0A5 -:10F1F0003846FCF7FCFB05460121A068FDF70CFE34 -:10F2000001462846F8F7CCF905461CE0A068C1780D -:10F2100011F03F0F05D0017911F0010F18BF0B213C -:10F2200001D14FF005014FF00002FCF70CFC6168C2 -:10F2300081F8760138B1FCF721FCFF2803D0616822 -:10F24000012581F877018AF800500098067089F846 -:10F25000008003B0BDE8F08F2DE9F041394C024643 -:10F260000025606890F8A1310BB3A0684FF000064C -:10F270004FF00107C37813F03F0F1CBF007910F067 -:10F28000100F1BD00020FEF7F4F9606890F83400EE -:10F29000C0F3411002281BD0022000F058FC88B1B6 -:10F2A0006068012580F89061F7F7E2FB1FE0002A13 -:10F2B00014BF0223012380F8A131D6E71046FEF7E0 -:10F2C000D8F905E06068818E21F0600140318186C7 -:10F2D000606890F8281051B980F8287090F83400D0 -:10F2E00010F0080F14BF0720062002F00AF8284685 -:10F2F000BDE8F0812DE9F047124C05461F469046C7 -:10F300000E46A068FDF7D4FE002800F0D280012848 -:10F3100005D0022800F00F81BDE8F0479FE4A06807 -:10F320000921C27812F03F0F00F043810279914326 -:10F3300040F03F81616891F86811032909D012F00B -:10F34000020F01E07401002008BFFF2119D065B150 -:10F3500016E00021FDF760FD61680622D1F8641116 -:10F360001A3105F0A3FB50BB1EE0FDF7F9FC054682 -:10F370000121A068FDF750FD2946F7F78EF918B175 -:10F380003946012000F038B9606890F86901032817 -:10F3900018BF022840F00D81002E1CBFFE21012065 -:10F3A00040F02A8100F005B9A068FDF7CCFC616847 -:10F3B000D1F86411497E884208BF012600D000269A -:10F3C000A068C17811F03F0F05D0017911F0020F4C -:10F3D00001D05DB338E0616891F86A21012A01D05B -:10F3E000A6B119E0C6B90021FDF716FD61680268F3 -:10F3F000D1F86411C1F81A208088C883A068FDF78D -:10F40000A2FC6168D1F86411487605E091F87701B3 -:10F4100091F87A1188424BD1606800F5C47005F00C -:10F420009DF8002844D00F20BDE8F087B8F1000F08 -:10F430000CD0FDF795FC05460121A068FDF7ECFC1A -:10F440002946F7F72AF908B1012200E00022616895 -:10F4500091F86A01012807D040B92EB991F87731A7 -:10F4600091F87A118B4201D1012100E000210A427A -:10F470001ED0012808BF002E13D14FF00001A06854 -:10F48000FDF7CAFC61680268D1F86411C1F81A205E -:10F490008088C883A068FDF756FC6168D1F86411C4 -:10F4A0004876606800F5C47005F058F80028BAD1B5 -:10F4B0007FE06068A8464FF0020990F868010328D1 -:10F4C0002AD0A068C17811F03F0F1BBF007910F05F -:10F4D000020F002001204FF0FF05A8B14FF00100FE -:10F4E000FEF79FF8002804BF3D46B8F1000F0BD18E -:10F4F000A068FDF735FC07460121A068FDF78CFCEC -:10F500003946F7F7CAF850B129460020FFF7A4FEA4 -:10F51000002818BF4FF003094846BDE8F08760682F -:10F5200090F86901032818BF0228F5D1002E18BFF2 -:10F53000FE25E9D1F0E7626892F86831032B38D0F4 -:10F54000A0684FF0090CC17811F03F0F31D001795C -:10F550003CEA010C2DD1022B01F0020105D000295B -:10F5600008BFFF2147D0CDB344E009B135B113E066 -:10F5700002F5C47004F0F2FFA0B91AE0B8F1000F70 -:10F580001AD0FDF7EDFB05460121A068FDF744FC0C -:10F590002946F7F782F878B1606800F5C47004F086 -:10F5A000DDFF30B139460220FEF763F80D20BDE8DB -:10F5B000F0870220BDE8F087606890F869010328B1 -:10F5C00018BF0228F5D1002EF3D04FF0FE014FF006 -:10F5D000020000F0A4FA0220BDE8F087FFE7FDF783 -:10F5E000BFFB05460121A068FDF716FC2946F7F789 -:10F5F00054F820B13946022000F091FAD9E760684A -:10F6000090F86901032818BF0228D2D1002E1CBF30 -:10F61000FE210220F0D1CCE72DE9F04F83B04FF06E -:10F620000008FE48F7F7BCFBFC4C002804BF7F2015 -:10F630002070F7F7A0FBA068FDF75CFB8246012174 -:10F64000FEF766FF05466068002690F8A4110129C0 -:10F6500018BFFFDF0ED0606890F8760130B1F7F781 -:10F660007AFBF6F7B6FD606880F8766103B0404635 -:10F67000BDE8F08FEA4F4FF006084FF00109BAF1EC -:10F68000080F1AD2DFE80AF0278C0419191912FEA4 -:10F69000F7F7EEF9002DDED0606890F868010128D8 -:10F6A00012BF0228FF20FEF7E1F9D4E72DB190F850 -:10F6B0006801022806D0012854D0F7F7D9F94FF095 -:10F6C0000608C8E7FF20FEF7D1F960684FF00C0884 -:10F6D00080F8A161BFE74FF00008002D00F02881FD -:10F6E00090F86811022934D001293BD00329B2D106 -:10F6F000A268D0F86411D37891F81AC0634521D17B -:10F70000137991F81BC063451CD1537991F81CC043 -:10F71000634517D1937991F81DC0634512D1D37910 -:10F7200091F81EC063450DD1137A91F81FC063454F -:10F7300008D1137891F819C0C3F38013634508BF4B -:10F74000012300D0002390F86A0101280ED0DBB11C -:10F75000EAE0FF20FEF78AF960684FF00C0880F8B5 -:10F76000A19178E7FF20FEF781F916E0002B70D118 -:10F7700010461A31FDF7C9FAA068FDF7E4FA61688E -:10F78000D1F864114876CFE097F87A0108287AD04A -:10F7900097F8771181425CD0CAE04FF006085AE72B -:10F7A00090F8751100290CBF4FF0010A4FF0000AC4 -:10F7B0004FF00008A16811F8092BD20907D0497948 -:10F7C00001F0C001402908BF4FF0010B01D04FF0FC -:10F7D000000B90F86811032906D190F861110029F7 -:10F7E00018BF90F87A0101D190F877010090FCF7EA -:10F7F000FEF85FEA00092DD00098FBF7BFFE002855 -:10F8000018BF4FF0010ABBF1000F23D0A06800F130 -:10F8100009014846F7F7C4FE5FEA0008606890F8FF -:10F82000599118BF49F00209606890F868110329DE -:10F8300014D0F7F71DF9002DAFD0F6F73EFF0028E2 -:10F840000CBFB8F1000F484675D000BFFEF70EF9A7 -:10F85000A3E769E0606890F85991E5E7A168D0F8FE -:10F860006401CA78837E9A421FD10A79C37E9A4284 -:10F870001BD14A79037F9A4217D18A79437F9A42F2 -:10F8800013D101E066E053E0CA79837F9A420CD13C -:10F890000A7AC37F9A4208D10978407EC1F3801169 -:10F8A000814208BF4FF0010901D04FF0000997F8DD -:10F8B0007701082806D097F87A11884208BF4FF0E0 -:10F8C000010B01D04FF0000BB8F1000F05D1BAF1D8 -:10F8D000000F04D0F6F7F1FE08B1012000E000208F -:10F8E0004DB197F86A11012903D021B959EA0B01EA -:10F8F00001D0012100E00021084219D0606890F891 -:10F900006A11012908BFB9F1000F0DD1D0F86401C7 -:10F9100000F11A01A068FDF7F8F9A068FDF713FAE5 -:10F920006168D1F8641148764FF00E0893E602E062 -:10F93000F7F79EF831E7606890F86901032818BF6F -:10F9400002287FF42AAFBBF1000F18BFFE207FF41E -:10F950007DAF22E790F87001002818BF002D3FF41A -:10F96000ACAEA068FDF7A4FB30B101287DD0022821 -:10F970007CD0F7F77DF86EE6F7F77AF8606890F8D4 -:10F98000680103283FF409AFA068C17811F03F0F68 -:10F9900005D0027912F0100F18BF012500D1002503 -:10F9A000002D14BF0822012211F03F0F3FF4F5AEE5 -:10F9B000007932EA00017FF4F0AE10F0020F06D0B9 -:10F9C0000120FDF72EFE002808BF012000D00020F6 -:10F9D0008DF800608DF804608DF80860FF27D0B1C5 -:10F9E00002AA694601A8FFF7A7FB606890F8597161 -:10F9F0009DF80000002818BF47F002070BD1A0684F -:10FA0000FDF7AEF980460121A068FDF705FA4146F1 -:10FA1000F6F743FEC0B195B1012003E07401002068 -:10FA2000EC10002000F093F800283FF4B6AE394601 -:10FA30000020FDF71EFE606880F890616CE039469A -:10FA4000002000F06CF8A8E6606890F869010328CF -:10FA500018BF02287FF4A1AE9DF8040000283FF4EF -:10FA60009CAE9DF80000002801E017E032E07FF432 -:10FA700094AE75B14FF0010000F069F800283FF432 -:10FA80008CAEFE210020FDF7F4FD606880F89061E7 -:10FA900042E0FE21002000F042F87EE6F6F7E8FFA3 -:10FAA000A0681821C27812F03F0F3FF476AE0079BB -:10FAB00031EA00007FF471AE012000F048F8002820 -:10FAC0003FF46BAEFF210120FDF7D3FD606880F8A5 -:10FAD000909121E0F6F7CCFF606890F86801032868 -:10FAE0003FF45BAEA0681821C27812F03F0F3FF4DC -:10FAF00054AE007931EA00007FF44FAE012000F0EF -:10FB000026F800283FF449AEFF210220FDF7B1FDA1 -:10FB10006168022081F890014FF003089BE510B561 -:10FB2000FDF7A7FD2448406890F82810002918BF69 -:10FB300010BD012280F8282090F8340010F0080F42 -:10FB400014BF07200620BDE8104001F0DABB70B5F5 -:10FB5000194D06460421A868FDF75EF90446807831 -:10FB60000221B1EB501F18D0686890F82800A0B9A6 -:10FB700000F0CAFF217811F0800F14BF4FF4967186 -:10FB80001E21B4F80120C2F30C0212FB01F10A1A83 -:10FB9000B2F5877F28BF814201D2002070BD68681E -:10FBA0002188A0F8A511A17880F8A7113046BDE8FA -:10FBB000704000F0C6BF000074010020D0F8E010D3 -:10FBC00049B1D0E939231A448B691A448A61D0E9D2 -:10FBD0003712D16003E0F74AD0F8DC101162D0E9A7 -:10FBE000371009B1086170470028FCD000218161FD -:10FBF00070472DE9FF4F06460C46488883B040F217 -:10FC0000E24148430190E08A002500FB01FA94F8A4 -:10FC1000640090460D2822D00C2820D024281ED025 -:10FC200094F8650024281AD000208346069818B15D -:10FC30000121204602F077FE94F8541094F8550004 -:10FC4000009094F8D0200F464FF47A794AB1012AF7 -:10FC500061D0022A44D0032A5DD0FFDFB5E0012045 -:10FC6000E3E7B8F1000F00D1FFDFD24814F8541FCA -:10FC7000243090F83800FCF7FAFF01902078F7F76D -:10FC8000F9FA4D4600F2E730B0FBF5F1DFF82493C6 -:10FC9000D9F80C0001EB00082078F7F7EBFA0146E1 -:10FCA00014F85409022816D0012816D040F6340062 -:10FCB00008444AF2EF010844B0FBF5F10198D9F885 -:10FCC0001C20411A514402EB08000D18012084F851 -:10FCD000D0002D1D78E02846EAE74FF4C860E7E73A -:10FCE000DFF8D092A8F10100D9F80810014300D143 -:10FCF000FFDFB148B8F1000F016801EB0A0506D03B -:10FD0000D9F8080000F22330A84200D9FFDF032011 -:10FD100084F8D00058E094F86420019D242A05D08E -:10FD200094F86530242B01D0252A3AD1B4F8582014 -:10FD3000B4F8F030D21A521C12B2002A31DB94F817 -:10FD4000F22072B3174694F8F32002B110460090E7 -:10FD5000022916D0012916D040F6340049F608527F -:10FD60008118022F12D0012F12D040F63400104417 -:10FD7000814210D9081A00F5FA70B0FBF9F0054479 -:10FD80000FE04846EAE74FF4C860E7E74846EEE789 -:10FD90004FF4C860EBE7401A00F5FA70B0FBF9F0D9 -:10FDA0002D1AB8F1000F0FD0DFF80882D8F808003C -:10FDB00018B9B8F8020000B1FFDFD8F8080000F267 -:10FDC0002330A84200D9FFDF05B9FFDF2946D4F868 -:10FDD000D400F4F7AEFAC4F8D400B060002030705C -:10FDE0004FF0010886F80480204602F089FEABF14E -:10FDF0000101084202D186F8058005E094F8D000A0 -:10FE000001282FD003207071606A3946009A01F0F2 -:10FE100005FBF060069830EA0B0020D029463046FA -:10FE2000FCF798FD87B2204602F06AFEB8420FD870 -:10FE3000074686F8058005FB07F1D4F8D400F4F7EF -:10FE400078FAB06029463046FCF784FD384487B222 -:10FE50003946204602F067FDB068C4F8D40007B008 -:10FE6000BDE8F08F0220CEE72DE9F04106460C46B2 -:10FE7000012001F0BAFAC5B20B2001F0B6FAC0B207 -:10FE8000854200D0FFDF0025082C7DD2DFE804F09A -:10FE90000461696965C98E96304601F0B5FA06219C -:10FEA000F2F704FC040000D1FFDF304601F0ACFAA9 -:10FEB0002188884200D0FFDF94F8D00000B9FFDF2E -:10FEC000204602F03FFA3B4E21460020B560758087 -:10FED000F561FCF7B7FD00F19807606AB84217D9E1 -:10FEE00094F85500F7F7B7F9014694F854004FF429 -:10FEF0007A72022828D0012828D040F6340008441D -:10FF00004AF247310844B0FBF2F1606A0844C51B6D -:10FF1000214600203561FCF795FD618840F2E24200 -:10FF200051439830081AA0F22330706194F855209C -:10FF300094F85410606A01F071FAA0F29310B06165 -:10FF4000BDE8F041F5F7DDB91046D8E74FF4C860D9 -:10FF5000D5E7BDE8F04102F0C2BBBDE8F041F6F7DD -:10FF60004FBF6FF0040001F040FAC4B2192001F055 -:10FF70003CFAC0B2844200D0FFDF304601F044FAC0 -:10FF80000621F2F793FB00E04BE0040000D1FFDF15 -:10FF9000304601F039FA2188884200D0FFDF204640 -:10FFA000BDE8F0410122002101F055BAF6F7C7FD86 -:10FFB000D3E700009812002084010020304601F0B1 -:10FFC00023FA0621F2F772FB040000D1FFDF30466E -:10FFD00001F01AFA2188884200D0FFDF94F8D0009F -:10FFE000042800D0FFDF84F8D05094F8DA504FF6A0 -:10FFF000FF76202D00D3FFDFFB4820F8156094F832 -:020000040002F8 -:10000000DA00F4F776FC00B9FFDF202084F8DA008C -:100010002046FFF7D3FDF5480078BDE8F041E2F750 -:100020007BBFFFDFBDE8F08170B5EF4C0025483C99 -:1000300084F82C50E07868B1E570FEF7DAF92078A2 -:10004000042803D0A06AFFF7B9FDA562E74800784D -:10005000E2F762FFBDE8704001F00EBA70B5E24C05 -:100060000146483C206AF5F77FF96568A27890FB65 -:10007000F5F172B140F27122B5FBF2F292B2E36B8C -:1000800001FB02F6B34202D901FB123200E000226A -:10009000E2634D43002800DAFFDF2946206AF4F7C7 -:1000A00048F9206270BD2DE9F05FFEF7F5F9824650 -:1000B000CD486C3800F1240881684646D8F81C0009 -:1000C000F4F737F90146306AF5F74EF94FF00009B9 -:1000D000074686F839903C464FF423754E461CE09F -:1000E0000AEB06000079F7F7B6F84AF2B1210144AD -:1000F0004FF47A70B1FBF0F108EB8602404692684B -:1001000011448C4207D3641A90F83910A4F5237473 -:10011000491C88F83910761CF6B298F83A00B042BB -:10012000DED8002C0FDD98F83910404608EB81012D -:100130008968A14207D24168C91BA94200D90D466E -:100140006C4288F8399098F83960C3460AEB060883 -:1001500098F80400F7F77FF801464AF2B12001440D -:100160004FF47A7AB1FBFAF298F80410082909D012 -:10017000042909D00020131804290AD0082908D01E -:10018000252007E0082000E0022000EB4000283096 -:10019000F1E70F20401D4FF4A872082913D004295D -:1001A00014D0022915D04FF0080C282210FB0C2087 -:1001B000184462190BEB860302449868D8468242C1 -:1001C0000BD8791925E04FF0400CEFE74FF0100CF9 -:1001D000ECE74FF0040C1822E8E798F8392098F87B -:1001E0003A604046B24210D2521C88F839203C1B7B -:1001F0009868621984180846F7F72DF84AF2B12179 -:100200000144B1FBFAF0011903E080F83990D8F805 -:100210000410D8F82000BDE8F05FF4F78AB82DE9A3 -:10022000FE4F14460546FEF737F9DFF8BCB10290E1 -:10023000ABF1480B58469BF839604FF0000A0BEBC6 -:1002400086018968CBF84010ECB30446007800279B -:10025000042827D0052840D0FFDFA0463946A069F2 -:10026000F4F767F80746F4F763FB81463946D8F898 -:100270000440F5F779F8401E90FBF4F0C143614368 -:100280003846F4F756F80146C8F820004846F5F716 -:100290006BF8002800DDFFDF012088F8140088F8E3 -:1002A00013008FE0D4F81890D4F8048001F04BF9D3 -:1002B000070010D0387800B9FFDF796978684A46BE -:1002C0000844414600E00EE001F029F907464045A8 -:1002D000C3D9FFDFC1E75746BFE7A06A01F0DAF8EC -:1002E00040F6B837B9E7016A0BEB46000191C08DC3 -:1002F00008B35C46DBF81800FFF7B0FE6168206ABF -:10030000F4F717F8074684F839A0019CD846204630 -:10031000DBF81810F5F728F8814639462046F5F73E -:1003200023F8D8F80420B9FBF2F3B0FBF2F08342D3 -:1003300043D0012142E0F4F7FBFAFFF78FFEFFF70D -:10034000B2FE9BF83910DBF804900BEB81010746F5 -:10035000896800913946DBF82000F5F705F800249C -:100360008046484504DB98FBF9F404FB09F41BE0E4 -:10037000002059469BF8392008E000BF01EB8003BC -:1003800004F523749B68401C1C44C0B28242F5D81B -:1003900052B10120F6F75FFF4AF2B12101444FF458 -:1003A0007A70B1FBF0F004440099A8EB04000C1A39 -:1003B00000D5FFDFCBF84040A7E7002188F81410F4 -:1003C00088F813A09BF802005C46B8B13946206A51 -:1003D000F4F7CAFF0146E26B40F2712042438A42C1 -:1003E00006D2C4F840A009E00413002080010020D8 -:1003F000206C511A884200D308462064AF6085F80B -:1004000000A001202871029F94F839003F1DC05DB3 -:10041000F6F721FF4AF23B5101444FF47A70B1FBE9 -:10042000F0F0216CFB300844E8602078042808D103 -:1004300094F8390004EB4000C08D0A2801D2032053 -:1004400000E00220687104EB4600C08DC0B1284670 -:100450006168FCF77FFA82B20020761C0CE000BFD6 -:1004600004EB4003B042D98D114489B2D98501D340 -:10047000491CD985401CC0B294F83A108142EFD291 -:10048000A868A061E06194F8390004EB4000C18DD8 -:10049000491CC18594F83900C05D082803D00428A0 -:1004A00003D000210BE0082100E0022101EB410113 -:1004B00028314FF4A872082804D0042802D002285A -:1004C00007D028220A44042805D0082803D0252173 -:1004D00002E01822F6E70F21491D08280CD0042855 -:1004E0000CD002280CD0082011FB0020216C88427F -:1004F00008D20120BDE8FE8F4020F5E71020F3E789 -:100500000420F1E70020F5E770B5FB4C061D14F858 -:10051000392F905DF6F79FFE4FF47A7100F2E730C5 -:10052000B0FBF1F0D4F8071045182078805DF6F79D -:1005300086FE2178895D082903D0042903D0002292 -:100540000BE0082200E0022202EB420228324FF4C4 -:10055000A873082904D0042902D0022907D028232F -:100560001344042905D0082903D0252202E01823CA -:10057000F6E70F22521D08290AD004290AD00229C1 -:100580000AD0082112FB0131081A281A293070BD3F -:100590004021F7E71021F5E70421F3E7FEB5044613 -:1005A0000F46012000F021FFC5B20B2000F01DFF17 -:1005B000C0B2854200D0FFDF01260025CE48082FBB -:1005C00050D2DFE807F004304747434F4F4C044612 -:1005D000467406744078002819D1FDF75DFF009538 -:1005E00094F839108DF808104188C90410D0606C57 -:1005F000019003208DF80900BF4824388560C5614B -:1006000025746846FDF78AFC002800D0FFDFFEBD98 -:10061000FFF77AFF0190207D10B18DF80950EBE7CC -:100620008DF80960E8E70446407840B1207C08B9BD -:10063000FDF7B4FE6574BDE8FE40F4F783B8A67418 -:10064000FDF779FD0028E2D0FFDFFEBDBDE8FE40EA -:10065000F6F7D6BB2046BDE8FE4000F07DBFBDE802 -:10066000FE40E1E4FFDFFEBDA34950B101228A70E4 -:100670004A6840F27123B2FBF3F202EB0010C86348 -:1006800070470020887070472DE9F05F894640F27E -:100690007121994E484300250446706090462F46CC -:1006A000D0074AF2B12A4FF47A7B0FD0B9F8000094 -:1006B0004843B0600120F6F7CEFD00EB0A01B1FB24 -:1006C000FBF0241AB7680125A4F523745FEA0870CB -:1006D00016D539F8151040F27120414306EB850814 -:1006E0000820C8F80810F6F7B6FD00EB0A01B1FBC8 -:1006F000FBF0241AD8F80800A4F5237407446D1CF5 -:10070000A7421AD9002D18D0391BB1FBF5F0B268F9 -:10071000101AB1FBF5F205FB1212801AB06001202D -:1007200009E000BFB1FBF5F306EB80029468E31A21 -:10073000401CC0B29360A842F4D3BDE8F09F2DE9FD -:10074000F0416D4C00262078042804D0207805283C -:1007500001D00C2066E401206070607C002538B177 -:10076000EFF3108010F0010F72B610D001270FE0E8 -:10077000FDF792FE074694F82400F4F735FC7888DC -:10078000C00411D000210320FDF78BFE0CE00027F0 -:10079000607C38B1A07C28B1FDF700FE6574A574BB -:1007A000F3F7D0FF07B962B694F82400F4F769FEB6 -:1007B00094F82C0030B184F82C502078052800D013 -:1007C000FFDF0C26657000F057FE30462AE44A48E9 -:1007D00010B5007808B1FFF7B2FF00F0EDFE464912 -:1007E00000202439086210BD10B5444C58B10128CE -:1007F00007D0FFDFA06841F66A01884200D3FFDF1F -:1008000010BD40F6C410A060F4E73C4908B508707C -:10081000394900200870487081F82C00C8700874AD -:10082000487488742022886281F824202439487012 -:100830004FF6FF7211F16C0121F81020401CC0B27C -:100840002028F9D30020FFF7CFFFFFF7C0FF1020CB -:10085000ADF80000012269460420FFF715FF08BD2E -:100860007FB5254C05460E46207810B10C2004B00B -:1008700070BD95F8552095F85410686A00F0E3FEB5 -:10088000C5F8E400A56295F8D00000B1FFDF1A4971 -:1008900000202439C86105212170607084F82C0083 -:1008A000014604E004EB4102491CD085C9B294F82A -:1008B0003A208A42F6D284F839003046FFF7D4FE57 -:1008C0000F48F3F7BAFF84F82400202800D1FFDF97 -:1008D000F4F72EF8A06194F8241001226846FFF77F -:1008E0009EFC00B9FFDF94F824006946F4F76AFA29 -:1008F00000B9FFDF0020BAE7BC1200208001002011 -:100900009D050200F84810B5007808B1002010BD20 -:100910000620F1F765FE80F0010010BD38B5F24DFC -:100920000446287800B1FFDF0020009023780246BB -:100930000146DB0705D06088A188ADF800100122D0 -:100940001146491E85F83A106946FFF79DFE0020C2 -:1009500038BD1FB511B1112004B010BDE24C217893 -:1009600009B10C20F8E700226270042121701146C1 -:1009700005E000BF04EB4103491CDA85C9B294F8D5 -:100980003A308B42F6D284F83920FFF76DFED74813 -:10099000F3F753FF84F82400202800D1FFDF00F094 -:1009A000D2FD10B1F3F7C4FF05E0F3F7C1FF40F645 -:1009B000B831F3F7BEFCA06194F824100122684618 -:1009C000FFF72DFC00B9FFDF94F824006946F4F727 -:1009D000F9F900B9FFDF0020BEE770B5C24CA16A8B -:1009E0000160FFF7ACFE050002D1A06AFFF7E6F850 -:1009F0000020A062284670BD7FB5BB4C2178052938 -:100A000001D00C2033E7B8492439C860A06A00B986 -:100A1000FFDFA06A90F8D00000B1FFDFA06A90F875 -:100A2000DA00202800D0FFDFB148F3F706FFA16A03 -:100A30000546202881F8DA000E8800D3FFDFAA4897 -:100A4000483020F81560A06A90F8DA00202800D11C -:100A5000FFDF002301226846A16AFFF7CAF8A06AF7 -:100A6000694690F8DA00F4F7ADF900B9FFDF00202D -:100A7000A062FCE69C4924394870704710B540F2EA -:100A8000E24300FB03F4002000F0DDFD844201D9C5 -:100A9000201A10BD002010BD70B50D460646014657 -:100AA0000020FBF7CFFF044696F85500F6F7D3FB7E -:100AB000014696F854004FF47A72022815D00128A6 -:100AC00015D040F6340008444AF247310844B0FBE0 -:100AD000F2F1708840F271225043C1EB4000A0F265 -:100AE0002330A54206D2214605E01046EBE74FF43D -:100AF000C860E8E72946814204D2A54201D22046D7 -:100B000000E02846706270BD70B5F5F7D9FC044668 -:100B1000F6F795FB01467448243882684068101A3D -:100B20000E18204600F058FC05462046F6F793FBC9 -:100B3000281A4FF47A7100F2E730B0FBF1F030443C -:100B400070BD70B50546FDF7A7FC674900782439EC -:100B50008C689834072D2CD2DFE805F0043030255E -:100B60002830300014214FF4A873042810D0082234 -:100B7000082809D02A2102280FD011FB02400022A8 -:100B80002823D118441815E0402211FB0240F8E751 -:100B9000102211FB02402E22F3E7042211FB024037 -:100BA00000221823EDE704F5317403E004F5B07476 -:100BB00000E0FFDF4C48006CA04201D9012070BD6D -:100BC000002070BD70B5484C243C607870B1D4E909 -:100BD00004512846A268FBF7F1FE2061A84205D027 -:100BE000A169401B0844A061F4F78BFB2169A06850 -:100BF000884201D8207808B1002070BD012070BD66 -:100C00002DE9FF47074615460E461C461846F6F7DF -:100C100016FB07EB46014618204600F0DDFB4AF2C2 -:100C2000C5714FF47A790144C846B1FBF8F0064427 -:100C30002D4860362438806800EB050A2046F6F718 -:100C4000FEFA371A204600F0C7FB05462046F6F7A5 -:100C500002FB291AB1FBF8F0A7EB000C18200225C3 -:100C60004FF4C8714FF4BF724FF02808082C2ED0F3 -:100C7000042C29D00027022C2CD0082317F1280798 -:100C800003EB830307EB83039C440023082C31D040 -:100C9000042C22D00027022C32D040464FF0080806 -:100CA00007F5B07708EB08184044874235D2082C86 -:100CB0002DD0042C28D00020022C2BD0082728303F -:100CC00007EB0717384436E017461023D8E70F46DE -:100CD0004023D5E704231837D2E7104640F2EE3719 -:100CE0004FF01008DEE70000BC1200209D05020056 -:100CF00069FE010008464FF435674FF04008D1E720 -:100D00004FF00408B437CDE710461027D8E708465F -:100D10004027D5E704271830D2E7082C46D0042C0A -:100D200041D00027022C44D008202837C0EBC0084F -:100D300008EB401038446044082C40D0042C3BD0D1 -:100D40000021022C3DD0082211F1280102EB821271 -:100D500001EB8201471801208DF804008DF8055041 -:100D6000FF4D8DF80030514607F22727E869F3F769 -:100D7000E0FACDE902072046F6F76DFA4AF23B5158 -:100D80000144B1FBF9F0381AFB38286402986E640C -:100D9000E86195F824006946F4F714F8002800D1BA -:100DA000FFDFBDE8FF8717461020BFE70F46402052 -:100DB000BCE704201837B9E711461022C6E74022E5 -:100DC000C4E704221831C1E72DE9FE4F04461D4651 -:100DD000174688464FF001091846F6F730FADFF853 -:100DE00080B30146ABF1240B07EB4802DBF80800A7 -:100DF0005E46204410440F18284600F0EDFA00F635 -:100E0000FB014FF47A7AB1FBFAF0384400F1200884 -:100E10002846F6F714FAB2680146A8EB0200001B58 -:100E2000461A284600F0D8FA07462846F6F713FA7D -:100E3000391AB1FBFAF0A6EB000C182028274FF462 -:100E4000C8714FF4BF72082D2CD0042D27D0002676 -:100E5000022D2AD00823283603EB830306EB8303F5 -:100E60000CEB0306082D28D0042D21D00023022DE1 -:100E700028D03846082703F5B07300BF07EB0717E3 -:100E8000384483422AD2082D22D0042D1DD00020C0 -:100E9000022D20D00823283003EB03132CE0164644 -:100EA0001023D9E70E464023D6E704231836D3E7AC -:100EB000104640F2EE331027E0E708464FF4356362 -:100EC0004027DBE70427B433D8E710461023E3E7D5 -:100ED00008464023E0E704231830DDE7082D47D01B -:100EE000042D42D00020022D45D0082310F1280007 -:100EF000C3EBC30707EB431318443044082D40D01D -:100F0000042D3BD00021022D3DD0082211F12801F3 -:100F100002EB821201EB8201451805F596750C98DB -:100F2000F6F799F94AF23B510144B1FBFAF08C4EC5 -:100F3000FB3004F1FB02316C5F460844DBF808101B -:100F40004B191A44824228D9621911440D1AFB35F3 -:100F5000E1F79CFEB968084461190844B0F1807F4C -:100F600036D2642D12D2642011E010461023BFE760 -:100F700008464023BCE704231830B9E71146102285 -:100F8000C6E74022C4E704221831C1E72846F4F737 -:100F900012FAE8B1306C28443064E1F777FEB968A2 -:100FA000293821440844CDE9000896F839008DF825 -:100FB000080002208DF809006846FCF7AFFF00B179 -:100FC000FFDFFDF7B8F800B1FFDF4846BDE8FE8F50 -:100FD0004FF00009F9E71FB500F03BFB604C60786B -:100FE00080B994F8241000226846FFF718F938B148 -:100FF00094F824006946F3F7E5FE18B9FFDF01E035 -:101000000120E070F3F79EFB00206074A0741FBD08 -:101010002DE9F84FFDF740FA0646451CC078400917 -:101020000AD001280AD000202978824608064FF409 -:10103000967405D41E2004E00120F5E70220F3E7B2 -:101040002046B5F80120C2F30C0212FB00F7C809D4 -:1010500001D010B103E01E2401E0FFDF0024FFF700 -:1010600053FDA7EB00092878B77909EB0408C0F312 -:10107000801010B120B1322504E04FF4FA7501E080 -:10108000FFDF00250C2F00D3FFDF3648364A30F84B -:101090001700291801FB0821501CB1FBF0F5F5F7EA -:1010A0000FFAF6F7D8F84FF47A7100F27160B0FBDE -:1010B000F1F1A9EB0100471BA7F15900103FB0F572 -:1010C000237F11D3264E717829B90246534629460B -:1010D0002046FFF795FD00F0BCFAF3F733FB002044 -:1010E0007074B074BDE8F88F307800905346224693 -:1010F00029463846FFF768FE0028F3D10121022077 -:10110000FDF7CFF9BDE8F84F65E710B504460129B2 -:1011100003D113482438007830B1042084F8D0007B -:10112000BDE81040F3F70EBB00220121204600F07D -:1011300092F934F8580F401C2080F1E72DE9F04176 -:101140000746FDF7A9F9050000D1FFDF29783846E9 -:10115000FBF78DFD024C0146A4F12406E06905E091 -:10116000BC120020285202003F420F00B268024425 -:101170006FB32878082803D0042803D000270BE099 -:10118000082300E0022303EB430728374FF4A8733A -:10119000082804D0042802D0022810D028233B4479 -:1011A00008280ED004280ED002280ED05FF00800C8 -:1011B000C0EBC00707EB40101844983009E0182333 -:1011C000EDE74020F4E71020F2E70420F0E74FF4C9 -:1011D000FC701044471828783F1DF6F73CF802468B -:1011E00028784FF47A7102281DD001281DD040F6CE -:1011F000340010444AF2EF021044B0FBF1F03A1A06 -:10120000A06A40F2E241B0464788D0304F43316A8D -:1012100081420DD03946606B00F081F90646B84234 -:1012200007D9FFDF05E00846E3E74FF4C860E0E7D1 -:101230000026FA488068864207D2A16A40F27122ED -:101240004888424306EB420604E040F2E240B6FB27 -:10125000F0F0A16AC882A06A297880F85410297831 -:1012600080F8551005214175C08A6FF41C71484300 -:1012700006EB400040F63541C8F81C00B0EB410FCA -:1012800000D3FFDFBDE8F08110B5052937D2DFE8D4 -:1012900001F00509030D3100002100E00121BDE846 -:1012A000104032E7032180F8D01010BD044640887A -:1012B00040F2E2414843D949091D0860D4F8F800DA -:1012C0000089E082D4F8F80080796075D4F8F800DD -:1012D00040896080D4F8F8008089A080D4F8F800B4 -:1012E000C089E0802046A16AFFF7D6FB022084F87F -:1012F000D00010BD816ABDE81040FFF7CDBBFFDF15 -:1013000010BD70B5C64C0928A1683FD2DFE800F0D7 -:10131000050B0B15131538380800BDE870405AE668 -:10132000BDE8704074E6022803D00020BDE870409C -:1013300004E70120FAE7E16070BD032802D0052828 -:101340001CD000E0E160002600F083F9B44D0120DC -:10135000243585F82C0085F83860A86AE9690026EC -:10136000C0F8D41080F8D060E068FFF745FB00B10A -:10137000FFDFF3F7E7F96E74AE7470BD0126E3E7A3 -:10138000A6480078BDE87040E1F7C6BDFFDF70BD3C -:10139000A3494860704770B5A14D0446B1B14FF400 -:1013A0007A76012903D0022905D0FFDF70BD1846E7 -:1013B000F5F77BFF05E06888401C68801046F5F76C -:1013C00059FF00F2E730B0FBF6F0201AA86070BDBC -:1013D0009348243000787047082803D0042801D0AF -:1013E000F5F739BF4EF628307047002804DB00F1CE -:1013F000E02090F8000405E000F00F0000F1E0208C -:1014000090F8140D4009704710B50446202800D309 -:10141000FFDF83486C3030F8140010BD70B505460E -:101420000C461046F5F717FF4FF47A71022C0DD0D9 -:10143000012C0DD040F6340210444AF247321044D9 -:10144000B0FBF1F0284400F2931070BD0A46F3E7B8 -:101450004FF4C862F0E71FB513460A46044601463A -:101460006846FEF7C6FB94F8DA006946F3F7AAFC73 -:10147000002800D1FFDF1FBD70B5694C0025243462 -:10148000257094F82400F3F734FA00B9FFDF84F8EC -:10149000245070BD2DE9F041050000D1FFDF604A06 -:1014A0000024D5F8E4602046631E116A08E08869CC -:1014B000B04203D3984201D203460C460846C9689D -:1014C0000029F4D104B904460021C5F8E040D03524 -:1014D000CCB1E068E560E86000B105612E6988463E -:1014E000A96156B1B06930B16F69B84200D2FFDF6F -:1014F000B069C01BA861C6F81880494D24355CB19D -:10150000207820B902E0E9601562E7E7FFDF616952 -:10151000606808446863B5E6C5F83480B2E610B583 -:101520000C4601461046F3F71FFF002806DA211A81 -:10153000491EB1FBF4F101FB040010BD90FBF4F176 -:1015400001FB140010BD3648016A002001E0084686 -:10155000C9680029FBD170477FB504466FF00400CD -:10156000FFF743FFC5B21920FFF73FFFC0B2854226 -:1015700000D0FFDFFCF790FF4088C00407D00121B6 -:101580000320FCF78EFF25480078E1F7C5FC002218 -:1015900021466846FEF743FE38B169462046F3F718 -:1015A00011FC002800D1FFDF7FBD1D49012024313F -:1015B000C870FEF739FD7FBD2DE9FE43184D0120AF -:1015C000287000264FF6FF7420E00621F1F76EF830 -:1015D000070000D1FFDF97F8DA00D037F3F751FFAB -:1015E00007F80A6BA14617F8DA89B8F1200F00D383 -:1015F000FFDF0B4A6C3222F8189097F8DA00F3F705 -:1016000078F900B9FFDF202087F8DA006946062064 -:10161000F0F7D5FF78B1FFDF0DE00000800100207A -:1016200098120020029830B190F8D01019B10088BB -:10163000A042CAD104E06846F0F79FFF0028F1D02D -:101640002E70BDE8FE8310B5FFF7E8FE00F5C87008 -:1016500010BD0548002190F8392000EB4200C185FB -:1016600002480078E1F758BCBC120020800100203D -:10167000F4490C28896881F8CB001ABF1328182870 -:1016800070474FF00002112810D0072808BF70479C -:1016900015280BD001281ABF002802287047A1F88E -:1016A00084204FF0010081F888007047A1F88A205B -:1016B000704770B5E34CA1680A88A1F83E2181F813 -:1016C0003C0191F85400012808BF012503D00228ED -:1016D00014BFFFDF0225A06880F8405190F8550044 -:1016E000012808BF012503D0022814BFFFDF02250F -:1016F000A068012180F8415180F83A11002180F85A -:101700000E11E078BDE87040E1F706BCCD4A012932 -:1017100092681BD0002302290FD0032922D030B3B6 -:1017200001282FD0032818BF704792F864001328AF -:101730001CBF1628182805D1704792F8CB00002846 -:1017400008BF7047D2F8F8000370704792F8CB00DA -:10175000012808BF704700BFD2F8FC000178491E7D -:101760000170704792F8CB000328EBD17047D2F894 -:10177000F800B2F858108288891A09B20029A8BF67 -:1017800003707047B2F85800B2F80211401A00B264 -:101790000028E1DA70472DE9F041AA4C0026032722 -:1017A000D4F808C0012590B12069C0788CF8CA002F -:1017B00005FA00F010F4000F08BFFFDFA06880F802 -:1017C0006470A0F8846080F88850BDE8F081002340 -:1017D0009CF8652019460CF15800FBF751F80028D9 -:1017E00004BF6570BDE8F0816078002818BFBDE8CF -:1017F000F0812069C178A06880F8C91080F8657010 -:10180000A0F88A6080F88C50BDE8F08170B58D4CEE -:1018100084B0207910F0010F04BF04B070BD2069BE -:1018200000230521C578A06890F864205830FBF7A4 -:1018300027F8002818BF062D09D026DC022D1CBF72 -:10184000042D052D03D0607840F0080060706078AA -:1018500000281CBF04B070BD2069FBF7C3FC002842 -:1018600000F01B832069C078801E162880F0158345 -:10187000DFE800F011F18CB0DF2FF1F0F17FEFDC49 -:10188000F1F1F1CFEEEDECEBEAE70B2D1CBF0D2DE6 -:10189000112DD8D1DBE7A0684FF000034FF0010114 -:1018A00090F8672000F15800FAF7EAFF002840F0AE -:1018B00067832069FBF7FAFCA16881F8F60007202E -:1018C00081F86700002081F88C0081F8880000F022 -:1018D00057BBA0680921002390F864205830FAF71C -:1018E000CFFF18B120690079122812D0A0680A2110 -:1018F000002390F864205830FAF7C2FF18B120692D -:10190000007914281DD020690079162840F038830A -:1019100021E0A0680125002390F8642009215830B7 -:10192000FAF7AEFF002808BF657000F029836078E1 -:10193000002840F02583A16881F87C0081F88800A8 -:1019400044E0A168002081F86400A1F8840081F8D7 -:10195000880000F045BAA06890F864101F2940F094 -:101960000F83002180F8641080F888101A2000F09E -:1019700005BBA06890F864100F295FD16178002939 -:1019800040F0FE8280F8691012213EE0A06890F8D5 -:101990006410132952D16178002940F0F182D0F807 -:1019A000F81000884988814218BFFFDFA068D0F88E -:1019B000F80000F126012069FBF7A5FCA06800F102 -:1019C000C4012069FBF7A7FCA168162081F8640018 -:1019D00000F0D6BAA26892F8640016282ED160787A -:1019E000002840F0CD82D2F8F80002F1B00300F1F7 -:1019F0001E0100220E30FAF7BDFEA0680021C0E9EA -:101A00002811012180F86910182180F8641000F075 -:101A1000B7BA2069FBF7FFFC032840F0B1822069C8 -:101A2000FBF7FDFC01F0DAFB00F0AABA20690079AF -:101A3000F8E7A06890F864101A290DD0022000F091 -:101A4000D6B95AE28C010020D3E19FE140E10EE1DA -:101A500023E14DE0BEE0C6E16178002940F09082CC -:101A6000002580F88D5080F88850D0F8F810008854 -:101A70004988814218BFFFDFA068D0F8F8100D70C8 -:101A8000D0F844110A78002A18BFFFDF2BD190F854 -:101A90008E207AB180F88E500288CA80D0F8441126 -:101AA0000D71D0F844210E211170D0F84421018825 -:101AB000518010E00288CA80D0F844110D71D0F82E -:101AC000442101211172D0F844210D211170D0F868 -:101AD0004421018851800088F0F71AFFF0F7B2FB2B -:101AE000E078E1F719FAA06880F8645000F048BA8D -:101AF000A0680023194690F865205830FAF7C0FE18 -:101B000048B9A0680023082190F864205830FAF7FB -:101B1000B7FE00287ED06078002840F03182A068AF -:101B200090F8900010F0020F14D12069FBF7F6FB3B -:101B3000A16881F891002069B0F80520A1F89220F1 -:101B4000B0F80700A1F8940091F8900040F002006E -:101B500081F89000A06890F8901011F0010F12D158 -:101B600090F86520002319465830FAF789FE0028BE -:101B700008BFFFDF0121A06880F8651080F88C1095 -:101B80000021A0F88A10A06890F86410012907D1FC -:101B9000002180F8641080F88810E078E1F7BCF943 -:101BA000A168D1F8F800098842888A4204BF017808 -:101BB000042940F0E5814FF000050570E078E1F779 -:101BC000ABF9A06890F86410002908BF80F888502D -:101BD00000F0D6B9A0680023072190F8642058309F -:101BE000FAF74EFEB0B16078002840F0C98102A932 -:101BF0002069FBF7CDFB9DF80800002500F02501CA -:101C0000A06880F896109DF8091001F0410180F855 -:101C1000971000E04EE080F88850D0F8F810008867 -:101C20004988814218BFFFDFA068D0F8F8100D7016 -:101C3000D0F844110A78002A18BFFFDF7FF453AFB1 -:101C40000288CA80D0F844110D71D0F84411029A6C -:101C50008A60039ACA60D0F8442108211170018873 -:101C6000D0F844014180E078E1F756F93BE7A068FD -:101C70000023092190F864205830FAF701FEC8B11A -:101C80006078002840F07C81A16881F87C0081F8B0 -:101C9000880081F8640000F073B9A0680023194639 -:101CA00090F865205830FAF7EBFD18B1607818B15C -:101CB00000F066B901209AE0A0680021A0F88A101F -:101CC000012180F88C10022180F8651000F058B9CD -:101CD000A0680023194690F865205830FAF7D0FD27 -:101CE00088B32069FBF73EFB00287CD0A5682069FB -:101CF000FBF734FB2887A5682069FBF72BFB688777 -:101D0000A5682069FBF72CFBA887A5682069FBF76D -:101D100023FBE887A06890F864101C2913BF90F893 -:101D20004E10012180F84E10012907D090F80511BE -:101D3000002904BF90F80411002905D04FF01E01BE -:101D400080F865101AE04FE04FF01D0180F8651033 -:101D50000288A0F82A21028FA0F82C21428FA0F837 -:101D60002E21828F00F58A71A0F83021C08FC883A0 -:101D70004FF001000875E078E1F7CEF8A068002187 -:101D8000A0F88A10012180F88C10F9E0A0680023E7 -:101D90000A2190F864205830FAF772FD20B32069C8 -:101DA000FBF7E0FAA8B1A5682069FBF7D7FA288706 -:101DB000A5682069FBF7CEFA6887A5682069FBF75C -:101DC000CFFAA887A5682069FBF7C6FAE88700F074 -:101DD000FEFEA068002180F8881080F8641000BF23 -:101DE00000F0C6FECCE058E0607840F00100607082 -:101DF000C6E0A0680023194690F865205830FAF72D -:101E00003FFD00283FF456AFA06890F864002328F7 -:101E100012BF2428607840F02000E8D06846F5F72B -:101E200052FB002808BF002104D0009802A9C07806 -:101E30008DF80800A06801AB162290F86400FAF74C -:101E4000FAFE88B1A0689DF80420162180F8EC20E5 -:101E500080F8ED10192180F86510012180F88C10B0 -:101E60000021A0F88A108BE02069FBF796FAA0B158 -:101E70002169087900F00702A06880F850204979AC -:101E800001F0070180F8511090F80F31002B04BFCA -:101E900090F80E31002B05D024E04FF00000FFF742 -:101EA0007AFC6DE090F855C000F15403944501BFF1 -:101EB0001A788A42012180F87D1013D00288A0F898 -:101EC000362190F8502000F58A7180F8382190F87A -:101ED000510081F825004FF0010081F82000E078E2 -:101EE000E1F71AF8A068212180F86510012180F837 -:101EF0008C100021A0F88A1042E0A06890F86400DD -:101F00001F287FF471AF2069FBF751FA88B320696D -:101F1000A2680179407901F0070161F307052946BC -:101F200000F0070060F30F21012082F888000025EF -:101F3000A2F88450232082F86400566DD2F8100174 -:101F4000FAF731FEF2B2C1B28A4207BFA16881F846 -:101F5000F250A26882F8F210C6F30721C0F30720FE -:101F6000814219BFA16881F8F300A06880F8F3509E -:101F700006E0FFE70120FFF70EFC1E20FFF799FBAC -:101F8000A068D0E92A12491C42F10002C0E92A12D5 -:101F900004B070BD2DE9F047FE4D04464FF0000738 -:101FA000687808436870287910F0200F2846806808 -:101FB00018BFA0F87E7004D1B0F87E10491CA0F8BC -:101FC0007E1090F86A10012639B990F86420002339 -:101FD00006215830FAF754FC58B3A88810F4006F63 -:101FE00007D0A86890F86A10002918BFA0F876708A -:101FF0001FD1A868B0F87610491C89B2A0F87610F5 -:10200000B0F878208A422CBF511A00218288521DD4 -:102010008A4228BF80F87C60B0F87610B0F878204B -:10202000914206D3A0F8767080F81A61E878E0F75C -:1020300073FF287910F0600F08D0A86890F8681036 -:1020400021B980F868600121FFF71EF94FF00808F8 -:10205000002C56D16878002851D1287910F0040F4F -:102060000DD0A86890F86400032808BFFFDFA868B7 -:1020700090F86710072904BF2E7080F8677001F090 -:10208000FEF8287910F0080F19D06878B8B9A86858 -:10209000002190F8CB00FFF739FBA86890F8CB003F -:1020A000FE2808BFFFDFFE21A86880F8CB1090F85B -:1020B0006710082903D10221297080F86770FFF7A3 -:1020C000A5FBA87810F0080F16D0A86800230521FA -:1020D00090F864205830FAF7D3FB50B185F80180AE -:1020E000A868D0F8441108780D2808BF00200870AF -:1020F00002E00020F8F7B8FFA86800F0F8FF00F051 -:10210000B0FDA868A14600F1580490F8F40030B979 -:10211000E27B002301212046FAF7B2FB10B1608D6B -:10212000401C60853D21B9F1000F18D128780228A4 -:1021300008BF16200ED0012804BFA86890F8F6004A -:1021400008D06878E8B110F0140F1CBF1E2020776B -:1021500002D005E0207703E010F0080F02D02177CD -:10216000E67641E010F0030F03D02A202077E676D0 -:102170003AE010F0200F08BFFFDF23202077E6763B -:1021800032E094F8300028B1A08D411CA185E18D8A -:10219000884213D294F8340028B1608E411C6186C5 -:1021A000E18D88420AD2618D208D814203D3AA68D5 -:1021B00092F8F42012B9E28D914203D322202077C5 -:1021C000E67611E0217C31B1E18C814228BF84F8B0 -:1021D0001C80C5D206E0E08C062803D33E20207781 -:1021E000E67601E0E07EA0B12773677327740221D1 -:1021F000A868FFF749F8A86890F8CB10012904D126 -:10220000D0F8FC000178491E0170E878E0F784FE00 -:1022100003E00021A868FFF737F8BDE8F047F5F7BD -:1022200061B95C4A51789378194314D11146012859 -:10223000896809D0107910F0040F03D091F8670075 -:10224000072808D001207047B1F84800098E88425D -:1022500001D8FEF7B7BC0020704770B54D4C06465C -:102260000D46A0883043A08016F0020F04D016F06F -:10227000010F18BFFFDFE56016F0010F18BF2561E1 -:1022800016F0020F10D0E878062802D00B2837D0BD -:102290000AE0A06890F86410182905D10021C0E96F -:1022A0002A11012180F86A1016F0800F1CBF082047 -:1022B000A07016F4806F08BF70BDA268B2F8580015 -:1022C00091880844801DE97880B2012908BFA2F8EE -:1022D000020107D0002904BFD2F8F810888001D08D -:1022E000182915D0E978284601291CD011B31829DE -:1022F00018BF70BDB2F8F010BDE87040FBF769B8C8 -:10230000A06890F86410122908BF0021CCD1C9E759 -:1023100092F8F210002902BF92F8F3100029002071 -:10232000A2F8F000DEE7B2F8021141724FEA112183 -:10233000A97270BDD2F8F810898841734FEA112153 -:10234000A97370BDF0B5134C85B00026A060A680BF -:102350006670A670054626700088F5F78BF8A068B1 -:102360000088F5F7ADF8B5F8D800A168401C82B236 -:1023700001F15800FAF77AF8002818BFFFDF95F846 -:10238000650024280DD1B5F85810B5F8F000081AEA -:1023900000B201E08C0100200028A4BF6078002872 -:1023A00006D095F86400242818BF25283BD119E0F1 -:1023B000A06890F8F210002908BF90F8541080F837 -:1023C000541090F8F310002908BF90F8551080F8C9 -:1023D00055100020FFF76DF985F86560A16881F858 -:1023E0007D6020E0B5F85810B5F8F000081A00B28A -:1023F0000028A4BF6078002815D1A06890F8F210DA -:10240000002908BF90F8541080F8541090F8F31089 -:10241000002908BF90F8551080F855100020FFF7EC -:1024200048F985F86460A5F8D860A06890F888102D -:1024300039B1B0F88410B0F88620914224BF05B0BD -:10244000F0BD90F88C1039B1B0F88A10B0F8862041 -:10245000914224BF05B0F0BDB0F88220B0F88010E2 -:102460008A4224BF05B0F0BD90F868209AB3B0F856 -:102470007E208A4224BF05B0F0BD00BF90F8CB702B -:10248000FE2F00F013816846F4F7F7FF002808BF1D -:10249000FFDF2221009802F0B4FB03210098FAF735 -:1024A00089FE0098017821F0100101703946FAF791 -:1024B000A6FE192F80F0D880DFE807F02820144608 -:1024C000D6D6D71A71D6D7D764D6D6D6D6C9D7D747 -:1024D0007B94ADD6B600B0F87E10062924BF05B0B7 -:1024E000F0BDCBE7A168009891F8F5100171BCE050 -:1024F000A068009990F8CC000871B6E0A068D0F808 -:10250000FC00411C0098FAF7C6FEAEE0A1680098F6 -:10251000D1F8F82092790271D1F8F820128942712D -:10252000120A8271D1F8F8205289C271120A02721D -:10253000D1F8F82092894272120A8272D1F8F8100A -:10254000C989FAF77FFE90E0A068D0F8F800011D75 -:102550000098FAF7ADFEA068D0F8F80000F10C0181 -:102560000098FAF7AFFEA068D0F8F80000F11E015D -:102570000098FAF7ADFEA06800F1C0010098FAF7E4 -:10258000B5FE72E06269009811780171918841711D -:10259000090A81715188C171090A017265E0FD491A -:1025A000D1E90001CDE9020102A90098FAF7B8FECD -:1025B0005BE0A068B0F844100098FAF7BBFEA06892 -:1025C000B0F846100098FAF7B9FEA068B0F84010CD -:1025D0000098FAF7B7FEA068B0F842100098FAF732 -:1025E000B5FE42E0A068B0F840100098FAF7AAFEE5 -:1025F000A068B0F842100098FAF7A8FEA068B0F8FA -:1026000044100098FAF796FEA068B0F846100098BB -:10261000FAF794FE29E0A168009891F81021027160 -:1026200091F81111417120E0A06890F8F300FAF7D9 -:10263000B5FA01460098FAF7C8FEA06890F8F200D3 -:10264000FAF7ACFA01460098FAF7BBFE0DE0A06875 -:1026500090F8ED100098FAF7DCFEA06890F8EC1006 -:102660000098FAF7DAFE00E0FFDFF4F719FF002820 -:1026700008BFFFDF0098C178012903D049B11829AC -:102680000FD013E0A168B1F802114172090A8172FA -:102690000CE0A168D1F8F81089884173090A8173A8 -:1026A00004E0A168B1F8F010FAF793FEBA48009080 -:1026B000BA4BBB4A29463046F8F724FCA0680023F1 -:1026C000052190F864205830FAF7DAF8002804BFA2 -:1026D00005B0F0BD05B0BDE8F040F8F7ECB9B14881 -:1026E000806890F8881029B1B0F88410B0F886207E -:1026F000914219D290F88C1029B1B0F88A10B0F834 -:102700008620914210D2B0F88220B0F880108A4220 -:102710000AD290F86820B0F87E001AB1884203D23D -:10272000F8F77EBC0628FBD30020014632E470B5E2 -:102730000C46064615464FF4A471204602F083FA73 -:102740002680002D08BFFFDF2868C4F8F8006868FD -:10275000C4F8FC00A868C4F8440170BDF0F7AFB835 -:102760002DE9F0410D4607460621EFF79FFF041EB5 -:1027700008BFBDE8F081D4F844110026087858B1AC -:102780004A8821888A4207D1092810D00E281DD0F6 -:102790000D2832D008284CD094F81A01002857D0C0 -:1027A0006E701020287084F81A61AF803EE06E7061 -:1027B00009202870D4F84401416869608168A960E3 -:1027C0008089A881D4F8440106702FE00846F0F70C -:1027D0009FF80746EFF74BFDB0B96E700E202870DA -:1027E000D4F8440140686860D4F844010670384663 -:1027F000EFF737FD0120BDE8F0810846F0F788F8D3 -:102800000746EFF734FD10B10020BDE8F0816E708F -:102810000D202870D4F8440141686960008928813E -:10282000D4F8440106703846EFF71BFD0120BDE8DF -:10283000F0816E7008202870D4F8440141688268E5 -:10284000C0686960AA60E860D4F844010670EDE7EA -:1028500094F81C01B0B16E701520287094F81C011A -:102860000028E3D084F81C61D4F81E016860D4F815 -:102870002201A860B4F82601A88194F81C01002860 -:10288000F0D1D3E794F8280170B16E701D20287044 -:1028900084F82861D4F82A016860D4F82E01A86071 -:1028A000B4F83201A881C1E794F8340140B16E70E8 -:1028B0001E20287084F83461D4F836016860B5E7CA -:1028C00094F8140180B16E701B20287094F81401E4 -:1028D0000028ABD084F81461D4F81601686094F82D -:1028E00014010028F6D1A1E794F83A01002808BFA6 -:1028F000BDE8F0816E701620287094F83A01002827 -:1029000094D000BF84F83A61D4F83C016860B4F810 -:102910004001288194F83A010028F3D186E7214A42 -:102920005061D17070472DE9F0470446481E85B2CA -:1029300038BFBDE8F08704F108080126DFF864908D -:102940004FF0090A5FF00007B4F8D800401CA4F863 -:10295000D800B4F87E00401CA4F87E0094F86A0009 -:1029600040B994F864200023062104F15800F9F7D7 -:1029700087FF30B3B4F87600401C80B2A4F876002C -:10298000B4F8781081422CBF0A1A0022A3885B1D7C -:10299000934209E040520200951F020023220200E8 -:1029A0005B2202008C01002028BF84F87C608842F2 -:1029B00007D3A4F8767084F81A6199F80300E0F759 -:1029C000ABFA94F8880020B1B4F88400401CA4F855 -:1029D000840094F88C0020B1B4F88A00401CA4F85C -:1029E0008A0094F8F40040B994F86720002301218C -:1029F00004F15800F9F744FF20B1B4F88200401CFC -:102A0000A4F8820094F864000C2802D00D2820D08D -:102A100067E0B4F85800411CB4F80201814260D16B -:102A2000D4F8FC00411C404602F021FA0221204665 -:102A3000F9F73FFCD4F8FC000078002808BFFFDF5E -:102A40000121FE20FEF762FE84F8647084F898602D -:102A500047E0B4F85800411CD4F8F800808881425F -:102A60003FD1D4F844010178002918BFFFDF22D1FB -:102A70002188C180D4F8F8004189D4F8440101814B -:102A8000D4F8F8008189D4F844014181D4F8F800E1 -:102A9000C189D4F844018181D4F844010771D4F884 -:102AA000440180F800A0D4F844012188418099F8BD -:102AB0000300E0F731FA01212046F9F7FAFB032180 -:102AC0002046FEF7E1FBD9F80800D0F8F8000078BE -:102AD000022818BFFFDF0221FE20FEF717FE84F850 -:102AE0006470B4F85800401C691EA4F858008DB2F8 -:102AF000BFF42AAFBDE8F087FA4AC2E90601704781 -:102B000070B50446B0F87E0094F86810002908BF3C -:102B1000C0F1020503D0B4F88010081A051F94F81C -:102B20007C0040B194F864200023092104F158008E -:102B3000F9F7A6FEA0B1B4F8766094F86A0058B927 -:102B400094F864200023062104F15800F9F798FE58 -:102B5000002808BF284603D0B4F87800801B001F67 -:102B6000A842D8BF0546002DD4BF0020A8B270BD32 -:102B7000042110B5DB4CA068FEF786FBA06890F836 -:102B80004E10012902BF022180F84E1010BD00F541 -:102B90008A710288A0F81E21028EA0F82021828E60 -:102BA000A0F82221028FB0F844309A4228BF1A467A -:102BB0000A82828FB0F84600824238BF10464882AF -:102BC00001200872E078BDE81040E0F7A5B9C548DB -:102BD00030B4806890F84E30B0F832C0C48EB0F88F -:102BE0004010428F022B25D08A4238BF1146018601 -:102BF000C28FB0F842108A4238BF11468186028FD8 -:102C0000B0F844108A4238BF11464186828FB0F82E -:102C100046108A4238BF1146C186418E614588BF41 -:102C20008C46A0F832C0C18EA14288BF0C46C48633 -:102C300030BC7047038E9A4228BF1A46C58F838ED8 -:102C40009D4238BF2B468A4238BF11460186B0F8F4 -:102C500042108B4228BF0B468386002180F84E101D -:102C6000CDE770B59F4CA06890F8CB10FE2906BF49 -:102C70006178002970BD90F867204FF000034FF095 -:102C8000010100F15800F9F7FBFD002818BF70BDE5 -:102C9000A06890F8F41021B1BDE870400220FEF762 -:102CA000E7BC90F86420002319465830F9F7E8FD96 -:102CB00040B1A06890F87C0020B1BDE870401220BF -:102CC000FEF7D6BCA068002590F86420122A1FD019 -:102CD00004DC032A3FD0112A1FD003E0182A35D084 -:102CE000232A43D0002304215830F9F7C9FD0028D6 -:102CF00018BF70BDD4F808C09CF8650019286ED0C4 -:102D00003BDC01286ED002287AD003285DD038E061 -:102D1000BDE870400B20FEF7ABBCF2F7DFFE0C28DD -:102D200038BF70BDA0680821D0F8F8001E30F2F757 -:102D3000D9FE28B1A0680421C030F2F7D3FE00B953 -:102D4000FFDFBDE870400320FEF792BCBDE8704095 -:102D50000620FEF78DBC90F8CA1080F8CC10072032 -:102D6000FEF786FCA06880F8645070BD1820FEF75E -:102D70007FFCA068A0F8845070BD1E2848D0212890 -:102D80006CD0DCF8F80001260178002974D0408866 -:102D9000BCF8001088426FD100239CF864201946CB -:102DA0000CF15800F9F76CFD002865D0A068D0F848 -:102DB000F810097802297DD003297CD004297BD022 -:102DC000052908BF082078D0C8E09CF8C9008CF815 -:102DD000CC000720FEF74CFCA06800F06EB97CE048 -:102DE00000E00DE00C20FEF743FCA068A0F88A503C -:102DF00090F8901041F0010180F8901000F05DB95A -:102E00001320FEF735FCA068A0F88A5000F055B9F1 -:102E10009CF80501002818BF70BD9CF8040188B11A -:102E2000BCF80601ACF84000BCF80801ACF8420060 -:102E3000BCF80A01ACF84400BCF80C01ACF8460040 -:102E40008CF80451FFF7C3FEFFF792FE1520FEF742 -:102E50000FFCA068A0F88A5000F02FB99CF87D0004 -:102E600058B18CF8F2508CF8F3501820FEF700FCA3 -:102E7000A068A0F88A5070BD70E09CF80F0100288F -:102E800018BF70BD9CF80E01002808BF70BDDCE9BA -:102E90001416DCF81001F9F786FEF2B2C1B28A42CC -:102EA00007BFA16881F8F250A26882F8F210C6F359 -:102EB000072103E018E01DE03DE024E0C0F3072017 -:102EC000814219BFA16881F8F300A06880F8F3502F -:102ED0001820BDE87040FEF7CBBB1120FEF7C8FB01 -:102EE000A068EAE08C01002090F86500F9F7B0FCDA -:102EF000A0BB08E090F8691041B190F86A00002882 -:102F000008BFFFDF0A20FEF7B3FB27E0F2F7E6FD7C -:102F10000C2823D3A0680821D0F8F8001E30F2F75F -:102F2000E1FD28B1A0680421C030F2F7DBFD00B953 -:102F3000FFDF0320E7E790F8900010F0030F0DD1BA -:102F40000C20FEF795FBA068A0F8845080F88860FC -:102F500090F8901041F0010180F89010A06890F86E -:102F6000CB10FE2918BF70BD90F8642000231946CD -:102F70005830F9F785FC002808BF70BDA06890F8AC -:102F80000011E9B3A1690978D1BB90F86500F9F7A0 -:102F90005FFCA8BBA068B0F858100A2931D900F12D -:102FA00008010522E06901F081FD0028A06804BF46 -:102FB00080F8005170BDD0F8FC00017861B1411C6F -:102FC0000522E06901F072FD002818BF70BDA068FD -:102FD000D0F8FC00007830B9A068E169D0F8FC00B6 -:102FE000401C01F044FFA068D0F8FC000178491CA7 -:102FF00001700120FEF73CFBA06880F8005170BD15 -:10300000FFE7A06890F8041111B190F8051181B3A1 -:1030100090F80E11002908BF70BD90F80F1100291B -:1030200018BF70BD90F86500F9F712FC002818BFB2 -:1030300070BDA06890F85400012808BF012503D096 -:10304000022814BFFFDF0225A06890F85500012870 -:1030500008BF012603D0022814BFFFDF0226A168A3 -:10306000012D91F810012BD0022D08BF022829D084 -:1030700033E0FFE7B0F80611A0F84010B0F80811EF -:10308000A0F84210B0F80A11A0F84410B0F80C11E2 -:10309000A0F8461080F8045190F865001D2804D06F -:1030A000BDE870401420FEF7E3BAFFF790FDFFF78C -:1030B0005FFD1520FEF7DCFAA06880F8655070BD52 -:1030C00001280AD191F81101012E04D0022E08BF67 -:1030D000022807D001E0012804D0BDE87040162086 -:1030E000FEF7C6BABDE870400020FEF7E2BA70B540 -:1030F000044690F8640000250C2814D00D2818BF51 -:1031000070BDB4F85800D4F8F810401C8988884283 -:1031100018BF70BDD4F84401FE4E0178002918BFD5 -:10312000FFDF45D122E0B4F85800B4F80211401C8A -:10313000884218BF70BDD4F8FC00411C04F108009F -:1031400001F095FE02212046F9F7B3F8D4F8FC000F -:103150000078002808BFFFDF0121FE20FEF7D6FA25 -:1031600084F86450012084F8980070BD2188C180E3 -:10317000D4F8F800D4F8441140890881D4F8F80054 -:10318000D4F8441180894881D4F8F800D4F8441167 -:10319000C0898881D4F844010571D4F8441109200C -:1031A0000870D4F8441120884880F078DFF7B4FE26 -:1031B00001212046F9F77DF803212046FEF764F847 -:1031C000B068D0F8F8000078022818BFFFDF0221AD -:1031D000FE20FEF79BFA84F8645070BD70B5CD4CAC -:1031E000A16891F86420162A11BF132A91F88E2045 -:1031F000002A62781BBF02206070002A70BD81F82F -:10320000C8004FF0000581F88D5081F88850D1F842 -:10321000F80009884088884218BFFFDFA068D0F80E -:10322000F8000078032818BFFFDF0321FE20FEF717 -:103230006DFAA068D0F844110A78002A18BFFFDFA1 -:1032400019D10288CA80D0F8442190F8C8101171B1 -:10325000D0F844110D72D0F844210D211170D0F82E -:103260004421018851800088EFF752FBEEF7EAFF16 -:10327000E078DFF751FEA06880F8645070BD10B5AB -:10328000A44C207910F0020F08BF10BD6078002810 -:1032900018BF10BDE068C078192880F06B81DFE8A6 -:1032A00000F05F4F0D8EF9F9A5223FF96F82B0F95A -:1032B000F9F9F9F8E4E1FAF6F5F9F400A068002369 -:1032C000012190F867205830F9F7DAFA002818BF82 -:1032D00010BD0821A06880F86710002180F88810D0 -:1032E00080F88C1010BDA0680023194690F8652066 -:1032F0005830F9F7C5FA18B1A168002081F88C00A0 -:10330000A0680023194690F864205830F9F7B8FAFD -:10331000002808BF10BD0020A16881F8880010BDFA -:10332000A0680023194690F864205830F9F7A8FAED -:10333000002808BFFFDF0420A16881F8640010BDE9 -:10334000A0680023194690F864205830F9F798FADD -:10335000002808BFFFDF0C20A16881F8640010BDC1 -:10336000A0680023194690F864205830F9F788FACD -:10337000002808BFFFDF0D20A16881F8640010BDA0 -:10338000A0680023194690F864205830F9F778FABD -:10339000002808BFFFDF0121A06880F88D100F21F1 -:1033A00080F8641010BDA06890F86400122818BF5F -:1033B000FFDF0121A06880F88E101121F0E7A068DE -:1033C0000023194690F864205830F9F759FA28B9C3 -:1033D000A06890F88E00002808BFFFDF0121A068D8 -:1033E00080F88D10132180F8641010BDA06890F84B -:1033F0006400182818BFFFDF1A20A16881F8640054 -:1034000010BDA068D0F8F81003884A889A4204BF1B -:10341000097804291BD190F864204FF00003194665 -:1034200000F15800F9F72CFA002808BFFFDFA06868 -:1034300090F8901011F0020F04BF012180F8641081 -:1034400005D0002180F88810D0F8F8000170A0683D -:103450000023194690F865205830F9F711FA002832 -:1034600008BF10BD0020A16881E0A06800231946B4 -:1034700090F864205830F9F703FA002808BFFFDFFE -:103480000520A16881F8640010BD30E01FE012E063 -:1034900001E068E06EE0A0680023194690F864201F -:1034A0005830F9F7EDF9002808BFFFDF1C20A168AC -:1034B00081F86400E8E7A0680023194690F86520C9 -:1034C0005830F9F7DDF9002808BFFFDFCAE7A06828 -:1034D0000023194690F864205830F9F7D1F90028F4 -:1034E00008BFFFDF1F20A16881F86400CCE7A06857 -:1034F00090F8651021291DD090F86410232918BF79 -:10350000FFDFC1D190F8F210002904BF90F8F3104A -:10351000002901E08C0100201CBF242180F86410E8 -:103520007FF4F9AE4FF0000180F864100846FEF712 -:10353000C0F8F0E690F8F210002907BF90F8F310F9 -:103540000029242180F865108CD14FF0000180F80B -:10355000651080F87D1090F80E0100281CBF002037 -:10356000FEF7A7F87EE7A168002081F8650081F8E2 -:103570008C0089E7FFDF87E770B58D4C0829207A3A -:1035800062D2DFE801F0041959592561615978B117 -:10359000F3F702F801210846F3F724F9F3F78EFE5A -:1035A0000020A072F3F7C7F8BDE87040F3F7F8BA4F -:1035B000BDE87040F1F7C6B8D4E90001F0F7B9FEF4 -:1035C0002060A07A401CC0B2A07228281CD370BD15 -:1035D000A07A0025401EC6B2E0683044F3F7E0FB55 -:1035E00010B9E1687F208855A07A272828BF0125D7 -:1035F0002846F3F707FEA07A282809D2401CC0B25B -:10360000A072282828BF70BDBDE87040F3F793B8BA -:10361000207A00281CBF012000F085F8F3F728FA73 -:10362000F3F7B0FA0120E07262480078DFF774FC2B -:10363000BDE87040F1F786B8002808BF70BD0020D3 -:10364000BDE8704000F06FB8FFDF70BD10B5584C9A -:10365000207A002804BF0C2010BD00202072E072E8 -:10366000607AF1F7C1FC607AF1F70BFF607AF1F74D -:1036700040F900280CBF1F20002010BD002270B5AB -:103680004B4C06460D46207A68B12272E272607A8F -:10369000F1F7AAFC607AF1F7F4FE607AF1F729F904 -:1036A000002808BFFFDF4348E560067070BD70B5B5 -:1036B000050007D0A5F5E8503F494C3881429CBF32 -:1036C000122070BD3A4CE068002804BF092070BD8C -:1036D000207A00281CBF0C2070BD3848F1F7ADF8E7 -:1036E0006072202804BF1F2070BDF1F721F920600F -:1036F000002D1CBF2844206001206560207200203E -:1037000000F011F8002070BD2949CA7A002A04BFD0 -:10371000002070471F22027000224270CB68436075 -:10372000CA72012070472DE9F04184B00746F1F7D5 -:10373000FFF81F4D8046414668682C6800EB80000A -:1037400046002046F1F710FEB04206DB6868811B98 -:103750004046F0F7EEFD0446286040F234762146FC -:103760004046F1F701FEB04204DA31464046F0F738 -:10377000E0FD044600208DF800004FF4DD6003906A -:1037800004208DF80500002F14BF012003208DF8C0 -:10379000040068460294F1F79AFA687A6946F1F7EC -:1037A00011FB002808BFFFDF04B0BDE8F081000076 -:1037B00044130020AC010020B5EB3C007935020039 -:1037C0002DE9F0410C4612490D68114A11490832A1 -:1037D0001160A0F12001312901D301200CE0412822 -:1037E00010D040CC0C4F94E80E0007EB8000241F53 -:1037F00050F8807C3046B84720600548001D0560C1 -:10380000BDE8F0812046DDF703FDF5E706207047AF -:1038100010050240010000014852020010B5534853 -:10382000F2F7DEF800B1FFDF5048401CF2F7D8F89D -:10383000002800D0FFDF10BD2DE9F14F4C4ED6F827 -:1038400000B001274948F2F7D3F8DFF8208128B902 -:103850005FF0000708F10100F2F7E0F8454C0025A1 -:103860004FF0030901206060C4F80051C4F804510E -:10387000009931602060DFF800A118E0DAF800005C -:10388000C00614D50E2000F064F8EFF3108010F09D -:10389000010072B600D00120C4F80493D4F80011DE -:1038A00019B9D4F8041101B920BF00B962B6D4F82F -:1038B000000118B9D4F804010028DFD0D4F80401BD -:1038C0000028CFD137B1C6F800B008F10100F2F7F7 -:1038D0008FF811E008F10100F2F78AF80028B9D159 -:1038E000C4F80893C4F80451C4F800510E2000F045 -:1038F00030F81E48F2F792F80020BDE8F88F2DE965 -:10390000F0438DB00D46064600240DF110090DF16F -:10391000200817E004EB4407102255F827106846EA -:1039200001F0F0F805EB870710224846796801F0AE -:10393000E9F86846FFF780FF10224146B86801F0B9 -:10394000E1F8641CB442E5DB0DB00020BDE8F08373 -:1039500072E7002809DB00F01F02012191404009B5 -:10396000800000F1E020C0F880127047AD01002017 -:1039700004E5004000E0004010ED00E0B249002006 -:103980000870704770B5B14D01232B60B04B1C68B7 -:10399000002CFCD0002407E00E6806601E68002E94 -:1039A000FCD0001D091D641C9442F5D30020286042 -:1039B00018680028FCD070BD70B5A34E0446A54D14 -:1039C0003078022800D0FFDFAC4200D3FFDF7169FE -:1039D000A148012903D847F23052944201DD032265 -:1039E0004271491C7161291BC1609B497078F1F7D4 -:1039F000E9F9002800D1FFDF70BD70B5924C0D468B -:103A00006178884200D0FFDF924E082D4BD2DFE86C -:103A100005F04A041E2D4A4A4A382078022800D070 -:103A2000FFDF03202070A078012801D020B108E03A -:103A3000A06800F0AFFD04E004F1080007C8FFF73C -:103A4000A1FF05202070BDE87040F0F77BBEF0F7C5 -:103A50006FFF01466068F1F787FCB04202D26169EE -:103A600002290BD30320F1F75AFF12E0F0F760FFB1 -:103A700001466068F1F778FCB042F3D2BDE87040CF -:103A80009AE7207802280AD0052806D0FFDF042014 -:103A90002070BDE8704000F0CCB8022000E00320A8 -:103AA000F1F73DFFF3E7FFDF70BD70B50546F0F7B6 -:103AB0003FFF654C60602078012800D0FFDF664939 -:103AC000012008700020087104208D604871614851 -:103AD000C860022020706078F1F774F9002800D1E6 -:103AE000FFDF70BD10B5584C207838B90220F1F7CF -:103AF0002CFF18B90320F1F728FF08B1112010BDE1 -:103B00005648F0F79AFE6070202804D001202070FB -:103B10000020606110BD032010BD2DE9F047144660 -:103B2000054600EB84000E46A0F1040800F045FDB8 -:103B300007464FF0805001694F4306EB8401091F8F -:103B4000B14201D2012100E0002189461CB1006987 -:103B5000B4EB900F02D90920BDE8F0872846DDF7C5 -:103B6000ABFB90B9A84510D3BD4205D2B84503D2EE -:103B700045EA0600800701D01020EDE73046DDF76A -:103B80009BFB10B9B9F1000F01D00F20E4E73448D6 -:103B900034490068884205D0224631462846FFF75E -:103BA000F1FE14E0FFF79EFF0028D5D12648002142 -:103BB0008560C0E90364817000F071F810B14FF4C2 -:103BC000A97000E0292060431830FFF76EFF002045 -:103BD000C2E770B505464FF0805004696C4320463B -:103BE000DDF76AFB08B10F2070BD00F0E6FCA842CB -:103BF00001D8102070BD1A481A490068884203D0C5 -:103C0000204600F0C7FC10E0FFF76CFF0028F1D160 -:103C10000D4801218460817000F041F808B112481C -:103C200000E012481830FFF740FF002070BD00F0A0 -:103C30000DBF10B5044C6078F0F75BFE00B9FFDFF4 -:103C40000020207010BD0000B001002004E50140FC -:103C500000E40140105C0C0054130020FB3902000A -:103C600054000020BEBAFECA645E0100084C010088 -:103C70004FF08050D0F830010A2801D00020704762 -:103C80000120704700B5FFF7F3FF20B14FF08050DF -:103C9000D0F8340108B1002000BD012000BD4FF074 -:103CA0008050D0F83011062905D0D0F83001401CE2 -:103CB00001D000207047012070474FF08050D0F8AD -:103CC0003001082801D0002070470120704700B55E -:103CD000FFF7E5FF48B14FF08050D0F834110629C6 -:103CE00005D3D0F83401401C01D0002000BD0120D4 -:103CF00000BD00B5FFF7D3FF58B14FF08050D0F8AA -:103D00003411062905D3D0F83401401C01D001201C -:103D100000BD002000BD00004C4909680160002082 -:103D200070474A4908600020704701218A0720B186 -:103D3000012804D042F204007047916700E0D16787 -:103D40000020704742490120086042F20600704797 -:103D500008B504233E4A1907103230B1C1F80433C4 -:103D6000106840F0010010600BE0106820F00100C6 -:103D70001060C1F808330020C1F808013548006818 -:103D80000090002008BD011F0B2909D830491031CF -:103D90000A6822F01E0242EA4000086000207047D4 -:103DA00042F205007047000100F18040C0F804199C -:103DB00000207047000100F18040C0F80819002081 -:103DC0007047000100F18040D0F800090860002031 -:103DD0007047012801D9072070471F4A52F8200078 -:103DE00002680A43026000207047012801D90720B9 -:103DF0007047194A52F8200002688A430260002086 -:103E00007047012801D907207047134A52F8200053 -:103E10000068086000207047020010494FF0000061 -:103E200003D0012A01D0072070470A6070474FF085 -:103E300080410020C1F808014FF0E020802180F887 -:103E400000140121C0F80011704700000004004078 -:103E500000050040080100400C53020078050040B6 -:103E60006249634B0A6863499A42096801D1C1F308 -:103E700010010160002070475C495D4B0A685D4994 -:103E8000091D9A4201D1C0F310000860002070475C -:103E90005649574B0A68574908319A4201D1C0F335 -:103EA000100008600020704730B5504B504D1C6822 -:103EB00042F20803AC4202D0142802D203E01128D7 -:103EC00001D3184630BDC3004B481844C0F8101544 -:103ED000C0F81425002030BD4449454B0A6842F221 -:103EE00009019A4202D0062802D203E0042801D335 -:103EF00008467047404A012142F8301000207047C0 -:103F00003A493B4B0A6842F209019A4202D006281C -:103F100002D203E0042801D308467047364A012143 -:103F200002EBC00041600020704770B52F4A304E50 -:103F3000314C156842F2090304EB8002B54204D00B -:103F4000062804D2C2F8001807E0042801D3184656 -:103F500070BDC1F31000C2F80008002070BD70B53C -:103F6000224A234E244C156842F2090304EB8002D6 -:103F7000B54204D0062804D2D2F8000807E004288D -:103F800001D3184670BDD2F80008C0F310000860D5 -:103F9000002070BD174910B508311848086011207D -:103FA000154A002102EBC003C3F81015C3F814151D -:103FB000401C1428F6D3002006E0042804D302EBAA -:103FC0008003C3F8001807E002EB8003D3F8004831 -:103FD000C4F31004C3F80048401C0628EDD310BDFC -:103FE000044906480831086070470000540000206A -:103FF000BEBAFECA00F5014000F001400000FEFF1D -:10400000834B1B6803B19847BFF34F8F814801680A -:10401000814A01F4E06111430160BFF34F8F00BF9B -:10402000FDE710B5EFF3108010F0010F72B601D06C -:10403000012400E0002400F0E1F850B1DDF7DCF9E4 -:10404000F0F73BFAF1F70DFCE7F73EFF734900206C -:10405000086004B962B6002010BD2DE9F0410C469D -:104060000546EFF3108010F0010F72B601D0012663 -:1040700000E0002600F0C2F820B106B962B60820C0 -:10408000BDE8F081DDF7ACF8DDF7BAF902460020B3 -:1040900001234709BF0007F1E02700F01F01D7F80F -:1040A0000071CF40F9071BD0202803D222FA00F17B -:1040B000C90727D141B2002904DB01F1E02191F8C1 -:1040C000001405E001F00F0101F1E02191F8141D49 -:1040D0004909082916D203FA01F717F0EC0F11D09D -:1040E000401C6428D5D3E7F7CDFE4D4A4D4900204A -:1040F000E7F710FF49494C4808602046DDF7E3F830 -:1041000060B904E006B962B641F20100B8E7404880 -:1041100004602DB12846DDF723F918B110242CE0F6 -:10412000424D19E02878022802D94FF4805424E047 -:1041300007240028687801D0F8B908E0E8B1202801 -:104140001BD8A878212818D8012816D001E0A87813 -:1041500098B9E8780B2810D83549802081F8140DDB -:10416000DDF74EF92946F1F762FBF0F765F900F04B -:1041700057FA2846DDF712F9044606B962B61CB1B3 -:10418000FFF74FFF20467BE7002079E710B5044694 -:1041900000F034F800B101202070002010BD254946 -:1041A00008600020704770B50C4623490D6822490D -:1041B000224E08310E60102807D011280CD012288A -:1041C0000FD0132811D0012013E0D4E90001FFF72C -:1041D00044FF354620600DE0FFF723FF00252060F7 -:1041E00008E02068FFF7D2FF03E01249206808606A -:1041F000002020601048001D056070BD07480A4976 -:104200000068884201D101207047002070470000FB -:10421000C80100200CED00E00400FA055400002065 -:10422000F813002000000020BEBAFECA145302009A -:104230000BE000E004000020100502400100000136 -:1042400000B5864910F1080F08BFF82024D014DC0F -:1042500010F1280F08BFD8201ED010F1140F08BF8E -:10426000EC2019D010F1100F08BFF02014D010F17D -:104270000C0F08BFF4200FD00CE010F1040F08BFA2 -:10428000FC2009D0002818BF032805D0042804BF4B -:10429000086000BDFFDF00BD086000BD00B57049CB -:1042A000012808BF032004D0022816BFFFDF042026 -:1042B00000BD086000BD70B505460C4616461046A8 -:1042C000F2F7C9FF022C08BF4FF47A7105D0012C18 -:1042D0000CBF4FF4C86140F6340144183046F2F781 -:1042E000E4FF204449F6797108444FF47A71B0FB39 -:1042F000F1F0281A70BD70B505460C460846F2F775 -:10430000B9FF022C08BF40F24C4105D0012C0CBF74 -:1043100040F634014FF4AF5149F6CA62511A0844CD -:104320004FF47A7100F2E140B0FBF1F0281A801EE0 -:1043300070BD70B5064615460C460846F2F79AFF62 -:10434000022D08BF4FF47A7105D0012D0CBF4FF438 -:10435000C86140F63401022C08BF40F24C4205D03F -:10436000012C0CBF40F634024FF4AF52891A0844B6 -:1043700049F6FC6108444FF47A71B0FBF1F0301A51 -:1043800070BD70B504460E460846F2F764FF054658 -:104390003046F2F78AFF28444AF2AB3108444FF422 -:1043A0007A71B0FBF1F0201A801E70BD2DE9F0414A -:1043B00007461E460D4614461046082A16BF042816 -:1043C0004EF62830F2F747FF07EB4701C1EBC71164 -:1043D00000EBC100022D08BF40F24C4105D0012D79 -:1043E0000CBF40F634014FF4AF5147182846F2F79E -:1043F00041FF381A4FF47A7100F6B730B0FBF1F58F -:104400002046F2F71CFF28443044401DBDE8F081EF -:1044100070B5054614460E460846F2F71CFF05EB3C -:104420004502C2EBC512C0EBC2053046F2F73DFFB4 -:104430002D1A2046082C16BF04284EF62830F2F715 -:104440000AFF28444FF47A7100F6B730B0FBF1F55B -:104450002046F2F7F4FE2844401D70BD0C150040C4 -:10446000101500402DE9FE430C468046F8F7B6FED5 -:10447000074698F80160204601A96A46EDF7D3FE89 -:1044800005000DD0012F02D00320BDE8FE83204699 -:1044900002AA0199EDF7E9FD0298B0F803000AE0DD -:1044A000022F14D1042E12D3B8F80300BDF8002057 -:1044B000011D914204D8001D80B2A919814202D188 -:1044C0004FF00000E1E702D24FF00100DDE74FF0CE -:1044D0000200DAE7C2790D2341B342BB818801298A -:1044E00004D94908818004BF012282800168012922 -:1044F00018BF002930D001686FEA0101C1EBC10289 -:1045000002EB011281796FEA010101EB8103C3EB38 -:10451000811111444FEA914201608188B2FBF1F3AD -:1045200001FB132181714FF0010102E01AB14FF03C -:104530000001C17170478188FF2908D24FF6FF72D0 -:1045400002EA41018180FF2984BFFF228280016845 -:10455000012918BF0029CED10360CCE7817931B1A0 -:10456000491E11F0FF0181711CBF0020704701201E -:10457000704710B50121C171817181800446042109 -:10458000F1F7B0FA002818BF10BD2068401C206069 -:1045900010BD00000B4A022111600B490B68002B73 -:1045A000FCD0084B1B1D186008680028FCD00020B8 -:1045B000106008680028FCD070474FF080504069B8 -:1045C0007047000004E5014000E4014002000B4692 -:1045D0004FF00000014620D0012A04D0022A04D066 -:1045E000032A0DD103E0012002E0022015E00320A0 -:1045F000072B05D2DFE803F00406080A0C0E1000B2 -:1046000007207047012108E0022106E0032104E0B1 -:10461000042102E0052100E00621F0F72CB900009A -:10462000F948052181700021017041707047F749F8 -:104630000A78012A05D0CA681044C8604038F0F7EB -:1046400060BE8A6810448860F8E7002819D00378B3 -:10465000EF49F04A13B1012B0ED011E00379012B81 -:1046600000D06BB943790BB1012B09D18368643B4E -:104670008B4205D2C0680EE00379012B02D00BB14A -:104680000020704743790BB1012BF9D1C368643B1B -:104690008B42F5D280689042F2D801207047DB4906 -:1046A00010B501220A700279A2B100220A71427982 -:1046B00092B104224A718268D34C52328A60C06837 -:1046C0001434C8606060F0F733F9CF4920600220ED -:1046D000887010BD0322E9E70322EBE770B5CB4DEC -:1046E000044600202870207988B100202871607964 -:1046F00078B10420C44E6871A168F068EFF719FE24 -:10470000A860E0685230E8600320B07070BD0120FE -:10471000ECE70320EEE72DE9F04105460226F0F72D -:1047200010FD006800B1FFDFB74C01273DB12878CC -:10473000B0B1012805D0022810D0032813D027716A -:104740000CE06868C82807D3F0F735FE20B1686828 -:10475000FFF76DFF012603E0002601E000F05EF99F -:104760003046BDE8F08120780028F7D16868FFF76F -:104770006CFF0028E3D06868017879B1A07804283C -:1047800000D0FFDF01216868FFF7A8FF9F49E078AC -:10479000F0F718FB0028E1D1FFDFDFE7FFF77FFF2D -:1047A0006770DBE72DE9F047974C8846E17888424F -:1047B00000D0FFDFDFF8509200250127934E09F16A -:1047C0001409B8F1080F75D2DFE808F0040C28527C -:1047D0007A808D95A078032802D0022800D0FFDFD0 -:1047E000BDE8F087A078032802D0022800D0FFDFC0 -:1047F0000420A07025712078002878D1FFF717FFDA -:104800003078012806D0B068E06000F033F920610C -:10481000002060E0E078F0F7D2F9F5E7A07803280F -:1048200002D0022800D0FFDF207800286DD1A078C8 -:10483000032816D0F0F77CF801464F46D9F800005F -:10484000F0F792FD00280EDB796881420BDB081A35 -:10485000F0606E49E078F0F7B5FA0028C0D1FFDFCC -:10486000BEE7042028E00420F1F759F8A570B7E767 -:10487000A078032802D0022800D0FFDF207888BB70 -:10488000A078032817D0F0F753F801464F46D9F81F -:104890000000F0F769FD0028E5DB79688142E2DB82 -:1048A000081AF0605949E078F0F78CFA002897D19F -:1048B000FFDF95E740E00520F1F731F8A7708FE7BB -:1048C000A078042800D0FFDF022004E0A0780428AC -:1048D00000D0FFDF0120A1688847FFF71CFF0546D5 -:1048E00030E004E011E0A078042800D0FFDFBDE84C -:1048F000F04700F093B8A078042804D0617809B19B -:10490000022800D0FFDF207818B1BDE8F04700F0A2 -:104910008EB8207920B10620F1F701F82571CDE796 -:10492000607838B13949E078F0F74CFA00B9FFDF28 -:10493000657055E70720BFE7FFDF51E73DB1012D67 -:1049400003D0FFDF022DF9D14AE70420C3E703209B -:10495000C1E770B5050004D02B4CA078052806D11E -:1049600001E0102070BD0820F0F7EFFF08B1112022 -:1049700070BD2948EFF761FFE070202806D00121C3 -:10498000F0F713FE0020A560A07070BD032070BD7D -:104990001D4810B5017809B1112010BD8178052995 -:1049A00006D0012906D029B101210170002010BDD7 -:1049B0000F2010BD00F03BF8F8E770B5124C05462B -:1049C000A07808B1012809D155B12846FFF73DFE6E -:1049D00040B1287840B1A078012809D00F2070BDDF -:1049E000102070BD072070BD2846FFF758FE03E079 -:1049F00000212846FFF772FE0449E078F0F7E2F95B -:104A000000B9FFDF002070BDCC010020641300203E -:104A10003D860100FF1FA107A54702000A4810B507 -:104A2000006900F01FF8BDE81040EFF78BBE0648A4 -:104A300010B5C078EFF75DFF00B9FFDF0820F0F791 -:104A40006EFFBDE81040EBE5CC01002010B5134C23 -:104A50002060201D0160114810300260001D0360BD -:104A6000002010BD0E490A6848F202139A4302431F -:104A70000A6070470A4A116848F2021301EA03000B -:104A8000994311607047054B02465B421020134466 -:104A9000FC2B01D811600020704700000006004088 -:104AA000C8060240704770477047704740EA0103EC -:104AB00010B59B070FD1042A0DD310C808C9121FC7 -:104AC0009C42F8D020BA19BA884201D9012010BD01 -:104AD0004FF0FF3010BD1AB1D30703D0521C07E0CE -:104AE000002010BD10F8013B11F8014B1B1B07D132 -:104AF00010F8013B11F8014B1B1B01D1921EF1D1A3 -:104B0000184610BD032A40F2308010F0030C00F06C -:104B1000158011F8013BBCF1020F624498BF11F8F7 -:104B200001CB00F8013B38BF11F8013BA2F10402B0 -:104B300098BF00F801CB38BF00F8013B11F0030328 -:104B400000F02580083AC0F0088051F8043B083A8C -:104B500051F804CBA0E80810F5E7121D5CBF51F82E -:104B6000043B40F8043BAFF30080D20724BF11F8A8 -:104B7000013B11F801CB48BF11F8012B24BF00F80D -:104B8000013B00F801CB48BF00F8012B704710B57E -:104B9000203AC0F00B80B1E81850203AA0E8185035 -:104BA000B1E81850A0E81850BFF4F5AF5FEA027CF6 -:104BB00024BFB1E81850A0E8185044BF18C918C065 -:104BC000BDE810405FEA827C24BF51F8043B40F806 -:104BD000043B08BF7047D20728BF31F8023B48BFEB -:104BE00011F8012B28BF20F8023B48BF00F8012B29 -:104BF000704702F0FF0343EA032242EA024200F058 -:104C000002B84FF000020429C0F0128010F0030C2B -:104C100000F01B80CCF1040CBCF1020F18BF00F8AF -:104C2000012BA8BF20F8022BA1EB0C0100F00DB85E -:104C30005FEAC17C24BF00F8012B00F8012B48BFBC -:104C400000F8012B70474FF0000200B51346944660 -:104C50009646203922BFA0E80C50A0E80C50B1F1D4 -:104C60002001BFF4F7AF090728BFA0E80C5048BFE8 -:104C70000CC05DF804EB890028BF40F8042B08BF86 -:104C8000704748BF20F8022B11F0804F18BF00F882 -:104C9000012B70477047704770477047FEDF184917 -:104CA0000978F9B90420714608421BD10699154AC2 -:104CB000914217DC0699022914DB02394878DF2873 -:104CC00010D10878FE2807D0FF280BD14FF0010043 -:104CD0004FF000020C4B184741F201000099019A75 -:104CE000094B1847094B002B02D01B68DB6818479B -:104CF0004FF0FF3071464FF00002034B18470000A1 -:104D000028ED00E0006002000140020004000020E5 -:104D1000174818497047FFF7FBFFDCF74FFA00BD53 -:104D2000154816490968884203D1154A13605B6823 -:104D3000184700BD20BFFDE70F48104909688842A9 -:104D400010D1104B18684FF0FF318842F2D080F339 -:104D500008884FF02021884204DD0B4802680321B7 -:104D60000A4302600948804709488047FFDF000086 -:104D700078130020781300200010000000000020AD -:104D8000040000200060020014090040C52F00004C -:104D9000214D020004207146084202D0EFF3098140 -:104DA00001E0EFF30881886902380078102813DBEE -:104DB00020280FDB2C280BDB0A4A12680A4B9A4288 -:104DC00003D1602804DB094A1047022008607047BD -:104DD000074A1047074A1047074A12682C321268E0 -:104DE0001047000054000020BEBAFECA051400009F -:104DF000C1370200A7410200040000200D4B0E49FC -:104E000008470E4B0C4908470D4B0B4908470D4B03 -:104E1000094908470C4B084908470C4B0649084705 -:104E20000B4B054908470B4B034908470A4B0249FE -:104E300008470000ADBC0000E1BF0000552D000098 -:104E4000CF2B00005D2B0000F72D00002114000087 -:104E50001B2900004D2F0000C91100000021016036 -:104E600081807047002101604160017270470A68CB -:104E700002600B790371704759960000B7970000E4 -:104E8000199900007D990000B7990000EB99000086 -:104E90001D9A0000559A0000C39A00000797000071 -:104EA0003D990000A7120000B54300000144000036 -:104EB00067440000F344000017460000D946000094 -:104EC0000B470000E34700007B480000CF4800008C -:104ED000B5490000D5490000C3160000E7160000E0 -:104EE000171600006B16000019170000AD17000020 -:104EF00023600000D361000099650000B1660000E6 -:104F00003B670000B96700001D6800003D690000B4 -:104F10000D6A0000796A0000F7490000FD490000B1 -:104F2000074A00006F4A00009B4A0000394C00000D -:104F3000634C00009B4C0000114D0000F74D000039 -:104F4000154E000025440000A7120000A712000023 -:104F5000A7120000A7120000A7120000A71200006D -:104F6000A7120000A3250000292600004526000006 -:104F700061260000EF2700008B2600009526000028 -:104F8000D7260000F9260000D527000017280000CA -:104F9000A7120000A7120000A7830000C78300002B -:104FA000D18300000B8400003984000029850000B3 -:104FB000B7850000CB850000198600002F87000010 -:104FC000D5880000FD8900002B730000158A0000C1 -:104FD000A7120000A7120000A1B500000BB7000047 -:104FE0005FB70000CBB700007BB8000001000000F5 -:104FF00000000000100110013A0200001A02000433 -:1050000005060000FFFFFFFF0000FFFF95AD000059 -:10501000173D00004921000075730000ED8E00006F -:105020000000000099910000759100008791000038 -:10503000000002000000000000020000000000006C -:1050400000010000000000005381000033810000D7 -:10505000A181000025250000E724000007250000AD -:10506000FFA800002BA9000033AB00001D59000071 -:10507000C181000000000000F181000073250000E4 -:1050800000000000000000000000000015AA000061 -:1050900000000000B1590000030000000155555503 -:1050A000D6BE898E00006306630C631200000703FE -:1050B000AB054F08000053044308330C0000000008 -:1050C00048080000480800009F5600009F56000056 -:1050D0009143000041AC0000F77500005B20000028 -:1050E0002F2702004D9D0100DD560000DD56000017 -:1050F000B3430000A3AC00007B760000CD2000008D -:105100005D270200619D01007001700140003800C0 -:105110005C0024004801000200000300656C74621A -:10512000000000000000000000000000000000007F -:1051300087000000000000000000000000000000E8 -:10514000BE83605ADB0B376038A5F5AA9183886C63 -:1051500001000000732E0100393D01000000000134 -:105160000206030405000000070000000000000024 -:10517000060000000A00000032000000730000007A -:10518000B4000000538901009113020037F80000B9 -:105190003DB001005DEA01003DB00100D5F900001D -:1051A000FBB1010053E70100FBB1010035F600003F -:1051B00089B10100AFE9010089B1010033F80000B5 -:1051C00051B001000DE5010051B0010087FE000063 -:1051D00073B4010011EB010073B40100F401FA0093 -:1051E000960064004B0032001E0014000A00050007 -:1051F000020001000041000000000000AAAED7AB91 -:10520000154120100C0802170D01010209090101C6 -:10521000060209181803010109090303055555552C -:10522000252627D6BE898E00F401FA009600640078 -:105230004B0032001E0014000A00050002000100AD -:105240002541000000000000613E0200793E02009E -:10525000913E0200A93E0200D93E0200013F020039 -:105260002B3F02005F3F0200D33B02001B3B0200CA -:105270002F3C0200874A0200E1590100F159010068 -:105280001D5A0100EF5A0100F75A0100095B0100A5 -:105290002B3D0200453D0200193D0200233D020066 -:1052A000513D0200873D02000D380200A73D02007B -:1052B000B53D0200C33D0200D33D0200EB3D0200BC -:1052C000033E0200193E02000D38020000000000FB -:1052D0004FBA0000A5BA0000BBBA0000CD450200DD -:1052E00039380200FF380200534902009149020098 -:1052F000BB490200C1580100215D01000D380200C8 -:105300000D3802000D3802000D3802001C05004067 -:105310002005004000100200385302000800002061 -:10532000E0010000441100006C530200E80100207D -:1053300090110000A0110000011413F81302412085 -:105340000A2006441A0102228C2720FB349B5F802E -:105350001280021E10133F0B1420FC0A1B2082082F -:0C536000019C0916C7327F0B6CEC10BCDE -:00000001FF diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble.h deleted file mode 100644 index da1a06b..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble.h +++ /dev/null @@ -1,667 +0,0 @@ -/* - * Copyright (c) 2012 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_COMMON BLE SoftDevice Common - @{ - @defgroup ble_api Events, type definitions and API calls - @{ - - @brief Module independent events, type definitions and API calls for the BLE SoftDevice. - - */ - -#ifndef BLE_H__ -#define BLE_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_err.h" -#include "ble_gap.h" -#include "ble_l2cap.h" -#include "ble_gatt.h" -#include "ble_gattc.h" -#include "ble_gatts.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_COMMON_ENUMERATIONS Enumerations - * @{ */ - -/** - * @brief Common API SVC numbers. - */ -enum BLE_COMMON_SVCS -{ - SD_BLE_ENABLE = BLE_SVC_BASE, /**< Enable and initialize the BLE stack */ - SD_BLE_EVT_GET, /**< Get an event from the pending events queue. */ - SD_BLE_UUID_VS_ADD, /**< Add a Vendor Specific base UUID. */ - SD_BLE_UUID_DECODE, /**< Decode UUID bytes. */ - SD_BLE_UUID_ENCODE, /**< Encode UUID bytes. */ - SD_BLE_VERSION_GET, /**< Get the local version information (company ID, Link Layer Version, Link Layer Subversion). */ - SD_BLE_USER_MEM_REPLY, /**< User Memory Reply. */ - SD_BLE_OPT_SET, /**< Set a BLE option. */ - SD_BLE_OPT_GET, /**< Get a BLE option. */ - SD_BLE_CFG_SET, /**< Add a configuration to the BLE stack. */ - SD_BLE_UUID_VS_REMOVE, /**< Remove a Vendor Specific base UUID. */ -}; - -/** - * @brief BLE Module Independent Event IDs. - */ -enum BLE_COMMON_EVTS -{ - BLE_EVT_USER_MEM_REQUEST = BLE_EVT_BASE + 0, /**< User Memory request. @ref ble_evt_user_mem_request_t */ - BLE_EVT_USER_MEM_RELEASE = BLE_EVT_BASE + 1, /**< User Memory release. @ref ble_evt_user_mem_release_t */ -}; - -/**@brief BLE Connection Configuration IDs. - * - * IDs that uniquely identify a connection configuration. - */ -enum BLE_CONN_CFGS -{ - BLE_CONN_CFG_GAP = BLE_CONN_CFG_BASE + 0, /**< BLE GAP specific connection configuration. */ - BLE_CONN_CFG_GATTC = BLE_CONN_CFG_BASE + 1, /**< BLE GATTC specific connection configuration. */ - BLE_CONN_CFG_GATTS = BLE_CONN_CFG_BASE + 2, /**< BLE GATTS specific connection configuration. */ - BLE_CONN_CFG_GATT = BLE_CONN_CFG_BASE + 3, /**< BLE GATT specific connection configuration. */ - BLE_CONN_CFG_L2CAP = BLE_CONN_CFG_BASE + 4, /**< BLE L2CAP specific connection configuration. */ -}; - -/**@brief BLE Common Configuration IDs. - * - * IDs that uniquely identify a common configuration. - */ -enum BLE_COMMON_CFGS -{ - BLE_COMMON_CFG_VS_UUID = BLE_CFG_BASE, /**< Vendor specific base UUID configuration */ -}; - -/**@brief Common Option IDs. - * IDs that uniquely identify a common option. - */ -enum BLE_COMMON_OPTS -{ - BLE_COMMON_OPT_PA_LNA = BLE_OPT_BASE + 0, /**< PA and LNA options */ - BLE_COMMON_OPT_CONN_EVT_EXT = BLE_OPT_BASE + 1, /**< Extended connection events option */ - BLE_COMMON_OPT_EXTENDED_RC_CAL = BLE_OPT_BASE + 2, /**< Extended RC calibration option */ -}; - -/** @} */ - -/** @addtogroup BLE_COMMON_DEFINES Defines - * @{ */ - -/** @brief Required pointer alignment for BLE Events. -*/ -#define BLE_EVT_PTR_ALIGNMENT 4 - -/** @brief Leaves the maximum of the two arguments. -*/ -#define BLE_MAX(a, b) ((a) < (b) ? (b) : (a)) - -/** @brief Maximum possible length for BLE Events. - * @note The highest value used for @ref ble_gatt_conn_cfg_t::att_mtu in any connection configuration shall be used as a parameter. - * If that value has not been configured for any connections then @ref BLE_GATT_ATT_MTU_DEFAULT must be used instead. -*/ -#define BLE_EVT_LEN_MAX(ATT_MTU) ( \ - offsetof(ble_evt_t, evt.gattc_evt.params.prim_srvc_disc_rsp.services) + ((ATT_MTU) - 1) / 4 * sizeof(ble_gattc_service_t) \ -) - -/** @defgroup BLE_USER_MEM_TYPES User Memory Types - * @{ */ -#define BLE_USER_MEM_TYPE_INVALID 0x00 /**< Invalid User Memory Types. */ -#define BLE_USER_MEM_TYPE_GATTS_QUEUED_WRITES 0x01 /**< User Memory for GATTS queued writes. */ -/** @} */ - -/** @defgroup BLE_UUID_VS_COUNTS Vendor Specific base UUID counts - * @{ - */ -#define BLE_UUID_VS_COUNT_DEFAULT 10 /**< Default VS UUID count. */ -#define BLE_UUID_VS_COUNT_MAX 254 /**< Maximum VS UUID count. */ -/** @} */ - -/** @defgroup BLE_COMMON_CFG_DEFAULTS Configuration defaults. - * @{ - */ -#define BLE_CONN_CFG_TAG_DEFAULT 0 /**< Default configuration tag, SoftDevice default connection configuration. */ - -/** @} */ - -/** @} */ - -/** @addtogroup BLE_COMMON_STRUCTURES Structures - * @{ */ - -/**@brief User Memory Block. */ -typedef struct -{ - uint8_t *p_mem; /**< Pointer to the start of the user memory block. */ - uint16_t len; /**< Length in bytes of the user memory block. */ -} ble_user_mem_block_t; - -/**@brief Event structure for @ref BLE_EVT_USER_MEM_REQUEST. */ -typedef struct -{ - uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ -} ble_evt_user_mem_request_t; - -/**@brief Event structure for @ref BLE_EVT_USER_MEM_RELEASE. */ -typedef struct -{ - uint8_t type; /**< User memory type, see @ref BLE_USER_MEM_TYPES. */ - ble_user_mem_block_t mem_block; /**< User memory block */ -} ble_evt_user_mem_release_t; - -/**@brief Event structure for events not associated with a specific function module. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which this event occurred. */ - union - { - ble_evt_user_mem_request_t user_mem_request; /**< User Memory Request Event Parameters. */ - ble_evt_user_mem_release_t user_mem_release; /**< User Memory Release Event Parameters. */ - } params; /**< Event parameter union. */ -} ble_common_evt_t; - -/**@brief BLE Event header. */ -typedef struct -{ - uint16_t evt_id; /**< Value from a BLE__EVT series. */ - uint16_t evt_len; /**< Length in octets including this header. */ -} ble_evt_hdr_t; - -/**@brief Common BLE Event type, wrapping the module specific event reports. */ -typedef struct -{ - ble_evt_hdr_t header; /**< Event header. */ - union - { - ble_common_evt_t common_evt; /**< Common Event, evt_id in BLE_EVT_* series. */ - ble_gap_evt_t gap_evt; /**< GAP originated event, evt_id in BLE_GAP_EVT_* series. */ - ble_gattc_evt_t gattc_evt; /**< GATT client originated event, evt_id in BLE_GATTC_EVT* series. */ - ble_gatts_evt_t gatts_evt; /**< GATT server originated event, evt_id in BLE_GATTS_EVT* series. */ - ble_l2cap_evt_t l2cap_evt; /**< L2CAP originated event, evt_id in BLE_L2CAP_EVT* series. */ - } evt; /**< Event union. */ -} ble_evt_t; - - -/** - * @brief Version Information. - */ -typedef struct -{ - uint8_t version_number; /**< Link Layer Version number. See https://www.bluetooth.org/en-us/specification/assigned-numbers/link-layer for assigned values. */ - uint16_t company_id; /**< Company ID, Nordic Semiconductor's company ID is 89 (0x0059) (https://www.bluetooth.org/apps/content/Default.aspx?doc_id=49708). */ - uint16_t subversion_number; /**< Link Layer Sub Version number, corresponds to the SoftDevice Config ID or Firmware ID (FWID). */ -} ble_version_t; - -/** - * @brief Configuration parameters for the PA and LNA. - */ -typedef struct -{ - uint8_t enable :1; /**< Enable toggling for this amplifier */ - uint8_t active_high :1; /**< Set the pin to be active high */ - uint8_t gpio_pin :6; /**< The GPIO pin to toggle for this amplifier */ -} ble_pa_lna_cfg_t; - -/** - * @brief PA & LNA GPIO toggle configuration - * - * This option configures the SoftDevice to toggle pins when the radio is active for use with a power amplifier and/or - * a low noise amplifier. - * - * Toggling the pins is achieved by using two PPI channels and a GPIOTE channel. The hardware channel IDs are provided - * by the application and should be regarded as reserved as long as any PA/LNA toggling is enabled. - * - * @note @ref sd_ble_opt_get is not supported for this option. - * @note Setting this option while the radio is in use (i.e. any of the roles are active) may have undefined consequences - * and must be avoided by the application. - */ -typedef struct -{ - ble_pa_lna_cfg_t pa_cfg; /**< Power Amplifier configuration */ - ble_pa_lna_cfg_t lna_cfg; /**< Low Noise Amplifier configuration */ - - uint8_t ppi_ch_id_set; /**< PPI channel used for radio pin setting */ - uint8_t ppi_ch_id_clr; /**< PPI channel used for radio pin clearing */ - uint8_t gpiote_ch_id; /**< GPIOTE channel used for radio pin toggling */ -} ble_common_opt_pa_lna_t; - -/** - * @brief Configuration of extended BLE connection events. - * - * When enabled the SoftDevice will dynamically extend the connection event when possible. - * - * The connection event length is controlled by the connection configuration as set by @ref ble_gap_conn_cfg_t::event_length. - * The connection event can be extended if there is time to send another packet pair before the start of the next connection interval, - * and if there are no conflicts with other BLE roles requesting radio time. - * - * @note @ref sd_ble_opt_get is not supported for this option. - */ -typedef struct -{ - uint8_t enable : 1; /**< Enable extended BLE connection events, disabled by default. */ -} ble_common_opt_conn_evt_ext_t; - -/** - * @brief Enable/disable extended RC calibration. - * - * If extended RC calibration is enabled and the internal RC oscillator (@ref NRF_CLOCK_LF_SRC_RC) is used as the SoftDevice - * LFCLK source, the SoftDevice as a peripheral will by default try to increase the receive window if two consecutive packets - * are not received. If it turns out that the packets were not received due to clock drift, the RC calibration is started. - * This calibration comes in addition to the periodic calibration that is configured by @ref sd_softdevice_enable(). When - * using only peripheral connections, the periodic calibration can therefore be configured with a much longer interval as the - * peripheral will be able to detect and adjust automatically to clock drift, and calibrate on demand. - * - * If extended RC calibration is disabled and the internal RC oscillator is used as the SoftDevice LFCLK source, the - * RC oscillator is calibrated periodically as configured by @ref sd_softdevice_enable(). - * - * @note @ref sd_ble_opt_get is not supported for this option. - */ -typedef struct -{ - uint8_t enable : 1; /**< Enable extended RC calibration, enabled by default. */ -} ble_common_opt_extended_rc_cal_t; - -/**@brief Option structure for common options. */ -typedef union -{ - ble_common_opt_pa_lna_t pa_lna; /**< Parameters for controlling PA and LNA pin toggling. */ - ble_common_opt_conn_evt_ext_t conn_evt_ext; /**< Parameters for enabling extended connection events. */ - ble_common_opt_extended_rc_cal_t extended_rc_cal; /**< Parameters for enabling extended RC calibration. */ -} ble_common_opt_t; - -/**@brief Common BLE Option type, wrapping the module specific options. */ -typedef union -{ - ble_common_opt_t common_opt; /**< COMMON options, opt_id in @ref BLE_COMMON_OPTS series. */ - ble_gap_opt_t gap_opt; /**< GAP option, opt_id in @ref BLE_GAP_OPTS series. */ -} ble_opt_t; - -/**@brief BLE connection configuration type, wrapping the module specific configurations, set with - * @ref sd_ble_cfg_set. - * - * @note Connection configurations don't have to be set. - * In the case that no configurations has been set, or fewer connection configurations has been set than enabled connections, - * the default connection configuration will be automatically added for the remaining connections. - * When creating connections with the default configuration, @ref BLE_CONN_CFG_TAG_DEFAULT should be used in - * place of @ref ble_conn_cfg_t::conn_cfg_tag. - * - * @sa sd_ble_gap_adv_start() - * @sa sd_ble_gap_connect() - * - * @mscs - * @mmsc{@ref BLE_CONN_CFG} - * @endmscs - - */ -typedef struct -{ - uint8_t conn_cfg_tag; /**< The application chosen tag it can use with the - @ref sd_ble_gap_adv_start() and @ref sd_ble_gap_connect() calls - to select this configuration when creating a connection. - Must be different for all connection configurations added and not @ref BLE_CONN_CFG_TAG_DEFAULT. */ - union { - ble_gap_conn_cfg_t gap_conn_cfg; /**< GAP connection configuration, cfg_id is @ref BLE_CONN_CFG_GAP. */ - ble_gattc_conn_cfg_t gattc_conn_cfg; /**< GATTC connection configuration, cfg_id is @ref BLE_CONN_CFG_GATTC. */ - ble_gatts_conn_cfg_t gatts_conn_cfg; /**< GATTS connection configuration, cfg_id is @ref BLE_CONN_CFG_GATTS. */ - ble_gatt_conn_cfg_t gatt_conn_cfg; /**< GATT connection configuration, cfg_id is @ref BLE_CONN_CFG_GATT. */ - ble_l2cap_conn_cfg_t l2cap_conn_cfg; /**< L2CAP connection configuration, cfg_id is @ref BLE_CONN_CFG_L2CAP. */ - } params; /**< Connection configuration union. */ -} ble_conn_cfg_t; - -/** - * @brief Configuration of Vendor Specific base UUIDs, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_INVALID_PARAM Too many UUIDs configured. - */ -typedef struct -{ - uint8_t vs_uuid_count; /**< Number of 128-bit Vendor Specific base UUID bases to allocate memory for. - Default value is @ref BLE_UUID_VS_COUNT_DEFAULT. Maximum value is - @ref BLE_UUID_VS_COUNT_MAX. */ -} ble_common_cfg_vs_uuid_t; - -/**@brief Common BLE Configuration type, wrapping the common configurations. */ -typedef union -{ - ble_common_cfg_vs_uuid_t vs_uuid_cfg; /**< Vendor Specific base UUID configuration, cfg_id is @ref BLE_COMMON_CFG_VS_UUID. */ -} ble_common_cfg_t; - -/**@brief BLE Configuration type, wrapping the module specific configurations. */ -typedef union -{ - ble_conn_cfg_t conn_cfg; /**< Connection specific configurations, cfg_id in @ref BLE_CONN_CFGS series. */ - ble_common_cfg_t common_cfg; /**< Global common configurations, cfg_id in @ref BLE_COMMON_CFGS series. */ - ble_gap_cfg_t gap_cfg; /**< Global GAP configurations, cfg_id in @ref BLE_GAP_CFGS series. */ - ble_gatts_cfg_t gatts_cfg; /**< Global GATTS configuration, cfg_id in @ref BLE_GATTS_CFGS series. */ -} ble_cfg_t; - -/** @} */ - -/** @addtogroup BLE_COMMON_FUNCTIONS Functions - * @{ */ - -/**@brief Enable the BLE stack - * - * @param[in, out] p_app_ram_base Pointer to a variable containing the start address of the - * application RAM region (APP_RAM_BASE). On return, this will - * contain the minimum start address of the application RAM region - * required by the SoftDevice for this configuration. - * - * @note The memory requirement for a specific configuration will not increase between SoftDevices - * with the same major version number. - * - * @note At runtime the IC's RAM is split into 2 regions: The SoftDevice RAM region is located - * between 0x20000000 and APP_RAM_BASE-1 and the application's RAM region is located between - * APP_RAM_BASE and the start of the call stack. - * - * @details This call initializes the BLE stack, no BLE related function other than @ref - * sd_ble_cfg_set can be called before this one. - * - * @mscs - * @mmsc{@ref BLE_COMMON_ENABLE} - * @endmscs - * - * @retval ::NRF_SUCCESS The BLE stack has been initialized successfully. - * @retval ::NRF_ERROR_INVALID_STATE The BLE stack had already been initialized and cannot be reinitialized. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. - * @retval ::NRF_ERROR_NO_MEM One or more of the following is true: - * - The amount of memory assigned to the SoftDevice by *p_app_ram_base is not - * large enough to fit this configuration's memory requirement. Check *p_app_ram_base - * and set the start address of the application RAM region accordingly. - * - Dynamic part of the SoftDevice RAM region is larger then 64 kB which - * is currently not supported. - * @retval ::NRF_ERROR_RESOURCES The total number of L2CAP Channels configured using @ref sd_ble_cfg_set is too large. - */ -SVCALL(SD_BLE_ENABLE, uint32_t, sd_ble_enable(uint32_t * p_app_ram_base)); - -/**@brief Add configurations for the BLE stack - * - * @param[in] cfg_id Config ID, see @ref BLE_CONN_CFGS, @ref BLE_COMMON_CFGS, @ref - * BLE_GAP_CFGS or @ref BLE_GATTS_CFGS. - * @param[in] p_cfg Pointer to a ble_cfg_t structure containing the configuration value. - * @param[in] app_ram_base The start address of the application RAM region (APP_RAM_BASE). - * See @ref sd_ble_enable for details about APP_RAM_BASE. - * - * @note The memory requirement for a specific configuration will not increase between SoftDevices - * with the same major version number. - * - * @note If a configuration is set more than once, the last one set is the one that takes effect on - * @ref sd_ble_enable. - * - * @note Any part of the BLE stack that is NOT configured with @ref sd_ble_cfg_set will have default - * configuration. - * - * @note @ref sd_ble_cfg_set may be called at any time when the SoftDevice is enabled (see @ref - * sd_softdevice_enable) while the BLE part of the SoftDevice is not enabled (see @ref - * sd_ble_enable). - * - * @note Error codes for the configurations are described in the configuration structs. - * - * @mscs - * @mmsc{@ref BLE_COMMON_ENABLE} - * @endmscs - * - * @retval ::NRF_SUCCESS The configuration has been added successfully. - * @retval ::NRF_ERROR_INVALID_STATE The BLE stack had already been initialized. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid cfg_id supplied. - * @retval ::NRF_ERROR_NO_MEM The amount of memory assigned to the SoftDevice by app_ram_base is not - * large enough to fit this configuration's memory requirement. - */ -SVCALL(SD_BLE_CFG_SET, uint32_t, sd_ble_cfg_set(uint32_t cfg_id, ble_cfg_t const * p_cfg, uint32_t app_ram_base)); - -/**@brief Get an event from the pending events queue. - * - * @param[out] p_dest Pointer to buffer to be filled in with an event, or NULL to retrieve the event length. - * This buffer must be aligned to the extend defined by @ref BLE_EVT_PTR_ALIGNMENT. - * The buffer should be interpreted as a @ref ble_evt_t struct. - * @param[in, out] p_len Pointer the length of the buffer, on return it is filled with the event length. - * - * @details This call allows the application to pull a BLE event from the BLE stack. The application is signaled that - * an event is available from the BLE stack by the triggering of the SD_EVT_IRQn interrupt. - * The application is free to choose whether to call this function from thread mode (main context) or directly from the - * Interrupt Service Routine that maps to SD_EVT_IRQn. In any case however, and because the BLE stack runs at a higher - * priority than the application, this function should be called in a loop (until @ref NRF_ERROR_NOT_FOUND is returned) - * every time SD_EVT_IRQn is raised to ensure that all available events are pulled from the BLE stack. Failure to do so - * could potentially leave events in the internal queue without the application being aware of this fact. - * - * Sizing the p_dest buffer is equally important, since the application needs to provide all the memory necessary for the event to - * be copied into application memory. If the buffer provided is not large enough to fit the entire contents of the event, - * @ref NRF_ERROR_DATA_SIZE will be returned and the application can then call again with a larger buffer size. - * The maximum possible event length is defined by @ref BLE_EVT_LEN_MAX. The application may also "peek" the event length - * by providing p_dest as a NULL pointer and inspecting the value of *p_len upon return: - * - * \code - * uint16_t len; - * errcode = sd_ble_evt_get(NULL, &len); - * \endcode - * - * @mscs - * @mmsc{@ref BLE_COMMON_IRQ_EVT_MSC} - * @mmsc{@ref BLE_COMMON_THREAD_EVT_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Event pulled and stored into the supplied buffer. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or not sufficiently aligned pointer supplied. - * @retval ::NRF_ERROR_NOT_FOUND No events ready to be pulled. - * @retval ::NRF_ERROR_DATA_SIZE Event ready but could not fit into the supplied buffer. - */ -SVCALL(SD_BLE_EVT_GET, uint32_t, sd_ble_evt_get(uint8_t *p_dest, uint16_t *p_len)); - - -/**@brief Add a Vendor Specific base UUID. - * - * @details This call enables the application to add a Vendor Specific base UUID to the BLE stack's table, for later - * use with all other modules and APIs. This then allows the application to use the shorter, 24-bit @ref ble_uuid_t - * format when dealing with both 16-bit and 128-bit UUIDs without having to check for lengths and having split code - * paths. This is accomplished by extending the grouping mechanism that the Bluetooth SIG standard base UUID uses - * for all other 128-bit UUIDs. The type field in the @ref ble_uuid_t structure is an index (relative to - * @ref BLE_UUID_TYPE_VENDOR_BEGIN) to the table populated by multiple calls to this function, and the UUID field - * in the same structure contains the 2 bytes at indexes 12 and 13. The number of possible 128-bit UUIDs available to - * the application is therefore the number of Vendor Specific UUIDs added with the help of this function times 65536, - * although restricted to modifying bytes 12 and 13 for each of the entries in the supplied array. - * - * @note Bytes 12 and 13 of the provided UUID will not be used internally, since those are always replaced by - * the 16-bit uuid field in @ref ble_uuid_t. - * - * @note If a UUID is already present in the BLE stack's internal table, the corresponding index will be returned in - * p_uuid_type along with an @ref NRF_SUCCESS error code. - * - * @param[in] p_vs_uuid Pointer to a 16-octet (128-bit) little endian Vendor Specific base UUID disregarding - * bytes 12 and 13. - * @param[out] p_uuid_type Pointer to a uint8_t where the type field in @ref ble_uuid_t corresponding to this UUID will be stored. - * - * @retval ::NRF_SUCCESS Successfully added the Vendor Specific base UUID. - * @retval ::NRF_ERROR_INVALID_ADDR If p_vs_uuid or p_uuid_type is NULL or invalid. - * @retval ::NRF_ERROR_NO_MEM If there are no more free slots for VS UUIDs. - */ -SVCALL(SD_BLE_UUID_VS_ADD, uint32_t, sd_ble_uuid_vs_add(ble_uuid128_t const *p_vs_uuid, uint8_t *p_uuid_type)); - - -/**@brief Remove a Vendor Specific base UUID. - * - * @details This call removes a Vendor Specific base UUID that has been added with @ref sd_ble_uuid_vs_add. This function allows - * the application to reuse memory allocated for Vendor Specific base UUIDs. - * - * @note Currently this function can only be called with a p_uuid_type set to @ref BLE_UUID_TYPE_UNKNOWN or the last added UUID type. - * - * @param[in] p_uuid_type Pointer to a uint8_t where the type field in @ref ble_uuid_t::type corresponds to the UUID type that - * shall be removed. If the type is set to @ref BLE_UUID_TYPE_UNKNOWN, or the pointer is NULL, the last - * Vendor Specific base UUID will be removed. - * @param[out] p_uuid_type Pointer to a uint8_t where the type field in @ref ble_uuid_t corresponds to the UUID type that was - * removed. If function returns with a failure, it contains the last type that is in use by the ATT Server. - * - * @retval ::NRF_SUCCESS Successfully removed the Vendor Specific base UUID. - * @retval ::NRF_ERROR_INVALID_ADDR If p_uuid_type is invalid. - * @retval ::NRF_ERROR_INVALID_PARAM If p_uuid_type points to a non-valid UUID type. - * @retval ::NRF_ERROR_FORBIDDEN If the Vendor Specific base UUID is in use by the ATT Server. - */ - -SVCALL(SD_BLE_UUID_VS_REMOVE, uint32_t, sd_ble_uuid_vs_remove(uint8_t *p_uuid_type)); - - -/** @brief Decode little endian raw UUID bytes (16-bit or 128-bit) into a 24 bit @ref ble_uuid_t structure. - * - * @details The raw UUID bytes excluding bytes 12 and 13 (i.e. bytes 0-11 and 14-15) of p_uuid_le are compared - * to the corresponding ones in each entry of the table of Vendor Specific base UUIDs populated with @ref sd_ble_uuid_vs_add - * to look for a match. If there is such a match, bytes 12 and 13 are returned as p_uuid->uuid and the index - * relative to @ref BLE_UUID_TYPE_VENDOR_BEGIN as p_uuid->type. - * - * @note If the UUID length supplied is 2, then the type set by this call will always be @ref BLE_UUID_TYPE_BLE. - * - * @param[in] uuid_le_len Length in bytes of the buffer pointed to by p_uuid_le (must be 2 or 16 bytes). - * @param[in] p_uuid_le Pointer pointing to little endian raw UUID bytes. - * @param[out] p_uuid Pointer to a @ref ble_uuid_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Successfully decoded into the @ref ble_uuid_t structure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_LENGTH Invalid UUID length. - * @retval ::NRF_ERROR_NOT_FOUND For a 128-bit UUID, no match in the populated table of UUIDs. - */ -SVCALL(SD_BLE_UUID_DECODE, uint32_t, sd_ble_uuid_decode(uint8_t uuid_le_len, uint8_t const *p_uuid_le, ble_uuid_t *p_uuid)); - - -/** @brief Encode a @ref ble_uuid_t structure into little endian raw UUID bytes (16-bit or 128-bit). - * - * @note The pointer to the destination buffer p_uuid_le may be NULL, in which case only the validity and size of p_uuid is computed. - * - * @param[in] p_uuid Pointer to a @ref ble_uuid_t structure that will be encoded into bytes. - * @param[out] p_uuid_le_len Pointer to a uint8_t that will be filled with the encoded length (2 or 16 bytes). - * @param[out] p_uuid_le Pointer to a buffer where the little endian raw UUID bytes (2 or 16) will be stored. - * - * @retval ::NRF_SUCCESS Successfully encoded into the buffer. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid UUID type. - */ -SVCALL(SD_BLE_UUID_ENCODE, uint32_t, sd_ble_uuid_encode(ble_uuid_t const *p_uuid, uint8_t *p_uuid_le_len, uint8_t *p_uuid_le)); - - -/**@brief Get Version Information. - * - * @details This call allows the application to get the BLE stack version information. - * - * @param[out] p_version Pointer to a ble_version_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Version information stored successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy (typically doing a locally-initiated disconnection procedure). - */ -SVCALL(SD_BLE_VERSION_GET, uint32_t, sd_ble_version_get(ble_version_t *p_version)); - - -/**@brief Provide a user memory block. - * - * @note This call can only be used as a response to a @ref BLE_EVT_USER_MEM_REQUEST event issued to the application. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_block Pointer to a user memory block structure or NULL if memory is managed by the application. - * - * @mscs - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_PEER_CANCEL_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_NOAUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Successfully queued a response to the peer. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_LENGTH Invalid user memory block length supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection state or no user memory request pending. - */ -SVCALL(SD_BLE_USER_MEM_REPLY, uint32_t, sd_ble_user_mem_reply(uint16_t conn_handle, ble_user_mem_block_t const *p_block)); - -/**@brief Set a BLE option. - * - * @details This call allows the application to set the value of an option. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} - * @endmscs - * - * @param[in] opt_id Option ID, see @ref BLE_COMMON_OPTS and @ref BLE_GAP_OPTS. - * @param[in] p_opt Pointer to a ble_opt_t structure containing the option value. - * - * @retval ::NRF_SUCCESS Option set successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. - * @retval ::NRF_ERROR_INVALID_STATE Unable to set the parameter at this time. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy or the previous procedure has not completed. - */ -SVCALL(SD_BLE_OPT_SET, uint32_t, sd_ble_opt_set(uint32_t opt_id, ble_opt_t const *p_opt)); - - -/**@brief Get a BLE option. - * - * @details This call allows the application to retrieve the value of an option. - * - * @param[in] opt_id Option ID, see @ref BLE_COMMON_OPTS and @ref BLE_GAP_OPTS. - * @param[out] p_opt Pointer to a ble_opt_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Option retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. - * @retval ::NRF_ERROR_INVALID_STATE Unable to retrieve the parameter at this time. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy or the previous procedure has not completed. - * @retval ::NRF_ERROR_NOT_SUPPORTED This option is not supported. - * - */ -SVCALL(SD_BLE_OPT_GET, uint32_t, sd_ble_opt_get(uint32_t opt_id, ble_opt_t *p_opt)); - -/** @} */ -#ifdef __cplusplus -} -#endif -#endif /* BLE_H__ */ - -/** - @} - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_err.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_err.h deleted file mode 100644 index 1b4820d..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_err.h +++ /dev/null @@ -1,93 +0,0 @@ -/* - * Copyright (c) 2012 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_COMMON - @{ - @addtogroup nrf_error - @{ - @ingroup BLE_COMMON - @} - - @defgroup ble_err General error codes - @{ - - @brief General error code definitions for the BLE API. - - @ingroup BLE_COMMON -*/ -#ifndef NRF_BLE_ERR_H__ -#define NRF_BLE_ERR_H__ - -#include "nrf_error.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/* @defgroup BLE_ERRORS Error Codes - * @{ */ -#define BLE_ERROR_NOT_ENABLED (NRF_ERROR_STK_BASE_NUM+0x001) /**< @ref sd_ble_enable has not been called. */ -#define BLE_ERROR_INVALID_CONN_HANDLE (NRF_ERROR_STK_BASE_NUM+0x002) /**< Invalid connection handle. */ -#define BLE_ERROR_INVALID_ATTR_HANDLE (NRF_ERROR_STK_BASE_NUM+0x003) /**< Invalid attribute handle. */ -#define BLE_ERROR_INVALID_ADV_HANDLE (NRF_ERROR_STK_BASE_NUM+0x004) /**< Invalid advertising handle. */ -#define BLE_ERROR_INVALID_ROLE (NRF_ERROR_STK_BASE_NUM+0x005) /**< Invalid role. */ -#define BLE_ERROR_BLOCKED_BY_OTHER_LINKS (NRF_ERROR_STK_BASE_NUM+0x006) /**< The attempt to change link settings failed due to the scheduling of other links. */ -/** @} */ - - -/** @defgroup BLE_ERROR_SUBRANGES Module specific error code subranges - * @brief Assignment of subranges for module specific error codes. - * @note For specific error codes, see ble_.h or ble_error_.h. - * @{ */ -#define NRF_L2CAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x100) /**< L2CAP specific errors. */ -#define NRF_GAP_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x200) /**< GAP specific errors. */ -#define NRF_GATTC_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x300) /**< GATT client specific errors. */ -#define NRF_GATTS_ERR_BASE (NRF_ERROR_STK_BASE_NUM+0x400) /**< GATT server specific errors. */ -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif - - -/** - @} - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gap.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gap.h deleted file mode 100644 index a130d7b..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gap.h +++ /dev/null @@ -1,2691 +0,0 @@ -/* - * Copyright (c) 2011 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_GAP Generic Access Profile (GAP) - @{ - @brief Definitions and prototypes for the GAP interface. - */ - -#ifndef BLE_GAP_H__ -#define BLE_GAP_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_hci.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup BLE_GAP_ENUMERATIONS Enumerations - * @{ */ - -/**@brief GAP API SVC numbers. - */ -enum BLE_GAP_SVCS -{ - SD_BLE_GAP_ADDR_SET = BLE_GAP_SVC_BASE, /**< Set own Bluetooth Address. */ - SD_BLE_GAP_ADDR_GET = BLE_GAP_SVC_BASE + 1, /**< Get own Bluetooth Address. */ - SD_BLE_GAP_WHITELIST_SET = BLE_GAP_SVC_BASE + 2, /**< Set active whitelist. */ - SD_BLE_GAP_DEVICE_IDENTITIES_SET = BLE_GAP_SVC_BASE + 3, /**< Set device identity list. */ - SD_BLE_GAP_PRIVACY_SET = BLE_GAP_SVC_BASE + 4, /**< Set Privacy settings*/ - SD_BLE_GAP_PRIVACY_GET = BLE_GAP_SVC_BASE + 5, /**< Get Privacy settings*/ - SD_BLE_GAP_ADV_SET_CONFIGURE = BLE_GAP_SVC_BASE + 6, /**< Configure an advertising set. */ - SD_BLE_GAP_ADV_START = BLE_GAP_SVC_BASE + 7, /**< Start Advertising. */ - SD_BLE_GAP_ADV_STOP = BLE_GAP_SVC_BASE + 8, /**< Stop Advertising. */ - SD_BLE_GAP_CONN_PARAM_UPDATE = BLE_GAP_SVC_BASE + 9, /**< Connection Parameter Update. */ - SD_BLE_GAP_DISCONNECT = BLE_GAP_SVC_BASE + 10, /**< Disconnect. */ - SD_BLE_GAP_TX_POWER_SET = BLE_GAP_SVC_BASE + 11, /**< Set TX Power. */ - SD_BLE_GAP_APPEARANCE_SET = BLE_GAP_SVC_BASE + 12, /**< Set Appearance. */ - SD_BLE_GAP_APPEARANCE_GET = BLE_GAP_SVC_BASE + 13, /**< Get Appearance. */ - SD_BLE_GAP_PPCP_SET = BLE_GAP_SVC_BASE + 14, /**< Set PPCP. */ - SD_BLE_GAP_PPCP_GET = BLE_GAP_SVC_BASE + 15, /**< Get PPCP. */ - SD_BLE_GAP_DEVICE_NAME_SET = BLE_GAP_SVC_BASE + 16, /**< Set Device Name. */ - SD_BLE_GAP_DEVICE_NAME_GET = BLE_GAP_SVC_BASE + 17, /**< Get Device Name. */ - SD_BLE_GAP_AUTHENTICATE = BLE_GAP_SVC_BASE + 18, /**< Initiate Pairing/Bonding. */ - SD_BLE_GAP_SEC_PARAMS_REPLY = BLE_GAP_SVC_BASE + 19, /**< Reply with Security Parameters. */ - SD_BLE_GAP_AUTH_KEY_REPLY = BLE_GAP_SVC_BASE + 20, /**< Reply with an authentication key. */ - SD_BLE_GAP_LESC_DHKEY_REPLY = BLE_GAP_SVC_BASE + 21, /**< Reply with an LE Secure Connections DHKey. */ - SD_BLE_GAP_KEYPRESS_NOTIFY = BLE_GAP_SVC_BASE + 22, /**< Notify of a keypress during an authentication procedure. */ - SD_BLE_GAP_LESC_OOB_DATA_GET = BLE_GAP_SVC_BASE + 23, /**< Get the local LE Secure Connections OOB data. */ - SD_BLE_GAP_LESC_OOB_DATA_SET = BLE_GAP_SVC_BASE + 24, /**< Set the remote LE Secure Connections OOB data. */ - SD_BLE_GAP_ENCRYPT = BLE_GAP_SVC_BASE + 25, /**< Initiate encryption procedure. */ - SD_BLE_GAP_SEC_INFO_REPLY = BLE_GAP_SVC_BASE + 26, /**< Reply with Security Information. */ - SD_BLE_GAP_CONN_SEC_GET = BLE_GAP_SVC_BASE + 27, /**< Obtain connection security level. */ - SD_BLE_GAP_RSSI_START = BLE_GAP_SVC_BASE + 28, /**< Start reporting of changes in RSSI. */ - SD_BLE_GAP_RSSI_STOP = BLE_GAP_SVC_BASE + 29, /**< Stop reporting of changes in RSSI. */ - SD_BLE_GAP_SCAN_START = BLE_GAP_SVC_BASE + 30, /**< Start Scanning. */ - SD_BLE_GAP_SCAN_STOP = BLE_GAP_SVC_BASE + 31, /**< Stop Scanning. */ - SD_BLE_GAP_CONNECT = BLE_GAP_SVC_BASE + 32, /**< Connect. */ - SD_BLE_GAP_CONNECT_CANCEL = BLE_GAP_SVC_BASE + 33, /**< Cancel ongoing connection procedure. */ - SD_BLE_GAP_RSSI_GET = BLE_GAP_SVC_BASE + 34, /**< Get the last RSSI sample. */ - SD_BLE_GAP_PHY_UPDATE = BLE_GAP_SVC_BASE + 35, /**< Initiate or respond to a PHY Update Procedure. */ - SD_BLE_GAP_DATA_LENGTH_UPDATE = BLE_GAP_SVC_BASE + 36, /**< Initiate or respond to a Data Length Update Procedure. */ - SD_BLE_GAP_QOS_CHANNEL_SURVEY_START = BLE_GAP_SVC_BASE + 37, /**< Start Quality of Service (QoS) channel survey module. */ - SD_BLE_GAP_QOS_CHANNEL_SURVEY_STOP = BLE_GAP_SVC_BASE + 38, /**< Stop Quality of Service (QoS) channel survey module. */ - SD_BLE_GAP_ADV_ADDR_GET = BLE_GAP_SVC_BASE + 39, /**< Get the Address used on air while Advertising. */ -}; - -/**@brief GAP Event IDs. - * IDs that uniquely identify an event coming from the stack to the application. - */ -enum BLE_GAP_EVTS -{ - BLE_GAP_EVT_CONNECTED = BLE_GAP_EVT_BASE, /**< Connected to peer. \n See @ref ble_gap_evt_connected_t */ - BLE_GAP_EVT_DISCONNECTED = BLE_GAP_EVT_BASE + 1, /**< Disconnected from peer. \n See @ref ble_gap_evt_disconnected_t. */ - BLE_GAP_EVT_CONN_PARAM_UPDATE = BLE_GAP_EVT_BASE + 2, /**< Connection Parameters updated. \n See @ref ble_gap_evt_conn_param_update_t. */ - BLE_GAP_EVT_SEC_PARAMS_REQUEST = BLE_GAP_EVT_BASE + 3, /**< Request to provide security parameters. \n Reply with @ref sd_ble_gap_sec_params_reply. \n See @ref ble_gap_evt_sec_params_request_t. */ - BLE_GAP_EVT_SEC_INFO_REQUEST = BLE_GAP_EVT_BASE + 4, /**< Request to provide security information. \n Reply with @ref sd_ble_gap_sec_info_reply. \n See @ref ble_gap_evt_sec_info_request_t. */ - BLE_GAP_EVT_PASSKEY_DISPLAY = BLE_GAP_EVT_BASE + 5, /**< Request to display a passkey to the user. \n In LESC Numeric Comparison, reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_passkey_display_t. */ - BLE_GAP_EVT_KEY_PRESSED = BLE_GAP_EVT_BASE + 6, /**< Notification of a keypress on the remote device.\n See @ref ble_gap_evt_key_pressed_t */ - BLE_GAP_EVT_AUTH_KEY_REQUEST = BLE_GAP_EVT_BASE + 7, /**< Request to provide an authentication key. \n Reply with @ref sd_ble_gap_auth_key_reply. \n See @ref ble_gap_evt_auth_key_request_t. */ - BLE_GAP_EVT_LESC_DHKEY_REQUEST = BLE_GAP_EVT_BASE + 8, /**< Request to calculate an LE Secure Connections DHKey. \n Reply with @ref sd_ble_gap_lesc_dhkey_reply. \n See @ref ble_gap_evt_lesc_dhkey_request_t */ - BLE_GAP_EVT_AUTH_STATUS = BLE_GAP_EVT_BASE + 9, /**< Authentication procedure completed with status. \n See @ref ble_gap_evt_auth_status_t. */ - BLE_GAP_EVT_CONN_SEC_UPDATE = BLE_GAP_EVT_BASE + 10, /**< Connection security updated. \n See @ref ble_gap_evt_conn_sec_update_t. */ - BLE_GAP_EVT_TIMEOUT = BLE_GAP_EVT_BASE + 11, /**< Timeout expired. \n See @ref ble_gap_evt_timeout_t. */ - BLE_GAP_EVT_RSSI_CHANGED = BLE_GAP_EVT_BASE + 12, /**< RSSI report. \n See @ref ble_gap_evt_rssi_changed_t. */ - BLE_GAP_EVT_ADV_REPORT = BLE_GAP_EVT_BASE + 13, /**< Advertising report. \n See @ref ble_gap_evt_adv_report_t. */ - BLE_GAP_EVT_SEC_REQUEST = BLE_GAP_EVT_BASE + 14, /**< Security Request. \n See @ref ble_gap_evt_sec_request_t. */ - BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST = BLE_GAP_EVT_BASE + 15, /**< Connection Parameter Update Request. \n Reply with @ref sd_ble_gap_conn_param_update. \n See @ref ble_gap_evt_conn_param_update_request_t. */ - BLE_GAP_EVT_SCAN_REQ_REPORT = BLE_GAP_EVT_BASE + 16, /**< Scan request report. \n See @ref ble_gap_evt_scan_req_report_t. */ - BLE_GAP_EVT_PHY_UPDATE_REQUEST = BLE_GAP_EVT_BASE + 17, /**< PHY Update Request. \n Reply with @ref sd_ble_gap_phy_update. \n See @ref ble_gap_evt_phy_update_request_t. */ - BLE_GAP_EVT_PHY_UPDATE = BLE_GAP_EVT_BASE + 18, /**< PHY Update Procedure is complete. \n See @ref ble_gap_evt_phy_update_t. */ - BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST = BLE_GAP_EVT_BASE + 19, /**< Data Length Update Request. \n Reply with @ref sd_ble_gap_data_length_update.\n See @ref ble_gap_evt_data_length_update_request_t. */ - BLE_GAP_EVT_DATA_LENGTH_UPDATE = BLE_GAP_EVT_BASE + 20, /**< LL Data Channel PDU payload length updated. \n See @ref ble_gap_evt_data_length_update_t. */ - BLE_GAP_EVT_QOS_CHANNEL_SURVEY_REPORT = BLE_GAP_EVT_BASE + 21, /**< Channel survey report. \n See @ref ble_gap_evt_qos_channel_survey_report_t. */ - BLE_GAP_EVT_ADV_SET_TERMINATED = BLE_GAP_EVT_BASE + 22, /**< Advertising set terminated. \n See @ref ble_gap_evt_adv_set_terminated_t. */ -}; - -/**@brief GAP Option IDs. - * IDs that uniquely identify a GAP option. - */ -enum BLE_GAP_OPTS -{ - BLE_GAP_OPT_CH_MAP = BLE_GAP_OPT_BASE, /**< Channel Map. @ref ble_gap_opt_ch_map_t */ - BLE_GAP_OPT_LOCAL_CONN_LATENCY = BLE_GAP_OPT_BASE + 1, /**< Local connection latency. @ref ble_gap_opt_local_conn_latency_t */ - BLE_GAP_OPT_PASSKEY = BLE_GAP_OPT_BASE + 2, /**< Set passkey. @ref ble_gap_opt_passkey_t */ - BLE_GAP_OPT_COMPAT_MODE_1 = BLE_GAP_OPT_BASE + 3, /**< Compatibility mode. @ref ble_gap_opt_compat_mode_1_t */ - BLE_GAP_OPT_AUTH_PAYLOAD_TIMEOUT = BLE_GAP_OPT_BASE + 4, /**< Set Authenticated payload timeout. @ref ble_gap_opt_auth_payload_timeout_t */ - BLE_GAP_OPT_SLAVE_LATENCY_DISABLE = BLE_GAP_OPT_BASE + 5, /**< Disable slave latency. @ref ble_gap_opt_slave_latency_disable_t */ -}; - -/**@brief GAP Configuration IDs. - * - * IDs that uniquely identify a GAP configuration. - */ -enum BLE_GAP_CFGS -{ - BLE_GAP_CFG_ROLE_COUNT = BLE_GAP_CFG_BASE, /**< Role count configuration. */ - BLE_GAP_CFG_DEVICE_NAME = BLE_GAP_CFG_BASE + 1, /**< Device name configuration. */ -}; - -/**@brief GAP TX Power roles. - */ -enum BLE_GAP_TX_POWER_ROLES -{ - BLE_GAP_TX_POWER_ROLE_ADV = 1, /**< Advertiser role. */ - BLE_GAP_TX_POWER_ROLE_SCAN_INIT = 2, /**< Scanner and initiator role. */ - BLE_GAP_TX_POWER_ROLE_CONN = 3, /**< Connection role. */ -}; - -/** @} */ - -/**@addtogroup BLE_GAP_DEFINES Defines - * @{ */ - -/**@defgroup BLE_ERRORS_GAP SVC return values specific to GAP - * @{ */ -#define BLE_ERROR_GAP_UUID_LIST_MISMATCH (NRF_GAP_ERR_BASE + 0x000) /**< UUID list does not contain an integral number of UUIDs. */ -#define BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST (NRF_GAP_ERR_BASE + 0x001) /**< Use of Whitelist not permitted with discoverable advertising. */ -#define BLE_ERROR_GAP_INVALID_BLE_ADDR (NRF_GAP_ERR_BASE + 0x002) /**< The upper two bits of the address do not correspond to the specified address type. */ -#define BLE_ERROR_GAP_WHITELIST_IN_USE (NRF_GAP_ERR_BASE + 0x003) /**< Attempt to modify the whitelist while already in use by another operation. */ -#define BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE (NRF_GAP_ERR_BASE + 0x004) /**< Attempt to modify the device identity list while already in use by another operation. */ -#define BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE (NRF_GAP_ERR_BASE + 0x005) /**< The device identity list contains entries with duplicate identity addresses. */ -/**@} */ - - -/**@defgroup BLE_GAP_ROLES GAP Roles - * @{ */ -#define BLE_GAP_ROLE_INVALID 0x0 /**< Invalid Role. */ -#define BLE_GAP_ROLE_PERIPH 0x1 /**< Peripheral Role. */ -#define BLE_GAP_ROLE_CENTRAL 0x2 /**< Central Role. */ -/**@} */ - - -/**@defgroup BLE_GAP_TIMEOUT_SOURCES GAP Timeout sources - * @{ */ -#define BLE_GAP_TIMEOUT_SRC_SCAN 0x01 /**< Scanning timeout. */ -#define BLE_GAP_TIMEOUT_SRC_CONN 0x02 /**< Connection timeout. */ -#define BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD 0x03 /**< Authenticated payload timeout. */ -/**@} */ - - -/**@defgroup BLE_GAP_ADDR_TYPES GAP Address types - * @{ */ -#define BLE_GAP_ADDR_TYPE_PUBLIC 0x00 /**< Public (identity) address.*/ -#define BLE_GAP_ADDR_TYPE_RANDOM_STATIC 0x01 /**< Random static (identity) address. */ -#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE 0x02 /**< Random private resolvable address. */ -#define BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE 0x03 /**< Random private non-resolvable address. */ -#define BLE_GAP_ADDR_TYPE_ANONYMOUS 0x7F /**< An advertiser may advertise without its address. - This type of advertising is called anonymous. */ -/**@} */ - - -/**@brief The default interval in seconds at which a private address is refreshed. */ -#define BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S (900) /* 15 minutes. */ -/**@brief The maximum interval in seconds at which a private address can be refreshed. */ -#define BLE_GAP_MAX_PRIVATE_ADDR_CYCLE_INTERVAL_S (41400) /* 11 hours 30 minutes. */ - - -/** @brief BLE address length. */ -#define BLE_GAP_ADDR_LEN (6) - -/**@defgroup BLE_GAP_PRIVACY_MODES Privacy modes - * @{ */ -#define BLE_GAP_PRIVACY_MODE_OFF 0x00 /**< Device will send and accept its identity address for its own address. */ -#define BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY 0x01 /**< Device will send and accept only private addresses for its own address. */ -#define BLE_GAP_PRIVACY_MODE_NETWORK_PRIVACY 0x02 /**< Device will send and accept only private addresses for its own address, - and will not accept a peer using identity address as sender address when - the peer IRK is exchanged, non-zero and added to the identity list. */ -/**@} */ - -/** @brief Invalid power level. */ -#define BLE_GAP_POWER_LEVEL_INVALID 127 - -/** @brief Advertising set handle not set. */ -#define BLE_GAP_ADV_SET_HANDLE_NOT_SET (0xFF) - -/** @brief The default number of advertising sets. */ -#define BLE_GAP_ADV_SET_COUNT_DEFAULT (1) - -/** @brief The maximum number of advertising sets supported by this SoftDevice. */ -#define BLE_GAP_ADV_SET_COUNT_MAX (1) - -/**@defgroup BLE_GAP_ADV_SET_DATA_SIZES Advertising data sizes. - * @{ */ -#define BLE_GAP_ADV_SET_DATA_SIZE_MAX (31) /**< Maximum data length for an advertising set. - If more advertising data is required, use extended advertising instead. */ -#define BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED (255) /**< Maximum supported data length for an extended advertising set. */ - -#define BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_CONNECTABLE_MAX_SUPPORTED (238) /**< Maximum supported data length for an extended connectable advertising set. */ -/**@}. */ - -/** @brief Set ID not available in advertising report. */ -#define BLE_GAP_ADV_REPORT_SET_ID_NOT_AVAILABLE 0xFF - -/**@defgroup BLE_GAP_EVT_ADV_SET_TERMINATED_REASON GAP Advertising Set Terminated reasons - * @{ */ -#define BLE_GAP_EVT_ADV_SET_TERMINATED_REASON_TIMEOUT 0x01 /**< Timeout value reached. */ -#define BLE_GAP_EVT_ADV_SET_TERMINATED_REASON_LIMIT_REACHED 0x02 /**< @ref ble_gap_adv_params_t::max_adv_evts was reached. */ -/**@} */ - -/**@defgroup BLE_GAP_AD_TYPE_DEFINITIONS GAP Advertising and Scan Response Data format - * @note Found at https://www.bluetooth.org/Technical/AssignedNumbers/generic_access_profile.htm - * @{ */ -#define BLE_GAP_AD_TYPE_FLAGS 0x01 /**< Flags for discoverability. */ -#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_MORE_AVAILABLE 0x02 /**< Partial list of 16 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_16BIT_SERVICE_UUID_COMPLETE 0x03 /**< Complete list of 16 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_MORE_AVAILABLE 0x04 /**< Partial list of 32 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_32BIT_SERVICE_UUID_COMPLETE 0x05 /**< Complete list of 32 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_MORE_AVAILABLE 0x06 /**< Partial list of 128 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_128BIT_SERVICE_UUID_COMPLETE 0x07 /**< Complete list of 128 bit service UUIDs. */ -#define BLE_GAP_AD_TYPE_SHORT_LOCAL_NAME 0x08 /**< Short local device name. */ -#define BLE_GAP_AD_TYPE_COMPLETE_LOCAL_NAME 0x09 /**< Complete local device name. */ -#define BLE_GAP_AD_TYPE_TX_POWER_LEVEL 0x0A /**< Transmit power level. */ -#define BLE_GAP_AD_TYPE_CLASS_OF_DEVICE 0x0D /**< Class of device. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C 0x0E /**< Simple Pairing Hash C. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R 0x0F /**< Simple Pairing Randomizer R. */ -#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_TK_VALUE 0x10 /**< Security Manager TK Value. */ -#define BLE_GAP_AD_TYPE_SECURITY_MANAGER_OOB_FLAGS 0x11 /**< Security Manager Out Of Band Flags. */ -#define BLE_GAP_AD_TYPE_SLAVE_CONNECTION_INTERVAL_RANGE 0x12 /**< Slave Connection Interval Range. */ -#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_16BIT 0x14 /**< List of 16-bit Service Solicitation UUIDs. */ -#define BLE_GAP_AD_TYPE_SOLICITED_SERVICE_UUIDS_128BIT 0x15 /**< List of 128-bit Service Solicitation UUIDs. */ -#define BLE_GAP_AD_TYPE_SERVICE_DATA 0x16 /**< Service Data - 16-bit UUID. */ -#define BLE_GAP_AD_TYPE_PUBLIC_TARGET_ADDRESS 0x17 /**< Public Target Address. */ -#define BLE_GAP_AD_TYPE_RANDOM_TARGET_ADDRESS 0x18 /**< Random Target Address. */ -#define BLE_GAP_AD_TYPE_APPEARANCE 0x19 /**< Appearance. */ -#define BLE_GAP_AD_TYPE_ADVERTISING_INTERVAL 0x1A /**< Advertising Interval. */ -#define BLE_GAP_AD_TYPE_LE_BLUETOOTH_DEVICE_ADDRESS 0x1B /**< LE Bluetooth Device Address. */ -#define BLE_GAP_AD_TYPE_LE_ROLE 0x1C /**< LE Role. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_HASH_C256 0x1D /**< Simple Pairing Hash C-256. */ -#define BLE_GAP_AD_TYPE_SIMPLE_PAIRING_RANDOMIZER_R256 0x1E /**< Simple Pairing Randomizer R-256. */ -#define BLE_GAP_AD_TYPE_SERVICE_DATA_32BIT_UUID 0x20 /**< Service Data - 32-bit UUID. */ -#define BLE_GAP_AD_TYPE_SERVICE_DATA_128BIT_UUID 0x21 /**< Service Data - 128-bit UUID. */ -#define BLE_GAP_AD_TYPE_LESC_CONFIRMATION_VALUE 0x22 /**< LE Secure Connections Confirmation Value */ -#define BLE_GAP_AD_TYPE_LESC_RANDOM_VALUE 0x23 /**< LE Secure Connections Random Value */ -#define BLE_GAP_AD_TYPE_URI 0x24 /**< URI */ -#define BLE_GAP_AD_TYPE_3D_INFORMATION_DATA 0x3D /**< 3D Information Data. */ -#define BLE_GAP_AD_TYPE_MANUFACTURER_SPECIFIC_DATA 0xFF /**< Manufacturer Specific Data. */ -/**@} */ - - -/**@defgroup BLE_GAP_ADV_FLAGS GAP Advertisement Flags - * @{ */ -#define BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE (0x01) /**< LE Limited Discoverable Mode. */ -#define BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE (0x02) /**< LE General Discoverable Mode. */ -#define BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED (0x04) /**< BR/EDR not supported. */ -#define BLE_GAP_ADV_FLAG_LE_BR_EDR_CONTROLLER (0x08) /**< Simultaneous LE and BR/EDR, Controller. */ -#define BLE_GAP_ADV_FLAG_LE_BR_EDR_HOST (0x10) /**< Simultaneous LE and BR/EDR, Host. */ -#define BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE (BLE_GAP_ADV_FLAG_LE_LIMITED_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE Limited Discoverable Mode, BR/EDR not supported. */ -#define BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE (BLE_GAP_ADV_FLAG_LE_GENERAL_DISC_MODE | BLE_GAP_ADV_FLAG_BR_EDR_NOT_SUPPORTED) /**< LE General Discoverable Mode, BR/EDR not supported. */ -/**@} */ - - -/**@defgroup BLE_GAP_ADV_INTERVALS GAP Advertising interval max and min - * @{ */ -#define BLE_GAP_ADV_INTERVAL_MIN 0x000020 /**< Minimum Advertising interval in 625 us units, i.e. 20 ms. */ -#define BLE_GAP_ADV_INTERVAL_MAX 0x004000 /**< Maximum Advertising interval in 625 us units, i.e. 10.24 s. */ - /**@} */ - - -/**@defgroup BLE_GAP_SCAN_INTERVALS GAP Scan interval max and min - * @{ */ -#define BLE_GAP_SCAN_INTERVAL_MIN 0x0004 /**< Minimum Scan interval in 625 us units, i.e. 2.5 ms. */ -#define BLE_GAP_SCAN_INTERVAL_MAX 0xFFFF /**< Maximum Scan interval in 625 us units, i.e. 40,959.375 s. */ - /** @} */ - - -/**@defgroup BLE_GAP_SCAN_WINDOW GAP Scan window max and min - * @{ */ -#define BLE_GAP_SCAN_WINDOW_MIN 0x0004 /**< Minimum Scan window in 625 us units, i.e. 2.5 ms. */ -#define BLE_GAP_SCAN_WINDOW_MAX 0xFFFF /**< Maximum Scan window in 625 us units, i.e. 40,959.375 s. */ - /** @} */ - - -/**@defgroup BLE_GAP_SCAN_TIMEOUT GAP Scan timeout max and min - * @{ */ -#define BLE_GAP_SCAN_TIMEOUT_MIN 0x0001 /**< Minimum Scan timeout in 10 ms units, i.e 10 ms. */ -#define BLE_GAP_SCAN_TIMEOUT_UNLIMITED 0x0000 /**< Continue to scan forever. */ - /** @} */ - -/**@defgroup BLE_GAP_SCAN_BUFFER_SIZE GAP Minimum scanner buffer size - * - * Scan buffers are used for storing advertising data received from an advertiser. - * If ble_gap_scan_params_t::extended is set to 0, @ref BLE_GAP_SCAN_BUFFER_MIN is the minimum scan buffer length. - * else the minimum scan buffer size is @ref BLE_GAP_SCAN_BUFFER_EXTENDED_MIN. - * @{ */ -#define BLE_GAP_SCAN_BUFFER_MIN (31) /**< Minimum data length for an - advertising set. */ -#define BLE_GAP_SCAN_BUFFER_MAX (31) /**< Maximum data length for an - advertising set. */ -#define BLE_GAP_SCAN_BUFFER_EXTENDED_MIN (255) /**< Minimum data length for an - extended advertising set. */ -#define BLE_GAP_SCAN_BUFFER_EXTENDED_MAX (1650) /**< Maximum data length for an - extended advertising set. */ -#define BLE_GAP_SCAN_BUFFER_EXTENDED_MAX_SUPPORTED (255) /**< Maximum supported data length for - an extended advertising set. */ -/** @} */ - -/**@defgroup BLE_GAP_ADV_TYPES GAP Advertising types - * - * Advertising types defined in Bluetooth Core Specification v5.0, Vol 6, Part B, Section 4.4.2. - * - * The maximum advertising data length is defined by @ref BLE_GAP_ADV_SET_DATA_SIZE_MAX. - * The maximum supported data length for an extended advertiser is defined by - * @ref BLE_GAP_ADV_SET_DATA_SIZE_EXTENDED_MAX_SUPPORTED - * Note that some of the advertising types do not support advertising data. Non-scannable types do not support - * scan response data. - * - * @{ */ -#define BLE_GAP_ADV_TYPE_CONNECTABLE_SCANNABLE_UNDIRECTED 0x01 /**< Connectable and scannable undirected - advertising events. */ -#define BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED_HIGH_DUTY_CYCLE 0x02 /**< Connectable non-scannable directed advertising - events. Advertising interval is less that 3.75 ms. - Use this type for fast reconnections. - @note Advertising data is not supported. */ -#define BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED 0x03 /**< Connectable non-scannable directed advertising - events. - @note Advertising data is not supported. */ -#define BLE_GAP_ADV_TYPE_NONCONNECTABLE_SCANNABLE_UNDIRECTED 0x04 /**< Non-connectable scannable undirected - advertising events. */ -#define BLE_GAP_ADV_TYPE_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED 0x05 /**< Non-connectable non-scannable undirected - advertising events. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_CONNECTABLE_NONSCANNABLE_UNDIRECTED 0x06 /**< Connectable non-scannable undirected advertising - events using extended advertising PDUs. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_CONNECTABLE_NONSCANNABLE_DIRECTED 0x07 /**< Connectable non-scannable directed advertising - events using extended advertising PDUs. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_SCANNABLE_UNDIRECTED 0x08 /**< Non-connectable scannable undirected advertising - events using extended advertising PDUs. - @note Only scan response data is supported. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_SCANNABLE_DIRECTED 0x09 /**< Non-connectable scannable directed advertising - events using extended advertising PDUs. - @note Only scan response data is supported. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED 0x0A /**< Non-connectable non-scannable undirected advertising - events using extended advertising PDUs. */ -#define BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_DIRECTED 0x0B /**< Non-connectable non-scannable directed advertising - events using extended advertising PDUs. */ -/**@} */ - -/**@defgroup BLE_GAP_ADV_FILTER_POLICIES GAP Advertising filter policies - * @{ */ -#define BLE_GAP_ADV_FP_ANY 0x00 /**< Allow scan requests and connect requests from any device. */ -#define BLE_GAP_ADV_FP_FILTER_SCANREQ 0x01 /**< Filter scan requests with whitelist. */ -#define BLE_GAP_ADV_FP_FILTER_CONNREQ 0x02 /**< Filter connect requests with whitelist. */ -#define BLE_GAP_ADV_FP_FILTER_BOTH 0x03 /**< Filter both scan and connect requests with whitelist. */ -/**@} */ - -/**@defgroup BLE_GAP_ADV_DATA_STATUS GAP Advertising data status - * @{ */ -#define BLE_GAP_ADV_DATA_STATUS_COMPLETE 0x00 /**< All data in the advertising event have been received. */ -#define BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA 0x01 /**< More data to be received. - @note This value will only be used if - @ref ble_gap_scan_params_t::report_incomplete_evts and - @ref ble_gap_adv_report_type_t::extended_pdu are set to true. */ -#define BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_TRUNCATED 0x02 /**< Incomplete data. Buffer size insufficient to receive more. - @note This value will only be used if - @ref ble_gap_adv_report_type_t::extended_pdu is set to true. */ -#define BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MISSED 0x03 /**< Failed to receive the remaining data. - @note This value will only be used if - @ref ble_gap_adv_report_type_t::extended_pdu is set to true. */ -/**@} */ - -/**@defgroup BLE_GAP_SCAN_FILTER_POLICIES GAP Scanner filter policies - * @{ */ -#define BLE_GAP_SCAN_FP_ACCEPT_ALL 0x00 /**< Accept all advertising packets except directed advertising packets - not addressed to this device. */ -#define BLE_GAP_SCAN_FP_WHITELIST 0x01 /**< Accept advertising packets from devices in the whitelist except directed - packets not addressed to this device. */ -#define BLE_GAP_SCAN_FP_ALL_NOT_RESOLVED_DIRECTED 0x02 /**< Accept all advertising packets specified in @ref BLE_GAP_SCAN_FP_ACCEPT_ALL. - In addition, accept directed advertising packets, where the advertiser's - address is a resolvable private address that cannot be resolved. */ -#define BLE_GAP_SCAN_FP_WHITELIST_NOT_RESOLVED_DIRECTED 0x03 /**< Accept all advertising packets specified in @ref BLE_GAP_SCAN_FP_WHITELIST. - In addition, accept directed advertising packets, where the advertiser's - address is a resolvable private address that cannot be resolved. */ -/**@} */ - -/**@defgroup BLE_GAP_ADV_TIMEOUT_VALUES GAP Advertising timeout values in 10 ms units - * @{ */ -#define BLE_GAP_ADV_TIMEOUT_HIGH_DUTY_MAX (128) /**< Maximum high duty advertising time in 10 ms units. Corresponds to 1.28 s. */ -#define BLE_GAP_ADV_TIMEOUT_LIMITED_MAX (18000) /**< Maximum advertising time in 10 ms units corresponding to TGAP(lim_adv_timeout) = 180 s in limited discoverable mode. */ -#define BLE_GAP_ADV_TIMEOUT_GENERAL_UNLIMITED (0) /**< Unlimited advertising in general discoverable mode. - For high duty cycle advertising, this corresponds to @ref BLE_GAP_ADV_TIMEOUT_HIGH_DUTY_MAX. */ -/**@} */ - - -/**@defgroup BLE_GAP_DISC_MODES GAP Discovery modes - * @{ */ -#define BLE_GAP_DISC_MODE_NOT_DISCOVERABLE 0x00 /**< Not discoverable discovery Mode. */ -#define BLE_GAP_DISC_MODE_LIMITED 0x01 /**< Limited Discovery Mode. */ -#define BLE_GAP_DISC_MODE_GENERAL 0x02 /**< General Discovery Mode. */ -/**@} */ - - -/**@defgroup BLE_GAP_IO_CAPS GAP IO Capabilities - * @{ */ -#define BLE_GAP_IO_CAPS_DISPLAY_ONLY 0x00 /**< Display Only. */ -#define BLE_GAP_IO_CAPS_DISPLAY_YESNO 0x01 /**< Display and Yes/No entry. */ -#define BLE_GAP_IO_CAPS_KEYBOARD_ONLY 0x02 /**< Keyboard Only. */ -#define BLE_GAP_IO_CAPS_NONE 0x03 /**< No I/O capabilities. */ -#define BLE_GAP_IO_CAPS_KEYBOARD_DISPLAY 0x04 /**< Keyboard and Display. */ -/**@} */ - - -/**@defgroup BLE_GAP_AUTH_KEY_TYPES GAP Authentication Key Types - * @{ */ -#define BLE_GAP_AUTH_KEY_TYPE_NONE 0x00 /**< No key (may be used to reject). */ -#define BLE_GAP_AUTH_KEY_TYPE_PASSKEY 0x01 /**< 6-digit Passkey. */ -#define BLE_GAP_AUTH_KEY_TYPE_OOB 0x02 /**< Out Of Band data. */ -/**@} */ - - -/**@defgroup BLE_GAP_KP_NOT_TYPES GAP Keypress Notification Types - * @{ */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_START 0x00 /**< Passkey entry started. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_IN 0x01 /**< Passkey digit entered. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_DIGIT_OUT 0x02 /**< Passkey digit erased. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_CLEAR 0x03 /**< Passkey cleared. */ -#define BLE_GAP_KP_NOT_TYPE_PASSKEY_END 0x04 /**< Passkey entry completed. */ -/**@} */ - - -/**@defgroup BLE_GAP_SEC_STATUS GAP Security status - * @{ */ -#define BLE_GAP_SEC_STATUS_SUCCESS 0x00 /**< Procedure completed with success. */ -#define BLE_GAP_SEC_STATUS_TIMEOUT 0x01 /**< Procedure timed out. */ -#define BLE_GAP_SEC_STATUS_PDU_INVALID 0x02 /**< Invalid PDU received. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE1_BEGIN 0x03 /**< Reserved for Future Use range #1 begin. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE1_END 0x80 /**< Reserved for Future Use range #1 end. */ -#define BLE_GAP_SEC_STATUS_PASSKEY_ENTRY_FAILED 0x81 /**< Passkey entry failed (user canceled or other). */ -#define BLE_GAP_SEC_STATUS_OOB_NOT_AVAILABLE 0x82 /**< Out of Band Key not available. */ -#define BLE_GAP_SEC_STATUS_AUTH_REQ 0x83 /**< Authentication requirements not met. */ -#define BLE_GAP_SEC_STATUS_CONFIRM_VALUE 0x84 /**< Confirm value failed. */ -#define BLE_GAP_SEC_STATUS_PAIRING_NOT_SUPP 0x85 /**< Pairing not supported. */ -#define BLE_GAP_SEC_STATUS_ENC_KEY_SIZE 0x86 /**< Encryption key size. */ -#define BLE_GAP_SEC_STATUS_SMP_CMD_UNSUPPORTED 0x87 /**< Unsupported SMP command. */ -#define BLE_GAP_SEC_STATUS_UNSPECIFIED 0x88 /**< Unspecified reason. */ -#define BLE_GAP_SEC_STATUS_REPEATED_ATTEMPTS 0x89 /**< Too little time elapsed since last attempt. */ -#define BLE_GAP_SEC_STATUS_INVALID_PARAMS 0x8A /**< Invalid parameters. */ -#define BLE_GAP_SEC_STATUS_DHKEY_FAILURE 0x8B /**< DHKey check failure. */ -#define BLE_GAP_SEC_STATUS_NUM_COMP_FAILURE 0x8C /**< Numeric Comparison failure. */ -#define BLE_GAP_SEC_STATUS_BR_EDR_IN_PROG 0x8D /**< BR/EDR pairing in progress. */ -#define BLE_GAP_SEC_STATUS_X_TRANS_KEY_DISALLOWED 0x8E /**< BR/EDR Link Key cannot be used for LE keys. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE2_BEGIN 0x8F /**< Reserved for Future Use range #2 begin. */ -#define BLE_GAP_SEC_STATUS_RFU_RANGE2_END 0xFF /**< Reserved for Future Use range #2 end. */ -/**@} */ - - -/**@defgroup BLE_GAP_SEC_STATUS_SOURCES GAP Security status sources - * @{ */ -#define BLE_GAP_SEC_STATUS_SOURCE_LOCAL 0x00 /**< Local failure. */ -#define BLE_GAP_SEC_STATUS_SOURCE_REMOTE 0x01 /**< Remote failure. */ -/**@} */ - - -/**@defgroup BLE_GAP_CP_LIMITS GAP Connection Parameters Limits - * @{ */ -#define BLE_GAP_CP_MIN_CONN_INTVL_NONE 0xFFFF /**< No new minimum connection interval specified in connect parameters. */ -#define BLE_GAP_CP_MIN_CONN_INTVL_MIN 0x0006 /**< Lowest minimum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ -#define BLE_GAP_CP_MIN_CONN_INTVL_MAX 0x0C80 /**< Highest minimum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_NONE 0xFFFF /**< No new maximum connection interval specified in connect parameters. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_MIN 0x0006 /**< Lowest maximum connection interval permitted, in units of 1.25 ms, i.e. 7.5 ms. */ -#define BLE_GAP_CP_MAX_CONN_INTVL_MAX 0x0C80 /**< Highest maximum connection interval permitted, in units of 1.25 ms, i.e. 4 s. */ -#define BLE_GAP_CP_SLAVE_LATENCY_MAX 0x01F3 /**< Highest slave latency permitted, in connection events. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_NONE 0xFFFF /**< No new supervision timeout specified in connect parameters. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MIN 0x000A /**< Lowest supervision timeout permitted, in units of 10 ms, i.e. 100 ms. */ -#define BLE_GAP_CP_CONN_SUP_TIMEOUT_MAX 0x0C80 /**< Highest supervision timeout permitted, in units of 10 ms, i.e. 32 s. */ -/**@} */ - - -/**@defgroup BLE_GAP_DEVNAME GAP device name defines. - * @{ */ -#define BLE_GAP_DEVNAME_DEFAULT "nRF5x" /**< Default device name value. */ -#define BLE_GAP_DEVNAME_DEFAULT_LEN 31 /**< Default number of octets in device name. */ -#define BLE_GAP_DEVNAME_MAX_LEN 248 /**< Maximum number of octets in device name. */ -/**@} */ - - -/**@brief Disable RSSI events for connections */ -#define BLE_GAP_RSSI_THRESHOLD_INVALID 0xFF - -/**@defgroup BLE_GAP_PHYS GAP PHYs - * @{ */ -#define BLE_GAP_PHY_AUTO 0x00 /**< Automatic PHY selection. Refer @ref sd_ble_gap_phy_update for more information.*/ -#define BLE_GAP_PHY_1MBPS 0x01 /**< 1 Mbps PHY. */ -#define BLE_GAP_PHY_2MBPS 0x02 /**< 2 Mbps PHY. */ -#define BLE_GAP_PHY_CODED 0x04 /**< Coded PHY. */ -#define BLE_GAP_PHY_NOT_SET 0xFF /**< PHY is not configured. */ - -/**@brief Supported PHYs in connections, for scanning, and for advertising. */ -#define BLE_GAP_PHYS_SUPPORTED (BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS | BLE_GAP_PHY_CODED) /**< All PHYs are supported. */ - -/**@} */ - -/**@defgroup BLE_GAP_CONN_SEC_MODE_SET_MACROS GAP attribute security requirement setters - * - * See @ref ble_gap_conn_sec_mode_t. - * @{ */ -/**@brief Set sec_mode pointed to by ptr to have no access rights.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_NO_ACCESS(ptr) do {(ptr)->sm = 0; (ptr)->lv = 0;} while(0) -/**@brief Set sec_mode pointed to by ptr to require no protection, open link.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_OPEN(ptr) do {(ptr)->sm = 1; (ptr)->lv = 1;} while(0) -/**@brief Set sec_mode pointed to by ptr to require encryption, but no MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_ENC_NO_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 2;} while(0) -/**@brief Set sec_mode pointed to by ptr to require encryption and MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 3;} while(0) -/**@brief Set sec_mode pointed to by ptr to require LESC encryption and MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_LESC_ENC_WITH_MITM(ptr) do {(ptr)->sm = 1; (ptr)->lv = 4;} while(0) -/**@brief Set sec_mode pointed to by ptr to require signing or encryption, no MITM protection needed.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_NO_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 1;} while(0) -/**@brief Set sec_mode pointed to by ptr to require signing or encryption with MITM protection.*/ -#define BLE_GAP_CONN_SEC_MODE_SET_SIGNED_WITH_MITM(ptr) do {(ptr)->sm = 2; (ptr)->lv = 2;} while(0) -/**@} */ - - -/**@brief GAP Security Random Number Length. */ -#define BLE_GAP_SEC_RAND_LEN 8 - - -/**@brief GAP Security Key Length. */ -#define BLE_GAP_SEC_KEY_LEN 16 - - -/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key Length. */ -#define BLE_GAP_LESC_P256_PK_LEN 64 - - -/**@brief GAP LE Secure Connections Elliptic Curve Diffie-Hellman DHKey Length. */ -#define BLE_GAP_LESC_DHKEY_LEN 32 - - -/**@brief GAP Passkey Length. */ -#define BLE_GAP_PASSKEY_LEN 6 - - -/**@brief Maximum amount of addresses in the whitelist. */ -#define BLE_GAP_WHITELIST_ADDR_MAX_COUNT (8) - - -/**@brief Maximum amount of identities in the device identities list. */ -#define BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT (8) - - -/**@brief Default connection count for a configuration. */ -#define BLE_GAP_CONN_COUNT_DEFAULT (1) - - -/**@defgroup BLE_GAP_EVENT_LENGTH GAP event length defines. - * @{ */ -#define BLE_GAP_EVENT_LENGTH_MIN (2) /**< Minimum event length, in 1.25 ms units. */ -#define BLE_GAP_EVENT_LENGTH_CODED_PHY_MIN (6) /**< The shortest event length in 1.25 ms units supporting LE Coded PHY. */ -#define BLE_GAP_EVENT_LENGTH_DEFAULT (3) /**< Default event length, in 1.25 ms units. */ -/**@} */ - - -/**@defgroup BLE_GAP_ROLE_COUNT GAP concurrent connection count defines. - * @{ */ -#define BLE_GAP_ROLE_COUNT_PERIPH_DEFAULT (1) /**< Default maximum number of connections concurrently acting as peripherals. */ -#define BLE_GAP_ROLE_COUNT_CENTRAL_DEFAULT (3) /**< Default maximum number of connections concurrently acting as centrals. */ -#define BLE_GAP_ROLE_COUNT_CENTRAL_SEC_DEFAULT (1) /**< Default number of SMP instances shared between all connections acting as centrals. */ -#define BLE_GAP_ROLE_COUNT_COMBINED_MAX (20) /**< Maximum supported number of concurrent connections in the peripheral and central roles combined. */ - -/**@} */ - -/**@brief Automatic data length parameter. */ -#define BLE_GAP_DATA_LENGTH_AUTO 0 - -/**@defgroup BLE_GAP_AUTH_PAYLOAD_TIMEOUT Authenticated payload timeout defines. - * @{ */ -#define BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MAX (48000) /**< Maximum authenticated payload timeout in 10 ms units, i.e. 8 minutes. */ -#define BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MIN (1) /**< Minimum authenticated payload timeout in 10 ms units, i.e. 10 ms. */ -/**@} */ - -/**@defgroup GAP_SEC_MODES GAP Security Modes - * @{ */ -#define BLE_GAP_SEC_MODE 0x00 /**< No key (may be used to reject). */ -/**@} */ - -/**@brief The total number of channels in Bluetooth Low Energy. */ -#define BLE_GAP_CHANNEL_COUNT (40) - -/**@defgroup BLE_GAP_QOS_CHANNEL_SURVEY_INTERVALS Quality of Service (QoS) Channel survey interval defines - * @{ */ -#define BLE_GAP_QOS_CHANNEL_SURVEY_INTERVAL_CONTINUOUS (0) /**< Continuous channel survey. */ -#define BLE_GAP_QOS_CHANNEL_SURVEY_INTERVAL_MIN_US (7500) /**< Minimum channel survey interval in microseconds (7.5 ms). */ -#define BLE_GAP_QOS_CHANNEL_SURVEY_INTERVAL_MAX_US (4000000) /**< Maximum channel survey interval in microseconds (4 s). */ - /**@} */ - -/** @} */ - - -/**@addtogroup BLE_GAP_STRUCTURES Structures - * @{ */ - -/**@brief Advertising event properties. */ -typedef struct -{ - uint8_t type; /**< Advertising type. See @ref BLE_GAP_ADV_TYPES. */ - uint8_t anonymous : 1; /**< Omit advertiser's address from all PDUs. - @note Anonymous advertising is only available for - @ref BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_UNDIRECTED and - @ref BLE_GAP_ADV_TYPE_EXTENDED_NONCONNECTABLE_NONSCANNABLE_DIRECTED. */ - uint8_t include_tx_power : 1; /**< This feature is not supported on this SoftDevice. */ -} ble_gap_adv_properties_t; - - -/**@brief Advertising report type. */ -typedef struct -{ - uint16_t connectable : 1; /**< Connectable advertising event type. */ - uint16_t scannable : 1; /**< Scannable advertising event type. */ - uint16_t directed : 1; /**< Directed advertising event type. */ - uint16_t scan_response : 1; /**< Received a scan response. */ - uint16_t extended_pdu : 1; /**< Received an extended advertising set. */ - uint16_t status : 2; /**< Data status. See @ref BLE_GAP_ADV_DATA_STATUS. */ - uint16_t reserved : 9; /**< Reserved for future use. */ -} ble_gap_adv_report_type_t; - -/**@brief Advertising Auxiliary Pointer. */ -typedef struct -{ - uint16_t aux_offset; /**< Time offset from the beginning of advertising packet to the auxiliary packet in 100 us units. */ - uint8_t aux_phy; /**< Indicates the PHY on which the auxiliary advertising packet is sent. See @ref BLE_GAP_PHYS. */ -} ble_gap_aux_pointer_t; - -/**@brief Bluetooth Low Energy address. */ -typedef struct -{ - uint8_t addr_id_peer : 1; /**< Only valid for peer addresses. - This bit is set by the SoftDevice to indicate whether the address has been resolved from - a Resolvable Private Address (when the peer is using privacy). - If set to 1, @ref addr and @ref addr_type refer to the identity address of the resolved address. - - This bit is ignored when a variable of type @ref ble_gap_addr_t is used as input to API functions. */ - uint8_t addr_type : 7; /**< See @ref BLE_GAP_ADDR_TYPES. */ - uint8_t addr[BLE_GAP_ADDR_LEN]; /**< 48-bit address, LSB format. - @ref addr is not used if @ref addr_type is @ref BLE_GAP_ADDR_TYPE_ANONYMOUS. */ -} ble_gap_addr_t; - - -/**@brief GAP connection parameters. - * - * @note When ble_conn_params_t is received in an event, both min_conn_interval and - * max_conn_interval will be equal to the connection interval set by the central. - * - * @note If both conn_sup_timeout and max_conn_interval are specified, then the following constraint applies: - * conn_sup_timeout * 4 > (1 + slave_latency) * max_conn_interval - * that corresponds to the following Bluetooth Spec requirement: - * The Supervision_Timeout in milliseconds shall be larger than - * (1 + Conn_Latency) * Conn_Interval_Max * 2, where Conn_Interval_Max is given in milliseconds. - */ -typedef struct -{ - uint16_t min_conn_interval; /**< Minimum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t max_conn_interval; /**< Maximum Connection Interval in 1.25 ms units, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t slave_latency; /**< Slave Latency in number of connection events, see @ref BLE_GAP_CP_LIMITS.*/ - uint16_t conn_sup_timeout; /**< Connection Supervision Timeout in 10 ms units, see @ref BLE_GAP_CP_LIMITS.*/ -} ble_gap_conn_params_t; - - -/**@brief GAP connection security modes. - * - * Security Mode 0 Level 0: No access permissions at all (this level is not defined by the Bluetooth Core specification).\n - * Security Mode 1 Level 1: No security is needed (aka open link).\n - * Security Mode 1 Level 2: Encrypted link required, MITM protection not necessary.\n - * Security Mode 1 Level 3: MITM protected encrypted link required.\n - * Security Mode 1 Level 4: LESC MITM protected encrypted link using a 128-bit strength encryption key required.\n - * Security Mode 2 Level 1: Signing or encryption required, MITM protection not necessary.\n - * Security Mode 2 Level 2: MITM protected signing required, unless link is MITM protected encrypted.\n - */ -typedef struct -{ - uint8_t sm : 4; /**< Security Mode (1 or 2), 0 for no permissions at all. */ - uint8_t lv : 4; /**< Level (1, 2, 3 or 4), 0 for no permissions at all. */ - -} ble_gap_conn_sec_mode_t; - - -/**@brief GAP connection security status.*/ -typedef struct -{ - ble_gap_conn_sec_mode_t sec_mode; /**< Currently active security mode for this connection.*/ - uint8_t encr_key_size; /**< Length of currently active encryption key, 7 to 16 octets (only applicable for bonding procedures). */ -} ble_gap_conn_sec_t; - -/**@brief Identity Resolving Key. */ -typedef struct -{ - uint8_t irk[BLE_GAP_SEC_KEY_LEN]; /**< Array containing IRK. */ -} ble_gap_irk_t; - - -/**@brief Channel mask (40 bits). - * Every channel is represented with a bit positioned as per channel index defined in Bluetooth Core Specification v5.0, - * Vol 6, Part B, Section 1.4.1. The LSB contained in array element 0 represents channel index 0, and bit 39 represents - * channel index 39. If a bit is set to 1, the channel is not used. - */ -typedef uint8_t ble_gap_ch_mask_t[5]; - - -/**@brief GAP advertising parameters. */ -typedef struct -{ - ble_gap_adv_properties_t properties; /**< The properties of the advertising events. */ - ble_gap_addr_t const *p_peer_addr; /**< Address of a known peer. - @note ble_gap_addr_t::addr_type cannot be - @ref BLE_GAP_ADDR_TYPE_ANONYMOUS. - - When privacy is enabled and the local device uses - @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE addresses, - the device identity list is searched for a matching entry. If - the local IRK for that device identity is set, the local IRK - for that device will be used to generate the advertiser address - field in the advertising packet. - - If @ref ble_gap_adv_properties_t::type is directed, this must be - set to the targeted scanner or initiator. If the peer address is - in the device identity list, the peer IRK for that device will be - used to generate @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE - target addresses used in the advertising event PDUs. */ - uint32_t interval; /**< Advertising interval in 625 us units. @sa BLE_GAP_ADV_INTERVALS. - @note If @ref ble_gap_adv_properties_t::type is set to - @ref BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED_HIGH_DUTY_CYCLE - advertising, this parameter is ignored. */ - uint16_t duration; /**< Advertising duration in 10 ms units. When timeout is reached, - an event of type @ref BLE_GAP_EVT_ADV_SET_TERMINATED is raised. - @sa BLE_GAP_ADV_TIMEOUT_VALUES. - @note The SoftDevice will always complete at least one advertising - event even if the duration is set too low. */ - uint8_t max_adv_evts; /**< Maximum advertising events that shall be sent prior to disabling - advertising. Setting the value to 0 disables the limitation. When - the count of advertising events specified by this parameter - (if not 0) is reached, advertising will be automatically stopped - and an event of type @ref BLE_GAP_EVT_ADV_SET_TERMINATED is raised - @note If @ref ble_gap_adv_properties_t::type is set to - @ref BLE_GAP_ADV_TYPE_CONNECTABLE_NONSCANNABLE_DIRECTED_HIGH_DUTY_CYCLE, - this parameter is ignored. */ - ble_gap_ch_mask_t channel_mask; /**< Channel mask for primary and secondary advertising channels. - At least one of the primary channels, that is channel index 37-39, must be used. - Masking away secondary advertising channels is not supported. */ - uint8_t filter_policy; /**< Filter Policy. @sa BLE_GAP_ADV_FILTER_POLICIES. */ - uint8_t primary_phy; /**< Indicates the PHY on which the primary advertising channel packets - are transmitted. If set to @ref BLE_GAP_PHY_AUTO, @ref BLE_GAP_PHY_1MBPS - will be used. - Valid values are @ref BLE_GAP_PHY_1MBPS and @ref BLE_GAP_PHY_CODED. - @note The primary_phy shall indicate @ref BLE_GAP_PHY_1MBPS if - @ref ble_gap_adv_properties_t::type is not an extended advertising type. */ - uint8_t secondary_phy; /**< Indicates the PHY on which the secondary advertising channel packets - are transmitted. - If set to @ref BLE_GAP_PHY_AUTO, @ref BLE_GAP_PHY_1MBPS will be used. - Valid values are - @ref BLE_GAP_PHY_1MBPS, @ref BLE_GAP_PHY_2MBPS, and @ref BLE_GAP_PHY_CODED. - If @ref ble_gap_adv_properties_t::type is an extended advertising type - and connectable, this is the PHY that will be used to establish a - connection and send AUX_ADV_IND packets on. - @note This parameter will be ignored when - @ref ble_gap_adv_properties_t::type is not an extended advertising type. */ - uint8_t set_id:4; /**< The advertising set identifier distinguishes this advertising set from other - advertising sets transmitted by this and other devices. - @note This parameter will be ignored when - @ref ble_gap_adv_properties_t::type is not an extended advertising type. */ - uint8_t scan_req_notification:1; /**< Enable scan request notifications for this advertising set. When a - scan request is received and the scanner address is allowed - by the filter policy, @ref BLE_GAP_EVT_SCAN_REQ_REPORT is raised. - @note This parameter will be ignored when - @ref ble_gap_adv_properties_t::type is a non-scannable - advertising type. */ -} ble_gap_adv_params_t; - - -/**@brief GAP advertising data buffers. - * - * The application must provide the buffers for advertisement. The memory shall reside in application RAM, and - * shall never be modified while advertising. The data shall be kept alive until either: - * - @ref BLE_GAP_EVT_ADV_SET_TERMINATED is raised. - * - @ref BLE_GAP_EVT_CONNECTED is raised with @ref ble_gap_evt_connected_t::adv_handle set to the corresponding - * advertising handle. - * - Advertising is stopped. - * - Advertising data is changed. - * To update advertising data while advertising, provide new buffers to @ref sd_ble_gap_adv_set_configure. */ -typedef struct -{ - ble_data_t adv_data; /**< Advertising data. - @note - Advertising data can only be specified for a @ref ble_gap_adv_properties_t::type - that is allowed to contain advertising data. */ - ble_data_t scan_rsp_data; /**< Scan response data. - @note - Scan response data can only be specified for a @ref ble_gap_adv_properties_t::type - that is scannable. */ -} ble_gap_adv_data_t; - - -/**@brief GAP scanning parameters. */ -typedef struct -{ - uint8_t extended : 1; /**< If 1, the scanner will accept extended advertising packets. - If set to 0, the scanner will not receive advertising packets - on secondary advertising channels, and will not be able - to receive long advertising PDUs. */ - uint8_t report_incomplete_evts : 1; /**< If 1, events of type @ref ble_gap_evt_adv_report_t may have - @ref ble_gap_adv_report_type_t::status set to - @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA. - This parameter is ignored when used with @ref sd_ble_gap_connect - @note This may be used to abort receiving more packets from an extended - advertising event, and is only available for extended - scanning, see @ref sd_ble_gap_scan_start. - @note This feature is not supported by this SoftDevice. */ - uint8_t active : 1; /**< If 1, perform active scanning by sending scan requests. - This parameter is ignored when used with @ref sd_ble_gap_connect. */ - uint8_t filter_policy : 2; /**< Scanning filter policy. @sa BLE_GAP_SCAN_FILTER_POLICIES. - @note Only @ref BLE_GAP_SCAN_FP_ACCEPT_ALL and - @ref BLE_GAP_SCAN_FP_WHITELIST are valid when used with - @ref sd_ble_gap_connect */ - uint8_t scan_phys; /**< Bitfield of PHYs to scan on. If set to @ref BLE_GAP_PHY_AUTO, - scan_phys will default to @ref BLE_GAP_PHY_1MBPS. - - If @ref ble_gap_scan_params_t::extended is set to 0, the only - supported PHY is @ref BLE_GAP_PHY_1MBPS. - - When used with @ref sd_ble_gap_scan_start, - the bitfield indicates the PHYs the scanner will use for scanning - on primary advertising channels. The scanner will accept - @ref BLE_GAP_PHYS_SUPPORTED as secondary advertising channel PHYs. - - When used with @ref sd_ble_gap_connect, the - bitfield indicates the PHYs on where a connection may be initiated. - If scan_phys contains @ref BLE_GAP_PHY_1MBPS and/or @ref BLE_GAP_PHY_2MBPS, - the primary scan PHY is @ref BLE_GAP_PHY_1MBPS. - If scan_phys also contains @ref BLE_GAP_PHY_CODED, the primary scan - PHY will also contain @ref BLE_GAP_PHY_CODED. If the only scan PHY is - @ref BLE_GAP_PHY_CODED, the primary scan PHY is - @ref BLE_GAP_PHY_CODED only. */ - uint16_t interval; /**< Scan interval in 625 us units. @sa BLE_GAP_SCAN_INTERVALS. */ - uint16_t window; /**< Scan window in 625 us units. @sa BLE_GAP_SCAN_WINDOW. - If scan_phys contains both @ref BLE_GAP_PHY_1MBPS and - @ref BLE_GAP_PHY_CODED interval shall be larger than or - equal to twice the scan window. */ - uint16_t timeout; /**< Scan timeout in 10 ms units. @sa BLE_GAP_SCAN_TIMEOUT. */ - ble_gap_ch_mask_t channel_mask; /**< Channel mask for primary and secondary advertising channels. - At least one of the primary channels, that is channel index 37-39, must be - set to 0. - Masking away secondary channels is not supported. */ -} ble_gap_scan_params_t; - - -/**@brief Privacy. - * - * The privacy feature provides a way for the device to avoid being tracked over a period of time. - * The privacy feature, when enabled, hides the local device identity and replaces it with a private address - * that is automatically refreshed at a specified interval. - * - * If a device still wants to be recognized by other peers, it needs to share it's Identity Resolving Key (IRK). - * With this key, a device can generate a random private address that can only be recognized by peers in possession of that key, - * and devices can establish connections without revealing their real identities. - * - * Both network privacy (@ref BLE_GAP_PRIVACY_MODE_NETWORK_PRIVACY) and device privacy (@ref BLE_GAP_PRIVACY_MODE_DEVICE_PRIVACY) - * are supported. - * - * @note If the device IRK is updated, the new IRK becomes the one to be distributed in all - * bonding procedures performed after @ref sd_ble_gap_privacy_set returns. - * The IRK distributed during bonding procedure is the device IRK that is active when @ref sd_ble_gap_sec_params_reply is called. - */ -typedef struct -{ - uint8_t privacy_mode; /**< Privacy mode, see @ref BLE_GAP_PRIVACY_MODES. Default is @ref BLE_GAP_PRIVACY_MODE_OFF. */ - uint8_t private_addr_type; /**< The private address type must be either @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE or @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_NON_RESOLVABLE. */ - uint16_t private_addr_cycle_s; /**< Private address cycle interval in seconds. Providing an address cycle value of 0 will use the default value defined by @ref BLE_GAP_DEFAULT_PRIVATE_ADDR_CYCLE_INTERVAL_S. */ - ble_gap_irk_t *p_device_irk; /**< When used as input, pointer to IRK structure that will be used as the default IRK. If NULL, the device default IRK will be used. - When used as output, pointer to IRK structure where the current default IRK will be written to. If NULL, this argument is ignored. - By default, the default IRK is used to generate random private resolvable addresses for the local device unless instructed otherwise. */ -} ble_gap_privacy_params_t; - - -/**@brief PHY preferences for TX and RX - * @note tx_phys and rx_phys are bit fields. Multiple bits can be set in them to indicate multiple preferred PHYs for each direction. - * @code - * p_gap_phys->tx_phys = BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS; - * p_gap_phys->rx_phys = BLE_GAP_PHY_1MBPS | BLE_GAP_PHY_2MBPS; - * @endcode - * - */ -typedef struct -{ - uint8_t tx_phys; /**< Preferred transmit PHYs, see @ref BLE_GAP_PHYS. */ - uint8_t rx_phys; /**< Preferred receive PHYs, see @ref BLE_GAP_PHYS. */ -} ble_gap_phys_t; - -/** @brief Keys that can be exchanged during a bonding procedure. */ -typedef struct -{ - uint8_t enc : 1; /**< Long Term Key and Master Identification. */ - uint8_t id : 1; /**< Identity Resolving Key and Identity Address Information. */ - uint8_t sign : 1; /**< Connection Signature Resolving Key. */ - uint8_t link : 1; /**< Derive the Link Key from the LTK. */ -} ble_gap_sec_kdist_t; - - -/**@brief GAP security parameters. */ -typedef struct -{ - uint8_t bond : 1; /**< Perform bonding. */ - uint8_t mitm : 1; /**< Enable Man In The Middle protection. */ - uint8_t lesc : 1; /**< Enable LE Secure Connection pairing. */ - uint8_t keypress : 1; /**< Enable generation of keypress notifications. */ - uint8_t io_caps : 3; /**< IO capabilities, see @ref BLE_GAP_IO_CAPS. */ - uint8_t oob : 1; /**< The OOB data flag. - - In LE legacy pairing, this flag is set if a device has out of band authentication data. - The OOB method is used if both of the devices have out of band authentication data. - - In LE Secure Connections pairing, this flag is set if a device has the peer device's out of band authentication data. - The OOB method is used if at least one device has the peer device's OOB data available. */ - uint8_t min_key_size; /**< Minimum encryption key size in octets between 7 and 16. If 0 then not applicable in this instance. */ - uint8_t max_key_size; /**< Maximum encryption key size in octets between min_key_size and 16. */ - ble_gap_sec_kdist_t kdist_own; /**< Key distribution bitmap: keys that the local device will distribute. */ - ble_gap_sec_kdist_t kdist_peer; /**< Key distribution bitmap: keys that the remote device will distribute. */ -} ble_gap_sec_params_t; - - -/**@brief GAP Encryption Information. */ -typedef struct -{ - uint8_t ltk[BLE_GAP_SEC_KEY_LEN]; /**< Long Term Key. */ - uint8_t lesc : 1; /**< Key generated using LE Secure Connections. */ - uint8_t auth : 1; /**< Authenticated Key. */ - uint8_t ltk_len : 6; /**< LTK length in octets. */ -} ble_gap_enc_info_t; - - -/**@brief GAP Master Identification. */ -typedef struct -{ - uint16_t ediv; /**< Encrypted Diversifier. */ - uint8_t rand[BLE_GAP_SEC_RAND_LEN]; /**< Random Number. */ -} ble_gap_master_id_t; - - -/**@brief GAP Signing Information. */ -typedef struct -{ - uint8_t csrk[BLE_GAP_SEC_KEY_LEN]; /**< Connection Signature Resolving Key. */ -} ble_gap_sign_info_t; - - -/**@brief GAP LE Secure Connections P-256 Public Key. */ -typedef struct -{ - uint8_t pk[BLE_GAP_LESC_P256_PK_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman P-256 Public Key. Stored in the standard SMP protocol format: {X,Y} both in little-endian. */ -} ble_gap_lesc_p256_pk_t; - - -/**@brief GAP LE Secure Connections DHKey. */ -typedef struct -{ - uint8_t key[BLE_GAP_LESC_DHKEY_LEN]; /**< LE Secure Connections Elliptic Curve Diffie-Hellman Key. Stored in little-endian. */ -} ble_gap_lesc_dhkey_t; - - -/**@brief GAP LE Secure Connections OOB data. */ -typedef struct -{ - ble_gap_addr_t addr; /**< Bluetooth address of the device. */ - uint8_t r[BLE_GAP_SEC_KEY_LEN]; /**< Random Number. */ - uint8_t c[BLE_GAP_SEC_KEY_LEN]; /**< Confirm Value. */ -} ble_gap_lesc_oob_data_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONNECTED. */ -typedef struct -{ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 - and the address is the device's identity address. */ - uint8_t role; /**< BLE role for this connection, see @ref BLE_GAP_ROLES */ - ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ - uint8_t adv_handle; /**< Advertising handle in which advertising has ended. - This variable is only set if role is set to @ref BLE_GAP_ROLE_PERIPH. */ - ble_gap_adv_data_t adv_data; /**< Advertising buffers corresponding to the terminated - advertising set. The advertising buffers provided in - @ref sd_ble_gap_adv_set_configure are now released. - This variable is only set if role is set to @ref BLE_GAP_ROLE_PERIPH. */ -} ble_gap_evt_connected_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_DISCONNECTED. */ -typedef struct -{ - uint8_t reason; /**< HCI error code, see @ref BLE_HCI_STATUS_CODES. */ -} ble_gap_evt_disconnected_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE. */ -typedef struct -{ - ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ -} ble_gap_evt_conn_param_update_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_PHY_UPDATE_REQUEST. */ -typedef struct -{ - ble_gap_phys_t peer_preferred_phys; /**< The PHYs the peer prefers to use. */ -} ble_gap_evt_phy_update_request_t; - -/**@brief Event Structure for @ref BLE_GAP_EVT_PHY_UPDATE. */ -typedef struct -{ - uint8_t status; /**< Status of the procedure, see @ref BLE_HCI_STATUS_CODES.*/ - uint8_t tx_phy; /**< TX PHY for this connection, see @ref BLE_GAP_PHYS. */ - uint8_t rx_phy; /**< RX PHY for this connection, see @ref BLE_GAP_PHYS. */ -} ble_gap_evt_phy_update_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST. */ -typedef struct -{ - ble_gap_sec_params_t peer_params; /**< Initiator Security Parameters. */ -} ble_gap_evt_sec_params_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_SEC_INFO_REQUEST. */ -typedef struct -{ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. */ - ble_gap_master_id_t master_id; /**< Master Identification for LTK lookup. */ - uint8_t enc_info : 1; /**< If 1, Encryption Information required. */ - uint8_t id_info : 1; /**< If 1, Identity Information required. */ - uint8_t sign_info : 1; /**< If 1, Signing Information required. */ -} ble_gap_evt_sec_info_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_PASSKEY_DISPLAY. */ -typedef struct -{ - uint8_t passkey[BLE_GAP_PASSKEY_LEN]; /**< 6-digit passkey in ASCII ('0'-'9' digits only). */ - uint8_t match_request : 1; /**< If 1 requires the application to report the match using @ref sd_ble_gap_auth_key_reply - with either @ref BLE_GAP_AUTH_KEY_TYPE_NONE if there is no match or - @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY if there is a match. */ -} ble_gap_evt_passkey_display_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_KEY_PRESSED. */ -typedef struct -{ - uint8_t kp_not; /**< Keypress notification type, see @ref BLE_GAP_KP_NOT_TYPES. */ -} ble_gap_evt_key_pressed_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_KEY_REQUEST. */ -typedef struct -{ - uint8_t key_type; /**< See @ref BLE_GAP_AUTH_KEY_TYPES. */ -} ble_gap_evt_auth_key_request_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST. */ -typedef struct -{ - ble_gap_lesc_p256_pk_t *p_pk_peer; /**< LE Secure Connections remote P-256 Public Key. This will point to the application-supplied memory - inside the keyset during the call to @ref sd_ble_gap_sec_params_reply. */ - uint8_t oobd_req :1; /**< LESC OOB data required. A call to @ref sd_ble_gap_lesc_oob_data_set is required to complete the procedure. */ -} ble_gap_evt_lesc_dhkey_request_t; - - -/**@brief Security levels supported. - * @note See Bluetooth Specification Version 4.2 Volume 3, Part C, Chapter 10, Section 10.2.1. -*/ -typedef struct -{ - uint8_t lv1 : 1; /**< If 1: Level 1 is supported. */ - uint8_t lv2 : 1; /**< If 1: Level 2 is supported. */ - uint8_t lv3 : 1; /**< If 1: Level 3 is supported. */ - uint8_t lv4 : 1; /**< If 1: Level 4 is supported. */ -} ble_gap_sec_levels_t; - - -/**@brief Encryption Key. */ -typedef struct -{ - ble_gap_enc_info_t enc_info; /**< Encryption Information. */ - ble_gap_master_id_t master_id; /**< Master Identification. */ -} ble_gap_enc_key_t; - - -/**@brief Identity Key. */ -typedef struct -{ - ble_gap_irk_t id_info; /**< Identity Resolving Key. */ - ble_gap_addr_t id_addr_info; /**< Identity Address. */ -} ble_gap_id_key_t; - - -/**@brief Security Keys. */ -typedef struct -{ - ble_gap_enc_key_t *p_enc_key; /**< Encryption Key, or NULL. */ - ble_gap_id_key_t *p_id_key; /**< Identity Key, or NULL. */ - ble_gap_sign_info_t *p_sign_key; /**< Signing Key, or NULL. */ - ble_gap_lesc_p256_pk_t *p_pk; /**< LE Secure Connections P-256 Public Key. When in debug mode the application must use the value defined - in the Core Bluetooth Specification v4.2 Vol.3, Part H, Section 2.3.5.6.1 */ -} ble_gap_sec_keys_t; - - -/**@brief Security key set for both local and peer keys. */ -typedef struct -{ - ble_gap_sec_keys_t keys_own; /**< Keys distributed by the local device. For LE Secure Connections the encryption key will be generated locally and will always be stored if bonding. */ - ble_gap_sec_keys_t keys_peer; /**< Keys distributed by the remote device. For LE Secure Connections, p_enc_key must always be NULL. */ -} ble_gap_sec_keyset_t; - - -/**@brief Data Length Update Procedure parameters. */ -typedef struct -{ - uint16_t max_tx_octets; /**< Maximum number of payload octets that a Controller supports for transmission of a single Link Layer Data Channel PDU. */ - uint16_t max_rx_octets; /**< Maximum number of payload octets that a Controller supports for reception of a single Link Layer Data Channel PDU. */ - uint16_t max_tx_time_us; /**< Maximum time, in microseconds, that a Controller supports for transmission of a single Link Layer Data Channel PDU. */ - uint16_t max_rx_time_us; /**< Maximum time, in microseconds, that a Controller supports for reception of a single Link Layer Data Channel PDU. */ -} ble_gap_data_length_params_t; - - -/**@brief Data Length Update Procedure local limitation. */ -typedef struct -{ - uint16_t tx_payload_limited_octets; /**< If > 0, the requested TX packet length is too long by this many octets. */ - uint16_t rx_payload_limited_octets; /**< If > 0, the requested RX packet length is too long by this many octets. */ - uint16_t tx_rx_time_limited_us; /**< If > 0, the requested combination of TX and RX packet lengths is too long by this many microseconds. */ -} ble_gap_data_length_limitation_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_AUTH_STATUS. */ -typedef struct -{ - uint8_t auth_status; /**< Authentication status, see @ref BLE_GAP_SEC_STATUS. */ - uint8_t error_src : 2; /**< On error, source that caused the failure, see @ref BLE_GAP_SEC_STATUS_SOURCES. */ - uint8_t bonded : 1; /**< Procedure resulted in a bond. */ - uint8_t lesc : 1; /**< Procedure resulted in a LE Secure Connection. */ - ble_gap_sec_levels_t sm1_levels; /**< Levels supported in Security Mode 1. */ - ble_gap_sec_levels_t sm2_levels; /**< Levels supported in Security Mode 2. */ - ble_gap_sec_kdist_t kdist_own; /**< Bitmap stating which keys were exchanged (distributed) by the local device. If bonding with LE Secure Connections, the enc bit will be always set. */ - ble_gap_sec_kdist_t kdist_peer; /**< Bitmap stating which keys were exchanged (distributed) by the remote device. If bonding with LE Secure Connections, the enc bit will never be set. */ -} ble_gap_evt_auth_status_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONN_SEC_UPDATE. */ -typedef struct -{ - ble_gap_conn_sec_t conn_sec; /**< Connection security level. */ -} ble_gap_evt_conn_sec_update_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Source of timeout event, see @ref BLE_GAP_TIMEOUT_SOURCES. */ - union - { - ble_data_t adv_report_buffer; /**< If source is set to @ref BLE_GAP_TIMEOUT_SRC_SCAN, the released - scan buffer is contained in this field. */ - } params; /**< Event Parameters. */ -} ble_gap_evt_timeout_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_RSSI_CHANGED. */ -typedef struct -{ - int8_t rssi; /**< Received Signal Strength Indication in dBm. - @note ERRATA-153 requires the rssi sample to be compensated based on a temperature measurement. */ - uint8_t ch_index; /**< Data Channel Index on which the Signal Strength is measured (0-36). */ -} ble_gap_evt_rssi_changed_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_ADV_SET_TERMINATED */ -typedef struct -{ - uint8_t reason; /**< Reason for why the advertising set terminated. See - @ref BLE_GAP_EVT_ADV_SET_TERMINATED_REASON. */ - uint8_t adv_handle; /**< Advertising handle in which advertising has ended. */ - uint8_t num_completed_adv_events; /**< If @ref ble_gap_adv_params_t::max_adv_evts was not set to 0, - this field indicates the number of completed advertising events. */ - ble_gap_adv_data_t adv_data; /**< Advertising buffers corresponding to the terminated - advertising set. The advertising buffers provided in - @ref sd_ble_gap_adv_set_configure are now released. */ -} ble_gap_evt_adv_set_terminated_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_ADV_REPORT. - * - * @note If @ref ble_gap_adv_report_type_t::status is set to @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA, - * not all fields in the advertising report may be available. - * - * @note When ble_gap_adv_report_type_t::status is not set to @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA, - * scanning will be paused. To continue scanning, call @ref sd_ble_gap_scan_start. - */ -typedef struct -{ - ble_gap_adv_report_type_t type; /**< Advertising report type. See @ref ble_gap_adv_report_type_t. */ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr is resolved: - @ref ble_gap_addr_t::addr_id_peer is set to 1 and the address is the - peer's identity address. */ - ble_gap_addr_t direct_addr; /**< Contains the target address of the advertising event if - @ref ble_gap_adv_report_type_t::directed is set to 1. If the - SoftDevice was able to resolve the address, - @ref ble_gap_addr_t::addr_id_peer is set to 1 and the direct_addr - contains the local identity address. If the target address of the - advertising event is @ref BLE_GAP_ADDR_TYPE_RANDOM_PRIVATE_RESOLVABLE, - and the SoftDevice was unable to resolve it, the application may try - to resolve this address to find out if the advertising event was - directed to us. */ - uint8_t primary_phy; /**< Indicates the PHY on which the primary advertising packet was received. - See @ref BLE_GAP_PHYS. */ - uint8_t secondary_phy; /**< Indicates the PHY on which the secondary advertising packet was received. - See @ref BLE_GAP_PHYS. This field is set to @ref BLE_GAP_PHY_NOT_SET if no packets - were received on a secondary advertising channel. */ - int8_t tx_power; /**< TX Power reported by the advertiser in the last packet header received. - This field is set to @ref BLE_GAP_POWER_LEVEL_INVALID if the - last received packet did not contain the Tx Power field. - @note TX Power is only included in extended advertising packets. */ - int8_t rssi; /**< Received Signal Strength Indication in dBm of the last packet received. - @note ERRATA-153 requires the rssi sample to be compensated based on a temperature measurement. */ - uint8_t ch_index; /**< Channel Index on which the last advertising packet is received (0-39). */ - uint8_t set_id; /**< Set ID of the received advertising data. Set ID is not present - if set to @ref BLE_GAP_ADV_REPORT_SET_ID_NOT_AVAILABLE. */ - uint16_t data_id:12; /**< The advertising data ID of the received advertising data. Data ID - is not present if @ref ble_gap_evt_adv_report_t::set_id is set to - @ref BLE_GAP_ADV_REPORT_SET_ID_NOT_AVAILABLE. */ - ble_data_t data; /**< Received advertising or scan response data. If - @ref ble_gap_adv_report_type_t::status is not set to - @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA, the data buffer provided - in @ref sd_ble_gap_scan_start is now released. */ - ble_gap_aux_pointer_t aux_pointer; /**< The offset and PHY of the next advertising packet in this extended advertising - event. @note This field is only set if @ref ble_gap_adv_report_type_t::status - is set to @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA. */ -} ble_gap_evt_adv_report_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_SEC_REQUEST. */ -typedef struct -{ - uint8_t bond : 1; /**< Perform bonding. */ - uint8_t mitm : 1; /**< Man In The Middle protection requested. */ - uint8_t lesc : 1; /**< LE Secure Connections requested. */ - uint8_t keypress : 1; /**< Generation of keypress notifications requested. */ -} ble_gap_evt_sec_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST. */ -typedef struct -{ - ble_gap_conn_params_t conn_params; /**< GAP Connection Parameters. */ -} ble_gap_evt_conn_param_update_request_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_SCAN_REQ_REPORT. */ -typedef struct -{ - uint8_t adv_handle; /**< Advertising handle for the advertising set which received the Scan Request */ - int8_t rssi; /**< Received Signal Strength Indication in dBm. - @note ERRATA-153 requires the rssi sample to be compensated based on a temperature measurement. */ - ble_gap_addr_t peer_addr; /**< Bluetooth address of the peer device. If the peer_addr resolved: @ref ble_gap_addr_t::addr_id_peer is set to 1 - and the address is the device's identity address. */ -} ble_gap_evt_scan_req_report_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST. */ -typedef struct -{ - ble_gap_data_length_params_t peer_params; /**< Peer data length parameters. */ -} ble_gap_evt_data_length_update_request_t; - -/**@brief Event structure for @ref BLE_GAP_EVT_DATA_LENGTH_UPDATE. */ -typedef struct -{ - ble_gap_data_length_params_t effective_params; /**< The effective data length parameters. */ -} ble_gap_evt_data_length_update_t; - - -/**@brief Event structure for @ref BLE_GAP_EVT_QOS_CHANNEL_SURVEY_REPORT. */ -typedef struct -{ - int8_t channel_energy[BLE_GAP_CHANNEL_COUNT]; /**< The measured energy on the Bluetooth Low Energy - channels, in dBm, indexed by Channel Index. - If no measurement is available for the given channel, channel_energy is set to - @ref BLE_GAP_POWER_LEVEL_INVALID. */ -} ble_gap_evt_qos_channel_survey_report_t; - -/**@brief GAP event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which event occurred. */ - union /**< union alternative identified by evt_id in enclosing struct. */ - { - ble_gap_evt_connected_t connected; /**< Connected Event Parameters. */ - ble_gap_evt_disconnected_t disconnected; /**< Disconnected Event Parameters. */ - ble_gap_evt_conn_param_update_t conn_param_update; /**< Connection Parameter Update Parameters. */ - ble_gap_evt_sec_params_request_t sec_params_request; /**< Security Parameters Request Event Parameters. */ - ble_gap_evt_sec_info_request_t sec_info_request; /**< Security Information Request Event Parameters. */ - ble_gap_evt_passkey_display_t passkey_display; /**< Passkey Display Event Parameters. */ - ble_gap_evt_key_pressed_t key_pressed; /**< Key Pressed Event Parameters. */ - ble_gap_evt_auth_key_request_t auth_key_request; /**< Authentication Key Request Event Parameters. */ - ble_gap_evt_lesc_dhkey_request_t lesc_dhkey_request; /**< LE Secure Connections DHKey calculation request. */ - ble_gap_evt_auth_status_t auth_status; /**< Authentication Status Event Parameters. */ - ble_gap_evt_conn_sec_update_t conn_sec_update; /**< Connection Security Update Event Parameters. */ - ble_gap_evt_timeout_t timeout; /**< Timeout Event Parameters. */ - ble_gap_evt_rssi_changed_t rssi_changed; /**< RSSI Event Parameters. */ - ble_gap_evt_adv_report_t adv_report; /**< Advertising Report Event Parameters. */ - ble_gap_evt_adv_set_terminated_t adv_set_terminated; /**< Advertising Set Terminated Event Parameters. */ - ble_gap_evt_sec_request_t sec_request; /**< Security Request Event Parameters. */ - ble_gap_evt_conn_param_update_request_t conn_param_update_request; /**< Connection Parameter Update Parameters. */ - ble_gap_evt_scan_req_report_t scan_req_report; /**< Scan Request Report Parameters. */ - ble_gap_evt_phy_update_request_t phy_update_request; /**< PHY Update Request Event Parameters. */ - ble_gap_evt_phy_update_t phy_update; /**< PHY Update Parameters. */ - ble_gap_evt_data_length_update_request_t data_length_update_request; /**< Data Length Update Request Event Parameters. */ - ble_gap_evt_data_length_update_t data_length_update; /**< Data Length Update Event Parameters. */ - ble_gap_evt_qos_channel_survey_report_t qos_channel_survey_report; /**< Quality of Service (QoS) Channel Survey Report Parameters. */ - } params; /**< Event Parameters. */ -} ble_gap_evt_t; - - -/** - * @brief BLE GAP connection configuration parameters, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_CONN_COUNT The connection count for the connection configurations is zero. - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - The sum of conn_count for all connection configurations combined exceeds UINT8_MAX. - * - The event length is smaller than @ref BLE_GAP_EVENT_LENGTH_MIN. - */ -typedef struct -{ - uint8_t conn_count; /**< The number of concurrent connections the application can create with this configuration. - The default and minimum value is @ref BLE_GAP_CONN_COUNT_DEFAULT. */ - uint16_t event_length; /**< The time set aside for this connection on every connection interval in 1.25 ms units. - The default value is @ref BLE_GAP_EVENT_LENGTH_DEFAULT, the minimum value is @ref BLE_GAP_EVENT_LENGTH_MIN. - The event length and the connection interval are the primary parameters - for setting the throughput of a connection. - See the SoftDevice Specification for details on throughput. */ -} ble_gap_conn_cfg_t; - - -/** - * @brief Configuration of maximum concurrent connections in the different connected roles, set with - * @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_CONN_COUNT The sum of periph_role_count and central_role_count is too - * large. The maximum supported sum of concurrent connections is - * @ref BLE_GAP_ROLE_COUNT_COMBINED_MAX. - * @retval ::NRF_ERROR_INVALID_PARAM central_sec_count is larger than central_role_count. - * @retval ::NRF_ERROR_RESOURCES The adv_set_count is too large. The maximum - * supported advertising handles is - * @ref BLE_GAP_ADV_SET_COUNT_MAX. - */ -typedef struct -{ - uint8_t adv_set_count; /**< Maximum number of advertising sets. Default value is @ref BLE_GAP_ADV_SET_COUNT_DEFAULT. */ - uint8_t periph_role_count; /**< Maximum number of connections concurrently acting as a peripheral. Default value is @ref BLE_GAP_ROLE_COUNT_PERIPH_DEFAULT. */ - uint8_t central_role_count; /**< Maximum number of connections concurrently acting as a central. Default value is @ref BLE_GAP_ROLE_COUNT_CENTRAL_DEFAULT. */ - uint8_t central_sec_count; /**< Number of SMP instances shared between all connections acting as a central. Default value is @ref BLE_GAP_ROLE_COUNT_CENTRAL_SEC_DEFAULT. */ - uint8_t qos_channel_survey_role_available:1; /**< If set, the Quality of Service (QoS) channel survey module is available to the - application using @ref sd_ble_gap_qos_channel_survey_start. */ -} ble_gap_cfg_role_count_t; - - -/** - * @brief Device name and its properties, set with @ref sd_ble_cfg_set. - * - * @note If the device name is not configured, the default device name will be - * @ref BLE_GAP_DEVNAME_DEFAULT, the maximum device name length will be - * @ref BLE_GAP_DEVNAME_DEFAULT_LEN, vloc will be set to @ref BLE_GATTS_VLOC_STACK and the device name - * will have no write access. - * - * @note If @ref max_len is more than @ref BLE_GAP_DEVNAME_DEFAULT_LEN and vloc is set to @ref BLE_GATTS_VLOC_STACK, - * the attribute table size must be increased to have room for the longer device name (see - * @ref sd_ble_cfg_set and @ref ble_gatts_cfg_attr_tab_size_t). - * - * @note If vloc is @ref BLE_GATTS_VLOC_STACK : - * - p_value must point to non-volatile memory (flash) or be NULL. - * - If p_value is NULL, the device name will initially be empty. - * - * @note If vloc is @ref BLE_GATTS_VLOC_USER : - * - p_value cannot be NULL. - * - If the device name is writable, p_value must point to volatile memory (RAM). - * - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - Invalid device name location (vloc). - * - Invalid device name security mode. - * @retval ::NRF_ERROR_INVALID_LENGTH One or more of the following is true: - * - The device name length is invalid (must be between 0 and @ref BLE_GAP_DEVNAME_MAX_LEN). - * - The device name length is too long for the given Attribute Table. - * @retval ::NRF_ERROR_NOT_SUPPORTED Device name security mode is not supported. - */ -typedef struct -{ - ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ - uint8_t vloc:2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ - uint8_t *p_value; /**< Pointer to where the value (device name) is stored or will be stored. */ - uint16_t current_len; /**< Current length in bytes of the memory pointed to by p_value.*/ - uint16_t max_len; /**< Maximum length in bytes of the memory pointed to by p_value.*/ -} ble_gap_cfg_device_name_t; - - -/**@brief Configuration structure for GAP configurations. */ -typedef union -{ - ble_gap_cfg_role_count_t role_count_cfg; /**< Role count configuration, cfg_id is @ref BLE_GAP_CFG_ROLE_COUNT. */ - ble_gap_cfg_device_name_t device_name_cfg; /**< Device name configuration, cfg_id is @ref BLE_GAP_CFG_DEVICE_NAME. */ -} ble_gap_cfg_t; - - -/**@brief Channel Map option. - * - * @details Used with @ref sd_ble_opt_get to get the current channel map - * or @ref sd_ble_opt_set to set a new channel map. When setting the - * channel map, it applies to all current and future connections. When getting the - * current channel map, it applies to a single connection and the connection handle - * must be supplied. - * - * @note Setting the channel map may take some time, depending on connection parameters. - * The time taken may be different for each connection and the get operation will - * return the previous channel map until the new one has taken effect. - * - * @note After setting the channel map, by spec it can not be set again until at least 1 s has passed. - * See Bluetooth Specification Version 4.1 Volume 2, Part E, Section 7.3.46. - * - * @retval ::NRF_SUCCESS Get or set successful. - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - Less then two bits in @ref ch_map are set. - * - Bits for primary advertising channels (37-39) are set. - * @retval ::NRF_ERROR_BUSY Channel map was set again before enough time had passed. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied for get. - * - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle (only applicable for get) */ - uint8_t ch_map[5]; /**< Channel Map (37-bit). */ -} ble_gap_opt_ch_map_t; - - -/**@brief Local connection latency option. - * - * @details Local connection latency is a feature which enables the slave to improve - * current consumption by ignoring the slave latency set by the peer. The - * local connection latency can only be set to a multiple of the slave latency, - * and cannot be longer than half of the supervision timeout. - * - * @details Used with @ref sd_ble_opt_set to set the local connection latency. The - * @ref sd_ble_opt_get is not supported for this option, but the actual - * local connection latency (unless set to NULL) is set as a return parameter - * when setting the option. - * - * @note The latency set will be truncated down to the closest slave latency event - * multiple, or the nearest multiple before half of the supervision timeout. - * - * @note The local connection latency is disabled by default, and needs to be enabled for new - * connections and whenever the connection is updated. - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle */ - uint16_t requested_latency; /**< Requested local connection latency. */ - uint16_t * p_actual_latency; /**< Pointer to storage for the actual local connection latency (can be set to NULL to skip return value). */ -} ble_gap_opt_local_conn_latency_t; - -/**@brief Disable slave latency - * - * @details Used with @ref sd_ble_opt_set to temporarily disable slave latency of a peripheral connection - * (see @ref ble_gap_conn_params_t::slave_latency). And to re-enable it again. When disabled, the - * peripheral will ignore the slave_latency set by the central. - * - * @note Shall only be called on peripheral links. - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_NOT_SUPPORTED Get is not supported. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle */ - uint8_t disable : 1; /**< Set to 1 to disable slave latency. Set to 0 enable it again.*/ -} ble_gap_opt_slave_latency_disable_t; - -/**@brief Passkey Option. - * - * @details Structure containing the passkey to be used during pairing. This can be used with @ref - * sd_ble_opt_set to make the SoftDevice use a preprogrammed passkey for authentication - * instead of generating a random one. - * - * @note Repeated pairing attempts using the same preprogrammed passkey makes pairing vulnerable to MITM attacks. - * - * @note @ref sd_ble_opt_get is not supported for this option. - * - */ -typedef struct -{ - uint8_t const * p_passkey; /**< Pointer to 6-digit ASCII string (digit 0..9 only, no NULL termination) passkey to be used during pairing. If this is NULL, the SoftDevice will generate a random passkey if required.*/ -} ble_gap_opt_passkey_t; - - -/**@brief Compatibility mode 1 option. - * - * @details This can be used with @ref sd_ble_opt_set to enable and disable - * compatibility mode 1. Compatibility mode 1 is disabled by default. - * - * @note Compatibility mode 1 enables interoperability with devices that do not support a value of - * 0 for the WinOffset parameter in the Link Layer CONNECT_IND packet. This applies to a - * limited set of legacy peripheral devices from another vendor. Enabling this compatibility - * mode will only have an effect if the local device will act as a central device and - * initiate a connection to a peripheral device. In that case it may lead to the connection - * creation taking up to one connection interval longer to complete for all connections. - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_INVALID_STATE When connection creation is ongoing while mode 1 is set. - */ -typedef struct -{ - uint8_t enable : 1; /**< Enable compatibility mode 1.*/ -} ble_gap_opt_compat_mode_1_t; - - -/**@brief Authenticated payload timeout option. - * - * @details This can be used with @ref sd_ble_opt_set to change the Authenticated payload timeout to a value other - * than the default of @ref BLE_GAP_AUTH_PAYLOAD_TIMEOUT_MAX. - * - * @note The authenticated payload timeout event ::BLE_GAP_TIMEOUT_SRC_AUTH_PAYLOAD will be generated - * if auth_payload_timeout time has elapsed without receiving a packet with a valid MIC on an encrypted - * link. - * - * @note The LE ping procedure will be initiated before the timer expires to give the peer a chance - * to reset the timer. In addition the stack will try to prioritize running of LE ping over other - * activities to increase chances of finishing LE ping before timer expires. To avoid side-effects - * on other activities, it is recommended to use high timeout values. - * Recommended timeout > 2*(connInterval * (6 + connSlaveLatency)). - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. auth_payload_timeout was outside of allowed range. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter. - */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle */ - uint16_t auth_payload_timeout; /**< Requested timeout in 10 ms unit, see @ref BLE_GAP_AUTH_PAYLOAD_TIMEOUT. */ -} ble_gap_opt_auth_payload_timeout_t; - -/**@brief Option structure for GAP options. */ -typedef union -{ - ble_gap_opt_ch_map_t ch_map; /**< Parameters for the Channel Map option. */ - ble_gap_opt_local_conn_latency_t local_conn_latency; /**< Parameters for the Local connection latency option */ - ble_gap_opt_passkey_t passkey; /**< Parameters for the Passkey option.*/ - ble_gap_opt_compat_mode_1_t compat_mode_1; /**< Parameters for the compatibility mode 1 option.*/ - ble_gap_opt_auth_payload_timeout_t auth_payload_timeout; /**< Parameters for the authenticated payload timeout option.*/ - ble_gap_opt_slave_latency_disable_t slave_latency_disable; /**< Parameters for the Disable slave latency option */ -} ble_gap_opt_t; -/**@} */ - - -/**@addtogroup BLE_GAP_FUNCTIONS Functions - * @{ */ - -/**@brief Set the local Bluetooth identity address. - * - * The local Bluetooth identity address is the address that identifies this device to other peers. - * The address type must be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. - * - * @note The identity address cannot be changed while advertising, scanning or creating a connection. - * - * @note This address will be distributed to the peer during bonding. - * If the address changes, the address stored in the peer device will not be valid and the ability to - * reconnect using the old address will be lost. - * - * @note By default the SoftDevice will set an address of type @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC upon being - * enabled. The address is a random number populated during the IC manufacturing process and remains unchanged - * for the lifetime of each IC. - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @endmscs - * - * @param[in] p_addr Pointer to address structure. - * - * @retval ::NRF_SUCCESS Address successfully set. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_STATE The identity address cannot be changed while advertising, - * scanning or creating a connection. - */ -SVCALL(SD_BLE_GAP_ADDR_SET, uint32_t, sd_ble_gap_addr_set(ble_gap_addr_t const *p_addr)); - - -/**@brief Get local Bluetooth identity address. - * - * @note This will always return the identity address irrespective of the privacy settings, - * i.e. the address type will always be either @ref BLE_GAP_ADDR_TYPE_PUBLIC or @ref BLE_GAP_ADDR_TYPE_RANDOM_STATIC. - * - * @param[out] p_addr Pointer to address structure to be filled in. - * - * @retval ::NRF_SUCCESS Address successfully retrieved. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. - */ -SVCALL(SD_BLE_GAP_ADDR_GET, uint32_t, sd_ble_gap_addr_get(ble_gap_addr_t *p_addr)); - - -/**@brief Get the Bluetooth device address used by the advertiser. - * - * @note This function will return the local Bluetooth address used in advertising PDUs. When - * using privacy, the SoftDevice will generate a new private address every - * @ref ble_gap_privacy_params_t::private_addr_cycle_s configured using - * @ref sd_ble_gap_privacy_set. Hence depending on when the application calls this API, the - * address returned may not be the latest address that is used in the advertising PDUs. - * - * @param[in] adv_handle The advertising handle to get the address from. - * @param[out] p_addr Pointer to address structure to be filled in. - * - * @retval ::NRF_SUCCESS Address successfully retrieved. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE The provided advertising handle was not found. - * @retval ::NRF_ERROR_INVALID_STATE The advertising set is currently not advertising. - */ -SVCALL(SD_BLE_GAP_ADV_ADDR_GET, uint32_t, sd_ble_gap_adv_addr_get(uint8_t adv_handle, ble_gap_addr_t *p_addr)); - - -/**@brief Set the active whitelist in the SoftDevice. - * - * @note Only one whitelist can be used at a time and the whitelist is shared between the BLE roles. - * The whitelist cannot be set if a BLE role is using the whitelist. - * - * @note If an address is resolved using the information in the device identity list, then the whitelist - * filter policy applies to the peer identity address and not the resolvable address sent on air. - * - * @mscs - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_PRIVATE_SCAN_MSC} - * @endmscs - * - * @param[in] pp_wl_addrs Pointer to a whitelist of peer addresses, if NULL the whitelist will be cleared. - * @param[in] len Length of the whitelist, maximum @ref BLE_GAP_WHITELIST_ADDR_MAX_COUNT. - * - * @retval ::NRF_SUCCESS The whitelist is successfully set/cleared. - * @retval ::NRF_ERROR_INVALID_ADDR The whitelist (or one of its entries) provided is invalid. - * @retval ::BLE_ERROR_GAP_WHITELIST_IN_USE The whitelist is in use by a BLE role and cannot be set or cleared. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. - * @retval ::NRF_ERROR_DATA_SIZE The given whitelist size is invalid (zero or too large); this can only return when - * pp_wl_addrs is not NULL. - */ -SVCALL(SD_BLE_GAP_WHITELIST_SET, uint32_t, sd_ble_gap_whitelist_set(ble_gap_addr_t const * const * pp_wl_addrs, uint8_t len)); - - -/**@brief Set device identity list. - * - * @note Only one device identity list can be used at a time and the list is shared between the BLE roles. - * The device identity list cannot be set if a BLE role is using the list. - * - * @param[in] pp_id_keys Pointer to an array of peer identity addresses and peer IRKs, if NULL the device identity list will be cleared. - * @param[in] pp_local_irks Pointer to an array of local IRKs. Each entry in the array maps to the entry in pp_id_keys at the same index. - * To fill in the list with the currently set device IRK for all peers, set to NULL. - * @param[in] len Length of the device identity list, maximum @ref BLE_GAP_DEVICE_IDENTITIES_MAX_COUNT. - * - * @mscs - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_PRIVATE_SCAN_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_CONN_PRIV_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS The device identity list successfully set/cleared. - * @retval ::NRF_ERROR_INVALID_ADDR The device identity list (or one of its entries) provided is invalid. - * This code may be returned if the local IRK list also has an invalid entry. - * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_IN_USE The device identity list is in use and cannot be set or cleared. - * @retval ::BLE_ERROR_GAP_DEVICE_IDENTITIES_DUPLICATE The device identity list contains multiple entries with the same identity address. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. - * @retval ::NRF_ERROR_DATA_SIZE The given device identity list size invalid (zero or too large); this can - * only return when pp_id_keys is not NULL. - */ -SVCALL(SD_BLE_GAP_DEVICE_IDENTITIES_SET, uint32_t, sd_ble_gap_device_identities_set(ble_gap_id_key_t const * const * pp_id_keys, ble_gap_irk_t const * const * pp_local_irks, uint8_t len)); - - -/**@brief Set privacy settings. - * - * @note Privacy settings cannot be changed while advertising, scanning or creating a connection. - * - * @param[in] p_privacy_params Privacy settings. - * - * @mscs - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_SCAN_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Set successfully. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid address type is supplied. - * @retval ::NRF_ERROR_INVALID_ADDR The pointer to privacy settings is NULL or invalid. - * Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. - * @retval ::NRF_ERROR_INVALID_PARAM Out of range parameters are provided. - * @retval ::NRF_ERROR_INVALID_STATE Privacy settings cannot be changed while advertising, scanning - * or creating a connection. - */ -SVCALL(SD_BLE_GAP_PRIVACY_SET, uint32_t, sd_ble_gap_privacy_set(ble_gap_privacy_params_t const *p_privacy_params)); - - -/**@brief Get privacy settings. - * - * @note ::ble_gap_privacy_params_t::p_device_irk must be initialized to NULL or a valid address before this function is called. - * If it is initialized to a valid address, the address pointed to will contain the current device IRK on return. - * - * @param[in,out] p_privacy_params Privacy settings. - * - * @retval ::NRF_SUCCESS Privacy settings read. - * @retval ::NRF_ERROR_INVALID_ADDR The pointer given for returning the privacy settings may be NULL or invalid. - * Otherwise, the p_device_irk pointer in privacy parameter is an invalid pointer. - */ -SVCALL(SD_BLE_GAP_PRIVACY_GET, uint32_t, sd_ble_gap_privacy_get(ble_gap_privacy_params_t *p_privacy_params)); - - -/**@brief Configure an advertising set. Set, clear or update advertising and scan response data. - * - * @note The format of the advertising data will be checked by this call to ensure interoperability. - * Limitations imposed by this API call to the data provided include having a flags data type in the scan response data and - * duplicating the local name in the advertising data and scan response data. - * - * @note In order to update advertising data while advertising, new advertising buffers must be provided. - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @endmscs - * - * @param[in,out] p_adv_handle Provide a pointer to a handle containing @ref BLE_GAP_ADV_SET_HANDLE_NOT_SET to configure - * a new advertising set. On success, a new handle is then returned through the pointer. - * Provide a pointer to an existing advertising handle to configure an existing advertising set. - * @param[in] p_adv_data Advertising data. If set to NULL, no advertising data will be used. See @ref ble_gap_adv_data_t. - * @param[in] p_adv_params Advertising parameters. When this function is used to update advertising data while advertising, - * this parameter must be NULL. See @ref ble_gap_adv_params_t. - * - * @retval ::NRF_SUCCESS Advertising set successfully configured. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied: - * - Invalid advertising data configuration specified. See @ref ble_gap_adv_data_t. - * - Invalid configuration of p_adv_params. See @ref ble_gap_adv_params_t. - * - Use of whitelist requested but whitelist has not been set, - * see @ref sd_ble_gap_whitelist_set. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR ble_gap_adv_params_t::p_peer_addr is invalid. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - It is invalid to provide non-NULL advertising set parameters while advertising. - * - It is invalid to provide the same data buffers while advertising. To update - * advertising data, provide new advertising buffers. - * @retval ::BLE_ERROR_GAP_DISCOVERABLE_WITH_WHITELIST Discoverable mode and whitelist incompatible. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE The provided advertising handle was not found. Use @ref BLE_GAP_ADV_SET_HANDLE_NOT_SET to - * configure a new advertising handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_FLAGS Invalid combination of advertising flags supplied. - * @retval ::NRF_ERROR_INVALID_DATA Invalid data type(s) supplied. Check the advertising data format specification - * given in Bluetooth Specification Version 5.0, Volume 3, Part C, Chapter 11. - * @retval ::NRF_ERROR_INVALID_LENGTH Invalid data length(s) supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported data length or advertising parameter configuration. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to configure a new advertising handle. Update an - * existing advertising handle instead. - * @retval ::BLE_ERROR_GAP_UUID_LIST_MISMATCH Invalid UUID list supplied. - */ -SVCALL(SD_BLE_GAP_ADV_SET_CONFIGURE, uint32_t, sd_ble_gap_adv_set_configure(uint8_t *p_adv_handle, ble_gap_adv_data_t const *p_adv_data, ble_gap_adv_params_t const *p_adv_params)); - - -/**@brief Start advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). - * - * @note Only one advertiser may be active at any time. - * - * @events - * @event{@ref BLE_GAP_EVT_CONNECTED, Generated after connection has been established through connectable advertising.} - * @event{@ref BLE_GAP_EVT_ADV_SET_TERMINATED, Advertising set has terminated.} - * @event{@ref BLE_GAP_EVT_SCAN_REQ_REPORT, A scan request was received.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_CONN_PRIV_MSC} - * @mmsc{@ref BLE_GAP_PRIVACY_ADV_DIR_PRIV_MSC} - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @endmscs - * - * @param[in] adv_handle Advertising handle to advertise on, received from @ref sd_ble_gap_adv_set_configure. - * @param[in] conn_cfg_tag Tag identifying a configuration set by @ref sd_ble_cfg_set or - * @ref BLE_CONN_CFG_TAG_DEFAULT to use the default connection configuration. For non-connectable - * advertising, this is ignored. - * - * @retval ::NRF_SUCCESS The BLE stack has started advertising. - * @retval ::NRF_ERROR_INVALID_STATE adv_handle is not configured or already advertising. - * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached; connectable advertiser cannot be started. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE Advertising handle not found. Configure a new adveriting handle with @ref sd_ble_gap_adv_set_configure. - * @retval ::NRF_ERROR_NOT_FOUND conn_cfg_tag not found. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied: - * - Invalid configuration of p_adv_params. See @ref ble_gap_adv_params_t. - * - Use of whitelist requested but whitelist has not been set, see @ref sd_ble_gap_whitelist_set. - * @retval ::NRF_ERROR_RESOURCES Either: - * - adv_handle is configured with connectable advertising, but the event_length parameter - * associated with conn_cfg_tag is too small to be able to establish a connection on - * the selected advertising phys. Use @ref sd_ble_cfg_set to increase the event length. - * - Not enough BLE role slots available. - Stop one or more currently active roles (Central, Peripheral, Broadcaster or Observer) and try again. - * - p_adv_params is configured with connectable advertising, but the event_length parameter - * associated with conn_cfg_tag is too small to be able to establish a connection on - * the selected advertising phys. Use @ref sd_ble_cfg_set to increase the event length. - */ -SVCALL(SD_BLE_GAP_ADV_START, uint32_t, sd_ble_gap_adv_start(uint8_t adv_handle, uint8_t conn_cfg_tag)); - - -/**@brief Stop advertising (GAP Discoverable, Connectable modes, Broadcast Procedure). - * - * @mscs - * @mmsc{@ref BLE_GAP_ADV_MSC} - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @endmscs - * - * @param[in] adv_handle The advertising handle that should stop advertising. - * - * @retval ::NRF_SUCCESS The BLE stack has stopped advertising. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE Invalid advertising handle. - * @retval ::NRF_ERROR_INVALID_STATE The advertising handle is not advertising. - */ -SVCALL(SD_BLE_GAP_ADV_STOP, uint32_t, sd_ble_gap_adv_stop(uint8_t adv_handle)); - - - -/**@brief Update connection parameters. - * - * @details In the central role this will initiate a Link Layer connection parameter update procedure, - * otherwise in the peripheral role, this will send the corresponding L2CAP request and wait for - * the central to perform the procedure. In both cases, and regardless of success or failure, the application - * will be informed of the result with a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE event. - * - * @details This function can be used as a central both to reply to a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST or to start the procedure unrequested. - * - * @events - * @event{@ref BLE_GAP_EVT_CONN_PARAM_UPDATE, Result of the connection parameter update procedure.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CPU_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} - * @mmsc{@ref BLE_GAP_MULTILINK_CPU_MSC} - * @mmsc{@ref BLE_GAP_MULTILINK_CTRL_PROC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_CPU_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_conn_params Pointer to desired connection parameters. If NULL is provided on a peripheral role, - * the parameters in the PPCP characteristic of the GAP service will be used instead. - * If NULL is provided on a central role and in response to a @ref BLE_GAP_EVT_CONN_PARAM_UPDATE_REQUEST, the peripheral request will be rejected - * - * @retval ::NRF_SUCCESS The Connection Update procedure has been started successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, check parameter limits and constraints. - * @retval ::NRF_ERROR_INVALID_STATE Disconnection in progress or link has not been established. - * @retval ::NRF_ERROR_BUSY Procedure already in progress, wait for pending procedures to complete and retry. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GAP_CONN_PARAM_UPDATE, uint32_t, sd_ble_gap_conn_param_update(uint16_t conn_handle, ble_gap_conn_params_t const *p_conn_params)); - - -/**@brief Disconnect (GAP Link Termination). - * - * @details This call initiates the disconnection procedure, and its completion will be communicated to the application - * with a @ref BLE_GAP_EVT_DISCONNECTED event. - * - * @events - * @event{@ref BLE_GAP_EVT_DISCONNECTED, Generated when disconnection procedure is complete.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CONN_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] hci_status_code HCI status code, see @ref BLE_HCI_STATUS_CODES (accepted values are @ref BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION and @ref BLE_HCI_CONN_INTERVAL_UNACCEPTABLE). - * - * @retval ::NRF_SUCCESS The disconnection procedure has been started successfully. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_INVALID_STATE Disconnection in progress or link has not been established. - */ -SVCALL(SD_BLE_GAP_DISCONNECT, uint32_t, sd_ble_gap_disconnect(uint16_t conn_handle, uint8_t hci_status_code)); - - -/**@brief Set the radio's transmit power. - * - * @param[in] role The role to set the transmit power for, see @ref BLE_GAP_TX_POWER_ROLES for - * possible roles. - * @param[in] handle The handle parameter is interpreted depending on role: - * - If role is @ref BLE_GAP_TX_POWER_ROLE_CONN, this value is the specific connection handle. - * - If role is @ref BLE_GAP_TX_POWER_ROLE_ADV, the advertising set identified with the advertising handle, - * will use the specified transmit power, and include it in the advertising packet headers if - * @ref ble_gap_adv_properties_t::include_tx_power set. - * - For all other roles handle is ignored. - * @param[in] tx_power Radio transmit power in dBm (see note for accepted values). - * - * @note Supported tx_power values: -40dBm, -20dBm, -16dBm, -12dBm, -8dBm, -4dBm, 0dBm, +2dBm, +3dBm, +4dBm, +5dBm, +6dBm, +7dBm and +8dBm. - * @note The initiator will have the same transmit power as the scanner. - * @note When a connection is created it will inherit the transmit power from the initiator or - * advertiser leading to the connection. - * - * @retval ::NRF_SUCCESS Successfully changed the transmit power. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_ADV_HANDLE Advertising handle not found. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_TX_POWER_SET, uint32_t, sd_ble_gap_tx_power_set(uint8_t role, uint16_t handle, int8_t tx_power)); - - -/**@brief Set GAP Appearance value. - * - * @param[in] appearance Appearance (16-bit), see @ref BLE_APPEARANCES. - * - * @retval ::NRF_SUCCESS Appearance value set successfully. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - */ -SVCALL(SD_BLE_GAP_APPEARANCE_SET, uint32_t, sd_ble_gap_appearance_set(uint16_t appearance)); - - -/**@brief Get GAP Appearance value. - * - * @param[out] p_appearance Pointer to appearance (16-bit) to be filled in, see @ref BLE_APPEARANCES. - * - * @retval ::NRF_SUCCESS Appearance value retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GAP_APPEARANCE_GET, uint32_t, sd_ble_gap_appearance_get(uint16_t *p_appearance)); - - -/**@brief Set GAP Peripheral Preferred Connection Parameters. - * - * @param[in] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure with the desired parameters. - * - * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters set successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - */ -SVCALL(SD_BLE_GAP_PPCP_SET, uint32_t, sd_ble_gap_ppcp_set(ble_gap_conn_params_t const *p_conn_params)); - - -/**@brief Get GAP Peripheral Preferred Connection Parameters. - * - * @param[out] p_conn_params Pointer to a @ref ble_gap_conn_params_t structure where the parameters will be stored. - * - * @retval ::NRF_SUCCESS Peripheral Preferred Connection Parameters retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GAP_PPCP_GET, uint32_t, sd_ble_gap_ppcp_get(ble_gap_conn_params_t *p_conn_params)); - - -/**@brief Set GAP device name. - * - * @note If the device name is located in application flash memory (see @ref ble_gap_cfg_device_name_t), - * it cannot be changed. Then @ref NRF_ERROR_FORBIDDEN will be returned. - * - * @param[in] p_write_perm Write permissions for the Device Name characteristic, see @ref ble_gap_conn_sec_mode_t. - * @param[in] p_dev_name Pointer to a UTF-8 encoded, non NULL-terminated string. - * @param[in] len Length of the UTF-8, non NULL-terminated string pointed to by p_dev_name in octets (must be smaller or equal than @ref BLE_GAP_DEVNAME_MAX_LEN). - * - * @retval ::NRF_SUCCESS GAP device name and permissions set successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @retval ::NRF_ERROR_FORBIDDEN Device name is not writable. - */ -SVCALL(SD_BLE_GAP_DEVICE_NAME_SET, uint32_t, sd_ble_gap_device_name_set(ble_gap_conn_sec_mode_t const *p_write_perm, uint8_t const *p_dev_name, uint16_t len)); - - -/**@brief Get GAP device name. - * - * @note If the device name is longer than the size of the supplied buffer, - * p_len will return the complete device name length, - * and not the number of bytes actually returned in p_dev_name. - * The application may use this information to allocate a suitable buffer size. - * - * @param[out] p_dev_name Pointer to an empty buffer where the UTF-8 non NULL-terminated string will be placed. Set to NULL to obtain the complete device name length. - * @param[in,out] p_len Length of the buffer pointed by p_dev_name, complete device name length on output. - * - * @retval ::NRF_SUCCESS GAP device name retrieved successfully. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - */ -SVCALL(SD_BLE_GAP_DEVICE_NAME_GET, uint32_t, sd_ble_gap_device_name_get(uint8_t *p_dev_name, uint16_t *p_len)); - - -/**@brief Initiate the GAP Authentication procedure. - * - * @details In the central role, this function will send an SMP Pairing Request (or an SMP Pairing Failed if rejected), - * otherwise in the peripheral role, an SMP Security Request will be sent. - * - * @events - * @event{Depending on the security parameters set and the packet exchanges with the peer\, the following events may be generated:} - * @event{@ref BLE_GAP_EVT_SEC_PARAMS_REQUEST} - * @event{@ref BLE_GAP_EVT_SEC_INFO_REQUEST} - * @event{@ref BLE_GAP_EVT_PASSKEY_DISPLAY} - * @event{@ref BLE_GAP_EVT_KEY_PRESSED} - * @event{@ref BLE_GAP_EVT_AUTH_KEY_REQUEST} - * @event{@ref BLE_GAP_EVT_LESC_DHKEY_REQUEST} - * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE} - * @event{@ref BLE_GAP_EVT_AUTH_STATUS} - * @event{@ref BLE_GAP_EVT_TIMEOUT} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_SEC_REQ_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_SEC_REQ_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_sec_params Pointer to the @ref ble_gap_sec_params_t structure with the security parameters to be used during the pairing or bonding procedure. - * In the peripheral role, only the bond, mitm, lesc and keypress fields of this structure are used. - * In the central role, this pointer may be NULL to reject a Security Request. - * - * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - No link has been established. - * - An encryption is already executing or queued. - * @retval ::NRF_ERROR_NO_MEM The maximum number of authentication procedures that can run in parallel for the given role is reached. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. - * @retval ::NRF_ERROR_TIMEOUT A SMP timeout has occurred, and further SMP operations on this link is prohibited. - */ -SVCALL(SD_BLE_GAP_AUTHENTICATE, uint32_t, sd_ble_gap_authenticate(uint16_t conn_handle, ble_gap_sec_params_t const *p_sec_params)); - - -/**@brief Reply with GAP security parameters. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_PERIPH_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_STATIC_PK_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_CONFIRM_FAIL_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_KS_TOO_SMALL_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_APP_ERROR_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_REMOTE_PAIRING_FAIL_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_PAIRING_TIMEOUT_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] sec_status Security status, see @ref BLE_GAP_SEC_STATUS. - * @param[in] p_sec_params Pointer to a @ref ble_gap_sec_params_t security parameters structure. In the central role this must be set to NULL, as the parameters have - * already been provided during a previous call to @ref sd_ble_gap_authenticate. - * @param[in,out] p_sec_keyset Pointer to a @ref ble_gap_sec_keyset_t security keyset structure. Any keys generated and/or distributed as a result of the ongoing security procedure - * will be stored into the memory referenced by the pointers inside this structure. The keys will be stored and available to the application - * upon reception of a @ref BLE_GAP_EVT_AUTH_STATUS event. - * Note that the SoftDevice expects the application to provide memory for storing the - * peer's keys. So it must be ensured that the relevant pointers inside this structure are not NULL. The pointers to the local key - * can, however, be NULL, in which case, the local key data will not be available to the application upon reception of the - * @ref BLE_GAP_EVT_AUTH_STATUS event. - * - * @retval ::NRF_SUCCESS Successfully accepted security parameter from the application. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Security parameters has not been requested. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED Setting of sign or link fields in @ref ble_gap_sec_kdist_t not supported. - */ -SVCALL(SD_BLE_GAP_SEC_PARAMS_REPLY, uint32_t, sd_ble_gap_sec_params_reply(uint16_t conn_handle, uint8_t sec_status, ble_gap_sec_params_t const *p_sec_params, ble_gap_sec_keyset_t const *p_sec_keyset)); - - -/**@brief Reply with an authentication key. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_AUTH_KEY_REQUEST or a @ref BLE_GAP_EVT_PASSKEY_DISPLAY, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_BONDING_PK_CENTRAL_OOB_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_BONDING_PK_PERIPH_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] key_type See @ref BLE_GAP_AUTH_KEY_TYPES. - * @param[in] p_key If key type is @ref BLE_GAP_AUTH_KEY_TYPE_NONE, then NULL. - * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_PASSKEY, then a 6-byte ASCII string (digit 0..9 only, no NULL termination) - * or NULL when confirming LE Secure Connections Numeric Comparison. - * If key type is @ref BLE_GAP_AUTH_KEY_TYPE_OOB, then a 16-byte OOB key value in little-endian format. - * - * @retval ::NRF_SUCCESS Authentication key successfully set. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Authentication key has not been requested. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_AUTH_KEY_REPLY, uint32_t, sd_ble_gap_auth_key_reply(uint16_t conn_handle, uint8_t key_type, uint8_t const *p_key)); - - -/**@brief Reply with an LE Secure connections DHKey. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST, calling it at other times will result in an @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_PAIRING_JW_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_NC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_PD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_dhkey LE Secure Connections DHKey. - * - * @retval ::NRF_SUCCESS DHKey successfully set. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - The peer is not authenticated. - * - The application has not pulled a @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST event. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_LESC_DHKEY_REPLY, uint32_t, sd_ble_gap_lesc_dhkey_reply(uint16_t conn_handle, ble_gap_lesc_dhkey_t const *p_dhkey)); - - -/**@brief Notify the peer of a local keypress. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_PKE_CD_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_PKE_CD_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] kp_not See @ref BLE_GAP_KP_NOT_TYPES. - * - * @retval ::NRF_SUCCESS Keypress notification successfully queued for transmission. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - Authentication key not requested. - * - Passkey has not been entered. - * - Keypresses have not been enabled by both peers. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_BUSY The BLE stack is busy. Retry at later time. - */ -SVCALL(SD_BLE_GAP_KEYPRESS_NOTIFY, uint32_t, sd_ble_gap_keypress_notify(uint16_t conn_handle, uint8_t kp_not)); - - -/**@brief Generate a set of OOB data to send to a peer out of band. - * - * @note The @ref ble_gap_addr_t included in the OOB data returned will be the currently active one (or, if a connection has already been established, - * the one used during connection setup). The application may manually overwrite it with an updated value. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. Can be @ref BLE_CONN_HANDLE_INVALID if a BLE connection has not been established yet. - * @param[in] p_pk_own LE Secure Connections local P-256 Public Key. - * @param[out] p_oobd_own The OOB data to be sent out of band to a peer. - * - * @retval ::NRF_SUCCESS OOB data successfully generated. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_LESC_OOB_DATA_GET, uint32_t, sd_ble_gap_lesc_oob_data_get(uint16_t conn_handle, ble_gap_lesc_p256_pk_t const *p_pk_own, ble_gap_lesc_oob_data_t *p_oobd_own)); - -/**@brief Provide the OOB data sent/received out of band. - * - * @note An authentication procedure with OOB selected as an algorithm must be in progress when calling this function. - * @note A @ref BLE_GAP_EVT_LESC_DHKEY_REQUEST event with the oobd_req set to 1 must have been received prior to calling this function. - * - * @events - * @event{This function is used during authentication procedures\, see the list of events in the documentation of @ref sd_ble_gap_authenticate.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_LESC_BONDING_OOB_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_LESC_BONDING_OOB_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_oobd_own The OOB data sent out of band to a peer or NULL if the peer has not received OOB data. - * Must correspond to @ref ble_gap_sec_params_t::oob flag in @ref BLE_GAP_EVT_SEC_PARAMS_REQUEST. - * @param[in] p_oobd_peer The OOB data received out of band from a peer or NULL if none received. - * Must correspond to @ref ble_gap_sec_params_t::oob flag - * in @ref sd_ble_gap_authenticate in the central role or - * in @ref sd_ble_gap_sec_params_reply in the peripheral role. - * - * @retval ::NRF_SUCCESS OOB data accepted. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - Authentication key not requested - * - Not expecting LESC OOB data - * - Have not actually exchanged passkeys. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_LESC_OOB_DATA_SET, uint32_t, sd_ble_gap_lesc_oob_data_set(uint16_t conn_handle, ble_gap_lesc_oob_data_t const *p_oobd_own, ble_gap_lesc_oob_data_t const *p_oobd_peer)); - - -/**@brief Initiate GAP Encryption procedure. - * - * @details In the central role, this function will initiate the encryption procedure using the encryption information provided. - * - * @events - * @event{@ref BLE_GAP_EVT_CONN_SEC_UPDATE, The connection security has been updated.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_ENC_AUTH_MUTEX_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_ENC_MSC} - * @mmsc{@ref BLE_GAP_MULTILINK_CTRL_PROC_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_SEC_REQ_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_master_id Pointer to a @ref ble_gap_master_id_t master identification structure. - * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. - * - * @retval ::NRF_SUCCESS Successfully initiated authentication procedure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE No link has been established. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::BLE_ERROR_INVALID_ROLE Operation is not supported in the Peripheral role. - * @retval ::NRF_ERROR_BUSY Procedure already in progress or not allowed at this time, wait for pending procedures to complete and retry. - */ -SVCALL(SD_BLE_GAP_ENCRYPT, uint32_t, sd_ble_gap_encrypt(uint16_t conn_handle, ble_gap_master_id_t const *p_master_id, ble_gap_enc_info_t const *p_enc_info)); - - -/**@brief Reply with GAP security information. - * - * @details This function is only used to reply to a @ref BLE_GAP_EVT_SEC_INFO_REQUEST, calling it at other times will result in @ref NRF_ERROR_INVALID_STATE. - * @note If the call returns an error code, the request is still pending, and the reply call may be repeated with corrected parameters. - * @note Data signing is not yet supported, and p_sign_info must therefore be NULL. - * - * @mscs - * @mmsc{@ref BLE_GAP_PERIPH_ENC_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_enc_info Pointer to a @ref ble_gap_enc_info_t encryption information structure. May be NULL to signal none is available. - * @param[in] p_id_info Pointer to a @ref ble_gap_irk_t identity information structure. May be NULL to signal none is available. - * @param[in] p_sign_info Pointer to a @ref ble_gap_sign_info_t signing information structure. May be NULL to signal none is available. - * - * @retval ::NRF_SUCCESS Successfully accepted security information. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - No link has been established. - * - No @ref BLE_GAP_EVT_SEC_REQUEST pending. - * - LE long term key requested command not allowed. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_SEC_INFO_REPLY, uint32_t, sd_ble_gap_sec_info_reply(uint16_t conn_handle, ble_gap_enc_info_t const *p_enc_info, ble_gap_irk_t const *p_id_info, ble_gap_sign_info_t const *p_sign_info)); - - -/**@brief Get the current connection security. - * - * @param[in] conn_handle Connection handle. - * @param[out] p_conn_sec Pointer to a @ref ble_gap_conn_sec_t structure to be filled in. - * - * @retval ::NRF_SUCCESS Current connection security successfully retrieved. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_CONN_SEC_GET, uint32_t, sd_ble_gap_conn_sec_get(uint16_t conn_handle, ble_gap_conn_sec_t *p_conn_sec)); - - -/**@brief Start reporting the received signal strength to the application. - * - * A new event is reported whenever the RSSI value changes, until @ref sd_ble_gap_rssi_stop is called. - * - * @events - * @event{@ref BLE_GAP_EVT_RSSI_CHANGED, New RSSI data available. How often the event is generated is - * dependent on the settings of the threshold_dbm - * and skip_count input parameters.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} - * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] threshold_dbm Minimum change in dBm before triggering the @ref BLE_GAP_EVT_RSSI_CHANGED event. Events are disabled if threshold_dbm equals @ref BLE_GAP_RSSI_THRESHOLD_INVALID. - * @param[in] skip_count Number of RSSI samples with a change of threshold_dbm or more before sending a new @ref BLE_GAP_EVT_RSSI_CHANGED event. - * - * @retval ::NRF_SUCCESS Successfully activated RSSI reporting. - * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is already ongoing. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_RSSI_START, uint32_t, sd_ble_gap_rssi_start(uint16_t conn_handle, uint8_t threshold_dbm, uint8_t skip_count)); - - -/**@brief Stop reporting the received signal strength. - * - * @note An RSSI change detected before the call but not yet received by the application - * may be reported after @ref sd_ble_gap_rssi_stop has been called. - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} - * @mmsc{@ref BLE_GAP_RSSI_FILT_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * - * @retval ::NRF_SUCCESS Successfully deactivated RSSI reporting. - * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is not ongoing. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - */ -SVCALL(SD_BLE_GAP_RSSI_STOP, uint32_t, sd_ble_gap_rssi_stop(uint16_t conn_handle)); - - -/**@brief Get the received signal strength for the last connection event. - * - * @ref sd_ble_gap_rssi_start must be called to start reporting RSSI before using this function. @ref NRF_ERROR_NOT_FOUND - * will be returned until RSSI was sampled for the first time after calling @ref sd_ble_gap_rssi_start. - * @note ERRATA-153 requires the rssi sample to be compensated based on a temperature measurement. - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_RSSI_READ_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[out] p_rssi Pointer to the location where the RSSI measurement shall be stored. - * @param[out] p_ch_index Pointer to the location where Channel Index for the RSSI measurement shall be stored. - * - * @retval ::NRF_SUCCESS Successfully read the RSSI. - * @retval ::NRF_ERROR_NOT_FOUND No sample is available. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_INVALID_STATE RSSI reporting is not ongoing. - */ -SVCALL(SD_BLE_GAP_RSSI_GET, uint32_t, sd_ble_gap_rssi_get(uint16_t conn_handle, int8_t *p_rssi, uint8_t *p_ch_index)); - - -/**@brief Start or continue scanning (GAP Discovery procedure, Observer Procedure). - * - * @note A call to this function will require the application to keep the memory pointed by - * p_adv_report_buffer alive until the buffer is released. The buffer is released when the scanner is stopped - * or when this function is called with another buffer. - * - * @note The scanner will automatically stop in the following cases: - * - @ref sd_ble_gap_scan_stop is called. - * - @ref sd_ble_gap_connect is called. - * - A @ref BLE_GAP_EVT_TIMEOUT with source set to @ref BLE_GAP_TIMEOUT_SRC_SCAN is received. - * - When a @ref BLE_GAP_EVT_ADV_REPORT event is received and @ref ble_gap_adv_report_type_t::status is not set to - * @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA. In this case scanning is only paused to let the application - * access received data. The application must call this function to continue scanning, or call @ref sd_ble_gap_scan_stop - * to stop scanning. - * - * @note If a @ref BLE_GAP_EVT_ADV_REPORT event is received with @ref ble_gap_adv_report_type_t::status set to - * @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_MORE_DATA, the scanner will continue scanning, and the application will - * receive more reports from this advertising event. The following reports will include the old and new received data. - * - * @events - * @event{@ref BLE_GAP_EVT_ADV_REPORT, An advertising or scan response packet has been received.} - * @event{@ref BLE_GAP_EVT_TIMEOUT, Scanner has timed out.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_SCAN_MSC} - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @endmscs - * - * @param[in] p_scan_params Pointer to scan parameters structure. When this function is used to continue - * scanning, this parameter must be NULL. - * @param[in] p_adv_report_buffer Pointer to buffer used to store incoming advertising data. - * The memory pointed to should be kept alive until the scanning is stopped. - * See @ref BLE_GAP_SCAN_BUFFER_SIZE for minimum and maximum buffer size. - * If the scanner receives advertising data larger than can be stored in the buffer, - * a @ref BLE_GAP_EVT_ADV_REPORT will be raised with @ref ble_gap_adv_report_type_t::status - * set to @ref BLE_GAP_ADV_DATA_STATUS_INCOMPLETE_TRUNCATED. - * - * @retval ::NRF_SUCCESS Successfully initiated scanning procedure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation. Either: - * - Scanning is already ongoing and p_scan_params was not NULL - * - Scanning is not running and p_scan_params was NULL. - * - The scanner has timed out when this function is called to continue scanning. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. See @ref ble_gap_scan_params_t. - * @retval ::NRF_ERROR_NOT_SUPPORTED Unsupported parameters supplied. See @ref ble_gap_scan_params_t. - * @retval ::NRF_ERROR_INVALID_LENGTH The provided buffer length is invalid. See @ref BLE_GAP_SCAN_BUFFER_MIN. - * @retval ::NRF_ERROR_RESOURCES Not enough BLE role slots available. - * Stop one or more currently active roles (Central, Peripheral or Broadcaster) and try again - */ -SVCALL(SD_BLE_GAP_SCAN_START, uint32_t, sd_ble_gap_scan_start(ble_gap_scan_params_t const *p_scan_params, ble_data_t const * p_adv_report_buffer)); - - -/**@brief Stop scanning (GAP Discovery procedure, Observer Procedure). - * - * @note The buffer provided in @ref sd_ble_gap_scan_start is released. - * - * @mscs - * @mmsc{@ref BLE_GAP_SCAN_MSC} - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Successfully stopped scanning procedure. - * @retval ::NRF_ERROR_INVALID_STATE Not in the scanning state. - */ -SVCALL(SD_BLE_GAP_SCAN_STOP, uint32_t, sd_ble_gap_scan_stop(void)); - - -/**@brief Create a connection (GAP Link Establishment). - * - * @note If a scanning procedure is currently in progress it will be automatically stopped when calling this function. - * The scanning procedure will be stopped even if the function returns an error. - * - * @events - * @event{@ref BLE_GAP_EVT_CONNECTED, A connection was established.} - * @event{@ref BLE_GAP_EVT_TIMEOUT, Failed to establish a connection.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_WL_SHARE_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_CONN_PRIV_MSC} - * @mmsc{@ref BLE_GAP_CENTRAL_CONN_MSC} - * @endmscs - * - * @param[in] p_peer_addr Pointer to peer identity address. If @ref ble_gap_scan_params_t::filter_policy is set to use - * whitelist, then p_peer_addr is ignored. - * @param[in] p_scan_params Pointer to scan parameters structure. - * @param[in] p_conn_params Pointer to desired connection parameters. - * @param[in] conn_cfg_tag Tag identifying a configuration set by @ref sd_ble_cfg_set or - * @ref BLE_CONN_CFG_TAG_DEFAULT to use the default connection configuration. - * - * @retval ::NRF_SUCCESS Successfully initiated connection procedure. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid parameter(s) pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * - Invalid parameter(s) in p_scan_params or p_conn_params. - * - Use of whitelist requested but whitelist has not been set, see @ref sd_ble_gap_whitelist_set. - * - Peer address was not present in the device identity list, see @ref sd_ble_gap_device_identities_set. - * @retval ::NRF_ERROR_NOT_FOUND conn_cfg_tag not found. - * @retval ::NRF_ERROR_INVALID_STATE The SoftDevice is in an invalid state to perform this operation. This may be due to an - * existing locally initiated connect procedure, which must complete before initiating again. - * @retval ::BLE_ERROR_GAP_INVALID_BLE_ADDR Invalid Peer address. - * @retval ::NRF_ERROR_CONN_COUNT The limit of available connections has been reached. - * @retval ::NRF_ERROR_RESOURCES Either: - * - Not enough BLE role slots available. - * Stop one or more currently active roles (Central, Peripheral or Observer) and try again. - * - The event_length parameter associated with conn_cfg_tag is too small to be able to - * establish a connection on the selected @ref ble_gap_scan_params_t::scan_phys. - * Use @ref sd_ble_cfg_set to increase the event length. - */ -SVCALL(SD_BLE_GAP_CONNECT, uint32_t, sd_ble_gap_connect(ble_gap_addr_t const *p_peer_addr, ble_gap_scan_params_t const *p_scan_params, ble_gap_conn_params_t const *p_conn_params, uint8_t conn_cfg_tag)); - - -/**@brief Cancel a connection establishment. - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_CONN_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Successfully canceled an ongoing connection procedure. - * @retval ::NRF_ERROR_INVALID_STATE No locally initiated connect procedure started or connection - * completed occurred. - */ -SVCALL(SD_BLE_GAP_CONNECT_CANCEL, uint32_t, sd_ble_gap_connect_cancel(void)); - - -/**@brief Initiate or respond to a PHY Update Procedure - * - * @details This function is used to initiate or respond to a PHY Update Procedure. It will always - * generate a @ref BLE_GAP_EVT_PHY_UPDATE event if successfully executed. - * If this function is used to initiate a PHY Update procedure and the only option - * provided in @ref ble_gap_phys_t::tx_phys and @ref ble_gap_phys_t::rx_phys is the - * currently active PHYs in the respective directions, the SoftDevice will generate a - * @ref BLE_GAP_EVT_PHY_UPDATE with the current PHYs set and will not initiate the - * procedure in the Link Layer. - * - * If @ref ble_gap_phys_t::tx_phys or @ref ble_gap_phys_t::rx_phys is @ref BLE_GAP_PHY_AUTO, - * then the stack will select PHYs based on the peer's PHY preferences and the local link - * configuration. The PHY Update procedure will for this case result in a PHY combination - * that respects the time constraints configured with @ref sd_ble_cfg_set and the current - * link layer data length. - * - * When acting as a central, the SoftDevice will select the fastest common PHY in each direction. - * - * If the peer does not support the PHY Update Procedure, then the resulting - * @ref BLE_GAP_EVT_PHY_UPDATE event will have a status set to - * @ref BLE_HCI_UNSUPPORTED_REMOTE_FEATURE. - * - * If the PHY procedure was rejected by the peer due to a procedure collision, the status - * will be @ref BLE_HCI_STATUS_CODE_LMP_ERROR_TRANSACTION_COLLISION or - * @ref BLE_HCI_DIFFERENT_TRANSACTION_COLLISION. - * If the peer responds to the PHY Update procedure with invalid parameters, the status - * will be @ref BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS. - * If the PHY procedure was rejected by the peer for a different reason, the status will - * contain the reason as specified by the peer. - * - * @events - * @event{@ref BLE_GAP_EVT_PHY_UPDATE, Result of the PHY Update Procedure.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GAP_CENTRAL_PHY_UPDATE} - * @mmsc{@ref BLE_GAP_PERIPHERAL_PHY_UPDATE} - * @endmscs - * - * @param[in] conn_handle Connection handle to indicate the connection for which the PHY Update is requested. - * @param[in] p_gap_phys Pointer to PHY structure. - * - * @retval ::NRF_SUCCESS Successfully requested a PHY Update. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_STATE No link has been established. - * @retval ::NRF_ERROR_RESOURCES The connection event length configured for this link is not sufficient for the combination of - * @ref ble_gap_phys_t::tx_phys, @ref ble_gap_phys_t::rx_phys, and @ref ble_gap_data_length_params_t. - * The connection event length is configured with @ref BLE_CONN_CFG_GAP using @ref sd_ble_cfg_set. - * @retval ::NRF_ERROR_BUSY Procedure is already in progress or not allowed at this time. Process pending events and wait for the pending procedure to complete and retry. - * - */ -SVCALL(SD_BLE_GAP_PHY_UPDATE, uint32_t, sd_ble_gap_phy_update(uint16_t conn_handle, ble_gap_phys_t const *p_gap_phys)); - - -/**@brief Initiate or respond to a Data Length Update Procedure. - * - * @note If the application uses @ref BLE_GAP_DATA_LENGTH_AUTO for one or more members of - * p_dl_params, the SoftDevice will choose the highest value supported in current - * configuration and connection parameters. - * - * @param[in] conn_handle Connection handle. - * @param[in] p_dl_params Pointer to local parameters to be used in Data Length Update - * Procedure. Set any member to @ref BLE_GAP_DATA_LENGTH_AUTO to let - * the SoftDevice automatically decide the value for that member. - * Set to NULL to use automatic values for all members. - * @param[out] p_dl_limitation Pointer to limitation to be written when local device does not - * have enough resources or does not support the requested Data Length - * Update parameters. Ignored if NULL. - * - * @mscs - * @mmsc{@ref BLE_GAP_DATA_LENGTH_UPDATE_PROCEDURE_MSC} - * @endmscs - * - * @retval ::NRF_SUCCESS Successfully set Data Length Extension initiation/response parameters. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle parameter supplied. - * @retval ::NRF_ERROR_INVALID_STATE No link has been established. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameters supplied. - * @retval ::NRF_ERROR_NOT_SUPPORTED The requested parameters are not supported by the SoftDevice. Inspect - * p_dl_limitation to see which parameter is not supported. - * @retval ::NRF_ERROR_RESOURCES The connection event length configured for this link is not sufficient for the requested parameters. - * Use @ref sd_ble_cfg_set with @ref BLE_CONN_CFG_GAP to increase the connection event length. - * Inspect p_dl_limitation to see where the limitation is. - * @retval ::NRF_ERROR_BUSY Peer has already initiated a Data Length Update Procedure. Process the - * pending @ref BLE_GAP_EVT_DATA_LENGTH_UPDATE_REQUEST event to respond. - */ -SVCALL(SD_BLE_GAP_DATA_LENGTH_UPDATE, uint32_t, sd_ble_gap_data_length_update(uint16_t conn_handle, ble_gap_data_length_params_t const *p_dl_params, ble_gap_data_length_limitation_t *p_dl_limitation)); - -/**@brief Start the Quality of Service (QoS) channel survey module. - * - * @details The channel survey module provides measurements of the energy levels on - * the Bluetooth Low Energy channels. When the module is enabled, @ref BLE_GAP_EVT_QOS_CHANNEL_SURVEY_REPORT - * events will periodically report the measured energy levels for each channel. - * - * @note The measurements are scheduled with lower priority than other Bluetooth Low Energy roles, - * Radio Timeslot API events and Flash API events. - * - * @note The channel survey module will attempt to do measurements so that the average interval - * between measurements will be interval_us. However due to the channel survey module - * having the lowest priority of all roles and modules, this may not be possible. In that - * case fewer than expected channel survey reports may be given. - * - * @note In order to use the channel survey module, @ref ble_gap_cfg_role_count_t::qos_channel_survey_role_available - * must be set. This is done using @ref sd_ble_cfg_set. - * - * @param[in] interval_us Requested average interval for the measurements and reports. See - * @ref BLE_GAP_QOS_CHANNEL_SURVEY_INTERVALS for valid ranges. If set - * to @ref BLE_GAP_QOS_CHANNEL_SURVEY_INTERVAL_CONTINUOUS, the channel - * survey role will be scheduled at every available opportunity. - * - * @retval ::NRF_SUCCESS The module is successfully started. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter supplied. interval_us is out of the - * allowed range. - * @retval ::NRF_ERROR_INVALID_STATE Trying to start the module when already running. - * @retval ::NRF_ERROR_RESOURCES The channel survey module is not available to the application. - * Set @ref ble_gap_cfg_role_count_t::qos_channel_survey_role_available using - * @ref sd_ble_cfg_set. - */ -SVCALL(SD_BLE_GAP_QOS_CHANNEL_SURVEY_START, uint32_t, sd_ble_gap_qos_channel_survey_start(uint32_t interval_us)); - -/**@brief Stop the Quality of Service (QoS) channel survey module. - * - * @retval ::NRF_SUCCESS The module is successfully stopped. - * @retval ::NRF_ERROR_INVALID_STATE Trying to stop the module when it is not running. - */ -SVCALL(SD_BLE_GAP_QOS_CHANNEL_SURVEY_STOP, uint32_t, sd_ble_gap_qos_channel_survey_stop(void)); - - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_GAP_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gatt.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gatt.h deleted file mode 100644 index 9cb577c..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gatt.h +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright (c) 2013 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_GATT Generic Attribute Profile (GATT) Common - @{ - @brief Common definitions and prototypes for the GATT interfaces. - */ - -#ifndef BLE_GATT_H__ -#define BLE_GATT_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_hci.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_GATT_DEFINES Defines - * @{ */ - -/** @brief Default ATT MTU, in bytes. */ -#define BLE_GATT_ATT_MTU_DEFAULT 23 - -/**@brief Invalid Attribute Handle. */ -#define BLE_GATT_HANDLE_INVALID 0x0000 - -/**@brief First Attribute Handle. */ -#define BLE_GATT_HANDLE_START 0x0001 - -/**@brief Last Attribute Handle. */ -#define BLE_GATT_HANDLE_END 0xFFFF - -/** @defgroup BLE_GATT_TIMEOUT_SOURCES GATT Timeout sources - * @{ */ -#define BLE_GATT_TIMEOUT_SRC_PROTOCOL 0x00 /**< ATT Protocol timeout. */ -/** @} */ - -/** @defgroup BLE_GATT_WRITE_OPS GATT Write operations - * @{ */ -#define BLE_GATT_OP_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATT_OP_WRITE_REQ 0x01 /**< Write Request. */ -#define BLE_GATT_OP_WRITE_CMD 0x02 /**< Write Command. */ -#define BLE_GATT_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ -#define BLE_GATT_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ -#define BLE_GATT_OP_EXEC_WRITE_REQ 0x05 /**< Execute Write Request. */ -/** @} */ - -/** @defgroup BLE_GATT_EXEC_WRITE_FLAGS GATT Execute Write flags - * @{ */ -#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_CANCEL 0x00 /**< Cancel prepared write. */ -#define BLE_GATT_EXEC_WRITE_FLAG_PREPARED_WRITE 0x01 /**< Execute prepared write. */ -/** @} */ - -/** @defgroup BLE_GATT_HVX_TYPES GATT Handle Value operations - * @{ */ -#define BLE_GATT_HVX_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATT_HVX_NOTIFICATION 0x01 /**< Handle Value Notification. */ -#define BLE_GATT_HVX_INDICATION 0x02 /**< Handle Value Indication. */ -/** @} */ - -/** @defgroup BLE_GATT_STATUS_CODES GATT Status Codes - * @{ */ -#define BLE_GATT_STATUS_SUCCESS 0x0000 /**< Success. */ -#define BLE_GATT_STATUS_UNKNOWN 0x0001 /**< Unknown or not applicable status. */ -#define BLE_GATT_STATUS_ATTERR_INVALID 0x0100 /**< ATT Error: Invalid Error Code. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_HANDLE 0x0101 /**< ATT Error: Invalid Attribute Handle. */ -#define BLE_GATT_STATUS_ATTERR_READ_NOT_PERMITTED 0x0102 /**< ATT Error: Read not permitted. */ -#define BLE_GATT_STATUS_ATTERR_WRITE_NOT_PERMITTED 0x0103 /**< ATT Error: Write not permitted. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_PDU 0x0104 /**< ATT Error: Used in ATT as Invalid PDU. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHENTICATION 0x0105 /**< ATT Error: Authenticated link required. */ -#define BLE_GATT_STATUS_ATTERR_REQUEST_NOT_SUPPORTED 0x0106 /**< ATT Error: Used in ATT as Request Not Supported. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_OFFSET 0x0107 /**< ATT Error: Offset specified was past the end of the attribute. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_AUTHORIZATION 0x0108 /**< ATT Error: Used in ATT as Insufficient Authorization. */ -#define BLE_GATT_STATUS_ATTERR_PREPARE_QUEUE_FULL 0x0109 /**< ATT Error: Used in ATT as Prepare Queue Full. */ -#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_FOUND 0x010A /**< ATT Error: Used in ATT as Attribute not found. */ -#define BLE_GATT_STATUS_ATTERR_ATTRIBUTE_NOT_LONG 0x010B /**< ATT Error: Attribute cannot be read or written using read/write blob requests. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_ENC_KEY_SIZE 0x010C /**< ATT Error: Encryption key size used is insufficient. */ -#define BLE_GATT_STATUS_ATTERR_INVALID_ATT_VAL_LENGTH 0x010D /**< ATT Error: Invalid value size. */ -#define BLE_GATT_STATUS_ATTERR_UNLIKELY_ERROR 0x010E /**< ATT Error: Very unlikely error. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_ENCRYPTION 0x010F /**< ATT Error: Encrypted link required. */ -#define BLE_GATT_STATUS_ATTERR_UNSUPPORTED_GROUP_TYPE 0x0110 /**< ATT Error: Attribute type is not a supported grouping attribute. */ -#define BLE_GATT_STATUS_ATTERR_INSUF_RESOURCES 0x0111 /**< ATT Error: Encrypted link required. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_BEGIN 0x0112 /**< ATT Error: Reserved for Future Use range #1 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE1_END 0x017F /**< ATT Error: Reserved for Future Use range #1 end. */ -#define BLE_GATT_STATUS_ATTERR_APP_BEGIN 0x0180 /**< ATT Error: Application range begin. */ -#define BLE_GATT_STATUS_ATTERR_APP_END 0x019F /**< ATT Error: Application range end. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_BEGIN 0x01A0 /**< ATT Error: Reserved for Future Use range #2 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE2_END 0x01DF /**< ATT Error: Reserved for Future Use range #2 end. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_BEGIN 0x01E0 /**< ATT Error: Reserved for Future Use range #3 begin. */ -#define BLE_GATT_STATUS_ATTERR_RFU_RANGE3_END 0x01FC /**< ATT Error: Reserved for Future Use range #3 end. */ -#define BLE_GATT_STATUS_ATTERR_CPS_WRITE_REQ_REJECTED 0x01FC /**< ATT Common Profile and Service Error: Write request rejected. */ -#define BLE_GATT_STATUS_ATTERR_CPS_CCCD_CONFIG_ERROR 0x01FD /**< ATT Common Profile and Service Error: Client Characteristic Configuration Descriptor improperly configured. */ -#define BLE_GATT_STATUS_ATTERR_CPS_PROC_ALR_IN_PROG 0x01FE /**< ATT Common Profile and Service Error: Procedure Already in Progress. */ -#define BLE_GATT_STATUS_ATTERR_CPS_OUT_OF_RANGE 0x01FF /**< ATT Common Profile and Service Error: Out Of Range. */ -/** @} */ - - -/** @defgroup BLE_GATT_CPF_FORMATS Characteristic Presentation Formats - * @note Found at http://developer.bluetooth.org/gatt/descriptors/Pages/DescriptorViewer.aspx?u=org.bluetooth.descriptor.gatt.characteristic_presentation_format.xml - * @{ */ -#define BLE_GATT_CPF_FORMAT_RFU 0x00 /**< Reserved For Future Use. */ -#define BLE_GATT_CPF_FORMAT_BOOLEAN 0x01 /**< Boolean. */ -#define BLE_GATT_CPF_FORMAT_2BIT 0x02 /**< Unsigned 2-bit integer. */ -#define BLE_GATT_CPF_FORMAT_NIBBLE 0x03 /**< Unsigned 4-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT8 0x04 /**< Unsigned 8-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT12 0x05 /**< Unsigned 12-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT16 0x06 /**< Unsigned 16-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT24 0x07 /**< Unsigned 24-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT32 0x08 /**< Unsigned 32-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT48 0x09 /**< Unsigned 48-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT64 0x0A /**< Unsigned 64-bit integer. */ -#define BLE_GATT_CPF_FORMAT_UINT128 0x0B /**< Unsigned 128-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT8 0x0C /**< Signed 2-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT12 0x0D /**< Signed 12-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT16 0x0E /**< Signed 16-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT24 0x0F /**< Signed 24-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT32 0x10 /**< Signed 32-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT48 0x11 /**< Signed 48-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT64 0x12 /**< Signed 64-bit integer. */ -#define BLE_GATT_CPF_FORMAT_SINT128 0x13 /**< Signed 128-bit integer. */ -#define BLE_GATT_CPF_FORMAT_FLOAT32 0x14 /**< IEEE-754 32-bit floating point. */ -#define BLE_GATT_CPF_FORMAT_FLOAT64 0x15 /**< IEEE-754 64-bit floating point. */ -#define BLE_GATT_CPF_FORMAT_SFLOAT 0x16 /**< IEEE-11073 16-bit SFLOAT. */ -#define BLE_GATT_CPF_FORMAT_FLOAT 0x17 /**< IEEE-11073 32-bit FLOAT. */ -#define BLE_GATT_CPF_FORMAT_DUINT16 0x18 /**< IEEE-20601 format. */ -#define BLE_GATT_CPF_FORMAT_UTF8S 0x19 /**< UTF-8 string. */ -#define BLE_GATT_CPF_FORMAT_UTF16S 0x1A /**< UTF-16 string. */ -#define BLE_GATT_CPF_FORMAT_STRUCT 0x1B /**< Opaque Structure. */ -/** @} */ - -/** @defgroup BLE_GATT_CPF_NAMESPACES GATT Bluetooth Namespaces - * @{ - */ -#define BLE_GATT_CPF_NAMESPACE_BTSIG 0x01 /**< Bluetooth SIG defined Namespace. */ -#define BLE_GATT_CPF_NAMESPACE_DESCRIPTION_UNKNOWN 0x0000 /**< Namespace Description Unknown. */ -/** @} */ - -/** @} */ - -/** @addtogroup BLE_GATT_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE GATT connection configuration parameters, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_INVALID_PARAM att_mtu is smaller than @ref BLE_GATT_ATT_MTU_DEFAULT. - */ -typedef struct -{ - uint16_t att_mtu; /**< Maximum size of ATT packet the SoftDevice can send or receive. - The default and minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. - @mscs - @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} - @mmsc{@ref BLE_GATTS_MTU_EXCHANGE} - @endmscs - */ -} ble_gatt_conn_cfg_t; - -/**@brief GATT Characteristic Properties. */ -typedef struct -{ - /* Standard properties */ - uint8_t broadcast :1; /**< Broadcasting of the value permitted. */ - uint8_t read :1; /**< Reading the value permitted. */ - uint8_t write_wo_resp :1; /**< Writing the value with Write Command permitted. */ - uint8_t write :1; /**< Writing the value with Write Request permitted. */ - uint8_t notify :1; /**< Notification of the value permitted. */ - uint8_t indicate :1; /**< Indications of the value permitted. */ - uint8_t auth_signed_wr :1; /**< Writing the value with Signed Write Command permitted. */ -} ble_gatt_char_props_t; - -/**@brief GATT Characteristic Extended Properties. */ -typedef struct -{ - /* Extended properties */ - uint8_t reliable_wr :1; /**< Writing the value with Queued Write operations permitted. */ - uint8_t wr_aux :1; /**< Writing the Characteristic User Description descriptor permitted. */ -} ble_gatt_char_ext_props_t; - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_GATT_H__ - -/** @} */ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gattc.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gattc.h deleted file mode 100644 index 7fb3920..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gattc.h +++ /dev/null @@ -1,715 +0,0 @@ -/* - * Copyright (c) 2011 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_GATTC Generic Attribute Profile (GATT) Client - @{ - @brief Definitions and prototypes for the GATT Client interface. - */ - -#ifndef BLE_GATTC_H__ -#define BLE_GATTC_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" -#include "ble_gatt.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_GATTC_ENUMERATIONS Enumerations - * @{ */ - -/**@brief GATTC API SVC numbers. */ -enum BLE_GATTC_SVCS -{ - SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER = BLE_GATTC_SVC_BASE, /**< Primary Service Discovery. */ - SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, /**< Relationship Discovery. */ - SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, /**< Characteristic Discovery. */ - SD_BLE_GATTC_DESCRIPTORS_DISCOVER, /**< Characteristic Descriptor Discovery. */ - SD_BLE_GATTC_ATTR_INFO_DISCOVER, /**< Attribute Information Discovery. */ - SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, /**< Read Characteristic Value by UUID. */ - SD_BLE_GATTC_READ, /**< Generic read. */ - SD_BLE_GATTC_CHAR_VALUES_READ, /**< Read multiple Characteristic Values. */ - SD_BLE_GATTC_WRITE, /**< Generic write. */ - SD_BLE_GATTC_HV_CONFIRM, /**< Handle Value Confirmation. */ - SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. */ -}; - -/** - * @brief GATT Client Event IDs. - */ -enum BLE_GATTC_EVTS -{ - BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP = BLE_GATTC_EVT_BASE, /**< Primary Service Discovery Response event. \n See @ref ble_gattc_evt_prim_srvc_disc_rsp_t. */ - BLE_GATTC_EVT_REL_DISC_RSP, /**< Relationship Discovery Response event. \n See @ref ble_gattc_evt_rel_disc_rsp_t. */ - BLE_GATTC_EVT_CHAR_DISC_RSP, /**< Characteristic Discovery Response event. \n See @ref ble_gattc_evt_char_disc_rsp_t. */ - BLE_GATTC_EVT_DESC_DISC_RSP, /**< Descriptor Discovery Response event. \n See @ref ble_gattc_evt_desc_disc_rsp_t. */ - BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, /**< Attribute Information Response event. \n See @ref ble_gattc_evt_attr_info_disc_rsp_t. */ - BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP, /**< Read By UUID Response event. \n See @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t. */ - BLE_GATTC_EVT_READ_RSP, /**< Read Response event. \n See @ref ble_gattc_evt_read_rsp_t. */ - BLE_GATTC_EVT_CHAR_VALS_READ_RSP, /**< Read multiple Response event. \n See @ref ble_gattc_evt_char_vals_read_rsp_t. */ - BLE_GATTC_EVT_WRITE_RSP, /**< Write Response event. \n See @ref ble_gattc_evt_write_rsp_t. */ - BLE_GATTC_EVT_HVX, /**< Handle Value Notification or Indication event. \n Confirm indication with @ref sd_ble_gattc_hv_confirm. \n See @ref ble_gattc_evt_hvx_t. */ - BLE_GATTC_EVT_EXCHANGE_MTU_RSP, /**< Exchange MTU Response event. \n See @ref ble_gattc_evt_exchange_mtu_rsp_t. */ - BLE_GATTC_EVT_TIMEOUT, /**< Timeout event. \n See @ref ble_gattc_evt_timeout_t. */ - BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE /**< Write without Response transmission complete. \n See @ref ble_gattc_evt_write_cmd_tx_complete_t. */ -}; - -/** @} */ - -/** @addtogroup BLE_GATTC_DEFINES Defines - * @{ */ - -/** @defgroup BLE_ERRORS_GATTC SVC return values specific to GATTC - * @{ */ -#define BLE_ERROR_GATTC_PROC_NOT_PERMITTED (NRF_GATTC_ERR_BASE + 0x000) /**< Procedure not Permitted. */ -/** @} */ - -/** @defgroup BLE_GATTC_ATTR_INFO_FORMAT Attribute Information Formats - * @{ */ -#define BLE_GATTC_ATTR_INFO_FORMAT_16BIT 1 /**< 16-bit Attribute Information Format. */ -#define BLE_GATTC_ATTR_INFO_FORMAT_128BIT 2 /**< 128-bit Attribute Information Format. */ -/** @} */ - -/** @defgroup BLE_GATTC_DEFAULTS GATT Client defaults - * @{ */ -#define BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT 1 /**< Default number of Write without Response that can be queued for transmission. */ -/** @} */ - -/** @} */ - -/** @addtogroup BLE_GATTC_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE GATTC connection configuration parameters, set with @ref sd_ble_cfg_set. - */ -typedef struct -{ - uint8_t write_cmd_tx_queue_size; /**< The guaranteed minimum number of Write without Response that can be queued for transmission. - The default value is @ref BLE_GATTC_WRITE_CMD_TX_QUEUE_SIZE_DEFAULT */ -} ble_gattc_conn_cfg_t; - -/**@brief Operation Handle Range. */ -typedef struct -{ - uint16_t start_handle; /**< Start Handle. */ - uint16_t end_handle; /**< End Handle. */ -} ble_gattc_handle_range_t; - - -/**@brief GATT service. */ -typedef struct -{ - ble_uuid_t uuid; /**< Service UUID. */ - ble_gattc_handle_range_t handle_range; /**< Service Handle Range. */ -} ble_gattc_service_t; - - -/**@brief GATT include. */ -typedef struct -{ - uint16_t handle; /**< Include Handle. */ - ble_gattc_service_t included_srvc; /**< Handle of the included service. */ -} ble_gattc_include_t; - - -/**@brief GATT characteristic. */ -typedef struct -{ - ble_uuid_t uuid; /**< Characteristic UUID. */ - ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ - uint8_t char_ext_props : 1; /**< Extended properties present. */ - uint16_t handle_decl; /**< Handle of the Characteristic Declaration. */ - uint16_t handle_value; /**< Handle of the Characteristic Value. */ -} ble_gattc_char_t; - - -/**@brief GATT descriptor. */ -typedef struct -{ - uint16_t handle; /**< Descriptor Handle. */ - ble_uuid_t uuid; /**< Descriptor UUID. */ -} ble_gattc_desc_t; - - -/**@brief Write Parameters. */ -typedef struct -{ - uint8_t write_op; /**< Write Operation to be performed, see @ref BLE_GATT_WRITE_OPS. */ - uint8_t flags; /**< Flags, see @ref BLE_GATT_EXEC_WRITE_FLAGS. */ - uint16_t handle; /**< Handle to the attribute to be written. */ - uint16_t offset; /**< Offset in bytes. @note For WRITE_CMD and WRITE_REQ, offset must be 0. */ - uint16_t len; /**< Length of data in bytes. */ - uint8_t const *p_value; /**< Pointer to the value data. */ -} ble_gattc_write_params_t; - -/**@brief Attribute Information for 16-bit Attribute UUID. */ -typedef struct -{ - uint16_t handle; /**< Attribute handle. */ - ble_uuid_t uuid; /**< 16-bit Attribute UUID. */ -} ble_gattc_attr_info16_t; - -/**@brief Attribute Information for 128-bit Attribute UUID. */ -typedef struct -{ - uint16_t handle; /**< Attribute handle. */ - ble_uuid128_t uuid; /**< 128-bit Attribute UUID. */ -} ble_gattc_attr_info128_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Service count. */ - ble_gattc_service_t services[1]; /**< Service data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_prim_srvc_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_REL_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Include count. */ - ble_gattc_include_t includes[1]; /**< Include data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_rel_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Characteristic count. */ - ble_gattc_char_t chars[1]; /**< Characteristic data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_char_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_DESC_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Descriptor count. */ - ble_gattc_desc_t descs[1]; /**< Descriptor data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_desc_disc_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP. */ -typedef struct -{ - uint16_t count; /**< Attribute count. */ - uint8_t format; /**< Attribute information format, see @ref BLE_GATTC_ATTR_INFO_FORMAT. */ - union { - ble_gattc_attr_info16_t attr_info16[1]; /**< Attribute information for 16-bit Attribute UUID. - @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ - ble_gattc_attr_info128_t attr_info128[1]; /**< Attribute information for 128-bit Attribute UUID. - @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ - } info; /**< Attribute information union. */ -} ble_gattc_evt_attr_info_disc_rsp_t; - -/**@brief GATT read by UUID handle value pair. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint8_t *p_value; /**< Pointer to the Attribute Value, length is available in @ref ble_gattc_evt_char_val_by_uuid_read_rsp_t::value_len. */ -} ble_gattc_handle_value_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP. */ -typedef struct -{ - uint16_t count; /**< Handle-Value Pair Count. */ - uint16_t value_len; /**< Length of the value in Handle-Value(s) list. */ - uint8_t handle_value[1]; /**< Handle-Value(s) list. To iterate through the list use @ref sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter. - @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_char_val_by_uuid_read_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_READ_RSP. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint16_t offset; /**< Offset of the attribute data. */ - uint16_t len; /**< Attribute data length. */ - uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_read_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP. */ -typedef struct -{ - uint16_t len; /**< Concatenated Attribute values length. */ - uint8_t values[1]; /**< Attribute values. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_char_vals_read_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_WRITE_RSP. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - uint8_t write_op; /**< Type of write operation, see @ref BLE_GATT_WRITE_OPS. */ - uint16_t offset; /**< Data offset. */ - uint16_t len; /**< Data length. */ - uint8_t data[1]; /**< Data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_write_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_HVX. */ -typedef struct -{ - uint16_t handle; /**< Handle to which the HVx operation applies. */ - uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ - uint16_t len; /**< Attribute data length. */ - uint8_t data[1]; /**< Attribute data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gattc_evt_hvx_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. */ -typedef struct -{ - uint16_t server_rx_mtu; /**< Server RX MTU size. */ -} ble_gattc_evt_exchange_mtu_rsp_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ -} ble_gattc_evt_timeout_t; - -/**@brief Event structure for @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE. */ -typedef struct -{ - uint8_t count; /**< Number of write without response transmissions completed. */ -} ble_gattc_evt_write_cmd_tx_complete_t; - -/**@brief GATTC event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which event occurred. */ - uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ - uint16_t error_handle; /**< In case of error: The handle causing the error. In all other cases @ref BLE_GATT_HANDLE_INVALID. */ - union - { - ble_gattc_evt_prim_srvc_disc_rsp_t prim_srvc_disc_rsp; /**< Primary Service Discovery Response Event Parameters. */ - ble_gattc_evt_rel_disc_rsp_t rel_disc_rsp; /**< Relationship Discovery Response Event Parameters. */ - ble_gattc_evt_char_disc_rsp_t char_disc_rsp; /**< Characteristic Discovery Response Event Parameters. */ - ble_gattc_evt_desc_disc_rsp_t desc_disc_rsp; /**< Descriptor Discovery Response Event Parameters. */ - ble_gattc_evt_char_val_by_uuid_read_rsp_t char_val_by_uuid_read_rsp; /**< Characteristic Value Read by UUID Response Event Parameters. */ - ble_gattc_evt_read_rsp_t read_rsp; /**< Read Response Event Parameters. */ - ble_gattc_evt_char_vals_read_rsp_t char_vals_read_rsp; /**< Characteristic Values Read Response Event Parameters. */ - ble_gattc_evt_write_rsp_t write_rsp; /**< Write Response Event Parameters. */ - ble_gattc_evt_hvx_t hvx; /**< Handle Value Notification/Indication Event Parameters. */ - ble_gattc_evt_exchange_mtu_rsp_t exchange_mtu_rsp; /**< Exchange MTU Response Event Parameters. */ - ble_gattc_evt_timeout_t timeout; /**< Timeout Event Parameters. */ - ble_gattc_evt_attr_info_disc_rsp_t attr_info_disc_rsp; /**< Attribute Information Discovery Event Parameters. */ - ble_gattc_evt_write_cmd_tx_complete_t write_cmd_tx_complete; /**< Write without Response transmission complete Event Parameters. */ - } params; /**< Event Parameters. @note Only valid if @ref gatt_status == @ref BLE_GATT_STATUS_SUCCESS. */ -} ble_gattc_evt_t; -/** @} */ - -/** @addtogroup BLE_GATTC_FUNCTIONS Functions - * @{ */ - -/**@brief Initiate or continue a GATT Primary Service Discovery procedure. - * - * @details This function initiates or resumes a Primary Service discovery procedure, starting from the supplied handle. - * If the last service has not been reached, this function must be called again with an updated start handle value to continue the search. - * - * @note If any of the discovered services have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with - * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. - * - * @events - * @event{@ref BLE_GATTC_EVT_PRIM_SRVC_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_PRIM_SRVC_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] start_handle Handle to start searching from. - * @param[in] p_srvc_uuid Pointer to the service UUID to be found. If it is NULL, all primary services will be returned. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Primary Service Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_PRIMARY_SERVICES_DISCOVER, uint32_t, sd_ble_gattc_primary_services_discover(uint16_t conn_handle, uint16_t start_handle, ble_uuid_t const *p_srvc_uuid)); - - -/**@brief Initiate or continue a GATT Relationship Discovery procedure. - * - * @details This function initiates or resumes the Find Included Services sub-procedure. If the last included service has not been reached, - * this must be called again with an updated handle range to continue the search. - * - * @events - * @event{@ref BLE_GATTC_EVT_REL_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_REL_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Relationship Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_RELATIONSHIPS_DISCOVER, uint32_t, sd_ble_gattc_relationships_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Characteristic Discovery procedure. - * - * @details This function initiates or resumes a Characteristic discovery procedure. If the last Characteristic has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @note If any of the discovered characteristics have 128-bit UUIDs which are not present in the table provided to ble_vs_uuids_assign, a UUID structure with - * type @ref BLE_UUID_TYPE_UNKNOWN will be received in the corresponding event. - * - * @events - * @event{@ref BLE_GATTC_EVT_CHAR_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_CHAR_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Service to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Characteristic Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_CHARACTERISTICS_DISCOVER, uint32_t, sd_ble_gattc_characteristics_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Characteristic Descriptor Discovery procedure. - * - * @details This function initiates or resumes a Characteristic Descriptor discovery procedure. If the last Descriptor has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @events - * @event{@ref BLE_GATTC_EVT_DESC_DISC_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_DESC_DISC_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range A pointer to the range of handles of the Characteristic to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Descriptor Discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_DESCRIPTORS_DISCOVER, uint32_t, sd_ble_gattc_descriptors_discover(uint16_t conn_handle, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Read using Characteristic UUID procedure. - * - * @details This function initiates or resumes a Read using Characteristic UUID procedure. If the last Characteristic has not been reached, - * this must be called again with an updated handle range to continue the discovery. - * - * @events - * @event{@ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_READ_UUID_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_uuid Pointer to a Characteristic value UUID to read. - * @param[in] p_handle_range A pointer to the range of handles to perform this procedure on. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Read using Characteristic UUID procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_CHAR_VALUE_BY_UUID_READ, uint32_t, sd_ble_gattc_char_value_by_uuid_read(uint16_t conn_handle, ble_uuid_t const *p_uuid, ble_gattc_handle_range_t const *p_handle_range)); - - -/**@brief Initiate or continue a GATT Read (Long) Characteristic or Descriptor procedure. - * - * @details This function initiates or resumes a GATT Read (Long) Characteristic or Descriptor procedure. If the Characteristic or Descriptor - * to be read is longer than ATT_MTU - 1, this function must be called multiple times with appropriate offset to read the - * complete value. - * - * @events - * @event{@ref BLE_GATTC_EVT_READ_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_VALUE_READ_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] handle The handle of the attribute to be read. - * @param[in] offset Offset into the attribute value to be read. - * - * @retval ::NRF_SUCCESS Successfully started or resumed the Read (Long) procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_READ, uint32_t, sd_ble_gattc_read(uint16_t conn_handle, uint16_t handle, uint16_t offset)); - - -/**@brief Initiate a GATT Read Multiple Characteristic Values procedure. - * - * @details This function initiates a GATT Read Multiple Characteristic Values procedure. - * - * @events - * @event{@ref BLE_GATTC_EVT_CHAR_VALS_READ_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_READ_MULT_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handles A pointer to the handle(s) of the attribute(s) to be read. - * @param[in] handle_count The number of handles in p_handles. - * - * @retval ::NRF_SUCCESS Successfully started the Read Multiple Characteristic Values procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_CHAR_VALUES_READ, uint32_t, sd_ble_gattc_char_values_read(uint16_t conn_handle, uint16_t const *p_handles, uint16_t handle_count)); - - -/**@brief Perform a Write (Characteristic Value or Descriptor, with or without response, signed or not, long or reliable) procedure. - * - * @details This function can perform all write procedures described in GATT. - * - * @note Only one write with response procedure can be ongoing per connection at a time. - * If the application tries to write with response while another write with response procedure is ongoing, - * the function call will return @ref NRF_ERROR_BUSY. - * A @ref BLE_GATTC_EVT_WRITE_RSP event will be issued as soon as the write response arrives from the peer. - * - * @note The number of Write without Response that can be queued is configured by @ref ble_gattc_conn_cfg_t::write_cmd_tx_queue_size - * When the queue is full, the function call will return @ref NRF_ERROR_RESOURCES. - * A @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event will be issued as soon as the transmission of the write without response is complete. - * - * @note The application can keep track of the available queue element count for writes without responses by following the procedure below: - * - Store initial queue element count in a variable. - * - Decrement the variable, which stores the currently available queue element count, by one when a call to this function returns @ref NRF_SUCCESS. - * - Increment the variable, which stores the current available queue element count, by the count variable in @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event. - * - * @events - * @event{@ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE, Write without response transmission complete.} - * @event{@ref BLE_GATTC_EVT_WRITE_RSP, Write response received from the peer.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_VALUE_WRITE_WITHOUT_RESP_MSC} - * @mmsc{@ref BLE_GATTC_VALUE_WRITE_MSC} - * @mmsc{@ref BLE_GATTC_VALUE_LONG_WRITE_MSC} - * @mmsc{@ref BLE_GATTC_VALUE_RELIABLE_WRITE_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_write_params A pointer to a write parameters structure. - * - * @retval ::NRF_SUCCESS Successfully started the Write procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @retval ::NRF_ERROR_BUSY For write with response, procedure already in progress. Wait for a @ref BLE_GATTC_EVT_WRITE_RSP event and retry. - * @retval ::NRF_ERROR_RESOURCES Too many writes without responses queued. - * Wait for a @ref BLE_GATTC_EVT_WRITE_CMD_TX_COMPLETE event and retry. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_WRITE, uint32_t, sd_ble_gattc_write(uint16_t conn_handle, ble_gattc_write_params_t const *p_write_params)); - - -/**@brief Send a Handle Value Confirmation to the GATT Server. - * - * @mscs - * @mmsc{@ref BLE_GATTC_HVI_MSC} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] handle The handle of the attribute in the indication. - * - * @retval ::NRF_SUCCESS Successfully queued the Handle Value Confirmation for transmission. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no Indication pending to be confirmed. - * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_HV_CONFIRM, uint32_t, sd_ble_gattc_hv_confirm(uint16_t conn_handle, uint16_t handle)); - -/**@brief Discovers information about a range of attributes on a GATT server. - * - * @events - * @event{@ref BLE_GATTC_EVT_ATTR_INFO_DISC_RSP, Generated when information about a range of attributes has been received.} - * @endevents - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] p_handle_range The range of handles to request information about. - * - * @retval ::NRF_SUCCESS Successfully started an attribute information discovery procedure. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_ATTR_INFO_DISCOVER, uint32_t, sd_ble_gattc_attr_info_discover(uint16_t conn_handle, ble_gattc_handle_range_t const * p_handle_range)); - -/**@brief Start an ATT_MTU exchange by sending an Exchange MTU Request to the server. - * - * @details The SoftDevice sets ATT_MTU to the minimum of: - * - The Client RX MTU value, and - * - The Server RX MTU value from @ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP. - * - * However, the SoftDevice never sets ATT_MTU lower than @ref BLE_GATT_ATT_MTU_DEFAULT. - * - * @events - * @event{@ref BLE_GATTC_EVT_EXCHANGE_MTU_RSP} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTC_MTU_EXCHANGE} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] client_rx_mtu Client RX MTU size. - * - The minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. - * - The maximum value is @ref ble_gatt_conn_cfg_t::att_mtu in the connection configuration - used for this connection. - * - The value must be equal to Server RX MTU size given in @ref sd_ble_gatts_exchange_mtu_reply - * if an ATT_MTU exchange has already been performed in the other direction. - * - * @retval ::NRF_SUCCESS Successfully sent request to the server. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid connection state or an ATT_MTU exchange was already requested once. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid Client RX MTU size supplied. - * @retval ::NRF_ERROR_BUSY Client procedure already in progress. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTC_EXCHANGE_MTU_REQUEST, uint32_t, sd_ble_gattc_exchange_mtu_request(uint16_t conn_handle, uint16_t client_rx_mtu)); - -/**@brief Iterate through Handle-Value(s) list in @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. - * - * @param[in] p_gattc_evt Pointer to event buffer containing @ref BLE_GATTC_EVT_CHAR_VAL_BY_UUID_READ_RSP event. - * @note If the buffer contains different event, behavior is undefined. - * @param[in,out] p_iter Iterator, points to @ref ble_gattc_handle_value_t structure that will be filled in with - * the next Handle-Value pair in each iteration. If the function returns other than - * @ref NRF_SUCCESS, it will not be changed. - * - To start iteration, initialize the structure to zero. - * - To continue, pass the value from previous iteration. - * - * \code - * ble_gattc_handle_value_t iter; - * memset(&iter, 0, sizeof(ble_gattc_handle_value_t)); - * while (sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(&ble_evt.evt.gattc_evt, &iter) == NRF_SUCCESS) - * { - * app_handle = iter.handle; - * memcpy(app_value, iter.p_value, ble_evt.evt.gattc_evt.params.char_val_by_uuid_read_rsp.value_len); - * } - * \endcode - * - * @retval ::NRF_SUCCESS Successfully retrieved the next Handle-Value pair. - * @retval ::NRF_ERROR_NOT_FOUND No more Handle-Value pairs available in the list. - */ -__STATIC_INLINE uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter); - -/** @} */ - -#ifndef SUPPRESS_INLINE_IMPLEMENTATION - -__STATIC_INLINE uint32_t sd_ble_gattc_evt_char_val_by_uuid_read_rsp_iter(ble_gattc_evt_t *p_gattc_evt, ble_gattc_handle_value_t *p_iter) -{ - uint32_t value_len = p_gattc_evt->params.char_val_by_uuid_read_rsp.value_len; - uint8_t *p_first = p_gattc_evt->params.char_val_by_uuid_read_rsp.handle_value; - uint8_t *p_next = p_iter->p_value ? p_iter->p_value + value_len : p_first; - - if ((p_next - p_first) / (sizeof(uint16_t) + value_len) < p_gattc_evt->params.char_val_by_uuid_read_rsp.count) - { - p_iter->handle = (uint16_t)p_next[1] << 8 | p_next[0]; - p_iter->p_value = p_next + sizeof(uint16_t); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_NOT_FOUND; - } -} - -#endif /* SUPPRESS_INLINE_IMPLEMENTATION */ - -#ifdef __cplusplus -} -#endif -#endif /* BLE_GATTC_H__ */ - -/** - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gatts.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gatts.h deleted file mode 100644 index 394d8d1..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_gatts.h +++ /dev/null @@ -1,845 +0,0 @@ -/* - * Copyright (c) 2011 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_GATTS Generic Attribute Profile (GATT) Server - @{ - @brief Definitions and prototypes for the GATTS interface. - */ - -#ifndef BLE_GATTS_H__ -#define BLE_GATTS_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_hci.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" -#include "ble_gatt.h" -#include "ble_gap.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_GATTS_ENUMERATIONS Enumerations - * @{ */ - -/** - * @brief GATTS API SVC numbers. - */ -enum BLE_GATTS_SVCS -{ - SD_BLE_GATTS_SERVICE_ADD = BLE_GATTS_SVC_BASE, /**< Add a service. */ - SD_BLE_GATTS_INCLUDE_ADD, /**< Add an included service. */ - SD_BLE_GATTS_CHARACTERISTIC_ADD, /**< Add a characteristic. */ - SD_BLE_GATTS_DESCRIPTOR_ADD, /**< Add a generic attribute. */ - SD_BLE_GATTS_VALUE_SET, /**< Set an attribute value. */ - SD_BLE_GATTS_VALUE_GET, /**< Get an attribute value. */ - SD_BLE_GATTS_HVX, /**< Handle Value Notification or Indication. */ - SD_BLE_GATTS_SERVICE_CHANGED, /**< Perform a Service Changed Indication to one or more peers. */ - SD_BLE_GATTS_RW_AUTHORIZE_REPLY, /**< Reply to an authorization request for a read or write operation on one or more attributes. */ - SD_BLE_GATTS_SYS_ATTR_SET, /**< Set the persistent system attributes for a connection. */ - SD_BLE_GATTS_SYS_ATTR_GET, /**< Retrieve the persistent system attributes. */ - SD_BLE_GATTS_INITIAL_USER_HANDLE_GET, /**< Retrieve the first valid user handle. */ - SD_BLE_GATTS_ATTR_GET, /**< Retrieve the UUID and/or metadata of an attribute. */ - SD_BLE_GATTS_EXCHANGE_MTU_REPLY /**< Reply to Exchange MTU Request. */ -}; - -/** - * @brief GATT Server Event IDs. - */ -enum BLE_GATTS_EVTS -{ - BLE_GATTS_EVT_WRITE = BLE_GATTS_EVT_BASE, /**< Write operation performed. \n See @ref ble_gatts_evt_write_t. */ - BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST, /**< Read/Write Authorization request. \n Reply with @ref sd_ble_gatts_rw_authorize_reply. \n See @ref ble_gatts_evt_rw_authorize_request_t. */ - BLE_GATTS_EVT_SYS_ATTR_MISSING, /**< A persistent system attribute access is pending. \n Respond with @ref sd_ble_gatts_sys_attr_set. \n See @ref ble_gatts_evt_sys_attr_missing_t. */ - BLE_GATTS_EVT_HVC, /**< Handle Value Confirmation. \n See @ref ble_gatts_evt_hvc_t. */ - BLE_GATTS_EVT_SC_CONFIRM, /**< Service Changed Confirmation. \n No additional event structure applies. */ - BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST, /**< Exchange MTU Request. \n Reply with @ref sd_ble_gatts_exchange_mtu_reply. \n See @ref ble_gatts_evt_exchange_mtu_request_t. */ - BLE_GATTS_EVT_TIMEOUT, /**< Peer failed to respond to an ATT request in time. \n See @ref ble_gatts_evt_timeout_t. */ - BLE_GATTS_EVT_HVN_TX_COMPLETE /**< Handle Value Notification transmission complete. \n See @ref ble_gatts_evt_hvn_tx_complete_t. */ -}; - -/**@brief GATTS Configuration IDs. - * - * IDs that uniquely identify a GATTS configuration. - */ -enum BLE_GATTS_CFGS -{ - BLE_GATTS_CFG_SERVICE_CHANGED = BLE_GATTS_CFG_BASE, /**< Service changed configuration. */ - BLE_GATTS_CFG_ATTR_TAB_SIZE, /**< Attribute table size configuration. */ -}; - -/** @} */ - -/** @addtogroup BLE_GATTS_DEFINES Defines - * @{ */ - -/** @defgroup BLE_ERRORS_GATTS SVC return values specific to GATTS - * @{ */ -#define BLE_ERROR_GATTS_INVALID_ATTR_TYPE (NRF_GATTS_ERR_BASE + 0x000) /**< Invalid attribute type. */ -#define BLE_ERROR_GATTS_SYS_ATTR_MISSING (NRF_GATTS_ERR_BASE + 0x001) /**< System Attributes missing. */ -/** @} */ - -/** @defgroup BLE_GATTS_ATTR_LENS_MAX Maximum attribute lengths - * @{ */ -#define BLE_GATTS_FIX_ATTR_LEN_MAX (510) /**< Maximum length for fixed length Attribute Values. */ -#define BLE_GATTS_VAR_ATTR_LEN_MAX (512) /**< Maximum length for variable length Attribute Values. */ -/** @} */ - -/** @defgroup BLE_GATTS_SRVC_TYPES GATT Server Service Types - * @{ */ -#define BLE_GATTS_SRVC_TYPE_INVALID 0x00 /**< Invalid Service Type. */ -#define BLE_GATTS_SRVC_TYPE_PRIMARY 0x01 /**< Primary Service. */ -#define BLE_GATTS_SRVC_TYPE_SECONDARY 0x02 /**< Secondary Type. */ -/** @} */ - - -/** @defgroup BLE_GATTS_ATTR_TYPES GATT Server Attribute Types - * @{ */ -#define BLE_GATTS_ATTR_TYPE_INVALID 0x00 /**< Invalid Attribute Type. */ -#define BLE_GATTS_ATTR_TYPE_PRIM_SRVC_DECL 0x01 /**< Primary Service Declaration. */ -#define BLE_GATTS_ATTR_TYPE_SEC_SRVC_DECL 0x02 /**< Secondary Service Declaration. */ -#define BLE_GATTS_ATTR_TYPE_INC_DECL 0x03 /**< Include Declaration. */ -#define BLE_GATTS_ATTR_TYPE_CHAR_DECL 0x04 /**< Characteristic Declaration. */ -#define BLE_GATTS_ATTR_TYPE_CHAR_VAL 0x05 /**< Characteristic Value. */ -#define BLE_GATTS_ATTR_TYPE_DESC 0x06 /**< Descriptor. */ -#define BLE_GATTS_ATTR_TYPE_OTHER 0x07 /**< Other, non-GATT specific type. */ -/** @} */ - - -/** @defgroup BLE_GATTS_OPS GATT Server Operations - * @{ */ -#define BLE_GATTS_OP_INVALID 0x00 /**< Invalid Operation. */ -#define BLE_GATTS_OP_WRITE_REQ 0x01 /**< Write Request. */ -#define BLE_GATTS_OP_WRITE_CMD 0x02 /**< Write Command. */ -#define BLE_GATTS_OP_SIGN_WRITE_CMD 0x03 /**< Signed Write Command. */ -#define BLE_GATTS_OP_PREP_WRITE_REQ 0x04 /**< Prepare Write Request. */ -#define BLE_GATTS_OP_EXEC_WRITE_REQ_CANCEL 0x05 /**< Execute Write Request: Cancel all prepared writes. */ -#define BLE_GATTS_OP_EXEC_WRITE_REQ_NOW 0x06 /**< Execute Write Request: Immediately execute all prepared writes. */ -/** @} */ - -/** @defgroup BLE_GATTS_VLOCS GATT Value Locations - * @{ */ -#define BLE_GATTS_VLOC_INVALID 0x00 /**< Invalid Location. */ -#define BLE_GATTS_VLOC_STACK 0x01 /**< Attribute Value is located in stack memory, no user memory is required. */ -#define BLE_GATTS_VLOC_USER 0x02 /**< Attribute Value is located in user memory. This requires the user to maintain a valid buffer through the lifetime of the attribute, since the stack - will read and write directly to the memory using the pointer provided in the APIs. There are no alignment requirements for the buffer. */ -/** @} */ - -/** @defgroup BLE_GATTS_AUTHORIZE_TYPES GATT Server Authorization Types - * @{ */ -#define BLE_GATTS_AUTHORIZE_TYPE_INVALID 0x00 /**< Invalid Type. */ -#define BLE_GATTS_AUTHORIZE_TYPE_READ 0x01 /**< Authorize a Read Operation. */ -#define BLE_GATTS_AUTHORIZE_TYPE_WRITE 0x02 /**< Authorize a Write Request Operation. */ -/** @} */ - -/** @defgroup BLE_GATTS_SYS_ATTR_FLAGS System Attribute Flags - * @{ */ -#define BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS (1 << 0) /**< Restrict system attributes to system services only. */ -#define BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS (1 << 1) /**< Restrict system attributes to user services only. */ -/** @} */ - -/** @defgroup BLE_GATTS_SERVICE_CHANGED Service Changed Inclusion Values - * @{ - */ -#define BLE_GATTS_SERVICE_CHANGED_DEFAULT (1) /**< Default is to include the Service Changed characteristic in the Attribute Table. */ -/** @} */ - -/** @defgroup BLE_GATTS_ATTR_TAB_SIZE Attribute Table size - * @{ - */ -#define BLE_GATTS_ATTR_TAB_SIZE_MIN (248) /**< Minimum Attribute Table size */ -#define BLE_GATTS_ATTR_TAB_SIZE_DEFAULT (1408) /**< Default Attribute Table size. */ -/** @} */ - -/** @defgroup BLE_GATTS_DEFAULTS GATT Server defaults - * @{ - */ -#define BLE_GATTS_HVN_TX_QUEUE_SIZE_DEFAULT 1 /**< Default number of Handle Value Notifications that can be queued for transmission. */ -/** @} */ - -/** @} */ - -/** @addtogroup BLE_GATTS_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE GATTS connection configuration parameters, set with @ref sd_ble_cfg_set. - */ -typedef struct -{ - uint8_t hvn_tx_queue_size; /**< Minimum guaranteed number of Handle Value Notifications that can be queued for transmission. - The default value is @ref BLE_GATTS_HVN_TX_QUEUE_SIZE_DEFAULT */ -} ble_gatts_conn_cfg_t; - -/**@brief Attribute metadata. */ -typedef struct -{ - ble_gap_conn_sec_mode_t read_perm; /**< Read permissions. */ - ble_gap_conn_sec_mode_t write_perm; /**< Write permissions. */ - uint8_t vlen :1; /**< Variable length attribute. */ - uint8_t vloc :2; /**< Value location, see @ref BLE_GATTS_VLOCS.*/ - uint8_t rd_auth :1; /**< Read authorization and value will be requested from the application on every read operation. */ - uint8_t wr_auth :1; /**< Write authorization will be requested from the application on every Write Request operation (but not Write Command). */ -} ble_gatts_attr_md_t; - - -/**@brief GATT Attribute. */ -typedef struct -{ - ble_uuid_t const *p_uuid; /**< Pointer to the attribute UUID. */ - ble_gatts_attr_md_t const *p_attr_md; /**< Pointer to the attribute metadata structure. */ - uint16_t init_len; /**< Initial attribute value length in bytes. */ - uint16_t init_offs; /**< Initial attribute value offset in bytes. If different from zero, the first init_offs bytes of the attribute value will be left uninitialized. */ - uint16_t max_len; /**< Maximum attribute value length in bytes, see @ref BLE_GATTS_ATTR_LENS_MAX for maximum values. */ - uint8_t *p_value; /**< Pointer to the attribute data. Please note that if the @ref BLE_GATTS_VLOC_USER value location is selected in the attribute metadata, this will have to point to a buffer - that remains valid through the lifetime of the attribute. This excludes usage of automatic variables that may go out of scope or any other temporary location. - The stack may access that memory directly without the application's knowledge. For writable characteristics, this value must not be a location in flash memory.*/ -} ble_gatts_attr_t; - -/**@brief GATT Attribute Value. */ -typedef struct -{ - uint16_t len; /**< Length in bytes to be written or read. Length in bytes written or read after successful return.*/ - uint16_t offset; /**< Attribute value offset. */ - uint8_t *p_value; /**< Pointer to where value is stored or will be stored. - If value is stored in user memory, only the attribute length is updated when p_value == NULL. - Set to NULL when reading to obtain the complete length of the attribute value */ -} ble_gatts_value_t; - - -/**@brief GATT Characteristic Presentation Format. */ -typedef struct -{ - uint8_t format; /**< Format of the value, see @ref BLE_GATT_CPF_FORMATS. */ - int8_t exponent; /**< Exponent for integer data types. */ - uint16_t unit; /**< Unit from Bluetooth Assigned Numbers. */ - uint8_t name_space; /**< Namespace from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ - uint16_t desc; /**< Namespace description from Bluetooth Assigned Numbers, see @ref BLE_GATT_CPF_NAMESPACES. */ -} ble_gatts_char_pf_t; - - -/**@brief GATT Characteristic metadata. */ -typedef struct -{ - ble_gatt_char_props_t char_props; /**< Characteristic Properties. */ - ble_gatt_char_ext_props_t char_ext_props; /**< Characteristic Extended Properties. */ - uint8_t const *p_char_user_desc; /**< Pointer to a UTF-8 encoded string (non-NULL terminated), NULL if the descriptor is not required. */ - uint16_t char_user_desc_max_size; /**< The maximum size in bytes of the user description descriptor. */ - uint16_t char_user_desc_size; /**< The size of the user description, must be smaller or equal to char_user_desc_max_size. */ - ble_gatts_char_pf_t const *p_char_pf; /**< Pointer to a presentation format structure or NULL if the CPF descriptor is not required. */ - ble_gatts_attr_md_t const *p_user_desc_md; /**< Attribute metadata for the User Description descriptor, or NULL for default values. */ - ble_gatts_attr_md_t const *p_cccd_md; /**< Attribute metadata for the Client Characteristic Configuration Descriptor, or NULL for default values. */ - ble_gatts_attr_md_t const *p_sccd_md; /**< Attribute metadata for the Server Characteristic Configuration Descriptor, or NULL for default values. */ -} ble_gatts_char_md_t; - - -/**@brief GATT Characteristic Definition Handles. */ -typedef struct -{ - uint16_t value_handle; /**< Handle to the characteristic value. */ - uint16_t user_desc_handle; /**< Handle to the User Description descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ - uint16_t cccd_handle; /**< Handle to the Client Characteristic Configuration Descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ - uint16_t sccd_handle; /**< Handle to the Server Characteristic Configuration Descriptor, or @ref BLE_GATT_HANDLE_INVALID if not present. */ -} ble_gatts_char_handles_t; - - -/**@brief GATT HVx parameters. */ -typedef struct -{ - uint16_t handle; /**< Characteristic Value Handle. */ - uint8_t type; /**< Indication or Notification, see @ref BLE_GATT_HVX_TYPES. */ - uint16_t offset; /**< Offset within the attribute value. */ - uint16_t *p_len; /**< Length in bytes to be written, length in bytes written after return. */ - uint8_t const *p_data; /**< Actual data content, use NULL to use the current attribute value. */ -} ble_gatts_hvx_params_t; - -/**@brief GATT Authorization parameters. */ -typedef struct -{ - uint16_t gatt_status; /**< GATT status code for the operation, see @ref BLE_GATT_STATUS_CODES. */ - uint8_t update : 1; /**< If set, data supplied in p_data will be used to update the attribute value. - Please note that for @ref BLE_GATTS_AUTHORIZE_TYPE_WRITE operations this bit must always be set, - as the data to be written needs to be stored and later provided by the application. */ - uint16_t offset; /**< Offset of the attribute value being updated. */ - uint16_t len; /**< Length in bytes of the value in p_data pointer, see @ref BLE_GATTS_ATTR_LENS_MAX. */ - uint8_t const *p_data; /**< Pointer to new value used to update the attribute value. */ -} ble_gatts_authorize_params_t; - -/**@brief GATT Read or Write Authorize Reply parameters. */ -typedef struct -{ - uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ - union { - ble_gatts_authorize_params_t read; /**< Read authorization parameters. */ - ble_gatts_authorize_params_t write; /**< Write authorization parameters. */ - } params; /**< Reply Parameters. */ -} ble_gatts_rw_authorize_reply_params_t; - -/**@brief Service Changed Inclusion configuration parameters, set with @ref sd_ble_cfg_set. */ -typedef struct -{ - uint8_t service_changed : 1; /**< If 1, include the Service Changed characteristic in the Attribute Table. Default is @ref BLE_GATTS_SERVICE_CHANGED_DEFAULT. */ -} ble_gatts_cfg_service_changed_t; - -/**@brief Attribute table size configuration parameters, set with @ref sd_ble_cfg_set. - * - * @retval ::NRF_ERROR_INVALID_LENGTH One or more of the following is true: - * - The specified Attribute Table size is too small. - * The minimum acceptable size is defined by @ref BLE_GATTS_ATTR_TAB_SIZE_MIN. - * - The specified Attribute Table size is not a multiple of 4. - */ -typedef struct -{ - uint32_t attr_tab_size; /**< Attribute table size. Default is @ref BLE_GATTS_ATTR_TAB_SIZE_DEFAULT, minimum is @ref BLE_GATTS_ATTR_TAB_SIZE_MIN. */ -} ble_gatts_cfg_attr_tab_size_t; - -/**@brief Config structure for GATTS configurations. */ -typedef union -{ - ble_gatts_cfg_service_changed_t service_changed; /**< Include service changed characteristic, cfg_id is @ref BLE_GATTS_CFG_SERVICE_CHANGED. */ - ble_gatts_cfg_attr_tab_size_t attr_tab_size; /**< Attribute table size, cfg_id is @ref BLE_GATTS_CFG_ATTR_TAB_SIZE. */ -} ble_gatts_cfg_t; - - -/**@brief Event structure for @ref BLE_GATTS_EVT_WRITE. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - ble_uuid_t uuid; /**< Attribute UUID. */ - uint8_t op; /**< Type of write operation, see @ref BLE_GATTS_OPS. */ - uint8_t auth_required; /**< Writing operation deferred due to authorization requirement. Application may use @ref sd_ble_gatts_value_set to finalize the writing operation. */ - uint16_t offset; /**< Offset for the write operation. */ - uint16_t len; /**< Length of the received data. */ - uint8_t data[1]; /**< Received data. @note This is a variable length array. The size of 1 indicated is only a placeholder for compilation. - See @ref sd_ble_evt_get for more information on how to use event structures with variable length array members. */ -} ble_gatts_evt_write_t; - -/**@brief Event substructure for authorized read requests, see @ref ble_gatts_evt_rw_authorize_request_t. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ - ble_uuid_t uuid; /**< Attribute UUID. */ - uint16_t offset; /**< Offset for the read operation. */ -} ble_gatts_evt_read_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST. */ -typedef struct -{ - uint8_t type; /**< Type of authorize operation, see @ref BLE_GATTS_AUTHORIZE_TYPES. */ - union { - ble_gatts_evt_read_t read; /**< Attribute Read Parameters. */ - ble_gatts_evt_write_t write; /**< Attribute Write Parameters. */ - } request; /**< Request Parameters. */ -} ble_gatts_evt_rw_authorize_request_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_SYS_ATTR_MISSING. */ -typedef struct -{ - uint8_t hint; /**< Hint (currently unused). */ -} ble_gatts_evt_sys_attr_missing_t; - - -/**@brief Event structure for @ref BLE_GATTS_EVT_HVC. */ -typedef struct -{ - uint16_t handle; /**< Attribute Handle. */ -} ble_gatts_evt_hvc_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST. */ -typedef struct -{ - uint16_t client_rx_mtu; /**< Client RX MTU size. */ -} ble_gatts_evt_exchange_mtu_request_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_TIMEOUT. */ -typedef struct -{ - uint8_t src; /**< Timeout source, see @ref BLE_GATT_TIMEOUT_SOURCES. */ -} ble_gatts_evt_timeout_t; - -/**@brief Event structure for @ref BLE_GATTS_EVT_HVN_TX_COMPLETE. */ -typedef struct -{ - uint8_t count; /**< Number of notification transmissions completed. */ -} ble_gatts_evt_hvn_tx_complete_t; - -/**@brief GATTS event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which the event occurred. */ - union - { - ble_gatts_evt_write_t write; /**< Write Event Parameters. */ - ble_gatts_evt_rw_authorize_request_t authorize_request; /**< Read or Write Authorize Request Parameters. */ - ble_gatts_evt_sys_attr_missing_t sys_attr_missing; /**< System attributes missing. */ - ble_gatts_evt_hvc_t hvc; /**< Handle Value Confirmation Event Parameters. */ - ble_gatts_evt_exchange_mtu_request_t exchange_mtu_request; /**< Exchange MTU Request Event Parameters. */ - ble_gatts_evt_timeout_t timeout; /**< Timeout Event. */ - ble_gatts_evt_hvn_tx_complete_t hvn_tx_complete; /**< Handle Value Notification transmission complete Event Parameters. */ - } params; /**< Event Parameters. */ -} ble_gatts_evt_t; - -/** @} */ - -/** @addtogroup BLE_GATTS_FUNCTIONS Functions - * @{ */ - -/**@brief Add a service declaration to the Attribute Table. - * - * @note Secondary Services are only relevant in the context of the entity that references them, it is therefore forbidden to - * add a secondary service declaration that is not referenced by another service later in the Attribute Table. - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] type Toggles between primary and secondary services, see @ref BLE_GATTS_SRVC_TYPES. - * @param[in] p_uuid Pointer to service UUID. - * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully added a service declaration. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, Vendor Specific UUIDs need to be present in the table. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GATTS_SERVICE_ADD, uint32_t, sd_ble_gatts_service_add(uint8_t type, ble_uuid_t const *p_uuid, uint16_t *p_handle)); - - -/**@brief Add an include declaration to the Attribute Table. - * - * @note It is currently only possible to add an include declaration to the last added service (i.e. only sequential population is supported at this time). - * - * @note The included service must already be present in the Attribute Table prior to this call. - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] service_handle Handle of the service where the included service is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] inc_srvc_handle Handle of the included service. - * @param[out] p_include_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully added an include declaration. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, handle values need to match previously added services. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required. - * @retval ::NRF_ERROR_NOT_SUPPORTED Feature is not supported, service_handle must be that of the last added service. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, self inclusions are not allowed. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - */ -SVCALL(SD_BLE_GATTS_INCLUDE_ADD, uint32_t, sd_ble_gatts_include_add(uint16_t service_handle, uint16_t inc_srvc_handle, uint16_t *p_include_handle)); - - -/**@brief Add a characteristic declaration, a characteristic value declaration and optional characteristic descriptor declarations to the Attribute Table. - * - * @note It is currently only possible to add a characteristic to the last added service (i.e. only sequential population is supported at this time). - * - * @note Several restrictions apply to the parameters, such as matching permissions between the user description descriptor and the writable auxiliaries bits, - * readable (no security) and writable (selectable) CCCDs and SCCDs and valid presentation format values. - * - * @note If no metadata is provided for the optional descriptors, their permissions will be derived from the characteristic permissions. - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] service_handle Handle of the service where the characteristic is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] p_char_md Characteristic metadata. - * @param[in] p_attr_char_value Pointer to the attribute structure corresponding to the characteristic value. - * @param[out] p_handles Pointer to the structure where the assigned handles will be stored. - * - * @retval ::NRF_SUCCESS Successfully added a characteristic. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, service handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a service context is required. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - */ -SVCALL(SD_BLE_GATTS_CHARACTERISTIC_ADD, uint32_t, sd_ble_gatts_characteristic_add(uint16_t service_handle, ble_gatts_char_md_t const *p_char_md, ble_gatts_attr_t const *p_attr_char_value, ble_gatts_char_handles_t *p_handles)); - - -/**@brief Add a descriptor to the Attribute Table. - * - * @note It is currently only possible to add a descriptor to the last added characteristic (i.e. only sequential population is supported at this time). - * - * @mscs - * @mmsc{@ref BLE_GATTS_ATT_TABLE_POP_MSC} - * @endmscs - * - * @param[in] char_handle Handle of the characteristic where the descriptor is to be placed, if @ref BLE_GATT_HANDLE_INVALID is used, it will be placed sequentially. - * @param[in] p_attr Pointer to the attribute structure. - * @param[out] p_handle Pointer to a 16-bit word where the assigned handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully added a descriptor. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied, characteristic handle, Vendor Specific UUIDs, lengths, and permissions need to adhere to the constraints. - * @retval ::NRF_ERROR_INVALID_STATE Invalid state to perform operation, a characteristic context is required. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden value supplied, certain UUIDs are reserved for the stack. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - */ -SVCALL(SD_BLE_GATTS_DESCRIPTOR_ADD, uint32_t, sd_ble_gatts_descriptor_add(uint16_t char_handle, ble_gatts_attr_t const *p_attr, uint16_t *p_handle)); - -/**@brief Set the value of a given attribute. - * - * @note Values other than system attributes can be set at any time, regardless of whether any active connections exist. - * - * @mscs - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. Ignored if the value does not belong to a system attribute. - * @param[in] handle Attribute handle. - * @param[in,out] p_value Attribute value information. - * - * @retval ::NRF_SUCCESS Successfully set the value of the attribute. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - * @retval ::NRF_ERROR_FORBIDDEN Forbidden handle supplied, certain attributes are not modifiable by the application. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied, attribute lengths are restricted by @ref BLE_GATTS_ATTR_LENS_MAX. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied on a system attribute. - */ -SVCALL(SD_BLE_GATTS_VALUE_SET, uint32_t, sd_ble_gatts_value_set(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)); - -/**@brief Get the value of a given attribute. - * - * @note If the attribute value is longer than the size of the supplied buffer, - * @ref ble_gatts_value_t::len will return the total attribute value length (excluding offset), - * and not the number of bytes actually returned in @ref ble_gatts_value_t::p_value. - * The application may use this information to allocate a suitable buffer size. - * - * @note When retrieving system attribute values with this function, the connection handle - * may refer to an already disconnected connection. Refer to the documentation of - * @ref sd_ble_gatts_sys_attr_get for further information. - * - * @param[in] conn_handle Connection handle. Ignored if the value does not belong to a system attribute. - * @param[in] handle Attribute handle. - * @param[in,out] p_value Attribute value information. - * - * @retval ::NRF_SUCCESS Successfully retrieved the value of the attribute. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid attribute offset supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid connection handle supplied on a system attribute. - * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - */ -SVCALL(SD_BLE_GATTS_VALUE_GET, uint32_t, sd_ble_gatts_value_get(uint16_t conn_handle, uint16_t handle, ble_gatts_value_t *p_value)); - -/**@brief Notify or Indicate an attribute value. - * - * @details This function checks for the relevant Client Characteristic Configuration descriptor value to verify that the relevant operation - * (notification or indication) has been enabled by the client. It is also able to update the attribute value before issuing the PDU, so that - * the application can atomically perform a value update and a server initiated transaction with a single API call. - * - * @note The local attribute value may be updated even if an outgoing packet is not sent to the peer due to an error during execution. - * The Attribute Table has been updated if one of the following error codes is returned: @ref NRF_ERROR_INVALID_STATE, @ref NRF_ERROR_BUSY, - * @ref NRF_ERROR_FORBIDDEN, @ref BLE_ERROR_GATTS_SYS_ATTR_MISSING and @ref NRF_ERROR_RESOURCES. - * The caller can check whether the value has been updated by looking at the contents of *(@ref ble_gatts_hvx_params_t::p_len). - * - * @note Only one indication procedure can be ongoing per connection at a time. - * If the application tries to indicate an attribute value while another indication procedure is ongoing, - * the function call will return @ref NRF_ERROR_BUSY. - * A @ref BLE_GATTS_EVT_HVC event will be issued as soon as the confirmation arrives from the peer. - * - * @note The number of Handle Value Notifications that can be queued is configured by @ref ble_gatts_conn_cfg_t::hvn_tx_queue_size - * When the queue is full, the function call will return @ref NRF_ERROR_RESOURCES. - * A @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event will be issued as soon as the transmission of the notification is complete. - * - * @note The application can keep track of the available queue element count for notifications by following the procedure below: - * - Store initial queue element count in a variable. - * - Decrement the variable, which stores the currently available queue element count, by one when a call to this function returns @ref NRF_SUCCESS. - * - Increment the variable, which stores the current available queue element count, by the count variable in @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event. - * - * @events - * @event{@ref BLE_GATTS_EVT_HVN_TX_COMPLETE, Notification transmission complete.} - * @event{@ref BLE_GATTS_EVT_HVC, Confirmation received from the peer.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC} - * @mmsc{@ref BLE_GATTS_HVN_MSC} - * @mmsc{@ref BLE_GATTS_HVI_MSC} - * @mmsc{@ref BLE_GATTS_HVX_DISABLED_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in,out] p_hvx_params Pointer to an HVx parameters structure. If @ref ble_gatts_hvx_params_t::p_data - * contains a non-NULL pointer the attribute value will be updated with the contents - * pointed by it before sending the notification or indication. If the attribute value - * is updated, @ref ble_gatts_hvx_params_t::p_len is updated by the SoftDevice to - * contain the number of actual bytes written, else it will be set to 0. - * - * @retval ::NRF_SUCCESS Successfully queued a notification or indication for transmission, and optionally updated the attribute value. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true: - * - Invalid Connection State - * - Notifications and/or indications not enabled in the CCCD - * - An ATT_MTU exchange is ongoing - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied. Only attributes added directly by the application are available to notify and indicate. - * @retval ::BLE_ERROR_GATTS_INVALID_ATTR_TYPE Invalid attribute type(s) supplied, only characteristic values may be notified and indicated. - * @retval ::NRF_ERROR_NOT_FOUND Attribute not found. - * @retval ::NRF_ERROR_FORBIDDEN The connection's current security level is lower than the one required by the write permissions of the CCCD associated with this characteristic. - * @retval ::NRF_ERROR_DATA_SIZE Invalid data size(s) supplied. - * @retval ::NRF_ERROR_BUSY For @ref BLE_GATT_HVX_INDICATION Procedure already in progress. Wait for a @ref BLE_GATTS_EVT_HVC event and retry. - * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - * @retval ::NRF_ERROR_RESOURCES Too many notifications queued. - * Wait for a @ref BLE_GATTS_EVT_HVN_TX_COMPLETE event and retry. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_HVX, uint32_t, sd_ble_gatts_hvx(uint16_t conn_handle, ble_gatts_hvx_params_t const *p_hvx_params)); - -/**@brief Indicate the Service Changed attribute value. - * - * @details This call will send a Handle Value Indication to one or more peers connected to inform them that the Attribute - * Table layout has changed. As soon as the peer has confirmed the indication, a @ref BLE_GATTS_EVT_SC_CONFIRM event will - * be issued. - * - * @note Some of the restrictions and limitations that apply to @ref sd_ble_gatts_hvx also apply here. - * - * @events - * @event{@ref BLE_GATTS_EVT_SC_CONFIRM, Confirmation of attribute table change received from peer.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_GATTS_SC_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] start_handle Start of affected attribute handle range. - * @param[in] end_handle End of affected attribute handle range. - * - * @retval ::NRF_SUCCESS Successfully queued the Service Changed indication for transmission. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_NOT_SUPPORTED Service Changed not enabled at initialization. See @ref - * sd_ble_cfg_set and @ref ble_gatts_cfg_service_changed_t. - * @retval ::NRF_ERROR_INVALID_STATE One or more of the following is true: - * - Invalid Connection State - * - Notifications and/or indications not enabled in the CCCD - * - An ATT_MTU exchange is ongoing - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::BLE_ERROR_INVALID_ATTR_HANDLE Invalid attribute handle(s) supplied, handles must be in the range populated by the application. - * @retval ::NRF_ERROR_BUSY Procedure already in progress. - * @retval ::BLE_ERROR_GATTS_SYS_ATTR_MISSING System attributes missing, use @ref sd_ble_gatts_sys_attr_set to set them to a known value. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_SERVICE_CHANGED, uint32_t, sd_ble_gatts_service_changed(uint16_t conn_handle, uint16_t start_handle, uint16_t end_handle)); - -/**@brief Respond to a Read/Write authorization request. - * - * @note This call should only be used as a response to a @ref BLE_GATTS_EVT_RW_AUTHORIZE_REQUEST event issued to the application. - * - * @mscs - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_BUF_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_NOBUF_NOAUTH_MSC} - * @mmsc{@ref BLE_GATTS_READ_REQ_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_WRITE_REQ_AUTH_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_QUEUE_FULL_MSC} - * @mmsc{@ref BLE_GATTS_QUEUED_WRITE_PEER_CANCEL_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_rw_authorize_reply_params Pointer to a structure with the attribute provided by the application. - * - * @note @ref ble_gatts_authorize_params_t::p_data is ignored when this function is used to respond - * to a @ref BLE_GATTS_AUTHORIZE_TYPE_READ event if @ref ble_gatts_authorize_params_t::update - * is set to 0. - * - * @retval ::NRF_SUCCESS Successfully queued a response to the peer, and in the case of a write operation, Attribute Table updated. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no authorization request pending. - * @retval ::NRF_ERROR_INVALID_PARAM Authorization op invalid, - * handle supplied does not match requested handle, - * or invalid data to be written provided by the application. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_RW_AUTHORIZE_REPLY, uint32_t, sd_ble_gatts_rw_authorize_reply(uint16_t conn_handle, ble_gatts_rw_authorize_reply_params_t const *p_rw_authorize_reply_params)); - - -/**@brief Update persistent system attribute information. - * - * @details Supply information about persistent system attributes to the stack, - * previously obtained using @ref sd_ble_gatts_sys_attr_get. - * This call is only allowed for active connections, and is usually - * made immediately after a connection is established with an known bonded device, - * often as a response to a @ref BLE_GATTS_EVT_SYS_ATTR_MISSING. - * - * p_sysattrs may point directly to the application's stored copy of the system attributes - * obtained using @ref sd_ble_gatts_sys_attr_get. - * If the pointer is NULL, the system attribute info is initialized, assuming that - * the application does not have any previously saved system attribute data for this device. - * - * @note The state of persistent system attributes is reset upon connection establishment and then remembered for its duration. - * - * @note If this call returns with an error code different from @ref NRF_SUCCESS, the storage of persistent system attributes may have been completed only partially. - * This means that the state of the attribute table is undefined, and the application should either provide a new set of attributes using this same call or - * reset the SoftDevice to return to a known state. - * - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS is used with this function, only the system attributes included in system services will be modified. - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS is used with this function, only the system attributes included in user services will be modified. - * - * @mscs - * @mmsc{@ref BLE_GATTS_HVX_SYS_ATTRS_MISSING_MSC} - * @mmsc{@ref BLE_GATTS_SYS_ATTRS_UNK_PEER_MSC} - * @mmsc{@ref BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle. - * @param[in] p_sys_attr_data Pointer to a saved copy of system attributes supplied to the stack, or NULL. - * @param[in] len Size of data pointed by p_sys_attr_data, in octets. - * @param[in] flags Optional additional flags, see @ref BLE_GATTS_SYS_ATTR_FLAGS - * - * @retval ::NRF_SUCCESS Successfully set the system attribute information. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid flags supplied. - * @retval ::NRF_ERROR_INVALID_DATA Invalid data supplied, the data should be exactly the same as retrieved with @ref sd_ble_gatts_sys_attr_get. - * @retval ::NRF_ERROR_NO_MEM Not enough memory to complete operation. - */ -SVCALL(SD_BLE_GATTS_SYS_ATTR_SET, uint32_t, sd_ble_gatts_sys_attr_set(uint16_t conn_handle, uint8_t const *p_sys_attr_data, uint16_t len, uint32_t flags)); - - -/**@brief Retrieve persistent system attribute information from the stack. - * - * @details This call is used to retrieve information about values to be stored persistently by the application - * during the lifetime of a connection or after it has been terminated. When a new connection is established with the same bonded device, - * the system attribute information retrieved with this function should be restored using using @ref sd_ble_gatts_sys_attr_set. - * If retrieved after disconnection, the data should be read before a new connection established. The connection handle for - * the previous, now disconnected, connection will remain valid until a new one is created to allow this API call to refer to it. - * Connection handles belonging to active connections can be used as well, but care should be taken since the system attributes - * may be written to at any time by the peer during a connection's lifetime. - * - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_SYS_SRVCS is used with this function, only the system attributes included in system services will be returned. - * @note When the @ref BLE_GATTS_SYS_ATTR_FLAG_USR_SRVCS is used with this function, only the system attributes included in user services will be returned. - * - * @mscs - * @mmsc{@ref BLE_GATTS_SYS_ATTRS_BONDED_PEER_MSC} - * @endmscs - * - * @param[in] conn_handle Connection handle of the recently terminated connection. - * @param[out] p_sys_attr_data Pointer to a buffer where updated information about system attributes will be filled in. The format of the data is described - * in @ref BLE_GATTS_SYS_ATTRS_FORMAT. NULL can be provided to obtain the length of the data. - * @param[in,out] p_len Size of application buffer if p_sys_attr_data is not NULL. Unconditionally updated to actual length of system attribute data. - * @param[in] flags Optional additional flags, see @ref BLE_GATTS_SYS_ATTR_FLAGS - * - * @retval ::NRF_SUCCESS Successfully retrieved the system attribute information. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid flags supplied. - * @retval ::NRF_ERROR_DATA_SIZE The system attribute information did not fit into the provided buffer. - * @retval ::NRF_ERROR_NOT_FOUND No system attributes found. - */ -SVCALL(SD_BLE_GATTS_SYS_ATTR_GET, uint32_t, sd_ble_gatts_sys_attr_get(uint16_t conn_handle, uint8_t *p_sys_attr_data, uint16_t *p_len, uint32_t flags)); - - -/**@brief Retrieve the first valid user attribute handle. - * - * @param[out] p_handle Pointer to an integer where the handle will be stored. - * - * @retval ::NRF_SUCCESS Successfully retrieved the handle. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - */ -SVCALL(SD_BLE_GATTS_INITIAL_USER_HANDLE_GET, uint32_t, sd_ble_gatts_initial_user_handle_get(uint16_t *p_handle)); - -/**@brief Retrieve the attribute UUID and/or metadata. - * - * @param[in] handle Attribute handle - * @param[out] p_uuid UUID of the attribute. Use NULL to omit this field. - * @param[out] p_md Metadata of the attribute. Use NULL to omit this field. - * - * @retval ::NRF_SUCCESS Successfully retrieved the attribute metadata, - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameters supplied. Returned when both @c p_uuid and @c p_md are NULL. - * @retval ::NRF_ERROR_NOT_FOUND Attribute was not found. - */ -SVCALL(SD_BLE_GATTS_ATTR_GET, uint32_t, sd_ble_gatts_attr_get(uint16_t handle, ble_uuid_t * p_uuid, ble_gatts_attr_md_t * p_md)); - -/**@brief Reply to an ATT_MTU exchange request by sending an Exchange MTU Response to the client. - * - * @details This function is only used to reply to a @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST event. - * - * @details The SoftDevice sets ATT_MTU to the minimum of: - * - The Client RX MTU value from @ref BLE_GATTS_EVT_EXCHANGE_MTU_REQUEST, and - * - The Server RX MTU value. - * - * However, the SoftDevice never sets ATT_MTU lower than @ref BLE_GATT_ATT_MTU_DEFAULT. - * - * @mscs - * @mmsc{@ref BLE_GATTS_MTU_EXCHANGE} - * @endmscs - * - * @param[in] conn_handle The connection handle identifying the connection to perform this procedure on. - * @param[in] server_rx_mtu Server RX MTU size. - * - The minimum value is @ref BLE_GATT_ATT_MTU_DEFAULT. - * - The maximum value is @ref ble_gatt_conn_cfg_t::att_mtu in the connection configuration - * used for this connection. - * - The value must be equal to Client RX MTU size given in @ref sd_ble_gattc_exchange_mtu_request - * if an ATT_MTU exchange has already been performed in the other direction. - * - * @retval ::NRF_SUCCESS Successfully sent response to the client. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid Connection State or no ATT_MTU exchange request pending. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid Server RX MTU size supplied. - * @retval ::NRF_ERROR_TIMEOUT There has been a GATT procedure timeout. No new GATT procedure can be performed without reestablishing the connection. - */ -SVCALL(SD_BLE_GATTS_EXCHANGE_MTU_REPLY, uint32_t, sd_ble_gatts_exchange_mtu_reply(uint16_t conn_handle, uint16_t server_rx_mtu)); -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_GATTS_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_hci.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_hci.h deleted file mode 100644 index f0dde9a..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_hci.h +++ /dev/null @@ -1,135 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_COMMON - @{ -*/ - - -#ifndef BLE_HCI_H__ -#define BLE_HCI_H__ -#ifdef __cplusplus -extern "C" { -#endif - -/** @defgroup BLE_HCI_STATUS_CODES Bluetooth status codes - * @{ */ - -#define BLE_HCI_STATUS_CODE_SUCCESS 0x00 /**< Success. */ -#define BLE_HCI_STATUS_CODE_UNKNOWN_BTLE_COMMAND 0x01 /**< Unknown BLE Command. */ -#define BLE_HCI_STATUS_CODE_UNKNOWN_CONNECTION_IDENTIFIER 0x02 /**< Unknown Connection Identifier. */ -/*0x03 Hardware Failure -0x04 Page Timeout -*/ -#define BLE_HCI_AUTHENTICATION_FAILURE 0x05 /**< Authentication Failure. */ -#define BLE_HCI_STATUS_CODE_PIN_OR_KEY_MISSING 0x06 /**< Pin or Key missing. */ -#define BLE_HCI_MEMORY_CAPACITY_EXCEEDED 0x07 /**< Memory Capacity Exceeded. */ -#define BLE_HCI_CONNECTION_TIMEOUT 0x08 /**< Connection Timeout. */ -/*0x09 Connection Limit Exceeded -0x0A Synchronous Connection Limit To A Device Exceeded -0x0B ACL Connection Already Exists*/ -#define BLE_HCI_STATUS_CODE_COMMAND_DISALLOWED 0x0C /**< Command Disallowed. */ -/*0x0D Connection Rejected due to Limited Resources -0x0E Connection Rejected Due To Security Reasons -0x0F Connection Rejected due to Unacceptable BD_ADDR -0x10 Connection Accept Timeout Exceeded -0x11 Unsupported Feature or Parameter Value*/ -#define BLE_HCI_STATUS_CODE_INVALID_BTLE_COMMAND_PARAMETERS 0x12 /**< Invalid BLE Command Parameters. */ -#define BLE_HCI_REMOTE_USER_TERMINATED_CONNECTION 0x13 /**< Remote User Terminated Connection. */ -#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_LOW_RESOURCES 0x14 /**< Remote Device Terminated Connection due to low resources.*/ -#define BLE_HCI_REMOTE_DEV_TERMINATION_DUE_TO_POWER_OFF 0x15 /**< Remote Device Terminated Connection due to power off. */ -#define BLE_HCI_LOCAL_HOST_TERMINATED_CONNECTION 0x16 /**< Local Host Terminated Connection. */ -/* -0x17 Repeated Attempts -0x18 Pairing Not Allowed -0x19 Unknown LMP PDU -*/ -#define BLE_HCI_UNSUPPORTED_REMOTE_FEATURE 0x1A /**< Unsupported Remote Feature. */ -/* -0x1B SCO Offset Rejected -0x1C SCO Interval Rejected -0x1D SCO Air Mode Rejected*/ -#define BLE_HCI_STATUS_CODE_INVALID_LMP_PARAMETERS 0x1E /**< Invalid LMP Parameters. */ -#define BLE_HCI_STATUS_CODE_UNSPECIFIED_ERROR 0x1F /**< Unspecified Error. */ -/*0x20 Unsupported LMP Parameter Value -0x21 Role Change Not Allowed -*/ -#define BLE_HCI_STATUS_CODE_LMP_RESPONSE_TIMEOUT 0x22 /**< LMP Response Timeout. */ -#define BLE_HCI_STATUS_CODE_LMP_ERROR_TRANSACTION_COLLISION 0x23 /**< LMP Error Transaction Collision/LL Procedure Collision. */ -#define BLE_HCI_STATUS_CODE_LMP_PDU_NOT_ALLOWED 0x24 /**< LMP PDU Not Allowed. */ -/*0x25 Encryption Mode Not Acceptable -0x26 Link Key Can Not be Changed -0x27 Requested QoS Not Supported -*/ -#define BLE_HCI_INSTANT_PASSED 0x28 /**< Instant Passed. */ -#define BLE_HCI_PAIRING_WITH_UNIT_KEY_UNSUPPORTED 0x29 /**< Pairing with Unit Key Unsupported. */ -#define BLE_HCI_DIFFERENT_TRANSACTION_COLLISION 0x2A /**< Different Transaction Collision. */ -/* -0x2B Reserved -0x2C QoS Unacceptable Parameter -0x2D QoS Rejected -0x2E Channel Classification Not Supported -0x2F Insufficient Security -*/ -#define BLE_HCI_PARAMETER_OUT_OF_MANDATORY_RANGE 0x30 /**< Parameter Out Of Mandatory Range. */ -/* -0x31 Reserved -0x32 Role Switch Pending -0x33 Reserved -0x34 Reserved Slot Violation -0x35 Role Switch Failed -0x36 Extended Inquiry Response Too Large -0x37 Secure Simple Pairing Not Supported By Host. -0x38 Host Busy - Pairing -0x39 Connection Rejected due to No Suitable Channel Found*/ -#define BLE_HCI_CONTROLLER_BUSY 0x3A /**< Controller Busy. */ -#define BLE_HCI_CONN_INTERVAL_UNACCEPTABLE 0x3B /**< Connection Interval Unacceptable. */ -#define BLE_HCI_DIRECTED_ADVERTISER_TIMEOUT 0x3C /**< Directed Advertisement Timeout. */ -#define BLE_HCI_CONN_TERMINATED_DUE_TO_MIC_FAILURE 0x3D /**< Connection Terminated due to MIC Failure. */ -#define BLE_HCI_CONN_FAILED_TO_BE_ESTABLISHED 0x3E /**< Connection Failed to be Established. */ - -/** @} */ - - -#ifdef __cplusplus -} -#endif -#endif // BLE_HCI_H__ - -/** @} */ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_l2cap.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_l2cap.h deleted file mode 100644 index edaf664..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_l2cap.h +++ /dev/null @@ -1,506 +0,0 @@ -/* - * Copyright (c) 2011 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_L2CAP Logical Link Control and Adaptation Protocol (L2CAP) - @{ - @brief Definitions and prototypes for the L2CAP interface. - */ - -#ifndef BLE_L2CAP_H__ -#define BLE_L2CAP_H__ - -#include -#include "nrf_svc.h" -#include "nrf_error.h" -#include "ble_ranges.h" -#include "ble_types.h" -#include "ble_err.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup BLE_L2CAP_TERMINOLOGY Terminology - * @{ - * @details - * - * L2CAP SDU - * - A data unit that the application can send/receive to/from a peer. - * - * L2CAP PDU - * - A data unit that is exchanged between local and remote L2CAP entities. - * It consists of L2CAP protocol control information and payload fields. - * The payload field can contain an L2CAP SDU or a part of an L2CAP SDU. - * - * L2CAP MTU - * - The maximum length of an L2CAP SDU. - * - * L2CAP MPS - * - The maximum length of an L2CAP PDU payload field. - * - * Credits - * - A value indicating the number of L2CAP PDUs that the receiver of the credit can send to the peer. - * @} */ - -/**@addtogroup BLE_L2CAP_ENUMERATIONS Enumerations - * @{ */ - -/**@brief L2CAP API SVC numbers. */ -enum BLE_L2CAP_SVCS -{ - SD_BLE_L2CAP_CH_SETUP = BLE_L2CAP_SVC_BASE + 0, /**< Set up an L2CAP channel. */ - SD_BLE_L2CAP_CH_RELEASE = BLE_L2CAP_SVC_BASE + 1, /**< Release an L2CAP channel. */ - SD_BLE_L2CAP_CH_RX = BLE_L2CAP_SVC_BASE + 2, /**< Receive an SDU on an L2CAP channel. */ - SD_BLE_L2CAP_CH_TX = BLE_L2CAP_SVC_BASE + 3, /**< Transmit an SDU on an L2CAP channel. */ - SD_BLE_L2CAP_CH_FLOW_CONTROL = BLE_L2CAP_SVC_BASE + 4, /**< Advanced SDU reception flow control. */ -}; - -/**@brief L2CAP Event IDs. */ -enum BLE_L2CAP_EVTS -{ - BLE_L2CAP_EVT_CH_SETUP_REQUEST = BLE_L2CAP_EVT_BASE + 0, /**< L2CAP Channel Setup Request event. - \n See @ref ble_l2cap_evt_ch_setup_request_t. */ - BLE_L2CAP_EVT_CH_SETUP_REFUSED = BLE_L2CAP_EVT_BASE + 1, /**< L2CAP Channel Setup Refused event. - \n See @ref ble_l2cap_evt_ch_setup_refused_t. */ - BLE_L2CAP_EVT_CH_SETUP = BLE_L2CAP_EVT_BASE + 2, /**< L2CAP Channel Setup Completed event. - \n See @ref ble_l2cap_evt_ch_setup_t. */ - BLE_L2CAP_EVT_CH_RELEASED = BLE_L2CAP_EVT_BASE + 3, /**< L2CAP Channel Released event. - \n No additional event structure applies. */ - BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED = BLE_L2CAP_EVT_BASE + 4, /**< L2CAP Channel SDU data buffer released event. - \n See @ref ble_l2cap_evt_ch_sdu_buf_released_t. */ - BLE_L2CAP_EVT_CH_CREDIT = BLE_L2CAP_EVT_BASE + 5, /**< L2CAP Channel Credit received. - \n See @ref ble_l2cap_evt_ch_credit_t. */ - BLE_L2CAP_EVT_CH_RX = BLE_L2CAP_EVT_BASE + 6, /**< L2CAP Channel SDU received. - \n See @ref ble_l2cap_evt_ch_rx_t. */ - BLE_L2CAP_EVT_CH_TX = BLE_L2CAP_EVT_BASE + 7, /**< L2CAP Channel SDU transmitted. - \n See @ref ble_l2cap_evt_ch_tx_t. */ -}; - -/** @} */ - -/**@addtogroup BLE_L2CAP_DEFINES Defines - * @{ */ - -/**@brief Maximum number of L2CAP channels per connection. */ -#define BLE_L2CAP_CH_COUNT_MAX (64) - -/**@brief Minimum L2CAP MTU, in bytes. */ -#define BLE_L2CAP_MTU_MIN (23) - -/**@brief Minimum L2CAP MPS, in bytes. */ -#define BLE_L2CAP_MPS_MIN (23) - -/**@brief Invalid CID. */ -#define BLE_L2CAP_CID_INVALID (0x0000) - -/**@brief Default number of credits for @ref sd_ble_l2cap_ch_flow_control. */ -#define BLE_L2CAP_CREDITS_DEFAULT (1) - -/**@defgroup BLE_L2CAP_CH_SETUP_REFUSED_SRCS L2CAP channel setup refused sources - * @{ */ -#define BLE_L2CAP_CH_SETUP_REFUSED_SRC_LOCAL (0x01) /**< Local. */ -#define BLE_L2CAP_CH_SETUP_REFUSED_SRC_REMOTE (0x02) /**< Remote. */ - /** @} */ - - /** @defgroup BLE_L2CAP_CH_STATUS_CODES L2CAP channel status codes - * @{ */ -#define BLE_L2CAP_CH_STATUS_CODE_SUCCESS (0x0000) /**< Success. */ -#define BLE_L2CAP_CH_STATUS_CODE_LE_PSM_NOT_SUPPORTED (0x0002) /**< LE_PSM not supported. */ -#define BLE_L2CAP_CH_STATUS_CODE_NO_RESOURCES (0x0004) /**< No resources available. */ -#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_AUTHENTICATION (0x0005) /**< Insufficient authentication. */ -#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_AUTHORIZATION (0x0006) /**< Insufficient authorization. */ -#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_ENC_KEY_SIZE (0x0007) /**< Insufficient encryption key size. */ -#define BLE_L2CAP_CH_STATUS_CODE_INSUFF_ENC (0x0008) /**< Insufficient encryption. */ -#define BLE_L2CAP_CH_STATUS_CODE_INVALID_SCID (0x0009) /**< Invalid Source CID. */ -#define BLE_L2CAP_CH_STATUS_CODE_SCID_ALLOCATED (0x000A) /**< Source CID already allocated. */ -#define BLE_L2CAP_CH_STATUS_CODE_UNACCEPTABLE_PARAMS (0x000B) /**< Unacceptable parameters. */ -#define BLE_L2CAP_CH_STATUS_CODE_NOT_UNDERSTOOD (0x8000) /**< Command Reject received instead of LE Credit Based Connection Response. */ -#define BLE_L2CAP_CH_STATUS_CODE_TIMEOUT (0xC000) /**< Operation timed out. */ -/** @} */ - -/** @} */ - -/**@addtogroup BLE_L2CAP_STRUCTURES Structures - * @{ */ - -/** - * @brief BLE L2CAP connection configuration parameters, set with @ref sd_ble_cfg_set. - * - * @note These parameters are set per connection, so all L2CAP channels created on this connection - * will have the same parameters. - * - * @retval ::NRF_ERROR_INVALID_PARAM One or more of the following is true: - * - rx_mps is smaller than @ref BLE_L2CAP_MPS_MIN. - * - tx_mps is smaller than @ref BLE_L2CAP_MPS_MIN. - * - ch_count is greater than @ref BLE_L2CAP_CH_COUNT_MAX. - * @retval ::NRF_ERROR_NO_MEM rx_mps or tx_mps is set too high. - */ -typedef struct -{ - uint16_t rx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP shall - be able to receive on L2CAP channels on connections with this - configuration. The minimum value is @ref BLE_L2CAP_MPS_MIN. */ - uint16_t tx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP shall - be able to transmit on L2CAP channels on connections with this - configuration. The minimum value is @ref BLE_L2CAP_MPS_MIN. */ - uint8_t rx_queue_size; /**< Number of SDU data buffers that can be queued for reception per - L2CAP channel. The minimum value is one. */ - uint8_t tx_queue_size; /**< Number of SDU data buffers that can be queued for transmission - per L2CAP channel. The minimum value is one. */ - uint8_t ch_count; /**< Number of L2CAP channels the application can create per connection - with this configuration. The default value is zero, the maximum - value is @ref BLE_L2CAP_CH_COUNT_MAX. - @note if this parameter is set to zero, all other parameters in - @ref ble_l2cap_conn_cfg_t are ignored. */ -} ble_l2cap_conn_cfg_t; - -/**@brief L2CAP channel RX parameters. */ -typedef struct -{ - uint16_t rx_mtu; /**< The maximum L2CAP SDU size, in bytes, that L2CAP shall be able to - receive on this L2CAP channel. - - Must be equal to or greater than @ref BLE_L2CAP_MTU_MIN. */ - uint16_t rx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP shall be - able to receive on this L2CAP channel. - - Must be equal to or greater than @ref BLE_L2CAP_MPS_MIN. - - Must be equal to or less than @ref ble_l2cap_conn_cfg_t::rx_mps. */ - ble_data_t sdu_buf; /**< SDU data buffer for reception. - - If @ref ble_data_t::p_data is non-NULL, initial credits are - issued to the peer. - - If @ref ble_data_t::p_data is NULL, no initial credits are - issued to the peer. */ -} ble_l2cap_ch_rx_params_t; - -/**@brief L2CAP channel setup parameters. */ -typedef struct -{ - ble_l2cap_ch_rx_params_t rx_params; /**< L2CAP channel RX parameters. */ - uint16_t le_psm; /**< LE Protocol/Service Multiplexer. Used when requesting - setup of an L2CAP channel, ignored otherwise. */ - uint16_t status; /**< Status code, see @ref BLE_L2CAP_CH_STATUS_CODES. - Used when replying to a setup request of an L2CAP - channel, ignored otherwise. */ -} ble_l2cap_ch_setup_params_t; - -/**@brief L2CAP channel TX parameters. */ -typedef struct -{ - uint16_t tx_mtu; /**< The maximum L2CAP SDU size, in bytes, that L2CAP is able to - transmit on this L2CAP channel. */ - uint16_t peer_mps; /**< The maximum L2CAP PDU payload size, in bytes, that the peer is - able to receive on this L2CAP channel. */ - uint16_t tx_mps; /**< The maximum L2CAP PDU payload size, in bytes, that L2CAP is able - to transmit on this L2CAP channel. This is effective tx_mps, - selected by the SoftDevice as - MIN( @ref ble_l2cap_ch_tx_params_t::peer_mps, @ref ble_l2cap_conn_cfg_t::tx_mps ) */ - uint16_t credits; /**< Initial credits given by the peer. */ -} ble_l2cap_ch_tx_params_t; - -/**@brief L2CAP Channel Setup Request event. */ -typedef struct -{ - ble_l2cap_ch_tx_params_t tx_params; /**< L2CAP channel TX parameters. */ - uint16_t le_psm; /**< LE Protocol/Service Multiplexer. */ -} ble_l2cap_evt_ch_setup_request_t; - -/**@brief L2CAP Channel Setup Refused event. */ -typedef struct -{ - uint8_t source; /**< Source, see @ref BLE_L2CAP_CH_SETUP_REFUSED_SRCS */ - uint16_t status; /**< Status code, see @ref BLE_L2CAP_CH_STATUS_CODES */ -} ble_l2cap_evt_ch_setup_refused_t; - -/**@brief L2CAP Channel Setup Completed event. */ -typedef struct -{ - ble_l2cap_ch_tx_params_t tx_params; /**< L2CAP channel TX parameters. */ -} ble_l2cap_evt_ch_setup_t; - -/**@brief L2CAP Channel SDU Data Buffer Released event. */ -typedef struct -{ - ble_data_t sdu_buf; /**< Returned reception or transmission SDU data buffer. The SoftDevice - returns SDU data buffers supplied by the application, which have - not yet been returned previously via a @ref BLE_L2CAP_EVT_CH_RX or - @ref BLE_L2CAP_EVT_CH_TX event. */ -} ble_l2cap_evt_ch_sdu_buf_released_t; - -/**@brief L2CAP Channel Credit received event. */ -typedef struct -{ - uint16_t credits; /**< Additional credits given by the peer. */ -} ble_l2cap_evt_ch_credit_t; - -/**@brief L2CAP Channel received SDU event. */ -typedef struct -{ - uint16_t sdu_len; /**< Total SDU length, in bytes. */ - ble_data_t sdu_buf; /**< SDU data buffer. - @note If there is not enough space in the buffer - (sdu_buf.len < sdu_len) then the rest of the SDU will be - silently discarded by the SoftDevice. */ -} ble_l2cap_evt_ch_rx_t; - -/**@brief L2CAP Channel transmitted SDU event. */ -typedef struct -{ - ble_data_t sdu_buf; /**< SDU data buffer. */ -} ble_l2cap_evt_ch_tx_t; - -/**@brief L2CAP event structure. */ -typedef struct -{ - uint16_t conn_handle; /**< Connection Handle on which the event occured. */ - uint16_t local_cid; /**< Local Channel ID of the L2CAP channel, or - @ref BLE_L2CAP_CID_INVALID if not present. */ - union - { - ble_l2cap_evt_ch_setup_request_t ch_setup_request; /**< L2CAP Channel Setup Request Event Parameters. */ - ble_l2cap_evt_ch_setup_refused_t ch_setup_refused; /**< L2CAP Channel Setup Refused Event Parameters. */ - ble_l2cap_evt_ch_setup_t ch_setup; /**< L2CAP Channel Setup Completed Event Parameters. */ - ble_l2cap_evt_ch_sdu_buf_released_t ch_sdu_buf_released;/**< L2CAP Channel SDU Data Buffer Released Event Parameters. */ - ble_l2cap_evt_ch_credit_t credit; /**< L2CAP Channel Credit Received Event Parameters. */ - ble_l2cap_evt_ch_rx_t rx; /**< L2CAP Channel SDU Received Event Parameters. */ - ble_l2cap_evt_ch_tx_t tx; /**< L2CAP Channel SDU Transmitted Event Parameters. */ - } params; /**< Event Parameters. */ -} ble_l2cap_evt_t; - -/** @} */ - -/**@addtogroup BLE_L2CAP_FUNCTIONS Functions - * @{ */ - -/**@brief Set up an L2CAP channel. - * - * @details This function is used to: - * - Request setup of an L2CAP channel: sends an LE Credit Based Connection Request packet to a peer. - * - Reply to a setup request of an L2CAP channel (if called in response to a - * @ref BLE_L2CAP_EVT_CH_SETUP_REQUEST event): sends an LE Credit Based Connection - * Response packet to a peer. - * - * @note A call to this function will require the application to keep the SDU data buffer alive - * until the SDU data buffer is returned in @ref BLE_L2CAP_EVT_CH_RX or - * @ref BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED event. - * - * @events - * @event{@ref BLE_L2CAP_EVT_CH_SETUP, Setup successful.} - * @event{@ref BLE_L2CAP_EVT_CH_SETUP_REFUSED, Setup failed.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_L2CAP_CH_SETUP_MSC} - * @endmscs - * - * @param[in] conn_handle Connection Handle. - * @param[in,out] p_local_cid Pointer to a uint16_t containing Local Channel ID of the L2CAP channel: - * - As input: @ref BLE_L2CAP_CID_INVALID when requesting setup of an L2CAP - * channel or local_cid provided in the @ref BLE_L2CAP_EVT_CH_SETUP_REQUEST - * event when replying to a setup request of an L2CAP channel. - * - As output: local_cid for this channel. - * @param[in] p_params L2CAP channel parameters. - * - * @retval ::NRF_SUCCESS Successfully queued request or response for transmission. - * @retval ::NRF_ERROR_BUSY The stack is busy, process pending events and retry. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid parameter(s) supplied. - * @retval ::NRF_ERROR_INVALID_LENGTH Supplied higher rx_mps than has been configured on this link. - * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (L2CAP channel already set up). - * @retval ::NRF_ERROR_NOT_FOUND CID not found. - * @retval ::NRF_ERROR_RESOURCES The limit has been reached for available L2CAP channels, - * see @ref ble_l2cap_conn_cfg_t::ch_count. - */ -SVCALL(SD_BLE_L2CAP_CH_SETUP, uint32_t, sd_ble_l2cap_ch_setup(uint16_t conn_handle, uint16_t *p_local_cid, ble_l2cap_ch_setup_params_t const *p_params)); - -/**@brief Release an L2CAP channel. - * - * @details This sends a Disconnection Request packet to a peer. - * - * @events - * @event{@ref BLE_L2CAP_EVT_CH_RELEASED, Release complete.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_L2CAP_CH_RELEASE_MSC} - * @endmscs - * - * @param[in] conn_handle Connection Handle. - * @param[in] local_cid Local Channel ID of the L2CAP channel. - * - * @retval ::NRF_SUCCESS Successfully queued request for transmission. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is - * in progress for the L2CAP channel). - * @retval ::NRF_ERROR_NOT_FOUND CID not found. - */ -SVCALL(SD_BLE_L2CAP_CH_RELEASE, uint32_t, sd_ble_l2cap_ch_release(uint16_t conn_handle, uint16_t local_cid)); - -/**@brief Receive an SDU on an L2CAP channel. - * - * @details This may issue additional credits to the peer using an LE Flow Control Credit packet. - * - * @note A call to this function will require the application to keep the memory pointed by - * @ref ble_data_t::p_data alive until the SDU data buffer is returned in @ref BLE_L2CAP_EVT_CH_RX - * or @ref BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED event. - * - * @note The SoftDevice can queue up to @ref ble_l2cap_conn_cfg_t::rx_queue_size SDU data buffers - * for reception per L2CAP channel. - * - * @events - * @event{@ref BLE_L2CAP_EVT_CH_RX, The SDU is received.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_L2CAP_CH_RX_MSC} - * @endmscs - * - * @param[in] conn_handle Connection Handle. - * @param[in] local_cid Local Channel ID of the L2CAP channel. - * @param[in] p_sdu_buf Pointer to the SDU data buffer. - * - * @retval ::NRF_SUCCESS Buffer accepted. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is - * in progress for an L2CAP channel). - * @retval ::NRF_ERROR_NOT_FOUND CID not found. - * @retval ::NRF_ERROR_RESOURCES Too many SDU data buffers supplied. Wait for a - * @ref BLE_L2CAP_EVT_CH_RX event and retry. - */ -SVCALL(SD_BLE_L2CAP_CH_RX, uint32_t, sd_ble_l2cap_ch_rx(uint16_t conn_handle, uint16_t local_cid, ble_data_t const *p_sdu_buf)); - -/**@brief Transmit an SDU on an L2CAP channel. - * - * @note A call to this function will require the application to keep the memory pointed by - * @ref ble_data_t::p_data alive until the SDU data buffer is returned in @ref BLE_L2CAP_EVT_CH_TX - * or @ref BLE_L2CAP_EVT_CH_SDU_BUF_RELEASED event. - * - * @note The SoftDevice can queue up to @ref ble_l2cap_conn_cfg_t::tx_queue_size SDUs for - * transmission per L2CAP channel. - * - * @note The application can keep track of the available credits for transmission by following - * the procedure below: - * - Store initial credits given by the peer in a variable. - * (Initial credits are provided in a @ref BLE_L2CAP_EVT_CH_SETUP event.) - * - Decrement the variable, which stores the currently available credits, by - * ceiling((@ref ble_data_t::len + 2) / tx_mps) when a call to this function returns - * @ref NRF_SUCCESS. (tx_mps is provided in a @ref BLE_L2CAP_EVT_CH_SETUP event.) - * - Increment the variable, which stores the currently available credits, by additional - * credits given by the peer in a @ref BLE_L2CAP_EVT_CH_CREDIT event. - * - * @events - * @event{@ref BLE_L2CAP_EVT_CH_TX, The SDU is transmitted.} - * @endevents - * - * @mscs - * @mmsc{@ref BLE_L2CAP_CH_TX_MSC} - * @endmscs - * - * @param[in] conn_handle Connection Handle. - * @param[in] local_cid Local Channel ID of the L2CAP channel. - * @param[in] p_sdu_buf Pointer to the SDU data buffer. - * - * @retval ::NRF_SUCCESS Successfully queued L2CAP SDU for transmission. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is - * in progress for the L2CAP channel). - * @retval ::NRF_ERROR_NOT_FOUND CID not found. - * @retval ::NRF_ERROR_DATA_SIZE Invalid SDU length supplied, must not be more than - * @ref ble_l2cap_ch_tx_params_t::tx_mtu provided in - * @ref BLE_L2CAP_EVT_CH_SETUP event. - * @retval ::NRF_ERROR_RESOURCES Too many SDUs queued for transmission. Wait for a - * @ref BLE_L2CAP_EVT_CH_TX event and retry. - */ -SVCALL(SD_BLE_L2CAP_CH_TX, uint32_t, sd_ble_l2cap_ch_tx(uint16_t conn_handle, uint16_t local_cid, ble_data_t const *p_sdu_buf)); - -/**@brief Advanced SDU reception flow control. - * - * @details Adjust the way the SoftDevice issues credits to the peer. - * This may issue additional credits to the peer using an LE Flow Control Credit packet. - * - * @mscs - * @mmsc{@ref BLE_L2CAP_CH_FLOW_CONTROL_MSC} - * @endmscs - * - * @param[in] conn_handle Connection Handle. - * @param[in] local_cid Local Channel ID of the L2CAP channel or @ref BLE_L2CAP_CID_INVALID to set - * the value that will be used for newly created channels. - * @param[in] credits Number of credits that the SoftDevice will make sure the peer has every - * time it starts using a new reception buffer. - * - @ref BLE_L2CAP_CREDITS_DEFAULT is the default value the SoftDevice will - * use if this function is not called. - * - If set to zero, the SoftDevice will stop issuing credits for new reception - * buffers the application provides or has provided. SDU reception that is - * currently ongoing will be allowed to complete. - * @param[out] p_credits NULL or pointer to a uint16_t. If a valid pointer is provided, it will be - * written by the SoftDevice with the number of credits that is or will be - * available to the peer. If the value written by the SoftDevice is 0 when - * credits parameter was set to 0, the peer will not be able to send more - * data until more credits are provided by calling this function again with - * credits > 0. This parameter is ignored when local_cid is set to - * @ref BLE_L2CAP_CID_INVALID. - * - * @note Application should take care when setting number of credits higher than default value. In - * this case the application must make sure that the SoftDevice always has reception buffers - * available (see @ref sd_ble_l2cap_ch_rx) for that channel. If the SoftDevice does not have - * such buffers available, packets may be NACKed on the Link Layer and all Bluetooth traffic - * on the connection handle may be stalled until the SoftDevice again has an available - * reception buffer. This applies even if the application has used this call to set the - * credits back to default, or zero. - * - * @retval ::NRF_SUCCESS Flow control parameters accepted. - * @retval ::NRF_ERROR_INVALID_ADDR Invalid pointer supplied. - * @retval ::BLE_ERROR_INVALID_CONN_HANDLE Invalid Connection Handle. - * @retval ::NRF_ERROR_INVALID_STATE Invalid State to perform operation (Setup or release is - * in progress for an L2CAP channel). - * @retval ::NRF_ERROR_NOT_FOUND CID not found. - */ -SVCALL(SD_BLE_L2CAP_CH_FLOW_CONTROL, uint32_t, sd_ble_l2cap_ch_flow_control(uint16_t conn_handle, uint16_t local_cid, uint16_t credits, uint16_t *p_credits)); - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // BLE_L2CAP_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_ranges.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_ranges.h deleted file mode 100644 index 0935bca..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_ranges.h +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (c) 2012 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_COMMON - @{ - @defgroup ble_ranges Module specific SVC, event and option number subranges - @{ - - @brief Definition of SVC, event and option number subranges for each API module. - - @note - SVCs, event and option numbers are split into subranges for each API module. - Each module receives its entire allocated range of SVC calls, whether implemented or not, - but return BLE_ERROR_NOT_SUPPORTED for unimplemented or undefined calls in its range. - - Note that the symbols BLE__SVC_LAST is the end of the allocated SVC range, - rather than the last SVC function call actually defined and implemented. - - Specific SVC, event and option values are defined in each module's ble_.h file, - which defines names of each individual SVC code based on the range start value. -*/ - -#ifndef BLE_RANGES_H__ -#define BLE_RANGES_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#define BLE_SVC_BASE 0x60 /**< Common BLE SVC base. */ -#define BLE_SVC_LAST 0x6B /**< Common BLE SVC last. */ - -#define BLE_GAP_SVC_BASE 0x6C /**< GAP BLE SVC base. */ -#define BLE_GAP_SVC_LAST 0x9A /**< GAP BLE SVC last. */ - -#define BLE_GATTC_SVC_BASE 0x9B /**< GATTC BLE SVC base. */ -#define BLE_GATTC_SVC_LAST 0xA7 /**< GATTC BLE SVC last. */ - -#define BLE_GATTS_SVC_BASE 0xA8 /**< GATTS BLE SVC base. */ -#define BLE_GATTS_SVC_LAST 0xB7 /**< GATTS BLE SVC last. */ - -#define BLE_L2CAP_SVC_BASE 0xB8 /**< L2CAP BLE SVC base. */ -#define BLE_L2CAP_SVC_LAST 0xBF /**< L2CAP BLE SVC last. */ - - -#define BLE_EVT_INVALID 0x00 /**< Invalid BLE Event. */ - -#define BLE_EVT_BASE 0x01 /**< Common BLE Event base. */ -#define BLE_EVT_LAST 0x0F /**< Common BLE Event last. */ - -#define BLE_GAP_EVT_BASE 0x10 /**< GAP BLE Event base. */ -#define BLE_GAP_EVT_LAST 0x2F /**< GAP BLE Event last. */ - -#define BLE_GATTC_EVT_BASE 0x30 /**< GATTC BLE Event base. */ -#define BLE_GATTC_EVT_LAST 0x4F /**< GATTC BLE Event last. */ - -#define BLE_GATTS_EVT_BASE 0x50 /**< GATTS BLE Event base. */ -#define BLE_GATTS_EVT_LAST 0x6F /**< GATTS BLE Event last. */ - -#define BLE_L2CAP_EVT_BASE 0x70 /**< L2CAP BLE Event base. */ -#define BLE_L2CAP_EVT_LAST 0x8F /**< L2CAP BLE Event last. */ - - -#define BLE_OPT_INVALID 0x00 /**< Invalid BLE Option. */ - -#define BLE_OPT_BASE 0x01 /**< Common BLE Option base. */ -#define BLE_OPT_LAST 0x1F /**< Common BLE Option last. */ - -#define BLE_GAP_OPT_BASE 0x20 /**< GAP BLE Option base. */ -#define BLE_GAP_OPT_LAST 0x3F /**< GAP BLE Option last. */ - -#define BLE_GATT_OPT_BASE 0x40 /**< GATT BLE Option base. */ -#define BLE_GATT_OPT_LAST 0x5F /**< GATT BLE Option last. */ - -#define BLE_GATTC_OPT_BASE 0x60 /**< GATTC BLE Option base. */ -#define BLE_GATTC_OPT_LAST 0x7F /**< GATTC BLE Option last. */ - -#define BLE_GATTS_OPT_BASE 0x80 /**< GATTS BLE Option base. */ -#define BLE_GATTS_OPT_LAST 0x9F /**< GATTS BLE Option last. */ - -#define BLE_L2CAP_OPT_BASE 0xA0 /**< L2CAP BLE Option base. */ -#define BLE_L2CAP_OPT_LAST 0xBF /**< L2CAP BLE Option last. */ - - -#define BLE_CFG_INVALID 0x00 /**< Invalid BLE configuration. */ - -#define BLE_CFG_BASE 0x01 /**< Common BLE configuration base. */ -#define BLE_CFG_LAST 0x1F /**< Common BLE configuration last. */ - -#define BLE_CONN_CFG_BASE 0x20 /**< BLE connection configuration base. */ -#define BLE_CONN_CFG_LAST 0x3F /**< BLE connection configuration last. */ - -#define BLE_GAP_CFG_BASE 0x40 /**< GAP BLE configuration base. */ -#define BLE_GAP_CFG_LAST 0x5F /**< GAP BLE configuration last. */ - -#define BLE_GATT_CFG_BASE 0x60 /**< GATT BLE configuration base. */ -#define BLE_GATT_CFG_LAST 0x7F /**< GATT BLE configuration last. */ - -#define BLE_GATTC_CFG_BASE 0x80 /**< GATTC BLE configuration base. */ -#define BLE_GATTC_CFG_LAST 0x9F /**< GATTC BLE configuration last. */ - -#define BLE_GATTS_CFG_BASE 0xA0 /**< GATTS BLE configuration base. */ -#define BLE_GATTS_CFG_LAST 0xBF /**< GATTS BLE configuration last. */ - -#define BLE_L2CAP_CFG_BASE 0xC0 /**< L2CAP BLE configuration base. */ -#define BLE_L2CAP_CFG_LAST 0xDF /**< L2CAP BLE configuration last. */ - - - - - -#ifdef __cplusplus -} -#endif -#endif /* BLE_RANGES_H__ */ - -/** - @} - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_types.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_types.h deleted file mode 100644 index 88c9318..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/ble_types.h +++ /dev/null @@ -1,215 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup BLE_COMMON - @{ - @defgroup ble_types Common types and macro definitions - @{ - - @brief Common types and macro definitions for the BLE SoftDevice. - */ - -#ifndef BLE_TYPES_H__ -#define BLE_TYPES_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup BLE_TYPES_DEFINES Defines - * @{ */ - -/** @defgroup BLE_CONN_HANDLES BLE Connection Handles - * @{ */ -#define BLE_CONN_HANDLE_INVALID 0xFFFF /**< Invalid Connection Handle. */ -#define BLE_CONN_HANDLE_ALL 0xFFFE /**< Applies to all Connection Handles. */ -/** @} */ - - -/** @defgroup BLE_UUID_VALUES Assigned Values for BLE UUIDs - * @{ */ -/* Generic UUIDs, applicable to all services */ -#define BLE_UUID_UNKNOWN 0x0000 /**< Reserved UUID. */ -#define BLE_UUID_SERVICE_PRIMARY 0x2800 /**< Primary Service. */ -#define BLE_UUID_SERVICE_SECONDARY 0x2801 /**< Secondary Service. */ -#define BLE_UUID_SERVICE_INCLUDE 0x2802 /**< Include. */ -#define BLE_UUID_CHARACTERISTIC 0x2803 /**< Characteristic. */ -#define BLE_UUID_DESCRIPTOR_CHAR_EXT_PROP 0x2900 /**< Characteristic Extended Properties Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_USER_DESC 0x2901 /**< Characteristic User Description Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CLIENT_CHAR_CONFIG 0x2902 /**< Client Characteristic Configuration Descriptor. */ -#define BLE_UUID_DESCRIPTOR_SERVER_CHAR_CONFIG 0x2903 /**< Server Characteristic Configuration Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_PRESENTATION_FORMAT 0x2904 /**< Characteristic Presentation Format Descriptor. */ -#define BLE_UUID_DESCRIPTOR_CHAR_AGGREGATE_FORMAT 0x2905 /**< Characteristic Aggregate Format Descriptor. */ -/* GATT specific UUIDs */ -#define BLE_UUID_GATT 0x1801 /**< Generic Attribute Profile. */ -#define BLE_UUID_GATT_CHARACTERISTIC_SERVICE_CHANGED 0x2A05 /**< Service Changed Characteristic. */ -/* GAP specific UUIDs */ -#define BLE_UUID_GAP 0x1800 /**< Generic Access Profile. */ -#define BLE_UUID_GAP_CHARACTERISTIC_DEVICE_NAME 0x2A00 /**< Device Name Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_APPEARANCE 0x2A01 /**< Appearance Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_RECONN_ADDR 0x2A03 /**< Reconnection Address Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_PPCP 0x2A04 /**< Peripheral Preferred Connection Parameters Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_CAR 0x2AA6 /**< Central Address Resolution Characteristic. */ -#define BLE_UUID_GAP_CHARACTERISTIC_RPA_ONLY 0x2AC9 /**< Resolvable Private Address Only Characteristic. */ -/** @} */ - - -/** @defgroup BLE_UUID_TYPES Types of UUID - * @{ */ -#define BLE_UUID_TYPE_UNKNOWN 0x00 /**< Invalid UUID type. */ -#define BLE_UUID_TYPE_BLE 0x01 /**< Bluetooth SIG UUID (16-bit). */ -#define BLE_UUID_TYPE_VENDOR_BEGIN 0x02 /**< Vendor UUID types start at this index (128-bit). */ -/** @} */ - - -/** @defgroup BLE_APPEARANCES Bluetooth Appearance values - * @note Retrieved from http://developer.bluetooth.org/gatt/characteristics/Pages/CharacteristicViewer.aspx?u=org.bluetooth.characteristic.gap.appearance.xml - * @{ */ -#define BLE_APPEARANCE_UNKNOWN 0 /**< Unknown. */ -#define BLE_APPEARANCE_GENERIC_PHONE 64 /**< Generic Phone. */ -#define BLE_APPEARANCE_GENERIC_COMPUTER 128 /**< Generic Computer. */ -#define BLE_APPEARANCE_GENERIC_WATCH 192 /**< Generic Watch. */ -#define BLE_APPEARANCE_WATCH_SPORTS_WATCH 193 /**< Watch: Sports Watch. */ -#define BLE_APPEARANCE_GENERIC_CLOCK 256 /**< Generic Clock. */ -#define BLE_APPEARANCE_GENERIC_DISPLAY 320 /**< Generic Display. */ -#define BLE_APPEARANCE_GENERIC_REMOTE_CONTROL 384 /**< Generic Remote Control. */ -#define BLE_APPEARANCE_GENERIC_EYE_GLASSES 448 /**< Generic Eye-glasses. */ -#define BLE_APPEARANCE_GENERIC_TAG 512 /**< Generic Tag. */ -#define BLE_APPEARANCE_GENERIC_KEYRING 576 /**< Generic Keyring. */ -#define BLE_APPEARANCE_GENERIC_MEDIA_PLAYER 640 /**< Generic Media Player. */ -#define BLE_APPEARANCE_GENERIC_BARCODE_SCANNER 704 /**< Generic Barcode Scanner. */ -#define BLE_APPEARANCE_GENERIC_THERMOMETER 768 /**< Generic Thermometer. */ -#define BLE_APPEARANCE_THERMOMETER_EAR 769 /**< Thermometer: Ear. */ -#define BLE_APPEARANCE_GENERIC_HEART_RATE_SENSOR 832 /**< Generic Heart rate Sensor. */ -#define BLE_APPEARANCE_HEART_RATE_SENSOR_HEART_RATE_BELT 833 /**< Heart Rate Sensor: Heart Rate Belt. */ -#define BLE_APPEARANCE_GENERIC_BLOOD_PRESSURE 896 /**< Generic Blood Pressure. */ -#define BLE_APPEARANCE_BLOOD_PRESSURE_ARM 897 /**< Blood Pressure: Arm. */ -#define BLE_APPEARANCE_BLOOD_PRESSURE_WRIST 898 /**< Blood Pressure: Wrist. */ -#define BLE_APPEARANCE_GENERIC_HID 960 /**< Human Interface Device (HID). */ -#define BLE_APPEARANCE_HID_KEYBOARD 961 /**< Keyboard (HID Subtype). */ -#define BLE_APPEARANCE_HID_MOUSE 962 /**< Mouse (HID Subtype). */ -#define BLE_APPEARANCE_HID_JOYSTICK 963 /**< Joystick (HID Subtype). */ -#define BLE_APPEARANCE_HID_GAMEPAD 964 /**< Gamepad (HID Subtype). */ -#define BLE_APPEARANCE_HID_DIGITIZERSUBTYPE 965 /**< Digitizer Tablet (HID Subtype). */ -#define BLE_APPEARANCE_HID_CARD_READER 966 /**< Card Reader (HID Subtype). */ -#define BLE_APPEARANCE_HID_DIGITAL_PEN 967 /**< Digital Pen (HID Subtype). */ -#define BLE_APPEARANCE_HID_BARCODE 968 /**< Barcode Scanner (HID Subtype). */ -#define BLE_APPEARANCE_GENERIC_GLUCOSE_METER 1024 /**< Generic Glucose Meter. */ -#define BLE_APPEARANCE_GENERIC_RUNNING_WALKING_SENSOR 1088 /**< Generic Running Walking Sensor. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_IN_SHOE 1089 /**< Running Walking Sensor: In-Shoe. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_SHOE 1090 /**< Running Walking Sensor: On-Shoe. */ -#define BLE_APPEARANCE_RUNNING_WALKING_SENSOR_ON_HIP 1091 /**< Running Walking Sensor: On-Hip. */ -#define BLE_APPEARANCE_GENERIC_CYCLING 1152 /**< Generic Cycling. */ -#define BLE_APPEARANCE_CYCLING_CYCLING_COMPUTER 1153 /**< Cycling: Cycling Computer. */ -#define BLE_APPEARANCE_CYCLING_SPEED_SENSOR 1154 /**< Cycling: Speed Sensor. */ -#define BLE_APPEARANCE_CYCLING_CADENCE_SENSOR 1155 /**< Cycling: Cadence Sensor. */ -#define BLE_APPEARANCE_CYCLING_POWER_SENSOR 1156 /**< Cycling: Power Sensor. */ -#define BLE_APPEARANCE_CYCLING_SPEED_CADENCE_SENSOR 1157 /**< Cycling: Speed and Cadence Sensor. */ -#define BLE_APPEARANCE_GENERIC_PULSE_OXIMETER 3136 /**< Generic Pulse Oximeter. */ -#define BLE_APPEARANCE_PULSE_OXIMETER_FINGERTIP 3137 /**< Fingertip (Pulse Oximeter subtype). */ -#define BLE_APPEARANCE_PULSE_OXIMETER_WRIST_WORN 3138 /**< Wrist Worn(Pulse Oximeter subtype). */ -#define BLE_APPEARANCE_GENERIC_WEIGHT_SCALE 3200 /**< Generic Weight Scale. */ -#define BLE_APPEARANCE_GENERIC_OUTDOOR_SPORTS_ACT 5184 /**< Generic Outdoor Sports Activity. */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_DISP 5185 /**< Location Display Device (Outdoor Sports Activity subtype). */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_DISP 5186 /**< Location and Navigation Display Device (Outdoor Sports Activity subtype). */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_POD 5187 /**< Location Pod (Outdoor Sports Activity subtype). */ -#define BLE_APPEARANCE_OUTDOOR_SPORTS_ACT_LOC_AND_NAV_POD 5188 /**< Location and Navigation Pod (Outdoor Sports Activity subtype). */ -/** @} */ - -/** @brief Set .type and .uuid fields of ble_uuid_struct to specified UUID value. */ -#define BLE_UUID_BLE_ASSIGN(instance, value) do {\ - instance.type = BLE_UUID_TYPE_BLE; \ - instance.uuid = value;} while(0) - -/** @brief Copy type and uuid members from src to dst ble_uuid_t pointer. Both pointers must be valid/non-null. */ -#define BLE_UUID_COPY_PTR(dst, src) do {\ - (dst)->type = (src)->type; \ - (dst)->uuid = (src)->uuid;} while(0) - -/** @brief Copy type and uuid members from src to dst ble_uuid_t struct. */ -#define BLE_UUID_COPY_INST(dst, src) do {\ - (dst).type = (src).type; \ - (dst).uuid = (src).uuid;} while(0) - -/** @brief Compare for equality both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ -#define BLE_UUID_EQ(p_uuid1, p_uuid2) \ - (((p_uuid1)->type == (p_uuid2)->type) && ((p_uuid1)->uuid == (p_uuid2)->uuid)) - -/** @brief Compare for difference both type and uuid members of two (valid, non-null) ble_uuid_t pointers. */ -#define BLE_UUID_NEQ(p_uuid1, p_uuid2) \ - (((p_uuid1)->type != (p_uuid2)->type) || ((p_uuid1)->uuid != (p_uuid2)->uuid)) - -/** @} */ - -/** @addtogroup BLE_TYPES_STRUCTURES Structures - * @{ */ - -/** @brief 128 bit UUID values. */ -typedef struct -{ - uint8_t uuid128[16]; /**< Little-Endian UUID bytes. */ -} ble_uuid128_t; - -/** @brief Bluetooth Low Energy UUID type, encapsulates both 16-bit and 128-bit UUIDs. */ -typedef struct -{ - uint16_t uuid; /**< 16-bit UUID value or octets 12-13 of 128-bit UUID. */ - uint8_t type; /**< UUID type, see @ref BLE_UUID_TYPES. If type is @ref BLE_UUID_TYPE_UNKNOWN, the value of uuid is undefined. */ -} ble_uuid_t; - -/**@brief Data structure. */ -typedef struct -{ - uint8_t *p_data; /**< Pointer to the data buffer provided to/from the application. */ - uint16_t len; /**< Length of the data buffer, in bytes. */ -} ble_data_t; - -/** @} */ -#ifdef __cplusplus -} -#endif - -#endif /* BLE_TYPES_H__ */ - -/** - @} - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf52/nrf_mbr.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf52/nrf_mbr.h deleted file mode 100644 index 1b24874..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf52/nrf_mbr.h +++ /dev/null @@ -1,242 +0,0 @@ -/* - * Copyright (c) 2014 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @defgroup nrf_mbr_api Master Boot Record API - @{ - - @brief APIs for updating SoftDevice and BootLoader - -*/ - -#ifndef NRF_MBR_H__ -#define NRF_MBR_H__ - -#include "nrf_svc.h" -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup NRF_MBR_DEFINES Defines - * @{ */ - -/**@brief MBR SVC Base number. */ -#define MBR_SVC_BASE (0x18) - -/**@brief Page size in words. */ -#define MBR_PAGE_SIZE_IN_WORDS (1024) - -/** @brief The size that must be reserved for the MBR when a SoftDevice is written to flash. -This is the offset where the first byte of the SoftDevice hex file is written.*/ -#define MBR_SIZE (0x1000) - -/** @} */ - -/** @addtogroup NRF_MBR_ENUMS Enumerations - * @{ */ - -/**@brief nRF Master Boot Record API SVC numbers. */ -enum NRF_MBR_SVCS -{ - SD_MBR_COMMAND = MBR_SVC_BASE, /**< ::sd_mbr_command */ -}; - -/**@brief Possible values for ::sd_mbr_command_t.command */ -enum NRF_MBR_COMMANDS -{ - SD_MBR_COMMAND_COPY_BL, /**< Copy a new BootLoader. @see ::sd_mbr_command_copy_bl_t*/ - SD_MBR_COMMAND_COPY_SD, /**< Copy a new SoftDevice. @see ::sd_mbr_command_copy_sd_t*/ - SD_MBR_COMMAND_INIT_SD, /**< Initialize forwarding interrupts to SD, and run reset function in SD. Does not require any parameters in ::sd_mbr_command_t params.*/ - SD_MBR_COMMAND_COMPARE, /**< This command works like memcmp. @see ::sd_mbr_command_compare_t*/ - SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET, /**< Change the address the MBR starts after a reset. @see ::sd_mbr_command_vector_table_base_set_t*/ - SD_MBR_COMMAND_RESERVED, - SD_MBR_COMMAND_IRQ_FORWARD_ADDRESS_SET, /**< Start forwarding all interrupts to this address. @see ::sd_mbr_command_irq_forward_address_set_t*/ -}; - -/** @} */ - -/** @addtogroup NRF_MBR_TYPES Types - * @{ */ - -/**@brief This command copies part of a new SoftDevice - * - * The destination area is erased before copying. - * If dst is in the middle of a flash page, that whole flash page will be erased. - * If (dst+len) is in the middle of a flash page, that whole flash page will be erased. - * - * The user of this function is responsible for setting the BPROT registers. - * - * @retval ::NRF_SUCCESS indicates that the contents of the memory blocks where copied correctly. - * @retval ::NRF_ERROR_INTERNAL indicates that the contents of the memory blocks where not verified correctly after copying. - */ -typedef struct -{ - uint32_t *src; /**< Pointer to the source of data to be copied.*/ - uint32_t *dst; /**< Pointer to the destination where the content is to be copied.*/ - uint32_t len; /**< Number of 32 bit words to copy. Must be a multiple of @ref MBR_PAGE_SIZE_IN_WORDS words.*/ -} sd_mbr_command_copy_sd_t; - - -/**@brief This command works like memcmp, but takes the length in words. - * - * @retval ::NRF_SUCCESS indicates that the contents of both memory blocks are equal. - * @retval ::NRF_ERROR_NULL indicates that the contents of the memory blocks are not equal. - */ -typedef struct -{ - uint32_t *ptr1; /**< Pointer to block of memory. */ - uint32_t *ptr2; /**< Pointer to block of memory. */ - uint32_t len; /**< Number of 32 bit words to compare.*/ -} sd_mbr_command_compare_t; - - -/**@brief This command copies a new BootLoader. - * - * With this command, destination of BootLoader is always the address written in - * NRF_UICR->BOOTADDR. - * - * Destination is erased by this function. - * If (destination+bl_len) is in the middle of a flash page, that whole flash page will be erased. - * - * This function will use the flash protect peripheral (BPROT or ACL) to protect the flash that is - * not intended to be written. - * - * On success, this function will not return. It will start the new BootLoader from reset-vector as normal. - * - * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen. - * @retval ::NRF_ERROR_FORBIDDEN if NRF_UICR->BOOTADDR is not set. - * @retval ::NRF_ERROR_INVALID_LENGTH if parameters attempts to read or write outside flash area. - * @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see SoftDevice Specification for more info) - */ -typedef struct -{ - uint32_t *bl_src; /**< Pointer to the source of the Bootloader to be be copied.*/ - uint32_t bl_len; /**< Number of 32 bit words to copy for BootLoader. */ -} sd_mbr_command_copy_bl_t; - -/**@brief Change the address the MBR starts after a reset - * - * Once this function has been called, this address is where the MBR will start to forward - * interrupts to after a reset. - * - * To restore default forwarding this function should be called with @ref address set to 0. The - * MBR will then start forwarding interrupts to the address in NFR_UICR->BOOTADDR or to the - * SoftDevice if the BOOTADDR is not set. - * - * On success, this function will not return. It will reset the device. - * - * @retval ::NRF_ERROR_INTERNAL indicates an internal error that should not happen. - * @retval ::NRF_ERROR_INVALID_ADDR if parameter address is outside of the flash size. - * @retval ::NRF_ERROR_NO_MEM if no parameter page is provided (see SoftDevice Specification for more info) - */ -typedef struct -{ - uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/ -} sd_mbr_command_vector_table_base_set_t; - -/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the MBR - * - * Unlike sd_mbr_command_vector_table_base_set_t, this function does not reset, and it does not - * change where the MBR starts after reset. - * - * @retval ::NRF_SUCCESS - */ -typedef struct -{ - uint32_t address; /**< The base address of the interrupt vector table for forwarded interrupts.*/ -} sd_mbr_command_irq_forward_address_set_t; - -/**@brief Input structure containing data used when calling ::sd_mbr_command - * - * Depending on what command value that is set, the corresponding params value type must also be - * set. See @ref NRF_MBR_COMMANDS for command types and corresponding params value type. If command - * @ref SD_MBR_COMMAND_INIT_SD is set, it is not necessary to set any values under params. - */ -typedef struct -{ - uint32_t command; /**< Type of command to be issued. See @ref NRF_MBR_COMMANDS. */ - union - { - sd_mbr_command_copy_sd_t copy_sd; /**< Parameters for copy SoftDevice.*/ - sd_mbr_command_compare_t compare; /**< Parameters for verify.*/ - sd_mbr_command_copy_bl_t copy_bl; /**< Parameters for copy BootLoader. Requires parameter page. */ - sd_mbr_command_vector_table_base_set_t base_set; /**< Parameters for vector table base set. Requires parameter page.*/ - sd_mbr_command_irq_forward_address_set_t irq_forward_address_set; /**< Parameters for irq forward address set*/ - } params; /**< Command parameters. */ -} sd_mbr_command_t; - -/** @} */ - -/** @addtogroup NRF_MBR_FUNCTIONS Functions - * @{ */ - -/**@brief Issue Master Boot Record commands - * - * Commands used when updating a SoftDevice and bootloader. - * - * The @ref SD_MBR_COMMAND_COPY_BL and @ref SD_MBR_COMMAND_VECTOR_TABLE_BASE_SET requires - * parameters to be retained by the MBR when resetting the IC. This is done in a separate flash - * page provided by the application. The UICR register UICR.NRFFW[1] must be set to an address - * corresponding to a page in the application flash space. This page will be cleared by the MBR and - * used to store the command before reset. When the UICR.NRFFW[1] field is set the page it refers - * to must not be used by the application. If the UICR.NRFFW[1] is set to 0xFFFFFFFF (the default) - * MBR commands which use flash will be unavailable and return @ref NRF_ERROR_NO_MEM. - * - * @param[in] param Pointer to a struct describing the command. - * - * @note For return values, see ::sd_mbr_command_copy_sd_t, ::sd_mbr_command_copy_bl_t, - * ::sd_mbr_command_compare_t, ::sd_mbr_command_vector_table_base_set_t, - * ::sd_mbr_command_irq_forward_address_set_t - * - * @retval ::NRF_ERROR_NO_MEM if UICR.NRFFW[1] is not set (i.e. is 0xFFFFFFFF). - * @retval ::NRF_ERROR_INVALID_PARAM if an invalid command is given. -*/ -SVCALL(SD_MBR_COMMAND, uint32_t, sd_mbr_command(sd_mbr_command_t* param)); - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // NRF_MBR_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error.h deleted file mode 100644 index 6badee9..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2014 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - - /** - @defgroup nrf_error SoftDevice Global Error Codes - @{ - - @brief Global Error definitions -*/ - -/* Header guard */ -#ifndef NRF_ERROR_H__ -#define NRF_ERROR_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -/** @defgroup NRF_ERRORS_BASE Error Codes Base number definitions - * @{ */ -#define NRF_ERROR_BASE_NUM (0x0) ///< Global error base -#define NRF_ERROR_SDM_BASE_NUM (0x1000) ///< SDM error base -#define NRF_ERROR_SOC_BASE_NUM (0x2000) ///< SoC error base -#define NRF_ERROR_STK_BASE_NUM (0x3000) ///< STK error base -/** @} */ - -#define NRF_SUCCESS (NRF_ERROR_BASE_NUM + 0) ///< Successful command -#define NRF_ERROR_SVC_HANDLER_MISSING (NRF_ERROR_BASE_NUM + 1) ///< SVC handler is missing -#define NRF_ERROR_SOFTDEVICE_NOT_ENABLED (NRF_ERROR_BASE_NUM + 2) ///< SoftDevice has not been enabled -#define NRF_ERROR_INTERNAL (NRF_ERROR_BASE_NUM + 3) ///< Internal Error -#define NRF_ERROR_NO_MEM (NRF_ERROR_BASE_NUM + 4) ///< No Memory for operation -#define NRF_ERROR_NOT_FOUND (NRF_ERROR_BASE_NUM + 5) ///< Not found -#define NRF_ERROR_NOT_SUPPORTED (NRF_ERROR_BASE_NUM + 6) ///< Not supported -#define NRF_ERROR_INVALID_PARAM (NRF_ERROR_BASE_NUM + 7) ///< Invalid Parameter -#define NRF_ERROR_INVALID_STATE (NRF_ERROR_BASE_NUM + 8) ///< Invalid state, operation disallowed in this state -#define NRF_ERROR_INVALID_LENGTH (NRF_ERROR_BASE_NUM + 9) ///< Invalid Length -#define NRF_ERROR_INVALID_FLAGS (NRF_ERROR_BASE_NUM + 10) ///< Invalid Flags -#define NRF_ERROR_INVALID_DATA (NRF_ERROR_BASE_NUM + 11) ///< Invalid Data -#define NRF_ERROR_DATA_SIZE (NRF_ERROR_BASE_NUM + 12) ///< Invalid Data size -#define NRF_ERROR_TIMEOUT (NRF_ERROR_BASE_NUM + 13) ///< Operation timed out -#define NRF_ERROR_NULL (NRF_ERROR_BASE_NUM + 14) ///< Null Pointer -#define NRF_ERROR_FORBIDDEN (NRF_ERROR_BASE_NUM + 15) ///< Forbidden Operation -#define NRF_ERROR_INVALID_ADDR (NRF_ERROR_BASE_NUM + 16) ///< Bad Memory Address -#define NRF_ERROR_BUSY (NRF_ERROR_BASE_NUM + 17) ///< Busy -#define NRF_ERROR_CONN_COUNT (NRF_ERROR_BASE_NUM + 18) ///< Maximum connection count exceeded. -#define NRF_ERROR_RESOURCES (NRF_ERROR_BASE_NUM + 19) ///< Not enough resources for operation - -#ifdef __cplusplus -} -#endif -#endif // NRF_ERROR_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error_sdm.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error_sdm.h deleted file mode 100644 index 530959b..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error_sdm.h +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - - /** - @addtogroup nrf_sdm_api - @{ - @defgroup nrf_sdm_error SoftDevice Manager Error Codes - @{ - - @brief Error definitions for the SDM API -*/ - -/* Header guard */ -#ifndef NRF_ERROR_SDM_H__ -#define NRF_ERROR_SDM_H__ - -#include "nrf_error.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#define NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN (NRF_ERROR_SDM_BASE_NUM + 0) ///< Unknown LFCLK source. -#define NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION (NRF_ERROR_SDM_BASE_NUM + 1) ///< Incorrect interrupt configuration (can be caused by using illegal priority levels, or having enabled SoftDevice interrupts). -#define NRF_ERROR_SDM_INCORRECT_CLENR0 (NRF_ERROR_SDM_BASE_NUM + 2) ///< Incorrect CLENR0 (can be caused by erroneous SoftDevice flashing). - -#ifdef __cplusplus -} -#endif -#endif // NRF_ERROR_SDM_H__ - -/** - @} - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error_soc.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error_soc.h deleted file mode 100644 index 1e784b8..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_error_soc.h +++ /dev/null @@ -1,85 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @addtogroup nrf_soc_api - @{ - @defgroup nrf_soc_error SoC Library Error Codes - @{ - - @brief Error definitions for the SoC library - -*/ - -/* Header guard */ -#ifndef NRF_ERROR_SOC_H__ -#define NRF_ERROR_SOC_H__ - -#include "nrf_error.h" -#ifdef __cplusplus -extern "C" { -#endif - -/* Mutex Errors */ -#define NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN (NRF_ERROR_SOC_BASE_NUM + 0) ///< Mutex already taken - -/* NVIC errors */ -#define NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE (NRF_ERROR_SOC_BASE_NUM + 1) ///< NVIC interrupt not available -#define NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED (NRF_ERROR_SOC_BASE_NUM + 2) ///< NVIC interrupt priority not allowed -#define NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 3) ///< NVIC should not return - -/* Power errors */ -#define NRF_ERROR_SOC_POWER_MODE_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 4) ///< Power mode unknown -#define NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN (NRF_ERROR_SOC_BASE_NUM + 5) ///< Power POF threshold unknown -#define NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN (NRF_ERROR_SOC_BASE_NUM + 6) ///< Power off should not return - -/* Rand errors */ -#define NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES (NRF_ERROR_SOC_BASE_NUM + 7) ///< RAND not enough values - -/* PPI errors */ -#define NRF_ERROR_SOC_PPI_INVALID_CHANNEL (NRF_ERROR_SOC_BASE_NUM + 8) ///< Invalid PPI Channel -#define NRF_ERROR_SOC_PPI_INVALID_GROUP (NRF_ERROR_SOC_BASE_NUM + 9) ///< Invalid PPI Group - -#ifdef __cplusplus -} -#endif -#endif // NRF_ERROR_SOC_H__ -/** - @} - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_nvic.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_nvic.h deleted file mode 100644 index 1f79cc3..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_nvic.h +++ /dev/null @@ -1,491 +0,0 @@ -/* - * Copyright (c) 2016 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - * @defgroup nrf_nvic_api SoftDevice NVIC API - * @{ - * - * @note In order to use this module, the following code has to be added to a .c file: - * \code - * nrf_nvic_state_t nrf_nvic_state = {0}; - * \endcode - * - * @note Definitions and declarations starting with __ (double underscore) in this header file are - * not intended for direct use by the application. - * - * @brief APIs for the accessing NVIC when using a SoftDevice. - * - */ - -#ifndef NRF_NVIC_H__ -#define NRF_NVIC_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "nrf_error_soc.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup NRF_NVIC_DEFINES Defines - * @{ */ - -/**@defgroup NRF_NVIC_ISER_DEFINES SoftDevice NVIC internal definitions - * @{ */ - -#define __NRF_NVIC_NVMC_IRQn (30) /**< The peripheral ID of the NVMC. IRQ numbers are used to identify peripherals, but the NVMC doesn't have an IRQ number in the MDK. */ - -#define __NRF_NVIC_ISER_COUNT (2) /**< The number of ISER/ICER registers in the NVIC that are used. */ - -/**@brief Interrupt priority levels used by the SoftDevice. */ -#define __NRF_NVIC_SD_IRQ_PRIOS ((uint8_t)( \ - (1U << 0) /**< Priority level high .*/ \ - | (1U << 1) /**< Priority level medium. */ \ - | (1U << 4) /**< Priority level low. */ \ - )) - -/**@brief Interrupt priority levels available to the application. */ -#define __NRF_NVIC_APP_IRQ_PRIOS ((uint8_t)~__NRF_NVIC_SD_IRQ_PRIOS) - -/**@brief Interrupts used by the SoftDevice, with IRQn in the range 0-31. */ -#define __NRF_NVIC_SD_IRQS_0 ((uint32_t)( \ - (1U << POWER_CLOCK_IRQn) \ - | (1U << RADIO_IRQn) \ - | (1U << RTC0_IRQn) \ - | (1U << TIMER0_IRQn) \ - | (1U << RNG_IRQn) \ - | (1U << ECB_IRQn) \ - | (1U << CCM_AAR_IRQn) \ - | (1U << TEMP_IRQn) \ - | (1U << __NRF_NVIC_NVMC_IRQn) \ - | (1U << (uint32_t)SWI5_IRQn) \ - )) - -/**@brief Interrupts used by the SoftDevice, with IRQn in the range 32-63. */ -#define __NRF_NVIC_SD_IRQS_1 ((uint32_t)0) - -/**@brief Interrupts available for to application, with IRQn in the range 0-31. */ -#define __NRF_NVIC_APP_IRQS_0 (~__NRF_NVIC_SD_IRQS_0) - -/**@brief Interrupts available for to application, with IRQn in the range 32-63. */ -#define __NRF_NVIC_APP_IRQS_1 (~__NRF_NVIC_SD_IRQS_1) - -/**@} */ - -/**@} */ - -/**@addtogroup NRF_NVIC_VARIABLES Variables - * @{ */ - -/**@brief Type representing the state struct for the SoftDevice NVIC module. */ -typedef struct -{ - uint32_t volatile __irq_masks[__NRF_NVIC_ISER_COUNT]; /**< IRQs enabled by the application in the NVIC. */ - uint32_t volatile __cr_flag; /**< Non-zero if already in a critical region */ -} nrf_nvic_state_t; - -/**@brief Variable keeping the state for the SoftDevice NVIC module. This must be declared in an - * application source file. */ -extern nrf_nvic_state_t nrf_nvic_state; - -/**@} */ - -/**@addtogroup NRF_NVIC_INTERNAL_FUNCTIONS SoftDevice NVIC internal functions - * @{ */ - -/**@brief Disables IRQ interrupts globally, including the SoftDevice's interrupts. - * - * @retval The value of PRIMASK prior to disabling the interrupts. - */ -__STATIC_INLINE int __sd_nvic_irq_disable(void); - -/**@brief Enables IRQ interrupts globally, including the SoftDevice's interrupts. - */ -__STATIC_INLINE void __sd_nvic_irq_enable(void); - -/**@brief Checks if IRQn is available to application - * @param[in] IRQn IRQ to check - * - * @retval 1 (true) if the IRQ to check is available to the application - */ -__STATIC_INLINE uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn); - -/**@brief Checks if priority is available to application - * @param[in] priority priority to check - * - * @retval 1 (true) if the priority to check is available to the application - */ -__STATIC_INLINE uint32_t __sd_nvic_is_app_accessible_priority(uint32_t priority); - -/**@} */ - -/**@addtogroup NRF_NVIC_FUNCTIONS SoftDevice NVIC public functions - * @{ */ - -/**@brief Enable External Interrupt. - * @note Corresponds to NVIC_EnableIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_EnableIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt was enabled. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt has a priority not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn); - -/**@brief Disable External Interrupt. - * @note Corresponds to NVIC_DisableIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_DisableIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt was disabled. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE The interrupt is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn); - -/**@brief Get Pending Interrupt. - * @note Corresponds to NVIC_GetPendingIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_GetPendingIRQ documentation in CMSIS. - * @param[out] p_pending_irq Return value from NVIC_GetPendingIRQ. - * - * @retval ::NRF_SUCCESS The interrupt is available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq); - -/**@brief Set Pending Interrupt. - * @note Corresponds to NVIC_SetPendingIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_SetPendingIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt is set pending. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn); - -/**@brief Clear Pending Interrupt. - * @note Corresponds to NVIC_ClearPendingIRQ in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_ClearPendingIRQ documentation in CMSIS. - * - * @retval ::NRF_SUCCESS The interrupt pending flag is cleared. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn); - -/**@brief Set Interrupt Priority. - * @note Corresponds to NVIC_SetPriority in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * @pre Priority is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_SetPriority documentation in CMSIS. - * @param[in] priority A valid IRQ priority for use by the application. - * - * @retval ::NRF_SUCCESS The interrupt and priority level is available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE IRQn is not available for the application. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED The interrupt priority is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority); - -/**@brief Get Interrupt Priority. - * @note Corresponds to NVIC_GetPriority in CMSIS. - * - * @pre IRQn is valid and not reserved by the stack. - * - * @param[in] IRQn See the NVIC_GetPriority documentation in CMSIS. - * @param[out] p_priority Return value from NVIC_GetPriority. - * - * @retval ::NRF_SUCCESS The interrupt priority is returned in p_priority. - * @retval ::NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE - IRQn is not available for the application. - */ -__STATIC_INLINE uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority); - -/**@brief System Reset. - * @note Corresponds to NVIC_SystemReset in CMSIS. - * - * @retval ::NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN - */ -__STATIC_INLINE uint32_t sd_nvic_SystemReset(void); - -/**@brief Enter critical region. - * - * @post Application interrupts will be disabled. - * @note sd_nvic_critical_region_enter() and ::sd_nvic_critical_region_exit() must be called in matching pairs inside each - * execution context - * @sa sd_nvic_critical_region_exit - * - * @param[out] p_is_nested_critical_region If 1, the application is now in a nested critical region. - * - * @retval ::NRF_SUCCESS - */ -__STATIC_INLINE uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region); - -/**@brief Exit critical region. - * - * @pre Application has entered a critical region using ::sd_nvic_critical_region_enter. - * @post If not in a nested critical region, the application interrupts will restored to the state before ::sd_nvic_critical_region_enter was called. - * - * @param[in] is_nested_critical_region If this is set to 1, the critical region won't be exited. @sa sd_nvic_critical_region_enter. - * - * @retval ::NRF_SUCCESS - */ -__STATIC_INLINE uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region); - -/**@} */ - -#ifndef SUPPRESS_INLINE_IMPLEMENTATION - -__STATIC_INLINE int __sd_nvic_irq_disable(void) -{ - int pm = __get_PRIMASK(); - __disable_irq(); - return pm; -} - -__STATIC_INLINE void __sd_nvic_irq_enable(void) -{ - __enable_irq(); -} - -__STATIC_INLINE uint32_t __sd_nvic_app_accessible_irq(IRQn_Type IRQn) -{ - if (IRQn < 32) - { - return ((1UL<= (1 << __NVIC_PRIO_BITS)) - || (((1 << priority) & __NRF_NVIC_APP_IRQ_PRIOS) == 0) - ) - { - return 0; - } - return 1; -} - - -__STATIC_INLINE uint32_t sd_nvic_EnableIRQ(IRQn_Type IRQn) -{ - if (!__sd_nvic_app_accessible_irq(IRQn)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } - if (!__sd_nvic_is_app_accessible_priority(NVIC_GetPriority(IRQn))) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; - } - - if (nrf_nvic_state.__cr_flag) - { - nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] |= (uint32_t)(1 << ((uint32_t)((int32_t)IRQn) & (uint32_t)0x1F)); - } - else - { - NVIC_EnableIRQ(IRQn); - } - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_DisableIRQ(IRQn_Type IRQn) -{ - if (!__sd_nvic_app_accessible_irq(IRQn)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } - - if (nrf_nvic_state.__cr_flag) - { - nrf_nvic_state.__irq_masks[(uint32_t)((int32_t)IRQn) >> 5] &= ~(1UL << ((uint32_t)(IRQn) & 0x1F)); - } - else - { - NVIC_DisableIRQ(IRQn); - } - - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_GetPendingIRQ(IRQn_Type IRQn, uint32_t * p_pending_irq) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - *p_pending_irq = NVIC_GetPendingIRQ(IRQn); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_SetPendingIRQ(IRQn_Type IRQn) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - NVIC_SetPendingIRQ(IRQn); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_ClearPendingIRQ(IRQn_Type IRQn) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - NVIC_ClearPendingIRQ(IRQn); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_SetPriority(IRQn_Type IRQn, uint32_t priority) -{ - if (!__sd_nvic_app_accessible_irq(IRQn)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } - - if (!__sd_nvic_is_app_accessible_priority(priority)) - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_PRIORITY_NOT_ALLOWED; - } - - NVIC_SetPriority(IRQn, (uint32_t)priority); - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_GetPriority(IRQn_Type IRQn, uint32_t * p_priority) -{ - if (__sd_nvic_app_accessible_irq(IRQn)) - { - *p_priority = (NVIC_GetPriority(IRQn) & 0xFF); - return NRF_SUCCESS; - } - else - { - return NRF_ERROR_SOC_NVIC_INTERRUPT_NOT_AVAILABLE; - } -} - -__STATIC_INLINE uint32_t sd_nvic_SystemReset(void) -{ - NVIC_SystemReset(); - return NRF_ERROR_SOC_NVIC_SHOULD_NOT_RETURN; -} - -__STATIC_INLINE uint32_t sd_nvic_critical_region_enter(uint8_t * p_is_nested_critical_region) -{ - int was_masked = __sd_nvic_irq_disable(); - if (!nrf_nvic_state.__cr_flag) - { - nrf_nvic_state.__cr_flag = 1; - nrf_nvic_state.__irq_masks[0] = ( NVIC->ICER[0] & __NRF_NVIC_APP_IRQS_0 ); - NVIC->ICER[0] = __NRF_NVIC_APP_IRQS_0; - nrf_nvic_state.__irq_masks[1] = ( NVIC->ICER[1] & __NRF_NVIC_APP_IRQS_1 ); - NVIC->ICER[1] = __NRF_NVIC_APP_IRQS_1; - *p_is_nested_critical_region = 0; - } - else - { - *p_is_nested_critical_region = 1; - } - if (!was_masked) - { - __sd_nvic_irq_enable(); - } - return NRF_SUCCESS; -} - -__STATIC_INLINE uint32_t sd_nvic_critical_region_exit(uint8_t is_nested_critical_region) -{ - if (nrf_nvic_state.__cr_flag && (is_nested_critical_region == 0)) - { - int was_masked = __sd_nvic_irq_disable(); - NVIC->ISER[0] = nrf_nvic_state.__irq_masks[0]; - NVIC->ISER[1] = nrf_nvic_state.__irq_masks[1]; - nrf_nvic_state.__cr_flag = 0; - if (!was_masked) - { - __sd_nvic_irq_enable(); - } - } - - return NRF_SUCCESS; -} - -#endif /* SUPPRESS_INLINE_IMPLEMENTATION */ - -#ifdef __cplusplus -} -#endif - -#endif // NRF_NVIC_H__ - -/**@} */ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_sdm.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_sdm.h deleted file mode 100644 index 282e762..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_sdm.h +++ /dev/null @@ -1,367 +0,0 @@ -/* - * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - @defgroup nrf_sdm_api SoftDevice Manager API - @{ - - @brief APIs for SoftDevice management. - -*/ - -#ifndef NRF_SDM_H__ -#define NRF_SDM_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "nrf_error_sdm.h" -#include "nrf_soc.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/** @addtogroup NRF_SDM_DEFINES Defines - * @{ */ -#ifdef NRFSOC_DOXYGEN -/// Declared in nrf_mbr.h -#define MBR_SIZE 0 -#warning test -#endif - -/** @brief The major version for the SoftDevice binary distributed with this header file. */ -#define SD_MAJOR_VERSION (6) - -/** @brief The minor version for the SoftDevice binary distributed with this header file. */ -#define SD_MINOR_VERSION (1) - -/** @brief The bugfix version for the SoftDevice binary distributed with this header file. */ -#define SD_BUGFIX_VERSION (0) - -/** @brief The SoftDevice variant of this firmware. */ -#define SD_VARIANT_ID 140 - -/** @brief The full version number for the SoftDevice binary this header file was distributed - * with, as a decimal number in the form Mmmmbbb, where: - * - M is major version (one or more digits) - * - mmm is minor version (three digits) - * - bbb is bugfix version (three digits). */ -#define SD_VERSION (SD_MAJOR_VERSION * 1000000 + SD_MINOR_VERSION * 1000 + SD_BUGFIX_VERSION) - -/** @brief SoftDevice Manager SVC Base number. */ -#define SDM_SVC_BASE 0x10 - -/** @brief SoftDevice unique string size in bytes. */ -#define SD_UNIQUE_STR_SIZE 20 - -/** @brief Invalid info field. Returned when an info field does not exist. */ -#define SDM_INFO_FIELD_INVALID (0) - -/** @brief Defines the SoftDevice Information Structure location (address) as an offset from -the start of the SoftDevice (without MBR)*/ -#define SOFTDEVICE_INFO_STRUCT_OFFSET (0x2000) - -/** @brief Defines the absolute SoftDevice Information Structure location (address) when the - * SoftDevice is installed just above the MBR (the usual case). */ -#define SOFTDEVICE_INFO_STRUCT_ADDRESS (SOFTDEVICE_INFO_STRUCT_OFFSET + MBR_SIZE) - -/** @brief Defines the offset for the SoftDevice Information Structure size value relative to the - * SoftDevice base address. The size value is of type uint8_t. */ -#define SD_INFO_STRUCT_SIZE_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET) - -/** @brief Defines the offset for the SoftDevice size value relative to the SoftDevice base address. - * The size value is of type uint32_t. */ -#define SD_SIZE_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x08) - -/** @brief Defines the offset for FWID value relative to the SoftDevice base address. The FWID value - * is of type uint16_t. */ -#define SD_FWID_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x0C) - -/** @brief Defines the offset for the SoftDevice ID relative to the SoftDevice base address. The ID - * is of type uint32_t. */ -#define SD_ID_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x10) - -/** @brief Defines the offset for the SoftDevice version relative to the SoftDevice base address in - * the same format as @ref SD_VERSION, stored as an uint32_t. */ -#define SD_VERSION_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x14) - -/** @brief Defines the offset for the SoftDevice unique string relative to the SoftDevice base address. - * The SD_UNIQUE_STR is stored as an array of uint8_t. The size of array is @ref SD_UNIQUE_STR_SIZE. - */ -#define SD_UNIQUE_STR_OFFSET (SOFTDEVICE_INFO_STRUCT_OFFSET + 0x18) - -/** @brief Defines a macro for retrieving the actual SoftDevice Information Structure size value - * from a given base address. Use @ref MBR_SIZE as the argument when the SoftDevice is - * installed just above the MBR (the usual case). */ -#define SD_INFO_STRUCT_SIZE_GET(baseaddr) (*((uint8_t *) ((baseaddr) + SD_INFO_STRUCT_SIZE_OFFSET))) - -/** @brief Defines a macro for retrieving the actual SoftDevice size value from a given base - * address. Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above - * the MBR (the usual case). */ -#define SD_SIZE_GET(baseaddr) (*((uint32_t *) ((baseaddr) + SD_SIZE_OFFSET))) - -/** @brief Defines the amount of flash that is used by the SoftDevice. - * Add @ref MBR_SIZE to find the first available flash address when the SoftDevice is installed - * just above the MBR (the usual case). - */ -#define SD_FLASH_SIZE 0x25000 - -/** @brief Defines a macro for retrieving the actual FWID value from a given base address. Use - * @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the usual - * case). */ -#define SD_FWID_GET(baseaddr) (*((uint16_t *) ((baseaddr) + SD_FWID_OFFSET))) - -/** @brief Defines a macro for retrieving the actual SoftDevice ID from a given base address. Use - * @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR (the - * usual case). */ -#define SD_ID_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_ID_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ - ? (*((uint32_t *) ((baseaddr) + SD_ID_OFFSET))) : SDM_INFO_FIELD_INVALID) - -/** @brief Defines a macro for retrieving the actual SoftDevice version from a given base address. - * Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR - * (the usual case). */ -#define SD_VERSION_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_VERSION_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ - ? (*((uint32_t *) ((baseaddr) + SD_VERSION_OFFSET))) : SDM_INFO_FIELD_INVALID) - -/** @brief Defines a macro for retrieving the address of SoftDevice unique str based on a given base address. - * Use @ref MBR_SIZE as the argument when the SoftDevice is installed just above the MBR - * (the usual case). */ -#define SD_UNIQUE_STR_ADDR_GET(baseaddr) ((SD_INFO_STRUCT_SIZE_GET(baseaddr) > (SD_UNIQUE_STR_OFFSET - SOFTDEVICE_INFO_STRUCT_OFFSET)) \ - ? (((uint8_t *) ((baseaddr) + SD_UNIQUE_STR_OFFSET))) : SDM_INFO_FIELD_INVALID) - -/**@defgroup NRF_FAULT_ID_RANGES Fault ID ranges - * @{ */ -#define NRF_FAULT_ID_SD_RANGE_START 0x00000000 /**< SoftDevice ID range start. */ -#define NRF_FAULT_ID_APP_RANGE_START 0x00001000 /**< Application ID range start. */ -/**@} */ - -/**@defgroup NRF_FAULT_IDS Fault ID types - * @{ */ -#define NRF_FAULT_ID_SD_ASSERT (NRF_FAULT_ID_SD_RANGE_START + 1) /**< SoftDevice assertion. The info parameter is reserved for future used. */ -#define NRF_FAULT_ID_APP_MEMACC (NRF_FAULT_ID_APP_RANGE_START + 1) /**< Application invalid memory access. The info parameter will contain 0x00000000, - in case of SoftDevice RAM access violation. In case of SoftDevice peripheral - register violation the info parameter will contain the sub-region number of - PREGION[0], on whose address range the disallowed write access caused the - memory access fault. */ -/**@} */ - -/** @} */ - -/** @addtogroup NRF_SDM_ENUMS Enumerations - * @{ */ - -/**@brief nRF SoftDevice Manager API SVC numbers. */ -enum NRF_SD_SVCS -{ - SD_SOFTDEVICE_ENABLE = SDM_SVC_BASE, /**< ::sd_softdevice_enable */ - SD_SOFTDEVICE_DISABLE, /**< ::sd_softdevice_disable */ - SD_SOFTDEVICE_IS_ENABLED, /**< ::sd_softdevice_is_enabled */ - SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, /**< ::sd_softdevice_vector_table_base_set */ - SVC_SDM_LAST /**< Placeholder for last SDM SVC */ -}; - -/** @} */ - -/** @addtogroup NRF_SDM_DEFINES Defines - * @{ */ - -/**@defgroup NRF_CLOCK_LF_ACCURACY Clock accuracy - * @{ */ - -#define NRF_CLOCK_LF_ACCURACY_250_PPM (0) /**< Default: 250 ppm */ -#define NRF_CLOCK_LF_ACCURACY_500_PPM (1) /**< 500 ppm */ -#define NRF_CLOCK_LF_ACCURACY_150_PPM (2) /**< 150 ppm */ -#define NRF_CLOCK_LF_ACCURACY_100_PPM (3) /**< 100 ppm */ -#define NRF_CLOCK_LF_ACCURACY_75_PPM (4) /**< 75 ppm */ -#define NRF_CLOCK_LF_ACCURACY_50_PPM (5) /**< 50 ppm */ -#define NRF_CLOCK_LF_ACCURACY_30_PPM (6) /**< 30 ppm */ -#define NRF_CLOCK_LF_ACCURACY_20_PPM (7) /**< 20 ppm */ -#define NRF_CLOCK_LF_ACCURACY_10_PPM (8) /**< 10 ppm */ -#define NRF_CLOCK_LF_ACCURACY_5_PPM (9) /**< 5 ppm */ -#define NRF_CLOCK_LF_ACCURACY_2_PPM (10) /**< 2 ppm */ -#define NRF_CLOCK_LF_ACCURACY_1_PPM (11) /**< 1 ppm */ - -/** @} */ - -/**@defgroup NRF_CLOCK_LF_SRC Possible LFCLK oscillator sources - * @{ */ - -#define NRF_CLOCK_LF_SRC_RC (0) /**< LFCLK RC oscillator. */ -#define NRF_CLOCK_LF_SRC_XTAL (1) /**< LFCLK crystal oscillator. */ -#define NRF_CLOCK_LF_SRC_SYNTH (2) /**< LFCLK Synthesized from HFCLK. */ - -/** @} */ - -/** @} */ - -/** @addtogroup NRF_SDM_TYPES Types - * @{ */ - -/**@brief Type representing LFCLK oscillator source. */ -typedef struct -{ - uint8_t source; /**< LF oscillator clock source, see @ref NRF_CLOCK_LF_SRC. */ - uint8_t rc_ctiv; /**< Only for ::NRF_CLOCK_LF_SRC_RC: Calibration timer interval in 1/4 second - units (nRF52: 1-32). - @note To avoid excessive clock drift, 0.5 degrees Celsius is the - maximum temperature change allowed in one calibration timer - interval. The interval should be selected to ensure this. - - @note Must be 0 if source is not ::NRF_CLOCK_LF_SRC_RC. */ - uint8_t rc_temp_ctiv; /**< Only for ::NRF_CLOCK_LF_SRC_RC: How often (in number of calibration - intervals) the RC oscillator shall be calibrated if the temperature - hasn't changed. - 0: Always calibrate even if the temperature hasn't changed. - 1: Only calibrate if the temperature has changed (legacy - nRF51 only). - 2-33: Check the temperature and only calibrate if it has changed, - however calibration will take place every rc_temp_ctiv - intervals in any case. - - @note Must be 0 if source is not ::NRF_CLOCK_LF_SRC_RC. - - @note For nRF52, the application must ensure calibration at least once - every 8 seconds to ensure +/-500 ppm clock stability. The - recommended configuration for ::NRF_CLOCK_LF_SRC_RC on nRF52 is - rc_ctiv=16 and rc_temp_ctiv=2. This will ensure calibration at - least once every 8 seconds and for temperature changes of 0.5 - degrees Celsius every 4 seconds. See the Product Specification - for the nRF52 device being used for more information.*/ - uint8_t accuracy; /**< External clock accuracy used in the LL to compute timing - windows, see @ref NRF_CLOCK_LF_ACCURACY.*/ -} nrf_clock_lf_cfg_t; - -/**@brief Fault Handler type. - * - * When certain unrecoverable errors occur within the application or SoftDevice the fault handler will be called back. - * The protocol stack will be in an undefined state when this happens and the only way to recover will be to - * perform a reset, using e.g. CMSIS NVIC_SystemReset(). - * If the application returns from the fault handler the SoftDevice will call NVIC_SystemReset(). - * - * @note This callback is executed in HardFault context, thus SVC functions cannot be called from the fault callback. - * - * @param[in] id Fault identifier. See @ref NRF_FAULT_IDS. - * @param[in] pc The program counter of the instruction that triggered the fault. - * @param[in] info Optional additional information regarding the fault. Refer to each Fault identifier for details. - * - * @note When id is set to @ref NRF_FAULT_ID_APP_MEMACC, pc will contain the address of the instruction being executed at the time when - * the fault is detected by the CPU. The CPU program counter may have advanced up to 2 instructions (no branching) after the one that triggered the fault. - */ -typedef void (*nrf_fault_handler_t)(uint32_t id, uint32_t pc, uint32_t info); - -/** @} */ - -/** @addtogroup NRF_SDM_FUNCTIONS Functions - * @{ */ - -/**@brief Enables the SoftDevice and by extension the protocol stack. - * - * @note Some care must be taken if a low frequency clock source is already running when calling this function: - * If the LF clock has a different source then the one currently running, it will be stopped. Then, the new - * clock source will be started. - * - * @note This function has no effect when returning with an error. - * - * @post If return code is ::NRF_SUCCESS - * - SoC library and protocol stack APIs are made available. - * - A portion of RAM will be unavailable (see relevant SDS documentation). - * - Some peripherals will be unavailable or available only through the SoC API (see relevant SDS documentation). - * - Interrupts will not arrive from protected peripherals or interrupts. - * - nrf_nvic_ functions must be used instead of CMSIS NVIC_ functions for reliable usage of the SoftDevice. - * - Interrupt latency may be affected by the SoftDevice (see relevant SDS documentation). - * - Chosen low frequency clock source will be running. - * - * @param p_clock_lf_cfg Low frequency clock source and accuracy. - If NULL the clock will be configured as an RC source with rc_ctiv = 16 and .rc_temp_ctiv = 2 - In the case of XTAL source, the PPM accuracy of the chosen clock source must be greater than or equal to the actual characteristics of your XTAL clock. - * @param fault_handler Callback to be invoked in case of fault, cannot be NULL. - * - * @retval ::NRF_SUCCESS - * @retval ::NRF_ERROR_INVALID_ADDR Invalid or NULL pointer supplied. - * @retval ::NRF_ERROR_INVALID_STATE SoftDevice is already enabled, and the clock source and fault handler cannot be updated. - * @retval ::NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION SoftDevice interrupt is already enabled, or an enabled interrupt has an illegal priority level. - * @retval ::NRF_ERROR_SDM_LFCLK_SOURCE_UNKNOWN Unknown low frequency clock source selected. - * @retval ::NRF_ERROR_INVALID_PARAM Invalid clock source configuration supplied in p_clock_lf_cfg. - */ -SVCALL(SD_SOFTDEVICE_ENABLE, uint32_t, sd_softdevice_enable(nrf_clock_lf_cfg_t const * p_clock_lf_cfg, nrf_fault_handler_t fault_handler)); - - -/**@brief Disables the SoftDevice and by extension the protocol stack. - * - * Idempotent function to disable the SoftDevice. - * - * @post SoC library and protocol stack APIs are made unavailable. - * @post All interrupts that was protected by the SoftDevice will be disabled and initialized to priority 0 (highest). - * @post All peripherals used by the SoftDevice will be reset to default values. - * @post All of RAM become available. - * @post All interrupts are forwarded to the application. - * @post LFCLK source chosen in ::sd_softdevice_enable will be left running. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_DISABLE, uint32_t, sd_softdevice_disable(void)); - -/**@brief Check if the SoftDevice is enabled. - * - * @param[out] p_softdevice_enabled If the SoftDevice is enabled: 1 else 0. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_IS_ENABLED, uint32_t, sd_softdevice_is_enabled(uint8_t * p_softdevice_enabled)); - -/**@brief Sets the base address of the interrupt vector table for interrupts forwarded from the SoftDevice - * - * This function is only intended to be called when a bootloader is enabled. - * - * @param[in] address The base address of the interrupt vector table for forwarded interrupts. - - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_SOFTDEVICE_VECTOR_TABLE_BASE_SET, uint32_t, sd_softdevice_vector_table_base_set(uint32_t address)); - -/** @} */ - -#ifdef __cplusplus -} -#endif -#endif // NRF_SDM_H__ - -/** - @} -*/ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_soc.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_soc.h deleted file mode 100644 index beb4d3a..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_soc.h +++ /dev/null @@ -1,1079 +0,0 @@ -/* - * Copyright (c) 2015 - 2018, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -/** - * @defgroup nrf_soc_api SoC Library API - * @{ - * - * @brief APIs for the SoC library. - * - */ - -#ifndef NRF_SOC_H__ -#define NRF_SOC_H__ - -#include -#include "nrf.h" -#include "nrf_svc.h" -#include "nrf_error.h" -#include "nrf_error_soc.h" - -#ifdef __cplusplus -extern "C" { -#endif - -/**@addtogroup NRF_SOC_DEFINES Defines - * @{ */ - -/**@brief The number of the lowest SVC number reserved for the SoC library. */ -#define SOC_SVC_BASE (0x20) /**< Base value for SVCs that are available when the SoftDevice is disabled. */ -#define SOC_SVC_BASE_NOT_AVAILABLE (0x2C) /**< Base value for SVCs that are not available when the SoftDevice is disabled. */ - -/**@brief Guaranteed time for application to process radio inactive notification. */ -#define NRF_RADIO_NOTIFICATION_INACTIVE_GUARANTEED_TIME_US (62) - -/**@brief The minimum allowed timeslot extension time. */ -#define NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US (200) - -/**@brief The maximum processing time to handle a timeslot extension. */ -#define NRF_RADIO_MAX_EXTENSION_PROCESSING_TIME_US (17) - -/**@brief The latest time before the end of a timeslot the timeslot can be extended. */ -#define NRF_RADIO_MIN_EXTENSION_MARGIN_US (79) - -#define SOC_ECB_KEY_LENGTH (16) /**< ECB key length. */ -#define SOC_ECB_CLEARTEXT_LENGTH (16) /**< ECB cleartext length. */ -#define SOC_ECB_CIPHERTEXT_LENGTH (SOC_ECB_CLEARTEXT_LENGTH) /**< ECB ciphertext length. */ - -#define SD_EVT_IRQn (SWI2_IRQn) /**< SoftDevice Event IRQ number. Used for both protocol events and SoC events. */ -#define SD_EVT_IRQHandler (SWI2_IRQHandler) /**< SoftDevice Event IRQ handler. Used for both protocol events and SoC events. - The default interrupt priority for this handler is set to 6 */ -#define RADIO_NOTIFICATION_IRQn (SWI1_IRQn) /**< The radio notification IRQ number. */ -#define RADIO_NOTIFICATION_IRQHandler (SWI1_IRQHandler) /**< The radio notification IRQ handler. - The default interrupt priority for this handler is set to 6 */ -#define NRF_RADIO_LENGTH_MIN_US (100) /**< The shortest allowed radio timeslot, in microseconds. */ -#define NRF_RADIO_LENGTH_MAX_US (100000) /**< The longest allowed radio timeslot, in microseconds. */ - -#define NRF_RADIO_DISTANCE_MAX_US (128000000UL - 1UL) /**< The longest timeslot distance, in microseconds, allowed for the distance parameter (see @ref nrf_radio_request_normal_t) in the request. */ - -#define NRF_RADIO_EARLIEST_TIMEOUT_MAX_US (128000000UL - 1UL) /**< The longest timeout, in microseconds, allowed when requesting the earliest possible timeslot. */ - -#define NRF_RADIO_START_JITTER_US (2) /**< The maximum jitter in @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START relative to the requested start time. */ - -/**@brief Mask of PPI channels reserved by the SoftDevice when the SoftDevice is disabled. */ -#define NRF_SOC_SD_PPI_CHANNELS_SD_DISABLED_MSK ((uint32_t)(0)) - -/**@brief Mask of PPI channels reserved by the SoftDevice when the SoftDevice is enabled. */ -#define NRF_SOC_SD_PPI_CHANNELS_SD_ENABLED_MSK ((uint32_t)( \ - (1U << 17) \ - | (1U << 18) \ - | (1U << 19) \ - | (1U << 20) \ - | (1U << 21) \ - | (1U << 22) \ - | (1U << 23) \ - | (1U << 24) \ - | (1U << 25) \ - | (1U << 26) \ - | (1U << 27) \ - | (1U << 28) \ - | (1U << 29) \ - | (1U << 30) \ - | (1U << 31) \ - )) - -/**@brief Mask of PPI channels available to the application when the SoftDevice is disabled. */ -#define NRF_SOC_APP_PPI_CHANNELS_SD_DISABLED_MSK (~NRF_SOC_SD_PPI_CHANNELS_SD_DISABLED_MSK) - -/**@brief Mask of PPI channels available to the application when the SoftDevice is enabled. */ -#define NRF_SOC_APP_PPI_CHANNELS_SD_ENABLED_MSK (~NRF_SOC_SD_PPI_CHANNELS_SD_ENABLED_MSK) - -/**@brief Mask of PPI groups reserved by the SoftDevice when the SoftDevice is disabled. */ -#define NRF_SOC_SD_PPI_GROUPS_SD_DISABLED_MSK ((uint32_t)(0)) - -/**@brief Mask of PPI groups reserved by the SoftDevice when the SoftDevice is enabled. */ -#define NRF_SOC_SD_PPI_GROUPS_SD_ENABLED_MSK ((uint32_t)( \ - (1U << 4) \ - | (1U << 5) \ - )) - -/**@brief Mask of PPI groups available to the application when the SoftDevice is disabled. */ -#define NRF_SOC_APP_PPI_GROUPS_SD_DISABLED_MSK (~NRF_SOC_SD_PPI_GROUPS_SD_DISABLED_MSK) - -/**@brief Mask of PPI groups available to the application when the SoftDevice is enabled. */ -#define NRF_SOC_APP_PPI_GROUPS_SD_ENABLED_MSK (~NRF_SOC_SD_PPI_GROUPS_SD_ENABLED_MSK) - -/**@} */ - -/**@addtogroup NRF_SOC_ENUMS Enumerations - * @{ */ - -/**@brief The SVC numbers used by the SVC functions in the SoC library. */ -enum NRF_SOC_SVCS -{ - SD_PPI_CHANNEL_ENABLE_GET = SOC_SVC_BASE, - SD_PPI_CHANNEL_ENABLE_SET = SOC_SVC_BASE + 1, - SD_PPI_CHANNEL_ENABLE_CLR = SOC_SVC_BASE + 2, - SD_PPI_CHANNEL_ASSIGN = SOC_SVC_BASE + 3, - SD_PPI_GROUP_TASK_ENABLE = SOC_SVC_BASE + 4, - SD_PPI_GROUP_TASK_DISABLE = SOC_SVC_BASE + 5, - SD_PPI_GROUP_ASSIGN = SOC_SVC_BASE + 6, - SD_PPI_GROUP_GET = SOC_SVC_BASE + 7, - SD_FLASH_PAGE_ERASE = SOC_SVC_BASE + 8, - SD_FLASH_WRITE = SOC_SVC_BASE + 9, - SD_PROTECTED_REGISTER_WRITE = SOC_SVC_BASE + 11, - SD_MUTEX_NEW = SOC_SVC_BASE_NOT_AVAILABLE, - SD_MUTEX_ACQUIRE = SOC_SVC_BASE_NOT_AVAILABLE + 1, - SD_MUTEX_RELEASE = SOC_SVC_BASE_NOT_AVAILABLE + 2, - SD_RAND_APPLICATION_POOL_CAPACITY_GET = SOC_SVC_BASE_NOT_AVAILABLE + 3, - SD_RAND_APPLICATION_BYTES_AVAILABLE_GET = SOC_SVC_BASE_NOT_AVAILABLE + 4, - SD_RAND_APPLICATION_VECTOR_GET = SOC_SVC_BASE_NOT_AVAILABLE + 5, - SD_POWER_MODE_SET = SOC_SVC_BASE_NOT_AVAILABLE + 6, - SD_POWER_SYSTEM_OFF = SOC_SVC_BASE_NOT_AVAILABLE + 7, - SD_POWER_RESET_REASON_GET = SOC_SVC_BASE_NOT_AVAILABLE + 8, - SD_POWER_RESET_REASON_CLR = SOC_SVC_BASE_NOT_AVAILABLE + 9, - SD_POWER_POF_ENABLE = SOC_SVC_BASE_NOT_AVAILABLE + 10, - SD_POWER_POF_THRESHOLD_SET = SOC_SVC_BASE_NOT_AVAILABLE + 11, - SD_POWER_POF_THRESHOLDVDDH_SET = SOC_SVC_BASE_NOT_AVAILABLE + 12, - SD_POWER_RAM_POWER_SET = SOC_SVC_BASE_NOT_AVAILABLE + 13, - SD_POWER_RAM_POWER_CLR = SOC_SVC_BASE_NOT_AVAILABLE + 14, - SD_POWER_RAM_POWER_GET = SOC_SVC_BASE_NOT_AVAILABLE + 15, - SD_POWER_GPREGRET_SET = SOC_SVC_BASE_NOT_AVAILABLE + 16, - SD_POWER_GPREGRET_CLR = SOC_SVC_BASE_NOT_AVAILABLE + 17, - SD_POWER_GPREGRET_GET = SOC_SVC_BASE_NOT_AVAILABLE + 18, - SD_POWER_DCDC_MODE_SET = SOC_SVC_BASE_NOT_AVAILABLE + 19, - SD_POWER_DCDC0_MODE_SET = SOC_SVC_BASE_NOT_AVAILABLE + 20, - SD_APP_EVT_WAIT = SOC_SVC_BASE_NOT_AVAILABLE + 21, - SD_CLOCK_HFCLK_REQUEST = SOC_SVC_BASE_NOT_AVAILABLE + 22, - SD_CLOCK_HFCLK_RELEASE = SOC_SVC_BASE_NOT_AVAILABLE + 23, - SD_CLOCK_HFCLK_IS_RUNNING = SOC_SVC_BASE_NOT_AVAILABLE + 24, - SD_RADIO_NOTIFICATION_CFG_SET = SOC_SVC_BASE_NOT_AVAILABLE + 25, - SD_ECB_BLOCK_ENCRYPT = SOC_SVC_BASE_NOT_AVAILABLE + 26, - SD_ECB_BLOCKS_ENCRYPT = SOC_SVC_BASE_NOT_AVAILABLE + 27, - SD_RADIO_SESSION_OPEN = SOC_SVC_BASE_NOT_AVAILABLE + 28, - SD_RADIO_SESSION_CLOSE = SOC_SVC_BASE_NOT_AVAILABLE + 29, - SD_RADIO_REQUEST = SOC_SVC_BASE_NOT_AVAILABLE + 30, - SD_EVT_GET = SOC_SVC_BASE_NOT_AVAILABLE + 31, - SD_TEMP_GET = SOC_SVC_BASE_NOT_AVAILABLE + 32, - SD_POWER_USBPWRRDY_ENABLE = SOC_SVC_BASE_NOT_AVAILABLE + 33, - SD_POWER_USBDETECTED_ENABLE = SOC_SVC_BASE_NOT_AVAILABLE + 34, - SD_POWER_USBREMOVED_ENABLE = SOC_SVC_BASE_NOT_AVAILABLE + 35, - SD_POWER_USBREGSTATUS_GET = SOC_SVC_BASE_NOT_AVAILABLE + 36, - SVC_SOC_LAST = SOC_SVC_BASE_NOT_AVAILABLE + 37 -}; - -/**@brief Possible values of a ::nrf_mutex_t. */ -enum NRF_MUTEX_VALUES -{ - NRF_MUTEX_FREE, - NRF_MUTEX_TAKEN -}; - -/**@brief Power modes. */ -enum NRF_POWER_MODES -{ - NRF_POWER_MODE_CONSTLAT, /**< Constant latency mode. See power management in the reference manual. */ - NRF_POWER_MODE_LOWPWR /**< Low power mode. See power management in the reference manual. */ -}; - - -/**@brief Power failure thresholds */ -enum NRF_POWER_THRESHOLDS -{ - NRF_POWER_THRESHOLD_V17 = 4UL, /**< 1.7 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V18, /**< 1.8 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V19, /**< 1.9 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V20, /**< 2.0 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V21, /**< 2.1 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V22, /**< 2.2 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V23, /**< 2.3 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V24, /**< 2.4 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V25, /**< 2.5 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V26, /**< 2.6 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V27, /**< 2.7 Volts power failure threshold. */ - NRF_POWER_THRESHOLD_V28 /**< 2.8 Volts power failure threshold. */ -}; - -/**@brief Power failure thresholds for high voltage */ -enum NRF_POWER_THRESHOLDVDDHS -{ - NRF_POWER_THRESHOLDVDDH_V27, /**< 2.7 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V28, /**< 2.8 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V29, /**< 2.9 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V30, /**< 3.0 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V31, /**< 3.1 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V32, /**< 3.2 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V33, /**< 3.3 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V34, /**< 3.4 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V35, /**< 3.5 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V36, /**< 3.6 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V37, /**< 3.7 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V38, /**< 3.8 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V39, /**< 3.9 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V40, /**< 4.0 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V41, /**< 4.1 Volts power failure threshold. */ - NRF_POWER_THRESHOLDVDDH_V42 /**< 4.2 Volts power failure threshold. */ -}; - - -/**@brief DC/DC converter modes. */ -enum NRF_POWER_DCDC_MODES -{ - NRF_POWER_DCDC_DISABLE, /**< The DCDC is disabled. */ - NRF_POWER_DCDC_ENABLE /**< The DCDC is enabled. */ -}; - -/**@brief Radio notification distances. */ -enum NRF_RADIO_NOTIFICATION_DISTANCES -{ - NRF_RADIO_NOTIFICATION_DISTANCE_NONE = 0, /**< The event does not have a notification. */ - NRF_RADIO_NOTIFICATION_DISTANCE_800US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_1740US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_2680US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_3620US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_4560US, /**< The distance from the active notification to start of radio activity. */ - NRF_RADIO_NOTIFICATION_DISTANCE_5500US /**< The distance from the active notification to start of radio activity. */ -}; - - -/**@brief Radio notification types. */ -enum NRF_RADIO_NOTIFICATION_TYPES -{ - NRF_RADIO_NOTIFICATION_TYPE_NONE = 0, /**< The event does not have a radio notification signal. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_ACTIVE, /**< Using interrupt for notification when the radio will be enabled. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE, /**< Using interrupt for notification when the radio has been disabled. */ - NRF_RADIO_NOTIFICATION_TYPE_INT_ON_BOTH, /**< Using interrupt for notification both when the radio will be enabled and disabled. */ -}; - -/**@brief The Radio signal callback types. */ -enum NRF_RADIO_CALLBACK_SIGNAL_TYPE -{ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_START, /**< This signal indicates the start of the radio timeslot. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0, /**< This signal indicates the NRF_TIMER0 interrupt. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO, /**< This signal indicates the NRF_RADIO interrupt. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_FAILED, /**< This signal indicates extend action failed. */ - NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_SUCCEEDED /**< This signal indicates extend action succeeded. */ -}; - -/**@brief The actions requested by the signal callback. - * - * This code gives the SOC instructions about what action to take when the signal callback has - * returned. - */ -enum NRF_RADIO_SIGNAL_CALLBACK_ACTION -{ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE, /**< Return without action. */ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND, /**< Request an extension of the current - timeslot. Maximum execution time for this action: - @ref NRF_RADIO_MAX_EXTENSION_PROCESSING_TIME_US. - This action must be started at least - @ref NRF_RADIO_MIN_EXTENSION_MARGIN_US before - the end of the timeslot. */ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_END, /**< End the current radio timeslot. */ - NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END /**< Request a new radio timeslot and end the current timeslot. */ -}; - -/**@brief Radio timeslot high frequency clock source configuration. */ -enum NRF_RADIO_HFCLK_CFG -{ - NRF_RADIO_HFCLK_CFG_XTAL_GUARANTEED, /**< The SoftDevice will guarantee that the high frequency clock source is the - external crystal for the whole duration of the timeslot. This should be the - preferred option for events that use the radio or require high timing accuracy. - @note The SoftDevice will automatically turn on and off the external crystal, - at the beginning and end of the timeslot, respectively. The crystal may also - intentionally be left running after the timeslot, in cases where it is needed - by the SoftDevice shortly after the end of the timeslot. */ - NRF_RADIO_HFCLK_CFG_NO_GUARANTEE /**< This configuration allows for earlier and tighter scheduling of timeslots. - The RC oscillator may be the clock source in part or for the whole duration of the timeslot. - The RC oscillator's accuracy must therefore be taken into consideration. - @note If the application will use the radio peripheral in timeslots with this configuration, - it must make sure that the crystal is running and stable before starting the radio. */ -}; - -/**@brief Radio timeslot priorities. */ -enum NRF_RADIO_PRIORITY -{ - NRF_RADIO_PRIORITY_HIGH, /**< High (equal priority as the normal connection priority of the SoftDevice stack(s)). */ - NRF_RADIO_PRIORITY_NORMAL, /**< Normal (equal priority as the priority of secondary activities of the SoftDevice stack(s)). */ -}; - -/**@brief Radio timeslot request type. */ -enum NRF_RADIO_REQUEST_TYPE -{ - NRF_RADIO_REQ_TYPE_EARLIEST, /**< Request radio timeslot as early as possible. This should always be used for the first request in a session. */ - NRF_RADIO_REQ_TYPE_NORMAL /**< Normal radio timeslot request. */ -}; - -/**@brief SoC Events. */ -enum NRF_SOC_EVTS -{ - NRF_EVT_HFCLKSTARTED, /**< Event indicating that the HFCLK has started. */ - NRF_EVT_POWER_FAILURE_WARNING, /**< Event indicating that a power failure warning has occurred. */ - NRF_EVT_FLASH_OPERATION_SUCCESS, /**< Event indicating that the ongoing flash operation has completed successfully. */ - NRF_EVT_FLASH_OPERATION_ERROR, /**< Event indicating that the ongoing flash operation has timed out with an error. */ - NRF_EVT_RADIO_BLOCKED, /**< Event indicating that a radio timeslot was blocked. */ - NRF_EVT_RADIO_CANCELED, /**< Event indicating that a radio timeslot was canceled by SoftDevice. */ - NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN, /**< Event indicating that a radio timeslot signal callback handler return was invalid. */ - NRF_EVT_RADIO_SESSION_IDLE, /**< Event indicating that a radio timeslot session is idle. */ - NRF_EVT_RADIO_SESSION_CLOSED, /**< Event indicating that a radio timeslot session is closed. */ - NRF_EVT_POWER_USB_POWER_READY, /**< Event indicating that a USB 3.3 V supply is ready. */ - NRF_EVT_POWER_USB_DETECTED, /**< Event indicating that voltage supply is detected on VBUS. */ - NRF_EVT_POWER_USB_REMOVED, /**< Event indicating that voltage supply is removed from VBUS. */ - NRF_EVT_NUMBER_OF_EVTS -}; - -/**@} */ - - -/**@addtogroup NRF_SOC_STRUCTURES Structures - * @{ */ - -/**@brief Represents a mutex for use with the nrf_mutex functions. - * @note Accessing the value directly is not safe, use the mutex functions! - */ -typedef volatile uint8_t nrf_mutex_t; - -/**@brief Parameters for a request for a timeslot as early as possible. */ -typedef struct -{ - uint8_t hfclk; /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */ - uint8_t priority; /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */ - uint32_t length_us; /**< The radio timeslot length (in the range 100 to 100,000] microseconds). */ - uint32_t timeout_us; /**< Longest acceptable delay until the start of the requested timeslot (up to @ref NRF_RADIO_EARLIEST_TIMEOUT_MAX_US microseconds). */ -} nrf_radio_request_earliest_t; - -/**@brief Parameters for a normal radio timeslot request. */ -typedef struct -{ - uint8_t hfclk; /**< High frequency clock source, see @ref NRF_RADIO_HFCLK_CFG. */ - uint8_t priority; /**< The radio timeslot priority, see @ref NRF_RADIO_PRIORITY. */ - uint32_t distance_us; /**< Distance from the start of the previous radio timeslot (up to @ref NRF_RADIO_DISTANCE_MAX_US microseconds). */ - uint32_t length_us; /**< The radio timeslot length (in the range [100..100,000] microseconds). */ -} nrf_radio_request_normal_t; - -/**@brief Radio timeslot request parameters. */ -typedef struct -{ - uint8_t request_type; /**< Type of request, see @ref NRF_RADIO_REQUEST_TYPE. */ - union - { - nrf_radio_request_earliest_t earliest; /**< Parameters for requesting a radio timeslot as early as possible. */ - nrf_radio_request_normal_t normal; /**< Parameters for requesting a normal radio timeslot. */ - } params; /**< Parameter union. */ -} nrf_radio_request_t; - -/**@brief Return parameters of the radio timeslot signal callback. */ -typedef struct -{ - uint8_t callback_action; /**< The action requested by the application when returning from the signal callback, see @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION. */ - union - { - struct - { - nrf_radio_request_t * p_next; /**< The request parameters for the next radio timeslot. */ - } request; /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END. */ - struct - { - uint32_t length_us; /**< Requested extension of the radio timeslot duration (microseconds) (for minimum time see @ref NRF_RADIO_MINIMUM_TIMESLOT_LENGTH_EXTENSION_TIME_US). */ - } extend; /**< Additional parameters for return_code @ref NRF_RADIO_SIGNAL_CALLBACK_ACTION_EXTEND. */ - } params; /**< Parameter union. */ -} nrf_radio_signal_callback_return_param_t; - -/**@brief The radio timeslot signal callback type. - * - * @note In case of invalid return parameters, the radio timeslot will automatically end - * immediately after returning from the signal callback and the - * @ref NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN event will be sent. - * @note The returned struct pointer must remain valid after the signal callback - * function returns. For instance, this means that it must not point to a stack variable. - * - * @param[in] signal_type Type of signal, see @ref NRF_RADIO_CALLBACK_SIGNAL_TYPE. - * - * @return Pointer to structure containing action requested by the application. - */ -typedef nrf_radio_signal_callback_return_param_t * (*nrf_radio_signal_callback_t) (uint8_t signal_type); - -/**@brief AES ECB parameter typedefs */ -typedef uint8_t soc_ecb_key_t[SOC_ECB_KEY_LENGTH]; /**< Encryption key type. */ -typedef uint8_t soc_ecb_cleartext_t[SOC_ECB_CLEARTEXT_LENGTH]; /**< Cleartext data type. */ -typedef uint8_t soc_ecb_ciphertext_t[SOC_ECB_CIPHERTEXT_LENGTH]; /**< Ciphertext data type. */ - -/**@brief AES ECB data structure */ -typedef struct -{ - soc_ecb_key_t key; /**< Encryption key. */ - soc_ecb_cleartext_t cleartext; /**< Cleartext data. */ - soc_ecb_ciphertext_t ciphertext; /**< Ciphertext data. */ -} nrf_ecb_hal_data_t; - -/**@brief AES ECB block. Used to provide multiple blocks in a single call - to @ref sd_ecb_blocks_encrypt.*/ -typedef struct -{ - soc_ecb_key_t const * p_key; /**< Pointer to the Encryption key. */ - soc_ecb_cleartext_t const * p_cleartext; /**< Pointer to the Cleartext data. */ - soc_ecb_ciphertext_t * p_ciphertext; /**< Pointer to the Ciphertext data. */ -} nrf_ecb_hal_data_block_t; - -/**@} */ - -/**@addtogroup NRF_SOC_FUNCTIONS Functions - * @{ */ - -/**@brief Initialize a mutex. - * - * @param[in] p_mutex Pointer to the mutex to initialize. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_MUTEX_NEW, uint32_t, sd_mutex_new(nrf_mutex_t * p_mutex)); - -/**@brief Attempt to acquire a mutex. - * - * @param[in] p_mutex Pointer to the mutex to acquire. - * - * @retval ::NRF_SUCCESS The mutex was successfully acquired. - * @retval ::NRF_ERROR_SOC_MUTEX_ALREADY_TAKEN The mutex could not be acquired. - */ -SVCALL(SD_MUTEX_ACQUIRE, uint32_t, sd_mutex_acquire(nrf_mutex_t * p_mutex)); - -/**@brief Release a mutex. - * - * @param[in] p_mutex Pointer to the mutex to release. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_MUTEX_RELEASE, uint32_t, sd_mutex_release(nrf_mutex_t * p_mutex)); - -/**@brief Query the capacity of the application random pool. - * - * @param[out] p_pool_capacity The capacity of the pool. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RAND_APPLICATION_POOL_CAPACITY_GET, uint32_t, sd_rand_application_pool_capacity_get(uint8_t * p_pool_capacity)); - -/**@brief Get number of random bytes available to the application. - * - * @param[out] p_bytes_available The number of bytes currently available in the pool. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RAND_APPLICATION_BYTES_AVAILABLE_GET, uint32_t, sd_rand_application_bytes_available_get(uint8_t * p_bytes_available)); - -/**@brief Get random bytes from the application pool. - * - * @param[out] p_buff Pointer to unit8_t buffer for storing the bytes. - * @param[in] length Number of bytes to take from pool and place in p_buff. - * - * @retval ::NRF_SUCCESS The requested bytes were written to p_buff. - * @retval ::NRF_ERROR_SOC_RAND_NOT_ENOUGH_VALUES No bytes were written to the buffer, because there were not enough bytes available. -*/ -SVCALL(SD_RAND_APPLICATION_VECTOR_GET, uint32_t, sd_rand_application_vector_get(uint8_t * p_buff, uint8_t length)); - -/**@brief Gets the reset reason register. - * - * @param[out] p_reset_reason Contents of the NRF_POWER->RESETREAS register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RESET_REASON_GET, uint32_t, sd_power_reset_reason_get(uint32_t * p_reset_reason)); - -/**@brief Clears the bits of the reset reason register. - * - * @param[in] reset_reason_clr_msk Contains the bits to clear from the reset reason register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RESET_REASON_CLR, uint32_t, sd_power_reset_reason_clr(uint32_t reset_reason_clr_msk)); - -/**@brief Sets the power mode when in CPU sleep. - * - * @param[in] power_mode The power mode to use when in CPU sleep, see @ref NRF_POWER_MODES. @sa sd_app_evt_wait - * - * @retval ::NRF_SUCCESS The power mode was set. - * @retval ::NRF_ERROR_SOC_POWER_MODE_UNKNOWN The power mode was unknown. - */ -SVCALL(SD_POWER_MODE_SET, uint32_t, sd_power_mode_set(uint8_t power_mode)); - -/**@brief Puts the chip in System OFF mode. - * - * @retval ::NRF_ERROR_SOC_POWER_OFF_SHOULD_NOT_RETURN - */ -SVCALL(SD_POWER_SYSTEM_OFF, uint32_t, sd_power_system_off(void)); - -/**@brief Enables or disables the power-fail comparator. - * - * Enabling this will give a SoftDevice event (NRF_EVT_POWER_FAILURE_WARNING) when the power failure warning occurs. - * The event can be retrieved with sd_evt_get(); - * - * @param[in] pof_enable True if the power-fail comparator should be enabled, false if it should be disabled. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_POF_ENABLE, uint32_t, sd_power_pof_enable(uint8_t pof_enable)); - -/**@brief Enables or disables the USB power ready event. - * - * Enabling this will give a SoftDevice event (NRF_EVT_POWER_USB_POWER_READY) when a USB 3.3 V supply is ready. - * The event can be retrieved with sd_evt_get(); - * - * @param[in] usbpwrrdy_enable True if the power ready event should be enabled, false if it should be disabled. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_USBPWRRDY_ENABLE, uint32_t, sd_power_usbpwrrdy_enable(uint8_t usbpwrrdy_enable)); - -/**@brief Enables or disables the power USB-detected event. - * - * Enabling this will give a SoftDevice event (NRF_EVT_POWER_USB_DETECTED) when a voltage supply is detected on VBUS. - * The event can be retrieved with sd_evt_get(); - * - * @param[in] usbdetected_enable True if the power ready event should be enabled, false if it should be disabled. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_USBDETECTED_ENABLE, uint32_t, sd_power_usbdetected_enable(uint8_t usbdetected_enable)); - -/**@brief Enables or disables the power USB-removed event. - * - * Enabling this will give a SoftDevice event (NRF_EVT_POWER_USB_REMOVED) when a voltage supply is removed from VBUS. - * The event can be retrieved with sd_evt_get(); - * - * @param[in] usbremoved_enable True if the power ready event should be enabled, false if it should be disabled. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_USBREMOVED_ENABLE, uint32_t, sd_power_usbremoved_enable(uint8_t usbremoved_enable)); - -/**@brief Get USB supply status register content. - * - * @param[out] usbregstatus The content of USBREGSTATUS register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_USBREGSTATUS_GET, uint32_t, sd_power_usbregstatus_get(uint32_t * usbregstatus)); - -/**@brief Sets the power failure comparator threshold value. - * - * @note: Power failure comparator threshold setting. This setting applies both for normal voltage - * mode (supply connected to both VDD and VDDH) and high voltage mode (supply connected to - * VDDH only). - * - * @param[in] threshold The power-fail threshold value to use, see @ref NRF_POWER_THRESHOLDS. - * - * @retval ::NRF_SUCCESS The power failure threshold was set. - * @retval ::NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN The power failure threshold is unknown. - */ -SVCALL(SD_POWER_POF_THRESHOLD_SET, uint32_t, sd_power_pof_threshold_set(uint8_t threshold)); - -/**@brief Sets the power failure comparator threshold value for high voltage. - * - * @note: Power failure comparator threshold setting for high voltage mode (supply connected to - * VDDH only). This setting does not apply for normal voltage mode (supply connected to both - * VDD and VDDH). - * - * @param[in] threshold The power-fail threshold value to use, see @ref NRF_POWER_THRESHOLDVDDHS. - * - * @retval ::NRF_SUCCESS The power failure threshold was set. - * @retval ::NRF_ERROR_SOC_POWER_POF_THRESHOLD_UNKNOWN The power failure threshold is unknown. - */ -SVCALL(SD_POWER_POF_THRESHOLDVDDH_SET, uint32_t, sd_power_pof_thresholdvddh_set(uint8_t threshold)); - -/**@brief Writes the NRF_POWER->RAM[index].POWERSET register. - * - * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWERSET register to write to. - * @param[in] ram_powerset Contains the word to write to the NRF_POWER->RAM[index].POWERSET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAM_POWER_SET, uint32_t, sd_power_ram_power_set(uint8_t index, uint32_t ram_powerset)); - -/**@brief Writes the NRF_POWER->RAM[index].POWERCLR register. - * - * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWERCLR register to write to. - * @param[in] ram_powerclr Contains the word to write to the NRF_POWER->RAM[index].POWERCLR register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAM_POWER_CLR, uint32_t, sd_power_ram_power_clr(uint8_t index, uint32_t ram_powerclr)); - -/**@brief Get contents of NRF_POWER->RAM[index].POWER register, indicates power status of RAM[index] blocks. - * - * @param[in] index Contains the index in the NRF_POWER->RAM[index].POWER register to read from. - * @param[out] p_ram_power Content of NRF_POWER->RAM[index].POWER register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_RAM_POWER_GET, uint32_t, sd_power_ram_power_get(uint8_t index, uint32_t * p_ram_power)); - -/**@brief Set bits in the general purpose retention registers (NRF_POWER->GPREGRET*). - * - * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. - * @param[in] gpregret_msk Bits to be set in the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_SET, uint32_t, sd_power_gpregret_set(uint32_t gpregret_id, uint32_t gpregret_msk)); - -/**@brief Clear bits in the general purpose retention registers (NRF_POWER->GPREGRET*). - * - * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. - * @param[in] gpregret_msk Bits to be clear in the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_CLR, uint32_t, sd_power_gpregret_clr(uint32_t gpregret_id, uint32_t gpregret_msk)); - -/**@brief Get contents of the general purpose retention registers (NRF_POWER->GPREGRET*). - * - * @param[in] gpregret_id 0 for GPREGRET, 1 for GPREGRET2. - * @param[out] p_gpregret Contents of the GPREGRET register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_POWER_GPREGRET_GET, uint32_t, sd_power_gpregret_get(uint32_t gpregret_id, uint32_t *p_gpregret)); - -/**@brief Enable or disable the DC/DC regulator for the regulator stage 1 (REG1). - * - * @param[in] dcdc_mode The mode of the DCDC, see @ref NRF_POWER_DCDC_MODES. - * - * @retval ::NRF_SUCCESS - * @retval ::NRF_ERROR_INVALID_PARAM The DCDC mode is invalid. - */ -SVCALL(SD_POWER_DCDC_MODE_SET, uint32_t, sd_power_dcdc_mode_set(uint8_t dcdc_mode)); - -/**@brief Enable or disable the DC/DC regulator for the regulator stage 0 (REG0). - * - * For more details on the REG0 stage, please see product specification. - * - * @param[in] dcdc_mode The mode of the DCDC0, see @ref NRF_POWER_DCDC_MODES. - * - * @retval ::NRF_SUCCESS - * @retval ::NRF_ERROR_INVALID_PARAM The dcdc_mode is invalid. - */ -SVCALL(SD_POWER_DCDC0_MODE_SET, uint32_t, sd_power_dcdc0_mode_set(uint8_t dcdc_mode)); - -/**@brief Request the high frequency crystal oscillator. - * - * Will start the high frequency crystal oscillator, the startup time of the crystal varies - * and the ::sd_clock_hfclk_is_running function can be polled to check if it has started. - * - * @see sd_clock_hfclk_is_running - * @see sd_clock_hfclk_release - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_REQUEST, uint32_t, sd_clock_hfclk_request(void)); - -/**@brief Releases the high frequency crystal oscillator. - * - * Will stop the high frequency crystal oscillator, this happens immediately. - * - * @see sd_clock_hfclk_is_running - * @see sd_clock_hfclk_request - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_RELEASE, uint32_t, sd_clock_hfclk_release(void)); - -/**@brief Checks if the high frequency crystal oscillator is running. - * - * @see sd_clock_hfclk_request - * @see sd_clock_hfclk_release - * - * @param[out] p_is_running 1 if the external crystal oscillator is running, 0 if not. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_CLOCK_HFCLK_IS_RUNNING, uint32_t, sd_clock_hfclk_is_running(uint32_t * p_is_running)); - -/**@brief Waits for an application event. - * - * An application event is either an application interrupt or a pended interrupt when the interrupt - * is disabled. - * - * When the application waits for an application event by calling this function, an interrupt that - * is enabled will be taken immediately on pending since this function will wait in thread mode, - * then the execution will return in the application's main thread. - * - * In order to wake up from disabled interrupts, the SEVONPEND flag has to be set in the Cortex-M - * MCU's System Control Register (SCR), CMSIS_SCB. In that case, when a disabled interrupt gets - * pended, this function will return to the application's main thread. - * - * @note The application must ensure that the pended flag is cleared using ::sd_nvic_ClearPendingIRQ - * in order to sleep using this function. This is only necessary for disabled interrupts, as - * the interrupt handler will clear the pending flag automatically for enabled interrupts. - * - * @note If an application interrupt has happened since the last time sd_app_evt_wait was - * called this function will return immediately and not go to sleep. This is to avoid race - * conditions that can occur when a flag is updated in the interrupt handler and processed - * in the main loop. - * - * @post An application interrupt has happened or a interrupt pending flag is set. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_APP_EVT_WAIT, uint32_t, sd_app_evt_wait(void)); - -/**@brief Get PPI channel enable register contents. - * - * @param[out] p_channel_enable The contents of the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_GET, uint32_t, sd_ppi_channel_enable_get(uint32_t * p_channel_enable)); - -/**@brief Set PPI channel enable register. - * - * @param[in] channel_enable_set_msk Mask containing the bits to set in the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_SET, uint32_t, sd_ppi_channel_enable_set(uint32_t channel_enable_set_msk)); - -/**@brief Clear PPI channel enable register. - * - * @param[in] channel_enable_clr_msk Mask containing the bits to clear in the PPI CHEN register. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ENABLE_CLR, uint32_t, sd_ppi_channel_enable_clr(uint32_t channel_enable_clr_msk)); - -/**@brief Assign endpoints to a PPI channel. - * - * @param[in] channel_num Number of the PPI channel to assign. - * @param[in] evt_endpoint Event endpoint of the PPI channel. - * @param[in] task_endpoint Task endpoint of the PPI channel. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_CHANNEL The channel number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_CHANNEL_ASSIGN, uint32_t, sd_ppi_channel_assign(uint8_t channel_num, const volatile void * evt_endpoint, const volatile void * task_endpoint)); - -/**@brief Task to enable a channel group. - * - * @param[in] group_num Number of the channel group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_TASK_ENABLE, uint32_t, sd_ppi_group_task_enable(uint8_t group_num)); - -/**@brief Task to disable a channel group. - * - * @param[in] group_num Number of the PPI group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_TASK_DISABLE, uint32_t, sd_ppi_group_task_disable(uint8_t group_num)); - -/**@brief Assign PPI channels to a channel group. - * - * @param[in] group_num Number of the channel group. - * @param[in] channel_msk Mask of the channels to assign to the group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_ASSIGN, uint32_t, sd_ppi_group_assign(uint8_t group_num, uint32_t channel_msk)); - -/**@brief Gets the PPI channels of a channel group. - * - * @param[in] group_num Number of the channel group. - * @param[out] p_channel_msk Mask of the channels assigned to the group. - * - * @retval ::NRF_ERROR_SOC_PPI_INVALID_GROUP The group number is invalid. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_PPI_GROUP_GET, uint32_t, sd_ppi_group_get(uint8_t group_num, uint32_t * p_channel_msk)); - -/**@brief Configures the Radio Notification signal. - * - * @note - * - The notification signal latency depends on the interrupt priority settings of SWI used - * for notification signal. - * - To ensure that the radio notification signal behaves in a consistent way, the radio - * notifications must be configured when there is no protocol stack or other SoftDevice - * activity in progress. It is recommended that the radio notification signal is - * configured directly after the SoftDevice has been enabled. - * - In the period between the ACTIVE signal and the start of the Radio Event, the SoftDevice - * will interrupt the application to do Radio Event preparation. - * - Using the Radio Notification feature may limit the bandwidth, as the SoftDevice may have - * to shorten the connection events to have time for the Radio Notification signals. - * - * @param[in] type Type of notification signal, see @ref NRF_RADIO_NOTIFICATION_TYPES. - * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE shall be used to turn off radio - * notification. Using @ref NRF_RADIO_NOTIFICATION_DISTANCE_NONE is - * recommended (but not required) to be used with - * @ref NRF_RADIO_NOTIFICATION_TYPE_NONE. - * - * @param[in] distance Distance between the notification signal and start of radio activity, see @ref NRF_RADIO_NOTIFICATION_DISTANCES. - * This parameter is ignored when @ref NRF_RADIO_NOTIFICATION_TYPE_NONE or - * @ref NRF_RADIO_NOTIFICATION_TYPE_INT_ON_INACTIVE is used. - * - * @retval ::NRF_ERROR_INVALID_PARAM The group number is invalid. - * @retval ::NRF_ERROR_INVALID_STATE A protocol stack or other SoftDevice is running. Stop all - * running activities and retry. - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_RADIO_NOTIFICATION_CFG_SET, uint32_t, sd_radio_notification_cfg_set(uint8_t type, uint8_t distance)); - -/**@brief Encrypts a block according to the specified parameters. - * - * 128-bit AES encryption. - * - * @note: - * - The application may set the SEVONPEND bit in the SCR to 1 to make the SoftDevice sleep while - * the ECB is running. The SEVONPEND bit should only be cleared (set to 0) from application - * main or low interrupt level. - * - * @param[in, out] p_ecb_data Pointer to the ECB parameters' struct (two input - * parameters and one output parameter). - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_ECB_BLOCK_ENCRYPT, uint32_t, sd_ecb_block_encrypt(nrf_ecb_hal_data_t * p_ecb_data)); - -/**@brief Encrypts multiple data blocks provided as an array of data block structures. - * - * @details: Performs 128-bit AES encryption on multiple data blocks - * - * @note: - * - The application may set the SEVONPEND bit in the SCR to 1 to make the SoftDevice sleep while - * the ECB is running. The SEVONPEND bit should only be cleared (set to 0) from application - * main or low interrupt level. - * - * @param[in] block_count Count of blocks in the p_data_blocks array. - * @param[in,out] p_data_blocks Pointer to the first entry in a contiguous array of - * @ref nrf_ecb_hal_data_block_t structures. - * - * @retval ::NRF_SUCCESS - */ -SVCALL(SD_ECB_BLOCKS_ENCRYPT, uint32_t, sd_ecb_blocks_encrypt(uint8_t block_count, nrf_ecb_hal_data_block_t * p_data_blocks)); - -/**@brief Gets any pending events generated by the SoC API. - * - * The application should keep calling this function to get events, until ::NRF_ERROR_NOT_FOUND is returned. - * - * @param[out] p_evt_id Set to one of the values in @ref NRF_SOC_EVTS, if any events are pending. - * - * @retval ::NRF_SUCCESS An event was pending. The event id is written in the p_evt_id parameter. - * @retval ::NRF_ERROR_NOT_FOUND No pending events. - */ -SVCALL(SD_EVT_GET, uint32_t, sd_evt_get(uint32_t * p_evt_id)); - -/**@brief Get the temperature measured on the chip - * - * This function will block until the temperature measurement is done. - * It takes around 50 us from call to return. - * - * @param[out] p_temp Result of temperature measurement. Die temperature in 0.25 degrees Celsius. - * - * @retval ::NRF_SUCCESS A temperature measurement was done, and the temperature was written to temp - */ -SVCALL(SD_TEMP_GET, uint32_t, sd_temp_get(int32_t * p_temp)); - -/**@brief Flash Write -* -* Commands to write a buffer to flash -* -* If the SoftDevice is enabled: -* This call initiates the flash access command, and its completion will be communicated to the -* application with exactly one of the following events: -* - @ref NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. -* - @ref NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. -* -* If the SoftDevice is not enabled no event will be generated, and this call will return @ref NRF_SUCCESS when the - * write has been completed -* -* @note -* - This call takes control over the radio and the CPU during flash erase and write to make sure that -* they will not interfere with the flash access. This means that all interrupts will be blocked -* for a predictable time (depending on the NVMC specification in the device's Product Specification -* and the command parameters). -* - The data in the p_src buffer should not be modified before the @ref NRF_EVT_FLASH_OPERATION_SUCCESS -* or the @ref NRF_EVT_FLASH_OPERATION_ERROR have been received if the SoftDevice is enabled. -* - This call will make the SoftDevice trigger a hardfault when the page is written, if it is -* protected. -* -* -* @param[in] p_dst Pointer to start of flash location to be written. -* @param[in] p_src Pointer to buffer with data to be written. -* @param[in] size Number of 32-bit words to write. Maximum size is the number of words in one -* flash page. See the device's Product Specification for details. -* -* @retval ::NRF_ERROR_INVALID_ADDR Tried to write to a non existing flash address, or p_dst or p_src was unaligned. -* @retval ::NRF_ERROR_BUSY The previous command has not yet completed. -* @retval ::NRF_ERROR_INVALID_LENGTH Size was 0, or higher than the maximum allowed size. -* @retval ::NRF_ERROR_FORBIDDEN Tried to write to an address outside the application flash area. -* @retval ::NRF_SUCCESS The command was accepted. -*/ -SVCALL(SD_FLASH_WRITE, uint32_t, sd_flash_write(uint32_t * p_dst, uint32_t const * p_src, uint32_t size)); - - -/**@brief Flash Erase page -* -* Commands to erase a flash page -* If the SoftDevice is enabled: -* This call initiates the flash access command, and its completion will be communicated to the -* application with exactly one of the following events: -* - @ref NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. -* - @ref NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started. -* -* If the SoftDevice is not enabled no event will be generated, and this call will return @ref NRF_SUCCESS when the -* erase has been completed -* -* @note -* - This call takes control over the radio and the CPU during flash erase and write to make sure that -* they will not interfere with the flash access. This means that all interrupts will be blocked -* for a predictable time (depending on the NVMC specification in the device's Product Specification -* and the command parameters). -* - This call will make the SoftDevice trigger a hardfault when the page is erased, if it is -* protected. -* -* -* @param[in] page_number Page number of the page to erase -* -* @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. -* @retval ::NRF_ERROR_INVALID_ADDR Tried to erase to a non existing flash page. -* @retval ::NRF_ERROR_BUSY The previous command has not yet completed. -* @retval ::NRF_ERROR_FORBIDDEN Tried to erase a page outside the application flash area. -* @retval ::NRF_SUCCESS The command was accepted. -*/ -SVCALL(SD_FLASH_PAGE_ERASE, uint32_t, sd_flash_page_erase(uint32_t page_number)); - - - -/**@brief Opens a session for radio timeslot requests. - * - * @note Only one session can be open at a time. - * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) will be called when the radio timeslot - * starts. From this point the NRF_RADIO and NRF_TIMER0 peripherals can be freely accessed - * by the application. - * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0) is called whenever the NRF_TIMER0 - * interrupt occurs. - * @note p_radio_signal_callback(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO) is called whenever the NRF_RADIO - * interrupt occurs. - * @note p_radio_signal_callback() will be called at ARM interrupt priority level 0. This - * implies that none of the sd_* API calls can be used from p_radio_signal_callback(). - * - * @param[in] p_radio_signal_callback The signal callback. - * - * @retval ::NRF_ERROR_INVALID_ADDR p_radio_signal_callback is an invalid function pointer. - * @retval ::NRF_ERROR_BUSY If session cannot be opened. - * @retval ::NRF_ERROR_INTERNAL If a new session could not be opened due to an internal error. - * @retval ::NRF_SUCCESS Otherwise. - */ - SVCALL(SD_RADIO_SESSION_OPEN, uint32_t, sd_radio_session_open(nrf_radio_signal_callback_t p_radio_signal_callback)); - -/**@brief Closes a session for radio timeslot requests. - * - * @note Any current radio timeslot will be finished before the session is closed. - * @note If a radio timeslot is scheduled when the session is closed, it will be canceled. - * @note The application cannot consider the session closed until the @ref NRF_EVT_RADIO_SESSION_CLOSED - * event is received. - * - * @retval ::NRF_ERROR_FORBIDDEN If session not opened. - * @retval ::NRF_ERROR_BUSY If session is currently being closed. - * @retval ::NRF_SUCCESS Otherwise. - */ - SVCALL(SD_RADIO_SESSION_CLOSE, uint32_t, sd_radio_session_close(void)); - -/**@brief Requests a radio timeslot. - * - * @note The request type is determined by p_request->request_type, and can be one of @ref NRF_RADIO_REQ_TYPE_EARLIEST - * and @ref NRF_RADIO_REQ_TYPE_NORMAL. The first request in a session must always be of type @ref NRF_RADIO_REQ_TYPE_EARLIEST. - * @note For a normal request (@ref NRF_RADIO_REQ_TYPE_NORMAL), the start time of a radio timeslot is specified by - * p_request->distance_us and is given relative to the start of the previous timeslot. - * @note A too small p_request->distance_us will lead to a @ref NRF_EVT_RADIO_BLOCKED event. - * @note Timeslots scheduled too close will lead to a @ref NRF_EVT_RADIO_BLOCKED event. - * @note See the SoftDevice Specification for more on radio timeslot scheduling, distances and lengths. - * @note If an opportunity for the first radio timeslot is not found before 100 ms after the call to this - * function, it is not scheduled, and instead a @ref NRF_EVT_RADIO_BLOCKED event is sent. - * The application may then try to schedule the first radio timeslot again. - * @note Successful requests will result in nrf_radio_signal_callback_t(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START). - * Unsuccessful requests will result in a @ref NRF_EVT_RADIO_BLOCKED event, see @ref NRF_SOC_EVTS. - * @note The jitter in the start time of the radio timeslots is +/- @ref NRF_RADIO_START_JITTER_US us. - * @note The nrf_radio_signal_callback_t(@ref NRF_RADIO_CALLBACK_SIGNAL_TYPE_START) call has a latency relative to the - * specified radio timeslot start, but this does not affect the actual start time of the timeslot. - * @note NRF_TIMER0 is reset at the start of the radio timeslot, and is clocked at 1MHz from the high frequency - * (16 MHz) clock source. If p_request->hfclk_force_xtal is true, the high frequency clock is - * guaranteed to be clocked from the external crystal. - * @note The SoftDevice will neither access the NRF_RADIO peripheral nor the NRF_TIMER0 peripheral - * during the radio timeslot. - * - * @param[in] p_request Pointer to the request parameters. - * - * @retval ::NRF_ERROR_FORBIDDEN If session not opened or the session is not IDLE. - * @retval ::NRF_ERROR_INVALID_ADDR If the p_request pointer is invalid. - * @retval ::NRF_ERROR_INVALID_PARAM If the parameters of p_request are not valid. - * @retval ::NRF_SUCCESS Otherwise. - */ - SVCALL(SD_RADIO_REQUEST, uint32_t, sd_radio_request(nrf_radio_request_t const * p_request)); - -/**@brief Write register protected by the SoftDevice - * - * This function writes to a register that is write-protected by the SoftDevice. Please refer to your - * SoftDevice Specification for more details about which registers that are protected by SoftDevice. - * This function can write to the following protected peripheral: - * - ACL - * - * @note Protected registers may be read directly. - * @note Register that are write-once will return @ref NRF_SUCCESS on second set, even the value in - * the register has not changed. See the Product Specification for more details about register - * properties. - * - * @param[in] p_register Pointer to register to be written. - * @param[in] value Value to be written to the register. - * - * @retval ::NRF_ERROR_INVALID_ADDR This function can not write to the reguested register. - * @retval ::NRF_SUCCESS Value successfully written to register. - * - */ -SVCALL(SD_PROTECTED_REGISTER_WRITE, uint32_t, sd_protected_register_write(volatile uint32_t * p_register, uint32_t value)); - -/**@} */ - -#ifdef __cplusplus -} -#endif -#endif // NRF_SOC_H__ - -/**@} */ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_svc.h b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_svc.h deleted file mode 100644 index 292c692..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_API/include/nrf_svc.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2012 - 2017, Nordic Semiconductor ASA - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without modification, - * are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form, except as embedded into a Nordic - * Semiconductor ASA integrated circuit in a product or a software update for - * such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - * contributors may be used to endorse or promote products derived from this - * software without specific prior written permission. - * - * 4. This software, with or without modification, must only be used with a - * Nordic Semiconductor ASA integrated circuit. - * - * 5. Any software provided in binary form under this license must not be reverse - * engineered, decompiled, modified and/or disassembled. - * - * THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS - * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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. - */ - -#ifndef NRF_SVC__ -#define NRF_SVC__ - -#include "stdint.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifdef SVCALL_AS_NORMAL_FUNCTION -#define SVCALL(number, return_type, signature) return_type signature -#else - -#ifndef SVCALL -#if defined (__CC_ARM) -#define SVCALL(number, return_type, signature) return_type __svc(number) signature -#elif defined (__GNUC__) -#ifdef __cplusplus -#define GCC_CAST_CPP (uint16_t) -#else -#define GCC_CAST_CPP -#endif -#define SVCALL(number, return_type, signature) \ - _Pragma("GCC diagnostic push") \ - _Pragma("GCC diagnostic ignored \"-Wreturn-type\"") \ - __attribute__((naked)) \ - __attribute__((unused)) \ - static return_type signature \ - { \ - __asm( \ - "svc %0\n" \ - "bx r14" : : "I" (GCC_CAST_CPP number) : "r0" \ - ); \ - } \ - _Pragma("GCC diagnostic pop") - -#elif defined (__ICCARM__) -#define PRAGMA(x) _Pragma(#x) -#define SVCALL(number, return_type, signature) \ -PRAGMA(swi_number = (number)) \ - __swi return_type signature; -#else -#define SVCALL(number, return_type, signature) return_type signature -#endif -#endif // SVCALL - -#endif // SVCALL_AS_NORMAL_FUNCTION - -#ifdef __cplusplus -} -#endif -#endif // NRF_SVC__ diff --git a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_license-agreement.txt b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_license-agreement.txt deleted file mode 100644 index 2d1bc12..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_license-agreement.txt +++ /dev/null @@ -1,35 +0,0 @@ -Copyright (c) 2007 - 2018, Nordic Semiconductor ASA -All rights reserved. - -Redistribution and use in source and binary forms, with or without modification, -are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, this - list of conditions and the following disclaimer. - -2. Redistributions in binary form, except as embedded into a Nordic - Semiconductor ASA integrated circuit in a product or a software update for - such product, must reproduce 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 Nordic Semiconductor ASA nor the names of its - contributors may be used to endorse or promote products derived from this - software without specific prior written permission. - -4. This software, with or without modification, must only be used with a - Nordic Semiconductor ASA integrated circuit. - -5. Any software provided in binary form under this license must not be reverse - engineered, decompiled, modified and/or disassembled. - -THIS SOFTWARE IS PROVIDED BY NORDIC SEMICONDUCTOR ASA "AS IS" AND ANY EXPRESS -OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES -OF MERCHANTABILITY, NONINFRINGEMENT, AND FITNESS FOR A PARTICULAR PURPOSE ARE -DISCLAIMED. IN NO EVENT SHALL NORDIC SEMICONDUCTOR ASA 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/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_softdevice.hex b/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_softdevice.hex deleted file mode 100644 index 1ac8528..0000000 --- a/lib/softdevice/s140_nrf52_6.1.0/s140_nrf52_6.1.0_softdevice.hex +++ /dev/null @@ -1,9614 +0,0 @@ -:020000040000FA -:1000000000040020990900002D0600007909000075 -:1000100037060000410600004B060000000000000B -:10002000000000000000000000000000BD0900000A -:1000300055060000000000005F0600006906000091 -:10004000730600007D060000870600009106000090 -:100050009B060000A5060000AF060000B9060000E0 -:10006000C3060000CD060000D7060000E106000030 -:10007000EB060000F5060000FF060000090700007F -:10008000130700001D0700002707000031070000CC -:100090003B070000450700004F070000590700001C -:1000A000630700006D07000077070000810700006C -:1000B0008B070000950700009F070000A9070000BC -:1000C000B3070000BD070000C7070000D10700000C -:1000D000DB070000E5070000EF070000F90700005C -:1000E000030800000D0800001708000021080000A8 -:1000F0002B080000350800003F08000049080000F8 -:10010000530800001FB500F003F88DE80F001FBD75 -:1001100000F038BC70B50B46010B184400F6FF70B8 -:10012000040B4FF080500022090303692403406947 -:1001300043431D1B104600F0E9F929462046BDE85F -:10014000704000F0E3B9F0B54FF6FF734FF4B475AB -:100150001A466E1E12E0A94201D3344600E00C4656 -:10016000B1EB040130F8027B641E3B441A44F9D120 -:100170009CB204EB134394B204EB12420029EAD17F -:1001800098B200EB134002EB124140EA0140F0BD8F -:10019000C34992B00446D1E90001CDE91001FF2224 -:1001A0004021684600F094FB94E80F008DE80F00B2 -:1001B000684610A902E004C841F8042D8842FAD12B -:1001C00010216846FFF7BFFF1090AA208DF8440069 -:1001D00000F0FAF800F0DDF84FF01024A0691022CA -:1001E0006946803000F0DEF8A069082210A900F00E -:1001F000D9F800F0C2F870B504460068A94D072888 -:1002000069D2DFE800F033041929561E2500D4E92D -:10021000026564682946304600F0FDF82A4621460A -:10022000304600F0BFF8AA002146304600F024FB1B -:10023000002800D0032070BD00F0D6FB4FF48050A2 -:1002400007E0201D00F0C6F80028F4D100F0CCFB38 -:1002500060682860002070BD241D94E807009200AB -:1002600000F00AFB0028F6D00E2070BD00F0BEF8AA -:100270000028FAD1D4E9010100EB81034FF080504E -:10028000026945696A43934209D84FF010225369C5 -:1002900003EB81030169406941438B4201D9092085 -:1002A00070BD5069401C01D10F2070BD2046FFF782 -:1002B0006FFF00F09BF80028F7D1201D00F08AF8AE -:1002C0000028F2D160680028F0D100F07DF800F03D -:1002D00060F800F052F8072070BD10B50C461828E1 -:1002E00002D00120086010BD2068FFF784FF206065 -:1002F00010BD4FF01024A069401C05D0A569A66967 -:1003000080353079AA2808D06069401C2DD06069FA -:100310000068401C29D060692CE010212846FFF7B6 -:1003200012FF316881421CD1A16901F18002C03104 -:1003300005E030B108CA51F8040D984201D10120FE -:1003400000E000208A42F4D158B1286810B1042896 -:1003500003D0FEE7284600F070F85249686808604C -:1003600008E000F016F800F008F84FF4805001683B -:10037000491C01D000F012FBFEE7BFF34F8F4A4843 -:1003800001684A4A01F4E06111430160BFF34F8FF5 -:10039000FEE74FF010208169491C02D0806900F00F -:1003A0008CB870472DE9F04117460D4606460024EB -:1003B00006E03046296800F093F8641C2D1D361DB8 -:1003C000BC42F6D3BDE8F0814FF0102080694FF4B5 -:1003D00080519FE64FF080510A69496900684A439D -:1003E000824201D810207047002070474FF08050A3 -:1003F0000169406941434FF01020826902F5805243 -:10040000914201D2092070478069401C01D0002030 -:1004100070470420704770B50C4605464FF480665F -:1004200008E0284600F049F8B44205D3A4F58064FA -:1004300005F58055002CF4D170BD4168044609B122 -:10044000012600E000264FF010256869A26892009E -:1004500000F012FAF8B1A06881006869FFF75AFE4F -:10046000BEB16E694FF08050A56864680169426949 -:100470005143A1420DD9016940694143A94208D9BC -:1004800029463046FFF7C7FF2A4621463046FFF788 -:1004900089FFFFF772FFFFF797FFFFF77AFFF8E793 -:1004A0000C0A0000000000200CED00E00400FA053A -:1004B000144801680029FCD07047134A02211160DA -:1004C00010490B68002BFCD00F4B1B1D18600868EF -:1004D0000028FCD00020106008680028FCD070477D -:1004E000094B10B501221A60064A1468002CFCD092 -:1004F000016010680028FCD00020186010680028F7 -:10050000FCD010BD00E4014004E5014070B50C468C -:10051000054600F073F810B900F07EF828B12146C6 -:100520002846BDE8704000F007B821462846BDE8DF -:10053000704000F037B800007FB5002200920192B1 -:10054000029203920A0B000B6946012302440AE05F -:10055000440900F01F0651F8245003FA06F635430B -:1005600041F82450401C8242F2D80D490868009A94 -:1005700010430860081D0168019A1143016000F0F2 -:100580003DF800280AD0064910310868029A104345 -:100590000860091D0868039A104308607FBD0000C9 -:1005A0000006004030B50F4C002200BF04EB0213E0 -:1005B000D3F800582DB9D3F8045815B9D3F8085812 -:1005C0001DB1521C082AF1D330BD082AFCD204EB1D -:1005D0000212C2F80008C3F804180220C3F8080881 -:1005E00030BD000000E001404FF08050D0F83001F5 -:1005F000082801D000207047012070474FF080503C -:10060000D0F83011062905D0D0F83001401C01D0B7 -:1006100000207047012070474FF08050D0F8300123 -:100620000A2801D0002070470120704708208F4918 -:1006300009680958084710208C4909680958084773 -:1006400014208A4909680958084718208749096809 -:100650000958084730208549096809580847382053 -:1006600082490968095808473C20804909680958A7 -:10067000084740207D4909680958084744207B49BC -:1006800009680958084748207849096809580847FF -:100690004C20764909680958084750207349096871 -:1006A00009580847542071490968095808475820D3 -:1006B0006E490968095808475C206C49096809585F -:1006C0000847602069490968095808476420674954 -:1006D00009680958084768206449096809580847A3 -:1006E0006C20624909680958084770205F49096809 -:1006F0000958084774205D49096809580847782057 -:100700005A490968095808477C2058490968095816 -:1007100008478020554909680958084784205349EB -:100720000968095808478820504909680958084746 -:100730008C204E4909680958084790204B490968A0 -:1007400009580847942049490968095808479820DA -:1007500046490968095808479C20444909680958CE -:100760000847A0204149096809580847A4203F4983 -:10077000096809580847A8203C49096809580847EA -:10078000AC203A49096809580847B0203749096838 -:1007900009580847B4203549096809580847B8205E -:1007A0003249096809580847BC2030490968095886 -:1007B0000847C0202D49096809580847C4202B491B -:1007C000096809580847C82028490968095808478E -:1007D000CC202649096809580847D02023490968D0 -:1007E00009580847D4202149096809580847D820E2 -:1007F0001E49096809580847DC201C49096809583E -:100800000847E0201949096809580847E4201749B2 -:10081000096809580847E820144909680958084731 -:10082000EC201249096809580847F0200F49096867 -:1008300009580847F4200D49096809580847F82065 -:100840000A49096809580847FC20084909680958F5 -:1008500008475FF480700549096809580847000097 -:1008600003480449024A034B70470000000000207F -:10087000180A0000180A000040EA010310B59B079F -:100880000FD1042A0DD310C808C9121F9C42F8D0FA -:1008900020BA19BA884201D9012010BD4FF0FF30AB -:1008A00010BD1AB1D30703D0521C07E0002010BDC1 -:1008B00010F8013B11F8014B1B1B07D110F8013B4D -:1008C00011F8014B1B1B01D1921EF1D1184610BD2E -:1008D00002F0FF0343EA032242EA024200F005B8B5 -:1008E0007047704770474FF000020429C0F0128033 -:1008F00010F0030C00F01B80CCF1040CBCF1020FD3 -:1009000018BF00F8012BA8BF20F8022BA1EB0C01A7 -:1009100000F00DB85FEAC17C24BF00F8012B00F89D -:10092000012B48BF00F8012B70474FF0000200B5C3 -:10093000134694469646203922BFA0E80C50A0E802 -:100940000C50B1F12001BFF4F7AF090728BFA0E8B0 -:100950000C5048BF0CC05DF804EB890028BF40F87C -:10096000042B08BF704748BF20F8022B11F0804FBE -:1009700018BF00F8012B7047014B1B68DB68184754 -:100980000000002009480A497047FFF7FBFFFFF706 -:10099000B9FB00BD20BFFDE7064B1847064A1060B3 -:1009A000016881F30888406800470000180A0000C9 -:1009B000180A0000F3020000000000201EF0040FDF -:1009C0000CBFEFF30881EFF30981886902380078E2 -:1009D000182803D100E00000074A1047074A1268B0 -:1009E0002C3212681047000000B5054B1B68054A01 -:1009F0009B58984700BD0000DB020000000000206B -:100A0000080A0000040000000010000000000000C0 -:080A100000FFFFFF0090D0037E -:10100000801300204958020045C00000AF5702007D -:1010100045C0000045C0000045C0000000000000C1 -:10102000000000000000000000000000A5580200C1 -:1010300045C000000000000045C0000045C00000A1 -:101040000D5902001359020045C0000045C00000C0 -:1010500045C0000045C0000045C0000045C000007C -:101060001959020045C0000045C000001F59020088 -:1010700045C00000255902002B59020031590200D9 -:1010800045C0000045C0000045C0000045C000004C -:1010900045C0000045C0000045C0000045C000003C -:1010A00045C000003759020045C0000045C000009F -:1010B00045C0000045C0000045C0000045C000001C -:1010C0003D59020045C0000045C0000045C0000079 -:1010D00045C0000045C0000045C0000045C00000FC -:1010E00045C0000045C0000045C0000045C00000EC -:1010F00045C0000045C0000045C0000045C00000DC -:1011000045C0000045C0000000F002F824F08BFB51 -:101110000AA090E8000C82448344AAF10107DA4552 -:1011200001D124F080FBAFF2090EBAE80F0013F0F2 -:10113000010F18BFFB1A43F001031847EC4C0200E3 -:101140000C4D02000A444FF0000C10F8013B13F064 -:10115000070408BF10F8014B1D1108BF10F8015B10 -:10116000641E05D010F8016B641E01F8016BF9D103 -:1011700013F0080F1EBF10F8014BAD1C0C1B09D15A -:101180006D1E58BF01F801CBFAD505E014F8016BCC -:1011900001F8016B6D1EF9D59142D6D3704700005E -:1011A0000023002400250026103A28BF78C1FBD870 -:1011B000520728BF30C148BF0B6070471FB500F011 -:1011C0003DF88DE80F001FBD1EF0040F0CBFEFF3BC -:1011D0000880EFF30980014A1047000087BF000034 -:1011E000F0B44046494652465B460FB402A0013077 -:1011F00001B50648004700BF01BC86460FBC8046CB -:10120000894692469B46F0BC7047000009110000D9 -:101210008269034981614FF001001044704700006A -:101220002512000001B41EB400B514F08DFE01B407 -:101230000198864601BC01B01EBD000024F0F0BA42 -:1012400070B51A4C054609202070A01C00F0D1F89A -:101250005920A08029462046BDE8704008F0BAB861 -:1012600008F0C3B870B50C461149097829B1A0F14E -:1012700060015E2908D3012013E0602804D06928AA -:1012800002D043F201000CE020CC0A4E94E80E009C -:1012900006EB8000A0F58050241FD0F8806E284611 -:1012A000B047206070BD012070470000080000209A -:1012B00018000020885902003249884201D20120DA -:1012C00070470020704770B50446A0F500002E4E10 -:1012D000B0F1786F02D23444A4F500042948844266 -:1012E00001D2012500E0002500F043F848B125B9FE -:1012F000B44204D32548006808E0012070BD0020F6 -:1013000070BD002DF9D1B442F9D321488442F6D200 -:10131000F3E710B50446A0F50000B0F1786F03D2F2 -:1013200019480444A4F5000400F023F84FF080416C -:1013300030B11648006804E08C4204D2012003E07A -:1013400013488442F8D2002080F0010010BD10B58F -:1013500020B1FFF7DEFF08B1012010BD002010BD55 -:1013600010B520B1FFF7AFFF08B1012010BD00207C -:1013700010BD084808490068884201D10120704723 -:101380000020704700600200000000201C000020C8 -:101390000800002054000020BEBAFECA10B5044662 -:1013A0000021012000F03DF800210B2000F039F869 -:1013B0000421192000F035F804210D2000F031F847 -:1013C00004210E2000F02DF804210F2000F029F850 -:1013D0000421C84300F025F80621162000F021F86A -:1013E0000621152000F01DF82046FFF729FF0020F8 -:1013F00010BDAE2101807047FFF732BF1148704722 -:1014000010487047104A10B514680F4B0F4A083344 -:101410001A60FFF727FF0C48001D046010BD7047DD -:1014200070474907090E002804DB00F1E02080F82E -:101430000014704700F00F0000F1E02080F8141D48 -:101440007047000003F9004210050240010000014E -:10145000FE48002101604160018170472DE9F7439A -:10146000044692B091464068FFF771FF40B1606852 -:10147000FFF776FF20B9607800F00300022801D062 -:10148000012000E00020F14E30724846FFF71BFFBC -:1014900018B1102015B0BDE8F0834946012001F0D5 -:1014A0008EFE0028F6D101258DF842504FF4C05031 -:1014B000ADF84000002210A9284606F001FC0028E3 -:1014C000E8D18DF842504FF428504FF00008ADF8A5 -:1014D000400047461C216846CDF81C8024F03BF9AB -:1014E0009DF81C0008AA20F00F00401C20F0F0001E -:1014F00010308DF81C0020788DF81D0061789DF863 -:101500001E0061F3420040F001008DF81E009DF8BE -:1015100000000AA940F002008DF800002089ADF813 -:101520003000ADF83270608907AFADF834000B972A -:10153000606810AC0E900A94684606F0B4F9002872 -:10154000A8D1BDF8200030808DF8425042F601202D -:10155000ADF840009DF81E0008AA20F00600801C8F -:1015600020F001008DF81E000220ADF83000ADF82B -:10157000340013A80E900AA9684606F094F90028D2 -:1015800088D1BDF820007080311D484600F033F945 -:10159000002887D18DF8425042F6A620ADF84000D1 -:1015A0001C216846CDF81C8024F0D5F89DF81C005D -:1015B000ADF8345020F00F00401C20F0F000103047 -:1015C0008DF81C009DF81D0008AA20F0FF008DF882 -:1015D0001D009DF81E000AA920F0060040F0010041 -:1015E000801C8DF81E009DF800008DF8445040F0DE -:1015F00002008DF80000CDE90A4711A80E90ADF861 -:101600003050684606F04FF9002899D1BDF8200007 -:10161000F08000203EE73EB504460820ADF800000B -:101620002046FFF750FE08B110203EBD21460120A4 -:1016300001F0C5FD0028F8D12088ADF804006088CD -:10164000ADF80600A088ADF80800E088ADF80A0003 -:101650007E4801AB6A468088002106F02DFDBDF86A -:1016600000100829E1D003203EBD1FB5044600202C -:1016700002900820ADF80800CDF80CD02046FFF706 -:1016800022FE10B1102004B010BD704802AA81885B -:101690004FF6FF7006F052FF0028F4D1BDF8081095 -:1016A000082901D00320EEE7BDF800102180BDF825 -:1016B00002106180BDF80410A180BDF80610E18021 -:1016C000E1E701B582B00220ADF800005F4802AB4F -:1016D0006A464088002106F0EFFCBDF800100229A0 -:1016E00000D003200EBD1CB5002100910221ADF8F1 -:1016F00000100190FFF70DFE08B110201CBD5348EB -:101700006A4641884FF6FF7006F018FFBDF80010DA -:101710000229F3D003201CBDFEB54C4C06461546ED -:10172000207A0F46C00705D00846FFF7CCFD18B158 -:101730001020FEBD0F20FEBDF82D01D90C20FEBDEE -:101740003046FFF7C0FD18BB208801A905F0B0FDA9 -:101750000028F4D130788DF80500208801A906F022 -:1017600089FC0028EBD100909DF800009DF8051041 -:1017700040F002008DF80000090703D040F0080097 -:101780008DF800002088694606F011FC0028D6D1AB -:10179000ADF8085020883B4602AA002106F08CFCD8 -:1017A000BDF80810A942CAD00320FEBD7CB505468D -:1017B0000020009001900888ADF800000C462846F3 -:1017C0000195FFF7C4FD18B92046FFF7A2FD08B147 -:1017D00010207CBD15B1BDF8000050B11B486A4611 -:1017E00001884FF6FF7006F0A9FEBDF800102180B9 -:1017F0007CBD0C207CBD30B593B0044600200D4666 -:101800000090142101A823F0A6FF1C2108A823F0B2 -:10181000A2FF9DF80000CDF808D020F00F00401C7A -:1018200020F0F00010308DF800009DF8010020F04D -:10183000FF008DF801009DF8200040F002008DF8B7 -:10184000200001208DF8460002E000001C0200206C -:1018500042F60420ADF8440011A801902088ADF8AC -:101860003C006088ADF83E00A088ADF84000E088FC -:10187000ADF842009DF8020006AA20F00600801C88 -:1018800020F001008DF802000820ADF80C00ADF842 -:1018900010000FA8059001A908A806F004F8002878 -:1018A00003D1BDF818002880002013B030BD00001F -:1018B000F0B5007B059F1E4614460D46012800D05A -:1018C000FFDF0C2030803A203880002C08D0287AA6 -:1018D000032806D0287B012800D0FFDF1720608175 -:1018E000F0BDA889FBE72DE9F04786B0144691F8D2 -:1018F0000C900E9A0D46B9F1010F0BD01021007B10 -:101900002E8A8846052807D0062833D0FFDF06B088 -:10191000BDE8F0870221F2E7E8890C2100EB4000E6 -:1019200001EB4000188033201080002CEFD0E889B4 -:10193000608100271AE00096688808F1020301AA76 -:10194000696900F084FF06EB0800801C07EB470183 -:1019500086B204EB4102BDF8040090810DF106014E -:1019600040460E3212F09DFD7F1CBFB26089B84226 -:10197000E1D8CCE734201080E889B9F1010F11D00B -:10198000122148430E301880002CC0D0E8896081B5 -:101990004846B9F1010F00D00220207300270DF155 -:1019A000040A1FE00621ECE70096688808F10203AC -:1019B00001AA696900F04BFF06EB0800801C86B2A3 -:1019C000B9F1010F12D007EBC70004EB4000BDF8DE -:1019D0000410C18110220AF10201103023F01AFE16 -:1019E0007F1CBFB26089B842DED890E707EB4701A1 -:1019F00004EB4102BDF80400D0810AF10201404627 -:101A0000103212F04EFDEBE72DE9F0470E4688B09C -:101A100090F80CC096F80C80378AF5890C20109944 -:101A200002F10C044FF0000ABCF1030F08D0BCF126 -:101A3000040F3ED0BCF1070F7DD0FFDF08B067E791 -:101A400005EB850C00EB4C00188031200880002A43 -:101A5000F4D0A8F1060000F0FF09558125E0182117 -:101A600001A823F078FE00977088434601AA7169A7 -:101A700000F0EDFEBDF804002080BDF80600E08017 -:101A8000BDF808002081A21C0DF10A01484612F0A1 -:101A900008FDB9F1000F00D018B184F804A0A4F833 -:101AA00002A007EB080087B20A346D1EADB2D6D291 -:101AB000C4E705EB850C00EB4C0018803220088051 -:101AC000002ABBD0A8F1050000F0FF09558137E0DE -:101AD00000977088434601AA716900F0B8FE9DF82E -:101AE0000600BDF80410E1802179420860F300018E -:101AF00062F34101820862F38201C20862F3C3010A -:101B0000020962F30411420962F34511820962F38A -:101B100086112171C0096071BDF80700208122463D -:101B20000DF10901484612F0BCFC18B184F802A07E -:101B3000A4F800A000E007E007EB080087B20A3431 -:101B40006D1EADB2C4D279E7A8F1020084B205FBE4 -:101B500008F000F10E0CA3F800C035230B80002A1A -:101B6000A6D055819481009783B270880E32716936 -:101B700000F06DFE62E72DE9F84F1E460A9D0C4607 -:101B800081462AB1607A00F58070D080E0891081AA -:101B900099F80C000C274FF000084FF00E0A0D28A2 -:101BA00073D2DFE800F09E070E1C28303846556AD5 -:101BB00073737300214648460095FFF779FEBDE830 -:101BC000F88F207B9146082802D0032800D0FFDF41 -:101BD000378030200AE000BFA9F80A80EFE7207BB9 -:101BE0009146042800D0FFDF378031202880B9F1EA -:101BF000000FF1D1E3E7207B9146042800D0FFDFFE -:101C000037803220F2E7207B9146022800D0FFDFA8 -:101C100037803320EAE7207B1746022800D0FFDF19 -:101C20003420A6F800A02880002FC8D0A7F80A808A -:101C3000C5E7207B1746042800D0FFDF3520A6F833 -:101C400000A02880002FBAD04046A7F80A8012E0F2 -:101C5000207B1746052802D0062800D0FFDF102081 -:101C6000308036202880002FA9D0E0897881A7F81D -:101C70000E80B9F80E00B881A1E7207B91460728B5 -:101C800000D0FFDF37803720B0E72AE04FF01200A6 -:101C900018804FF038001700288090D0E0897881B4 -:101CA000A7F80E80A7F8108099F80C000A2805D034 -:101CB0000B2809D00C280DD0FFDF80E7207B0A28F5 -:101CC00000D0FFDF01200AE0207B0B2800D0FFDFDF -:101CD000042004E0207B0C2800D0FFDF05203873AF -:101CE0006DE7FFDF6BE770B50C46054601F0ABFB17 -:101CF00020B10078222804D2082070BD43F20200EF -:101D000070BD0521284610F03FFE206008B100207C -:101D100070BD032070BD30B44880087820F00F00FB -:101D2000C01C20F0F000903001F8080B1DCA81E8BB -:101D30001D0030BC07F0CFBB2DE9FF4784B0002762 -:101D40008246029707989046894612300AF0CAF9EF -:101D5000401D20F00306079828B907A95046FFF751 -:101D6000C2FF002854D1B9F1000F05D00798017BBC -:101D700019BB052504681BE098F80000092803D06A -:101D80000D2812D0FFDF46E0079903254868B0B35D -:101D9000497B42887143914239D98AB2B3B2011D5D -:101DA00010F065FC0446078002E0079C0425083417 -:101DB0000CB1208810B1032D29D02CE00798012107 -:101DC00012300AF0C1F9ADF80C00024602AB294608 -:101DD000504608F0EEF9070001D1A01C02900798C8 -:101DE0003A461230C8F80400A8F802A003A94046F9 -:101DF000029B0AF0B6F9D8B10A2817D200E006E033 -:101E0000DFE800F007091414100B0D14141213204E -:101E100014E6002012E6112010E608200EE643F238 -:101E200003000BE6072009E60D2007E6032005E680 -:101E3000BDF80C002346CDE900702A4650460799AC -:101E400000F015FD57B9032D08D10798B3B2417BB7 -:101E5000406871438AB2011D10F01DFCB9F1000FFA -:101E6000D7D0079981F80C90D3E72DE9FE4F914622 -:101E70001A881C468A468046FAB102AB494608F0E9 -:101E800098F9050019D04046A61C278810F0C0FE1E -:101E90003246072629463B46009610F0CEFA2088A7 -:101EA0002346CDE900504A465146404600F0DFFC4B -:101EB000002020800120BDE8FE8F0020FBE710B548 -:101EC00086B01C46AAB104238DF800301388ADF803 -:101ED00008305288ADF80A208A788DF80E200988DB -:101EE000ADF80C1000236A462146FFF725FF06B027 -:101EF00010BD1020FBE770B50D46052110F044FD24 -:101F0000040000D1FFDF294604F11200BDE8704053 -:101F10000AF003B92DE9F8430D468046002607F084 -:101F2000D7FA04462878102878D2DFE800F0773B0B -:101F30003453313112313131083131313131287975 -:101F4000001FC0B2022801D0102810D114BBFFDF3F -:101F500035E004B9FFDF0521404610F015FD007B98 -:101F6000032806D004280BD0072828D0FFDF072637 -:101F700055E02879801FC0B2022820D050B1F6E782 -:101F80002879401FC0B2022819D0102817D0EEE7D8 -:101F900004B9FFDF13E004B9FFDF287901280ED16F -:101FA000172137E00521404610F0EEFC070000D174 -:101FB000FFDF07F1120140460AF08CF82CB12A46E7 -:101FC00021464046FFF7A7FE29E01321404602F0D4 -:101FD000F7FC24E004B9FFDF0521404610F0D4FCF3 -:101FE000060000D1FFDF694606F112000AF07CF816 -:101FF000060000D0FFDFA988172901D2172200E0D0 -:102000000A46BDF80000824202D9014602E005E01E -:102010001729C5D3404600F03AFCD0E7FFDF304631 -:10202000BDE8F883401D20F0030219B102FB01F066 -:10203000001D00E000201044704713B5009848B11F -:102040000024684610F0BDFA002C02D1F74A00992E -:1020500011601CBD01240020F4E72DE9F0470C4677 -:1020600015462421204623F076FB05B9FFDFA8782A -:1020700060732888DFF8B4A3401D20F00301AF7817 -:102080008946DAF8000010F0BAFA060000D1FFDF46 -:102090004FF000082660A6F8008077B109FB07F131 -:1020A000091D0AD0DAF8000010F0A9FA060000D1E4 -:1020B000FFDF6660C6F8008001E0C4F8048029886C -:1020C00004F11200BDE8F04709F0F6BF2DE9F04732 -:1020D000804601F112000D4681460AF003F8401DCA -:1020E000D24F20F003026E7B14462968386810F046 -:1020F000B1FA3EB104FB06F2121D03D069683868DC -:1021000010F0A8FA052010F0E7FB0446052010F0B7 -:10211000EBFB201A012802D1386810F065FA494615 -:102120004046BDE8F04709F0DCBF70B50546052123 -:1021300010F02AFC040000D1FFDF04F11201284650 -:10214000BDE8704009F0C6BF2DE9F04F91B04FF0E7 -:10215000000BADF834B0ADF804B047880C46054626 -:1021600092460521384610F00FFC060000D1FFDF33 -:1021700024B1A780A4F806B0A4F808B029780922F1 -:102180000B20B2EB111F7DD12A7A04F11001382700 -:102190004FF00C084FF001090391102A73D2DFE8C9 -:1021A00002F072F2F1F07F08D2888D9F3DDBF3EEF2 -:1021B000B6B6307B022800D0FFDFA88908EBC0014B -:1021C000ADF804103021ADF83410002C25D060811A -:1021D000B5F80E9000271DE004EBC708317C88F8A5 -:1021E0000E10F189A8F80C10CDF80090688804232F -:1021F00004AA296900F02BFBBDF81010A8F81010F4 -:1022000009F10400BDF812107F1C1FFA80F9A8F82C -:102210001210BFB26089B842DED80DE1307B0228CF -:1022200000D0FFDFE98908EBC100ADF804003020E1 -:10223000ADF83400287B0A90001FC0B20F90002C2C -:10224000EBD06181B5F81090002725E0CDF8009023 -:102250006888696903AA0A9B00F0F9FA0A9804EBF6 -:10226000C70848441FFA80F908F10C0204A90F9826 -:1022700012F017F918B188F80EB0A8F80CB0BDF834 -:102280000C1001E0D4E0CFE0A8F81010BDF80E105B -:102290007F1CA8F81210BFB26089B842D6D8CBE034 -:1022A0000DA8009001AB224629463046FFF71BFBE4 -:1022B000C2E0307B082805D0FFDF03E0307B082830 -:1022C00000D0FFDFE8891030ADF804003620ADF80B -:1022D0003400002C3FD0A9896181F189A18127E0D8 -:1022E000307B092800D0FFDFA88900F10C01ADF890 -:1022F00004103721ADF83410002C2CD06081E8890F -:102300000090AB89688804F10C02296956E0E889DD -:102310003921103080B2ADF80400ADF83410002C33 -:1023200074D0A9896181287A0E280AD002212173EC -:10233000E989E181288A0090EB8968886969039AB4 -:102340003CE00121F3E70DA8009001AB22462946AD -:102350003046FFF759FB6FE0307B0A2800D0FFDFE3 -:102360001220ADF80400ADF834704CB3A989618136 -:10237000A4F810B0A4F80EB084F80C905CE020E053 -:1023800002E031E039E042E0307B0B2800D0FFDF93 -:10239000288AADF834701230ADF8040084B10421FD -:1023A0002173A9896181E989E181298A2182688A69 -:1023B00000902B8A688804F11202696900F047FADC -:1023C0003AE0307B0C2800D0FFDF1220ADF804008B -:1023D000ADF834703CB305212173A4F80AB0A4F819 -:1023E0000EB0A4F810B027E00DA8009001AB224673 -:1023F00029463046FFF75CFA1EE00DA8009001ABBD -:10240000224629463046FFF7B6FB15E034E03B2173 -:10241000ADF80400ADF8341074B3A4F80690A4F835 -:1024200008B084F80AB007E0FFDF05E010000020E4 -:10243000297A012917D0FFDFBDF80400AAF80000AF -:102440006CB1BDF834002080BDF804006080BDF898 -:102450003400392803D03C2801D086F80CB011B0E4 -:102460000020BDE8F08F3C21ADF80400ADF8341039 -:1024700014B1697AA172DFE7AAF80000EFE72DE94D -:10248000F84356880F46804615460521304610F021 -:102490007BFA040000D1FFDF123400943B46414632 -:1024A00030466A6809F091FFBAE570B50D4605211E -:1024B00010F06AFA040000D1FFDF294604F112008F -:1024C000BDE8704009F01BBE70B50D46052110F047 -:1024D0005BFA040000D1FFDF294604F11200BDE8D9 -:1024E000704009F039BE70B50546052110F04CFA70 -:1024F000040000D1FFDF04F1080321462846BDE8AF -:1025000070400422B1E470B50546052110F03CFA94 -:10251000040000D1FFDF214628462368BDE8704053 -:102520000522A2E470B50646052110F02DFA04003C -:1025300000D1FFDF04F1120009F0D4FD401D20F0AE -:10254000030511E0011D008803224318214630468F -:10255000FFF78BFC00280BD0607BABB2684382B2E4 -:102560006068011D10F0CDF8606841880029E9D14C -:1025700070BD70B50E46054606F0AAFF040000D1F6 -:10258000FFDF0120207266726580207820F00F0046 -:10259000C01C20F0F00030302070BDE8704006F024 -:1025A0009ABF2DE9F0438BB00D461446814606A92B -:1025B000FFF799FB002814D14FF6FF7601274FF45F -:1025C00020588CB103208DF800001020ADF81000C9 -:1025D00007A8059007AA204604A911F081FF78B149 -:1025E00007200BB0BDE8F0830820ADF808508DF847 -:1025F0000E708DF80000ADF80A60ADF80C800CE0AC -:102600000698A17801742188C1818DF80E70ADF80B -:102610000850ADF80C80ADF80A606A4602214846C1 -:10262000069BFFF789FBDCE708B501228DF8022045 -:1026300042F60202ADF800200A4603236946FFF77E -:102640003EFC08BD08B501228DF8022042F60302C7 -:10265000ADF800200A4604236946FFF730FC08BDA8 -:1026600000B587B079B102228DF800200A88ADF854 -:1026700008204988ADF80A1000236A460521FFF7B3 -:102680005BFB07B000BD1020FBE709B1072316E490 -:102690000720704770B588B00D461446064606A957 -:1026A000FFF721FB00280ED17CB10620ADF80850C1 -:1026B0008DF80000ADF80A40069B6A460821DC81CF -:1026C0003046FFF739FB08B070BD05208DF80000DB -:1026D000ADF80850F0E700B587B059B107238DF881 -:1026E0000030ADF80820039100236A460921FFF766 -:1026F00023FBC6E71020C4E770B588B00C46064639 -:10270000002506A9FFF7EFFA0028DCD10698012181 -:10271000123009F019FD9CB12178062921D2DFE899 -:1027200001F0200505160318801E80B2C01EE28845 -:1027300080B20AB1A3681BB1824203D90C20C2E760 -:102740001020C0E7042904D0A08850B901E0062079 -:10275000B9E7012913D0022905D004291CD0052985 -:102760002AD00720AFE709208DF800006088ADF877 -:102770000800E088ADF80A00A068039023E00A2072 -:102780008DF800006088ADF80800E088ADF80A0018 -:10279000A0680A25039016E00B208DF800006088E1 -:1027A000ADF80800A088ADF80A00E088ADF80C008C -:1027B000A0680B25049006E00C208DF800006078DE -:1027C0008DF808000C256A4629463046069BFFF71F -:1027D000B3FA78E700B587B00D228DF80020ADF888 -:1027E000081000236A461946FFF7A6FA49E700B524 -:1027F00087B071B102228DF800200A88ADF8082058 -:102800004988ADF80A1000236A460621FFF794FABA -:1028100037E7102035E770B586B0064601200D4633 -:10282000ADF808108DF80000014600236A463046D6 -:10283000FFF782FA040008D12946304605F056FC1D -:102840000021304605F070FC204606B070BDF8B59A -:102850001C4615460E46069F10F0C8F92346FF1D7C -:10286000BCB231462A4600940FF0B3FDF8BD30B437 -:102870001146DDE902423CB1032903D0002330BCFC -:1028800008F022BB0123FAE71A8030BC704770B50C -:102890000C460546FFF72FFB2146284605F035FC80 -:1028A0002846BDE87040012105F03EBC4FF0E02213 -:1028B0004FF400400021C2F88001BFF34F8FBFF3F7 -:1028C0006F8F1748016001601649900208607047D9 -:1028D000134900B500220A600A60124B4FF0607283 -:1028E0001A60002808BF00BD0F4A104BDFF840C037 -:1028F00001280CD002281CBFFFDF00BD03200860A8 -:102900001A604FF4000000BFCCF8000000BD0220A8 -:1029100008601A604FF04070F6E700B5FFDF00BDB9 -:1029200000F5004008F501409C02002014F500402D -:1029300004F5014070B50B2000F0BDF9082000F04F -:10294000BAF900210B2000F0D4F90021082000F092 -:10295000D0F9F44C01256560A5600020C4F8400161 -:10296000C4F84401C4F848010B2000F0B5F9082070 -:1029700000F0B2F90B2000F091F9256070BD10B5A0 -:102980000B2000F098F9082000F095F9E5480121A6 -:1029900041608160E4490A68002AFCD10021C0F846 -:1029A0004011C0F84411C0F848110B2000F094F910 -:1029B000BDE81040082000F08FB910B50B2000F0E2 -:1029C0008BF9BDE81040082000F086B900B530B1A1 -:1029D000012806D0022806D0FFDF002000BDD34822 -:1029E00000BDD34800BDD248001D00BD70B5D1491F -:1029F0004FF000400860D04DC00BC5F80803CF4829 -:102A000000240460C5F840410820C43500F053F9A3 -:102A1000C5F83C41CA48047070BD08B5C14A0021E0 -:102A200028B1012811D002281CD0FFDF08BD4FF4C7 -:102A30008030C2F80803C2F84803BB483C3001604C -:102A4000C2F84011BDE80840D0E74FF40030C2F8AA -:102A50000803C2F84803B44840300160C2F844118A -:102A6000B3480CE04FF48020C2F80803C2F84803D2 -:102A7000AD4844300160C2F84811AD48001D0068FF -:102A8000009008BD70B516460D460446022800D9D0 -:102A9000FFDF0022A348012304F110018B4000EB6B -:102AA0008401C1F8405526B1C1F84021C0F8043373 -:102AB00003E0C0F80833C1F84021C0F8443370BDCA -:102AC0002DE9F0411D46144630B1012833D00228CB -:102AD00038D0FFDFBDE8F081891E002221F07F4160 -:102AE0001046FFF7CFFF012D23D00020944D924FC9 -:102AF000012668703E61914900203C39086002203F -:102B0000091D08608D490420303908608B483D3428 -:102B1000046008206C6000F0DFF83004C7F804039C -:102B2000082000F0BBF88349F007091F08602E70E9 -:102B3000D0E70120DAE7012B02D00022012005E0D6 -:102B40000122FBE7012B04D000220220BDE8F04166 -:102B500098E70122F9E774480068704770B500F003 -:102B6000D8F8704C0546D4F840010026012809D158 -:102B7000D4F80803C00305D54FF48030C4F8080327 -:102B8000C4F84061D4F8440101280CD1D4F80803FA -:102B9000800308D54FF40030C4F80803C4F844613A -:102BA000012012F06AFCD4F8480101280CD1D4F8B5 -:102BB0000803400308D54FF48020C4F80803C4F884 -:102BC0004861022012F059FC5E48056070BD70B586 -:102BD00000F09FF85A4D0446287850B1FFF706FFE1 -:102BE000687818B10020687012F047FC55480460FE -:102BF00070BD0320F8E74FF0E0214FF40010C1F85A -:102C000000027047152000F067B84B4901200861A9 -:102C1000082000F061B848494FF47C10C1F808035F -:102C20000020024601EB8003C3F84025C3F8402191 -:102C3000401CC0B20628F5D37047410A43F609523A -:102C40005143C0F3080010FB02F000F5807001EB67 -:102C50005020704710B5430B48F2376463431B0C98 -:102C60005C020C60384C03FB0400384B4CF2F72438 -:102C700043435B0D13FB04F404EB402000F580702C -:102C80004012107008681844086010BD2C48406855 -:102C9000704729490120C1F800027047002809DB6C -:102CA00000F01F02012191404009800000F1E02066 -:102CB000C0F80011704700280DDB00F01F02012151 -:102CC00091404009800000F1E020C0F88011BFF37E -:102CD0004F8FBFF36F8F7047002809DB00F01F0292 -:102CE000012191404009800000F1E020C0F88012ED -:102CF00070474907090E002804DB00F1E02080F846 -:102D00000014704700F00F0000F1E02080F8141D5F -:102D100070470C48001F00680A4A0D49121D1160D7 -:102D20007047000000B0004004B500404081004002 -:102D300044B1004008F5014000800040408500405B -:102D40003400002014050240F7C2FFFF6F0C0100A1 -:102D5000010000010A4810B5046809490948083112 -:102D6000086012F01EFC0648001D046010BD0649F4 -:102D7000002008604FF0E0210220C1F88002704777 -:102D80001005024001000001FC1F004010B50D209D -:102D900000F077F8C4B26FF0040000F072F8C0B22F -:102DA000844200D0FFDF3E490120086010BD70B5AD -:102DB0000D2000F048F83B4C0020C4F8000101252C -:102DC000C4F804530D2000F04FF825604FF0E021C7 -:102DD0006014C1F8000170BD10B50D2000F033F88B -:102DE0003048012141600021C0F80011BDE81040C9 -:102DF0000D2000F039B82C4810B504682A492B483A -:102E0000083108602749D1F80001012804D0FFDF0C -:102E10002548001D046010BD2148001D00680022E7 -:102E2000C0B2C1F8002113F009F8F1E710B51D4850 -:102E3000D0F800110029FBD0FFF7DDFFBDE81040FE -:102E40000D2000F011B800280DDB00F01F02012159 -:102E500091404009800000F1E020C0F88011BFF3EC -:102E60004F8FBFF36F8F7047002809DB00F01F0200 -:102E7000012191404009800000F1E020C0F880125B -:102E80007047002804DB00F1E02090F8000405E022 -:102E900000F00F0000F1E02090F8140D4009704799 -:102EA00004D5004000D000401005024001000001A0 -:102EB0004FF0E0214FF00070C1F8800101F5C071C2 -:102EC000BFF34F8FBFF36F8FC1F80001384B8022E3 -:102ED00083F8002441F8800C704700B502460420B6 -:102EE000344903E001EBC0031B792BB1401EC0B293 -:102EF000F8D2FFDFFF2000BD41F8302001EBC00118 -:102F000000224A718A7101220A7100BD294A0021FA -:102F100002EBC0000171704710B50446042800D3CD -:102F2000FFDF244800EBC4042079012800D0FFDF34 -:102F30006079A179401CC0B2814200D060714FF02D -:102F4000E0214FF00070C1F8000210BD2DE9F04102 -:102F500019480568184919480831086014480426BA -:102F600090F80004134F4009154C042818D0FFDFD7 -:102F700016E0217807EBC1000279012A08D14279D5 -:102F800083799A4204D04279827157F831008047A0 -:102F90002078401CC0B22070042801D3002020708B -:102FA000761EF6B2E5D20448001D0560BDE8F0814A -:102FB00019E000E0D40500201005024001000001E6 -:102FC000500000200548064A0168914201D10021C5 -:102FD000016004490120086070470000540000208F -:102FE000BEBAFECA40E5014070B50C46054609F080 -:102FF00089FB21462846BDE870400AF06EBC704748 -:103000002CFFFFFFDBE5B15100600200AE00FFFFC7 -:103010008C00000068915B008308DF2FACFED6397E -:1030200029D64B9DC15EF1868A16B47C30B5F84D29 -:103030000446062CA9780ED2DFE804F0030E0E0E2B -:103040000509FFDF08E0022906D0FFDF04E00329BD -:1030500002D0FFDF00E0FFDFAC7030BD30B50446CA -:103060001038EB4D07280CD2DFE800F0040C060CFA -:103070000C0C0C00FFDF05E0287E112802D0FFDFDA -:1030800000E0FFDF2C7630BD2DE9F04111F092FB1E -:10309000044612F063FD201AC5B206200FF01CFC96 -:1030A000044606200FF020FC211AD94C207E12285D -:1030B00018D000200F1807200FF00EFC064607203E -:1030C0000FF012FC301A3918207E13280CD0002083 -:1030D0000144A078042809D000200844281AC0B26E -:1030E000BDE8F0810120E5E70120F1E70120F4E7E8 -:1030F000C74810B590F825004108C54800F12600E2 -:1031000005D00DF006FBBDE8104006F003B80DF049 -:10311000E1FAF8E730B50446A1F120000D460A288F -:103120004AD2DFE800F005070C1C2328353A3F445B -:10313000FFDF42E0207820283FD1FFDF3DE0B448A8 -:103140008178052939D0007E122836D020782428AD -:1031500033D0252831D023282FD0FFDF2DE0207851 -:1031600022282AD0232828D8FFDF26E0207822280A -:1031700023D0FFDF21E0207822281ED024281CD075 -:1031800026281AD0272818D0292816D0FFDF14E0C7 -:103190002078252811D0FFDF0FE0207825280CD0DB -:1031A000FFDF0AE02078252807D0FFDF05E0207840 -:1031B000282802D0FFDF00E0FFDF257030BD1FB5FB -:1031C00004466A46002001F035FEB4B1BDF8022085 -:1031D0004FF6FF700621824201D1ADF80210BDF812 -:1031E0000420824201D1ADF80410BDF808108142DC -:1031F00003D14FF44860ADF8080068460EF0EBF8D4 -:1032000005F088FF04B010BD70B514460D460646A3 -:10321000FEF759F858B90DB1A54201D90C2070BD7F -:10322000002408E056F82400FEF74DF808B11020FD -:1032300070BD641CE4B2AC42F4D3002070BD2DE933 -:10324000F04105461F4690460E4600240068FEF7F2 -:1032500087F830B9A98828680844401EFEF780F82E -:1032600008B110203CE728680028A88802D0B8429E -:1032700002D850E00028F5D0092031E72968085D20 -:10328000B8B1671CCA5D152A2ED03CDC152A3AD28B -:10329000DFE802F03912222228282A2A313139396E -:1032A00039393939393939392200085D30BB641C64 -:1032B000A4B2A242F9D833E00228DDD1A01C085CF8 -:1032C00088F80000072801D2400701D40A2007E748 -:1032D000307840F0010015E0C143C90707E001283C -:1032E00007D010E00620FBE60107A1F1805100297C -:1032F000F5D01846F4E63078810701D50B20EFE6CB -:1033000040F0020030702868005D384484B2A8881C -:10331000A04202D2B0E74FF4485382B2A242ADD8E5 -:103320000020DDE610B5027843F2022354080122A2 -:10333000022C12D003DC3CB1012C16D106E0032C88 -:1033400010D07F2C11D112E0002011E080790324ED -:10335000B4EB901F09D10A700BE08079B2EB901F9B -:1033600003D1F8E780798009F5D0184610BDFF2019 -:103370000870002010BD08B500208DF8000024481A -:1033800090F82E1049B190F82F0002280ED0032893 -:103390000ED0FFDF9DF8000008BD1D4869462530AE -:1033A00001F097FD0028F5D0FFDFF3E7032000E0F0 -:1033B00001208DF80000EDE738B50C46054669465A -:1033C00001F087FD00280DD19DF80010207861F3F1 -:1033D0004700207055F8010FC4F80100A888A4F830 -:1033E0000500002038BD38B51378A8B1022813D0E5 -:1033F000FF281AD007A46D46246800944C7905EB89 -:103400009414247864F347031370032809D00FE061 -:10341000E80100200302FF0123F0FE0313700228DD -:10342000F3D1D8B240F0010005E043F0FE00107087 -:10343000107820F0010010700868C2F80100888838 -:10344000A2F8050038BD02210FF09EBA38B50C462F -:103450000978222901D2082038BDADF800008DF886 -:10346000022068460DF097F905F054FE050003D1DF -:1034700021212046FFF74EFE284638BD1CB500200E -:103480008DF80000CDF80100ADF80500FB4890F87C -:103490002E00022801D0012000E000208DF8070056 -:1034A00068460DF0DAFA002800D0FFDF1CBD0022CC -:1034B0000A80437892B263F3451222F040020A80F8 -:1034C00000780C282BD2DFE800F02A06090E11162E -:1034D000191C1F220C2742F0110009E042F01D00C8 -:1034E00008800020704742F0110012E042F0100006 -:1034F00040F00200F4E742F01000F1E742F0010072 -:10350000EEE742F0010004E042F00200E8E742F09A -:10351000020040F00400E3E742F00400E0E7072087 -:1035200070472DE9FF478AB00025BDF82C60824620 -:103530001C4691468DF81C50700703D56068FDF756 -:10354000C2FE68B9CD4F4FF0010897F82E0058B170 -:1035500097F82F00022807D16068FDF701FF18B126 -:1035600010200EB0BDE8F087300702D5A089802872 -:103570003ED8700705D4B9F1000F02D097F82400A7 -:10358000A0B3E07DC0F300108DF81B00627D072022 -:10359000032162B3012A2DD0022AE2D0042AE0D10D -:1035A0008DF81710F00628D4A27D07202AB3012A2F -:1035B00023D0022A24D0042AD3D18DF8191000BFB9 -:1035C0008DF81590606810B307A9FFF7ABFE0028CF -:1035D000C7D19DF81C00FF2816D0606850F8011F65 -:1035E000CDF80F108088ADF8130014E000E001E082 -:1035F0000720B6E78DF81780D4E78DF81980DFE74C -:1036000002208DF81900DBE743F20220A9E7CDF88C -:103610000F50ADF81350E07B40B9207C30B9607C8E -:1036200020B9A07C10B9E07CC00601D0062098E744 -:103630008DF800A0BDF82C00ADF80200A068019044 -:10364000A068029004F10F0001F037FC8DF80C0027 -:10365000FFF791FE8DF80D009DF81C008DF80E000F -:103660008DF816508DF81850E07D08A900F00F0075 -:103670008DF81A0068460DF0E9FF05F04BFD70E784 -:10368000F0B58FB000258DF830508DF814508DF8BE -:10369000345006468DF828500195029503950495FF -:1036A00019B10FC901AC84E80F00744CA07805284B -:1036B00001D004280CD101986168884200D120B95A -:1036C0000398E168884203D110B108200FB0F0BD23 -:1036D000207DC00601D51F2700E0FF273B460DAA2D -:1036E00005A903A8FFF7ABFD0028EFD1A08AC10709 -:1036F00002D0C00600D4EE273B460AAA0CA901A8B6 -:10370000FFF79DFD0028E1D19DF81400C00701D00E -:103710000A20DBE7A08A410708D4A17D31B19DF8DA -:103720002810890702D043F20120CFE79DF8281026 -:10373000C90709D0400707D4208818B144F2506166 -:10374000884201D90720C1E78DF818508DF819601B -:10375000BDF80800ADF81A000198079006A80DF012 -:103760008FFF05F0D7FC0028B0D18DF820508DF8E0 -:103770002160BDF81000ADF822000398099008A858 -:103780000DF09DFF05F0C6FC00289FD101AD241D62 -:1037900095E80F0084E80F00002097E770B586B029 -:1037A0000D46040005D0FDF7DBFD20B1102006B06A -:1037B00070BD0820FBE72078C107A98802D0FF2947 -:1037C00002D303E01F2901D20920F0E7800763D468 -:1037D000FFF75AFC38B12178C1F3C100012804D0A9 -:1037E000032802D005E01320E1E7244890F82400E4 -:1037F000C8B1C8074FF001064FF0000502D08DF8A0 -:103800000F6001E08DF80F50FFF7B5FD8DF8000057 -:1038100020786946C0F3C1008DF8010060788DF80A -:103820000250C20801D00720C1E730B3C20701D05F -:103830008DF80260820705D59DF8022042F0020251 -:103840008DF80220400705D59DF8020040F00400E5 -:103850008DF80200002022780B18C2F38002DA7083 -:1038600001EB40026388D380401CA388C0B253811F -:103870000228F0D3207A78B905E001E0E8010020C1 -:103880008DF80260E6E7607A30B9A07A20B9E07A74 -:1038900010B9207BC00601D0062088E704F108009B -:1038A00001F00BFB8DF80E0068460DF09FFA05F055 -:1038B00031FC002889D18DF810608DF81150E08816 -:1038C000ADF81200ADF8145004A80DF0E2FA05F0BE -:1038D00021FC002888D12078C00701D0152000E005 -:1038E0001320FFF7BBFB002061E72DE9FF47022013 -:1038F000FB4E8DF804000027708EADF80600B84628 -:1039000043F202094CE001A80EF0A5FF050006D025 -:10391000708EA8B3A6F83280ADF806803EE0039C16 -:10392000A07F01072DD504F124000090A28EBDF8E0 -:103930000800214604F1360301F057FC050005D0CC -:103940004D452AD0112D3CD0FFDF3AE0A07F20F07A -:103950000801E07F420862F3C711A177810861F393 -:103960000000E07794F8210000F01F0084F82000A8 -:103970002078282826D129212046FFF7CBFB21E0FB -:1039800014E040070AD5BDF8080004F10E0101F06B -:10399000AAFA05000DD04D4510D100257F1CFFB2BD -:1039A00002200EF099FF401CB842ACD8052D11D072 -:1039B00008E0A07F20F00400A07703E0112D00D0E4 -:1039C000FFDF0025BDF806007086052D04D02846CF -:1039D00004B0C7E5A6F832800020F9E770B50646C6 -:1039E000FFF731FD054605F073FD040000D1FFDF50 -:1039F0006680207820F00F00801C20F0F00020303E -:103A000020700320207295F83E006072BDE870407F -:103A100005F061BD2DE9F04786B0040000D1FFDF5D -:103A20002078AF4D20F00F00801C20F0F0007030A7 -:103A3000207060680178491F1B2933D2DFE801F04C -:103A4000FE32323255FD320EFDFD42FC323232780A -:103A5000FCFCFBFA3232FCFCF9F8FC00C68830466C -:103A6000FFF7F1FC0546304607F02CF9E0B160683D -:103A7000007A85F83E0021212846FFF74BFB3046AF -:103A8000FEF753FB304603F053FE3146012012F09F -:103A900095FCA87F20F01000A877FFF726FF0028EC -:103AA00000D0FFDF06B05DE5207820F0F000203088 -:103AB00020700320207266806068007A607205F0D2 -:103AC0000AFDD8E7C5882846FFF7BDFC00B9FFDF2F -:103AD00060680079012800D0FFDF6068017A06B0D5 -:103AE0002846BDE8F04707F0CCBCC6883046FFF753 -:103AF000AAFC050000D1FFDF05F0EDFC606831464F -:103B00000089288160684089688160688089A8810F -:103B1000012012F053FC0020A875A87F00F00300DC -:103B20000228BFD1FFF7E1FE0028BBD0FFDFB9E7D5 -:103B300000790228B6D000B1FFDF05F0CCFC666842 -:103B4000B6F806A0307A361D012806D0687E814678 -:103B500005F04CFA070003D101E0E878F7E7FFDF52 -:103B60000022022150460EF006FF040000D1FFDFC4 -:103B700022212046FFF7CEFA3079012800D002201A -:103B8000A17F804668F30101A177308B2081708B83 -:103B90006081B08BA08184F822908DF80880B8688D -:103BA0000090F86801906A46032150460EF0E3FE4B -:103BB00000B9FFDFB888ADF81000B8788DF81200B2 -:103BC00004AA052150460EF0D6FE00B9FFDFB888E2 -:103BD000ADF80C00F8788DF80E0003AA04215046C9 -:103BE0000EF0C9FE00B9FFDF062106F1120001F058 -:103BF00098F940B37079800700D5FFDF7179E07DD7 -:103C000061F34700E075D6F80600A0617089A083D3 -:103C1000062106F10C0001F084F9F0B195F82500B9 -:103C20004108607861F347006070D5F8260006E02F -:103C30003EE036E06DE055E04AE02CE040E0C4F8BC -:103C40000200688D12E0E07D20F0FE00801CE0752F -:103C5000D6F81200A061F08AD9E7607820F0FE0063 -:103C6000801C6070F068C4F80200308AE080B8F10F -:103C7000010F04D0B8F1020F05D0FFDF12E70320D7 -:103C8000FFF7D4F90EE7287E122800D0FFDF1120BD -:103C9000FFF7E4F906E706B02046BDE8F04701F07B -:103CA0002DBD05F018FC15F8300F40F0020005E0BE -:103CB00005F011FC15F8300F40F004002870F1E613 -:103CC000287E132809D01528D8D11620FFF7C6F969 -:103CD00006B0BDE8F04705F0FEBB1420F6E7000093 -:103CE000E8010020A978052909D00429C6D105F0EA -:103CF000F2FB022006B0BDE8F047FFF797B9007964 -:103D00000028BBD0E87801F0BFF805F0E4FB032001 -:103D1000F0E7287E122802D1687E01F0B5F8112064 -:103D2000D4E72DE9F047054600784FF00008000978 -:103D3000DFF8C0A891460C464646012875D00228F7 -:103D400074D007280AD00A2871D0FFDFA9F80060D4 -:103D500014B1A4F800806680002003E4696801279C -:103D600004F108000A784FF0020C4FF6FF73172A8F -:103D70007ED00EDC142A32D006DC052A68D0092A4F -:103D800010D0102A75D120E0152A73D0162AF9D147 -:103D9000F8E0183A082A6CD2DFE802F0F36B6B0AFD -:103DA000CAF2DFF1C8884FF01208102621468DE1D3 -:103DB0004FF01C080A26BCB38888A0806868807908 -:103DC00020726868C0796072C0E74FF01B08142643 -:103DD00054B30320207268688088A080B6E70A790F -:103DE0003C2AB3D00D1D4FF010082C26E4B1698891 -:103DF000A180298B6182298B2182698BA182A98B69 -:103E0000E1826B790246A91D1846FFF7ECFA297981 -:103E1000002001290CD084F80FC0FF212176E06139 -:103E200020626062A06291E70FE02EE151E18CE137 -:103E3000E77320760AF1040090E80E00DAF810002B -:103E4000C4E90930C4E9071280E7A9F8006083E7F4 -:103E50002C264FF01D08002CF7D00546A380887B48 -:103E60002A880F1D60F300022A80887B400802E048 -:103E70009DE007E1BEE060F341022A80887B800874 -:103E800060F382022A80887BB91CC00860F3C302F9 -:103E90002A80B87A0011401C60F3041202F07F00FF -:103EA00028807878AA1CFFF79EFA387D05F1090270 -:103EB00007F11501FFF797FA387B01F041F82874F4 -:103EC000787B01F03DF86874F87EA874787AE8741D -:103ED000387F2875B87B6875388AE882DAF81C0064 -:103EE000A861B87A524697F808A0C0F34111012999 -:103EF00004D0108C504503D2824609E0FFDF10E069 -:103F0000022903D0288820F0600009E0504504D140 -:103F1000288820F06000403002E0288840F06000EF -:103F20002880A4F824A0524607F11D01A86996E054 -:103F300011264FF02008002C87D0A380686804F178 -:103F40000A02007920726868007B607269688B1DC4 -:103F500048791946FFF747FAF8E60A264FF0210894 -:103F6000002CE9D08888A080686880792072686811 -:103F7000C07960729AF8301021F004019FE065E08A -:103F80004CE06FE00B264FF02208002CD4D0C888FC -:103F9000A0806868007920726868007A00F0D0FF1D -:103FA00060726868407A00F0CBFFA072CEE61C26F3 -:103FB0004FF02608002CBFD0A3806868407960725B -:103FC0006868007AA0720AF1040090E80E00DAF83E -:103FD0001000C4E90530C4E90312686800793C2880 -:103FE00003D0432803D0FFDFB0E62772AEE684F8A3 -:103FF00008C0ABE610264FF02408002C9CD088881F -:10400000A0806868807920816868807A60816868AB -:104010000089A08168688089E08197E610264FF0CA -:104020002308002C88D08888A0806868C0882081F8 -:1040300068680089608168684089A08168688089B3 -:10404000E0819AF8301021F0020138E030264FF07C -:104050002508002C85D0A38069682822496821F0B2 -:10406000D9FA73E614264FF01B08002C8ED0A380DB -:10407000686800790128BAD02772DAE90710C4E924 -:10408000031063E64A46214660E0287A012803D0FF -:10409000022817D0FFDF59E610264FF01F08002C2A -:1040A00089D06888A080A8892081E8896081288AD1 -:1040B000A081688AE0819AF8301021F001018AF825 -:1040C000301043E64FF012081026688800F016FF03 -:1040D0003CE6287AC8B3012838D0022836D0032815 -:1040E00001D0FFDF32E609264FF01108002C85D001 -:1040F0006F883846FFF7A7F990F822A0A780687A62 -:104100002072042138460EF051FC052138460EF08D -:104110004DFC002138460EF049FC012138460EF0D6 -:1041200045FC032138460EF041FC022138460EF0D2 -:104130003DFC062138460EF039FC072138460EF0CA -:1041400035FC504600F0A0FE00E6FFE72846BDE83B -:10415000F04701F05DBC70B5012803D0052800D000 -:10416000FFDF70BD8DB22846FFF76DF9040000D166 -:10417000FFDF20782128F4D005F0AAF980B101787A -:1041800021F00F01891C21F0F00110310170022192 -:10419000017245800020A075BDE8704005F09BB914 -:1041A00021462846BDE870401322FFF74FB92DE99C -:1041B000F04116460C00804600D1FFDF307820F039 -:1041C0000F00801C20F0F0001030307020780128A3 -:1041D00004D0022818D0FFDFBDE8F0814046FFF789 -:1041E00032F9050000D1FFDF0320A87505F073F94F -:1041F00094E80F00083686E80F00FE4810F8301FDC -:1042000041F001010170E7E74046FFF71CF90500A6 -:1042100000D1FFDFA1884FF6FF700027814202D155 -:10422000E288824203D0814201D1E08840B105F0AA -:1042300052F994E80F00083686E80F00AF75CBE717 -:10424000A87D0128C8D178230022414612F00CF83D -:104250000220A875C0E738B505460C460846FDF7AC -:1042600032F818BB203D062D4AD2DFE805F0031BCB -:10427000373C42300021052012F076F808B11120B9 -:1042800038BDA01C0DF0FAF804F044FF050038D149 -:10429000002208231146052011F0E6FF052830D042 -:1042A000FFDF2EE06068FDF752F808B1102038BD3E -:1042B000618820886A460DF099FB04F02BFF050009 -:1042C0001FD16068E8B1BDF80010018019E0A07846 -:1042D00000F0010120880DF0BAFB0EE0206801F02B -:1042E00043FE05460DE0207800F001000CF0DBF9FC -:1042F00003E0618820880DF0F4FA04F00BFFF0E78A -:104300000725284638BD70B505460C460846FDF71A -:1043100000F808B1102070BD202D07D0212D0DD040 -:10432000222D0BD0252D09D0072070BD2088A11C7F -:104330000CF08EFABDE8704004F0ECBE062070BDB3 -:10434000AC482530704708B53421AA4821F003FA5B -:104350000120FEF76BFE1120FEF780FEA54968469E -:10436000263105F04BF8A3489DF8002010F8251FD2 -:1043700062F3470121F001010170002141724FF405 -:104380006171A0F8071002218172FEF7B1FE00B141 -:10439000FFDFFDF75DF801F07CF908BD10B50C46B4 -:1043A0004021204621F0B5F9A07F20F00300A0773E -:1043B000202020700020A07584F8230010BD7047D5 -:1043C0002DE9FC410746FCF77EFF10B11020BDE847 -:1043D000FC81884E06F12501D6F825000090B6F83C -:1043E0002950ADF8045096F82B408DF80640384619 -:1043F000FEF7E2FF0028EAD1FEF77AFE0028E6D0B9 -:10440000009946F8251FB580B471E0E710B5044661 -:10441000FCF77FFF08B1102010BD76487549224691 -:1044200090F8250026314008FEF7DDFF002010BD82 -:104430003EB504460D460846FCF76BFF08B1102058 -:104440003EBD14B143F204003EBD6A4880780528A1 -:1044500003D0042801D008203EBD694602A80AF016 -:104460009CFA2A4669469DF80800FEF7BCFF00202A -:104470003EBDFEB50D4604004FF0000711D00822E6 -:10448000FEF7C2FE002811D1002608E054F82600ED -:104490006946FEF747FF002808D1761CF6B2AE4207 -:1044A000F4D30CF047F810B143F20320FEBD514E97 -:1044B00086F824700CB300271BE000BF54F82700D7 -:1044C00002A9FEF72FFF00B1FFDF9DF808008DF86D -:1044D000000054F8270050F8011FCDF80110808823 -:1044E000ADF8050068460CF04AF800B1FFDF7F1C0C -:1044F000FFB2AF42E2D386F824500020FEBD2DE982 -:10450000F0478AB01546894604001ED00F4608229F -:104510002946FEF779FE002811D1002613E000BFDE -:1045200054F826006946103000F0D3FC002806D16C -:104530003FB157F82600FCF7C6FE10B110200AB0B4 -:104540000BE4761CF6B2AE42EAD30026A5F10108D0 -:104550001CE000BF06F1010A0AF0FF0712E000BFED -:1045600054F82600017C4A0854F827100B7CB2EB63 -:10457000530F05D106221130113121F01FF858B127 -:104580007F1CFFB2AF42EBD30AF0FF064645E1DBEA -:104590004E4624B1012003E043F20520CFE700207E -:1045A0000CF012F810B90CF01BF810B143F2042013 -:1045B000C5E774B300270DF1170828E054F8270069 -:1045C0006946103000F085FC00B1FFDF54F8270089 -:1045D000102250F8111FCDF801108088ADF80500A9 -:1045E00054F827100DF1070021F014F8AEB156F879 -:1045F000271001E0E80100201022404621F00AF8CF -:1046000068460BF0A1FF00B1FFDF7F1CFFB2AF4295 -:10461000D4D3FEF733FF002091E7404601F098FC29 -:10462000EEE730B585B00446FCF74DFE18B960687A -:10463000FCF796FE10B1102005B030BD60884AF23C -:10464000B811884206D82078F84D28B1012806D044 -:10465000022804D00720EFE7FEF74AFD18E0607853 -:10466000022804D0032802D043F20220E4E785F8B0 -:104670002F00C1B200200090ADF8040002292CD018 -:10468000032927D0FFDF68460CF043F804F042FD11 -:104690000028D1D1606801F04EFC207858B101208B -:1046A0008DF800000DF1010001F052FC68460DF09C -:1046B00032FA00B1FFDF207885F82E00FEF7DEFE2B -:1046C000608860B1A88580B20BF076FF00B1FFDF93 -:1046D0000020B1E78DF80500D5E74020FAE74FF458 -:1046E0006170EFE710B50446FCF713FE20B960686F -:1046F00038B1FCF72CFE08B1102010BD606801F045 -:1047000027FCCA4830F82C1F6180C178617080781E -:104710002070002010BD2DE9F84314468946064656 -:10472000FCF7F7FDA0B94846FCF71AFE80B9204611 -:10473000FCF716FE60B9BD4DA878012800D13CB148 -:104740003178FF2906D049B143F20400BDE8F8836F -:104750001020FBE7012801D00420F7E7CCB305289F -:1047600011D004280FD069462046FEF7A0FE00288D -:10477000ECD1217D49B1012909D0022909D00329B1 -:1047800009D00720E2E70820E0E7024604E0012222 -:1047900002E0022200E00322804623461746002062 -:1047A0000099FEF7BEFE0028D0D1A0892880A07B0A -:1047B000E875BDF80000A882AF75BDF800100907C4 -:1047C00001D5A18931B1A1892980C00704D0032076 -:1047D00003E006E08021F7E70220FEF727FC86F8D9 -:1047E00000804946BDE8F8430020FEF749BF7CB58C -:1047F0008E4C05460E46A078022803D0032801D02F -:1048000008207CBD15B143F204007CBD07200EF0EA -:104810006BF810B9A078032806D0FEF735FC28B154 -:10482000A078032804D009E012207CBD13207CBDB1 -:10483000304600F00CFB0028F9D1E670FEF79BFD36 -:1048400009F0E8FF01208DF800008DF801008DF8D7 -:1048500002502088ADF80400E07D8DF8060068461F -:104860000DF002F804F056FC0028E0D1A0780328EF -:1048700004D00420FEF7DAFB00207CBDE07800F0D5 -:10488000F6FA0520F6E71CB510B143F204001CBD92 -:10489000664CA078042803D0052801D008201CBD50 -:1048A00000208DF8000001218DF801108DF8020024 -:1048B00068460CF0D9FF04F02DFC0028EFD1A07859 -:1048C000052805D05FF00200FEF7B0FB00201CBDFC -:1048D000E07800F0D9FA0320F6E72DE9FC418046A4 -:1048E0000E4603250846FCF73BFD002866D14046EE -:1048F000FEF7A9FD040004D02078222804D2082065 -:1049000065E543F2020062E5A07F00F003073EB1D7 -:10491000012F0CD000203146FEF751FC0500EFD1ED -:10492000012F06D0022F1AD0FFDF28464FE50120C5 -:10493000F1E7A07D3146022801D011B107E0112036 -:1049400045E56846FCF791FE0028D9D16946404606 -:1049500006F05AFD0500E8D10120A075E5E7A07D2D -:10496000032804D1314890F83000C00701D02EB39D -:104970000EE026B1A07F40071ED4002100E00121F7 -:10498000404606F061FD0500CFD1A075002ECCD0C9 -:104990003146404600F0A7FA05461128C5D1A07F50 -:1049A0004107C2D4316844F80E1F7168616040F05D -:1049B000040020740025B8E71125B6E7102006E5AD -:1049C00070B50C460546FEF73EFD010005D02246B7 -:1049D0002846BDE87040FEF739BD43F2020070BDC5 -:1049E00010B5012807D1114B9B78012B00D011B1D4 -:1049F00043F2040010BD0BF011FEBDE8104004F0BE -:104A000089BB012300F04ABA00231A46194600F078 -:104A100045BA70B506460C460846FCF754FC18B972 -:104A20002068FCF776FC18B1102070BDE80100206A -:104A3000F94D2A7E112A04D0132A00D33EB1082052 -:104A4000F3E721463046FEF7A9FE60B1EDE7092005 -:104A5000132A0DD0142A0BD0A188FF29E5D31520E5 -:104A6000FEF7FCFA0020D4E90012C5E90712DCE7E2 -:104A7000A1881F29D9D31320F2E71CB5E648007E90 -:104A8000132801D208201CBD00208DF800006846C4 -:104A90000CF0FFF904F03EFB0028F4D11120FEF7E2 -:104AA000DDFA00201CBD2DE9F04FDFF86CA3814634 -:104AB00091B09AF818009B4615460C46132803D36C -:104AC000FFF7DBFF00281FD12046FCF7FCFBE8BB0B -:104AD0002846FCF7F8FBC8BB20784FF00107C00759 -:104AE0004FF0000102D08DF83A7001E08DF83A10D5 -:104AF00020788846C0F3C1008DF8000060788DF8FA -:104B00000910C10803D0072011B0BDE8F08F70B3C1 -:104B1000C10701D08DF80970810705D59DF80910EE -:104B200041F002018DF80910400705D59DF80900F4 -:104B300040F004008DF8090000206E4606EB4001AD -:104B400062884A81A2880A82401C00E00DE0C0B25F -:104B50000328F3D32078C0F3C100012825D003280F -:104B600023D04846FCF7AFFB28B11020CCE7FFE785 -:104B70008DF80970E0E799F80000400808D0012896 -:104B800009D0022807D0032805D043F20220BBE752 -:104B90008DF8028001E08DF80270484650F8011F40 -:104BA000CDF803108088ADF80700FEF7E4FB8DF820 -:104BB00001000020424606EB40012B88CB826B8827 -:104BC0008B83AB884B84EB880B85401CCA85C0B2B5 -:104BD0008A860328EFD3E088ADF83C0068460CF0E5 -:104BE00094FA00288FD19AF818005546112801D060 -:104BF000082089E706200DF077FE38B12078C0F351 -:104C0000C100012804D0032802D006E012207BE76F -:104C100095F8240000283FF476AFFEF735FA022815 -:104C200001D2132070E7584600F011F900289DD1F9 -:104C300085F819B068460CF0A8FB04F06BFA040084 -:104C400094D1687E00F013F91220FEF707FA20468F -:104C50005AE770B5704D287E122801D00820E4E68E -:104C60000CF096FB04F056FA040005D1687E00F0C3 -:104C70000BF91120FEF7F2F92046D6E670B506468C -:104C800015460C460846FCF744FB18B92846FCF7C5 -:104C900040FB08B11020C8E62A46214630460CF0F9 -:104CA00085FE04F037FA0028F5D121787F29F2D16A -:104CB0000520BAE67CB505460C460846FCF703FB22 -:104CC00008B110207CBD2846FEF7BDFB20B100785E -:104CD000222804D208207CBD43F202007CBD4E484D -:104CE00090F83000400701D511207CBD2078C00825 -:104CF00002D16078C00801D007207CBDADF800501B -:104D000020788DF8020060788DF803000220ADF85D -:104D1000040068460BF09EFF04F0FCF97CBD70B502 -:104D200086B014460D460646FEF78DFB28B1007886 -:104D3000222805D2082006B077E643F20200FAE7FF -:104D40002846FCF70DFB20B944B12046FCF7FFFADA -:104D500008B11020EFE700202060A0802E4890F8D6 -:104D60003000800701D51120E5E703A930460BF09C -:104D7000C2FD10B104F0CEF9DDE7ADF80060BDF87A -:104D80001400ADF80200BDF81600ADF80400BDF83F -:104D90001000BDF81210ADF80600ADF808107DB196 -:104DA000298809B1ADF80610698809B1ADF802107B -:104DB000A98809B1ADF80810E98809B1ADF8041067 -:104DC000DCB1BDF80610814201D9081A2080BDF877 -:104DD0000210BDF81400814201D9081A6080BDF8A4 -:104DE0000800BDF80410BDF816200144BDF81200FB -:104DF0001044814201D9081AA08068460BF02CFEAD -:104E0000B8E71CB505490968CDE9001068460CF003 -:104E10007EF904F07FF91CBDE8010020FC5A020075 -:104E20001CB500200090019068460CF070F904F069 -:104E300071F9F0E710800888508048889080C88811 -:104E400010818888D080002050819081704710B5F3 -:104E5000044604F0CBF830B1407830B1204604F07D -:104E6000DEFB002010BD052010BD122010BD10B5C6 -:104E700004F0BCF8040000D1FFDF607800B9FFDF68 -:104E80006078401E607010BD10B504F0AFF80400EB -:104E900000D1FFDF6078401C607010BD1CB5ADF81C -:104EA00000008DF802308DF803108DF8042068465C -:104EB0000CF03FFD04F02EF9ADE70CB528A2D2E9C5 -:104EC0000012CDE900120079694601EB501000781C -:104ED0000CBD0278520804D0012A02D043F202200D -:104EE0007047FEF71FBA1FB56A46FFF7A3FF684673 -:104EF0000CF081FA04F00EF904B010BD70B50C008E -:104F000006460DD0FEF79FFA050000D1FFDFA68010 -:104F100028892081288960816889A081A889E08109 -:104F200083E510B500231A4603E0845C2343521C3A -:104F3000D2B28A42F9D30BB1002010BD012010BDBE -:104F400000B540B1012805D0022803D0032804D0C1 -:104F5000FFDF002000BDFF2000BD042000BD0000D9 -:104F6000070605040302010010B50446FCF7ABF97F -:104F700008B1102010BD2078C0F30210042807D813 -:104F80006078072804D3A178102901D8814201D282 -:104F9000072010BDE078410706D421794A0703D4E1 -:104FA000000701D4080701D5062010BD002010BD60 -:104FB00010B513785C08837F64F3C7138377137885 -:104FC0009C08C37F64F30003C3771078C309487853 -:104FD00063F34100487013781C090B7864F347139E -:104FE0000B701378DB0863F3000048705078487149 -:104FF00010BD10B5C4780B7864F300030B70C4784F -:10500000640864F341030B70C478A40864F382035A -:105010000B70C478E40864F3C3030B700379117850 -:1050200063F30001117003795B0863F341011170B0 -:1050300003799B0863F3820111700079C00860F363 -:10504000C301117010BD70B514460D46064604F03C -:105050003FFA80B10178182221F00F01891C21F05C -:10506000F001A03100F8081B214620F018FBBDE834 -:10507000704004F030BA29463046BDE87040132233 -:10508000FEF7E4B92DE9F047064608A8894690E8FE -:1050900030041F4690461421284620F05CFB002176 -:1050A000CAF80010B8F1000F03D0B9F1000F03D116 -:1050B00014E03878C00711D02068FCF72AF9C0BB8B -:1050C000B8F1000F07D12068123028602068143032 -:1050D00068602068A8602168CAF8001038788007E6 -:1050E00024D56068FCF733F918BBB9F1000F21D063 -:1050F000FFF726F90168C6F868118188A6F86C11D7 -:10510000807986F86E0101F0F8FCF94FEF60626873 -:1051100062B196F8680106F2691140081032FEF794 -:1051200062F910223946606820F074FA0020BDE868 -:10513000F08706E0606820B1E8606068C6F8640146 -:10514000F4E71020F3E730B5054608780C4620F068 -:105150000F00401C20F0F001103121700020607021 -:1051600095F8230030B104280FD0052811D0062867 -:1051700014D0FFDF20780121B1EB101F04D295F885 -:10518000200000F01F00607030BD21F0F0002030E2 -:1051900002E021F0F00030302070EBE721F0F00069 -:1051A0004030F9E7F0B591B0022715460C460646A7 -:1051B0003A46ADF80870092103AB04F0FAFF0490F9 -:1051C000002810D004208DF804008DF80170E03420 -:1051D000099605948DF818500AA968460FF0C4F88E -:1051E00000B1FFDF012011B0F0BD10B588B00C4652 -:1051F0000A99ADF80000C3B11868CDF802005868EC -:10520000CDF80600ADF80A20102203A820F002FA1B -:1052100068460CF060F903F07DFF002803D1A17F00 -:1052200041F01001A17708B010BD0020CDF80200B8 -:10523000E6E72DE9F84F0646808A0D4680B28246A1 -:10524000FEF701F904463078DFF8A48200274FF01A -:105250000209A8F120080F2870D2DFE800F06FF2F1 -:105260003708387D8CC8F1F0EFF35FF3F300A07FCF -:1052700000F00300022809D05FF0000080F0010177 -:1052800050460DF081FB050003D101E00120F5E758 -:10529000FFDF98F85C10C90702D0D8F860000BE077 -:1052A000032105F11D0010F0AAFDD5F81D0091495C -:1052B000B0FBF1F201FB1200C5F81D0070686867D1 -:1052C000B068A8672078252800D0FFDFCAE0A07F5B -:1052D00000F00300022809D05FF0000080F0010117 -:1052E00050460DF051FB060003D101E00120F5E727 -:1052F000FFDF3078810702D52178252904D040F0DE -:1053000001003070BDE8F88F85F80090307F28717B -:1053100006F11D002D36C5E90206F3E7A07F00F077 -:105320000300022808D0002080F0010150460DF053 -:105330002BFB040004D102E00120F5E7A7E1FFDF29 -:105340002078C10604D5072028703D346C60D9E769 -:1053500040F008002070D5E7E07F000700D5FFDFB0 -:10536000307CB28800F0010301B05046BDE8F04F38 -:10537000092105F0A9BD04B9FFDF716821B1102230 -:1053800004F1240020F046F928212046FDF7C2FE52 -:10539000A07F00F0030002280ED104F124000023B6 -:1053A00000901A4621465046FFF71FFF112807D0EC -:1053B00029212046FDF7AEFE307A84F82000A1E7CF -:1053C000A07F000700D5FFDF14F81E0F40F0080093 -:1053D0002070E782A761E761C109607861F341004D -:1053E000014660F382016170307AE0708AE7A07F45 -:1053F00000F00300022809D05FF0000080F00101F6 -:1054000050460DF0C1FA040003D101E00120F5E798 -:10541000FFDF022104F1850010F0F1FC0420287068 -:1054200004F5B4706860B4F88500288230481038FC -:105430007C346C61C5E9028064E703E024E15BE051 -:105440002DE015E0A07F00F00300022807D0002027 -:1054500080F0010150460DF097FA18B901E00120E3 -:10546000F6E7FFDF324621465046BDE8F84FEAE551 -:1054700004B9FFDF20782128A1D93079012803D190 -:10548000E07F40F00800E077324621465046FFF7C3 -:10549000DAFD2046BDE8F84F2321FDF73BBE327907 -:1054A000AA8005F108030921504604F082FEE86055 -:1054B00010B10520287025E7A07F00F00300022826 -:1054C00008D0002080F0010150460DF05DFA040084 -:1054D00003D101E00120F5E7FFDF04F162010223BF -:1054E0001022081F0DF0D7F807703179417009E7D5 -:1054F0004802002040420F00A07F00F00300022875 -:1055000008D0002080F0010150460DF03DFA050062 -:1055100003D101E00120F5E7FFDF95F8840000F0FA -:10552000030001287AD1A07F00F00307E07F10F08C -:10553000010602D0022F04D133E095F8A000C00785 -:105540002BD0D5F8601121B395F88320087C62F345 -:1055500087000874A17FCA09D5F8601162F3410081 -:105560000874D5F8601166F300000874AEB1D5F880 -:105570006001102204F12401883520F04BF8287EC8 -:1055800040F001002876287820F0010005F888090D -:1055900000E016B1022F04D02DE095F88800C00776 -:1055A00027D0D5F85C1121B395F88320087C62F3ED -:1055B00087000874A17FCA09D5F85C1162F3410025 -:1055C0000874D5F85C1166F3000008748EB1D5F844 -:1055D0005C01102204F12401883520F01BF82878A2 -:1055E00040F0010005F8180B287820F0010005F8BC -:1055F000A009022F44D0002000EB400005EBC000C2 -:1056000090F88800800709D595F87C00D5F86421CA -:10561000400805F17D011032FDF7E5FE8DF80090A0 -:1056200095F884006A4600F003008DF8010095F8B3 -:1056300088108DF8021095F8A0008DF8030021461F -:10564000504601F043FA2078252805D0212807D0BC -:10565000FFDF2078222803D922212046FDF75AFDBA -:10566000A07F00F0030002280CD0002080F0010190 -:1056700050460DF09BF900283FF44FAEFFDF41E6A6 -:105680000120B9E70120F1E7706847703AE6FFDFD3 -:1056900038E670B5FE4C002584F85C5025660EF0A7 -:1056A00030FE04F11001204603F0CEFE84F83050A5 -:1056B00070BD70B50D46FDF7C6FE040000D1FFDFDA -:1056C0004FF4B871284620F046F804F12400286110 -:1056D000A07F00F00300022808D0012105F1E000BE -:1056E0000EF010FE002800D0FFDF70BD0221F5E7AC -:1056F0000A46014602F1E0000EF024BE70B50546F0 -:10570000406886B001780A2906D00D2933D00E29C9 -:105710002FD0FFDF06B070BD86883046FDF793FEC0 -:10572000040000D1FFDF20782128F3D028281BD1E6 -:10573000686802210E3001F0BEF9A8B1686808213E -:10574000801D01F0B8F978B104F1240130460CF065 -:105750008DF803F0DFFC00B1FFDF06B02046BDE8A6 -:1057600070402921FDF7D6BC06B0BDE8704003F0BB -:10577000B2BE012101726868C6883046FDF763FE3B -:10578000040000D1FFDFA07F00F00301022902D155 -:1057900020F01000A077207821280AD06868017ACC -:1057A00009B1007980B1A07F00F00300022862D027 -:1057B000FFDFA07F00F003000228ABD1FEF795F8D1 -:1057C0000028A7D0FFDFA5E703F085FEA17F08062C -:1057D0002BD5E07FC00705D094F8200000F01F0013 -:1057E000102820D05FF0050084F8230020782928B5 -:1057F0001DD02428DDD13146042010F0DFFD222108 -:105800002046FDF787FCA07F00F00300022830D07F -:105810005FF0000080F0010130460DF0C7F800286D -:10582000C7D0FFDFC5E70620DEE70420DCE701F094 -:105830000300022808D0002080F0010130460DF05E -:10584000A3F8050003D101E00120F5E7FFDF2521E2 -:105850002046FDF75FFC03208DF80000694605F146 -:10586000E0000EF066FD0228A3D00028A1D0FFDFE3 -:105870009FE70120CEE703F02EFE9AE72DE9F043E3 -:1058800087B09946164688460746FDF7DCFD0400BA -:105890004BD02078222848D3232846D0E07F000729 -:1058A00043D4A07F00F00300022809D05FF000007D -:1058B00080F0010138460DF067F8050002D00CE0D9 -:1058C0000120F5E7A07F00F00300022805D00121A8 -:1058D000002238460DF04FF805466946284601F08B -:1058E0001CF9009800B9FFDF45B10098E03505616B -:1058F0002078222806D0242804D007E00099002030 -:10590000086103E025212046FDF704FC00980121F1 -:1059100041704762868001A9C0E902890EF024FD2A -:10592000022802D0002800D0FFDF07B0BDE8F083D6 -:1059300070B586B00546FDF786FD017822291ED98F -:10594000807F00F00300022808D0002080F00101D1 -:1059500028460DF019F804002FD101E00120F5E7E9 -:10596000FFDF2AE0B4F85E0004F1620630440178FB -:10597000427829B121462846FFF714FCB0B9C9E6A0 -:10598000ADF804200921284602AB04F012FC039074 -:105990000028F4D005208DF80000694604F1E000ED -:1059A0000EF0C7FC022801D000B1FFDF0223102255 -:1059B000314604F15E000CF0A4FEB4F8600000284B -:1059C000D0D1A7E610B586B00446FDF73CFD0178BE -:1059D00022291BD9807F00F00300022808D0002074 -:1059E00080F0010120460CF0CFFF040003D101E05C -:1059F0000120F5E7FFDF06208DF80000694604F17D -:105A0000E0000EF096FC002800D0FFDF06B010BDCD -:105A10002DE9F05F05460C46002700789046010905 -:105A20003E4604F1080BBA4602297DD0072902D070 -:105A30000A2909D146E0686801780A2905D00D29AC -:105A400030D00E292ED0FFDFBBE114271C26002CFE -:105A50006BD08088A080FDF7F6FC5FEA000900D1DA -:105A6000FFDF99F817005A46400809F11801FDF7C1 -:105A7000BAFC6868C0892082696851F8060FC4F8CA -:105A800012004868C4F81600A07E20F0060001E06D -:105A90002802002040F00100A07699F81E0040F096 -:105AA00020014DE01A270A26002CD1D0C088A08002 -:105AB000FDF7C9FC050000D1FFDF59462846FFF776 -:105AC00042FB7EE10CB1A88BA080287A0B287DD008 -:105AD00006DC01287BD0022808D0032804D135E059 -:105AE0000D2875D00E2874D0FFDF6AE11E27092625 -:105AF000002CADD0A088FDF7A6FC5FEA000900D11C -:105B0000FFDF287B00F003000128207A1BD020F063 -:105B100001002072297B890861F341002072297BF2 -:105B2000C90861F3820001E041E1F2E02072297BC3 -:105B3000090961F3C300207299F81E0040F040018A -:105B400089F81E103DE140F00100E2E713270D2621 -:105B5000002CAAD0A088FDF776FC8146807F00F05B -:105B60000300022808D0002080F00101A0880CF07A -:105B70000BFF050003D101E00120F5E7FFDF99F8F5 -:105B80001E0000F00302022A50D0686F817801F0F5 -:105B900003010129217A4BD021F001012172837880 -:105BA0009B0863F3410121728378DB0863F3820170 -:105BB000217283781B0963F3C3012172037863F3B5 -:105BC00006112172437863F3C71103E061E0A9E095 -:105BD00090E0A1E0217284F809A0C178A172022AA4 -:105BE00029D00279E17A62F30001E1720279520868 -:105BF00062F34101E1720279920862F38201E1727B -:105C00000279D20862F3C301E1724279217B62F327 -:105C1000000121734279520862F3410121734279F4 -:105C2000920862F382012173407928E0A86FADE702 -:105C300041F00101B2E74279E17A62F30001E172D9 -:105C40004279520862F34101E1724279920862F3AB -:105C50008201E1724279D20862F3C301E1720279F2 -:105C6000217B62F3000121730279520862F3410142 -:105C700021730279920862F3820121730079C008CE -:105C800060F3C301217399F80000232831D926213C -:105C900040E018271026E4B3A088FDF7D4FB834624 -:105CA000807F00F00300022809D0002080F001016D -:105CB000A0880CF069FE5FEA000903D101E0012031 -:105CC000F4E7FFDFE868A06099F8000040F0040105 -:105CD00089F8001099F80100800708D50120207389 -:105CE0009BF8000023286CD92721584651E084F8FE -:105CF0000CA066E015270F265CB1A088FDF7A3FB7A -:105D0000814606225946E86808F0C1FA0120A073CE -:105D1000A0E041E048463CE016270926E4B3287B92 -:105D200020724EE0287B19270E26ACB3C4F808A0D9 -:105D3000A4F80CA0012807D0022805D0032805D01C -:105D4000042803D0FFDF0DE0207207E0697B042800 -:105D500001F00F0141F0800121721ED0607A20F025 -:105D600003006072A088FDF76EFB054600782128CD -:105D700027D0232800D0FFDFA87F00F003000228EF -:105D800013D0002080F00101A0880CF00FFE22212A -:105D90002846FDF7BFF914E004E0607A20F0030024 -:105DA000401CDEE7A8F8006010E00120EAE70CB133 -:105DB0006888A080287A68B301280AD002284FD0CA -:105DC000FFDFA8F800600CB1278066800020BDE8E6 -:105DD000F09F15270F26002CE4D0A088FDF733FB99 -:105DE000807F00F00300022808D0002080F001012D -:105DF000A0880CF0C9FD050003D101E00120F5E702 -:105E0000FFDFD5F81D000622594608F040FA84F855 -:105E10000EA0D6E717270926002CC3D0A088FDF7CF -:105E200012FB8146807F00F00300022808D000208A -:105E300080F00101A0880CF0A7FD050003D101E06E -:105E40000120F5E7FFDF6878800701D5022000E038 -:105E50000120207299F800002328B2D9272159E7A0 -:105E600019270E26002C9DD0A088FDF7ECFA5FEADA -:105E7000000900D1FFDFC4F808A0A4F80CA084F842 -:105E800008A0A07A40F00300A07299F81E10C9097A -:105E900061F38200A07299F81F2099F81E1012EA8F -:105EA000D11F05D099F8201001F01F0110292BD027 -:105EB00020F00800A07299F81F10607A61F3C30007 -:105EC0006072697A01F003010129A2D140F0040057 -:105ED000607299F81E0000F003000228E87A16D0DC -:105EE000217B60F300012173AA7A607B62F30000DA -:105EF0006073EA7A520862F341012173A97A490872 -:105F000061F3410060735CE740F00800D2E7617B19 -:105F100060F300016173AA7A207B62F300002073B2 -:105F2000EA7A520862F341016173A97A490861F380 -:105F30004100207345E710B5FE4C30B101461022F8 -:105F400004F120001FF066FB012084F8300010BD32 -:105F500010B5044600F0D1FDF64920461022BDE8F8 -:105F6000104020311FF056BB70B5F24D06004FF0C7 -:105F7000000413D0FBF7A7F908B110240CE00621A8 -:105F8000304608F06BF9411C05D028665FF001002F -:105F900085F85C0000E00724204670BD0020F7E78C -:105FA000007810F00F0204D0012A05D0022A0CD18B -:105FB00010E0000909D10AE00009012807D00228F1 -:105FC00005D0032803D0042801D0072070470870AB -:105FD000002070470620704705282AD2DFE800F02D -:105FE00003070F171F00087820F0FF001EE0087855 -:105FF00020F00F00401C20F0F000103016E0087870 -:1060000020F00F00401C20F0F00020300EE0087857 -:1060100020F00F00401C20F0F000303006E008783F -:1060200020F00F00401C20F0F000403008700020ED -:106030007047072070472DE9F041804688B00D4633 -:1060400000270846FBF78CF9A8B94046FDF7FBF995 -:10605000040003D02078222815D104E043F2020086 -:1060600008B0BDE8F08145B9A07F410603D500F036 -:106070000300022801D01020F2E7A07FC10601D45E -:10608000010702D50DB10820EAE7E17F090701D534 -:106090000D20E5E700F00300022805D125B12846D0 -:1060A000FEF762FF0700DBD1A07F00F003000228AB -:1060B00008D0002080F0010140460CF065FC06008D -:1060C00002D00FE00120F5E7A07F00F003000228D6 -:1060D0000ED0002080F00101002240460CF04BFC65 -:1060E000060007D0A07F00F00300022804D009E0DA -:1060F0000120EFE70420B3E725B12A4631462046C8 -:10610000FEF756FF6946304600F007FD009800B9DB -:10611000FFDF0099022006F1E0024870C1F82480F8 -:106120004A6100220A81A27F02F00302022A1CD0E7 -:1061300001200871287800F00102087E62F3010056 -:1061400008762A78520862F3820008762A78920844 -:1061500062F3C30008762A78D20862F30410087646 -:1061600024212046FCF7D6FF33E035B30871301DFB -:1061700088613078400908777078C0F3400048772C -:10618000287800F00102887F62F301008877A27FFF -:10619000D20962F382008877E27F62F3C3008877D6 -:1061A000727862F304108877A878C87701F1210229 -:1061B00028462031FEF71DFF03E00320087105206B -:1061C000087625212046FCF7A5FFA07F20F040009F -:1061D000A07701A900980EF0C7F8022801D000B1FD -:1061E000FFDF38463CE72DE9FF4F534A0D4699B093 -:1061F0009A4607CA0AAB002783E807001998FDF7FB -:1062000022F9060006D03078262806D008201DB0D6 -:10621000BDE8F08F43F20200F9E7B07F00F0030918 -:10622000B9F1020F0AD05DB91B98FEF79DFE002858 -:10623000EDD1B07F00F00300022801D11B9890BB84 -:10624000B07F00F00300022808D0002080F0010198 -:1062500019980CF099FB040003D101E00120F5E747 -:10626000FFDF852D28D007DCF5B1812D1ED0822DD2 -:106270001ED0832D08D11DE0862D1FD0882D1FD064 -:10628000892D1FD08A2D1FD00F2020710F281DD0DF -:1062900003F01EF9E0B101208DF83C00201D1090A4 -:1062A0002079B8B15BE111E00020EEE70120ECE7D6 -:1062B0000220EAE70320E8E70520E6E70620E4E716 -:1062C0000820E2E70920E0E70A20DEE707209EE752 -:1062D00011209CE7B9F1020F03D0A56F03D1A06F85 -:1062E00002E0656FFAE7606F804632D04FF0010040 -:1062F00001904FF002000090214630461B9AFEF7B5 -:1063000057FE1B98007800F00101A87861F30100A6 -:10631000A870B17FC90961F38200A870F17F61F3B1 -:10632000C300A870617861F30410A8702078400958 -:10633000287003E028020020045B02006078C0F3AC -:10634000400068701B988078E870002068712871A0 -:1063500003E00220019001200090A87898F8021034 -:10636000C0F3C000C1F3C00108405FEA000B2DD0AC -:106370005046FAF7A8FF78BBDAF80C00FAF7A3FF4B -:1063800050BBDAF81C00FAF79EFF28BBDAF80C00C5 -:10639000A060DAF81C00E060607898F8012042EA1A -:1063A000500100BF61F34100607098F80210C0B264 -:1063B00000EA111161F3000060700020207700995D -:1063C00006F11700022908D0012107E0607898F84B -:1063D000012002EA5001E5E732E0002104EB8101EF -:1063E00048610199701C022901D0012100E00021BF -:1063F00004EB81014861A87800F00300012857D11F -:1064000098F8020000F00300012851D1B9F1020F01 -:1064100004D02A1D691D1B98FEF7EBFD287998F81A -:10642000041008408DF83400697998F8052011406F -:106430008DF8381008433BD05046FAF744FF08B1B6 -:106440001020E4E60AF110010491B9F1020F17D00F -:106450000846002104F18C03CDE9000304F5AE7277 -:1064600002920DAB5A462046FEF70CFE0028E8D1FA -:10647000B9F1020F08D0504608D14FF0010107E0F2 -:1064800050464FF00101E5E70498F5E74FF00001B1 -:1064900004F1A403CDE9000304F5B072029281F087 -:1064A00001010EAB5A462046FEF7ECFD0028C8D18C -:1064B0006078800734D4A87898F80210C0F3800080 -:1064C000C1F3800108432BD0297898F800000AAA6C -:1064D000B9F1020F06D032F811204300DA4002F081 -:1064E00003070AE032F810204B00DA4012F00307ED -:1064F00005D0012F0BD0022F0BD0032F07D0BBF1FB -:10650000000F0DD0012906D0042904D008E002278D -:10651000F5E70127F3E7012801D0042800D104277B -:10652000B07F40F08000B077F17F6BF30001F1772E -:106530006078800706D50320A071BBF1000F0ED153 -:10654000002028E00220022F18D0012F18D0042F9D -:1065500029D00020A071B07F20F08000B0772521E5 -:106560003046FCF7D7FD0FA904F1E0000DF0E1FE85 -:1065700010B1022800D0FFDF002048E6A071DFE75D -:10658000A0710D2104F120001FF0E5F8207840F003 -:106590000200207001208DF85C0017AA314619987E -:1065A00000F094FADBE70120A071D8E72DE9F04371 -:1065B00087B09046894604460025FCF744FF060054 -:1065C00006D03078272806D0082007B0BDE8F08331 -:1065D00043F20200F9E7B07F00F00300022809D07F -:1065E0005FF0000080F0010120460CF0CDF90400BE -:1065F00003D101E00120F5E7FFDFA7795FEA090099 -:1066000005D0012821D0B9F1020F26D110E0B8F150 -:10661000000F22D1012F05D0022F05D0032F05D066 -:10662000FFDF2DE00C252BE0012529E0022527E0E6 -:106630004046FAF748FEB0B9032F0ED1102241466A -:1066400004F11D001EF0E6FF1AE0012F02D0022F18 -:1066500003D104E0B8F1000F12D00720B5E740469F -:10666000FAF731FE08B11020AFE7102104F11D0048 -:106670001FF04FF80621404607F0F0FDC4F81D005A -:106680002078252140F0020020703046FCF742FDC2 -:106690002078C10713D020F00100207002208DF86F -:1066A000000004F11D0002908DF804506946C330CB -:1066B0000DF03FFE022803D010B1FFDF00E0257788 -:1066C000002082E730B587B00D460446FCF7BBFEDC -:1066D000A0B1807F00F00300022812D05FF000001C -:1066E00080F0010120460CF04FF904000ED028463E -:1066F000FAF7E9FD38B1102007B030BD43F20200CF -:10670000FAE70120ECE72078400701D40820F3E7FE -:10671000294604F13D00202205461EF07BFF20782B -:1067200040F01000207001070FD520F00800207005 -:1067300007208DF80000694604F1E00001950DF096 -:10674000F8FD022801D000B1FFDF0020D4E770B5CA -:106750000D460646FCF777FE18B10178272921D1AE -:1067600002E043F2020070BD807F00F003000228C7 -:1067700008D0002080F0010130460CF005F904003B -:1067800003D101E00120F5E7FFDFA079022809D15C -:106790006078C00706D02A4621463046FEF702FD43 -:1067A00010B10FE0082070BDB4F860000E280BD2C5 -:1067B00004F1620102231022081F0BF06CFF01217B -:1067C00001704570002070BD112070BD70B5064687 -:1067D00014460D460846FAF776FD18B92046FAF732 -:1067E00098FD08B1102070BDA6F57F40FF380ED08F -:1067F0003046FCF728FE38B1417822464B08811C10 -:106800001846FCF7F0FD07E043F2020070BD204699 -:10681000FDF7FCFD0028F9D11021E01D0FF0EFFA83 -:10682000E21D294604F1170000F087F9002070BD31 -:106830002DE9F04104468AB01546884600270846EF -:10684000FAF78EFD18B92846FAF78AFD10B1102024 -:106850000AB006E42046FCF7F6FD060003D03078C7 -:1068600027281AD102E043F20200F1E7B07F00F0DE -:106870000300022808D0002080F0010120460CF01F -:1068800083F8040003D101E00120F5E7FFDF207861 -:10689000400702D56078800701D40820D8E7B07F90 -:1068A00000F00300022803D0A06F03D1A16F02E023 -:1068B000606FFAE7616F407800B19DB1487810B120 -:1068C000B8F1000F0ED0ADB1EA1D06A8E16800F0E6 -:1068D00034F9102206A905F117001EF06FFE18B159 -:1068E000042707E00720B3E71022E91D04F12D007B -:1068F0001EF090FEB8F1000F06D0102208F107013B -:1069000004F11D001EF086FE2078252140F00200D3 -:1069100020703046FCF7FEFB2078C10715D020F030 -:106920000100207002208DF8000004F11D0002908B -:10693000103003908DF804706946B3300DF0F9FC07 -:10694000022803D010B1FFDF00E0277700207FE7A7 -:10695000F8B515460E460746FCF775FD040004D051 -:106960002078222804D00820F8BD43F20200F8BDA8 -:10697000A07F00F00300022802D043F20500F8BD1A -:106980003046FAF7A0FC18B92846FAF79CFC08B183 -:106990001020F8BD00953288B31C21463846FEF71A -:1069A00024FC112815D00028F3D1297C4A08A17FA6 -:1069B00062F3C711A177297CE27F61F30002E277DD -:1069C000297C890884F82010A17F21F04001A1775B -:1069D000F8BDA17F0907FBD4D6F80200C4F8360041 -:1069E000D6F80600C4F83A003088A086102229465E -:1069F00004F124001EF00EFE287C4108E07F61F3C4 -:106A00004100E077297C61F38200E077287C8008F0 -:106A100084F82100A07F40F00800A0770020D3E791 -:106A200070B50D4606460BB1072070BDFCF70BFD97 -:106A3000040007D02078222802D3A07F800604D447 -:106A4000082070BD43F2020070BDADB1294630464A -:106A50000AF00CFF02F05EFB297C4A08A17F62F37A -:106A6000C711A177297CE27F61F30002E277297CDC -:106A7000890884F8201004E030460AF01AFF02F07A -:106A800049FBA17F21F02001A17770BD70B50D46B3 -:106A9000FCF7D9FC040005D02846FAF73AFC20B1EF -:106AA000102070BD43F2020070BD29462046FEF75B -:106AB0004AFB002070BD04E010F8012B0AB1002051 -:106AC0007047491E89B2F7D20120704770B515464C -:106AD000064602F0FDFC040000D1FFDF207820F024 -:106AE0000F00801C20F0F0002030207066802868A5 -:106AF000A060BDE8704002F0EEBC10B5134C94F8F5 -:106B00003000002808D104F12001A1F110000DF09F -:106B100052FC012084F8300010BD10B190F8B9206B -:106B20002AB10A4890F8350018B1002003E0B830C7 -:106B300001E0064834300860704708B50023009330 -:106B400013460A460CF01BF908BD0000280200207D -:106B500018B18178012938D101E0102070470188EF -:106B600042F60112881A914231D018DC42F6010235 -:106B7000A1EB020091422AD00CDC41B3B1F5C05F19 -:106B800025D06FF4C050081821D0A0F57060FF38F0 -:106B90001BD11CE001281AD002280AD117E0B0F559 -:106BA000807F14D008DC012811D002280FD00328E0 -:106BB0000DD0FF2809D10AE0B0F5817F07D0A0F5FC -:106BC0008070033803D0012801D0002070470F20C7 -:106BD00070470A281FD008DC0A2818D2DFE800F026 -:106BE000191B1F1F171F231D1F21102815D008DC7C -:106BF0000B2812D00C2810D00D2816D00F2806D143 -:106C00000DE011280BD084280BD087280FD003204B -:106C100070470020704705207047072070470F20FD -:106C2000704704207047062070470C20704743F2DD -:106C30000200704738B50C46050041D06946FFF7A1 -:106C4000AFF9002819D19DF80010607861F30200B7 -:106C500060706946681CFFF7A3F900280DD19DF804 -:106C60000010607861F3C5006070A978C1F341013C -:106C7000012903D0022905D0072038BD217821F051 -:106C8000200102E0217841F020012170410704D069 -:106C9000A978C90861F386106070607810F0380F29 -:106CA00007D0A978090961F3C710607010F0380F98 -:106CB00002D16078400603D5207840F04000207073 -:106CC000002038BD70B50446002008801546606875 -:106CD000FFF7B0FF002816D12089A189884211D87A -:106CE00060688078C0070AD0B1F5007F0AD840F20A -:106CF0000120B1FBF0F200FB1210288007E0B1F593 -:106D0000FF7F01D90C2070BD01F2012129800020F4 -:106D100070BD10B50478137864F300031370047821 -:106D2000640864F3410313700478A40864F38203D5 -:106D300013700478E40864F3C3031370047824091F -:106D400064F3041313700478640964F34513137037 -:106D50000078800960F38613137031B10878C10799 -:106D600001D1800701D5012000E0002060F3C713A6 -:106D7000137010BD4278530702D002F0070306E0FB -:106D800012F0380F02D0C2F3C20300E001234A78A8 -:106D900063F302024A70407810F0380F02D0C0F35B -:106DA000C20005E0430702D000F0070000E0012028 -:106DB00060F3C5024A7070472DE9F04F95B00D00A1 -:106DC000824612D0122128461EF0A3FC4FF6FF7B0C -:106DD00005AA0121584607F05CF8002426463746EC -:106DE0004FF420586FF4205973E0102015B0BDE81F -:106DF000F08F00BF9DF81E0001280AD1BDF81C10BD -:106E000041450BD011EB09000AD001280CD0022813 -:106E10000CD0042C0ED0052C0FD10DE0012400E085 -:106E20000224BDF81A6008E0032406E00424BDF83B -:106E30001A7002E0052400E00624BDF81A1051453E -:106E400047D12C74BEB34FF0000810AA4FF0070AC8 -:106E5000CDE90282CDE900A80DF13C091023CDF85F -:106E6000109042463146584607F0C6F808BBBDF8B8 -:106E70003C002A46C0B210A90DF013FBC8B9AE8180 -:106E8000CFB1CDE900A80DF1080C0AAE40468CE860 -:106E90004102132300223946584607F0ADF840B9A5 -:106EA000BDF83C00F11CC01EC0B22A1D0DF0F9FA5D -:106EB00010B103209AE70AE0BDF82900E881062C0A -:106EC00005D19DF81E00A872BDF81C002881002085 -:106ED0008CE705A806F0E9FF00288BD0FFF779FEC4 -:106EE00084E72DE9F0471C46DDE90978DDF82090BC -:106EF00015460E00824600D1FFDF0CB1208818B184 -:106F0000D5B11120BDE8F087022D01D0012100E0AC -:106F1000002106F1140005F0ABFEA8F800000246BF -:106F20003B462946504603F044F9C9F8000008B929 -:106F3000A41C3C600020E5E71320E3E7F0B414460E -:106F4000DDE904528DB1002314B1022C09D101E016 -:106F5000012306E00D7CEE0703D025F00105012397 -:106F60000D742146F0BC03F0AFBF1A80F0BC70472F -:106F70002DE9FE4F91461A881C468A468046FAB192 -:106F800002AB494603F015F9050019D04046A61C8E -:106F900027880BF03DFE3246072629463B460096E1 -:106FA0000BF04BFA20882346CDE900504A46514663 -:106FB0004046FFF7C3FF002020800120BDE8FE8F80 -:106FC0000020FBE72DE9F04786B082460EA89046E8 -:106FD00090E8B000894604AA05A903A88DE8070037 -:106FE0001E462A4621465046FFF77BFF039901B112 -:106FF00001213970002818D1F94904F1140204ABB9 -:107000000860039805998DE80700424649465046B6 -:1070100006F0E5F9A8B1092811D2DFE800F005086B -:107020000510100A0C0C0E00002006B06AE71120B3 -:10703000FBE70720F9E70820F7E70D20F5E7032035 -:10704000F3E7BDF810100398CDE9000133462A4656 -:1070500021465046FFF772FFE6E72DE9F04389B07D -:107060000D46DDE9108781461C461646142103A80B -:107070001EF071FB012002218DF810108DF80C001C -:107080008DF81170ADF8146064B1A278D20709D000 -:107090008DF81600E088ADF81A00A088ADF8180049 -:1070A000A068079008A80095CDE90110424603A901 -:1070B00048466B68FFF786FF09B0BDE8F083F0B57E -:1070C0008BB000240646069407940727089405A869 -:1070D0000994019400970294CDE903400D461023D2 -:1070E0002246304606F088FF78B90AA806A901941E -:1070F00000970294CDE90310BDF814300022294610 -:10710000304606F04FFD002801D0FFF762FD0BB0BE -:10711000F0BD06F0EFBB2DE9FC410C468046002691 -:1071200002F0D6F9054620780D287DD2DFE800F080 -:10713000BC0713B325BD49496383AF959B00A8489D -:10714000006820B1417841F010014170ADE0404647 -:1071500002F0EEF9A9E0042140460BF015FC07000F -:1071600000D1FFDF07F11401404605F015FDA5BB76 -:1071700013214046FDF724FC97E0042140460BF024 -:1071800003FC070000D1FFDFE088ADF8000000201D -:10719000B8819DF80000010704D5C00602D5A0887B -:1071A000B88105E09DF8010040067ED5A088F881F1 -:1071B00005B9FFDF22462946404601F0BDFC022604 -:1071C00073E0E188ADF800109DF8011009060FD5B5 -:1071D000072803D006280AD00AE024E0042140460C -:1071E0000BF0D2FB060000D1FFDFA088F081022661 -:1071F000CDB9FFDF17E0042140460BF0C5FB0700C7 -:1072000000D1FFDF07F1140006F0ABFB90F0010F97 -:1072100002D1E079000648D5387C022640F0020011 -:10722000387405B9FFDF00E03EE0224629464046BB -:1072300001F082FC39E0042140460BF0A5FB017C03 -:10724000002D01F00206C1F340016171017C21F0C3 -:1072500002010174E7D1FFDFE5E702260121404684 -:1072600002F098F921E0042140460BF08DFB054621 -:10727000606800902089ADF804000122694640460C -:1072800002F0A9F9287C20F0020028740DE0002DFE -:10729000C9D1FFDFC7E7022600214046FBF714F9FA -:1072A000002DC0D1FFDFBEE7FFDF3046BDE8FC8127 -:1072B0003EB50C0009D001466B4601AA002006F03D -:1072C0001DFF20B1FFF785FC3EBD10203EBD002014 -:1072D0002080A0709DF8050002A900F00700FEF7CD -:1072E0007BFE50B99DF8080020709DF8050002A9AA -:1072F000C0F3C200FEF770FE08B103203EBD9DF84A -:10730000080060709DF80500C109A07861F30410C1 -:10731000A0709DF80510890961F3C300A0709DF865 -:107320000410890601D5022100E0012161F3420029 -:107330009DF8001061F30000A07000203EBD70B504 -:10734000144606460D4651EA040005D075B10846BC -:10735000F9F7FDFF78B901E0072070BD29463046F6 -:1073600006F02DFF10B1BDE8704032E454B1204664 -:10737000F9F7EDFF08B1102070BD21463046BDE899 -:10738000704095E7002070BD2DE9FC5F0C469046EB -:107390000546002701780822007A3E46B2EB111F0D -:1073A0007ED104F10A0100910A31821E4FF0020AD7 -:1073B00004F1080B0191092A73D2DFE802F0ECDF37 -:1073C00005F427277AA9CD00688804210BF0DCFAA0 -:1073D000060000D1FFDFB08920B152270726C2E0A6 -:1073E0008C02002051271026002C7DD06888A080B8 -:1073F0000120A071A88900220099FFF7A0FF0028B2 -:1074000073D1A8892081288AE081D1E0B5F8129053 -:10741000072824D1E87B000621D5512709F1140063 -:1074200086B2002CE1D0A88900220099FFF787FFDF -:1074300000285AD16888A08084F806A0A8892081F5 -:107440000120A073288A2082A4F81290A88A0090B4 -:1074500068884B46A969019A01F04BFBA8E05027C8 -:1074600009F1120086B2002C3ED0A88900225946AC -:10747000FFF765FF002838D16888A080A889E080E0 -:10748000287A072813D002202073288AE081E87B1D -:10749000C0096073A4F81090A88A0090688801E081 -:1074A00083E080E04B4604F11202A969D4E7012091 -:1074B000EAE7B5F81290512709F1140086B2002CC2 -:1074C00066D0688804210BF05FFA83466888A08044 -:1074D000A88900220099FFF732FF00286ED184F8B6 -:1074E00006A0A889208101E052E067E00420A07393 -:1074F000288A2082A4F81290A88A009068884B46B7 -:10750000A969019A01F0F5FAA989ABF80E104FE0CC -:107510006888FBF798FF0746688804210BF034FA67 -:10752000064607B9FFDF06B9FFDF687BC00702D058 -:107530005127142601E0502712264CB36888A080FA -:10754000502F06D084F806A0287B594601F0E1FAB6 -:107550002EE0287BA11DF9E7FE49A88949898142CF -:1075600005D1542706269CB16888A08020E05327C7 -:107570000BE06888A080A889E08019E06888042171 -:107580000BF002FA00B9FFDF55270826002CF0D1D6 -:10759000A8F8006011E056270726002CF8D068886C -:1075A000A080002013E0FFDF02E0012808D0FFDF09 -:1075B000A8F800600CB1278066800020BDE8FC9F21 -:1075C00057270726002CE3D06888A080687AA0712E -:1075D000EEE7401D20F0030009B14143091D01EB16 -:1075E0004000704713B5DB4A00201071009848B185 -:1075F000002468460AF0E5FF002C02D1D64A009923 -:1076000011601CBD01240020F4E770B50D4606464C -:1076100086B014465C2128461EF09DF804B9FFDFB1 -:10762000A0786874A2782188284601F09CFA00208E -:10763000A881E881228805F11401304605F091FA0D -:107640006A460121304606F024FC19E09DF803004B -:10765000000715D5BDF806103046FFF730FD9DF840 -:107660000300BDF8061040F010008DF80300BDF8CF -:107670000300ADF81400FF233046059A06F06AFDBA -:10768000684606F012FC0028E0D006B070BD10B5C8 -:107690000C4601F1140005F09BFA0146627C20467D -:1076A000BDE8104001F094BA30B50446A94891B045 -:1076B0004FF6FF75C18905AA284606F0EAFB30E0BF -:1076C0009DF81E00A0422AD001282AD1BDF81C0036 -:1076D000B0F5205F03D042F60101884221D100209D -:1076E00002AB0AAA0CA9019083E8070007200090CA -:1076F000BDF81A1010230022284606F07DFC38B988 -:10770000BDF828000BAAC0B20CA90CF0CAFE10B13B -:10771000032011B030BD9DF82E00A04201D1002001 -:10772000F7E705A806F0C1FB0028C9D00520F0E75F -:1077300070B5054604210BF027F9040000D1FFDFE6 -:1077400004F114010C46284605F026FA2146284685 -:10775000BDE8704005F027BA70B58AB00C46064601 -:10776000FBF771FE050014D02878222827D30CB12E -:10777000A08890B101208DF80C0003208DF8100036 -:1077800000208DF8110054B1A088ADF818002068D1 -:1077900007E043F202000AB070BD0920FBE7ADF834 -:1077A00018000590042130460BF0EEF8040000D1DB -:1077B000FFDF04F1140005F022FA000701D40820CD -:1077C000E9E701F085FE60B108A802210094CDE947 -:1077D000011095F8232003A930466368FFF7F2FBF8 -:1077E000D9E71120D7E72DE9F04FB2F802A0834680 -:1077F00089B0154689465046FBF725FE0746042109 -:1078000050460BF0C1F80026044605964FF00208DA -:107810000696ADF81C6007B9FFDF04B9FFDF4146EB -:10782000504603F0BCFE50B907AA06A905A88DE88A -:1078300007004246214650466368FFF752FB454821 -:1078400007AB0660DDE9051204F11400CDF80090E5 -:10785000CDE90320CDE9013197F823205946504660 -:107860006B6805F015FA06000AD0022E04D0032E2C -:1078700014D0042E00D0FFDF09B03046BDE8F08FF1 -:10788000BDF81C000028F7D00599CDE9001042464C -:10789000214650466368FFF751FBEDE7687840F0FA -:1078A00008006870E8E72DE9F04F99B004464FF002 -:1078B00000082848ADF81C80ADF82080ADF8248081 -:1078C000A0F80880ADF81480ADF81880ADF82C80D1 -:1078D000ADF82880007916460D464746012808D0A5 -:1078E000022806D0032804D0042802D0082019B0AA -:1078F000C4E72046F9F7E7FC80BB2846F9F7E3FC2C -:1079000060BB6068F9F72CFD40BB606848B16089D6 -:107910002189884202D8B1F5007F01D90C20E6E721 -:1079200080460EAA06A92846FFF7CCF90028DED12A -:1079300068688078C0F34100022808D19DF81900DA -:1079400010F0380F03D02869F9F701FD30B905A907 -:10795000206904E08C0200201400002020E0FFF7E2 -:1079600069F90028C3D1206948B1607880079DF883 -:10797000150000F0380001D5F0B300E0E0BB9DF841 -:10798000140080060ED59DF8150010F0380F03D0B6 -:107990006068F9F7DCFC18B96068F9F7E1FC08B138 -:1079A0001020A4E70AA96069FFF744F900289ED1D6 -:1079B000606940B19DF8290000F0070101293CD120 -:1079C00010F0380F39D00BA9A069FFF733F9002860 -:1079D0008DD19DF8280080062FD49DF82C008006BC -:1079E0002BD4A06950B19DF82D0000F007010129AA -:1079F00023D110F0380F00E01FE01ED0E06818B16E -:107A00000078D0B11C2818D20FAA611C2046FFF7BD -:107A100080F90121384661F30F2082468DF852101B -:107A2000B94642F603000F46ADF850000DF13F0293 -:107A300018A928680CF054FD08B1072057E79DF8F5 -:107A4000600015A9CDF80090C01CCDE9019100F0AF -:107A5000FF0B00230BF20122514614A806F05CF93B -:107A6000F0BBBDF854000C90FD492A8928690092AA -:107A7000CDE901016B89BDF838202868069906F028 -:107A80004BF901007ED120784FF0020AC10601D4E3 -:107A900080062BD5ADF80C90606950B90AA906A8EC -:107AA000FFF768F99DF8290020F00700401C8DF8C9 -:107AB00029009DF8280008A940F0C8008DF828008A -:107AC0008DF8527042F60210ADF8500003AACDF8BE -:107AD00000A0CDE90121002340F2032214A800E018 -:107AE0001EE00A9906F018F901004BD1DC484D461A -:107AF00008385B460089ADF83D000FA8CDE902903B -:107B0000CDF80490CDF810904FF007090022CDF881 -:107B10000090BDF854104FF6FF7006F043F810B116 -:107B2000FFF757F8E3E69DF83C00000625D5294607 -:107B3000012060F30F218DF852704FF42450ADF8FE -:107B40005000ADF80C5062789DF80C00002362F3F1 -:107B500000008DF80C006278CDF800A0520862F3A6 -:107B600041008DF80C0003AACDE9012540F2032263 -:107B700014A806F0D1F8010004D1606888B3206928 -:107B8000A8B900E086E005A906A8FFF7F3F8607839 -:107B9000800706D49DF8150020F038008DF81500F8 -:107BA00005E09DF8140040F040008DF814008DF8B9 -:107BB000527042F60110ADF85000208940F20121C8 -:107BC000B0FBF1F201FB1202606809ABCDF8008056 -:107BD000CDE90103002314A8059906F09DF80100E2 -:107BE00058D12078C00729D0ADF80C50A06950B901 -:107BF0000BA906A8FFF7BEF89DF82D0020F007009E -:107C0000401C8DF82D009DF82C008DF8527040F02E -:107C100040008DF82C0042F60310ADF8500007A983 -:107C200003AACDF800A0CDE90121002340F20322F0 -:107C300014A80B9906F070F801002BD1E06868B326 -:107C40002946012060F30F218DF8527042F604108E -:107C5000ADF85000E068002302788DF85820407895 -:107C60008DF85900E06816AA4088ADF85A00E0681F -:107C700000798DF85C00E068C088ADF85D00CDF853 -:107C80000090CDE901254FF4027214A806F044F8E3 -:107C9000010003D00C9800F0C7FF28E670480321CC -:107CA0000838017156B100893080BDF82400708019 -:107CB000BDF82000B080BDF81C00F080002016E662 -:107CC00070B501258AB016460B46012802D002285D -:107CD00016D104E08DF80E504FF4205003E08DF8DB -:107CE0000E5042F60100ADF80C005BB10024601CA0 -:107CF00060F30F2404AA08A918460CF0F1FB18B190 -:107D0000072048E5102046E504A99DF820205448A6 -:107D1000CDE90021801E02900023214603A802F233 -:107D2000012205F0F9FF10B1FEF753FF33E54C488F -:107D300008380EB1C1883180057100202BE5F0B5FF -:107D400093B0074601268DF83E6041F60100ADF87C -:107D50003C0012AA0FA93046FFF7B2FF002848D115 -:107D60003F4C0025083CE7B31C2102A81DF0F3FCA2 -:107D70009DF808008DF83E6040F020008DF8080066 -:107D800042F60520ADF83C000E959DF83A0011959D -:107D900020F00600801C8DF83A009DF838006A46F5 -:107DA00020F0FF008DF838009DF8390009A920F077 -:107DB000FF008DF839000420ADF82C00ADF830003C -:107DC0000EA80A9011A80D900FA80990ADF82E509A -:107DD00002A8FFF768FD00280BD1BDF80000608104 -:107DE00000E008E0BDF80400A081401CE08125719E -:107DF000002013B0F0BD6581A581BDF84800F4E70F -:107E00002DE9F74F1649A0B00024083917940A79D4 -:107E1000A146012A04D0022A02D0082023B02DE571 -:107E2000CA88824201D00620F8E721988A46824219 -:107E300001D10720F2E701202146ADF848004FF6B6 -:107E4000FF788DF86E0042F6020B60F30F21ADF85B -:107E50004A80ADF86CB006918DF8724002E00000E7 -:107E6000940200201CA9ADF870401391ADF8508029 -:107E700012A806F03EF800252E462F460DAB07222D -:107E800012A9404606F038F878B10A285DD195B3BA -:107E90008EB3ADF86450ADF866609DF85E008DF865 -:107EA000144019AC012864D06BE09DF83A001FB370 -:107EB000012859D1BDF8381059451FD118A809A972 -:107EC00001940294CDE9031007200090BDF836100C -:107ED00010230022404606F08FF8B0BBBDF86000CA -:107EE000042801D006284AD1BDF8241021988142E7 -:107EF0003AD10F2092E73AE0012835D1BDF8380099 -:107F0000B0F5205F03D042F6010188422CD1BAF8C7 -:107F10000600BDF83610884201D1012700E0002795 -:107F200005B19EB1219881421ED118A809AA0194D9 -:107F30000294CDE90320072000900D461023002273 -:107F4000404606F059F800B902E02DE04E460BE03D -:107F5000BDF86000022801D0102810D1C0B217AAC5 -:107F600009A90CF09EFA50B9BDF8369086E70520B5 -:107F700054E705A917A8221D0CF0B2FA08B1032096 -:107F80004CE79DF814000023001DC2B28DF81420A8 -:107F900022980092CDE901401BA8069905F0BCFE8D -:107FA00010B902228AF80420FEF713FE36E710B556 -:107FB0000B46401E88B084B205AA00211846FEF781 -:107FC000A8FE00200DF1080C06AA05A901908CE876 -:107FD0000700072000900123002221464FF6FF7082 -:107FE00005F0E0FD0446BDF81800012800D0FFDFD1 -:107FF0002046FEF7EEFD08B010BDF0B5F74F044681 -:1080000087B038790E46032804D0042802D008200F -:1080100007B0F0BD04AA03A92046FEF753FE0500F1 -:10802000F6D160688078C0F3410002280AD19DF83B -:108030000D0010F0380F05D02069F9F788F908B164 -:108040001020E5E7208905AA21698DE807006389EA -:10805000BDF810202068039905F05EFE10B1FEF710 -:10806000B8FDD5E716B1BDF8140030800420387192 -:108070002846CDE7F8B50C0006460CD001464FF671 -:10808000FF7500236A46284606F038F828B100BF7D -:10809000FEF79FFDF8BD1020F8BD69462046FEF7AB -:1080A000C9FD0028F8D1A078314600F00103284628 -:1080B000009A06F04FF8EBE730B587B0144600227F -:1080C0000DF1080C05AD01928CE82C0007220092FE -:1080D0000A46014623884FF6FF7005F063FDBDF8A0 -:1080E00014102180FEF775FD07B030BD70B50D4648 -:1080F00004210AF049FC040000D1FFDF294604F105 -:108100001400BDE8704004F073BD70B50D46042145 -:108110000AF03AFC040000D1FFDF294604F1140004 -:10812000BDE8704004F087BD70B50D4604210AF02B -:108130002BFC040000D1FFDF294604F11400BDE848 -:10814000704004F09FBD70B5054604210AF01CFC88 -:10815000040000D1FFDF214628462368BDE87040B7 -:108160000122FEF705BF70B5064604210AF00CFC9B -:10817000040000D1FFDF04F1140004F029FD401DCC -:1081800020F0030511E0011D00880022431821465C -:108190003046FEF7EDFE00280BD0607CABB26843A2 -:1081A00082B2A068011D0AF0ACFAA06841880029DB -:1081B000E9D170BD70B5054604210AF0E5FB040065 -:1081C00000D1FFDF214628466368BDE870400222E7 -:1081D000FEF7CEBE70B50E46054601F079F90400F3 -:1081E00000D1FFDF0120207266726580207820F0C8 -:1081F0000F00001D20F0F00040302070BDE87040FE -:1082000001F069B910B50446012900D0FFDF20460E -:10821000BDE810400121FAF757B92DE9F04F97B0AA -:108220004FF0000A0C008346ADF814A0D04619D0D8 -:10823000E06830B1A068A8B10188ADF81410A0F8CA -:1082400000A05846FBF7FFF8070043F2020961D08F -:10825000387822285CD3042158460AF095FB0500A3 -:1082600005D103E0102017B0BDE8F08FFFDF05F166 -:10827000140004F0ADFC401D20F00306A078012896 -:1082800003D0022801D00720EDE7218807AA58462D -:1082900005F0FFFD30BB07A805F007FE10BB07A8DF -:1082A00005F003FE48B99DF82600012805D1BDF868 -:1082B0002400A0F52451023902D04FF45050D2E7E7 -:1082C000E068B0B1CDE902A00720009005AACDF882 -:1082D00004A00492A2882188BDF81430584605F005 -:1082E00061FC10B1FEF775FCBDE7A168BDF8140094 -:1082F00008809DF81F00C00602D543F20140B2E796 -:108300000B9838B1A1780078012905D080071AD4DC -:108310000820A8E74846A6E7C007F9D002208DF854 -:108320003C00A8684FF00009A0B1697C4288714305 -:1083300091420FD98AB2B3B2011D0AF098F9804672 -:10834000A0F800A006E003208DF83C00D5F80080DE -:108350004FF001099DF8200010F0380F00D1FFDF29 -:108360009DF820001E49C0F3C200084497F823106E -:1083700010F8010C884201D90F2074E72088ADF86D -:10838000400014A90095CDE90191434607220FA9A9 -:108390005846FEF717FE002891D19DF8500050B9BD -:1083A000A078012807D1687CB3B2704382B2A86874 -:1083B000011D0AF070F9002055E770B50646154614 -:1083C0000C460846FEF7C4FB002805D12A46214684 -:1083D0003046BDE8704073E470BD11E58C020020AA -:1083E0000E5B020070B51E4614460D0009D044B164 -:1083F000616831B138B1FC49C988814203D0072096 -:1084000070BD102070BD2068FEF7A2FB0028F9D1D6 -:10841000324621462846BDE87040FFF744BA70B5A1 -:1084200015460C0006D038B1EF490989814203D0C6 -:10843000072070BD102070BD2068FEF789FB002862 -:10844000F9D129462046BDE87040D6E570B506460C -:1084500086B00D4614461046F8F75BFFD0BB606847 -:10846000F8F77EFFB0BBA6F57F40FF3803D030465B -:10847000FAF7E9FF80B128466946FEF79DFC00281F -:108480000CD19DF810100F2008293DD2DFE801F033 -:1084900008060606060A0A0843F2020006B070BD86 -:1084A0000320FBE79DF80210012908D1BDF8001058 -:1084B000B1F5C05FF2D06FF4C052D142EED09DF85A -:1084C000061001290DD1BDF80410A1F52851062987 -:1084D00007D200E029E0DFE801F00303040303030F -:1084E000DCE79DF80A1001290FD1BDF80810B1F59D -:1084F000245FD3D0A1F60211B1F50051CED00129ED -:10850000CCD0022901D1C9E7FFDF606878B9002328 -:1085100005AA2946304605F0F1FD10B1FEF759FBDA -:10852000BCE79DF81400800601D41020B6E76188EE -:10853000224628466368FFF7BFFDAFE72DE9F04309 -:10854000814687B0884614461046F8F7E2FE18B117 -:10855000102007B0BDE8F083002306AA4146484634 -:1085600005F0CCFD18B100BFFEF733FBF1E79DF835 -:108570001800C00602D543F20140EAE700250727AC -:1085800005A8019500970295CDE9035062884FF642 -:10859000FF734146484605F02FFD060013D1606881 -:1085A000F8F7B7FE60B960680195CDE90250009711 -:1085B0000495238862884146484605F01DFD06461D -:1085C000BDF8140020803046CEE739B1864B0A88CA -:1085D0009B899A4202D843F2030070471DE610B50A -:1085E00086B0814C0423ADF81430638943B1A4896B -:1085F0008C4201D2914205D943F2030006B010BD6E -:108600000620FBE7ADF81010002100910191ADF8B4 -:10861000003002218DF8021005A9029104A90391EE -:10862000ADF812206946FFF7F8FDE7E72DE9FC47B2 -:1086300081460D460846F8F746FE88BB4846FAF7DD -:1086400002FF5FEA00080AD098F80000222829D328 -:10865000042148460AF098F9070005D103E043F2E7 -:108660000200BDE8FC87FFDF07F1140004F0C7FA41 -:1086700006462878012803D0022804D00720F0E716 -:10868000B0070FD502E016F01C0F0BD0A8792C1DF7 -:10869000C00709D0E08838B1A068F8F714FE18B117 -:1086A0001020DEE70820DCE721882A780720B1F5D2 -:1086B000847F35D01EDC40F20315A1F20313A942DA -:1086C00026D00EDCB1F5807FCBD003DCF9B10129D7 -:1086D00026D1C6E7A1F58073013BC2D0012B1FD183 -:1086E00013E0012BBDD0022B1AD0032BB9D0042BE1 -:1086F00016D112E0A1F20912082A11D2DFE802F025 -:108700000B04041010101004ABE7022AA9D007E0F4 -:10871000012AA6D004E0320700E0F206002AA0DA1F -:10872000CDB200F0D5FE50B198F82300CDE9000598 -:10873000FA89234639464846FEF78FFC91E7112017 -:108740008FE72DE9F04F8BB01F4615460C46834648 -:108750000026FAF778FE28B10078222805D20820F2 -:108760000BB081E543F20200FAE7B80801D0072018 -:10877000F6E7032F00D100274FF6FF79CCB1022D89 -:1087800073D32046F8F7ECFD30B904EB0508A8F1E7 -:108790000100F8F7E5FD08B11020E1E7AD1EAAB22F -:1087A0002146484605F085FD38F8021C88425CD118 -:1087B000ADB20D49B80702D58889401C00E0012000 -:1087C0001FFA80F8F80701D08F8900E04F4605AA0C -:1087D0004146584605F05DFB4FF0070A4FF000098F -:1087E000DCB320460BE000008C02002040881028FB -:1087F0003BD8361D304486B2AE4236D2A01902882C -:108800004245F3D351E000BF9DF8170002074CD555 -:1088100094B304EB0608361DB8F80230B6B2102B3C -:1088200023D89A19AA4220D8B8F8002091421CD126 -:10883000C0061CD5CDE900A90DF1080C0AAAA119A2 -:1088400048468CE80700B8F800100022584605F0AA -:10885000A9F920B1FEF7BDF982E726E005E0B8F8F6 -:108860000200BDF82810884201D00B2078E7B8F844 -:108870000200304486B207E0FFE7C00604D5584640 -:10888000FEF71DFC002888D19DF81700BDF81A10CE -:1088900020F010008DF81700BDF81700ADF80000AB -:1088A000FF235846009A05F055FC05A805F0FDFA8F -:1088B00018B9BDF81A10B942A6D9042158460AF0D1 -:1088C00063F8040000D1FFDFA2895AB1CDE900A905 -:1088D0004D46002321465846FEF7BFFB0028BBD17A -:1088E000A5813DE700203BE72DE9FF4F8BB01E46F9 -:1088F00017000D464FF0000412D0B00802D0072038 -:108900000FB0B1E4032E00D100265DB10846F8F7A0 -:108910001EFD28B93888691E0844F8F718FD08B10B -:108920001020EDE7C64AB00701D5D18900E001214A -:10893000F0074FF6FF7802D0D089401E00E0404695 -:1089400086B206AA0B9805F0A4FA4FF000094FF082 -:10895000070B0DF1140A38E09DF81B00000734D511 -:10896000CDF80490CDF800B0CDF80890CDE9039A89 -:10897000434600220B9805F03FFB60BB05B3BDF8F2 -:1089800014103A8821442819091D8A4230D3BDF8B1 -:108990001E2020F8022BBDF8142020F8022BCDE970 -:1089A00000B9CDE90290CDF810A0BDF81E10BDF8B9 -:1089B000143000220B9805F01FFB08B103209FE73D -:1089C000BDF814002044001D84B206A805F06DFA1D -:1089D00020B10A2806D0FEF7FCF891E7BDF81E107A -:1089E000B142B9D934B17DB13888A11C884203D2D3 -:1089F0000C2085E7052083E722462946404605F0FE -:108A000058FC014628190180A41C3C80002077E70F -:108A100010B50446F8F77DFC08B1102010BD884859 -:108A2000C0892080002010BDF0B58BB00D460646F1 -:108A3000142103A81CF08FFE01208DF80C008DF886 -:108A4000100000208DF81100ADF814503046FAF7F0 -:108A5000FAFC48B10078222812D30421304609F0EC -:108A600093FF040005D103E043F202000BB0F0BD18 -:108A7000FFDF04F11400074604F0C1F8800601D4BA -:108A80000820F3E7207C022140F00100207409A8AF -:108A90000094CDE90110072203A930466368FEF770 -:108AA00091FA20B1217C21F001012174DEE72946F1 -:108AB0003046F9F7FAFC08A9384604F08FF800B1FF -:108AC000FFDFBDF82040172C01D2172000E0204620 -:108AD000A84201D92C4602E0172C00D217242146C7 -:108AE0003046FFF712FB21463046F9F704FA002022 -:108AF000BCE7F8B51C4615460E46069F0AF076F808 -:108B00002346FF1DBCB231462A46009409F061FCA1 -:108B1000F8BD70B50C4605460E2120461CF0F9FD47 -:108B2000002020802DB1012D01D0FFDF70BD062077 -:108B300000E00520A07170BD10B54880087813468C -:108B400020F00F00001D20F0F00080300C4608706F -:108B50001422194604F108001CF0A1FD00F0BBFC32 -:108B60003748046010BD2DE9F047DFF8D890491D63 -:108B7000064621F0030117460C46D9F8000009F01B -:108B80003EFD050000D1FFDF4FF000083560A5F87D -:108B900000802146D9F8000009F031FD050000D120 -:108BA000FFDF7560A5F800807FB104FB07F1091DA8 -:108BB0000BD0D9F8000009F022FD040000D1FFDF3E -:108BC000B460C4F80080BDE8F087C6F80880FAE712 -:108BD0002DE9F0411746491D21F00302194D0646C3 -:108BE00001681446286809F035FD22467168286836 -:108BF00009F030FD3FB104FB07F2121D03D0B1684C -:108C0000286809F027FD042009F066FE04460420C8 -:108C100009F06AFE201A012804D12868BDE8F04155 -:108C200009F0E2BCBDE8F08110B50C4605F0FDF896 -:108C300000B1FFDF2046BDE81040FDF7CABF0000CD -:108C40008C0200201400002038B50C468288817BFD -:108C500019B14189914200D90A462280C188121D6A -:108C600090B26A4608F02BFFBDF80000032800D33D -:108C70000320C1B2208800F0D7FF38BD38B50C46BC -:108C80008288817B19B10189914200D90A462280EC -:108C9000C188121D90B26A4608F011FFBDF80000AD -:108CA000022800D30220C1B2208800F0BDFF401C82 -:108CB000C0B238BD2DE9FE4F82468B46F9481446B6 -:108CC0000BF10302D0E90010CDE9011022F00302FC -:108CD00068464FF49071009209F073FCF24E002C3C -:108CE00002D1F24A00999160009901440091357FC8 -:108CF00005F1010504D1E8B20BF06CFB00B1FFDF18 -:108D0000009800EB0510C01C20F0030100915CB935 -:108D1000707AB27A1044C2B200200870308C80B2EF -:108D200004F00BFF00B1FFDF0098316A08440090A7 -:108D30002146684600F03BFF80460098C01C20F0AA -:108D400003000090B37AF27A717A04B1002009F03E -:108D50002EFD0099084400902146684600F06FFF00 -:108D6000D14800273D4690F801900CE0284600F0DD -:108D700001FF064681788088F9F754F971786D1CF7 -:108D800000FB0177EDB24D45F0D10098C01C20F0FA -:108D90000300009004B100203946F9F74EF900991C -:108DA000002708440090C0483D4690F801900CE030 -:108DB000284600F0DFFE0646C1788088FEF709FCF1 -:108DC00071786D1C00FB0177EDB24D45F0D1009834 -:108DD000C01C20F00300009004B100203946FEF7CB -:108DE00001FC00994FF0000908440090AE484D4640 -:108DF00047780EE0284600F0BDFE0646807B30B185 -:108E000006F1080001F00FFF727800FB02996D1C5B -:108E1000EDB2BD42EED10098C01C20F003000090DE -:108E200004B10020494601F002FF00990844009077 -:108E30002146684600F075FE0098C01D20F007002E -:108E40000090DAF80010814204D3A0EB0B01B1F5D9 -:108E5000803F04DB4FF00408CAF8000004E0CAF8C1 -:108E60000000B8F1000F02D04046BDE8FE8F34BBD1 -:108E70008F490020009A03F079F8FBF764FA8A48DA -:108E800001AA00211030F8F7E9FA00B1FFDF8648A7 -:108E9000407FFEF754FF00B1FFDF83484FF4F671C7 -:108EA00040301CF058FC80480421403080F8E91123 -:108EB00080F8EA11062180F8EB11032101710020EE -:108EC000D3E770B5784C06464034207804EB401563 -:108ED000E078083590B9A01990F8E80100280ED084 -:108EE000A0780F2800D3FFDF202128461CF033FC98 -:108EF000687866F3020068700120E070284670BD53 -:108F00002DE9F04105460C460027007805219046E2 -:108F10003E46B1EB101F00D0FFDF287A50B1012888 -:108F20000ED0FFDFA8F800600CB12780668000201B -:108F3000BDE8F0810127092674B16888A08008E0A7 -:108F40000227142644B16888A0802869E060A88AB6 -:108F50002082287B2072E5E7A8F80060E7E730B5BB -:108F6000514C012000212070617020726072032238 -:108F7000A272E07221732174052121831F21618374 -:108F800060744CA161610A2121776077474D4FF4ED -:108F9000B06020626868C11C21F00301814200D0EA -:108FA000FFDF6868606030BD30B5404C15686368AD -:108FB00010339D4202D20420136030BD3A4B5D78DD -:108FC0005A6802EB0512107051700320D0801720F0 -:108FD00090800120D0709070002090735878401CD1 -:108FE0005870606810306060002030BD70B5064673 -:108FF0002D480024457807E0204600F0BBFD0178AD -:10900000B14204D0641CE4B2AC42F5D1002070BD82 -:10901000F7B5074608780C4610B3FFF7E7FF05469B -:10902000A7F12006202F06D0052E19D2DFE806F082 -:109030000F2B2B151A0000F0A8FD0DB1697800E088 -:109040000021401AA17880B20844FF2808D8A078EF -:1090500030B1A088022831D202E0608817282DD2D2 -:109060000720FEBD207AE0B161881729F8D3A188D6 -:109070001729F5D3A1790029F2D0E1790029EFD0A1 -:10908000402804D9ECE7242F18D1207A48B1618810 -:109090004FF6FB70814202D8A18881420ED904208C -:1090A000FEBD0BE0145B0200A803002018000020A6 -:1090B000000000206E5246357800000065B9207827 -:1090C00002AA0121FFF770FF0028E9D12078FFF7FD -:1090D0008DFF050000D1FFDF052E18D2DFE806F076 -:1090E000030B0E081100A0786870A088E8800FE0DC -:1090F0006088A8800CE0A078A87009E0A078E870EB -:1091000006E054F8020FA8606068E86000E0FFDF46 -:109110000020C5E71A2835D00DDC132832D2DFE84D -:1091200000F01B31203131272723252D3131293102 -:109130003131312F0F00302802D003DC1E2821D11D -:10914000072070473A3809281CD2DFE800F0151BC9 -:109150000F1B1B1B1B1B07000020704743F2040062 -:10916000704743F202007047042070470D2070479B -:109170000F20704708207047112070471320704758 -:10918000062070470320704710B5007800F00100FA -:1091900008F087FCBDE81040BCE710B5007800F08F -:1091A000010008F087FCBDE81040B3E70EB5017878 -:1091B00001F001018DF80010417801F001018DF8F6 -:1091C00001100178C1F340018DF802104178C1F31C -:1091D00040018DF80310017889088DF8041041785A -:1091E00089088DF8051081788DF80610C1788DF802 -:1091F000071000798DF80800684607F097FAFFF726 -:1092000089FF0EBD2DE9F84FDFF8F883FE4C0026EC -:109210004FF490771FE0012000F054FD0120FFF78C -:1092200050FE05463946D8F8080009F0E8F96860AC -:1092300000B9FFDF686807F008F9B0B12846FAF70F -:10924000E9FB284600F044FD28B93A466968D8F899 -:10925000080009F0FFF994F9E9010428DBDA02209B -:1092600009F03AFB07460025A5E03A466968D8F8B8 -:10927000080009F0EFF9F2E7B8F802104046491C7F -:1092800089B2A8F80210B94201D30021418002211D -:10929000B8F8020009F078FB002864D0B8F80200A2 -:1092A000694608F070FBFFF735FF00B1FFDF9DF85E -:1092B000000078B1B8F8020009F0AAFC5FEA0009E2 -:1092C00000D1FFDF484608F018FF18B1B8F80200D7 -:1092D00002F054F9B8F8020009F088FC5FEA0009CE -:1092E00000D1FFDF484608F000FFE0BB0321B8F8DB -:1092F000020009F049FB5FEA000B47D1FFDF45E0C0 -:10930000DBF8100010B10078FF2849D0022000F0EF -:10931000D9FC0220FFF7D5FD8246484608F0F1FF50 -:10932000CAF8040000B9FFDFDAF8040009F0B9F860 -:10933000002100900170B8F802105046AAF80210FF -:1093400001F01EFE484609F0AEF800B9FFDF5046B6 -:1093500000F0BEFC18B99AF80100000704D5009887 -:10936000CBF8100012E024E0DBF8100038B10178EF -:10937000491C11F0FF01017008D1FFDF06E0002257 -:109380001146484600F0CBFB00B9FFDF94F9EA0133 -:10939000022805DBB8F8020001F0B7FD0028AFD1C4 -:1093A00094F9E901042804DB484609F0E0F800B12B -:1093B00001266D1CEDB2BD4204D294F9EA010228E7 -:1093C000BFF65AAF002E7FF422AFBDE8F84F03205E -:1093D00000F078BC10B58B4CE06008682061AFF2FB -:1093E000DB10F9F77AFD607010BD87480021403826 -:1093F00001708448017085494160704770B5054629 -:109400004FF080500C46D0F8A410491C05D1D0F87C -:10941000A810C9430904090C0BD050F8A01F01F093 -:1094200001012970416821608068A080287830B9E6 -:1094300070BD062120460CF0E2FC01202870607906 -:1094400040F0C000607170BD70B54FF080540D46A3 -:10945000D4F88010491C0BD1D4F88410491C07D1D2 -:10946000D4F88810491C03D1D4F88C10491C0CD0B6 -:10947000D4F880100160D4F884104160D4F88810CA -:109480008160D4F88C10C16002E010210CF0B7FCB0 -:10949000D4F89000401C0BD1D4F89400401C07D1A4 -:1094A000D4F89800401C03D1D4F89C00401C09D08B -:1094B00054F8900F286060686860A068A860E06851 -:1094C000E86070BD2846BDE8704010210CF097BCE4 -:1094D0004D480079F5E470B54B4CE07830B3207816 -:1094E00004EB4010407A00F00700204490F9E801B6 -:1094F000002800DCFFDF2078002504EB4010407AD4 -:1095000000F00700011991F8E801401E81F8E80118 -:109510002078401CC0B220700F2800D12570A078A0 -:10952000401CA0700CF062FBE57070BDFFDF70BDE9 -:109530003EB50546032109F027FA0446284609F0FE -:1095400055FB054604B9FFDF206918B10078FF28F4 -:1095500000D1FFDF01AA6946284600F0E0FA60B9B1 -:10956000FFDF0AE0002202A9284600F0D8FA00B97D -:10957000FFDF9DF8080000B1FFDF9DF80000411EED -:109580008DF80010EED220690199884201D10020A7 -:1095900020613EBD70B50546A0F57F400C46FF3802 -:1095A00000D1FFDF012C01D0FFDF70BDFFF790FF7E -:1095B000040000D1FFDF207820F00F00401D20F0D4 -:1095C000F000503020706580002020720120207350 -:1095D000BDE870407FE72DE9F04116460D4607468D -:1095E000FFF776FF040000D1FFDF207820F00F00A6 -:1095F000401D20F0F0005030207067800120207264 -:10960000286805E018000020E8030020F813002077 -:109610002061A888A0822673BDE8F0415BE77FB592 -:10962000FFF7E4FC040000D1FFDF02A92046FFF7AA -:109630000BFB054603A92046FFF720FB8DF80050E1 -:109640008DF80100BDF80800001DADF80200BDF85E -:109650000C00001DADF80400E088ADF80600684677 -:1096600008F007FA002800D0FFDF7FBD2DE9F041A8 -:10967000FB4C0646207808B1082059E43046F7F73D -:1096800048FE08B1102053E4F64D287808B9FFF7DA -:1096900066FCA87A697A0844C7B200F076FAB84244 -:1096A00007D2381AC1B232460020FFF77DFC0028ED -:1096B000E3D16068C01C20F00300606000F05DFB37 -:1096C000616801220844804601463046FFF7F2FAFD -:1096D000070012D00020FFF789FC06000BD006F12E -:1096E0001300616820F00300884200D0FFDF687833 -:1096F000401E6870666038461AE4002241463046D3 -:10970000FFF7D8FA00B1FFDF306860604FF6FF70F6 -:1097100060800120207000200AE42DE9F041044619 -:10972000CF4817460E46007808B10820A5E708463E -:10973000F7F7C9FD08B110209FE7CA4D287808B98E -:10974000FFF70DFC601E1E2807D8012C22D13078AF -:10975000FE281FD8287700208FE7A4F120001F28BB -:1097600005D8E0B23A463146BDE8F04150E4A4F1F4 -:1097700040001F2805D831462046BDE8F04100F0E2 -:10978000CFBAA4F1A0001F2804D80020A02C03D039 -:10979000A12C06D0072070E7317801F0010169772C -:1097A0006BE731680922F82901D38B0701D01046F5 -:1097B00063E76B7C03F00303012B04D16B8BD7337E -:1097C0009CB28C42F3D8296257E72DE9F0478146D5 -:1097D0000E460846F7F79DFD48B94846F7F7B7FD2E -:1097E00028B909F1030020F00301494502D01020F7 -:1097F000BDE8F0879B484FF0000A4030817869B19E -:109800004178804600EB4114083437883246002105 -:10981000204600F06BFA050004D027E0A6F800A06F -:109820000520E5E7B9F1000F24D03088B84201D90E -:109830000C251FE0607800F00705284600F042FA8A -:1098400008EB0507324697F8E8014946401C87F8BF -:10985000E801204607F5F47700F048FA0546387825 -:10986000401E3870032000F02DFA2DB10C2D01D0D0 -:10987000A6F800A02846BBE76078794E00F0070103 -:10988000012923D002290CD0032934D0FFDF98F816 -:1098900001104046491CC9B288F801100F2935D083 -:1098A00036E0616821B1000702D46088FFF740FE0E -:1098B00098F8EA014746012802D17078F9F72CFBA5 -:1098C00097F9EA010428E2DBFFDFE0E7616821B1F4 -:1098D0004FF49072B06808F0BDFE98F8E901474671 -:1098E000032802D17078F9F717FB97F9E9010428EA -:1098F000CDDBFFDFCBE7C00602D56088FFF718FE9F -:1099000098F9EB010628C2DBFFDFC0E780F801A071 -:109910008178491E8170617801F0070101EB080030 -:1099200090F8E811491C80F8E811A3E770B50D46DE -:109930000446F7F7C8FC18B92846F7F7EAFC08B15F -:10994000102070BD29462046BDE870400AF079BD60 -:1099500070B505460AF098FDC4B22846F7F7F7FC43 -:1099600008B1102070BD35B128782C7018B1A04214 -:1099700001D0072070BD2046FDF796FE052805D1D1 -:109980000AF086FD012801D0002070BD0F2070BDB7 -:1099900070B5044615460E460846F7F794FC18B90C -:1099A0002846F7F7B6FC08B1102070BD022C03D092 -:1099B000102C01D0092070BD2A46314620460AF0FD -:1099C00070FD0028F7D0052070BD70B514460D4617 -:1099D0000646F7F778FC38B92846F7F79AFC18B925 -:1099E0002046F7F7B4FC08B1102070BD2246294686 -:1099F00030460AF075FD0028F7D0072070BD3EB54F -:109A00000446F7F786FC08B110203EBD684606F014 -:109A1000F4FDFFF77FFB0028F7D19DF806002070CA -:109A2000BDF808006080BDF80A00A08000203EBD9F -:109A300070B505460C460846F7F789FC20B93CB1DD -:109A40002068F7F766FC08B1102070BDA08828B127 -:109A500021462846BDE87040FDF77EBE092070BD56 -:109A600018000020A803002070B504460D460846E3 -:109A7000F7F729FC30B9601E1E2814D82846F7F7DE -:109A800022FC08B11020EAE7032C01D90720E6E701 -:109A900004B9FFDFFC4800EB840050F8041C2846A2 -:109AA000BDE870400847A4F120001F2805D82946CA -:109AB0002046BDE87040FAF7CEBBF02CE6D1A8688E -:109AC000F7F701FC0028DDD1284608F03AF8BDE898 -:109AD0007040FFF71FBB70B504460D460846F7F708 -:109AE00018FC30B9601E1E280FD82846F7F7EBFB8C -:109AF00008B11020B3E7012C03D0022C01D0032CB5 -:109B000001D10620ABE70720A9E7A4F120001F2818 -:109B1000F9D829462046BDE87040FAF7F4BB08F0B2 -:109B2000B3BA38B50446D948007B00F00105D9B96D -:109B300004F064FB0DB1226800E00022D4484178B3 -:109B4000C06806F048FCD2481030C0788DF800009C -:109B500010B1012802D004E0012000E000208DF8BF -:109B60000000684606F0C3FD002D02D020682830B2 -:109B7000206038BD30B5C54D04466878A04200D895 -:109B8000FFDF686800EB041030BD70B5BF480025EA -:109B90002C46467807E02046FFF7ECFF4078641C2F -:109BA0002844C5B2E4B2B442F5D1284657E72DE9BE -:109BB000F0410C4607464FF0000800F00CF906464D -:109BC000FF2801D94FF013083868C01C20F00302A9 -:109BD0003A6054EA080421D1AC48F3B2072124309A -:109BE0000CF012FB09E0072C10D2DFE804F00604A9 -:109BF00008080A040600A74804E0A74802E0A748AE -:109C000000E0A7480CF020FB054600E0FFDFA5427E -:109C100000D0FFDF641CE4B2072CE4D3386800EB0B -:109C200006103860404628E5021D5143452900D200 -:109C300045210844C01CB0FBF2F0C0B270472DE9CA -:109C4000FC5F064691484FF000088B464746444665 -:109C500090F8019022E02046FFF78CFF050000D12C -:109C6000FFDF687869463844C7B22846FEF7ECFF44 -:109C7000824601A92846FFF701F80346BDF8040013 -:109C80005246001D81B2BDF80000001D80B208F0F0 -:109C9000F9FE6A78641C00FB0288E4B24C45DAD114 -:109CA0003068C01C20F003003060BBF1000F00D012 -:109CB00000204246394608F0F3FE3168084430601F -:109CC000BDE8FC9F7149403108710020C8707047A1 -:109CD0006E494031CA782AB10A7801EB4211083145 -:109CE000814201D001207047002070472DE9F041EA -:109CF00006460078154600F00F0400201080601E14 -:109D00000F46052800D3FFDF5F482A46183800EBCE -:109D10008400394650F8043C3046BDE8F04118470D -:109D200070B50C46402802D0412806D120E0A0782A -:109D300061780D18E178814201D907208FE62078FB -:109D4000012801D913208AE6FF2D08D80AF032FD38 -:109D500006460BF003FF301A801EA84201DA1220DB -:109D60007DE64A482168816021790173002076E60A -:109D7000BDE87040084600F059B82DE9F0470027CB -:109D8000DFF808A13E463D46B9463C469AF80180B8 -:109D90000AE02046FFF7EEFE4178807B0E4410FB80 -:109DA0000155641CE4B27F1C4445F2D109EB8700E5 -:109DB000C6EBC60100EB81009AF8092000EB850193 -:109DC00001EBC2019AF80A209AF80B0001EBC201DC -:109DD00001EB80000CE52DE9F047DFF8B09000269C -:109DE000344699F8090099F80A2099F8017002445C -:109DF000D5B299F80B20104400F0FF0808E0204687 -:109E0000FFF7B8FE817B407811FB0066641CE4B26A -:109E1000BC42F4D199F8091099F80A002944294460 -:109E2000414400B1012008443044E1E438B504461F -:109E3000407800F00300012803D002280BD007204F -:109E400038BD606858B1F7F78BFAD0B96068F7F79A -:109E50007EFA20B915E06068F7F735FA88B96946E7 -:109E60002046FCF79DF80028EAD1607800F0030056 -:109E7000022817D19DF80000A0B16068F7F767FAD3 -:109E800080B1102038BD0000345B0200A803002020 -:109E90001800002057410000FBAC0000E92F000033 -:109EA000C74101006189F8290DD8208988420AD864 -:109EB000607800F003020A48012A06D1D731026A0D -:109EC00089B28A4201D20920DCE794E80E0000F151 -:109ED000100585E80E000AB9002101830020D1E7B2 -:109EE000A80300202DE9F04107461446884608469D -:109EF00001F022FD064608EB88001C22796802EB7F -:109F0000C0000D18688C58B14146384601F01CFD60 -:109F1000014678680078C200082305F120000CE0B3 -:109F2000E88CA8B14146384601F015FD0146786835 -:109F300008234078C20005F1240008F0E2FB38B1A4 -:109F4000062121726681D0E90010C4E9031009E0FE -:109F5000287809280BD00520207266816868E060A7 -:109F6000002028702046BDE8F04101F0DBBC07204E -:109F700020726681F4E72DE9F04116460D4607464A -:109F8000406801EB85011C2202EBC1014418204608 -:109F900001F003FD40B10021708865F30F2160F3EB -:109FA0001F4106200CF00AFA09202070324629468B -:109FB0003846BDE8F04195E72DE9F0410E460746E9 -:109FC00000241C21F07816E004EB8403726801EB96 -:109FD000C303D25C6AB1FFF77BFA050000D1FFDF53 -:109FE0006F802A4621463046FFF7C5FF0120BDE8B5 -:109FF000F081641CE4B2A042E6D80020F7E770B517 -:10A00000064600241C21C0780AE000BF04EB84034C -:10A01000726801EBC303D5182A782AB1641CE4B234 -:10A02000A042F3D8402070BD282128461BF071FBC8 -:10A03000706880892881204670BD70B50346002075 -:10A040001C25DC780DE000BF00EB80065A6805EBAC -:10A05000C6063244167816B1128A8A4204D0401CD1 -:10A06000C0B28442F0D8402070BDF0B50446002054 -:10A070001C26E5780EE000BF00EB8007636806EB66 -:10A08000C7073B441F788F4202D15B78934204D0CC -:10A09000401CC0B28542EFD84020F0BD00780328B4 -:10A0A00001D000207047012070470078022801D0BD -:10A0B00000207047012070470078072801D0002059 -:10A0C0007047012070472DE9F04106468846107818 -:10A0D000F1781546884200D3FFDF2C781C27641CDA -:10A0E000F078E4B2A04201D8201AC4B204EB840193 -:10A0F000706807EBC1010844017821B141468847E7 -:10A1000008B12C7073E72878A042E8D1402028706D -:10A110006DE770B514460B880122A240134207D1A7 -:10A1200013430B8001230A22011D08F0B4FA0470C6 -:10A1300070BD2DE9FF4F81B00878DDE90E7B9A46AE -:10A1400091460E4640072CD4019808F061FD0400AA -:10A1500000D1FFDF07F1040820461FFA88F107F05D -:10A16000A0FE050000D1FFDF204629466A4608F020 -:10A17000EAF80098A0F80370A0F805A0284608F0B7 -:10A1800090F9017869F306016BF3C711017020465D -:10A190001FFA88F107F0C8FE00B9FFDF019806F04A -:10A1A0008CF806EB0900017F491C017705B0BDE87A -:10A1B000F08F2DE9F84F0E469A4691460746032147 -:10A1C00008F0E2FB0446008DDFF8B885002518B1E1 -:10A1D00098F80000B0421ED1384608F019FD07007B -:10A1E00000D1FFDF09F10401384689B207F059FEBA -:10A1F000050010D0384629466A4608F0A4F80098B1 -:10A2000000210A460180817006F010F90098C01DF7 -:10A21000CAF8000021E098F80000B04216D104F11D -:10A22000260734F8341F012000FA06F911EA090F55 -:10A2300000D0FFDF2088012340EA090020800A22A5 -:10A24000391D384608F042FA067006E0324604F13D -:10A25000340104F12600FFF75CFF0A2188F80010A2 -:10A260002846BDE8F88FFEB515460C46064602ABFB -:10A270000C220621FFF79DFF002827D00299607865 -:10A2800012220A70801C487008224A80A07002982E -:10A290002988052381806988C180A9880181E9888E -:10A2A000418100250C20CDE90005062221463046DB -:10A2B000FFF73FFF2946002266F31F41F0231046B7 -:10A2C0000BF0D2FF6078801C60700120FEBDFEB5EF -:10A2D00014460D460622064602AB1146FFF769FFFB -:10A2E000002812D0029B132000211870A878587003 -:10A2F000022058809C800620CDE9000102460523FB -:10A3000029463046FFF715FF0120FEBD2DE9FE432B -:10A310000C46804644E002AB0E2207214046FFF780 -:10A3200048FF002841D060681C2267788678BF1CEF -:10A3300006EB860102EBC101451802981421017059 -:10A3400047700A214180698A0181E98A4181A9888F -:10A350008180A9898181304601F0EEFA02990523B6 -:10A360000722C8806F700420287000250E20CDE9D8 -:10A37000000521464046FFF7DCFE294666F30F2123 -:10A3800068F31F41F023002206200BF06DFF607878 -:10A39000FD49801C607062682046921CFFF793FEA6 -:10A3A000606880784028B6D10120BDE8FE83FEB504 -:10A3B0000D46064638E002AB0E2207213046FFF775 -:10A3C000F8FE002835D068681C23C17801EB8102B3 -:10A3D00003EBC20284180298152202706278427060 -:10A3E0000A224280A2894281A2888281084601F025 -:10A3F000A3FA014602988180618AC180E18A0181C5 -:10A40000A088B8B10020207000210E20CDE9000105 -:10A410000523072229463046FFF78BFE6A68DB4991 -:10A420002846D21CFFF74FFE6868C0784028C2D18A -:10A430000120FEBD0620E6E72DE9FE430C468146DD -:10A4400044E0204601F093FAD0B302AB0822072182 -:10A450004846FFF7AEFE0028A7D060681C2265784A -:10A460000679AD1C06EB860102EBC1014718029884 -:10A47000B7F81080062101704570042141803046F4 -:10A4800001F05AFA0146029805230722C180A0F87C -:10A4900004807D70082038700025CDE90005214634 -:10A4A0004846FFF746FE294666F30F2169F31F4130 -:10A4B000F023002206200BF0D7FE6078801C60702D -:10A4C0006268B3492046121DFFF7FDFD60680179FF -:10A4D0004029B6D1012068E72DE9F34F83B00E463D -:10A4E00080E0304601F043FA002875D071681C20E6 -:10A4F00091F8068008EB880200EBC2000C18414678 -:10A50000304601F028FA0146A078C3007068407810 -:10A51000C20004F1240008F010F907468088E18B9E -:10A52000401A80B2002581B3AA46218B814200D80F -:10A5300008468146024602AB07210398FFF739FE21 -:10A54000010028D0BAF1000F03D0029AB888022582 -:10A5500010808B46E28B3968A9EB05001FFA80FA60 -:10A560000A440398009208F053FBED1D009A5946E7 -:10A570005346009507F061FFE08B504480B2E083C2 -:10A58000B988884209D1012508E0FFE7801C4FF017 -:10A59000010A80B2C9E7002008E60025CDE9009550 -:10A5A000238A072231460398FFF7C3FDE089401E46 -:10A5B000E0818DB1A078401CA0707068F17842787D -:10A5C00011FB02F1CAB2816901230E3008F063F871 -:10A5D00080F800800020E08372686E493046921D4A -:10A5E000FFF771FD7068817940297FF47AAF01200F -:10A5F000DCE570B5064648680D4614468179402969 -:10A6000010D104EB84011C2202EBC101084401F0CB -:10A61000E5F9002806D06868294684713046BDE80F -:10A62000704059E770BDFEB50C460746002645E070 -:10A63000204601F09CF9D8B360681C22417901EBF7 -:10A64000810102EBC1014518688900B9FFDF02AB47 -:10A65000082207213846FFF7ACFD002833D00299C5 -:10A66000607816220A70801C487004204880606858 -:10A67000407901F061F901460298052307228180A3 -:10A680006989C1800820CDE9000621463846FFF7D8 -:10A6900050FD6078801C6070A88969890844B0F515 -:10A6A000803F00D3FFDFA88969890844A8816E81B3 -:10A6B000626839492046521DFFF705FD60684179FF -:10A6C0004029B5D10120FEBD30B5438C458BC3F385 -:10A6D000C704002345B1838B641EED1AC38A6D1E27 -:10A6E0001D4495FBF3F3E4B22CB1008918B1A042EC -:10A6F00000D8204603444FF6FF70834200D3034640 -:10A7000013800C7030BD2DE9FC41074616460D46FE -:10A71000486802EB86011C2202EBC10144186A461C -:10A7200001A92046FFF7D0FFA089618901448AB2C0 -:10A73000BDF80010914212D0081A00D500206081A7 -:10A740006868407940280AD1204601F03DF9002888 -:10A7500005D06868294646713846FFF764FFBDE8B2 -:10A76000FC812DE9FE4F894680461546508803211D -:10A7700008F00AF98346B8F8020040280ED24020BB -:10A780000DE000002C0000209DA00000ABA0000008 -:10A79000B9A00000DDB90000C9B90000403880B29E -:10A7A00082460146584601F0E2F800287ED00AEBC6 -:10A7B0008A001C22DBF8041002EBC0000C182046B3 -:10A7C00001F0EBF8002877D1B8F80000E18A884260 -:10A7D0003CD8A189D1B348456ED100265146584690 -:10A7E00001F0B2F8218C0F18608B48B9B9F1020F53 -:10A7F00062D3B8F804006083618A884226D80226B2 -:10A80000A9EB06001FFA80F9B888A28B801A0028ED -:10A8100014DD4946814500DA084683B268886968D4 -:10A82000029139680A44CDE9003208F0DFF9DDE928 -:10A830000121F61D009B009607F0CBFDA18B01EBDB -:10A84000090080B2A083618B884207D9688803B071 -:10A8500052465946BDE8F04F01F0DDB81FD14FF028 -:10A8600009002872B8F802006881D7E90001C5E93B -:10A870000401608BA881284601F054F851465846DF -:10A8800001F062F80146DBF8040008230078C200FA -:10A8900004F1200007F035FF0020A0836083A08929 -:10A8A0000AF0FF02401EA081688800E004E003B0C7 -:10A8B0005946BDE8F04F26E7BDE8FE8F2DE9F0418F -:10A8C000064615460F461C461846F6F7FCFC18B916 -:10A8D0002068F6F71EFD08B1102013E47168688C3B -:10A8E0000978B0EBC10F01D313200BE43946304691 -:10A8F00001F02AF80146706808230078C20005F1CB -:10A90000200007F0C8FED4E90012C0E900120020C0 -:10A91000E3E710B50446032108F036F80146007855 -:10A9200000F00300022805D02046BDE8104001F1E8 -:10A93000140298E48A8A2046BDE81040C7E470B546 -:10A940000446032108F020F8054601462046FFF79B -:10A9500073FD002816D029462046FFF764FE002824 -:10A9600010D029462046FFF722FD00280AD02946AC -:10A970002046FFF7CBFC002804D029462046BDE83E -:10A980007040A9E570BD2DE9F0410C4680461EE0FF -:10A99000E178427811FB02F1CAB2816901230E30DD -:10A9A00007F0AFFE077860681C22C179491EC171AB -:10A9B00007EB8701606802EBC10146183946204663 -:10A9C00000F0D5FF18B1304600F0E0FF20B160681C -:10A9D000C1790029DCD180E7FEF77AFD050000D1BE -:10A9E000FFDF0A202872384600F0A6FF688139464A -:10A9F000204600F0B0FF0146606808234078C2009E -:10AA000006F1240007F07DFED0E90010C5E903102F -:10AA1000A5F80280284600F085FFB07800B9FFDF76 -:10AA2000B078401EB07058E770B50C46054603215B -:10AA300007F0AAFF01464068C2792244C271284645 -:10AA4000BDE870409FE72DE9FE4F824650781446DE -:10AA50000F464FF0000800284FD0012807D00228E9 -:10AA600022D0FFDF2068B8606068F86024E702AB9E -:10AA70000E2208215046FFF79CFB0028F2D00298D6 -:10AA8000152105230170217841700A214180C0F809 -:10AA90000480C0F80880A0F80C80628882810E20B3 -:10AAA000CDE90008082221E0A678304600F044FFF6 -:10AAB000054606EB86012C22786802EBC1010822CC -:10AAC000465A02AB11465046FFF773FB0028C9D027 -:10AAD00002980721017021784170042141800821EA -:10AAE0008580C680CDE9001805230A4639465046C0 -:10AAF000FFF71FFB87F80880DEE6A678022516B16F -:10AB0000022E13D0FFDF2A1D914602AB08215046CA -:10AB1000FFF74FFB0028A5D002980121022E0170FB -:10AB2000217841704580868002D005E00625EAE75D -:10AB3000A188C180E1880181CDE900980523082220 -:10AB400039465046D4E710B50446032107F01CFFF0 -:10AB5000014600F108022046BDE8104073E72DE9E8 -:10AB6000F05F0C4601281DD0957992F80480567943 -:10AB700005EB85011F2202EBC10121F0030B08EB5D -:10AB8000060111FB05F14FF6FF7202EAC10909F156 -:10AB9000030115FB0611F94F21F0031A40B10128FA -:10ABA0003DD124E06168E57891F800804E78DFE7D8 -:10ABB0005946786807F023FD606000B9FFDF594609 -:10ABC00060681AF0C8FDE5705146786807F017FD17 -:10ABD0006168486100B9FFDF6068426902EB090102 -:10ABE0008161606880F800806068467017E0606886 -:10ABF00052464169786807F02DFD5A4661687868C9 -:10AC000007F028FD032007F067FE0446032007F045 -:10AC10006BFE201A012802D1786807F0E5FC0BEBE7 -:10AC20000A00BDE8F09F02460021022097E773B5B5 -:10AC3000D24D0A202870009848B100244FEA0D0038 -:10AC400007F0BFFC002C01D1009969607CBD012494 -:10AC50000020F5E770B50C461546382120461AF05D -:10AC60007AFD012666700A2104F11C001AF073FDBA -:10AC700005B9FFDF297A207861F301002070A879F7 -:10AC8000002817D02A4621460020FFF768FF616898 -:10AC9000402088706168C870616808716168487197 -:10ACA000616888716168288808816168688848815E -:10ACB0006068868170BDC878002802D0002201201B -:10ACC0004DE7704770B50546002165F31F41002030 -:10ACD0000BF074FB0321284607F056FE040000D158 -:10ACE000FFDF21462846FFF767F9002804D02078C7 -:10ACF00040F010002070012070BD2DE9FF4180461A -:10AD00000E460F0CFEF7E4FB050007D06F80032111 -:10AD1000384607F039FE040008D106E004B0384692 -:10AD2000BDE8F0411321F9F74BBEFFDF5FEA0800F1 -:10AD300005D0B8F1060F18D0FFDFBDE8FF812078FD -:10AD40002A4620F0080020700020ADF80200022002 -:10AD50008DF800004FF6FF70ADF80400ADF8060066 -:10AD600069463846F9F723FAE7E7C6F3072101EB0E -:10AD700081021C23606803EBC202805C042803D0BC -:10AD800008280AD0FFDFD8E7012000904FF44043A5 -:10AD90002A46204600F008FECFE704B02A462046A7 -:10ADA000BDE8F041FFF7E7B82DE9F05F0027B0F804 -:10ADB0000A9090460C4605463E46B9F1400F01D236 -:10ADC000402001E0A9F140001FFA80FA287AC01E55 -:10ADD00008286BD2DFE800F00D04192058363C47F4 -:10ADE00072271026002C6CD0D5E90301C4E90201BA -:10ADF0005CE070271226002C63D00A2205F10C01BA -:10AE000004F108001AF04BFC50E071270C26002CCE -:10AE100057D0E868A06049E0742710269CB3D5E9B4 -:10AE20000301C4E902016888032107F0ADFD8346F0 -:10AE3000FEF74EFB02466888508051465846FFF7A1 -:10AE400051F833E075270A26ECB1A88920812DE05E -:10AE500076271426BCB105F10C0004F1080307C8DD -:10AE600083E8070022E07727102664B1D5E90301C3 -:10AE7000C4E902016888032107F086FD014668885D -:10AE8000FFF781FD12E01CE073270826CCB168882B -:10AE9000032107F079FD01460078C00606D56888D1 -:10AEA000FFF78AF810B96888F8F798FDA8F80060ED -:10AEB0002CB12780A4F8069066806888A0800020C6 -:10AEC000AFE6A8F80060FAE72DE9FC410C461E4603 -:10AED00017468046032107F057FD05460A2C0AD283 -:10AEE000DFE804F005050505050509090907042340 -:10AEF00003E0062301E0FFDF0023CDE900762246D0 -:10AF000029464046FFF715F929E438B50546A0F56E -:10AF10007F40FF3830D0284607F068FE040000D19B -:10AF2000FFDF204607F0EDF9002815D001466A46FC -:10AF3000204607F008FA00980321B0F8054028469B -:10AF400007F022FD0546052C03D0402C05D24024F5 -:10AF500004E0007A80B1002038BD403CA4B2214614 -:10AF600000F005FD40B1686804EB84013E2202EB6D -:10AF7000C101405A0028EFD0012038BD2C0000202C -:10AF80002DE9F04F054689B0408807F02FFE0400F8 -:10AF900000D1FFDF06AA2046696800F0C1FC069CCC -:10AFA000001F34F8031F218063886380228881B2E8 -:10AFB0008A4205D1042B0AD0052B1DD0062B15D0B3 -:10AFC0002A462046FFF7CDFB09B0BDE8F08F1646B4 -:10AFD000241D2A4621463046F7F751FA0828F3D1B6 -:10AFE0002A4621463046FCF7FEFBEDE76888211D26 -:10AFF0006B68FAF743FCE7E717466888032107F018 -:10B00000C3FC4FF000088DF804800646ADF80680BA -:10B01000042FD9D36279002AD6D020794FF6FF7950 -:10B020004FF01C0A13282CD008DC012878D0062801 -:10B0300047D0072875D0122874D106E0142872D0A2 -:10B04000152871D016286DD1ACE10C2F6AD130785B -:10B0500000F00301022965D140F0080030706079EA -:10B06000B07001208DF804002089ADF808006089D7 -:10B07000ADF80A00A089ADF80C00E089ADF80E002B -:10B0800019E0B07890429FD1307801079CD5062F07 -:10B090009AD120F0080030706888414660F31F4163 -:10B0A00000200BF08BF902208DF80400ADF8089019 -:10B0B0002089ADF80A0068882A4601A9F9F777F8CF -:10B0C00082E7082F80D12789B4F80A90402F01D257 -:10B0D000402001E0A7F1400080B2804601463046A2 -:10B0E00000F045FC08B3716808EB88002C2202EBE5 -:10B0F000C000095A4945E3D1FE4807AAD0E9021029 -:10B10000CDE9071060798DF81C0008F0FF048DF878 -:10B110001E4068883146FFF796FC2A46214639E0F2 -:10B12000B6E014E03CE039E0E6E0F248D0E9001097 -:10B13000CDE907106079ADF820708DF81C00ADF8EE -:10B140002290688807AA3146FFF77DFC3CE7082F6C -:10B15000B6D16089B4F80880402801D2402000E0D0 -:10B16000403887B23946304600F001FC0028A7D0AD -:10B1700007EB870271680AEBC2000844028A424565 -:10B180009ED1017808299BD140786179884297D176 -:10B19000F9B22A463046FEF7EEFE15E70E2F07D02D -:10B1A000CDF81C80CDF8208060798DF81C00C8E7B0 -:10B1B0006189E7898B46B4F80C903046FEF73DFF75 -:10B1C000ABF14001402901D309204AE0B9F1170F42 -:10B1D00001D3172F01D20B2043E040280ED000EB03 -:10B1E000800271680AEBC20008440178012903D18A -:10B1F000407861798842A9D00A2032E03046FEF7D3 -:10B20000FEFE014640282BD001EB810372680AEB59 -:10B21000C30002EB0008012288F80020627988F858 -:10B220000120706822894089B84200D93846248AB2 -:10B2300003232B72AA82EF812882A5F80C906C82DE -:10B24000084600F079FB6881A8F81490A8F81870F7 -:10B25000A8F80E40A8F810B0284600F063FBB3E64B -:10B26000042005212972A5F80A80E88101212973AB -:10B27000A049D1E90421CDE9072161798DF81C109D -:10B28000ADF81E00688807AA3146FFF7DCFBE3E74C -:10B29000062FE4D3B078904215D13078010712D54B -:10B2A00020F0080030706888414660F31F4100209C -:10B2B0000BF084F802208DF804002089ADF8080016 -:10B2C000ADF80A90F7E604213046FEF7CEFE0446BC -:10B2D0004028C4D00220830300902A4621463046ED -:10B2E00000F062FB4146688864F30F2160F31F4160 -:10B2F00006200BF063F867E60E2FB0D1042130462C -:10B30000FEF7B3FE81464028A9D04146688869F31C -:10B310000F2160F31F4106200BF050F8208A0790A0 -:10B32000E08900907068A7894089B84200D9384602 -:10B330008346B4F80A8020890590484600F0FCFA5C -:10B340006881079840B10220079B00902A46494631 -:10B35000304600F029FB37E6B8F1170F1ED3172F40 -:10B360001CD30420287200986882EF81A5F810B0E1 -:10B37000A5F80C8009EB89020AEBC2007168009AFB -:10B380000C180598A4F81480A4F818B0E281208263 -:10B39000284600F0C7FA0620207015E601200B238E -:10B3A0000090D3E7082FA6D121893046FEF745FE4D -:10B3B000074640289FD007EB870271680AEBC2005E -:10B3C0000844804600F0E9FA002894D16489B8F86E -:10B3D0000E002044B0F5803F05D368883A463146D8 -:10B3E00000F019FBF0E5002C85D0A8F80E00688865 -:10B3F0003A463146FFF7FDF808202872384600F03B -:10B400009BFA6881AC8127E770B50D46064603219B -:10B4100007F0BAFA040004D02078000704D5112000 -:10B4200070BD43F2020070BD2A4621463046FEF749 -:10B430001AFF18B9286860616868A061207840F038 -:10B4400008002070002070BD70B50D46064603212F -:10B4500007F09AFA040004D02078000704D40820EA -:10B4600070BD43F2020070BD2A4621463046FEF709 -:10B470002EFF00B9A582207820F00800207000205F -:10B4800070BD2DE9F04F0E4691B08046032107F0C4 -:10B490007BFA0446404607F0BBFB074600200790B6 -:10B4A00008900990ADF830000A9002900390049043 -:10B4B00004B9FFDF0DF108091FBBFFDF21E03846AB -:10B4C0000BA9002206F0E0FD9DF82C0000F07F059E -:10B4D0000A2D00D3FFDF6019017F491E01779DF817 -:10B4E0002C0000060DD52A460CA907A8FEF711FE70 -:10B4F00002E00000405B020019F80510491C09F841 -:10B500000510761EF6B2DAD204F13400FA4D04F1D9 -:10B51000260BDFF8E8A304F12A07069010E058464E -:10B52000069900F06AFA064628700A2800D3FFDF61 -:10B530005AF8261040468847E08CC05DB04202D0E1 -:10B54000208D0028EBD10A202870EC4D4E4628357E -:10B550000EE00CA907A800F050FA0446375D55F834 -:10B56000240000B9FFDF55F82420394640469047B3 -:10B57000BDF81E000028ECD111B026E510B503215E -:10B5800007F002FA040000D1FFDF0A2104F11C00D9 -:10B590001AF0E1F8207840F00400207010BD10B5DA -:10B5A0000C46032107F0F0F92044007F002800D06A -:10B5B000012010BD2DE9F84F89461546824603212A -:10B5C00007F0E2F9070004D02846F5F77CFE40B901 -:10B5D00003E043F20200BDE8F88F4846F5F799FE14 -:10B5E00008B11020F7E7786828B16988008981429E -:10B5F00001D90920EFE7B9F800001C2418B1402850 -:10B6000009D2402008E03846FEF7F9FC8046402881 -:10B6100019D11320DFE7403880B280460146384612 -:10B6200000F0A5F948B108EB8800796804EBC00088 -:10B63000085C012803D00820CDE70520CBE7FDF703 -:10B6400047FF06000BD008EB8800796804EBC000C8 -:10B650000C18B9F8000020B1E88910B113E01120EE -:10B66000B9E72888172802D36888172801D207204D -:10B67000B1E7686838B12B1D224641463846FFF7CE -:10B680001DF90028A7D104F10C0269462046FFF7F6 -:10B690001BF8288860826888E082B9F8000030B121 -:10B6A00002202070E889A080E889A0B12BE0032067 -:10B6B0002070A889A08078688178402905D180F819 -:10B6C000028039465046FEF721FE404600F034F92C -:10B6D000A9F8000021E07868218B4089884200D9D0 -:10B6E00008462083A6F802A004203072B9F80000B2 -:10B6F0007081E0897082F181208B3082A08AB081D4 -:10B70000304600F00FF97868C178402905D180F8FB -:10B71000038039465046FEF74AFE00205BE770B5CD -:10B720000D460646032107F02FF9040003D0402DF3 -:10B7300004D2402503E043F2020070BD403DADB2AB -:10B74000294600F014F958B105EB85011C22606808 -:10B7500002EBC101084400F020F918B1082070BDC7 -:10B76000052070BD2A462146304600F054F90020DD -:10B7700070BD2DE9F0410D4616468046032107F0C5 -:10B7800003F90446402D01D2402500E0403DADB212 -:10B790008CB1294600F0EBF880B105EB85011C2245 -:10B7A000606802EBC1014718384600F0F6F838B17E -:10B7B0000820BDE8F08143F20200FAE70520F8E72F -:10B7C00033463A4629462046FFF778F80028F0D15C -:10B7D000EAB221464046FEF796FF0020E9E72DE950 -:10B7E000F0410D4616468046032107F0CDF8044689 -:10B7F000402D01D2402500E0403DAFB224B130469B -:10B80000F5F761FD38B902E043F20200D1E7306894 -:10B81000F5F759FD08B11020CBE73946204600F076 -:10B82000A6F860B107EB87011C22606802EBC1013A -:10B830004518284600F0B1F818B10820B9E70520EE -:10B84000B7E7B088A98A884201D90C20B1E76168BE -:10B85000E88C4978B0EBC10F01D31320A9E7394632 -:10B86000204600F078F80146606808234078C2005E -:10B8700005F1240006F00FFFD6E90012C0E900121E -:10B88000FAB221464046FEF7B4FE002091E72DE9CA -:10B89000F0470D461F4690468146032107F074F895 -:10B8A0000446402D01D2402001E0A5F1400086B2BF -:10B8B0003CB14DB13846F5F74AFD50B11020BDE816 -:10B8C000F08743F20200FAE76068C8B1A0F80C8084 -:10B8D00024E03146204600F04AF888B106EB8601A4 -:10B8E0001C22606802EBC1014518284600F055F89B -:10B8F00040B10820E3E700002C000020585B020064 -:10B900000520DCE7A5F80880F2B221464846FEF79C -:10B91000FAFE1FB1A8896989084438800020CEE763 -:10B9200006F011BD017821F00F01491C21F0F00152 -:10B9300010310170FDF7CFBD10B50446402800D985 -:10B94000FFDF4034A0B210BD406842690078484330 -:10B9500002EBC0007047C2784068037812FB03F224 -:10B960004378406901FB032100EBC1007047C278B6 -:10B970008A4209D9406801EB81011C2202EBC10116 -:10B98000405C08B10120704700207047007806280D -:10B9900001D901207047002070470078062801D0A7 -:10B9A0000120704700207047F0B401EB81061C278E -:10B9B000446807EBC6063444049D05262670E380E0 -:10B9C0002571F0BCFEF78EBA10B5418911B1FFF7B1 -:10B9D000DDFF08B1002010BD012010BD10B5C18CE5 -:10B9E0008278B1EBC20F04D9C18911B1FFF7CEFF44 -:10B9F00008B1002010BD012010BD10B50C46012378 -:10BA00000A22011D06F07DFE007821880122824075 -:10BA10009143218010BDF0B402EB82051C264C68D6 -:10BA200006EBC505072363554B681C79402C03D1F1 -:10BA30001A71F0BCFEF700BDF0BC704710B5EFF313 -:10BA4000108000F0010472B6F9484178491C417039 -:10BA50004078012801D10AF0F1F8002C00D162B63B -:10BA600010BD70B5F24CA07848B90125A570FFF75C -:10BA7000E5FF0AF0F4F820B100200AF0BEF800203B -:10BA800070BD4FF08040E570C0F80453F7E770B523 -:10BA9000EFF3108000F0010572B6E54C607800B954 -:10BAA000FFDF6078401E6070607808B90AF0CAF85D -:10BAB000002D00D162B670BDDD4810B5817821B18E -:10BAC0000021C1708170FFF7E2FF002010BD10B5AA -:10BAD00004460AF0C4F8D6498978084000D001200D -:10BAE0002060002010BD10B5FFF7A8FF0AF0B7F8DE -:10BAF00002220123CE49540728B1CE4802602361B7 -:10BB00000320087202E00A72C4F80433002088712E -:10BB100010BD2DE9F05FDFF818934278817889F83D -:10BB20000420002689F80510074689F80660007889 -:10BB3000DFF804B3354620B1012811D0022811D016 -:10BB4000FFDF0AF09EF84FF0804498B10AF0A0F8A9 -:10BB5000B0420FD130460AF09FF80028FAD041E0F9 -:10BB60000126EEE7FFF76AFF58460168C907FCD0D7 -:10BB70000226E6E70120E060C4F80451AF490E60F8 -:10BB80000107D1F84412AD4AC1F3423124321160A9 -:10BB9000AA49343108604FF0020AC4F804A3A06037 -:10BBA000A7480168C94341F3001101F10108016888 -:10BBB00041F01001016000E020BFD4F8040100282A -:10BBC000FAD030460AF068F80028FAD0B8F1000F31 -:10BBD00004D19B48016821F010010160C4F808A35A -:10BBE000C4F8045199F805004E4688B1387878B900 -:10BBF0000AF035F880460AF0C9F901466FF00042B4 -:10BC0000B8F1000F02D0C6E9032101E0C6E9031232 -:10BC1000DBF80000C00701D00AF01DF8387810B139 -:10BC20003572BDE8F09F4FF01808C4F80883C4F8D7 -:10BC30002C510127C4F81870D4F82C010028FBD02F -:10BC4000C4F80C51C4F810517948C01D0AF036F8F8 -:10BC50003570FFF748FF6761784930792031086017 -:10BC6000C4F80483DDE770B5050000D1FFDF4FF0B5 -:10BC700080424FF0FF30C2F808030021C2F80011E3 -:10BC8000C2F80411C2F80C11C2F81011684C6170AE -:10BC900009F0F1FF10B10120A070607066480068E3 -:10BCA000C00701D009F0D7FF2846BDE8704030E753 -:10BCB0005F48007A002800D0012070472DE9FF5F1F -:10BCC0006048D0F800805F4A5F49083211608406FE -:10BCD000D4F8080100B10120D4F8241101B10121E8 -:10BCE0008A46D4F81C1101B101218946D4F82011EB -:10BCF00009B1012700E00027D4F8001101B10121AA -:10BD00008B46D4F8041101B101210391D4F80C1130 -:10BD100001B101210291D4F8101101B10121444D6A -:10BD2000019129780026009120B1C4F80861012012 -:10BD300009F063FFBAF1000F04D0C4F824610920B0 -:10BD400009F05BFFB9F1000F04D0C4F81C610A20B0 -:10BD500009F053FF27B1C4F820610B2009F04DFF13 -:10BD60003348C01D09F0B2FF00B1FFDFDFF8C49017 -:10BD70000127BBF1000F10D0C4F80873E87818B1A0 -:10BD8000EE70002009F039FF287A022805D103203F -:10BD900028720221C9F800102761039808B1C4F87D -:10BDA0000461029850B1C4F80C61287A032800D0CD -:10BDB000FFDFC9F800602F72FFF769FE019838B104 -:10BDC000C4F81061287A012801D100F05DF867619C -:10BDD000009838B12E70287A012801D1FFF783FE30 -:10BDE000FFF755FE1248C01D09F086FF1549091DD1 -:10BDF000C1F80080BDE8FF9F0D4810B5C01D09F0D7 -:10BE000065FF0B4940B1012008704FF0E021C1F8F7 -:10BE10000002BDE8104011E6087A012801D1FFF7C1 -:10BE200062FE0348BDE81040C01D09F065BF000078 -:10BE30003C000020340C00400C0400401805004079 -:10BE400010ED00E0100502400100000170B5224C29 -:10BE5000A07808B909F0F6FE01208507A861207ACC -:10BE6000002603280AD100BFD5F80C0120B9002014 -:10BE700009F012FF0028F7D1C5F80C6126724FF0C7 -:10BE8000FF30C5F8080370BD70B5134C6079F0B190 -:10BE9000012803D0A179401E814218DA09F0DFFEA3 -:10BEA00005460AF073F86179012902D9A179491C84 -:10BEB000A1710DB1216900E0E168411A022902DA9D -:10BEC00011F1020F06DC0DB1206100E0E060BDE879 -:10BED000704008E670BD00003C00002010B5202036 -:10BEE00000F07FF8202000F08DF84D49202081F8E7 -:10BEF0000004F5F783FA4B4908604B48D0F8041367 -:10BF000041F00101C0F80413D0F8041341F080712E -:10BF1000C0F80413424901201C39C1F8000110BDCA -:10BF200010B5202000F05DF83E480021C8380160BF -:10BF3000001D01603D4A481E10603B4AC2F80803DC -:10BF4000384B1960C2F80001C2F860013849086036 -:10BF5000BDE81040202000F055B834493548091F8D -:10BF60000860704731493348086070472D48C83829 -:10BF70000160001D521E026070472C4901200860BC -:10BF8000BFF34F8F70472DE9F0412849D0F8188052 -:10BF900028480860244CD4F800010025244E6F1E68 -:10BFA00028B14046F5F788F940B9002111E0D4F8EE -:10BFB000600198B14046F5F77FF948B1C4F80051E7 -:10BFC000C4F860513760BDE8F041202000F01AB895 -:10BFD00031684046BDE8F04119F0E8BBFFDFBDE83D -:10BFE000F08100280DDB00F01F0201219140400983 -:10BFF000800000F1E020C0F88011BFF34F8FBFF345 -:10C000006F8F7047002809DB00F01F02012191406B -:10C010004009800000F1E020C0F880127047000065 -:10C0200020E000E0C806024000000240180502407F -:10C0300000040240010000010F4A12680D498A42C3 -:10C040000CD118470C4A12680A4B9A4206D101B526 -:10C0500009F06EFFFFF781FFBDE80140074909685D -:10C060000958084706480749054A064B704700002B -:10C0700000000000BEBAFECA5400002004000020E8 -:10C080008013002080130020F8B51D46DDE9064727 -:10C090000E000AD006F0BCFD2346FF1DBCB231469F -:10C0A0002A46009406F0C9F9F8BDD019224619466F -:10C0B00019F0B0FA2046F8BD70B50D4604461021BF -:10C0C00019F027FB258117206081A07B40F00A0032 -:10C0D000A07370BD4FF6FF720A80014602200AF07D -:10C0E0006DB9704700897047827BD30701D19207F1 -:10C0F00003D4808908800020704705207047827B28 -:10C10000920700D58181704701460020098841F6D9 -:10C11000FE52114200D00120704700B50346807BDB -:10C12000C00701D0052000BD59811846FFF7ECFF7C -:10C13000C00703D0987B40F004009873987B40F0D0 -:10C1400001009873002000BD827B520700D509B121 -:10C150004089704717207047827B61F3C302827366 -:10C1600070472DE9FC5F0E46044601789646012093 -:10C1700000FA01F14DF6FF5201EA020962684FF63A -:10C18000FF7B1188594502D10920BDE8FC9FB9F118 -:10C19000000F05D041F6FE55294201D00120F4E7F9 -:10C1A00041EA090111801D0014D000232B7094F87E -:10C1B00000C0052103221F464FF0020ABCF10E0FFA -:10C1C00076D2DFE80CF0F909252F47646B774791A9 -:10C1D00093B4D1D80420D8E7616820898B7B9B0772 -:10C1E00067D517284AD30B89834247D389891729F2 -:10C1F00001D3814242D185F800A0A5F80100328028 -:10C20000616888816068817B21F002018173C6E0EA -:10C21000042028702089A5F801006089A5F8030092 -:10C220003180BCE0208A3188C01D1FFA80F841456A -:10C2300024D3062028702089A5F801006089A5F87C -:10C240000300A089A5F805000721208ACDE9000197 -:10C25000636941E00CF0FF00082810D00820287026 -:10C260002089A5F801006089A5F8030031806A1DC6 -:10C27000694604F10C0008F033F910B15EE01020BB -:10C28000EDE730889DF800100844308087E00A20F0 -:10C2900028702089A5F80100328044E00C20287025 -:10C2A0002089A5F801006089A5F8030031803AE0F3 -:10C2B00082E064E02189338800EB41021FFA82F8B2 -:10C2C00043453BD3B8F1050F38D30E222A700BEA51 -:10C2D0004101CDE90010E36860882A467146FFF706 -:10C2E000D3FEA6F800805AE040202870608931888B -:10C2F000C01C1FFA80F8414520D32878714620F0F1 -:10C300003F00123028702089A5F801006089CDE92E -:10C31000000260882A46E368FFF7B6FEA6F80080B0 -:10C32000287840063BD461682089888037E0A0895E -:10C330003288401D1FFA80F8424501D204273DE0B3 -:10C34000162028702089A5F801006089A5F803004F -:10C35000A089CDE9000160882A4671462369FFF76C -:10C3600093FEA6F80080DEE718202870207A687017 -:10C37000A6F800A013E061680A88920401D405279A -:10C380001CE0C9882289914201D0062716E01E21AF -:10C39000297030806068018821F400510180B9F172 -:10C3A000000F0BD0618878230022022009F05CFF87 -:10C3B00061682078887006E0338003276068018810 -:10C3C00021EA090101803846DFE62DE9FF4F85B0FB -:10C3D0001746129C0D001E461CD03078C10703D0B2 -:10C3E00000F03F00192801D9012100E0002120467A -:10C3F000FFF7AAFEA8420DD32088A0F57F41FF39A0 -:10C4000008D03078410601D4000605D5082009B0CF -:10C41000BDE8F08F0720FAE700208DF800008DF8C6 -:10C42000010030786B1E00F03F0C0121A81E4FF078 -:10C43000050A4FF002094FF0030B9AB2BCF1200F2E -:10C4400075D2DFE80CF08B10745E7468748C749C89 -:10C4500074B674BB74C974D574E2747474F274F0F5 -:10C4600074EF74EE748B052D78D18DF80090A07860 -:10C470008DF804007088ADF8060030798DF8010061 -:10C48000707800F03F000C2829D00ADCA0F10200EF -:10C49000092863D2DFE800F0126215621A621D6299 -:10C4A0002000122824D004DC0E281BD01028DBD159 -:10C4B0001BE016281FD01828D6D11FE0207880074F -:10C4C00001E020784007002848DAEFE020780007F4 -:10C4D000F9E72078C006F6E720788006F3E72078B1 -:10C4E0004006F0E720780006EDE72088C005EAE77F -:10C4F00020884005E7E720880005E4E72088C0049D -:10C50000E1E72078800729D5032D27D18DF800B0E9 -:10C51000B6F8010082E0217849071FD5062D1DD30A -:10C5200081B27078012803D0022817D102E0CAE056 -:10C53000022000E0102004228DF8002072788DF88F -:10C540000420801CB1FBF0F2ADF8062092B2424309 -:10C550008A4203D10397ADF80890A7E07AE02078EB -:10C56000000777D598B282088DF800A0ADF80420B6 -:10C57000B0EB820F6ED10297ADF8061096E02178ED -:10C58000C90667D5022D65D381B206208DF800005B -:10C59000707802285ED300BFB1FBF0F28DF8040082 -:10C5A000ADF8062092B242438A4253D1ADF80890CA -:10C5B0007BE0207880064DD5072003E020784006F8 -:10C5C0007FD508208DF80000A088ADF80400ADF8F4 -:10C5D0000620ADF8081068E02078000671D5092023 -:10C5E000ADF804208DF80000ADF8061002975DE06C -:10C5F0002188C90565D5022D63D381B20A208DF843 -:10C600000000707804285CD3C6E72088400558D520 -:10C61000012D56D10B208DF80000A088ADF8040044 -:10C6200044E021E026E016E0FFE72088000548D539 -:10C63000052D46D30C208DF80000A088ADF804002D -:10C64000B6F803006D1FADF80850ADF80600ADF860 -:10C650000AA02AE035E02088C00432D5012D30D16F -:10C660000D208DF8000021E02088800429D4B6F840 -:10C670000100E080A07B000723D5032D21D3307873 -:10C6800000F03F001B2818D00F208DF800002088F4 -:10C6900040F40050A4F80000B6F80100ADF8040022 -:10C6A000ED1EADF80650ADF808B003976946059841 -:10C6B000F5F730FC050008D016E00E208DF80000DC -:10C6C000EAE7072510E008250EE0307800F03F008B -:10C6D0001B2809D01D2807D00220059909F06EFEFD -:10C6E000208800F400502080A07B400708D5204619 -:10C6F000FFF70AFDC00703D1A07B20F00400A07360 -:10C70000284684E61FB5022806D101208DF80000D6 -:10C7100088B26946F5F7FEFB1FBD0000F8B51D465F -:10C72000DDE906470E000AD006F072FA2346FF1D27 -:10C73000BCB231462A46009405F07FFEF8BDD01900 -:10C740002246194618F066FF2046F8BD2DE9FF4F36 -:10C750008DB09B46DDE91B57DDF87CA00C46082B0D -:10C7600005D0E06901F002F950B11020D2E028882C -:10C77000092140F0100028808AF80010022617E0F6 -:10C78000E16901208871E2694FF420519180E169EB -:10C790008872E06942F601010181E069002181733C -:10C7A0002888112140F0200028808AF800100426F3 -:10C7B00038780A900A2038704FF0020904F1180006 -:10C7C0004D460C9001F095FBB04681E0BBF1100F97 -:10C7D0000ED1022D0CD0A9EB0800801C80B20221E2 -:10C7E000CDE9001005AB52461E990D98FFF796FF54 -:10C7F000BDF816101A98814203D9F74800790F90B6 -:10C8000004E003D10A9808B138702FE04FF002011C -:10C81000CDE900190DF1160352461E990D98FFF748 -:10C820007DFF1D980088401B801B83B2C6F1FF006E -:10C83000984200D203461E990BA8D9B15FF00002BE -:10C84000DDF878C0CDE9032009EB060189B2CDE916 -:10C8500001C10F980090BDF8161000220D9801F04C -:10C86000CBFB387070B1C0B2832807D0BDF816007A -:10C8700020833AE00AEB09018A19E1E7022011B0AE -:10C88000BDE8F08FBDF82C00811901F0FF08022DE2 -:10C890000DD09AF80120424506D1BDF82010814202 -:10C8A00007D0B8F1FF0F04D09AF801801FE08AF892 -:10C8B0000180C94800680178052902D1BDF8161029 -:10C8C000818009EB08001FFA80F905EB080085B2AA -:10C8D000DDE90C1005AB0F9A01F00EFB28B91D988D -:10C8E0000088411B4145BFF671AF022D13D0BBF14B -:10C8F000100F0CD1A9EB0800801C81B20220CDE9F9 -:10C90000000105AB52461E990D98FFF707FF1D98D1 -:10C910000580002038700020B1E72DE9F8439C46DF -:10C92000089E13460027B26B9AB3491F8CB2F18F51 -:10C93000A1F57F45FF3D05D05518AD882944891DD7 -:10C940008DB200E000252919B6F83C800831414538 -:10C9500020D82A44BCF8011022F8021BBCF80310AE -:10C9600022F8021B984622F8024B914606F03EF947 -:10C970004FF00C0C41464A462346CDF800C005F066 -:10C9800028FDF587B16B00202944A41D21440880AF -:10C9900003E001E0092700E083273846BDE8F8837B -:10C9A00010B50B88848F9C420CD9846BE0180488E6 -:10C9B00044B1848824F40044A41D23440B801060F7 -:10C9C000002010BD0A2010BD2DE9F0478AB00025D7 -:10C9D000904689468246ADF8185007274BE00598E7 -:10C9E00006888088000446D4A8F8006007A801954E -:10C9F00000970295CDE903504FF4007300223146B1 -:10CA0000504601F0F9FA04003CD1BDF81800ADF829 -:10CA10002000059804888188B44216D10A0414D4F1 -:10CA200001950295039521F400410097049541F486 -:10CA3000804342882146504601F0B4F804000BD1EF -:10CA40000598818841F40041818005AA08A94846DB -:10CA5000FFF7A6FF0400DCD000970598029501952A -:10CA6000039504950188BDF81C300022504601F062 -:10CA700099F80A2C06D105AA06A94846FFF790FFA7 -:10CA80000400ACD0ADF8185004E00598818821F47A -:10CA90000041818005AA06A94846FFF781FF0028CA -:10CAA000F3D00A2C03D020460AB0BDE8F08700205E -:10CAB000FAE710B50C46896B86B051B10C218DF8A0 -:10CAC0000010A18FADF80810A16B01916946FAF72B -:10CAD00022FB00204FF6FF71A063E187A08706B01C -:10CAE00010BD2DE9F0410D460746896B0020069EDA -:10CAF0001446002911D0012B0FD132462946384661 -:10CB0000FFF762FF002808D1002C06D032462946E4 -:10CB10003846BDE8F04100F038BFBDE8F0812DE9AE -:10CB2000FC411446DDE9087C0E46DDE90A15521D7C -:10CB3000BCF800E092B2964502D20720BDE8FC8125 -:10CB4000ACF8002017222A70A5F80160A5F8033080 -:10CB50000522CDE900423B462A46FFF7DFFD0020D3 -:10CB6000ECE770B50C4615464821204618F0F3FD59 -:10CB700004F1080044F81C0F00204FF6FF71E0613B -:10CB800061842084A5841720E08494F82A0040F072 -:10CB90000A0084F82A0070BD4FF6FF720A80014631 -:10CBA000032009F00BBC30B585B00C460546FFF7F5 -:10CBB00080FFA18E284629B101218DF80010694619 -:10CBC000FAF7A9FA0020E0622063606305B030BD87 -:10CBD000B0F84000704700005800002090F8462050 -:10CBE000920703D4408808800020F3E70620F1E78D -:10CBF00090F846209207EDD5A0F84410EAE70146E8 -:10CC0000002009880A0700D5012011F0F00F01D09B -:10CC100040F00200CA0501D540F004008A0501D5A4 -:10CC200040F008004A0501D540F010000905D1D5B3 -:10CC300040F02000CEE700B5034690F84600C0075C -:10CC400001D0062000BDA3F842101846FFF7D7FF19 -:10CC500010F03E0F05D093F8460040F0040083F832 -:10CC6000460013F8460F40F001001870002000BD88 -:10CC700090F84620520700D511B1B0F84200A9E75C -:10CC80001720A7E710F8462F61F3C3020270A1E74F -:10CC90002DE9FF4F9BB00E00DDE92B34DDE929784B -:10CCA000289D24D02878C10703D000F03F00192820 -:10CCB00001D9012100E000212046FFF7D9FFB04251 -:10CCC00015D32878410600F03F010CD41E290CD062 -:10CCD000218811F47F6F0AD13A8842B1A1F57F42D1 -:10CCE000FF3A04D001E0122901D1000602D5042048 -:10CCF0001FB0C5E5F9491D984FF0000A08718DF87D -:10CD000018A08DF83CA00FAA0A60ADF81CA0ADF8E1 -:10CD100050A02978994601F03F02701F5B1C04F176 -:10CD2000180C4FF0060E4FF0040BCDF858C01F2A18 -:10CD30007ED2DFE802F07D7D107D267DAC7DF47D26 -:10CD4000F37DF27DF17DF47DF07D7D7DEF7DEE7DE7 -:10CD50007D7D7D7DED0094F84610B5F801008907D2 -:10CD600001D5032E02D08DF818B022E34FF40061F4 -:10CD7000ADF85010608003218DF83C10ADF84000F4 -:10CD8000D8E2052EEFD1B5F801002083ADF81C00E4 -:10CD9000B5F80310618308B1884201D901207FE111 -:10CDA0000020A07220814FF6FF702084169801F0B9 -:10CDB000A0F8052089F800000220029083460AAB03 -:10CDC0001D9A16991B9801F097F890BB9DF82E00BC -:10CDD000012804D0022089F80100102003E001207E -:10CDE00089F8010002200590002203A90BA807F092 -:10CDF00077FBE8BB9DF80C00059981423DD13A884C -:10CE0000801CA2EB0B01814237DB02990220CDE9A5 -:10CE100000010DF12A034A4641461B98FFF77EFCAC -:10CE200002980BF1020B801C80B217AA03A901E043 -:10CE3000A0E228E002900BA807F052FB02999DF8AF -:10CE40000C00CDE9000117AB4A4641461B98FFF79D -:10CE500065FC9DF80C100AAB0BEB01001FFA80FB80 -:10CE600002981D9A084480B2029016991B9800E01F -:10CE700003E001F041F80028B6D0BBF1020F02D068 -:10CE8000A7F800B053E20A208DF818004FE2002105 -:10CE90000391072EFFF467AFB5F801002083ADF8CA -:10CEA0001C00B5F80320628300283FF477AF90425E -:10CEB0003FF674AF0120A072B5F805002081002074 -:10CEC000A073E06900F052FD78B9E1690120887132 -:10CED000E2694FF420519180E1698872E06942F67D -:10CEE00001010181E06900218173F01F20841E98F7 -:10CEF000606207206084169800F0FBFF072089F825 -:10CF000000000120049002900020ADF82A0028E0E3 -:10CF10001DE2A3E13AE1EAE016E2AEE086E049E094 -:10CF20000298012814D0E0698079012803D1BDF866 -:10CF30002800ADF80E00049803ABCDE900B04A46D6 -:10CF400041461B98FFF7EAFB0498001D80B204904D -:10CF5000BDF82A00ADF80C00ADF80E00059880B2BF -:10CF600002900AAB1D9A16991B9800F0C5FF28B9CC -:10CF700002983988001D05908142D1D2029801287B -:10CF800081D0E0698079012805D0BDF82810A1F58D -:10CF90007F40FF3803D1BDF82800ADF80E0004989B -:10CFA00003ABCDE900B04A4641461B98FFF7B6FBFC -:10CFB0000298BBE1072E02D0152E7FF4D4AEB5F84F -:10CFC00001102183ADF81C10B5F8032062830029FD -:10CFD0003FF4E4AE91423FF6E1AE0121A1724FF081 -:10CFE000000BA4F808B084F80EB0052E07D0C0B22C -:10CFF000691DE26907F055FA00287FF444AF4FF647 -:10D00000FF70208401A906AA14A8CDF800B081E819 -:10D0100085032878214600F03F031D9A1B98FFF7EF -:10D0200095FB8246208BADF81C0080E10120032E89 -:10D03000C3D14021ADF85010B5F801102183ADF8EF -:10D040001C100AAAB8F1000F00D00023CDE902039A -:10D0500004921D98CDF80480009038880022401E6C -:10D0600083B21B9800F0C8FF8DF8180090BB0B200E -:10D0700089F80000BDF8280037E04FF0010C052EBC -:10D080009BD18020ADF85000B5F801102183B5F890 -:10D0900003002084ADF81C10B0F5007F03D90720F1 -:10D0A0008DF8180085E140F47C4222840CA8B8F188 -:10D0B000000F00D00023CDE90330CDE9018C1D988D -:10D0C00000903888401E83B21B9800F095FF8DF8C1 -:10D0D000180028B18328A8D10220BDE05800002004 -:10D0E0000D2189F80010BDF83000401C1EE1032E10 -:10D0F00004D248067FF537AE002017E1B5F80110DD -:10D10000ADF81C102878400602D58DF83CE002E00E -:10D1100007208DF83C004FF000080320CDE90208FD -:10D120001E9BCDF810801D980193A6F1030B009073 -:10D130001FFA8BF342461B9800F034FD8DF818005F -:10D140008DF83C80297849060DD52088C00506D584 -:10D15000208BBDF81C10884201D1C4F824804046C1 -:10D160008DF81880E2E0832801D14FF0020A4FF4D5 -:10D170008070ADF85000BDF81C002083A4F820B0EA -:10D180001E986062032060841321CCE0052EFFF41A -:10D19000EAADB5F80110ADF81C10A28F62B3A2F58C -:10D1A0007F43FE3B28D008228DF83C204FF0000B37 -:10D1B0000523CDE9023BDDF878C0CDF810B01D9A0B -:10D1C00080B2CDF804C040F400430092B5F80320CB -:10D1D0001B9800F0E7FC8DF83CB04FF400718DF81F -:10D1E0001800ADF85010832810D0F8B1A18FA1F528 -:10D1F0007F40FE3807D0DCE00B228DF83C204FF654 -:10D20000FE72A287D2E7A4F83CB0D2E000942B468D -:10D2100031461E9A1B98FFF780FB8DF8180008B165 -:10D2200083284BD1BDF81C00208355E700942B4682 -:10D2300031461E9A1B98FFF770FB8DF81800E8BB6B -:10D24000E18FA06B0844811D8DE8820343888288AA -:10D2500001881B98FFF763FC824668E095F801801F -:10D26000022E70D15FEA080002D0B8F1010F6AD136 -:10D2700009208DF83C0007A800908DF840804346B7 -:10D28000002221461B98FFF72CFC8DF842004FF03E -:10D29000000B8DF843B050B9B8F1010F12D0B8F1BE -:10D2A000000F04D1A18FA1F57F40FF380AD0A08FD5 -:10D2B00040B18DF83CB04FF4806000E037E0ADF84D -:10D2C00050000DE00FA91B98F9F725FF82468DF855 -:10D2D0003CB04FF48060ADF85000BAF1020F06D0B8 -:10D2E000FC480068C07928B18DF8180027E0A4F840 -:10D2F000188044E0BAF1000F03D081208DF81800A7 -:10D300003DE007A800904346012221461B98FFF705 -:10D31000E8FB8DF8180021461B98FFF7CAFB9DF823 -:10D32000180020B9192189F80010012038809DF8D3 -:10D330003C0020B10FA91B98F9F7EDFE8246BAF127 -:10D34000000F33D01BE018E08DF818E031E02078B2 -:10D35000000712D5012E10D10A208DF83C00E0887C -:10D36000ADF8400003201B9909F028F80820ADF81B -:10D370005000C1E648067FF5F6AC4FF0040A20885D -:10D38000BDF8501008432080BDF8500080050BD533 -:10D39000A18FA1F57F40FE3806D11E98E062289843 -:10D3A0002063A6864FF0030A5046A1E49DF81800BA -:10D3B00078B1012089F80000297889F80110BDF8BA -:10D3C0001C10A9F802109DF8181089F80410052007 -:10D3D00038802088BDF8501088432080E4E72DE98C -:10D3E000FF4F8846087895B0012181404FF209002F -:10D3F000249C0140ADF820102088DDF88890A0F52D -:10D400007F424FF0000AFF3A06D039B1000705D538 -:10D41000012019B0BDE8F08F0820FAE7239E4FF0F5 -:10D42000000B0EA886F800B018995D460988ADF883 -:10D430003410A8498DF81CB0179A0A718DF838B0CD -:10D44000086098F8000001283BD0022809D0032882 -:10D450006FD1307820F03F001D303070B8F80400F4 -:10D46000E08098F800100320022904D1317821F0DF -:10D470003F011B31317094F84610090759D505ABAF -:10D48000B9F1000F13D0002102AA82E80B00072097 -:10D49000CDE90009BDF83400B8F80410C01E83B20D -:10D4A0000022159800F0A8FD0028D1D101E0F11C60 -:10D4B000EAE7B8F80400A6F80100BDF81400C01CA3 -:10D4C00004E198F805108DF81C1098F80400012864 -:10D4D00006D04FF4007A02282CD00328B8D16CE192 -:10D4E0002188B8F8080011F40061ADF8201020D0B0 -:10D4F00017281CD3B4F84010814218D3B4F8441054 -:10D50000172901D3814212D1317821F03F01C91C82 -:10D510003170A6F801000321ADF83410A4F84400DE -:10D5200094F8460020F0020084F8460065E10525E5 -:10D530007EE177E1208808F1080700F4FE60ADF88D -:10D54000200010F0F00F1BD010F0C00F03D038886F -:10D55000228B9042EBD199B9B878C00710D0B96846 -:10D560000720CDE902B1CDF804B00090CDF810B09D -:10D57000FB88BA883988159800F014FB0028D6D1AA -:10D580002398BDF82010401C80294ED006DC1029BD -:10D590000DD020290BD0402987D124E0B1F5807F20 -:10D5A0006ED051457ED0B1F5806F97D1DEE0C806D0 -:10D5B00001D5082000E0102082460DA907AA052009 -:10D5C000CDE902218DF83800ADF83CB0CDE90496E4 -:10D5D00008A93888CDE9000153460722214615984D -:10D5E000FFF7B4F8A8E09DF81C2001214FF00A0ACB -:10D5F000002A9BD105ABB9F1000F00D00020CDE986 -:10D6000002100720CDE90009BDF834000493401E44 -:10D6100083B2218B0022159800F0EEFC8DF81C00DF -:10D620000B203070BDF8140020E09DF81C20012173 -:10D630004FF00C0A002A22D113ABB9F1000F00D031 -:10D640000020CDE902100720CDE900090493BDF8C0 -:10D650003400228C401E83B2218B159800F0CCFC44 -:10D660008DF81C000D203070BDF84C00401CADF84A -:10D67000340005208DF83800208BADF83C00BCE06C -:10D680003888218B88427FF452AF9DF81C004FF000 -:10D69000120A00281CD1606AA8B1B878C0073FF40C -:10D6A00046AF00E018E0BA680720CDE902B2CDF835 -:10D6B00004B00090CDF810B0FB88BA88159800F03F -:10D6C00071FA8DF81C00132030700120ADF8340081 -:10D6D00093E00000580000203988208B8142D2D18D -:10D6E0009DF81C004FF0160A0028A06B08D0E0B38C -:10D6F0004FF6FF7000215F46ADF808B0019027E0BB -:10D7000068B1B978C907BED1E18F0DAB0844821D5D -:10D7100003968DE80C0243888288018809E0B87876 -:10D72000C007BCD0BA680DAB03968DE80C02BB886D -:10D73000FA881598FFF7F3F905005ED0072D72D02F -:10D7400076E0019005AA02A92046FFF729F90146D3 -:10D75000E28FBDF80800824201D00029F1D0E08FAD -:10D76000A16B084407800198E08746E09DF81C0003 -:10D770004FF0180A40B1208BC8B138882083214669 -:10D780001598FFF796F938E004F118000090237E11 -:10D79000012221461598FFF7A4F98DF81C000028F6 -:10D7A000EDD1192030700120ADF83400E7E70525F0 -:10D7B00021461598FFF77DF93AE0208800F40070C3 -:10D7C000ADF8200050452DD1A08FA0F57F41FE3946 -:10D7D00001D006252CE0D8F808004FF0160A48B111 -:10D7E000A063B8F80C10A1874FF6FF71E187A0F88D -:10D7F00000B002E04FF6FF70A087BDF8200030F4C3 -:10D800007F611AD0782300220320159908F02CFD9F -:10D8100098F8000020712088BDF82010084320806F -:10D820000EE000E007252088BDF820108843208006 -:10D83000208810F47F6F1CD03AE02188814321803A -:10D840009DF8380020B10EA91598F9F764FC05463B -:10D850009DF81C000028EBD086F801A00120307054 -:10D86000208B70809DF81C0030710520ADF83400CD -:10D87000DEE7A18EE1B118980DAB0088ADF8340059 -:10D880002398CDE90304CDE90139206B0090E36AC8 -:10D89000179A1598FFF7FCF9054601208DF8380016 -:10D8A0000EA91598F9F737FC00B10546A4F834B075 -:10D8B00094F8460040070AD52046FFF7A0F910F07B -:10D8C0003E0F04D114F8460F20F004002070189881 -:10D8D000BDF83410018028469BE500B585B00328CB -:10D8E00006D102208DF8000088B26946F9F713FCD2 -:10D8F00005B000BD10B5384C0B782268012B02D062 -:10D90000022B2AD111E013780BB1052B01D104238E -:10D91000137023688A889A802268CB88D380226813 -:10D920000B891381498951810DE08B88938022688E -:10D93000CB88D38022680B8913814B8953818B89D3 -:10D940009381096911612168F9F7E5FB22680021DB -:10D950000228117003D0002800D0812010BD832040 -:10D9600010BD806B002800D001207047817801290C -:10D9700009D10088B0F5205F03D042F6010188424A -:10D9800001D10020704707207047F0B587B0002410 -:10D9900015460E460746ADF8184011E00598008878 -:10D9A000288005980194811DCDE902410721049446 -:10D9B0000091838842880188384600F0F3F830B936 -:10D9C00005AA06A93046FEF7EBFF0028E6D00A2894 -:10D9D00000D1002007B0F0BD5800002010B58B78B2 -:10D9E00083B102789A4205D10B885BB102E08B7952 -:10D9F000091D4BB18B789A42F9D1B0F801300C88EF -:10DA0000A342F4D1002010BD812010BD072826D0EC -:10DA100012B1012A27D103E0497801F0070102E0A1 -:10DA20004978C1F3C20105291DD2DFE801F00318CE -:10DA3000080C12000AB10320704702207047042826 -:10DA40000DD250B10DE0052809D2801E022808D35E -:10DA500003E0062803D0032803D0052070470020E8 -:10DA600070470F20704781207047C0B282060BD4E8 -:10DA7000000607D5FE48807A4143C01D01EBD00067 -:10DA800080B27047084670470020704770B5138811 -:10DA90000B800B781C0625D5F54CA47A844204D85B -:10DAA00043F010000870002070BD956800F0070674 -:10DAB00005EBD0052D78F54065F304130B70137852 -:10DAC000D17803F0030341EA032140F20123B1FBC3 -:10DAD000F3F503FB15119268E41D00FB012000EB38 -:10DAE000D40070BD906870BD37B51446BDF8041001 -:10DAF00011809DF804100A061ED5C1F30013DC49FD -:10DB0000A568897A814208D8FE2811D1C91DC908A3 -:10DB10005A42284617F0F5FD0AE005EBD00100F067 -:10DB20000702012508789540A843934018430870E0 -:10DB3000207820F0100020703EBD2DE9F04107460E -:10DB4000C81C0E4620F00300B04202D08620BDE87B -:10DB5000F081C74D002034462E60AF802881AA7224 -:10DB6000E8801AE0E988491CE980810614D4E1784C -:10DB700000F0030041EA002040F20121B0FBF1F285 -:10DB800001FB12012068FFF770FF2989084480B269 -:10DB90002881381A3044A0600C3420784107E1D441 -:10DBA0000020D4E72DE9FF4F89B01646DDE9168A3B -:10DBB0000F46994623F44045084600F00DFB04004B -:10DBC0000FD0099804F0A6FE0290207800060AD52E -:10DBD000A748817A0298814205D887200DB0BDE818 -:10DBE000F08F0120FAE7224601A90298FFF74EFFC5 -:10DBF000834600208DF80C004046B8F1070F1AD07C -:10DC000001222146FFF702FF0028E7D120784006D5 -:10DC100011D502208DF80C00ADF81070BDF804008D -:10DC2000ADF81200ADF814601898ADF81650CDF8A4 -:10DC30001CA0ADF818005FEA094004D500252E4667 -:10DC4000A84601270CE02178E07801F0030140EAC2 -:10DC5000012040F20121B0FBF1F2804601FB128766 -:10DC60005FEA494009D5B84507D1A178207901F08C -:10DC7000030140EA0120B04201D3BE4201D907208E -:10DC8000ACE7A8191FFA80F9B94501D90D20A5E71D -:10DC90009DF80C0028B103A90998F9F73AFA002871 -:10DCA0009CD1B84507D1A0784FEA192161F3010052 -:10DCB000A07084F804901A9800B10580199850EA71 -:10DCC0000A0027D0199830B10BEB06002A461999A3 -:10DCD00017F0A0FC0EE00BEB06085746189E0998BB -:10DCE00004F084FF2B46F61DB5B239464246009536 -:10DCF00004F06FFB224601A90298FFF7C7FE9DF8CA -:10DD00000400224620F010008DF80400DDE9011027 -:10DD1000FFF7EAFE002061E72DE9FF4FDFF85091A1 -:10DD200082461746B9F80610D9F8000001EB410108 -:10DD300000EB810440F20120B2FBF0F185B000FB62 -:10DD400011764D46DDF84C8031460698FFF78DFE82 -:10DD500029682A898B46611A0C3101441144AB8829 -:10DD600089B28B4202D8842009B038E70699CDB237 -:10DD7000290603D5A90601D50620F5E7B9F806C09E -:10DD80000CF1010C1FFA8CFCA9F806C0149909B11A -:10DD9000A1F800C0A90602D5C4F8088007E0104425 -:10DDA00080B2A9F80800191A01EB0B00A060224606 -:10DDB000FE200699FFF798FEE77026712078390A51 -:10DDC00061F30100320AA17840F0040062F301011E -:10DDD000A17020709AF802006071BAF80000E0802B -:10DDE00000262673280602D599F80A7000E001275C -:10DDF000A80601D54FF000084D4600244FF0070952 -:10DE00000FE0CDE902680196CDF800900496E9880C -:10DE10002046129B089AFFF7C5FE0028A4D1641C77 -:10DE2000E4B2BC42EDD300209EE72DE9F0478046E6 -:10DE300000F0D2F9070005D0002644460C4D40F210 -:10DE4000012919E00120BDE8F087204600F0C4F95F -:10DE50000278C17802F0030241EA0222B2FBF9F330 -:10DE600009FB13210068FFF700FE304486B201E091 -:10DE7000F4050020641CA4B2E988601E8142E4DC41 -:10DE8000A8F10100E8802889801B288100203870D3 -:10DE9000D9E710B5144631B1491E218004F03AFD8E -:10DEA000A070002010BD012010BD10B5D24904465D -:10DEB0000088CA88904201D30A2010BD096800EB8F -:10DEC000400001EB80025079A072D08820819178C7 -:10DED000107901F0030140EA0120A081A078E11C43 -:10DEE000FFF7D4FD20612088401C2080E0800020C6 -:10DEF00010BD0121018270472DE9FF4F85B04FF61B -:10DF0000FF788246A3F8008048681F460D46807857 -:10DF10008DF8060048680088ADF8040000208DF8F0 -:10DF20000A00088A0C88A04200D304462C8241E0F3 -:10DF3000288A401C2882701D6968FFF74FFDB8BB16 -:10DF40003988414501D1601E38806888A04236D3A7 -:10DF5000B178307901F0030140EA012901A9701D6F -:10DF6000FFF73CFD20BB298941452CD000223146DA -:10DF70000798FFF74BFDD8B92989494518D1E968B9 -:10DF80000391B5F80AC0D6F808B05046CDF800C0E5 -:10DF900004F02CFEDDF800C05A460CF1070C1FFA05 -:10DFA0008CFC4B460399CDF800C004F0DCF950B16D -:10DFB000641CA4B2204600F00FF90600B8D1641E1C -:10DFC0002C820A20D0E67C807079B871F088B88005 -:10DFD0003178F07801F0030140EA01207881A7F858 -:10DFE0000C90504604F096FC324607F10801FFF70A -:10DFF0004DFD38610020B7E62DE9FF4F87B081461F -:10E000001C469246DDF860B0DDF85480089800F0B8 -:10E01000E3F805000CD0484604F07CFC297809069A -:10E0200008D57549897A814204D887200BB0D6E596 -:10E030000120FBE7CAF309062A4601A9FFF726FDDE -:10E040000746149807281CD000222946FFF7DEFC5B -:10E050000028EBD12878400613D501208DF8080060 -:10E060000898ADF80C00BDF80400ADF80E00ADF84E -:10E070001060ADF8124002A94846F9F74AF80028A6 -:10E08000D4D12978E87801F0030140EA0121AA7887 -:10E09000287902F0030240EA0220564507D0B1F584 -:10E0A000007F04D9611E814201DD0B20BEE786425C -:10E0B00001D90720BAE7801B85B2A54200D92546C1 -:10E0C000BBF1000F01D0ABF80050179818B1B91987 -:10E0D0002A4617F09FFAB8F1000F0DD03E4448468B -:10E0E0004446169F04F094FD2146FF1DBCB2324603 -:10E0F0002B46009404F0A1F9002097E72DE9F041A8 -:10E1000007461D461646084600F066F804000BD088 -:10E11000384604F0FFFB2178090607D53649897A8D -:10E12000814203D8872012E5012010E522463146BE -:10E13000FFF7ACFC65B12178E07801F0030140EA1B -:10E140000120B0F5007F01D8012000E000202870F8 -:10E150000020FCE42DE9F04107461D46164608461E -:10E1600000F03AF804000BD0384604F0D3FB2178D5 -:10E17000090607D52049897A814203D88720E6E439 -:10E180000120E4E422463146FFF7AEFCFF2D14D017 -:10E190002178E07801F0030240EA022040F20122F7 -:10E1A000B0FBF2F302FB130015B900F2012080B2BC -:10E1B000E070000A60F3010121700020C7E410B58F -:10E1C0000C4600F009F828B1C18821804079A07080 -:10E1D000002010BD012010BD0749CA88824209D322 -:10E1E00040B1096800EB40006FF00B0202EB8000C9 -:10E1F0000844704700207047F405002010B508F06F -:10E20000C3FAF4F753FB08F025F9BDE8104008F015 -:10E21000EDB9302834BF012000207047202834BFDA -:10E220004FF0A0420C4A012300F01F0003FA00F057 -:10E23000002914BFC2F80C05C2F808057047202851 -:10E2400034BF4FF0A041044900F01F00012202FA40 -:10E2500000F0C1F8180570470003005070B5034680 -:10E26000002002466FF02F050EE09C5CA4F1300602 -:10E270000A2E02D34FF0FF3070BD00EB800005EB9B -:10E280004000521C2044D2B28A42EED370BD30B559 -:10E290000A230BE0B0FBF3F403FB1404B0FBF3F030 -:10E2A0008D183034521E05F8014CD2B2002AF1D13B -:10E2B00030BD30B500234FF6FF7510E0040A44EA84 -:10E2C000002084B2C85C6040C0F30314604005EADB -:10E2D00000344440E0B25B1C84EA40109BB293429D -:10E2E000ECD330BD2DE9F041FA4B0026012793F81D -:10E2F00060501C7893F864C0B8B183F88D40A3F8DF -:10E300008E1083F88C2083F88A70BCF1000F0CBF4C -:10E3100083F8906083F89050EF488068008804F09C -:10E3200065FCBDE8F04104F0FBB84FF6FF7083F8E0 -:10E330008D40A3F88E0083F88C2083F88A70BCF19E -:10E34000000F14BF83F8905083F89060BDE8F0810F -:10E3500070B5E14E0446306890F898100025012908 -:10E3600019D090F89210012924D090F86810012952 -:10E370002AD090F88A1001291CBF002070BD65705A -:10E3800017212170D0F88C106160B0F890102181B5 -:10E3900080F88A5016E065701C212170D0F8991021 -:10E3A0006160D0F89D10A16090F8A110217380F8F1 -:10E3B000985007E0657007212170D0F894106160D3 -:10E3C00080F89250012070BD65701421217000F119 -:10E3D0006A012022201D17F01DF9012121723068E9 -:10E3E00080F86850BB48B0F86C20A0F89420B26860 -:10E3F000537B80F8963080F89210108804F0F6FB7A -:10E4000004F09DF8DEE7B448006890F86810002931 -:10E4100014BFB0F86C004FF6FF70704770B5AE4C8B -:10E4200006462068002808BFFFDF002520684570E9 -:10E430006660002808BFFFDF2068417800291CBF04 -:10E44000FFDF70BDA42117F086F92068FF2101705D -:10E450007F2180F8361013214184282180F865102F -:10E46000012180F8581080F85D5008F0C3FDBDE828 -:10E47000704008F01CB898490968097881420CBFBF -:10E480000120002070479448006890F82200C0F3F3 -:10E49000400070479048006890F8220000F00100AA -:10E4A00070478D48006890F82200C0F30010704754 -:10E4B0002DE9F04388480024036893F82400B3F85A -:10E4C00022C0C0F38001C0F34002114400F00100FB -:10E4D0000144CCF3001060B3BCF1130F21D00BDC6E -:10E4E000BCF1100F02BF7D4830F81100BDE8F08389 -:10E4F000BCF1120F15D008E0BCF1150F09D0BCF12A -:10E500001D0F04BF7648BDE8F083FFDF2046BDE85D -:10E51000F083744A002032F8112011FB0020BDE87E -:10E52000F083714A002032F8112011FB0020BDE871 -:10E53000F08393F85A2093F85B002E264FF47A77F5 -:10E540004FF014084FF04009022A04BF4AF2D745A1 -:10E55000B5FBF7F510D0012A04BF4AF22F75B5FBC1 -:10E56000F7F510D04AF62315B5FBF7F5082A08BFD2 -:10E570004E4613D0042A18D02646082A0ED0042A64 -:10E5800013D0022A49D004F12806042A0FD0082A01 -:10E590001CBF4FF01908082204D00AE04FF01408FD -:10E5A00006F5A8764FF0400203E006F5A8764FF096 -:10E5B000100218FB026212FB0152C1EB01114B4D1C -:10E5C00001EB810105EB810111441CF0010F4FF4B7 -:10E5D000C8724FF4BF7504BFCCF34006002E77D04D -:10E5E000CCF3400601F5A571EEB1082804BF16462C -:10E5F00040270CD0042804BF2E46102707D002283D -:10E6000007BF04F11806042704F12806082707EBC2 -:10E61000870706EB870631441CE004F118064FF02B -:10E6200019080422C5E7082804BF164640270CD065 -:10E63000042804BF2E46102707D0022807BF04F184 -:10E640001806042704F12806082707EB871706EBAE -:10E650008706314401F19C0693F8651010F00C0F09 -:10E6600008BF00213144082804BF164640270CD0BB -:10E67000042804BF2E46102707D0022807BF04F144 -:10E680001806042704F128060827C7EBC70707EB7D -:10E69000470706EB4706314498311CF0010F27D09D -:10E6A000082808BF40200CD0042804BF2A461020A8 -:10E6B00007D0022807BF04F11802042004F1280241 -:10E6C000082000EB400303EB0010104401444AE033 -:10E6D0004DE000000006002060000020BC5B02004E -:10E6E0008E891300C45B0200B45B0200D4FEFFFFFE -:10E6F000082804BF944640260CD0042804BFAC462A -:10E70000102607D0022807BF04F1180C042604F1D4 -:10E71000280C082606EB86169B8F0CEB860C6144B2 -:10E72000EB2B20D944F2552C0B3303FB0CF39B0D40 -:10E73000082807D0042802D0022805D008E02A467D -:10E74000102008E0402006E004F11802042002E056 -:10E7500004F12802082000EB801002EB800000F595 -:10E76000A57003FB001101F26510BDE8F08301F50F -:10E77000A571082804BF944640260CD0042804BF85 -:10E78000AC46102607D0022807BF04F1180C042657 -:10E7900004F1280C082606EB8616B3F844300CEB7F -:10E7A000860C6144EB2BDED944F2552C0B3303FB72 -:10E7B0000CF39B0D0828C5D00428C0D00228C7D16F -:10E7C000C2E7FE4840F271210068806A4843704702 -:10E7D000FA48006890F83500002818BF01207047FB -:10E7E00010B5F74C207B022818BF032808D1207DE4 -:10E7F00004F115010DF023FC08281CBF012010BDF9 -:10E80000207B002816BF022800200120BDE8104010 -:10E8100009F054B9EA4908737047E849096881F872 -:10E82000300070472DE9F047E44C2168087B002850 -:10E8300016BF022800200120487301F10E0109F0E3 -:10E8400027F92168087B022816BF0328012200222D -:10E8500081F82F204FF0080081F82D00487B01F14E -:10E860000E034FF001064FF00007012804BF5B794B -:10E8700013F0C00F0AD001F10E03012804D158791A -:10E8800000F0C000402801D0002000E0012081F805 -:10E890002E00002A04BF91F8220010F0040F07D0C8 -:10E8A000087D01F115010DF0CAFB216881F82D00EA -:10E8B0002068476006F0AAF92168C14D4FF00009B1 -:10E8C000886095F82D000DF0D6FB804695F82F0056 -:10E8D000002818BFB8F1000F04D095F82D000DF0F6 -:10E8E00091F968B195F8300000281CBF95F82E000A -:10E8F00000281DD0697B05F10E0001290ED012E021 -:10E900006E734A4605F10E01404609F016F995F876 -:10E910002D1005F10E000DF0A5FC09E0407900F086 -:10E92000C000402831D0394605F10E0009F03CF90D -:10E930002068C77690F8220010F0040F08BFBDE8E9 -:10E94000F087002795F82D000DF010FA050008BF9C -:10E95000BDE8F08710210EF0C8F9002818BFBDE807 -:10E96000F08720683A4600F11C01C676284609F077 -:10E97000E4F8206800F11C0160680EF0DBFD6068BF -:10E98000BDE8F04701210EF0F0BD0DF0A8FC4A46AD -:10E9900005F10E0109F0D1F8CAE7884A1268137B25 -:10E9A0000370D2F80E000860508A8880704778B5EE -:10E9B00083490446814D407B08732A682078107093 -:10E9C0006088ADF8000080B200F00101C0F34003A0 -:10E9D00041EA4301C0F3800341EA8301C0F3C0036D -:10E9E00041EAC301C0F3001341EA0311C0F340132D -:10E9F00041EA4311C0F3801041EA80105084E07D69 -:10EA0000012808BF012607D0022808BF022603D02C -:10EA1000032814BFFFDF0826286880F85A60607E4C -:10EA2000012808BF012607D0022808BF022603D00C -:10EA3000032814BFFFDF0826286880F85B60217B6D -:10EA400080F82410418C1D290CBF0021616881626F -:10EA5000617D80F83510A17B002916BF02290021B5 -:10EA600001210175D4F80F10C0F81510B4F8131077 -:10EA7000A0F81910A17EB0F8662061F30302A0F897 -:10EA80006620E17E012918BF002180F834100020A3 -:10EA900078BD4A480068408CC0F3001131B1C0F322 -:10EAA0008000002804BF1F20704702E0C0F340012F -:10EAB00009B10020704710F0010F14BFEE20FF20B5 -:10EAC00070473E480068408CC0F3001119B1C0F394 -:10EAD000800028B102E0C0F3400008B10020704778 -:10EAE000012070473549002209680A664B8C1D2BAE -:10EAF0000CBF81F8642081F86400704700232F4A1E -:10EB0000126882F859309164A2F84C00012082F812 -:10EB100059007047294A0023126882F85830A2F839 -:10EB200054000120116582F8580070472349096894 -:10EB300081F85D0070472148006890F95D007047DA -:10EB40001E48006890F82200C0F3401070471B4830 -:10EB5000006890F82200C0F3C000704701207047A1 -:10EB60001648006890F85B00704770B508F02CFA02 -:10EB700008F00BFA08F00EF908F08CF90F4C206839 -:10EB8000016E491C016690F83300002530B108F091 -:10EB900031FA07F08CFC206880F83350206845700B -:10EBA00090F8371021B1BDE87040042009F06BBC2B -:10EBB00090F8641001B3006E814203E06000002011 -:10EBC0000006002018D8042009F05DFC206890F8A9 -:10EBD000220010F0010F07D0A06843220188BDE891 -:10EBE00070400120FFF77EBBBDE8704043224FF626 -:10EBF000FF710020FFF776BBBDE87040002009F0F0 -:10EC000042BC2DE9F04782B00F468146FE4E4FF0E0 -:10EC100000083068458C15F0030F10D015F0010F77 -:10EC200005F0020005D0002808BF4FF0010806D00B -:10EC300004E0002818BF4FF0020800D1FFDF4FF0BA -:10EC4000000A544615F0010F05F002000DD080B9FE -:10EC500015F0040F0DD04AF00800002F1CBF40F043 -:10EC6000010040F0020440D08FE010B115F0040F15 -:10EC70000DD015F0070F10D015F0010F05F00200B0 -:10EC800036D0002808BF15F0040F27D03DE0002F34 -:10EC900018BF4AF0090478D134E02FB14AF00804D3 -:10ECA00015F0200F14D070E0316805F02002B1F8A3 -:10ECB0004400104308BF4AF0010466D04AF018042B -:10ECC00015F0200F61D191F85A10082959D155E05B -:10ECD000316891F85A10082950D152E04AF00800E2 -:10ECE000002F18BF40F001044FD140F010044CE059 -:10ECF000002818BF15F0040F07D0002F18BF4AF0E6 -:10ED00000B0442D14AF018043FE015F0030F3BD149 -:10ED100015F0040F38D077B131684AF0080091F847 -:10ED20005A1008290CBF40F0020420F0020415F02C -:10ED3000200F21D029E0316805F02002B1F844000D -:10ED4000104308BF4AF003041FD04AF0180015F022 -:10ED5000200F08D091F85A10082914BF40F002047F -:10ED600020F0020411E091F85A20082A14BF40F064 -:10ED7000010020F00100EDE7082902D024F0010491 -:10ED800003E044F0010400E0FFDF15F0400F1BD06A -:10ED9000C7B93168B1F84400002804BF488C10F0AE -:10EDA000010F0BD110F0020F08BF10F0200F05D19A -:10EDB00015F0010F08BF15F0020F03D091F85A00AB -:10EDC000082801D044F040047068A0F800A0017841 -:10EDD00021F02001017007210EF078FB4146706898 -:10EDE0000EF06BFD214670680EF073FD14F0010FFC -:10EDF0000AD006230022854970680EF044FD306871 -:10EE0000417B70680EF0A4FB14F0020F18D0D6E915 -:10EE10000010B9F1000F4FF006034FF0010207D0C8 -:10EE20001C310EF030FD012170680EF09EFB07E0F2 -:10EE300015310EF028FD3068017D70680EF095FBED -:10EE400014F0040F18BFFFDF14F0080F17D0CDF82F -:10EE500000A03068BDF800100223B0F86600020977 -:10EE600062F30B01ADF800109DF80110032260F36E -:10EE700007118DF80110694670680EF004FD012F2E -:10EE800061D13068B0F84410E9B390F82200C0F3C3 -:10EE90004000C0BB70680EF00CFD401CC7B230686B -:10EEA000B0F84420B0F85610551AC7F1FF018D4252 -:10EEB000A8BF0D46AA423AD990F8220010F0010FDF -:10EEC00035D144F01004214670680EF002FDF81CA4 -:10EED000C0B2ED1E284482B23068B0F86610036EEE -:10EEE000090951FA83F190F85C30494F1944BC4646 -:10EEF0000023E1FB07C31B096FF0240C03FB0C117B -:10EF000080F85C1000E01EE090F85B00012101F049 -:10EF100037F80090BDF800009DF80210032340EA86 -:10EF200001400190042201A970680EF0ACFC306829 -:10EF3000AAB2016C70680EF0FAFC3068B0F8561096 -:10EF40002944A0F8561014F0400F06D0D6E900105E -:10EF5000012306225D310EF096FC14F0200F18BF3D -:10EF6000FFDF0020002818BFFFDF02B0BDE8F087F8 -:10EF70002DE9F843244C2068002808BFFFDF2068F3 -:10EF8000417839BB0178FF2924D0002680F8316010 -:10EF9000A0F85660867080F83760304607F08EFF24 -:10EFA00007F0B3FC206890F95D0007F048FD1948B0 -:10EFB00007F04BFD184807F067FF606807F081FF16 -:10EFC000206890F8240010F0010F06D0252007F0EB -:10EFD00044FD09E00C20BDE8F88310F0020F18BFD3 -:10EFE000262075D007F039FD206890F85A102520AA -:10EFF00007F049FC206880F82C6007F059FF206872 -:10F0000090F85A10002009E0600000200E06002051 -:10F0100053E4B36EB05B0200AD5B020007F07BFD12 -:10F020000F21052007F0DFFC206890F82E10002942 -:10F0300001BF90F82F10002990F8220010F0040F63 -:10F0400075D005F0E3FD054620682946806806F086 -:10F05000F9FADFF83084074690FBF8F008FB1070EF -:10F060004142284605F0D3FA2168886097FBF8F002 -:10F070004A68104448600CF0DFFF0146206842688F -:10F0800091426FD8C0E90165FF4D4FF0010895F836 -:10F090002D000CF0F0FF814695F82F000127002885 -:10F0A00018BFB9F1000F04D095F82D000CF0AAFD9F -:10F0B000A8B195F8300000281CBF95F82E00002854 -:10F0C00025D0697B05F10E00012916D01AE0FFE773 -:10F0D00010F0040F14BF2720FFDF83D184E73A46E6 -:10F0E0006F7305F10E01484608F027FD95F82D10C5 -:10F0F00005F10E000DF0B6F809E0407900F0C0000F -:10F10000402815D0414605F10E0008F04DFD20685D -:10F1100090F8220010F0040F24D095F82D000CF088 -:10F1200025FE05001ED010210DF0DFFD40B119E0D5 -:10F130000DF0D5F83A4605F10E0108F0FEFCE6E7C1 -:10F1400020683A4600F11C01C776284608F0F5FC15 -:10F15000206800F11C0160680EF0ECF90121606884 -:10F160000EF003FA2068417B0E3007F020FC206887 -:10F1700090F8581059B3B0F85410A0F84410016D2D -:10F18000016490F82210C1F30011E9B9B0F86600EB -:10F1900002210509ADF80050684606F011FE28B1BD -:10F1A000BDF80000C0F30B00A84204D1BDF8000078 -:10F1B000401CADF800002168BDF80000B1F86620E1 -:10F1C00060F30F12A1F86620206880F8586020686C -:10F1D00090F8591031B1B0F84C108187816C81637F -:10F1E00080F85960B0F86610026E090951FA82F190 -:10F1F00090F85C20DFF894C2114463460022E1FBE2 -:10F200000C3212096FF0240302FB031180F85C102A -:10F210000CF095FF032160680DF014F8216881F867 -:10F2200033000020BDE8F8839949886070472DE9D4 -:10F23000F043974C83B0226892F831303BB1508C48 -:10F240001D2808BFFFDF03B0BDE8F0438DE40126B1 -:10F250000027F1B1054692F85C0007F0FEFB20683C -:10F2600090F85B10FF2007F00EFB20684FF4A571AB -:10F2700090F85B20002007F050FD206890F82210E5 -:10F2800011F0030F00F02E81002D00F0258100F019 -:10F2900029B992F822108046D07EC1F300110029CE -:10F2A00056D0054660680780017821F02001017082 -:10F2B000518C132937D01FDC102908BF022144D0FC -:10F2C000122908BF062140D0FFDF6F4D606805F1AD -:10F2D0000E010EF021F9697B60680EF039F92068A3 -:10F2E000418C1D2918BF152965D0B0F84420016C48 -:10F2F00060680EF046F95EE0152918BF1D29E3D1BC -:10F300004FF001010EF0E2F86068017841F0200151 -:10F310000170216885B11C310EF00CF90121606883 -:10F320000EF023F9D1E700210EF0D0F860680178E3 -:10F3300041F020010170C8E715310EF0FBF820689C -:10F34000017D60680EF011F9BFE70EF0BFF8BCE771 -:10F350000021FFF756FC6068C17811F03F0F2AD0FA -:10F36000017911F0100F26D00EF0AEF82368024696 -:10F3700093F82410C1F38000C1F3400C604401F005 -:10F38000010100EB010C93F82C10C1F38000C1F3D4 -:10F390004005284401F001010844ACEB0000C1B273 -:10F3A00093F85A0000F0ECFD009003230422694614 -:10F3B00060680EF068FA2068002590F8241090F834 -:10F3C0002C0021EA000212F0010F18BF01250ED116 -:10F3D00011F0020F04D010F0020F08BF022506D072 -:10F3E00011F0040F03D010F0040F08BF0425B8F18A -:10F3F000000F2BD0012D1BD0022D08BF26201BD0C3 -:10F40000042D14BFFFDF272016D0206890F85A1073 -:10F41000252007F038FA206890F82210C1F3001177 -:10F4200069B101224FF49671002007F076FC0DE0DF -:10F43000252007F012FBE8E707F00FFBE5E790F85F -:10F440005A204FF49671002007F067FC206890F86E -:10F450002C10294380F82C1090F8242032EA010166 -:10F460001DD04670418C13292CD027DC102904BFF5 -:10F4700003B0BDE8F083122924D000BFC1F300100F -:10F48000002807E040420F000006002053E4B36E5E -:10F490006000002018BFFFDF03B0BDE8F083418C9F -:10F4A0001D2908BF80F82C70DBD0C1F300110029A2 -:10F4B00014BF80F8316080F83170D2E7152918BF89 -:10F4C0001D29DBD190F85A2003B04FF00101BDE8AF -:10F4D000F043084607F002BE90F85B200121084681 -:10F4E00007F0FCFD2168002DC87E7CD04A8C3D468B -:10F4F000C2F34000002808BF47F0080512F0400F93 -:10F5000018BF45F04005002819BFD1F83890B1F870 -:10F510003C80D1F84090B1F84480606807210780B2 -:10F520000DF0D4FF002160680EF0C7F9294660682D -:10F530000EF0CFF915F0080F15D02068BDF80010B7 -:10F540000223B0F86600020962F30B01ADF8001067 -:10F550009DF80110032260F307118DF80110694630 -:10F5600060680EF090F960680EF06CF82168C0F1E8 -:10F57000FE00B1F85620A8EB02018142A8BF014667 -:10F58000CFB2D019404542D245F0100160680EF06C -:10F59000A0F960680EF056F82168C0F1FE00B1F8DD -:10F5A0005610A8EB01018142A8BF0146CFB26068A6 -:10F5B0000EF07FF93844421C2068B0F86610036EE4 -:10F5C000090951FA83F190F85C30FF4D1944AC46BB -:10F5D0000023E1FB05C31B096FF0240C03FB0C1196 -:10F5E00080F85C1000E038E090F85B00012100F04A -:10F5F000C7FC0090BDF800009DF80210032340EA0C -:10F6000001400190042201A960680EF03CF92168D4 -:10F6100091F8220010F0400F05D0012306225D3141 -:10F6200060680EF030F920683A46B0F8560000EBFA -:10F63000090160680EF07BF92068B0F85610394473 -:10F64000A0F8561008F0D0F8002818BFFFDF206897 -:10F650004670867003B0BDE8F0830121FFF7D1FA50 -:10F66000F0E7DA4810B50068417841B90078FF2822 -:10F6700005D000210846FFF7DAFD002010BD07F095 -:10F68000A3FC07F082FC07F085FB07F003FC0C20CD -:10F6900010BD10B5CD4C206890F8220010F0010F7D -:10F6A0001CBFA06801884FF03C0212BF01204FF63A -:10F6B000FF710020FEF716FE2168012081F8370057 -:10F6C00010BDC249096881F8320070472DE9F04148 -:10F6D000002508F0A4FE002800F00581BB4C20683E -:10F6E000417801270026012906D0022901D00329EB -:10F6F0007ED0FFDFBDE8F081817802260029418CB1 -:10F7000046D0C1F34002002A08BF11F0010F70D0AB -:10F7100090F85B204FF001014FF0000007F0DEFC95 -:10F72000216891F82200C0F34000002814BF0C208B -:10F73000222091F85B1007F0A6F82068467090F838 -:10F74000330058B106F09FFE206890F85B0010F07F -:10F750000C0F0CBF4020452007F042FC206890F8B9 -:10F760003400002818BF07F089FC216891F85B007D -:10F7700091F8651010F00C0F08BF0021962007F0DB -:10F78000C1FB08F028F8002818BFFFDFBDE8F081B2 -:10F79000C1F3001282B110293FD090F8330020B19C -:10F7A00006F071FE402007F01BFC206890F8221044 -:10F7B00011F0040F36D043E090F8242090F82C305C -:10F7C0009A422AD1B0F84400002808BF11F0010F76 -:10F7D00005D111F0020F08BF11F0200F7ED04FF0BD -:10F7E00001014FF00000FFF722FD2068418C01E08D -:10F7F00040E034E011F0010F04BFC1F340010029E3 -:10F8000007D1B0F85610B0F84420914218BFBDE8B7 -:10F81000F08180F83170BDE8F081BDE8F041002151 -:10F82000012004E590F83510012914BF03291025A3 -:10F8300045F00E0190F85A204FF0000007F04EFC02 -:10F84000206890F83400002818BF07F017FC00214A -:10F85000962007F057FB20684670BDE8F081B0F8AD -:10F860005610B0F8440081423DD0BDE8F04101217E -:10F870000846DCE48178D9B1418C11F0010F1CD02D -:10F8800080F8687090F86A20B0F86C100120FEF7DC -:10F8900029FD2068467007F097FB07F076FB07F01C -:10F8A00079FA07F0F7FABDE8F041032008F0EBBD64 -:10F8B0008178BDE8F0410120B9E411F0020F04BFE6 -:10F8C000FFDFBDE8F081B0F85610808F81420AD08A -:10F8D00001210846FFF7ABFC032000E003E02168AC -:10F8E0004870BDE8F081BDE8F041FFF73EB9FFF791 -:10F8F0003CB910B5354C206890F8341049B1363019 -:10F9000007F0CBFB18B921687F2081F8360007F09B -:10F91000ABFB206890F8330018B107F06BFB06F0E2 -:10F92000C6FD08F07CFDA8B1206890F82210C1F354 -:10F93000001179B14078022818BFFFDF00210120B3 -:10F94000FFF775FC2068417800291EBF4078012828 -:10F95000FFDF10BDBDE81040FFF707B92DE9F04704 -:10F960001A4C0F4680462168B8F1030F488C08BF37 -:10F97000C0F3400508D000F0010591F832000028DE -:10F9800018BF4FF0010901D14FF0000907F059F8F5 -:10F990000646B8F1030F0CBF4FF002084FF0010804 -:10F9A00035EA090008BFBDE8F087206890F8330009 -:10F9B00090B10CF0A7FB38700146FF280CD06068AE -:10F9C000C01C0CF078FB03E053E4B36E6000002031 -:10F9D00038780CF0A4FB064360680178C1F380120C -:10F9E00021680B7D9A4208D10622C01C153115F002 -:10F9F000E5FD002808BF012000D000203978FF294C -:10FA000006D0C8B9206890F82D00884216D113E0BE -:10FA1000A0B1616811F8030BC0F380100CF00FFB6C -:10FA200005460CF06FFC38B128460CF09FF918B170 -:10FA300010210DF05AF908B1012000E000202168E2 -:10FA400091F8221011F0040F01D0F0B11AE0CEB9F4 -:10FA5000FE4890F83500002818BF404515D1616870 -:10FA600011F8030BC0F380100CF0E9FA04460CF017 -:10FA700049FC38B120460CF079F918B110210DF08D -:10FA800034F910B10120BDE8F0870020BDE8F0870F -:10FA90002DE9F04FEE4D074683B0286800264078E8 -:10FAA000022818BFFFDF28684FF07F0990F8341054 -:10FAB00049B1363007F0F1FA002804BF286880F811 -:10FAC000369007F0D1FA68680DF022FD0446002F49 -:10FAD00000F0048268680DF0A6FE002800F0FE81A8 -:10FAE00006F07DFF002800F0F981FF20DFF864B305 -:10FAF000DFF8588300274FF0010A062C80F00082BF -:10FB0000DFE804F0EFEFEF03EFF78DF80000694650 -:10FB10000320FFF723FF002800F0E480296891F814 -:10FB2000340010B191F89800D0B12868817801298B -:10FB30004CD06868042107800DF0C8FC08F10E0164 -:10FB400068680DF0E9FC98F80D1068680DF000FD8C -:10FB50002868828F816B68680DF037FD00F04DB921 -:10FB60009DF8000081F898A00A7881F89920FF2874 -:10FB70000FD001F19B029A310CF086FA002808BFE1 -:10FB8000FFDF286890F89A1041F0020180F89A107F -:10FB90000DE068680278C2F3801281F89A20D0F8EC -:10FBA0000320C1F89B20B0F80700A1F89F00286847 -:10FBB00000F1A10490F836007F2808BFFFDF286815 -:10FBC00090F83610217080F83690AEE790F8220059 -:10FBD0009BF80490C0F38014686864F386190721C9 -:10FBE00007800DF073FC002168680DF066FE494641 -:10FBF00068680DF06EFE0623002208F10E016868A9 -:10FC00000DF041FE2868417B68680DF0A1FC686832 -:10FC10000DF018FD29688A8FC0F1FE018A42B8BF35 -:10FC20001146CFB2BA423DD9F81EC7B249F0100A08 -:10FC3000514668680DF04DFE68680DF03AFE384494 -:10FC4000431C2868B0F86610026E090951FA82F167 -:10FC500090F85C20DFF800920A44C8464FF0000C90 -:10FC6000E2FB098C4FEA1C116FF0240C01FB0C2104 -:10FC700080F85C1090F85B001A46012100F080F9D2 -:10FC80000190BDF804009DF80610032340EA0140EE -:10FC90000290042202A968680DF0F5FD51466868DB -:10FCA0000DF017FE34B1D5E90010012306225D31B5 -:10FCB0000DF0E9FD28683A46816B68680DF037FE63 -:10FCC0002868A0F85670818F8F420CBF0121002157 -:10FCD00080F8311007F088FD002818BFFFDF8CE0A6 -:10FCE00007E00DE128688078002840F0F98000F0F6 -:10FCF000F5B88DF8000068680178C1F38019D0F874 -:10FD000003100191B0F80700ADF80800694605201E -:10FD1000FFF724FE0028286873D08178002972D06C -:10FD200090F85BA0D5E90104D0F80F10C4F80E10CC -:10FD3000B0F813106182417D2175817D6175B0F845 -:10FD40001710E182B0F819106180B0F81B10A18083 -:10FD5000B0F81D10E18000F11F0104F1080015F05A -:10FD60000EFE686890F8241001F01F01217690F8CB -:10FD70002400400984F86C0184F854A084F855A04C -:10FD8000286890F8651084F8561090F85D0084F8A3 -:10FD900057009DF80010A86800F05BF9022008F0F9 -:10FDA00072FB6868DBF800400DF1040A0780082147 -:10FDB0000DF08CFB002168680DF07FFD214668681E -:10FDC0000DF087FD0623002208F10E0168680DF092 -:10FDD0005AFD2868417B68680DF0BAFB494668689F -:10FDE0000DF0C3FB06230122514668680DF04BFD60 -:10FDF00007F0FAFC002818BFFFDF032029684870CD -:10FE000070E066E0FFE76868AC684FF001080278D0 -:10FE1000617BC2F3401211406173D0F80F10C4F837 -:10FE20000E10B0F813106182417D2175817D6175DE -:10FE3000B0F81710E182B0F819106180B0F81B100B -:10FE4000A180B0F81D10E18008E00000000600204D -:10FE500060000020A85B020053E4B36E00F11F01B4 -:10FE600004F1080015F08BFD686890F8241001F08B -:10FE70001F01217690F82400400984F86C0184F871 -:10FE8000548084F85580286890F8651084F85610DE -:10FE900090F85D0084F857009DF80010A86800F005 -:10FEA000D8F8286880F868A090F86A20B0F86C103C -:10FEB0000120FEF717FA2868477007F085F807F069 -:10FEC00064F806F067FF06F0E5FF012008F0DBFAB2 -:10FED00008E090F82200C0F3001008B1012601E00C -:10FEE000FEF743FE286890F8330018B107F082F857 -:10FEF00006F0DDFA66B100210120FFF798F910E065 -:10FF0000286890F82200C0F300100028E8D0E5E748 -:10FF100028688178012904D190F85B10FF2006F051 -:10FF2000B2FC28684178002919BF4178012903B043 -:10FF3000BDE8F08F4078032818BFFFDF03B0BDE8AD -:10FF4000F08F70B57E4C06460D462068807858B11B -:10FF500006F04FFC21680346304691F85B202946A5 -:10FF6000BDE8704009F042B806F043FC2168034642 -:10FF7000304691F85A202946BDE8704009F036B85D -:10FF800078B50C4600210091082804BF4FF4C870D2 -:10FF900040210DD0042804BF4FF4BF70102107D0BA -:10FFA000022807BF01F11800042101F128000821EF -:10FFB000521D02FB010562489DF80010006890F890 -:10FFC0005C2062F3050141F040068DF8006090F876 -:10FFD0005B00012828D002282DD0082818BFFFDF99 -:10FFE0002FD000BF26F080008DF80000C4EB041075 -:10FFF00000EB80001E2101EB800005FB040451484A -:020000040001F9 -:10000000844228BFFFDF5048A0FB0410BDF8011058 -:10001000000960F30C01ADF80110BDF800009DF877 -:10002000021040EA014078BD9DF8020020F0E00097 -:100030008DF80200D6E79DF8020020F0E0002030A5 -:1000400004E09DF8020020F0E00040308DF802004E -:10005000C8E72DE9F0413A4D04460E46286890F86D -:100060006800002818BFFFDF0027286880F86A7042 -:100070002188A0F86C106188A0F88210A188A0F8EF -:100080008410E188A0F8861094F86C1180F888102C -:1000900090F82F1049B1427B00F10E01012A04D1E2 -:1000A000497901F0C001402934D090F8301041B1B5 -:1000B000427B00F10E01012A04BF497911F0C00F03 -:1000C00028D000F1760015F051FC6868FF2E017809 -:1000D000C1F380116176D0F80310C4F81A10B0F89B -:1000E0000700E08328681DD0C167E18BA0F880106D -:1000F00000F17002511E30460BF0C6FF002808BF09 -:10010000FFDF286890F86F1041F0020180F86F104F -:10011000BDE8F081D0F80E10C0F87610418AA0F842 -:100120007A10D2E7C767A0F88070617E80F86F1000 -:10013000D4F81A100167E18BA0F87410BDE8F081C3 -:1001400060000020C4BF0300898888880178406867 -:1001500029B190F80C1190F8730038B901E001F062 -:10016000A9BD19B1042901D00120704700207047B2 -:1001700070B50C460546062102F006FC606008B129 -:10018000002006E00721284602F0FEFB606018B15F -:1001900001202070002070BD022070BD2DE9FC47B9 -:1001A0000C4606466946FFF7E3FF00287DD19DF81F -:1001B000000050B1FEF727F9B0427CD0214630460E -:1001C0000AF000F9002873D12DE00DF02FFEB042A7 -:1001D00071D02146304612F093FF002868D1019D6E -:1001E00095F8D00022E0012000E00020804695F83C -:1001F00037004FF0010A4FF00009F0B195F83800D0 -:1002000080071AD584F8019084F800A084F804903F -:10021000E68095F839102172698F6181A98FA181DB -:1002200085F8379044E0019D95F80C015835002879 -:10023000DBD1E87E0028D8D0D5E7304602F0E8FCD4 -:10024000070000D1FFDF384601F0F8FE40B184F826 -:1002500001900F212170E680208184F804A027E01E -:10026000304602F0C3FC070000D1FFDFB8F1000FF9 -:1002700021D0384601F039FFB8B19DF8000038B9F7 -:100280000198D0F8F8004188B14201D180F800907F -:10029000304607F07CFB84F801900C21217084F833 -:1002A0000490E680297F217200E004E085F81B902D -:1002B0000120BDE8FC870020FBE71CB56946FFF77D -:1002C00057FF00B1FFDF684601F000FDFB49002049 -:1002D0008968A1F8D2001CBD2DE9FC4104460E46F8 -:1002E000062002F0F9FA0546072002F0F5FA284444 -:1002F000C7B20025A8463E4417E02088401C80B2C3 -:100300002080B04202D34046A4F8008080B2B842B8 -:1003100004D3B04202D20020BDE8FC816946FFF759 -:1003200027FF0028F8D06D1CEDB2AE42E5D84FF69D -:10033000FF7020801220EFE738B54FF6FF70ADF860 -:1003400000000DE00621BDF8000002F02FFB04467E -:100350000721BDF8000002F029FB0CB100B1FFDF5E -:1003600000216846FFF7B8FF0028EBD038BD70B514 -:1003700007F07AFB0BF04FFCD14C4FF6FF760025CF -:100380006683A683CFA0257001680079A4F140029E -:10039000657042F8421FA11C1071601C13F07DF8BB -:1003A00025721B2060814FF4A471A181E08121821C -:1003B0000321A1740422E274A082E082A4F13E0031 -:1003C000218305704680BD480C300570A4F11000F3 -:1003D0000570468070BD70B5B84C16460D4660601D -:1003E000217007F0BBFAFFF7A7FFFFF7C0FF2078E7 -:1003F00010F09BFEB5480EF0C4F92178606812F049 -:100400005EFF20780AF056FE284608F097FBAF48BA -:10041000FEF704F8217860680AF0BAF831462078CF -:1004200013F038FEBDE870400BF0F5BB10B50124A9 -:100430000AB1002010BD21B1012903D000242046BB -:1004400010BD02210DF0B0FAF9E72DE9F0470400E4 -:1004500000D1FFDF9A4802211C308146FFF73CFFA4 -:1004600000B1FFDF964D0620B5F81C8002F034FA8B -:100470000646072002F030FA3044C6B2701CC7B2FC -:10048000A88BB04228D120460DF046FCB0B12078B0 -:1004900018283FD1207901283CD1E088062102F0BC -:1004A00073FA040000D1FFDF208807F070FA20887B -:1004B000062102F07BFA40B3FFDF2BE0287860B31F -:1004C00000266670142020702021201D15F043F9AD -:1004D000022020712E701DE0B84217D12046FDF792 -:1004E00037FFD0B12078172814D1207968B1E0887F -:1004F000072102F049FA40B1008807F048FAE08885 -:10050000072102F053FA00B1FFDF03E02146FFF7B5 -:1005100045FE10B10120BDE8F08702214846FFF7F3 -:10052000DBFE10B9A98B4145AAD12046BDE8F047B2 -:1005300013F0F6BD10B501F064FB08B10C2010BD3E -:100540000BF0BCFB002010BD10B50446007818B1BC -:10055000012801D0122010BD01F064FB20B10BF086 -:100560005DFD08B10C2010BD207801F011FBE21DEB -:1005700004F11703611CBDE810400BF044BC10B53A -:10058000044601F03EFB08B10C2010BD207828B1D4 -:10059000012803D0FF280BD0122010BD01F0F8FA7B -:1005A000611C0BF04BFB08B1002010BD072010BDF3 -:1005B00001200BF07DFBF7E710B50BF032FD08B121 -:1005C000002010BD302010BD10B5044601F02AFBFC -:1005D00008B10C2010BD20460BF01DFD002010BD01 -:1005E00010B501F01FFB20B10BF018FD08B10C2075 -:1005F00010BD0BF06DFC002010BDFF2181704FF687 -:10060000FF7181802D4949680A7882718A88028148 -:100610004988418101214170002070477CB5002547 -:10062000022A19D015DC12F10C0F15D009DC12F1D9 -:10063000280F11D012F1140F0ED012F1100F11D19A -:100640000AE012F1080F07D012F1040F04D04AB9E2 -:1006500002E0D31E052B05D8012806D0022808D0B9 -:1006600003280AD0122528467CBD1046FEF75EFA04 -:10067000F9E710460EF030F8F5E7084614466946EB -:10068000FFF776FD08B10225EDE79DF8000001981F -:10069000002580F85740E6E710B5134601220CF01C -:1006A00061FB002010BD10B5044611F03AFB05288F -:1006B0000ED0204610F028FD002010BD6C00002058 -:1006C000E4070020FFFFFFFF1F000000A40600203A -:1006D0000C20F2E710B5044601F0A4FA08B10C2092 -:1006E000EBE72146002007F0C0F90020E5E710B550 -:1006F000044610F097FD50B108F0A6FC38B1207800 -:1007000008F041FA20780EF0F5FA0020D5E70C2029 -:10071000D3E710B5044601F085FA08B10C20CCE708 -:100720002146012007F0A1F90020C6E738B50446AC -:100730004FF6FF70ADF80000A079E179884216D03D -:100740002079FDF766FD90B16079FDF762FD70B12B -:100750000022A079114614F011F940B90022E07985 -:10076000114614F00BF910B9207A072801D912208C -:1007700038BD08F076FC60B911F0D3FA48B9002111 -:100780006846FFF7A9FD20B1204606F057F8002083 -:1007900038BD0C2038BD2DE9FC41817805461A2969 -:1007A00025D00EDC16292DD2DFE801F02C2C2C2CC4 -:1007B0002C212C2C2C2C2C2C2C2C2C2C2C2C2C218F -:1007C00021212A291ED00BDCA1F11E010C2919D2EE -:1007D000DFE801F018181818181818181818180D4C -:1007E0003A3904290ED2DFE801F00D020D02288803 -:1007F000B0F5706F06D201276946FFF7B9FC18B152 -:10080000022089E5122087E59DF8000001F0C7F974 -:10081000019C08B1F43401E004F5B8749DF80000BF -:1008200001F0BDF9019E08B1F53601E006F271163E -:100830006846FFF78BFC08B1207808B10C206BE507 -:100840002770A8783070684601F040FA002063E510 -:100850007CB50D466946FFF78BFC002618B12E606B -:100860002E7102207CBD9DF8000001F098F9019CDA -:100870009DF80000583401F092F9019884F8406026 -:1008800081682960017B297194F840100029F5D115 -:1008900000207CBD70B5044691F8550091F85630A3 -:1008A0000D4610F00C0F00D100232189A0880CF018 -:1008B000E8FB696A81421DD2401A401CA1884008A9 -:1008C000091A8AB2A2802189081A2081668895F8BF -:1008D000541010460CF07CFB864200D230466080FB -:1008E000E68895F8551020890CF072FB864200D2FC -:1008F0003046E08070BDF0B585B00D46064603A9D0 -:10090000FFF736FC00282DD19DF80C0060B30022C3 -:100910000499FB20B1F84A30FB2B00D30346B1F811 -:100920004C40FB20FB2C00D30446DFF80CCC9CE8A9 -:10093000811000900197CDF808C0ADF80230ADF8F5 -:1009400006406846FFF7A6FF6E80BDF80400E88009 -:10095000BDF808006881BDF80200A880BDF8060057 -:100960002881002005B0F0BD0122D1E72DE9F0413A -:1009700086B0044600886946FFF7FAFB002868D174 -:100980002189E08801F0B1F9002862D1A18860884E -:1009900001F0ABF900285CD12189E08801F0B3F9BE -:1009A000002856D1A188608801F0ADF9070050D128 -:1009B000208802A9FFF79FFF00B1FFDFBDF81010EC -:1009C00062880920914244D3BDF80C10E28891421C -:1009D0003FD3BDF81210BDF80E2023891144A28820 -:1009E0001A44914235D39DF80000019D4FF0000854 -:1009F000012640B185F89B61019890F8DE0105F56C -:100A0000CD7540B914E085F80561019890F828018A -:100A100005F5827508B13A2718E0E088688060889B -:100A2000E8802089A880A08828810122019909E016 -:100A3000E08868806088E8802089A880A088288174 -:100A4000019900222846FFF725FF2E7085F80180C6 -:100A5000384606B0BDE8F08188E710B5044601F0DD -:100A6000E1F820B10BF0DAFA08B10C2025E6207885 -:100A700001F08EF8E279611C0BF051FC08B1002006 -:100A80001BE6022019E610B503780446002B4068E7 -:100A900013460A46014609D05FF001000CF0FAFA4D -:100AA0006168496A884203D9012006E60020F5E71B -:100AB000002002E62DE9F04117468A781E4680465E -:100AC00042B11546C87838B10446690706D52AB13F -:100AD000012104E00725F5E70724F6E70021620776 -:100AE00002D508B1012000E00020014206D0012219 -:100AF00011464046FFF7C7FF98B93BE051B10022CD -:100B000001214046FFF7BFFF58B9600732D50122E7 -:100B100011461FE058B1012200214046FFF7B3FF04 -:100B200008B1092096E7680724D5012206E0680786 -:100B30004FEA44700AD5002813DB00220121404609 -:100B4000FFF7A1FFB0B125F0040513E0002811DA8A -:100B5000012200214046FFF796FF58B124F004041B -:100B600008E0012211464046FFF78DFF10B125F045 -:100B70000405F3E73D70347000206BE710B586B0D4 -:100B80000446008803A9FFF7F3FA002806D1A088DD -:100B900030B1012804D0022802D0122006B08CE522 -:100BA0006B4602AA214603A8FFF784FF0028F5D16F -:100BB0009DF80C3000220121002B049B06D083F805 -:100BC000A511049B93F8F2316BBB24E083F80F115D -:100BD000049B93F834313BB9049B93F80E311BB955 -:100BE000049B93F87D300BB13A2010E0049B83F80E -:100BF0000E11049B9DF8081083F81011049B9DF8BA -:100C0000001083F81111049BA188A3F81211049914 -:100C100081F80F21C2E7049B93F8A4311BB9049B10 -:100C200093F87D300BB13A2010E0049B83F8A411B7 -:100C3000049B9DF8081083F8A611049B9DF80010F2 -:100C400083F8A711049BA188A3F8A811049981F83F -:100C5000A521A3E710B504460020A17801B9012021 -:100C6000E2780AB940F0020001F056F8002803D1FA -:100C70002046BDE8104081E71FE570B51C460D46D3 -:100C800018B1012801D0122070BD1946104601F09C -:100C900053F830B12146284601F058F808B1002039 -:100CA00070BD302070BD70B5044600780E46012836 -:100CB00004D018B1022801D0032841D1607828B1AE -:100CC000012803D0022801D0032839D1E07B10B9D4 -:100CD000A078012834D1A07830F0050130D110F08F -:100CE000050F2DD06289E188E0783346FFF7C5FF14 -:100CF000002826D1A07805281ED16589A2892189DE -:100D000020793346FFF7B9FF00281AD15FF00100C0 -:100D100004EB40014A8915442218D3789278934213 -:100D20000ED1CA8889888A420AD1401CC0B20228E2 -:100D3000EED3E088A84203D3A07B08B1072801D9ED -:100D4000122070BD002070BD10B586B0044600F0C2 -:100D50004BFF08B10C2021E7022104F10A0001F049 -:100D600008F8A0788DF80800A0788DF80000607869 -:100D70008DF8040020788DF80300A07B8DF8050025 -:100D8000E07B00B101208DF80600A078C10717D0E4 -:100D9000E07800F0E5FF8DF80100E088ADF80A008A -:100DA0006089ADF80C00A078400716D5207900F0D6 -:100DB000D7FF8DF802002089ADF80E00A0890AE067 -:100DC00040070AD5E07800F0CBFF8DF80200E088FC -:100DD000ADF80E006089ADF8100002A810F02EFAF0 -:100DE0000028B8D168460DF08AFFD7E610B5044652 -:100DF0000121FFF758FF002803D12046BDE810402D -:100E0000A2E75AE40278012A01D0BAB118E0427888 -:100E10003AB1012A05D0022A12D189B1818879B16B -:100E200000E059B1418849B1808838B101EB8101B6 -:100E3000490000EB8000B1EB002F01D20020704789 -:100E40001220704770B5044600780D46012809D07D -:100E500010F067FF052803D010F001F9002800D03A -:100E60000C2070BD0DF00DFE88B10DF01FFE0DF0D1 -:100E700023FF0028F5D125B160780DF0B4FE0028DD -:100E8000EFD1A1886088BDE8704010F0FDB9122054 -:100E900070BD10B504460121FFF7B4FF002804D14E -:100EA0002046BDE810400121CCE706E42DE9F047DB -:100EB0000746B0F84C50FB2092460E46FB2D00D35F -:100EC0000546DFF87886B8F80A00A84200D2054641 -:100ED00097F85510284600F076FEB8F80C108142BD -:100EE00000D208468146B7F84A40FB20FB2C00D3CD -:100EF0000446B8F80E00A04200D2044697F85410F9 -:100F0000204600F060FEB8F81010814200D208467A -:100F10004FF4A4721B2C01D0904203D11B2D25D07D -:100F2000914523D0F580A6F808907480B080524691 -:100F300039463046FFF7AEFC01203070F0881B3890 -:100F4000E02800D9FFDF70881B38E02800D9FFDFD8 -:100F5000308940F64814A0F5A470A04200D9FFDF04 -:100F6000B088A0F5A470A04200D9FFDFBDE8F087EB -:100F7000F0B5871FDDE9056540F67B44A74213D233 -:100F80008F1FA74210D288420ED8B2F5FA7F0BD23B -:100F9000A3F10A00241FA04206D2521C4A43B2EB1E -:100FA000830F01DAAE4201D90020F0BD0120F0BD6F -:100FB0002DE9FC47477A0446884678077ED0F80832 -:100FC0007CD194F83A0008B9012F77D100252E463C -:100FD000F90788F0010919D0208A494600F0ACFED3 -:100FE000F0B36089494600F0B1FEC8B3208A618938 -:100FF000884263D8A18EE08DCDE90001238D628CFB -:10100000A18BE08AFFF7B4FF50B30125B8070ED5D6 -:1010100004EB4500828EC18DCDE90012038D428C18 -:10102000818BC08AFFF7A4FFD0B16D1C2E467807D4 -:101030001DD504EB45074946388A00F07DFE78B19E -:101040007889494600F082FE50B1388A7989884211 -:1010500057D8B98EF88DCDE900013B8D7A8C00E030 -:1010600009E0B98BF88AFFF783FF20B16D1CB8F156 -:10107000000F03D02AE03020BDE8FC87228A01213E -:101080001FE0B14203D004EB4100008A024404EBAC -:101090004100C38A878ABB4233D1838B478BBB42D3 -:1010A0002FD1438C078CBB422BD1038DC78CBB4205 -:1010B00027D143890089834223D100E021E0491CE4 -:1010C000C9B2A942DDD3608990421AD3207810B109 -:1010D000012816D10DE0A078B8F1000F07D040B17B -:1010E000012806D0022804D003280AD101E00028F4 -:1010F000EED1607838B1012805D0022803D003284A -:1011000001D01220B8E70020B6E7002150E70178AF -:10111000C90702D0406812F0D6BF12F0A3BF2DE974 -:10112000F04788B00D46AFF66422D2E9009201463E -:1011300090462846FFF73CFF06000CD100F054FD16 -:1011400040B9FE4F387828B90CF070FEA0F57F4109 -:10115000FF3902D00C2008B008E7032105F1100088 -:1011600000F007FEF54801AA3E380190F4480290CD -:10117000F24806211038039007A801F0D3FB0400C1 -:1011800035D003210BF04EFBB98AA4F84A10FA8A35 -:10119000A4F84C20FB7C0093BA46BB7C208801F06D -:1011A000AEFC00B1FFDF208806F0F0FB218804F1DF -:1011B0000E0000F041FDE3A004F11207006800906A -:1011C0000321684604F0F2FD002069460A5C3A54A7 -:1011D000401CC0B20328F9D3A88B6080688CA08023 -:1011E000288DE080687A410703D508270AE00920A6 -:1011F000B1E7C10701D0012704E0800701D502272C -:1012000000E000273A46BAF81800114610F0D0F86E -:101210000146A062204610F0D9F817F00C0F09D053 -:1012200001231A46214600200BF034FF616A8842F0 -:1012300000D90926002784F85E7084F85F70A878CA -:1012400000F0A6FC6076D5F80300C4F81A00B5F8E3 -:101250000700E083C4F8089084F80C80012084F82B -:101260000001024604F582712046FFF71FFE8DF84B -:1012700000700121684604F099FD9DF8000000F01F -:101280000701C0F3C1021144C0F3401008448DF8B7 -:101290000000401D2076092801D208302076002168 -:1012A00020460BF0BFFA68780DF0F6FBF6BBA97884 -:1012B0002878EA1C0DF0C3FB48B10DF0F7FBA978C4 -:1012C0002878EA1C0DF069FC060002D052E01226D4 -:1012D00050E0687A00F005010020CA0700D0012024 -:1012E0008A0701D540F00200490701D540F0080007 -:1012F0000DF08EFB06003DD1214603200DF077FC5A -:10130000060037D10DF07DFC060033D1697A01F07B -:1013100005018DF81010697AC90706D06889ADF803 -:101320001200288AADF81400012000E022E0697A5A -:101330008A0700D5401C490707D505EB40004189C5 -:10134000ADF81610008AADF8180004A80FF076FF6B -:10135000064695F83A0000B101200DF06BFB4EB93E -:101360000DF0AAFC060005D1A98F20460FF008FF5A -:10137000060008D0208806F00AFB2088062101F02C -:1013800015FB00B1FFDF3046E5E601460020C6E66A -:1013900038B56A48007878B910F0C3FC052805D044 -:1013A0000CF044FDA0F57F41FF3905D068460FF0F1 -:1013B000AEFF040002D00CE00C2038BD009800887D -:1013C00006F0E5FA00980621008801F0EFFA00B176 -:1013D000FFDF204638BD1CB582894189CDE9001266 -:1013E0000389C28881884088FFF7C2FD08B10020C8 -:1013F0001CBD30201CBD70B50546FFF7ECFF002872 -:101400000ED12888062101F0BFFA040007D000F0B1 -:1014100051FC20B1D4F8F800017831B901E0022084 -:1014200070BDD4F84411097809B13A2070BD052186 -:101430008171D4F8F81000200881D4F8F810A88839 -:101440004881D4F8F810E8888881D4F8F810288901 -:10145000C881D4F8F800028941898A4204D8827987 -:10146000082A01D88A4201D3122070BD2988418000 -:10147000D4F8F81002200870002070BD3EB5044674 -:101480000BF002FCB0B12D480125A0F140024570DF -:10149000236842F8423F2379002113714170694665 -:1014A000062001F0FAF900B1FFDF684601F0D3F938 -:1014B00010B10EE012203EBDBDF80440029880F845 -:1014C0000051684601F0C7F918B9BDF80400A04200 -:1014D000F4D100203EBD70B505460088062101F01C -:1014E00053FA040007D000F0E5FB20B1D4F8F8105F -:1014F000087830B901E0022070BDD4F844010078CA -:1015000008B13A2070BD9620005D10F0010F21D087 -:10151000D5F802004860D5F80600886054F8F80F46 -:10152000698910228181206805F10C010E3014F0C8 -:1015300071F80320216807E0CC5B0200E40700207B -:101540007800002011223300087021682888488024 -:10155000002070BD0C2070BD38B504460078EF281F -:101560004DD86088ADF80000009800F013FC88B3F7 -:101570006188080708D4D4E9012082423FD8202A94 -:101580003DD3B0F5804F3AD8207B18B3072836D822 -:10159000607B28B1012803D0022801D003282ED176 -:1015A0004A0703D4022801D0032805D1A07B08B143 -:1015B000012824D1480707D4607D28B1012803D031 -:1015C000022801D003281AD1C806E07D03D50128DE -:1015D00015D110E013E0012801D003280FD1C8066F -:1015E00009D4607E012803D0022801D0032806D147 -:1015F000A07E0F2803D8E07E18B1012801D0122068 -:1016000038BD002038BDF8B514460D46064607F033 -:1016100028FD08B10C20F8BD3046FFF79DFF0028DB -:10162000F9D1FDF788FA2870B07554B9FF208DF80C -:10163000000069460020FDF76DFA69460020FDF7BD -:101640005DFA3046BDE8F840FDF7B1B90022DAE7AF -:1016500070B50C46054612B11F2907D80CE0FF2CC7 -:1016600004D8FCF71EFF18B11F2C01D9122070BD41 -:101670002846FCF700FF08B1002070BD422070BD75 -:1016800010B50446408810B1FDF71BFA78B12078F8 -:10169000618800F001026078FFF7DAFF002805D1C9 -:1016A000FDF7F7F96288824203D9072010BD1220A6 -:1016B00010BD10466168FDF72DFA002010BD10B571 -:1016C0000446408810B1FCF7DEFE70B120786188D6 -:1016D00000F001026078FFF7BBFF002804D16088AA -:1016E0006168FDF70BFA002010BD122010BD7CB51B -:1016F000044640784225012808D8A078FCF7BBFEB4 -:1017000020B120781225012802D090B128467CBD56 -:10171000FDF71DFA20B1A0880028F7D08028F5D861 -:10172000FDF71CFA60B160780028EFD0207801281E -:1017300008D006F04BFA044607F05DF900287DD08A -:101740000C207CBDFDF74CF810B9FDF7F9F990B30A -:1017500007F087FC0028F3D1FCF755FEA0F57F4188 -:10176000FF39EDD1FDF75EF8A68842F210704643CE -:10177000A079FDF7B7F9FCF78DFEF8B1002207213B -:1017800001A801F0CFF8040043D0F748032184609A -:1017900020460AF052FF2046FDF746FDF34DA88A89 -:1017A000A4F84A00E88AA4F84C00FCF77AFE60B17D -:1017B000288B01210DE0FFE712207CBD314600207F -:1017C00007F0E4F9D8B3FFDF4CE0FDF7C9F90146B3 -:1017D000288B07F086FA0146A0620022204606F018 -:1017E000F8F9FCF75EFEB0B9FDF7BAF910F00C0F8E -:1017F00011D001231A46214618460BF04BFC616AB2 -:10180000884208D90721BDF8040001F0CFF800B1E3 -:10181000FFDF09207CBDE87C0090AB7CEA8AA98AC6 -:10182000208801F06CF900B1FFDF208806F0AEF8E7 -:101830003146204607F0AAF918B101E008E011E0AE -:10184000FFDF002204F5CD712046FFF72FFB09E0F2 -:1018500044B1208806F09BF82088072101F0A6F803 -:1018600000B1FFDF00207CBD002140E770B50D46D0 -:10187000072101F089F8040003D094F8730110B136 -:101880000AE0022070BD94F86500142801D01528E4 -:1018900002D194F8C00108B10C2070BD1022294675 -:1018A00004F5BA7013F0B6FE012084F8730100202D -:1018B00070BD10B5072101F067F818B190F87311E9 -:1018C00011B107E0022010BD90F86510142903D073 -:1018D000152901D00C2010BD022180F873110020C1 -:1018E00010BD2DE9FC410C464BF68032122194428A -:1018F0001DD8E4B16946FEF73BFC002815D19DF8E0 -:10190000000000F04CF9019E9DF80000583600F0F0 -:1019100046F9019DAD1C2F882246394630460AF013 -:1019200082FE2888B842F6D10020BDE8FC81084636 -:10193000FBE77CB5044600886946FEF719FC0028E1 -:1019400010D19DF8000000F02AF9019D9DF80000DB -:10195000583500F024F90198A27890F82C109142A3 -:1019600001D10C207CBD7F212972A9720021E9726E -:10197000E17880F82D10217980F82E10A17880F878 -:101980002C1000207CBD1CB50C466946FEF7F0FB10 -:1019900000280AD19DF8000000F001F9019890F8A4 -:1019A000730000B10120207000201CBD7CB50D46E5 -:1019B00014466946FEF7DCFB002809D19DF80000BB -:1019C00000F0EDF8019890F82C00012801D00C20CF -:1019D0007CBD9DF8000000F0E2F8019890F86010DE -:1019E000297090F86100207000207CBD70B50D4614 -:1019F0001646072100F0C8FF18B381880124C38868 -:101A0000428804EB4104AC4217D842F2107463439D -:101A1000A4106243B3FBF2F2521E94B24FF4FA7276 -:101A2000944200D91446A54200D22C46491C641C9D -:101A3000B4FBF1F24A43521E91B290F8AC211AB9AC -:101A400001E0022070BD01843180002070BD10B51E -:101A50000C46072100F098FF48B180F8DF4024B120 -:101A600090F8DD1009B107F052F9002010BD0220F6 -:101A700010BD017899B1417889B141881B290ED3F5 -:101A800081881B290BD3C188022908D337490268F2 -:101A9000403941F8522F40684860002070471220BA -:101AA000704710B504460FF07FFC204607F0E8F8B9 -:101AB000002010BD10B507F0E6F8002010BD2DE99C -:101AC000F04115460F4606460122114638460FF0F2 -:101AD0006FFC04460121384607F003F9844200D226 -:101AE000044601213046653C00F05EF806460121BF -:101AF000002000F059F8304401219630844206D984 -:101B000000F19601201AB0FBF1F0401C81B229804F -:101B10000020BDE8F08110B5044600F083F808B15C -:101B20000C2010BD601C0AF0D5FB207800F00100ED -:101B3000FCF773FE207800F001000CF0B2FF0020EB -:101B400010BD10B50446072000F0B8FE08B10C2007 -:101B500010BD2078C00715D000226078114612F021 -:101B60000DFF28B1122010BD6C000020E4070020FA -:101B7000A06809F06AF86078D4F8041009F06EF8EB -:101B80000020F0E7002009F060F800210846F5E7A2 -:101B900018B1022801D0012070470020704708B119 -:101BA000002070470120704710B5012904D0022998 -:101BB00005D0FFDF2046D6E7C000503001E08000AE -:101BC0002C3084B2F6E711F00C0F04D04FF474718E -:101BD00001EB801006E0022902D0C000703001E065 -:101BE00080003C3080B2704710B510F09AF804289D -:101BF00005D010F096F8052801D00020B3E70120A9 -:101C0000B1E710B5FFF7F0FF10B10DF019F828B9E2 -:101C100007F027FA20B1FCF7DBFD08B10120A2E7AD -:101C20000020A0E710B5FFF7DFFF18B907F019FA99 -:101C3000002898D0012096E72DE9FE4300250F46A5 -:101C400080460A260421404604F0D9F840460AF0AE -:101C5000BCFF062000F040FE044616E06946062060 -:101C600000F01BFE0BE000BFBDF80400B84206D038 -:101C70000298042241460E3013F0A0FC50B1684691 -:101C800000F0E9FD0500EFD0641E002C06DD002DFC -:101C9000E4D005E040460AF0A1FFF5E705B9FFDF13 -:101CA000D8F800000AF0B5FF761E01D00028C9D090 -:101CB000BDE8FE8390F8D01090F8730020B919B1F8 -:101CC000042901D0012070470020704701780029C5 -:101CD0000AD0416891F8DD20002A05D0002281F861 -:101CE000DD20406807F013B870471B38E12806D2A2 -:101CF000B1F5A47F03D344F29020814201D9122090 -:101D0000704700207047FB2802D8B1F5296F01D930 -:101D1000112070470020704770B514460546012217 -:101D200000F05CF8002806D121462846BDE8704046 -:101D3000002200F053B870BD042803D321B9B0F5D8 -:101D4000804F01D90020704701207047042803D339 -:101D500021B9B0F5804F01D90020704701207047AC -:101D6000012802D018B100207047022070470120DE -:101D7000704710B500224FF4C84408E030F8123024 -:101D8000A34200D9234620F81230521CD2B28A4214 -:101D9000F4D3E8E680B2C1060BD401071CD4810657 -:101DA0004FEAC07101D5B9B900E099B1800713D4E9 -:101DB00010E0410610D481060ED4C1074FEA8071AD -:101DC00004D0002902DB400704D405E0010703D456 -:101DD000400701D401207047002070470AB101225A -:101DE00000E00222024202D1C80802D109B100205B -:101DF000704711207047000030B5058825F4004475 -:101E000021448CB24FF4004194420AD2121B92B288 -:101E10001B339A4201D2A94307E005F40041214354 -:101E200003E0A21A92B2A9431143018030BD0844D5 -:101E3000083050434A31084480B2704770B51D469F -:101E400016460B46044629463046049AFFF7EFFF34 -:101E50000646B34200D2FFDF2821204613F07BFC68 -:101E60004FF6FF70A082283EB0B265776080B0F573 -:101E7000004F00D9FFDF618805F13C00814200D2AC -:101E8000FFDF60880835401B343880B220801B2873 -:101E900000D21B2020800020A07770BD8161886166 -:101EA00070472DE9F05F0D46C188044600F128090E -:101EB000008921F4004620F4004800F062FB10B1D4 -:101EC0000020BDE8F09F4FF0000A4FF0010BB04535 -:101ED0000CD9617FA8EB0600401A0838854219DC4E -:101EE00009EB06000021058041801AE06088617FCF -:101EF000801B471A083F0DD41B2F00DAFFDFBD42BD -:101F000001DC294600E0B9B2681A0204120C04D0C0 -:101F1000424502DD84F817A0D2E709EB06000180F4 -:101F2000428084F817B0CCE770B5044600F128026F -:101F3000C088E37D20F400402BB110440288438820 -:101F400013448B4201D2002070BD00258A4202D387 -:101F50000180458008E0891A0904090C418003D0FA -:101F6000A01D00F01EFB08E0637F008808331844C2 -:101F700081B26288A01DFFF73FFFE575012070BDAB -:101F800070B5034600F12804C588808820F4004617 -:101F90002644A84202D10020188270BD9889358855 -:101FA000A84206D3401B75882D1A2044ADB2C01E2E -:101FB00005E02C1AA5B25C7F20443044401D0C88FB -:101FC000AC4200D90D809C8924B10024147009888A -:101FD000198270BD0124F9E770B5044600F12801AB -:101FE000808820F400404518208A002825D0A18947 -:101FF000084480B2A08129886A881144814200D2B5 -:10200000FFDF2888698800260844A189884212D108 -:10201000A069807F2871698819B1201D00F0C1FA7C -:1020200008E0637F28880833184481B26288201D45 -:10203000FFF7E2FEA6812682012070BD2DE9F04166 -:10204000418987880026044600F12805B94218D046 -:1020500004F10A0821F400402844418819B140469F -:1020600000F09FFA08E0637F00880833184481B2CB -:1020700062884046FFF7C0FE761C6189B6B2B9425D -:10208000E8D13046BDE8F0812DE9F04104460B4629 -:1020900027892830A68827F40041B4F80A80014433 -:1020A0000D46B74201D10020ECE70AB1481D10608F -:1020B00023B1627F691D184613F0ACFA2E88698837 -:1020C00004F1080021B18A1996B200F06AFA06E01C -:1020D000637F62880833991989B2FFF78DFE4745FF -:1020E00001D1208960813046CCE78188C088814257 -:1020F00001D101207047002070470189808881420A -:1021000001D1012070470020704770B58588C388D1 -:1021100000F1280425F4004223F4004114449D42B8 -:102120001AD08389058A5E1925886388EC18A6422F -:1021300014D313B18B4211D30EE0437F08325C19E4 -:102140002244408892B2801A80B22333984201D24E -:1021500011B103E08A4201D1002070BD012070BDA1 -:102160002DE9F0478846C1880446008921F40046DD -:1021700004F1280720F4004507EB060900F001FAF6 -:10218000002178BBB54204D9627FA81B801A0025C4 -:1021900003E06088627F801B801A083823D4E289BC -:1021A00062B1B9F80020B9F802303BB1E81A2177E2 -:1021B000404518DBE0893844801A09E0801A21770D -:1021C00040450ADB607FE1890830304439440844E7 -:1021D000C01EA4F81280BDE8F087454503DB01204E -:1021E0002077E7E7FFE761820020F4E72DE9F74F6A -:1021F000044600F12805C088884620F4004A608A19 -:1022000005EB0A0608B1404502D20020BDE8FE8F6A -:10221000E08978B13788B6F8029007EB0901884267 -:1022200000D0FFDF207F4FF0000B50EA090106D0FD -:1022300088B33BE00027A07FB9463071F2E7E1891F -:1022400059B1607F2944083050440844B4F81F1045 -:1022500020F8031D94F821108170E28907EB080033 -:1022600002EB0801E1813080A6F802B002985F46D7 -:1022700050B1637F30880833184481B26288A01D52 -:10228000FFF7BAFDE78121E0607FE1890830504423 -:10229000294408442DE0FFE7E089B4F81F102844E2 -:1022A000C01B20F8031D94F82110817009EB080071 -:1022B000E28981B202EB0800E081378071800298E8 -:1022C000A0B1A01D00F06DF9A4F80EB0A07F401CD5 -:1022D000A077A07D08B1E088A08284F816B000BF86 -:1022E000A4F812B084F817B001208FE7E0892844E1 -:1022F000C01B30F8031DA4F81F10807884F821005B -:10230000EEE710B5818800F1280321F4004423444E -:10231000848AC288A14212D0914210D0818971B9B9 -:10232000826972B11046FFF7E8FE50B91089283271 -:1023300020F40040104419790079884201D100202E -:1023400010BD184610BD00F12803407F0830084436 -:10235000C01E1060088808B9DB1E13600888498811 -:10236000084480B270472DE9F04100F12806407F13 -:102370001C4608309046431808884D88069ADB1E94 -:10238000A0B1C01C80B2904214D9801AA04200DBD8 -:10239000204687B298183A46414613F00FF90028B4 -:1023A00016D1E01B84B2B844002005E0ED1CADB2AC -:1023B000F61EE8E7101A80B20119A94206D8304487 -:1023C00022464146BDE8F04113F0F8B84FF0FF3027 -:1023D00058E62DE9F04100F12804407F1E46083000 -:1023E00090464318002508884F88069ADB1E90B156 -:1023F000C01C80B2904212D9801AB04200DB304635 -:1024000085B299182A46404613F004F9701B86B22B -:10241000A844002005E0FF1CBFB2E41EEAE7101A42 -:1024200080B28119B94206D821183246404613F0CD -:10243000F1F8A81985B2284624E62DE9F04100F10B -:102440002804407F1E46083090464318002508881F -:102450004F88069ADB1E90B1C01C80B2904212D900 -:10246000801AB04200DB304685B298182A464146B1 -:1024700013F0D0F8701B86B2A844002005E0FF1CC2 -:10248000BFB2E41EEAE7101A80B28119B94206D839 -:1024900020443246414613F0BDF8A81985B22846BB -:1024A000F0E5401D704710B5044600F12801C288D0 -:1024B000808820F400431944904206D0A28922B9B2 -:1024C000228A12B9A28A904201D1002010BD088848 -:1024D000498831B1201D00F064F8002020820120DD -:1024E00010BD637F62880833184481B2201DFFF756 -:1024F00083FCF2E70021C18101774182C1758175BA -:10250000704703881380C28942B1C28822F4004315 -:1025100000F128021A440A60C08970470020704701 -:1025200010B50446808AA0F57F41FF3900D0FFDF57 -:10253000E088A082E08900B10120A07510BD4FF6AF -:10254000FF71818200218175704710B50446808A31 -:10255000A0F57F41FF3900D1FFDFA07D28B9A08819 -:10256000A18A884201D1002010BD012010BD8188C0 -:10257000828A914201D1807D08B1002070470120FC -:10258000704720F4004221F400439A4207D100F43E -:10259000004001F40041884201D001207047002032 -:1025A000704730B5044600880D4620F40040A8422C -:1025B00000D2FFDF21884FF4004088432843208069 -:1025C00030BD70B50C00054609D0082C00D2FFDFE5 -:1025D0001DB1A1B2286800F044F8201D70BD0DB1F6 -:1025E00000202860002070BD0021026803E093886D -:1025F0001268194489B2002AF9D100F032B870B5D6 -:1026000000260D460446082900D2FFDF206808B9DD -:102610001EE0044620688188A94202D00168002992 -:10262000F7D181880646A94201D100680DE005F185 -:10263000080293B20022994209D32844491B026040 -:1026400081802168096821600160206000E0002627 -:10265000304670BD00230B608A8002680A6001600A -:10266000704700234360021D018102607047F0B58E -:102670000F460188408815460C181E46AC4200D310 -:10268000641B3044A84200D9FFDFA019A84200D93A -:10269000FFDF3819F0BD2DE9F04188460646018874 -:1026A000408815460C181F46AC4200D3641B3844C2 -:1026B000A84200D9FFDFE019A84200D9FFDF7088E7 -:1026C0003844708008EB0400BDE8F0812DE9F0414A -:1026D000054600881E461746841B8846BC4200D328 -:1026E0003C442C8068883044B84200D9FFDFA019F0 -:1026F000B84200D9FFDF68883044688008EB0400E6 -:10270000E2E72DE9F04106881D460446701980B2C3 -:10271000174688462080B84201D3C01B20806088BD -:10272000A84200D2FFDF7019B84200D9FFDF6088ED -:10273000401B608008EB0600C6E730B50D460188F7 -:10274000CC18944200D3A41A4088984200D8FFDFE6 -:10275000281930BD2DE9F041C84D04469046A878AF -:102760000E46A04200D8FFDF05EB8607B86A50F896 -:10277000240000B1FFDFB868002816D0304600F012 -:1027800044F90146B868FFF73AFF05000CD0B86A73 -:10279000082E40F8245000D3FFDFB94842462946AE -:1027A00050F82630204698472846BDE8F0812DE9AC -:1027B000F8431E468C1991460F460546FF2C00D95A -:1027C000FFDFB14500D9FFDFE4B200954DB3002033 -:1027D0008046E81C20F00300A84200D0FFDF4946F5 -:1027E000DFF89892684689F8001089F8017089F836 -:1027F000024089F8034089F8044089F8054089F8C7 -:10280000066089F80770414600F008F90021424649 -:102810000F464B460098C01C20F00300009012B1F8 -:102820000EE00120D4E703EB8106B062002005E052 -:10283000D6F828C04CF82070401CC0B2A042F7D394 -:102840000098491C00EB8400C9B200900829E1D32C -:10285000401BBDE8F88310B50446EEF75AFD08B1F9 -:10286000102010BD2078854A618802EB80009278A4 -:102870000EE0836A53F8213043B14A1C6280A18084 -:10288000806A50F82100A060002010BD491C89B268 -:102890008A42EED86180052010BD70B505460C4611 -:1028A0000846EEF736FD08B1102070BD082D01D3A3 -:1028B000072070BD25700020608070BD0EB5694690 -:1028C000FFF7EBFF00B1FFDF6846FFF7C4FF08B179 -:1028D00000200EBD01200EBD10B50446082800D30F -:1028E000FFDF6648005D10BD3EB505460024694621 -:1028F000FFF7D3FF18B1FFDF01E0641CE4B26846C4 -:10290000FFF7A9FF0028F8D02846FFF7E5FF001BD6 -:10291000C0B23EBD59498978814201D9C0B27047E1 -:10292000FF2070472DE9F041544B062903D00729B9 -:102930001CD19D7900E0002500244FF6FF7603EBC3 -:10294000810713F801C00AE06319D7F828E09BB2A9 -:102950005EF823E0BEF1000F04D0641CA4B2A445CD -:10296000F2D8334603801846B34201D100201CE759 -:10297000BDE8F041EEE6A0F57F43FF3B01D008291A -:1029800001D300207047E5E6A0F57F42FF3A0BD067 -:10299000082909D2394A9378834205D902EB81018B -:1029A000896A51F820007047002070472DE9F041F6 -:1029B00004460D46A4F57F4143F20200FF3902D0E0 -:1029C000082D01D30720F0E62C494FF000088A7843 -:1029D000A242F8D901EB8506B26A52F82470002FA2 -:1029E000F1D027483946203050F82520204690471E -:1029F000B16A284641F8248000F007F802463946BB -:102A0000B068FFF727FE0020CFE61D49403131F8BE -:102A100010004FF6FC71C01C084070472DE9F843C8 -:102A2000164E8846054600242868C01C20F0030086 -:102A300028602046FFF7E9FF315D4843B8F1000FF9 -:102A400001D0002200E02A680146009232B100273E -:102A50004FEA0D00FFF7B5FD1FB106E0012700208A -:102A6000F8E706EB8401009A8A602968641C084430 -:102A7000E4B22860082CD7D3EBE60000040800205D -:102A8000D85B020070B50E461D46114600F0D4F822 -:102A900004462946304600F0D8F82044001D70BD99 -:102AA0002DE9F04190460D4604004FF0000610D08D -:102AB0000027E01C20F00300A04200D0FFDFDDB1C2 -:102AC00041460020FFF77DFD0C3000EB850617B175 -:102AD00012E00127EDE7614F04F10C00A9003C6012 -:102AE0002572606000EB85002060606812F033FEA4 -:102AF00041463868FFF765FD3046BDE8F0812DE9B5 -:102B0000FF4F564C804681B020689A46934600B9E4 -:102B1000FFDF2068027A424503D9416851F8280056 -:102B200020B143F2020005B0BDE8F08F5146029893 -:102B300000F082F886B258460E9900F086F885B209 -:102B40007019001D87B22068A14639460068FFF75A -:102B500056FD04001FD0678025802946201D0E9D4C -:102B600007465A4601230095FFF768F92088314649 -:102B700038440123029ACDF800A0FFF75FF92088BE -:102B8000C1193846FFF78AF9D9F8000041680020DA -:102B900041F82840C7E70420C5E770B52F4C05462B -:102BA000206800B9FFDF2068017AA9420ED9426887 -:102BB00052F8251051B1002342F825304A880068A8 -:102BC000FFF748FD216800200A7A08E043F202007E -:102BD00070BD4B6853F8203033B9401CC0B28242FC -:102BE000F7D80868FFF700FD002070BD70B51B4ED8 -:102BF00005460024306800B9FFDF3068017AA94239 -:102C000004D9406850F8250000B1041D204670BD6D -:102C100070B5124E05460024306800B9FFDF3068F9 -:102C2000017AA94206D9406850F8251011B131F84F -:102C3000040B4418204670BD10B50A460121FFF769 -:102C4000F6F8C01C20F0030010BD10B50A460121A3 -:102C5000FFF7EDF8C01C20F0030010BD800000203D -:102C600070B50446C2F11005281912F0D3FC15F016 -:102C7000FF0108D0491EC9B2802060542046BDE83B -:102C8000704012F046BD70BD30B505E05B1EDBB292 -:102C9000CC5CD55C6C40C454002BF7D130BD10B572 -:102CA000002409E00B78521E44EA430300F8013B7C -:102CB00011F8013BD2B2DC09002AF3D110BD2DE995 -:102CC000F04389B01E46DDE9107990460D000446B8 -:102CD00022D002460846F949FDF7DEFC10222146C3 -:102CE0003846FFF7DCFFE07B000606D5F34A39469D -:102CF000102310320846FFF7C7FF10223946484616 -:102D0000FFF7CDFFF87B000606D5EC4A49461023B5 -:102D100010320846FFF7B8FF1021204612F0F9FCE8 -:102D20000DE0103EB6B208EB0601102322466846BD -:102D3000FFF7AAFF224628466946FDF7ADFC102E94 -:102D4000EFD818D0F2B241466846FFF789FF10234A -:102D50004A46694604A8FFF797FF1023224604A9B4 -:102D60006846FFF791FF224628466946FDF794FC26 -:102D700009B0BDE8F08310233A464146EAE770B552 -:102D80009CB01E460546134620980C468DF8080058 -:102D9000202219460DF1090012F03CFC20222146A8 -:102DA0000DF1290012F036FC17A913A8CDE9000196 -:102DB000412302AA31462846FFF781FF1CB070BDAF -:102DC0002DE9FF4F9FB014AEDDE92D5410AFBB4984 -:102DD000CDE90076202320311AA8FFF770FF4FF0CD -:102DE00000088DF808804FF001098DF8099054F81B -:102DF000010FCDF80A00A088ADF80E0014F8010C00 -:102E00001022C0F340008DF8100055F8010FCDF8E6 -:102E10001100A888ADF8150015F8010C2C99C0F325 -:102E200040008DF8170006A8824612F0F3FB0AA8AE -:102E300083461022229912F0EDFBA0483523083872 -:102E400002AA40688DF83C80CDE900760E901AA960 -:102E50001F98FFF734FF8DF808808DF809902068DF -:102E6000CDF80A00A088ADF80E0014F8010C10226D -:102E7000C0F340008DF810002868CDF81100A88834 -:102E8000ADF8150015F8010C2C99C0F340008DF831 -:102E90001700504612F0BEFB58461022229912F03D -:102EA000B9FB86483523083802AA40688DF83C9063 -:102EB000CDE900760E901AA92098FFF700FF23B005 -:102EC000BDE8F08FF0B59BB00C460546DDE9221059 -:102ED0001E461746DDE92032D0F801C0CDF808C003 -:102EE000B0F805C0ADF80CC00078C0F340008DF814 -:102EF0000E00D1F80100CDF80F00B1F80500ADF8D3 -:102F0000130008781946C0F340008DF815001088AA -:102F1000ADF8160090788DF818000DF11900102208 -:102F200012F078FB0DF129001022314612F072FBED -:102F30000DF139001022394612F06CFB17A913A8C5 -:102F4000CDE90001412302AA21462846FFF7B7FE3A -:102F50001BB0F0BDF0B5A3B017460D4604461E46A3 -:102F6000102202A8289912F055FB06A82022394603 -:102F700012F050FB0EA82022294612F04BFB1EA98E -:102F80001AA8CDE90001502302AA314616A8FFF77E -:102F900096FE1698206023B0F0BDF0B589B00446C7 -:102FA000DDE90E070D463978109EC1F340018DF81A -:102FB000001031789446C1F340018DF80110196872 -:102FC000CDF802109988ADF8061099798DF808109F -:102FD0000168CDF809108188ADF80D1080798DF861 -:102FE0000F0010236A46614604A8FFF74DFE2246F3 -:102FF000284604A9FDF750FBD6F801000090B6F86A -:103000000500ADF80400D7F80100CDF80600B7F8C8 -:103010000500ADF80A000020039010236A462146FF -:1030200004A8FFF731FE2246284604A9FDF734FB29 -:1030300009B0F0BD1FB51C6800945B68019313686C -:10304000029352680392024608466946FDF724FB44 -:103050001FBD10B588B004461068049050680590F4 -:1030600000200690079008466A4604A9FDF714FB65 -:10307000BDF80000208008B010BD1FB51288ADF863 -:1030800000201A88ADF802200022019202920392D9 -:10309000024608466946FDF7FFFA1FBD7FB5074B9C -:1030A00014460546083B9A1C6846FFF7E6FF224691 -:1030B00069462846FFF7CDFF7FBD0000305C020067 -:1030C00070B5044600780E46012813D0052802D0BA -:1030D000092813D10EE0A06861690578042003F087 -:1030E0006DF9052D0AD0782300220420616903F0D0 -:1030F000BBF803E00420616903F060F93146204623 -:10310000BDE8704001F084B810B500F12D03C2791C -:103110009C78411D144064F30102C271D2070DD0A6 -:103120004A795C7922404A710A791B791A400A71FE -:103130008278C9788A4200D9817010BD00224A7114 -:10314000F5E74178012900D00C21017070472DE985 -:10315000F04F93B04FF0000B0C690D468DF820B086 -:10316000097801260C2017464FF00D084FF0110A80 -:103170004FF008091B2975D2DFE811F01B00C202CD -:1031800005031D035C036F03A103B603F7031804D3 -:10319000600492049F04EB042905330551055C0586 -:1031A000ED053006330662067E06F8061C07E506C6 -:1031B000EA0614B120781D282AD0D5F808805FEAE5 -:1031C00008004FD001208DF82000686A02220D907F -:1031D0008DF824200A208DF82500A8690A90A88877 -:1031E0000028EED098F8001091B10F2910D27DD2AE -:1031F000DFE801F07C1349DEFCFBFAF9F8F7380848 -:103200009CF6F50002282DD124B120780C2801D09D -:103210000026EEE38DF82020CAE10420696A03F05D -:10322000CDF8A8880728EED1204600F0ECFF022850 -:1032300009D0204600F0E7FF032807D9204600F018 -:10324000E2FF072802D20120207004E0002CB8D051 -:1032500020780128D7D198F80400C11F0A2902D389 -:103260000A2061E0C3E1A070D8F80010E162B8F86C -:103270000410218698F8060084F832000120287096 -:103280000320207044E00728BDD1002C99D020787D -:103290000D28B8D198F8031094F82F20C1F3C0007E -:1032A000C2F3C002104201D0062000E007208907C7 -:1032B00007D198F805100142D2D198F806100142C2 -:1032C000CED194F8312098F8051020EA020211427C -:1032D000C6D194F8322098F8061090430142BFD12D -:1032E00098F80400C11F0A29BAD200E006E2617D05 -:1032F00081427CD8D8F800106160B8F804102181B0 -:1033000098F80600A072012028700E20207003207B -:103310008DF82000686A0D9004F12D000990601D61 -:103320000A900F300B9021E12875FDE3412891D1DF -:10333000204600F068FF042802D1E078C00704D1DD -:10334000204600F060FF0F2884D1A88CD5F80C80AF -:1033500080B24FF0400BE669FFF748FC3246414629 -:103360005B464E46CDF80090FFF733F80B208DF802 -:103370002000686A0D90E0690990002108A8FFF715 -:103380009FFE2078042806D0A07D58B1012809D0DE -:1033900003280AD048E305202070032028708DF808 -:1033A0002060CCE184F800A032E712202070E8E130 -:1033B0001128BCD1204600F026FF042802D1E07875 -:1033C000C00719D0204600F01EFF062805D1E0787E -:1033D000C00711D1A07D02280ED0204608E0CBE026 -:1033E00084E070E14FE122E102E1E8E019E0AEE1C2 -:1033F00000F009FF11289AD1102208F1010104F10F -:103400003C0012F007F9607801286ED0122020707D -:10341000E078C00760D0A07D0028C8D00128C6D0C1 -:103420005AE0112890D1204600F0EDFE082804D083 -:10343000204600F0E8FE132886D104F16C0010222B -:1034400008F10101064612F0E5F8207808280DD0B1 -:1034500014202070E178C8070DD0A07D02280AD082 -:103460006278022A04D00328A1D035E00920F0E7D1 -:1034700008B1012837D1C80713D0A07D02281DD07C -:1034800000200090D4E9062133460EA8FFF777FC10 -:1034900010220EA904F13C0012F090F8C8B10420EB -:1034A00042E7D4E90912201D8DE8070004F12C033E -:1034B00032460EA8616BFFF770FDE9E7606BC1F360 -:1034C0004401491E0068C84000F0010040F080003F -:1034D000D7E72078092806D185F800908DF820904C -:1034E00032E32870EBE30920FBE79CE1112899D136 -:1034F000204600F088FE0A2802D1E078C00704D1F7 -:10350000204600F080FE15288CD104F13C001022EA -:1035100008F10101064612F07DF820780A2816D03D -:1035200016202070D4E90932606B611D8DE80F0010 -:1035300004F15C0304F16C0247310EA8FFF7C2FCF2 -:1035400010220EA9304612F039F818B1F6E20B201D -:10355000207071E22046FFF7D7FDA078216A0A1893 -:10356000C0F11001104612F0D4F823E3394608A840 -:10357000FFF7A6FD06463BE20228B8D1204600F040 -:1035800042FE042804D3204600F03DFE082809D35B -:10359000204600F038FE0E2829D3204600F033FEE6 -:1035A000122824D2A07D0228A1D10E208DF820005F -:1035B000686A0D9098F801008DF82400F0E3022865 -:1035C00095D1204600F01FFE002810D0204600F0C4 -:1035D0001AFE0128F9D0204600F015FE0C28F4D080 -:1035E00004208DF8240098F801008DF825005EE293 -:1035F0001128FCD1002CFAD020781728F7D1617857 -:10360000606A022911D0002101EB4101182606EB66 -:10361000C1011022405808F1010111F0FBFF042004 -:10362000696A00F0E3FD2670F2E50121ECE70B2862 -:10363000DDD1002CDBD020781828D8D16078616AE1 -:1036400002281CD05FF0000000EB4002102000EBCD -:10365000C2000958B8F8010008806078616A022841 -:103660000FD0002000EB4002142000EBC2000958EC -:10367000404650F8032F0A604068486039E0012056 -:10368000E2E70120EEE71128B1D1002CAFD020787D -:103690001928ACD16178606A022912D05FF000016C -:1036A00001EB41011C2202EBC1011022405808F13C -:1036B000010111F0AFFF0420696A00F097FD1A20A4 -:1036C000B6E00121ECE7082891D1002C8FD02078BA -:1036D0001A288CD1606A98F80120017862F34701BA -:1036E0000170616AD8F8022041F8012FB8F806008D -:1036F00088800420696A00F079FD8EE2072013E6D5 -:103700003878012894D1182204F11400796811F056 -:10371000C6FFE079C10894F82F0001EAD001E078F3 -:1037200061F30000E070217D002974D12178032924 -:1037300009D0C00725D0032028708DF82090686A32 -:103740000D90412004E3607DA178884201D90620D4 -:10375000EAE502262671E179204621F0E001E171D7 -:10376000617A21F0F0016172A17A21F0F001A17279 -:10377000FFF7CAFC2E708DF82090686A0D90072024 -:10378000E6E20420ADE6387805289DD18DF82000CA -:10379000686A0D90B8680A900720ADF824000A986E -:1037A0008DF830B06168016021898180A17A8171D2 -:1037B00004202070F4E23978052985D18DF8201095 -:1037C000696A0D91391D09AE0EC986E80E004121C6 -:1037D000ADF824108DF830B01070A88CD7F80C809C -:1037E00080B24026A769FFF713FA41463A463346AE -:1037F000C846CDF80090FEF720FE002108A8FFF78C -:103800005FFCE07820F03E00801CE0702078052806 -:1038100002D00F200CE049E1A07D20B1012802D0A8 -:10382000032802D002E10720C0E584F80080EFE41D -:103830002070EDE4102104F15C0002F0E0FA606B0E -:10384000B0BBA07D18B1012801D00520FDE0062005 -:103850002870F7486063A063BEE23878022894D1EC -:10386000387908B12875B3E3A07D022802D0032877 -:1038700005D022E0B8680028F5D060631CE06078CD -:10388000012806D0A07994F82E10012805D0E84828 -:1038900006E0A17994F82E00F7E7B8680028E2D096 -:1038A0006063E078C00701D0012902D0E04803E05E -:1038B00003E0F8680028D6D0A063062011E68DF852 -:1038C0002090696A0D91E1784846C90709D061786E -:1038D000022903D1A17D29B1012903D0A17D0329AA -:1038E00000D00720287031E138780528BBD1207836 -:1038F00007281ED084F800A005208DF82000686AF3 -:103900000D90B8680A90ADF824A08DF830B003216E -:103910000170E178CA070FD0A27D022A1AD00021D7 -:103920000091D4E9061204F15C03401CFFF727FA6A -:1039300067E384F80090DFE7D4E90923211D8DE8CF -:103940000E0004F12C0304F15C02401C616BFFF7D4 -:1039500024FB56E3626BC1F34401491E1268CA405E -:1039600002F0010141F08001DAE738780528BDD185 -:103970008DF82000686A0D90B8680A90ADF824A010 -:103980008DF830B0042100F8011B102204F15C0115 -:1039900011F040FE002108A8FFF792FB20780928CB -:1039A00001D0132044E70A2020709CE5E078C1078D -:1039B00042D0A17D012902D0022927D038E06178C8 -:1039C00008A8012916D004F16C010091D4E906126F -:1039D00004F15C03001DFFF7BDFA0A2028700326DE -:1039E0008DF82080686A0D90002108A8FFF768FB19 -:1039F000DDE2C3E204F15C010091D4E9062104F1A7 -:103A00006C03001DFFF7A6FA0026E9E7C0F34401A6 -:103A100014290DD24FF0006101EBB0104FEAB060F5 -:103A2000E0706078012801D01020BFE40620FFE696 -:103A3000607801283FF4B8AC0A2052E5E178C90764 -:103A400008D0A17D012903D10B20287004202FE08C -:103A500028702DE00E2028706078616B012817D047 -:103A600004F15C0304F16C020EA8FFF7E3FA2046B0 -:103A7000FFF74AFBA0780EAEC0F11001304411F000 -:103A800048FE06208DF82000686A09960D909AE09D -:103A900004F16C0304F15C020EA8FFF7CBFAE9E72E -:103AA0003978022903D139790029D1D029758FE2DB -:103AB0008DF82000686A0D9058E538780728F6D10F -:103AC000D4E909216078012809D000BF04F16C0015 -:103AD000CDE90002029105D104F16C0304E004F188 -:103AE0005C00F5E704F15C0304F14C007A680646DB -:103AF000216AFFF765F96078012821D1A078216A51 -:103B00000A18C0F11001104611F003FED4E9092390 -:103B1000606B04F12D018DE80F0004F15C0304F1EA -:103B20006C0231460EA800E054E2FFF7CBF91022F8 -:103B30000EA904F13C0011F041FD08B10B20AFE4E7 -:103B400085F800808DF82090686A0D908DF824A08B -:103B50000CE538780528AAD18DF82000686A0D9008 -:103B6000B8680A90ADF824A08DF830B080F80080D5 -:103B7000617801291AD0D4E9093204F12D01A66B2C -:103B800003920096CDE9011304F16C0304F15C0289 -:103B900004F14C01401CFFF795F9002108A8FFF73C -:103BA0008FFA6078012805D0152041E6D4E9092371 -:103BB000611DE4E70E20287006208DF82000686A59 -:103BC000CDF824B00D90A0788DF82800CEE4387898 -:103BD0000328C0D1E079C00770D00F2028700720DB -:103BE00066E7387804286BD11422391D04F11400DB -:103BF00011F055FD616A208CA1F80900616AA07876 -:103C0000C871E179626A01F003011172616A627A36 -:103C10000A73616AA07A81F82400162061E485F8AD -:103C200000A08DF82090696A50460D9190E0000048 -:103C3000305C02003878052842D1B868A861617804 -:103C4000606A022901D0012100E0002101EB41015D -:103C5000142606EBC1014058082102F0D0F8617823 -:103C6000606A022901D0012100E0002101EB41013D -:103C700006EBC101425802A8E169FFF70FFA60782C -:103C8000626A022801D0012000E0002000EB400120 -:103C9000102000EBC1000223105802A90932FEF7E0 -:103CA000F3FF626AFD4B0EA80932A169FFF7E5F93F -:103CB0006178606A022904D0012103E042E18BE0CF -:103CC000BDE0002101EB4101182606EBC101A278FD -:103CD00040580EA911F09EFC6178606A022901D05B -:103CE000012100E0002101EB410106EBC101405838 -:103CF000A1780844C1F1100111F00BFD05208DF8E9 -:103D00002000686A0D90A8690A90ADF824A08DF88B -:103D100030B0062101706278616A022A01D0012266 -:103D200000E0002202EB420206EBC202401C89586E -:103D3000102211F06FFC002108A8FFF7C1F9122032 -:103D4000C5F818B028708DF82090686A0D900B2087 -:103D50008DF824000AE43878052870D18DF8200009 -:103D6000686A0D90B8680A900B20ADF824000A9894 -:103D7000072101706178626A022901D0012100E007 -:103D8000002101EB4103102101EBC30151580988C7 -:103D9000A0F801106178626A022902D0012101E0D5 -:103DA0002FE1002101EB4103142101EBC301515824 -:103DB0000A6840F8032F4968416059E019202870CB -:103DC00001208DF8300077E6162028708DF830B08D -:103DD000002108A8FFF774F9032617E114202870C2 -:103DE000B0E6387805282AD18DF82000686A0D9051 -:103DF000B8680A90ADF824A08DF830B080F8009033 -:103E00006278616A4E46022A01D0012200E0002257 -:103E100002EB42021C2303EBC202401C8958102211 -:103E200011F0F8FB002108A8FFF74AF915202870C7 -:103E30008DF82060686A0D908DF824603CE680E083 -:103E4000387805287DD18DF82000686A0D90B86813 -:103E50000A90ADF824900921017061690978490838 -:103E60004170616951F8012FC0F802208988C18032 -:103E700020781C28A8D1A1E7E078C00702D04FF035 -:103E8000060C01E04FF0070C607802280AD000BF52 -:103E90004FF0000000EB040101F1090105D04FF0E3 -:103EA000010004E04FF00100F4E74FF000000B7850 -:103EB000204413EA0C030B7010F8092F02EA0C02DD -:103EC000027004D14FF01B0C84F800C0D2B394F8F8 -:103ED00001C0BCF1010F00D09BB990F800C0E046D2 -:103EE0005FEACC7C04D028F001060670102606E0BC -:103EF0005FEA887C05D528F00206067013262E702E -:103F0000032694F801C0BCF1020F00D092B991F8D9 -:103F100000C05FEACC7804D02CF001060E701721A7 -:103F200006E05FEA8C7805D52CF002060E701921A8 -:103F3000217000260078D0BBCAB3C3BB1C20207000 -:103F400035E012E002E03878062841D11A2019E461 -:103F5000207801283CD00C283AD02046FFF7F1F811 -:103F600009208DF82000686A0D9031E03878052826 -:103F700005D00620387003261820287046E0052159 -:103F80008DF82010686A0D90B8680A900220ADF88C -:103F9000240001208DF830000A980170297D4170BD -:103FA000394608A8FFF78CF8064618202870012E1D -:103FB0000ED02BE001208DF82000686A0D900320C0 -:103FC0008DF82400287D8DF8250085F814B012E0C6 -:103FD000287D80B11D202070172028708DF820903A -:103FE000686A0D9002208DF82400394608A8FFF772 -:103FF00067F806460AE00CB1FE2020709DF820000C -:1040000020B1002108A8FFF75BF810E413B0304698 -:10401000BDE8F08F2DE9F04387B00C464E690021D2 -:104020008DF8041001202578034602274FF0070978 -:104030004FF0050C85B1012D53D0022D39D1FE2052 -:1040400030708DF80030606A059003208DF8040010 -:10405000207E8DF8050063E02179012925D0022911 -:104060002DD0032928D0042923D1B17D022920D1C4 -:1040700031780D1F042D04D30A3D032D01D31D29D2 -:1040800017D12189022914D38DF804702370208957 -:104090009DF8041088421BD2082001E0285C020031 -:1040A0008DF80000606A059057E070780128EBD029 -:1040B000052007B0BDE8F0831D203070E4E771787B -:1040C0000229F5D131780C29F3D18DF80490DDE780 -:1040D000083402F804CB94E80B0082E80B000320BC -:1040E000E7E71578052DE4D18DF800C0656A0595E0 -:1040F000956802958DF8101094F80480B8F1010FBE -:1041000013D0B8F1020F2DD0B8F1030F1CD0B8F1C5 -:10411000040FCED1ADF804700E202870207E687098 -:1041200000216846FEF7CCFF0CE0ADF804700B20D0 -:104130002870207E002100F01F0068706846FEF79E -:10414000BFFF37700020B4E7ADF804708DF8103071 -:1041500085F800C0207E6870277011466846FEF71B -:10416000AFFFA6E7ADF804902B70207F6870607FEA -:1041700000F00100A870A07F00F01F00E870E27F4F -:104180002A71C0071CD094F8200000F00700687165 -:1041900094F8210000F00700A87100216846FEF79E -:1041A0008FFF2868F062A8883086A87986F83200E8 -:1041B000A069407870752879B0700D203070C1E723 -:1041C000A9716971E9E700B587B004280CD1012015 -:1041D0008DF800008DF80400002005918DF8050091 -:1041E00001466846FEF76CFF07B000BD70B50C468F -:1041F000054602F0E3F821462846BDE870407823E2 -:10420000002202F031B808B1007870470C207047E6 -:1042100070B50C0005784FF000010CD021702146DC -:10422000F1F707F869482178405D884201D1032001 -:1042300070BD022070BDF0F7FCFF002070BD027958 -:10424000012A05D000220A704B78012B02D003E02E -:10425000042070470A758A6102799300521C02712A -:10426000C15003207047F0B587B00F4605460124C2 -:10427000287905EB800050F8046C7078411E022903 -:104280000AD252493A46083901EB8000314650F8CB -:10429000043C2846984704460CB1012C11D12879DA -:1042A000401E10F0FF00287101D00324E0E70A202F -:1042B0008DF80000706A0590002101966846FFF7AE -:1042C000A7FF032CD4D007B02046F0BD70B515462B -:1042D0000A46044629461046FFF7C5FF064674B154 -:1042E0002078FE280BD1207C30B100202870294690 -:1042F00004F10C00FFF7B7FF2046FEF722FF30461F -:1043000070BD704770B50E4604467C2111F023FA4B -:104310000225012E03D0022E04D0052070BD0120FD -:10432000607000E065702046FEF70BFFA575002069 -:1043300070BD28B1027C1AB10A4600F10C01C5E734 -:104340000120704710B5044686B0042002F036F80C -:104350002078FE2806D000208DF80000694620460F -:10436000FFF7E7FF06B010BD7CB50E4600218DF8C3 -:1043700004104178012903D0022903D0002405E06C -:10438000046900E044690CB1217C89B16D460146A5 -:104390002846FFF754FF032809D132462946204614 -:1043A000FFF794FF9DF80410002900D004207CBD85 -:1043B00004F10C05EBE730B40C460146034A2046F5 -:1043C00030BC034B0C3AFEF758BE00006C5C020098 -:1043D000285C020070B50D46040011D085B12101A2 -:1043E000284611F096F910225449284611F012F986 -:1043F000524801210838018044804560002070BD8A -:10440000012070BD70B54D4E00240546083E10E0F9 -:104410007068AA7B00EB0410817B914208D1C17BBC -:10442000EA7B914204D10C22294611F0C7F830B141 -:10443000641C30888442EBDB4FF0FF3070BD2046B7 -:1044400070BD70B50D46060006D02DB1FFF7DAFF3E -:10445000002803DB401C14E0102070BD374C083CE2 -:1044600020886288411C914201D9042070BD616896 -:10447000102201EB0010314611F0CCF82088401CCE -:1044800020802870002070BD2C48083800887047B4 -:104490002A4908390888012802D0401E08800020D7 -:1044A000704770B514460D0018D0BCB10021A17042 -:1044B000022802D0102811D105E0288870B101210E -:1044C000A170108008E02846FFF79CFF002805DB5C -:1044D000401CA070A8892080002070BD012070BD04 -:1044E00070B5054614460E000BD000203070A87839 -:1044F000012808D005D91149A1F108010A88904284 -:104500000AD9012070BD24B1287820702888000ABB -:104510005070022008700FE064B14968102201EB6E -:1045200000112046103911F075F82878207328887A -:10453000000A607310203070002070BD8C000020D5 -:104540002DE9F04190460C4607460025FE48072F0E -:1045500000EB881607D2DFE807F007070707040417 -:104560000400012500E0FFDF06F81470002D13D0D1 -:10457000F548803000EB880191F82700202803D00F -:1045800006EB4000447001E081F8264006EB44024F -:104590002020507081F82740BDE8F081F0B51F461B -:1045A00014460E460546202A00D1FFDFE649E648BC -:1045B000803100EB871C0CEB440001EB8702202EBE -:1045C00007D00CEB460140784B7848701846202104 -:1045D0000AE092F82530407882F82500F6E7014697 -:1045E0000CEB410005704078A142F8D192F82740C9 -:1045F000202C03D00CEB4404637001E082F82630D9 -:104600000CEB41042023637082F82710F0BD30B515 -:104610000D46CE4B44190022181A72EB020100D24B -:10462000FFDFCB48854200DDFFDFC94840428542BD -:1046300000DAFFDFC548401C844207DA002C01DBAA -:10464000204630BDC148401C201830BDBF48C04383 -:10465000FAE710B504460168407ABE4A52F82020B5 -:10466000114450B10220084420F07F40EEF7E5FAF3 -:1046700094F90810BDE81040C9E70420F3E72DE9DC -:10468000F047B14E803696F82D50DFF8BC9206EB1D -:10469000850090F8264034E009EB85174FF00708B5 -:1046A00017F81400012806D004282ED005282ED093 -:1046B000062800D0FFDF01F000F9014607EB4400B7 -:1046C000427806EB850080F8262090F82720A24249 -:1046D00002D1202280F82720084601F0F9F82A4666 -:1046E00021460120FFF72CFF9B48414600EB0410B8 -:1046F00002682046904796F82D5006EB850090F80A -:104700002640202CC8D1BDE8F087022000E003201D -:104710008046D0E710B58C4C2021803484F82510D9 -:1047200084F8261084F82710002084F8280084F8E4 -:104730002D0084F82E10411EA16044F8100B207447 -:10474000607420736073A0738449E07720750870EB -:10475000487000217C4A103C02F81100491CC9B283 -:104760002029F9D30120EEF758F90020EEF755F98A -:10477000012084F82200EEF79BFB7948EEF7ADFBB1 -:10478000764CA41E20707748EEF7A7FB6070BDE85A -:104790001040EEF7CFB810B5EEF7F1F86F4CA41E4D -:1047A0002078EEF7B3FB6078EEF7B0FBBDE8104081 -:1047B00001F0BBB8202070472DE9F34F624C002573 -:1047C000803404EB810A89B09AF82500202821D092 -:1047D000691E02916049009501EB0017391D03AB7A -:1047E00007C983E80700A18BADF81C10A07F8DF8E6 -:1047F0001E009DF81500A046C8B10226554951F883 -:1048000020400399A219114421F07F41019184B104 -:1048100002210FE00120EEF700F90020EEF7FDF88D -:10482000EEF7CBF801F081F884F82F50A7E00426CA -:10483000E4E700218DF81810022801D0012820D1CA -:10484000039801190998081A801C9DF81C1020F083 -:104850007F4001B10221353181420BD203208DF816 -:1048600015000398C4F13201401A20F07F40322431 -:1048700003900CE098F8240018B901F0F0F9002832 -:104880004DD0322C03D214B101F043F801E001F015 -:104890004CF8324A107820B393465278039B121B8F -:1048A00000219DF81840994601281BD0032819D0F3 -:1048B0005FF000008DF81E00002A04DD981A0390B6 -:1048C00001208DF818009DF81C0000B1022103980A -:1048D000254A20F07F40039003AB099801F031F89E -:1048E00010B110E00120E5E79DF81D0018B99BF814 -:1048F0000000032812D08DF81C50CDF80C908DF8D4 -:1049000018408DF81E509DF8180058B103980123E7 -:10491000811900221846EEF7D3F806E000200BB00C -:10492000BDE8F08F0120EEF778F897F90C2001230D -:1049300000200199EEF7C4F8F87BC00701D0EEF72C -:10494000A8F9012112E000004C0A0020FF7F841E1C -:104950000020A1077C5C02004C0800209E00002083 -:10496000176101007F460100FFFF3F0088F82F100C -:104970008AF8285020226946F74810F090FE01205E -:10498000CDE72DE9F05FDFF8D083064608EB86001F -:1049900090F82550202D1FD0A8F180002C4600EB68 -:1049A0008617A0F50079DFF8B4B305E0A24607EB5F -:1049B0004A004478202C0AD0EEF7CDF809EB041316 -:1049C0005A4601211B1D00F0BCFF0028EED0AC426E -:1049D00002D0334652461EE0E14808B1AFF30080F2 -:1049E000EEF7B9F898F82F206AB1D8F80C20411CDE -:1049F000891A0902CA1701EB12610912002902DDA6 -:104A00000020BDE8F09F3146FFF7D6FE08B1012037 -:104A1000F7E733462A4620210420FFF7BFFDEFE7E2 -:104A20002DE9F041CC4C2569EEF795F8401B0002CA -:104A3000C11700EB1160001200D4FFDF94F82200D0 -:104A400000B1FFDF012784F8227094F82E0020289F -:104A500000D1FFDF94F82E60202084F82E0000257E -:104A600084F82F5084F8205084F82150BD482560E8 -:104A70000078022833D0032831D000202077A068A6 -:104A8000401C05D04FF0FF30A0600120EDF7C5FFBE -:104A90000020EDF7C2FFEEF7BEF8EEF7B6F8EDF73F -:104AA0008CFF10F007F8B048056005604FF0E0217A -:104AB0004FF40040B846C1F88002EEF758F994F878 -:104AC0002D703846FFF75DFF0028FAD0A2488038E5 -:104AD00000EB871010F81600022802D006E0012033 -:104AE000CCE73A4631460620FFF72AFD84F82380BA -:104AF00004EB870090F82600202804D09948801EF7 -:104B00004078EEF709FA207F002803D0EEF773F81B -:104B10002577657740E5904910B591F82D20002460 -:104B2000803901EB821100BF11F814302BB1641CE5 -:104B3000E4B2202CF8D3202010BD8C4901EB0411E5 -:104B400008600020C87321460120FFF7F9FC2046C9 -:104B500010BD10B5012801D0032800D171B37E4AE1 -:104B600092F82D307C4C0022803C04EB831300BF74 -:104B700013F812400CB1082010BD521CD2B2202AEA -:104B8000F6D3784A48B1022807D0072916D2DFE8C1 -:104B900001F01506080A0C0E100000210AE01B2186 -:104BA00008E03A2106E0582104E0772102E096214E -:104BB00000E0B52151701070002010BD072010BD1D -:104BC000684810B54078EEF738F880B210BD10B5DF -:104BD000202811D2604991F82D30A1F1800202EB1A -:104BE000831414F810303BB191F82D3002EB83128E -:104BF00012F81020012A01D0002010BD91F82D20BC -:104C000001460020FFF79CFC012010BD10B5EDF718 -:104C1000A2FFBDE81040EEF710B82DE9F0410E46B6 -:104C20004D4F01782025803F0C4607EB831303E0AE -:104C3000254603EB45046478944202D0202CF7D13A -:104C400008E0202C06D0A14206D103EB41014978AF -:104C5000017007E000209FE403EB440003EB4501F3 -:104C600040784870424F7EB127B1002140F2DD30DC -:104C7000AFF300803078A04206D127B100214FF475 -:104C80007870AFF30080357027B1002140F2E53035 -:104C9000AFF3008001207FE410B542680B689A1AD8 -:104CA0001202D41702EB1462121216D4497A91B18F -:104CB000427A82B92F4A006852F8211012681944CA -:104CC0001044001D891C081A0002C11700EB116076 -:104CD0000012322801DB012010BD002010BD2DE99B -:104CE000F04781461C48214E00EB8100984690F821 -:104CF00025402020107006F50070154600EB811746 -:104D00000BE000BF06EB04104946001DFFF7C4FF8F -:104D100028B107EB44002C704478202CF2D129787C -:104D200088F8001013E000BF06EB0415291D484663 -:104D3000FFF7B2FF68B988F80040A97B99F80A002C -:104D4000814201D80020DEE407EB44004478202CA7 -:104D5000EAD10120D7E40000CC0A0020FFFF3F0089 -:104D6000000000009E00002000F500404C080020DC -:104D7000000000007C5C02002DE9FC410E46074665 -:104D80000024FE4D09E000BF9DF8000005EB001077 -:104D90008168384600F0E9FD01246B4601AA3146DE -:104DA0003846FFF79CFF0028EED02046BDE8FC8186 -:104DB00070B50446F2480125A54300EB841100EBD1 -:104DC0008510402210F026FCEE4E26B1002140F264 -:104DD0005F40AFF30080EA48803000EB850100EBD4 -:104DE0008400D0F82500C1F8250026B1002140F24A -:104DF0006340AFF30080284670BD2DE9FC41844636 -:104E0000DF481546089C00EB85170E4617F814007E -:104E1000012803D0022801D00020C7E70B46DA4A58 -:104E20000121604600F08DFDA8B101AB6A4629461C -:104E30003046FFF754FF70B1D1489DF804209DF82B -:104E40000010803000EB85068A4208D02B460520F2 -:104E5000FFF7A4FB0BE02A462146042014E020299A -:104E600003D007EB4100407801E096F8250007EBFE -:104E7000440148709DF80000202809D007EB40004D -:104E800044702A4621460320FFF75AFB01208DE794 -:104E900006F8254F0120F070F3E7B84901EB001048 -:104EA000001DFFF7D6BB7CB51D46134604460E46D3 -:104EB00000F1080221461846EDF7CCFE94F90800EF -:104EC0000F2804DD1F3820722068401C206096B136 -:104ED0000220AE4951F82610461820686946801B0A -:104EE00020F07F40206094F908002844C01C1F284F -:104EF00003DA012009E00420EBE701AAEDF7AAFE9E -:104F00009DF8040010B10098401C009000992068A2 -:104F100031440844C01C20F07F4060607CBD2DE916 -:104F2000FE430C46064609786079907220799846CF -:104F30001546507241B19248803090F82E102029C9 -:104F40000AD00069401D0BE0D4E90223217903B0A7 -:104F50002846BDE8F043A6E78D484178701D084417 -:104F600020F07F47217900222846A368FFF79BFFA6 -:104F70003946284600F0F9FCD4E902322179684626 -:104F8000FFF791FF41462846019CFFF7F5FE2B46AF -:104F900022460021304600F0D4FC002803D13146DF -:104FA000284600F0E2FCBDE8FE832DE9FE4F814675 -:104FB00000F097FC30B1002799F8000020B10020E4 -:104FC000BDE8FE8F0127F7E76D4D6E4C4FF0000AEC -:104FD000803524B1002140F2D640AFF3008095F82F -:104FE0002D8085F823A0002624B1002140F2DB406B -:104FF000AFF300801FB94046FFF7DAFE804624B1C8 -:10500000002140F2E340AFF30080EDF7A4FD4346FA -:105010006A464946FFF783FF24B1002140F2E94088 -:10502000AFF3008095F82E0020280CD02969009855 -:10503000401A0002C21700EB1260001203D5684646 -:1050400000F093FC012624B1002140F2F340AFF3BD -:10505000008095F823000028BBD124B1002140F244 -:10506000F940AFF30080EDF776FD6B46464A00212C -:1050700000F067FC0028A3D027B941466846FFF737 -:105080007BFE064326B16846FFF7E3FAC9F808003D -:1050900024B1002140F20C50AFF3008001208FE7D3 -:1050A0002DE9FF5F8A46814600F01BFC344C8034BA -:1050B00010B39AF80000002710B1012800D0FFDFDC -:1050C000304D25B1002140F28250AFF30080012025 -:1050D000A84600905FEA080604D0002140F28A50FA -:1050E000AFF30080009800F0F3FB94F82D500020FF -:1050F00084F8230067B119E094F82E0001272028D6 -:1051000000D1FFDF9AF800000028D9D0FFDFD7E7F1 -:105110002846FFF74DFE054626B1002140F2945087 -:10512000AFF3008094F823000028D3D126B10021EA -:1051300040F29E50AFF30080EDF70DFD83462B4605 -:1051400001AA5146FFF7EBFE5FEA060804D00021F2 -:1051500040F2A550AFF300803B462A4601A95846CD -:10516000CDF80090FFF749FE064604EB850090F865 -:1051700028B0B8F1000F11D000210BE04C0800203E -:105180004C0A002000000000FFFF3F007C5C020092 -:105190009E00002040F2AC50AFF3008000F08DFB89 -:1051A0000090B8F1000F04D0002140F2B250AFF3EC -:1051B000008094F8230000288CD1B8F1000F04D0AF -:1051C000002140F2BA50AFF30080FE490DF1040C0B -:1051D00001EB09109CE80E0000F1040080E80E00CD -:1051E0004EB35FEA080604D0002140F2C750AFF387 -:1051F00000803BEA070012D094F82E0020280ED140 -:1052000026B1002140F2CC50AFF300802846FFF7D2 -:10521000B8FB20B99AF80000D8B3012849D0B8F1FA -:10522000000F04D0002140F2E950AFF3008028467F -:1052300000F03CFB01265FEA080504D0002140F2A3 -:10524000F250AFF30080009800F042FB25B100213E -:1052500040F2F650AFF300808EB194F82D0004EBCD -:10526000800090F82600202809D025B1002140F2C6 -:10527000FD50AFF30080D4484078EDF74DFE25B1E6 -:10528000002140F20260AFF3008004B03046BDE878 -:10529000F09FFFE7B8F1000F04D0002140F2D45096 -:1052A000AFF3008094F82D2049460420FFF748F919 -:1052B000C0E7002E3FF40EAF002140F2DF50AFF305 -:1052C000008007E72DE9F84FC04D814695F82D0085 -:1052D0004FF00008BE4C4FF0010B474624B10021AF -:1052E0004FF4C260AFF30080584600F0F1FA85F841 -:1052F000237024B1002140F21560AFF3008095F8CF -:105300002D00FFF755FD064695F8230028B1002C27 -:10531000E4D0002140F21B604BE024B1002140F2B8 -:105320001F60AFF30080A948803800EB861111F8A8 -:105330001900032856D1334605EB830A4A469AF8EA -:105340002500904201D1012000E0002000900AF1E8 -:1053500025000021FFF761FC01460098014203D0BF -:1053600001228AF82820AF77E1B324B1002140F26E -:105370002460AFF30080324649460120FFF7E0F891 -:105380009AF828A024B1002140F22F60AFF30080EA -:1053900000F093FA834624B1002140F23460AFF369 -:1053A000008095F8230038B1002C97D000214FF4ED -:1053B000C760AFF3008091E7BAF1000F07D095F80E -:1053C0002E00202803D13046FFF7DBFAE0B124B1EC -:1053D000002140F24C60AFF30080304600F066FAE6 -:1053E0004FF0010824B1002140F25560AFF3008076 -:1053F000584600F06DFA24B1002140F25960AFF335 -:1054000000804046BDE8F88F002CF1D0002140F22A -:105410004760AFF30080E6E70020EDF7D7BA012040 -:10542000EDF7D4BA6848007870472DE9F041674C31 -:1054300094F82E0020281FD194F82D6004EB8607E5 -:1054400097F82550202D00D1FFDF6049803901EB0E -:10545000861000EB4500407807F8250F0120F87012 -:1054600084F82300294684F82E5032460220223444 -:10547000FFF766F8002020700DE42DE9F041514E51 -:10548000524C012538B1012821D0022879D00328B7 -:105490007DD0FFDFF0E700F03CFAFFF7C6FF207E8B -:1054A00000B1FFDF84F821500020EDF7B6FAA168C3 -:1054B000481C04D0012300221846EDF701FB14F824 -:1054C0002E0F217806EB01110A68012154E0FFF745 -:1054D000ACFF0120EDF7A1FA94F8210050B1A068CB -:1054E000401C07D014F82E0F217806EB01110A6832 -:1054F000062141E0207EDFF8D080002708F1020875 -:10550000012803D002281ED0FFDFB5E7A777EDF70B -:1055100072FB98F80000032801D165772577607D3C -:105520002C4951F8200094F8201051B948B1616815 -:105530000123091A00221846EDF7C2FA022020764C -:105540009AE7277698E784F8205000F0E2F9A07FE8 -:1055500050B198F8010061680123091A0022184629 -:10556000EDF7AEFA257600E0277614F82E0F2178B5 -:1055700006EB01110A680021BDE8F041104700E088 -:1055800005E011480078BDE8F041EDF7C5BCFFF734 -:105590004CFF14F82E0F217806EB01110A68052143 -:1055A000EAE710B5094C94F82E00202800D1FFDF5F -:1055B00014F82E0F2178034A02EB01110A68042126 -:1055C0000AE000004C0800209C000020CC0A0020CB -:1055D000000000007C5C0200BDE8104010477CB574 -:1055E000E74C054694F82E00202800D1FFDFA06884 -:1055F000401C00D0FFDF94F82E00E24901AA01EB25 -:105600000010694690F90C002844EDF723FB9DF942 -:1056100004000F2801DD012000E00020009908446B -:105620006168084420F07F41A16094F821000028BF -:1056300007D002B00123BDE8704000221846EDF704 -:105640003FBA7CBD30B5D04A0B1A541CB3EB940F53 -:1056500012D3451AB5EB940F0ED3934203D9101A07 -:1056600043185B1C08E0954204D9511A0844401CB9 -:10567000434201E0FFDF0023184630BD0123002232 -:1056800001460220EDF71CBA0220EDF7C6B9EDF78E -:1056900062BA2DE9FC47BA4C054694F82E00202842 -:1056A00000D1FFDF642D58D3B84A0021521B71EBA3 -:1056B000010052D394F82E20A0462046DFF8C49271 -:1056C00090F82D7009EB0214D8F8000001AA2844C4 -:1056D0006946EDF7BFFA9DF90400002802DD009845 -:1056E000401C0090A068009962684618B21A22F027 -:1056F0007F42B2F5800F30D208EB8702444692F821 -:105700002520202A0AD009EB02125268101A000242 -:10571000C21700EB1260001288421EDBA068401C1A -:1057200010D0EDF718FAA168081A0002C11700EBB3 -:1057300011600012022810DD0120EDF76EF94FF024 -:10574000FF30A06020682844206026F07F40206160 -:10575000012084F82300BDE8FC870020FBE72DE949 -:10576000F047874C074694F82D00A4F1800606EB1D -:10577000801010F8170000B9FFDF94F82D50A046F4 -:10578000834C24B1002140F66D00AFF3008040F659 -:10579000790940F6820A06EB851600BF16F8170055 -:1057A000012818D0042810D005280ED006280CD0C7 -:1057B0001CB100214846AFF3008020BF002CEDD083 -:1057C00000215046AFF30080E8E72A463946012021 -:1057D000FEF7B6FEF2E74FF0010A4FF0000945462A -:1057E00024B1002140F68900AFF30080504600F05C -:1057F0006FF885F8239024B1002140F68E00AFF3B6 -:10580000008095F82D00FFF7D3FA064695F823009F -:1058100028B1002CE4D0002140F694001FE024B110 -:10582000002140F69800AFF3008005EB860000F100 -:10583000270133463A462630FFF7EFF924B100211D -:1058400040F69C00AFF3008000F037F8824695F8F0 -:10585000230038B1002CC3D0002140F6A200AFF3E2 -:105860000080BDE785F82D60012085F823005046B3 -:1058700000F02EF8002C04D0002140F6AF00AFF36A -:105880000080BDE8F08730B504463D480D4690F8ED -:105890002D003B49803901EB801010F8140000B94D -:1058A000FFDF384800EB0410C57330BD344981F880 -:1058B0002D00012081F82300704710B5354808B14C -:1058C000AFF30080EFF3108000F0010072B610BD5E -:1058D00010B5002804D1304808B1AFF3008062B69B -:1058E00010BD2E480068C005C00D10D0103840B261 -:1058F000002804DB00F1E02090F8000405E000F04F -:105900000F0000F1E02090F8140D400970470820C6 -:10591000704710B51A4C94F82400002804D1F6F70B -:105920008DF8012084F8240010BD10B5144C94F8B3 -:105930002400002804D0F6F7AAF8002084F82400F8 -:1059400010BD10B51C685B68241A181A24F07F4437 -:1059500020F07F40A14206D8B4F5800F03D29042D8 -:1059600001D8012010BD002010BDD0E90032D21AAC -:1059700021F07F43114421F07F41C0E9003170479D -:10598000CC0A00204C080020FF7F841EFF1FA107C7 -:1059900000000000000000000000000004ED00E036 -:1059A0002DE9F041044680074FF000054FF0010655 -:1059B0000CD56B48056006600EF0A5FE20B1694865 -:1059C000016841F48061016024F00204E0044FF0BA -:1059D000FF3705D564484660C0F8087324F4805446 -:1059E000600003D56148056024F08044E0050FD5D0 -:1059F0005F48C0F80052C0F808735E490D60091D89 -:105A00000D605C4A04210C321160066124F480743C -:105A1000A00409D558484660C0F80052C0F8087381 -:105A20005648056024F40054C4F38030C4F3C031F8 -:105A3000884200D0FFDF14F4404F14D05048466035 -:105A4000C0F808734F488660C0F80052C0F8087369 -:105A50004D490D600A1D16608660C0F808730D6020 -:105A6000166024F4404420050AD548484660866004 -:105A7000C0F80873C0F848734548056024F4006412 -:105A80000EF0F2FF4348044200D0FFDFBDE8F08192 -:105A9000F0B50022202501234FEA020420FA02F18A -:105AA000C9072DD051B2002910DB00BF4FEA5117B2 -:105AB0004FEA870701F01F0607F1E02703FA06F611 -:105AC000C7F88061BFF34F8FBFF36F8F0CDB00BF50 -:105AD0004FEA51174FEA870701F01F0607F1E02749 -:105AE00003FA06F6C7F8806204DB01F1E02181F8D1 -:105AF000004405E001F00F0101F1E02181F8144DAF -:105B000002F10102AA42C9D3F0BD10B5224C2060B7 -:105B10000846F6F7A8F82068FFF742FF2068FFF76D -:105B2000B7FF0EF087FB00F01AF90EF09DFF0EF0A4 -:105B3000E0FEEDF7BDF9BDE810400EF02BBC10B54E -:105B4000154C2068FFF72CFF2068FFF7A1FF0EF02F -:105B50008BFFF6F77BF90020206010BD0A2070470C -:105B6000FC1F00403C17004000C0004004E501401D -:105B7000008000400485004000D0004004D5004073 -:105B800000E0004000F0004000F5004000B00040A0 -:105B900008B50040FEFF0FFDA000002070B52649AB -:105BA0000A680AB30022154601244B685B1C4B604F -:105BB0000C2B00D34D600E7904FA06F30E681E42DA -:105BC0000FD0EFF3108212F0010272B600D0012262 -:105BD0000C689C430C6002B962B649680160002001 -:105BE00070BD521C0C2AE0D3052070BD4FF0E0219F -:105BF0004FF48000C1F800027047EFF3108111F0FC -:105C0000010F72B64FF0010202FA00F20A4803686F -:105C100042EA0302026000D162B6E7E706480021CB -:105C200001604160704701218140034800680840DD -:105C300000D0012070470000A4000020012081074F -:105C4000086070470121880741600021C0F80011F9 -:105C500018480170704717490120087070474FF0CD -:105C60008040D0F80001012803D0124800780028B5 -:105C700000D00120704710480068C00700D0012004 -:105C800070470D480C300068C00700D001207047F5 -:105C90000948143000687047074910310A68D20378 -:105CA00006D5096801F00301814201D10120704746 -:105CB00000207047AC000020080400400021017063 -:105CC000084670470146002008707047EFF31081C6 -:105CD00001F0010172B60278012A01D0012200E030 -:105CE00000220123037001B962B60AB10020704797 -:105CF0004FF400507047E9E7EFF3108111F0010F06 -:105D000072B64FF00002027000D162B600207047F8 -:105D1000F2E700002DE9F04115460E460446002743 -:105D200000F0E7F8A84215D3002341200FE000BFA0 -:105D300094F84220A25CF25494F84210491CB1FB42 -:105D4000F0F200FB12115B1C84F84210DBB2AB4294 -:105D5000EED3012700F0D9F83846BDE8F08170494C -:105D600010B5802081F800046E49002081F84200BF -:105D700081F84100433181F8420081F8410043310C -:105D800081F8420081F841006748FFF797FF6648B5 -:105D9000401CFFF793FFECF7F9FFBDE8104000F05F -:105DA000B4B8402070475F4800F0A3B80A460146E7 -:105DB0005C48AFE7402070475A48433000F099B83C -:105DC0000A46014657484330A4E7402101700020AD -:105DD000704710B504465348863000F08AF82070AA -:105DE000002010BD0A4601464E4810B58630FFF728 -:105DF00091FF08B1002010BD42F2070010BD70B540 -:105E00000C460546412900D9FFDF48480068103894 -:105E100040B200F050F8C6B20D2000F04CF8C0B20D -:105E2000864203D2FFDF01E0EDF700F82246294663 -:105E30003C48FFF76FFF0028F6D070BD2DE9F04118 -:105E4000394F002506463F1D57F82540204600F0F3 -:105E500041F810B36D1CEDB2032DF5D3314843303A -:105E600000F038F8002825D02E4800F033F800283C -:105E700020D02C48863000F02DF800281AD0ECF7FE -:105E8000ABFF2948FFF722FFB0F5005F00D0FFDF2E -:105E9000BDE8F0412448FFF72FBF94F841004121AD -:105EA000265414F8410F401CB0FBF1F201FB120024 -:105EB0002070D3E751E7002804DB00F1E02090F8E0 -:105EC000000405E000F00F0000F1E02090F8140D50 -:105ED0004009704710F8411F4122491CB1FBF2F301 -:105EE00002FB13114078814201D10120704700204C -:105EF000704710F8411F4078814201D3081A02E030 -:105F0000C0F141000844C0B2704710B50648FFF721 -:105F1000DDFE002803D1BDE81040ECF748BF10BDFE -:105F20000DE000E0FC0A0020B000002004ED00E0DD -:105F300070B5154D2878401CC4B26878844202D0F0 -:105F4000F6F71BF82C7070BD2DE9F0410E4C4FF0A8 -:105F5000E02600BFF6F706F820BF40BF20BF6778F5 -:105F600020786070D6F80052EBF74AFA854305D1E5 -:105F7000D6F8040210B92078B842EBD0F5F7EDFF5F -:105F80000020BDE8F0810000C00000202DE9F041B4 -:105F9000012528034FF0E0210026C1F88001BFF35E -:105FA0004F8FBFF36F8F1F4CC4F800610C2000F0BF -:105FB0002CF81D4801680268C94341F3001142F002 -:105FC00010020260C4F804532560491C00E020BFA1 -:105FD000D4F80021002AFAD019B9016821F0100183 -:105FE0000160124807686560C4F80853C4F800618E -:105FF0000C2000F00AF83846BDE8F08110B50446E0 -:10600000FFF7C4FF2060002010BD002809DB00F06E -:106010001F02012191404009800000F1E020C0F8FA -:106020008012704700C0004010ED00E008C500403D -:106030002DE9F047FF4C0646FF21A06800EB061251 -:1060400011702178FF2910D04FF0080909EB0111D8 -:1060500009EB06174158C05900F0F4F9002807DD94 -:10606000A168207801EB061108702670BDE8F08762 -:1060700094F8008045460DE0A06809EB05114158F1 -:10608000C05900F0DFF9002806DCA068A84600EB44 -:1060900008100578FF2DEFD1A06800EB061100EB8A -:1060A00008100D700670E1E7F0B5E24B04460020E1 -:1060B00001259A680C269B780CE000BF05EB0017C1 -:1060C000D75DA74204D106EB0017D7598F4204D001 -:1060D000401CC0B28342F1D8FF20F0BD70B5FFF77D -:1060E000D6FAD44C08252278A16805EB021289580B -:1060F00000F0A8F9012808DD2178A06805EB01115E -:106100004058BDE87040FFF7B9BAFFF78BF9BDE81A -:106110007040ECF701BF2DE9F041C64C2578FFF740 -:10612000B6FAFF2D6ED04FF00808A26808EB0516EE -:10613000915900F087F90228A06801DD80595DE0DF -:1061400000EB051109782170022101EB0511425C79 -:106150005AB1521E4254815901F5800121F07F410C -:1061600081512846FFF764FF34E00423012203EB4A -:10617000051302EB051250F803C0875CBCF1000F59 -:1061800010D0BCF5007F10D9CCF3080250F806C03F -:106190000CEB423C2CF07F4C40F806C0C3589A1AD6 -:1061A000520A09E0FF2181540AE0825902EB4C3285 -:1061B00022F07F428251002242542846FFF738FFE6 -:1061C0000C21A06801EB05114158E06850F8272028 -:1061D000384690472078FF2814D0FFF758FA2278E5 -:1061E000A16808EB02124546895800F02BF90128F6 -:1061F00093DD2178A06805EB01114058BDE8F0411E -:10620000FFF73CBABDE8F081F0B51D4614460E46D6 -:106210000746FF2B00D3FFDFA00700D0FFDF854834 -:10622000FF210022C0E90247C5700671017042706B -:1062300082701046012204E002EB0013401CE1547E -:10624000C0B2A842F8D3F0BD70B57A4C0646657866 -:106250002079854200D3FFDFE06840F82560607850 -:10626000401C6070284670BD2DE9FF5F1D468B46BF -:106270000746FF24FFF70BFADFF8B891064699F8B6 -:106280000100B84200D8FFDF00214FF001084FF0B5 -:106290000C0A99F80220D9F808000EE008EB011367 -:1062A000C35CFF2B0ED0BB4205D10AEB011350F8A3 -:1062B00003C0DC450CD0491CC9B28A42EED8FF2C81 -:1062C00002D00DE00C46F6E799F803108A4203D19C -:1062D000FF2004B0BDE8F09F1446521C89F802204C -:1062E00008EB04110AEB0412475440F802B00421F1 -:1062F000029B0022012B01EB04110CD040F801207D -:106300004FF4007808234FF0020C454513D9E905F6 -:10631000C90D02D002E04550F2E7414606EB41329A -:1063200003EB041322F07F42C250691A0CEB0412F3 -:10633000490A81540BE005B9012506EB453103EB11 -:10634000041321F07F41C1500CEB0411425499F821 -:1063500000502046FFF76CFE99F80000A84201D0DB -:10636000FFF7BCFE3846B4E770B50C460546FFF7AC -:106370008EF9064621462846FFF796FE0446FF287A -:106380001AD02C4D082101EB0411A8684158304661 -:1063900000F058F800F58050C11700EBD1404013D1 -:1063A0000221AA6801EB0411515C09B100EB412004 -:1063B000002800DC012070BD002070BD2DE9F047F1 -:1063C00088468146FFF770FE0746FF281BD0194D0F -:1063D0002E78A8683146344605E0BC4206D02646F1 -:1063E00000EB06121478FF2CF7D10CE0FF2C0AD03A -:1063F000A6420CD100EB011000782870FF2804D0D1 -:10640000FFF76CFE03E0002030E6FFF73DF9414660 -:106410004846FFF7A9FF0123A968024603EB0413CE -:10642000FF20C854A878401EB84200D1A87001EBE4 -:10643000041001E0C80B002001EB06110078087081 -:10644000104613E6081A0002C11700EB1160001293 -:10645000704700005E48002101704170102181707A -:10646000704770B5054616460C460220ECF730FA28 -:106470005749012008705749F01E086056480560CA -:10648000001F046070BD10B50220ECF721FA5049DE -:106490000120087051480021C0F80011C0F8041113 -:1064A000C0F808114E494FF40000086010BD48487C -:1064B0000178D9B14B4A4FF4000111604749D1F836 -:1064C00000310022002B1CBFD1F80431002B02D078 -:1064D000D1F8081119B142704FF0100104E04FF0EB -:1064E0000101417040490968817002704FF000005D -:1064F000ECF7EEB910B50220ECF7EAF934480122C6 -:10650000002102703548C0F80011C0F80411C0F82D -:106510000811026010BD2E480178002904BF4078A0 -:1065200070472E48D0F80011002904BF02207047A0 -:10653000D0F8001100291CBFD0F80411002905D0A3 -:10654000D0F80801002804BF0120704700207047E0 -:106550001F4800B50278214B4078C821491EC9B2B6 -:1065600082B1D3F800C1BCF1000F10D0D3F8000104 -:1065700000281CBFD3F8040100280BD0D3F8080171 -:1065800050B107E0022802D0012805D002E000291E -:10659000E4D1FFDF002000BD012000BD0C480178E0 -:1065A000002904BF807870470C48D0F800110029FA -:1065B0001CBFD0F80411002902D0D0F8080110B196 -:1065C0004FF01000704708480068C0B270470000E4 -:1065D000C200002010F5004008F5004000F0004027 -:1065E00004F5014008F5014000F400405648002140 -:1065F00001704170704770B5064614460D46012083 -:10660000ECF766F951480660001D0460001D056046 -:106610004F490020C1F850014E49032008604F49FE -:106620004D480860091D4E48086070BD2DE9F041D5 -:10663000054645480C46012606704A4945EA02408F -:1066400040F0807008600EF034F8002804BF46481F -:1066500004600027454CC4F804714649444808606A -:10666000002D02BFC4F800622660BDE8F081012D54 -:1066700018BFFFDFC4F80072266040493E4808603A -:10668000BDE8F0813048017871B13A4A384911606B -:106690003649D1F804210021002A08BF417002D0F8 -:1066A000374A1268427001700020ECF711B9264891 -:1066B0000178002904BF407870472C48D0F80401C5 -:1066C000002808BF70472E480068C0B270470028F5 -:1066D00008BF704730B51C480078002808BFFFDFAE -:1066E0002248D0F80411002918BF30BD0224C0F898 -:1066F0000443DFF890C0DCF80010C1F30015DCF8AB -:10670000001041F01001CCF80010D0F8041100295D -:1067100004BF4FF400414FF0E02206D1C2F88012CE -:1067200020BFD0F80431002BF8D02DB9DCF80010D0 -:1067300021F01001CCF80010C0F8084330BD0B491F -:106740000120886070470000C500002008F5004067 -:10675000001000401CF500405011004098F5014029 -:106760000CF0004004F5004018F5004000F0004037 -:106770000000020308F501400000020204F5014098 -:1067800000F4004010ED00E010B5FF4800240121A6 -:106790004470047044728472C17280F82540C462EF -:1067A000846380F83C4080F83D40FF2180F83E1033 -:1067B00018300FF0DFF8F549601E0860091D086009 -:1067C000091D0C60091D0860091D0C60091D086089 -:1067D000091D0860091D0860091D0860091D086081 -:1067E000091D0860091D0860091D0860091D086071 -:1067F00010BDE748016801F00F01032904BF012023 -:106800007047016801F00F01042904BF022070479E -:10681000016801F00F01052904D0006800F00F00A5 -:10682000062807D1DB48006810F0060F0CBF0820CF -:106830000420704700B5FFDF012000BD10B5D24C29 -:106840000168A1614168E161007A84F82000207E3E -:1068500048B1207FF7F7F3FCA07E011C18BF01218F -:10686000207FF7F7DBFC607E002808BF10BD607F4B -:10687000F7F7E5FCE07E011C18BF0121607FBDE851 -:106880001040F7F7CBBC30B50024054601290AD0EB -:10689000022908BF4FF0807405D0042916BF0829CB -:1068A0004FF0C744FFDF44F4847040F48010BA49CD -:1068B000086045F4403001F1040140F000700860C8 -:1068C00030BD30B50024054601290AD0022908BF91 -:1068D0004FF0807405D0042916BF08294FF0C74433 -:1068E000FFDF44F4847040F48010AB49086045F445 -:1068F000403001F1040140F000700860A748D0F872 -:106900000001002818BFFFDF30BD2DE9F04102274C -:106910004FF0E02801260024C8F88071BFF34F8FA4 -:10692000BFF36F8F9E48046006600DF0ECFE9D4D36 -:1069300018B1286840F4806028600DF0BAFE38B1C4 -:10694000286820F0770040F0880040F00040286080 -:10695000964995480860964940F25B600860091FB7 -:1069600040F203100860081F066089490320086090 -:1069700090480660914A90491160924A904911608E -:10698000121F91491160016821F440710160016892 -:1069900041F480710160C8F8807280491020C1F80C -:1069A0000403794880F83140C462BDE8F081764A3A -:1069B0000368C2F802308088D08011727047724B31 -:1069C00010B51A7A8A4208D101460622981C0EF0A8 -:1069D000F5FD002804BF012010BD002010BD6A484D -:1069E00090F825007047684A517010707047F0B5F4 -:1069F0000546800000F1804000F580508B88C0F88B -:106A000020360B78D1F8011043EA0121C0F80016B6 -:106A100005F10800012707FA00F66C4C002A04BFB4 -:106A20002068B04304D0012A18BFFFDF206830433C -:106A30002060206807FA05F108432060F0BD0EF0E1 -:106A400069B9514890F832007047614AC1781160C5 -:106A500000686049000208607047252808BF0221CD -:106A60000ED0262808BF1A210AD0272808BF502197 -:106A700006D00A2894BF0422062202EB4001C9B2C4 -:106A8000554A11605549086070472DE9F041434E61 -:106A9000804603200D46C6F800025249504808605F -:106AA00028460EF076F9384F0124B8F1000F04BFE4 -:106AB000BC72346026D0B8F1010F23D14A48006877 -:106AC00060B915F00C0F09D0C6F80443012000F09E -:106AD000F0FEF463346487F83C4002E0002000F0EC -:106AE000E8FE28460EF03DFA0220B8720DF0F9FDDE -:106AF00038B90DF008FE20B93C48016841F4C021C6 -:106B0000016074603A48C4643A4800682946BDE8A8 -:106B1000F04100F072BE2DE9F047204E814603207F -:106B20000D46C6F80002DFF8BC802D48C8F800000A -:106B300008460EF02EF928460EF013FA0124124FE3 -:106B4000B9F1000F03D0B9F1010F0AD060E0BC72B7 -:106B5000B86B40F48010B8634FF48010C8F80000A0 -:106B600056E00220B872B86B40F40010B8634FF4DE -:106B70000010C8F800001C480068E8BB15F00C0FB6 -:106B800043D0C6F8044338E0D80B0020000E004084 -:106B9000101500401414004014150040001000406F -:106BA000FC1F00403C1700402C0000897817004073 -:106BB000381500405016004000000C0408F5014054 -:106BC00040800040A4F501401011004040160040F4 -:106BD000241500401C1500400815004054150040C5 -:106BE0000000040404F501408817004068150040C7 -:106BF000008000404C85004007E0012000F059FE75 -:106C0000F463346487F83C4002E0002000F051FE59 -:106C1000ECF73CF82946BDE8F04700F0EEBD2DE961 -:106C2000F84FFA4C8246032088461746C4F8000203 -:106C3000DFF8E093F648C9F8000010460EF0A9F816 -:106C4000DFF8D4B3F54E0125BAF1000F04BFCBF83D -:106C50000040B57204D0BAF1010F18BFFFDF2FD08A -:106C6000EF48C0F80080F049EE480860B06B40F48F -:106C70000020B063D4F800321021C4F808130020BB -:106C8000C4F80002DFF8A4C38A03CCF80020C4F8DB -:106C90000001C4F80C01C4F81001C4F80401C4F8E0 -:106CA0001401C4F81801E24800680090C4F80032EA -:106CB000C9F80020C4F80413BAF1010F09D01BE091 -:106CC00038460EF04EF9DB48CBF800000220B072D7 -:106CD000C6E7D948006860B917F00C0F09D0C4F8AE -:106CE0000453012000F0E5FDE563256486F83C507F -:106CF00002E0002000F0DDFD4FF40020C9F80000A4 -:106D0000CE48C564CE480068404528BFFFDF3946FD -:106D10004046BDE8F84F00F070BD2DE9F041BF4C92 -:106D20000646002594F8310017468846002808BF1B -:106D3000FFDF16B1012E16D021E094F831000128B2 -:106D400008D094F83020394640460EF037F8E16A12 -:106D5000451814E094F830103A4640460EF06CF8AE -:106D6000E16A45180BE094F8310094F830100128DE -:106D70003A46404609D00EF087F8E16A45183A468F -:106D800029463046BDE8F04149E70EF037F8E16AA0 -:106D90004518F4E72DE9F84F9C4CD4F8000220F098 -:106DA0000B09D4F804034FF0100AC0F30018C4F81C -:106DB00008A30026C4F800629C48A2490160974DD0 -:106DC0000127A97A012902D0022903D015E0297EE2 -:106DD00011B912E0697E81B1A97FEA7F07FA01F15A -:106DE00007FA02F21143016095F82000800000F1DB -:106DF000804000F5C040C0F81065FF208DF800000D -:106E0000C4F81061276104E09DF80000401E8DF871 -:106E100000009DF8000018B1D4F810010028F3D04C -:106E20009DF80000002808BFFFDFC4F810610020B3 -:106E300000F03FFD6E72AE72EF72C4F80092B8F1CE -:106E4000000F18BFC4F804A3BDE8F88FFF2008B5F1 -:106E50008DF800006D480021C0F81011012101617A -:106E600005E000BF9DF80010491E8DF800109DF848 -:106E7000001019B1D0F810110029F3D09DF80000CE -:106E8000002808BFFFDF08BD00686F4920F07F4081 -:106E9000086070474FF0E0200221C0F8801100F533 -:106EA000C070BFF34F8FBFF36F8FC0F800117047F2 -:106EB0004FF0E0210220C1F80001704763490870DB -:106EC000704763490860704770B50546EBF7DEFE12 -:106ED000524C2844E16A884298BFFFDF01202074A9 -:106EE000EBF7D4FE554A284400216061C2F84411F2 -:106EF00058490860A06B474940F48000A063D00166 -:106F0000086070BD70B5454C0546534A0220207498 -:106F100010680E4600F00F00032808BF012213D0AE -:106F2000106800F00F00042808BF02220CD010687F -:106F300000F00F0005281BD0106800F00F00062895 -:106F40001CBFFFDF012213D094F8310094F83010F9 -:106F5000012815D028460DF0DEFF38496061002079 -:106F6000C1F844016169E06A08443A49086070BDAB -:106F70003A48006810F0060F0CBF08220422E3E72D -:106F8000334628460DF095FFE7E728494FF4800087 -:106F900008602248816B21F4800181630021017423 -:106FA0007047C20002F1804202F5F8322C4BC2F861 -:106FB0001035C2F8141501218140164801601748A8 -:106FC000826B1143816370471C4801214160C1609D -:106FD0000021C0F844111F4801601048C162704789 -:106FE000204908600948D0F8001241F04001C0F87B -:106FF000001270470548D0F8001221F04001C0F897 -:10700000001218490020086070470000001000407E -:107010000000040404F50140ACF50140D80B002049 -:107020004885004048810040A8F5014008F501402E -:1070300018110040041000408817004000800040F4 -:107040004C85004000000C043C150040C7000020A7 -:107050000415004044850040101500401414004001 -:107060000411004060150040FE48D0F8001221F0E5 -:107070001001C0F80012012181617047FA49FF2018 -:1070800081F83E00F7480021C0F81C11D0F800122A -:1070900041F01001C0F800127047F24981B0D1F8F8 -:1070A0001C21012A0DD0F04991F83E10FF290DBF97 -:1070B00000204942017001B008BF7047012001B0B3 -:1070C0007047EA4A126802F07F02524202700020C2 -:1070D000C1F81C01E64800680090EFE7F0B51746DC -:1070E0000C00064608BFFFDFDF4D14F0010F2F73C1 -:1070F0001CBF012CFFDF002E0CBF01200220687294 -:10710000EC7201281CBF0228FFDFF0BD2DE9F84F0B -:10711000DFF860A39AF80000042828BFFFDFD24CF4 -:10712000DFF85483CF4D94F83C0000260127E0B1EE -:10713000D5F8040110F1000918BF4FF00109D5F886 -:107140001001002818BF012050EA09014FF4002B5C -:1071500017D08021C5F80813C8F800B084F83C6047 -:1071600090F0010F18BFBDE8F88FDFF81093D9F841 -:107170004C0100287DD0A07A01287BD002287AD04B -:10718000A6E0D5F80001DFF8E4A218B3C5F8006165 -:107190006F61FF20009002E0401E009005D0D5F8FE -:1071A0001C0100280098F7D000B9FFDFDAF80000D2 -:1071B00000F07F0ABAF15F0F84BF002000F079FB76 -:1071C00084F83EA0C5F81C61C5F80873A84800689B -:1071D000009002E0B9F1000F03D0B9F1000F27D001 -:1071E00058E0DAF8000000F07F0084F83E00C5F8AF -:1071F0001C6194F83D1039B15F2816D9002000F0C9 -:1072000058FB2F64AF6310E09D4909688AB2090CEE -:107210005F2803D30F2A06D9022904D2012000F0E7 -:1072200048FB2F6401E02F64AF6391480068009031 -:107230008022C5F80423914887649249D1F800C0A0 -:107240000B1F1B6843F69827BC449C4519D20A685B -:1072500042F210731A440A60C0F848618B498A48A8 -:107260000860091F8A4808608A48C0F800B0A06B0F -:1072700002E02DE015E017E040F40020A063BDE837 -:10728000F88F0E60C0F84861C5F80823C8F800B050 -:10729000C0F848618020C5F80803C8F800B0BDE810 -:1072A000F88F207E10B913E0607E88B1A07FE17F67 -:1072B00007FA00F007FA01F10843C8F8000094F853 -:1072C0002000800000F1804000F5C040C0F810654B -:1072D0006948A16B0160A663217C002019B1D9F82F -:1072E0004411012900D00021A27A012A6ED0022A7D -:1072F00074D000BFD5F8101101290CBF1021002156 -:1073000041EA00086448016811F0FF0F03D0D5F886 -:107310001411012900D0002184F83210006810F007 -:10732000FF0F03D0D5F81801012800D0002084F801 -:1073300033005A48006884F83400FFF7ECF801285D -:1073400018BF002084F83500C5F80061C5F80C614D -:10735000C5F81061C5F80461C5F81461C5F8186175 -:107360004F48006800904548C0F844614D480068A7 -:10737000DFF834910090D9F80000A062A9F1040070 -:107380000068E0624948016801F00F01032908BF65 -:10739000012013D0016801F00F01042908BF022069 -:1073A0000CD0016801F00F01052926D0006800F01B -:1073B0000F0006281CBFFFDF01201ED084F830001C -:1073C000A07A84F8310002282CD11EE0D5F80C01F7 -:1073D000012814BF002008208CE7FFE7D5F80C0136 -:1073E000012814BF00200220314A1268012A14BF6C -:1073F00004220022104308437CE72E48006810F066 -:10740000060F0CBF08200420D8E7607850B12A4945 -:10741000096809780840217831EA000008BF84F83B -:10742000247001D084F8246018F0020F0AD0EBF722 -:107430002DFCA16A214A081A9AF80010490852F84E -:107440002110884718F0010F18BF4FF0000B41D0F2 -:10745000EBF71CFCE16A9AF80020081A184951F869 -:1074600022202FE000100040D80B002048150040DB -:107470001C110040C700002008F5014000800040BA -:10748000741500404885004014100040ACF50140E0 -:107490004881004004F501404016004010140040AF -:1074A0001811004044810040448500401015004000 -:1074B000001400401414004004150040945C0200C5 -:1074C000DC5C0200594690479AF8000010F0010F6A -:1074D0002FD10CE018F0020F18BF4FF0010BB7D1FD -:1074E00018F0080F18BF4FF0020BB1D1ECE7DFF82E -:1074F00004B4DBF80000007800F00F00072828BF74 -:1075000084F8256015D2DBF80000062200F109019D -:10751000A01C0EF053F840B9207ADBF8001009786F -:10752000B0EBD11F08BF012001D04FF0000084F85C -:107530002500E17A4FF0000011F0020F1CBF18F097 -:10754000020F18F0040F19D111F0100F1CBF94F89E -:107550003320002A02D094F835207AB111F0080FB8 -:107560001CBF94F82420002A08D111F0040F02D087 -:1075700094F8251011B118F0010F01D04FF001005F -:10758000617A19B168B1FFF705FC10E0DB48DA4910 -:107590000160D5F8000220F00300C5F80002E77290 -:1075A00005E001290DD0022918BFFFDF10D018F027 -:1075B000010F17D0D2489AF8001050F821008047E8 -:1075C00056E06672E772A7729621227B002006E0E1 -:1075D0006672E7720220A072227B96210120FFF7DB -:1075E0009CFBE4E718F0020F2DD018F0040F21D116 -:1075F0000DF077F8F0B90DF086F8D8B9C1480168F8 -:10760000001F0068C0F3006CC0F3425500F00F0388 -:10761000C0F30312C0F30320BCF1000F0AD0002B0B -:107620001CBF002A002805D1002918BF032D38BF30 -:1076300048F0040827EA9800B3499AF8002051F866 -:107640002210884714E018F0080F06D0AF489AF8C7 -:10765000001050F8210080470AE018F0100F08BF12 -:10766000FFDF05D0AA489AF8001050F821008047A3 -:10767000A07A022818BFBDE8F88F207C002808BF38 -:10768000BDE8F88FA349C1F84461022814D001284D -:1076900018BFFFDFE16A6069884298BFFFDF606959 -:1076A000C9F80000A06B4FF4800140F48000A06393 -:1076B00099480160BDE8F88F6169E06A0844EFE726 -:1076C0000021964A81B0002818BFC2F80012C2F803 -:1076D0000011C2F80C11C2F81011C2F80411C2F85E -:1076E0001411C2F818118E480068009001B070475C -:1076F000012804BF28207047022804BF18207047C3 -:10770000042812BF08284FF4A870704700B5FFDFA7 -:10771000282000BD012804BF41F6A470704702284C -:1077200004BF41F288307047042804BF46F21800B5 -:107730007047082804BF47F2A030704700B5FFDF4C -:1077400041F6A47000BD10B502280DD0012804BF79 -:1077500042F6CE3010BD042817BF082843F6A440D7 -:10776000FFDF41F66A0010BD0CF096FF30B90CF057 -:10777000A0FF002808BF41F6583001D041F2643024 -:1077800041F29A01084410BD012812BF02280020CE -:107790007047042812BF08284FF4C870704700B51E -:1077A000FFDF002000BD5D490820C1F800025349F9 -:1077B000514808605C495B480860091D5B480860E7 -:1077C000091D5B480860091D5A48086052494FF47A -:1077D0004020086070475848016803291BBF0068B3 -:1077E0000228012000207047534801680B291BBF65 -:1077F00000680A2801200020704750498A7A012A2F -:1078000049D0022A18BF70474B7E002B08BF704733 -:10781000012A44D0CB7E4A7F13F1000C18BF4FF0F1 -:10782000010C24231844464B18603A4B0020C3F83F -:107830004C0110028CF0010240EA025040F00312A9 -:1078400091F82000830003F1804303F5C043C3F89F -:1078500010253C4A8B7F02EB8000DA0002F1804267 -:1078600002F5F832C2F81405DFF8DCC0C2F810C522 -:10787000C97FCA0002F1804202F5F832C2F814054D -:107880003248C2F81005012000FA03F2884022496C -:107890001043086070470B7E002BB9D170478B7E78 -:1078A0000A7F002B14BF4FF0010C4FF0000C112386 -:1078B000B8E727490968C9B9264A2749136870B14A -:1078C00023F0820343F07D0343F0004313600A6812 -:1078D00022F0100242F0600242F0004205E023F084 -:1078E000004313600A6822F000420A60134981F8DD -:1078F0003D007047041500400000040408F50140F5 -:107900009C5C020054140040AC5C0200BC5C0200B1 -:10791000CC5C02000080004004F5014000100040F3 -:107920001811004000110040A0F501401410004063 -:107930001C1100401010004050150040D80B0020D2 -:107940004C850040006000404C8100401011004018 -:10795000881700403C1700407C17004010B53F4896 -:1079600022210DF0D6FE3D480024017821F01001BF -:107970000170012106F018F839494FF6FF7081F8BF -:107980002240888437490880488010BD70473449B8 -:107990008A8C824218BF7047002081F822004FF67F -:1079A000FF70888470472D49016070472D49088019 -:1079B00070472B498A8CA2F57F43FF3B03D00021FF -:1079C00001600846704791F822202549012A1ABF14 -:1079D0000160012000207047214901F1220091F847 -:1079E0002220012A04BF00207047012202701D4896 -:1079F00000888884104670471A49488070471849A3 -:107A0000184B8A8C5B889A4206D191F82220002A72 -:107A10001EBF016001207047002070471048114AC6 -:107A2000818C5288914209D14FF6FF71818410F800 -:107A3000221F19B1002101700120704700207047FA -:107A40000748084A818C5288914205D190F822005B -:107A500000281CBF00207047012070473E0C00200A -:107A6000180C0020C80000207047574A012340B17D -:107A7000012818BF7047137008689060888890814B -:107A8000704753700868C2F802008888D080704739 -:107A90004D4A10B1012807D00EE0507860B1D2F8FD -:107AA00002000860D08804E0107828B1906808606F -:107AB000908988800120704700207047424910B1AA -:107AC000012803D006E0487810B903E0087808B12F -:107AD000012070470020704730B58DB00C46054638 -:107AE0000D2104A80DF037FEE0788DF81F002079F5 -:107AF0008DF81E0060798DF81D0028680090686878 -:107B00000190A8680290E868039068460CF02CFC8D -:107B100020789DF82F1088420CD160789DF82E10A7 -:107B2000884207D1A0789DF82D10884202BF01201D -:107B30000DB030BD00200DB030BD30B50C4605464F -:107B40008DB04FF0030104F1030012B1FEF738F9D4 -:107B500001E0FEF754F960790D2120F0C00040F0FB -:107B60004000607104A80DF0F6FDE0788DF81F006C -:107B700020798DF81E0060798DF81D00286800902E -:107B800068680190A8680290E868039068460CF065 -:107B9000EBFB9DF82F0020709DF82E0060709DF883 -:107BA0002D00A0700DB030BD10B5002904464FF077 -:107BB000060102D0FEF704F901E0FEF720F9607932 -:107BC00020F0C000607110BDCC000020FE4840686D -:107BD00070472DE9F0410F46064601461446012044 -:107BE00005F0ABFA054696F85500FFF793FD4AF20B -:107BF000B12108444FF47A71B0FBF1F0718840F282 -:107C000071225143C0EB4100001BA0F2653403F028 -:107C10001FF8002818BF1E3CAF4234BF2846384624 -:107C2000A04203D2AF422CBF3C462C467462BDE852 -:107C3000F0812DE9FF4F95B0044690F85500894634 -:107C40001190DDE9171008431390E04800260578ED -:107C50000C2D28BFFFDFDE4F37F8158094F86C51EC -:107C60000C2D28BFFFDFDA4830F8150040441FFA1A -:107C700080F894F865000D280CBF012000200C90BE -:107C80001798002804BF94F80C0103282BD10C98F6 -:107C900048B3B4F88E01484525D1D4F81401C4F88E -:107CA0000001608840F2E2414843C4F80401B4F89E -:107CB0005A01B4F8E6100844C4F80801204602F05E -:107CC000D1FFB4F89201E08294F890016075B4F8A5 -:107CD00094016080B4F89601A080B4F89801E08027 -:107CE000022084F80C01D4F864011090D4F86001EB -:107CF0000F90B4F8E670B4F85801D4F85411089114 -:107D0000179921B194F8201151B100F0DDB804F1B8 -:107D1000E001039174310D9104F5A075091D07E090 -:107D200004F59A710391091D0D9104F59275091DD1 -:107D30000E91B4F85810A9EB0000A9EB01010FFA5D -:107D400080FA0FFA81FBBAF1000F05DAD4F850017E -:107D500008900120DA461390002002909B48007999 -:107D6000E8B3F3F7A5FFD0B3B4F8F800022836D390 -:107D700094F80C01022832D094F8230178BB94F8CF -:107D80006C81B8F10C0F28BFFFDF914830F8180064 -:107D900000F5C8601FFA80F894F80C0101287DD026 -:107DA000618840F2E24041430020B8F1000F05D065 -:107DB000884808FB01F1B1FBF0F0401C07EB0B0118 -:107DC000A1EB0A02D4F8141180B2431A029902FB03 -:107DD00003110291C4F81401012084F8230194F8DE -:107DE0000C01002874D0012800F04682022800F01F -:107DF0009481032818BFFFDF00F078820298311ABF -:107E00000898FCF704FC0D99012640F271220860E5 -:107E10000E98A0F80090002028702E710D98006830 -:107E2000A8606188D4F814015143C0EB4100674950 -:107E3000A0F23530C8618969814287BF0399086023 -:107E4000039801600398616A0068084400F2A51075 -:107E5000E86002F0FDFE10B1E8681E30E8606E7167 -:107E6000B4F8D000A0EB090000B20028C4BF032082 -:107E700068710C980028189800F09A82D8B100BF59 -:107E8000B4F8F81000290CBF0020B4F8FA00A4F8E8 -:107E9000FA0094F8FC20401C504300E019E08842AE -:107EA00009D26879401E002805DD6E71B4F8FA0029 -:107EB000401CA4F8FA001798002800F0A18294F85A -:107EC0002001002800F0988219B00220BDE8F08F50 -:107ED00065E094F86800032857D03B4894F85510A3 -:107EE00090F8300005F0D7FAE18A40F27122514350 -:107EF00000EB41010020D4F80421B8F1000F06D0B6 -:107F0000344808FB02F2B2FBF0F000F10100D4F8B3 -:107F10000031D4F80821A0EB030C029BC4F8000147 -:107F200002FB0C334FF0000007D000BF294808FBCC -:107F300001F1B1FBF0F000F10100D4F81011C4F828 -:107F40001001A0EB01011944608840F2E24300FBFC -:107F500003F34FF0000006D01E4808FB03F3B3FB09 -:107F6000F0F000F1010007EB0B03A3EB0A03A3EB16 -:107F70000202D4F81431A2F10102A0EB030302FBC8 -:107F800003110291C4F8140126E7E18A40F271223C -:107F9000D4F8040101FB02F100EB4101AAE70F98BC -:107FA000002808BFFFDF94F85510074890F830000C -:107FB00005F071FA0790E18A40F271204143079879 -:107FC00000EB4101002007E0600C0020DC000020F5 -:107FD000EC5C020040420F00B8F1000F07D000BF78 -:107FE000FF4808FB01F1B1FBF0F000F10100C4F81B -:107FF0001001618840F2E24001FB00F14FF0000007 -:1080000006D0F74808FB01F1B1FBF0F000F10100E8 -:10801000C4F8140186B221464FF00100D4F828A01C -:1080200005F08BF8074694F85500FFF773FB4AF20A -:10803000B12B58444FF47A78B0FBF8F0618840F2E5 -:1080400071225143C0EB4100801BA0F2653602F063 -:10805000FFFD002818BF1E3EBA4534BF38465046C3 -:10806000B04203D2BA452CBF56463E46666294F8EB -:108070005500FFF789FB00F2E140B0FBF8F10F98E3 -:108080000E1894F85500FFF77FFB074694F855004B -:10809000FFF740FB38444AF2AB310844B0FBF8F13B -:1080A000E28A40F2712042430798D4F8107100EB45 -:1080B0004200401AC01B3044A0F12006617D40F20E -:1080C000E24011FB00FA94F85500009010F00C0FFC -:1080D0000ABF00984EF62830FFF71CFB5844B0FB4F -:1080E000F8F000EB470000EB0A070098FFF700FBF1 -:1080F000384400F16201BB48816194F85500FFF7F4 -:1081000043FB00F2E140B0FBF8F10F980844301A4D -:10811000B0F53D7F98BFFFDF70E6E18A40F2712243 -:10812000D4F80401514300EB41010020B8F1000FE5 -:1081300007D000BFAA4808FB01F1B1FBF0F000F145 -:108140000100C4F81001608840F2E24100FB01F137 -:108150004FF0000006D0A24808FB01F1B1FBF0F09F -:1081600000F10100C4F8140186B221464FF001006D -:10817000D4F828A004F0E1FF804694F85500FFF7FA -:10818000C9FA4AF2B12B00EB0B014FF47A70B1FB44 -:10819000F0F0618840F271225143C0EB4100801B36 -:1081A000A0F2653602F054FD002818BF1E3EC245FD -:1081B00034BF40465046B04203D2C2452CBF56465B -:1081C000464666620FBB1898F8B194F85560304681 -:1081D000FFF7A0FA00EB0B014FF47A70B1FBF0F05F -:1081E000D4F81011E38A084440F27122D4F8041143 -:1081F0005A4301EB42010F1A3046FFF779FA109902 -:10820000081A3844A0F120060AE0E18A40F27122FF -:10821000D4F80401514300EB4100D4F81011461A80 -:10822000D4F80821D4F80011D4F8100101FB020A97 -:10823000607D40F2E24110FB01F894F8557017F0B0 -:108240000C0F0ABF38464EF62830FFF763FA00EBF2 -:108250000B014FF47A70B1FBF0F000EB4A00804460 -:108260003846FFF745FA404400F160015D488161FE -:10827000012084F80C01C1E5618840F2712251436C -:10828000D4F81401D4F80821C0EB410101FB0AF62F -:1082900007EB0B01891AD4F800C1D4F81031491E3C -:1082A0000CFB023201FB002A607D40F2E24110FB30 -:1082B00001F894F8557017F00C0F0ABF38464EF6C7 -:1082C0002830FFF727FA4AF2B12101444FF47A70BF -:1082D000B1FBF0F000EB4A0080443846FFF708FAA3 -:1082E000404400F160013F48816187E5628840F2C7 -:1082F0007121D4F814015143C0EB410000FB0AF690 -:1083000094F8640024281CBF94F8650024280BD13D -:10831000B4F88E01A9EB000000B2002804DB94F849 -:108320009101002818BF1190139800B3FFB910985D -:1083300000281ABF0F980028FFDF94F8550010F0AE -:108340000C0F14BF4EF62830FFF7E4F94AF2B121C2 -:1083500001444FF47A70B1FBF0F0361A94F85500EE -:10836000FFF7C6F91099081A3044A0F12006D4F896 -:10837000141107EB0B0000FB01F7119810F00C0F24 -:108380000ABF11984EF62830FFF7C4F94AF2B1211E -:1083900001444FF47A70B1FBF0F000EB47071198FD -:1083A000FFF7A6F9384400F160010E48816125E528 -:1083B00000287FF465AD94F80C0100283FF47BADF4 -:1083C000618840F27122D4F814015143C0EB41019D -:1083D000284604F0B7FD0004000C3FF46CAD03E048 -:1083E00040420F00DC0000202299002918BF0880BD -:1083F000012019B0BDE8F08F94F85C01FCF762FF32 -:1084000094F85C012946FCF74BFE20B1179880F0E8 -:10841000010084F8210119B00020BDE8F08F70B58B -:10842000FE4C607A00281CBF002070BD94F8340018 -:1084300038B1A16B606A884203D9F7F72AF90020A6 -:1084400070BDA06AE8B1F6F7BCF90546F6F730F85A -:10845000284442F210714618FCF7D8FB054629461D -:10846000E06AFDF7EFF8E562A16A8219914224BF44 -:10847000081AA06205D20120A062F7F70AF90020CD -:1084800070BD012070BDF8B5E44C0246E44F0025F4 -:108490006168606A052A48D2DFE802F0032F3437AA -:1084A0003E00A07A002660B101216846FDF788FCF5 -:1084B0009DF8000042F210710002B0FBF1F201FBE6 -:1084C0001206F6F77EF98119A069FCF7A0F8A06101 -:1084D000257403206075607A38B9207B04F110019F -:1084E000FCF7DEFD002808BFFFDF2584FCF798FAC3 -:1084F0007879BDE8F840EAF70FBDBDE8F840002103 -:1085000000F0B5BDC1F86001F8BDD1F86001BDE86B -:10851000F840012100F0ABBD84F83450FCF780FA3C -:108520007879BDE8F840EAF7F7BCFFDFF8BD2DE940 -:10853000F04FDFF8E892044683B099F800008B46CC -:1085400001270025B64E4FF00208032804BF99F812 -:108550000C00A0427ED1D9F80400706199F80000A7 -:10856000032818BFFFDF0324BBF1080F73D2DFE835 -:108570000BF0040F31312CD1D1C8C9F82450F6F7D3 -:10858000F7FC002818BFFFDFB47003B0BDE8F08F20 -:10859000F5F78EFF0446D9F81C00A04228BFC9F8A1 -:1085A0001C4005D2201AFDF774F8C9F81C4038B1F8 -:1085B000F7F757F8002818BFFFDF03B0BDE8F08FCA -:1085C00003B00020BDE8F04F5DE703B0BDE8F04F19 -:1085D000FEF79CBD89F8144089F8105099F83400D2 -:1085E0004FF0010A42F2107B68B14FF47A71D9F86A -:1085F0001800FCF70CF8C9F81800002109F1100068 -:1086000004F0A0FC1BE001216846FDF7CFFB9DF8BC -:1086100000000002B0FBFBF10BFB110AF6F7D1F8EA -:1086200082445146D9F81800FBF7F1FFC9F8180049 -:10863000514609F1100004F085FC00F1010AB9F877 -:108640002000411C0A293CBF5044A9F82000D9F859 -:10865000040001E062E05DE038B1B9F82000401CA0 -:108660000A2828BF89F8158001D289F8154099F8A1 -:10867000090070BB99F8340040B1D9F83810D9F826 -:108680002400884202D9F7F704F822E0D9F828003C -:1086900058B3F6F796F80446F5F70AFF204400EBC6 -:1086A0000B08FCF7B3FA04462146D9F82C00FCF776 -:1086B000C9FFC9F82C40D9F8281000EB08029142F4 -:1086C00024BF081AC9F828000FD2C9F82870F6F795 -:1086D000E0FF99F80C00FCF77AFA89F800507079FD -:1086E00003B0BDE8F04FEAF717BC99F80C0009F1A8 -:1086F0001001FCF7D5FC002808BFFFDF03B0BDE880 -:10870000F08F99F80C00FCF762FA89F8005003B07A -:10871000BDE8F08FFFDF03B0BDE8F08F202C28BF4D -:10872000FFDFDFF80091072139F81400FAF72CF980 -:108730005FEA000A08BFFFDF202C28BFFFDF39F8FF -:108740001400BAF80010884218BFFFDF5446C6F87C -:1087500014A04FF0200ABBF1080F80F04881DFE839 -:108760000BF0049DA7A7A0F2F1F0C4F86051F580CA -:10877000C4F8645194F8210138B9FCF747FAD4F8E9 -:108780002C11FCF75FFF00281BDCB4F81E11B4F8B5 -:108790005800814206D1B4F8D410081AA4F8D600C3 -:1087A000204605E0081AA4F8D600B4F81E112046A9 -:1087B000A4F85810D4F84811C4F82C11C0F850117E -:1087C0001DE0B4F81C11B4F85800081AA4F8D6003B -:1087D000B4F81C112046A4F85810D4F82C11C4F891 -:1087E0004811C4F85011D4F83411C4F8E010D4F88A -:1087F0003811C4F85411B4F83C11A4F8581102F01F -:108800000EF9FCF7DDF9814694F85500FEF782FF7A -:108810004AF2B12108444FF47A7105E0600C00205F -:10882000DC0000209C0C0020B0FBF1F0D4F8141107 -:1088300040F27122084461885143C0EB4100A0F12D -:10884000300AB9F1B70F98BF4FF0B70921460120A0 -:1088500004F073FC4844AAEB0000A0F21A39A246C7 -:108860002146012004F069FCDAF824109C30814292 -:1088700088BF0D1AC6F80C904D4528BF4D46B5600F -:10888000D4F84C01A0F2A5103061FCF7A8FE84F8E2 -:10889000207186F8028003B0BDE8F08F02F0D3F9B2 -:1088A00001E0FEF733FC84F8207103B0BDE8F08FDF -:1088B000FCF7ACF9D4F8502101461046FCF7C2FE93 -:1088C00048B1628840F27123D4F814115A43C1EBC5 -:1088D0004201B0FBF1F094F865100D290FD0B4F807 -:1088E0005820B4F81E1113189942AEBF481C401C02 -:1088F0001044A4F81E0194F8220178B905E0B4F8F8 -:108900001E01401CA4F81E0108E0B4F81E01B4F8D2 -:10891000D410884204BF401CA4F81E01B4F85A01C8 -:108920000DF1040B401CA4F85A01B4F88000B4F80F -:108930007E10401AB4F85810401E08441FFA80F800 -:1089400012E046E03EE052E000231A462046CDF811 -:1089500000B0FFF76EF9002804BF03B0BDE8F08F48 -:10896000012818BFFFDF25D0B4F81E11A8EB0100C5 -:1089700000B20028E8DA082084F8740084F87370E4 -:10898000204601F00FFE84F80C5194F85C514FF62C -:10899000FF77202D00D3FFDF29F8157094F85C01D4 -:1089A000FCF715F984F85CA1707903B0BDE8F04FCD -:1089B000EAF7B2BAB4F81E01BDF804100844A4F8EE -:1089C0001E01D1E7FEF742FA03B0BDE8F04FFEF713 -:1089D0009DBB94F80C01042818BFFFDF84F80C51EC -:1089E00094F85C514FF6FF77202DD5D3D3E7FFDF06 -:1089F00003B0BDE8F08F10B5F84C207850B10120DD -:108A00006072F6F75EFE2078032805D0207A0028F1 -:108A100008BF10BD0C2010BD207BFCF753FC207B51 -:108A2000FCF79DFE207BFCF7D2F8002808BFFFDF93 -:108A30000020207010BD2DE9F04FE84F83B038784A -:108A400001244FF0000840B17C720120F6F739FE96 -:108A50003878032818BF387A0DD0DFF8849389F866 -:108A6000034069460720F9F718FF002818BFFFDF09 -:108A70004FF6FF7440E0387BFCF724FC387BFCF7B2 -:108A80006EFE387BFCF7A3F8002808BFFFDF87F8ED -:108A90000080E2E7029800281CBF90F80C11002922 -:108AA0002AD00088A0421CBFDFF838A34FF0200B6B -:108AB0003AD00721F9F768FF040008BFFFDF94F8F8 -:108AC0005C01FCF74CFE84F80C8194F85C514FF685 -:108AD000FF76202D28BFFFDF2AF8156094F85C018F -:108AE000FCF775F884F85CB169460720F9F7D5FE04 -:108AF000002818BFFFDF12E06846F9F7ACFE002837 -:108B0000C8D011E0029800281CBF90F80C11002971 -:108B100005D00088A0F57F41FF39CAD104E068463E -:108B2000F9F799FE0028EDD089F8038087F83480A2 -:108B300087F80B8003B00020BDE8F08F70B50446C5 -:108B4000A94890F80004A94D400995F80014490976 -:108B5000884218BFFFDF95F8140D4009A44991F829 -:108B600000144909884218BFFFDF9D4900200122F7 -:108B70004C7188700A7048700A71C8709749087003 -:108B8000BDE8704057E79649087070472DE9F843F3 -:108B9000924C064688462078002860D19548FBF71D -:108BA000BAFF207320285AD003276660277000255B -:108BB00065722572AEB1012106F1FC00FDF71FF9C7 -:108BC0000620F9F789FE81460720F9F785FE96F819 -:108BD000FC104844B1FBF0F200FB1210401C86F878 -:108BE000FC00FBF7EDFF40F2F651884238BF40F23F -:108BF000F65000F59F7086B2F5F75AFCE061F5F784 -:108C0000E0FD4FF0010968B384F80A90FBF7FEFF1E -:108C1000814601216846FDF7C9F89DF8000042F23F -:108C200010710002B0FBF1F201FB120081194846FD -:108C3000FBF7EDFCA061C4E90A8927756775257407 -:108C4000207B04F11001FCF72BFA002808BFFFDF9E -:108C500025840020F6F735FD0020BDE8F8830C20C0 -:108C6000BDE8F883FBF7D2FF3146FBF7D0FCA061EB -:108C7000A57284F83490A8F28B50A562A063DCE75B -:108C80005749487070475649087170472DE9F041BF -:108C9000534C0646E088401CE080D4E902516078DD -:108CA000D6F8607120B13A46284604F076F90546B8 -:108CB000A068854205D02169281A08442061FCF784 -:108CC0008EFCA560AF4209D896F80C01012805D0AA -:108CD000E078002804BF0120BDE8F0810020BDE855 -:108CE000F08110B504460846FEF714FD4AF2B121A2 -:108CF00008444FF47A71B0FBF1F040F2E241614375 -:108D000000F2353081428CBF081A002010BD70B5CA -:108D1000044682B0002084F8200194F8DE00002888 -:108D200007BF94F80C01032802B070BDFBF76EFF7B -:108D3000D4F8502101461046FCF784FC0028DCBF23 -:108D400002B070BD628840F27123D4F814115A4306 -:108D5000C1EB4201B0FBF1F0B4F85810401C0844DC -:108D6000A4F81C01B4F8D400B4F81C21801A00B295 -:108D70000028DCBF02B070BD012084F82201B4F8E5 -:108D80008000B4F87E2001AE801A401E084485B2EF -:108D900012E00096B4F81C11002301222046FEF7D1 -:108DA00048FF002804BF02B070BD01280DD0022882 -:108DB00012BFFFDF02B070BDB4F81C01281A00B268 -:108DC0000028BCBF02B070BDE3E7B4F81C01BDF8D9 -:108DD00004100844A4F81C01EEE70000600C002019 -:108DE000DC0000209C0C002001E000E00BE000E033 -:108DF00019E000E02F850100F8B5042200250629BE -:108E00005BD2DFE801F007260319192A044680F82F -:108E10000C2107E00446BD48C078002818BF84F83C -:108E20000C210AD0FBF7FCFDA4F85A51B4F8580005 -:108E3000A4F81E0184F82251F8BD0095B4F8D410AE -:108E4000012300222046FEF7F4FE002818BFFFDFB2 -:108E5000E8E7032180F80C11F8BD0646876AB0F8F0 -:108E60001401314685B2012004F067F9044696F8F2 -:108E70005500FEF74FFC4AF2B12108444FF47A71D5 -:108E8000B0FBF1F0718840F271225143C0EB410018 -:108E9000401BA0F2653501F0DBFE002818BF1E3D27 -:108EA000A74234BF20463846A84228BF2C4602D2EB -:108EB000A74228BF3C467462F8BDFFDFF8BD2DE92C -:108EC000F05F924EB178022906BFF1880029BDE813 -:108ED000F09F7469C4F8640194F85500FEF708FC2B -:108EE000D4F86411081AB1680144B160F16808440B -:108EF000F060746994F82301002808BFBDE8F09F72 -:108F000094F80C01032818BFBDE8F09F94F8555061 -:108F100036780C2E28BFFFDF7D4F37F8168094F887 -:108F20006C610C2E28BFFFDF37F81600404494F820 -:108F30006C8186B2B8F10C0F28BFFFDF37F818003C -:108F400000F5C8601FFA80F82846FEF7D1FBD4F878 -:108F500064114FF0000A0F1A15F00C0F0ABF2846D3 -:108F60004EF62830FEF7D6FB4FF47A7900F2E73060 -:108F7000B0FBF9F03F1A2846FEF7BAFBD4F8E01030 -:108F800015F00C0FA1EB000B0ABF28464EF6283057 -:108F9000FEF7C0FB4AF2B1210844B0FBF9F0ABEB9D -:108FA0000000A0F160017143B1FBF8F1292202EB4E -:108FB00050006031A0EB510200EB5100BA4201D8E1 -:108FC000B84201D8F2F718FF608840F2E24141430D -:108FD00000202EB106FB01F04E49B0FBF1F0401C21 -:108FE000C4F8140184F823A1BDE8F09F70B50546CC -:108FF000464890F802C0BCF1020F07BF406900F577 -:10900000B074454800F12404002904BF256070BDF8 -:109010004FF47A7601290DD002291CBFFFDF70BD05 -:109020001046FEF790FB00F2E140B0FBF6F0281A84 -:10903000206070BD1846FEF7A7FB00F2E140B0FBD0 -:10904000F6F0281A206070BD3348007800281CBF55 -:109050000020704710B50720F9F730FC80F00100C0 -:1090600010BD2D480078002818BF012070472DE959 -:10907000F843294C0025814684F83450D4F81880F0 -:1090800084F83010E5722570012727722946606840 -:1090900003F0D3FA6168C1F85081267B81F85C61E6 -:1090A000C1F86091C1F85481B1F80080202E28BF2A -:1090B000FFDF1A4820F81680646884F80C510023FA -:1090C000A4F858511A46194620460095FEF7B1FDFE -:1090D000002818BFFFDFC4F80851C4F8005184F815 -:1090E0000C71A4F81E51A4F81C5184F82251B4F854 -:1090F0005800401EA4F85800A4F85A51FBF790FC01 -:1091000002484079BDE8F843E9F706BFDC000020DB -:10911000EC5C020040420F00600C00209C0C002020 -:10912000012804D0022805D0032808D105E0012930 -:1091300007D004E0022904D001E0042901D0002076 -:109140007047012070472DE9F0410E46044604F0B7 -:1091500048FD0546204604F048FD044604F063F847 -:10916000FE4F010015D0386990F854208A4210D083 -:1091700090F8A4311BB190F8A63123421FD02EB92C -:1091800090F85130234201D18A4218D890F8A401B6 -:10919000A8B1284604F047F870B1396991F8552014 -:1091A000824209D091F8A40118B191F8A701284290 -:1091B00005D091F8A40110B10120BDE8F081002094 -:1091C000FBE730B5E54C85B0E06900285DD014219F -:1091D00068460CF0C0FA206990F85500FEF79AFA3C -:1091E0004FF47A7100F5FA70B0FBF1F5206990F850 -:1091F0005500FEF77DFA2844ADF806002069018885 -:10920000ADF80010B0F85810ADF804104188ADF872 -:10921000021090F8860130B1A069C11C039104F0DE -:10922000C1FB8DF81000206990F885018DF80800C9 -:10923000E169684688472069002180F8861180F836 -:1092400085110399002920D090F8841100291CD1A0 -:1092500090F86410272918D09DF81010039A00295F -:1092600013D013780124FF2B11D0072B0DD1022925 -:109270000BD15178FF2908D180F884410399C0F8B7 -:1092800088119DF8101080F8871105B030BD1B299A -:10929000F2D9FAE770B5B14C206990F865001B2847 -:1092A00000D0FFDF2069002580F88D5090F8B801CC -:1092B00000B1FFDF206990F88E1041B180F88E5028 -:1092C0000188A0F8BC1180F8BA510E2108E001888D -:1092D000A0F8BC1180F8BA51012180F8BE110D210F -:1092E00080F8B8110088F9F781FCF9F719F92079AD -:1092F000E9F712FE206980F8655070BD70B5974C93 -:10930000A07980072CD5A078002829D16269204651 -:10931000D37801690D2B01F158005FD00DDCA3F16A -:1093200002034FF001050B2B19D2DFE803F01A18E6 -:1093300044506127182C183A6400152B6FD008DCB4 -:10934000112B4BD0122B5AD0132B62D0142B06D1D9 -:1093500066E0162B71D0172B70D0FF2B6FD0FFDF7C -:1093600070BD91F867200123194603F081FD0028A4 -:10937000F6D12169082081F8670070BD1079BDE839 -:10938000704001F002BD91F86600C00700D1FFDF18 -:1093900001F0BAFC206910F8661F21F0010101708C -:1093A00070BD91F86500102800D0FFDF2069112101 -:1093B00080F88D5008E091F86500142800D0FFDF98 -:1093C0002069152180F88D5080F8651070BD91F8E6 -:1093D0006500152800D0FFDF172005E091F8650033 -:1093E000152800D0FFDF1920216981F8650070BDC4 -:1093F000BDE870404EE7BDE8704001F09ABC91F8BE -:1094000064200123002103F033FD00B9FFDF0E20AB -:109410000FE011F8660F20F0040008701DE00FE067 -:1094200091F864200123002103F022FD00B9FFDF41 -:109430001C20216981F8640070BD12E01BE022E06D -:1094400091F86600C0F30110012800D0FFDF206909 -:1094500010F8661F21F010010170BDE8704001F0A6 -:1094600053BC91F864200123002103F001FD00B9F1 -:10947000FFDF1F20DDE791F86500212801D000B152 -:10948000FFDF2220B0E7BDE8704001F049BC33485F -:10949000016991F86620130702D501218170704798 -:1094A00042F0080281F866208069C07881F8C9001E -:1094B00001F021BC10B5294C21690A88A1F8FC21D2 -:1094C00081F8FA0191F8540001F003FC216981F858 -:1094D000FE0191F8550001F0FCFB216981F8FF01C4 -:1094E000012081F8F801002081F8A4012079BDE86D -:1094F0001040E9F711BDF0B4184C206900F5D6739F -:1095000001881985018E5985818E9985018FB0F862 -:109510004420914200D31146D985828FB0F846107D -:109520008A4200D21146198690F855204FF0010565 -:1095300012F00C0F4FF4296203D0914200D811466B -:10954000198690F8540010F00C0F04D0988D9042BA -:1095500000D902469A8583F8265001E0FC000020DD -:109560002079F0BCE9F7D8BC10B5F84C01230921EB -:10957000206990F86420583003F07AFC38B12169F2 -:10958000002001F87C0F087301F8180C10BD0120B1 -:10959000A07010BD70B5ED4D012329462869896979 -:1095A00090F8642009790E2A01D1122903D00024F1 -:1095B0001C2A03D004E0BDE87040D5E7142902D08E -:1095C000202A08D009E080F8644080F88840BDE88F -:1095D000704001F0FDBB162906D0262A01D11629BC -:1095E00002D0172909D00CE000F8644F80F824401D -:1095F000407821280CD01A2017E090F86520222A04 -:1096000007D0EA69002A03D0FF2901D180F886310A -:1096100012E780F8654001F077FB286980F87D400B -:1096200090F8A4010028F3D00020BDE8704041E785 -:109630002DE9F843C54C206990F86410202909D021 -:109640005FF0000790F86510222905D07FB300F184 -:10965000640503E00127F5E700F1650510F8961FA2 -:1096600041F004010170A06904F0C7FA4FF001084D -:10967000002608B33946A069FFF765FDE0B16A46E8 -:10968000A169206903F0DEFD90B3A06904F0B3FA8C -:109690002169A1F88E01B1F8581001F00EFB40B31A -:1096A0002069282180F8741080F8738058E0FFE763 -:1096B0000220A070BDE8F883206990F8A40110B1E1 -:1096C0001E20FFF7F7FEAFB1A0692169C07881F8CD -:1096D000CA0008FA00F1C1F3006000B9FFDF206999 -:1096E0000A2180F8641090F8880040B9FFDF06E096 -:1096F00009E02AE02E7001F007FBFFF7C8FE2069A1 -:1097000080F87D60D6E7226992F8A40170B1B2F8C2 -:10971000583092F85410B2F8A80102F5C77203F05D -:1097200083FE68B12169252081F86400206900F179 -:10973000650180F87D608D4212D180F865600FE090 -:109740000020FFF7B7FE2E70F0E720699DF80010AB -:1097500080F890119DF8011080F891112420287054 -:10976000206900F165018D4203D1BDE8F84301F0A5 -:10977000CBBA80F888609DE770B5744C01230B214B -:10978000206990F86520583003F072FB202650BB0A -:1097900020690123002190F86520583003F068FB10 -:1097A0000125F0B1206990F8640024281BD0A0693D -:1097B00004F001FAC8B1206990F8961041F0040154 -:1097C00080F89610A1694A7902F0070280F85120CA -:1097D000097901F0070180F8501090F8A5311BBB02 -:1097E00006E0A57028E6A67026E6BDE870404EE6C5 -:1097F00090F8A431C3B900F154035E788E4205D1CC -:109800001978914202D180F87D500DE000F5F97190 -:109810000D7002884A8090F850200A7190F851002B -:1098200048712079E9F778FB2169212081F86500EA -:10983000BDE8704001F05FBA70B54448006990F827 -:109840004E20448EC38E418FB0F84050022A23D060 -:10985000A94200D329460186C18FB0F84220914227 -:1098600000D311468186018FB0F84420914200D385 -:1098700011464186818FB0F84620914200D31146AF -:10988000C186418EA14200D90C464486C18E9942C0 -:1098900000D90B46C386CFE5028E914200D3114614 -:1098A000C68F828E964200D23246A94200D3294604 -:1098B0000186B0F842108A4200D30A46828600210F -:1098C00080F84E10CFE770B5204C206990F8660004 -:1098D00010F0300F04D0A07840F00100A070ABE58C -:1098E000A06904F04DF948B32569A06904F044F972 -:1098F00028872569A06904F03BF968872569A06974 -:1099000004F03CF9A8872569A06904F033F9E887D9 -:10991000A0794FF00102800703D56069C078142850 -:109920000FD0206990F864101C290AD090F84E10CE -:10993000012910D090F89B1169B909E0BDE8704089 -:10994000A5E5206980F84E2005E00000FC0000201D -:1099500090F89A1131B1206910F8661F41F010019A -:10996000017016E090F8661041F0200180F8661052 -:1099700000F5D67103888B86038FCB86438F0B87C8 -:10998000838F4B87C08F888781F832202079E9F751 -:10999000C3FABDE8704001F0AEB970B5FE4C206965 -:1099A00090F86610890707D590F8642001230821F4 -:1099B000583003F05DFAE8B1206990F89000800714 -:1099C00012D4A06904F0B8F8216981F89100A06967 -:1099D00030F8052FA1F892204088A1F8940011F8E2 -:1099E000900F40F002000870206990F89010C907AD -:1099F00003D00FE00120A0701EE590F866008007FC -:109A000000D5FFDF206910F8661F41F002010170E8 -:109A100001F071F92069002590F86410062906D13B -:109A200080F8645080F888502079E9F775FA206949 -:109A300090F88C110429DFD180F88C512079E9F756 -:109A40006BFA206990F864100029D5D180F888500D -:109A5000F2E470B5D04C01230021206990F8652014 -:109A6000583003F005FA012578B9206990F865208F -:109A7000122A0AD001230521583003F0F9F910B158 -:109A80000820A070D8E4A570D6E4206990F88E0074 -:109A900008B901F030F92169A069E83104F02DF826 -:109AA0002169A069C03104F033F8206990F8C00141 -:109AB00000B1FFDF21690888A1F8C20101F5E27158 -:109AC000A06904F008F82169A06901F5E67104F0C5 -:109AD0000AF8206980F8C051142180F865102079B7 -:109AE000BDE87040E9F718BA70B5AB4C012300210E -:109AF000206990F86520583003F0BAF90125A8B123 -:109B0000A06903F0B4FF98B1A0692169B0F80D0015 -:109B1000A1F88E01B1F8581001F0CFF858B12069C2 -:109B2000282180F8741080F8735085E4A57083E4D0 -:109B3000BDE87040ABE4A0692169027981F8902109 -:109B4000B0F80520A1F8922103F084FF2169A1F863 -:109B50009401A06903F081FF2169A1F89601A06931 -:109B600003F082FF2169A1F898010D2081F86500BA -:109B700062E47CB5884CA079C00738D0A069012385 -:109B80000521C578206990F86520583003F070F9F8 -:109B900068B1AD1E0A2D06D2DFE805F009090505FA -:109BA000090905050909A07840F00800A070A0780F -:109BB00000281CD1A06903F023FF00287AD0A069F7 -:109BC0000226C5781DB1012D01D0162D18D12069AE -:109BD00090F8640003F034F990B1206990F86410B3 -:109BE0001F290DD0202903D0162D16D0A6707CBDBC -:109BF000262180F86410162D02D02A20FFF75AFC87 -:109C00000C2D58D00CDC0C2D54D2DFE805F033308D -:109C10001D44A7A7479E57A736392020A0707CBDBA -:109C20000120152D75D008DC112D73D0122D69D0AF -:109C3000132D64D0142D3DD178E0162D7CD0182D35 -:109C40007DD0FF2D36D183E020690123194690F89D -:109C50006720583003F00CF9F8B9A06903F034FF1D -:109C6000216981F87201072081F8670078E001F02E -:109C700036F975E0FFF738FF72E001F010F96FE098 -:109C8000206990F86510112901D0A67068E01221B2 -:109C900080F8651064E0FFF7DCFE61E0206990F871 -:109CA00065001728F1D101F02FF821691B2081F8F8 -:109CB000650055E052E0FFF770FE51E0206990F832 -:109CC0006600C00703D0A07840F001001FE069469D -:109CD000A06903F038FF9DF8000000F0250120691D -:109CE00000F8961F9DF8011001F04901417001F044 -:109CF00002F8206910F8661F41F0010114E0FFF737 -:109D000033FC2DE0216991F86610490705D5A07054 -:109D100026E00EE016E00FE011E000F0ECFF206915 -:109D200010F8661F41F00401017019E0FFF7CBFD48 -:109D300016E001F081F813E0FFF71EFD10E0FFF7D9 -:109D400077FC0DE001F057F80AE0FFF723FC07E08D -:109D5000E16919B1216981F8860101E0FFF797FBFC -:109D60002069F0E92A12491C42F10002C0E9001200 -:109D70007CBD70B5084CA07900074DD5A0780028AF -:109D80004AD1206990F8CB00FE2800D1FFDF20697E -:109D9000FE2180F8CB1001E0FC00002090F8651057 -:109DA0000025192906D180F88D5000F0ADFF2069FB -:109DB00080F86550206990F864101F2902D0272987 -:109DC00021D119E090F8650003F03AF878B12069E4 -:109DD0002621012380F8641090F865200B2158306B -:109DE00003F046F878B92A20FFF764FB0BE02169FD -:109DF000202081F8640006E0012180F8851180F8B8 -:109E0000645080F88850206990F86710082903D1C1 -:109E10000221217080F8CB10E4E4FE49096991F831 -:109E200090210AB991F8542081F8542091F8912199 -:109E30000AB991F8552081F85520002802D0002059 -:109E4000FFF738BB704770B5F24C06460D462069E7 -:109E500090F8CB00FE2800D0FFDF2269002082F8B6 -:109E6000CB6015B1A2F88A00BCE422F8840F01206F -:109E70001071B7E470B5E74C01230021206990F818 -:109E80006420583002F0F4FF00287AD0206990F85E -:109E90009A1111B190F89B1139B190F8A4110029D1 -:109EA0006ED090F8A51111B36AE0B0F89C1120F8BB -:109EB000401FB0F85E114180B0F860118180B0F8A9 -:109EC0006211C180002180F85A1190F826008006A6 -:109ED0000AD501F068F8206910F8661F21F020010A -:109EE00041F01001017051E0002114204CE090F885 -:109EF000652001230B21583002F0BAFF68BB2069AE -:109F000090F8540000F0E5FE0646206990F85500F0 -:109F100000F0DFFE0546206990F8A6113046FFF7F5 -:109F2000FFF8D8B1206990F8A7112846FFF7F8F894 -:109F3000A0B12269B2F8583092F85410B2F8A801D2 -:109F400002F5C77203F070FA20B12169252081F86B -:109F500064001BE00020FFF7ADFA11E02069012347 -:109F6000032190F86520583002F082FF40B9206943 -:109F70000123022190F86520583002F079FF08B1E2 -:109F800000202FE400211620FFF75DFF012029E4C7 -:109F900010B548BB9F4C206990F86610CA0702D0E4 -:109FA0000121092018E08A070AD501210C20FFF7BA -:109FB0004AFF206910F8901F41F0010101702AE06A -:109FC0004A0702D50121132006E00A0707D510F839 -:109FD000C91FC17001210720FFF735FF1BE0C9062B -:109FE00002D590F89B1109B1002010BD90F89A118C -:109FF00079B1B0F89C1120F8401FB0F85E11418093 -:10A00000B0F860118180B0F86211C180002180F841 -:10A010005A1100F0C8FF012010BD70B57D4C2069B9 -:10A0200090F8CB10FE2978D1A178002975D190F84D -:10A03000672001231946583002F01AFF00286CD11E -:10A04000206990F8701149B10021A0F8821090F8B1 -:10A05000711180F8CC10002102205BE090F865209F -:10A0600001230421583002F003FF0546FFF790FF5B -:10A07000002852D1284600F0A1FF00284DD12069C8 -:10A080000123002190F86420583002F0F1FE78B1ED -:10A0900020690123042190F86520583002F0E8FE81 -:10A0A00030B9206990F87C0010B10021122031E015 -:10A0B000206990F864200A2A0DD0002D2DD10123AB -:10A0C0000021583002F0D4FE78B1206990F88C114C -:10A0D00004290AD105E010F8CA1F81700021072069 -:10A0E00018E090F89000800718D0FFF7C3FE002812 -:10A0F00013D120690123002190F86420583002F028 -:10A10000B7FE002809D0206990F88401002804D007 -:10A110000021FF20BDE8704095E609E000210C20F9 -:10A12000FFF791FE206910F8901F41F001010170C6 -:10A1300062E43EB505466846FDF73BFC00B9FFDF2B -:10A14000222100980BF0E5FA0321009803F040FC6F -:10A150000098017821F010010170294603F05DFCA0 -:10A160002C4C0D2D40D00BDCA5F102050B2D19D286 -:10A17000DFE805F01F186519191F18701819240059 -:10A18000152D7BD008DC112D25D0122D0BD0132DD1 -:10A1900009D0142D06D12BE0162D46D0172D6BD0EB -:10A1A000FF2D6AD0FFDFFDF717FC002800D1FFDF8D -:10A1B0003EBD2169009891F8CC1017E0E268009844 -:10A1C0001178017191884171090A81715188C171B9 -:10A1D000090A0172E7E70321009803F028FD062130 -:10A1E000009803F028FDDEE7009806210171DAE708 -:10A1F0002069B0F84410009803F0AAFC2069B0F878 -:10A200004610009803F0A8FC2069B0F840100098B0 -:10A2100002E00000FC00002003F0A2FC2069B0F87E -:10A220004210009803F0A0FCBDE70098D4F810108D -:10A2300091F8A621027191F8A7114171B3E7216944 -:10A240000098F03103F068FC21690098C43103F0F4 -:10A250006DFCA8E7F949D1E90001CDE901012069C8 -:10A2600001A990F8960000F025008DF804000098F0 -:10A2700003F097FC97E701E019E023E02069B0F8CC -:10A280004010009803F06CFC2069B0F84210009870 -:10A2900003F06AFC2069B0F84410009803F058FC01 -:10A2A0002069B0F84610009803F056FC7BE721695E -:10A2B00091F8A40100280098BAD111F8542F027126 -:10A2C0004978BAE7206990F88721D0F8881100987A -:10A2D00003F0B1FB67E7DA4810B5006990F86A103F -:10A2E00041B990F8652001230621583002F0C0FDE5 -:10A2F000002800D0012010BD70B5D14D286990F81C -:10A30000681039B1012905D0022906D0032904D0EB -:10A31000FFDF0AE4B0F8D41037E090F8671008299E -:10A3200036D0B0F87E10B0F8802000248B1C9A4202 -:10A3300006D3511A891E0C04240C01D0641EA4B249 -:10A3400090F87C1039B190F864200123092158302D -:10A3500002F08EFD40B3FFF7BEFF78B129690020FF -:10A36000B1F87820B1F876108B1C9A4203D3501ABA -:10A37000801E00D0401EA04200D284B20CB1641EE8 -:10A38000A4B22869B0F8D4102144A0F8D01043E555 -:10A39000B0F87E100329BDD330F8581F028D114448 -:10A3A000491CA0F8781037E50024EAE770B50C46A0 -:10A3B00005464FF4007120460BF0CDF925802BE5C2 -:10A3C000F8F7EBBB2DE9F0410D4607460721F8F7FA -:10A3D000DBFA041E3CD094F8AC010026A8B16E70E4 -:10A3E000092028700BE0268484F8AC61D4F8AE0113 -:10A3F0006860D4F8B201A860B4F8B601A88194F8F6 -:10A40000AC010028EFD12E71BAE094F8B80190B3F6 -:10A4100094F8B8010D2813D00E2801D0FFDFAFE06B -:10A420002088F8F7E3FB0746F8F78FF878B96E70E5 -:10A430000E20287094F8BA0128712088E88014E072 -:10A440002088F8F7D3FB0746F8F77FF810B1002013 -:10A45000BDE8F0816E700D20287094F8BA01287163 -:10A460002088E88094F8BE01287284F8B8613846E4 -:10A47000F8F765F884E0FFE794F8F00130B16E700A -:10A480001020287084F8F061AF8079E094F8C00162 -:10A4900090B16E700A2028702088A880D4F8C4116A -:10A4A000C5F80610D4F8C811C5F80A10B4F8CC01E4 -:10A4B000E88184F8C06163E094F8CE0140B16E7029 -:10A4C0001A202870B4F8D001A88084F8CE6157E033 -:10A4D00094F8EA0170B16E701B20287005E000BF8F -:10A4E00084F8EA61D4F8EC01686094F8EA01002885 -:10A4F000F6D145E094F8D20190B16E701520287025 -:10A5000004F5EA7707E000BF84F8D2610A223946F1 -:10A51000281D0BF0C4F894F8D2010028F4D12FE0E4 -:10A5200094F8DE0158B16E701D20287084F8DE6149 -:10A530000A2204F5F071281D0BF0B1F820E094F820 -:10A54000F20138B11E20287084F8F261D4F8F401C9 -:10A55000686015E094F8F80100283FF479AF6E7058 -:10A560001620287008E000BF84F8F861D4F8FA01DA -:10A570006860B4F8FE01288194F8F8010028F3D14E -:10A58000012065E72E480021C1610162084670473D -:10A5900030B52B4D0C46E860FFF7F4FF00B1FFDF4C -:10A5A0002C7130BD002180F8641080F8651080F8AF -:10A5B000681090F8DE1009B1022100E00321FEF7D7 -:10A5C0001BBC2DE9F0411E4C0546206909B1002154 -:10A5D00004E0B0F8E610B0F8D6201144A0F8E61078 -:10A5E00090F8701139B990F8672001231946583056 -:10A5F00002F03EFC30B1206930F8821FB0F85420E0 -:10A6000011440180206990F8883033B1B0F884108B -:10A61000B0F8D6201144A0F8841090F98C70002F67 -:10A6200006DDB0F88A10B0F8D6201144A0F88A10E0 -:10A6300001213D2635B180F8746017E0045D020009 -:10A64000FC0000202278022A0AD0012A11D0A27828 -:10A650002AB380F8731012F0140F0DD01E2113E0EE -:10A6600090F8CC20062A3CD016223AE080F87310ED -:10A6700044E090F8722134E0110702D580F874604C -:10A680003CE0910603D5232180F8741036E0900752 -:10A6900000D1FFDF21692A2081F874002AE02BB164 -:10A6A000B0F88420B0F886309A4210D2002F05DD31 -:10A6B000B0F88A20B0F886309A4208D2B0F88230DA -:10A6C000B0F88020934204D390F870310BB122226D -:10A6D00007E090F868303BB1B0F87E30934209D380 -:10A6E000082280F87420C1E7B0F87E20062A01D342 -:10A6F0003E22F6E7206990F8731019B12069BDE891 -:10A70000F0414FE7BDE8F0410021FEF775BB2DE9B0 -:10A71000F047F94C81460D4620690088F8F778FA31 -:10A72000060000D1FFDFA0782843A070A0794FF089 -:10A7300000058006206904D5A0F87E5080F8E4501A -:10A7400003E030F87E1F491C0180FFF7C4FD01279C -:10A7500040B3E088000506D5206990F86A1011B171 -:10A76000A0F876501EE02069B0F87610491C89B236 -:10A77000A0F87610B0F878208A4201D3531A00E08E -:10A780000023B4F808C00CF1050C634501D880F82B -:10A790007C70914206D3A0F8765080F8F071207951 -:10A7A000E8F7BAFBA0794FF0020810F0600F0ED066 -:10A7B000206990F8681011B1032908D102E080F8EF -:10A7C000687001E080F868800121FEF715FB2069C0 -:10A7D00090F86810012904D1E188C90501D580F8F5 -:10A7E0006880B9F1000F70D1E188890502D5A0F821 -:10A7F000F85003E030F8F81F491C018000F09AFB84 -:10A80000FEF7DFFCFFF709FC00F062FF002820697B -:10A8100002D0A0F8D85003E030F8D81F491C0180BE -:10A8200000F059FF38B1216991F8E400022807D8F7 -:10A83000401C81F8E400206990F8E400022804D963 -:10A84000206920F8D85F4580057320690123002125 -:10A8500090F86520583002F00BFB20B9206990F881 -:10A8600065000C2859D120690123002190F864204B -:10A87000583002F0FDFA48B320690123002190F816 -:10A880006720583002F0F4FA00B3206990F868109D -:10A89000022942D190F8E400C0B93046F7F725FC10 -:10A8A000A0B1216991F8CB00FE2836D1B1F8D200D1 -:10A8B000012832D981F8DD70B1F88000B1F87E202E -:10A8C000831E9A4203DB012004E032E025E0801A77 -:10A8D000401E80B2B1F8D82023899A4201D30122C8 -:10A8E00002E09A1A521C92B2904200D910460128F6 -:10A8F00001D181F8DD5091F8682192B1B1F8DA20E8 -:10A90000B1F86A118A4201D3012102E0891A491C77 -:10A9100089B2884205D9084603E02169012081F8FF -:10A92000DD502169B1F858201044A1F8D400FFF798 -:10A93000E3FCE088C0F340214846FFF742FE20696F -:10A9400080F8DE50BDE8F047FDF768B86A49024676 -:10A950008878CB78184312D10846006942B18979CA -:10A96000090703D590F86700082808D00120704730 -:10A97000B0F84810028E914201D8FEF787B9002046 -:10A98000704770B55C4C05460E46E0882843E08071 -:10A99000A80703D5E80700D0FFDF6661EA074FF09C -:10A9A00000014FF001001AD0A661F278062A02D009 -:10A9B0000B2A14D10AE0226992F86530172B0ED1C8 -:10A9C0000023E2E9283302F8370C08E0226992F804 -:10A9D0006530112B03D182F8691082F88E00AA0726 -:10A9E00018D56269D278052A02D00B2A12D10AE062 -:10A9F000216991F86520152A0CD10022E1E92A226B -:10AA000001F83E0C06E0206990F86520102A01D17B -:10AA100080F86A10280601D50820E07079E42DE955 -:10AA2000F84F354C00254FF00108E580A570E57022 -:10AA30004146257061F3070220619246814680F805 -:10AA4000DE800088F8F7E4F8070000D1FFDF206916 -:10AA50000088FCF7ABFF20690088FCF7CDFF206978 -:10AA6000B0F8D21071B190F8CB10FE290FD190F848 -:10AA7000701189B190F8672001231946583002F00F -:10AA8000F7F978B1206990F8CB00FE2804D020694E -:10AA900090F8CB00FFF74DFB206990F8DF1089B1EB -:10AAA000258118E02069A0F8825090F8711180F893 -:10AAB000CC1000210220FFF7C6F9206980F8DD5094 -:10AAC0000220E7E790F8AC1119B9018C8288914215 -:10AAD00000D881882181B0F8D610491E8EB2B0F816 -:10AAE000D8103144A0F8D81090F8DC1031B1A0F89B -:10AAF000DA5080F8DC5006E0FC000020B0F8DA10F4 -:10AB00003144A0F8DA1030F87E1F31440180FFF79D -:10AB1000E2FB20B1206930F8761F314401802069C2 -:10AB2000B0F8D210012902D8491CA0F8D2100EB1F9 -:10AB300080F8E45090F8DD10A1B1B0F8D800218978 -:10AB400088420FD23846F7F7D0FA58B1206990F80A -:10AB5000681139B1B0F8DA10B0F86A01814201D356 -:10AB600000F0BCFD206980F8DD5090F865100B29DD -:10AB700001D00C2916D1B0F85820B0F88E31D21A75 -:10AB800012B2002A0EDBD0F89011816090F8941177 -:10AB90000173022101F051FD206980F8655080F8B1 -:10ABA000988026E0242910D1B0F85810B0F88E21F2 -:10ABB000891A09B2002908DB90F8A401FFF72DF9E2 -:10ABC000206900F8655F057613E090F86410242989 -:10ABD00001D025290DD1B0F85810B0F88E01081A0F -:10ABE00000B2002805DB0120FFF717F9206980F883 -:10ABF000645020690146B0F8D620583001F0EFFECD -:10AC0000206990F8681109B1A0F8DA50FD48009069 -:10AC1000FD4BFE4A4946504600F0BAFC216A11B18C -:10AC20006078FCF7BEF920690123052190F86520C2 -:10AC3000583002F01DF9002803D0BDE8F84F00F0AD -:10AC400042BABDE8F88F00F029BDF149C8617047EC -:10AC5000EF48C069002800D001207047EC4A5070CE -:10AC60001162704710B50446B0F894214388B0F8DB -:10AC70009611B0F898019A4205D1A388994202D161 -:10AC8000E38898420FD02388A4F8B031A4F8B22109 -:10AC9000A4F8B411A4F8B601012084F8AC01DC4892 -:10ACA0000079E8F739F90121204601F0C6FC0020BF -:10ACB00004F8650F0320E07010BD401A00B247F69B -:10ACC000FE71884201DC002801DC01207047002071 -:10ACD000704710B5012808D0022808D0042808D0F1 -:10ACE000082806D0FFDF204610BD0124FBE7022420 -:10ACF000F9E70324F7E7C6480021006920F88A1F16 -:10AD00008178491C81707047C14800B5016911F80C -:10AD10008C0F401E40B20870002800DAFFDF00BD33 -:10AD2000BB482721006980F86410002180F8841155 -:10AD3000704710B5B64C206990F88C11042916D1D3 -:10AD400090F8642001230021583002F091F800B9F6 -:10AD5000FFDF206990F89010890703D4062180F85E -:10AD6000641004E0002180F8881080F88C112069BC -:10AD700090F86600800707D5FFF7C6FF206910F836 -:10AD8000661F21F00201017010BDA14910B50969CB -:10AD900091F864200A2A09D191F8CA20824205D18B -:10ADA000002081F8640081F8880010BD91F86620C9 -:10ADB000130706D522F0080081F86600BDE81040B0 -:10ADC000A2E7FF2801D0FFDF10BDBDE81040A7E7D4 -:10ADD00010B58F4C05212069FEF70EF8206990F818 -:10ADE0004E10012903D0BDE81040FEF784BB0221BC -:10ADF00080F84E1010BD10B5854C206910F8961FD4 -:10AE000041F004010170A06902F013FF162806D179 -:10AE1000206990F86400202802D0262805D010BDB3 -:10AE2000A06902F00AFFFEF745FB2169002081F8C6 -:10AE3000640081F8880010BD70B5754C01230A21AB -:10AE4000206990F86420583002F012F810B3A0691D -:10AE500002F096FEA8B12569A06902F08DFE288750 -:10AE60002569A06902F084FE68872569A06902F05F -:10AE700085FEA8872569A06902F07CFEE887FEF7B9 -:10AE8000DBFC2169002081F8880081F86400BDE8BE -:10AE900070409DE7A07840F00100A070BEE510B5BD -:10AEA0005B4C01230021206990F86520583001F0A7 -:10AEB000DFFF30B1FFF71FFF2169102081F8650027 -:10AEC00010BD20690123052190F86520583001F05C -:10AED000CFFF08B1082000E00120A07010BD70B5C0 -:10AEE0004B4C01230021206990F86520583001F077 -:10AEF000BFFF012588B1A06902F0E3FD2169A1F837 -:10AF00008E01B1F85810FFF7D8FE40B12069282112 -:10AF100080F8741080F8735080E5A5707EE5216993 -:10AF2000A06901F5C87102F0C7FD21690B2081F805 -:10AF3000650073E510B5FEF71CFFFEF71AFE344CF2 -:10AF4000A079400708D5A07830B9206990F867004B -:10AF5000072801D101202070FEF7D0F9A079C006A2 -:10AF600009D5A07838B9206990F865100B2902D16D -:10AF70000C2180F86510E07800070ED520690123C8 -:10AF8000052190F86520583001F072FF30B108209B -:10AF9000A0702169002081F8B80110BDBDE8104003 -:10AFA000002000F09FBB10B5FEF746FCFFF710FF36 -:10AFB0000121BDE810401520FEF745BF10B5144C27 -:10AFC000216991F8652088B3102A06D0142A07D089 -:10AFD000152A22D01B2A35D122E001210B2021E0A5 -:10AFE000FAF7EAFE0C281FD320690821F030FAF79F -:10AFF000E7FE28B120690421C430FAF7E1FE00B968 -:10B00000FFDF07E00FA701004DA9010083A90100A0 -:10B01000FC0000200121042004E000F018F803E007 -:10B0200001210620FEF70FFF012010BDFFE7212AB6 -:10B0300008D191F87D0038B991F8A40110B191F8C8 -:10B04000A50108B10020F0E701211720EAE770B55B -:10B05000174C0025206990F8731101290AD00229A4 -:10B0600025D190F88E10A9B1062180F8CC100121CD -:10B07000022017E090F8B811002918D100F1B003B0 -:10B0800000F1E801002200F5BA7001F06BFE012129 -:10B09000052007E090F89600400701D5112000E058 -:10B0A0000D200121FEF7CFFE206980F87351B5E431 -:10B0B000FC00002030B5FA4C05462078002818BF67 -:10B0C000FFDF257230BDF6490120C87170472DE9B8 -:10B0D000F14FF44E30464068044600F1580990F8AC -:10B0E000551001F097FF94F85510658E80B208292D -:10B0F0006CD001F06DFF854238BF284600F0FF0894 -:10B10000DFF89CA3E848CAF824007768384697F827 -:10B110006AB07D8E97F8551001F07CFF97F85510B6 -:10B1200080B2082956D001F053FF854238BF284627 -:10B13000BBF1000F1CBF001D80B2C0B297F85510C4 -:10B14000FBF7BFFB99F81200002847D009F158011E -:10B15000D54891E80E1000F5027585E80E10D9F873 -:10B160006810C0F82112D9F86C10C0F8251200F54B -:10B170008170FBF7A6FE307800280CBF012000206C -:10B1800080F00101C9480176D9E91412C0E904121E -:10B19000A0F58372DAF82410FBF72DFA94F8550025 -:10B1A000012808BF00220CD0022808BF012208D0C5 -:10B1B000042808BF032204D008281ABFFFDF00229A -:10B1C000022241460120FBF731FA0DE0042101F093 -:10B1D000FFFE90E7042101F0FBFEA6E7DAF8240069 -:10B1E000FBF76FFEFBF74EFA009850B994F8550044 -:10B1F00094F8561010F00C0F08BF00219620FBF7B2 -:10B2000081FE94F8542001210020FBF767FF94F899 -:10B210002C00012808BFFBF731FF02208AF800004C -:10B22000FCF7D9FA002818BFFFDFBDE8F88F2DE939 -:10B23000F04FDFF870A28BB050469AF800204168BA -:10B240001438049091F85D0001F158050C464FF058 -:10B2500008080127AAF13406A0B3012800F00681EE -:10B26000022800F00781032818BFFFDF00F01081DB -:10B27000306A0423017821F008010170AA7908EAF4 -:10B28000C202114321F004010170EA7903EA82024B -:10B29000114321F01001017095F80590F06AF6F75E -:10B2A00034FF8046FCF7CCFBB9F1020F00F00081BF -:10B2B000B9F1010F00F00081B9F1030F00F0008136 -:10B2C00000F003B9FFE72B7B4FF002094FF0000BB2 -:10B2D000242B1CBF95F80DC0BCF1240F07D01F2BE9 -:10B2E00018BF202B2AD0BCF1220F4DD077E091F867 -:10B2F000540092B191F89011002974D0082818BF19 -:10B30000042869D0082918BF042965D0012818BF6E -:10B31000012953D04FF0020065E091F8F2100029A6 -:10B3200061D0082818BF042856D0082918BF04295E -:10B3300052D0012818BF012940D0EBE7BCF1220F01 -:10B3400022D0002A4BD091F8540091F8A61111F0A8 -:10B35000040F18BF41460CD0082818BF04283BD062 -:10B36000082918BF042937D0012818BF012925D082 -:10B37000D0E711F0010F18BF3946EDD111F0020FDF -:10B3800018BF4946E8D12EE04AB391F8540091F82D -:10B39000A62191F8511002EA010111F0040F18BF23 -:10B3A00041460ED0082818BF042815D0082918BF18 -:10B3B000042911D0012818BF0129ABD14FF0010099 -:10B3C00011E011F0010F18BF3946EBD111F0020F57 -:10B3D00018BF4946E6D106E04FF0080003E091F8B7 -:10B3E00054000428F8D001460290204601F01DFECA -:10B3F00080B2029901F0ECFD218E814238BF0846EF -:10B40000ADF80C00A4F848000498FCF7F8FA60B115 -:10B41000B289316A42F48062B28172694FF480600D -:10B42000904703206871EF7022E709AA03A9F06A28 -:10B43000F6F7A6FD306210B195F8351021B10498E9 -:10B44000FCF7B1FA6F7113E79DF8241031B9A0F839 -:10B4500000B080F802B0012102F0BAFABDF80C1079 -:10B46000306A02F0ECFB85F8059001E70498FCF7E0 -:10B470009AFAFDE6B4F84800ADF8080009AA02A956 -:10B48000F06AF6F77DFD3062002808BFFFDFEFE6C7 -:10B490000498FCF7B4FA002808BFFFDFE8E60000D4 -:10B4A0002001002054010020E00C0020E80E0020C4 -:10B4B00030EA080009D106E030EA080005D102E0D0 -:10B4C000B8F1000F01D0012100E00021306A0278BC -:10B4D00042EA01110170697C00291CBF69790129C8 -:10B4E0003DD005F15801FD4891E80E1000F50278B5 -:10B4F00088E80E10A96EC0F82112E96EC0F8251276 -:10B5000000F58170FBF7DDFC9AF8000000280CBF05 -:10B5100001200020F2490876D5E91202C1E90402AF -:10B52000A1F5837101F58370326AFBF764F894F832 -:10B530005400012808BF00220CD0022808BF0122B5 -:10B5400008D0042808BF032204D008281ABFFFDF50 -:10B5500000220222FB210020FBF768F803E0FBF742 -:10B56000B0FCFBF78FF8012194F855200846FBF753 -:10B57000B5FD3771306A018831828078B0743770D8 -:10B58000FCF732F9002818BFFFDF0BB0BDE8F08FE1 -:10B590002DE9F047D34C8146DDF8208020781E4607 -:10B5A00017460D4628B9002F1CBF002EB8F1000F1A -:10B5B00000D1FFDFC4F81C80C4E90D95C4E905760D -:10B5C0004FF00000E071A071E070A0702071607118 -:10B5D000C54EA081E081307805F158072888F7F73B -:10B5E00017FBE0622888F7F701FB2063FBF78DF972 -:10B5F00095F95700FBF723FA05F11200FBF744FC1D -:10B6000005F10E00FBF721FA307800280CBF03206B -:10B610000120FBF753FCB87EFBF71FFAFBF748FC51 -:10B620003078002804BFFF2095F8544019D0BF7C23 -:10B630006C8E95F85510284601F0ECFC95F85510E5 -:10B6400080B208291FD001F0C3FC014620468C427D -:10B6500028BF0846002F1CBF001D80B2C0B295F85D -:10B6600055402146FBF72DF93078214680B1012065 -:10B67000FBF751FA7068D0F8E000FBF725FCBDE855 -:10B68000F047012023E5042101F0A2FC0146DDE79B -:10B690000020FBF740FABDE8F047C8E5924800B546 -:10B6A00001783438007819B1022818BFFFDF00BDD7 -:10B6B000012818BFFFDF00BD8A4810B500780228B6 -:10B6C00018BFFFDFBDE8104000F034BA00F032BA16 -:10B6D0008448007970478348C078704781490120C9 -:10B6E000487170472DE9F04706007F487D4D40685E -:10B6F00000F15804686A90F8019018BF012E03D138 -:10B70000296B09F045FC6870687800274FF0010844 -:10B71000A0B101283CD0022860D003281CBFFFDF65 -:10B72000BDE8F087012E08BFBDE8F087286BF6F76B -:10B73000E1FE287ABDE8F047E7F7EEBB012E14D012 -:10B74000A86A002808BFFFDF6889C21CD5E9091074 -:10B7500009F060FFA86A686201224946286BF6F783 -:10B7600045FD022E08BFBDE8F087D4E91401401C56 -:10B7700041F10001C4E91401E079012801D1E77128 -:10B7800001E084F80780287ABDE8F047E7F7C4BBFA -:10B79000012E14D0A86A002808BFFFDF6889C21CE8 -:10B7A000D5E9091009F036FFA86A68620022494607 -:10B7B000286BF6F71BFD022E08BFBDE8F087D4E921 -:10B7C0001410491C40F10000C4E91410E07901286C -:10B7D0000CBFE77184F80780BDE8F087012E06D022 -:10B7E000286BF6F787FE022E08BFBDE8F087D4E984 -:10B7F0001410491C40F10000C4E91410E07901283C -:10B80000BFD1BCE770B5384E3046A6F1340440686D -:10B8100000F158052078012818BFFFDFA87868B12B -:10B820000021A970A289042042F00402A281626969 -:10B830009047307800281CBF01202871216A03221C -:10B84000087832EA000009D1A28912F4806F05D08D -:10B8500042F00202A2816269022090470121002089 -:10B8600000F087F918B1BDE8704000F063B9BDE899 -:10B87000704000202BE42DE9F14F1B4E002730468D -:10B88000A6F134054068317800F1580A2878B846A6 -:10B89000022818BFFFDFE88940F40070E881716872 -:10B8A0003078FF2091F85410FBF70BF8009800282F -:10B8B0009AF8120000F00681FAF709FFFAF7F7FE8E -:10B8C0004FF00109E0B99AF81200C8B1686A4178EE -:10B8D000B1B10078C0F3C00008E00000E00C002027 -:10B8E000E80E002020010020540100209AF80710E3 -:10B8F000884205D185F80290BDE8F84F00F01AB9EA -:10B90000686A41786981002908BFAF6203D0286B5B -:10B91000F6F726FCA862E88940F02000E881EF7085 -:10B920003078706800F15804834690F82C000128A4 -:10B930001AD1FBF799FB2146584601F054FA98B109 -:10B940003078002870680CBF00F58A7000F5F5703B -:10B95000BBF800104180217A0171617A417180F851 -:10B960000090287AE7F7D8FA686A9AF80610007803 -:10B97000C0F3800088423BD03078706800F15804F2 -:10B9800090F85D0000282FD002284BD067713078E6 -:10B9900000281CBF2079002809D02771AA893946C0 -:10B9A00042F01002AA816A694FF010009047E078D7 -:10B9B000A0B1E770FCF732F8002808BFFFDF0820CD -:10B9C000AA89002142F00802AA816A699047D4E955 -:10B9D0001202411C42F10000C4E91210A0790128B2 -:10B9E0000CBFA77184F80690E88940F48070E88164 -:10B9F000696A9AF807300878C0F3C0029A424ED1BB -:10BA00003278726800F0030002F15804012818BF70 -:10BA100002282DD003281CBFA87940F0040012D0C2 -:10BA2000A8713CE0E86AF6F7D7FA002808BFFFDF04 -:10BA3000D4E91202411C42F10000C4E91210287A34 -:10BA4000E7F76AFAA2E784F80290EA89484642F4E6 -:10BA50000062EA81AA8942F00102AA816A699047DC -:10BA6000E079012801D1E77119E084F8079016E028 -:10BA7000487818B3E98941F40061E981A96A71B194 -:10BA8000FB2884BFA87940F01000C9D8E8790028C5 -:10BA900008BFC84603D080206A6900219047012072 -:10BAA000009900F066F8B0B1B8F1000F1CBF00209B -:10BAB000FFF718FEBDE8F84F00F03CB8E079012828 -:10BAC000D3D1D0E7002818BFFAF739FEE88940F053 -:10BAD0004000E881E3E7B8F1000F1CBF0120FFF749 -:10BAE00001FEFFF7A4FBB8F1000F08BFBDE8F88F17 -:10BAF0000220BDE8F84FF5E570B50D4606463D4815 -:10BB00003C4900784C6850B1FAF773FE034694F84C -:10BB1000542029463046BDE87040FDF767BAFAF771 -:10BB200068FE034694F8542029463046BDE870402C -:10BB300006F0D9B82F4910B54C68FBF745FAFBF76A -:10BB400024FAFBF727F9FBF7A5F9FAF79BFD94F820 -:10BB50002C00012808BFFBF787FA274C00216269F7 -:10BB6000E0899047E269A179A07890470020207091 -:10BB700010BD70B5204C0546002908BF012D06D127 -:10BB8000E07800F10100C0B2E07001282ED8A16970 -:10BB900028468847002829D06179184839B1012DF5 -:10BBA00001BF41780029017811F0100F1ED0A17952 -:10BBB000E1B910490978002908BF012D01D091B1E0 -:10BBC0008DB90F49097811F0100F04BF007810F0FB -:10BBD000100F0BD0A08948B9A06A20B9608910B1B4 -:10BBE00011F0100F02D04FF0000070BD4FF00100B7 -:10BBF00070BD00005401002020010020E00C002056 -:10BC000030010020FE498A78824286BF084490F8BD -:10BC100043010020704710B540F2D311F84809F0F5 -:10BC200078FDFF220821F74809F06BFDF648002156 -:10BC3000417081704FF46171818010BD2DE9F04138 -:10BC40000E46054600F0ADFBED4C102816D004EB77 -:10BC5000C00191F85A0110F0010F1CBF0120BDE88E -:10BC6000F081607808283CBF012081F85A011CD27D -:10BC70006078401C60700120BDE8F0816078082881 -:10BC800013D222780127501C207004EBC2083068C0 -:10BC9000C8F85401B088A8F85801102A28BFFFDF5F -:10BCA00088F8535188F85A71E2E70020BDE8F08126 -:10BCB000D54988707047D4488078704770B4D048B0 -:10BCC00000250178491E4BB2002B46DB00EBC30177 -:10BCD00091F85A1111F0010F3BD04278D9B2521E9F -:10BCE000427000EBC10282F85A5190F802C0002263 -:10BCF000BCF1000F0BD9841894F803618E4202D175 -:10BD0000102A26D103E0521CD2B29445F3D802780F -:10BD1000521ED2B202708A421BD000EBC20200EB6C -:10BD2000C10CD2F85341CCF85341D2F85721CCF88A -:10BD30005721847890F800C00022002C09D9861879 -:10BD400096F8036166450CD1102A1CBF024482F8A4 -:10BD50000311591E4BB2002BB8DAAB48857070BC8A -:10BD60007047521CD2B29442E9D8F2E7A4498A78CB -:10BD7000824286BF01EB0010C01C002070472DE9F5 -:10BD8000F04101261F4690463446002500F009FB8D -:10BD900010282AD09A494FF0000C01EBC00292F80B -:10BDA0005A2102F001058A78002A1ED901EB0C0302 -:10BDB00093F8033183421FD1BCF1100F15D0002F2F -:10BDC00018BF87F800C0887860450ED901EB0C10C9 -:10BDD00010F1030F09D001EB0C0090F84B4190F8E3 -:10BDE0003B0101280CBF0126002648EA050046EA6F -:10BDF00004010840BDE8F0810CF1010303F0FF0CE1 -:10BE00006245D3D8F1E72DE9F05F1F4690460E4614 -:10BE1000814600F0C6FA7A4D044610283CD001460F -:10BE2000AB780020002B0ED92A1892F803218A4201 -:10BE300005D110281CBF1220BDE8F09F03E0401C74 -:10BE4000C0B28342F0D8082B3FD2102C27D0AE7856 -:10BE50001022701CA87005EB061909F10300414679 -:10BE600000F066FF09F183001022394600F060FF00 -:10BE70001021384600F039FF3544102185F8430180 -:10BE8000404600F032FF85F84B0185F80341002061 -:10BE900085F83B01BDE8F09FAB78082B15D22C78D4 -:10BEA000CA46601C287005EBC4093068C9F8540103 -:10BEB000B0884FF0000BA9F85801102C28BFFFDF05 -:10BEC00089F853A189F85AB1C1E70720BDE8F09F6E -:10BED00070B44B488178491E4BB2002BBCBF70BC7C -:10BEE000704700BF817803F0FF0C491ECAB2827010 -:10BEF00050FA83F191F8031194453ED000EB0215FE -:10BF000000EB0C14D5F80360C4F80360D5F80760A3 -:10BF1000C4F80760D5F80B60C4F80B60D5F80F6063 -:10BF2000C4F80F60D5F88360C4F88360D5F88760E3 -:10BF3000C4F88760D5F88B60C4F88B60D5F88F5053 -:10BF4000C4F88F50851800EB0C0402EB420295F800 -:10BF500003610CEB4C0C00EB420284F8036100EB34 -:10BF60004C0CD2F80B61CCF80B61B2F80F21ACF895 -:10BF70000F2195F83B2184F83B2100EBC10292F898 -:10BF80005A2112F0010F33D190F802C00022BCF107 -:10BF9000000F0BD9841894F803518D4202D1102A56 -:10BFA00026D103E0521CD2B29445F3D80278521E37 -:10BFB000D2B202708A421BD000EBC20200EBC10C6D -:10BFC000D2F85341CCF85341D2F85721CCF857213D -:10BFD000847890F800C00022002C09D9851895F8C3 -:10BFE0000351654512D1102A1CBF024482F8031187 -:10BFF000591E4BB2002BBFF675AF70BC70470000E6 -:10C00000100F0020680100205C010020521CD2B2F9 -:10C010009442E3D8ECE7FE4948707047FC4840780A -:10C02000704738B14AF2B811884203D8F84988807D -:10C030000120704700207047F5488088704710B590 -:10C0400000F0AFF9102814D0F24A0146002092F80F -:10C0500002C0BCF1000F0CD9131893F803318B42C6 -:10C0600003D1102818BF10BD03E0401CC0B28445A6 -:10C07000F2D8082010BDE7498A78824286BF01EBDA -:10C080000010833000207047E24B93F802C08445D3 -:10C090009CBF00207047184490F8030103EBC000D8 -:10C0A00090F853310B70D0F854111160B0F858016A -:10C0B000908001207047D74A114491F80321D44958 -:10C0C0000A700268C1F8062080884881704770B500 -:10C0D00016460C460546FAF78DFFFAF7E8F9CC4804 -:10C0E000407868B1CB48817851B12A19002E0CBF35 -:10C0F0008330C01CFAF7B5F9FAF7FCF9012070BDDE -:10C10000002070BD10B5FAF723FA002804BFFF2005 -:10C1100010BDBDE81040FAF741BAFAF719BABD49A7 -:10C120008A7882429CBF00207047084490F803013F -:10C1300001EBC00090F85A0100F0010070472DE9B2 -:10C14000F047B44E00273D46307800288CBFDFF81A -:10C15000C882BDE8F0870024B078002808D93119DA -:10C1600091F80321AA4204D0611CCCB2A042F6D8B7 -:10C170001024A04286BF06EB0410C01C002006EB72 -:10C18000C50999F85A1111F0010F16D050B1102CB1 -:10C1900004D0311991F83B11012903D0102100F08E -:10C1A000A4FD50B108F8074038467B1C99F853218C -:10C1B00009F5AA71DFB2FAF71AFC681CC5B230782B -:10C1C000A842C8D8BDE8F0872DE9F041914C00267F -:10C1D0003546A07800288CBF8F4FBDE8F0816119EB -:10C1E000C0B291F80381A84286BF04EB0510C01CC1 -:10C1F000002091F83B11012903D0102100F075FDBA -:10C2000058B104EBC800BD5590F8532100F5AA7150 -:10C210003046731CDEB2FAF7EAFB681CC5B2A078A0 -:10C22000A842DCD8BDE8F08101447A4810B500EBA3 -:10C2300002100A4601218330FAF713F9BDE81040D5 -:10C24000FAF758B90A46724910B5497841B1714BAD -:10C25000997829B10244D81CFAF703F9012010BDDE -:10C26000002010BD6B4A01EB410102EB4101026865 -:10C27000C1F80B218088A1F80F0170472DE9F0412A -:10C28000644D07460024A878002898BFBDE8F081D7 -:10C29000C0B2A04217D905EB041010F1830612D0EA -:10C2A0001021304600F021FD68B904EB440005EB95 -:10C2B000400808F20B113A463046FBF73EFCB8F84E -:10C2C0000F01A8F80F01601CC4B2A878A042DFD803 -:10C2D000BDE8F08101461022504800F029BD4F48CA -:10C2E00070474C498A78824203D90A1892F8432150 -:10C2F0000AB10020704700EB400001EB400000F263 -:10C300000B10704743498A78824206D9084490F856 -:10C310003B01002804BF01207047002070472DE931 -:10C32000F0410E46074615460621304600F0DDFC7A -:10C33000384C98B1A17871B104F59D7011F0010FDE -:10C3400018BF00F8015FA178490804D0457000F8D3 -:10C35000025F491EFAD10120BDE8F081384631461E -:10C3600000F01FF8102819D0A3780021002B15D950 -:10C37000621892F8032182420BD1102918BF0829B4 -:10C380000CD004EB010080F83B514FF00100BDE8F8 -:10C39000F08101F10101C9B28B42E9D80020BDE86A -:10C3A000F0812DE9F0411B4D0646002428780F4608 -:10C3B000002811D905EBC40090F85311B14206D101 -:10C3C0000622394600F5AA7009F0F8F838B1601C69 -:10C3D000C4B22878A042EDD81020BDE8F0812046F4 -:10C3E000BDE8F0810B4910B44A7801EBC003521E3E -:10C3F0004A70002283F85A2191F802C0BCF1000F64 -:10C4000016D98B1893F8034184420DD1102A07E006 -:10C410005C010020100F002068010020E3100020C4 -:10C420001CBF10BC704703E0521CD2B29445E8D840 -:10C430000A78521ED2B20A7082421BD001EBC202AD -:10C4400001EBC003D2F853C1C3F853C1D2F857214E -:10C45000C3F857218C7891F800C00022002C09D92C -:10C460008B1893F80331634506D1102A1CBF114481 -:10C4700081F8030110BC7047521CD2B29442EFD82D -:10C4800010BC704770B449490D188A78521ED3B257 -:10C490008B7095F8032198423DD001EB001401EB1D -:10C4A000031C00EB4000DCF80360C4F80360DCF818 -:10C4B0000760C4F80760DCF80B60C4F80B60DCF8B8 -:10C4C0000F60C4F80F60DCF88360C4F88360DCF8A8 -:10C4D0008760C4F88760DCF88B60C4F88B60DCF898 -:10C4E0008FC0C4F88FC001EB030C03EB43039CF82F -:10C4F000034101EB430385F8034101EB4000D3F80E -:10C500000B41C0F80B41B3F80F31A0F80F319CF884 -:10C510003B0185F83B0101EBC20090F85A0110F095 -:10C52000010F1CBF70BC704700208C78002C0DD907 -:10C530000B1893F803C1944504D110281CBF70BC9C -:10C54000704703E0401CC0B28442F1D80878401E16 -:10C55000C0B20870904204BF70BC704701EBC203C8 -:10C5600001EBC000D0F853C1C3F853C1D0F8570154 -:10C57000C3F857018C780B780020002C9CBF70BC4E -:10C58000704700BF01EB000C9CF803C19C4506D12D -:10C5900010281CBF084480F8032170BC7047401C61 -:10C5A000C0B28442EED870BC70470000100F00206B -:10C5B00010B50A7B02F01F020A73002202768B1864 -:10C5C00093F808C00CF001034FEA5C0C0CF0010476 -:10C5D00023444FEA5C0C0CF0010423444FEA5C0C4A -:10C5E0000CF001041C444FEA5C0303F0010CA4446A -:10C5F0005B0803F00104A4445B0803F00104A444B5 -:10C600000CEB530300EB020C521C8CF8133090F827 -:10C6100018C0D2B263440376052AD0D3D8B22528F5 -:10C6200088BFFFDF10BD0023C383428401EBC20239 -:10C63000521EB2FBF1F10184704770B5002504462B -:10C6400003290DD04FF4FA4200297BD0012978D07C -:10C65000022918BF70BD0146BDE870405830A7E7F9 -:10C6600004F158067821304609F075F8B571F57176 -:10C6700035737573F573357475717576B5762120DC -:10C6800086F83E00492086F83F00FE2086F87300B9 -:10C6900084F82C502584012084F8540084F8550037 -:10C6A000282184F856101B21218761874FF4A4713B -:10C6B000E187A1871B21218661864FF4A471E18661 -:10C6C000A1861B21A4F84010A4F844104FF4A471D3 -:10C6D000A4F84610A4F842101B21A4F84A10A4F8AC -:10C6E0004C10A4F8481060734FF448606080A4F8C0 -:10C6F000D050A4F8D250A4F8D450A4F8D650A4F83E -:10C70000D850A4F8DA5084F8DD5084F8DF50A4F84B -:10C71000E65084F8E450A4F8F850A4F8FA5084F8ED -:10C720009A5184F89B5184F8A45184F8A55184F857 -:10C73000685184F8705184F8735184F88C5170BD3D -:10C7400000E03FE0A4F8E65084F8DE506188FE483F -:10C750000844B0FBF1F0A4F878004BF68030A4F860 -:10C760007A00E388A4F87E50B4F882C0DB000CFBAA -:10C7700001FCB3FBF1F39CFBF1FC5B1CA4F882C051 -:10C780009BB203FB01FC04F15800A4F88030BCF517 -:10C79000C84FC4BF5B1E0385B2FBF1F2521CC285B9 -:10C7A00001F5802202F5EE32531EB3FBF1F2028452 -:10C7B000C38B03FB01F2B2FBF1F1C1832146BDE85B -:10C7C0007040F5E6B4F89411B4F89831B4F802C0AA -:10C7D00004F15800A4F87E50B4F88240DB0004FB5A -:10C7E0000CF4B3FBF1F394FBF1F45B1C44859BB2B6 -:10C7F00003FB01F40385B4F5C84FC4BF5B1E03857A -:10C80000B2FBF1F2521CC285428C01EBC202521EF5 -:10C81000B2FBF1F20284C28B02FB0CF2B2FBF1F12B -:10C82000C18370BD70B50025044603290DD04FF4B7 -:10C83000FA42002963D001297ED0022918BF70BDB9 -:10C840000146BDE870405830B2E604F15806782140 -:10C85000304608F080FFB571F57135737573F57367 -:10C86000357475717576B576212086F83E004920BD -:10C8700086F83F00FE2086F8730084F82C5025844B -:10C88000012084F8540084F85500282184F85610BB -:10C890001B21218761874FF4A471E187A1871B21A8 -:10C8A000218661864FF4A471E186A1861B21A4F83C -:10C8B0004010A4F844104FF4A471A4F84610A4F852 -:10C8C00042101B21A4F84A10A4F84C10A4F84810F8 -:10C8D0006073A4F8D850202084F8DA0084F8D0508F -:10C8E000C4F8D45084F8045184F8055184F80E51EA -:10C8F00084F80F5184F8F45084F8005170BD6088BA -:10C9000091490144B1FBF0F1A4F878104BF6803165 -:10C91000A4F87A10E388A4F87E50B4F882C0DB0053 -:10C920000CFB00FC9CFBF0FCB3FBF0F304F15801A2 -:10C93000A4F882C05B1C00E021E09BB203FB00FC7A -:10C94000A4F88030BCF5C84FC4BF5B1E0B85B2FB9A -:10C95000F0F2521CCA8500F5802202F5EE32531E19 -:10C96000B3FBF0F20A84CB8B03FB00F2B2FBF0F0D6 -:10C97000C883214604F15800BDE8704018E6D4F899 -:10C98000F830B4F802C004F158005989DB89A4F8E2 -:10C990007E50B4F88240DB0004FB0CF4B3FBF1F3EF -:10C9A00094FBF1F45B1C44859BB203FB01F403850B -:10C9B000B4F5C84FC4BF5B1E0385B2FBF1F2521C35 -:10C9C000C285428C01EBC202521EB2FBF1F202841C -:10C9D000C28B02FB0CF2B2FBF1F1C18370BD2DE9F9 -:10C9E000F003047E0CB1252C03D9BDE8F00312201E -:10C9F0007047002A02BF0020BDE8F003704791F89D -:10CA00000DC01F260123514D4FF00008BCF1000F4F -:10CA100074D0BCF1010F1EBF1F20BDE8F0037047AA -:10CA2000B0F800C00A7C8F7B91F80F907A404F7C61 -:10CA300087EA090742EA072282EA0C0C5FF0000746 -:10CA40000CF0FF094FEA1C2C99FAA9F99CFAACFCEE -:10CA50004FEA19694FEA1C6C49EA0C2C0CEB0C1CD0 -:10CA60007F1C9444FFB21FFA8CFC032FE8D38CEA9E -:10CA7000020C364F0022ECFB057212096FF0240500 -:10CA800002FB05C2D2B201EBD207427602F00705E3 -:10CA90003F7A03FA05F52F4218BF82767ED104FB58 -:10CAA0000CF2120C521CD2B25FF0000400EB040C2A -:10CAB0009CF813C094453CBFA2EB0C02D2B212D337 -:10CAC0000D194FF0000C2D7A03FA0CF73D421CBFF4 -:10CAD000521ED2B2002A71D00CF1010C0CF0FF0CE6 -:10CAE000BCF1080FF0D304F1010C0CF0FF04052C8D -:10CAF000DCD33046BDE8F0037047FFE790F819C07B -:10CB00000C7E474604FB02C2104C4FF0000CE2FBC7 -:10CB1000054C4FEA1C1C6FF024040CFB0422D2B21B -:10CB200001EBD204427602F0070C247A03FA0CFCE3 -:10CB300014EA0C0F1FBF82764046BDE8F003704731 -:10CB400090F818C004E00000FFDB050053E4B36E6A -:10CB5000B2FBFCF40CFB1422521CD2B25FF00004B6 -:10CB600000EB040C9CF813C094453CBFA2EB0C02F4 -:10CB7000D2B212D30D194FF0000C2D7A03FA0CF833 -:10CB800015EA080F1CBF521ED2B27AB10CF1010C8B -:10CB90000CF0FF0CBCF1080FF0D300E011E004F141 -:10CBA000010C0CF0FF04052CDAD3A2E70CEBC40156 -:10CBB00081763846BDE8F0037047FFE70CEBC4010F -:10CBC00081764046BDE8F0037047FD4A016812686F -:10CBD0001140FC4A126811430160704730B4FA49B1 -:10CBE000F74B00244FF0010C0A78521CD2B20A70A5 -:10CBF000202A08BF0C700D781A680CFA05F52A4235 -:10CC0000F2D0097802680CFA01F15140016030BCA1 -:10CC1000704770B46FF01F02010C02EA90251F23C9 -:10CC2000A1F5AA4054381CBFA1F5AA40B0F15500A7 -:10CC300009D0A1F52850AA381EBFA1F52A40B0F1AD -:10CC4000AA00012000D100204FF0000C624664468B -:10CC50008CEA0106F6431643B6F1FF3F11D005F00A -:10CC600001064FEA5C0C4CEAC63C03F00106520890 -:10CC70006D085B08641C42EAC632162CE8D370BC0F -:10CC8000704770BC00207047017931F01F0113BF5D -:10CC9000002000221146704710B4435C491C03F089 -:10CCA000010C5B0803F00104A4445B0803F00104D9 -:10CCB000A4445B0803F00104A4445B0803F00104EE -:10CCC000A4445B0803F001045B08A44403F00104DE -:10CCD000A4440CEB53031A44D2B20529DDDB012A2C -:10CCE0008CBF0120002010BC704730B40022A1F19D -:10CCF000010CBCF1000F11DD431E11F0010F08BF44 -:10CD000013F8012F5C785FEA6C0C07D013F8025F10 -:10CD100022435C782A43BCF1010CF7D1491E5CBF69 -:10CD2000405C0243002A0CBF0120002030BC704749 -:10CD3000002A08BF70471144401E12F0010F03D0B3 -:10CD400011F8013D00F8013F520808BF704700BFCD -:10CD500011F8013C437011F8023D00F8023F521EE9 -:10CD6000F6D1704770B58CB000F110041D46164620 -:10CD70000DF1FF3C5FF0080014F8012C8CF8012045 -:10CD800014F8022D0CF8022F401EF5D101F1100C01 -:10CD90006C460DF10F0108201CF8012C4A701CF89C -:10CDA000022D01F8022F401EF6D1204607F0DCFAD2 -:10CDB0007EB16A1E04F130005FF0080110F8013CFA -:10CDC000537010F8023D02F8023F491EF6D10CB034 -:10CDD00070BD08982860099868600A98A8600B9848 -:10CDE000E8600CB070BD38B505460C466846FAF7E9 -:10CDF00054F9002808BF38BD9DF900202272A07E9A -:10CE0000607294F90A100020511A48BF494295F8FF -:10CE10002D308B42C8BF38BDFF2B08BF38BDE17A2B -:10CE2000491CC9B2E17295F82E30994203D8A17A13 -:10CE30007F2918BF38BDA2720020E072012038BDE2 -:10CE40000C2818BF0B2810D00D2818BF1F280CD095 -:10CE5000202818BF212808D0222818BF232804D052 -:10CE600024281EBF2628002070474FF0010070477D -:10CE70000C2963D2DFE801F006090E13161B323CC1 -:10CE8000415C484E002A5BD058E0072A18BF082AA8 -:10CE900056D053E00C2A18BF0B2A51D04EE00D2A71 -:10CEA0004ED04BE0A2F10F000C2849D946E023B147 -:10CEB000A2F110000B2843D940E0122A18BF112A12 -:10CEC0003ED090F8360020B1122A37D31A2A37D92B -:10CED00034E0162A32D31A2A32D92FE0A2F10F01F8 -:10CEE00003292DD990F8360008B31B2A28D925E04C -:10CEF000002B08BF042A21D122E013B1062A1FD03B -:10CF00001CE0012A1AD11BE01C2A1CBF1D2A1E2A64 -:10CF100016D013E01F2A18BF202A11D0212A18BFCB -:10CF2000222A0DD0232A1CBF242A262A08D005E055 -:10CF300013B10E2A04D001E0052A01D00020704769 -:10CF4000012070472DE9F0410D4604468668F8F748 -:10CF50002CF858B9F7F75AFE40F23471F7F757FB3F -:10CF6000A0602046F8F721F80028F3D095B13046AC -:10CF7000A168F8F767FB00280CDD2844401EB0FBD1 -:10CF8000F5F707FB05F13046F7F741FBA06038469F -:10CF9000BDE8F0810020BDE8F08170B50446904204 -:10CFA00028BF70BD101B642810D325188D4205D8EA -:10CFB000F8F76FFB00281CBF284670BD204670BDE7 -:10CFC0000C5D0200105D0200700100206420ECE79F -:10CFD00011F00C0F13D001F0040100290DBF402205 -:10CFE000102296214FF4167101F5BC71A0EB0103DC -:10CFF00088428CBF93FBF2F0002080B27047022978 -:10D0000019BF6FF00D0101EBD0006FF00E0101EBC5 -:10D010009000F2E7C08E11F00C0F08BF7047B0F51A -:10D02000296F38BF4FF4296070470246808E11F097 -:10D030000C0F08BF704792F85530D18E13F00C0FCB -:10D0400004D0B1F5296F38BF4FF42961538840F2FD -:10D05000E24C03FB0CF3528E4FF4747C0CEB821CFD -:10D060008C459CBF910101F57471591AA1F5967117 -:10D07000884228BF0846B0F5296F38BF4FF42960B1 -:10D080007047084418449830002A14BF0421002136 -:10D0900008447047F0B4002A14BF08220122002B74 -:10D0A00014BF0824012412F00C0F8B8ECA8E25D0D9 -:10D0B00091F85550944615F00C0F04D0BCF5296F2B -:10D0C00038BF4FF4296C4D8840F2E2466E434D8ED6 -:10D0D0004FF4747707EB851767459CBF4FEA851CB3 -:10D0E0000CF5747CA6EB0C0CACF5967C634528BF64 -:10D0F0006346B3F5296F38BF4FF4296314F00C0F62 -:10D1000004D0B2F5296F38BF4FF429621FFA83FCAF -:10D1100000280CBF0123002391F8560014F00C0FD7 -:10D1200008BF00200CEB020108449830002B14BF0C -:10D13000042100210844F0BC70472DE9F00391F868 -:10D1400054200B8E12F00C0F4FF474771CBF07EBBA -:10D1500083139CB256D000BF12F00C0F8B8ECA8E78 -:10D160004D8E91F855C021D016461CF00C0F04D0FE -:10D17000B6F5296F38BF4FF42966B1F8028040F246 -:10D18000E24908FB09F807EB8519B14502D8AE0161 -:10D1900006F57476A8EB0606A6F59676B34228BF88 -:10D1A0003346B3F5296F38BF4FF42963A34228BF34 -:10D1B00023469CB21CF00C0F1CBF07EB85139BB2DF -:10D1C00028D000BF1CF00C0F04D0B2F5296F38BF77 -:10D1D0004FF429629A4228BF1A4600280CBF012347 -:10D1E000002391F856001CF00C0F08BF0020A11876 -:10D1F00008449830002B14BF042100210844BDE8E6 -:10D20000F0037047022A07BF9B003C33DB007033FA -:10D210009CB2A1E7BCF1020F07BFAB003C33EB00AF -:10D2200070339BB2CEE710F0010F1CBF0120704796 -:10D2300010F0020F1CBF0220704710F0040018BF4E -:10D24000082070472DE9F0470446174689464FF0FD -:10D250000108084600F0C5FC0546484600F0C5FC3C -:10D2600010F0010F18BF012625D000BF15F0010FE7 -:10D2700018BF01232AD000BF56EA030108BF4FF0B0 -:10D28000000810F0070F08BF002615F0070F08BFB1 -:10D29000002394F85400B0420CBF00203046387090 -:10D2A00094F85510994208BF00237B70002808BFEE -:10D2B000002B25D115E010F0020F18BF0226D5D1A2 -:10D2C00010F0040F14BF08260026CFE715F0020F58 -:10D2D00018BF0223D0D115F0040F14BF0823002378 -:10D2E000CAE7484600F087FCB4F85810401A00B26C -:10D2F00047F6FE71884201DC002801DC4FF000088F -:10D3000016B1082E0CD018E094F85400012818BF6C -:10D31000022812D004281EBF0828FFDF032D0CD1DD -:10D3200094F8A40148B1B4F8A801012894F8540075 -:10D3300006D0082801D0082038704046BDE8F087A4 -:10D34000042818BF0420F7D1F5E7012814BF0228EC -:10D35000704710F00C0018BF0420704738B4CBB2EF -:10D36000C1F3072CC1B2C0F30724012B07D0022B55 -:10D3700009D0042B08BFBCF1040F2DD006E0BCF18E -:10D38000010F03D128E0BCF1020F25D0012906D0FE -:10D39000022907D0042908BF042C1DD004E0012C69 -:10D3A00002D119E0022C17D001EA0C0161F3070247 -:10D3B00004EA030161F30F22D1B211F0020F18BF8A -:10D3C000022310D0C2F307218DF8003011F0020FB4 -:10D3D00018BF02211BD111E0214003EA0C031940C0 -:10D3E00061F30702E6E711F0010F18BF0123E9D14D -:10D3F00011F0040F14BF08230023E3E711F0010F1D -:10D4000018BF012103D111F0040118BF08218DF8C4 -:10D410000110082B01BF000C012804208DF800002A -:10D42000BDF8000038BC70474FF0000C082902D04E -:10D43000042909D011E001280FD10420907082F84E -:10D4400003C0138001207047012806D00820907087 -:10D4500082F803C013800120704700207047162A0D -:10D4600010D12A220C2818BF0D280FD04FF0230C02 -:10D470001F280DD031B10878012818BF002805D029 -:10D48000162805D000207047012070471A70FBE76E -:10D4900083F800C0F8E7012908D002290BD004293D -:10D4A00012BF082940F6A660704707E0002804BFB5 -:10D4B00040F2E240704740F6C410704700B5FFDF0D -:10D4C00040F2E24000BD00004078704730B50546AC -:10D4D000007801F00F0220F00F0010432870092996 -:10D4E00012D2DFE801F0050705070509050B0F005B -:10D4F00006240BE00C2409E0222407E0012400208C -:10D50000E87003E00E2401E00024FFDF6C7030BD02 -:10D51000007800F00F0070470A68C0F8032089887F -:10D52000A0F807107047D0F803200A60B0F8070091 -:10D53000888070470A68C0F809208988A0F80D1013 -:10D540007047D0F809200A60B0F80D008880704755 -:10D550000278402322F0400203EA81111143017056 -:10D5600070470078C0F3801070470278802322F063 -:10D57000800203EAC1111143017070470078C009AD -:10D58000704770B514460E4605461F2A88BFFFDF58 -:10D590002246314605F1090008F03CF8A01D6870EC -:10D5A00070BD70B544780E460546062C38BFFFDFC7 -:10D5B000A01F84B21F2C88BF1F24224605F1090139 -:10D5C000304608F027F8204670BD70B514460E4668 -:10D5D00005461F2A88BFFFDF2246314605F10900B4 -:10D5E00008F018F8A01D687070BD0968C0F80F1029 -:10D5F00070470A88A0F8132089784175704790F821 -:10D60000242001F01F0122F01F02114380F8241092 -:10D610007047072988BF072190F82420E02322F0D3 -:10D62000E00203EA4111114380F8241070471F30D3 -:10D6300008F0A5B910B5044600F009FB002818BF92 -:10D64000204410BDC17811F03F0F1BBF027912F0CA -:10D65000010F0022012211F03F0F1BBF037913F0CD -:10D66000020F002301231A4402EB4202530011F07F -:10D670003F0F1BBF027912F0080F0022012203EBBB -:10D68000420311F03F0F1BBF027912F0040F00227A -:10D690000122134411F03F0F1BBF027912F0200F3B -:10D6A0000022012202EBC20203EB420311F03F0F02 -:10D6B0001BBF027912F0100F0022012202EB42027E -:10D6C0001A4411F03F0F1BBF007910F0400F0020EB -:10D6D0000120104410F0FF0014BF01210021084474 -:10D6E000C0B2704770B50278417802F00F02082A84 -:10D6F0004DD2DFE802F004080B4C4C4C0F14881F8D -:10D700001F280AD943E00C2907D040E0881F1F28B2 -:10D7100003D93CE0881F1F2839D8012070BD4A1E5C -:10D72000FE2A34D88446C07800258209032A09D00D -:10D7300000F03F04601C884204D86046FFF782FF77 -:10D74000A04201D9284670BD9CF803004FF00106A5 -:10D7500010F03F0F1EBF1CF10400007810F0100FF6 -:10D7600013D064460421604600F071FA002818BF07 -:10D7700014EB0000E6D0017801F03F012529E1D249 -:10D7800080780221B1EB501FDCD3304670BD002001 -:10D7900070BD70B50178012501F00F010024042946 -:10D7A0000AD007290DD008291CBF002070BD407881 -:10D7B0000E2836D0204670BD4078801F1F2830D9F3 -:10D7C000F8E7844640789CF803108A09032AF1D0D0 -:10D7D00001F03F06711C8142ECD86046FFF732FF32 -:10D7E000B042E7D89CF8030010F03F0F1EBF1CF1B9 -:10D7F0000400007810F0100F13D066460421604634 -:10D8000000F025FA002818BF16EB0000D2D00178EE -:10D8100001F03F012529CDD280780221B1EB501FC4 -:10D82000C8D3284670BD10B4017801F00F01032958 -:10D8300020D0052921D14478B0F81910B0F81BC0C8 -:10D84000B0F81730827D222C17D1062915D3B1F5F7 -:10D85000486F98BFBCF5FA7F0FD272B1082A98BF03 -:10D860008A420AD28B429CBFB0F81D00B0F5486FC7 -:10D8700003D805E040780C2802D010BC0020704787 -:10D8800010BC012070472DE9F0411F4614460D00E1 -:10D89000064608BFFFDF2146304600F0D8F90400F5 -:10D8A00008BFFFDF30193A462946BDE8F04107F0CE -:10D8B000B1BEC07800F03F007047C02202EA81117B -:10D8C000C27802F03F021143C1707047C0788009EE -:10D8D0007047C9B201F00102C1F340031A4402EBE0 -:10D8E0004202C1F3800303EB4202C1F3C00302EB27 -:10D8F0004302C1F3001303EB43031A44C1F3401383 -:10D9000003EBC30302EB4302C1F380131A4412F08A -:10D91000FF0202D0521CD2B20171C37802F03F0163 -:10D9200003F0C0031943C170511C417070472DE9C9 -:10D93000F0410546C078164600F03F041019401C1F -:10D940000F46FF2888BFFFDF281932463946001DE1 -:10D9500007F060FEA019401C6870BDE8F081C17836 -:10D96000407801F03F01401A401E80B2704710B568 -:10D9700090F803C00B460CF03F0144780CF03F0CCC -:10D98000A4EB0C0CACF1010C1FFA8CF4944288BF90 -:10D9900014462BB10844011D2246184607F03AFEF2 -:10D9A000204610BD4078704700B5027801F00303AF -:10D9B00022F003021A430270012914BF0229002138 -:10D9C00004D0032916BFFFDF012100BD417000BD57 -:10D9D00000B5027801F0030322F003021A4302703B -:10D9E000012914BF0229002104D0032916BFFFDF3B -:10D9F000012100BD417000BD007800F003007047B8 -:10DA0000417841B1C078192803D2C04A105C8842DD -:10DA100001D1012070470020704730B50124054630 -:10DA2000C17019293CBFB948445C02D3FF2918BF13 -:10DA3000FFDF6C7030BD70B515460E4604461B2ADC -:10DA400088BFFFDF65702A463146E01CBDE87040A4 -:10DA500007F0E0BDB0F807007047B0F80900704764 -:10DA6000C172090A01737047B0F80B00704730B4F7 -:10DA7000B0F80720B0F809C0B0F805300179941F5C -:10DA800040F67A45AC4298BFBCF5FA7F0ED269B138 -:10DA9000082998BF914209D293429FBFB0F80B006A -:10DAA000B0F5486F012030BC98BF7047002030BCF3 -:10DAB0007047001D07F063BF021D0846114607F0BE -:10DAC0005EBFB0F809007047007970470A6842608D -:10DAD00049688160704742680A60806848607047A2 -:10DAE0000988818170478089088070470A68C0F87A -:10DAF0000E204968C0F812107047D0F80E200A6056 -:10DB0000D0F81200486070470968C0F816107047D6 -:10DB1000D0F81600086070470A6842604968816062 -:10DB2000704742680A608068486070470968C16051 -:10DB30007047C06808607047007970470A684260A3 -:10DB400049688160704742680A6080684860704731 -:10DB50000171090A417170478171090AC1717047E9 -:10DB60000172090A417270478172090AC1727047D5 -:10DB700080887047C0887047008970474089704727 -:10DB800001891B2924BF4189B1F5A47F07D381886E -:10DB90001B2921BFC088B0F5A47F01207047002059 -:10DBA00070470A68426049688160704742680A604D -:10DBB000806848607047017911F0070F1BBF4079FA -:10DBC00010F0070F002001207047017911F0070FB6 -:10DBD0001BBF407910F0070F002001207047017132 -:10DBE0007047007970474171704740797047817183 -:10DBF000090AC1717047C088704745A282B0D2E956 -:10DC00000012CDE900120179407901F0070269465E -:10DC10001DF80220012A07D800F00700085C01283F -:10DC20009EBF012002B07047002002B07047017112 -:10DC3000704700797047417170474079704730B53F -:10DC40000C460546FB2988BFFFDF6C7030BDC378EA -:10DC5000024613F03F0008BF70470520127903F019 -:10DC60003F0312F0010F36D0002914BF0B2070477C -:10DC700012F0020F32D0012914BF801D704700BF7F -:10DC800012F0040F2DD0022914BF401C704700BFB2 -:10DC900012F0080F28D0032914BF801C704700BF62 -:10DCA00012F0100F23D0042914BFC01C704700BF0E -:10DCB00012F0200F1ED005291ABF1230C0B27047D3 -:10DCC00012F0400F19D006291ABF401CC0B270478D -:10DCD000072918D114E00029CAD114E00129CFD1B5 -:10DCE00011E00229D4D10EE00329D9D10BE0042997 -:10DCF000DED108E00529E3D105E00629E8D102E0FC -:10DD0000834288BF7047002070470000145D020006 -:10DD100000010102010202032DE9F041FC4E04461C -:10DD2000736893F828000127002528B193F8A00113 -:10DD3000D8B993F84801C0B193F8480198B383F873 -:10DD4000A071D3F84C113C2269B36570201D07F017 -:10DD500061FC052020702771706890F8A0110029DF -:10DD600018BF80F8485107D034E083F8A05103F180 -:10DD70002A014FF48E72E7E71D212A3007F0C9FC13 -:10DD800070687F2180F84510FF2180F8381080F8F6 -:10DD90002B1080F83E10818E21F0600120318186A9 -:10DDA00080F8285016E0FFE793F82200012814D0ED -:10DDB000187801281BD093F8500101281CBF0020BF -:10DDC000BDE8F081657018202070D3F852016060C2 -:10DDD00083F850510120BDE8F08165700720207064 -:10DDE000586A606083F822500120BDE8F0816570B8 -:10DDF000142020702022991C201D07F00BFC257296 -:10DE000071680D7081F85051C24882888284D0F8C0 -:10DE10006421527B80F8262080F82270D1F86401BA -:10DE20000088F4F7E3FEF4F78AFBD3E7B8484068CC -:10DE30000178002914BF80884FF6FF70704770B5D5 -:10DE4000B34C0546606890F8741120460629806836 -:10DE500003D0FFF73BFDB8B127E0FFF737FD10BB5C -:10DE6000A068FFF733FD00BB606890F8A40110F0D4 -:10DE70000C0F1AD0A068C17811F03F0F1CBF0079B9 -:10DE800010F0100F11D00EE0616891F874010828AD -:10DE900009D025B191F83E00FF2806D003E091F8A3 -:10DEA0002B00FF2801D0012070BD002070BDF8B507 -:10DEB000974C07460E46606890F82810002906BF68 -:10DEC00090F848110029F8BD00F1330520787F282B -:10DED00008BFFFDF207828707F202070606890F8EE -:10DEE0009A1100F5D470085C012808BF012508D0FC -:10DEF000022808BF022504D0042816BF08280325DD -:10DF0000FFDF606880F8365090F8971180F846106F -:10DF100090F87411072911D190F8A401012808BFC5 -:10DF2000012508D0022808BF022504D0042816BF06 -:10DF300008280325FFDF606880F83750606890F894 -:10DF400074014FF00005062804D1A068FFF7BEFC5D -:10DF500000283CD0606890F87411082904BF90F83C -:10DF6000A10102280ED04FF00301A068FFF762FB69 -:10DF700040B141780A09616881F838200088C0F30F -:10DF80000B0048870095A068FFF7C2FA6168BDF8EA -:10DF9000005091F83420520962F34615ADF8005054 -:10DFA000072818BFFFDF1CD0BDF800000090606894 -:10DFB000BDF8001081860421A068FFF73BFB002814 -:10DFC0007DD0B0F80100C004C00C79D0B0E0A068EA -:10DFD000C17811F03F0F1CBF007910F0100FB9D1BC -:10DFE000D0E791F87401062816D0072836D0082803 -:10DFF00073D00A2818BFFFDFD6D145F00A00ADF86C -:10E00000000091F83E10FF2914BF0121002161F3A7 -:10E010008200ADF80000C7E7A068FFF757FC58B1D1 -:10E02000012808BF45F0010046D0022814BFFFDFD9 -:10E0300045F0020040D0B7E7A068C17811F03F0F6B -:10E040001CBF007910F0020FAED00120FFF7F7FEE1 -:10E05000002808BF45F004002ED0A5E7A068FFF710 -:10E0600035FCB0B1012804BF45F00100ADF8000057 -:10E070000FD0022898D145F00200ADF80000A16849 -:10E08000CA7812F03F0F1CBF097911F0020F21D19D -:10E0900018E0A068C17811F03F0F1CBF007910F0A4 -:10E0A000020F05D1606890F83E00FF283FF47CAF76 -:10E0B000BDF8000040F00400ADF8000074E72BE06C -:10E0C0002FE00AE0616891F83E10FF2908BF20F0B8 -:10E0D0000400F1D040F00400EEE791F83E00FF2884 -:10E0E0001CBF45F00400ADF8000091F8A101022822 -:10E0F000BDF800000CBF40F0080020F00800ADF8AB -:10E1000000000CBF40F0020020F00200D4E7000045 -:10E1100074010020F41000206068818E21F06001FD -:10E1200005E06068818E21F0600101F14001818687 -:10E13000606890F8741106290DD190F8A40110F0D0 -:10E140000C0F08D0A068C17811F03F0F1CBF0079F8 -:10E1500010F0100F10D1A068C17811F03F0F0BD054 -:10E16000017911F0400F07D04FF00601FFF762FA76 -:10E170006168007881F84500606890F874010628AD -:10E1800004D00020FFF75BFE18BB04E0022F18BF8D -:10E19000012FF6D1F8BDA068C17811F03F0F33D040 -:10E1A000017911F0010F2FD0616801F12C0791F86E -:10E1B000783101F12B05FF2B0CD03A462946184641 -:10E1C000FDF762FF002808BFFFDF287840F002005B -:10E1D000287019E0FFF7C5F92870A068FFF798F9D3 -:10E1E000072804D23946A068FFF79DF90CE0A06823 -:10E1F000FFF78EF9072807D10021A068FFF71AFA68 -:10E20000016839608088B8800120FFF718FE80BB64 -:10E21000A068C17811F03F0F2BD0017911F0020FE7 -:10E2200027D0616801F13F0591F876216F1E1AB180 -:10E23000022E18BF032E08D0FFF76AF907280AD26A -:10E240002946A068FFF77DF912E0D1F85A0128604D -:10E25000B1F85E010BE0A068FFF75AF9072807D173 -:10E260000121A068FFF7E6F9016829608088A8808D -:10E270003E70606890F87401062808BFF8BD072852 -:10E2800018BF082802D00A2806D0F8BDA068FFF7FA -:10E290001DFB022808BFF8BD606800F14705A068B3 -:10E2A000FFF75DFB626892F83230C3F1FF018842EC -:10E2B00028BF084605D9918E21F0600101F1400187 -:10E2C0009186C2B203EB0501A068FFF750FB6168BD -:10E2D00091F83220104481F83200F8BD2DE9F04762 -:10E2E000FB4D06466C6894F82800002818BFBDE86E -:10E2F000F0871D212A34204607F00BFA01272770EA -:10E30000A868FFF705F920B3012827D002282AD0F2 -:10E31000062818BFFFDF2BD004F11D01A868FFF706 -:10E3200040F92072686804F1020904F1010890F8CC -:10E330007801FF2821D04A464146FDF7A5FE002876 -:10E3400008BFFFDF98F8000040F0020088F80000E6 -:10E3500031E0608940F013006081DDE7608940F0C2 -:10E3600015006081DEE7608940F010006081D3E72E -:10E37000608940F012006081CEE7A868FFF7F1F8ED -:10E3800088F80000A868FFF7C3F8072804D24946B8 -:10E39000A868FFF7C8F80EE0A868FFF7B9F80728E3 -:10E3A00009D10021A868FFF745F90168C9F80010F4 -:10E3B0008088A9F80400287804F109087F2808BF9C -:10E3C000FFDF287888F800004FF07F0985F800907B -:10E3D000277300206073FF20A073A17A11F0040F4F -:10E3E00008BF20752DD0686804F1150804F1140ADF -:10E3F00090F8761119B1022E18BF032E09D0A86823 -:10E40000FFF786F807280BD24146A868FFF799F86E -:10E4100015E0D0F85A11C8F80010B0F85E010CE011 -:10E42000A868FFF775F8072809D10121A868FFF748 -:10E4300001F90168C8F800108088A8F804008AF87B -:10E44000006084F81B90686890F89711217780F835 -:10E450002870BDE8F047062003F0F9BB2DE9F04134 -:10E460009B4C606890F82810FF250027A1B91D215A -:10E470002A3007F04EF960687F2180F8451080F857 -:10E48000385080F82B5080F83E50818E21F060018A -:10E490002031818680F82870606800F5D47290F889 -:10E4A0009A11895C80F8A411002002F0E4FF18B3EF -:10E4B000F8F7FEFC6068874990F879010E5C3046F9 -:10E4C000F8F7CBFA606880F8976190F8A41111F022 -:10E4D0000C0F0CBF25200F20F8F7D5F9606890F8D5 -:10E4E000A4110120F8F7D1FA606890F868110329A7 -:10E4F00018BF022910D103E0BDE8F04101F0A4B833 -:10E5000090F89A1100F5D470085C012804D101221A -:10E5100011460020F8F7E2FDF8F7B0FD606890F8CA -:10E52000A461012E07BF4FF0010803214FF000083E -:10E530000521A068FDF786FE616881F8760150B17B -:10E54000B8F1000F18BF402623D000BFF7F79BFF9C -:10E550003046F8F745FD6068D0F87C01F8F7B4FC68 -:10E56000606890F87811FF291CBF00F29110FDF748 -:10E57000A2FD6068062180F8775180F8785180F814 -:10E58000867180F8857180F8A17180F87411BDE8FA -:10E59000F08116F00C0F14BF55265026D6E770B543 -:10E5A0004B4C0646606800F5BA752046806841B15C -:10E5B000D0F80510C5F81D10B0F80900A5F8210025 -:10E5C00003E005F11D01FEF7AEFFA068FEF7C9FFED -:10E5D00085F82400A0680021032E018002D0052EBA -:10E5E00004D046E00321FEF771FF42E00521FEF76B -:10E5F0006DFF6068D0F8640100F10E01A068FEF7BD -:10E60000F4FF6068D0F8640100F11201A068FEF721 -:10E61000F0FFD4E90110D1F86421527D8275D1F860 -:10E620006421D28AC275120A0276D1F86421528816 -:10E630004276120A8276D1F864219288C276120A52 -:10E640000277D1F86421D2884277120A8277D1F812 -:10E6500064110831FEF7EBFF6068D0F86401017EB9 -:10E66000A068FEF7CCFF606890F8AA11A068FEF7DA -:10E67000D0FF05F11D01A068FEF75CFF95F824109E -:10E68000A068FEF772FF606800F5AD7590F85961FB -:10E6900090F8751191B190F86811032906D190F89E -:10E6A0006111002918BF90F87A0101D190F8770123 -:10E6B000FDF717FE00281CBF012605462946A06865 -:10E6C000FEF72AFF3146A068BDE87040FEF740BF64 -:10E6D00074010020305D0200FE49496881F8730131 -:10E6E000704770B5FB4D686890F8741102291FBF20 -:10E6F00090F8741101290C2070BD00F166014FF0F3 -:10E700000004C0F84C1180F848414FF01D0100F1A1 -:10E710002A0006F0FEFF68687F2180F84510FF217F -:10E7200080F8381080F82B1080F83E10818E21F090 -:10E7300060012031818680F82840047080F82240F2 -:10E7400080F85041012680F8A06190F8760130B140 -:10E75000F8F750FCF7F7ABFE686880F87641686818 -:10E76000072180F8724180F8616180F8684180F883 -:10E77000794180F8734180F8A14180F86011002050 -:10E7800070BDD44910B5886048680021A0F8A51173 -:10E7900080F8A711012180F87411FFF7A2FF00286B -:10E7A00018BFFFDF10BD2DE9F047CA4C0546606871 -:10E7B00090F87401012818BF022804D003281CBF58 -:10E7C0000C20BDE8F087687A022823D0F8F79DF87E -:10E7D0000220F8F773FB606890F97301F8F72FF9DE -:10E7E000A068F8F76EFBBC48F8F74EFBBB48F8F79B -:10E7F0002CF9606890F8591100F5AD70F8F7D7F86A -:10E800000F210720F8F7EFF8606890F8610100B376 -:10E81000FDF7DAFC6068297A00F5D47280F89A1165 -:10E82000297A895C80F8A4116968C0F87C1129688C -:10E83000C0F880116A7A012500266AB1012A23D026 -:10E840000527022A08BF80F8747175D0032A7ED08C -:10E85000BBE0FDF774FCDDE7A14F90F860C100223A -:10E8600090F87911491CA7FB01835B08A3EB830394 -:10E87000194480F879112CFA01F111F0010F03D13C -:10E88000511CCAB2032AEBD380F8A16190F8711130 -:10E89000002904BF90F87501002849D0F6F7B6F9B1 -:10E8A000074660683946D0F86C01F6F7CBFEDFF812 -:10E8B0003482814690FBF8F008FB109041423846C4 -:10E8C000F5F7A5FE6168C1F86C0199FBF8F0D1F885 -:10E8D0009C211044C1F89C01FDF7AEFB0146606825 -:10E8E000D0F89C21914223D8C0F86C71C0F89C618B -:10E8F00090F8750100281CBF0120FDF7BFFC012125 -:10E90000606890F87221002A1CBF90F87121002ADB -:10E910000ED090F8592100F5AD73012A04D15A792F -:10E9200002F0C002402A09D000F5AD70F9F73CF9B9 -:10E930006168042081F8740147E008E0FDF7CFFC2E -:10E9400061682A4601F5AD71F9F7F7F8F0E700299B -:10E9500018BFFFDF606800F2A51690F8A701400914 -:10E9600008BF012507D0012808BF022503D00228CF -:10E9700014BF00250825F8F79BFA307800F03F0611 -:10E980003046F8F76AF86068294680F89761FF20FA -:10E99000F7F779FF29460120F8F7BDF8F8F76EFB85 -:10E9A0000521A068FDF74EFC616881F8760148B149 -:10E9B00015F00C0F0CBF50255525F7F764FD2846C0 -:10E9C000F8F70EFB606880F874710020BDE8F087EE -:10E9D00010B5404C606890F8741104290DD00529D9 -:10E9E0001CBF0C2010BD90F8A10148B100F07EFEC4 -:10E9F0006168082081F8740108E0FFF72FFD05E049 -:10EA000000F074FE6168072081F87401002010BDD9 -:10EA10003049002210F0010F496802D0012281F82C -:10EA2000A82110F0080F03D01144082081F8A80194 -:10EA3000002070472749496881F87001704710B578 -:10EA4000244C636893F85831022B14BF032B002821 -:10EA50000BD100291ABF0229012000201146FDF721 -:10EA6000EEFA08281CBF012010BD606890F858011C -:10EA7000002816BF022800200120BDE81040F9F749 -:10EA80001DB81448406890F85801002816BF0228A5 -:10EA900000200120F9F712B80E49496881F85801A1 -:10EAA00070470C49496881F87201704770B5094C8C -:10EAB000616891F85801002816BF02280020012043 -:10EAC00081F8590101F5AD71F8F7E2FF606890F83F -:10EAD000581109E0740100202D5D0200335D020031 -:10EAE000ABAAAAAA40420F00022916BF032901219E -:10EAF000002180F8751190F8592100F5AD734FF0A1 -:10EB00000005012A04BF5B7913F0C00F0AD000F59D -:10EB1000AD73012A04D15A7902F0C002402A01D013 -:10EB2000002200E0012280F87121002A04BF0029A0 -:10EB300070BDC0F89C51F6F769F86168C1F86C01C6 -:10EB400091F8750100281CBF0020FDF797FB0026F7 -:10EB5000606890F8721100291ABF90F871110029AD -:10EB600070BD90F8592100F5AD71012A04D14979A1 -:10EB700001F0C001402906D02946BDE8704000F5EB -:10EB8000AD70F9F711B8FDF7AAFB61683246BDE830 -:10EB9000704001F5AD71F8F7D0BF70B5FE4D0C4671 -:10EBA00000280CBF01230023696881F8613181F8D6 -:10EBB0006A014FF0080081F87A010CD1002C1ABFCD -:10EBC000022C012000201146FDF739FA6968082857 -:10EBD00081F87A0101D0002070BD022C14BF032CF3 -:10EBE0001220F8D170BD002818BF112070470328EB -:10EBF000E94A526808BFC2F8641182F8680100202F -:10EC0000704710B5E44C606890F8681103291CBF88 -:10EC1000002180F8841101D0002010BD0123D0F81C -:10EC200064111A460020FEF735FA6168D1F86421B4 -:10EC3000526A904294BF0120002081F88401EBE7E2 -:10EC4000D548416891F86801032804D0012818BF0D -:10EC5000022807D004E091F86A01012808BF704734 -:10EC60000020704791F86901012814BF0328012092 -:10EC7000F6D1704770B5F8F7A7F9F8F786F9F8F705 -:10EC800089F8F8F707F9C44C0025606890F8760118 -:10EC900030B1F8F7AFF9F7F70AFC606880F8765101 -:10ECA00060680121A0F8A55180F8A75180F874117F -:10ECB00080F85051002070BDB74810B5406800F58D -:10ECC000C47006F0ECF9002010BDB3480121406883 -:10ECD00090F86821032A03BF80F85211D0F864210C -:10ECE0001288002218BF80F85221A0F8542180F821 -:10ECF00050117047A849496881F8AA017047017806 -:10ED0000002311F0010FA44949680AD04278032A70 -:10ED100008BFC1F8643181F86821012281F8A82177 -:10ED20001346027812F0040F0CD082784FF0000CDA -:10ED3000032A08BFC1F864C181F868210B44082286 -:10ED400083F8A821C27881F858210279002A16BFD9 -:10ED5000022A0123002381F8613181F86921427977 -:10ED600081F86021807981F870014FF000007047D0 -:10ED70008948406800F5D27070472DE9F041864C13 -:10ED800005460E46606890F87401032818BFFFDF3F -:10ED9000022D1EBF032DFFDFBDE8F0814FF00007FD -:10EDA0004FF00105AEB1606890F8371089B1818EDF -:10EDB00021F0600101F14001818690F8282042B9DC -:10EDC00080F8285011F0080F14BF0720062002F029 -:10EDD0003EFF6068A0F8A57180F8A77180F87451B3 -:10EDE000BDE8F08100F030BC2DE9F0476A4C0646E2 -:10EDF000894660684FF00108072E90F8617138BFAE -:10EE0000032533D3082E4FF0000088BFBDE8F087FC -:10EE1000FFF715F8002873D1A068C17811F03F0FF3 -:10EE200012D0027912F0010F0ED061684FF0050583 -:10EE300091F87621002A18BFB9F1000F16D091F889 -:10EE4000A411012909D011E011F03F0F1ABF007978 -:10EE500010F0100F002F53D14CE04FF001024FF093 -:10EE60000501FDF734F9616881F87601A168087839 -:10EE70002944C0F3801030B1487900F0C000402828 -:10EE800008BF012000D00020616891F876110029A8 -:10EE900018BF002807D0FDF735F90146606880F8F3 -:10EEA000771180F88581606890F87711FF292AD062 -:10EEB00080F878110846FDF732F940EA07056068E6 -:10EEC00090F87721FF2A18BF002D10D0072E0ED3FF -:10EED000A068C17811F03F0F09D0017911F0020F3D -:10EEE00005D00B21FDF7A0F9606880F886812846DF -:10EEF000BDE8F087FCF7DFFE002808BFBDE8F0871B -:10EF00000120BDE8F087A36890F8612159191B78AA -:10EF1000C3F3801C00F277136046FCF730FF054610 -:10EF2000CDE72DE9F0411C4C84B0A068FEF7CEFC83 -:10EF30000126002550B1022501287CD002287BD073 -:10EF4000F7F728FF04B00620BDE8F081F7F722FFAD -:10EF5000606890F86801032800F0C780A068C17855 -:10EF600011F03F0F05D0027912F0100F18BF0126E3 -:10EF700000D10026002E14BF0822012211F03F0FFD -:10EF800046D0007932EA000142D110F0020F09D0D8 -:10EF90000120FEF754FF01E074010020002808BFA3 -:10EFA000012000D000208DF800508DF804508DF81D -:10EFB0000850FF27D0B102AA694601A800F007FC5B -:10EFC000606890F859719DF80000002818BF47F05C -:10EFD00002070BD1A068FEF7D1FA80460121A06894 -:10EFE000FEF728FB4146F7F7EAFC90B166B1012035 -:10EFF00000F04DFB002878D039460020FEF757FF7F -:10F00000606880F890516CE03946002000F004FB05 -:10F010006BE0606890F86901032818BF022864D18A -:10F020009DF80400002860D09DF8000000285CD105 -:10F030007EB1012001E011E037E000F028FB00285C -:10F0400053D0FE210020FEF732FF606880F8905117 -:10F0500047E0FE21002000F0DFFA46E0F7F79AFED5 -:10F06000A0681821C27812F03F0F3ED00279914378 -:10F070003BD10421FEF7DEFA616891F86821032A8A -:10F0800001BF8078B5EB501F91F8840100282CD087 -:10F090004FF0010000F0FBFA38B3FF210120FEF72A -:10F0A00006FF606880F890611BE0F7F773FE606808 -:10F0B00090F86801032818D0A0681821C27812F0CF -:10F0C0003F0F12D0007931EA00000ED1012000F08C -:10F0D000DEFA50B1FF210220FEF7E9FE606880F8F9 -:10F0E000905104B00320BDE8F08104B00620BDE8D3 -:10F0F000F081F0B5FC4C074683B060686D4600783F -:10F10000002818BFFFDF002661688E70D1F8640107 -:10F1100002888A8042884A8382888A83C088C8831A -:10F1200081F8206047B10121A068FEF783FA054607 -:10F13000A0680078C10907E06946A068FEF7F3F906 -:10F14000A0680078C0F380116068012790F87521ED -:10F15000002A18BF002904D06A7902F0C002402AB0 -:10F1600026D090F87221002A18BF002903D06979AF -:10F1700011F0C00F1CD000F10E0006F0F7FB616823 -:10F1800091F87801FF2819D001F10802C91DFCF798 -:10F190007BFF002808BFFFDF6068C17941F00201F2 -:10F1A000C171D0F891114161B0F89511018310E05F -:10F1B0002968C0F80E10A9884182E0E7D1F86401FF -:10F1C000427ECA71D0F81A208A60C08B88814E6155 -:10F1D0000E8360680770D0F8642190F8731182F88C -:10F1E0005710D0F864010088F3F700FDF3F798F9A1 -:10F1F00003B0F0BD2DE9F041BB4C05460126606827 -:10F20000002790F86811012918BF022902D00329AC -:10F2100018BFFFDF55B1A068FEF764FA18B9A068FF -:10F22000FEF7B7FA10B100F07FFB2DE0606890F8B0 -:10F2300074017F25801F062828BFBDE8F081DFE824 -:10F2400000F003191930443EA748F7F726FF0028BD -:10F2500008BF2570F7F708FF606890F8760130B1B5 -:10F26000F7F7C8FEF7F723F9606880F87671F7F7CB -:10F2700091FD20E09C48F7F710FF002808BF25709B -:10F28000F7F7F2FE00F033FB102880F0DE80DFE8B5 -:10F2900000F036B6BFC3DCDC12CCD4DCDCDC249C52 -:10F2A00038699148F7F7F9FE002808BF2570F7F78D -:10F2B000DBFEF7F76FFDBDE8F041FFF7CFB88A48F6 -:10F2C000F7F7EBFE30B9257004E08748F7F7E5FE65 -:10F2D0000028F8D0F7F7C8FE9AE0032002F0CBF838 -:10F2E000002871D000210320FFF759F901221146AF -:10F2F0001046F7F7F3FE61680C2081F87401BDE851 -:10F30000F081606800F5BA75042002F0B4F80028B6 -:10F310007ED00E202870012002F099FCA068616860 -:10F320000078C0F3401081F8990100210520FFF713 -:10F3300036F96E49A0684FF0200CD1F864210378AB -:10F34000527B23F020030CEA42121A430270D1F8D8 -:10F35000640195F82530427B1A4042732820D1F889 -:10F3600064112DE0062002F086F8002850D05F4D91 -:10F370000F2085F87401022002F069FC6068012109 -:10F3800090F8A4210846F7F7A9FEA0686168007804 -:10F39000C0F3401081F8990101210520FFF7FFF823 -:10F3A000D5F864014673A068017821F0200101704E -:10F3B000F8F71AFA002818BFFFDF2820D5F86411E3 -:10F3C00081F85600BDE8F08122E0052002F053F8F4 -:10F3D000F0B101210320FFF7E2F8F8F705FA002861 -:10F3E00018BFFFDF6068012190F8A4210846F7F7F5 -:10F3F00075FE61680D2081F87401BDE8F0816068D8 -:10F40000A0F8A57180F8A77180F87461BDE8F0815B -:10F41000BDE8F04100F018B96168032081F874017B -:10F42000BDE8F041082002F012BC00F05FF961680D -:10F43000072081F87401BDE8F08100F057F9616898 -:10F44000082081F87401BDE8F081FFDFBDE8F0819C -:10F4500070B5254C606890F8741100230C2938D0E1 -:10F4600001220D2944D00E2953D00F291CBFFFDFE4 -:10F4700070BD042002F0EBFB606890F8A4110E2030 -:10F48000F7F701FA606890F8A40110F00C0F14BFB0 -:10F49000282100219620F7F735FDF7F7EFFD60688A -:10F4A000052190F8A451A068FCF7CCFE616881F8B2 -:10F4B000760148B115F00C0F0CBF50255525F6F715 -:10F4C000E2FF2846F7F78CFD61680B2081F8740194 -:10F4D00070BDF7F7D3FD00219620F7F713FD6168A3 -:10F4E000092081F8740170BD74010020F41000201F -:10F4F00090F8A40110F00C0F14BF282100219620D1 -:10F50000F7F700FDF7F7BAFD61680A2081F874018A -:10F51000E9E7A0F8A53180F8A73180F87421002030 -:10F52000FFF7E7FDBDE87040032002F090BB70B527 -:10F53000FC4C606890F874117F25891F062928BF4C -:10F5400070BDDFE801F017321D033D11F548F7F7F4 -:10F55000A4FD002808BF2570F7F786FDF7F71AFC11 -:10F56000BDE87040FEF77ABFEE48F7F796FD60BB46 -:10F5700025702AE0EB48F7F790FDD8B9257019E01F -:10F5800090F8371089B1818E012221F0600140315D -:10F59000818690F8283043B980F8282011F0080FB0 -:10F5A00014BF0720062002F052FBDE48F7F775FD76 -:10F5B0000028E3D0F7F758FDBDE8704000F044B8EC -:10F5C000D848F7F76AFD0028D2D0F7F74DFD6068FC -:10F5D000002100F5C47005F013FDBDE8704000F097 -:10F5E00033B870B5CF4C06460D46012908D0606887 -:10F5F00090F8A4213046BDE87040134602F073BB7A -:10F60000F7F7F7F861680346304691F8A4212946D8 -:10F61000BDE8704002F067BB10B5FEF748FCC1487A -:10F62000406890F82810002918BF10BD012280F80A -:10F63000282090F8340010F0080F14BF072006208F -:10F64000BDE8104002F003BB70B5F7F7BDFCF7F75B -:10F650009CFCF7F79FFBF7F71DFCB24C0025606898 -:10F6600090F8760130B1F7F7C5FCF6F720FF606837 -:10F6700080F876516068022180F87411A0F8A551D5 -:10F6800080F8A751BDE87040002002F0E0BA70B5E4 -:10F69000A44D06460421A868FDF7CCFF044668681F -:10F6A00090F82800A0B901F0C9FE217811F0800F70 -:10F6B00014BF4FF496711E21B4F80120C2F30C025E -:10F6C00012FB01F10A1AB2F5877F28BF814201D2ED -:10F6D000002070BD68682188A0F8A511A17880F885 -:10F6E000A7113046BDE8704001F0C5BE2DE9F041DC -:10F6F0008C4C616891F8A701400908BF012607D02A -:10F70000012808BF022603D0022814BF00260826BD -:10F710000027D1F88021002A38D001F2A51800284E -:10F7200008BF012507D0012808BF022503D0022801 -:10F7300014BF00250825F7F7BBFB98F8000000F080 -:10F740003F084046F7F789F96068294680F89781B5 -:10F75000FF20F7F798F860682A46D0F8801101205A -:10F76000F7F75DFAF7F78AFC0521A068FCF76AFD58 -:10F77000616881F8760148B115F00C0F0CBF502577 -:10F780005525F6F780FE2846F7F72AFC6068D0F882 -:10F790007C01F7F799FB606890F86811022906D0A0 -:10F7A000032904BF90F89001012804D008E090F8E4 -:10F7B0009001022804D1324601210020F7F78EFC87 -:10F7C000606880F8A46180F88571BDE8F0812DE95A -:10F7D000F74F544C0025914660688A4690F87501B1 -:10F7E00000280CBF4FF001084FF00008A068017816 -:10F7F000CE090121FDF71EFF36B1407900F0C000AF -:10F80000402808BF012600D00026606890F87611D5 -:10F81000002963D090F868114FF0000B03291ED126 -:10F8200090F86111002918BF90F87A7117D0FF2F56 -:10F8300018BF082F22D03846FCF7E4F9002818BF7B -:10F840004FF00108002E49D0606890F88601D0B1D1 -:10F85000FCF763FC0546606880F886B13EE0A1686D -:10F86000CA7812F03F0F19BF097911F0010F90F813 -:10F870002B10FF2918BF90F87771D8D176B390F884 -:10F88000850170B12AE03846FCF7F5FB05460121F9 -:10F89000A068FDF7CFFE01462846F8F71DF905469A -:10F8A0001CE0A068C17811F03F0F05D0017911F07C -:10F8B000010F18BF0B2101D14FF005014FF00002DD -:10F8C000FCF705FC616881F8760138B1FCF71AFC99 -:10F8D000FF2803D06168012581F877018AF800507C -:10F8E0000098067089F8008003B0BDE8F08F0D48DD -:10F8F00010B5406890F8371089B1818E012221F04F -:10F9000060014031818690F8283043B980F8282082 -:10F9100011F0080F14BF0720062002F098F902200A -:10F9200010BD0000740100202DE9F04FFF4D83B0A1 -:10F930000024686890F874017F27801F26464FF0E6 -:10F940000108062880F03F82DFE800F003080893F2 -:10F95000FDFC00F01BFC044600F036BAF348F7F754 -:10F960009CFB002808BF2F70F7F77EFBA868FDF707 -:10F97000CFFD044607286AD1A868FDF7A7FF69688C -:10F9800091F89021824262D191F87401062804D145 -:10F99000A868FDF79BFF002836D0686890F87411BE -:10F9A000082904BF90F8A101022813D04FF00301E9 -:10F9B000A868FDF73FFE002849D06968437891F8B0 -:10F9C0003820B2EB131F42D10088498FC0F30B00DF -:10F9D00088423CD100212046FFF706FAB0B38DF8EB -:10F9E00000608DF804608DF80860A868FF24C17875 -:10F9F00011F03F0F1CBF007910F0020F1CD0012046 -:10FA0000FEF71DFA50B117E0A868C17811F03F0F5A -:10FA10001CBF007910F0100FBFD1DBE702AA6946C6 -:10FA200001A8FFF7D4FE686890F859419DF80000DE -:10FA3000002818BF44F0020423469DF808209DF8D2 -:10FA400004109DF8000000F011FA02E0FFE7FFF754 -:10FA50004EFF0446686890F87601002800F0B481F3 -:10FA6000F7F7C8FAF6F723FD686880F8766100F0CA -:10FA7000ABB9A868FDF74CFD8146A9686868CA78EB -:10FA800090F891319A4221D10A7990F892319A42B4 -:10FA90001CD14A7990F893319A4217D18A7990F81B -:10FAA00094319A4212D1CA7990F895319A420DD187 -:10FAB0000A7A90F896319A4208D1097890F898011C -:10FAC000C1F38011814208BF012400D00024F7F760 -:10FAD00061F99648F7F7E1FA002808BF2F70F7F7A9 -:10FAE000C3FAB9F1040F75D1002C73D0686890F88F -:10FAF000481100296ED190F8281021B190F83410E7 -:10FB000011F0100F66D0D0F84C411D21204605F0B1 -:10FB100000FE84F80080686804F1020A04F101091B -:10FB200090F87801FF280FD052464946FCF7ACFA0E -:10FB3000002808BFFFDF99F8000040F0020089F8B4 -:10FB400000001FE049E0FFE0A868FDF70AFD89F822 -:10FB50000000A868FDF7DCFC072804D25146A8681D -:10FB6000FDF7E1FC0EE0A868FDF7D2FC072809D1FB -:10FB70000021A868FDF75EFD0168CAF800108088C2 -:10FB8000AAF8040004F11D01A868FDF70AFD20721F -:10FB9000287804F109097F2808BFFFDF287889F851 -:10FBA00000002F706868618990F8A12162F300015C -:10FBB00041F01A01618184F80C806673FF21A17302 -:10FBC0002175E77690F89711217780F84881072012 -:10FBD00002F03DF8062400F0F7B84FF00208534851 -:10FBE000F7F75BFA002808BF2F70F7F73DFAA8680F -:10FBF000FDF78EFC0446A868FDF768FE082C08BFD8 -:10FC000000287DD1A8684FF00301C27812F03F0FA1 -:10FC100076D0007931EA000072D1686800F5BA77D1 -:10FC200090F86101002814BFBE79FE784FF00009FA -:10FC3000B87878B1FCF766FA0446FF280AD0014686 -:10FC4000A868401DFCF737FAB4420CBF4FF0010919 -:10FC50004FF000090021A868FDF7ECFC062207F12F -:10FC60001D0105F0ABFC40B9A868FDF77AFC97F8D8 -:10FC70002410884208BF012000D0002059EA000962 -:10FC800060D0686800F5AD7490F859A1787838B103 -:10FC90003046FCF726FB00281CBF04464FF0010A43 -:10FCA0000027A86801784FEAD11B0121FDF7C2FCAB -:10FCB000BBF1000F07D0407900F0C000402808BF1A -:10FCC0004FF0010B01D04FF0000B0121A868FDF7A8 -:10FCD000B1FC0622214605F071FC30B9A868FDF799 -:10FCE0004DFC504508BF012401D04FF000043BEA11 -:10FCF000040018BFFF2E0FD03046FCF7BCF900E01F -:10FD000020E0060008D00121A868FDF793FC014619 -:10FD10003046F7F7E1FE074644EA070019EA000F0C -:10FD200010D06868012100F5C47001E07401002062 -:10FD300005F066F94FF001084046FFF7DAF90520B3 -:10FD400001F085FF44463FE00224F848F7F7A5F9A3 -:10FD5000002808BF2F70F7F787F9A868FDF7D8FBD0 -:10FD60000646A868FDF7B2FD072E08BF00282BD174 -:10FD7000A8684FF00101C27812F03F0F24D0027939 -:10FD8000914321D1696801F5BA760021FDF752FC53 -:10FD9000062206F11D0105F011FCA8B9A868FDF7BF -:10FDA000E0FB96F8241088420ED16868012100F526 -:10FDB000C47005F025F9FF21022000F009F80028A1 -:10FDC00018BF032400E0FFDF03B02046BDE8F08F3A -:10FDD0002DE9F041D54C02460025606890F8A1312C -:10FDE0000BB3A0684FF000064FF00107C37813F083 -:10FDF0003F0F1CBF007910F0100F1BD00020FEF742 -:10FE000056F8606890F83400C0F3411002281BD007 -:10FE10000220FFF73CFC88B16068012580F8906102 -:10FE2000F6F7B8FF1FE0002A14BF0223012380F871 -:10FE3000A131D6E71046FEF73AF805E06068818EFA -:10FE400021F0600140318186606890F8281051B936 -:10FE500080F8287090F8340010F0080F14BF0720C5 -:10FE6000062001F0F4FE2846BDE8F0812DE9F047B8 -:10FE7000AE4C05461F4690460E46A068FDF726FD8F -:10FE8000002800F0CF80012805D0022800F00C8166 -:10FE9000BDE8F0472BE5A0680921C27812F03F0FBA -:10FEA00000F040810279914340F03C81616891F813 -:10FEB0006811032906D012F0020F08BFFF2119D0E4 -:10FEC00065B116E00021FDF7B5FB61680622D1F8A7 -:10FED00064111A3105F072FB50BB1EE0FDF74EFBBA -:10FEE00005460121A068FDF7A5FB2946F6F767FD49 -:10FEF00018B13946012000F039B9606890F86901FD -:10FF0000032818BF022840F00D81002E1CBFFE21DF -:10FF1000012040F02B8100F005B9A068FDF721FB1E -:10FF20006168D1F86411497E884208BF012600D07B -:10FF30000026A068C17811F03F0F05D0017911F0BB -:10FF4000020F01D05DB338E0616891F86A21012A9F -:10FF500001D0A6B119E0C6B90021FDF76BFB6168BD -:10FF60000268D1F86411C1F81A208088C883A0689B -:10FF7000FDF7F7FA6168D1F86411487605E091F869 -:10FF8000770191F87A1188424BD1606800F5C4700E -:10FF900005F07AF8002844D00F20BDE8F087B8F1CA -:10FFA000000F0CD0FDF7EAFA05460121A068FDF725 -:10FFB00041FB2946F6F703FD08B1012200E00022CB -:10FFC000616891F86A01012807D040B92EB991F80B -:10FFD000773191F87A118B4201D1012100E00021A3 -:10FFE0000A421ED0012808BF002E13D14FF0000195 -:10FFF000A068FDF71FFB61680268D1F86411C1F8C1 -:020000040002F8 -:100000001A208088C883A068FDF7ABFA6168D1F830 -:1000100064114876606800F5C47005F035F8002872 -:10002000BAD17FE06068A8464FF0020990F86801F5 -:1000300003282AD0A068C17811F03F0F1BBF0079B8 -:1000400010F0020F002001204FF0FF05A8B14FF083 -:100050000100FDF7F4FE002804BF3D46B8F1000F93 -:100060000BD1A068FDF78AFA07460121A068FDF7C9 -:10007000E1FA3946F6F7A3FC50B129460020FFF714 -:10008000A7FE002818BF4FF003094846BDE8F087D7 -:10009000606890F86901032818BF0228F5D1002E86 -:1000A00018BFFE25E9D1F0E7626892F86831032BAA -:1000B00038D0A0684FF0090CC17811F03F0F31D053 -:1000C00001793CEA010C2DD1022B01F0020105D08F -:1000D000002908BFFF2148D03DB345E009B135B143 -:1000E00013E002F5C47004F0CFFFA0B91AE0B8F134 -:1000F000000F1DD0FDF742FA05460121A068FDF76B -:1001000099FA2946F6F75BFC90B1606800F5C47077 -:1001100004F0BAFF30B139460220FDF7C8FE0D20C9 -:10012000BDE8F0870220BDE8F08712E074010020EE -:10013000606890F86901032818BF0228F2D1002EE8 -:10014000F0D04FF0FE014FF00200FFF765FA0220F9 -:10015000E9E7FDF713FA05460121A068FDF76AFA01 -:100160002946F6F72CFC20B139460220FFF754FA55 -:10017000D8E7606890F86901032818BF0228D1D138 -:10018000002E1CBFFE210220F0D1CBE72DE9F84F55 -:100190000027D048F6F781FFCE4C002804BF7F200F -:1001A0002070F6F761FFA068FDF7B2F980460121E3 -:1001B000FEF71AFE61684FF0000B91F8A421012AA6 -:1001C00013D0042A1CBF082AFFDF00F07781606883 -:1001D00090F8760130B1F6F70DFFF6F768F9606830 -:1001E00080F876B13846BDE8F88F0125BA4EB8F1EF -:1001F000080F19D2DFE808F024860418181811FD3A -:100200000546F6F7C7FD002D7AD0606890F86801C2 -:10021000012818BF022858D072E028B191F868016F -:10022000022805D0012850D0F6F7B4FD0627CEE706 -:10023000FF20FEF753F860680C2780F8A1B1C6E7ED -:100240000027002800F0208191F86801022834D0AE -:1002500001283AD00328BAD1A068D1F86421C37824 -:1002600092F81AC0634521D1037992F81BC0634507 -:100270001CD1437992F81CC0634517D1837992F859 -:100280001DC0634512D1C37992F81EC063450DD1DC -:10029000037A92F81FC0634508D1037892F819C019 -:1002A000C3F38013634508BF012300D0002391F8F6 -:1002B0006A1101290DD0D3B1E4E0FF20FEF70EF85A -:1002C00060680C2780F8A15181E7FF20FEF706F84F -:1002D00016E0002B71D102F11A01FDF724F9A06894 -:1002E000FDF73FF96168D1F864114876CAE096F8E5 -:1002F0007A0108287CD096F8771181425DD0C3E05E -:10030000062764E7054691F8750100280CBF4FF0F9 -:1003100001094FF000090027A06810F8092BD20945 -:1003200007D0407900F0C000402808BF4FF0010A14 -:1003300001D04FF0000A91F86801032806D191F826 -:100340006101002818BF91F87A0101D191F8770175 -:100350000090FBF790FE5FEA00082AD00098FBF7B8 -:1003600051FC002818BF4FF00109BAF1000F20D04E -:10037000A06800F109014046F7F7AEFB070060688E -:1003800090F8598118BF48F00208606890F8681129 -:10039000032913D0F6F7FEFC002DB1D0F6F71FFBB2 -:1003A00000280CBF002F404672D000BFFDF796FF1B -:1003B000A6E7606890F85981E7E763E0A168D0F8A4 -:1003C0006401CA78837E9A421FD10A79C37E9A4219 -:1003D0001BD14A79037F9A4217D18A79437F9A4287 -:1003E00013D1CA79837F9A420FD10A7AC37F01E081 -:1003F0004AE05BE09A4208D10978407EC1F380115F -:10040000814208BF4FF0010801D04FF0000896F874 -:100410007701082806D096F87A11884208BF4FF075 -:10042000010A01D04FF0000A2FB9B9F1000F04D032 -:10043000F6F7D5FA08B1012000E000204DB196F89A -:100440006A11012903D021B958EA0A0101D001211A -:1004500000E00021084217D0606890F86A11012975 -:1004600008BFB8F1000F0DD1D0F8640100F11A01F6 -:10047000A068FDF758F8A068FDF773F86168D1F837 -:10048000641148760E27A2E6F6F784FC38E7FFE70A -:10049000606890F86901032818BF02287FF430AF24 -:1004A000BAF1000F18BFFE2080D129E791F8701132 -:1004B000002918BF00283FF4B7AE06E0B8F1070FD7 -:1004C0007FF4B2AE00283FF4AFAEFEF72AFD074638 -:1004D0007DE6000074010020F4100020D0F8E01048 -:1004E00049B1D0E939231A448B691A448A61D0E9A9 -:1004F0003712D16003E0F74AD0F8DC101162D0E97E -:10050000371009B1086170470028FCD000218161D3 -:1005100070472DE9FF4F06460C46488883B040F2ED -:10052000E24148430190E08A002500FB01FA94F87B -:10053000640090460D2822D00C2820D024281ED0FC -:1005400094F8650024281AD000208346069818B134 -:100550000121204602F0B7FE94F8541094F855009B -:10056000009094F8D0200F464FF47A794AB1012ACE -:1005700061D0022A44D0032A5DD0FFDFB5E001201C -:10058000E3E7B8F1000F00D1FFDFD24814F8541FA1 -:10059000243090F83800FCF77EFF01902078F7F7C0 -:1005A000D2F84D4600F2E730B0FBF5F1DFF82493C6 -:1005B000D9F80C0001EB00082078F7F7C4F80146E1 -:1005C00014F85409022816D0012816D040F6340039 -:1005D00008444AF2EF010844B0FBF5F10198D9F85C -:1005E0001C20411A514402EB08000D18012084F828 -:1005F000D0002D1D78E02846EAE74FF4C860E7E711 -:10060000DFF8D092A8F10100D9F80810014300D119 -:10061000FFDFB148B8F1000F016801EB0A0506D011 -:10062000D9F8080000F22330A84200D9FFDF0320E8 -:1006300084F8D00058E094F86420019D242A05D065 -:1006400094F86530242B01D0252A3AD1B4F85820EB -:10065000B4F8F030D21A521C12B2002A31DB94F8EE -:10066000F22072B3174694F8F32002B110460090BE -:10067000022916D0012916D040F6340049F6085256 -:100680008118022F12D0012F12D040F634001044EE -:10069000814210D9081A00F5FA70B0FBF9F0054450 -:1006A0000FE04846EAE74FF4C860E7E74846EEE760 -:1006B0004FF4C860EBE7401A00F5FA70B0FBF9F0B0 -:1006C0002D1AB8F1000F0FD0DFF80882D8F8080013 -:1006D00018B9B8F8020000B1FFDFD8F8080000F23E -:1006E0002330A84200D9FFDF05B9FFDF2946D4F83F -:1006F000D400F3F78CFFC4F8D400B0600020307051 -:100700004FF0010886F80480204602F0CAFEABF1E3 -:100710000101084202D186F8058005E094F8D00076 -:1007200001282FD003207071606A3946009A01F0C9 -:1007300022FBF060069830EA0B0020D029463046B4 -:10074000FCF700FC87B2204602F0ABFEB8420FD89F -:10075000074686F8058005FB07F1D4F8D400F3F7C7 -:1007600056FFB06029463046FCF7ECFB384487B2B0 -:100770003946204602F0A7FDB068C4F8D40007B09F -:10078000BDE8F08F0220CEE72DE9F04106460C4689 -:10079000012001F0D2FAC5B20B2001F0CEFAC0B2AE -:1007A000854200D0FFDF0025082C7DD2DFE804F071 -:1007B0000461696965C98E96304601F0D2FA062156 -:1007C000F2F7E2F8040000D1FFDF304601F0C9FA89 -:1007D0002188884200D0FFDF94F8D00000B9FFDF05 -:1007E000204602F075FA3B4E21460020B560758028 -:1007F000F561FCF7A2FC00F19807606AB84217D9CE -:1008000094F85500F6F786FF014694F854004FF42B -:100810007A72022828D0012828D040F634000844F3 -:100820004AF247310844B0FBF2F1606A0844C51B44 -:10083000214600203561FCF780FC618840F2E242ED -:1008400051439830081AA0F22330706194F8552073 -:1008500094F85410606A01F08EFAA0F29310B0611F -:10086000BDE8F041F4F7BBBE1046D8E74FF4C860CE -:10087000D5E7BDE8F04102F002BCBDE8F041F6F773 -:1008800045BC6FF0040001F058FAC4B2192001F021 -:1008900054FAC0B2844200D0FFDF304601F061FA62 -:1008A0000621F2F771F800E04BE0040000D1FFDF11 -:1008B000304601F056FA2188884200D0FFDF2046FA -:1008C000BDE8F0410122002101F072BAF6F7BEFA4C -:1008D000D3E70000A012002084010020304601F080 -:1008E00040FA0621F2F750F8040000D1FFDF30464D -:1008F00001F037FA2188884200D0FFDF94F8D00059 -:10090000042800D0FFDF84F8D05094F8DA504FF676 -:10091000FF76202D00D3FFDFFB4820F8156094F808 -:10092000DA00F4F754F900B9FFDF202084F8DA0088 -:100930002046FFF7D3FDF5480078BDE8F041E2F727 -:10094000EBBAFFDFBDE8F08170B5EF4C0025483C05 -:1009500084F82C50E07868B1E570FEF7B6F920789D -:10096000042803D0A06AFFF7B9FDA562E748007824 -:10097000E2F7D2FABDE8704001F02BBA70B5E24C54 -:100980000146483C206AF4F75DFE6568A27890FB5A -:10099000F5F172B140F27122B5FBF2F292B2E36B63 -:1009A00001FB02F6B34202D901FB123200E0002241 -:1009B000E2634D43002800DAFFDF2946206AF3F79F -:1009C00026FE206270BD2DE9F05FFEF7D1F9824668 -:1009D000CD486C3800F1240881684646D8F81C00E0 -:1009E000F3F715FE0146306AF4F72CFE4FF00009CC -:1009F000074686F839903C464FF423754E461CE076 -:100A00000AEB06000079F6F785FE4AF2B1210144AF -:100A10004FF47A70B1FBF0F108EB86024046926821 -:100A200011448C4207D3641A90F83910A4F523744A -:100A3000491C88F83910761CF6B298F83A00B04292 -:100A4000DED8002C0FDD98F83910404608EB810104 -:100A50008968A14207D24168C91BA94200D90D4645 -:100A60006C4288F8399098F83960C3460AEB06085A -:100A700098F80400F6F74EFE01464AF2B120014410 -:100A80004FF47A7AB1FBFAF298F80410082909D0E9 -:100A9000042909D00020131804290AD0082908D0F5 -:100AA000252007E0082000E0022000EB400028306D -:100AB000F1E70F20401D4FF4A872082913D0042934 -:100AC00014D0022915D04FF0080C282210FB0C205E -:100AD000184462190BEB860302449868D846824298 -:100AE0000BD8791925E04FF0400CEFE74FF0100CD0 -:100AF000ECE74FF0040C1822E8E798F8392098F852 -:100B00003A604046B24210D2521C88F839203C1B51 -:100B10009868621984180846F6F7FCFD4AF2B1217C -:100B20000144B1FBFAF0011903E080F83990D8F8DC -:100B30000410D8F82000BDE8F05FF3F768BD2DE998 -:100B4000FE4F14460546FEF713F9DFF8BCB10290DC -:100B5000ABF1480B58469BF839604FF0000A0BEB9D -:100B600086018968CBF84010ECB304460078002772 -:100B7000042827D0052840D0FFDFA0463946A069C9 -:100B8000F3F745FD0746F4F741F881463946D8F8B2 -:100B90000440F4F757FD401E90FBF4F0C14361435D -:100BA0003846F3F734FD0146C8F820004846F4F70C -:100BB00049FD002800DDFFDF012088F8140088F8D7 -:100BC00013008FE0D4F81890D4F8048001F06BF98A -:100BD000070010D0387800B9FFDF796978684A4695 -:100BE0000844414600E00EE001F045F90746404563 -:100BF000C3D9FFDFC1E75746BFE7A06A01F0F6F8A7 -:100C000040F6B837B9E7016A0BEB46000191C08D99 -:100C100008B35C46DBF81800FFF7B0FE6168206A95 -:100C2000F3F7F5FC074684F839A0019CD846204626 -:100C3000DBF81810F4F706FD814639462046F4F734 -:100C400001FDD8F80420B9FBF2F3B0FBF2F08342C7 -:100C500043D0012142E0F3F7D9FFFFF78FFEFFF702 -:100C6000B2FE9BF83910DBF804900BEB81010746CC -:100C7000896800913946DBF82000F4F7E3FC002492 -:100C80008046484504DB98FBF9F404FB09F41BE0BB -:100C9000002059469BF8392008E000BF01EB800393 -:100CA00004F523749B68401C1C44C0B28242F5D8F2 -:100CB00052B10120F6F72EFD4AF2B12101444FF462 -:100CC0007A70B1FBF0F004440099A8EB04000C1A10 -:100CD00000D5FFDFCBF84040A7E7002188F81410CB -:100CE00088F813A09BF802005C46B8B13946206A28 -:100CF000F4F7A8FC0146E26B40F2712042438A42BD -:100D000006D2C4F840A009E00C13002080010020A6 -:100D1000206C511A884200D308462064AF6085F8E1 -:100D200000A001202871029F94F839003F1DC05D8A -:100D3000F6F7F0FC4AF23B5101444FF47A70B1FBF4 -:100D4000F0F0216CFB300844E8602078042808D1DA -:100D500094F8390004EB4000C08D0A2801D203202A -:100D600000E00220687104EB4600C08DC0B1284647 -:100D70006168FCF7E7F882B20020761C0CE000BF47 -:100D800004EB4003B042D98D114489B2D98501D317 -:100D9000491CD985401CC0B294F83A108142EFD268 -:100DA000A868A061E06194F8390004EB4000C18DAF -:100DB000491CC18594F83900C05D082803D0042877 -:100DC00003D000210BE0082100E0022101EB4101EA -:100DD00028314FF4A872082804D0042802D0022831 -:100DE00007D028220A44042805D0082803D025214A -:100DF00002E01822F6E70F21491D08280CD004282C -:100E00000CD002280CD0082011FB0020216C884255 -:100E100008D20120BDE8FE8F4020F5E71020F3E75F -:100E20000420F1E70020F5E770B5FB4C061D14F82F -:100E3000392F905DF6F76EFC4FF47A7100F2E730CF -:100E4000B0FBF1F0D4F8071045182078805DF6F774 -:100E50004FFC2178895D082903D0042903D00022A2 -:100E60000BE0082200E0022202EB420228324FF49B -:100E7000A873082904D0042902D0022907D0282306 -:100E80001344042905D0082903D0252202E01823A1 -:100E9000F6E70F22521D08290AD004290AD0022998 -:100EA0000AD0082112FB0131081A281A293070BD16 -:100EB0004021F7E71021F5E70421F3E7FEB50446EA -:100EC0000F46012000F039FFC5B20B2000F035FFBE -:100ED000C0B2854200D0FFDF01260025CE48082F92 -:100EE00050D2DFE807F004304747434F4F4C0446E9 -:100EF000467406744078002819D1FDF739FF009533 -:100F000094F839108DF808104188C90410D0606C2D -:100F1000019003208DF80900BF4824388560C56121 -:100F200025746846FDF73FFC002800D0FFDFFEBDBA -:100F3000FFF77AFF0190207D10B18DF80950EBE7A3 -:100F40008DF80960E8E70446407840B1207C08B994 -:100F5000FDF790FE6574BDE8FE40F3F761BDA67431 -:100F6000FDF736FD0028E2D0FFDFFEBDBDE8FE4004 -:100F7000F6F7CCB82046BDE8FE4000F09DBFBDE8C6 -:100F8000FE40E1E4FFDFFEBDA34950B101228A70BB -:100F90004A6840F27123B2FBF3F202EB0010C8631F -:100FA00070470020887070472DE9F05F894640F255 -:100FB0007121994E484300250446706090462F46A3 -:100FC000D0074AF2B12A4FF47A7B0FD0B9F800006B -:100FD0004843B0600120F6F79DFB00EB0A01B1FB2E -:100FE000FBF0241AB7680125A4F523745FEA0870A2 -:100FF00016D539F8151040F27120414306EB8508EB -:101000000820C8F80810F6F785FB00EB0A01B1FBD1 -:10101000FBF0241AD8F80800A4F5237407446D1CCB -:10102000A7421AD9002D18D0391BB1FBF5F0B268D0 -:10103000101AB1FBF5F205FB1212801AB060012004 -:1010400009E000BFB1FBF5F306EB80029468E31AF8 -:10105000401CC0B29360A842F4D3BDE8F09F2DE9D4 -:10106000F0416D4C00262078042804D02078052813 -:1010700001D00C2066E401206070607C002538B14E -:10108000EFF3108010F0010F72B610D001270FE0BF -:10109000FDF76EFE074694F82400F4F713F97888FC -:1010A000C00411D000210320FDF767FE0CE00027EB -:1010B000607C38B1A07C28B1FDF7DCFD6574A574B7 -:1010C000F3F7AEFC07B962B694F82400F4F747FBD7 -:1010D00094F82C0030B184F82C502078052800D0EA -:1010E000FFDF0C26657000F074FE30462AE44A48A3 -:1010F00010B5007808B1FFF7B2FF00F00DFF4649C8 -:1011000000202439086210BD10B5444C58B10128A4 -:1011100007D0FFDFA06841F66A01884200D3FFDFF5 -:1011200010BD40F6C410A060F4E73C4908B5087053 -:10113000394900200870487081F82C00C870087484 -:10114000487488742022886281F8242024394870E9 -:101150004FF6FF7211F16C0121F81020401CC0B253 -:101160002028F9D30020FFF7CFFFFFF7C0FF1020A2 -:10117000ADF80000012269460420FFF715FF08BD05 -:101180007FB5254C05460E46207810B10C2004B0E2 -:1011900070BD95F8552095F85410686A00F0FEFE71 -:1011A000C5F8E400A56295F8D00000B1FFDF1A4948 -:1011B00000202439C86105212170607084F82C005A -:1011C000014604E004EB4102491CD085C9B294F801 -:1011D0003A208A42F6D284F839003046FFF7D4FE2E -:1011E0000F48F3F798FC84F82400202800D1FFDF93 -:1011F000F3F70CFDA06194F8241001226846FFF774 -:101200009EFC00B9FFDF94F824006946F3F748FF1D -:1012100000B9FFDF0020BAE7C412002080010020DF -:10122000BD0E0200F84810B5007808B1002010BDCE -:101230000620F1F743FB80F0010010BDF8B5F24D38 -:101240000446287800B1FFDF002000902378024692 -:10125000DE0701466B4605D06088A188ADF8001016 -:10126000012211462678760706D5E088248923F8DE -:10127000114042F00802491C491E85F83A101946EF -:10128000FFF792FE0020F8BD1FB511B1112004B088 -:1012900010BDDD4C217809B10C20F8E70022627006 -:1012A00004212170114604E004EB4103491CDA8556 -:1012B000C9B294F83A308B42F6D284F83920FFF75D -:1012C00063FED248F3F727FC84F82400202800D1DD -:1012D000FFDF00F0E8FD10B1F3F798FC05E0F3F74D -:1012E00095FC40F6B831F3F792F9A06194F8241018 -:1012F00001226846FFF723FC00B9FFDF94F82400C1 -:101300006946F3F7CDFE00B9FFDF0020BFE770B5F7 -:10131000BD4CA16A0160FFF7A2FE050002D1A06AE0 -:10132000FFF7DCF80020A062284670BD7FB5B64C00 -:101330002178052901D00C2029E7B3492439C86058 -:10134000A06A00B9FFDFA06A90F8D00000B1FFDF0B -:10135000A06A90F8DA00202800D0FFDFAC48F3F74D -:10136000DAFBA16A0546202881F8DA000E8800D34E -:10137000FFDFA548483020F81560A06A90F8DA0031 -:10138000202800D1FFDF002301226846A16AFFF771 -:10139000C0F8A06A694690F8DA00F3F781FE00B958 -:1013A000FFDF0020A062F2E69749243948707047B9 -:1013B00010B540F2E24300FB03F4002000F0EEFD24 -:1013C000844201D9201A10BD002010BD70B50D4611 -:1013D000064601460020FBF7B0FE044696F855008D -:1013E000F6F798F9014696F854004FF47A720228FD -:1013F00015D0012815D040F6340008444AF2473190 -:101400000844B0FBF2F1708840F271225043C1EB06 -:101410004000A0F22330A54206D2214605E0104646 -:10142000EBE74FF4C860E8E72946814204D2A542C1 -:1014300001D2204600E02846706270BD70B5F5F715 -:10144000D8F90446F6F754F901466F482438826803 -:101450004068101A0E18204600F066FC054620462B -:10146000F6F758F9281A4FF47A7100F2E730B0FB1A -:10147000F1F0304470BD70B50546FDF779FC624966 -:10148000007824398C689834072D30D2DFE805F0D5 -:10149000043434252C34340014214FF4A873042868 -:1014A00010D00822082809D02A2102280FD011FBC9 -:1014B000024000222823D118441819E0402211FBD1 -:1014C0000240F8E7102211FB02402E22F3E704222B -:1014D00011FB024000221823EDE7282100F03CFC1C -:1014E000044404F5317403E004F5B07400E0FFDF58 -:1014F0004548006CA04201D9012070BD002070BD9C -:1015000070B5414C243C607870B1D4E90451284650 -:10151000A268FBF742FD2061A84205D0A169401BEB -:101520000844A061F4F75BF82169A068884201D8FB -:10153000207808B1002070BD012070BD2DE9F04F6A -:10154000074685B016460D461C461846F6F7D0F8F5 -:1015500007EB45014718204600F0E6FB4AF2C5714B -:101560004FF47A7908444D46B0FBF5F0384400F169 -:101570006008254824388068304404902046F6F7F7 -:10158000B7F8A8EB0007204600F0CEFB0646204641 -:10159000F6F7C0F8301AB0FBF5F03A1A18252820F3 -:1015A0004FF4C8764FF4BF774FF0020B082C34D0BD -:1015B000042C2FD00021022C32D0082311F1280155 -:1015C00003EB830301EB83010A444FF0000A082C6C -:1015D0002ED0042C27D00021022C2ED00546082026 -:1015E00001F5B07100EB00102844814231D2082C83 -:1015F00029D0042C24D00020022C27D00821283008 -:1016000001EB011132E00000C4120020BD0E020007 -:101610008907020039461023D2E731464023CFE73D -:1016200004231831CCE73D4640F2EE311020D9E7D3 -:1016300035464FF435614020D4E70420B431D1E77A -:1016400038461021DCE730464021D9E70421183024 -:10165000D6E7082C4ED0042C49D00020022C4CD0C8 -:1016600008212830C1EBC10303EB411108441518D0 -:101670002821204600F070FB05EB4000082C42D0EA -:10168000042C3DD00026022C3FD0082116F128065C -:1016900001EB811106EB810146180120FB4D8DF80D -:1016A00004008DF800A08DF805B0E86906F2272641 -:1016B0000499F2F7ACFFCDE902062046F6F72AF8C6 -:1016C0004AF23B510144B1FBF9F0301AFB3828646F -:1016D0000298C5F84480E86195F824006946F3F75C -:1016E000DFFC002800D1FFDF05B0BDE8F08F3846F1 -:1016F0001021B7E730464021B4E704211830B1E7A4 -:101700003E461021C4E74021C2E704211836BFE756 -:101710002DE9FE4F04461D46174688464FF0010A44 -:101720001846F5F7E5FFD94E0146243E07EB48027F -:10173000B068204410440F18284600F0F5FA4FF422 -:101740007A7BD84600F6FB00B0FBF8F0384400F195 -:1017500020092846F5F7CCFFB2680146A9EB020044 -:10176000001B471A284600F0DFFA06462846F5F720 -:10177000D1FF311AB1FBF8F03A1A182628204FF49D -:10178000C8774FF4BF78082D2BD0042D26D0002128 -:10179000022D29D00823283103EB830301EB8301B9 -:1017A0000A44082D28D0042D21D00021022D28D054 -:1017B0000646082001F5B07100EB0010304481426C -:1017C0002BD2082D23D0042D1ED00020022D21D095 -:1017D0000821283001EB011108442CE04146102378 -:1017E000DAE739464023D7E704231831D4E74646E1 -:1017F00040F2EE311020DFE73E464FF435614020E5 -:10180000DAE70420B431D7E740461021E2E7384652 -:101810004021DFE704211830DCE7082D4CD0042DEF -:1018200047D00021022D4AD008202831C0EBC00348 -:1018300003EB4010084416182821284600F08CFAC3 -:1018400006EB4000082D40D0042D3BD00027022D90 -:101850003DD0082117F1280701EB811107EB810129 -:10186000451805F596750C98F5F754FF4AF23B516B -:101870000144B1FBFBF0854EFB30A6F12407316C2F -:1018800004F1FB020844B9684B191A44824228D972 -:10189000621911440D1AFB35E1F7F8F9B9680844EB -:1018A00061190844B0F1807F36D2642D12D26420D1 -:1018B00011E041461020B9E739464020B6E7042040 -:1018C0001831B3E747461021C6E74021C4E7042199 -:1018D0001837C1E72846F3F7DCFEE8B1306C28443E -:1018E0003064E1F7D3F9B968293821440844CDE9D7 -:1018F000000996F839008DF8080002208DF80900DB -:101900006846FCF750FF00B1FFDFFDF761F800B15A -:10191000FFDF5046BDE8FE8F4FF0000AF9E71FB524 -:1019200000F042FB594C607880B994F824100022F2 -:101930006846FFF704F938B194F824006946F3F7D4 -:10194000AFFB18B9FFDF01E00120E070F3F768F8A2 -:1019500000206074A0741FBD2DE9F84FFDF708FA50 -:101960000646451CC07840090CD001280CD002283E -:101970000CD000202978824608064FF4967407D4CC -:101980001E2006E00120F5E70220F3E70820F1E73A -:101990002046B5F80120C2F30C0212FB00F7C8097B -:1019A00001D010B103E01E2401E0FFDF0024FFF7A7 -:1019B00045FDA7EB00092878B77909EB0408C0F3C7 -:1019C000801010B120B1322504E04FF4FA7501E027 -:1019D000FFDF00250C2F00D3FFDF2D482D4A30F804 -:1019E0001700291801FB0821501CB1FBF0F5F4F792 -:1019F00000FFF5F78FFE4FF47A7100F27160B0FBD3 -:101A0000F1F1A9EB0100471BA7F15900103FB0F518 -:101A1000237F11D31D4E717829B9024653462946BA -:101A20002046FFF78BFD00F0BFFAF2F7F9FF002028 -:101A30007074B074BDE8F88F307800905346224639 -:101A400029463846FFF764FE0028F3D10121022021 -:101A5000FDF793F9BDE8F84F61E710B50446012999 -:101A600003D10A482438007830B1042084F8D0002B -:101A7000BDE81040F2F7D4BF00220121204600F05B -:101A800097F934F8580F401C2080F1E7C412002069 -:101A9000385D02003F420F002DE9F0410746FDF797 -:101AA00067F9050000D1FFDF29783846FBF7F3FC22 -:101AB000F84C0146A4F12406E069B268024467B319 -:101AC0002878082803D0042803D000270BE0082337 -:101AD00000E0022303EB430728374FF4A8730828DC -:101AE00004D0042802D002280FD028233B44082821 -:101AF0000DD004280DD002280DD00820C0EBC0075F -:101B000007EB40101844983009E01823EEE7402016 -:101B1000F4E71020F2E70420F0E74FF4FC701044E3 -:101B2000471828783F1DF5F7F5FD024628784FF451 -:101B30007A7102281DD001281DD040F634001044CF -:101B40004AF2EF021044B0FBF1F03A1AA06A40F2F8 -:101B5000E241B0464788D0304F43316A81420DD0D0 -:101B60003946606B00F087F90646B84207D9FFDFB7 -:101B700005E00846E3E74FF4C860E0E70026C64802 -:101B80008068864207D2A16A40F2712248884243A7 -:101B900006EB420604E040F2E240B6FBF0F0A16A38 -:101BA000C882A06A297880F85410297880F85510E6 -:101BB00005214175C08A6FF41C71484306EB400053 -:101BC00040F63541C8F81C00B0EB410F00D3FFDFF1 -:101BD000BDE8F08110B5052937D2DFE801F005092D -:101BE000030D3100002100E00121BDE8104034E781 -:101BF000032180F8D01010BD0446408840F2E24135 -:101C00004843A549091D0860D4F8F8000089E0821E -:101C1000D4F8F80080796075D4F8F80040896080C5 -:101C2000D4F8F8008089A080D4F8F800C089E0805A -:101C30002046A16AFFF7CAFB022084F8D00010BD3D -:101C4000816ABDE81040FFF7C1BBFFDF10BD70B572 -:101C5000904C243C0928A1683FD2DFE800F0050B36 -:101C60000B15131538380800BDE8704057E6BDE87D -:101C7000704071E6022803D00020BDE870400BE7F9 -:101C80000120FAE7E16070BD032802D005281CD0CE -:101C900000E0E1605FF0000600F086F97D4D012074 -:101CA00085F82C0085F83860A86AE9690026C0F834 -:101CB000D41080F8D060E068FFF738FB00B1FFDF98 -:101CC000F2F7AEFE6E74AE7470BD0126E4E77248A2 -:101CD0000078BDE87040E1F71FB9FFDF70BD6D49C6 -:101CE00024394860704770B56A4D0446243DB1B14F -:101CF0004FF47A76012903D0022905D0FFDF70BDA9 -:101D00001846F5F741FD05E06888401C68801046DC -:101D1000F5F719FD00F2E730B0FBF6F0201AA860E5 -:101D200070BD5C4800787047082803D0042801D0B3 -:101D3000F5F7F0BC4EF628307047002804DB00F1C0 -:101D4000E02090F8000405E000F00F0000F1E02032 -:101D500090F8140D4009704710F00C0000D00846B0 -:101D6000704710B50446202800D3FFDF49484830AB -:101D700030F8140010BD70B505460C461046F5F756 -:101D8000C9FC4FF47A71022C0DD0012C0DD040F615 -:101D9000340210444AF247321044B0FBF1F02844B8 -:101DA00000F2931070BD0A46F3E74FF4C862F0E703 -:101DB0001FB513460A46044601466846FEF7A9FBCE -:101DC00094F8DA006946F3F76BF9002800D1FFDFD9 -:101DD0001FBD70B52F4C0025257094F82400F2F734 -:101DE000F6FE00B9FFDF84F8245070BD2DE9F04104 -:101DF000050000D1FFDF274A0024243AD5F8E4602B -:101E00002046631E116A08E08869B04203D39842F5 -:101E100001D203460C460846C9680029F4D104B92A -:101E200004460021C5F8E040D035C4B1E068E56063 -:101E3000E86000B105612E698846A96156B1B069B4 -:101E400030B16F69B84200D2FFDFB069C01BA86132 -:101E5000C6F818800F4D5CB1207820B902E0E96027 -:101E60001562E8E7FFDF6169606808446863AFE610 -:101E7000C5F83480ACE610B50C4601461046F3F7C1 -:101E8000E1FB00280ADA211A491EB1FBF4F101FB3B -:101E9000040010BDC41200208001002090FBF4F16A -:101EA00001FB1400F5E74648016A002001E00846FE -:101EB000C9680029FBD170477FB504466FF0040064 -:101EC000FFF73BFFC5B21920FFF737FFC0B28542CD -:101ED00000D0FFDFFCF74CFF4088C00407D0012191 -:101EE0000320FCF74AFF37480078E1F715F8002295 -:101EF00021466846FEF723FE38B169462046F3F7CF -:101F0000CFF8002800D1FFDF7FBD2D49012024310B -:101F1000C870FEF719FD7FBD2DE9FE43284D012055 -:101F2000287000264FF6FF7420E00621F0F72CFD04 -:101F3000070000D1FFDF97F8DA00D037F3F70FFC86 -:101F400007F80A6BA14617F8DA89B8F1200F00D319 -:101F5000FFDF1B4A6C3222F8189097F8DA00F2F78C -:101F600036FE00B9FFDF202087F8DA006946062038 -:101F7000F0F793FC50B1FFDF08E0029830B190F821 -:101F8000D01019B10088A042CFD104E06846F0F724 -:101F900062FC0028F1D02E70BDE8FE8310B5FFF77B -:101FA000EAFE00F5C87074E705480021243090F877 -:101FB000392000EB4200C18502480078E0F7ACBF51 -:101FC000A012002080010020FA490C28896881F8BD -:101FD000CB001ABF1328182870474FF000021128B1 -:101FE00010D0072808BF704715280BD001281ABF4A -:101FF000002802287047A1F884204FF0010081F8E2 -:1020000088007047A1F88A20704770B5E94CA16834 -:102010000A88A1F83E2181F83C0191F8540001287A -:1020200008BF012508D0022808BF022504D00428D3 -:1020300016BF08280325FFDFA06880F8405190F8FC -:102040005500012808BF012508D0022808BF022535 -:1020500004D0042816BF08280325FFDFA0684FF02E -:10206000010180F8415180F83A114FF0000180F8E9 -:102070000E11E078BDE87040E0F74EBFCD4A01296F -:1020800092681BD0002302290FD0032922D030B33D -:1020900001282FD0032818BF704792F86400132836 -:1020A0001CBF1628182805D1704792F8CB000028CD -:1020B00008BF7047D2F8F8000370704792F8CB0061 -:1020C000012808BF704700BFD2F8FC000178491E04 -:1020D0000170704792F8CB000328EBD17047D2F81B -:1020E000F800B2F858108288891A09B20029A8BFEE -:1020F00003707047B2F85800B2F80211401A00B2EB -:102100000028E1DA70472DE9F041AA4C00260327A8 -:10211000D4F808C0012590B12069C0788CF8CA00B5 -:1021200005FA00F010F4000F08BFFFDFA06880F888 -:102130006470A0F8846080F88850BDE8F0810023C6 -:102140009CF8652019460CF15800FAF791FE00281A -:1021500004BF6570BDE8F0816078002818BFBDE855 -:10216000F0812069C178A06880F8C91080F8657096 -:10217000A0F88A6080F88C50BDE8F08170B58D4C75 -:1021800084B0207910F0010F04BF04B070BD206945 -:1021900000230521C578A06890F864205830FAF72C -:1021A00067FE002818BF062D09D026DC022D1CBFB3 -:1021B000042D052D03D0607840F008006070607831 -:1021C00000281CBF04B070BD2069FBF719FC002873 -:1021D00000F01B832069C078801E162880F01583CC -:1021E000DFE800F011F18CB0DF2FF1F0F17FEFDCD0 -:1021F000F1F1F1CFEEEDECEBEAE70B2D1CBF0D2D6D -:10220000112DD8D1DBE7A0684FF000034FF001019A -:1022100090F8672000F15800FAF72AFE002840F0F5 -:1022200067832069FBF750FCA16881F8F60007205E -:1022300081F86700002081F88C0081F8880000F0A8 -:1022400057BBA0680921002390F864205830FAF7A2 -:102250000FFE18B120690079122812D0A0680A2157 -:10226000002390F864205830FAF702FE18B1206974 -:10227000007914281DD020690079162840F0388391 -:1022800021E0A0680125002390F86420092158303E -:10229000FAF7EEFD002808BF657000F0298360782A -:1022A000002840F02583A16881F87C0081F888002F -:1022B00044E0A168002081F86400A1F8840081F85E -:1022C000880000F045BAA06890F864101F2940F01B -:1022D0000F83002180F8641080F888101A2000F025 -:1022E00005BBA06890F864100F295FD161780029C0 -:1022F00040F0FE8280F8691012213EE0A06890F85C -:102300006410132952D16178002940F0F182D0F88D -:10231000F81000884988814218BFFFDFA068D0F814 -:10232000F80000F126012069FBF7FBFBA06800F133 -:10233000C4012069FBF7FDFBA168162081F8640049 -:1023400000F0D6BAA26892F8640016282ED1607800 -:10235000002840F0CD82D2F8F80002F1B00300F17D -:102360001E0100220E30FAF7FDFCA0680021C0E932 -:102370002811012180F86910182180F8641000F0FC -:10238000B7BA2069FBF755FC032840F0B1822069F9 -:10239000FBF753FC01F02DFC00F0AABA206900798C -:1023A000F8E7A06890F864101A290DD0022000F018 -:1023B000D6B95AE28C010020D3E19FE140E10EE161 -:1023C00023E14DE0BEE0C6E16178002940F0908253 -:1023D000002580F88D5080F88850D0F8F8100088DB -:1023E0004988814218BFFFDFA068D0F8F8100D704F -:1023F000D0F844110A78002A18BFFFDF2BD190F8DB -:102400008E207AB180F88E500288CA80D0F84411AC -:102410000D71D0F844210E211170D0F844210188AB -:10242000518010E00288CA80D0F844110D71D0F8B4 -:10243000442101211172D0F844210D211170D0F8EE -:102440004421018851800088F0F7D0FBF0F768F84C -:10245000E078E0F761FDA06880F8645000F048BAC9 -:10246000A0680023194690F865205830FAF700FD5F -:1024700048B9A0680023082190F864205830FAF782 -:10248000F7FC00287ED06078002840F03182A068F8 -:1024900090F8900010F0020F14D12069FBF74CFB6C -:1024A000A16881F891002069B0F80520A1F8922078 -:1024B000B0F80700A1F8940091F8900040F00200F5 -:1024C00081F89000A06890F8901011F0010F12D1DF -:1024D00090F86520002319465830FAF7C9FC002807 -:1024E00008BFFFDF0121A06880F8651080F88C101C -:1024F0000021A0F88A10A06890F86410012907D183 -:10250000002180F8641080F88810E078E0F704FD7E -:10251000A168D1F8F800098842888A4204BF01788E -:10252000042940F0E5814FF000050570E078E0F700 -:10253000F3FCA06890F86410002908BF80F8885068 -:1025400000F0D6B9A0680023072190F86420583025 -:10255000FAF78EFCB0B16078002840F0C98102A97A -:102560002069FBF723FB9DF80800002500F02501FA -:10257000A06880F896109DF8091001F0490180F8D4 -:10258000971000E04EE080F88850D0F8F8100088EE -:102590004988814218BFFFDFA068D0F8F8100D709D -:1025A000D0F844110A78002A18BFFFDF7FF453AF38 -:1025B0000288CA80D0F844110D71D0F84411029AF3 -:1025C0008A60039ACA60D0F84421082111700188FA -:1025D000D0F844014180E078E0F79EFC3BE7A0683A -:1025E0000023092190F864205830FAF741FCC8B163 -:1025F0006078002840F07C81A16881F87C0081F837 -:10260000880081F8640000F073B9A06800231946BF -:1026100090F865205830FAF72BFC18B1607818B1A3 -:1026200000F066B901209AE0A0680021A0F88A10A5 -:10263000012180F88C10022180F8651000F058B953 -:10264000A0680023194690F865205830FAF710FC6E -:1026500088B32069FBF794FA00287CD0A56820692C -:10266000FBF78AFA2887A5682069FBF781FA688753 -:10267000A5682069FBF782FAA887A5682069FBF79F -:1026800079FAE887A06890F864101C2913BF90F8C5 -:102690004E10012180F84E10012907D090F8051145 -:1026A000002904BF90F80411002905D04FF01E0145 -:1026B00080F865101AE04FE04FF01D0180F86510BA -:1026C0000288A0F82A21028FA0F82C21428FA0F8BE -:1026D0002E21828F00F58A71A0F83021C08FC88327 -:1026E0004FF001000875E078E0F716FCA0680021C3 -:1026F000A0F88A10012180F88C10F9E0A06800236E -:102700000A2190F864205830FAF7B2FB20B3206910 -:10271000FBF736FAA8B1A5682069FBF72DFA2887E0 -:10272000A5682069FBF724FA6887A5682069FBF78C -:1027300025FAA887A5682069FBF71CFAE88700F04E -:102740002FFFA068002180F8881080F8641000BF77 -:1027500000F0DFFECCE058E0607840F001006070EF -:10276000C6E0A0680023194690F865205830FAF7B3 -:102770007FFB00283FF456AFA06890F86400232840 -:1027800012BF2428607840F02000E8D06846F5F7B2 -:1027900036F9002808BF002104D0009802A9C078AB -:1027A0008DF80800A06801AB162290F86400FAF7D3 -:1027B00056FE88B1A0689DF80420162180F8EC2010 -:1027C00080F8ED10192180F86510012180F88C1037 -:1027D0000021A0F88A108BE02069FBF7ECF9A0B18A -:1027E0002169087900F00702A06880F85020497933 -:1027F00001F0070180F8511090F80F31002B04BF51 -:1028000090F80E31002B05D024E04FF00000FFF7C8 -:102810007AFC6DE090F855C000F15403944501BF77 -:102820001A788A42012180F87D1013D00288A0F81E -:10283000362190F8502000F58A7180F8382190F800 -:10284000510081F825004FF0010081F82000E07868 -:10285000E0F762FBA068212180F86510012180F873 -:102860008C100021A0F88A1042E0A06890F8640063 -:102870001F287FF471AF2069FBF7A7F988B320699F -:10288000A2680179407901F0070161F30705294643 -:1028900000F0070060F30F21012082F88800002576 -:1028A000A2F88450232082F86400566DD2F81001FB -:1028B000FAF754FDF2B2C1B28A4207BFA16881F8AB -:1028C000F250A26882F8F210C6F30721C0F3072085 -:1028D000814219BFA16881F8F300A06880F8F35025 -:1028E00006E0FFE70120FFF70EFC1E20FFF78DFB3F -:1028F000A068D0E92A12491C42F10002C0E92A125C -:1029000004B070BD2DE9F047FE4D04464FF00007BE -:10291000687808436870287910F0200F284680688E -:1029200018BFA0F87E7004D1B0F87E10491CA0F842 -:102930007E1090F86A10012639B990F864200023BF -:1029400006215830FAF794FA58B3A88810F4006FAB -:1029500007D0A86890F86A10002918BFA0F8767010 -:102960001FD1A868B0F87610491C89B2A0F876107B -:10297000B0F878208A422CBF511A00218288521D5B -:102980008A4228BF80F87C60B0F87610B0F87820D2 -:10299000914206D3A0F8767080F81A61E878E0F7E3 -:1029A000BBFA287910F0600F08D0A86890F868107A -:1029B00021B980F868600121FFF70CF94FF0080891 -:1029C000002C56D16878002851D1287910F0040FD6 -:1029D0000DD0A86890F86400032808BFFFDFA8683E -:1029E00090F86710072904BF2E7080F8677001F017 -:1029F00051F9287910F0080F19D06878B8B9A8688B -:102A0000002190F8CB00FFF739FBA86890F8CB00C5 -:102A1000FE2808BFFFDFFE21A86880F8CB1090F8E1 -:102A20006710082903D10221297080F86770FFF729 -:102A3000A5FBA87810F0080F16D0A8680023052180 -:102A400090F864205830FAF713FA50B185F80180F5 -:102A5000A868D0F8441108780D2808BF0020087035 -:102A600002E00020F8F73EFEA86801F04BF800F005 -:102A7000E1FDA868A14600F1580490F8F40030B9CF -:102A8000E27B002301212046FAF7F2F910B1608DB4 -:102A9000401C60853D21B9F1000F18D1287802282B -:102AA00008BF16200ED0012804BFA86890F8F600D1 -:102AB00008D06878E8B110F0140F1CBF1E202077F2 -:102AC00002D005E0207703E010F0080F02D0217754 -:102AD000E67641E010F0030F03D02A202077E67657 -:102AE0003AE010F0200F08BFFFDF23202077E676C2 -:102AF00032E094F8300028B1A08D411CA185E18D11 -:102B0000884213D294F8340028B1608E411C61864B -:102B1000E18D88420AD2618D208D814203D3AA685B -:102B200092F8F42012B9E28D914203D3222020774B -:102B3000E67611E0217C31B1E18C814228BF84F836 -:102B40001C80C5D206E0E08C062803D33E20207707 -:102B5000E67601E0E07EA0B1277367732774022157 -:102B6000A868FFF737F8A86890F8CB10012904D1BE -:102B7000D0F8FC000178491E0170E878E0F7CCF944 -:102B800003E00021A868FFF725F8BDE8F047F4F757 -:102B900045BF5C4A51789378194314D111460128F6 -:102BA000896809D0107910F0040F03D091F86700FC -:102BB000072808D001207047B1F84800098E8842E4 -:102BC00001D8FEF79DBC0020704770B54D4C0646FD -:102BD0000D46A0883043A08016F0020F04D016F0F6 -:102BE000010F18BFFFDFE56016F0010F18BF256168 -:102BF00016F0020F4FF000024FF0010117D0E878F5 -:102C0000062802D00B280BD011E0A06890F86420B1 -:102C1000182A0CD10022C0E92A2280F86A1006E0A6 -:102C2000A06890F86410122908BF80F86A2016F096 -:102C3000800F1CBF0820A07016F4806F08BF70BD05 -:102C4000A268B2F8580091880844801DE97880B2E3 -:102C5000012908BFA2F802011FD0002904BFD2F841 -:102C6000F810888019D0182917D192F8F21000298D -:102C700004BF92F8F330002B0BD011F00C0F1EBFE5 -:102C800092F8543013F00C0F994204D092F8F310DC -:102C900009B94FF00000A2F8F000E97828460129B0 -:102CA00009D071B1182918BF70BDB2F8F010BDE895 -:102CB0007040FAF79CBFB2F802114172090AA9727A -:102CC00070BDD2F8F81089884173090AA97370BDE4 -:102CD000F0B50C4C85B00026A060A6806670A6708A -:102CE000054626700088F4F761FEA0680088F4F7B6 -:102CF00083FEB5F8D800A168401C82B201F15800EB -:102D000002E000008C010020F9F769FE002818BFDE -:102D1000FFDF95F8650024280AD1B5F85810B5F8FA -:102D2000F000081A00B20028A4BF6078002806D07E -:102D300095F86400242818BF25283BD119E0A06825 -:102D400090F8F210002908BF90F8541080F8541041 -:102D500090F8F310002908BF90F8551080F855102E -:102D60000020FFF752F985F86560A16881F87D6061 -:102D700020E0B5F85810B5F8F000081A00B20028A5 -:102D8000A4BF6078002815D1A06890F8F21000293F -:102D900008BF90F8541080F8541090F8F3100029F0 -:102DA00008BF90F8551080F855100020FFF72DF956 -:102DB00085F86460A5F8D860A06890F8881039B1EB -:102DC000B0F88410B0F88620914224BF05B0F0BD61 -:102DD00090F88C1039B1B0F88A10B0F88620914282 -:102DE00024BF05B0F0BDB0F88220B0F880108A4250 -:102DF00024BF05B0F0BD90F8682092B3B0F87E20F3 -:102E00008A4224BF05B0F0BD90F8CB70FE2F00F0D1 -:102E10001D816846F4F7CDFD002808BFFFDF2221A1 -:102E2000009802F076FC03210098FAF7D1FD009893 -:102E3000017821F0100101703946FAF7EEFD192FE3 -:102E400080F0E280DFE807F0271F1445E0E0E11999 -:102E500070E0E1E163E0E0E0E0D3E1E17A93ACE04F -:102E6000B500B0F87E10062924BF05B0F0BDCBE751 -:102E7000A168009891F8F51003E0A168009891F816 -:102E8000CC100171C1E0A068D0F8FC00411C009892 -:102E9000FAF70FFEB9E0A1680098D1F8F82092790E -:102EA0000271D1F8F82012894271120A8271D1F8A8 -:102EB000F8205289C271120A0272D1F8F820928960 -:102EC0004272120A8272D1F8F810C989FAF7C8FD65 -:102ED0009BE0A068D0F8F800011D0098FAF7F6FD15 -:102EE000A068D0F8F80000F10C010098FAF7F8FD9E -:102EF000A068D0F8F80000F11E010098FAF7F6FD7E -:102F0000A06800F1C0010098FAF7FEFD7DE062695B -:102F100000981178017191884171090A8171518875 -:102F2000C171090A017270E0FE49D1E90001CDE9E1 -:102F3000020102A90098FAF701FE66E0A068B0F865 -:102F400044100098FAF704FEA068B0F84610009804 -:102F5000FAF702FEA068B0F840100098FAF700FEF9 -:102F6000A068B0F842100098FAF7FEFD4DE0A068A6 -:102F7000B0F840100098FAF7F3FDA068B0F84210DE -:102F80000098FAF7F1FDA068B0F844100098FAF73D -:102F9000DFFDA068B0F846100098FAF7DDFD34E0D8 -:102FA000A168009891F81021027191F811114171F6 -:102FB0002BE0A06890F8F300FAF7C7F901460098F3 -:102FC000FAF711FEA16891F8F20010F00C0F1CBF87 -:102FD00091F8541011F00C0F02D0884218BF002055 -:102FE000FAF7B3F901460098FAF7F9FD0DE0A06889 -:102FF00090F8ED100098FAF71AFEA06890F8EC101F -:103000000098FAF718FE00E0FFDFF4F7E5FC00286F -:1030100008BFFFDF0098C178012903D049B1182902 -:103020000FD013E0A168B1F802114172090A817250 -:103030000CE0A168D1F8F81089884173090A8173FE -:1030400004E0A168B1F8F010FAF7D1FDB64800909D -:10305000B64BB74A29463046F8F79AFAA0680023DB -:10306000052190F864205830F9F702FF002804BFCA -:1030700005B0F0BD05B0BDE8F040F8F724B8AD48A4 -:10308000806890F8881029B1B0F88410B0F88620D4 -:10309000914219D290F88C1029B1B0F88A10B0F88A -:1030A0008620914210D2B0F88220B0F880108A4277 -:1030B0000AD290F86820B0F87E001AB1884203D294 -:1030C000F8F7ECBA0628FBD3002001461AE470B5E5 -:1030D0000C46064615464FF4A471204602F03BFB11 -:1030E0002680002D08BFFFDF2868C4F8F800686854 -:1030F000C4F8FC00A868C4F8440170BDEFF74DBDEA -:103100002DE9F0410D4607460621EFF73DFC041E70 -:1031100008BFBDE8F081D4F844110026087858B102 -:103120004A8821888A4207D1092810D00E281DD04C -:103130000D2832D008284CD094F81A01002857D016 -:103140006E701020287084F81A61AF803EE06E70B7 -:1031500009202870D4F84401416869608168A96039 -:103160008089A881D4F8440106702FE00846EFF763 -:103170003DFD0746EFF7E9F9B0B96E700E202870F3 -:10318000D4F8440140686860D4F8440106703846B9 -:10319000EFF7D5F90120BDE8F0810846EFF726FDED -:1031A0000746EFF7D2F910B10020BDE8F0816E704C -:1031B0000D202870D4F84401416869600089288195 -:1031C000D4F8440106703846EFF7B9F90120BDE89C -:1031D000F0816E7008202870D4F84401416882683C -:1031E000C0686960AA60E860D4F844010670EDE741 -:1031F00094F81C01B0B16E701520287094F81C0171 -:103200000028E3D084F81C61D4F81E016860D4F86B -:103210002201A860B4F82601A88194F81C010028B6 -:10322000F0D1D3E794F8280170B16E701D2028709A -:1032300084F82861D4F82A016860D4F82E01A860C7 -:10324000B4F83201A881C1E794F8340140B16E703E -:103250001E20287084F83461D4F836016860B5E720 -:1032600094F8140180B16E701B20287094F814013A -:103270000028ABD084F81461D4F81601686094F883 -:1032800014010028F6D1A1E794F83A01002808BFFC -:10329000BDE8F0816E701620287094F83A0100287D -:1032A00094D000BF84F83A61D4F83C016860B4F867 -:1032B0004001288194F83A010028F3D186E71D4A9D -:1032C0005061D17070472DE9F0470446481E85B221 -:1032D00038BFBDE8F08704F108080126DFF85490F4 -:1032E0004FF0090A5FF00007B4F8D800401CA4F8BA -:1032F000D800B4F87E00401CA4F87E0094F86A0060 -:1033000040B994F864200023062104F15800F9F72D -:10331000AFFD38B3B4F87600401C80B2A4F8760054 -:103320000AE00000505D020005290200932B020014 -:10333000CB2B02008C010020B4F8781081422CBF06 -:103340000A1A0022A3885B1D934228BF84F87C6080 -:10335000884207D3A4F8767084F81A6199F80300BC -:10336000DFF7DAFD94F8880020B1B4F88400401C3F -:10337000A4F8840094F88C0020B1B4F88A00401CB2 -:10338000A4F88A0094F8F40040B994F86720002368 -:10339000012104F15800F9F76BFD20B1B4F8820067 -:1033A000401CA4F8820094F864000C2802D00D2878 -:1033B00020D067E0B4F85800411CB4F80201814203 -:1033C00060D1D4F8FC00411C404602F0D8FA02213A -:1033D0002046F9F727FAD4F8FC000078002808BF47 -:1033E000FFDF0121FE20FEF749FE84F8647084F8B7 -:1033F000986047E0B4F85800411CD4F8F800808881 -:1034000081423FD1D4F844010178002918BFFFDF81 -:1034100022D12188C180D4F8F8004189D4F8440130 -:103420000181D4F8F8008189D4F844014181D4F8AD -:10343000F800C189D4F844018181D4F844010771AE -:10344000D4F8440180F800A0D4F8440121884180D8 -:1034500099F80300DFF760FD01212046F9F7E2F952 -:1034600003212046FEF7B6FBD9F80800D0F8F80093 -:103470000078022818BFFFDF0221FE20FEF7FEFDC4 -:1034800084F86470B4F85800401C691EA4F8580011 -:103490008DB2BFF429AFBDE8F087FC4AC2E906014E -:1034A000704770B50446B0F87E0094F868100029A3 -:1034B00008BFC0F1020503D0B4F88010081A051F38 -:1034C00094F87C0040B194F864200023092104F1B1 -:1034D0005800F9F7CDFCA0B1B4F8766094F86A0012 -:1034E00058B994F864200023062104F15800F9F734 -:1034F000BFFC002808BF284603D0B4F87800801B22 -:10350000001FA842D8BF0546002DD4BF0020A8B296 -:1035100070BD042110B5DD4CA068FEF75BFBA06810 -:1035200090F84E10012902BF022180F84E1010BD04 -:1035300000F58A720188A0F81E11018EA0F82011F2 -:10354000818EA0F82211038FB0F844108B4238BF4F -:1035500019461182838FB0F846108B4238BF194646 -:10356000518290F8553013F00C0F4FF0010305D045 -:10357000B1F5296F98BF4FF42961518290F854003A -:1035800010F00C0F06D0D089B0F5296F98BF4FF41A -:103590002960D0811372E078BDE81040DFF7BCBC31 -:1035A000BA4830B4806890F84E30B0F832C0C48E5B -:1035B000B0F84010428F022B25D08A4238BF114606 -:1035C0000186C28FB0F842108A4238BF1146818608 -:1035D000028FB0F844108A4238BF11464186828F6C -:1035E000B0F846108A4238BF1146C186418E614507 -:1035F00088BF8C46A0F832C0C18EA14288BF0C465D -:10360000C48630BC7047038E9A4228BF1A46C58FC5 -:10361000838E9D4238BF2B468A4238BF11460186B1 -:10362000B0F842108B4228BF0B468386002180F8F9 -:103630004E10CDE770B5954CA06890F8CB10FE29E0 -:1036400006BF6178002970BD90F867204FF0000335 -:103650004FF0010100F15800F9F70AFC002818BFEB -:1036600070BDA06890F8F41021B1BDE87040022050 -:10367000FEF7AABC90F86420002319465830F9F7E9 -:10368000F7FB40B1A06890F87C0020B1BDE8704025 -:103690001220FEF799BCA068002590F86420122A39 -:1036A0001FD004DC032A3FD0112A1FD003E0182AC0 -:1036B00035D0232A43D0002304215830F9F7D8FB12 -:1036C000002818BF70BDD4F808C09CF86500192800 -:1036D0007CD03BDC01286BD0022879D003285DD058 -:1036E00038E0BDE870400B20FEF76EBCF2F764FBDB -:1036F0000C2838BF70BDA0680821D0F8F8001E3033 -:10370000F2F75EFB28B1A0680421C030F2F758FB45 -:1037100000B9FFDFBDE870400320FEF755BCBDE8EF -:1037200070400620FEF750BC90F8CA1080F8CC100C -:103730000720FEF749FCA06880F8645070BD18208F -:10374000FEF742FCA068A0F8845070BD1E2847D048 -:1037500021286BD0DCF8F80001260178002973D00D -:103760004088BCF8001088426ED100239CF8642089 -:1037700019460CF15800F9F77BFB002864D0A068CB -:10378000D0F8F810097802297ED003297DD00429C9 -:103790007ED0052908BF08207BD0C7E09CF8C9006F -:1037A0008CF8CC000720FEF70FFCA06800F079B978 -:1037B0000C20FEF709FCA068A0F88A5090F8901041 -:1037C00041F0010180F8901000F06BB96FE0FFE765 -:1037D0001320FEF7F9FBA068A0F88A5000F061B949 -:1037E0009CF80501002818BF70BD9CF8040188B141 -:1037F000BCF80601ACF84000BCF80801ACF8420087 -:10380000BCF80A01ACF84400BCF80C01ACF8460066 -:103810008CF80451FFF7C4FEFFF77BFE1520FEF77E -:10382000D3FBA068A0F88A5000F03BB99CF87D005B -:1038300058B18CF8F2508CF8F3501820FEF7C4FB06 -:10384000A068A0F88A5070BD70E09CF80F010028B5 -:1038500018BF70BD9CF80E01002808BF70BDDCE9E0 -:103860001416DCF81001F9F779FDF2B2C1B28A4200 -:1038700007BFA16881F8F250A26882F8F210C6F37F -:103880000721C0F3072005E016E01BE08C010020B3 -:1038900039E020E0814219BFA16881F8F300A068F7 -:1038A00080F8F3501820BDE87040FEF78DBB112062 -:1038B000FEF78AFBA068F4E090F86500F9F7C0FA1B -:1038C000A0BB08E090F8691041B190F86A000028A8 -:1038D00008BFFFDF0A20FEF777FB27E0F2F76CFA5C -:1038E0000C2823D3A0680821D0F8F8001E30F2F786 -:1038F00067FA28B1A0680421C030F2F761FA00B974 -:10390000FFDF0320E7E790F8900010F0030F0DD1E0 -:103910000C20FEF759FBA168A1F8845081F888605B -:1039200091F8900040F0010081F89000A06890F8B4 -:10393000CB10FE2918BF70BD90F8642000231946F3 -:103940005830F9F795FA002808BF70BDA06890F8C4 -:103950000011E9B3A1690978D1BB90F86500F9F7C6 -:103960006FFAA8BBA068B0F858100A2931D900F145 -:1039700008010522E06901F021FE0028A06804BFCB -:1039800080F8005170BDD0F8FC00017861B1411C95 -:103990000522E06901F012FE002818BF70BDA06882 -:1039A000D0F8FC00007830B9A068E169D0F8FC00DC -:1039B000401C01F0E4FFA068D0F8FC000178491C2D -:1039C00001700120FEF700FBA06880F8005170BD77 -:1039D000FFE7A06890F8041111B190F80511E1B368 -:1039E00090F80E11002908BF70BD90F80F11002942 -:1039F00018BF70BD90F86500F9F722FA002818BFCB -:103A000070BDA06890F85400012808BF012508D0B7 -:103A1000022808BF022504D0042816BF0828032561 -:103A2000FFDFA06890F85500012808BF012608D0E4 -:103A3000022808BF022604D0042816BF082803263F -:103A4000FFDFA268012D92F810012DD0022D2ED09B -:103A5000032D08BF04282CD03BE0FFE7B0F8061187 -:103A6000A0F84010B0F80811A0F84210B0F80A1100 -:103A7000A0F84410B0F80C11A0F8461080F80451DA -:103A800090F865001D2804D0BDE870401420FEF7B2 -:103A90009BBAFFF785FDFFF73CFD1520FEF794FA72 -:103AA000A06880F8655070BD012812D101E002289D -:103AB0000FD192F81101012E06D0022E07D0032E4D -:103AC00008BF04280AD004E0012802D106E0022839 -:103AD00004D0BDE870401620FEF776BAB2F8583030 -:103AE00092F85410B2F81201F032F9F79DFC20B1AF -:103AF000A168252081F8640070BDBDE870400020F9 -:103B0000FEF783BA70B5044690F8640000250C28CF -:103B100014D00D2818BF70BDB4F85800D4F8F810B0 -:103B2000401C8988884218BF70BDD4F84401FF4EFC -:103B30000178002918BFFFDF45D122E0B4F8580012 -:103B4000B4F80211401C884218BF70BDD4F8FC00C4 -:103B5000411C04F1080001F012FF02212046F8F791 -:103B600061FED4F8FC000078002808BFFFDF0121C7 -:103B7000FE20FEF783FA84F86450012084F8980050 -:103B800070BD2188C180D4F8F800D4F84411408970 -:103B90000881D4F8F800D4F8441180894881D4F819 -:103BA000F800D4F84411C0898881D4F84401057123 -:103BB000D4F8441109200870D4F8441120884880B2 -:103BC000F078DFF7A9F901212046F8F72BFE032151 -:103BD0002046FDF7FFFFB068D0F8F8000078022813 -:103BE00018BFFFDF0221FE20FEF748FA84F8645078 -:103BF00070BD70B5CD4CA16891F86420162A11BF34 -:103C0000132A91F88E20002A62781BBF0220607070 -:103C1000002A70BD81F8C8004FF0000581F88D5072 -:103C200081F88850D1F8F80009884088884218BF88 -:103C3000FFDFA068D0F8F8000078032818BFFFDF86 -:103C40000321FE20FEF71AFAA068D0F844110A7882 -:103C5000002A18BFFFDF19D10288CA80D0F844219A -:103C600090F8C8101171D0F844110D72D0F84421A9 -:103C70000D211170D0F84421018851800088EEF7A1 -:103C8000B5FFEEF74DFCE078DFF746F9A06880F865 -:103C9000645070BD10B5A54C207910F0020F08BF1C -:103CA00010BD6078002818BF10BDE068C0781928E2 -:103CB00080F06C81DFE800F05F4F0D8FFAFAA622EA -:103CC0003FFA6F83B1FAFAFAFAF9E5E2FBF7F6FA8E -:103CD000F500A0680023012190F867205830F9F71B -:103CE000C7F8002818BF10BD0821A06880F8671029 -:103CF000002180F8881080F88C1010BDA068002387 -:103D0000194690F865205830F9F7B2F818B1A16853 -:103D1000002081F88C00A0680023194690F86420E8 -:103D20005830F9F7A5F8002808BF10BD0020A16899 -:103D300081F8880010BDA0680023194690F864201F -:103D40005830F9F795F8002808BFFFDF0420A16874 -:103D500081F8640010BDA0680023194690F8642023 -:103D60005830F9F785F8002808BFFFDF0C20A1685C -:103D700081F8640010BDA0680023194690F8642003 -:103D80005830F9F775F8002808BFFFDF0D20A1684B -:103D900081F8640010BDA0680023194690F86420E3 -:103DA0005830F9F765F8002808BFFFDF0121A06847 -:103DB00080F88D105FF00F0180F8641010BDA068CE -:103DC00090F86400122818BFFFDF0121A06880F876 -:103DD0008E101121F0E7A0680023194690F86420A6 -:103DE0005830F9F745F828B9A06890F88E000028F7 -:103DF00008BFFFDF0121A06880F88D10132180F833 -:103E0000641010BDA06890F86400182818BFFFDF88 -:103E10001A20A16881F8640010BDA068D0F8F810DD -:103E200003884A889A4204BF097804291BD190F874 -:103E300064204FF00003194600F15800F9F718F814 -:103E4000002808BFFFDFA06890F8901011F0020F63 -:103E500004BF012180F8641005D0002180F888108B -:103E6000D0F8F8000170A0680023194690F865208A -:103E70005830F8F7FDFF002808BF10BD0020A168EA -:103E800081E0A0680023194690F864205830F8F7C4 -:103E9000EFFF002808BFFFDF0520A16881F864005C -:103EA00010BD30E01FE012E001E068E06EE0A068C5 -:103EB0000023194690F864205830F8F7D9FF0028FD -:103EC00008BFFFDF1C20A16881F86400E8E7A06854 -:103ED0000023194690F865205830F8F7C9FF0028EC -:103EE00008BFFFDFCAE7A0680023194690F86420E6 -:103EF0005830F8F7BDFF002808BFFFDF1F20A1687A -:103F000081F86400CCE7A06890F8651021291DD0E5 -:103F100090F86410232918BFFFDFC1D190F8F21088 -:103F2000002904BF90F8F310002901E08C01002063 -:103F30001CBF242180F864107FF4F8AE4FF000011C -:103F400080F864100846FEF760F8EFE690F8F2108B -:103F5000002907BF90F8F3100029242180F865108C -:103F60008CD14FF0000180F8651080F87D1090F83A -:103F70000E0100281CBF0020FEF747F87EE7A1686D -:103F8000002081F8650081F88C0089E7FFDF87E772 -:103F900070B58D4C0829207A62D2DFE801F004194F -:103FA00059592561615978B1F2F7AFFC01210846F2 -:103FB000F2F7B1FDF3F7F7FB0020A072F2F74DFD29 -:103FC000BDE87040F2F774BFBDE87040F0F728BD5F -:103FD000D4E90001F0F71BFB2060A07A401CC0B2BE -:103FE000A07228281CD370BDA07A0025401EC6B23E -:103FF000E0683044F3F751F810B9E1687F20885544 -:10400000A07A272828BF01252846F3F759FBA07A74 -:10401000282809D2401CC0B2A072282828BF70BD31 -:10402000BDE87040F2F719BD207A00281CBF0120BE -:1040300000F085F8F2F7AEFEF2F72CFF0120E072F7 -:1040400062480078DEF768FFBDE87040F0F7E8BC32 -:10405000002808BF70BD0020BDE8704000F06FB8B8 -:10406000FFDF70BD10B5584C207A002804BF0C202B -:1040700010BD00202072E072607AF1F723F9607AB7 -:10408000F1F76DFB607AF0F7A2FD00280CBF1F204E -:10409000002010BD002270B54B4C06460D46207A1C -:1040A00068B12272E272607AF1F70CF9607AF1F786 -:1040B00056FB607AF0F78BFD002808BFFFDF43480E -:1040C000E560067070BD70B5050007D0A5F5E85035 -:1040D0003F494C3881429CBF122070BD3A4CE06889 -:1040E000002804BF092070BD207A00281CBF0C20C6 -:1040F00070BD3848F0F70FFD6072202804BF1F2004 -:1041000070BDF0F783FD2060002D1CBF28442060A7 -:10411000012065602072002000F011F8002070BDC1 -:104120002949CA7A002A04BF002070471F22027062 -:1041300000224270CB684360CA72012070472DE9AB -:10414000F04184B00746F0F761FD1F4D80464146BF -:1041500068682C6800EB800046002046F1F772FA90 -:10416000B04206DB6868811B4046F0F750FA04460F -:10417000286040F2347621464046F1F763FAB042B7 -:1041800004DA31464046F0F742FA044600208DF842 -:1041900000004FF4DD60039004208DF80500002F2F -:1041A00014BF012003208DF8040068460294F0F744 -:1041B000FCFE687A6946F0F773FF002808BFFFDF4E -:1041C00004B0BDE8F08100004C130020AC010020D9 -:1041D000B5EB3C00913F02002DE9F0410C4612493D -:1041E0000D68114A114908321160A0F120013129EE -:1041F00001D301200CE0412810D040CC0C4F94E8B2 -:104200000E0007EB8000241F50F8807C3046B84732 -:1042100020600548001D0560BDE8F0812046DCF700 -:10422000F7FFF5E706207047100502400100000186 -:10423000585D020010B55348F1F740FD00B1FFDFB3 -:104240005048401CF1F73AFD002800D0FFDF10BDB8 -:104250002DE9F14F4C4ED6F800B001274948F1F74F -:1042600035FDDFF8208128B95FF0000708F1010073 -:10427000F1F742FD454C00254FF003090120606035 -:10428000C4F80051C4F80451009931602060DFF88F -:1042900000A118E0DAF80000C00614D50E2000F0E6 -:1042A00064F8EFF3108010F0010072B600D0012026 -:1042B000C4F80493D4F8001119B9D4F8041101B961 -:1042C00020BF00B962B6D4F8000118B9D4F80401CF -:1042D0000028DFD0D4F804010028CFD137B1C6F8C8 -:1042E00000B008F10100F1F7F1FC11E008F1010064 -:1042F000F1F7ECFC0028B9D1C4F80893C4F80451D4 -:10430000C4F800510E2000F030F81E48F1F7F4FC1C -:104310000020BDE8F88F2DE9F0438DB00D4606462C -:1043200000240DF110090DF1200817E004EB4407FB -:10433000102255F82710684601F06CF905EB870745 -:1043400010224846796801F065F96846FFF780FF5A -:1043500010224146B86801F05DF9641CB442E5DB07 -:104360000DB00020BDE8F08372E7002809DB00F003 -:104370001F02012191404009800000F1E020C0F8B7 -:1043800080127047AD01002004E5004000E00040CD -:1043900010ED00E0B14900200870704770B5B04DD5 -:1043A00001232B60AF4B1C68002CFCD0002407E0DD -:1043B0000E6806601E68002EFCD0001D091D641CDE -:1043C0009442F5D30020286018680028FCD070BD06 -:1043D00070B5A24E0446A44D3078022800D0FFDF0D -:1043E000AC4200D3FFDF7169A048012903D847F22E -:1043F0003052944201DD03224271491C7161291B34 -:10440000C1609A497078F0F74BFE002800D1FFDFB9 -:1044100070BD70B5914C0D466178884200D0FFDFC9 -:10442000914E082D4BD2DFE805F04A041E2D4A4A72 -:104430004A382078022800D0FFDF03202070A078BF -:10444000012801D020B108E0A06800F039FE04E0A6 -:1044500004F1080007C8FFF7A1FF05202070BDE8A0 -:104460007040F0F7DDBAF0F7D1FB01466068F1F774 -:10447000E9F8B04202D2616902290BD30320F1F7B7 -:10448000BCFB12E0F0F7C2FB01466068F1F7DAF816 -:10449000B042F3D2BDE870409AE7207802280AD0F3 -:1044A000052806D0FFDF04202070BDE8704000F032 -:1044B000CAB8022000E00320F1F79FFBF3E7FFDF1B -:1044C00070BD70B50546F0F7A1FB644C60602078C4 -:1044D000012800D0FFDF6549012008700020087125 -:1044E00004208D6048716048C860022020706078A8 -:1044F000F0F7D6FD002800D1FFDF70BD10B5574C96 -:10450000207838B90220F1F78EFB18B90320F1F7B3 -:104510008AFB08B1112010BD5548F0F7FCFA607015 -:10452000202804D0012020700020606110BD0320ED -:1045300010BD2DE9F0471446054600EB84000E46F9 -:10454000A0F1040800F0CFFD07464FF0805001694C -:104550004F4306EB8401091FB14201D2012100E063 -:10456000002189461CB10069B4EB900F02D90920E3 -:10457000BDE8F0872846DCF79FFE90B9A84510D328 -:10458000BD4205D2B84503D245EA0600800701D0F6 -:104590001020EDE73046DCF78FFE10B9B9F1000FBF -:1045A00001D00F20E4E7334833490068884205D042 -:1045B000224631462846FFF7F1FE14E0FFF79EFF42 -:1045C0000028D5D1254800218560C0E903648170A9 -:1045D00000F06FF810B14FF4A97000E0292060439B -:1045E0001830FFF76EFF0020C2E770B505464FF0A8 -:1045F000805004696C432046DCF75EFE08B10F2052 -:1046000070BD00F070FDA84201D8102070BD19489F -:1046100019490068884203D0204600F051FD10E09F -:10462000FFF76CFF0028F1D10C48012184608170F4 -:1046300000F03FF808B1114800E011481830FFF7CA -:1046400040FF002070BD10B5044C6078F0F7BFFA51 -:1046500000B9FFDF0020207010BD0000B001002075 -:1046600004E5014000E40140105C0C005C130020F4 -:104670001344020054000020BEBAFECA645E01006A -:10468000084C01004FF08050D0F830010A2801D0CA -:10469000002070470120704700B5FFF7F3FF20B1FD -:1046A0004FF08050D0F8340108B1002000BD012047 -:1046B00000BD4FF08050D0F83011062905D0D0F859 -:1046C0003001401C01D000207047012070474FF09E -:1046D0008050D0F83001082801D000207047012018 -:1046E000704700B5FFF7E5FF48B14FF08050D0F8B4 -:1046F0003411062905D3D0F83401401C01D0002024 -:1047000000BD012000BD00B5FFF7D3FF58B14FF049 -:104710008050D0F83411062905D3D0F83401401C5C -:1047200001D0012000BD002000BD00007B490968C8 -:10473000016000207047794908600020704701211E -:104740008A0720B1012804D042F204007047916723 -:1047500000E0D1670020704771490120086042F2F3 -:104760000600704708B504236D4A1907103230B1AE -:10477000C1F80433106840F0010010600BE01068CD -:1047800020F001001060C1F808330020C1F80801D2 -:10479000644800680090002008BD011F0B2909D85B -:1047A0005F4910310A6822F01E0242EA40000860A8 -:1047B0000020704742F2050070470F2809D8584979 -:1047C00010310A6822F4706242EA0020086000207A -:1047D000704742F205007047000100F18040C0F8C8 -:1047E000041900207047000100F18040C0F808194A -:1047F00000207047000100F18040D0F800090860F7 -:1048000000207047012801D907207047464A52F816 -:10481000200002680A43026000207047012801D985 -:1048200007207047404A52F8200002688A4302601D -:1048300000207047012801D9072070473A4A52F8F2 -:1048400020000068086000207047020037494FF0E0 -:10485000000003D0012A01D0072070470A6070478A -:10486000020033494FF0000003D0012A01D0072095 -:1048700070470A60704708B54FF40072510510B1D7 -:10488000C1F8042308E0C1F808230020C1F824017E -:1048900024481C3000680090002008BD08B5802224 -:1048A000D10510B1C1F8042308E0C1F808230020A5 -:1048B000C1F81C011B48143000680090002008BD9E -:1048C00008B54FF48072910510B1C1F8042308E0D7 -:1048D000C1F808230020C1F82001124818300068F0 -:1048E0000090002008BD0D493831096801600020A2 -:1048F00070474FF080410020C1F80801C1F8240141 -:10490000C1F81C01C1F820014FF0E020802180F89F -:1049100000140121C0F8001170470000000400409D -:1049200000050040080100401C5E020078050040C0 -:10493000800500406249634B0A6863499A420968EE -:1049400001D1C1F310010160002070475C495D4B4B -:104950000A685D49091D9A4201D1C0F31000086040 -:10496000002070475649574B0A68574908319A4208 -:1049700001D1C0F3100008600020704730B5504BE3 -:10498000504D1C6842F20803AC4202D0142802D2F7 -:1049900003E0112801D3184630BDC3004B4818442A -:1049A000C0F81015C0F81425002030BD4449454B0F -:1049B0000A6842F209019A4202D0062802D203E0B4 -:1049C000042801D308467047404A012142F83010BC -:1049D000002070473A493B4B0A6842F209019A426B -:1049E00002D0062802D203E0042801D3084670470B -:1049F000364A012102EBC00041600020704770B5CB -:104A00002F4A304E314C156842F2090304EB800204 -:104A1000B54204D0062804D2C2F8001807E00428E2 -:104A200001D3184670BDC1F31000C2F80008002081 -:104A300070BD70B5224A234E244C156842F209031A -:104A400004EB8002B54204D0062804D2D2F8000854 -:104A500007E0042801D3184670BDD2F80008C0F35F -:104A600010000860002070BD174910B508311848C3 -:104A700008601120154A002102EBC003C3F810158D -:104A8000C3F81415401C1428F6D3002006E00428AF -:104A900004D302EB8003C3F8001807E002EB8003A5 -:104AA000D3F80048C4F31004C3F80048401C06289B -:104AB000EDD310BD04490648083108607047000076 -:104AC00054000020BEBAFECA00F5014000F00140CB -:104AD0000000FEFF834B1B6803B19847BFF34F8F65 -:104AE00081480168814A01F4E06111430160BFF32C -:104AF0004F8F00BFFDE710B5EFF3108010F0010FEE -:104B000072B601D0012400E0002400F0E1F850B1B9 -:104B1000DCF772FCEFF73FFEF1F711F8E7F700FA68 -:104B200073490020086004B962B6002010BD2DE969 -:104B3000F0410C460546EFF3108010F0010F72B6FD -:104B400001D0012600E0002600F0C2F820B106B92D -:104B500062B60820BDE8F081DCF742FBDCF750FCD0 -:104B60000246002001234709BF0007F1E02700F0BB -:104B70001F01D7F80071CF40F9071BD0202803D2BE -:104B800022FA00F1C90727D141B2002904DB01F163 -:104B9000E02191F8001405E001F00F0101F1E0219E -:104BA00091F8141D4909082916D203FA01F717F0E4 -:104BB000EC0F11D0401C6428D5D3E7F78FF94D4A8C -:104BC0004D490020E7F7D2F949494C480860204692 -:104BD000DCF779FB60B904E006B962B641F2010086 -:104BE000B8E7404804602DB12846DCF7B9FB18B19E -:104BF00010242CE0424D19E02878022802D94FF405 -:104C0000805424E007240028687801D0F8B908E02F -:104C1000E8B120281BD8A878212818D8012816D058 -:104C200001E0A87898B9E8780B2810D83549802099 -:104C300081F8140DDCF7E4FB2946F0F766FFEFF787 -:104C400069FD00F083FA2846DCF7A8FB044606B9A4 -:104C500062B61CB1FFF74FFF20467BE7002079E7E3 -:104C600010B5044600F034F800B101202070002097 -:104C700010BD254908600020704770B50C462349D7 -:104C80000D682249224E08310E60102807D01128E5 -:104C90000CD012280FD0132811D0012013E0D4E932 -:104CA0000001FFF744FF354620600DE0FFF723FFCA -:104CB0000025206008E02068FFF7D2FF03E01249DA -:104CC00020680860002020601048001D056070BD4D -:104CD00007480A490068884201D101207047002036 -:104CE00070470000C80100200CED00E00400FA0548 -:104CF00054000020F813002000000020BEBAFECAB5 -:104D0000245E02000BE000E00400002010050240D9 -:104D10000100000100B59B4902282ED021DC10F1D2 -:104D20000C0F08BFF42028D00FDC10F1280F08BFAB -:104D3000D82022D010F1140F08BFEC201DD010F1A4 -:104D4000100F08BFF02018D021E010F1080F08BFA5 -:104D5000F82012D010F1040F0CBFFC2000280CD05A -:104D600015E0A0F10300062811D2DFE800F00E0CD8 -:104D70000A080503082000E00720086000BD06209F -:104D8000FBE70520F9E70420F7E70320F5E7FFDF5D -:104D900000BD00B57C49012808BF03200CD00228C3 -:104DA00008BF042008D0042808BF062004D0082823 -:104DB00016BFFFDF052000BD086000BD70B50546C9 -:104DC0000C4616461046F2F7A5FC022C08BF4FF41D -:104DD0007A7105D0012C0CBF4FF4C86140F6340144 -:104DE00044183046F2F7D0FC204449F67971084463 -:104DF0004FF47A71B0FBF1F0281A70BD70B505461A -:104E00000C460846F2F79FFC022C08BF40F24C41CA -:104E100005D0012C0CBF40F634014FF4AF5149F6D8 -:104E2000CA62511A08444FF47A7100F2E140B0FBB3 -:104E3000F1F0281A801E70BD70B5064615460C4666 -:104E40000846F2F780FC022D08BF4FF47A7105D0B6 -:104E5000012D0CBF4FF4C86140F63401022C08BF8D -:104E600040F24C4205D0012C0CBF40F634024FF406 -:104E7000AF52891A084449F6FC6108444FF47A712C -:104E8000B0FBF1F0301A70BD70B504460E4608460E -:104E9000F2F740FC05463046F2F776FC28444AF229 -:104EA000AB3108444FF47A71B0FBF1F0201A801E48 -:104EB00070BD2DE9F04107461E460D4614461046CA -:104EC000082A16BF04284EF62830F2F723FC07EB19 -:104ED0004701C1EBC71100EBC100022D08BF40F232 -:104EE0004C4105D0012D0CBF40F634014FF4AF51B9 -:104EF00047182846F2F727FC381A4FF47A7100F663 -:104F0000B730B0FBF1F52046F2F7F2FB284430440D -:104F1000401DBDE8F08170B5054614460E460846B2 -:104F2000F2F7F8FB05EB4502C2EBC512C0EBC20578 -:104F30003046F2F729FC2D1A2046082C16BF04280B -:104F40004EF62830F2F7E6FB28444FF47A7100F66B -:104F5000B730B0FBF1F52046F2F7CAFB2844401DFC -:104F600070BD0A49082818BF0428086803BF20F448 -:104F70006C5040F4444040F0004020F00040086095 -:104F8000704700000C15004010150040401700400D -:104F90002DE9FE430C468046F8F72EFD074698F8AB -:104FA0000160204601A96A46EDF7ABFA05000DD075 -:104FB000012F02D00320BDE8FE83204602AA0199FA -:104FC000EDF7C1F90298B0F803000AE0022F14D1FE -:104FD000042E12D3B8F80300BDF80020011D914241 -:104FE00004D8001D80B2A919814202D14FF00000FF -:104FF000E1E702D24FF00100DDE74FF00200DAE70F -:10500000C2790D2341B342BB8188012904D94908E3 -:10501000818004BF012282800168012918BF002914 -:1050200030D001686FEA0101C1EBC10202EB01124D -:1050300081796FEA010101EB8103C3EB8111114416 -:105040004FEA914201608188B2FBF1F301FB132129 -:1050500081714FF0010102E01AB14FF00001C171FE -:1050600070478188FF2908D24FF6FF7202EA41019A -:105070008180FF2984BFFF2282800168012918BF37 -:105080000029CED10360CCE7817931B1491E11F0FE -:10509000FF0181711CBF002070470120704710B5CF -:1050A0000121C1718171818004460421F0F788FEDD -:1050B000002818BF10BD2068401C206010BD0000F3 -:1050C0000B4A022111600B490B68002BFCD0084BE6 -:1050D0001B1D186008680028FCD0002010600868BC -:1050E0000028FCD070474FF08050406970470000A6 -:1050F00004E5014000E4014002000B464FF00000CF -:10510000014620D0012A04D0022A04D0032A0DD15E -:1051100003E0012002E0022015E00320072B05D266 -:10512000DFE803F00406080A0C0E100007207047A1 -:10513000012108E0022106E0032104E0042102E04D -:10514000052100E00621EFF704BD0000F948052124 -:1051500081700021017041707047F7490A78012A77 -:1051600005D0CA681044C8604038F0F738BA8A6879 -:1051700010448860F8E7002819D00378EF49F04A16 -:1051800013B1012B0ED011E00379012B00D06BB9C4 -:1051900043790BB1012B09D18368643B8B4205D263 -:1051A000C0680EE00379012B02D00BB100207047DC -:1051B00043790BB1012BF9D1C368643B8B42F5D223 -:1051C00080689042F2D801207047DB4910B5012277 -:1051D0000A700279A2B100220A71427992B10422C6 -:1051E0004A718268D34C52328A60C0681434C860F5 -:1051F0006060EFF70BFDCF4920600220887010BD82 -:105200000322E9E70322EBE770B5CB4D044600200B -:105210002870207988B100202871607978B1042045 -:10522000C44E6871A168F068EFF7F1F9A860E06812 -:105230005230E8600320B07070BD0120ECE703201D -:10524000EEE72DE9F04105460226F0F7E8F80068A0 -:1052500000B1FFDFB74C01273DB12878B0B101287C -:1052600005D0022810D0032813D027710CE06868FD -:10527000C82807D3F0F70DFA20B16868FFF76DFF73 -:10528000012603E0002601E000F05EF93046BDE8AB -:10529000F08120780028F7D16868FFF76CFF0028BC -:1052A000E3D06868017879B1A078042800D0FFDFE6 -:1052B00001216868FFF7A8FF9F49E078EFF7F0FE4B -:1052C0000028E1D1FFDFDFE7FFF77FFF6770DBE753 -:1052D0002DE9F047974C8846E178884200D0FFDFFF -:1052E000DFF8509200250127934E09F11409B8F117 -:1052F000080F75D2DFE808F0040C28527A808D95EB -:10530000A078032802D0022800D0FFDFBDE8F08794 -:10531000A078032802D0022800D0FFDF0420A0706C -:1053200025712078002878D1FFF717FF3078012801 -:1053300006D0B068E06000F027F92061002060E04E -:10534000E078EFF7AAFDF5E7A078032802D002285D -:1053500000D0FFDF207800286DD1A078032816D078 -:10536000EFF754FC01464F46D9F80000F0F76AF910 -:1053700000280EDB796881420BDB081AF0606E4969 -:10538000E078EFF78DFE0028C0D1FFDFBEE70420F4 -:1053900028E00420F0F731FCA570B7E7A0780328D7 -:1053A00002D0022800D0FFDF207888BBA078032835 -:1053B00017D0EFF72BFC01464F46D9F80000F0F765 -:1053C00041F90028E5DB79688142E2DB081AF060E8 -:1053D0005949E078EFF764FE002897D1FFDF95E7A1 -:1053E00040E00520F0F709FCA7708FE7A0780428BB -:1053F00000D0FFDF022004E0A078042800D0FFDF07 -:105400000120A1688847FFF71CFF054630E004E053 -:1054100011E0A078042800D0FFDFBDE8F04700F0DD -:1054200093B8A078042804D0617809B1022800D08C -:10543000FFDF207818B1BDE8F04700F08EB8207982 -:1054400020B10620F0F7D9FB2571CDE7607838B19F -:105450003949E078EFF724FE00B9FFDF657055E7C2 -:105460000720BFE7FFDF51E73DB1012D03D0FFDF8C -:10547000022DF9D14AE70420C3E70320C1E770B544 -:10548000050004D02B4CA078052806D101E010209F -:1054900070BD0820F0F7C7FB08B1112070BD294886 -:1054A000EFF739FBE070202806D00121F0F7EBF987 -:1054B0000020A560A07070BD032070BD1D4810B510 -:1054C000017809B1112010BD8178052906D0012984 -:1054D00006D029B101210170002010BD0F2010BDA0 -:1054E00000F03BF8F8E770B5124C0546A07808B11B -:1054F000012809D155B12846FFF73DFE40B1287873 -:1055000040B1A078012809D00F2070BD102070BDD7 -:10551000072070BD2846FFF758FE03E0002128460B -:10552000FFF772FE0449E078EFF7BAFD00B9FFDF3C -:10553000002070BDCC0100206C1300203D860100CE -:10554000FF1FA107D15202000A4810B5006900F000 -:1055500013F8BDE81040EFF763BA064810B5C078FD -:10556000EFF735FB00B9FFDF0820F0F746FBBDE899 -:105570001040EBE5CC0100200C490A6848F2021308 -:105580009A4302430A607047084A116848F20213BE -:1055900001EA03009943116070470246044B102052 -:1055A0001344FC2B01D8116000207047C80602404C -:1055B0000018FEBF704770477047704740EA01030C -:1055C00010B59B070FD1042A0DD310C808C9121FAC -:1055D0009C42F8D020BA19BA884201D9012010BDE6 -:1055E0004FF0FF3010BD1AB1D30703D0521C07E0B3 -:1055F000002010BD10F8013B11F8014B1B1B07D117 -:1056000010F8013B11F8014B1B1B01D1921EF1D187 -:10561000184610BD032A40F2308010F0030C00F051 -:10562000158011F8013BBCF1020F624498BF11F8DC -:1056300001CB00F8013B38BF11F8013BA2F1040295 -:1056400098BF00F801CB38BF00F8013B11F003030D -:1056500000F02580083AC0F0088051F8043B083A71 -:1056600051F804CBA0E80810F5E7121D5CBF51F813 -:10567000043B40F8043BAFF30080D20724BF11F88D -:10568000013B11F801CB48BF11F8012B24BF00F8F2 -:10569000013B00F801CB48BF00F8012B704710B563 -:1056A000203AC0F00B80B1E81850203AA0E818501A -:1056B000B1E81850A0E81850BFF4F5AF5FEA027CDB -:1056C00024BFB1E81850A0E8185044BF18C918C04A -:1056D000BDE810405FEA827C24BF51F8043B40F8EB -:1056E000043B08BF7047D20728BF31F8023B48BFD0 -:1056F00011F8012B28BF20F8023B48BF00F8012B0E -:10570000704702F0FF0343EA032242EA024200F03C -:1057100002B84FF000020429C0F0128010F0030C10 -:1057200000F01B80CCF1040CBCF1020F18BF00F894 -:10573000012BA8BF20F8022BA1EB0C0100F00DB843 -:105740005FEAC17C24BF00F8012B00F8012B48BFA1 -:1057500000F8012B70474FF0000200B51346944645 -:105760009646203922BFA0E80C50A0E80C50B1F1B9 -:105770002001BFF4F7AF090728BFA0E80C5048BFCD -:105780000CC05DF804EB890028BF40F8042B08BF6B -:10579000704748BF20F8022B11F0804F18BF00F867 -:1057A000012B70477047704770477047FEDF1849FC -:1057B0000978F9B90420714608421BD10699154AA7 -:1057C000914217DC0699022914DB02394878DF2858 -:1057D00010D10878FE2807D0FF280BD14FF0010028 -:1057E0004FF000020C4B184741F201000099019A5A -:1057F000094B1847094B002B02D01B68DB68184780 -:105800004FF0FF3071464FF00002034B1847000085 -:1058100028ED00E000600200D54A020004000020EC -:10582000174818497047FFF7FBFFDBF7C7FC00BDBF -:10583000154816490968884203D1154A13605B6808 -:10584000184700BD20BFFDE70F481049096888428E -:1058500010D1104B18684FF0FF318842F2D080F31E -:1058600008884FF02021884204DD0B48026803219C -:105870000A4302600948804709488047FFDF00006B -:105880008013002080130020001000000000002082 -:10589000040000200060020014090040C52F000031 -:1058A0003158020004207146084202D0EFF309810A -:1058B00001E0EFF30881886902380078102813DBD3 -:1058C00020280FDB2C280BDB0A4A12680A4B9A426D -:1058D00003D1602804DB094A1047022008607047A2 -:1058E000074A1047074A1047074A12682C321268C5 -:1058F0001047000054000020BEBAFECA0514000084 -:10590000D94102007B4C0200040000200D4B0E49DF -:1059100008470E4B0C4908470D4B0B4908470D4BE8 -:10592000094908470C4B084908470C4B06490847EA -:105930000B4B054908470B4B034908470A4B0249E3 -:1059400008470000BDBC000039C00000552D000014 -:10595000CF2B00005D2B0000F72D0000211400006C -:105960001B2900004D2F0000C9110000002101601B -:1059700081807047002101604160017270470A68B0 -:1059800002600B79037170476D960000CB970000A1 -:105990002D99000091990000CB990000FF9900001B -:1059A000319A0000699A0000D79A00001B97000006 -:1059B00051990000A7120000C14300000D440000EF -:1059C00073440000FF44000023460000E546000049 -:1059D00017470000EF47000087480000DB48000041 -:1059E000C1490000E1490000C3160000E7160000AD -:1059F000171600006B16000019170000AD17000005 -:105A000037600000E7610000AD650000C56600007A -:105A10004F670000CD670000316800005169000049 -:105A2000216A00008D6A0000034A0000094A000054 -:105A3000134A00007B4A0000A74A0000534C0000B4 -:105A40007D4C0000B54C00001F4D0000034E0000CF -:105A5000214E000031440000A7120000A7120000F0 -:105A6000A7120000A7120000A7120000A712000052 -:105A7000A7120000A32500002926000045260000EB -:105A800061260000EF2700008B260000952600000D -:105A9000D7260000F9260000D527000017280000AF -:105AA000A7120000A7120000BB830000DB830000E8 -:105AB000E58300001F8400004D8400003D85000048 -:105AC000CB850000DF8500002D86000043870000A5 -:105AD000E9880000118A00003F730000298A000055 -:105AE000A7120000A7120000B5B500001FB7000004 -:105AF00073B70000DFB700008FB80000010000009E -:105B000000000000100110013A0200001A02000417 -:105B100005060000FFFFFFFF0000FFFFA9AD00002A -:105B2000233D00004921000089730000018F00001F -:105B300000000000AD910000899100009B910000E1 -:105B40000000020000000000000200000000000051 -:105B50000001000000000000678100004781000094 -:105B6000B581000025250000E7240000072500007E -:105B700013A900003FA9000047AB00003159000005 -:105B8000D5810000000000000582000073250000A0 -:105B900000000000000000000000000029AA000032 -:105BA00000000000C55900000300000001555555D4 -:105BB000D6BE898E00006306630C631200000703E3 -:105BC000AB054F08000053044308330C00000000ED -:105BD000900A0000900A0000B3560000B35600007F -:105BE0009D43000055AC00000B7600005B200000D8 -:105BF000CF300200ADA30100F1560000F1560000C5 -:105C0000BF430000B7AC00008F760000CD2000003D -:105C1000FD300200C1A30100700170014000380096 -:105C20005C0024004801000200000300656C7462FF -:105C30000000000000000000000000000000000064 -:105C400087000000000000000000000000000000CD -:105C5000BE83605ADB0B376038A5F5AA9183886C48 -:105C6000010000004F31010015400100000000015B -:105C70000206030405000000070000000000000009 -:105C8000060000000A00000032000000730000005F -:105C9000B4000000BF8E0100DF1C0200F3F800001A -:105CA000B9B601002FF50100B9B6010091FA000064 -:105CB00077B80100F5F1010077B80100CDF60000DA -:105CC00005B8010051F4010005B80100EFF800002B -:105CD000CDB60100E5ED0100CDB6010043FF0000A7 -:105CE000F9BA0100E3F50100F9BA0100F401FA0084 -:105CF000960064004B0032001E0014000A000500EC -:105D0000020001000049000000000000AAAED7AB6D -:105D1000154120100C0802170D01010209090101AB -:105D20000602091818030101090903030555555511 -:105D3000252627D6BE898E00F401FA00960064005D -:105D40004B0032001E0014000A0005000200010092 -:105D50002549000000000000354902004D490200BD -:105D6000654902007D490200AD490200D5490200A3 -:105D7000FF490200334A0200EB45020033450200AE -:105D8000254202009B550200BD5C0100CD5C010074 -:105D9000F95C0100CB5D0100D35D0100E55D010010 -:105DA0003F470200594702002D47020037470200D3 -:105DB000654702009B470200BB470200D94702002B -:105DC000E7470200F5470200054802001D480200AF -:105DD000354802004B480200614802000000000004 -:105DE00063BA0000B9BA0000CFBA0000F95002004F -:105DF00051420200174302007F540200BD540200CA -:105E0000E75402009D5B0100FD5F0100774802003E -:105E10009D480200C1480200E74802001C050040FE -:105E20002005004000100200485E0200080000202B -:105E3000E0010000441100007C5E0200E801002047 -:105E400098110000A0110000011413F81302412062 -:105E50000A2006441A0102228C2720FB349B5F8013 -:105E60001280021E10133F0B1420FC0A1B20820814 -:0C5E7000019C0916C7327F0B6CF410BCBB -:00000001FF