diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/board_env.xml b/applications/ta2/bsp/board_env.xml similarity index 90% rename from applications/ta2/libraries/ta2_unb2b_bsp/board_env.xml rename to applications/ta2/bsp/board_env.xml index b76970b06313e704967727c1c3e2f697f0addbe1..1aac333ef8d88333efcf4b784f42935ed81986d6 100755 --- a/applications/ta2/libraries/ta2_unb2b_bsp/board_env.xml +++ b/applications/ta2/bsp/board_env.xml @@ -1,6 +1,6 @@ <?xml version="1.0"?> <board_env version="18.0" name="ta2_unb2b_bsp"> - <hardware dir="hardware" default="unb2b"></hardware> + <hardware dir="hardware" default="ta2_unb2b_bsp"></hardware> <platform name="linux64"> <mmdlib>%b/linux64/lib/libaltera_a10_ref_mmd.so</mmdlib> <linkflags>-L%b/linux64/lib</linkflags> diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/bringup/README.txt b/applications/ta2/bsp/bringup/README.txt similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/bringup/README.txt rename to applications/ta2/bsp/bringup/README.txt diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/bringup/a10_ref_initialization.tgz b/applications/ta2/bsp/bringup/a10_ref_initialization.tgz similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/bringup/a10_ref_initialization.tgz rename to applications/ta2/bsp/bringup/a10_ref_initialization.tgz diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/board.qsys b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board.qsys similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/board.qsys rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/board.qsys diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/board_spec.xml b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board_spec.xml similarity index 96% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/board_spec.xml rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/board_spec.xml index 95d56fc90a763665ad019065cf27095147a587ca..69812e4833dc98fb9cb89b49624748f2bf1e4695 100755 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/board_spec.xml +++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/board_spec.xml @@ -1,8 +1,8 @@ <?xml version="1.0"?> -<board version="18.0" name="unb2b"> +<board version="19.2" name="ta2_unb2b_bsp"> <compile name="flat" project="top" revision="flat" qsys_file="none" generic_kernel="1"> - <generate cmd="quartus_sh -t scripts/pre_flow_pr.tcl flat"/> + <generate cmd="quartus_sh -t scripts/pre_flow_pr.tcl ta2_unb2b_bsp"/> <synthesize cmd="quartus_sh --flow compile top -c flat"/> <auto_migrate platform_type="a10_ref" > <include fixes=""/> diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ddr4.qsys b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ddr4.qsys similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ddr4.qsys rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ddr4.qsys diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/device.tcl b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/device.tcl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/device.tcl rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/device.tcl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/flat.qsf b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/flat.qsf similarity index 98% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/flat.qsf rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/flat.qsf index da84795e80fa6825781879695201ff6ea29e928d..c3fe092879cf7958ba841ac2ab134539b33b866d 100755 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/flat.qsf +++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/flat.qsf @@ -14,17 +14,35 @@ # sole purpose of programming logic devices manufactured by Intel and sold by # Intel or its authorized distributors. Please refer to the applicable # agreement for further details. - +# ########################################################################## +# Copyright 2020 +# ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ########################################################################## + +# ########################################################################## +# Author: +# . Reinier vd Walle +# Purpose: +# . Quartus settings for OpenCL BSP +# Description: +# . " " +# ########################################################################## # device.tcl contains settings unique to each device type/board variant (most importantly, the device string for the particular device type) source device.tcl -source ctrl_unb2_board.tcl -source ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.tcl -source ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.tcl -source ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.tcl -source ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.tcl -source ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.tcl -source ip/ta2_unb2b_ddr/ta2_unb2b_ddr.tcl #============================================================ # Files and basic settings #============================================================ diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/hdllib.cfg b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/hdllib.cfg similarity index 67% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/hdllib.cfg rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/hdllib.cfg index 4f3b7f2264462024562da3df5c3f078dbb45a94a..26ca021eb672156b79fb414bff3718581b1e726f 100644 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/hdllib.cfg +++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/hdllib.cfg @@ -1,19 +1,16 @@ -hdl_lib_name = ta2_unb2b_top -hdl_library_clause_name = ta2_unb2b_top_lib -hdl_lib_uses_synth = common technology dp unb2b_board ta2_unb2b_40GbE ta2_unb2b_10GbE ta2_unb2b_1GbE_mc ta2_unb2b_jesd204b ta2_unb2b_mm_io #ta2_unb2b_ddr +hdl_lib_name = ta2_unb2b_bsp +hdl_library_clause_name = ta2_unb2b_bsp_lib +hdl_lib_uses_synth = common technology dp unb2b_board ta2_unb2b_40GbE ta2_unb2b_10GbE ta2_unb2b_1GbE_mc ta2_unb2b_jesd204b ta2_unb2b_mm_io ta2_unb2b_ddr hdl_lib_uses_sim = hdl_lib_technology = ip_arria10_e1sg hdl_lib_include_ip = synth_files = top_components_pkg.vhd - ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.vhd - ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.vhd - ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.vhd - ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.vhd - ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.vhd -# ip/ta2_unb2b_ddr/ta2_unb2b_ddr.vhd + ip/pr_region.v + ip/freeze_wrapper.v top.vhd + test_bench_files = regression_test_vhdl = @@ -24,7 +21,8 @@ regression_test_vhdl = synth_top_level_entity = quartus_copy_files = - + ./ . + quartus_qsf_files = $RADIOHDL/boards/uniboard2b/libraries/unb2b_board/quartus/unb2b_board.qsf @@ -38,5 +36,9 @@ quartus_vhdl_files = quartus_qip_files = +quartus_ip_files = + $RADIOHDL_BUILD_DIR/unb2b/quartus/ta2_unb2b_40GbE/arria10_40g_mac.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/ta2_unb2b_40GbE/arria10_40g_atx_pll.ip + nios2_app_userflags = -DCOMPILE_FOR_GEN2_UNB2 diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/hw_iface.iipx b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/hw_iface.iipx similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/hw_iface.iipx rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/hw_iface.iipx diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/iface.ipx b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/iface.ipx similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/iface.ipx rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/iface.ipx diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_avs_eth_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_avs_eth_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_avs_eth_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_avs_eth_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_clk_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_clk_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_clk_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_clk_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_cpu_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_cpu_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_cpu_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_cpu_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_jtag_uart_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_jtag_uart_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_jtag_uart_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_jtag_uart_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_kclk_global.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_kclk_global.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_kclk_global.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_kclk_global.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_kernel_clk.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_kernel_clk.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_kernel_clk.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_kernel_clk.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_kernel_clk_gen.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_kernel_clk_gen.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_kernel_clk_gen.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_kernel_clk_gen.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_kernel_ddr4a_bridge.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_kernel_ddr4a_bridge.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_kernel_ddr4a_bridge.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_kernel_ddr4a_bridge.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_kernel_interface.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_kernel_interface.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_kernel_interface.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_kernel_interface.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_onchip_memory.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_onchip_memory.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_onchip_memory.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_onchip_memory.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_onchip_memory2_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_onchip_memory2_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_onchip_memory2_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_onchip_memory2_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_pio_pps.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_pio_pps.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_pio_pps.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_pio_pps.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_pio_system_info.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_pio_system_info.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_pio_system_info.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_pio_system_info.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_pio_wdi.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_pio_wdi.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_pio_wdi.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_pio_wdi.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_dpmm_ctrl.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_dpmm_ctrl.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_dpmm_ctrl.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_dpmm_ctrl.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_dpmm_data.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_dpmm_data.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_dpmm_data.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_dpmm_data.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_epcs.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_epcs.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_epcs.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_epcs.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_fpga_temp_sens.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_fpga_temp_sens.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_fpga_temp_sens.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_fpga_temp_sens.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_fpga_voltage_sens.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_fpga_voltage_sens.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_fpga_voltage_sens.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_fpga_voltage_sens.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_mmdp_ctrl.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_mmdp_ctrl.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_mmdp_ctrl.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_mmdp_ctrl.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_mmdp_data.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_mmdp_data.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_mmdp_data.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_mmdp_data.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_remu.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_remu.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_remu.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_remu.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_ta2_unb2b_jesd204b.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_ta2_unb2b_jesd204b.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_ta2_unb2b_jesd204b.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_ta2_unb2b_jesd204b.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_unb_pmbus.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_unb_pmbus.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_unb_pmbus.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_unb_pmbus.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_unb_sens.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_unb_sens.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_unb_sens.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_unb_sens.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_wdi.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_wdi.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_reg_wdi.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_reg_wdi.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_rom_system_info.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_rom_system_info.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_rom_system_info.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_rom_system_info.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_timer_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_timer_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/board_timer_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/board_timer_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/reg_mmdp_ctrl_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_ctrl_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/reg_mmdp_ctrl_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_ctrl_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/reg_mmdp_ctrl_1.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_ctrl_1.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/reg_mmdp_ctrl_1.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_ctrl_1.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/reg_mmdp_data_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_data_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/reg_mmdp_data_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_data_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/reg_mmdp_data_1.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_data_1.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/board/reg_mmdp_data_1.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/board/reg_mmdp_data_1.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ddr4/ddr4_clock_bridge_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/ddr4/ddr4_clock_bridge_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ddr4/ddr4_clock_bridge_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/ddr4/ddr4_clock_bridge_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ddr4/ddr4_ddr4a.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/ddr4/ddr4_ddr4a.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ddr4/ddr4_ddr4a.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/ddr4/ddr4_ddr4a.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ddr4/ddr4_pipe_stage_ddr4a_dimm_post_4th.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/ddr4/ddr4_pipe_stage_ddr4a_dimm_post_4th.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ddr4/ddr4_pipe_stage_ddr4a_dimm_post_4th.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/ddr4/ddr4_pipe_stage_ddr4a_dimm_post_4th.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ddr4/ddr4_reset_bridge_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/ddr4/ddr4_reset_bridge_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ddr4/ddr4_reset_bridge_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/ddr4/ddr4_reset_bridge_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/freeze_wrapper.v b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/freeze_wrapper.v similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/freeze_wrapper.v rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/freeze_wrapper.v diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/kernel_mem/kernel_mem_mm_bridge_0.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/kernel_mem/kernel_mem_mm_bridge_0.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/kernel_mem/kernel_mem_mm_bridge_0.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/kernel_mem/kernel_mem_mm_bridge_0.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_clock_cross_kernel_to_ddr4a.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_clock_cross_kernel_to_ddr4a.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_clock_cross_kernel_to_ddr4a.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_clock_cross_kernel_to_ddr4a.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_clock_cross_pcie_to_ddr4a.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_clock_cross_pcie_to_ddr4a.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_clock_cross_pcie_to_ddr4a.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_clock_cross_pcie_to_ddr4a.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_ddr4_calibrate.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_ddr4_calibrate.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_ddr4_calibrate.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_ddr4_calibrate.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_global_reset_in.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_global_reset_in.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_global_reset_in.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_global_reset_in.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_kernel_clk_in.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_kernel_clk_in.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_kernel_clk_in.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_kernel_clk_in.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_pcie_clk_in.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_pcie_clk_in.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_pcie_clk_in.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_pcie_clk_in.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_pipe_stage_ddr4a_dimm.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_pipe_stage_ddr4a_dimm.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_pipe_stage_ddr4a_dimm.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_pipe_stage_ddr4a_dimm.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_reset_controller_ddr4a.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_reset_controller_ddr4a.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_reset_controller_ddr4a.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_reset_controller_ddr4a.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_reset_controller_ddr4a_pipe.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_reset_controller_ddr4a_pipe.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_reset_controller_ddr4a_pipe.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_reset_controller_ddr4a_pipe.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_uniphy_status_20nm.ip b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_uniphy_status_20nm.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/mem/mem_uniphy_status_20nm.ip rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/mem/mem_uniphy_status_20nm.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/pr_region.v b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/pr_region.v similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/pr_region.v rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/ip/pr_region.v diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/kernel_mem.qsys b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/kernel_mem.qsys similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/kernel_mem.qsys rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/kernel_mem.qsys diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/mem.qsys b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/mem.qsys similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/mem.qsys rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/mem.qsys diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/opencl_bsp_ip.qsf b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/opencl_bsp_ip.qsf similarity index 85% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/opencl_bsp_ip.qsf rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/opencl_bsp_ip.qsf index 7a07039a5fa99af79c06b66db033c66dc2b46803..170b847576e8a796004097f7e8b8e621c464c406 100755 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/opencl_bsp_ip.qsf +++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/opencl_bsp_ip.qsf @@ -24,12 +24,12 @@ source device.tcl #============================================================ set_global_assignment -name TOP_LEVEL_ENTITY top set_global_assignment -name VERILOG_INPUT_VERSION SYSTEMVERILOG_2005 -set_global_assignment -name VHDL_FILE top_components_pkg.vhd -set_global_assignment -name VHDL_FILE top.vhd -set_global_assignment -name VERILOG_FILE ip/freeze_wrapper.v -set_global_assignment -name VERILOG_FILE ip/pr_region.v +#set_global_assignment -name VHDL_FILE top_components_pkg.vhd +#set_global_assignment -name VHDL_FILE top.vhd +#set_global_assignment -name VERILOG_FILE ip/freeze_wrapper.v +#set_global_assignment -name VERILOG_FILE ip/pr_region.v set_global_assignment -name QIP_FILE ip/kernel_mem/kernel_mem_mm_bridge_0/kernel_mem_mm_bridge_0.qip -set_global_assignment -name LAST_QUARTUS_VERSION "18.0.0 Pro Edition" +set_global_assignment -name LAST_QUARTUS_VERSION "19.2.0 Pro Edition" set_global_assignment -name MIN_CORE_JUNCTION_TEMP 0 set_global_assignment -name MAX_CORE_JUNCTION_TEMP 100 set_global_assignment -name DEVICE 10AX115U2F45E1SG @@ -38,13 +38,9 @@ set_global_assignment -name DEVICE_FILTER_PACKAGE FBGA set_global_assignment -name DEVICE_FILTER_PIN_COUNT 1932 set_global_assignment -name ERROR_CHECK_FREQUENCY_DIVISOR 4 -set_global_assignment -name QSYS_FILE board.qsys +set_global_assignment -name SOURCE_TCL_SCRIPT_FILE radiohdl_components.qsf -set_global_assignment -name VHDL_FILE ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.vhd -set_global_assignment -name VHDL_FILE ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.vhd -set_global_assignment -name VHDL_FILE ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.vhd -set_global_assignment -name VHDL_FILE ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.vhd -set_global_assignment -name VHDL_FILE ip/ta2_unb2b_ddr/ta2_unb2b_ddr.vhd +set_global_assignment -name QSYS_FILE board.qsys set_global_assignment -name IP_FILE ip/board/board_reg_unb_pmbus.ip set_global_assignment -name IP_FILE ip/board/board_kernel_clk_gen.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/scripts/post_flow_pr.tcl b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/post_flow_pr.tcl similarity index 73% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/scripts/post_flow_pr.tcl rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/post_flow_pr.tcl index 568d6f7ba6d0f3d1d65635fd605611ac16271d58..4f6fa9be95f261d4dc6e9b8521a5a243e9a8991b 100755 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/scripts/post_flow_pr.tcl +++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/post_flow_pr.tcl @@ -14,7 +14,32 @@ # sole purpose of programming logic devices manufactured by Intel and sold by # Intel or its authorized distributors. Please refer to the applicable # agreement for further details. +# ########################################################################## +# Copyright 2020 +# ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ########################################################################## +# ########################################################################## +# Author: +# . Reinier vd Walle +# Purpose: +# . post-compile script for OpenCL applications +# Description: +# . " " +# ########################################################################## post_message "Running post_flow_pr.tcl script" post_message "Checking for OpenCL SDK installation, environment should have INTELFPGAOCLSDKROOT defined" diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/scripts/pre_flow_pr.tcl b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/pre_flow_pr.tcl similarity index 63% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/scripts/pre_flow_pr.tcl rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/pre_flow_pr.tcl index 7d8041bfd900f35802fef4f9505100b396fa4214..cb6dd4342ad9156b7dad6fe50dac2c6d5b40c65e 100755 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/scripts/pre_flow_pr.tcl +++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/pre_flow_pr.tcl @@ -14,7 +14,32 @@ # sole purpose of programming logic devices manufactured by Intel and sold by # Intel or its authorized distributors. Please refer to the applicable # agreement for further details. +# ########################################################################## +# Copyright 2020 +# ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +# P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ########################################################################## +# ########################################################################## +# Author: +# . Reinier vd Walle +# Purpose: +# . pre-compile script for OpenCL applications +# Description: +# . " " +# ########################################################################## post_message "Running pre-flow script" # Make sure OpenCL SDK installation exists @@ -42,19 +67,20 @@ if {[catch {set radiohdl_build $::env(RADIOHDL_BUILD_DIR)} result]} { source "$sdk_root/ip/board/bsp/opencl_bsp_util.tcl" set project_name top -set revision_name UNKNOWN +set revision_name flat +set board_name UNKNOWN -# Get revision name (from quartus(args) variable) +# Get board name (from quartus(args) variable) if { [llength $quartus(args)] > 0 } { - set revision_name [lindex $quartus(args) 0] + set board_name [lindex $quartus(args) 0] } else { - set revision_name top + set board_name ta2_unb2b_bsp } set fast_compile [::aocl_fast_compile::is_fast_compile] set device_name [::opencl_bsp::get_device_name $project_name $revision_name] - +# Make sure ############################################################################## ############################## MAIN ############################# ############################################################################## @@ -70,8 +96,28 @@ if {$revision_name eq "flat"} { post_message -type error "This BSP only supports compilation of flat revision, you are trying to compile $revision_name revision" post_message -type error "Terminating pre-flow script" exit 2 -} +} + +# Copy qsf file +if {[file exists "$::env(RADIOHDL_BUILD_DIR)/unb2b/quartus/$board_name/$board_name.qsf"] == 1} { + file copy -force $::env(RADIOHDL_BUILD_DIR)/unb2b/quartus/$board_name/$board_name.qsf radiohdl_components.qsf +} else { + post_message -type error "It seems that the BSP has not been initialized yet, please execute the following commands and try again:" + post_message -type error "quartus_config unb2b; run_qsys unb2b $board_name board.qsys" + post_message -type error "Terminating pre-flow script" + exit 2 + +} +# Copy memory initialization file +if {[file exists "$::env(RADIOHDL_BUILD_DIR)/unb2b/quartus/$board_name/onchip_memory2_0.hex"] == 1} { + file copy -force $::env(RADIOHDL_BUILD_DIR)/unb2b/quartus/$board_name/onchip_memory2_0.hex onchip_memory2_0.hex +} else { + post_message -type error "It seems that the BSP has not been initialized yet, please execute the following commands and try again:" + post_message -type error "quartus_config unb2b; run_qsys unb2b $board_name board.qsys" + post_message -type error "Terminating pre-flow script" + exit 2 +} post_message "Compiling $revision_name revision: generating and archiving board.qsys" post_message " qsys-generate -syn --family=\"Arria 10\" --part=$device_name board.qsys" diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/scripts/rbf_options_file b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/rbf_options_file similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/scripts/rbf_options_file rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/scripts/rbf_options_file diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/sw_iface.iipx b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/sw_iface.iipx similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/sw_iface.iipx rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/sw_iface.iipx diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top.qpf b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.qpf similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top.qpf rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.qpf diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top.sdc b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.sdc similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top.sdc rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.sdc diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top.vhd b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.vhd similarity index 91% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top.vhd rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.vhd index d4d23a22676ce3d9d01b708e8d45b8ba486267fa..3c62c1dbe2fa0a74007b6f83f743fec452e88fd0 100644 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top.vhd +++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top.vhd @@ -1,26 +1,36 @@ -------------------------------------------------------------------------------- --- --- Copyright (C) 2020 +-- -------------------------------------------------------------------------- +-- Copyright 2020 -- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> --- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/> -- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at -- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- http://www.apache.org/licenses/LICENSE-2.0 -- -------------------------------------------------------------------------------- - -LIBRARY IEEE, common_lib, unb2b_board_lib, technology_lib, dp_lib, tech_ddr_lib; +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- -------------------------------------------------------------------------- + +-- -------------------------------------------------------------------------- +-- Author: +-- . Reinier vd Walle +-- Purpose: +-- . Top-Level for OpenCL Board Support Package of TA2 applications +-- Description: +-- . This BSP makes several IO-channels available to the OpenCL kernel, these +-- include: +-- . 40 GbE +-- . 10 GbE +-- . ADC +-- . 1 GbE M&C +-- -------------------------------------------------------------------------- + +LIBRARY IEEE, common_lib, unb2b_board_lib, technology_lib, dp_lib, tech_ddr_lib, ta2_unb2b_40GbE_lib, ta2_unb2b_10gbe_lib, ta2_unb2b_1gbe_mc_lib, ta2_unb2b_mm_io_lib, ta2_unb2b_jesd204b_lib ; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.NUMERIC_STD.ALL; USE common_lib.common_pkg.ALL; @@ -435,7 +445,7 @@ BEGIN unb2b_board_ring_io_serial_tx_arr(3+c_ring_bus_w DOWNTO c_ring_bus_w) <= ta2_unb2b_40GbE_tx_serial_r(11 DOWNTO 8); ta2_unb2b_40GbE_rx_serial_r(11 DOWNTO 8) <= unb2b_board_ring_io_serial_rx_arr(3+c_ring_bus_w DOWNTO c_ring_bus_w); - u_ta2_unb2b_40GbE : ENTITY work.ta2_unb2b_40GbE + u_ta2_unb2b_40GbE : ENTITY ta2_unb2b_40GbE_lib.ta2_unb2b_40GbE GENERIC MAP ( g_nof_mac => c_nof_40GbE_IP ) @@ -465,7 +475,7 @@ BEGIN ta2_unb2b_10GbE_rx_serial_r(0) <= unb2b_board_front_io_serial_rx_arr(0); - u_ta2_unb2b_10GbE : ENTITY work.ta2_unb2b_10GbE + u_ta2_unb2b_10GbE : ENTITY ta2_unb2b_10GbE_lib.ta2_unb2b_10GbE GENERIC MAP ( g_nof_mac => c_nof_10GbE_IP ) @@ -491,7 +501,7 @@ BEGIN ----------------------------- -- 1GbE Monitoring & Control ----------------------------- - u_ta2_unb2b_1GbE_mc : ENTITY work.ta2_unb2b_1GbE_mc + u_ta2_unb2b_1GbE_mc : ENTITY ta2_unb2b_1GbE_mc_lib.ta2_unb2b_1GbE_mc PORT MAP ( st_clk => st_clk, st_rst => st_rst, @@ -514,7 +524,7 @@ BEGIN ----------------------------- -- Monitoring & Control UNB protocol ----------------------------- - u_ta2_unb2b_mm_io : ENTITY work.ta2_unb2b_mm_io + u_ta2_unb2b_mm_io : ENTITY ta2_unb2b_mm_io_lib.ta2_unb2b_mm_io PORT MAP ( mm_clk => mm_clk, mm_rst => mm_rst, @@ -539,7 +549,7 @@ BEGIN ---------- -- ADC ---------- - u_ta2_unb2b_jesd204b : ENTITY work.ta2_unb2b_jesd204b + u_ta2_unb2b_jesd204b : ENTITY ta2_unb2b_jesd204b_lib.ta2_unb2b_jesd204b GENERIC MAP( g_nof_streams => c_nof_ADC ) @@ -564,35 +574,35 @@ BEGIN src_in_arr => ta2_unb2b_ADC_src_in_arr ); --- ---------- --- -- DDR4 --- ---------- --- u_ta2_unb2b_ddr : ENTITY work.ta2_unb2b_ddr --- GENERIC MAP( --- g_use_MB_II => FALSE --- ) --- PORT MAP( --- kernel_clk => board_kernel_clk_clk, --- kernel_reset => i_kernel_rst, --- --- mem0_waitrequest => board_kernel_mem0_waitrequest, --- mem0_readdata => board_kernel_mem0_readdata, --- mem0_readdatavalid => board_kernel_mem0_readdatavalid, --- mem0_burstcount => board_kernel_mem0_burstcount, --- mem0_writedata => board_kernel_mem0_writedata, --- mem0_address => board_kernel_mem0_address, --- mem0_write => board_kernel_mem0_write, --- mem0_read => board_kernel_mem0_read, --- mem0_byteenable => board_kernel_mem0_byteenable, --- mem0_debugaccess => board_kernel_mem0_debugaccess, --- --- mb_I_ref_clk => MB_I_REF_CLK, --- mb_I_ref_rst => mb_I_ref_rst, --- --- mb_I_in => MB_I_IN, --- mb_I_io => MB_I_IO, --- mb_I_ou => MB_I_OU --- ); + ---------- + -- DDR4 + ---------- + --u_ta2_unb2b_ddr : ENTITY work.ta2_unb2b_ddr + --GENERIC MAP( + -- g_use_MB_II => FALSE + --) + --PORT MAP( + -- kernel_clk => board_kernel_clk_clk, + -- kernel_reset => i_kernel_rst, + + -- mem0_waitrequest => board_kernel_mem0_waitrequest, + -- mem0_readdata => board_kernel_mem0_readdata, + -- mem0_readdatavalid => board_kernel_mem0_readdatavalid, + -- mem0_burstcount => board_kernel_mem0_burstcount, + -- mem0_writedata => board_kernel_mem0_writedata, + -- mem0_address => board_kernel_mem0_address, + -- mem0_write => board_kernel_mem0_write, + -- mem0_read => board_kernel_mem0_read, + -- mem0_byteenable => board_kernel_mem0_byteenable, + -- mem0_debugaccess => board_kernel_mem0_debugaccess, + + -- mb_I_ref_clk => MB_I_REF_CLK, + -- mb_I_ref_rst => mb_I_ref_rst, + + -- mb_I_in => MB_I_IN, + -- mb_I_io => MB_I_IO, + -- mb_I_ou => MB_I_OU + --); ----------------------------------------------------------------------------- -- Freeze wrapper instantiation @@ -614,27 +624,27 @@ BEGIN board_kernel_cra_byteenable => board_kernel_cra_byteenable, board_kernel_cra_debugaccess => board_kernel_cra_debugaccess, - board_kernel_mem0_waitrequest => '0', - board_kernel_mem0_readdata => c_ones, - board_kernel_mem0_readdatavalid => '1', - board_kernel_mem0_burstcount => OPEN, - board_kernel_mem0_writedata => OPEN, - board_kernel_mem0_address => OPEN, - board_kernel_mem0_write => OPEN, - board_kernel_mem0_read => OPEN, - board_kernel_mem0_byteenable => OPEN, - board_kernel_mem0_debugaccess => OPEN, + --board_kernel_mem0_waitrequest => '0', + --board_kernel_mem0_readdata => c_ones, + --board_kernel_mem0_readdatavalid => '1', + --board_kernel_mem0_burstcount => OPEN, + --board_kernel_mem0_writedata => OPEN, + --board_kernel_mem0_address => OPEN, + --board_kernel_mem0_write => OPEN, + --board_kernel_mem0_read => OPEN, + --board_kernel_mem0_byteenable => OPEN, + --board_kernel_mem0_debugaccess => OPEN, --- board_kernel_mem0_waitrequest => board_kernel_mem0_waitrequest, --- board_kernel_mem0_readdata => board_kernel_mem0_readdata, --- board_kernel_mem0_readdatavalid => board_kernel_mem0_readdatavalid, --- board_kernel_mem0_burstcount => board_kernel_mem0_burstcount, --- board_kernel_mem0_writedata => board_kernel_mem0_writedata, --- board_kernel_mem0_address => board_kernel_mem0_address, --- board_kernel_mem0_write => board_kernel_mem0_write, --- board_kernel_mem0_read => board_kernel_mem0_read, --- board_kernel_mem0_byteenable => board_kernel_mem0_byteenable, --- board_kernel_mem0_debugaccess => board_kernel_mem0_debugaccess, + board_kernel_mem0_waitrequest => board_kernel_mem0_waitrequest, + board_kernel_mem0_readdata => board_kernel_mem0_readdata, + board_kernel_mem0_readdatavalid => board_kernel_mem0_readdatavalid, + board_kernel_mem0_burstcount => board_kernel_mem0_burstcount, + board_kernel_mem0_writedata => board_kernel_mem0_writedata, + board_kernel_mem0_address => board_kernel_mem0_address, + board_kernel_mem0_write => board_kernel_mem0_write, + board_kernel_mem0_read => board_kernel_mem0_read, + board_kernel_mem0_byteenable => board_kernel_mem0_byteenable, + board_kernel_mem0_debugaccess => board_kernel_mem0_debugaccess, board_kernel_register_mem_address => board_kernel_register_mem_address, board_kernel_register_mem_clken => board_kernel_register_mem_clken, @@ -810,7 +820,11 @@ BEGIN udp_tx_siso_arr => eth1g_udp_tx_siso_arr, udp_rx_sosi_arr => eth1g_udp_rx_sosi_arr, udp_rx_siso_arr => eth1g_udp_rx_siso_arr, - + + -- RAM scrap + ram_scrap_mosi => c_mem_mosi_rst, + ram_scrap_miso => OPEN, + -- FPGA pins -- . General CLK => CLK, diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top_components_pkg.vhd b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top_components_pkg.vhd similarity index 97% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top_components_pkg.vhd rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/top_components_pkg.vhd index a843397810444b4616efcf1543c7c5f89914075a..2196157cf8ceb144ad6c9c8876ceed3a3ee051cf 100644 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top_components_pkg.vhd +++ b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top_components_pkg.vhd @@ -1,25 +1,29 @@ -------------------------------------------------------------------------------- --- --- Copyright (C) 2020 +-- -------------------------------------------------------------------------- +-- Copyright 2020 -- ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> --- JIVE (Joint Institute for VLBI in Europe) <http://www.jive.nl/> -- P.O.Box 2, 7990 AA Dwingeloo, The Netherlands -- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. +-- Licensed under the Apache License, Version 2.0 (the "License"); +-- you may not use this file except in compliance with the License. +-- You may obtain a copy of the License at -- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see <http://www.gnu.org/licenses/>. +-- http://www.apache.org/licenses/LICENSE-2.0 -- -------------------------------------------------------------------------------- +-- Unless required by applicable law or agreed to in writing, software +-- distributed under the License is distributed on an "AS IS" BASIS, +-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +-- See the License for the specific language governing permissions and +-- limitations under the License. +-- -------------------------------------------------------------------------- +-- -------------------------------------------------------------------------- +-- Author: +-- . Reinier vd Walle +-- Purpose: +-- . VHDL package for top.vhd +-- Description: +-- . Contains components instantiated by top.vhd +-- -------------------------------------------------------------------------- LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top_post.sdc b/applications/ta2/bsp/hardware/ta2_unb2b_bsp/top_post.sdc similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/top_post.sdc rename to applications/ta2/bsp/hardware/ta2_unb2b_bsp/top_post.sdc diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/Makefile b/applications/ta2/bsp/linux64/driver/Makefile similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/Makefile rename to applications/ta2/bsp/linux64/driver/Makefile diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/README b/applications/ta2/bsp/linux64/driver/README similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/README rename to applications/ta2/bsp/linux64/driver/README diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci.c b/applications/ta2/bsp/linux64/driver/aclpci.c similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci.c rename to applications/ta2/bsp/linux64/driver/aclpci.c diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci.h b/applications/ta2/bsp/linux64/driver/aclpci.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci.h rename to applications/ta2/bsp/linux64/driver/aclpci.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_cmd.c b/applications/ta2/bsp/linux64/driver/aclpci_cmd.c similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_cmd.c rename to applications/ta2/bsp/linux64/driver/aclpci_cmd.c diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_cvp.c b/applications/ta2/bsp/linux64/driver/aclpci_cvp.c similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_cvp.c rename to applications/ta2/bsp/linux64/driver/aclpci_cvp.c diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_dma.c b/applications/ta2/bsp/linux64/driver/aclpci_dma.c similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_dma.c rename to applications/ta2/bsp/linux64/driver/aclpci_dma.c diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_dma.h b/applications/ta2/bsp/linux64/driver/aclpci_dma.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_dma.h rename to applications/ta2/bsp/linux64/driver/aclpci_dma.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_fileio.c b/applications/ta2/bsp/linux64/driver/aclpci_fileio.c similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_fileio.c rename to applications/ta2/bsp/linux64/driver/aclpci_fileio.c diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_pr.c b/applications/ta2/bsp/linux64/driver/aclpci_pr.c similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_pr.c rename to applications/ta2/bsp/linux64/driver/aclpci_pr.c diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_queue.c b/applications/ta2/bsp/linux64/driver/aclpci_queue.c similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_queue.c rename to applications/ta2/bsp/linux64/driver/aclpci_queue.c diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_queue.h b/applications/ta2/bsp/linux64/driver/aclpci_queue.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/aclpci_queue.h rename to applications/ta2/bsp/linux64/driver/aclpci_queue.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/hw_host_channel.h b/applications/ta2/bsp/linux64/driver/hw_host_channel.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/hw_host_channel.h rename to applications/ta2/bsp/linux64/driver/hw_host_channel.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/hw_pcie_constants.h b/applications/ta2/bsp/linux64/driver/hw_pcie_constants.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/hw_pcie_constants.h rename to applications/ta2/bsp/linux64/driver/hw_pcie_constants.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/hw_pcie_dma.h b/applications/ta2/bsp/linux64/driver/hw_pcie_dma.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/hw_pcie_dma.h rename to applications/ta2/bsp/linux64/driver/hw_pcie_dma.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/make_all.sh b/applications/ta2/bsp/linux64/driver/make_all.sh similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/make_all.sh rename to applications/ta2/bsp/linux64/driver/make_all.sh diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/pcie_linux_driver_exports.h b/applications/ta2/bsp/linux64/driver/pcie_linux_driver_exports.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/pcie_linux_driver_exports.h rename to applications/ta2/bsp/linux64/driver/pcie_linux_driver_exports.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/version.h b/applications/ta2/bsp/linux64/driver/version.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/driver/version.h rename to applications/ta2/bsp/linux64/driver/version.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/lib/libaltera_a10_ref_mmd.so b/applications/ta2/bsp/linux64/lib/libaltera_a10_ref_mmd.so similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/lib/libaltera_a10_ref_mmd.so rename to applications/ta2/bsp/linux64/lib/libaltera_a10_ref_mmd.so diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/diagnose b/applications/ta2/bsp/linux64/libexec/diagnose similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/diagnose rename to applications/ta2/bsp/linux64/libexec/diagnose diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/flash b/applications/ta2/bsp/linux64/libexec/flash similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/flash rename to applications/ta2/bsp/linux64/libexec/flash diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/flash.pl b/applications/ta2/bsp/linux64/libexec/flash.pl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/flash.pl rename to applications/ta2/bsp/linux64/libexec/flash.pl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/install b/applications/ta2/bsp/linux64/libexec/install similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/install rename to applications/ta2/bsp/linux64/libexec/install diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/program b/applications/ta2/bsp/linux64/libexec/program similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/program rename to applications/ta2/bsp/linux64/libexec/program diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/uninstall b/applications/ta2/bsp/linux64/libexec/uninstall similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/linux64/libexec/uninstall rename to applications/ta2/bsp/linux64/libexec/uninstall diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/scripts/find_jtag_cable.tcl b/applications/ta2/bsp/scripts/find_jtag_cable.tcl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/scripts/find_jtag_cable.tcl rename to applications/ta2/bsp/scripts/find_jtag_cable.tcl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/Makefile b/applications/ta2/bsp/source/Makefile similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/Makefile rename to applications/ta2/bsp/source/Makefile diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/Makefile.common b/applications/ta2/bsp/source/Makefile.common similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/Makefile.common rename to applications/ta2/bsp/source/Makefile.common diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/Makefile b/applications/ta2/bsp/source/host/Makefile similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/Makefile rename to applications/ta2/bsp/source/host/Makefile diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/Makefile b/applications/ta2/bsp/source/host/mmd/Makefile similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/Makefile rename to applications/ta2/bsp/source/host/mmd/Makefile diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie.cpp b/applications/ta2/bsp/source/host/mmd/acl_pcie.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie.cpp rename to applications/ta2/bsp/source/host/mmd/acl_pcie.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie.h b/applications/ta2/bsp/source/host/mmd/acl_pcie.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie.h rename to applications/ta2/bsp/source/host/mmd/acl_pcie.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_config.cpp b/applications/ta2/bsp/source/host/mmd/acl_pcie_config.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_config.cpp rename to applications/ta2/bsp/source/host/mmd/acl_pcie_config.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_config.h b/applications/ta2/bsp/source/host/mmd/acl_pcie_config.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_config.h rename to applications/ta2/bsp/source/host/mmd/acl_pcie_config.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_debug.cpp b/applications/ta2/bsp/source/host/mmd/acl_pcie_debug.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_debug.cpp rename to applications/ta2/bsp/source/host/mmd/acl_pcie_debug.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_debug.h b/applications/ta2/bsp/source/host/mmd/acl_pcie_debug.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_debug.h rename to applications/ta2/bsp/source/host/mmd/acl_pcie_debug.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_device.cpp b/applications/ta2/bsp/source/host/mmd/acl_pcie_device.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_device.cpp rename to applications/ta2/bsp/source/host/mmd/acl_pcie_device.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_device.h b/applications/ta2/bsp/source/host/mmd/acl_pcie_device.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_device.h rename to applications/ta2/bsp/source/host/mmd/acl_pcie_device.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_dma.h b/applications/ta2/bsp/source/host/mmd/acl_pcie_dma.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_dma.h rename to applications/ta2/bsp/source/host/mmd/acl_pcie_dma.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_dma_linux.cpp b/applications/ta2/bsp/source/host/mmd/acl_pcie_dma_linux.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_dma_linux.cpp rename to applications/ta2/bsp/source/host/mmd/acl_pcie_dma_linux.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_dma_linux.h b/applications/ta2/bsp/source/host/mmd/acl_pcie_dma_linux.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_dma_linux.h rename to applications/ta2/bsp/source/host/mmd/acl_pcie_dma_linux.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_dma_windows.cpp b/applications/ta2/bsp/source/host/mmd/acl_pcie_dma_windows.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_dma_windows.cpp rename to applications/ta2/bsp/source/host/mmd/acl_pcie_dma_windows.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_dma_windows.h b/applications/ta2/bsp/source/host/mmd/acl_pcie_dma_windows.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_dma_windows.h rename to applications/ta2/bsp/source/host/mmd/acl_pcie_dma_windows.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_hostch.cpp b/applications/ta2/bsp/source/host/mmd/acl_pcie_hostch.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_hostch.cpp rename to applications/ta2/bsp/source/host/mmd/acl_pcie_hostch.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_hostch.h b/applications/ta2/bsp/source/host/mmd/acl_pcie_hostch.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_hostch.h rename to applications/ta2/bsp/source/host/mmd/acl_pcie_hostch.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_mm_io.cpp b/applications/ta2/bsp/source/host/mmd/acl_pcie_mm_io.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_mm_io.cpp rename to applications/ta2/bsp/source/host/mmd/acl_pcie_mm_io.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_mm_io.h b/applications/ta2/bsp/source/host/mmd/acl_pcie_mm_io.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_mm_io.h rename to applications/ta2/bsp/source/host/mmd/acl_pcie_mm_io.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_timer.cpp b/applications/ta2/bsp/source/host/mmd/acl_pcie_timer.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_timer.cpp rename to applications/ta2/bsp/source/host/mmd/acl_pcie_timer.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_timer.h b/applications/ta2/bsp/source/host/mmd/acl_pcie_timer.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/acl_pcie_timer.h rename to applications/ta2/bsp/source/host/mmd/acl_pcie_timer.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/lib/libpkg_editor.a b/applications/ta2/bsp/source/host/mmd/lib/libpkg_editor.a similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/host/mmd/lib/libpkg_editor.a rename to applications/ta2/bsp/source/host/mmd/lib/libpkg_editor.a diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/include/aocl_mmd.h b/applications/ta2/bsp/source/include/aocl_mmd.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/include/aocl_mmd.h rename to applications/ta2/bsp/source/include/aocl_mmd.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/include/pkg_editor.h b/applications/ta2/bsp/source/include/pkg_editor.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/include/pkg_editor.h rename to applications/ta2/bsp/source/include/pkg_editor.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/util/Makefile b/applications/ta2/bsp/source/util/Makefile similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/util/Makefile rename to applications/ta2/bsp/source/util/Makefile diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/Makefile b/applications/ta2/bsp/source/util/diagnostic/Makefile similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/Makefile rename to applications/ta2/bsp/source/util/diagnostic/Makefile diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/acl_aligned.cpp b/applications/ta2/bsp/source/util/diagnostic/acl_aligned.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/acl_aligned.cpp rename to applications/ta2/bsp/source/util/diagnostic/acl_aligned.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/acl_aligned.h b/applications/ta2/bsp/source/util/diagnostic/acl_aligned.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/acl_aligned.h rename to applications/ta2/bsp/source/util/diagnostic/acl_aligned.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/main.cpp b/applications/ta2/bsp/source/util/diagnostic/main.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/main.cpp rename to applications/ta2/bsp/source/util/diagnostic/main.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/ocl.cpp b/applications/ta2/bsp/source/util/diagnostic/ocl.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/ocl.cpp rename to applications/ta2/bsp/source/util/diagnostic/ocl.cpp diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/ocl.h b/applications/ta2/bsp/source/util/diagnostic/ocl.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/util/diagnostic/ocl.h rename to applications/ta2/bsp/source/util/diagnostic/ocl.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/util/reprogram/Makefile b/applications/ta2/bsp/source/util/reprogram/Makefile similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/util/reprogram/Makefile rename to applications/ta2/bsp/source/util/reprogram/Makefile diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/util/reprogram/board.h b/applications/ta2/bsp/source/util/reprogram/board.h similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/util/reprogram/board.h rename to applications/ta2/bsp/source/util/reprogram/board.h diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/source/util/reprogram/reprogram.cpp b/applications/ta2/bsp/source/util/reprogram/reprogram.cpp similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/source/util/reprogram/reprogram.cpp rename to applications/ta2/bsp/source/util/reprogram/reprogram.cpp diff --git a/applications/ta2/designs/ta2_unb2b_qsfp_demo/Makefile b/applications/ta2/designs/ta2_unb2b_qsfp_demo/Makefile index 81968dcdd763a837a867662a3622ef1ebd9e8153..bd3834b0e33bb0faa2fe9679b140fbc5716c69b7 100644 --- a/applications/ta2/designs/ta2_unb2b_qsfp_demo/Makefile +++ b/applications/ta2/designs/ta2_unb2b_qsfp_demo/Makefile @@ -1,3 +1,35 @@ +###################### +### SETUP ### +###################### +ifeq ($(VERBOSE),1) +ECHO := +else +ECHO := @ +endif + +# Where is the Intel(R) FPGA SDK for OpenCL(TM) software? +ifeq ($(wildcard $(INTELFPGAOCLSDKROOT)),) +$(error Set INTELFPGAOCLSDKROOT to the root directory of the Intel(R) FPGA SDK for OpenCL(TM) software installation) +endif +ifeq ($(wildcard $(INTELFPGAOCLSDKROOT)/host/include/CL/opencl.h),) +$(error Set INTELFPGAOCLSDKROOT to the root directory of the Intel(R) FPGA SDK for OpenCL(TM) software installation.) +endif + +########################### +### Basic configuration ### +########################### + +# Name of unb2b BSP +UNB2B_BSP=ta2_unb2b_bsp + +# Compile directory +BUILDDIR=$(RADIOHDL_BUILD_DIR)/unb2b/OpenCL/$(lastword $(subst /, ,$(abspath $(dir $(lastword $(MAKEFILE_LIST)))))) + + +############################## +### Advanced Configuration ### +############################## + CXX= g++ #-mcmodel=medium CXXFLAGS= -std=c++11 -mavx2 -g -O3 -fopenmp #-DCL_ALTERA AOC= aoc @@ -6,44 +38,60 @@ AOCFLAGS= -v -g AOCRFLAGS+= -report AOCRFLAGS+= -opt-arg=-allow-io-channel-autorun-kernel #AOCRFLAGS+= -board=p385a_min_ax115_1710240 -AOCOFLAGS+= -board=unb2b +AOCOFLAGS+= -board=$(UNB2B_BSP) -#AOCOFLAGS+= -board=p385a_min_ax115 -#AOCOFLAGS+= -board=p520_max_sg280l -#AOCOFLAGS= -board=a10gx_hostch -#AOCRFLAGS+= -board=s10gx_ea AOCOFLAGS+= -I$(INTELOCLSDKROOT)/include/kernel_headers -#AOCFLAGS= -v -g -cl-opt-disable -cl-fast-relaxed-math -cl-mad-enable -fp-relaxed -report -board=a10gx_hostch -#AOCXFLAGS+= -high-effort -#AOCFLAGS+= -fast-compile -#AOCRFLAGS+= -profile=all -#AOCOFLAGS+= -march=emulator -DEMULATOR -#AOCRFLAGS+= -emulator-channel-depth-model=strict -#AOCXFLAGS+= -bsp-flow=base AOCXFLAGS+= -bsp-flow=flat ifneq ("$(SEED)", "") AOCXFLAGS+= -seed=$(SEED) endif INCLUDES= $(shell aocl compile-config) #-I.. LDFLAGS= $(shell aocl link-config) #-ldl -lacl_emulator_kernel_rt #-lbfd -#INCLUDES= -I/var/scratch/package/altera_pro/18.0.0.219/hld/host/include -#LDFLAGS= -L/cm/shared/package/altera_pro/18.0.0.219/hld/board/nalla_pcie/linux64/lib -L/var/scratch/package/altera_pro/18.0.0.219/hld/host/linux64/lib -Wl,--no-as-needed -lalteracl -lnalla_pcie_mmd -lelf -#TMPDIR= /tmp/unb2b_LED_Demo_base -TMPDIR= $(RADIOHDL_BUILD_DIR)/unb2b/OpenCL/$(lastword $(subst /, ,$(dir $(abspath $1)))) CXXFLAGS+= $(INCLUDES) +### Emulator configuration +# Emulation Compilation flags +ifeq ($(DEBUG),1) +EMUCXXFLAGS += -g +else +EMUCXXFLAGS += -O2 +endif -CXXSOURCES= GridderTest.cc -CXXSOURCES= DegridderTest.cc -#CXXSOURCES+= FFT32Test.cc -#CXXSOURCES= IOChannelTest.cc - - -q: -OBJECTS= $(CXXSOURCES:%.cc=%.o) -DEPENDENCIES= $(CXXSOURCES:%.cc=%.d) -EXECUTABLES= $(CXXSOURCES:%.cc=%) - +# Target +TARGET := host +TARGET_DIR := $(BUILDDIR)/bin + +# Directories +INC_DIRS := host/lib/common/inc +LIB_DIRS := + +# Files +INCS := $(wildcard ) +SRCS := $(wildcard host/src/*.cpp host/lib/common/src/*.cpp host/lib/common/src/AOCLUtils/*.cpp) +LIBS := rt pthread + +### Emulator compilation +# Make it all! +%: %.cl $(TARGET_DIR)/$(TARGET) + (unset DISPLAY; mkdir -p $(BUILDDIR)/$* && $(AOC) -march=emulator -DEMULATOR $< -o $(TARGET_DIR)/$@.aocx -legacy-emulator $(AOCOFLAGS) $(AOCRFLAGS)) + +# Host executable target. +$(TARGET_DIR)/$(TARGET) : Makefile $(SRCS) $(INCS) $(TARGET_DIR) + $(ECHO)$(CXX) $(CPPFLAGS) $(CXXFLAGS) -fPIC $(foreach D,$(INC_DIRS),-I$D) \ + $(INCLUDES) $(SRCS) $(LDFLAGS) \ + $(foreach D,$(LIB_DIRS),-L$D) \ + $(foreach L,$(LIBS),-l$L) \ + -o $(TARGET_DIR)/$(TARGET) + +$(TARGET_DIR) : + $(ECHO)mkdir -p $(TARGET_DIR) + +# Standard make targets +clean : + $(ECHO)rm -f $(TARGET_DIR)/$(TARGET) + + +### Device compilation %.d: %.cc -$(CXX) $(CXXFLAGS) -MM -MT $@ -MT ${@:%.d=%.o} $< -o $@ @@ -51,53 +99,22 @@ EXECUTABLES= $(CXXSOURCES:%.cc=%) $(CXX) -c $(CXXFLAGS) -o $@ $< %.aoco: %.cl - (unset DISPLAY; mkdir -p $(TMPDIR)/$* && cp -a $< $(TMPDIR)/$* && cd $(TMPDIR)/$* && $(AOC) -c $(AOCOFLAGS) $< && cd - && cp -a $(TMPDIR)/$*/$@ .) + (unset DISPLAY; mkdir -p $(BUILDDIR)/$* && cp -a $< $(BUILDDIR)/$* && cd $(BUILDDIR)/$* && $(AOC) -c $(AOCOFLAGS) $< && cd - && cp -a $(BUILDDIR)/$*/$@ .) %.aocr: %.aoco - (unset DISPLAY; cp -a $< $(TMPDIR)/$* && cd $(TMPDIR)/$* && $(AOC) -rtl $(AOCRFLAGS) $< && cd - && cp -a $(TMPDIR)/$*/$@ .) + (unset DISPLAY; cp -a $< $(BUILDDIR)/$* && cd $(BUILDDIR)/$* && $(AOC) -rtl $(AOCRFLAGS) $< && cd - && cp -a $(BUILDDIR)/$*/$@ .) %.aocx: %.aocr - (unset DISPLAY; cp -a $< $(TMPDIR)/$* && cd $(TMPDIR)/$* && $(AOC) $(AOCXFLAGS) $< && cd - && cp -a $(TMPDIR)/$*/$@ .) + (unset DISPLAY; cp -a $< $(BUILDDIR)/$* && cd $(BUILDDIR)/$* && $(AOC) $(AOCXFLAGS) $< && cd - && cp -a $(BUILDDIR)/$*/$@ .) %.sof: %.aocx - (unset DISPLAY; cp -a $(TMPDIR)/$*/flat.sof ./$@) + (unset DISPLAY; cp -a $(BUILDDIR)/$*/flat.sof ./$@) %.rbf: %.sof - (unset DISPLAY; cp -a $(TMPDIR)/$*/flat.rbf ./$@) - -#temp test -#%.aocx: %.aoco -# (unset DISPLAY; cp -a $< $(TMPDIR)/$* && cd $(TMPDIR)/$* && $(AOC) -rtl $(AOCRFLAGS) $(AOCXFLAGS) $< && cd - && cp -a $(TMPDIR)/$*/$@ .) - - -#%.build: -# test -f $@ || (unset DISPLAY; echo `hostname` && rm -rf $(TMPDIR)/$* && cp -a $(TMPDIR)/`basename $* $(lastword $(subst _, ,$*))`template $(TMPDIR)/$* && cd $(TMPDIR)/$* && mv *.aoco $*.aoco && mv *.aocr $*.aocr && mv *.cl $*.cl && mv *template $* && time $(AOC) $(AOCXFLAGS) -seed=$(lastword $(subst _, ,$*)) $*.aocr && fgrep MHz $*/quartus_sh_compile.log|tail -n 1) >$@ 2>&1 + (unset DISPLAY; cp -a $(BUILDDIR)/$*/flat.rbf ./$@) %.build: - test -f $@ || test -f /tmp/stop || (echo `hostname` && cp `basename $* _$(lastword $(subst _, ,$*))`.cl $*.cl && SEED=$(lastword $(subst _, ,$*)) time make -j1 $*.aocx && fgrep MHz $(TMPDIR)/$*/$*/quartus_sh_compile.log|tail -n 1) >$@ 2>&1 - - -all:: $(EXECUTABLES) + test -f $@ || test -f /tmp/stop || (echo `hostname` && cp `basename $* _$(lastword $(subst _, ,$*))`.cl $*.cl && SEED=$(lastword $(subst _, ,$*)) time make -j1 $*.aocx && fgrep MHz $(BUILDDIR)/$*/$*/quartus_sh_compile.log|tail -n 1) >$@ 2>&1 -GridderTest: GridderTest.o - $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ -DegridderTest: DegridderTest.o - $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ - -FFT32Test: FFT32Test.o - $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ - -IOChannelTest: IOChannelTest.o - $(CXX) $(CXXFLAGS) $^ $(LDFLAGS) -o $@ - -clean:: - $(RM) a.out $(DEPENDENCIES) $(OBJECTS) - -sleep.%:: - $(subst ., ,$@) - -ifeq (0, $(words $(findstring $(MAKECMDGOALS), clean))) --include $(DEPENDENCIES) -endif diff --git a/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/lib/common/inc/common.h b/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/lib/common/inc/common.h new file mode 100644 index 0000000000000000000000000000000000000000..d16ade9618880b8bba4bfcbd42b218f6efb69773 --- /dev/null +++ b/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/lib/common/inc/common.h @@ -0,0 +1,48 @@ +#include <iostream> +#include <sstream> +#include <fstream> +#include <iomanip> + +#define CL_HPP_ENABLE_EXCEPTIONS +#define CL_HPP_MINIMUM_OPENCL_VERSION 120 +#define CL_HPP_TARGET_OPENCL_VERSION 120 +#define CL_HPP_ENABLE_PROGRAM_CONSTRUCTION_FROM_ARRAY_COMPATIBILITY +#include <CL/cl2.hpp> + +void init( + cl::Context &context, + std::vector<cl::Device> &devices); + +void print_platform( + cl::Platform &platform); + +void print_device( + cl::Device &device, + bool marker = false); + +std::string get_source( + std::string& filename); + +std::string get_flags(); + +cl::Program compile_program( + cl::Context& context, + cl::Device& device, + std::string& source); + +void write_source( + std::string& source, + std::string& filename); + +cl::Program get_program( + cl::Context& context, + cl::Device& device, + std::string& filename); + +cl::Kernel get_kernel( + cl::Program& program, + std::string& name); + +double compute_runtime( + cl::Event& start, + cl::Event& end); diff --git a/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/lib/common/readme.css b/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/lib/common/readme.css new file mode 100644 index 0000000000000000000000000000000000000000..ce1c649289c93957c5eeefe2dec8a7b9d8b7d36a --- /dev/null +++ b/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/lib/common/readme.css @@ -0,0 +1,261 @@ +/* +Copyright (C) 2013-2018 Altera Corporation, San Jose, California, USA. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to +whom the Software is furnished to do so, subject to the following conditions: +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +This agreement shall be governed in all respects by the laws of the State of California and +by the laws of the United States of America. +*/ + +body { + margin: 0 1em 1em 1em; + font-family: sans-serif; +} +ul { + list-style-type: square; +} +pre, code, kbd, samp, tt { + font-family: monospace, sans-serif; + font-size: 1em; +} + +h1 { + font-size: 200%; + color: #fff; + background-color: #0067a6; + margin: 0 -0.5em; + padding: 0.25em 0.5em; +} +h1 .preheading { + font-size: 40%; + font-weight: normal; +} +h2 { + font-size: 125%; + background-color: #bae5ff; + margin: 1.5em -0.8em 0 -0.8em; + padding: 0.2em 0.8em; +} +h3 { + margin-top: 1.5em; + font-size: 100%; + border-bottom: 1px dotted #000; +} + +table { + border: 2px solid #0067a6; + border-collapse: collapse; +} +th { + border-bottom: 1px solid #0067a6; + border-left: 1px dotted #0067a6; + border-right: 1px dotted #0067a6; + background-color: #bae5ff; + padding: 0.3em; + font-size: 90%; +} +td { + padding: 0.3em; + border: 1px dotted #0067a6; +} + +table.reqs { + margin: 0 auto; +} +table.reqs td { + white-space: nowrap; + text-align: center; +} +table.reqs td:first-child, +table.reqs tr:first-child th:first-child { + text-align: left; +} +table.reqs td.req { + background-color: #b3ef71; + font-size: 150%; + padding: 0 0.3em; +} +table.reqs td.req .either { + font-size: 50%; +} +table.reqs td.unsupported { + white-space: normal; + background-color: #ccc; + max-width: 20em; +} +table.reqs a.note { + text-decoration: none; +} +ol.req-notes > li { + margin-bottom: 0.75em; +} + +table.history { + margin: 0 auto; +} +table.history td { + text-align: center; + vertical-align: top; +} +table.history .changes { + text-align: left; +} +table.history tbody tr:first-child td { + background-color: #b3ef71; +} +table.history ul { + margin: 0; + padding-left: 1em; +} + +table.pkg-contents { + margin: 0 auto; +} +table.pkg-contents th, +table.pkg-contents td { + text-align: left; + vertical-align: top; +} +table.pkg-contents td.path { + font-family: monospace, sans-serif; + font-size: 1em; +} +table.pkg-contents tr.highlight td { + background-color: #ffc; + font-weight: bold; + color: #000; +} +table.pkg-contents td p:first-child { + margin-top: 0; +} +table.pkg-contents td p:last-child { + margin-bottom: 0; +} + +table.parameters { + margin-left: 3em; + margin-right: 3em; + font-family: monospace, sans-serif; + font-size: 1em; +} +table.parameters th, +table.parameters td { + font-family: sans-serif; + text-align: center; + vertical-align: top; +} +table.parameters .name, +table.parameters .desc { + text-align: left; +} +table.parameters .name { + white-space: nowrap; +} +table.parameters td.name, +table.parameters td.default { + font-family: monospace, sans-serif; + font-size: 1em; +} +table.parameters ul { + margin-top: 0; +} +table.parameters td ul:last-child { + margin-bottom: 0; +} + +table.indent { + margin-left: 3em; +} + +.doc .title { + background-color: #eee; + padding: 0.35em; + margin-bottom: 0.5em; +} +.doc .title a { + font-weight: bold; +} +.doc .desc { + margin-left: 2em; + margin-right: 2em; +} + +.left { + text-align: left; +} +.center { + text-align: center; +} +.right { + text-align: right; +} + +.mono { + font-family: monospace, sans-serif; + font-size: 1em; +} +.highlight { + font-weight: bold; + color: #0067a6; +} +.nowrap { + white-space: nowrap; +} + +.command { + font-family: monospace, sans-serif; + font-size: 1em; + margin: 0 3em; + background-color: #ffc; + border: 1px solid #aaa; + padding: 0.5em 1em; +} +.console-output, +.code-block { + display: block; + font-family: monospace, sans-serif; + font-size: 1em; + margin: 0 3em; + background-color: #fff; + border: 1px solid #aaa !important; + padding: 1.8em 1em 0.5em 1em !important; + position: relative; +} +.console-output .heading, +.code-block .heading { + position: absolute; + left: 0; + top: 0; + width: 100%; + font-size: 80%; + text-transform: uppercase; + background-color: #e8e8e8; + padding: 0.3125em 0; + border-bottom: 1px dotted #888; +} +.console-output .heading span, +.code-block .heading span { + padding: 0 1.25em; +} +.not-released { + font-weight: bold; + color: red; +} +.license, +.trademark { + font-size: 80%; +} diff --git a/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/lib/common/src/common.cpp b/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/lib/common/src/common.cpp new file mode 100644 index 0000000000000000000000000000000000000000..928b8534b95239c6fa0a29f27640984e5605de17 --- /dev/null +++ b/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/lib/common/src/common.cpp @@ -0,0 +1,189 @@ +#include "common.h" + +using namespace std; + +ostream &os = clog; + +void init( + cl::Context &context, + vector<cl::Device> &devices) +{ + vector<cl::Platform> platforms; + cl::Platform::get(&platforms); + + // The selected device + int i = 0; + const char *platform_name = getenv("PLATFORM"); + + if (platform_name == 0) + platform_name = getenv("CL_CONTEXT_EMULATOR_DEVICE_INTELFPGA") ? "Intel(R) FPGA Emulation Platform for OpenCL(TM)" : "Intel(R) FPGA SDK for OpenCL(TM)"; + + os << ">>> OpenCL environment: " << endl; + + // Iterate all platforms + for (cl::Platform &platform : platforms) { + print_platform(platform); + bool selected = platform.getInfo<CL_PLATFORM_NAME>() == platform_name; + + // Get devices for the current platform + vector<cl::Device> devices_; + platform.getDevices(CL_DEVICE_TYPE_ALL, &devices_); + + // Iterate all devices + for (cl::Device &device : devices_) { + if (true)//(selected) + devices.push_back(device); + + print_device(device, selected); + i++; + } + } + os << endl; + + if (devices.size() == 0) { + cerr << "Could not find any device in platform " << platform_name << endl; + exit(EXIT_FAILURE); + } + + context = cl::Context(devices); +} + +void print_platform( + cl::Platform &platform) +{ + os << ">>> Platform: " << endl; + os << "Name : " << platform.getInfo<CL_PLATFORM_NAME>() << endl; + os << "Version : " << platform.getInfo<CL_PLATFORM_VERSION>() << endl; + os << "Extensions : " << platform.getInfo<CL_PLATFORM_EXTENSIONS>() << endl; + os << endl; +} + +void print_device( + cl::Device &device, + bool marker) +{ + os << ">>> Device: "; + if (marker) os << " (selected)"; + os << endl; + os << "Name : " << device.getInfo<CL_DEVICE_NAME>() << endl; + os << "Driver version : " << device.getInfo<CL_DRIVER_VERSION>() << endl; + os << "Device version : " << device.getInfo<CL_DEVICE_VERSION>() << endl; + os << "Compute units : " << device.getInfo<CL_DEVICE_MAX_COMPUTE_UNITS>() << endl; + os << "Clock frequency : " << device.getInfo<CL_DEVICE_MAX_CLOCK_FREQUENCY>() << " MHz" << endl; + os << "Global memory : " << device.getInfo<CL_DEVICE_GLOBAL_MEM_SIZE>() * 1e-9 << " Gb" << endl; + os << "Local memory : " << device.getInfo<CL_DEVICE_LOCAL_MEM_SIZE>() * 1e-6 << " Mb" << endl; + os << endl; +} + +string get_source( + string& filename) +{ + // Source directory + string srcdir = "./cl"; + + // All helper files to include in build + vector<string> helper_files; + helper_files.push_back("types.cl"); + helper_files.push_back("math.cl"); + + // Store helper files in string + stringstream source_helper_; + + for (int i = 0; i < helper_files.size(); i++) { + // Get source filename + stringstream source_file_name_; + source_file_name_ << srcdir << "/" << helper_files[i]; + string source_file_name = source_file_name_.str(); + + // Read source from file + ifstream source_file(source_file_name.c_str()); + string source(istreambuf_iterator<char>(source_file), + (istreambuf_iterator<char>())); + source_file.close(); + + // Update source helper stream + source_helper_ << source; + } + + string source_helper = source_helper_.str(); + + // Get source filename + stringstream source_file_name_; + source_file_name_ << srcdir << "/" << filename; + string source_file_name = source_file_name_.str(); + + // Read kernel source from file + ifstream source_file(source_file_name.c_str()); + string source_kernel( + istreambuf_iterator<char>(source_file), + (istreambuf_iterator<char>())); + source_file.close(); + + // Construct full source file + stringstream full_source; + full_source << source_helper; + full_source << source_kernel; + + return full_source.str(); +} + +string get_flags() +{ + return string("-cl-fast-relaxed-math"); +} + +void write_source( + string& source, + string& filename) +{ + cout << ">>> Writing source to: " << filename << endl + << endl; + ofstream source_output; + source_output.open(filename, ofstream::out); + source_output << source; + source_output.close(); +} + +cl::Program get_program( + cl::Context& context, + cl::Device& device, + string& filename) +{ + os << ">>> Loading program from binary: " << filename << endl; + try { + ifstream ifs(filename, ios::in | ios::binary); + string str((istreambuf_iterator<char>(ifs)), istreambuf_iterator<char>()); + cl::Program::Binaries binaries(1, std::make_pair(str.c_str(), str.length())); + vector<cl::Device> devices; + devices.push_back(device); + os << endl; + return cl::Program(context, devices, binaries); + } catch (cl::Error& error) { + cerr << "Loading binary failed: " << error.what() << endl; + exit(EXIT_FAILURE); + } +} + +cl::Kernel get_kernel( + cl::Program& program, + string& name) +{ + os << ">>> Loading kernel: " << name << endl; + try { + os << endl; + return cl::Kernel(program, name.c_str()); + } catch (cl::Error& error) { + cerr << "Loading kernel failed: " << error.what() << endl; + exit(EXIT_FAILURE); + } +} + +double compute_runtime( + cl::Event& start, + cl::Event& end) +{ + double runtime = 0; + runtime -= start.getProfilingInfo<CL_PROFILING_COMMAND_START>(); + runtime += end.getProfilingInfo<CL_PROFILING_COMMAND_START>(); + return runtime * 1e-9; +} diff --git a/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/src/main.cpp b/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/src/main.cpp new file mode 100644 index 0000000000000000000000000000000000000000..0aa76d704dba9240d636241dca85661dd66bd227 --- /dev/null +++ b/applications/ta2/designs/ta2_unb2b_qsfp_demo/host/src/main.cpp @@ -0,0 +1,143 @@ +/* ************************************************************************* +* Copyright 2020 +* ASTRON (Netherlands Institute for Radio Astronomy) <http://www.astron.nl/> +* P.O.Box 2, 7990 AA Dwingeloo, The Netherlands +* +* Licensed under the Apache License, Version 2.0 (the "License"); +* you may not use this file except in compliance with the License. +* You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, software +* distributed under the License is distributed on an "AS IS" BASIS, +* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +* See the License for the specific language governing permissions and +* limitations under the License. +* *********************************************************************** */ + +/* ************************************************************************* +* Author: +* . Reinier vd Walle +* Purpose: +* . Test the ta2_unb2b_qsfp_demo OpenCL application in emulator +* Description: +* . Run: -> make ta2_unb2b_qsfp_demo +* . Navigate to -> cd $RADIOHDL_WORK/unb2b/OpenCL/ta2_unb2b_qsfp_demo/bin +* . Execute -> CL_CONTEXT_EMULATOR_DEVICE_INTELFPGA=1 ./host +* *********************************************************************** */ +#include <CL/cl_ext_intelfpga.h> +#include <iostream> +#include <fstream> +#include <vector> +#include "common.h" + +using namespace std; +int main(int argc, char **argv) +{ + if (argc > 2) { + cerr << "usage: " << argv[0] << " [ta2_unb2b_qsfp_demo.aocx]" << endl; + exit(1); + } + + // Initialize OpenCL + cl::Context context; + vector<cl::Device> devices; + init(context, devices); + cl::Device &device = devices[0]; + + // Get program + string filename_bin = string(argc == 2 ? argv[1] : "ta2_unb2b_qsfp_demo.aocx"); + cl::Program program = get_program(context, device, filename_bin); + + + // Setup command queues + vector<cl::CommandQueue> queues(2); + + for (cl::CommandQueue &queue : queues) { + queue = cl::CommandQueue(context, device, CL_QUEUE_PROFILING_ENABLE); + } + + cl::Event computeDoneA; + cl::Event computeDoneB; + + // Setup FPGA kernels + cl::Kernel writer40gbeKernel(program, "writer_40gbe"); + cl::Kernel writer10gbeKernel(program, "writer_10gbe"); + + // Run FPGA kernels + clog << ">>> Run fpga" << endl; + try { + queues[0].enqueueTask(writer40gbeKernel, nullptr, &computeDoneA); + queues[1].enqueueTask(writer10gbeKernel, nullptr, &computeDoneB); + + + computeDoneA.wait(); + cl_ulong start = computeDoneA.getProfilingInfo<CL_PROFILING_COMMAND_START>(); + cl_ulong stop = computeDoneA.getProfilingInfo<CL_PROFILING_COMMAND_END>(); + + double milliseconds = (stop - start) / 1e6; + cout << "runtime 40GbE= " << milliseconds << " ms, " << endl; + + computeDoneB.wait(); + start = computeDoneB.getProfilingInfo<CL_PROFILING_COMMAND_START>(); + stop = computeDoneB.getProfilingInfo<CL_PROFILING_COMMAND_END>(); + + milliseconds = (stop - start) / 1e6; + cout << "runtime 10GbE= " << milliseconds << " ms, " << endl; + + } catch (cl::Error &error) { + cerr << "Error launching kernel: " << error.what() << endl; + exit(EXIT_FAILURE); + } + + +// process 40 GbE output, removing the flag data + const string inputFileA = "kernel_output_40GbE"; + + ifstream fileA(inputFileA); + ostringstream ssA; + ssA << fileA.rdbuf(); + const string& sA = ssA.str(); + vector<char> vecA(sA.begin(), sA.end()); + + // remove flag data + for (size_t i=32; i<vecA.size(); i+=32){ + vecA.erase(vecA.begin()+i); + } + +// process 10GbE output, removing the flag data + const string inputFileB = "kernel_output_10GbE"; + + ifstream fileB(inputFileB); + ostringstream ssB; + ssB << fileB.rdbuf(); + const string& sB = ssB.str(); + vector<char> vecB(sB.begin(), sB.end()); + + // remove flag data + for (size_t i=8; i<vecB.size(); i+=8){ + vecB.erase(vecB.begin()+i); + } + +// Verify that both outputs are the same + if (vecA == vecB) + { + cout << "PASSED" << endl; + } else { + cout << "FAILED: Data from QSFP outputs do not match!" << endl; + } + +// Write clean outputs to file +#if 0 + ofstream output_fileA("clean_kernel_output_40GbE.txt"); + ostream_iterator<char> output_iteratorA(output_fileA, ""); + copy(vecA.begin(), vecA.end(), output_iteratorA); + + ofstream output_fileB("clean_kernel_output_10GbE.txt"); + ostream_iterator<char> output_iteratorB(output_fileB, ""); + copy(vecB.begin(), vecB.end(), output_iteratorB); +#endif + + return EXIT_SUCCESS; +} diff --git a/applications/ta2/designs/ta2_unb2b_qsfp_demo/qsfp_demo.cl b/applications/ta2/designs/ta2_unb2b_qsfp_demo/ta2_unb2b_qsfp_demo.cl similarity index 99% rename from applications/ta2/designs/ta2_unb2b_qsfp_demo/qsfp_demo.cl rename to applications/ta2/designs/ta2_unb2b_qsfp_demo/ta2_unb2b_qsfp_demo.cl index 3cfe03a3ba7012ab494d622e2d359f3c40c075b2..a24b41f316283a10b60f655ba63abbbecbd2175a 100644 --- a/applications/ta2/designs/ta2_unb2b_qsfp_demo/qsfp_demo.cl +++ b/applications/ta2/designs/ta2_unb2b_qsfp_demo/ta2_unb2b_qsfp_demo.cl @@ -24,74 +24,6 @@ channel struct line_40gbe ch_out_40gbe __attribute__((depth(0))) __attribute__( channel struct line_10gbe ch_out_10gbe __attribute__((depth(0))) __attribute__((io("kernel_output_10GbE"))); -#if 0 -struct udp_packet { - struct ethernet_header { - uchar destination_mac[6], source_mac[6]; - ushort ether_type; - } ethernet_header; - - struct ipv4_header { - uchar version_ihl, dscp_ecn; - ushort length; - ushort identification, flags_fragment_offset; - uchar ttl, protocol; - ushort checksum; - uint source_ip_address, destination_ip_address; - } __attribute__((packed)) ipv4_header; - - struct udp_header { - ushort source_port, destination_port; - ushort length, checksum; - } udp_header; - - uchar payload[8192]; -}; - -__constant uchar packet_header[] = { - 0x00, 0x07, 0x43, 0x3b, 0xf6, 0x40, - 0xf4, 0x52, 0x14, 0x94, 0xdc, 0xc1, - 0x08, 0x00, - - 0x45, - 0x00, - (sizeof(struct ipv4_header) + sizeof(struct udp_header) + 8192) / 256, (sizeof(struct ipv4_header) + sizeof(struct udp_header) + 8192) % 256, - 0xc6, 0xd8, - 0x40, 0x00, - 0x40, - 0x11, - 0x00, 0x00, - 0x0a, 0xc4, 0xf8, 0xfe, - 0x0a, 0xc4, 0xf8, 0x02, - - 0x8f, 0x28, - 0x11, 0x5c, - (sizeof(struct udp_header) + 8192) / 256, (sizeof(struct udp_header) + 8192) % 256, - 0x00, 0x00, -}; - - -uint htonl(uint n) -{ -#if defined __ENDIAN_LITTLE__ - return as_uint(as_uchar4(n).wzyx); -#else - return n; -#endif -} - - -ushort htons(ushort n) -{ -#if defined __ENDIAN_LITTLE__ - return as_ushort(as_uchar2(n).yx); -#else - return n; -#endif -} - -#endif - __constant uchar packets[4][8512] __attribute__((aligned(32))) = { { 0x00, 0x07, 0x43, 0x3B, 0xF6, 0x40, 0xF4, 0x52, 0x14, 0x94, 0xDC, 0xC1, 0x08, 0x00, 0x45, 0x00, @@ -2264,19 +2196,33 @@ void write_packet_10gbe(__constant const void *packet, unsigned size) } } - +#ifdef EMULATOR +__attribute__((max_global_work_dim(0))) +#else __attribute__((autorun, max_global_work_dim(0))) +#endif __kernel void writer_40gbe() { +#ifdef EMULATOR + for (int i = 0; i < 4; i++) +#else for (uint2_t i = 0;; i ++) +#endif write_packet_40gbe(packets[i], 8511); } - +#ifdef EMULATOR +__attribute__((max_global_work_dim(0))) +#else __attribute__((autorun, max_global_work_dim(0))) +#endif __kernel void writer_10gbe() { +#ifdef EMULATOR + for (int i = 0; i < 4; i++) +#else for (uint2_t i = 0;; i ++) +#endif write_packet_10gbe(packets[i], 8511); } diff --git a/applications/ta2/doc/README.txt b/applications/ta2/doc/README.txt new file mode 100644 index 0000000000000000000000000000000000000000..9edf518126488bb603158525996959150560c40e --- /dev/null +++ b/applications/ta2/doc/README.txt @@ -0,0 +1,170 @@ +Title: How to use OpenCL with UNB2b + +Author: Reinier vd Walle + + +INDEX +1. OVERVIEW +2. SETUP ONCE +3. COMPILING EXAMPLE OPENCL APPLICATION FOR EMULATION +4. COMPILING EXAMPLE OPENCL APPLICATION FOR UNB2B +5. CREATING NEW OPENCL APPLICATION +6. FLASH SOF TO FPGA +7. FLASH RBF TO FPGA +8. CREATING A NEW BSP + + +1. OVERVIEW +The ta2 project folder contains 4 sub-folders: +- doc + . The folder that contains this file. +- designs + . This folder contains all TA2 OpenCL applications. +- bsp + . This folder contains OpenCL board support packages. + . The sub-folder "hardware" contains the list of available BSPs +- ip + . This folder contains VHDL libraries that are used in BSPs + + +2. SETUP ONCE +- Install Quartus 19.2 with arria10 dependencies and OpenCL dependencies. A later Quartus version may be used + for OpenCL compilation. However, the current BSPs are created for 19.2. +- Aquire the RadioHDL library from GIT or other source. +- Export the following environment variables in your .bashrc and source the radiohdl init script as follows: + + INTEL_ROOTDIR=/home/software/Altera/19.2 # For example + export QUARTUS_ROOTDIR=$INTEL_ROOTDIR/quartus + export QSYS_ROOTDIR=$INTEL_ROOTDIR/quartus/sopc_builder/bin + + export RADIOHDL_WORK=${GIT}/hdl + export RADIOHDL_CONFIG=${GIT}/radiohdl/config + export RADIOHDL_BUILD_DIR=${RADIOHDL_WORK}/build + + export INTELOCLSDKROOT=$INTEL_ROOTDIR/hld + export INTELFPGAOCLSDKROOT=$INTEL_ROOTDIR/hld + export AOCL_BOARD_PACKAGE_ROOT=$RADIOHDL_WORK/applications/ta2/bsp + export PATH=$PATH:$INTEL_ROOTDIR/hld/bin + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$INTELOCLSDKROOT/host/linux64/lib + export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$AOCL_BOARD_PACKAGE_ROOT/linux64/lib + export PATH=$PATH:$QUARTUS_ROOTDIR/bin + export LIBGL_ALWAYS_SOFTWARE=1 + export LIBGL_ALWAYS_INDIRECT=1 + + # Altera, Mentor and modelsim_altera_libs dir + export ALTERA_DIR=/home/software/Altera + export MENTOR_DIR=/home/software/Mentor + export MODELSIM_ALTERA_LIBS_DIR=/home/software/modelsim_altera_libs + + . ${GIT}/radiohdl/init_radiohdl.sh + + +- Make sure the hdl_buildset_unb2b.cfg is correctly configured for this Quartus version. +- Generate all IP by executing: + -> generate_ip_libs unb2b + + +3. COMPILING EXAMPLE OPENCL APPLICATION FOR EMULATION +The example application used is "ta2_unb2b_qsfp_demo", this application generates UDP packets and outputs them +to 40GbE and 10GbE. In emulation, this design is verified by comparing the 10GbE and 40GbE outputs to check if +the data is identical. If that is the case, the output will state "PASSED". + +- Navigate to $RADIOHDL_WORK/applications/ta2/designs/ta2_unb2b_qsfp_demo +- First we need to compile the OpenCL application for emulation and compile the host code. This can be done by + the provided Makefile. Execute the command: + -> make ta2_unb2b_qsfp_demo +- This creates the executable "host" and the aocx file "ta2_unb2b_qsfp_demo.aocx" located at: + $RADIOHDL_BUILD_DIR/unb2b/OpenCL/ta2_unb2b_qsfp_demo/bin +- First navigate to that directory and then run this executable using the following commands: + -> cd $RADIOHDL_BUILD_DIR/unb2b/OpenCL/ta2_unb2b_qsfp_demo/bin + -> CL_CONTEXT_EMULATOR_DEVICE_INTELFPGA=1 ./host +- At the end of the application output you should see "PASSED". + + +4. COMPILING EXAMPLE OPENCL APPLICATION FOR UNB2B +The example application used is "ta2_unb2b_qsfp_demo", this application generates UDP packets and outputs them +to 40GbE and 10GbE. On hardware, you can verify the design by connecting a PC to the 40GbE (QSFP1) or +10GbE (QSFP0) output and check for incoming packets using tcpdump. +- Navigate to $RADIOHDL_WORK/applications/ta2/designs/ta2_unb2b_qsfp_demo +- This example design uses the "ta2_unb2b_bsp" OpenCL BSP. If you did not initialize the BSP already, + execute the commands below. + -> quartus_config unb2b; run_qsys unb2b name_of_your_BSP board.qsys; +- The OpenCL application can be compiled for UniBoard2b using the provided Makefile, this is done by executing: + -> make ta2_unb2b_qsfp_demo.sof ta2_unb2b_qsfp_demo.rbf +- After a long compilation time (can take hours) you will find the files ta2_unb2b_qsfp_demo.sof and + ta2_unb2b_qsfp_demo.rbf in the current directory. + + +5. CREATING NEW OPENCL APPLICATION +- Start by copying the example application located in $RADIOHDL_WORK/applications/ta2/designs/ta2_unb2b_qsfp_demo +- rename the folder and ta2_unb2b_qsfp_demo.cl +- If you need to use a specific OpenCL BSP, open the Makefile and change the BSP Name into the name of the BSP + you want to use (see OVERVIEW). +- If you did not initialize the BSP, execute the commands below. + quartus_config unb2b; run_qsys unb2b name_of_your_BSP board.qsys; +- Now you can create your application in the *.cl file. +- With the provided makefile you can compile your application for UniBoard2b by executing: + make myApp.sof myApp.rbf + where "myApp" is the name of your .cl file +- Note that by default your application is build in $RADIOHDL_BUILD_DIR/unb2b/OpenCL/myApp + where "myApp" is the name of your design directory file. This directory includes the + Quartus project for analysis using the Quartus GUI. +- For emulation, you need to modify the host code located in host/src/main.cpp to fit your design. + + +6. FLASH SOF TO FPGA +The quickest way to program the FPGA is to use a JTAG connection and program the FPGA with the Quartus +programmer, writing the .sof file. +- To configure a jtagserver you can use the command: + jtagconfig -addserver <server name> <password> + +- To program the FPGA use the following command: +quartus_pgm -c USB-BLASTERII -m jtag -o p\;my_app.sof@1 + +The above command will program FPGA 1 of Uniboard2 with my_app.sof. +FPGAs 2, 3, and 4 can also be programmed by changing the FPGA ID. For example +For FPGA 2 -> quartus_pgm -c USB-BLASTERII -m jtag -o p\;my_app.sof@2 +For FPGA 3 -> quartus_pgm -c USB-BLASTERII -m jtag -o p\;my_app.sof@3 +For FPGA 4 -> quartus_pgm -c USB-BLASTERII -m jtag -o p\;my_app.sof@4 + +Multiple FPGAs can be targeted simultaniously for example, programming FPGAs 1,2 and 4: +quartus_pgm -c USB-BLASTERII -m jtag -o p\;my_app.sof@1 -o p\;my_app.sof@2 -o p\;my_app.sof@4 + + +7. FLASH RBF TO FPGA +If a JTAG connection is not available or you want your application to stay in flash, the application can be +written using the .rbf file over a 1GbE connection. This is achieved by running the util_unb2.py peripheral +script in $UPE_GEAR/peripherals + + +8. CREATING A NEW BSP +- BSPs are located in "$AOCL_BOARD_PACKAGE_ROOT/hardware" which is defined as + "$RADIOHDL_WORK/applications/ta2/bsp/hardware" +- To create a new BSP it is easiest to copy an existing one. In this example we would make a copy of the + directory "ta2_unb2b_bsp" and rename it to example_bsp. +- inside the new folder "example_bsp" we need to change 2 files: board_spec.xml and hdllib.cfg +- In board_spec.xml replace the two occurrences of "ta2_unb2b_bsp" into "example_bsp" (lines 2 and 5). +- In hdllib.cfg replace "ta2_unb2b_bsp" into "example_bsp" and "ta2_unb2b_bsp_lib" into "example_bsp_lib" +- Now we can make changes to this BSP by editing top.vhd, this is very similar to normal unb2b top-level + files. The difference is that top.vhd uses the "board" component defined in top_components_pkg.vhd + instead of the usual mmm component. You will also find another component "freeze_wrapper" is used which + is defined in top_components_pkg.vhd. +- freeze_wrapper is the OpenCL kernel wrapper. which is located at ip/freeze_wrapper.v. "freeze_wrapper" + instantiates pr_region.v which instantiates the generated "kernel_system" (OpenCL kernel). +- IO channels are defined in board_spec.xml between <channels> ... </channels>. These lines define + what in- and outputs the OpenCL kernel will generate. When you change these IO channel definitions, you + need to modify the files ip/pr_region.v, ip/freeze_wrapper.v, top_components_pkg.vhd and top.vhd accordingly. + + + + + + + + + + + + + + diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_10GbE/hdllib.cfg b/applications/ta2/ip/ta2_unb2b_10GbE/hdllib.cfg similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_10GbE/hdllib.cfg rename to applications/ta2/ip/ta2_unb2b_10GbE/hdllib.cfg diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.tcl b/applications/ta2/ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.tcl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.tcl rename to applications/ta2/ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.tcl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.vhd b/applications/ta2/ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.vhd similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.vhd rename to applications/ta2/ip/ta2_unb2b_10GbE/ta2_unb2b_10GbE.vhd diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_1GbE_mc/hdllib.cfg b/applications/ta2/ip/ta2_unb2b_1GbE_mc/hdllib.cfg similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_1GbE_mc/hdllib.cfg rename to applications/ta2/ip/ta2_unb2b_1GbE_mc/hdllib.cfg diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.tcl b/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.tcl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.tcl rename to applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.tcl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.vhd b/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.vhd similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.vhd rename to applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc.vhd diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_hw.tcl b/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_hw.tcl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_hw.tcl rename to applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_hw.tcl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_ip_wrapper.vhd b/applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_ip_wrapper.vhd similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_ip_wrapper.vhd rename to applications/ta2/ip/ta2_unb2b_1GbE_mc/ta2_unb2b_1GbE_mc_ip_wrapper.vhd diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/arria10_40g_atx_pll.ip b/applications/ta2/ip/ta2_unb2b_40GbE/arria10_40g_atx_pll.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/arria10_40g_atx_pll.ip rename to applications/ta2/ip/ta2_unb2b_40GbE/arria10_40g_atx_pll.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/arria10_40g_mac.ip b/applications/ta2/ip/ta2_unb2b_40GbE/arria10_40g_mac.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/arria10_40g_mac.ip rename to applications/ta2/ip/ta2_unb2b_40GbE/arria10_40g_mac.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/hdllib.cfg b/applications/ta2/ip/ta2_unb2b_40GbE/hdllib.cfg similarity index 74% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/hdllib.cfg rename to applications/ta2/ip/ta2_unb2b_40GbE/hdllib.cfg index e51ddb0cc19ca1151b99ee4114e20554c1975555..2d3b73c77d36b4126865cd1249424953952930d0 100644 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/hdllib.cfg +++ b/applications/ta2/ip/ta2_unb2b_40GbE/hdllib.cfg @@ -17,7 +17,8 @@ regression_test_vhdl = synth_top_level_entity = quartus_copy_files = - + arria10_40g_mac.ip . + arria10_40g_atx_pll.ip quartus_qsf_files = $RADIOHDL/boards/uniboard2b/libraries/unb2b_board/quartus/unb2b_board.qsf @@ -30,3 +31,7 @@ quartus_tcl_files = quartus_vhdl_files = quartus_qip_files = + +quartus_ip_files = + $RADIOHDL_BUILD_DIR/unb2b/quartus/ta2_unb2b_40GbE/arria10_40g_mac.ip + $RADIOHDL_BUILD_DIR/unb2b/quartus/ta2_unb2b_40GbE/arria10_40g_atx_pll.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.tcl b/applications/ta2/ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.tcl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.tcl rename to applications/ta2/ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.tcl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.vhd b/applications/ta2/ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.vhd similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.vhd rename to applications/ta2/ip/ta2_unb2b_40GbE/ta2_unb2b_40GbE.vhd diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_ddr/hdllib.cfg b/applications/ta2/ip/ta2_unb2b_ddr/hdllib.cfg similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_ddr/hdllib.cfg rename to applications/ta2/ip/ta2_unb2b_ddr/hdllib.cfg diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_ddr/ta2_unb2b_ddr.tcl b/applications/ta2/ip/ta2_unb2b_ddr/ta2_unb2b_ddr.tcl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_ddr/ta2_unb2b_ddr.tcl rename to applications/ta2/ip/ta2_unb2b_ddr/ta2_unb2b_ddr.tcl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_ddr/ta2_unb2b_ddr.vhd b/applications/ta2/ip/ta2_unb2b_ddr/ta2_unb2b_ddr.vhd similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_ddr/ta2_unb2b_ddr.vhd rename to applications/ta2/ip/ta2_unb2b_ddr/ta2_unb2b_ddr.vhd diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_ddr/ta2_unb2b_ddr_clock_cross.ip b/applications/ta2/ip/ta2_unb2b_ddr/ta2_unb2b_ddr_clock_cross.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_ddr/ta2_unb2b_ddr_clock_cross.ip rename to applications/ta2/ip/ta2_unb2b_ddr/ta2_unb2b_ddr_clock_cross.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_ddr/ta2_unb2b_ddr_pipe_stage.ip b/applications/ta2/ip/ta2_unb2b_ddr/ta2_unb2b_ddr_pipe_stage.ip similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_ddr/ta2_unb2b_ddr_pipe_stage.ip rename to applications/ta2/ip/ta2_unb2b_ddr/ta2_unb2b_ddr_pipe_stage.ip diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_jesd204b/hdllib.cfg b/applications/ta2/ip/ta2_unb2b_jesd204b/hdllib.cfg similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_jesd204b/hdllib.cfg rename to applications/ta2/ip/ta2_unb2b_jesd204b/hdllib.cfg diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.tcl b/applications/ta2/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.tcl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.tcl rename to applications/ta2/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.tcl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.vhd b/applications/ta2/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.vhd similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.vhd rename to applications/ta2/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b.vhd diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b_hw.tcl b/applications/ta2/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b_hw.tcl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b_hw.tcl rename to applications/ta2/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b_hw.tcl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b_ip_wrapper.vhd b/applications/ta2/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b_ip_wrapper.vhd similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b_ip_wrapper.vhd rename to applications/ta2/ip/ta2_unb2b_jesd204b/ta2_unb2b_jesd204b_ip_wrapper.vhd diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_mm_io/hdllib.cfg b/applications/ta2/ip/ta2_unb2b_mm_io/hdllib.cfg similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_mm_io/hdllib.cfg rename to applications/ta2/ip/ta2_unb2b_mm_io/hdllib.cfg diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.tcl b/applications/ta2/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.tcl similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.tcl rename to applications/ta2/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.tcl diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.vhd b/applications/ta2/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.vhd similarity index 100% rename from applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.vhd rename to applications/ta2/ip/ta2_unb2b_mm_io/ta2_unb2b_mm_io.vhd diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/README.txt b/applications/ta2/libraries/ta2_unb2b_bsp/README.txt deleted file mode 100644 index 0a985a8e82b5c1b87620a0f5a38e137caabd3519..0000000000000000000000000000000000000000 --- a/applications/ta2/libraries/ta2_unb2b_bsp/README.txt +++ /dev/null @@ -1,46 +0,0 @@ -SETUP ONCE -- Install Quartus 18.0.219 with arria10 dependencies. -- Make sure the directory /home/software/Altera/18.0.219 points to the Quartus Root directory. - This can be done by installing Quartus in this location or make a symbolic link to it. -- Aquire the RadioHDL library from SVN or other source. -- Export the environment variable $RADIOHDL in your .bashrc and source the setup script as follows: - export RADIOHDL=/path/to/RadioHDL/trunk - export RADIOHDL_WORK=${RADIOHDL} - . ${RADIOHDL}/tools/setup_radiohdl.sh -- Generate all IP by first navigating to $RADIOHDL/libraries/technology/ip_arria10_e1sg and then executing generate-all-ip.sh -- Run the python script: quartus_config by executing: - python $RADIOHDL/tools/oneclick/base/quartus_config.py -t unb2b - - - -COMPILING OPENCL APPLICATION -- Make sure you have defined the required environment variables for OpenCL compilation with Uniboard2. -- With the provided makefile you can compile your application by executing: - make myApp.sof myApp.rbf - -FLASH SOF TO FPGA -The quickest way to program the FPGA is to use a JTAG connection and program the FPGA with the Quartus programmer, writing the .sof file. -- To configure a jtagserver you can use the command: - jtagconfig -addserver <server name> <password> - For using dop36 to program the Uniboard2 in the lab, the command is: - jtagconfig --addserver dop36 BG132V051 - -- To program the FPGA use the following command: -quartus_pgm -c USB-BLASTERII -m jtag -o p\;my_app.sof@1 - -The above command will program FPGA 1 of Uniboard2 with my_app.sof. -FPGAs 2, 3, and 4 can also be programmed by changing the FPGA ID. For example -For FPGA 2 -> quartus_pgm -c USB-BLASTERII -m jtag -o p\;my_app.sof@2 -For FPGA 3 -> quartus_pgm -c USB-BLASTERII -m jtag -o p\;my_app.sof@3 -For FPGA 4 -> quartus_pgm -c USB-BLASTERII -m jtag -o p\;my_app.sof@4 - -Multiple FPGAs can be targeted simultaniously for example, programming FPGAs 1,2 and 4: -quartus_pgm -c USB-BLASTERII -m jtag -o p\;my_app.sof@1 -o p\;my_app.sof@2 -o p\;my_app.sof@4 - - -FLASH RBF TO FPGA -If a JTAG connection is not available, the application can be written using the .rbf file over a 1GbE connection. -This is achieved by running the util_unb2.py script - - - diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ctrl_unb2_board.tcl b/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ctrl_unb2_board.tcl deleted file mode 100755 index ffd8a29a2dbb4866e1c6b99b46b1bd81d8343f5b..0000000000000000000000000000000000000000 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ctrl_unb2_board.tcl +++ /dev/null @@ -1,50 +0,0 @@ -post_message "Running ctrl_unb2_board script" -set radiohdl_build $::env(RADIOHDL_BUILD_DIR) - -#============================================================ -# Files and basic settings -#============================================================ -# All used HDL library *_lib.qip files in order with top level last -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/technology/technology_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_ram/ip_arria10_e1sg_ram_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_memory/tech_memory_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_fifo/ip_arria10_e1sg_fifo_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_fifo/tech_fifo_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_ddio/ip_arria10_e1sg_ddio_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_iobuf/tech_iobuf_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tst/tst_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/common/common_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/mm/mm_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_mult/ip_arria10_mult_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_complex_mult_rtl/ip_arria10_complex_mult_rtl_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_complex_mult_rtl_canonical/ip_arria10_complex_mult_rtl_canonical_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_complex_mult/ip_arria10_e1sg_complex_mult_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_mult_add4/ip_arria10_e1sg_mult_add4_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_mult_add2/ip_arria10_e1sg_mult_add2_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_mult/tech_mult_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/common_mult/common_mult_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/easics/easics_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/dp/dp_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ppsh/ppsh_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/i2c/i2c_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_tse_sgmii_lvds/ip_arria10_e1sg_tse_sgmii_lvds_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_tse/tech_tse_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/eth/eth_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_asmi_parallel/ip_arria10_e1sg_asmi_parallel_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_remote_update/ip_arria10_e1sg_remote_update_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_flash/tech_flash_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/remu/remu_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_clkbuf_global/ip_arria10_e1sg_clkbuf_global_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_clkbuf/tech_clkbuf_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_pll/tech_pll_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_fractional_pll_clk200/ip_arria10_e1sg_fractional_pll_clk200_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_fractional_pll_clk125/ip_arria10_e1sg_fractional_pll_clk125_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_fractional_pll/tech_fractional_pll_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/epcs/epcs_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_temp_sense/ip_arria10_e1sg_temp_sense_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_fpga_temp_sens/tech_fpga_temp_sens_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/ip_arria10_e1sg_voltage_sense/ip_arria10_e1sg_voltage_sense_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_fpga_voltage_sens/tech_fpga_voltage_sens_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/fpga_sense/fpga_sense_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/tech_ddr/tech_ddr_lib.qip" -set_global_assignment -name QIP_FILE "$radiohdl_build/unb2b/quartus/unb2b_board/unb2b_board_lib.qip" diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/onchip_memory2_0.hex b/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/onchip_memory2_0.hex deleted file mode 100644 index c62c260e352faf94d346ab32528074b17ab5c79a..0000000000000000000000000000000000000000 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/onchip_memory2_0.hex +++ /dev/null @@ -1,4098 +0,0 @@ -:020000020000FC -:20000000004000B4084089140800683A00000000000000000000000000000000000000005D -:20000800DEFFED04DFC00015D8400215D8800315D8C00415D9000515D9400615D98007156A -:20001000D9C00815000B307ADA000915DA400A15DA800B15DAC00C15DB000D15DB400E15C4 -:20001800DB800F15DBC01015D9401115EBFFFF04DBC012150009313A2880004C10000326FA -:200020002000022600200FC000000706DF401215E8BFFF17E93FFF0400201C401000021EA2 -:20002800EBFFFF04DBC01215D9401117DF401217DFC000172801707AD8400217D880031714 -:20003000D8C00417D9000517D9400617D9800717D9C00817DA000917DA400A17DA800B17F2 -:20003800DAC00C17DB000D17DB400E17DB800F17DBC01017DEC01304EF80083ADEFFF90429 -:20004000DFC00615DF000515DF0005040001883A0005313AE0BFFC15E0BFFC17E0BFFF15BD -:20004800E03FFD1500800044E0BFFE15E0FFFF17E0BFFE171884703A10001126E0BFFD1708 -:20005000100690FA008000B41885883A10C90D17E0BFFD17100890FA008000B42085883A70 -:2000580010890E171009883A183EE83A0001883A0005313AE0BFFB15E0BFFB1700000706D7 -:20006000E0BFFE171085883AE0BFFE15E0BFFD1710800044E0BFFD15003FE406E0BFFF15AF -:20006800E0BFFF17103FDE1E0001883A0001883AE037883ADFC00117DF000017DEC00204C8 -:20007000F800283ADEFFFB04DFC00415DF000315DF000304E13FFD1500BFFFC4E0BFFF153E -:20007800E03FFE15D0A0201710000726D0A02017E0FFFF17E1BFFE17E17FFD171809883AAA -:20008000103EE83A00000206003DA03A0005883AE037883ADFC00117DF000017DEC00204E0 -:20008800F800283A06C00134DEC00014068000B4D6A8EC14008000B41089041400C000B440 -:2000900018C94D1410C00326100000151080010410FFFD3600221DC000202600003FFF0690 -:20009800DEFFFB04DFC00415DF000315DF00030400222600008000441001703A00801B4431 -:2000A00010803FCC1080201C10BFE00410801CE01000131E00801B4410803FCC1080201C13 -:2000A80010BFE00410801B6010000B1E00801B4410803FCC1080201C10BFE00410801D5843 -:2000B0001000031E008003F4109090040000060600800044000004060080FA0400000206F4 -:2000B80000817DB410B84004100F883A01800084000B883A0100C00400208B0000810004C2 -:2000C0000080F33501400044010000B42108D70400207E8000215E4000208480E0BFFF1586 -:2000C80000208480E0BFFE15E0FFFE17E0BFFF171885C83A1080FA301000071E0080E03774 -:2000D0001080004C1005003A10803FCC0080E035E0BFFE17E0BFFF15D0A01D171080004CCE -:2000D80010800058103FEE1E00209E40E0BFFD15E0BFFD1710000526E0BFFD171080008461 -:2000E0001009883A00214DC0003FE50600215AC0003FE306DEFFED04DFC01215DF001115D1 -:2000E800DF001104E13FF215E17FF115E1BFF015E1FFEF15E0BFF117E0BFF915E0BFF017F4 -:2000F000E0BFFE150000D306E0BFFFC7108009601000081EE13FFFC7E0BFF11710C0004430 -:2000F800E0FFF115E0FFF217100B883A183EE83A0000C806E0BFFE1710C00044E0FFFE153E -:2001000010800003E0BFFFC5E0BFFFC71000C926E0BFFFC710C0192018006F1E10C0194841 -:200108001800051E10C009601800081E108018E010000E1E0000B60610C01CE018009A1E09 -:2001100010801E201000191E0000B106E13FFFC7E0BFF11710C00044E0FFF115E0FFF21795 -:20011800100B883A183EE83A0000AA06E0BFEF1710C00104E0FFEF1510800017E0BFF81512 -:20012000E0BFF81711003FCC2100201C213FE004E0BFF11710C00044E0FFF115E0FFF217CC -:20012800100B883A183EE83A00009A06E0BFEF1710C00104E0FFEF1510800017E0BFF71513 -:20013000E0BFF11710C00044E0FFF115E0FFF217100B883A01000C04183EE83AE0BFF1171A -:2001380010C00044E0FFF115E0FFF217100B883A01001E04183EE83AE0BFF7171000081E6B -:20014000E0BFF11710C00044E0FFF115E0FFF217100B883A01000C04183EE83A00007D062E -:2001480000800704E0BFFD1500000306E0BFFD1710BFFF04E0BFFD1500C003C4E0BFFD17E2 -:200150001884983A1007883AE0BFF7171884703A103FF62600001D0600C003C4E0BFFD178D -:200158001884983A1007883AE0BFF7171886703AE0BFFD171884D83AE0BFF615E0BFF61794 -:20016000108002A81000041EE0BFF61710800C04E0BFFFC500000306E0BFF617108015C446 -:20016800E0BFFFC5E13FFFC7E0BFF11710C00044E0FFF115E0FFF217100B883A183EE83A51 -:20017000E0BFFD1710BFFF04E0BFFD15E0BFFD17103FE10E00004F06E0BFEF1710C0010479 -:20017800E0FFEF1510800017E0BFFC15E0BFF344E0BFFB15E0BFFC171000161EE0BFFB1701 -:2001800010C00044E0FFFB1500C00C0410C0000500001006E0BFFC17014002841009883A4D -:200188000021DA8010800C041009883AE0BFFB1710C00044E0FFFB152007883A10C00005EF -:20019000E0BFFC17014002841009883A0021D280E0BFFC15E0BFFC17103FEE1E00000B06BA -:20019800E0BFFB171080000311003FCC2100201C213FE004E0BFF11710C00044E0FFF115A6 -:2001A000E0FFF217100B883A183EE83AE0BFFB1710BFFFC4E0BFFB15E0BFF344E0FFFB1749 -:2001A80018BFEF2E00001B06E0BFEF1710C00104E0FFEF1510800017E0BFFA1500000D065D -:2001B000E0BFFA1710C00044E0FFFA151080000311003FCC2100201C213FE004E0BFF11786 -:2001B80010C00044E0FFF115E0FFF217100B883A183EE83AE0BFFA171080000310803FCC13 -:2001C0001080201C10BFE004103FED1E000001060001883AE0BFFE1710C00044E0FFFE15C2 -:2001C80010800003E0BFFFC5E0BFFFC7103F261E000001060001883AE0BFF11710C00044A4 -:2001D000E0FFF115E0FFF217100B883A0009883A183EE83AE0FFF117E0BFF9171885C83AED -:2001D800E037883ADFC00117DF000017DEC00204F800283ADEFFFB04DF000415DF000404C8 -:2001E0002005883AE17FFC15E0BFFD0500800804E0BFFF15E0BFFD0710000E260080F33736 -:2001E800E0BFFE15E0BFFE1710BFFFEC10000326E0BFFD070080F23500000506E0BFFF1794 -:2001F00010BFFFC4E0BFFF15E0BFFF17103FF31E0001883A0001883AE037883ADF00001740 -:2001F800DEC00104F800283ADEFFF804DFC00415DF000315DF000304E13FFD15E140021512 -:20020000E1800315E1C00415E0800204E0BFFE15E0BFFE17100F883AE1BFFD17000B883A7D -:20020800010000B42101DD0400203940E0BFFF15E0BFFF17E037883ADFC00117DF00001797 -:20021000DEC00504F800283ADEFFFF04DF000015D839883AD0A01817E037883ADF000017B8 -:20021800DEC00104F800283ADEFFFE04DF000115DF000104E13FFF150007883AE0BFFF175F -:2002200010C00035E0BFFF171080010410800037D0A0181710800044D0A018150001883AD5 -:20022800E037883ADF000017DEC00104F800283ADEFFF904DFC00615DF000515DF00050475 -:20023000E13FFF15E17FFE15E1BFFD15E1FFFC15E0BFFF171080010400C001C410C0003590 -:20023800D8000015E1FFFF17018000B431821A04E17FFD17E13FFE170021EE000001883A42 -:20024000E037883ADFC00117DF000017DEC00204F800283ADEFFFE04DF000115DF00010462 -:20024800E13FFF1500BFFFC4E037883ADF000017DEC00104F800283ADEFFFE04DF00011540 -:20025000DF000104E13FFF1500BFFFC4E037883ADF000017DEC00104F800283ADEFFFB044C -:20025800DF000415DF000404E13FFF15E17FFE15E1BFFD15E1FFFC1500BFFFC4E037883A02 -:20026000DF000017DEC00104F800283ADEFFFB04DF000415DF000404E13FFF15E17FFE1529 -:20026800E1BFFD15E1FFFC1500BFFFC4E037883ADF000017DEC00104F800283ADEFFFD04A7 -:20027000DF000215DF000204E13FFF15E17FFE1500BFFFC4E037883ADF000017DEC00104F8 -:20027800F800283ADEFFFB04DFC00415DF000315DF000304D0A01E171090000C109000208A -:200280001000021E0005883A0000700600800B04E0BFFF15D0E00617E0BFFF171889883ACA -:20028800D0E00717E0BFFF171885883A100B883A0020CBC0E0BFFE15E0BFFE17100490BA28 -:20029000E0BFFE15D0A0071710800404108000171004D63A10C03FCCD0A0071710800404AA -:20029800108000171004D23A10BFC00C1886B03AD0A0071710800404108000171004923AAF -:2002A00010803FEC1886B03AD0A0071710800404108000171004963A1884B03AE0BFFD1513 -:2002A800E0BFFD1710BFFFECE0BFFD15E0BFFE171080070410BFFFCCE0FFFD171884B03AB6 -:2002B000E0BFFD15E0BFFD171006D63AE0BFFD171004D23A10BFC00C1886B03AE0BFFD17FB -:2002B8001004923A10803FEC1888B03AE0BFFD171006963AD0A007171080040420C6B03A72 -:2002C00010C00015D0A0071710800A04108000171004D63A10C03FCCD0A0071710800A043B -:2002C800108000171004D23A10BFC00C1886B03AD0A0071710800A04108000171004923A79 -:2002D00010803FEC1886B03AD0A0071710800A04108000171004963A1884B03AE0BFFD15DD -:2002D800E0BFFD1710BFFFCCE0BFFD15E0BFFE17108002041004943AE0FFFD171884B03A63 -:2002E000E0BFFD15E0BFFD171006D63AE0BFFD171004D23A10BFC00C1886B03AE0BFFD17CB -:2002E8001004923A10803FEC1888B03AE0BFFD171006963AD0A0071710800A0420C6B03A3C -:2002F00010C00015E0BFFE1710800B04E037883ADFC00117DF000017DEC00204F800283A32 -:2002F800DEFFFD04DF000215DF000204E13FFF15E17FFE15E0FFFF17E0BFFE171884703A97 -:20030000E037883ADF000017DEC00104F800283ADEFFFD04DF000215DF000204E13FFF1524 -:20030800E17FFE15E0FFFF17E0BFFE171884B03AE037883ADF000017DEC00104F800283A67 -:20031000DEFFFD04DF000215DF000204E13FFF15E17FFE15E0FFFF17E0BFFE171884F03AFE -:20031800E037883ADF000017DEC00104F800283ADEFFFD04DF000215DF000204E13FFF150C -:20032000E17FFE15D0A01A170084303AE0FFFF171884703AE0BFFF15D0E01A17E0BFFE1738 -:200328001886703AE0BFFF171884B03AE037883ADF000017DEC00104F800283ADEFFF50490 -:20033000DFC00A15DF000915DF000904E13FF915E17FF815E0BFF817E0BFFB15E0FFF9171F -:2003380018800104E0BFF915E0BFF81711000104E13FF81518C0001710C00015000113067C -:2003400000800044E0BFFC15E0BFFC17E0BFFD15E0BFF9171080001710C001E01800D71EB2 -:2003480010C002281800071E10C001A81800BB1E10C000A818006C1E108000601000231E99 -:200350000001010610C002A01800661E10C002E81800051E10C002201800E71E1080026081 -:200358001000191E0000F80610C002E01800391E10BFFFD81000F41E0021C3001000062637 -:20036000008000B41088DC0410C00017E0BFF81710C0001500000506008000B41088DA04A2 -:2003680010C00017E0BFF81710C00015E0BFF81710800104E0BFF815E0BFF91710800104C8 -:20037000E0BFF9150000E106E03FFD15E0BFF91710800117E0BFFF15E0BFF9171080021746 -:20037800E0BFFE15E0BFF81710C00104E13FFE17E0BFFC17D8800015E1FFFD17E1BFFF1732 -:20038000200B883A1809883A0021CD401000041EE0BFFE170084303AE0BFFE15E03FFF15A6 -:20038800E0BFF817E0FFFE1710C00015E0BFFF1710800044100490BAE0FFF8171885883A9A -:20039000E0BFF815E0BFF91710800304E0BFF9150000BE06E0BFF91710800117E0BFFF15E0 -:20039800E0BFF91710800217E0BFFE15E0BFF9171080030410800017D0A01A15E0BFF91700 -:2003A00010800404E0BFFA15E0BFFE1701C000B439C31C04E1BFFF17E17FFA171009883AB0 -:2003A800002117C01000031EE0BFFE170084303AE0BFFE15E0BFF81710C00104E0FFF81549 -:2003B000E0FFFE1710C00015E0BFFF1710800104100490BAE0FFF9171885883AE0BFF915B1 -:2003B80000009A06E03FFC15E0BFF91710800117E0BFFF15E0BFF91710800217E0BFFE1541 -:2003C000E0BFF91710800304E0BFFA15E0BFF91710800017108000A01000041EE0BFF917C2 -:2003C80010800017108002981000091EE0FFFE17E0BFFC17D8800015E1FFFD17E1BFFF1750 -:2003D000E17FFA171809883A0021CD4010002426E0BFF91710800017108000D81000081E3D -:2003D800E0BFFE1701C000B439C2F804E1BFFF17E17FFA171009883A002117C0100018269D -:2003E000E0BFF91710800017108001181000081EE0BFFE1701C000B439C30404E1BFFF17E5 -:2003E800E17FFA171009883A002117C010000C26E0BFF917108000171080015810000B1EF7 -:2003F000E0BFFE1701C000B439C31004E1BFFF17E17FFA171009883A002117C01000031E89 -:2003F800E0BFFE170084303AE0BFFE15E0BFF81710C00104E0FFF815E0FFFE1710C0001549 -:20040000E0BFFF17108000C4100490BAE0FFF9171885883AE0BFF91500004C06E0BFF91779 -:2004080010800117E0BFFE15E0BFF91710800204E0BFFA15D0A00117E0FFFE17E17FFA179A -:200410001809883A103EE83A1000031EE0BFFE170084303AE0BFFE15E0BFF81710C0010471 -:20041800E0FFF815E0FFFE1710C00015E0BFF91710804204E0BFF91500003406E0BFF917E4 -:2004200010800117E0BFFE15E0BFF81710800104E0BFFA15D0A00217E0FFFE17180B883A0F -:20042800E13FFA17103EE83A1000071EE0BFF81710C00104E0FFF815E0FFFE1700C6303A4B -:2004300010C0001500000806E0BFF81710C00104E0FFF815E0FFFE1710C00015E0BFF817C3 -:2004380010804004E0BFF815E0BFF91710800204E0BFF91500001506E0BFF91710800117C0 -:20044000E0BFFE15D0A00317E0FFFE171809883A103EE83A1000031EE0BFFE170084303A46 -:20044800E0BFFE15E0BFF81710C00104E0FFF815E0FFFE1710C00015E0BFF9171080020455 -:20045000E0BFF915000001060001883AE0BFF91710800017103EEA1EE0FFF817E0BFFB17CA -:200458001885C83A1005D0BAE037883ADFC00117DF000017DEC00204F800283ADEFFF904E8 -:20046000DFC00615DF000515DF000504E13FFE15E17FFD15E1BFFC15E1FFFB15E0BFFE17E7 -:20046800108000CC1000031EE0BFFD17108000CC100015260005883A00001806E0BFFE17F4 -:2004700010800037E0BFFF15E0BFFD1710C00017E0BFFB17180B883AE13FFF17103EE83A1C -:20047800E0BFFF15E0FFFF17E0BFFE1710C00035E0BFFE1710800104E0BFFE15E0BFFD1755 -:2004800010800104E0BFFD15E0BFFC1710FFFFC4E0FFFC15103FE91E00800044E037883AAF -:20048800DFC00117DF000017DEC00204F800283ADEFFFE04DFC00115DF000015D839883A4E -:20049000D0A0001710800A981000031ED120190400209140D0A00015D0A00017E037883A7E -:20049800DFC00117DF000017DEC00204F800283ADEFFFC04DFC00315DF000215DF0002042A -:2004A000E13FFF15E17FFE15002123001000040E008000B410852004D0A0011500000306B3 -:2004A800008000B41084E204D0A00115D0A00117E17FFE17E13FFF17103EE83AE037883A84 -:2004B000DFC00117DF000017DEC00204F800283ADEFFFC04DFC00315DF000215DF00020412 -:2004B800E13FFF15E17FFE15002123001000040E008000B410852004D0A00215000003069A -:2004C000008000B41084F904D0A00215D0A00217E17FFE17E13FFF17103EE83AE037883A53 -:2004C800DFC00117DF000017DEC00204F800283ADEFFFD04DFC00215DF000115DF000104FC -:2004D000E13FFF15002123001000040E008000B410852A04D0A0031500000306008000B4B6 -:2004D80010850E04D0A00315D0A00317E13FFF17103EE83AE037883ADFC00117DF0000171F -:2004E000DEC00204F800283ADEFFFB04DFC00415DF000315DF000304E13FFF15E17FFE15E6 -:2004E800E0FFFF1700804004D8800015E1FFFE17180D883A000B883AD1201904002095C0A2 -:2004F0001000020E0005883A0000010600800044E037883ADFC00117DF000017DEC0020410 -:2004F800F800283ADEFFFC04DFC00315DF000215DF000204E13FFF15E17FFE15E0BFFE17C0 -:2005000001C04004E1BFFF17100B883AD1201904002098C01000020E0005883A00000106CF -:2005080000800044E037883ADFC00117DF000017DEC00204F800283ADEFFFD04DFC00215F7 -:20051000DF000115DF000104E13FFF15E0BFFF17100B883AD120190400209BC01000020E83 -:200518000005883A0000010600800044E037883ADFC00117DF000017DEC00204F800283AAD -:20052000DEFFFD04DF000215DF000204E13FFF15E17FFE150005883AE037883ADF000017C5 -:20052800DEC00104F800283ADEFFFD04DFC00215DF000115DF000104E13FFF15000B883A48 -:20053000E13FFF1700214800E037883ADFC00117DF000017DEC00204F800283ADEFFFB04AC -:20053800DF000415DF000404E13FFC1500800044E0BFFF15E0BFFC171004D0BAE0BFFE151A -:20054000E0BFFC17108000CC00C001041885C83AE0BFFD15E0BFFD171080011810803FCC81 -:200548001007883AE0BFFE1710C5883AE0BFFE15E0BFFD17108001201000021EE0BFFD1776 -:20055000000001060005883AE0BFFD15E0BFFE17100494BAE0FFFF171884B03AE0BFFF15C8 -:20055800E0BFFD171004943AE0FFFF171884B03AE0BFFF15E0BFFF1710800094E0BFFF1534 -:20056000E0BFFF1700802835D0201D15D0201E150005883A00802B350001883AE037883A61 -:20056800DF000017DEC00104F800283ADEFFFF04DF000015D839883A008000440080283538 -:20057000D0201D15D0201E150005883A00802B350001883AE037883ADF000017DEC001044A -:20057800F800283ADEFFF404DFC00B15DF000A15DF000A0400800884E0BFFF1500A1823474 -:20058000E0BFFE1500802637E0BFFD1500800037108000CCE0BFFC15008000371005D0BA02 -:2005880010800FCCE0BFFB15E1FFFC1701801184E17FFB17010000B42108DE0400207E80E0 -:20059000E0BFFD171000091EE0BFFB171006923AE0BFFC171887883A008298F410800044D9 -:200598001885883AD0A01B1500000806E0BFFB171006923AE0BFFD171887883AE0BFFC17DD -:2005A0001885883A10800044D0A01B15D0A01B171006D63AD0A01B171004D23A10BFC00C43 -:2005A8001886B03AD0A01B171004923A10803FEC1886B03AD0A01B171004963A1884B03ADA -:2005B000D0A01C15E0BFFB171006923AE0BFFC171887883A00A182341885883AE0BFFE157C -:2005B800000B883A010000B42105E60400219D00008000371081000C1004C03A11003FCC55 -:2005C000D0A01B17D8000415D8000315D800021500C4E204D8C00115D880001501C17B8423 -:2005C800E1BFFE17E17FFF170021A180D0A01B171006D63AD0A01B171004D43A11003FCCFE -:2005D000D0A01B171004D23A11403FCCD0A01B1710803FCCD8800015280F883A200D883A5B -:2005D800180B883A010000B42108E50400207E8000800044008028350005883A00802B35F1 -:2005E0000001883AE037883ADFC00117DF000017DEC00204F800283ADEFFF804DFC0071520 -:2005E800DF000615DF000604E13FFB15E03FFF1500802A37D0A01D1500802937D0A01E15A7 -:2005F000D0A01D171080004C1080005810006D1ED0A01E171080400C1080402010803FCCDC -:2005F800E0BFFE15D0A01E171084000C1084002010803FCCE0BFFD15E0BFFE1710001F26E3 -:2006000000800044E0BFFF1500A0041410C0003700800234108040041880161E00A0051495 -:20060800108000371007883A00BFFFF41886703A0080403418800F1E00A00A1410800037FA -:20061000D0E01C1710C00B1EE0BFFF1710800B34E0BFFF15E0FFFF1700BFFF7410BFFFC4FE -:200618001884703AE0BFFF15E0BFFF1710800094E0BFFF15D0201E15D0201D15E0BFFD1745 -:200620001000402600800044E0BFFF15D0A01E171080200C108020181000381ED0A01E1799 -:200628001082000C108200181000341E00A00914108000371004D63A10C03FCC00A00914C8 -:20063000108000371004D23A10BFC00C1886B03A00A00914108000371004923A10803FEC81 -:200638001886B03A00A00914108000371004963A1884B03A1004D63A1080021810001F1E11 -:2006400000A2001410C00B0400A0001411000B04D0A01D171004D4BA108FFFCC117FFD44B0 -:2006480000800044D880001501C00044280D883A200B883A1809883A0021CD40D0A01D17C3 -:200650001004D4BA108FFFCC10BFFFC4100494BAE0FFFF171884B03AE0BFFF15D0A01D17B8 -:20065800108000ECE0FFFF171884B03AE0BFFF15E0BFFF1710800094E0BFFF15D0201E1529 -:20066000D0201D150005883A00802A3500802A37E0BFFC15E0BFFC17103FFC1ED0A01E1761 -:200668001000051EE0BFFF1710800054008028350005883A00802B350001883AE037883A86 -:20067000DFC00117DF000017DEC00204F800283ADEFFFB04DFC00415DF000315DF0003044E -:20067800E13FFF15E17FFE15D8000015E1FFFE17E1BFFF17000B883A0009883A0021EE007C -:200680000001883AE037883ADFC00117DF000017DEC00204F800283ADEFFFA04DFC005157F -:20068800DF000415DF000404E13FFF15E17FFE15E1BFFD15E1FFFC15E080041700802035D9 -:20069000E080051700802135E080061700802235E0BFFD1700802435E0BFFE17008025358A -:20069800E080021700802635E0800317008027350080004400802835E1FFFC17E1BFFD1750 -:2006A000E17FFE17E13FFF170021AA400001883AE037883ADFC00117DF000017DEC0020497 -:2006A800F800283ADEFFF704DF000815DF000804E13FFB15E17FFA15E1BFF915E1FFF815DF -:2006B000008A4437E0BFFF8D00800204008A5035008A0037E0BFFF8D008A0437E0BFFF8D89 -:2006B800E0BFFB171000031E00845004008A00350000020600805004008A0035008800374F -:2006C000E0BFFE1500804034108012C400880835E0BFFA171006943AE0BFF9171004D43AE4 -:2006C8001885883A1006D63AE0BFFA171008943AE0BFF9171004D43A2085883A1004D23A9F -:2006D00010BFC00C1886B03AE0BFFA171008943AE0BFF9171004D43A2085883A1004923A39 -:2006D80010803FEC1886B03AE0BFFA171008943AE0BFF9171004D43A2085883A1004963A0D -:2006E0001884B03AE0BFFD15E0BFF9171004943A1006D63AE0BFF9171004943A1004D23A5B -:2006E80010BFC00C1884B03AE0BFFC15E0BFFD1700880C35E0BFFC1700881035008003049F -:2006F00000885C35E0BFF8170088143500803C0400881C35008004040088203500803C0494 -:2006F8000088243500800404008828350080020400882C350080020400883035008002042C -:200700000088343500800104008838350088E837E0BFFE150088EC37E0BFFE150001883AF5 -:20070800E037883ADF000017DEC00104F800283ADEFFFB04DFC00415DF000315DF00030494 -:200710000080FBC4E0BFFF150080F037E0BFFE15E0BFFE1710A0002CE0BFFD150020848019 -:200718001007883AE0BFFF1710C5883AE0BFFF150080F037E0BFFE15E0BFFE1710A0002C00 -:20072000E0BFFE150080E0371080004C1005003A10803FCC0080E035E0FFFE17E0BFFD176E -:200728001880041E002084801007883AE0BFFF1718BFEF36E0FFFE17E0BFFD171884F03ADC -:20073000E037883ADFC00117DF000017DEC00204F800283A208000CCD8C000171000101ECC -:20073800288000CC10000E1E30000B2639C5883A18C7883A108F883A18C7883A0011883A5A -:2007400028800037208000354200004429CB883A20C9883A41BFFA1E00800044F800283AC8 -:200748000005883AF800283A20001A16000F883A2800020E014BC83A39C0005C200D883A85 -:2007500000C000442900092E0080080400C000440000010610001226294B883A10BFFFC47E -:2007580018C7883A293FFB3618000D260005883A31400236314DC83A10C4B03A1806D07AE6 -:20076000280AD07A183FFA1E380001260085C83AF800283A0109C83A01C00044003FE40614 -:200768000005883A003FF80620001A16000F883A2005883A2800010E014BC83A00C00044DC -:200770002900092E0180080400C000440000010630000D26294B883A31BFFFC418C7883A84 -:20077800293FFB36180008261806D07A114001361145C83A280AD07A183FFB1E38000126EF -:200780000085C83AF800283A2005883A383FFD26003FFB060109C83A01C00044003FE4067D -:20078800200D883A2900152E280014160080080400C000440000020610000E262800051685 -:20079000294B883A10BFFFC418C7883A293FFA36180008260005883A31400236314DC83A12 -:2007980010C4B03A1806D07A280AD07A183FFA1EF800283A0005883AF800283A00C00044B1 -:2007A000003FF4062005883A2900132E280012160180080400C000440000020630000C2664 -:2007A80028000516294B883A31BFFFC418C7883A293FFA36180006261806D07A1140013698 -:2007B0001145C83A280AD07A183FFB1EF800283A2005883AF800283A00C00044003FF6060B -:2007B800DEFFF904DFC00615DF000515DF000504E13FFF15E17FFE15E1BFFD15E1FFFC1562 -:2007C000E0800217D8800015E1FFFC17E1BFFD17E17FFE17E13FFF1700220900E037883ADD -:2007C800DFC00117DF000017DEC00204F800283ADEFFF904DF000615DF000604E13FFB1579 -:2007D000E17FFA15E0BFFA17E0BFFF150005303AE0BFFE15E0FFFE1700BFFF841884703A9A -:2007D8001001703AE0BFFE17E0BFFD1500C00044E0BFFF171884983A1007883AD0A01F173B -:2007E0001884B03AD0A01F15D0A01F17100170FAE0BFFD17E0BFFC15E0BFFC171001703ADE -:2007E8000005883A0001883AE037883ADF000017DEC00104F800283ADEFFF904DF000615C7 -:2007F000DF000604E13FFB15E17FFA15E0BFFA17E0BFFF150005303AE0BFFE15E0FFFE17E9 -:2007F80000BFFF841884703A1001703AE0BFFE17E0BFFD1500C00044E0BFFF171884983A12 -:200800000084303A1007883AD0A01F171884703AD0A01F15D0A01F17100170FAE0BFFD17AD -:20080800E0BFFC15E0BFFC171001703A0005883A0001883AE037883ADF000017DEC00104B7 -:20081000F800283ADEFFFC04DF000315DF000304E13FFE15E17FFD15000530FAE0BFFF152D -:2008180000C00044E0BFFD171884983A1007883AE0BFFF171884703A1004C03A10803FCC1E -:20082000E037883ADF000017DEC00104F800283ADEFFF504DFC00A15DF000915DF0009046F -:20082800E13FFA15E17FF915E1BFF815E1FFF71500BFFA84E0BFFF15E0BFF917E0BFFE1529 -:20083000E0BFFE17108008081000241E0005303AE0BFFC15E0FFFC1700BFFF841884703A69 -:200838001001703AE0BFFC17E0BFFD15E0BFFE17100890FAE0FFF817008000B42085883AA3 -:2008400010C90D15E0BFFE17100890FAE0FFF717008000B42085883A10C90E15E0BFF81715 -:2008480010000526E0BFFE17100B883AE13FFA170021F30000000406E0BFFE17100B883AE4 -:20085000E13FFA170021FB80E0BFFF15E0BFFD17E0BFFB15E0BFFB171001703AE0BFFF1785 -:20085800E037883ADFC00117DF000017DEC00204F800283ADEFFFC04DF000315DF00030442 -:20086000E13FFF15E17FFE15E1BFFD15E0FFFE17E0BFFF1718800C2600000806E0FFFF17A9 -:2008680018800104E0BFFF15E0BFFE1711000104E13FFE1518C0001710C00015E0FFFE175B -:20087000E0BFFD1718BFF51E0001883AE037883ADF000017DEC00104F800283ADEFFFE045D -:20087800DFC00115DF000015D839883A018000B43188F804014000B42948EC04010000B4EF -:200880002108F80400221740018000B431808904014000B429400804010000B421000804FB -:2008880000221740018000B43188EC04014000B42948D704010000B42108D7040022174086 -:200890000022284000222A400001883AE037883ADFC00117DF000017DEC00204F800283AEB -:20089800DEFFFF04DF000015D839883A000170FA0001883AE037883ADF000017DEC00104F9 -:2008A000F800283ADEFFFF04DF000015D839883A0001883AE037883ADF000017DEC0010402 -:2008A800F800283ADEFFFF04DF000015D839883A0001883AE037883ADF000017DEC00104FA -:2008B000F800283ADEFFFE04DF000115DF000104E13FFF15E0BFFF1710BFFE8410C00428E0 -:2008B8001800191E100690BA008000B41885883A1088BE171000683A000223380002233805 -:2008C0000002234800022348000223480002233800022340000223480002233800022338E8 -:2008C8000002234800022338000223400002234800022348000223380080004400000306DD -:2008D0000005883A000001060005883AE037883ADF000017DEC00104F800283A5F626E7503 -:2008D8002079736F000A6425535050300000000053505031000000006B6361626E616C706F -:2008E00064252065646F6E20632520656425204E0000000A7574657373745F7069203A65DC -:2008E80064253D702E64252E252E642500000A64000000000000000000000000000000008B -:2008F0000000000000000000000000000000000000000000000000000000000000000000E8 -:2008F8000000002A00021270000212D00002133000022368000223700000800000008800DF -:2009000000080100FFFF000001000000FFFFFFFF00000000000000000000000000000000D3 -:200908000000000000000000000000000000000000000000000000000000000000000000CF -:200910000000000000000000000000000000000000000000000000000000000000000000C7 -:200918000000000000000000000000000000000000000000000000000000000000000000BF -:200920000000000000000000000000000000000000000000000000000000000000000000B7 -:200928000000000000000000000000000000000000000000000000000000000000000000AF -:200930000000000000000000000000000000000000000000000000000000000000000000A7 -:2009380000000000000000000000000000000000000000000000000000000000000000009F -:20094000000000000000000000000000000000000000000000000000000000000000000097 -:2009480000000000000000000000000000000000000000000000000000000000000000008F -:20095000000000000000000000000000000000000000000000000000000000000000000087 -:2009580000000000000000000000000000000000000000000000000000000000000000007F -:20096000000000000000000000000000000000000000000000000000000000000000000077 -:2009680000000000000000000000000000000000000000000000000000000000000000006F -:20097000000000000000000000000000000000000000000000000000000000000000000067 -:2009780000000000000000000000000000000000000000000000000000000000000000005F -:20098000000000000000000000000000000000000000000000000000000000000000000057 -:2009880000000000000000000000000000000000000000000000000000000000000000004F -:20099000000000000000000000000000000000000000000000000000000000000000000047 -:2009980000000000000000000000000000000000000000000000000000000000000000003F -:2009A000000000000000000000000000000000000000000000000000000000000000000037 -:2009A80000000000000000000000000000000000000000000000000000000000000000002F -:2009B000000000000000000000000000000000000000000000000000000000000000000027 -:2009B80000000000000000000000000000000000000000000000000000000000000000001F -:2009C000000000000000000000000000000000000000000000000000000000000000000017 -:2009C80000000000000000000000000000000000000000000000000000000000000000000F -:2009D000000000000000000000000000000000000000000000000000000000000000000007 -:2009D8000000000000000000000000000000000000000000000000000000000000000000FF -:2009E0000000000000000000000000000000000000000000000000000000000000000000F7 -:2009E8000000000000000000000000000000000000000000000000000000000000000000EF -:2009F0000000000000000000000000000000000000000000000000000000000000000000E7 -:2009F8000000000000000000000000000000000000000000000000000000000000000000DF -:200A00000000000000000000000000000000000000000000000000000000000000000000D6 -:200A08000000000000000000000000000000000000000000000000000000000000000000CE -:200A10000000000000000000000000000000000000000000000000000000000000000000C6 -:200A18000000000000000000000000000000000000000000000000000000000000000000BE -:200A20000000000000000000000000000000000000000000000000000000000000000000B6 -:200A28000000000000000000000000000000000000000000000000000000000000000000AE -:200A30000000000000000000000000000000000000000000000000000000000000000000A6 -:200A380000000000000000000000000000000000000000000000000000000000000000009E -:200A4000000000000000000000000000000000000000000000000000000000000000000096 -:200A480000000000000000000000000000000000000000000000000000000000000000008E -:200A5000000000000000000000000000000000000000000000000000000000000000000086 -:200A580000000000000000000000000000000000000000000000000000000000000000007E -:200A6000000000000000000000000000000000000000000000000000000000000000000076 -:200A680000000000000000000000000000000000000000000000000000000000000000006E -:200A7000000000000000000000000000000000000000000000000000000000000000000066 -:200A780000000000000000000000000000000000000000000000000000000000000000005E -:200A8000000000000000000000000000000000000000000000000000000000000000000056 -:200A880000000000000000000000000000000000000000000000000000000000000000004E -:200A9000000000000000000000000000000000000000000000000000000000000000000046 -:200A980000000000000000000000000000000000000000000000000000000000000000003E -:200AA000000000000000000000000000000000000000000000000000000000000000000036 -:200AA80000000000000000000000000000000000000000000000000000000000000000002E -:200AB000000000000000000000000000000000000000000000000000000000000000000026 -:200AB80000000000000000000000000000000000000000000000000000000000000000001E -:200AC000000000000000000000000000000000000000000000000000000000000000000016 -:200AC80000000000000000000000000000000000000000000000000000000000000000000E -:200AD000000000000000000000000000000000000000000000000000000000000000000006 -:200AD8000000000000000000000000000000000000000000000000000000000000000000FE -:200AE0000000000000000000000000000000000000000000000000000000000000000000F6 -:200AE8000000000000000000000000000000000000000000000000000000000000000000EE -:200AF0000000000000000000000000000000000000000000000000000000000000000000E6 -:200AF8000000000000000000000000000000000000000000000000000000000000000000DE -:200B00000000000000000000000000000000000000000000000000000000000000000000D5 -:200B08000000000000000000000000000000000000000000000000000000000000000000CD -:200B10000000000000000000000000000000000000000000000000000000000000000000C5 -:200B18000000000000000000000000000000000000000000000000000000000000000000BD -:200B20000000000000000000000000000000000000000000000000000000000000000000B5 -:200B28000000000000000000000000000000000000000000000000000000000000000000AD -:200B30000000000000000000000000000000000000000000000000000000000000000000A5 -:200B380000000000000000000000000000000000000000000000000000000000000000009D -:200B4000000000000000000000000000000000000000000000000000000000000000000095 -:200B480000000000000000000000000000000000000000000000000000000000000000008D -:200B5000000000000000000000000000000000000000000000000000000000000000000085 -:200B580000000000000000000000000000000000000000000000000000000000000000007D -:200B6000000000000000000000000000000000000000000000000000000000000000000075 -:200B680000000000000000000000000000000000000000000000000000000000000000006D -:200B7000000000000000000000000000000000000000000000000000000000000000000065 -:200B780000000000000000000000000000000000000000000000000000000000000000005D -:200B8000000000000000000000000000000000000000000000000000000000000000000055 -:200B880000000000000000000000000000000000000000000000000000000000000000004D -:200B9000000000000000000000000000000000000000000000000000000000000000000045 -:200B980000000000000000000000000000000000000000000000000000000000000000003D -:200BA000000000000000000000000000000000000000000000000000000000000000000035 -:200BA80000000000000000000000000000000000000000000000000000000000000000002D -:200BB000000000000000000000000000000000000000000000000000000000000000000025 -:200BB80000000000000000000000000000000000000000000000000000000000000000001D -:200BC000000000000000000000000000000000000000000000000000000000000000000015 -:200BC80000000000000000000000000000000000000000000000000000000000000000000D -:200BD000000000000000000000000000000000000000000000000000000000000000000005 -:200BD8000000000000000000000000000000000000000000000000000000000000000000FD -:200BE0000000000000000000000000000000000000000000000000000000000000000000F5 -:200BE8000000000000000000000000000000000000000000000000000000000000000000ED -:200BF0000000000000000000000000000000000000000000000000000000000000000000E5 -:200BF8000000000000000000000000000000000000000000000000000000000000000000DD -:200C00000000000000000000000000000000000000000000000000000000000000000000D4 -:200C08000000000000000000000000000000000000000000000000000000000000000000CC -:200C10000000000000000000000000000000000000000000000000000000000000000000C4 -:200C18000000000000000000000000000000000000000000000000000000000000000000BC -:200C20000000000000000000000000000000000000000000000000000000000000000000B4 -:200C28000000000000000000000000000000000000000000000000000000000000000000AC -:200C30000000000000000000000000000000000000000000000000000000000000000000A4 -:200C380000000000000000000000000000000000000000000000000000000000000000009C -:200C4000000000000000000000000000000000000000000000000000000000000000000094 -:200C480000000000000000000000000000000000000000000000000000000000000000008C -:200C5000000000000000000000000000000000000000000000000000000000000000000084 -:200C580000000000000000000000000000000000000000000000000000000000000000007C -:200C6000000000000000000000000000000000000000000000000000000000000000000074 -:200C680000000000000000000000000000000000000000000000000000000000000000006C -:200C7000000000000000000000000000000000000000000000000000000000000000000064 -:200C780000000000000000000000000000000000000000000000000000000000000000005C -:200C8000000000000000000000000000000000000000000000000000000000000000000054 -:200C880000000000000000000000000000000000000000000000000000000000000000004C -:200C9000000000000000000000000000000000000000000000000000000000000000000044 -:200C980000000000000000000000000000000000000000000000000000000000000000003C -:200CA000000000000000000000000000000000000000000000000000000000000000000034 -:200CA80000000000000000000000000000000000000000000000000000000000000000002C -:200CB000000000000000000000000000000000000000000000000000000000000000000024 -:200CB80000000000000000000000000000000000000000000000000000000000000000001C -:200CC000000000000000000000000000000000000000000000000000000000000000000014 -:200CC80000000000000000000000000000000000000000000000000000000000000000000C -:200CD000000000000000000000000000000000000000000000000000000000000000000004 -:200CD8000000000000000000000000000000000000000000000000000000000000000000FC -:200CE0000000000000000000000000000000000000000000000000000000000000000000F4 -:200CE8000000000000000000000000000000000000000000000000000000000000000000EC -:200CF0000000000000000000000000000000000000000000000000000000000000000000E4 -:200CF8000000000000000000000000000000000000000000000000000000000000000000DC -:200D00000000000000000000000000000000000000000000000000000000000000000000D3 -:200D08000000000000000000000000000000000000000000000000000000000000000000CB -:200D10000000000000000000000000000000000000000000000000000000000000000000C3 -:200D18000000000000000000000000000000000000000000000000000000000000000000BB -:200D20000000000000000000000000000000000000000000000000000000000000000000B3 -:200D28000000000000000000000000000000000000000000000000000000000000000000AB -:200D30000000000000000000000000000000000000000000000000000000000000000000A3 -:200D380000000000000000000000000000000000000000000000000000000000000000009B -:200D4000000000000000000000000000000000000000000000000000000000000000000093 -:200D480000000000000000000000000000000000000000000000000000000000000000008B -:200D5000000000000000000000000000000000000000000000000000000000000000000083 -:200D580000000000000000000000000000000000000000000000000000000000000000007B -:200D6000000000000000000000000000000000000000000000000000000000000000000073 -:200D680000000000000000000000000000000000000000000000000000000000000000006B -:200D7000000000000000000000000000000000000000000000000000000000000000000063 -:200D780000000000000000000000000000000000000000000000000000000000000000005B -:200D8000000000000000000000000000000000000000000000000000000000000000000053 -:200D880000000000000000000000000000000000000000000000000000000000000000004B -:200D9000000000000000000000000000000000000000000000000000000000000000000043 -:200D980000000000000000000000000000000000000000000000000000000000000000003B -:200DA000000000000000000000000000000000000000000000000000000000000000000033 -:200DA80000000000000000000000000000000000000000000000000000000000000000002B -:200DB000000000000000000000000000000000000000000000000000000000000000000023 -:200DB80000000000000000000000000000000000000000000000000000000000000000001B -:200DC000000000000000000000000000000000000000000000000000000000000000000013 -:200DC80000000000000000000000000000000000000000000000000000000000000000000B -:200DD000000000000000000000000000000000000000000000000000000000000000000003 -:200DD8000000000000000000000000000000000000000000000000000000000000000000FB -:200DE0000000000000000000000000000000000000000000000000000000000000000000F3 -:200DE8000000000000000000000000000000000000000000000000000000000000000000EB -:200DF0000000000000000000000000000000000000000000000000000000000000000000E3 -:200DF8000000000000000000000000000000000000000000000000000000000000000000DB -:200E00000000000000000000000000000000000000000000000000000000000000000000D2 -:200E08000000000000000000000000000000000000000000000000000000000000000000CA -:200E10000000000000000000000000000000000000000000000000000000000000000000C2 -:200E18000000000000000000000000000000000000000000000000000000000000000000BA -:200E20000000000000000000000000000000000000000000000000000000000000000000B2 -:200E28000000000000000000000000000000000000000000000000000000000000000000AA -:200E30000000000000000000000000000000000000000000000000000000000000000000A2 -:200E380000000000000000000000000000000000000000000000000000000000000000009A -:200E4000000000000000000000000000000000000000000000000000000000000000000092 -:200E480000000000000000000000000000000000000000000000000000000000000000008A -:200E5000000000000000000000000000000000000000000000000000000000000000000082 -:200E580000000000000000000000000000000000000000000000000000000000000000007A -:200E6000000000000000000000000000000000000000000000000000000000000000000072 -:200E680000000000000000000000000000000000000000000000000000000000000000006A -:200E7000000000000000000000000000000000000000000000000000000000000000000062 -:200E780000000000000000000000000000000000000000000000000000000000000000005A -:200E8000000000000000000000000000000000000000000000000000000000000000000052 -:200E880000000000000000000000000000000000000000000000000000000000000000004A -:200E9000000000000000000000000000000000000000000000000000000000000000000042 -:200E980000000000000000000000000000000000000000000000000000000000000000003A -:200EA000000000000000000000000000000000000000000000000000000000000000000032 -:200EA80000000000000000000000000000000000000000000000000000000000000000002A -:200EB000000000000000000000000000000000000000000000000000000000000000000022 -:200EB80000000000000000000000000000000000000000000000000000000000000000001A -:200EC000000000000000000000000000000000000000000000000000000000000000000012 -:200EC80000000000000000000000000000000000000000000000000000000000000000000A -:200ED000000000000000000000000000000000000000000000000000000000000000000002 -:200ED8000000000000000000000000000000000000000000000000000000000000000000FA -:200EE0000000000000000000000000000000000000000000000000000000000000000000F2 -:200EE8000000000000000000000000000000000000000000000000000000000000000000EA -:200EF0000000000000000000000000000000000000000000000000000000000000000000E2 -:200EF8000000000000000000000000000000000000000000000000000000000000000000DA -:200F00000000000000000000000000000000000000000000000000000000000000000000D1 -:200F08000000000000000000000000000000000000000000000000000000000000000000C9 -:200F10000000000000000000000000000000000000000000000000000000000000000000C1 -:200F18000000000000000000000000000000000000000000000000000000000000000000B9 -:200F20000000000000000000000000000000000000000000000000000000000000000000B1 -:200F28000000000000000000000000000000000000000000000000000000000000000000A9 -:200F30000000000000000000000000000000000000000000000000000000000000000000A1 -:200F3800000000000000000000000000000000000000000000000000000000000000000099 -:200F4000000000000000000000000000000000000000000000000000000000000000000091 -:200F4800000000000000000000000000000000000000000000000000000000000000000089 -:200F5000000000000000000000000000000000000000000000000000000000000000000081 -:200F5800000000000000000000000000000000000000000000000000000000000000000079 -:200F6000000000000000000000000000000000000000000000000000000000000000000071 -:200F6800000000000000000000000000000000000000000000000000000000000000000069 -:200F7000000000000000000000000000000000000000000000000000000000000000000061 -:200F7800000000000000000000000000000000000000000000000000000000000000000059 -:200F8000000000000000000000000000000000000000000000000000000000000000000051 -:200F8800000000000000000000000000000000000000000000000000000000000000000049 -:200F9000000000000000000000000000000000000000000000000000000000000000000041 -:200F9800000000000000000000000000000000000000000000000000000000000000000039 -:200FA000000000000000000000000000000000000000000000000000000000000000000031 -:200FA800000000000000000000000000000000000000000000000000000000000000000029 -:200FB000000000000000000000000000000000000000000000000000000000000000000021 -:200FB800000000000000000000000000000000000000000000000000000000000000000019 -:200FC000000000000000000000000000000000000000000000000000000000000000000011 -:200FC800000000000000000000000000000000000000000000000000000000000000000009 -:200FD000000000000000000000000000000000000000000000000000000000000000000001 -:200FD8000000000000000000000000000000000000000000000000000000000000000000F9 -:200FE0000000000000000000000000000000000000000000000000000000000000000000F1 -:200FE8000000000000000000000000000000000000000000000000000000000000000000E9 -:200FF0000000000000000000000000000000000000000000000000000000000000000000E1 -:200FF8000000000000000000000000000000000000000000000000000000000000000000D9 -:201000000000000000000000000000000000000000000000000000000000000000000000D0 -:201008000000000000000000000000000000000000000000000000000000000000000000C8 -:201010000000000000000000000000000000000000000000000000000000000000000000C0 -:201018000000000000000000000000000000000000000000000000000000000000000000B8 -:201020000000000000000000000000000000000000000000000000000000000000000000B0 -:201028000000000000000000000000000000000000000000000000000000000000000000A8 -:201030000000000000000000000000000000000000000000000000000000000000000000A0 -:20103800000000000000000000000000000000000000000000000000000000000000000098 -:20104000000000000000000000000000000000000000000000000000000000000000000090 -:20104800000000000000000000000000000000000000000000000000000000000000000088 -:20105000000000000000000000000000000000000000000000000000000000000000000080 -:20105800000000000000000000000000000000000000000000000000000000000000000078 -:20106000000000000000000000000000000000000000000000000000000000000000000070 -:20106800000000000000000000000000000000000000000000000000000000000000000068 -:20107000000000000000000000000000000000000000000000000000000000000000000060 -:20107800000000000000000000000000000000000000000000000000000000000000000058 -:20108000000000000000000000000000000000000000000000000000000000000000000050 -:20108800000000000000000000000000000000000000000000000000000000000000000048 -:20109000000000000000000000000000000000000000000000000000000000000000000040 -:20109800000000000000000000000000000000000000000000000000000000000000000038 -:2010A000000000000000000000000000000000000000000000000000000000000000000030 -:2010A800000000000000000000000000000000000000000000000000000000000000000028 -:2010B000000000000000000000000000000000000000000000000000000000000000000020 -:2010B800000000000000000000000000000000000000000000000000000000000000000018 -:2010C000000000000000000000000000000000000000000000000000000000000000000010 -:2010C800000000000000000000000000000000000000000000000000000000000000000008 -:2010D000000000000000000000000000000000000000000000000000000000000000000000 -:2010D8000000000000000000000000000000000000000000000000000000000000000000F8 -:2010E0000000000000000000000000000000000000000000000000000000000000000000F0 -:2010E8000000000000000000000000000000000000000000000000000000000000000000E8 -:2010F0000000000000000000000000000000000000000000000000000000000000000000E0 -:2010F8000000000000000000000000000000000000000000000000000000000000000000D8 -:201100000000000000000000000000000000000000000000000000000000000000000000CF -:201108000000000000000000000000000000000000000000000000000000000000000000C7 -:201110000000000000000000000000000000000000000000000000000000000000000000BF -:201118000000000000000000000000000000000000000000000000000000000000000000B7 -:201120000000000000000000000000000000000000000000000000000000000000000000AF -:201128000000000000000000000000000000000000000000000000000000000000000000A7 -:2011300000000000000000000000000000000000000000000000000000000000000000009F -:20113800000000000000000000000000000000000000000000000000000000000000000097 -:2011400000000000000000000000000000000000000000000000000000000000000000008F -:20114800000000000000000000000000000000000000000000000000000000000000000087 -:2011500000000000000000000000000000000000000000000000000000000000000000007F -:20115800000000000000000000000000000000000000000000000000000000000000000077 -:2011600000000000000000000000000000000000000000000000000000000000000000006F -:20116800000000000000000000000000000000000000000000000000000000000000000067 -:2011700000000000000000000000000000000000000000000000000000000000000000005F -:20117800000000000000000000000000000000000000000000000000000000000000000057 -:2011800000000000000000000000000000000000000000000000000000000000000000004F -:20118800000000000000000000000000000000000000000000000000000000000000000047 -:2011900000000000000000000000000000000000000000000000000000000000000000003F -:20119800000000000000000000000000000000000000000000000000000000000000000037 -:2011A00000000000000000000000000000000000000000000000000000000000000000002F -:2011A800000000000000000000000000000000000000000000000000000000000000000027 -:2011B00000000000000000000000000000000000000000000000000000000000000000001F -:2011B800000000000000000000000000000000000000000000000000000000000000000017 -:2011C00000000000000000000000000000000000000000000000000000000000000000000F -:2011C800000000000000000000000000000000000000000000000000000000000000000007 -:2011D0000000000000000000000000000000000000000000000000000000000000000000FF -:2011D8000000000000000000000000000000000000000000000000000000000000000000F7 -:2011E0000000000000000000000000000000000000000000000000000000000000000000EF -:2011E8000000000000000000000000000000000000000000000000000000000000000000E7 -:2011F0000000000000000000000000000000000000000000000000000000000000000000DF -:2011F8000000000000000000000000000000000000000000000000000000000000000000D7 -:201200000000000000000000000000000000000000000000000000000000000000000000CE -:201208000000000000000000000000000000000000000000000000000000000000000000C6 -:201210000000000000000000000000000000000000000000000000000000000000000000BE -:201218000000000000000000000000000000000000000000000000000000000000000000B6 -:201220000000000000000000000000000000000000000000000000000000000000000000AE -:201228000000000000000000000000000000000000000000000000000000000000000000A6 -:2012300000000000000000000000000000000000000000000000000000000000000000009E -:20123800000000000000000000000000000000000000000000000000000000000000000096 -:2012400000000000000000000000000000000000000000000000000000000000000000008E -:20124800000000000000000000000000000000000000000000000000000000000000000086 -:2012500000000000000000000000000000000000000000000000000000000000000000007E -:20125800000000000000000000000000000000000000000000000000000000000000000076 -:2012600000000000000000000000000000000000000000000000000000000000000000006E -:20126800000000000000000000000000000000000000000000000000000000000000000066 -:2012700000000000000000000000000000000000000000000000000000000000000000005E -:20127800000000000000000000000000000000000000000000000000000000000000000056 -:2012800000000000000000000000000000000000000000000000000000000000000000004E -:20128800000000000000000000000000000000000000000000000000000000000000000046 -:2012900000000000000000000000000000000000000000000000000000000000000000003E -:20129800000000000000000000000000000000000000000000000000000000000000000036 -:2012A00000000000000000000000000000000000000000000000000000000000000000002E -:2012A800000000000000000000000000000000000000000000000000000000000000000026 -:2012B00000000000000000000000000000000000000000000000000000000000000000001E -:2012B800000000000000000000000000000000000000000000000000000000000000000016 -:2012C00000000000000000000000000000000000000000000000000000000000000000000E -:2012C800000000000000000000000000000000000000000000000000000000000000000006 -:2012D0000000000000000000000000000000000000000000000000000000000000000000FE -:2012D8000000000000000000000000000000000000000000000000000000000000000000F6 -:2012E0000000000000000000000000000000000000000000000000000000000000000000EE -:2012E8000000000000000000000000000000000000000000000000000000000000000000E6 -:2012F0000000000000000000000000000000000000000000000000000000000000000000DE -:2012F8000000000000000000000000000000000000000000000000000000000000000000D6 -:201300000000000000000000000000000000000000000000000000000000000000000000CD -:201308000000000000000000000000000000000000000000000000000000000000000000C5 -:201310000000000000000000000000000000000000000000000000000000000000000000BD -:201318000000000000000000000000000000000000000000000000000000000000000000B5 -:201320000000000000000000000000000000000000000000000000000000000000000000AD -:201328000000000000000000000000000000000000000000000000000000000000000000A5 -:2013300000000000000000000000000000000000000000000000000000000000000000009D -:20133800000000000000000000000000000000000000000000000000000000000000000095 -:2013400000000000000000000000000000000000000000000000000000000000000000008D -:20134800000000000000000000000000000000000000000000000000000000000000000085 -:2013500000000000000000000000000000000000000000000000000000000000000000007D -:20135800000000000000000000000000000000000000000000000000000000000000000075 -:2013600000000000000000000000000000000000000000000000000000000000000000006D -:20136800000000000000000000000000000000000000000000000000000000000000000065 -:2013700000000000000000000000000000000000000000000000000000000000000000005D -:20137800000000000000000000000000000000000000000000000000000000000000000055 -:2013800000000000000000000000000000000000000000000000000000000000000000004D -:20138800000000000000000000000000000000000000000000000000000000000000000045 -:2013900000000000000000000000000000000000000000000000000000000000000000003D -:20139800000000000000000000000000000000000000000000000000000000000000000035 -:2013A00000000000000000000000000000000000000000000000000000000000000000002D -:2013A800000000000000000000000000000000000000000000000000000000000000000025 -:2013B00000000000000000000000000000000000000000000000000000000000000000001D -:2013B800000000000000000000000000000000000000000000000000000000000000000015 -:2013C00000000000000000000000000000000000000000000000000000000000000000000D -:2013C800000000000000000000000000000000000000000000000000000000000000000005 -:2013D0000000000000000000000000000000000000000000000000000000000000000000FD -:2013D8000000000000000000000000000000000000000000000000000000000000000000F5 -:2013E0000000000000000000000000000000000000000000000000000000000000000000ED -:2013E8000000000000000000000000000000000000000000000000000000000000000000E5 -:2013F0000000000000000000000000000000000000000000000000000000000000000000DD -:2013F8000000000000000000000000000000000000000000000000000000000000000000D5 -:201400000000000000000000000000000000000000000000000000000000000000000000CC -:201408000000000000000000000000000000000000000000000000000000000000000000C4 -:201410000000000000000000000000000000000000000000000000000000000000000000BC -:201418000000000000000000000000000000000000000000000000000000000000000000B4 -:201420000000000000000000000000000000000000000000000000000000000000000000AC -:201428000000000000000000000000000000000000000000000000000000000000000000A4 -:2014300000000000000000000000000000000000000000000000000000000000000000009C -:20143800000000000000000000000000000000000000000000000000000000000000000094 -:2014400000000000000000000000000000000000000000000000000000000000000000008C -:20144800000000000000000000000000000000000000000000000000000000000000000084 -:2014500000000000000000000000000000000000000000000000000000000000000000007C -:20145800000000000000000000000000000000000000000000000000000000000000000074 -:2014600000000000000000000000000000000000000000000000000000000000000000006C -:20146800000000000000000000000000000000000000000000000000000000000000000064 -:2014700000000000000000000000000000000000000000000000000000000000000000005C -:20147800000000000000000000000000000000000000000000000000000000000000000054 -:2014800000000000000000000000000000000000000000000000000000000000000000004C -:20148800000000000000000000000000000000000000000000000000000000000000000044 -:2014900000000000000000000000000000000000000000000000000000000000000000003C -:20149800000000000000000000000000000000000000000000000000000000000000000034 -:2014A00000000000000000000000000000000000000000000000000000000000000000002C -:2014A800000000000000000000000000000000000000000000000000000000000000000024 -:2014B00000000000000000000000000000000000000000000000000000000000000000001C -:2014B800000000000000000000000000000000000000000000000000000000000000000014 -:2014C00000000000000000000000000000000000000000000000000000000000000000000C -:2014C800000000000000000000000000000000000000000000000000000000000000000004 -:2014D0000000000000000000000000000000000000000000000000000000000000000000FC -:2014D8000000000000000000000000000000000000000000000000000000000000000000F4 -:2014E0000000000000000000000000000000000000000000000000000000000000000000EC -:2014E8000000000000000000000000000000000000000000000000000000000000000000E4 -:2014F0000000000000000000000000000000000000000000000000000000000000000000DC -:2014F8000000000000000000000000000000000000000000000000000000000000000000D4 -:201500000000000000000000000000000000000000000000000000000000000000000000CB -:201508000000000000000000000000000000000000000000000000000000000000000000C3 -:201510000000000000000000000000000000000000000000000000000000000000000000BB -:201518000000000000000000000000000000000000000000000000000000000000000000B3 -:201520000000000000000000000000000000000000000000000000000000000000000000AB -:201528000000000000000000000000000000000000000000000000000000000000000000A3 -:2015300000000000000000000000000000000000000000000000000000000000000000009B -:20153800000000000000000000000000000000000000000000000000000000000000000093 -:2015400000000000000000000000000000000000000000000000000000000000000000008B -:20154800000000000000000000000000000000000000000000000000000000000000000083 -:2015500000000000000000000000000000000000000000000000000000000000000000007B -:20155800000000000000000000000000000000000000000000000000000000000000000073 -:2015600000000000000000000000000000000000000000000000000000000000000000006B -:20156800000000000000000000000000000000000000000000000000000000000000000063 -:2015700000000000000000000000000000000000000000000000000000000000000000005B -:20157800000000000000000000000000000000000000000000000000000000000000000053 -:2015800000000000000000000000000000000000000000000000000000000000000000004B -:20158800000000000000000000000000000000000000000000000000000000000000000043 -:2015900000000000000000000000000000000000000000000000000000000000000000003B -:20159800000000000000000000000000000000000000000000000000000000000000000033 -:2015A00000000000000000000000000000000000000000000000000000000000000000002B -:2015A800000000000000000000000000000000000000000000000000000000000000000023 -:2015B00000000000000000000000000000000000000000000000000000000000000000001B -:2015B800000000000000000000000000000000000000000000000000000000000000000013 -:2015C00000000000000000000000000000000000000000000000000000000000000000000B -:2015C800000000000000000000000000000000000000000000000000000000000000000003 -:2015D0000000000000000000000000000000000000000000000000000000000000000000FB -:2015D8000000000000000000000000000000000000000000000000000000000000000000F3 -:2015E0000000000000000000000000000000000000000000000000000000000000000000EB -:2015E8000000000000000000000000000000000000000000000000000000000000000000E3 -:2015F0000000000000000000000000000000000000000000000000000000000000000000DB -:2015F8000000000000000000000000000000000000000000000000000000000000000000D3 -:201600000000000000000000000000000000000000000000000000000000000000000000CA -:201608000000000000000000000000000000000000000000000000000000000000000000C2 -:201610000000000000000000000000000000000000000000000000000000000000000000BA -:201618000000000000000000000000000000000000000000000000000000000000000000B2 -:201620000000000000000000000000000000000000000000000000000000000000000000AA -:201628000000000000000000000000000000000000000000000000000000000000000000A2 -:2016300000000000000000000000000000000000000000000000000000000000000000009A -:20163800000000000000000000000000000000000000000000000000000000000000000092 -:2016400000000000000000000000000000000000000000000000000000000000000000008A -:20164800000000000000000000000000000000000000000000000000000000000000000082 -:2016500000000000000000000000000000000000000000000000000000000000000000007A -:20165800000000000000000000000000000000000000000000000000000000000000000072 -:2016600000000000000000000000000000000000000000000000000000000000000000006A -:20166800000000000000000000000000000000000000000000000000000000000000000062 -:2016700000000000000000000000000000000000000000000000000000000000000000005A -:20167800000000000000000000000000000000000000000000000000000000000000000052 -:2016800000000000000000000000000000000000000000000000000000000000000000004A -:20168800000000000000000000000000000000000000000000000000000000000000000042 -:2016900000000000000000000000000000000000000000000000000000000000000000003A -:20169800000000000000000000000000000000000000000000000000000000000000000032 -:2016A00000000000000000000000000000000000000000000000000000000000000000002A -:2016A800000000000000000000000000000000000000000000000000000000000000000022 -:2016B00000000000000000000000000000000000000000000000000000000000000000001A -:2016B800000000000000000000000000000000000000000000000000000000000000000012 -:2016C00000000000000000000000000000000000000000000000000000000000000000000A -:2016C800000000000000000000000000000000000000000000000000000000000000000002 -:2016D0000000000000000000000000000000000000000000000000000000000000000000FA -:2016D8000000000000000000000000000000000000000000000000000000000000000000F2 -:2016E0000000000000000000000000000000000000000000000000000000000000000000EA -:2016E8000000000000000000000000000000000000000000000000000000000000000000E2 -:2016F0000000000000000000000000000000000000000000000000000000000000000000DA -:2016F8000000000000000000000000000000000000000000000000000000000000000000D2 -:201700000000000000000000000000000000000000000000000000000000000000000000C9 -:201708000000000000000000000000000000000000000000000000000000000000000000C1 -:201710000000000000000000000000000000000000000000000000000000000000000000B9 -:201718000000000000000000000000000000000000000000000000000000000000000000B1 -:201720000000000000000000000000000000000000000000000000000000000000000000A9 -:201728000000000000000000000000000000000000000000000000000000000000000000A1 -:20173000000000000000000000000000000000000000000000000000000000000000000099 -:20173800000000000000000000000000000000000000000000000000000000000000000091 -:20174000000000000000000000000000000000000000000000000000000000000000000089 -:20174800000000000000000000000000000000000000000000000000000000000000000081 -:20175000000000000000000000000000000000000000000000000000000000000000000079 -:20175800000000000000000000000000000000000000000000000000000000000000000071 -:20176000000000000000000000000000000000000000000000000000000000000000000069 -:20176800000000000000000000000000000000000000000000000000000000000000000061 -:20177000000000000000000000000000000000000000000000000000000000000000000059 -:20177800000000000000000000000000000000000000000000000000000000000000000051 -:20178000000000000000000000000000000000000000000000000000000000000000000049 -:20178800000000000000000000000000000000000000000000000000000000000000000041 -:20179000000000000000000000000000000000000000000000000000000000000000000039 -:20179800000000000000000000000000000000000000000000000000000000000000000031 -:2017A000000000000000000000000000000000000000000000000000000000000000000029 -:2017A800000000000000000000000000000000000000000000000000000000000000000021 -:2017B000000000000000000000000000000000000000000000000000000000000000000019 -:2017B800000000000000000000000000000000000000000000000000000000000000000011 -:2017C000000000000000000000000000000000000000000000000000000000000000000009 -:2017C800000000000000000000000000000000000000000000000000000000000000000001 -:2017D0000000000000000000000000000000000000000000000000000000000000000000F9 -:2017D8000000000000000000000000000000000000000000000000000000000000000000F1 -:2017E0000000000000000000000000000000000000000000000000000000000000000000E9 -:2017E8000000000000000000000000000000000000000000000000000000000000000000E1 -:2017F0000000000000000000000000000000000000000000000000000000000000000000D9 -:2017F8000000000000000000000000000000000000000000000000000000000000000000D1 -:201800000000000000000000000000000000000000000000000000000000000000000000C8 -:201808000000000000000000000000000000000000000000000000000000000000000000C0 -:201810000000000000000000000000000000000000000000000000000000000000000000B8 -:201818000000000000000000000000000000000000000000000000000000000000000000B0 -:201820000000000000000000000000000000000000000000000000000000000000000000A8 -:201828000000000000000000000000000000000000000000000000000000000000000000A0 -:20183000000000000000000000000000000000000000000000000000000000000000000098 -:20183800000000000000000000000000000000000000000000000000000000000000000090 -:20184000000000000000000000000000000000000000000000000000000000000000000088 -:20184800000000000000000000000000000000000000000000000000000000000000000080 -:20185000000000000000000000000000000000000000000000000000000000000000000078 -:20185800000000000000000000000000000000000000000000000000000000000000000070 -:20186000000000000000000000000000000000000000000000000000000000000000000068 -:20186800000000000000000000000000000000000000000000000000000000000000000060 -:20187000000000000000000000000000000000000000000000000000000000000000000058 -:20187800000000000000000000000000000000000000000000000000000000000000000050 -:20188000000000000000000000000000000000000000000000000000000000000000000048 -:20188800000000000000000000000000000000000000000000000000000000000000000040 -:20189000000000000000000000000000000000000000000000000000000000000000000038 -:20189800000000000000000000000000000000000000000000000000000000000000000030 -:2018A000000000000000000000000000000000000000000000000000000000000000000028 -:2018A800000000000000000000000000000000000000000000000000000000000000000020 -:2018B000000000000000000000000000000000000000000000000000000000000000000018 -:2018B800000000000000000000000000000000000000000000000000000000000000000010 -:2018C000000000000000000000000000000000000000000000000000000000000000000008 -:2018C800000000000000000000000000000000000000000000000000000000000000000000 -:2018D0000000000000000000000000000000000000000000000000000000000000000000F8 -:2018D8000000000000000000000000000000000000000000000000000000000000000000F0 -:2018E0000000000000000000000000000000000000000000000000000000000000000000E8 -:2018E8000000000000000000000000000000000000000000000000000000000000000000E0 -:2018F0000000000000000000000000000000000000000000000000000000000000000000D8 -:2018F8000000000000000000000000000000000000000000000000000000000000000000D0 -:201900000000000000000000000000000000000000000000000000000000000000000000C7 -:201908000000000000000000000000000000000000000000000000000000000000000000BF -:201910000000000000000000000000000000000000000000000000000000000000000000B7 -:201918000000000000000000000000000000000000000000000000000000000000000000AF -:201920000000000000000000000000000000000000000000000000000000000000000000A7 -:2019280000000000000000000000000000000000000000000000000000000000000000009F -:20193000000000000000000000000000000000000000000000000000000000000000000097 -:2019380000000000000000000000000000000000000000000000000000000000000000008F -:20194000000000000000000000000000000000000000000000000000000000000000000087 -:2019480000000000000000000000000000000000000000000000000000000000000000007F -:20195000000000000000000000000000000000000000000000000000000000000000000077 -:2019580000000000000000000000000000000000000000000000000000000000000000006F -:20196000000000000000000000000000000000000000000000000000000000000000000067 -:2019680000000000000000000000000000000000000000000000000000000000000000005F -:20197000000000000000000000000000000000000000000000000000000000000000000057 -:2019780000000000000000000000000000000000000000000000000000000000000000004F -:20198000000000000000000000000000000000000000000000000000000000000000000047 -:2019880000000000000000000000000000000000000000000000000000000000000000003F -:20199000000000000000000000000000000000000000000000000000000000000000000037 -:2019980000000000000000000000000000000000000000000000000000000000000000002F -:2019A000000000000000000000000000000000000000000000000000000000000000000027 -:2019A80000000000000000000000000000000000000000000000000000000000000000001F -:2019B000000000000000000000000000000000000000000000000000000000000000000017 -:2019B80000000000000000000000000000000000000000000000000000000000000000000F -:2019C000000000000000000000000000000000000000000000000000000000000000000007 -:2019C8000000000000000000000000000000000000000000000000000000000000000000FF -:2019D0000000000000000000000000000000000000000000000000000000000000000000F7 -:2019D8000000000000000000000000000000000000000000000000000000000000000000EF -:2019E0000000000000000000000000000000000000000000000000000000000000000000E7 -:2019E8000000000000000000000000000000000000000000000000000000000000000000DF -:2019F0000000000000000000000000000000000000000000000000000000000000000000D7 -:2019F8000000000000000000000000000000000000000000000000000000000000000000CF -:201A00000000000000000000000000000000000000000000000000000000000000000000C6 -:201A08000000000000000000000000000000000000000000000000000000000000000000BE -:201A10000000000000000000000000000000000000000000000000000000000000000000B6 -:201A18000000000000000000000000000000000000000000000000000000000000000000AE -:201A20000000000000000000000000000000000000000000000000000000000000000000A6 -:201A280000000000000000000000000000000000000000000000000000000000000000009E -:201A3000000000000000000000000000000000000000000000000000000000000000000096 -:201A380000000000000000000000000000000000000000000000000000000000000000008E -:201A4000000000000000000000000000000000000000000000000000000000000000000086 -:201A480000000000000000000000000000000000000000000000000000000000000000007E -:201A5000000000000000000000000000000000000000000000000000000000000000000076 -:201A580000000000000000000000000000000000000000000000000000000000000000006E -:201A6000000000000000000000000000000000000000000000000000000000000000000066 -:201A680000000000000000000000000000000000000000000000000000000000000000005E -:201A7000000000000000000000000000000000000000000000000000000000000000000056 -:201A780000000000000000000000000000000000000000000000000000000000000000004E -:201A8000000000000000000000000000000000000000000000000000000000000000000046 -:201A880000000000000000000000000000000000000000000000000000000000000000003E -:201A9000000000000000000000000000000000000000000000000000000000000000000036 -:201A980000000000000000000000000000000000000000000000000000000000000000002E -:201AA000000000000000000000000000000000000000000000000000000000000000000026 -:201AA80000000000000000000000000000000000000000000000000000000000000000001E -:201AB000000000000000000000000000000000000000000000000000000000000000000016 -:201AB80000000000000000000000000000000000000000000000000000000000000000000E -:201AC000000000000000000000000000000000000000000000000000000000000000000006 -:201AC8000000000000000000000000000000000000000000000000000000000000000000FE -:201AD0000000000000000000000000000000000000000000000000000000000000000000F6 -:201AD8000000000000000000000000000000000000000000000000000000000000000000EE -:201AE0000000000000000000000000000000000000000000000000000000000000000000E6 -:201AE8000000000000000000000000000000000000000000000000000000000000000000DE -:201AF0000000000000000000000000000000000000000000000000000000000000000000D6 -:201AF8000000000000000000000000000000000000000000000000000000000000000000CE -:201B00000000000000000000000000000000000000000000000000000000000000000000C5 -:201B08000000000000000000000000000000000000000000000000000000000000000000BD -:201B10000000000000000000000000000000000000000000000000000000000000000000B5 -:201B18000000000000000000000000000000000000000000000000000000000000000000AD -:201B20000000000000000000000000000000000000000000000000000000000000000000A5 -:201B280000000000000000000000000000000000000000000000000000000000000000009D -:201B3000000000000000000000000000000000000000000000000000000000000000000095 -:201B380000000000000000000000000000000000000000000000000000000000000000008D -:201B4000000000000000000000000000000000000000000000000000000000000000000085 -:201B480000000000000000000000000000000000000000000000000000000000000000007D -:201B5000000000000000000000000000000000000000000000000000000000000000000075 -:201B580000000000000000000000000000000000000000000000000000000000000000006D -:201B6000000000000000000000000000000000000000000000000000000000000000000065 -:201B680000000000000000000000000000000000000000000000000000000000000000005D -:201B7000000000000000000000000000000000000000000000000000000000000000000055 -:201B780000000000000000000000000000000000000000000000000000000000000000004D -:201B8000000000000000000000000000000000000000000000000000000000000000000045 -:201B880000000000000000000000000000000000000000000000000000000000000000003D -:201B9000000000000000000000000000000000000000000000000000000000000000000035 -:201B980000000000000000000000000000000000000000000000000000000000000000002D -:201BA000000000000000000000000000000000000000000000000000000000000000000025 -:201BA80000000000000000000000000000000000000000000000000000000000000000001D -:201BB000000000000000000000000000000000000000000000000000000000000000000015 -:201BB80000000000000000000000000000000000000000000000000000000000000000000D -:201BC000000000000000000000000000000000000000000000000000000000000000000005 -:201BC8000000000000000000000000000000000000000000000000000000000000000000FD -:201BD0000000000000000000000000000000000000000000000000000000000000000000F5 -:201BD8000000000000000000000000000000000000000000000000000000000000000000ED -:201BE0000000000000000000000000000000000000000000000000000000000000000000E5 -:201BE8000000000000000000000000000000000000000000000000000000000000000000DD -:201BF0000000000000000000000000000000000000000000000000000000000000000000D5 -:201BF8000000000000000000000000000000000000000000000000000000000000000000CD -:201C00000000000000000000000000000000000000000000000000000000000000000000C4 -:201C08000000000000000000000000000000000000000000000000000000000000000000BC -:201C10000000000000000000000000000000000000000000000000000000000000000000B4 -:201C18000000000000000000000000000000000000000000000000000000000000000000AC -:201C20000000000000000000000000000000000000000000000000000000000000000000A4 -:201C280000000000000000000000000000000000000000000000000000000000000000009C -:201C3000000000000000000000000000000000000000000000000000000000000000000094 -:201C380000000000000000000000000000000000000000000000000000000000000000008C -:201C4000000000000000000000000000000000000000000000000000000000000000000084 -:201C480000000000000000000000000000000000000000000000000000000000000000007C -:201C5000000000000000000000000000000000000000000000000000000000000000000074 -:201C580000000000000000000000000000000000000000000000000000000000000000006C -:201C6000000000000000000000000000000000000000000000000000000000000000000064 -:201C680000000000000000000000000000000000000000000000000000000000000000005C -:201C7000000000000000000000000000000000000000000000000000000000000000000054 -:201C780000000000000000000000000000000000000000000000000000000000000000004C -:201C8000000000000000000000000000000000000000000000000000000000000000000044 -:201C880000000000000000000000000000000000000000000000000000000000000000003C -:201C9000000000000000000000000000000000000000000000000000000000000000000034 -:201C980000000000000000000000000000000000000000000000000000000000000000002C -:201CA000000000000000000000000000000000000000000000000000000000000000000024 -:201CA80000000000000000000000000000000000000000000000000000000000000000001C -:201CB000000000000000000000000000000000000000000000000000000000000000000014 -:201CB80000000000000000000000000000000000000000000000000000000000000000000C -:201CC000000000000000000000000000000000000000000000000000000000000000000004 -:201CC8000000000000000000000000000000000000000000000000000000000000000000FC -:201CD0000000000000000000000000000000000000000000000000000000000000000000F4 -:201CD8000000000000000000000000000000000000000000000000000000000000000000EC -:201CE0000000000000000000000000000000000000000000000000000000000000000000E4 -:201CE8000000000000000000000000000000000000000000000000000000000000000000DC -:201CF0000000000000000000000000000000000000000000000000000000000000000000D4 -:201CF8000000000000000000000000000000000000000000000000000000000000000000CC -:201D00000000000000000000000000000000000000000000000000000000000000000000C3 -:201D08000000000000000000000000000000000000000000000000000000000000000000BB -:201D10000000000000000000000000000000000000000000000000000000000000000000B3 -:201D18000000000000000000000000000000000000000000000000000000000000000000AB -:201D20000000000000000000000000000000000000000000000000000000000000000000A3 -:201D280000000000000000000000000000000000000000000000000000000000000000009B -:201D3000000000000000000000000000000000000000000000000000000000000000000093 -:201D380000000000000000000000000000000000000000000000000000000000000000008B -:201D4000000000000000000000000000000000000000000000000000000000000000000083 -:201D480000000000000000000000000000000000000000000000000000000000000000007B -:201D5000000000000000000000000000000000000000000000000000000000000000000073 -:201D580000000000000000000000000000000000000000000000000000000000000000006B -:201D6000000000000000000000000000000000000000000000000000000000000000000063 -:201D680000000000000000000000000000000000000000000000000000000000000000005B -:201D7000000000000000000000000000000000000000000000000000000000000000000053 -:201D780000000000000000000000000000000000000000000000000000000000000000004B -:201D8000000000000000000000000000000000000000000000000000000000000000000043 -:201D880000000000000000000000000000000000000000000000000000000000000000003B -:201D9000000000000000000000000000000000000000000000000000000000000000000033 -:201D980000000000000000000000000000000000000000000000000000000000000000002B -:201DA000000000000000000000000000000000000000000000000000000000000000000023 -:201DA80000000000000000000000000000000000000000000000000000000000000000001B -:201DB000000000000000000000000000000000000000000000000000000000000000000013 -:201DB80000000000000000000000000000000000000000000000000000000000000000000B -:201DC000000000000000000000000000000000000000000000000000000000000000000003 -:201DC8000000000000000000000000000000000000000000000000000000000000000000FB -:201DD0000000000000000000000000000000000000000000000000000000000000000000F3 -:201DD8000000000000000000000000000000000000000000000000000000000000000000EB -:201DE0000000000000000000000000000000000000000000000000000000000000000000E3 -:201DE8000000000000000000000000000000000000000000000000000000000000000000DB -:201DF0000000000000000000000000000000000000000000000000000000000000000000D3 -:201DF8000000000000000000000000000000000000000000000000000000000000000000CB -:201E00000000000000000000000000000000000000000000000000000000000000000000C2 -:201E08000000000000000000000000000000000000000000000000000000000000000000BA -:201E10000000000000000000000000000000000000000000000000000000000000000000B2 -:201E18000000000000000000000000000000000000000000000000000000000000000000AA -:201E20000000000000000000000000000000000000000000000000000000000000000000A2 -:201E280000000000000000000000000000000000000000000000000000000000000000009A -:201E3000000000000000000000000000000000000000000000000000000000000000000092 -:201E380000000000000000000000000000000000000000000000000000000000000000008A -:201E4000000000000000000000000000000000000000000000000000000000000000000082 -:201E480000000000000000000000000000000000000000000000000000000000000000007A -:201E5000000000000000000000000000000000000000000000000000000000000000000072 -:201E580000000000000000000000000000000000000000000000000000000000000000006A -:201E6000000000000000000000000000000000000000000000000000000000000000000062 -:201E680000000000000000000000000000000000000000000000000000000000000000005A -:201E7000000000000000000000000000000000000000000000000000000000000000000052 -:201E780000000000000000000000000000000000000000000000000000000000000000004A -:201E8000000000000000000000000000000000000000000000000000000000000000000042 -:201E880000000000000000000000000000000000000000000000000000000000000000003A -:201E9000000000000000000000000000000000000000000000000000000000000000000032 -:201E980000000000000000000000000000000000000000000000000000000000000000002A -:201EA000000000000000000000000000000000000000000000000000000000000000000022 -:201EA80000000000000000000000000000000000000000000000000000000000000000001A -:201EB000000000000000000000000000000000000000000000000000000000000000000012 -:201EB80000000000000000000000000000000000000000000000000000000000000000000A -:201EC000000000000000000000000000000000000000000000000000000000000000000002 -:201EC8000000000000000000000000000000000000000000000000000000000000000000FA -:201ED0000000000000000000000000000000000000000000000000000000000000000000F2 -:201ED8000000000000000000000000000000000000000000000000000000000000000000EA -:201EE0000000000000000000000000000000000000000000000000000000000000000000E2 -:201EE8000000000000000000000000000000000000000000000000000000000000000000DA -:201EF0000000000000000000000000000000000000000000000000000000000000000000D2 -:201EF8000000000000000000000000000000000000000000000000000000000000000000CA -:201F00000000000000000000000000000000000000000000000000000000000000000000C1 -:201F08000000000000000000000000000000000000000000000000000000000000000000B9 -:201F10000000000000000000000000000000000000000000000000000000000000000000B1 -:201F18000000000000000000000000000000000000000000000000000000000000000000A9 -:201F20000000000000000000000000000000000000000000000000000000000000000000A1 -:201F2800000000000000000000000000000000000000000000000000000000000000000099 -:201F3000000000000000000000000000000000000000000000000000000000000000000091 -:201F3800000000000000000000000000000000000000000000000000000000000000000089 -:201F4000000000000000000000000000000000000000000000000000000000000000000081 -:201F4800000000000000000000000000000000000000000000000000000000000000000079 -:201F5000000000000000000000000000000000000000000000000000000000000000000071 -:201F5800000000000000000000000000000000000000000000000000000000000000000069 -:201F6000000000000000000000000000000000000000000000000000000000000000000061 -:201F6800000000000000000000000000000000000000000000000000000000000000000059 -:201F7000000000000000000000000000000000000000000000000000000000000000000051 -:201F7800000000000000000000000000000000000000000000000000000000000000000049 -:201F8000000000000000000000000000000000000000000000000000000000000000000041 -:201F8800000000000000000000000000000000000000000000000000000000000000000039 -:201F9000000000000000000000000000000000000000000000000000000000000000000031 -:201F9800000000000000000000000000000000000000000000000000000000000000000029 -:201FA000000000000000000000000000000000000000000000000000000000000000000021 -:201FA800000000000000000000000000000000000000000000000000000000000000000019 -:201FB000000000000000000000000000000000000000000000000000000000000000000011 -:201FB800000000000000000000000000000000000000000000000000000000000000000009 -:201FC000000000000000000000000000000000000000000000000000000000000000000001 -:201FC8000000000000000000000000000000000000000000000000000000000000000000F9 -:201FD0000000000000000000000000000000000000000000000000000000000000000000F1 -:201FD8000000000000000000000000000000000000000000000000000000000000000000E9 -:201FE0000000000000000000000000000000000000000000000000000000000000000000E1 -:201FE8000000000000000000000000000000000000000000000000000000000000000000D9 -:201FF0000000000000000000000000000000000000000000000000000000000000000000D1 -:201FF8000000000000000000000000000000000000000000000000000000000000000000C9 -:202000000000000000000000000000000000000000000000000000000000000000000000C0 -:202008000000000000000000000000000000000000000000000000000000000000000000B8 -:202010000000000000000000000000000000000000000000000000000000000000000000B0 -:202018000000000000000000000000000000000000000000000000000000000000000000A8 -:202020000000000000000000000000000000000000000000000000000000000000000000A0 -:20202800000000000000000000000000000000000000000000000000000000000000000098 -:20203000000000000000000000000000000000000000000000000000000000000000000090 -:20203800000000000000000000000000000000000000000000000000000000000000000088 -:20204000000000000000000000000000000000000000000000000000000000000000000080 -:20204800000000000000000000000000000000000000000000000000000000000000000078 -:20205000000000000000000000000000000000000000000000000000000000000000000070 -:20205800000000000000000000000000000000000000000000000000000000000000000068 -:20206000000000000000000000000000000000000000000000000000000000000000000060 -:20206800000000000000000000000000000000000000000000000000000000000000000058 -:20207000000000000000000000000000000000000000000000000000000000000000000050 -:20207800000000000000000000000000000000000000000000000000000000000000000048 -:20208000000000000000000000000000000000000000000000000000000000000000000040 -:20208800000000000000000000000000000000000000000000000000000000000000000038 -:20209000000000000000000000000000000000000000000000000000000000000000000030 -:20209800000000000000000000000000000000000000000000000000000000000000000028 -:2020A000000000000000000000000000000000000000000000000000000000000000000020 -:2020A800000000000000000000000000000000000000000000000000000000000000000018 -:2020B000000000000000000000000000000000000000000000000000000000000000000010 -:2020B800000000000000000000000000000000000000000000000000000000000000000008 -:2020C000000000000000000000000000000000000000000000000000000000000000000000 -:2020C8000000000000000000000000000000000000000000000000000000000000000000F8 -:2020D0000000000000000000000000000000000000000000000000000000000000000000F0 -:2020D8000000000000000000000000000000000000000000000000000000000000000000E8 -:2020E0000000000000000000000000000000000000000000000000000000000000000000E0 -:2020E8000000000000000000000000000000000000000000000000000000000000000000D8 -:2020F0000000000000000000000000000000000000000000000000000000000000000000D0 -:2020F8000000000000000000000000000000000000000000000000000000000000000000C8 -:202100000000000000000000000000000000000000000000000000000000000000000000BF -:202108000000000000000000000000000000000000000000000000000000000000000000B7 -:202110000000000000000000000000000000000000000000000000000000000000000000AF -:202118000000000000000000000000000000000000000000000000000000000000000000A7 -:2021200000000000000000000000000000000000000000000000000000000000000000009F -:20212800000000000000000000000000000000000000000000000000000000000000000097 -:2021300000000000000000000000000000000000000000000000000000000000000000008F -:20213800000000000000000000000000000000000000000000000000000000000000000087 -:2021400000000000000000000000000000000000000000000000000000000000000000007F -:20214800000000000000000000000000000000000000000000000000000000000000000077 -:2021500000000000000000000000000000000000000000000000000000000000000000006F -:20215800000000000000000000000000000000000000000000000000000000000000000067 -:2021600000000000000000000000000000000000000000000000000000000000000000005F -:20216800000000000000000000000000000000000000000000000000000000000000000057 -:2021700000000000000000000000000000000000000000000000000000000000000000004F -:20217800000000000000000000000000000000000000000000000000000000000000000047 -:2021800000000000000000000000000000000000000000000000000000000000000000003F -:20218800000000000000000000000000000000000000000000000000000000000000000037 -:2021900000000000000000000000000000000000000000000000000000000000000000002F -:20219800000000000000000000000000000000000000000000000000000000000000000027 -:2021A00000000000000000000000000000000000000000000000000000000000000000001F -:2021A800000000000000000000000000000000000000000000000000000000000000000017 -:2021B00000000000000000000000000000000000000000000000000000000000000000000F -:2021B800000000000000000000000000000000000000000000000000000000000000000007 -:2021C0000000000000000000000000000000000000000000000000000000000000000000FF -:2021C8000000000000000000000000000000000000000000000000000000000000000000F7 -:2021D0000000000000000000000000000000000000000000000000000000000000000000EF -:2021D8000000000000000000000000000000000000000000000000000000000000000000E7 -:2021E0000000000000000000000000000000000000000000000000000000000000000000DF -:2021E8000000000000000000000000000000000000000000000000000000000000000000D7 -:2021F0000000000000000000000000000000000000000000000000000000000000000000CF -:2021F8000000000000000000000000000000000000000000000000000000000000000000C7 -:202200000000000000000000000000000000000000000000000000000000000000000000BE -:202208000000000000000000000000000000000000000000000000000000000000000000B6 -:202210000000000000000000000000000000000000000000000000000000000000000000AE -:202218000000000000000000000000000000000000000000000000000000000000000000A6 -:2022200000000000000000000000000000000000000000000000000000000000000000009E -:20222800000000000000000000000000000000000000000000000000000000000000000096 -:2022300000000000000000000000000000000000000000000000000000000000000000008E -:20223800000000000000000000000000000000000000000000000000000000000000000086 -:2022400000000000000000000000000000000000000000000000000000000000000000007E -:20224800000000000000000000000000000000000000000000000000000000000000000076 -:2022500000000000000000000000000000000000000000000000000000000000000000006E -:20225800000000000000000000000000000000000000000000000000000000000000000066 -:2022600000000000000000000000000000000000000000000000000000000000000000005E -:20226800000000000000000000000000000000000000000000000000000000000000000056 -:2022700000000000000000000000000000000000000000000000000000000000000000004E -:20227800000000000000000000000000000000000000000000000000000000000000000046 -:2022800000000000000000000000000000000000000000000000000000000000000000003E -:20228800000000000000000000000000000000000000000000000000000000000000000036 -:2022900000000000000000000000000000000000000000000000000000000000000000002E -:20229800000000000000000000000000000000000000000000000000000000000000000026 -:2022A00000000000000000000000000000000000000000000000000000000000000000001E -:2022A800000000000000000000000000000000000000000000000000000000000000000016 -:2022B00000000000000000000000000000000000000000000000000000000000000000000E -:2022B800000000000000000000000000000000000000000000000000000000000000000006 -:2022C0000000000000000000000000000000000000000000000000000000000000000000FE -:2022C8000000000000000000000000000000000000000000000000000000000000000000F6 -:2022D0000000000000000000000000000000000000000000000000000000000000000000EE -:2022D8000000000000000000000000000000000000000000000000000000000000000000E6 -:2022E0000000000000000000000000000000000000000000000000000000000000000000DE -:2022E8000000000000000000000000000000000000000000000000000000000000000000D6 -:2022F0000000000000000000000000000000000000000000000000000000000000000000CE -:2022F8000000000000000000000000000000000000000000000000000000000000000000C6 -:202300000000000000000000000000000000000000000000000000000000000000000000BD -:202308000000000000000000000000000000000000000000000000000000000000000000B5 -:202310000000000000000000000000000000000000000000000000000000000000000000AD -:202318000000000000000000000000000000000000000000000000000000000000000000A5 -:2023200000000000000000000000000000000000000000000000000000000000000000009D -:20232800000000000000000000000000000000000000000000000000000000000000000095 -:2023300000000000000000000000000000000000000000000000000000000000000000008D -:20233800000000000000000000000000000000000000000000000000000000000000000085 -:2023400000000000000000000000000000000000000000000000000000000000000000007D -:20234800000000000000000000000000000000000000000000000000000000000000000075 -:2023500000000000000000000000000000000000000000000000000000000000000000006D -:20235800000000000000000000000000000000000000000000000000000000000000000065 -:2023600000000000000000000000000000000000000000000000000000000000000000005D -:20236800000000000000000000000000000000000000000000000000000000000000000055 -:2023700000000000000000000000000000000000000000000000000000000000000000004D -:20237800000000000000000000000000000000000000000000000000000000000000000045 -:2023800000000000000000000000000000000000000000000000000000000000000000003D -:20238800000000000000000000000000000000000000000000000000000000000000000035 -:2023900000000000000000000000000000000000000000000000000000000000000000002D -:20239800000000000000000000000000000000000000000000000000000000000000000025 -:2023A00000000000000000000000000000000000000000000000000000000000000000001D -:2023A800000000000000000000000000000000000000000000000000000000000000000015 -:2023B00000000000000000000000000000000000000000000000000000000000000000000D -:2023B800000000000000000000000000000000000000000000000000000000000000000005 -:2023C0000000000000000000000000000000000000000000000000000000000000000000FD -:2023C8000000000000000000000000000000000000000000000000000000000000000000F5 -:2023D0000000000000000000000000000000000000000000000000000000000000000000ED -:2023D8000000000000000000000000000000000000000000000000000000000000000000E5 -:2023E0000000000000000000000000000000000000000000000000000000000000000000DD -:2023E8000000000000000000000000000000000000000000000000000000000000000000D5 -:2023F0000000000000000000000000000000000000000000000000000000000000000000CD -:2023F8000000000000000000000000000000000000000000000000000000000000000000C5 -:202400000000000000000000000000000000000000000000000000000000000000000000BC -:202408000000000000000000000000000000000000000000000000000000000000000000B4 -:202410000000000000000000000000000000000000000000000000000000000000000000AC -:202418000000000000000000000000000000000000000000000000000000000000000000A4 -:2024200000000000000000000000000000000000000000000000000000000000000000009C -:20242800000000000000000000000000000000000000000000000000000000000000000094 -:2024300000000000000000000000000000000000000000000000000000000000000000008C -:20243800000000000000000000000000000000000000000000000000000000000000000084 -:2024400000000000000000000000000000000000000000000000000000000000000000007C -:20244800000000000000000000000000000000000000000000000000000000000000000074 -:2024500000000000000000000000000000000000000000000000000000000000000000006C -:20245800000000000000000000000000000000000000000000000000000000000000000064 -:2024600000000000000000000000000000000000000000000000000000000000000000005C -:20246800000000000000000000000000000000000000000000000000000000000000000054 -:2024700000000000000000000000000000000000000000000000000000000000000000004C -:20247800000000000000000000000000000000000000000000000000000000000000000044 -:2024800000000000000000000000000000000000000000000000000000000000000000003C -:20248800000000000000000000000000000000000000000000000000000000000000000034 -:2024900000000000000000000000000000000000000000000000000000000000000000002C -:20249800000000000000000000000000000000000000000000000000000000000000000024 -:2024A00000000000000000000000000000000000000000000000000000000000000000001C -:2024A800000000000000000000000000000000000000000000000000000000000000000014 -:2024B00000000000000000000000000000000000000000000000000000000000000000000C -:2024B800000000000000000000000000000000000000000000000000000000000000000004 -:2024C0000000000000000000000000000000000000000000000000000000000000000000FC -:2024C8000000000000000000000000000000000000000000000000000000000000000000F4 -:2024D0000000000000000000000000000000000000000000000000000000000000000000EC -:2024D8000000000000000000000000000000000000000000000000000000000000000000E4 -:2024E0000000000000000000000000000000000000000000000000000000000000000000DC -:2024E8000000000000000000000000000000000000000000000000000000000000000000D4 -:2024F0000000000000000000000000000000000000000000000000000000000000000000CC -:2024F8000000000000000000000000000000000000000000000000000000000000000000C4 -:202500000000000000000000000000000000000000000000000000000000000000000000BB -:202508000000000000000000000000000000000000000000000000000000000000000000B3 -:202510000000000000000000000000000000000000000000000000000000000000000000AB -:202518000000000000000000000000000000000000000000000000000000000000000000A3 -:2025200000000000000000000000000000000000000000000000000000000000000000009B -:20252800000000000000000000000000000000000000000000000000000000000000000093 -:2025300000000000000000000000000000000000000000000000000000000000000000008B -:20253800000000000000000000000000000000000000000000000000000000000000000083 -:2025400000000000000000000000000000000000000000000000000000000000000000007B -:20254800000000000000000000000000000000000000000000000000000000000000000073 -:2025500000000000000000000000000000000000000000000000000000000000000000006B -:20255800000000000000000000000000000000000000000000000000000000000000000063 -:2025600000000000000000000000000000000000000000000000000000000000000000005B -:20256800000000000000000000000000000000000000000000000000000000000000000053 -:2025700000000000000000000000000000000000000000000000000000000000000000004B -:20257800000000000000000000000000000000000000000000000000000000000000000043 -:2025800000000000000000000000000000000000000000000000000000000000000000003B -:20258800000000000000000000000000000000000000000000000000000000000000000033 -:2025900000000000000000000000000000000000000000000000000000000000000000002B -:20259800000000000000000000000000000000000000000000000000000000000000000023 -:2025A00000000000000000000000000000000000000000000000000000000000000000001B -:2025A800000000000000000000000000000000000000000000000000000000000000000013 -:2025B00000000000000000000000000000000000000000000000000000000000000000000B -:2025B800000000000000000000000000000000000000000000000000000000000000000003 -:2025C0000000000000000000000000000000000000000000000000000000000000000000FB -:2025C8000000000000000000000000000000000000000000000000000000000000000000F3 -:2025D0000000000000000000000000000000000000000000000000000000000000000000EB -:2025D8000000000000000000000000000000000000000000000000000000000000000000E3 -:2025E0000000000000000000000000000000000000000000000000000000000000000000DB -:2025E8000000000000000000000000000000000000000000000000000000000000000000D3 -:2025F0000000000000000000000000000000000000000000000000000000000000000000CB -:2025F8000000000000000000000000000000000000000000000000000000000000000000C3 -:202600000000000000000000000000000000000000000000000000000000000000000000BA -:202608000000000000000000000000000000000000000000000000000000000000000000B2 -:202610000000000000000000000000000000000000000000000000000000000000000000AA -:202618000000000000000000000000000000000000000000000000000000000000000000A2 -:2026200000000000000000000000000000000000000000000000000000000000000000009A -:20262800000000000000000000000000000000000000000000000000000000000000000092 -:2026300000000000000000000000000000000000000000000000000000000000000000008A -:20263800000000000000000000000000000000000000000000000000000000000000000082 -:2026400000000000000000000000000000000000000000000000000000000000000000007A -:20264800000000000000000000000000000000000000000000000000000000000000000072 -:2026500000000000000000000000000000000000000000000000000000000000000000006A -:20265800000000000000000000000000000000000000000000000000000000000000000062 -:2026600000000000000000000000000000000000000000000000000000000000000000005A -:20266800000000000000000000000000000000000000000000000000000000000000000052 -:2026700000000000000000000000000000000000000000000000000000000000000000004A -:20267800000000000000000000000000000000000000000000000000000000000000000042 -:2026800000000000000000000000000000000000000000000000000000000000000000003A -:20268800000000000000000000000000000000000000000000000000000000000000000032 -:2026900000000000000000000000000000000000000000000000000000000000000000002A -:20269800000000000000000000000000000000000000000000000000000000000000000022 -:2026A00000000000000000000000000000000000000000000000000000000000000000001A -:2026A800000000000000000000000000000000000000000000000000000000000000000012 -:2026B00000000000000000000000000000000000000000000000000000000000000000000A -:2026B800000000000000000000000000000000000000000000000000000000000000000002 -:2026C0000000000000000000000000000000000000000000000000000000000000000000FA -:2026C8000000000000000000000000000000000000000000000000000000000000000000F2 -:2026D0000000000000000000000000000000000000000000000000000000000000000000EA -:2026D8000000000000000000000000000000000000000000000000000000000000000000E2 -:2026E0000000000000000000000000000000000000000000000000000000000000000000DA -:2026E8000000000000000000000000000000000000000000000000000000000000000000D2 -:2026F0000000000000000000000000000000000000000000000000000000000000000000CA -:2026F8000000000000000000000000000000000000000000000000000000000000000000C2 -:202700000000000000000000000000000000000000000000000000000000000000000000B9 -:202708000000000000000000000000000000000000000000000000000000000000000000B1 -:202710000000000000000000000000000000000000000000000000000000000000000000A9 -:202718000000000000000000000000000000000000000000000000000000000000000000A1 -:20272000000000000000000000000000000000000000000000000000000000000000000099 -:20272800000000000000000000000000000000000000000000000000000000000000000091 -:20273000000000000000000000000000000000000000000000000000000000000000000089 -:20273800000000000000000000000000000000000000000000000000000000000000000081 -:20274000000000000000000000000000000000000000000000000000000000000000000079 -:20274800000000000000000000000000000000000000000000000000000000000000000071 -:20275000000000000000000000000000000000000000000000000000000000000000000069 -:20275800000000000000000000000000000000000000000000000000000000000000000061 -:20276000000000000000000000000000000000000000000000000000000000000000000059 -:20276800000000000000000000000000000000000000000000000000000000000000000051 -:20277000000000000000000000000000000000000000000000000000000000000000000049 -:20277800000000000000000000000000000000000000000000000000000000000000000041 -:20278000000000000000000000000000000000000000000000000000000000000000000039 -:20278800000000000000000000000000000000000000000000000000000000000000000031 -:20279000000000000000000000000000000000000000000000000000000000000000000029 -:20279800000000000000000000000000000000000000000000000000000000000000000021 -:2027A000000000000000000000000000000000000000000000000000000000000000000019 -:2027A800000000000000000000000000000000000000000000000000000000000000000011 -:2027B000000000000000000000000000000000000000000000000000000000000000000009 -:2027B800000000000000000000000000000000000000000000000000000000000000000001 -:2027C0000000000000000000000000000000000000000000000000000000000000000000F9 -:2027C8000000000000000000000000000000000000000000000000000000000000000000F1 -:2027D0000000000000000000000000000000000000000000000000000000000000000000E9 -:2027D8000000000000000000000000000000000000000000000000000000000000000000E1 -:2027E0000000000000000000000000000000000000000000000000000000000000000000D9 -:2027E8000000000000000000000000000000000000000000000000000000000000000000D1 -:2027F0000000000000000000000000000000000000000000000000000000000000000000C9 -:2027F8000000000000000000000000000000000000000000000000000000000000000000C1 -:202800000000000000000000000000000000000000000000000000000000000000000000B8 -:202808000000000000000000000000000000000000000000000000000000000000000000B0 -:202810000000000000000000000000000000000000000000000000000000000000000000A8 -:202818000000000000000000000000000000000000000000000000000000000000000000A0 -:20282000000000000000000000000000000000000000000000000000000000000000000098 -:20282800000000000000000000000000000000000000000000000000000000000000000090 -:20283000000000000000000000000000000000000000000000000000000000000000000088 -:20283800000000000000000000000000000000000000000000000000000000000000000080 -:20284000000000000000000000000000000000000000000000000000000000000000000078 -:20284800000000000000000000000000000000000000000000000000000000000000000070 -:20285000000000000000000000000000000000000000000000000000000000000000000068 -:20285800000000000000000000000000000000000000000000000000000000000000000060 -:20286000000000000000000000000000000000000000000000000000000000000000000058 -:20286800000000000000000000000000000000000000000000000000000000000000000050 -:20287000000000000000000000000000000000000000000000000000000000000000000048 -:20287800000000000000000000000000000000000000000000000000000000000000000040 -:20288000000000000000000000000000000000000000000000000000000000000000000038 -:20288800000000000000000000000000000000000000000000000000000000000000000030 -:20289000000000000000000000000000000000000000000000000000000000000000000028 -:20289800000000000000000000000000000000000000000000000000000000000000000020 -:2028A000000000000000000000000000000000000000000000000000000000000000000018 -:2028A800000000000000000000000000000000000000000000000000000000000000000010 -:2028B000000000000000000000000000000000000000000000000000000000000000000008 -:2028B800000000000000000000000000000000000000000000000000000000000000000000 -:2028C0000000000000000000000000000000000000000000000000000000000000000000F8 -:2028C8000000000000000000000000000000000000000000000000000000000000000000F0 -:2028D0000000000000000000000000000000000000000000000000000000000000000000E8 -:2028D8000000000000000000000000000000000000000000000000000000000000000000E0 -:2028E0000000000000000000000000000000000000000000000000000000000000000000D8 -:2028E8000000000000000000000000000000000000000000000000000000000000000000D0 -:2028F0000000000000000000000000000000000000000000000000000000000000000000C8 -:2028F8000000000000000000000000000000000000000000000000000000000000000000C0 -:202900000000000000000000000000000000000000000000000000000000000000000000B7 -:202908000000000000000000000000000000000000000000000000000000000000000000AF -:202910000000000000000000000000000000000000000000000000000000000000000000A7 -:2029180000000000000000000000000000000000000000000000000000000000000000009F -:20292000000000000000000000000000000000000000000000000000000000000000000097 -:2029280000000000000000000000000000000000000000000000000000000000000000008F -:20293000000000000000000000000000000000000000000000000000000000000000000087 -:2029380000000000000000000000000000000000000000000000000000000000000000007F -:20294000000000000000000000000000000000000000000000000000000000000000000077 -:2029480000000000000000000000000000000000000000000000000000000000000000006F -:20295000000000000000000000000000000000000000000000000000000000000000000067 -:2029580000000000000000000000000000000000000000000000000000000000000000005F -:20296000000000000000000000000000000000000000000000000000000000000000000057 -:2029680000000000000000000000000000000000000000000000000000000000000000004F -:20297000000000000000000000000000000000000000000000000000000000000000000047 -:2029780000000000000000000000000000000000000000000000000000000000000000003F -:20298000000000000000000000000000000000000000000000000000000000000000000037 -:2029880000000000000000000000000000000000000000000000000000000000000000002F -:20299000000000000000000000000000000000000000000000000000000000000000000027 -:2029980000000000000000000000000000000000000000000000000000000000000000001F -:2029A000000000000000000000000000000000000000000000000000000000000000000017 -:2029A80000000000000000000000000000000000000000000000000000000000000000000F -:2029B000000000000000000000000000000000000000000000000000000000000000000007 -:2029B8000000000000000000000000000000000000000000000000000000000000000000FF -:2029C0000000000000000000000000000000000000000000000000000000000000000000F7 -:2029C8000000000000000000000000000000000000000000000000000000000000000000EF -:2029D0000000000000000000000000000000000000000000000000000000000000000000E7 -:2029D8000000000000000000000000000000000000000000000000000000000000000000DF -:2029E0000000000000000000000000000000000000000000000000000000000000000000D7 -:2029E8000000000000000000000000000000000000000000000000000000000000000000CF -:2029F0000000000000000000000000000000000000000000000000000000000000000000C7 -:2029F8000000000000000000000000000000000000000000000000000000000000000000BF -:202A00000000000000000000000000000000000000000000000000000000000000000000B6 -:202A08000000000000000000000000000000000000000000000000000000000000000000AE -:202A10000000000000000000000000000000000000000000000000000000000000000000A6 -:202A180000000000000000000000000000000000000000000000000000000000000000009E -:202A2000000000000000000000000000000000000000000000000000000000000000000096 -:202A280000000000000000000000000000000000000000000000000000000000000000008E -:202A3000000000000000000000000000000000000000000000000000000000000000000086 -:202A380000000000000000000000000000000000000000000000000000000000000000007E -:202A4000000000000000000000000000000000000000000000000000000000000000000076 -:202A480000000000000000000000000000000000000000000000000000000000000000006E -:202A5000000000000000000000000000000000000000000000000000000000000000000066 -:202A580000000000000000000000000000000000000000000000000000000000000000005E -:202A6000000000000000000000000000000000000000000000000000000000000000000056 -:202A680000000000000000000000000000000000000000000000000000000000000000004E -:202A7000000000000000000000000000000000000000000000000000000000000000000046 -:202A780000000000000000000000000000000000000000000000000000000000000000003E -:202A8000000000000000000000000000000000000000000000000000000000000000000036 -:202A880000000000000000000000000000000000000000000000000000000000000000002E -:202A9000000000000000000000000000000000000000000000000000000000000000000026 -:202A980000000000000000000000000000000000000000000000000000000000000000001E -:202AA000000000000000000000000000000000000000000000000000000000000000000016 -:202AA80000000000000000000000000000000000000000000000000000000000000000000E -:202AB000000000000000000000000000000000000000000000000000000000000000000006 -:202AB8000000000000000000000000000000000000000000000000000000000000000000FE -:202AC0000000000000000000000000000000000000000000000000000000000000000000F6 -:202AC8000000000000000000000000000000000000000000000000000000000000000000EE -:202AD0000000000000000000000000000000000000000000000000000000000000000000E6 -:202AD8000000000000000000000000000000000000000000000000000000000000000000DE -:202AE0000000000000000000000000000000000000000000000000000000000000000000D6 -:202AE8000000000000000000000000000000000000000000000000000000000000000000CE -:202AF0000000000000000000000000000000000000000000000000000000000000000000C6 -:202AF8000000000000000000000000000000000000000000000000000000000000000000BE -:202B00000000000000000000000000000000000000000000000000000000000000000000B5 -:202B08000000000000000000000000000000000000000000000000000000000000000000AD -:202B10000000000000000000000000000000000000000000000000000000000000000000A5 -:202B180000000000000000000000000000000000000000000000000000000000000000009D -:202B2000000000000000000000000000000000000000000000000000000000000000000095 -:202B280000000000000000000000000000000000000000000000000000000000000000008D -:202B3000000000000000000000000000000000000000000000000000000000000000000085 -:202B380000000000000000000000000000000000000000000000000000000000000000007D -:202B4000000000000000000000000000000000000000000000000000000000000000000075 -:202B480000000000000000000000000000000000000000000000000000000000000000006D -:202B5000000000000000000000000000000000000000000000000000000000000000000065 -:202B580000000000000000000000000000000000000000000000000000000000000000005D -:202B6000000000000000000000000000000000000000000000000000000000000000000055 -:202B680000000000000000000000000000000000000000000000000000000000000000004D -:202B7000000000000000000000000000000000000000000000000000000000000000000045 -:202B780000000000000000000000000000000000000000000000000000000000000000003D -:202B8000000000000000000000000000000000000000000000000000000000000000000035 -:202B880000000000000000000000000000000000000000000000000000000000000000002D -:202B9000000000000000000000000000000000000000000000000000000000000000000025 -:202B980000000000000000000000000000000000000000000000000000000000000000001D -:202BA000000000000000000000000000000000000000000000000000000000000000000015 -:202BA80000000000000000000000000000000000000000000000000000000000000000000D -:202BB000000000000000000000000000000000000000000000000000000000000000000005 -:202BB8000000000000000000000000000000000000000000000000000000000000000000FD -:202BC0000000000000000000000000000000000000000000000000000000000000000000F5 -:202BC8000000000000000000000000000000000000000000000000000000000000000000ED -:202BD0000000000000000000000000000000000000000000000000000000000000000000E5 -:202BD8000000000000000000000000000000000000000000000000000000000000000000DD -:202BE0000000000000000000000000000000000000000000000000000000000000000000D5 -:202BE8000000000000000000000000000000000000000000000000000000000000000000CD -:202BF0000000000000000000000000000000000000000000000000000000000000000000C5 -:202BF8000000000000000000000000000000000000000000000000000000000000000000BD -:202C00000000000000000000000000000000000000000000000000000000000000000000B4 -:202C08000000000000000000000000000000000000000000000000000000000000000000AC -:202C10000000000000000000000000000000000000000000000000000000000000000000A4 -:202C180000000000000000000000000000000000000000000000000000000000000000009C -:202C2000000000000000000000000000000000000000000000000000000000000000000094 -:202C280000000000000000000000000000000000000000000000000000000000000000008C -:202C3000000000000000000000000000000000000000000000000000000000000000000084 -:202C380000000000000000000000000000000000000000000000000000000000000000007C -:202C4000000000000000000000000000000000000000000000000000000000000000000074 -:202C480000000000000000000000000000000000000000000000000000000000000000006C -:202C5000000000000000000000000000000000000000000000000000000000000000000064 -:202C580000000000000000000000000000000000000000000000000000000000000000005C -:202C6000000000000000000000000000000000000000000000000000000000000000000054 -:202C680000000000000000000000000000000000000000000000000000000000000000004C -:202C7000000000000000000000000000000000000000000000000000000000000000000044 -:202C780000000000000000000000000000000000000000000000000000000000000000003C -:202C8000000000000000000000000000000000000000000000000000000000000000000034 -:202C880000000000000000000000000000000000000000000000000000000000000000002C -:202C9000000000000000000000000000000000000000000000000000000000000000000024 -:202C980000000000000000000000000000000000000000000000000000000000000000001C -:202CA000000000000000000000000000000000000000000000000000000000000000000014 -:202CA80000000000000000000000000000000000000000000000000000000000000000000C -:202CB000000000000000000000000000000000000000000000000000000000000000000004 -:202CB8000000000000000000000000000000000000000000000000000000000000000000FC -:202CC0000000000000000000000000000000000000000000000000000000000000000000F4 -:202CC8000000000000000000000000000000000000000000000000000000000000000000EC -:202CD0000000000000000000000000000000000000000000000000000000000000000000E4 -:202CD8000000000000000000000000000000000000000000000000000000000000000000DC -:202CE0000000000000000000000000000000000000000000000000000000000000000000D4 -:202CE8000000000000000000000000000000000000000000000000000000000000000000CC -:202CF0000000000000000000000000000000000000000000000000000000000000000000C4 -:202CF8000000000000000000000000000000000000000000000000000000000000000000BC -:202D00000000000000000000000000000000000000000000000000000000000000000000B3 -:202D08000000000000000000000000000000000000000000000000000000000000000000AB -:202D10000000000000000000000000000000000000000000000000000000000000000000A3 -:202D180000000000000000000000000000000000000000000000000000000000000000009B -:202D2000000000000000000000000000000000000000000000000000000000000000000093 -:202D280000000000000000000000000000000000000000000000000000000000000000008B -:202D3000000000000000000000000000000000000000000000000000000000000000000083 -:202D380000000000000000000000000000000000000000000000000000000000000000007B -:202D4000000000000000000000000000000000000000000000000000000000000000000073 -:202D480000000000000000000000000000000000000000000000000000000000000000006B -:202D5000000000000000000000000000000000000000000000000000000000000000000063 -:202D580000000000000000000000000000000000000000000000000000000000000000005B -:202D6000000000000000000000000000000000000000000000000000000000000000000053 -:202D680000000000000000000000000000000000000000000000000000000000000000004B -:202D7000000000000000000000000000000000000000000000000000000000000000000043 -:202D780000000000000000000000000000000000000000000000000000000000000000003B -:202D8000000000000000000000000000000000000000000000000000000000000000000033 -:202D880000000000000000000000000000000000000000000000000000000000000000002B -:202D9000000000000000000000000000000000000000000000000000000000000000000023 -:202D980000000000000000000000000000000000000000000000000000000000000000001B -:202DA000000000000000000000000000000000000000000000000000000000000000000013 -:202DA80000000000000000000000000000000000000000000000000000000000000000000B -:202DB000000000000000000000000000000000000000000000000000000000000000000003 -:202DB8000000000000000000000000000000000000000000000000000000000000000000FB -:202DC0000000000000000000000000000000000000000000000000000000000000000000F3 -:202DC8000000000000000000000000000000000000000000000000000000000000000000EB -:202DD0000000000000000000000000000000000000000000000000000000000000000000E3 -:202DD8000000000000000000000000000000000000000000000000000000000000000000DB -:202DE0000000000000000000000000000000000000000000000000000000000000000000D3 -:202DE8000000000000000000000000000000000000000000000000000000000000000000CB -:202DF0000000000000000000000000000000000000000000000000000000000000000000C3 -:202DF8000000000000000000000000000000000000000000000000000000000000000000BB -:202E00000000000000000000000000000000000000000000000000000000000000000000B2 -:202E08000000000000000000000000000000000000000000000000000000000000000000AA -:202E10000000000000000000000000000000000000000000000000000000000000000000A2 -:202E180000000000000000000000000000000000000000000000000000000000000000009A -:202E2000000000000000000000000000000000000000000000000000000000000000000092 -:202E280000000000000000000000000000000000000000000000000000000000000000008A -:202E3000000000000000000000000000000000000000000000000000000000000000000082 -:202E380000000000000000000000000000000000000000000000000000000000000000007A -:202E4000000000000000000000000000000000000000000000000000000000000000000072 -:202E480000000000000000000000000000000000000000000000000000000000000000006A -:202E5000000000000000000000000000000000000000000000000000000000000000000062 -:202E580000000000000000000000000000000000000000000000000000000000000000005A -:202E6000000000000000000000000000000000000000000000000000000000000000000052 -:202E680000000000000000000000000000000000000000000000000000000000000000004A -:202E7000000000000000000000000000000000000000000000000000000000000000000042 -:202E780000000000000000000000000000000000000000000000000000000000000000003A -:202E8000000000000000000000000000000000000000000000000000000000000000000032 -:202E880000000000000000000000000000000000000000000000000000000000000000002A -:202E9000000000000000000000000000000000000000000000000000000000000000000022 -:202E980000000000000000000000000000000000000000000000000000000000000000001A -:202EA000000000000000000000000000000000000000000000000000000000000000000012 -:202EA80000000000000000000000000000000000000000000000000000000000000000000A -:202EB000000000000000000000000000000000000000000000000000000000000000000002 -:202EB8000000000000000000000000000000000000000000000000000000000000000000FA -:202EC0000000000000000000000000000000000000000000000000000000000000000000F2 -:202EC8000000000000000000000000000000000000000000000000000000000000000000EA -:202ED0000000000000000000000000000000000000000000000000000000000000000000E2 -:202ED8000000000000000000000000000000000000000000000000000000000000000000DA -:202EE0000000000000000000000000000000000000000000000000000000000000000000D2 -:202EE8000000000000000000000000000000000000000000000000000000000000000000CA -:202EF0000000000000000000000000000000000000000000000000000000000000000000C2 -:202EF8000000000000000000000000000000000000000000000000000000000000000000BA -:202F00000000000000000000000000000000000000000000000000000000000000000000B1 -:202F08000000000000000000000000000000000000000000000000000000000000000000A9 -:202F10000000000000000000000000000000000000000000000000000000000000000000A1 -:202F1800000000000000000000000000000000000000000000000000000000000000000099 -:202F2000000000000000000000000000000000000000000000000000000000000000000091 -:202F2800000000000000000000000000000000000000000000000000000000000000000089 -:202F3000000000000000000000000000000000000000000000000000000000000000000081 -:202F3800000000000000000000000000000000000000000000000000000000000000000079 -:202F4000000000000000000000000000000000000000000000000000000000000000000071 -:202F4800000000000000000000000000000000000000000000000000000000000000000069 -:202F5000000000000000000000000000000000000000000000000000000000000000000061 -:202F5800000000000000000000000000000000000000000000000000000000000000000059 -:202F6000000000000000000000000000000000000000000000000000000000000000000051 -:202F6800000000000000000000000000000000000000000000000000000000000000000049 -:202F7000000000000000000000000000000000000000000000000000000000000000000041 -:202F7800000000000000000000000000000000000000000000000000000000000000000039 -:202F8000000000000000000000000000000000000000000000000000000000000000000031 -:202F8800000000000000000000000000000000000000000000000000000000000000000029 -:202F9000000000000000000000000000000000000000000000000000000000000000000021 -:202F9800000000000000000000000000000000000000000000000000000000000000000019 -:202FA000000000000000000000000000000000000000000000000000000000000000000011 -:202FA800000000000000000000000000000000000000000000000000000000000000000009 -:202FB000000000000000000000000000000000000000000000000000000000000000000001 -:202FB8000000000000000000000000000000000000000000000000000000000000000000F9 -:202FC0000000000000000000000000000000000000000000000000000000000000000000F1 -:202FC8000000000000000000000000000000000000000000000000000000000000000000E9 -:202FD0000000000000000000000000000000000000000000000000000000000000000000E1 -:202FD8000000000000000000000000000000000000000000000000000000000000000000D9 -:202FE0000000000000000000000000000000000000000000000000000000000000000000D1 -:202FE8000000000000000000000000000000000000000000000000000000000000000000C9 -:202FF0000000000000000000000000000000000000000000000000000000000000000000C1 -:202FF8000000000000000000000000000000000000000000000000000000000000000000B9 -:203000000000000000000000000000000000000000000000000000000000000000000000B0 -:203008000000000000000000000000000000000000000000000000000000000000000000A8 -:203010000000000000000000000000000000000000000000000000000000000000000000A0 -:20301800000000000000000000000000000000000000000000000000000000000000000098 -:20302000000000000000000000000000000000000000000000000000000000000000000090 -:20302800000000000000000000000000000000000000000000000000000000000000000088 -:20303000000000000000000000000000000000000000000000000000000000000000000080 -:20303800000000000000000000000000000000000000000000000000000000000000000078 -:20304000000000000000000000000000000000000000000000000000000000000000000070 -:20304800000000000000000000000000000000000000000000000000000000000000000068 -:20305000000000000000000000000000000000000000000000000000000000000000000060 -:20305800000000000000000000000000000000000000000000000000000000000000000058 -:20306000000000000000000000000000000000000000000000000000000000000000000050 -:20306800000000000000000000000000000000000000000000000000000000000000000048 -:20307000000000000000000000000000000000000000000000000000000000000000000040 -:20307800000000000000000000000000000000000000000000000000000000000000000038 -:20308000000000000000000000000000000000000000000000000000000000000000000030 -:20308800000000000000000000000000000000000000000000000000000000000000000028 -:20309000000000000000000000000000000000000000000000000000000000000000000020 -:20309800000000000000000000000000000000000000000000000000000000000000000018 -:2030A000000000000000000000000000000000000000000000000000000000000000000010 -:2030A800000000000000000000000000000000000000000000000000000000000000000008 -:2030B000000000000000000000000000000000000000000000000000000000000000000000 -:2030B8000000000000000000000000000000000000000000000000000000000000000000F8 -:2030C0000000000000000000000000000000000000000000000000000000000000000000F0 -:2030C8000000000000000000000000000000000000000000000000000000000000000000E8 -:2030D0000000000000000000000000000000000000000000000000000000000000000000E0 -:2030D8000000000000000000000000000000000000000000000000000000000000000000D8 -:2030E0000000000000000000000000000000000000000000000000000000000000000000D0 -:2030E8000000000000000000000000000000000000000000000000000000000000000000C8 -:2030F0000000000000000000000000000000000000000000000000000000000000000000C0 -:2030F8000000000000000000000000000000000000000000000000000000000000000000B8 -:203100000000000000000000000000000000000000000000000000000000000000000000AF -:203108000000000000000000000000000000000000000000000000000000000000000000A7 -:2031100000000000000000000000000000000000000000000000000000000000000000009F -:20311800000000000000000000000000000000000000000000000000000000000000000097 -:2031200000000000000000000000000000000000000000000000000000000000000000008F -:20312800000000000000000000000000000000000000000000000000000000000000000087 -:2031300000000000000000000000000000000000000000000000000000000000000000007F -:20313800000000000000000000000000000000000000000000000000000000000000000077 -:2031400000000000000000000000000000000000000000000000000000000000000000006F -:20314800000000000000000000000000000000000000000000000000000000000000000067 -:2031500000000000000000000000000000000000000000000000000000000000000000005F -:20315800000000000000000000000000000000000000000000000000000000000000000057 -:2031600000000000000000000000000000000000000000000000000000000000000000004F -:20316800000000000000000000000000000000000000000000000000000000000000000047 -:2031700000000000000000000000000000000000000000000000000000000000000000003F -:20317800000000000000000000000000000000000000000000000000000000000000000037 -:2031800000000000000000000000000000000000000000000000000000000000000000002F -:20318800000000000000000000000000000000000000000000000000000000000000000027 -:2031900000000000000000000000000000000000000000000000000000000000000000001F -:20319800000000000000000000000000000000000000000000000000000000000000000017 -:2031A00000000000000000000000000000000000000000000000000000000000000000000F -:2031A800000000000000000000000000000000000000000000000000000000000000000007 -:2031B0000000000000000000000000000000000000000000000000000000000000000000FF -:2031B8000000000000000000000000000000000000000000000000000000000000000000F7 -:2031C0000000000000000000000000000000000000000000000000000000000000000000EF -:2031C8000000000000000000000000000000000000000000000000000000000000000000E7 -:2031D0000000000000000000000000000000000000000000000000000000000000000000DF -:2031D8000000000000000000000000000000000000000000000000000000000000000000D7 -:2031E0000000000000000000000000000000000000000000000000000000000000000000CF -:2031E8000000000000000000000000000000000000000000000000000000000000000000C7 -:2031F0000000000000000000000000000000000000000000000000000000000000000000BF -:2031F8000000000000000000000000000000000000000000000000000000000000000000B7 -:203200000000000000000000000000000000000000000000000000000000000000000000AE -:203208000000000000000000000000000000000000000000000000000000000000000000A6 -:2032100000000000000000000000000000000000000000000000000000000000000000009E -:20321800000000000000000000000000000000000000000000000000000000000000000096 -:2032200000000000000000000000000000000000000000000000000000000000000000008E -:20322800000000000000000000000000000000000000000000000000000000000000000086 -:2032300000000000000000000000000000000000000000000000000000000000000000007E -:20323800000000000000000000000000000000000000000000000000000000000000000076 -:2032400000000000000000000000000000000000000000000000000000000000000000006E -:20324800000000000000000000000000000000000000000000000000000000000000000066 -:2032500000000000000000000000000000000000000000000000000000000000000000005E -:20325800000000000000000000000000000000000000000000000000000000000000000056 -:2032600000000000000000000000000000000000000000000000000000000000000000004E -:20326800000000000000000000000000000000000000000000000000000000000000000046 -:2032700000000000000000000000000000000000000000000000000000000000000000003E -:20327800000000000000000000000000000000000000000000000000000000000000000036 -:2032800000000000000000000000000000000000000000000000000000000000000000002E -:20328800000000000000000000000000000000000000000000000000000000000000000026 -:2032900000000000000000000000000000000000000000000000000000000000000000001E -:20329800000000000000000000000000000000000000000000000000000000000000000016 -:2032A00000000000000000000000000000000000000000000000000000000000000000000E -:2032A800000000000000000000000000000000000000000000000000000000000000000006 -:2032B0000000000000000000000000000000000000000000000000000000000000000000FE -:2032B8000000000000000000000000000000000000000000000000000000000000000000F6 -:2032C0000000000000000000000000000000000000000000000000000000000000000000EE -:2032C8000000000000000000000000000000000000000000000000000000000000000000E6 -:2032D0000000000000000000000000000000000000000000000000000000000000000000DE -:2032D8000000000000000000000000000000000000000000000000000000000000000000D6 -:2032E0000000000000000000000000000000000000000000000000000000000000000000CE -:2032E8000000000000000000000000000000000000000000000000000000000000000000C6 -:2032F0000000000000000000000000000000000000000000000000000000000000000000BE -:2032F8000000000000000000000000000000000000000000000000000000000000000000B6 -:203300000000000000000000000000000000000000000000000000000000000000000000AD -:203308000000000000000000000000000000000000000000000000000000000000000000A5 -:2033100000000000000000000000000000000000000000000000000000000000000000009D -:20331800000000000000000000000000000000000000000000000000000000000000000095 -:2033200000000000000000000000000000000000000000000000000000000000000000008D -:20332800000000000000000000000000000000000000000000000000000000000000000085 -:2033300000000000000000000000000000000000000000000000000000000000000000007D -:20333800000000000000000000000000000000000000000000000000000000000000000075 -:2033400000000000000000000000000000000000000000000000000000000000000000006D -:20334800000000000000000000000000000000000000000000000000000000000000000065 -:2033500000000000000000000000000000000000000000000000000000000000000000005D -:20335800000000000000000000000000000000000000000000000000000000000000000055 -:2033600000000000000000000000000000000000000000000000000000000000000000004D -:20336800000000000000000000000000000000000000000000000000000000000000000045 -:2033700000000000000000000000000000000000000000000000000000000000000000003D -:20337800000000000000000000000000000000000000000000000000000000000000000035 -:2033800000000000000000000000000000000000000000000000000000000000000000002D -:20338800000000000000000000000000000000000000000000000000000000000000000025 -:2033900000000000000000000000000000000000000000000000000000000000000000001D -:20339800000000000000000000000000000000000000000000000000000000000000000015 -:2033A00000000000000000000000000000000000000000000000000000000000000000000D -:2033A800000000000000000000000000000000000000000000000000000000000000000005 -:2033B0000000000000000000000000000000000000000000000000000000000000000000FD -:2033B8000000000000000000000000000000000000000000000000000000000000000000F5 -:2033C0000000000000000000000000000000000000000000000000000000000000000000ED -:2033C8000000000000000000000000000000000000000000000000000000000000000000E5 -:2033D0000000000000000000000000000000000000000000000000000000000000000000DD -:2033D8000000000000000000000000000000000000000000000000000000000000000000D5 -:2033E0000000000000000000000000000000000000000000000000000000000000000000CD -:2033E8000000000000000000000000000000000000000000000000000000000000000000C5 -:2033F0000000000000000000000000000000000000000000000000000000000000000000BD -:2033F8000000000000000000000000000000000000000000000000000000000000000000B5 -:203400000000000000000000000000000000000000000000000000000000000000000000AC -:203408000000000000000000000000000000000000000000000000000000000000000000A4 -:2034100000000000000000000000000000000000000000000000000000000000000000009C -:20341800000000000000000000000000000000000000000000000000000000000000000094 -:2034200000000000000000000000000000000000000000000000000000000000000000008C -:20342800000000000000000000000000000000000000000000000000000000000000000084 -:2034300000000000000000000000000000000000000000000000000000000000000000007C -:20343800000000000000000000000000000000000000000000000000000000000000000074 -:2034400000000000000000000000000000000000000000000000000000000000000000006C -:20344800000000000000000000000000000000000000000000000000000000000000000064 -:2034500000000000000000000000000000000000000000000000000000000000000000005C -:20345800000000000000000000000000000000000000000000000000000000000000000054 -:2034600000000000000000000000000000000000000000000000000000000000000000004C -:20346800000000000000000000000000000000000000000000000000000000000000000044 -:2034700000000000000000000000000000000000000000000000000000000000000000003C -:20347800000000000000000000000000000000000000000000000000000000000000000034 -:2034800000000000000000000000000000000000000000000000000000000000000000002C -:20348800000000000000000000000000000000000000000000000000000000000000000024 -:2034900000000000000000000000000000000000000000000000000000000000000000001C -:20349800000000000000000000000000000000000000000000000000000000000000000014 -:2034A00000000000000000000000000000000000000000000000000000000000000000000C -:2034A800000000000000000000000000000000000000000000000000000000000000000004 -:2034B0000000000000000000000000000000000000000000000000000000000000000000FC -:2034B8000000000000000000000000000000000000000000000000000000000000000000F4 -:2034C0000000000000000000000000000000000000000000000000000000000000000000EC -:2034C8000000000000000000000000000000000000000000000000000000000000000000E4 -:2034D0000000000000000000000000000000000000000000000000000000000000000000DC -:2034D8000000000000000000000000000000000000000000000000000000000000000000D4 -:2034E0000000000000000000000000000000000000000000000000000000000000000000CC -:2034E8000000000000000000000000000000000000000000000000000000000000000000C4 -:2034F0000000000000000000000000000000000000000000000000000000000000000000BC -:2034F8000000000000000000000000000000000000000000000000000000000000000000B4 -:203500000000000000000000000000000000000000000000000000000000000000000000AB -:203508000000000000000000000000000000000000000000000000000000000000000000A3 -:2035100000000000000000000000000000000000000000000000000000000000000000009B -:20351800000000000000000000000000000000000000000000000000000000000000000093 -:2035200000000000000000000000000000000000000000000000000000000000000000008B -:20352800000000000000000000000000000000000000000000000000000000000000000083 -:2035300000000000000000000000000000000000000000000000000000000000000000007B -:20353800000000000000000000000000000000000000000000000000000000000000000073 -:2035400000000000000000000000000000000000000000000000000000000000000000006B -:20354800000000000000000000000000000000000000000000000000000000000000000063 -:2035500000000000000000000000000000000000000000000000000000000000000000005B -:20355800000000000000000000000000000000000000000000000000000000000000000053 -:2035600000000000000000000000000000000000000000000000000000000000000000004B -:20356800000000000000000000000000000000000000000000000000000000000000000043 -:2035700000000000000000000000000000000000000000000000000000000000000000003B -:20357800000000000000000000000000000000000000000000000000000000000000000033 -:2035800000000000000000000000000000000000000000000000000000000000000000002B -:20358800000000000000000000000000000000000000000000000000000000000000000023 -:2035900000000000000000000000000000000000000000000000000000000000000000001B -:20359800000000000000000000000000000000000000000000000000000000000000000013 -:2035A00000000000000000000000000000000000000000000000000000000000000000000B -:2035A800000000000000000000000000000000000000000000000000000000000000000003 -:2035B0000000000000000000000000000000000000000000000000000000000000000000FB -:2035B8000000000000000000000000000000000000000000000000000000000000000000F3 -:2035C0000000000000000000000000000000000000000000000000000000000000000000EB -:2035C8000000000000000000000000000000000000000000000000000000000000000000E3 -:2035D0000000000000000000000000000000000000000000000000000000000000000000DB -:2035D8000000000000000000000000000000000000000000000000000000000000000000D3 -:2035E0000000000000000000000000000000000000000000000000000000000000000000CB -:2035E8000000000000000000000000000000000000000000000000000000000000000000C3 -:2035F0000000000000000000000000000000000000000000000000000000000000000000BB -:2035F8000000000000000000000000000000000000000000000000000000000000000000B3 -:203600000000000000000000000000000000000000000000000000000000000000000000AA -:203608000000000000000000000000000000000000000000000000000000000000000000A2 -:2036100000000000000000000000000000000000000000000000000000000000000000009A -:20361800000000000000000000000000000000000000000000000000000000000000000092 -:2036200000000000000000000000000000000000000000000000000000000000000000008A -:20362800000000000000000000000000000000000000000000000000000000000000000082 -:2036300000000000000000000000000000000000000000000000000000000000000000007A -:20363800000000000000000000000000000000000000000000000000000000000000000072 -:2036400000000000000000000000000000000000000000000000000000000000000000006A -:20364800000000000000000000000000000000000000000000000000000000000000000062 -:2036500000000000000000000000000000000000000000000000000000000000000000005A -:20365800000000000000000000000000000000000000000000000000000000000000000052 -:2036600000000000000000000000000000000000000000000000000000000000000000004A -:20366800000000000000000000000000000000000000000000000000000000000000000042 -:2036700000000000000000000000000000000000000000000000000000000000000000003A -:20367800000000000000000000000000000000000000000000000000000000000000000032 -:2036800000000000000000000000000000000000000000000000000000000000000000002A -:20368800000000000000000000000000000000000000000000000000000000000000000022 -:2036900000000000000000000000000000000000000000000000000000000000000000001A -:20369800000000000000000000000000000000000000000000000000000000000000000012 -:2036A00000000000000000000000000000000000000000000000000000000000000000000A -:2036A800000000000000000000000000000000000000000000000000000000000000000002 -:2036B0000000000000000000000000000000000000000000000000000000000000000000FA -:2036B8000000000000000000000000000000000000000000000000000000000000000000F2 -:2036C0000000000000000000000000000000000000000000000000000000000000000000EA -:2036C8000000000000000000000000000000000000000000000000000000000000000000E2 -:2036D0000000000000000000000000000000000000000000000000000000000000000000DA -:2036D8000000000000000000000000000000000000000000000000000000000000000000D2 -:2036E0000000000000000000000000000000000000000000000000000000000000000000CA -:2036E8000000000000000000000000000000000000000000000000000000000000000000C2 -:2036F0000000000000000000000000000000000000000000000000000000000000000000BA -:2036F8000000000000000000000000000000000000000000000000000000000000000000B2 -:203700000000000000000000000000000000000000000000000000000000000000000000A9 -:203708000000000000000000000000000000000000000000000000000000000000000000A1 -:20371000000000000000000000000000000000000000000000000000000000000000000099 -:20371800000000000000000000000000000000000000000000000000000000000000000091 -:20372000000000000000000000000000000000000000000000000000000000000000000089 -:20372800000000000000000000000000000000000000000000000000000000000000000081 -:20373000000000000000000000000000000000000000000000000000000000000000000079 -:20373800000000000000000000000000000000000000000000000000000000000000000071 -:20374000000000000000000000000000000000000000000000000000000000000000000069 -:20374800000000000000000000000000000000000000000000000000000000000000000061 -:20375000000000000000000000000000000000000000000000000000000000000000000059 -:20375800000000000000000000000000000000000000000000000000000000000000000051 -:20376000000000000000000000000000000000000000000000000000000000000000000049 -:20376800000000000000000000000000000000000000000000000000000000000000000041 -:20377000000000000000000000000000000000000000000000000000000000000000000039 -:20377800000000000000000000000000000000000000000000000000000000000000000031 -:20378000000000000000000000000000000000000000000000000000000000000000000029 -:20378800000000000000000000000000000000000000000000000000000000000000000021 -:20379000000000000000000000000000000000000000000000000000000000000000000019 -:20379800000000000000000000000000000000000000000000000000000000000000000011 -:2037A000000000000000000000000000000000000000000000000000000000000000000009 -:2037A800000000000000000000000000000000000000000000000000000000000000000001 -:2037B0000000000000000000000000000000000000000000000000000000000000000000F9 -:2037B8000000000000000000000000000000000000000000000000000000000000000000F1 -:2037C0000000000000000000000000000000000000000000000000000000000000000000E9 -:2037C8000000000000000000000000000000000000000000000000000000000000000000E1 -:2037D0000000000000000000000000000000000000000000000000000000000000000000D9 -:2037D8000000000000000000000000000000000000000000000000000000000000000000D1 -:2037E0000000000000000000000000000000000000000000000000000000000000000000C9 -:2037E8000000000000000000000000000000000000000000000000000000000000000000C1 -:2037F0000000000000000000000000000000000000000000000000000000000000000000B9 -:2037F8000000000000000000000000000000000000000000000000000000000000000000B1 -:203800000000000000000000000000000000000000000000000000000000000000000000A8 -:203808000000000000000000000000000000000000000000000000000000000000000000A0 -:20381000000000000000000000000000000000000000000000000000000000000000000098 -:20381800000000000000000000000000000000000000000000000000000000000000000090 -:20382000000000000000000000000000000000000000000000000000000000000000000088 -:20382800000000000000000000000000000000000000000000000000000000000000000080 -:20383000000000000000000000000000000000000000000000000000000000000000000078 -:20383800000000000000000000000000000000000000000000000000000000000000000070 -:20384000000000000000000000000000000000000000000000000000000000000000000068 -:20384800000000000000000000000000000000000000000000000000000000000000000060 -:20385000000000000000000000000000000000000000000000000000000000000000000058 -:20385800000000000000000000000000000000000000000000000000000000000000000050 -:20386000000000000000000000000000000000000000000000000000000000000000000048 -:20386800000000000000000000000000000000000000000000000000000000000000000040 -:20387000000000000000000000000000000000000000000000000000000000000000000038 -:20387800000000000000000000000000000000000000000000000000000000000000000030 -:20388000000000000000000000000000000000000000000000000000000000000000000028 -:20388800000000000000000000000000000000000000000000000000000000000000000020 -:20389000000000000000000000000000000000000000000000000000000000000000000018 -:20389800000000000000000000000000000000000000000000000000000000000000000010 -:2038A000000000000000000000000000000000000000000000000000000000000000000008 -:2038A800000000000000000000000000000000000000000000000000000000000000000000 -:2038B0000000000000000000000000000000000000000000000000000000000000000000F8 -:2038B8000000000000000000000000000000000000000000000000000000000000000000F0 -:2038C0000000000000000000000000000000000000000000000000000000000000000000E8 -:2038C8000000000000000000000000000000000000000000000000000000000000000000E0 -:2038D0000000000000000000000000000000000000000000000000000000000000000000D8 -:2038D8000000000000000000000000000000000000000000000000000000000000000000D0 -:2038E0000000000000000000000000000000000000000000000000000000000000000000C8 -:2038E8000000000000000000000000000000000000000000000000000000000000000000C0 -:2038F0000000000000000000000000000000000000000000000000000000000000000000B8 -:2038F8000000000000000000000000000000000000000000000000000000000000000000B0 -:203900000000000000000000000000000000000000000000000000000000000000000000A7 -:2039080000000000000000000000000000000000000000000000000000000000000000009F -:20391000000000000000000000000000000000000000000000000000000000000000000097 -:2039180000000000000000000000000000000000000000000000000000000000000000008F -:20392000000000000000000000000000000000000000000000000000000000000000000087 -:2039280000000000000000000000000000000000000000000000000000000000000000007F -:20393000000000000000000000000000000000000000000000000000000000000000000077 -:2039380000000000000000000000000000000000000000000000000000000000000000006F -:20394000000000000000000000000000000000000000000000000000000000000000000067 -:2039480000000000000000000000000000000000000000000000000000000000000000005F -:20395000000000000000000000000000000000000000000000000000000000000000000057 -:2039580000000000000000000000000000000000000000000000000000000000000000004F -:20396000000000000000000000000000000000000000000000000000000000000000000047 -:2039680000000000000000000000000000000000000000000000000000000000000000003F -:20397000000000000000000000000000000000000000000000000000000000000000000037 -:2039780000000000000000000000000000000000000000000000000000000000000000002F -:20398000000000000000000000000000000000000000000000000000000000000000000027 -:2039880000000000000000000000000000000000000000000000000000000000000000001F -:20399000000000000000000000000000000000000000000000000000000000000000000017 -:2039980000000000000000000000000000000000000000000000000000000000000000000F -:2039A000000000000000000000000000000000000000000000000000000000000000000007 -:2039A8000000000000000000000000000000000000000000000000000000000000000000FF -:2039B0000000000000000000000000000000000000000000000000000000000000000000F7 -:2039B8000000000000000000000000000000000000000000000000000000000000000000EF -:2039C0000000000000000000000000000000000000000000000000000000000000000000E7 -:2039C8000000000000000000000000000000000000000000000000000000000000000000DF -:2039D0000000000000000000000000000000000000000000000000000000000000000000D7 -:2039D8000000000000000000000000000000000000000000000000000000000000000000CF -:2039E0000000000000000000000000000000000000000000000000000000000000000000C7 -:2039E8000000000000000000000000000000000000000000000000000000000000000000BF -:2039F0000000000000000000000000000000000000000000000000000000000000000000B7 -:2039F8000000000000000000000000000000000000000000000000000000000000000000AF -:203A00000000000000000000000000000000000000000000000000000000000000000000A6 -:203A080000000000000000000000000000000000000000000000000000000000000000009E -:203A1000000000000000000000000000000000000000000000000000000000000000000096 -:203A180000000000000000000000000000000000000000000000000000000000000000008E -:203A2000000000000000000000000000000000000000000000000000000000000000000086 -:203A280000000000000000000000000000000000000000000000000000000000000000007E -:203A3000000000000000000000000000000000000000000000000000000000000000000076 -:203A380000000000000000000000000000000000000000000000000000000000000000006E -:203A4000000000000000000000000000000000000000000000000000000000000000000066 -:203A480000000000000000000000000000000000000000000000000000000000000000005E -:203A5000000000000000000000000000000000000000000000000000000000000000000056 -:203A580000000000000000000000000000000000000000000000000000000000000000004E -:203A6000000000000000000000000000000000000000000000000000000000000000000046 -:203A680000000000000000000000000000000000000000000000000000000000000000003E -:203A7000000000000000000000000000000000000000000000000000000000000000000036 -:203A780000000000000000000000000000000000000000000000000000000000000000002E -:203A8000000000000000000000000000000000000000000000000000000000000000000026 -:203A880000000000000000000000000000000000000000000000000000000000000000001E -:203A9000000000000000000000000000000000000000000000000000000000000000000016 -:203A980000000000000000000000000000000000000000000000000000000000000000000E -:203AA000000000000000000000000000000000000000000000000000000000000000000006 -:203AA8000000000000000000000000000000000000000000000000000000000000000000FE -:203AB0000000000000000000000000000000000000000000000000000000000000000000F6 -:203AB8000000000000000000000000000000000000000000000000000000000000000000EE -:203AC0000000000000000000000000000000000000000000000000000000000000000000E6 -:203AC8000000000000000000000000000000000000000000000000000000000000000000DE -:203AD0000000000000000000000000000000000000000000000000000000000000000000D6 -:203AD8000000000000000000000000000000000000000000000000000000000000000000CE -:203AE0000000000000000000000000000000000000000000000000000000000000000000C6 -:203AE8000000000000000000000000000000000000000000000000000000000000000000BE -:203AF0000000000000000000000000000000000000000000000000000000000000000000B6 -:203AF8000000000000000000000000000000000000000000000000000000000000000000AE -:203B00000000000000000000000000000000000000000000000000000000000000000000A5 -:203B080000000000000000000000000000000000000000000000000000000000000000009D -:203B1000000000000000000000000000000000000000000000000000000000000000000095 -:203B180000000000000000000000000000000000000000000000000000000000000000008D -:203B2000000000000000000000000000000000000000000000000000000000000000000085 -:203B280000000000000000000000000000000000000000000000000000000000000000007D -:203B3000000000000000000000000000000000000000000000000000000000000000000075 -:203B380000000000000000000000000000000000000000000000000000000000000000006D -:203B4000000000000000000000000000000000000000000000000000000000000000000065 -:203B480000000000000000000000000000000000000000000000000000000000000000005D -:203B5000000000000000000000000000000000000000000000000000000000000000000055 -:203B580000000000000000000000000000000000000000000000000000000000000000004D -:203B6000000000000000000000000000000000000000000000000000000000000000000045 -:203B680000000000000000000000000000000000000000000000000000000000000000003D -:203B7000000000000000000000000000000000000000000000000000000000000000000035 -:203B780000000000000000000000000000000000000000000000000000000000000000002D -:203B8000000000000000000000000000000000000000000000000000000000000000000025 -:203B880000000000000000000000000000000000000000000000000000000000000000001D -:203B9000000000000000000000000000000000000000000000000000000000000000000015 -:203B980000000000000000000000000000000000000000000000000000000000000000000D -:203BA000000000000000000000000000000000000000000000000000000000000000000005 -:203BA8000000000000000000000000000000000000000000000000000000000000000000FD -:203BB0000000000000000000000000000000000000000000000000000000000000000000F5 -:203BB8000000000000000000000000000000000000000000000000000000000000000000ED -:203BC0000000000000000000000000000000000000000000000000000000000000000000E5 -:203BC8000000000000000000000000000000000000000000000000000000000000000000DD -:203BD0000000000000000000000000000000000000000000000000000000000000000000D5 -:203BD8000000000000000000000000000000000000000000000000000000000000000000CD -:203BE0000000000000000000000000000000000000000000000000000000000000000000C5 -:203BE8000000000000000000000000000000000000000000000000000000000000000000BD -:203BF0000000000000000000000000000000000000000000000000000000000000000000B5 -:203BF8000000000000000000000000000000000000000000000000000000000000000000AD -:203C00000000000000000000000000000000000000000000000000000000000000000000A4 -:203C080000000000000000000000000000000000000000000000000000000000000000009C -:203C1000000000000000000000000000000000000000000000000000000000000000000094 -:203C180000000000000000000000000000000000000000000000000000000000000000008C -:203C2000000000000000000000000000000000000000000000000000000000000000000084 -:203C280000000000000000000000000000000000000000000000000000000000000000007C -:203C3000000000000000000000000000000000000000000000000000000000000000000074 -:203C380000000000000000000000000000000000000000000000000000000000000000006C -:203C4000000000000000000000000000000000000000000000000000000000000000000064 -:203C480000000000000000000000000000000000000000000000000000000000000000005C -:203C5000000000000000000000000000000000000000000000000000000000000000000054 -:203C580000000000000000000000000000000000000000000000000000000000000000004C -:203C6000000000000000000000000000000000000000000000000000000000000000000044 -:203C680000000000000000000000000000000000000000000000000000000000000000003C -:203C7000000000000000000000000000000000000000000000000000000000000000000034 -:203C780000000000000000000000000000000000000000000000000000000000000000002C -:203C8000000000000000000000000000000000000000000000000000000000000000000024 -:203C880000000000000000000000000000000000000000000000000000000000000000001C -:203C9000000000000000000000000000000000000000000000000000000000000000000014 -:203C980000000000000000000000000000000000000000000000000000000000000000000C -:203CA000000000000000000000000000000000000000000000000000000000000000000004 -:203CA8000000000000000000000000000000000000000000000000000000000000000000FC -:203CB0000000000000000000000000000000000000000000000000000000000000000000F4 -:203CB8000000000000000000000000000000000000000000000000000000000000000000EC -:203CC0000000000000000000000000000000000000000000000000000000000000000000E4 -:203CC8000000000000000000000000000000000000000000000000000000000000000000DC -:203CD0000000000000000000000000000000000000000000000000000000000000000000D4 -:203CD8000000000000000000000000000000000000000000000000000000000000000000CC -:203CE0000000000000000000000000000000000000000000000000000000000000000000C4 -:203CE8000000000000000000000000000000000000000000000000000000000000000000BC -:203CF0000000000000000000000000000000000000000000000000000000000000000000B4 -:203CF8000000000000000000000000000000000000000000000000000000000000000000AC -:203D00000000000000000000000000000000000000000000000000000000000000000000A3 -:203D080000000000000000000000000000000000000000000000000000000000000000009B -:203D1000000000000000000000000000000000000000000000000000000000000000000093 -:203D180000000000000000000000000000000000000000000000000000000000000000008B -:203D2000000000000000000000000000000000000000000000000000000000000000000083 -:203D280000000000000000000000000000000000000000000000000000000000000000007B -:203D3000000000000000000000000000000000000000000000000000000000000000000073 -:203D380000000000000000000000000000000000000000000000000000000000000000006B -:203D4000000000000000000000000000000000000000000000000000000000000000000063 -:203D480000000000000000000000000000000000000000000000000000000000000000005B -:203D5000000000000000000000000000000000000000000000000000000000000000000053 -:203D580000000000000000000000000000000000000000000000000000000000000000004B -:203D6000000000000000000000000000000000000000000000000000000000000000000043 -:203D680000000000000000000000000000000000000000000000000000000000000000003B -:203D7000000000000000000000000000000000000000000000000000000000000000000033 -:203D780000000000000000000000000000000000000000000000000000000000000000002B -:203D8000000000000000000000000000000000000000000000000000000000000000000023 -:203D880000000000000000000000000000000000000000000000000000000000000000001B -:203D9000000000000000000000000000000000000000000000000000000000000000000013 -:203D980000000000000000000000000000000000000000000000000000000000000000000B -:203DA000000000000000000000000000000000000000000000000000000000000000000003 -:203DA8000000000000000000000000000000000000000000000000000000000000000000FB -:203DB0000000000000000000000000000000000000000000000000000000000000000000F3 -:203DB8000000000000000000000000000000000000000000000000000000000000000000EB -:203DC0000000000000000000000000000000000000000000000000000000000000000000E3 -:203DC8000000000000000000000000000000000000000000000000000000000000000000DB -:203DD0000000000000000000000000000000000000000000000000000000000000000000D3 -:203DD8000000000000000000000000000000000000000000000000000000000000000000CB -:203DE0000000000000000000000000000000000000000000000000000000000000000000C3 -:203DE8000000000000000000000000000000000000000000000000000000000000000000BB -:203DF0000000000000000000000000000000000000000000000000000000000000000000B3 -:203DF8000000000000000000000000000000000000000000000000000000000000000000AB -:203E00000000000000000000000000000000000000000000000000000000000000000000A2 -:203E080000000000000000000000000000000000000000000000000000000000000000009A -:203E1000000000000000000000000000000000000000000000000000000000000000000092 -:203E180000000000000000000000000000000000000000000000000000000000000000008A -:203E2000000000000000000000000000000000000000000000000000000000000000000082 -:203E280000000000000000000000000000000000000000000000000000000000000000007A -:203E3000000000000000000000000000000000000000000000000000000000000000000072 -:203E380000000000000000000000000000000000000000000000000000000000000000006A -:203E4000000000000000000000000000000000000000000000000000000000000000000062 -:203E480000000000000000000000000000000000000000000000000000000000000000005A -:203E5000000000000000000000000000000000000000000000000000000000000000000052 -:203E580000000000000000000000000000000000000000000000000000000000000000004A -:203E6000000000000000000000000000000000000000000000000000000000000000000042 -:203E680000000000000000000000000000000000000000000000000000000000000000003A -:203E7000000000000000000000000000000000000000000000000000000000000000000032 -:203E780000000000000000000000000000000000000000000000000000000000000000002A -:203E8000000000000000000000000000000000000000000000000000000000000000000022 -:203E880000000000000000000000000000000000000000000000000000000000000000001A -:203E9000000000000000000000000000000000000000000000000000000000000000000012 -:203E980000000000000000000000000000000000000000000000000000000000000000000A -:203EA000000000000000000000000000000000000000000000000000000000000000000002 -:203EA8000000000000000000000000000000000000000000000000000000000000000000FA -:203EB0000000000000000000000000000000000000000000000000000000000000000000F2 -:203EB8000000000000000000000000000000000000000000000000000000000000000000EA -:203EC0000000000000000000000000000000000000000000000000000000000000000000E2 -:203EC8000000000000000000000000000000000000000000000000000000000000000000DA -:203ED0000000000000000000000000000000000000000000000000000000000000000000D2 -:203ED8000000000000000000000000000000000000000000000000000000000000000000CA -:203EE0000000000000000000000000000000000000000000000000000000000000000000C2 -:203EE8000000000000000000000000000000000000000000000000000000000000000000BA -:203EF0000000000000000000000000000000000000000000000000000000000000000000B2 -:203EF8000000000000000000000000000000000000000000000000000000000000000000AA -:203F00000000000000000000000000000000000000000000000000000000000000000000A1 -:203F0800000000000000000000000000000000000000000000000000000000000000000099 -:203F1000000000000000000000000000000000000000000000000000000000000000000091 -:203F1800000000000000000000000000000000000000000000000000000000000000000089 -:203F2000000000000000000000000000000000000000000000000000000000000000000081 -:203F2800000000000000000000000000000000000000000000000000000000000000000079 -:203F3000000000000000000000000000000000000000000000000000000000000000000071 -:203F3800000000000000000000000000000000000000000000000000000000000000000069 -:203F4000000000000000000000000000000000000000000000000000000000000000000061 -:203F4800000000000000000000000000000000000000000000000000000000000000000059 -:203F5000000000000000000000000000000000000000000000000000000000000000000051 -:203F5800000000000000000000000000000000000000000000000000000000000000000049 -:203F6000000000000000000000000000000000000000000000000000000000000000000041 -:203F6800000000000000000000000000000000000000000000000000000000000000000039 -:203F7000000000000000000000000000000000000000000000000000000000000000000031 -:203F7800000000000000000000000000000000000000000000000000000000000000000029 -:203F8000000000000000000000000000000000000000000000000000000000000000000021 -:203F8800000000000000000000000000000000000000000000000000000000000000000019 -:203F9000000000000000000000000000000000000000000000000000000000000000000011 -:203F9800000000000000000000000000000000000000000000000000000000000000000009 -:203FA000000000000000000000000000000000000000000000000000000000000000000001 -:203FA8000000000000000000000000000000000000000000000000000000000000000000F9 -:203FB0000000000000000000000000000000000000000000000000000000000000000000F1 -:203FB8000000000000000000000000000000000000000000000000000000000000000000E9 -:203FC0000000000000000000000000000000000000000000000000000000000000000000E1 -:203FC8000000000000000000000000000000000000000000000000000000000000000000D9 -:203FD0000000000000000000000000000000000000000000000000000000000000000000D1 -:203FD8000000000000000000000000000000000000000000000000000000000000000000C9 -:203FE0000000000000000000000000000000000000000000000000000000000000000000C1 -:203FE8000000000000000000000000000000000000000000000000000000000000000000B9 -:203FF0000000000000000000000000000000000000000000000000000000000000000000B1 -:203FF8000000000000000000000000000000000000000000000000000000000000000000A9 -:204000000000000000000000000000000000000000000000000000000000000000000000A0 -:20400800000000000000000000000000000000000000000000000000000000000000000098 -:20401000000000000000000000000000000000000000000000000000000000000000000090 -:20401800000000000000000000000000000000000000000000000000000000000000000088 -:20402000000000000000000000000000000000000000000000000000000000000000000080 -:20402800000000000000000000000000000000000000000000000000000000000000000078 -:20403000000000000000000000000000000000000000000000000000000000000000000070 -:20403800000000000000000000000000000000000000000000000000000000000000000068 -:20404000000000000000000000000000000000000000000000000000000000000000000060 -:20404800000000000000000000000000000000000000000000000000000000000000000058 -:20405000000000000000000000000000000000000000000000000000000000000000000050 -:20405800000000000000000000000000000000000000000000000000000000000000000048 -:20406000000000000000000000000000000000000000000000000000000000000000000040 -:20406800000000000000000000000000000000000000000000000000000000000000000038 -:20407000000000000000000000000000000000000000000000000000000000000000000030 -:20407800000000000000000000000000000000000000000000000000000000000000000028 -:20408000000000000000000000000000000000000000000000000000000000000000000020 -:20408800000000000000000000000000000000000000000000000000000000000000000018 -:20409000000000000000000000000000000000000000000000000000000000000000000010 -:20409800000000000000000000000000000000000000000000000000000000000000000008 -:2040A000000000000000000000000000000000000000000000000000000000000000000000 -:2040A8000000000000000000000000000000000000000000000000000000000000000000F8 -:2040B0000000000000000000000000000000000000000000000000000000000000000000F0 -:2040B8000000000000000000000000000000000000000000000000000000000000000000E8 -:2040C0000000000000000000000000000000000000000000000000000000000000000000E0 -:2040C8000000000000000000000000000000000000000000000000000000000000000000D8 -:2040D0000000000000000000000000000000000000000000000000000000000000000000D0 -:2040D8000000000000000000000000000000000000000000000000000000000000000000C8 -:2040E0000000000000000000000000000000000000000000000000000000000000000000C0 -:2040E8000000000000000000000000000000000000000000000000000000000000000000B8 -:2040F0000000000000000000000000000000000000000000000000000000000000000000B0 -:2040F8000000000000000000000000000000000000000000000000000000000000000000A8 -:2041000000000000000000000000000000000000000000000000000000000000000000009F -:20410800000000000000000000000000000000000000000000000000000000000000000097 -:2041100000000000000000000000000000000000000000000000000000000000000000008F -:20411800000000000000000000000000000000000000000000000000000000000000000087 -:2041200000000000000000000000000000000000000000000000000000000000000000007F -:20412800000000000000000000000000000000000000000000000000000000000000000077 -:2041300000000000000000000000000000000000000000000000000000000000000000006F -:20413800000000000000000000000000000000000000000000000000000000000000000067 -:2041400000000000000000000000000000000000000000000000000000000000000000005F -:20414800000000000000000000000000000000000000000000000000000000000000000057 -:2041500000000000000000000000000000000000000000000000000000000000000000004F -:20415800000000000000000000000000000000000000000000000000000000000000000047 -:2041600000000000000000000000000000000000000000000000000000000000000000003F -:20416800000000000000000000000000000000000000000000000000000000000000000037 -:2041700000000000000000000000000000000000000000000000000000000000000000002F -:20417800000000000000000000000000000000000000000000000000000000000000000027 -:2041800000000000000000000000000000000000000000000000000000000000000000001F -:20418800000000000000000000000000000000000000000000000000000000000000000017 -:2041900000000000000000000000000000000000000000000000000000000000000000000F -:20419800000000000000000000000000000000000000000000000000000000000000000007 -:2041A0000000000000000000000000000000000000000000000000000000000000000000FF -:2041A8000000000000000000000000000000000000000000000000000000000000000000F7 -:2041B0000000000000000000000000000000000000000000000000000000000000000000EF -:2041B8000000000000000000000000000000000000000000000000000000000000000000E7 -:2041C0000000000000000000000000000000000000000000000000000000000000000000DF -:2041C8000000000000000000000000000000000000000000000000000000000000000000D7 -:2041D0000000000000000000000000000000000000000000000000000000000000000000CF -:2041D8000000000000000000000000000000000000000000000000000000000000000000C7 -:2041E0000000000000000000000000000000000000000000000000000000000000000000BF -:2041E8000000000000000000000000000000000000000000000000000000000000000000B7 -:2041F0000000000000000000000000000000000000000000000000000000000000000000AF -:2041F8000000000000000000000000000000000000000000000000000000000000000000A7 -:2042000000000000000000000000000000000000000000000000000000000000000000009E -:20420800000000000000000000000000000000000000000000000000000000000000000096 -:2042100000000000000000000000000000000000000000000000000000000000000000008E -:20421800000000000000000000000000000000000000000000000000000000000000000086 -:2042200000000000000000000000000000000000000000000000000000000000000000007E -:20422800000000000000000000000000000000000000000000000000000000000000000076 -:2042300000000000000000000000000000000000000000000000000000000000000000006E -:20423800000000000000000000000000000000000000000000000000000000000000000066 -:2042400000000000000000000000000000000000000000000000000000000000000000005E -:20424800000000000000000000000000000000000000000000000000000000000000000056 -:2042500000000000000000000000000000000000000000000000000000000000000000004E -:20425800000000000000000000000000000000000000000000000000000000000000000046 -:2042600000000000000000000000000000000000000000000000000000000000000000003E -:20426800000000000000000000000000000000000000000000000000000000000000000036 -:2042700000000000000000000000000000000000000000000000000000000000000000002E -:20427800000000000000000000000000000000000000000000000000000000000000000026 -:2042800000000000000000000000000000000000000000000000000000000000000000001E -:20428800000000000000000000000000000000000000000000000000000000000000000016 -:2042900000000000000000000000000000000000000000000000000000000000000000000E -:20429800000000000000000000000000000000000000000000000000000000000000000006 -:2042A0000000000000000000000000000000000000000000000000000000000000000000FE -:2042A8000000000000000000000000000000000000000000000000000000000000000000F6 -:2042B0000000000000000000000000000000000000000000000000000000000000000000EE -:2042B8000000000000000000000000000000000000000000000000000000000000000000E6 -:2042C0000000000000000000000000000000000000000000000000000000000000000000DE -:2042C8000000000000000000000000000000000000000000000000000000000000000000D6 -:2042D0000000000000000000000000000000000000000000000000000000000000000000CE -:2042D8000000000000000000000000000000000000000000000000000000000000000000C6 -:2042E0000000000000000000000000000000000000000000000000000000000000000000BE -:2042E8000000000000000000000000000000000000000000000000000000000000000000B6 -:2042F0000000000000000000000000000000000000000000000000000000000000000000AE -:2042F8000000000000000000000000000000000000000000000000000000000000000000A6 -:2043000000000000000000000000000000000000000000000000000000000000000000009D -:20430800000000000000000000000000000000000000000000000000000000000000000095 -:2043100000000000000000000000000000000000000000000000000000000000000000008D -:20431800000000000000000000000000000000000000000000000000000000000000000085 -:2043200000000000000000000000000000000000000000000000000000000000000000007D -:20432800000000000000000000000000000000000000000000000000000000000000000075 -:2043300000000000000000000000000000000000000000000000000000000000000000006D -:20433800000000000000000000000000000000000000000000000000000000000000000065 -:2043400000000000000000000000000000000000000000000000000000000000000000005D -:20434800000000000000000000000000000000000000000000000000000000000000000055 -:2043500000000000000000000000000000000000000000000000000000000000000000004D -:20435800000000000000000000000000000000000000000000000000000000000000000045 -:2043600000000000000000000000000000000000000000000000000000000000000000003D -:20436800000000000000000000000000000000000000000000000000000000000000000035 -:2043700000000000000000000000000000000000000000000000000000000000000000002D -:20437800000000000000000000000000000000000000000000000000000000000000000025 -:2043800000000000000000000000000000000000000000000000000000000000000000001D -:20438800000000000000000000000000000000000000000000000000000000000000000015 -:2043900000000000000000000000000000000000000000000000000000000000000000000D -:20439800000000000000000000000000000000000000000000000000000000000000000005 -:2043A0000000000000000000000000000000000000000000000000000000000000000000FD -:2043A8000000000000000000000000000000000000000000000000000000000000000000F5 -:2043B0000000000000000000000000000000000000000000000000000000000000000000ED -:2043B8000000000000000000000000000000000000000000000000000000000000000000E5 -:2043C0000000000000000000000000000000000000000000000000000000000000000000DD -:2043C8000000000000000000000000000000000000000000000000000000000000000000D5 -:2043D0000000000000000000000000000000000000000000000000000000000000000000CD -:2043D8000000000000000000000000000000000000000000000000000000000000000000C5 -:2043E0000000000000000000000000000000000000000000000000000000000000000000BD -:2043E8000000000000000000000000000000000000000000000000000000000000000000B5 -:2043F0000000000000000000000000000000000000000000000000000000000000000000AD -:2043F8000000000000000000000000000000000000000000000000000000000000000000A5 -:2044000000000000000000000000000000000000000000000000000000000000000000009C -:20440800000000000000000000000000000000000000000000000000000000000000000094 -:2044100000000000000000000000000000000000000000000000000000000000000000008C -:20441800000000000000000000000000000000000000000000000000000000000000000084 -:2044200000000000000000000000000000000000000000000000000000000000000000007C -:20442800000000000000000000000000000000000000000000000000000000000000000074 -:2044300000000000000000000000000000000000000000000000000000000000000000006C -:20443800000000000000000000000000000000000000000000000000000000000000000064 -:2044400000000000000000000000000000000000000000000000000000000000000000005C -:20444800000000000000000000000000000000000000000000000000000000000000000054 -:2044500000000000000000000000000000000000000000000000000000000000000000004C -:20445800000000000000000000000000000000000000000000000000000000000000000044 -:2044600000000000000000000000000000000000000000000000000000000000000000003C -:20446800000000000000000000000000000000000000000000000000000000000000000034 -:2044700000000000000000000000000000000000000000000000000000000000000000002C -:20447800000000000000000000000000000000000000000000000000000000000000000024 -:2044800000000000000000000000000000000000000000000000000000000000000000001C -:20448800000000000000000000000000000000000000000000000000000000000000000014 -:2044900000000000000000000000000000000000000000000000000000000000000000000C -:20449800000000000000000000000000000000000000000000000000000000000000000004 -:2044A0000000000000000000000000000000000000000000000000000000000000000000FC -:2044A8000000000000000000000000000000000000000000000000000000000000000000F4 -:2044B0000000000000000000000000000000000000000000000000000000000000000000EC -:2044B8000000000000000000000000000000000000000000000000000000000000000000E4 -:2044C0000000000000000000000000000000000000000000000000000000000000000000DC -:2044C8000000000000000000000000000000000000000000000000000000000000000000D4 -:2044D0000000000000000000000000000000000000000000000000000000000000000000CC -:2044D8000000000000000000000000000000000000000000000000000000000000000000C4 -:2044E0000000000000000000000000000000000000000000000000000000000000000000BC -:2044E8000000000000000000000000000000000000000000000000000000000000000000B4 -:2044F0000000000000000000000000000000000000000000000000000000000000000000AC -:2044F8000000000000000000000000000000000000000000000000000000000000000000A4 -:2045000000000000000000000000000000000000000000000000000000000000000000009B -:20450800000000000000000000000000000000000000000000000000000000000000000093 -:2045100000000000000000000000000000000000000000000000000000000000000000008B -:20451800000000000000000000000000000000000000000000000000000000000000000083 -:2045200000000000000000000000000000000000000000000000000000000000000000007B -:20452800000000000000000000000000000000000000000000000000000000000000000073 -:2045300000000000000000000000000000000000000000000000000000000000000000006B -:20453800000000000000000000000000000000000000000000000000000000000000000063 -:2045400000000000000000000000000000000000000000000000000000000000000000005B -:20454800000000000000000000000000000000000000000000000000000000000000000053 -:2045500000000000000000000000000000000000000000000000000000000000000000004B -:20455800000000000000000000000000000000000000000000000000000000000000000043 -:2045600000000000000000000000000000000000000000000000000000000000000000003B -:20456800000000000000000000000000000000000000000000000000000000000000000033 -:2045700000000000000000000000000000000000000000000000000000000000000000002B -:20457800000000000000000000000000000000000000000000000000000000000000000023 -:2045800000000000000000000000000000000000000000000000000000000000000000001B -:20458800000000000000000000000000000000000000000000000000000000000000000013 -:2045900000000000000000000000000000000000000000000000000000000000000000000B -:20459800000000000000000000000000000000000000000000000000000000000000000003 -:2045A0000000000000000000000000000000000000000000000000000000000000000000FB -:2045A8000000000000000000000000000000000000000000000000000000000000000000F3 -:2045B0000000000000000000000000000000000000000000000000000000000000000000EB -:2045B8000000000000000000000000000000000000000000000000000000000000000000E3 -:2045C0000000000000000000000000000000000000000000000000000000000000000000DB -:2045C8000000000000000000000000000000000000000000000000000000000000000000D3 -:2045D0000000000000000000000000000000000000000000000000000000000000000000CB -:2045D8000000000000000000000000000000000000000000000000000000000000000000C3 -:2045E0000000000000000000000000000000000000000000000000000000000000000000BB -:2045E8000000000000000000000000000000000000000000000000000000000000000000B3 -:2045F0000000000000000000000000000000000000000000000000000000000000000000AB -:2045F8000000000000000000000000000000000000000000000000000000000000000000A3 -:2046000000000000000000000000000000000000000000000000000000000000000000009A -:20460800000000000000000000000000000000000000000000000000000000000000000092 -:2046100000000000000000000000000000000000000000000000000000000000000000008A -:20461800000000000000000000000000000000000000000000000000000000000000000082 -:2046200000000000000000000000000000000000000000000000000000000000000000007A -:20462800000000000000000000000000000000000000000000000000000000000000000072 -:2046300000000000000000000000000000000000000000000000000000000000000000006A -:20463800000000000000000000000000000000000000000000000000000000000000000062 -:2046400000000000000000000000000000000000000000000000000000000000000000005A -:20464800000000000000000000000000000000000000000000000000000000000000000052 -:2046500000000000000000000000000000000000000000000000000000000000000000004A -:20465800000000000000000000000000000000000000000000000000000000000000000042 -:2046600000000000000000000000000000000000000000000000000000000000000000003A -:20466800000000000000000000000000000000000000000000000000000000000000000032 -:2046700000000000000000000000000000000000000000000000000000000000000000002A -:20467800000000000000000000000000000000000000000000000000000000000000000022 -:2046800000000000000000000000000000000000000000000000000000000000000000001A -:20468800000000000000000000000000000000000000000000000000000000000000000012 -:2046900000000000000000000000000000000000000000000000000000000000000000000A -:20469800000000000000000000000000000000000000000000000000000000000000000002 -:2046A0000000000000000000000000000000000000000000000000000000000000000000FA -:2046A8000000000000000000000000000000000000000000000000000000000000000000F2 -:2046B0000000000000000000000000000000000000000000000000000000000000000000EA -:2046B8000000000000000000000000000000000000000000000000000000000000000000E2 -:2046C0000000000000000000000000000000000000000000000000000000000000000000DA -:2046C8000000000000000000000000000000000000000000000000000000000000000000D2 -:2046D0000000000000000000000000000000000000000000000000000000000000000000CA -:2046D8000000000000000000000000000000000000000000000000000000000000000000C2 -:2046E0000000000000000000000000000000000000000000000000000000000000000000BA -:2046E8000000000000000000000000000000000000000000000000000000000000000000B2 -:2046F0000000000000000000000000000000000000000000000000000000000000000000AA -:2046F8000000000000000000000000000000000000000000000000000000000000000000A2 -:20470000000000000000000000000000000000000000000000000000000000000000000099 -:20470800000000000000000000000000000000000000000000000000000000000000000091 -:20471000000000000000000000000000000000000000000000000000000000000000000089 -:20471800000000000000000000000000000000000000000000000000000000000000000081 -:20472000000000000000000000000000000000000000000000000000000000000000000079 -:20472800000000000000000000000000000000000000000000000000000000000000000071 -:20473000000000000000000000000000000000000000000000000000000000000000000069 -:20473800000000000000000000000000000000000000000000000000000000000000000061 -:20474000000000000000000000000000000000000000000000000000000000000000000059 -:20474800000000000000000000000000000000000000000000000000000000000000000051 -:20475000000000000000000000000000000000000000000000000000000000000000000049 -:20475800000000000000000000000000000000000000000000000000000000000000000041 -:20476000000000000000000000000000000000000000000000000000000000000000000039 -:20476800000000000000000000000000000000000000000000000000000000000000000031 -:20477000000000000000000000000000000000000000000000000000000000000000000029 -:20477800000000000000000000000000000000000000000000000000000000000000000021 -:20478000000000000000000000000000000000000000000000000000000000000000000019 -:20478800000000000000000000000000000000000000000000000000000000000000000011 -:20479000000000000000000000000000000000000000000000000000000000000000000009 -:20479800000000000000000000000000000000000000000000000000000000000000000001 -:2047A0000000000000000000000000000000000000000000000000000000000000000000F9 -:2047A8000000000000000000000000000000000000000000000000000000000000000000F1 -:2047B0000000000000000000000000000000000000000000000000000000000000000000E9 -:2047B8000000000000000000000000000000000000000000000000000000000000000000E1 -:2047C0000000000000000000000000000000000000000000000000000000000000000000D9 -:2047C8000000000000000000000000000000000000000000000000000000000000000000D1 -:2047D0000000000000000000000000000000000000000000000000000000000000000000C9 -:2047D8000000000000000000000000000000000000000000000000000000000000000000C1 -:2047E0000000000000000000000000000000000000000000000000000000000000000000B9 -:2047E8000000000000000000000000000000000000000000000000000000000000000000B1 -:2047F0000000000000000000000000000000000000000000000000000000000000000000A9 -:2047F8000000000000000000000000000000000000000000000000000000000000000000A1 -:20480000000000000000000000000000000000000000000000000000000000000000000098 -:20480800000000000000000000000000000000000000000000000000000000000000000090 -:20481000000000000000000000000000000000000000000000000000000000000000000088 -:20481800000000000000000000000000000000000000000000000000000000000000000080 -:20482000000000000000000000000000000000000000000000000000000000000000000078 -:20482800000000000000000000000000000000000000000000000000000000000000000070 -:20483000000000000000000000000000000000000000000000000000000000000000000068 -:20483800000000000000000000000000000000000000000000000000000000000000000060 -:20484000000000000000000000000000000000000000000000000000000000000000000058 -:20484800000000000000000000000000000000000000000000000000000000000000000050 -:20485000000000000000000000000000000000000000000000000000000000000000000048 -:20485800000000000000000000000000000000000000000000000000000000000000000040 -:20486000000000000000000000000000000000000000000000000000000000000000000038 -:20486800000000000000000000000000000000000000000000000000000000000000000030 -:20487000000000000000000000000000000000000000000000000000000000000000000028 -:20487800000000000000000000000000000000000000000000000000000000000000000020 -:20488000000000000000000000000000000000000000000000000000000000000000000018 -:20488800000000000000000000000000000000000000000000000000000000000000000010 -:20489000000000000000000000000000000000000000000000000000000000000000000008 -:20489800000000000000000000000000000000000000000000000000000000000000000000 -:2048A0000000000000000000000000000000000000000000000000000000000000000000F8 -:2048A8000000000000000000000000000000000000000000000000000000000000000000F0 -:2048B0000000000000000000000000000000000000000000000000000000000000000000E8 -:2048B8000000000000000000000000000000000000000000000000000000000000000000E0 -:2048C0000000000000000000000000000000000000000000000000000000000000000000D8 -:2048C8000000000000000000000000000000000000000000000000000000000000000000D0 -:2048D0000000000000000000000000000000000000000000000000000000000000000000C8 -:2048D8000000000000000000000000000000000000000000000000000000000000000000C0 -:2048E0000000000000000000000000000000000000000000000000000000000000000000B8 -:2048E8000000000000000000000000000000000000000000000000000000000000000000B0 -:2048F0000000000000000000000000000000000000000000000000000000000000000000A8 -:2048F8000000000000000000000000000000000000000000000000000000000000000000A0 -:20490000000000000000000000000000000000000000000000000000000000000000000097 -:2049080000000000000000000000000000000000000000000000000000000000000000008F -:20491000000000000000000000000000000000000000000000000000000000000000000087 -:2049180000000000000000000000000000000000000000000000000000000000000000007F -:20492000000000000000000000000000000000000000000000000000000000000000000077 -:2049280000000000000000000000000000000000000000000000000000000000000000006F -:20493000000000000000000000000000000000000000000000000000000000000000000067 -:2049380000000000000000000000000000000000000000000000000000000000000000005F -:20494000000000000000000000000000000000000000000000000000000000000000000057 -:2049480000000000000000000000000000000000000000000000000000000000000000004F -:20495000000000000000000000000000000000000000000000000000000000000000000047 -:2049580000000000000000000000000000000000000000000000000000000000000000003F -:20496000000000000000000000000000000000000000000000000000000000000000000037 -:2049680000000000000000000000000000000000000000000000000000000000000000002F -:20497000000000000000000000000000000000000000000000000000000000000000000027 -:2049780000000000000000000000000000000000000000000000000000000000000000001F -:20498000000000000000000000000000000000000000000000000000000000000000000017 -:2049880000000000000000000000000000000000000000000000000000000000000000000F -:20499000000000000000000000000000000000000000000000000000000000000000000007 -:204998000000000000000000000000000000000000000000000000000000000000000000FF -:2049A0000000000000000000000000000000000000000000000000000000000000000000F7 -:2049A8000000000000000000000000000000000000000000000000000000000000000000EF -:2049B0000000000000000000000000000000000000000000000000000000000000000000E7 -:2049B8000000000000000000000000000000000000000000000000000000000000000000DF -:2049C0000000000000000000000000000000000000000000000000000000000000000000D7 -:2049C8000000000000000000000000000000000000000000000000000000000000000000CF -:2049D0000000000000000000000000000000000000000000000000000000000000000000C7 -:2049D8000000000000000000000000000000000000000000000000000000000000000000BF -:2049E0000000000000000000000000000000000000000000000000000000000000000000B7 -:2049E8000000000000000000000000000000000000000000000000000000000000000000AF -:2049F0000000000000000000000000000000000000000000000000000000000000000000A7 -:2049F80000000000000000000000000000000000000000000000000000000000000000009F -:204A0000000000000000000000000000000000000000000000000000000000000000000096 -:204A080000000000000000000000000000000000000000000000000000000000000000008E -:204A1000000000000000000000000000000000000000000000000000000000000000000086 -:204A180000000000000000000000000000000000000000000000000000000000000000007E -:204A2000000000000000000000000000000000000000000000000000000000000000000076 -:204A280000000000000000000000000000000000000000000000000000000000000000006E -:204A3000000000000000000000000000000000000000000000000000000000000000000066 -:204A380000000000000000000000000000000000000000000000000000000000000000005E -:204A4000000000000000000000000000000000000000000000000000000000000000000056 -:204A480000000000000000000000000000000000000000000000000000000000000000004E -:204A5000000000000000000000000000000000000000000000000000000000000000000046 -:204A580000000000000000000000000000000000000000000000000000000000000000003E -:204A6000000000000000000000000000000000000000000000000000000000000000000036 -:204A680000000000000000000000000000000000000000000000000000000000000000002E -:204A7000000000000000000000000000000000000000000000000000000000000000000026 -:204A780000000000000000000000000000000000000000000000000000000000000000001E -:204A8000000000000000000000000000000000000000000000000000000000000000000016 -:204A880000000000000000000000000000000000000000000000000000000000000000000E -:204A9000000000000000000000000000000000000000000000000000000000000000000006 -:204A98000000000000000000000000000000000000000000000000000000000000000000FE -:204AA0000000000000000000000000000000000000000000000000000000000000000000F6 -:204AA8000000000000000000000000000000000000000000000000000000000000000000EE -:204AB0000000000000000000000000000000000000000000000000000000000000000000E6 -:204AB8000000000000000000000000000000000000000000000000000000000000000000DE -:204AC0000000000000000000000000000000000000000000000000000000000000000000D6 -:204AC8000000000000000000000000000000000000000000000000000000000000000000CE -:204AD0000000000000000000000000000000000000000000000000000000000000000000C6 -:204AD8000000000000000000000000000000000000000000000000000000000000000000BE -:204AE0000000000000000000000000000000000000000000000000000000000000000000B6 -:204AE8000000000000000000000000000000000000000000000000000000000000000000AE -:204AF0000000000000000000000000000000000000000000000000000000000000000000A6 -:204AF80000000000000000000000000000000000000000000000000000000000000000009E -:204B0000000000000000000000000000000000000000000000000000000000000000000095 -:204B080000000000000000000000000000000000000000000000000000000000000000008D -:204B1000000000000000000000000000000000000000000000000000000000000000000085 -:204B180000000000000000000000000000000000000000000000000000000000000000007D -:204B2000000000000000000000000000000000000000000000000000000000000000000075 -:204B280000000000000000000000000000000000000000000000000000000000000000006D -:204B3000000000000000000000000000000000000000000000000000000000000000000065 -:204B380000000000000000000000000000000000000000000000000000000000000000005D -:204B4000000000000000000000000000000000000000000000000000000000000000000055 -:204B480000000000000000000000000000000000000000000000000000000000000000004D -:204B5000000000000000000000000000000000000000000000000000000000000000000045 -:204B580000000000000000000000000000000000000000000000000000000000000000003D -:204B6000000000000000000000000000000000000000000000000000000000000000000035 -:204B680000000000000000000000000000000000000000000000000000000000000000002D -:204B7000000000000000000000000000000000000000000000000000000000000000000025 -:204B780000000000000000000000000000000000000000000000000000000000000000001D -:204B8000000000000000000000000000000000000000000000000000000000000000000015 -:204B880000000000000000000000000000000000000000000000000000000000000000000D -:204B9000000000000000000000000000000000000000000000000000000000000000000005 -:204B98000000000000000000000000000000000000000000000000000000000000000000FD -:204BA0000000000000000000000000000000000000000000000000000000000000000000F5 -:204BA8000000000000000000000000000000000000000000000000000000000000000000ED -:204BB0000000000000000000000000000000000000000000000000000000000000000000E5 -:204BB8000000000000000000000000000000000000000000000000000000000000000000DD -:204BC0000000000000000000000000000000000000000000000000000000000000000000D5 -:204BC8000000000000000000000000000000000000000000000000000000000000000000CD -:204BD0000000000000000000000000000000000000000000000000000000000000000000C5 -:204BD8000000000000000000000000000000000000000000000000000000000000000000BD -:204BE0000000000000000000000000000000000000000000000000000000000000000000B5 -:204BE8000000000000000000000000000000000000000000000000000000000000000000AD -:204BF0000000000000000000000000000000000000000000000000000000000000000000A5 -:204BF80000000000000000000000000000000000000000000000000000000000000000009D -:204C0000000000000000000000000000000000000000000000000000000000000000000094 -:204C080000000000000000000000000000000000000000000000000000000000000000008C -:204C1000000000000000000000000000000000000000000000000000000000000000000084 -:204C180000000000000000000000000000000000000000000000000000000000000000007C -:204C2000000000000000000000000000000000000000000000000000000000000000000074 -:204C280000000000000000000000000000000000000000000000000000000000000000006C -:204C3000000000000000000000000000000000000000000000000000000000000000000064 -:204C380000000000000000000000000000000000000000000000000000000000000000005C -:204C4000000000000000000000000000000000000000000000000000000000000000000054 -:204C480000000000000000000000000000000000000000000000000000000000000000004C -:204C5000000000000000000000000000000000000000000000000000000000000000000044 -:204C580000000000000000000000000000000000000000000000000000000000000000003C -:204C6000000000000000000000000000000000000000000000000000000000000000000034 -:204C680000000000000000000000000000000000000000000000000000000000000000002C -:204C7000000000000000000000000000000000000000000000000000000000000000000024 -:204C780000000000000000000000000000000000000000000000000000000000000000001C -:204C8000000000000000000000000000000000000000000000000000000000000000000014 -:204C880000000000000000000000000000000000000000000000000000000000000000000C -:204C9000000000000000000000000000000000000000000000000000000000000000000004 -:204C98000000000000000000000000000000000000000000000000000000000000000000FC -:204CA0000000000000000000000000000000000000000000000000000000000000000000F4 -:204CA8000000000000000000000000000000000000000000000000000000000000000000EC -:204CB0000000000000000000000000000000000000000000000000000000000000000000E4 -:204CB8000000000000000000000000000000000000000000000000000000000000000000DC -:204CC0000000000000000000000000000000000000000000000000000000000000000000D4 -:204CC8000000000000000000000000000000000000000000000000000000000000000000CC -:204CD0000000000000000000000000000000000000000000000000000000000000000000C4 -:204CD8000000000000000000000000000000000000000000000000000000000000000000BC -:204CE0000000000000000000000000000000000000000000000000000000000000000000B4 -:204CE8000000000000000000000000000000000000000000000000000000000000000000AC -:204CF0000000000000000000000000000000000000000000000000000000000000000000A4 -:204CF80000000000000000000000000000000000000000000000000000000000000000009C -:204D0000000000000000000000000000000000000000000000000000000000000000000093 -:204D080000000000000000000000000000000000000000000000000000000000000000008B -:204D1000000000000000000000000000000000000000000000000000000000000000000083 -:204D180000000000000000000000000000000000000000000000000000000000000000007B -:204D2000000000000000000000000000000000000000000000000000000000000000000073 -:204D280000000000000000000000000000000000000000000000000000000000000000006B -:204D3000000000000000000000000000000000000000000000000000000000000000000063 -:204D380000000000000000000000000000000000000000000000000000000000000000005B -:204D4000000000000000000000000000000000000000000000000000000000000000000053 -:204D480000000000000000000000000000000000000000000000000000000000000000004B -:204D5000000000000000000000000000000000000000000000000000000000000000000043 -:204D580000000000000000000000000000000000000000000000000000000000000000003B -:204D6000000000000000000000000000000000000000000000000000000000000000000033 -:204D680000000000000000000000000000000000000000000000000000000000000000002B -:204D7000000000000000000000000000000000000000000000000000000000000000000023 -:204D780000000000000000000000000000000000000000000000000000000000000000001B -:204D8000000000000000000000000000000000000000000000000000000000000000000013 -:204D880000000000000000000000000000000000000000000000000000000000000000000B -:204D9000000000000000000000000000000000000000000000000000000000000000000003 -:204D98000000000000000000000000000000000000000000000000000000000000000000FB -:204DA0000000000000000000000000000000000000000000000000000000000000000000F3 -:204DA8000000000000000000000000000000000000000000000000000000000000000000EB -:204DB0000000000000000000000000000000000000000000000000000000000000000000E3 -:204DB8000000000000000000000000000000000000000000000000000000000000000000DB -:204DC0000000000000000000000000000000000000000000000000000000000000000000D3 -:204DC8000000000000000000000000000000000000000000000000000000000000000000CB -:204DD0000000000000000000000000000000000000000000000000000000000000000000C3 -:204DD8000000000000000000000000000000000000000000000000000000000000000000BB -:204DE0000000000000000000000000000000000000000000000000000000000000000000B3 -:204DE8000000000000000000000000000000000000000000000000000000000000000000AB -:204DF0000000000000000000000000000000000000000000000000000000000000000000A3 -:204DF80000000000000000000000000000000000000000000000000000000000000000009B -:204E0000000000000000000000000000000000000000000000000000000000000000000092 -:204E080000000000000000000000000000000000000000000000000000000000000000008A -:204E1000000000000000000000000000000000000000000000000000000000000000000082 -:204E180000000000000000000000000000000000000000000000000000000000000000007A -:204E2000000000000000000000000000000000000000000000000000000000000000000072 -:204E280000000000000000000000000000000000000000000000000000000000000000006A -:204E3000000000000000000000000000000000000000000000000000000000000000000062 -:204E380000000000000000000000000000000000000000000000000000000000000000005A -:204E4000000000000000000000000000000000000000000000000000000000000000000052 -:204E480000000000000000000000000000000000000000000000000000000000000000004A -:204E5000000000000000000000000000000000000000000000000000000000000000000042 -:204E580000000000000000000000000000000000000000000000000000000000000000003A -:204E6000000000000000000000000000000000000000000000000000000000000000000032 -:204E680000000000000000000000000000000000000000000000000000000000000000002A -:204E7000000000000000000000000000000000000000000000000000000000000000000022 -:204E780000000000000000000000000000000000000000000000000000000000000000001A -:204E8000000000000000000000000000000000000000000000000000000000000000000012 -:204E880000000000000000000000000000000000000000000000000000000000000000000A -:204E9000000000000000000000000000000000000000000000000000000000000000000002 -:204E98000000000000000000000000000000000000000000000000000000000000000000FA -:204EA0000000000000000000000000000000000000000000000000000000000000000000F2 -:204EA8000000000000000000000000000000000000000000000000000000000000000000EA -:204EB0000000000000000000000000000000000000000000000000000000000000000000E2 -:204EB8000000000000000000000000000000000000000000000000000000000000000000DA -:204EC0000000000000000000000000000000000000000000000000000000000000000000D2 -:204EC8000000000000000000000000000000000000000000000000000000000000000000CA -:204ED0000000000000000000000000000000000000000000000000000000000000000000C2 -:204ED8000000000000000000000000000000000000000000000000000000000000000000BA -:204EE0000000000000000000000000000000000000000000000000000000000000000000B2 -:204EE8000000000000000000000000000000000000000000000000000000000000000000AA -:204EF0000000000000000000000000000000000000000000000000000000000000000000A2 -:204EF80000000000000000000000000000000000000000000000000000000000000000009A -:204F0000000000000000000000000000000000000000000000000000000000000000000091 -:204F0800000000000000000000000000000000000000000000000000000000000000000089 -:204F1000000000000000000000000000000000000000000000000000000000000000000081 -:204F1800000000000000000000000000000000000000000000000000000000000000000079 -:204F2000000000000000000000000000000000000000000000000000000000000000000071 -:204F2800000000000000000000000000000000000000000000000000000000000000000069 -:204F3000000000000000000000000000000000000000000000000000000000000000000061 -:204F3800000000000000000000000000000000000000000000000000000000000000000059 -:204F4000000000000000000000000000000000000000000000000000000000000000000051 -:204F4800000000000000000000000000000000000000000000000000000000000000000049 -:204F5000000000000000000000000000000000000000000000000000000000000000000041 -:204F5800000000000000000000000000000000000000000000000000000000000000000039 -:204F6000000000000000000000000000000000000000000000000000000000000000000031 -:204F6800000000000000000000000000000000000000000000000000000000000000000029 -:204F7000000000000000000000000000000000000000000000000000000000000000000021 -:204F7800000000000000000000000000000000000000000000000000000000000000000019 -:204F8000000000000000000000000000000000000000000000000000000000000000000011 -:204F8800000000000000000000000000000000000000000000000000000000000000000009 -:204F9000000000000000000000000000000000000000000000000000000000000000000001 -:204F98000000000000000000000000000000000000000000000000000000000000000000F9 -:204FA0000000000000000000000000000000000000000000000000000000000000000000F1 -:204FA8000000000000000000000000000000000000000000000000000000000000000000E9 -:204FB0000000000000000000000000000000000000000000000000000000000000000000E1 -:204FB8000000000000000000000000000000000000000000000000000000000000000000D9 -:204FC0000000000000000000000000000000000000000000000000000000000000000000D1 -:204FC8000000000000000000000000000000000000000000000000000000000000000000C9 -:204FD0000000000000000000000000000000000000000000000000000000000000000000C1 -:204FD8000000000000000000000000000000000000000000000000000000000000000000B9 -:204FE0000000000000000000000000000000000000000000000000000000000000000000B1 -:204FE8000000000000000000000000000000000000000000000000000000000000000000A9 -:204FF0000000000000000000000000000000000000000000000000000000000000000000A1 -:204FF800000000000000000000000000000000000000000000000000000000000000000099 -:20500000000000000000000000000000000000000000000000000000000000000000000090 -:20500800000000000000000000000000000000000000000000000000000000000000000088 -:20501000000000000000000000000000000000000000000000000000000000000000000080 -:20501800000000000000000000000000000000000000000000000000000000000000000078 -:20502000000000000000000000000000000000000000000000000000000000000000000070 -:20502800000000000000000000000000000000000000000000000000000000000000000068 -:20503000000000000000000000000000000000000000000000000000000000000000000060 -:20503800000000000000000000000000000000000000000000000000000000000000000058 -:20504000000000000000000000000000000000000000000000000000000000000000000050 -:20504800000000000000000000000000000000000000000000000000000000000000000048 -:20505000000000000000000000000000000000000000000000000000000000000000000040 -:20505800000000000000000000000000000000000000000000000000000000000000000038 -:20506000000000000000000000000000000000000000000000000000000000000000000030 -:20506800000000000000000000000000000000000000000000000000000000000000000028 -:20507000000000000000000000000000000000000000000000000000000000000000000020 -:20507800000000000000000000000000000000000000000000000000000000000000000018 -:20508000000000000000000000000000000000000000000000000000000000000000000010 -:20508800000000000000000000000000000000000000000000000000000000000000000008 -:20509000000000000000000000000000000000000000000000000000000000000000000000 -:205098000000000000000000000000000000000000000000000000000000000000000000F8 -:2050A0000000000000000000000000000000000000000000000000000000000000000000F0 -:2050A8000000000000000000000000000000000000000000000000000000000000000000E8 -:2050B0000000000000000000000000000000000000000000000000000000000000000000E0 -:2050B8000000000000000000000000000000000000000000000000000000000000000000D8 -:2050C0000000000000000000000000000000000000000000000000000000000000000000D0 -:2050C8000000000000000000000000000000000000000000000000000000000000000000C8 -:2050D0000000000000000000000000000000000000000000000000000000000000000000C0 -:2050D8000000000000000000000000000000000000000000000000000000000000000000B8 -:2050E0000000000000000000000000000000000000000000000000000000000000000000B0 -:2050E8000000000000000000000000000000000000000000000000000000000000000000A8 -:2050F0000000000000000000000000000000000000000000000000000000000000000000A0 -:2050F800000000000000000000000000000000000000000000000000000000000000000098 -:2051000000000000000000000000000000000000000000000000000000000000000000008F -:20510800000000000000000000000000000000000000000000000000000000000000000087 -:2051100000000000000000000000000000000000000000000000000000000000000000007F -:20511800000000000000000000000000000000000000000000000000000000000000000077 -:2051200000000000000000000000000000000000000000000000000000000000000000006F -:20512800000000000000000000000000000000000000000000000000000000000000000067 -:2051300000000000000000000000000000000000000000000000000000000000000000005F -:20513800000000000000000000000000000000000000000000000000000000000000000057 -:2051400000000000000000000000000000000000000000000000000000000000000000004F -:20514800000000000000000000000000000000000000000000000000000000000000000047 -:2051500000000000000000000000000000000000000000000000000000000000000000003F -:20515800000000000000000000000000000000000000000000000000000000000000000037 -:2051600000000000000000000000000000000000000000000000000000000000000000002F -:20516800000000000000000000000000000000000000000000000000000000000000000027 -:2051700000000000000000000000000000000000000000000000000000000000000000001F -:20517800000000000000000000000000000000000000000000000000000000000000000017 -:2051800000000000000000000000000000000000000000000000000000000000000000000F -:20518800000000000000000000000000000000000000000000000000000000000000000007 -:205190000000000000000000000000000000000000000000000000000000000000000000FF -:205198000000000000000000000000000000000000000000000000000000000000000000F7 -:2051A0000000000000000000000000000000000000000000000000000000000000000000EF -:2051A8000000000000000000000000000000000000000000000000000000000000000000E7 -:2051B0000000000000000000000000000000000000000000000000000000000000000000DF -:2051B8000000000000000000000000000000000000000000000000000000000000000000D7 -:2051C0000000000000000000000000000000000000000000000000000000000000000000CF -:2051C8000000000000000000000000000000000000000000000000000000000000000000C7 -:2051D0000000000000000000000000000000000000000000000000000000000000000000BF -:2051D8000000000000000000000000000000000000000000000000000000000000000000B7 -:2051E0000000000000000000000000000000000000000000000000000000000000000000AF -:2051E8000000000000000000000000000000000000000000000000000000000000000000A7 -:2051F00000000000000000000000000000000000000000000000000000000000000000009F -:2051F800000000000000000000000000000000000000000000000000000000000000000097 -:2052000000000000000000000000000000000000000000000000000000000000000000008E -:20520800000000000000000000000000000000000000000000000000000000000000000086 -:2052100000000000000000000000000000000000000000000000000000000000000000007E -:20521800000000000000000000000000000000000000000000000000000000000000000076 -:2052200000000000000000000000000000000000000000000000000000000000000000006E -:20522800000000000000000000000000000000000000000000000000000000000000000066 -:2052300000000000000000000000000000000000000000000000000000000000000000005E -:20523800000000000000000000000000000000000000000000000000000000000000000056 -:2052400000000000000000000000000000000000000000000000000000000000000000004E -:20524800000000000000000000000000000000000000000000000000000000000000000046 -:2052500000000000000000000000000000000000000000000000000000000000000000003E -:20525800000000000000000000000000000000000000000000000000000000000000000036 -:2052600000000000000000000000000000000000000000000000000000000000000000002E -:20526800000000000000000000000000000000000000000000000000000000000000000026 -:2052700000000000000000000000000000000000000000000000000000000000000000001E -:20527800000000000000000000000000000000000000000000000000000000000000000016 -:2052800000000000000000000000000000000000000000000000000000000000000000000E -:20528800000000000000000000000000000000000000000000000000000000000000000006 -:205290000000000000000000000000000000000000000000000000000000000000000000FE -:205298000000000000000000000000000000000000000000000000000000000000000000F6 -:2052A0000000000000000000000000000000000000000000000000000000000000000000EE -:2052A8000000000000000000000000000000000000000000000000000000000000000000E6 -:2052B0000000000000000000000000000000000000000000000000000000000000000000DE -:2052B8000000000000000000000000000000000000000000000000000000000000000000D6 -:2052C0000000000000000000000000000000000000000000000000000000000000000000CE -:2052C8000000000000000000000000000000000000000000000000000000000000000000C6 -:2052D0000000000000000000000000000000000000000000000000000000000000000000BE -:2052D8000000000000000000000000000000000000000000000000000000000000000000B6 -:2052E0000000000000000000000000000000000000000000000000000000000000000000AE -:2052E8000000000000000000000000000000000000000000000000000000000000000000A6 -:2052F00000000000000000000000000000000000000000000000000000000000000000009E -:2052F800000000000000000000000000000000000000000000000000000000000000000096 -:2053000000000000000000000000000000000000000000000000000000000000000000008D -:20530800000000000000000000000000000000000000000000000000000000000000000085 -:2053100000000000000000000000000000000000000000000000000000000000000000007D -:20531800000000000000000000000000000000000000000000000000000000000000000075 -:2053200000000000000000000000000000000000000000000000000000000000000000006D -:20532800000000000000000000000000000000000000000000000000000000000000000065 -:2053300000000000000000000000000000000000000000000000000000000000000000005D -:20533800000000000000000000000000000000000000000000000000000000000000000055 -:2053400000000000000000000000000000000000000000000000000000000000000000004D -:20534800000000000000000000000000000000000000000000000000000000000000000045 -:2053500000000000000000000000000000000000000000000000000000000000000000003D -:20535800000000000000000000000000000000000000000000000000000000000000000035 -:2053600000000000000000000000000000000000000000000000000000000000000000002D -:20536800000000000000000000000000000000000000000000000000000000000000000025 -:2053700000000000000000000000000000000000000000000000000000000000000000001D -:20537800000000000000000000000000000000000000000000000000000000000000000015 -:2053800000000000000000000000000000000000000000000000000000000000000000000D -:20538800000000000000000000000000000000000000000000000000000000000000000005 -:205390000000000000000000000000000000000000000000000000000000000000000000FD -:205398000000000000000000000000000000000000000000000000000000000000000000F5 -:2053A0000000000000000000000000000000000000000000000000000000000000000000ED -:2053A8000000000000000000000000000000000000000000000000000000000000000000E5 -:2053B0000000000000000000000000000000000000000000000000000000000000000000DD -:2053B8000000000000000000000000000000000000000000000000000000000000000000D5 -:2053C0000000000000000000000000000000000000000000000000000000000000000000CD -:2053C8000000000000000000000000000000000000000000000000000000000000000000C5 -:2053D0000000000000000000000000000000000000000000000000000000000000000000BD -:2053D8000000000000000000000000000000000000000000000000000000000000000000B5 -:2053E0000000000000000000000000000000000000000000000000000000000000000000AD -:2053E8000000000000000000000000000000000000000000000000000000000000000000A5 -:2053F00000000000000000000000000000000000000000000000000000000000000000009D -:2053F800000000000000000000000000000000000000000000000000000000000000000095 -:2054000000000000000000000000000000000000000000000000000000000000000000008C -:20540800000000000000000000000000000000000000000000000000000000000000000084 -:2054100000000000000000000000000000000000000000000000000000000000000000007C -:20541800000000000000000000000000000000000000000000000000000000000000000074 -:2054200000000000000000000000000000000000000000000000000000000000000000006C -:20542800000000000000000000000000000000000000000000000000000000000000000064 -:2054300000000000000000000000000000000000000000000000000000000000000000005C -:20543800000000000000000000000000000000000000000000000000000000000000000054 -:2054400000000000000000000000000000000000000000000000000000000000000000004C -:20544800000000000000000000000000000000000000000000000000000000000000000044 -:2054500000000000000000000000000000000000000000000000000000000000000000003C -:20545800000000000000000000000000000000000000000000000000000000000000000034 -:2054600000000000000000000000000000000000000000000000000000000000000000002C -:20546800000000000000000000000000000000000000000000000000000000000000000024 -:2054700000000000000000000000000000000000000000000000000000000000000000001C -:20547800000000000000000000000000000000000000000000000000000000000000000014 -:2054800000000000000000000000000000000000000000000000000000000000000000000C -:20548800000000000000000000000000000000000000000000000000000000000000000004 -:205490000000000000000000000000000000000000000000000000000000000000000000FC -:205498000000000000000000000000000000000000000000000000000000000000000000F4 -:2054A0000000000000000000000000000000000000000000000000000000000000000000EC -:2054A8000000000000000000000000000000000000000000000000000000000000000000E4 -:2054B0000000000000000000000000000000000000000000000000000000000000000000DC -:2054B8000000000000000000000000000000000000000000000000000000000000000000D4 -:2054C0000000000000000000000000000000000000000000000000000000000000000000CC -:2054C8000000000000000000000000000000000000000000000000000000000000000000C4 -:2054D0000000000000000000000000000000000000000000000000000000000000000000BC -:2054D8000000000000000000000000000000000000000000000000000000000000000000B4 -:2054E0000000000000000000000000000000000000000000000000000000000000000000AC -:2054E8000000000000000000000000000000000000000000000000000000000000000000A4 -:2054F00000000000000000000000000000000000000000000000000000000000000000009C -:2054F800000000000000000000000000000000000000000000000000000000000000000094 -:2055000000000000000000000000000000000000000000000000000000000000000000008B -:20550800000000000000000000000000000000000000000000000000000000000000000083 -:2055100000000000000000000000000000000000000000000000000000000000000000007B -:20551800000000000000000000000000000000000000000000000000000000000000000073 -:2055200000000000000000000000000000000000000000000000000000000000000000006B -:20552800000000000000000000000000000000000000000000000000000000000000000063 -:2055300000000000000000000000000000000000000000000000000000000000000000005B -:20553800000000000000000000000000000000000000000000000000000000000000000053 -:2055400000000000000000000000000000000000000000000000000000000000000000004B -:20554800000000000000000000000000000000000000000000000000000000000000000043 -:2055500000000000000000000000000000000000000000000000000000000000000000003B -:20555800000000000000000000000000000000000000000000000000000000000000000033 -:2055600000000000000000000000000000000000000000000000000000000000000000002B -:20556800000000000000000000000000000000000000000000000000000000000000000023 -:2055700000000000000000000000000000000000000000000000000000000000000000001B -:20557800000000000000000000000000000000000000000000000000000000000000000013 -:2055800000000000000000000000000000000000000000000000000000000000000000000B -:20558800000000000000000000000000000000000000000000000000000000000000000003 -:205590000000000000000000000000000000000000000000000000000000000000000000FB -:205598000000000000000000000000000000000000000000000000000000000000000000F3 -:2055A0000000000000000000000000000000000000000000000000000000000000000000EB -:2055A8000000000000000000000000000000000000000000000000000000000000000000E3 -:2055B0000000000000000000000000000000000000000000000000000000000000000000DB -:2055B8000000000000000000000000000000000000000000000000000000000000000000D3 -:2055C0000000000000000000000000000000000000000000000000000000000000000000CB -:2055C8000000000000000000000000000000000000000000000000000000000000000000C3 -:2055D0000000000000000000000000000000000000000000000000000000000000000000BB -:2055D8000000000000000000000000000000000000000000000000000000000000000000B3 -:2055E0000000000000000000000000000000000000000000000000000000000000000000AB -:2055E8000000000000000000000000000000000000000000000000000000000000000000A3 -:2055F00000000000000000000000000000000000000000000000000000000000000000009B -:2055F800000000000000000000000000000000000000000000000000000000000000000093 -:2056000000000000000000000000000000000000000000000000000000000000000000008A -:20560800000000000000000000000000000000000000000000000000000000000000000082 -:2056100000000000000000000000000000000000000000000000000000000000000000007A -:20561800000000000000000000000000000000000000000000000000000000000000000072 -:2056200000000000000000000000000000000000000000000000000000000000000000006A -:20562800000000000000000000000000000000000000000000000000000000000000000062 -:2056300000000000000000000000000000000000000000000000000000000000000000005A -:20563800000000000000000000000000000000000000000000000000000000000000000052 -:2056400000000000000000000000000000000000000000000000000000000000000000004A -:20564800000000000000000000000000000000000000000000000000000000000000000042 -:2056500000000000000000000000000000000000000000000000000000000000000000003A -:20565800000000000000000000000000000000000000000000000000000000000000000032 -:2056600000000000000000000000000000000000000000000000000000000000000000002A -:20566800000000000000000000000000000000000000000000000000000000000000000022 -:2056700000000000000000000000000000000000000000000000000000000000000000001A -:20567800000000000000000000000000000000000000000000000000000000000000000012 -:2056800000000000000000000000000000000000000000000000000000000000000000000A -:20568800000000000000000000000000000000000000000000000000000000000000000002 -:205690000000000000000000000000000000000000000000000000000000000000000000FA -:205698000000000000000000000000000000000000000000000000000000000000000000F2 -:2056A0000000000000000000000000000000000000000000000000000000000000000000EA -:2056A8000000000000000000000000000000000000000000000000000000000000000000E2 -:2056B0000000000000000000000000000000000000000000000000000000000000000000DA -:2056B8000000000000000000000000000000000000000000000000000000000000000000D2 -:2056C0000000000000000000000000000000000000000000000000000000000000000000CA -:2056C8000000000000000000000000000000000000000000000000000000000000000000C2 -:2056D0000000000000000000000000000000000000000000000000000000000000000000BA -:2056D8000000000000000000000000000000000000000000000000000000000000000000B2 -:2056E0000000000000000000000000000000000000000000000000000000000000000000AA -:2056E8000000000000000000000000000000000000000000000000000000000000000000A2 -:2056F00000000000000000000000000000000000000000000000000000000000000000009A -:2056F800000000000000000000000000000000000000000000000000000000000000000092 -:20570000000000000000000000000000000000000000000000000000000000000000000089 -:20570800000000000000000000000000000000000000000000000000000000000000000081 -:20571000000000000000000000000000000000000000000000000000000000000000000079 -:20571800000000000000000000000000000000000000000000000000000000000000000071 -:20572000000000000000000000000000000000000000000000000000000000000000000069 -:20572800000000000000000000000000000000000000000000000000000000000000000061 -:20573000000000000000000000000000000000000000000000000000000000000000000059 -:20573800000000000000000000000000000000000000000000000000000000000000000051 -:20574000000000000000000000000000000000000000000000000000000000000000000049 -:20574800000000000000000000000000000000000000000000000000000000000000000041 -:20575000000000000000000000000000000000000000000000000000000000000000000039 -:20575800000000000000000000000000000000000000000000000000000000000000000031 -:20576000000000000000000000000000000000000000000000000000000000000000000029 -:20576800000000000000000000000000000000000000000000000000000000000000000021 -:20577000000000000000000000000000000000000000000000000000000000000000000019 -:20577800000000000000000000000000000000000000000000000000000000000000000011 -:20578000000000000000000000000000000000000000000000000000000000000000000009 -:20578800000000000000000000000000000000000000000000000000000000000000000001 -:205790000000000000000000000000000000000000000000000000000000000000000000F9 -:205798000000000000000000000000000000000000000000000000000000000000000000F1 -:2057A0000000000000000000000000000000000000000000000000000000000000000000E9 -:2057A8000000000000000000000000000000000000000000000000000000000000000000E1 -:2057B0000000000000000000000000000000000000000000000000000000000000000000D9 -:2057B8000000000000000000000000000000000000000000000000000000000000000000D1 -:2057C0000000000000000000000000000000000000000000000000000000000000000000C9 -:2057C8000000000000000000000000000000000000000000000000000000000000000000C1 -:2057D0000000000000000000000000000000000000000000000000000000000000000000B9 -:2057D8000000000000000000000000000000000000000000000000000000000000000000B1 -:2057E0000000000000000000000000000000000000000000000000000000000000000000A9 -:2057E8000000000000000000000000000000000000000000000000000000000000000000A1 -:2057F000000000000000000000000000000000000000000000000000000000000000000099 -:2057F800000000000000000000000000000000000000000000000000000000000000000091 -:20580000000000000000000000000000000000000000000000000000000000000000000088 -:20580800000000000000000000000000000000000000000000000000000000000000000080 -:20581000000000000000000000000000000000000000000000000000000000000000000078 -:20581800000000000000000000000000000000000000000000000000000000000000000070 -:20582000000000000000000000000000000000000000000000000000000000000000000068 -:20582800000000000000000000000000000000000000000000000000000000000000000060 -:20583000000000000000000000000000000000000000000000000000000000000000000058 -:20583800000000000000000000000000000000000000000000000000000000000000000050 -:20584000000000000000000000000000000000000000000000000000000000000000000048 -:20584800000000000000000000000000000000000000000000000000000000000000000040 -:20585000000000000000000000000000000000000000000000000000000000000000000038 -:20585800000000000000000000000000000000000000000000000000000000000000000030 -:20586000000000000000000000000000000000000000000000000000000000000000000028 -:20586800000000000000000000000000000000000000000000000000000000000000000020 -:20587000000000000000000000000000000000000000000000000000000000000000000018 -:20587800000000000000000000000000000000000000000000000000000000000000000010 -:20588000000000000000000000000000000000000000000000000000000000000000000008 -:20588800000000000000000000000000000000000000000000000000000000000000000000 -:205890000000000000000000000000000000000000000000000000000000000000000000F8 -:205898000000000000000000000000000000000000000000000000000000000000000000F0 -:2058A0000000000000000000000000000000000000000000000000000000000000000000E8 -:2058A8000000000000000000000000000000000000000000000000000000000000000000E0 -:2058B0000000000000000000000000000000000000000000000000000000000000000000D8 -:2058B8000000000000000000000000000000000000000000000000000000000000000000D0 -:2058C0000000000000000000000000000000000000000000000000000000000000000000C8 -:2058C8000000000000000000000000000000000000000000000000000000000000000000C0 -:2058D0000000000000000000000000000000000000000000000000000000000000000000B8 -:2058D8000000000000000000000000000000000000000000000000000000000000000000B0 -:2058E0000000000000000000000000000000000000000000000000000000000000000000A8 -:2058E8000000000000000000000000000000000000000000000000000000000000000000A0 -:2058F000000000000000000000000000000000000000000000000000000000000000000098 -:2058F800000000000000000000000000000000000000000000000000000000000000000090 -:20590000000000000000000000000000000000000000000000000000000000000000000087 -:2059080000000000000000000000000000000000000000000000000000000000000000007F -:20591000000000000000000000000000000000000000000000000000000000000000000077 -:2059180000000000000000000000000000000000000000000000000000000000000000006F -:20592000000000000000000000000000000000000000000000000000000000000000000067 -:2059280000000000000000000000000000000000000000000000000000000000000000005F -:20593000000000000000000000000000000000000000000000000000000000000000000057 -:2059380000000000000000000000000000000000000000000000000000000000000000004F -:20594000000000000000000000000000000000000000000000000000000000000000000047 -:2059480000000000000000000000000000000000000000000000000000000000000000003F -:20595000000000000000000000000000000000000000000000000000000000000000000037 -:2059580000000000000000000000000000000000000000000000000000000000000000002F -:20596000000000000000000000000000000000000000000000000000000000000000000027 -:2059680000000000000000000000000000000000000000000000000000000000000000001F -:20597000000000000000000000000000000000000000000000000000000000000000000017 -:2059780000000000000000000000000000000000000000000000000000000000000000000F -:20598000000000000000000000000000000000000000000000000000000000000000000007 -:205988000000000000000000000000000000000000000000000000000000000000000000FF -:205990000000000000000000000000000000000000000000000000000000000000000000F7 -:205998000000000000000000000000000000000000000000000000000000000000000000EF -:2059A0000000000000000000000000000000000000000000000000000000000000000000E7 -:2059A8000000000000000000000000000000000000000000000000000000000000000000DF -:2059B0000000000000000000000000000000000000000000000000000000000000000000D7 -:2059B8000000000000000000000000000000000000000000000000000000000000000000CF -:2059C0000000000000000000000000000000000000000000000000000000000000000000C7 -:2059C8000000000000000000000000000000000000000000000000000000000000000000BF -:2059D0000000000000000000000000000000000000000000000000000000000000000000B7 -:2059D8000000000000000000000000000000000000000000000000000000000000000000AF -:2059E0000000000000000000000000000000000000000000000000000000000000000000A7 -:2059E80000000000000000000000000000000000000000000000000000000000000000009F -:2059F000000000000000000000000000000000000000000000000000000000000000000097 -:2059F80000000000000000000000000000000000000000000000000000000000000000008F -:205A0000000000000000000000000000000000000000000000000000000000000000000086 -:205A080000000000000000000000000000000000000000000000000000000000000000007E -:205A1000000000000000000000000000000000000000000000000000000000000000000076 -:205A180000000000000000000000000000000000000000000000000000000000000000006E -:205A2000000000000000000000000000000000000000000000000000000000000000000066 -:205A280000000000000000000000000000000000000000000000000000000000000000005E -:205A3000000000000000000000000000000000000000000000000000000000000000000056 -:205A380000000000000000000000000000000000000000000000000000000000000000004E -:205A4000000000000000000000000000000000000000000000000000000000000000000046 -:205A480000000000000000000000000000000000000000000000000000000000000000003E -:205A5000000000000000000000000000000000000000000000000000000000000000000036 -:205A580000000000000000000000000000000000000000000000000000000000000000002E -:205A6000000000000000000000000000000000000000000000000000000000000000000026 -:205A680000000000000000000000000000000000000000000000000000000000000000001E -:205A7000000000000000000000000000000000000000000000000000000000000000000016 -:205A780000000000000000000000000000000000000000000000000000000000000000000E -:205A8000000000000000000000000000000000000000000000000000000000000000000006 -:205A88000000000000000000000000000000000000000000000000000000000000000000FE -:205A90000000000000000000000000000000000000000000000000000000000000000000F6 -:205A98000000000000000000000000000000000000000000000000000000000000000000EE -:205AA0000000000000000000000000000000000000000000000000000000000000000000E6 -:205AA8000000000000000000000000000000000000000000000000000000000000000000DE -:205AB0000000000000000000000000000000000000000000000000000000000000000000D6 -:205AB8000000000000000000000000000000000000000000000000000000000000000000CE -:205AC0000000000000000000000000000000000000000000000000000000000000000000C6 -:205AC8000000000000000000000000000000000000000000000000000000000000000000BE -:205AD0000000000000000000000000000000000000000000000000000000000000000000B6 -:205AD8000000000000000000000000000000000000000000000000000000000000000000AE -:205AE0000000000000000000000000000000000000000000000000000000000000000000A6 -:205AE80000000000000000000000000000000000000000000000000000000000000000009E -:205AF000000000000000000000000000000000000000000000000000000000000000000096 -:205AF80000000000000000000000000000000000000000000000000000000000000000008E -:205B0000000000000000000000000000000000000000000000000000000000000000000085 -:205B080000000000000000000000000000000000000000000000000000000000000000007D -:205B1000000000000000000000000000000000000000000000000000000000000000000075 -:205B180000000000000000000000000000000000000000000000000000000000000000006D -:205B2000000000000000000000000000000000000000000000000000000000000000000065 -:205B280000000000000000000000000000000000000000000000000000000000000000005D -:205B3000000000000000000000000000000000000000000000000000000000000000000055 -:205B380000000000000000000000000000000000000000000000000000000000000000004D -:205B4000000000000000000000000000000000000000000000000000000000000000000045 -:205B480000000000000000000000000000000000000000000000000000000000000000003D -:205B5000000000000000000000000000000000000000000000000000000000000000000035 -:205B580000000000000000000000000000000000000000000000000000000000000000002D -:205B6000000000000000000000000000000000000000000000000000000000000000000025 -:205B680000000000000000000000000000000000000000000000000000000000000000001D -:205B7000000000000000000000000000000000000000000000000000000000000000000015 -:205B780000000000000000000000000000000000000000000000000000000000000000000D -:205B8000000000000000000000000000000000000000000000000000000000000000000005 -:205B88000000000000000000000000000000000000000000000000000000000000000000FD -:205B90000000000000000000000000000000000000000000000000000000000000000000F5 -:205B98000000000000000000000000000000000000000000000000000000000000000000ED -:205BA0000000000000000000000000000000000000000000000000000000000000000000E5 -:205BA8000000000000000000000000000000000000000000000000000000000000000000DD -:205BB0000000000000000000000000000000000000000000000000000000000000000000D5 -:205BB8000000000000000000000000000000000000000000000000000000000000000000CD -:205BC0000000000000000000000000000000000000000000000000000000000000000000C5 -:205BC8000000000000000000000000000000000000000000000000000000000000000000BD -:205BD0000000000000000000000000000000000000000000000000000000000000000000B5 -:205BD8000000000000000000000000000000000000000000000000000000000000000000AD -:205BE0000000000000000000000000000000000000000000000000000000000000000000A5 -:205BE80000000000000000000000000000000000000000000000000000000000000000009D -:205BF000000000000000000000000000000000000000000000000000000000000000000095 -:205BF80000000000000000000000000000000000000000000000000000000000000000008D -:205C0000000000000000000000000000000000000000000000000000000000000000000084 -:205C080000000000000000000000000000000000000000000000000000000000000000007C -:205C1000000000000000000000000000000000000000000000000000000000000000000074 -:205C180000000000000000000000000000000000000000000000000000000000000000006C -:205C2000000000000000000000000000000000000000000000000000000000000000000064 -:205C280000000000000000000000000000000000000000000000000000000000000000005C -:205C3000000000000000000000000000000000000000000000000000000000000000000054 -:205C380000000000000000000000000000000000000000000000000000000000000000004C -:205C4000000000000000000000000000000000000000000000000000000000000000000044 -:205C480000000000000000000000000000000000000000000000000000000000000000003C -:205C5000000000000000000000000000000000000000000000000000000000000000000034 -:205C580000000000000000000000000000000000000000000000000000000000000000002C -:205C6000000000000000000000000000000000000000000000000000000000000000000024 -:205C680000000000000000000000000000000000000000000000000000000000000000001C -:205C7000000000000000000000000000000000000000000000000000000000000000000014 -:205C780000000000000000000000000000000000000000000000000000000000000000000C -:205C8000000000000000000000000000000000000000000000000000000000000000000004 -:205C88000000000000000000000000000000000000000000000000000000000000000000FC -:205C90000000000000000000000000000000000000000000000000000000000000000000F4 -:205C98000000000000000000000000000000000000000000000000000000000000000000EC -:205CA0000000000000000000000000000000000000000000000000000000000000000000E4 -:205CA8000000000000000000000000000000000000000000000000000000000000000000DC -:205CB0000000000000000000000000000000000000000000000000000000000000000000D4 -:205CB8000000000000000000000000000000000000000000000000000000000000000000CC -:205CC0000000000000000000000000000000000000000000000000000000000000000000C4 -:205CC8000000000000000000000000000000000000000000000000000000000000000000BC -:205CD0000000000000000000000000000000000000000000000000000000000000000000B4 -:205CD8000000000000000000000000000000000000000000000000000000000000000000AC -:205CE0000000000000000000000000000000000000000000000000000000000000000000A4 -:205CE80000000000000000000000000000000000000000000000000000000000000000009C -:205CF000000000000000000000000000000000000000000000000000000000000000000094 -:205CF80000000000000000000000000000000000000000000000000000000000000000008C -:205D0000000000000000000000000000000000000000000000000000000000000000000083 -:205D080000000000000000000000000000000000000000000000000000000000000000007B -:205D1000000000000000000000000000000000000000000000000000000000000000000073 -:205D180000000000000000000000000000000000000000000000000000000000000000006B -:205D2000000000000000000000000000000000000000000000000000000000000000000063 -:205D280000000000000000000000000000000000000000000000000000000000000000005B -:205D3000000000000000000000000000000000000000000000000000000000000000000053 -:205D380000000000000000000000000000000000000000000000000000000000000000004B -:205D4000000000000000000000000000000000000000000000000000000000000000000043 -:205D480000000000000000000000000000000000000000000000000000000000000000003B -:205D5000000000000000000000000000000000000000000000000000000000000000000033 -:205D580000000000000000000000000000000000000000000000000000000000000000002B -:205D6000000000000000000000000000000000000000000000000000000000000000000023 -:205D680000000000000000000000000000000000000000000000000000000000000000001B -:205D7000000000000000000000000000000000000000000000000000000000000000000013 -:205D780000000000000000000000000000000000000000000000000000000000000000000B -:205D8000000000000000000000000000000000000000000000000000000000000000000003 -:205D88000000000000000000000000000000000000000000000000000000000000000000FB -:205D90000000000000000000000000000000000000000000000000000000000000000000F3 -:205D98000000000000000000000000000000000000000000000000000000000000000000EB -:205DA0000000000000000000000000000000000000000000000000000000000000000000E3 -:205DA8000000000000000000000000000000000000000000000000000000000000000000DB -:205DB0000000000000000000000000000000000000000000000000000000000000000000D3 -:205DB8000000000000000000000000000000000000000000000000000000000000000000CB -:205DC0000000000000000000000000000000000000000000000000000000000000000000C3 -:205DC8000000000000000000000000000000000000000000000000000000000000000000BB -:205DD0000000000000000000000000000000000000000000000000000000000000000000B3 -:205DD8000000000000000000000000000000000000000000000000000000000000000000AB -:205DE0000000000000000000000000000000000000000000000000000000000000000000A3 -:205DE80000000000000000000000000000000000000000000000000000000000000000009B -:205DF000000000000000000000000000000000000000000000000000000000000000000093 -:205DF80000000000000000000000000000000000000000000000000000000000000000008B -:205E0000000000000000000000000000000000000000000000000000000000000000000082 -:205E080000000000000000000000000000000000000000000000000000000000000000007A -:205E1000000000000000000000000000000000000000000000000000000000000000000072 -:205E180000000000000000000000000000000000000000000000000000000000000000006A -:205E2000000000000000000000000000000000000000000000000000000000000000000062 -:205E280000000000000000000000000000000000000000000000000000000000000000005A -:205E3000000000000000000000000000000000000000000000000000000000000000000052 -:205E380000000000000000000000000000000000000000000000000000000000000000004A -:205E4000000000000000000000000000000000000000000000000000000000000000000042 -:205E480000000000000000000000000000000000000000000000000000000000000000003A -:205E5000000000000000000000000000000000000000000000000000000000000000000032 -:205E580000000000000000000000000000000000000000000000000000000000000000002A -:205E6000000000000000000000000000000000000000000000000000000000000000000022 -:205E680000000000000000000000000000000000000000000000000000000000000000001A -:205E7000000000000000000000000000000000000000000000000000000000000000000012 -:205E780000000000000000000000000000000000000000000000000000000000000000000A -:205E8000000000000000000000000000000000000000000000000000000000000000000002 -:205E88000000000000000000000000000000000000000000000000000000000000000000FA -:205E90000000000000000000000000000000000000000000000000000000000000000000F2 -:205E98000000000000000000000000000000000000000000000000000000000000000000EA -:205EA0000000000000000000000000000000000000000000000000000000000000000000E2 -:205EA8000000000000000000000000000000000000000000000000000000000000000000DA -:205EB0000000000000000000000000000000000000000000000000000000000000000000D2 -:205EB8000000000000000000000000000000000000000000000000000000000000000000CA -:205EC0000000000000000000000000000000000000000000000000000000000000000000C2 -:205EC8000000000000000000000000000000000000000000000000000000000000000000BA -:205ED0000000000000000000000000000000000000000000000000000000000000000000B2 -:205ED8000000000000000000000000000000000000000000000000000000000000000000AA -:205EE0000000000000000000000000000000000000000000000000000000000000000000A2 -:205EE80000000000000000000000000000000000000000000000000000000000000000009A -:205EF000000000000000000000000000000000000000000000000000000000000000000092 -:205EF80000000000000000000000000000000000000000000000000000000000000000008A -:205F0000000000000000000000000000000000000000000000000000000000000000000081 -:205F0800000000000000000000000000000000000000000000000000000000000000000079 -:205F1000000000000000000000000000000000000000000000000000000000000000000071 -:205F1800000000000000000000000000000000000000000000000000000000000000000069 -:205F2000000000000000000000000000000000000000000000000000000000000000000061 -:205F2800000000000000000000000000000000000000000000000000000000000000000059 -:205F3000000000000000000000000000000000000000000000000000000000000000000051 -:205F3800000000000000000000000000000000000000000000000000000000000000000049 -:205F4000000000000000000000000000000000000000000000000000000000000000000041 -:205F4800000000000000000000000000000000000000000000000000000000000000000039 -:205F5000000000000000000000000000000000000000000000000000000000000000000031 -:205F5800000000000000000000000000000000000000000000000000000000000000000029 -:205F6000000000000000000000000000000000000000000000000000000000000000000021 -:205F6800000000000000000000000000000000000000000000000000000000000000000019 -:205F7000000000000000000000000000000000000000000000000000000000000000000011 -:205F7800000000000000000000000000000000000000000000000000000000000000000009 -:205F8000000000000000000000000000000000000000000000000000000000000000000001 -:205F88000000000000000000000000000000000000000000000000000000000000000000F9 -:205F90000000000000000000000000000000000000000000000000000000000000000000F1 -:205F98000000000000000000000000000000000000000000000000000000000000000000E9 -:205FA0000000000000000000000000000000000000000000000000000000000000000000E1 -:205FA8000000000000000000000000000000000000000000000000000000000000000000D9 -:205FB0000000000000000000000000000000000000000000000000000000000000000000D1 -:205FB8000000000000000000000000000000000000000000000000000000000000000000C9 -:205FC0000000000000000000000000000000000000000000000000000000000000000000C1 -:205FC8000000000000000000000000000000000000000000000000000000000000000000B9 -:205FD0000000000000000000000000000000000000000000000000000000000000000000B1 -:205FD8000000000000000000000000000000000000000000000000000000000000000000A9 -:205FE0000000000000000000000000000000000000000000000000000000000000000000A1 -:205FE800000000000000000000000000000000000000000000000000000000000000000099 -:205FF000000000000000000000000000000000000000000000000000000000000000000091 -:205FF800000000000000000000000000000000000000000000000000000000000000000089 -:20600000000000000000000000000000000000000000000000000000000000000000000080 -:20600800000000000000000000000000000000000000000000000000000000000000000078 -:20601000000000000000000000000000000000000000000000000000000000000000000070 -:20601800000000000000000000000000000000000000000000000000000000000000000068 -:20602000000000000000000000000000000000000000000000000000000000000000000060 -:20602800000000000000000000000000000000000000000000000000000000000000000058 -:20603000000000000000000000000000000000000000000000000000000000000000000050 -:20603800000000000000000000000000000000000000000000000000000000000000000048 -:20604000000000000000000000000000000000000000000000000000000000000000000040 -:20604800000000000000000000000000000000000000000000000000000000000000000038 -:20605000000000000000000000000000000000000000000000000000000000000000000030 -:20605800000000000000000000000000000000000000000000000000000000000000000028 -:20606000000000000000000000000000000000000000000000000000000000000000000020 -:20606800000000000000000000000000000000000000000000000000000000000000000018 -:20607000000000000000000000000000000000000000000000000000000000000000000010 -:20607800000000000000000000000000000000000000000000000000000000000000000008 -:20608000000000000000000000000000000000000000000000000000000000000000000000 -:206088000000000000000000000000000000000000000000000000000000000000000000F8 -:206090000000000000000000000000000000000000000000000000000000000000000000F0 -:206098000000000000000000000000000000000000000000000000000000000000000000E8 -:2060A0000000000000000000000000000000000000000000000000000000000000000000E0 -:2060A8000000000000000000000000000000000000000000000000000000000000000000D8 -:2060B0000000000000000000000000000000000000000000000000000000000000000000D0 -:2060B8000000000000000000000000000000000000000000000000000000000000000000C8 -:2060C0000000000000000000000000000000000000000000000000000000000000000000C0 -:2060C8000000000000000000000000000000000000000000000000000000000000000000B8 -:2060D0000000000000000000000000000000000000000000000000000000000000000000B0 -:2060D8000000000000000000000000000000000000000000000000000000000000000000A8 -:2060E0000000000000000000000000000000000000000000000000000000000000000000A0 -:2060E800000000000000000000000000000000000000000000000000000000000000000098 -:2060F000000000000000000000000000000000000000000000000000000000000000000090 -:2060F800000000000000000000000000000000000000000000000000000000000000000088 -:2061000000000000000000000000000000000000000000000000000000000000000000007F -:20610800000000000000000000000000000000000000000000000000000000000000000077 -:2061100000000000000000000000000000000000000000000000000000000000000000006F -:20611800000000000000000000000000000000000000000000000000000000000000000067 -:2061200000000000000000000000000000000000000000000000000000000000000000005F -:20612800000000000000000000000000000000000000000000000000000000000000000057 -:2061300000000000000000000000000000000000000000000000000000000000000000004F -:20613800000000000000000000000000000000000000000000000000000000000000000047 -:2061400000000000000000000000000000000000000000000000000000000000000000003F -:20614800000000000000000000000000000000000000000000000000000000000000000037 -:2061500000000000000000000000000000000000000000000000000000000000000000002F -:20615800000000000000000000000000000000000000000000000000000000000000000027 -:2061600000000000000000000000000000000000000000000000000000000000000000001F -:20616800000000000000000000000000000000000000000000000000000000000000000017 -:2061700000000000000000000000000000000000000000000000000000000000000000000F -:20617800000000000000000000000000000000000000000000000000000000000000000007 -:206180000000000000000000000000000000000000000000000000000000000000000000FF -:206188000000000000000000000000000000000000000000000000000000000000000000F7 -:206190000000000000000000000000000000000000000000000000000000000000000000EF -:206198000000000000000000000000000000000000000000000000000000000000000000E7 -:2061A0000000000000000000000000000000000000000000000000000000000000000000DF -:2061A8000000000000000000000000000000000000000000000000000000000000000000D7 -:2061B0000000000000000000000000000000000000000000000000000000000000000000CF -:2061B8000000000000000000000000000000000000000000000000000000000000000000C7 -:2061C0000000000000000000000000000000000000000000000000000000000000000000BF -:2061C8000000000000000000000000000000000000000000000000000000000000000000B7 -:2061D0000000000000000000000000000000000000000000000000000000000000000000AF -:2061D8000000000000000000000000000000000000000000000000000000000000000000A7 -:2061E00000000000000000000000000000000000000000000000000000000000000000009F -:2061E800000000000000000000000000000000000000000000000000000000000000000097 -:2061F00000000000000000000000000000000000000000000000000000000000000000008F -:2061F800000000000000000000000000000000000000000000000000000000000000000087 -:2062000000000000000000000000000000000000000000000000000000000000000000007E -:20620800000000000000000000000000000000000000000000000000000000000000000076 -:2062100000000000000000000000000000000000000000000000000000000000000000006E -:20621800000000000000000000000000000000000000000000000000000000000000000066 -:2062200000000000000000000000000000000000000000000000000000000000000000005E -:20622800000000000000000000000000000000000000000000000000000000000000000056 -:2062300000000000000000000000000000000000000000000000000000000000000000004E -:20623800000000000000000000000000000000000000000000000000000000000000000046 -:2062400000000000000000000000000000000000000000000000000000000000000000003E -:20624800000000000000000000000000000000000000000000000000000000000000000036 -:2062500000000000000000000000000000000000000000000000000000000000000000002E -:20625800000000000000000000000000000000000000000000000000000000000000000026 -:2062600000000000000000000000000000000000000000000000000000000000000000001E -:20626800000000000000000000000000000000000000000000000000000000000000000016 -:2062700000000000000000000000000000000000000000000000000000000000000000000E -:20627800000000000000000000000000000000000000000000000000000000000000000006 -:206280000000000000000000000000000000000000000000000000000000000000000000FE -:206288000000000000000000000000000000000000000000000000000000000000000000F6 -:206290000000000000000000000000000000000000000000000000000000000000000000EE -:206298000000000000000000000000000000000000000000000000000000000000000000E6 -:2062A0000000000000000000000000000000000000000000000000000000000000000000DE -:2062A8000000000000000000000000000000000000000000000000000000000000000000D6 -:2062B0000000000000000000000000000000000000000000000000000000000000000000CE -:2062B8000000000000000000000000000000000000000000000000000000000000000000C6 -:2062C0000000000000000000000000000000000000000000000000000000000000000000BE -:2062C8000000000000000000000000000000000000000000000000000000000000000000B6 -:2062D0000000000000000000000000000000000000000000000000000000000000000000AE -:2062D8000000000000000000000000000000000000000000000000000000000000000000A6 -:2062E00000000000000000000000000000000000000000000000000000000000000000009E -:2062E800000000000000000000000000000000000000000000000000000000000000000096 -:2062F00000000000000000000000000000000000000000000000000000000000000000008E -:2062F800000000000000000000000000000000000000000000000000000000000000000086 -:2063000000000000000000000000000000000000000000000000000000000000000000007D -:20630800000000000000000000000000000000000000000000000000000000000000000075 -:2063100000000000000000000000000000000000000000000000000000000000000000006D -:20631800000000000000000000000000000000000000000000000000000000000000000065 -:2063200000000000000000000000000000000000000000000000000000000000000000005D -:20632800000000000000000000000000000000000000000000000000000000000000000055 -:2063300000000000000000000000000000000000000000000000000000000000000000004D -:20633800000000000000000000000000000000000000000000000000000000000000000045 -:2063400000000000000000000000000000000000000000000000000000000000000000003D -:20634800000000000000000000000000000000000000000000000000000000000000000035 -:2063500000000000000000000000000000000000000000000000000000000000000000002D -:20635800000000000000000000000000000000000000000000000000000000000000000025 -:2063600000000000000000000000000000000000000000000000000000000000000000001D -:20636800000000000000000000000000000000000000000000000000000000000000000015 -:2063700000000000000000000000000000000000000000000000000000000000000000000D -:20637800000000000000000000000000000000000000000000000000000000000000000005 -:206380000000000000000000000000000000000000000000000000000000000000000000FD -:206388000000000000000000000000000000000000000000000000000000000000000000F5 -:206390000000000000000000000000000000000000000000000000000000000000000000ED -:206398000000000000000000000000000000000000000000000000000000000000000000E5 -:2063A0000000000000000000000000000000000000000000000000000000000000000000DD -:2063A8000000000000000000000000000000000000000000000000000000000000000000D5 -:2063B0000000000000000000000000000000000000000000000000000000000000000000CD -:2063B8000000000000000000000000000000000000000000000000000000000000000000C5 -:2063C0000000000000000000000000000000000000000000000000000000000000000000BD -:2063C8000000000000000000000000000000000000000000000000000000000000000000B5 -:2063D0000000000000000000000000000000000000000000000000000000000000000000AD -:2063D8000000000000000000000000000000000000000000000000000000000000000000A5 -:2063E00000000000000000000000000000000000000000000000000000000000000000009D -:2063E800000000000000000000000000000000000000000000000000000000000000000095 -:2063F00000000000000000000000000000000000000000000000000000000000000000008D -:2063F800000000000000000000000000000000000000000000000000000000000000000085 -:2064000000000000000000000000000000000000000000000000000000000000000000007C -:20640800000000000000000000000000000000000000000000000000000000000000000074 -:2064100000000000000000000000000000000000000000000000000000000000000000006C -:20641800000000000000000000000000000000000000000000000000000000000000000064 -:2064200000000000000000000000000000000000000000000000000000000000000000005C -:20642800000000000000000000000000000000000000000000000000000000000000000054 -:2064300000000000000000000000000000000000000000000000000000000000000000004C -:20643800000000000000000000000000000000000000000000000000000000000000000044 -:2064400000000000000000000000000000000000000000000000000000000000000000003C -:20644800000000000000000000000000000000000000000000000000000000000000000034 -:2064500000000000000000000000000000000000000000000000000000000000000000002C -:20645800000000000000000000000000000000000000000000000000000000000000000024 -:2064600000000000000000000000000000000000000000000000000000000000000000001C -:20646800000000000000000000000000000000000000000000000000000000000000000014 -:2064700000000000000000000000000000000000000000000000000000000000000000000C -:20647800000000000000000000000000000000000000000000000000000000000000000004 -:206480000000000000000000000000000000000000000000000000000000000000000000FC -:206488000000000000000000000000000000000000000000000000000000000000000000F4 -:206490000000000000000000000000000000000000000000000000000000000000000000EC -:206498000000000000000000000000000000000000000000000000000000000000000000E4 -:2064A0000000000000000000000000000000000000000000000000000000000000000000DC -:2064A8000000000000000000000000000000000000000000000000000000000000000000D4 -:2064B0000000000000000000000000000000000000000000000000000000000000000000CC -:2064B8000000000000000000000000000000000000000000000000000000000000000000C4 -:2064C0000000000000000000000000000000000000000000000000000000000000000000BC -:2064C8000000000000000000000000000000000000000000000000000000000000000000B4 -:2064D0000000000000000000000000000000000000000000000000000000000000000000AC -:2064D8000000000000000000000000000000000000000000000000000000000000000000A4 -:2064E00000000000000000000000000000000000000000000000000000000000000000009C -:2064E800000000000000000000000000000000000000000000000000000000000000000094 -:2064F00000000000000000000000000000000000000000000000000000000000000000008C -:2064F800000000000000000000000000000000000000000000000000000000000000000084 -:2065000000000000000000000000000000000000000000000000000000000000000000007B -:20650800000000000000000000000000000000000000000000000000000000000000000073 -:2065100000000000000000000000000000000000000000000000000000000000000000006B -:20651800000000000000000000000000000000000000000000000000000000000000000063 -:2065200000000000000000000000000000000000000000000000000000000000000000005B -:20652800000000000000000000000000000000000000000000000000000000000000000053 -:2065300000000000000000000000000000000000000000000000000000000000000000004B -:20653800000000000000000000000000000000000000000000000000000000000000000043 -:2065400000000000000000000000000000000000000000000000000000000000000000003B -:20654800000000000000000000000000000000000000000000000000000000000000000033 -:2065500000000000000000000000000000000000000000000000000000000000000000002B -:20655800000000000000000000000000000000000000000000000000000000000000000023 -:2065600000000000000000000000000000000000000000000000000000000000000000001B -:20656800000000000000000000000000000000000000000000000000000000000000000013 -:2065700000000000000000000000000000000000000000000000000000000000000000000B -:20657800000000000000000000000000000000000000000000000000000000000000000003 -:206580000000000000000000000000000000000000000000000000000000000000000000FB -:206588000000000000000000000000000000000000000000000000000000000000000000F3 -:206590000000000000000000000000000000000000000000000000000000000000000000EB -:206598000000000000000000000000000000000000000000000000000000000000000000E3 -:2065A0000000000000000000000000000000000000000000000000000000000000000000DB -:2065A8000000000000000000000000000000000000000000000000000000000000000000D3 -:2065B0000000000000000000000000000000000000000000000000000000000000000000CB -:2065B8000000000000000000000000000000000000000000000000000000000000000000C3 -:2065C0000000000000000000000000000000000000000000000000000000000000000000BB -:2065C8000000000000000000000000000000000000000000000000000000000000000000B3 -:2065D0000000000000000000000000000000000000000000000000000000000000000000AB -:2065D8000000000000000000000000000000000000000000000000000000000000000000A3 -:2065E00000000000000000000000000000000000000000000000000000000000000000009B -:2065E800000000000000000000000000000000000000000000000000000000000000000093 -:2065F00000000000000000000000000000000000000000000000000000000000000000008B -:2065F800000000000000000000000000000000000000000000000000000000000000000083 -:2066000000000000000000000000000000000000000000000000000000000000000000007A -:20660800000000000000000000000000000000000000000000000000000000000000000072 -:2066100000000000000000000000000000000000000000000000000000000000000000006A -:20661800000000000000000000000000000000000000000000000000000000000000000062 -:2066200000000000000000000000000000000000000000000000000000000000000000005A -:20662800000000000000000000000000000000000000000000000000000000000000000052 -:2066300000000000000000000000000000000000000000000000000000000000000000004A -:20663800000000000000000000000000000000000000000000000000000000000000000042 -:2066400000000000000000000000000000000000000000000000000000000000000000003A -:20664800000000000000000000000000000000000000000000000000000000000000000032 -:2066500000000000000000000000000000000000000000000000000000000000000000002A -:20665800000000000000000000000000000000000000000000000000000000000000000022 -:2066600000000000000000000000000000000000000000000000000000000000000000001A -:20666800000000000000000000000000000000000000000000000000000000000000000012 -:2066700000000000000000000000000000000000000000000000000000000000000000000A -:20667800000000000000000000000000000000000000000000000000000000000000000002 -:206680000000000000000000000000000000000000000000000000000000000000000000FA -:206688000000000000000000000000000000000000000000000000000000000000000000F2 -:206690000000000000000000000000000000000000000000000000000000000000000000EA -:206698000000000000000000000000000000000000000000000000000000000000000000E2 -:2066A0000000000000000000000000000000000000000000000000000000000000000000DA -:2066A8000000000000000000000000000000000000000000000000000000000000000000D2 -:2066B0000000000000000000000000000000000000000000000000000000000000000000CA -:2066B8000000000000000000000000000000000000000000000000000000000000000000C2 -:2066C0000000000000000000000000000000000000000000000000000000000000000000BA -:2066C8000000000000000000000000000000000000000000000000000000000000000000B2 -:2066D0000000000000000000000000000000000000000000000000000000000000000000AA -:2066D8000000000000000000000000000000000000000000000000000000000000000000A2 -:2066E00000000000000000000000000000000000000000000000000000000000000000009A -:2066E800000000000000000000000000000000000000000000000000000000000000000092 -:2066F00000000000000000000000000000000000000000000000000000000000000000008A -:2066F800000000000000000000000000000000000000000000000000000000000000000082 -:20670000000000000000000000000000000000000000000000000000000000000000000079 -:20670800000000000000000000000000000000000000000000000000000000000000000071 -:20671000000000000000000000000000000000000000000000000000000000000000000069 -:20671800000000000000000000000000000000000000000000000000000000000000000061 -:20672000000000000000000000000000000000000000000000000000000000000000000059 -:20672800000000000000000000000000000000000000000000000000000000000000000051 -:20673000000000000000000000000000000000000000000000000000000000000000000049 -:20673800000000000000000000000000000000000000000000000000000000000000000041 -:20674000000000000000000000000000000000000000000000000000000000000000000039 -:20674800000000000000000000000000000000000000000000000000000000000000000031 -:20675000000000000000000000000000000000000000000000000000000000000000000029 -:20675800000000000000000000000000000000000000000000000000000000000000000021 -:20676000000000000000000000000000000000000000000000000000000000000000000019 -:20676800000000000000000000000000000000000000000000000000000000000000000011 -:20677000000000000000000000000000000000000000000000000000000000000000000009 -:20677800000000000000000000000000000000000000000000000000000000000000000001 -:206780000000000000000000000000000000000000000000000000000000000000000000F9 -:206788000000000000000000000000000000000000000000000000000000000000000000F1 -:206790000000000000000000000000000000000000000000000000000000000000000000E9 -:206798000000000000000000000000000000000000000000000000000000000000000000E1 -:2067A0000000000000000000000000000000000000000000000000000000000000000000D9 -:2067A8000000000000000000000000000000000000000000000000000000000000000000D1 -:2067B0000000000000000000000000000000000000000000000000000000000000000000C9 -:2067B8000000000000000000000000000000000000000000000000000000000000000000C1 -:2067C0000000000000000000000000000000000000000000000000000000000000000000B9 -:2067C8000000000000000000000000000000000000000000000000000000000000000000B1 -:2067D0000000000000000000000000000000000000000000000000000000000000000000A9 -:2067D8000000000000000000000000000000000000000000000000000000000000000000A1 -:2067E000000000000000000000000000000000000000000000000000000000000000000099 -:2067E800000000000000000000000000000000000000000000000000000000000000000091 -:2067F000000000000000000000000000000000000000000000000000000000000000000089 -:2067F800000000000000000000000000000000000000000000000000000000000000000081 -:20680000000000000000000000000000000000000000000000000000000000000000000078 -:20680800000000000000000000000000000000000000000000000000000000000000000070 -:20681000000000000000000000000000000000000000000000000000000000000000000068 -:20681800000000000000000000000000000000000000000000000000000000000000000060 -:20682000000000000000000000000000000000000000000000000000000000000000000058 -:20682800000000000000000000000000000000000000000000000000000000000000000050 -:20683000000000000000000000000000000000000000000000000000000000000000000048 -:20683800000000000000000000000000000000000000000000000000000000000000000040 -:20684000000000000000000000000000000000000000000000000000000000000000000038 -:20684800000000000000000000000000000000000000000000000000000000000000000030 -:20685000000000000000000000000000000000000000000000000000000000000000000028 -:20685800000000000000000000000000000000000000000000000000000000000000000020 -:20686000000000000000000000000000000000000000000000000000000000000000000018 -:20686800000000000000000000000000000000000000000000000000000000000000000010 -:20687000000000000000000000000000000000000000000000000000000000000000000008 -:20687800000000000000000000000000000000000000000000000000000000000000000000 -:206880000000000000000000000000000000000000000000000000000000000000000000F8 -:206888000000000000000000000000000000000000000000000000000000000000000000F0 -:206890000000000000000000000000000000000000000000000000000000000000000000E8 -:206898000000000000000000000000000000000000000000000000000000000000000000E0 -:2068A0000000000000000000000000000000000000000000000000000000000000000000D8 -:2068A8000000000000000000000000000000000000000000000000000000000000000000D0 -:2068B0000000000000000000000000000000000000000000000000000000000000000000C8 -:2068B8000000000000000000000000000000000000000000000000000000000000000000C0 -:2068C0000000000000000000000000000000000000000000000000000000000000000000B8 -:2068C8000000000000000000000000000000000000000000000000000000000000000000B0 -:2068D0000000000000000000000000000000000000000000000000000000000000000000A8 -:2068D8000000000000000000000000000000000000000000000000000000000000000000A0 -:2068E000000000000000000000000000000000000000000000000000000000000000000098 -:2068E800000000000000000000000000000000000000000000000000000000000000000090 -:2068F000000000000000000000000000000000000000000000000000000000000000000088 -:2068F800000000000000000000000000000000000000000000000000000000000000000080 -:20690000000000000000000000000000000000000000000000000000000000000000000077 -:2069080000000000000000000000000000000000000000000000000000000000000000006F -:20691000000000000000000000000000000000000000000000000000000000000000000067 -:2069180000000000000000000000000000000000000000000000000000000000000000005F -:20692000000000000000000000000000000000000000000000000000000000000000000057 -:2069280000000000000000000000000000000000000000000000000000000000000000004F -:20693000000000000000000000000000000000000000000000000000000000000000000047 -:2069380000000000000000000000000000000000000000000000000000000000000000003F -:20694000000000000000000000000000000000000000000000000000000000000000000037 -:2069480000000000000000000000000000000000000000000000000000000000000000002F -:20695000000000000000000000000000000000000000000000000000000000000000000027 -:2069580000000000000000000000000000000000000000000000000000000000000000001F -:20696000000000000000000000000000000000000000000000000000000000000000000017 -:2069680000000000000000000000000000000000000000000000000000000000000000000F -:20697000000000000000000000000000000000000000000000000000000000000000000007 -:206978000000000000000000000000000000000000000000000000000000000000000000FF -:206980000000000000000000000000000000000000000000000000000000000000000000F7 -:206988000000000000000000000000000000000000000000000000000000000000000000EF -:206990000000000000000000000000000000000000000000000000000000000000000000E7 -:206998000000000000000000000000000000000000000000000000000000000000000000DF -:2069A0000000000000000000000000000000000000000000000000000000000000000000D7 -:2069A8000000000000000000000000000000000000000000000000000000000000000000CF -:2069B0000000000000000000000000000000000000000000000000000000000000000000C7 -:2069B8000000000000000000000000000000000000000000000000000000000000000000BF -:2069C0000000000000000000000000000000000000000000000000000000000000000000B7 -:2069C8000000000000000000000000000000000000000000000000000000000000000000AF -:2069D0000000000000000000000000000000000000000000000000000000000000000000A7 -:2069D80000000000000000000000000000000000000000000000000000000000000000009F -:2069E000000000000000000000000000000000000000000000000000000000000000000097 -:2069E80000000000000000000000000000000000000000000000000000000000000000008F -:2069F000000000000000000000000000000000000000000000000000000000000000000087 -:2069F80000000000000000000000000000000000000000000000000000000000000000007F -:206A0000000000000000000000000000000000000000000000000000000000000000000076 -:206A080000000000000000000000000000000000000000000000000000000000000000006E -:206A1000000000000000000000000000000000000000000000000000000000000000000066 -:206A180000000000000000000000000000000000000000000000000000000000000000005E -:206A2000000000000000000000000000000000000000000000000000000000000000000056 -:206A280000000000000000000000000000000000000000000000000000000000000000004E -:206A3000000000000000000000000000000000000000000000000000000000000000000046 -:206A380000000000000000000000000000000000000000000000000000000000000000003E -:206A4000000000000000000000000000000000000000000000000000000000000000000036 -:206A480000000000000000000000000000000000000000000000000000000000000000002E -:206A5000000000000000000000000000000000000000000000000000000000000000000026 -:206A580000000000000000000000000000000000000000000000000000000000000000001E -:206A6000000000000000000000000000000000000000000000000000000000000000000016 -:206A680000000000000000000000000000000000000000000000000000000000000000000E -:206A7000000000000000000000000000000000000000000000000000000000000000000006 -:206A78000000000000000000000000000000000000000000000000000000000000000000FE -:206A80000000000000000000000000000000000000000000000000000000000000000000F6 -:206A88000000000000000000000000000000000000000000000000000000000000000000EE -:206A90000000000000000000000000000000000000000000000000000000000000000000E6 -:206A98000000000000000000000000000000000000000000000000000000000000000000DE -:206AA0000000000000000000000000000000000000000000000000000000000000000000D6 -:206AA8000000000000000000000000000000000000000000000000000000000000000000CE -:206AB0000000000000000000000000000000000000000000000000000000000000000000C6 -:206AB8000000000000000000000000000000000000000000000000000000000000000000BE -:206AC0000000000000000000000000000000000000000000000000000000000000000000B6 -:206AC8000000000000000000000000000000000000000000000000000000000000000000AE -:206AD0000000000000000000000000000000000000000000000000000000000000000000A6 -:206AD80000000000000000000000000000000000000000000000000000000000000000009E -:206AE000000000000000000000000000000000000000000000000000000000000000000096 -:206AE80000000000000000000000000000000000000000000000000000000000000000008E -:206AF000000000000000000000000000000000000000000000000000000000000000000086 -:206AF80000000000000000000000000000000000000000000000000000000000000000007E -:206B0000000000000000000000000000000000000000000000000000000000000000000075 -:206B080000000000000000000000000000000000000000000000000000000000000000006D -:206B1000000000000000000000000000000000000000000000000000000000000000000065 -:206B180000000000000000000000000000000000000000000000000000000000000000005D -:206B2000000000000000000000000000000000000000000000000000000000000000000055 -:206B280000000000000000000000000000000000000000000000000000000000000000004D -:206B3000000000000000000000000000000000000000000000000000000000000000000045 -:206B380000000000000000000000000000000000000000000000000000000000000000003D -:206B4000000000000000000000000000000000000000000000000000000000000000000035 -:206B480000000000000000000000000000000000000000000000000000000000000000002D -:206B5000000000000000000000000000000000000000000000000000000000000000000025 -:206B580000000000000000000000000000000000000000000000000000000000000000001D -:206B6000000000000000000000000000000000000000000000000000000000000000000015 -:206B680000000000000000000000000000000000000000000000000000000000000000000D -:206B7000000000000000000000000000000000000000000000000000000000000000000005 -:206B78000000000000000000000000000000000000000000000000000000000000000000FD -:206B80000000000000000000000000000000000000000000000000000000000000000000F5 -:206B88000000000000000000000000000000000000000000000000000000000000000000ED -:206B90000000000000000000000000000000000000000000000000000000000000000000E5 -:206B98000000000000000000000000000000000000000000000000000000000000000000DD -:206BA0000000000000000000000000000000000000000000000000000000000000000000D5 -:206BA8000000000000000000000000000000000000000000000000000000000000000000CD -:206BB0000000000000000000000000000000000000000000000000000000000000000000C5 -:206BB8000000000000000000000000000000000000000000000000000000000000000000BD -:206BC0000000000000000000000000000000000000000000000000000000000000000000B5 -:206BC8000000000000000000000000000000000000000000000000000000000000000000AD -:206BD0000000000000000000000000000000000000000000000000000000000000000000A5 -:206BD80000000000000000000000000000000000000000000000000000000000000000009D -:206BE000000000000000000000000000000000000000000000000000000000000000000095 -:206BE80000000000000000000000000000000000000000000000000000000000000000008D -:206BF000000000000000000000000000000000000000000000000000000000000000000085 -:206BF80000000000000000000000000000000000000000000000000000000000000000007D -:206C0000000000000000000000000000000000000000000000000000000000000000000074 -:206C080000000000000000000000000000000000000000000000000000000000000000006C -:206C1000000000000000000000000000000000000000000000000000000000000000000064 -:206C180000000000000000000000000000000000000000000000000000000000000000005C -:206C2000000000000000000000000000000000000000000000000000000000000000000054 -:206C280000000000000000000000000000000000000000000000000000000000000000004C -:206C3000000000000000000000000000000000000000000000000000000000000000000044 -:206C380000000000000000000000000000000000000000000000000000000000000000003C -:206C4000000000000000000000000000000000000000000000000000000000000000000034 -:206C480000000000000000000000000000000000000000000000000000000000000000002C -:206C5000000000000000000000000000000000000000000000000000000000000000000024 -:206C580000000000000000000000000000000000000000000000000000000000000000001C -:206C6000000000000000000000000000000000000000000000000000000000000000000014 -:206C680000000000000000000000000000000000000000000000000000000000000000000C -:206C7000000000000000000000000000000000000000000000000000000000000000000004 -:206C78000000000000000000000000000000000000000000000000000000000000000000FC -:206C80000000000000000000000000000000000000000000000000000000000000000000F4 -:206C88000000000000000000000000000000000000000000000000000000000000000000EC -:206C90000000000000000000000000000000000000000000000000000000000000000000E4 -:206C98000000000000000000000000000000000000000000000000000000000000000000DC -:206CA0000000000000000000000000000000000000000000000000000000000000000000D4 -:206CA8000000000000000000000000000000000000000000000000000000000000000000CC -:206CB0000000000000000000000000000000000000000000000000000000000000000000C4 -:206CB8000000000000000000000000000000000000000000000000000000000000000000BC -:206CC0000000000000000000000000000000000000000000000000000000000000000000B4 -:206CC8000000000000000000000000000000000000000000000000000000000000000000AC -:206CD0000000000000000000000000000000000000000000000000000000000000000000A4 -:206CD80000000000000000000000000000000000000000000000000000000000000000009C -:206CE000000000000000000000000000000000000000000000000000000000000000000094 -:206CE80000000000000000000000000000000000000000000000000000000000000000008C -:206CF000000000000000000000000000000000000000000000000000000000000000000084 -:206CF80000000000000000000000000000000000000000000000000000000000000000007C -:206D0000000000000000000000000000000000000000000000000000000000000000000073 -:206D080000000000000000000000000000000000000000000000000000000000000000006B -:206D1000000000000000000000000000000000000000000000000000000000000000000063 -:206D180000000000000000000000000000000000000000000000000000000000000000005B -:206D2000000000000000000000000000000000000000000000000000000000000000000053 -:206D280000000000000000000000000000000000000000000000000000000000000000004B -:206D3000000000000000000000000000000000000000000000000000000000000000000043 -:206D380000000000000000000000000000000000000000000000000000000000000000003B -:206D4000000000000000000000000000000000000000000000000000000000000000000033 -:206D480000000000000000000000000000000000000000000000000000000000000000002B -:206D5000000000000000000000000000000000000000000000000000000000000000000023 -:206D580000000000000000000000000000000000000000000000000000000000000000001B -:206D6000000000000000000000000000000000000000000000000000000000000000000013 -:206D680000000000000000000000000000000000000000000000000000000000000000000B -:206D7000000000000000000000000000000000000000000000000000000000000000000003 -:206D78000000000000000000000000000000000000000000000000000000000000000000FB -:206D80000000000000000000000000000000000000000000000000000000000000000000F3 -:206D88000000000000000000000000000000000000000000000000000000000000000000EB -:206D90000000000000000000000000000000000000000000000000000000000000000000E3 -:206D98000000000000000000000000000000000000000000000000000000000000000000DB -:206DA0000000000000000000000000000000000000000000000000000000000000000000D3 -:206DA8000000000000000000000000000000000000000000000000000000000000000000CB -:206DB0000000000000000000000000000000000000000000000000000000000000000000C3 -:206DB8000000000000000000000000000000000000000000000000000000000000000000BB -:206DC0000000000000000000000000000000000000000000000000000000000000000000B3 -:206DC8000000000000000000000000000000000000000000000000000000000000000000AB -:206DD0000000000000000000000000000000000000000000000000000000000000000000A3 -:206DD80000000000000000000000000000000000000000000000000000000000000000009B -:206DE000000000000000000000000000000000000000000000000000000000000000000093 -:206DE80000000000000000000000000000000000000000000000000000000000000000008B -:206DF000000000000000000000000000000000000000000000000000000000000000000083 -:206DF80000000000000000000000000000000000000000000000000000000000000000007B -:206E0000000000000000000000000000000000000000000000000000000000000000000072 -:206E080000000000000000000000000000000000000000000000000000000000000000006A -:206E1000000000000000000000000000000000000000000000000000000000000000000062 -:206E180000000000000000000000000000000000000000000000000000000000000000005A -:206E2000000000000000000000000000000000000000000000000000000000000000000052 -:206E280000000000000000000000000000000000000000000000000000000000000000004A -:206E3000000000000000000000000000000000000000000000000000000000000000000042 -:206E380000000000000000000000000000000000000000000000000000000000000000003A -:206E4000000000000000000000000000000000000000000000000000000000000000000032 -:206E480000000000000000000000000000000000000000000000000000000000000000002A -:206E5000000000000000000000000000000000000000000000000000000000000000000022 -:206E580000000000000000000000000000000000000000000000000000000000000000001A -:206E6000000000000000000000000000000000000000000000000000000000000000000012 -:206E680000000000000000000000000000000000000000000000000000000000000000000A -:206E7000000000000000000000000000000000000000000000000000000000000000000002 -:206E78000000000000000000000000000000000000000000000000000000000000000000FA -:206E80000000000000000000000000000000000000000000000000000000000000000000F2 -:206E88000000000000000000000000000000000000000000000000000000000000000000EA -:206E90000000000000000000000000000000000000000000000000000000000000000000E2 -:206E98000000000000000000000000000000000000000000000000000000000000000000DA -:206EA0000000000000000000000000000000000000000000000000000000000000000000D2 -:206EA8000000000000000000000000000000000000000000000000000000000000000000CA -:206EB0000000000000000000000000000000000000000000000000000000000000000000C2 -:206EB8000000000000000000000000000000000000000000000000000000000000000000BA -:206EC0000000000000000000000000000000000000000000000000000000000000000000B2 -:206EC8000000000000000000000000000000000000000000000000000000000000000000AA -:206ED0000000000000000000000000000000000000000000000000000000000000000000A2 -:206ED80000000000000000000000000000000000000000000000000000000000000000009A -:206EE000000000000000000000000000000000000000000000000000000000000000000092 -:206EE80000000000000000000000000000000000000000000000000000000000000000008A -:206EF000000000000000000000000000000000000000000000000000000000000000000082 -:206EF80000000000000000000000000000000000000000000000000000000000000000007A -:206F0000000000000000000000000000000000000000000000000000000000000000000071 -:206F0800000000000000000000000000000000000000000000000000000000000000000069 -:206F1000000000000000000000000000000000000000000000000000000000000000000061 -:206F1800000000000000000000000000000000000000000000000000000000000000000059 -:206F2000000000000000000000000000000000000000000000000000000000000000000051 -:206F2800000000000000000000000000000000000000000000000000000000000000000049 -:206F3000000000000000000000000000000000000000000000000000000000000000000041 -:206F3800000000000000000000000000000000000000000000000000000000000000000039 -:206F4000000000000000000000000000000000000000000000000000000000000000000031 -:206F4800000000000000000000000000000000000000000000000000000000000000000029 -:206F5000000000000000000000000000000000000000000000000000000000000000000021 -:206F5800000000000000000000000000000000000000000000000000000000000000000019 -:206F6000000000000000000000000000000000000000000000000000000000000000000011 -:206F6800000000000000000000000000000000000000000000000000000000000000000009 -:206F7000000000000000000000000000000000000000000000000000000000000000000001 -:206F78000000000000000000000000000000000000000000000000000000000000000000F9 -:206F80000000000000000000000000000000000000000000000000000000000000000000F1 -:206F88000000000000000000000000000000000000000000000000000000000000000000E9 -:206F90000000000000000000000000000000000000000000000000000000000000000000E1 -:206F98000000000000000000000000000000000000000000000000000000000000000000D9 -:206FA0000000000000000000000000000000000000000000000000000000000000000000D1 -:206FA8000000000000000000000000000000000000000000000000000000000000000000C9 -:206FB0000000000000000000000000000000000000000000000000000000000000000000C1 -:206FB8000000000000000000000000000000000000000000000000000000000000000000B9 -:206FC0000000000000000000000000000000000000000000000000000000000000000000B1 -:206FC8000000000000000000000000000000000000000000000000000000000000000000A9 -:206FD0000000000000000000000000000000000000000000000000000000000000000000A1 -:206FD800000000000000000000000000000000000000000000000000000000000000000099 -:206FE000000000000000000000000000000000000000000000000000000000000000000091 -:206FE800000000000000000000000000000000000000000000000000000000000000000089 -:206FF000000000000000000000000000000000000000000000000000000000000000000081 -:206FF800000000000000000000000000000000000000000000000000000000000000000079 -:20700000000000000000000000000000000000000000000000000000000000000000000070 -:20700800000000000000000000000000000000000000000000000000000000000000000068 -:20701000000000000000000000000000000000000000000000000000000000000000000060 -:20701800000000000000000000000000000000000000000000000000000000000000000058 -:20702000000000000000000000000000000000000000000000000000000000000000000050 -:20702800000000000000000000000000000000000000000000000000000000000000000048 -:20703000000000000000000000000000000000000000000000000000000000000000000040 -:20703800000000000000000000000000000000000000000000000000000000000000000038 -:20704000000000000000000000000000000000000000000000000000000000000000000030 -:20704800000000000000000000000000000000000000000000000000000000000000000028 -:20705000000000000000000000000000000000000000000000000000000000000000000020 -:20705800000000000000000000000000000000000000000000000000000000000000000018 -:20706000000000000000000000000000000000000000000000000000000000000000000010 -:20706800000000000000000000000000000000000000000000000000000000000000000008 -:20707000000000000000000000000000000000000000000000000000000000000000000000 -:207078000000000000000000000000000000000000000000000000000000000000000000F8 -:207080000000000000000000000000000000000000000000000000000000000000000000F0 -:207088000000000000000000000000000000000000000000000000000000000000000000E8 -:207090000000000000000000000000000000000000000000000000000000000000000000E0 -:207098000000000000000000000000000000000000000000000000000000000000000000D8 -:2070A0000000000000000000000000000000000000000000000000000000000000000000D0 -:2070A8000000000000000000000000000000000000000000000000000000000000000000C8 -:2070B0000000000000000000000000000000000000000000000000000000000000000000C0 -:2070B8000000000000000000000000000000000000000000000000000000000000000000B8 -:2070C0000000000000000000000000000000000000000000000000000000000000000000B0 -:2070C8000000000000000000000000000000000000000000000000000000000000000000A8 -:2070D0000000000000000000000000000000000000000000000000000000000000000000A0 -:2070D800000000000000000000000000000000000000000000000000000000000000000098 -:2070E000000000000000000000000000000000000000000000000000000000000000000090 -:2070E800000000000000000000000000000000000000000000000000000000000000000088 -:2070F000000000000000000000000000000000000000000000000000000000000000000080 -:2070F800000000000000000000000000000000000000000000000000000000000000000078 -:2071000000000000000000000000000000000000000000000000000000000000000000006F -:20710800000000000000000000000000000000000000000000000000000000000000000067 -:2071100000000000000000000000000000000000000000000000000000000000000000005F -:20711800000000000000000000000000000000000000000000000000000000000000000057 -:2071200000000000000000000000000000000000000000000000000000000000000000004F -:20712800000000000000000000000000000000000000000000000000000000000000000047 -:2071300000000000000000000000000000000000000000000000000000000000000000003F -:20713800000000000000000000000000000000000000000000000000000000000000000037 -:2071400000000000000000000000000000000000000000000000000000000000000000002F -:20714800000000000000000000000000000000000000000000000000000000000000000027 -:2071500000000000000000000000000000000000000000000000000000000000000000001F -:20715800000000000000000000000000000000000000000000000000000000000000000017 -:2071600000000000000000000000000000000000000000000000000000000000000000000F -:20716800000000000000000000000000000000000000000000000000000000000000000007 -:207170000000000000000000000000000000000000000000000000000000000000000000FF -:207178000000000000000000000000000000000000000000000000000000000000000000F7 -:207180000000000000000000000000000000000000000000000000000000000000000000EF -:207188000000000000000000000000000000000000000000000000000000000000000000E7 -:207190000000000000000000000000000000000000000000000000000000000000000000DF -:207198000000000000000000000000000000000000000000000000000000000000000000D7 -:2071A0000000000000000000000000000000000000000000000000000000000000000000CF -:2071A8000000000000000000000000000000000000000000000000000000000000000000C7 -:2071B0000000000000000000000000000000000000000000000000000000000000000000BF -:2071B8000000000000000000000000000000000000000000000000000000000000000000B7 -:2071C0000000000000000000000000000000000000000000000000000000000000000000AF -:2071C8000000000000000000000000000000000000000000000000000000000000000000A7 -:2071D00000000000000000000000000000000000000000000000000000000000000000009F -:2071D800000000000000000000000000000000000000000000000000000000000000000097 -:2071E00000000000000000000000000000000000000000000000000000000000000000008F -:2071E800000000000000000000000000000000000000000000000000000000000000000087 -:2071F00000000000000000000000000000000000000000000000000000000000000000007F -:2071F800000000000000000000000000000000000000000000000000000000000000000077 -:2072000000000000000000000000000000000000000000000000000000000000000000006E -:20720800000000000000000000000000000000000000000000000000000000000000000066 -:2072100000000000000000000000000000000000000000000000000000000000000000005E -:20721800000000000000000000000000000000000000000000000000000000000000000056 -:2072200000000000000000000000000000000000000000000000000000000000000000004E -:20722800000000000000000000000000000000000000000000000000000000000000000046 -:2072300000000000000000000000000000000000000000000000000000000000000000003E -:20723800000000000000000000000000000000000000000000000000000000000000000036 -:2072400000000000000000000000000000000000000000000000000000000000000000002E -:20724800000000000000000000000000000000000000000000000000000000000000000026 -:2072500000000000000000000000000000000000000000000000000000000000000000001E -:20725800000000000000000000000000000000000000000000000000000000000000000016 -:2072600000000000000000000000000000000000000000000000000000000000000000000E -:20726800000000000000000000000000000000000000000000000000000000000000000006 -:207270000000000000000000000000000000000000000000000000000000000000000000FE -:207278000000000000000000000000000000000000000000000000000000000000000000F6 -:207280000000000000000000000000000000000000000000000000000000000000000000EE -:207288000000000000000000000000000000000000000000000000000000000000000000E6 -:207290000000000000000000000000000000000000000000000000000000000000000000DE -:207298000000000000000000000000000000000000000000000000000000000000000000D6 -:2072A0000000000000000000000000000000000000000000000000000000000000000000CE -:2072A8000000000000000000000000000000000000000000000000000000000000000000C6 -:2072B0000000000000000000000000000000000000000000000000000000000000000000BE -:2072B8000000000000000000000000000000000000000000000000000000000000000000B6 -:2072C0000000000000000000000000000000000000000000000000000000000000000000AE -:2072C8000000000000000000000000000000000000000000000000000000000000000000A6 -:2072D00000000000000000000000000000000000000000000000000000000000000000009E -:2072D800000000000000000000000000000000000000000000000000000000000000000096 -:2072E00000000000000000000000000000000000000000000000000000000000000000008E -:2072E800000000000000000000000000000000000000000000000000000000000000000086 -:2072F00000000000000000000000000000000000000000000000000000000000000000007E -:2072F800000000000000000000000000000000000000000000000000000000000000000076 -:2073000000000000000000000000000000000000000000000000000000000000000000006D -:20730800000000000000000000000000000000000000000000000000000000000000000065 -:2073100000000000000000000000000000000000000000000000000000000000000000005D -:20731800000000000000000000000000000000000000000000000000000000000000000055 -:2073200000000000000000000000000000000000000000000000000000000000000000004D -:20732800000000000000000000000000000000000000000000000000000000000000000045 -:2073300000000000000000000000000000000000000000000000000000000000000000003D -:20733800000000000000000000000000000000000000000000000000000000000000000035 -:2073400000000000000000000000000000000000000000000000000000000000000000002D -:20734800000000000000000000000000000000000000000000000000000000000000000025 -:2073500000000000000000000000000000000000000000000000000000000000000000001D -:20735800000000000000000000000000000000000000000000000000000000000000000015 -:2073600000000000000000000000000000000000000000000000000000000000000000000D -:20736800000000000000000000000000000000000000000000000000000000000000000005 -:207370000000000000000000000000000000000000000000000000000000000000000000FD -:207378000000000000000000000000000000000000000000000000000000000000000000F5 -:207380000000000000000000000000000000000000000000000000000000000000000000ED -:207388000000000000000000000000000000000000000000000000000000000000000000E5 -:207390000000000000000000000000000000000000000000000000000000000000000000DD -:207398000000000000000000000000000000000000000000000000000000000000000000D5 -:2073A0000000000000000000000000000000000000000000000000000000000000000000CD -:2073A8000000000000000000000000000000000000000000000000000000000000000000C5 -:2073B0000000000000000000000000000000000000000000000000000000000000000000BD -:2073B8000000000000000000000000000000000000000000000000000000000000000000B5 -:2073C0000000000000000000000000000000000000000000000000000000000000000000AD -:2073C8000000000000000000000000000000000000000000000000000000000000000000A5 -:2073D00000000000000000000000000000000000000000000000000000000000000000009D -:2073D800000000000000000000000000000000000000000000000000000000000000000095 -:2073E00000000000000000000000000000000000000000000000000000000000000000008D -:2073E800000000000000000000000000000000000000000000000000000000000000000085 -:2073F00000000000000000000000000000000000000000000000000000000000000000007D -:2073F800000000000000000000000000000000000000000000000000000000000000000075 -:2074000000000000000000000000000000000000000000000000000000000000000000006C -:20740800000000000000000000000000000000000000000000000000000000000000000064 -:2074100000000000000000000000000000000000000000000000000000000000000000005C -:20741800000000000000000000000000000000000000000000000000000000000000000054 -:2074200000000000000000000000000000000000000000000000000000000000000000004C -:20742800000000000000000000000000000000000000000000000000000000000000000044 -:2074300000000000000000000000000000000000000000000000000000000000000000003C -:20743800000000000000000000000000000000000000000000000000000000000000000034 -:2074400000000000000000000000000000000000000000000000000000000000000000002C -:20744800000000000000000000000000000000000000000000000000000000000000000024 -:2074500000000000000000000000000000000000000000000000000000000000000000001C -:20745800000000000000000000000000000000000000000000000000000000000000000014 -:2074600000000000000000000000000000000000000000000000000000000000000000000C -:20746800000000000000000000000000000000000000000000000000000000000000000004 -:207470000000000000000000000000000000000000000000000000000000000000000000FC -:207478000000000000000000000000000000000000000000000000000000000000000000F4 -:207480000000000000000000000000000000000000000000000000000000000000000000EC -:207488000000000000000000000000000000000000000000000000000000000000000000E4 -:207490000000000000000000000000000000000000000000000000000000000000000000DC -:207498000000000000000000000000000000000000000000000000000000000000000000D4 -:2074A0000000000000000000000000000000000000000000000000000000000000000000CC -:2074A8000000000000000000000000000000000000000000000000000000000000000000C4 -:2074B0000000000000000000000000000000000000000000000000000000000000000000BC -:2074B8000000000000000000000000000000000000000000000000000000000000000000B4 -:2074C0000000000000000000000000000000000000000000000000000000000000000000AC -:2074C8000000000000000000000000000000000000000000000000000000000000000000A4 -:2074D00000000000000000000000000000000000000000000000000000000000000000009C -:2074D800000000000000000000000000000000000000000000000000000000000000000094 -:2074E00000000000000000000000000000000000000000000000000000000000000000008C -:2074E800000000000000000000000000000000000000000000000000000000000000000084 -:2074F00000000000000000000000000000000000000000000000000000000000000000007C -:2074F800000000000000000000000000000000000000000000000000000000000000000074 -:2075000000000000000000000000000000000000000000000000000000000000000000006B -:20750800000000000000000000000000000000000000000000000000000000000000000063 -:2075100000000000000000000000000000000000000000000000000000000000000000005B -:20751800000000000000000000000000000000000000000000000000000000000000000053 -:2075200000000000000000000000000000000000000000000000000000000000000000004B -:20752800000000000000000000000000000000000000000000000000000000000000000043 -:2075300000000000000000000000000000000000000000000000000000000000000000003B -:20753800000000000000000000000000000000000000000000000000000000000000000033 -:2075400000000000000000000000000000000000000000000000000000000000000000002B -:20754800000000000000000000000000000000000000000000000000000000000000000023 -:2075500000000000000000000000000000000000000000000000000000000000000000001B -:20755800000000000000000000000000000000000000000000000000000000000000000013 -:2075600000000000000000000000000000000000000000000000000000000000000000000B -:20756800000000000000000000000000000000000000000000000000000000000000000003 -:207570000000000000000000000000000000000000000000000000000000000000000000FB -:207578000000000000000000000000000000000000000000000000000000000000000000F3 -:207580000000000000000000000000000000000000000000000000000000000000000000EB -:207588000000000000000000000000000000000000000000000000000000000000000000E3 -:207590000000000000000000000000000000000000000000000000000000000000000000DB -:207598000000000000000000000000000000000000000000000000000000000000000000D3 -:2075A0000000000000000000000000000000000000000000000000000000000000000000CB -:2075A8000000000000000000000000000000000000000000000000000000000000000000C3 -:2075B0000000000000000000000000000000000000000000000000000000000000000000BB -:2075B8000000000000000000000000000000000000000000000000000000000000000000B3 -:2075C0000000000000000000000000000000000000000000000000000000000000000000AB -:2075C8000000000000000000000000000000000000000000000000000000000000000000A3 -:2075D00000000000000000000000000000000000000000000000000000000000000000009B -:2075D800000000000000000000000000000000000000000000000000000000000000000093 -:2075E00000000000000000000000000000000000000000000000000000000000000000008B -:2075E800000000000000000000000000000000000000000000000000000000000000000083 -:2075F00000000000000000000000000000000000000000000000000000000000000000007B -:2075F800000000000000000000000000000000000000000000000000000000000000000073 -:2076000000000000000000000000000000000000000000000000000000000000000000006A -:20760800000000000000000000000000000000000000000000000000000000000000000062 -:2076100000000000000000000000000000000000000000000000000000000000000000005A -:20761800000000000000000000000000000000000000000000000000000000000000000052 -:2076200000000000000000000000000000000000000000000000000000000000000000004A -:20762800000000000000000000000000000000000000000000000000000000000000000042 -:2076300000000000000000000000000000000000000000000000000000000000000000003A -:20763800000000000000000000000000000000000000000000000000000000000000000032 -:2076400000000000000000000000000000000000000000000000000000000000000000002A -:20764800000000000000000000000000000000000000000000000000000000000000000022 -:2076500000000000000000000000000000000000000000000000000000000000000000001A -:20765800000000000000000000000000000000000000000000000000000000000000000012 -:2076600000000000000000000000000000000000000000000000000000000000000000000A -:20766800000000000000000000000000000000000000000000000000000000000000000002 -:207670000000000000000000000000000000000000000000000000000000000000000000FA -:207678000000000000000000000000000000000000000000000000000000000000000000F2 -:207680000000000000000000000000000000000000000000000000000000000000000000EA -:207688000000000000000000000000000000000000000000000000000000000000000000E2 -:207690000000000000000000000000000000000000000000000000000000000000000000DA -:207698000000000000000000000000000000000000000000000000000000000000000000D2 -:2076A0000000000000000000000000000000000000000000000000000000000000000000CA -:2076A8000000000000000000000000000000000000000000000000000000000000000000C2 -:2076B0000000000000000000000000000000000000000000000000000000000000000000BA -:2076B8000000000000000000000000000000000000000000000000000000000000000000B2 -:2076C0000000000000000000000000000000000000000000000000000000000000000000AA -:2076C8000000000000000000000000000000000000000000000000000000000000000000A2 -:2076D00000000000000000000000000000000000000000000000000000000000000000009A -:2076D800000000000000000000000000000000000000000000000000000000000000000092 -:2076E00000000000000000000000000000000000000000000000000000000000000000008A -:2076E800000000000000000000000000000000000000000000000000000000000000000082 -:2076F00000000000000000000000000000000000000000000000000000000000000000007A -:2076F800000000000000000000000000000000000000000000000000000000000000000072 -:20770000000000000000000000000000000000000000000000000000000000000000000069 -:20770800000000000000000000000000000000000000000000000000000000000000000061 -:20771000000000000000000000000000000000000000000000000000000000000000000059 -:20771800000000000000000000000000000000000000000000000000000000000000000051 -:20772000000000000000000000000000000000000000000000000000000000000000000049 -:20772800000000000000000000000000000000000000000000000000000000000000000041 -:20773000000000000000000000000000000000000000000000000000000000000000000039 -:20773800000000000000000000000000000000000000000000000000000000000000000031 -:20774000000000000000000000000000000000000000000000000000000000000000000029 -:20774800000000000000000000000000000000000000000000000000000000000000000021 -:20775000000000000000000000000000000000000000000000000000000000000000000019 -:20775800000000000000000000000000000000000000000000000000000000000000000011 -:20776000000000000000000000000000000000000000000000000000000000000000000009 -:20776800000000000000000000000000000000000000000000000000000000000000000001 -:207770000000000000000000000000000000000000000000000000000000000000000000F9 -:207778000000000000000000000000000000000000000000000000000000000000000000F1 -:207780000000000000000000000000000000000000000000000000000000000000000000E9 -:207788000000000000000000000000000000000000000000000000000000000000000000E1 -:207790000000000000000000000000000000000000000000000000000000000000000000D9 -:207798000000000000000000000000000000000000000000000000000000000000000000D1 -:2077A0000000000000000000000000000000000000000000000000000000000000000000C9 -:2077A8000000000000000000000000000000000000000000000000000000000000000000C1 -:2077B0000000000000000000000000000000000000000000000000000000000000000000B9 -:2077B8000000000000000000000000000000000000000000000000000000000000000000B1 -:2077C0000000000000000000000000000000000000000000000000000000000000000000A9 -:2077C8000000000000000000000000000000000000000000000000000000000000000000A1 -:2077D000000000000000000000000000000000000000000000000000000000000000000099 -:2077D800000000000000000000000000000000000000000000000000000000000000000091 -:2077E000000000000000000000000000000000000000000000000000000000000000000089 -:2077E800000000000000000000000000000000000000000000000000000000000000000081 -:2077F000000000000000000000000000000000000000000000000000000000000000000079 -:2077F800000000000000000000000000000000000000000000000000000000000000000071 -:20780000000000000000000000000000000000000000000000000000000000000000000068 -:20780800000000000000000000000000000000000000000000000000000000000000000060 -:20781000000000000000000000000000000000000000000000000000000000000000000058 -:20781800000000000000000000000000000000000000000000000000000000000000000050 -:20782000000000000000000000000000000000000000000000000000000000000000000048 -:20782800000000000000000000000000000000000000000000000000000000000000000040 -:20783000000000000000000000000000000000000000000000000000000000000000000038 -:20783800000000000000000000000000000000000000000000000000000000000000000030 -:20784000000000000000000000000000000000000000000000000000000000000000000028 -:20784800000000000000000000000000000000000000000000000000000000000000000020 -:20785000000000000000000000000000000000000000000000000000000000000000000018 -:20785800000000000000000000000000000000000000000000000000000000000000000010 -:20786000000000000000000000000000000000000000000000000000000000000000000008 -:20786800000000000000000000000000000000000000000000000000000000000000000000 -:207870000000000000000000000000000000000000000000000000000000000000000000F8 -:207878000000000000000000000000000000000000000000000000000000000000000000F0 -:207880000000000000000000000000000000000000000000000000000000000000000000E8 -:207888000000000000000000000000000000000000000000000000000000000000000000E0 -:207890000000000000000000000000000000000000000000000000000000000000000000D8 -:207898000000000000000000000000000000000000000000000000000000000000000000D0 -:2078A0000000000000000000000000000000000000000000000000000000000000000000C8 -:2078A8000000000000000000000000000000000000000000000000000000000000000000C0 -:2078B0000000000000000000000000000000000000000000000000000000000000000000B8 -:2078B8000000000000000000000000000000000000000000000000000000000000000000B0 -:2078C0000000000000000000000000000000000000000000000000000000000000000000A8 -:2078C8000000000000000000000000000000000000000000000000000000000000000000A0 -:2078D000000000000000000000000000000000000000000000000000000000000000000098 -:2078D800000000000000000000000000000000000000000000000000000000000000000090 -:2078E000000000000000000000000000000000000000000000000000000000000000000088 -:2078E800000000000000000000000000000000000000000000000000000000000000000080 -:2078F000000000000000000000000000000000000000000000000000000000000000000078 -:2078F800000000000000000000000000000000000000000000000000000000000000000070 -:20790000000000000000000000000000000000000000000000000000000000000000000067 -:2079080000000000000000000000000000000000000000000000000000000000000000005F -:20791000000000000000000000000000000000000000000000000000000000000000000057 -:2079180000000000000000000000000000000000000000000000000000000000000000004F -:20792000000000000000000000000000000000000000000000000000000000000000000047 -:2079280000000000000000000000000000000000000000000000000000000000000000003F -:20793000000000000000000000000000000000000000000000000000000000000000000037 -:2079380000000000000000000000000000000000000000000000000000000000000000002F -:20794000000000000000000000000000000000000000000000000000000000000000000027 -:2079480000000000000000000000000000000000000000000000000000000000000000001F -:20795000000000000000000000000000000000000000000000000000000000000000000017 -:2079580000000000000000000000000000000000000000000000000000000000000000000F -:20796000000000000000000000000000000000000000000000000000000000000000000007 -:207968000000000000000000000000000000000000000000000000000000000000000000FF -:207970000000000000000000000000000000000000000000000000000000000000000000F7 -:207978000000000000000000000000000000000000000000000000000000000000000000EF -:207980000000000000000000000000000000000000000000000000000000000000000000E7 -:207988000000000000000000000000000000000000000000000000000000000000000000DF -:207990000000000000000000000000000000000000000000000000000000000000000000D7 -:207998000000000000000000000000000000000000000000000000000000000000000000CF -:2079A0000000000000000000000000000000000000000000000000000000000000000000C7 -:2079A8000000000000000000000000000000000000000000000000000000000000000000BF -:2079B0000000000000000000000000000000000000000000000000000000000000000000B7 -:2079B8000000000000000000000000000000000000000000000000000000000000000000AF -:2079C0000000000000000000000000000000000000000000000000000000000000000000A7 -:2079C80000000000000000000000000000000000000000000000000000000000000000009F -:2079D000000000000000000000000000000000000000000000000000000000000000000097 -:2079D80000000000000000000000000000000000000000000000000000000000000000008F -:2079E000000000000000000000000000000000000000000000000000000000000000000087 -:2079E80000000000000000000000000000000000000000000000000000000000000000007F -:2079F000000000000000000000000000000000000000000000000000000000000000000077 -:2079F80000000000000000000000000000000000000000000000000000000000000000006F -:207A0000000000000000000000000000000000000000000000000000000000000000000066 -:207A080000000000000000000000000000000000000000000000000000000000000000005E -:207A1000000000000000000000000000000000000000000000000000000000000000000056 -:207A180000000000000000000000000000000000000000000000000000000000000000004E -:207A2000000000000000000000000000000000000000000000000000000000000000000046 -:207A280000000000000000000000000000000000000000000000000000000000000000003E -:207A3000000000000000000000000000000000000000000000000000000000000000000036 -:207A380000000000000000000000000000000000000000000000000000000000000000002E -:207A4000000000000000000000000000000000000000000000000000000000000000000026 -:207A480000000000000000000000000000000000000000000000000000000000000000001E -:207A5000000000000000000000000000000000000000000000000000000000000000000016 -:207A580000000000000000000000000000000000000000000000000000000000000000000E -:207A6000000000000000000000000000000000000000000000000000000000000000000006 -:207A68000000000000000000000000000000000000000000000000000000000000000000FE -:207A70000000000000000000000000000000000000000000000000000000000000000000F6 -:207A78000000000000000000000000000000000000000000000000000000000000000000EE -:207A80000000000000000000000000000000000000000000000000000000000000000000E6 -:207A88000000000000000000000000000000000000000000000000000000000000000000DE -:207A90000000000000000000000000000000000000000000000000000000000000000000D6 -:207A98000000000000000000000000000000000000000000000000000000000000000000CE -:207AA0000000000000000000000000000000000000000000000000000000000000000000C6 -:207AA8000000000000000000000000000000000000000000000000000000000000000000BE -:207AB0000000000000000000000000000000000000000000000000000000000000000000B6 -:207AB8000000000000000000000000000000000000000000000000000000000000000000AE -:207AC0000000000000000000000000000000000000000000000000000000000000000000A6 -:207AC80000000000000000000000000000000000000000000000000000000000000000009E -:207AD000000000000000000000000000000000000000000000000000000000000000000096 -:207AD80000000000000000000000000000000000000000000000000000000000000000008E -:207AE000000000000000000000000000000000000000000000000000000000000000000086 -:207AE80000000000000000000000000000000000000000000000000000000000000000007E -:207AF000000000000000000000000000000000000000000000000000000000000000000076 -:207AF80000000000000000000000000000000000000000000000000000000000000000006E -:207B0000000000000000000000000000000000000000000000000000000000000000000065 -:207B080000000000000000000000000000000000000000000000000000000000000000005D -:207B1000000000000000000000000000000000000000000000000000000000000000000055 -:207B180000000000000000000000000000000000000000000000000000000000000000004D -:207B2000000000000000000000000000000000000000000000000000000000000000000045 -:207B280000000000000000000000000000000000000000000000000000000000000000003D -:207B3000000000000000000000000000000000000000000000000000000000000000000035 -:207B380000000000000000000000000000000000000000000000000000000000000000002D -:207B4000000000000000000000000000000000000000000000000000000000000000000025 -:207B480000000000000000000000000000000000000000000000000000000000000000001D -:207B5000000000000000000000000000000000000000000000000000000000000000000015 -:207B580000000000000000000000000000000000000000000000000000000000000000000D -:207B6000000000000000000000000000000000000000000000000000000000000000000005 -:207B68000000000000000000000000000000000000000000000000000000000000000000FD -:207B70000000000000000000000000000000000000000000000000000000000000000000F5 -:207B78000000000000000000000000000000000000000000000000000000000000000000ED -:207B80000000000000000000000000000000000000000000000000000000000000000000E5 -:207B88000000000000000000000000000000000000000000000000000000000000000000DD -:207B90000000000000000000000000000000000000000000000000000000000000000000D5 -:207B98000000000000000000000000000000000000000000000000000000000000000000CD -:207BA0000000000000000000000000000000000000000000000000000000000000000000C5 -:207BA8000000000000000000000000000000000000000000000000000000000000000000BD -:207BB0000000000000000000000000000000000000000000000000000000000000000000B5 -:207BB8000000000000000000000000000000000000000000000000000000000000000000AD -:207BC0000000000000000000000000000000000000000000000000000000000000000000A5 -:207BC80000000000000000000000000000000000000000000000000000000000000000009D -:207BD000000000000000000000000000000000000000000000000000000000000000000095 -:207BD80000000000000000000000000000000000000000000000000000000000000000008D -:207BE000000000000000000000000000000000000000000000000000000000000000000085 -:207BE80000000000000000000000000000000000000000000000000000000000000000007D -:207BF000000000000000000000000000000000000000000000000000000000000000000075 -:207BF80000000000000000000000000000000000000000000000000000000000000000006D -:207C0000000000000000000000000000000000000000000000000000000000000000000064 -:207C080000000000000000000000000000000000000000000000000000000000000000005C -:207C1000000000000000000000000000000000000000000000000000000000000000000054 -:207C180000000000000000000000000000000000000000000000000000000000000000004C -:207C2000000000000000000000000000000000000000000000000000000000000000000044 -:207C280000000000000000000000000000000000000000000000000000000000000000003C -:207C3000000000000000000000000000000000000000000000000000000000000000000034 -:207C380000000000000000000000000000000000000000000000000000000000000000002C -:207C4000000000000000000000000000000000000000000000000000000000000000000024 -:207C480000000000000000000000000000000000000000000000000000000000000000001C -:207C5000000000000000000000000000000000000000000000000000000000000000000014 -:207C580000000000000000000000000000000000000000000000000000000000000000000C -:207C6000000000000000000000000000000000000000000000000000000000000000000004 -:207C68000000000000000000000000000000000000000000000000000000000000000000FC -:207C70000000000000000000000000000000000000000000000000000000000000000000F4 -:207C78000000000000000000000000000000000000000000000000000000000000000000EC -:207C80000000000000000000000000000000000000000000000000000000000000000000E4 -:207C88000000000000000000000000000000000000000000000000000000000000000000DC -:207C90000000000000000000000000000000000000000000000000000000000000000000D4 -:207C98000000000000000000000000000000000000000000000000000000000000000000CC -:207CA0000000000000000000000000000000000000000000000000000000000000000000C4 -:207CA8000000000000000000000000000000000000000000000000000000000000000000BC -:207CB0000000000000000000000000000000000000000000000000000000000000000000B4 -:207CB8000000000000000000000000000000000000000000000000000000000000000000AC -:207CC0000000000000000000000000000000000000000000000000000000000000000000A4 -:207CC80000000000000000000000000000000000000000000000000000000000000000009C -:207CD000000000000000000000000000000000000000000000000000000000000000000094 -:207CD80000000000000000000000000000000000000000000000000000000000000000008C -:207CE000000000000000000000000000000000000000000000000000000000000000000084 -:207CE80000000000000000000000000000000000000000000000000000000000000000007C -:207CF000000000000000000000000000000000000000000000000000000000000000000074 -:207CF80000000000000000000000000000000000000000000000000000000000000000006C -:207D0000000000000000000000000000000000000000000000000000000000000000000063 -:207D080000000000000000000000000000000000000000000000000000000000000000005B -:207D1000000000000000000000000000000000000000000000000000000000000000000053 -:207D180000000000000000000000000000000000000000000000000000000000000000004B -:207D2000000000000000000000000000000000000000000000000000000000000000000043 -:207D280000000000000000000000000000000000000000000000000000000000000000003B -:207D3000000000000000000000000000000000000000000000000000000000000000000033 -:207D380000000000000000000000000000000000000000000000000000000000000000002B -:207D4000000000000000000000000000000000000000000000000000000000000000000023 -:207D480000000000000000000000000000000000000000000000000000000000000000001B -:207D5000000000000000000000000000000000000000000000000000000000000000000013 -:207D580000000000000000000000000000000000000000000000000000000000000000000B -:207D6000000000000000000000000000000000000000000000000000000000000000000003 -:207D68000000000000000000000000000000000000000000000000000000000000000000FB -:207D70000000000000000000000000000000000000000000000000000000000000000000F3 -:207D78000000000000000000000000000000000000000000000000000000000000000000EB -:207D80000000000000000000000000000000000000000000000000000000000000000000E3 -:207D88000000000000000000000000000000000000000000000000000000000000000000DB -:207D90000000000000000000000000000000000000000000000000000000000000000000D3 -:207D98000000000000000000000000000000000000000000000000000000000000000000CB -:207DA0000000000000000000000000000000000000000000000000000000000000000000C3 -:207DA8000000000000000000000000000000000000000000000000000000000000000000BB -:207DB0000000000000000000000000000000000000000000000000000000000000000000B3 -:207DB8000000000000000000000000000000000000000000000000000000000000000000AB -:207DC0000000000000000000000000000000000000000000000000000000000000000000A3 -:207DC80000000000000000000000000000000000000000000000000000000000000000009B -:207DD000000000000000000000000000000000000000000000000000000000000000000093 -:207DD80000000000000000000000000000000000000000000000000000000000000000008B -:207DE000000000000000000000000000000000000000000000000000000000000000000083 -:207DE80000000000000000000000000000000000000000000000000000000000000000007B -:207DF000000000000000000000000000000000000000000000000000000000000000000073 -:207DF80000000000000000000000000000000000000000000000000000000000000000006B -:207E0000000000000000000000000000000000000000000000000000000000000000000062 -:207E080000000000000000000000000000000000000000000000000000000000000000005A -:207E1000000000000000000000000000000000000000000000000000000000000000000052 -:207E180000000000000000000000000000000000000000000000000000000000000000004A -:207E2000000000000000000000000000000000000000000000000000000000000000000042 -:207E280000000000000000000000000000000000000000000000000000000000000000003A -:207E3000000000000000000000000000000000000000000000000000000000000000000032 -:207E380000000000000000000000000000000000000000000000000000000000000000002A -:207E4000000000000000000000000000000000000000000000000000000000000000000022 -:207E480000000000000000000000000000000000000000000000000000000000000000001A -:207E5000000000000000000000000000000000000000000000000000000000000000000012 -:207E580000000000000000000000000000000000000000000000000000000000000000000A -:207E6000000000000000000000000000000000000000000000000000000000000000000002 -:207E68000000000000000000000000000000000000000000000000000000000000000000FA -:207E70000000000000000000000000000000000000000000000000000000000000000000F2 -:207E78000000000000000000000000000000000000000000000000000000000000000000EA -:207E80000000000000000000000000000000000000000000000000000000000000000000E2 -:207E88000000000000000000000000000000000000000000000000000000000000000000DA -:207E90000000000000000000000000000000000000000000000000000000000000000000D2 -:207E98000000000000000000000000000000000000000000000000000000000000000000CA -:207EA0000000000000000000000000000000000000000000000000000000000000000000C2 -:207EA8000000000000000000000000000000000000000000000000000000000000000000BA -:207EB0000000000000000000000000000000000000000000000000000000000000000000B2 -:207EB8000000000000000000000000000000000000000000000000000000000000000000AA -:207EC0000000000000000000000000000000000000000000000000000000000000000000A2 -:207EC80000000000000000000000000000000000000000000000000000000000000000009A -:207ED000000000000000000000000000000000000000000000000000000000000000000092 -:207ED80000000000000000000000000000000000000000000000000000000000000000008A -:207EE000000000000000000000000000000000000000000000000000000000000000000082 -:207EE80000000000000000000000000000000000000000000000000000000000000000007A -:207EF000000000000000000000000000000000000000000000000000000000000000000072 -:207EF80000000000000000000000000000000000000000000000000000000000000000006A -:207F0000000000000000000000000000000000000000000000000000000000000000000061 -:207F0800000000000000000000000000000000000000000000000000000000000000000059 -:207F1000000000000000000000000000000000000000000000000000000000000000000051 -:207F1800000000000000000000000000000000000000000000000000000000000000000049 -:207F2000000000000000000000000000000000000000000000000000000000000000000041 -:207F2800000000000000000000000000000000000000000000000000000000000000000039 -:207F3000000000000000000000000000000000000000000000000000000000000000000031 -:207F3800000000000000000000000000000000000000000000000000000000000000000029 -:207F4000000000000000000000000000000000000000000000000000000000000000000021 -:207F4800000000000000000000000000000000000000000000000000000000000000000019 -:207F5000000000000000000000000000000000000000000000000000000000000000000011 -:207F5800000000000000000000000000000000000000000000000000000000000000000009 -:207F6000000000000000000000000000000000000000000000000000000000000000000001 -:207F68000000000000000000000000000000000000000000000000000000000000000000F9 -:207F70000000000000000000000000000000000000000000000000000000000000000000F1 -:207F78000000000000000000000000000000000000000000000000000000000000000000E9 -:207F80000000000000000000000000000000000000000000000000000000000000000000E1 -:207F88000000000000000000000000000000000000000000000000000000000000000000D9 -:207F90000000000000000000000000000000000000000000000000000000000000000000D1 -:207F98000000000000000000000000000000000000000000000000000000000000000000C9 -:207FA0000000000000000000000000000000000000000000000000000000000000000000C1 -:207FA8000000000000000000000000000000000000000000000000000000000000000000B9 -:207FB0000000000000000000000000000000000000000000000000000000000000000000B1 -:207FB8000000000000000000000000000000000000000000000000000000000000000000A9 -:207FC0000000000000000000000000000000000000000000000000000000000000000000A1 -:207FC800000000000000000000000000000000000000000000000000000000000000000099 -:207FD000000000000000000000000000000000000000000000000000000000000000000091 -:207FD800000000000000000000000000000000000000000000000000000000000000000089 -:207FE000000000000000000000000000000000000000000000000000000000000000000081 -:207FE800000000000000000000000000000000000000000000000000000000000000000079 -:207FF000000000000000000000000000000000000000000000000000000000000000000071 -:207FF800000000000000000000000000000000000000000000000000000000000000000069 -:00000001FF diff --git a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ta2_unb2b_bsp.mif b/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ta2_unb2b_bsp.mif deleted file mode 100644 index a27e92b2d3d1e70c2aad2cf232e4776bfec0bbed..0000000000000000000000000000000000000000 --- a/applications/ta2/libraries/ta2_unb2b_bsp/hardware/unb2b/ta2_unb2b_bsp.mif +++ /dev/null @@ -1,123 +0,0 @@ -DEPTH = 1024; -WIDTH = 32; -ADDRESS_RADIX = DEC; -DATA_RADIX = HEX; -CONTENT BEGIN -0 : 4156535f; -1 : 4554485f; -2 : 305f4d4d; -3 : 535f5241; -4 : 4d203830; -5 : 30302034; -6 : 30393620; -7 : 4156535f; -8 : 4554485f; -9 : 305f4d4d; -10 : 535f5245; -11 : 47203830; -12 : 20363420; -13 : 4156535f; -14 : 4554485f; -15 : 305f4d4d; -16 : 535f5453; -17 : 45203230; -18 : 30302034; -19 : 30393620; -20 : 4b45524e; -21 : 454c5f43; -22 : 4c4b5f47; -23 : 454e2039; -24 : 30303020; -25 : 34303936; -26 : 204b4552; -27 : 4e454c5f; -28 : 494e5445; -29 : 52464143; -30 : 45203430; -31 : 30302031; -32 : 36333834; -33 : 2050494f; -34 : 5f505053; -35 : 20336330; -36 : 20382050; -37 : 494f5f57; -38 : 44492033; -39 : 38302031; -40 : 36205245; -41 : 475f4450; -42 : 4d4d5f43; -43 : 54524c20; -44 : 33623820; -45 : 38205245; -46 : 475f4450; -47 : 4d4d5f44; -48 : 41544120; -49 : 33623020; -50 : 38205245; -51 : 475f4550; -52 : 43532033; -53 : 34302033; -54 : 32205245; -55 : 475f4650; -56 : 47415f54; -57 : 454d505f; -58 : 53454e53; -59 : 20333230; -60 : 20333220; -61 : 5245475f; -62 : 46504741; -63 : 5f564f4c; -64 : 54414745; -65 : 5f53454e; -66 : 53206330; -67 : 20363420; -68 : 5245475f; -69 : 4d4d4450; -70 : 5f435452; -71 : 4c203361; -72 : 38203820; -73 : 5245475f; -74 : 4d4d4450; -75 : 5f435452; -76 : 4c5f3120; -77 : 33393020; -78 : 38205245; -79 : 475f4d4d; -80 : 44505f44; -81 : 41544120; -82 : 33613020; -83 : 38205245; -84 : 475f4d4d; -85 : 44505f44; -86 : 4154415f; -87 : 31203339; -88 : 38203820; -89 : 5245475f; -90 : 52454d55; -91 : 20333630; -92 : 20333220; -93 : 5245475f; -94 : 5441325f; -95 : 554e4232; -96 : 425f4a45; -97 : 53443230; -98 : 34422034; -99 : 30302031; -100 : 30323420; -101 : 5245475f; -102 : 554e425f; -103 : 504d4255; -104 : 53203130; -105 : 30203235; -106 : 36205245; -107 : 475f554e; -108 : 425f5345; -109 : 4e532032; -110 : 30302032; -111 : 35362052; -112 : 45475f57; -113 : 44492033; -114 : 30303020; -115 : 38000000; - -END;