From 4f36278cb73a64441efbf91315e6186d24a94d6b Mon Sep 17 00:00:00 2001 From: marqs Date: Thu, 18 May 2017 23:35:43 +0300 Subject: [PATCH] Sync processing rewritten and some issues fixed * add 480i/576i line3x/4x * clean up RTL and SDC * update AVI infoframe properly * add HDMI IT content option --- ossc.qsf | 3 + ossc.sdc | 73 +- rtl/ossc.v | 106 +- rtl/scanconverter.v | 965 ++++---- rtl/videogen.v | 102 +- software/sys_controller/it6613/HDMI_TX.c | 22 +- software/sys_controller/it6613/HDMI_TX.h | 2 +- software/sys_controller/it6613/it6613_drv.c | 23 +- software/sys_controller/it6613/it6613_drv.h | 2 +- .../mem_init/sys_onchip_memory2_0.hex | 2086 ++++++++--------- software/sys_controller/ossc/av_controller.c | 95 +- software/sys_controller/ossc/avconfig.c | 1 + software/sys_controller/ossc/avconfig.h | 1 + software/sys_controller/ossc/controls.c | 6 +- software/sys_controller/ossc/firmware.h | 2 +- software/sys_controller/ossc/menu.c | 10 +- software/sys_controller/tvp7002/tvp7002.c | 5 +- software/sys_controller/tvp7002/tvp7002.h | 2 +- software/sys_controller/tvp7002/video_modes.c | 43 +- software/sys_controller/tvp7002/video_modes.h | 64 +- software/sys_controller_bsp/libhal_bsp.a | Bin 104226 -> 104226 bytes software/sys_controller_bsp/settings.bsp | 24 +- software/sys_controller_bsp/system.h | 57 +- sys.qsys | 88 +- sys.sopcinfo | 1025 +++++++- 25 files changed, 2814 insertions(+), 1993 deletions(-) diff --git a/ossc.qsf b/ossc.qsf index 9c635b4..2dc74b4 100644 --- a/ossc.qsf +++ b/ossc.qsf @@ -235,4 +235,7 @@ set_global_assignment -name ROUTER_CLOCKING_TOPOLOGY_ANALYSIS ON set_global_assignment -name PLACEMENT_EFFORT_MULTIPLIER 8.0 set_global_assignment -name ROUTER_EFFORT_MULTIPLIER 2.0 set_global_assignment -name CYCLONEII_OPTIMIZATION_TECHNIQUE SPEED +set_global_assignment -name ENABLE_SIGNALTAP OFF +set_global_assignment -name USE_SIGNALTAP_FILE output_files/ossc_la.stp +set_global_assignment -name SIGNALTAP_FILE output_files/ossc_la.stp set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top \ No newline at end of file diff --git a/ossc.sdc b/ossc.sdc index f5bb37a..d6a7281 100644 --- a/ossc.sdc +++ b/ossc.sdc @@ -10,16 +10,13 @@ set_false_path -to {sys:sys_inst|sys_pio_1:pio_1|readdata*} ### Scanconverter clock constraints ### create_clock -period 108MHz -name pclk_hdtv [get_ports PCLK_in] -create_clock -period 27MHz -name pclk_sdtv_L2 [get_ports PCLK_in] -add -create_clock -period 27MHz -name pclk_sdtv_L3 [get_ports PCLK_in] -add -create_clock -period 27MHz -name pclk_sdtv_L4 [get_ports PCLK_in] -add -create_clock -period 27MHz -name pclk_sdtv_L5 [get_ports PCLK_in] -add +create_clock -period 27MHz -name pclk_sdtv [get_ports PCLK_in] -add #derive_pll_clocks -create_generated_clock -master_clock pclk_sdtv_L2 -source {scanconverter_inst|pll_linedouble|altpll_component|auto_generated|pll1|inclk[0]} -multiply_by 2 -duty_cycle 50.00 -name pclk_2x {scanconverter_inst|pll_linedouble|altpll_component|auto_generated|pll1|clk[0]} -create_generated_clock -master_clock pclk_sdtv_L3 -source {scanconverter_inst|pll_linetriple|altpll_component|auto_generated|pll1|inclk[0]} -multiply_by 3 -duty_cycle 50.00 -name pclk_3x {scanconverter_inst|pll_linetriple|altpll_component|auto_generated|pll1|clk[0]} -create_generated_clock -master_clock pclk_sdtv_L4 -source {scanconverter_inst|pll_linetriple|altpll_component|auto_generated|pll1|inclk[0]} -multiply_by 4 -duty_cycle 50.00 -name pclk_4x {scanconverter_inst|pll_linetriple|altpll_component|auto_generated|pll1|clk[1]} -create_generated_clock -master_clock pclk_sdtv_L5 -source {scanconverter_inst|pll_linedouble|altpll_component|auto_generated|pll1|inclk[0]} -multiply_by 5 -duty_cycle 50.00 -name pclk_5x {scanconverter_inst|pll_linedouble|altpll_component|auto_generated|pll1|clk[1]} +create_generated_clock -master_clock pclk_sdtv -source {scanconverter_inst|pll_linedouble|altpll_component|auto_generated|pll1|inclk[0]} -multiply_by 2 -duty_cycle 50.00 -name pclk_2x {scanconverter_inst|pll_linedouble|altpll_component|auto_generated|pll1|clk[0]} +create_generated_clock -master_clock pclk_sdtv -source {scanconverter_inst|pll_linetriple|altpll_component|auto_generated|pll1|inclk[0]} -multiply_by 3 -duty_cycle 50.00 -name pclk_3x {scanconverter_inst|pll_linetriple|altpll_component|auto_generated|pll1|clk[0]} +create_generated_clock -master_clock pclk_sdtv -source {scanconverter_inst|pll_linetriple|altpll_component|auto_generated|pll1|inclk[0]} -multiply_by 4 -duty_cycle 50.00 -name pclk_4x {scanconverter_inst|pll_linetriple|altpll_component|auto_generated|pll1|clk[1]} +create_generated_clock -master_clock pclk_sdtv -source {scanconverter_inst|pll_linedouble|altpll_component|auto_generated|pll1|inclk[0]} -multiply_by 5 -duty_cycle 50.00 -name pclk_5x {scanconverter_inst|pll_linedouble|altpll_component|auto_generated|pll1|clk[1]} derive_clock_uncertainty @@ -29,14 +26,8 @@ set TVP_dmax 1.5 set critinputs [get_ports {R_in* G_in* B_in* HSYNC_in VSYNC_in FID_in}] set_input_delay -clock pclk_hdtv -min $TVP_dmin $critinputs set_input_delay -clock pclk_hdtv -max $TVP_dmax $critinputs -set_input_delay -clock pclk_sdtv_L2 -min $TVP_dmin $critinputs -add_delay -set_input_delay -clock pclk_sdtv_L2 -max $TVP_dmax $critinputs -add_delay -set_input_delay -clock pclk_sdtv_L3 -min $TVP_dmin $critinputs -add_delay -set_input_delay -clock pclk_sdtv_L3 -max $TVP_dmax $critinputs -add_delay -set_input_delay -clock pclk_sdtv_L4 -min $TVP_dmin $critinputs -add_delay -set_input_delay -clock pclk_sdtv_L4 -max $TVP_dmax $critinputs -add_delay -set_input_delay -clock pclk_sdtv_L5 -min $TVP_dmin $critinputs -add_delay -set_input_delay -clock pclk_sdtv_L5 -max $TVP_dmax $critinputs -add_delay +set_input_delay -clock pclk_sdtv -min $TVP_dmin $critinputs -add_delay +set_input_delay -clock pclk_sdtv -max $TVP_dmax $critinputs -add_delay # output delay constraints (TODO: add vsync) set IT_Tsu 1.0 @@ -58,36 +49,36 @@ set_false_path -to [remove_from_collection [all_outputs] $critoutputs_hdmi] ### CPU/scanconverter clock relations ### -# Set pixel clocks as exclusive clocks -set_clock_groups -exclusive \ --group {pclk_hdtv} \ --group {pclk_sdtv_L2 pclk_2x} \ --group {pclk_sdtv_L3 pclk_3x} \ --group {pclk_sdtv_L4 pclk_4x} \ --group {pclk_sdtv_L5 pclk_5x} +# Set hdtv pixel clock group as exclusive +set_clock_groups -exclusive -group {pclk_hdtv} # Treat CPU clock asynchronous to pixel clocks set_clock_groups -asynchronous -group {clk27} -# Filter out impossible output mux combinations -set clkmuxregs [get_cells {scanconverter:scanconverter_inst|R_out* scanconverter:scanconverter_inst|G_out* scanconverter:scanconverter_inst|B_out* scanconverter:scanconverter_inst|HSYNC_out* scanconverter:scanconverter_inst|VSYNC_out* scanconverter:scanconverter_inst|DE_out* scanconverter:scanconverter_inst|*_pp1* scanconverter:scanconverter_inst|*_pp2*}] -set clkmuxnodes [get_pins {scanconverter_inst|linebuf_*|altsyncram_*|auto_generated|ram_*|portbaddr*}] -set_false_path -from [get_clocks {pclk_sdtv_L2 pclk_sdtv_L3 pclk_sdtv_L4 pclk_sdtv_L5}] -through $clkmuxregs - -# Ignore paths from registers which are updated only at the end of vsync -set_false_path -from [get_cells {scanconverter_inst|H_* scanconverter_inst|V_* scanconverter:scanconverter_inst|lines_*}] - -# Ignore paths from registers which are updated only at the end of hsync -set_false_path -from [get_cells {scanconverter:scanconverter_inst|vcnt_* scanconverter:scanconverter_inst|line_idx scanconverter:scanconverter_inst|line_out_idx* scanconverter:scanconverter_inst|HSYNC_start*}] - -# Ignore paths to registers which do not drive critical logic -set_false_path -to [get_cells {scanconverter:scanconverter_inst|line_out_idx*}] - # Ignore following clock transfers -set_false_path -from [get_clocks pclk_2x] -to [get_clocks pclk_sdtv_L2] -set_false_path -from [get_clocks pclk_3x] -to [get_clocks {pclk_sdtv_L3}] -set_false_path -from [get_clocks pclk_4x] -to [get_clocks {pclk_sdtv_L4}] -set_false_path -from [get_clocks pclk_5x] -to [get_clocks {pclk_sdtv_L5}] +set_false_path -from [get_clocks pclk_2x] -to [get_clocks {pclk_sdtv pclk_3x pclk_4x pclk_5x}] +set_false_path -from [get_clocks pclk_3x] -to [get_clocks {pclk_sdtv pclk_2x pclk_4x pclk_5x}] +set_false_path -from [get_clocks pclk_4x] -to [get_clocks {pclk_sdtv pclk_2x pclk_3x pclk_5x}] +set_false_path -from [get_clocks pclk_5x] -to [get_clocks {pclk_sdtv pclk_2x pclk_3x pclk_4x}] + +# Ignore paths which would result from pclk_act switchover during postprocess chain +set pclk_act_regs [get_cells {scanconverter:scanconverter_inst|R_out* \ + scanconverter:scanconverter_inst|G_out* \ + scanconverter:scanconverter_inst|B_out* \ + scanconverter:scanconverter_inst|HSYNC_out* \ + scanconverter:scanconverter_inst|VSYNC_out* \ + scanconverter:scanconverter_inst|DE_out* \ + scanconverter:scanconverter_inst|*_pp1* \ + scanconverter:scanconverter_inst|*_pp2* \ + scanconverter:scanconverter_inst|*_pp3*}] +set_false_path -from [get_clocks {pclk_sdtv}] -to $pclk_act_regs +set_false_path -from [get_clocks {pclk_sdtv}] -to [get_ports HDMI_TX_*] + +# Ignore paths from registers which are updated only at leading edge of vsync +set_false_path -from [get_cells {scanconverter_inst|H_* scanconverter_inst|V_* scanconverter_inst|X_* scanconverter_inst|FID_1x}] + +# Ignore paths from registers which are updated only at leading edge of hsync +#set_false_path -from [get_cells {scanconverter:scanconverter_inst|line_idx scanconverter:scanconverter_inst|line_out_idx* scanconverter:scanconverter_inst|hmax*}] ### JTAG Signal Constraints ### diff --git a/rtl/ossc.v b/rtl/ossc.v index 00d65da..d5870cb 100644 --- a/rtl/ossc.v +++ b/rtl/ossc.v @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2016 Markus Hiienkari +// Copyright (C) 2015-2017 Markus Hiienkari // // This file is part of Open Source Scan Converter project. // @@ -19,6 +19,7 @@ //`define DEBUG `define VIDEOGEN +`define CPU_RESET_WIDTH 27 //1us module ossc ( input clk27, @@ -57,8 +58,8 @@ wire [7:0] sys_ctrl; wire h_unstable; wire [1:0] pclk_lock; wire [1:0] pll_lock_lost; -wire [31:0] h_info, h_info2, v_info; -wire [10:0] lines_out, tvp_lines; +wire [31:0] h_info, h_info2, v_info, extra_info; +wire [10:0] vmax, vmax_tvp; wire [1:0] fpga_vsyncgen; wire [15:0] ir_code; @@ -77,8 +78,8 @@ wire PCLK_out_videogen; wire DE_out_videogen; -reg [3:0] cpu_reset_ctr; -reg cpu_reset_n = 1'b1; +reg [7:0] cpu_reset_ctr = 0; +reg cpu_reset_n = 1'b0; reg [7:0] R_in_L, G_in_L, B_in_L; reg HSYNC_in_L, VSYNC_in_L, FID_in_L; @@ -89,63 +90,54 @@ reg ir_rx_L, ir_rx_LL, HDMI_TX_INT_N_L, HDMI_TX_INT_N_LL, HDMI_TX_MODE_L, HDMI_T // Latch inputs from TVP7002 (synchronized to PCLK_in) always @(posedge PCLK_in or negedge reset_n) begin - if (!reset_n) - begin - R_in_L <= 8'h00; - G_in_L <= 8'h00; - B_in_L <= 8'h00; - HSYNC_in_L <= 1'b0; - VSYNC_in_L <= 1'b0; - FID_in_L <= 1'b0; - end - else - begin - R_in_L <= R_in; - G_in_L <= G_in; - B_in_L <= B_in; - HSYNC_in_L <= HSYNC_in; - VSYNC_in_L <= VSYNC_in; - FID_in_L <= FID_in; - end + if (!reset_n) begin + R_in_L <= 8'h00; + G_in_L <= 8'h00; + B_in_L <= 8'h00; + HSYNC_in_L <= 1'b0; + VSYNC_in_L <= 1'b0; + FID_in_L <= 1'b0; + end else begin + R_in_L <= R_in; + G_in_L <= G_in; + B_in_L <= B_in; + HSYNC_in_L <= HSYNC_in; + VSYNC_in_L <= VSYNC_in; + FID_in_L <= FID_in; + end end // Insert synchronizers to async inputs (synchronize to CPU clock) always @(posedge clk27 or negedge cpu_reset_n) begin - if (!cpu_reset_n) - begin - btn_L <= 2'b00; - btn_LL <= 2'b00; - ir_rx_L <= 1'b0; - ir_rx_LL <= 1'b0; - HDMI_TX_INT_N_L <= 1'b0; - HDMI_TX_INT_N_LL <= 1'b0; - HDMI_TX_MODE_L <= 1'b0; - HDMI_TX_MODE_LL <= 1'b0; - end - else - begin - btn_L <= btn; - btn_LL <= btn_L; - ir_rx_L <= ir_rx; - ir_rx_LL <= ir_rx_L; - HDMI_TX_INT_N_L <= HDMI_TX_INT_N; - HDMI_TX_INT_N_LL <= HDMI_TX_INT_N_L; - HDMI_TX_MODE_L <= HDMI_TX_MODE; - HDMI_TX_MODE_LL <= HDMI_TX_MODE_L; - end + if (!cpu_reset_n) begin + btn_L <= 2'b00; + btn_LL <= 2'b00; + ir_rx_L <= 1'b0; + ir_rx_LL <= 1'b0; + HDMI_TX_INT_N_L <= 1'b0; + HDMI_TX_INT_N_LL <= 1'b0; + HDMI_TX_MODE_L <= 1'b0; + HDMI_TX_MODE_LL <= 1'b0; + end else begin + btn_L <= btn; + btn_LL <= btn_L; + ir_rx_L <= ir_rx; + ir_rx_LL <= ir_rx_L; + HDMI_TX_INT_N_L <= HDMI_TX_INT_N; + HDMI_TX_INT_N_LL <= HDMI_TX_INT_N_L; + HDMI_TX_MODE_L <= HDMI_TX_MODE; + HDMI_TX_MODE_LL <= HDMI_TX_MODE_L; + end end // CPU reset pulse generation (is this really necessary?) always @(posedge clk27) begin - if (cpu_reset_ctr == 4'b1000) + if (cpu_reset_ctr == `CPU_RESET_WIDTH) cpu_reset_n <= 1'b1; else - begin - cpu_reset_ctr <= cpu_reset_ctr + 1'b1; - cpu_reset_n <= 1'b0; - end + cpu_reset_ctr <= cpu_reset_ctr + 1'b1; end assign reset_n = sys_ctrl[0]; //HDMI_TX_RST_N in v1.2 PCB @@ -197,10 +189,11 @@ sys sys_inst( .i2c_opencores_1_export_spi_miso_pad_i (SD_DAT[0]), .pio_0_sys_ctrl_out_export (sys_ctrl), .pio_1_controls_in_export ({ir_code_cnt, 5'b00000, HDMI_TX_MODE_LL, btn_LL, ir_code}), - .pio_2_horizontal_info_out_export (h_info), - .pio_3_vertical_info_out_export (v_info), - .pio_4_linecount_in_export ({VSYNC_out, 2'b00, tvp_lines, fpga_vsyncgen, 5'h0, lines_out}), - .pio_5_horizontal_info2_out_export (h_info2), + .pio_2_status_in_export ({VSYNC_out, 2'b00, vmax_tvp, fpga_vsyncgen, 5'h0, vmax}), + .pio_3_h_info_out_export (h_info), + .pio_4_h_info2_out_export (h_info2), + .pio_5_v_info_out_export (v_info), + .pio_6_extra_info_out_export (extra_info) ); scanconverter scanconverter_inst ( @@ -216,6 +209,7 @@ scanconverter scanconverter_inst ( .h_info (h_info), .h_info2 (h_info2), .v_info (v_info), + .extra_info (extra_info), .R_out (R_out), .G_out (G_out), .B_out (B_out), @@ -227,8 +221,8 @@ scanconverter scanconverter_inst ( .fpga_vsyncgen (fpga_vsyncgen), .pclk_lock (pclk_lock), .pll_lock_lost (pll_lock_lost), - .lines_out (lines_out), - .tvp_lines (tvp_lines) + .vmax (vmax), + .vmax_tvp (vmax_tvp) ); ir_rcv ir0 ( diff --git a/rtl/scanconverter.v b/rtl/scanconverter.v index 050df46..3cb2549 100644 --- a/rtl/scanconverter.v +++ b/rtl/scanconverter.v @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2016 Markus Hiienkari +// Copyright (C) 2015-2017 Markus Hiienkari // // This file is part of Open Source Scan Converter project. // @@ -22,6 +22,9 @@ `define HI 1'b1 `define LO 1'b0 +`define HSYNC_POL `LO +`define VSYNC_POL `LO + `define V_MULTMODE_1X 3'd0 `define V_MULTMODE_2X 3'd1 `define V_MULTMODE_3X 3'd2 @@ -48,11 +51,8 @@ `define DBLFRAME_THOLD 5 `define FALSE_FIELD (fpga_vsyncgen[`VSYNCGEN_CHOPMID_BIT] & (FID_in == `FID_ODD)) -`define VSYNC_LEADING_EDGE ((prev_vs == `HI) & (VSYNC_in == `LO)) -`define VSYNC_TRAILING_EDGE ((prev_vs == `LO) & (VSYNC_in == `HI)) - -`define HSYNC_LEADING_EDGE ((prev_hs == `HI) & (HSYNC_in == `LO)) -`define HSYNC_TRAILING_EDGE ((prev_hs == `LO) & (HSYNC_in == `HI)) +`define HSYNC_LEADING_EDGE ((HSYNC_in_L == `HI) & (HSYNC_in == `LO)) +`define VSYNC_LEADING_EDGE ((VSYNC_in_L == `HI) & (VSYNC_in == `LO)) module scanconverter ( input reset_n, @@ -67,6 +67,7 @@ module scanconverter ( input [31:0] h_info, input [31:0] h_info2, input [31:0] v_info, + input [31:0] extra_info, output reg [7:0] R_out, output reg [7:0] G_out, output reg [7:0] B_out, @@ -78,90 +79,85 @@ module scanconverter ( output reg [1:0] fpga_vsyncgen, output [1:0] pclk_lock, output [1:0] pll_lock_lost, - output [10:0] lines_out, - output reg [10:0] tvp_lines + output reg [10:0] vmax, + output reg [10:0] vmax_tvp ); +//clock-related signals +wire pclk_act; wire pclk_1x, pclk_2x, pclk_3x, pclk_4x, pclk_5x; +wire pclk_2x_lock, pclk_3x_lock; wire linebuf_rdclock; -wire pclk_act; -wire [2:0] line_id_act; -wire [2:0] col_id_act; +//RGB signals®isters: 8 bits per component -> 16.7M colors +wire [7:0] R_act, G_act, B_act; +wire [7:0] R_lbuf, G_lbuf, B_lbuf; +reg [7:0] R_in_L, G_in_L, B_in_L, R_in_LL, G_in_LL, B_in_LL, R_1x, G_1x, B_1x, R_pp3, G_pp3, B_pp3; -wire pclk_2x_lock, pclk_3x_lock; +//H+V syncs + data enable signals®isters +wire HSYNC_act, VSYNC_act, DE_act; +reg HSYNC_in_L, VSYNC_in_L; +reg HSYNC_1x, HSYNC_2x, HSYNC_3x, HSYNC_4x, HSYNC_5x, HSYNC_pp1, HSYNC_pp2, HSYNC_pp3; +reg VSYNC_1x, VSYNC_2x, VSYNC_3x, VSYNC_4x, VSYNC_5x, VSYNC_pp1, VSYNC_pp2, VSYNC_pp3; +reg DE_1x, DE_2x, DE_3x, DE_4x, DE_5x, DE_pp1, DE_pp2, DE_pp3, DE_3x_prev4x; -wire HSYNC_act, VSYNC_act; -reg HSYNC_1x, HSYNC_2x, HSYNC_3x, HSYNC_4x, HSYNC_5x, HSYNC_pp1, HSYNC_pp2; -reg VSYNC_1x, VSYNC_2x, VSYNC_pp1, VSYNC_pp2; - -reg [11:0] HSYNC_start; - -reg FID_1x, FID_prev; - -wire DE_act; -reg DE_pp1, DE_pp2; +//registers indicating line/frame change and field type +reg FID_cur, FID_prev, FID_1x; +reg frame_change, line_change; +//H+V counters wire [11:0] linebuf_hoffset; //Offset for line (max. 2047 pixels), MSB indicates which line is read/written wire [11:0] hcnt_act; reg [11:0] hcnt_1x, hcnt_2x, hcnt_3x, hcnt_4x, hcnt_5x, hcnt_4x_aspfix, hcnt_2x_opt, hcnt_3x_opt, hcnt_4x_opt, hcnt_5x_opt, hcnt_5x_hscomp; - reg [2:0] hcnt_2x_opt_ctr, hcnt_3x_opt_ctr, hcnt_4x_opt_ctr, hcnt_5x_opt_ctr; - wire [10:0] vcnt_act; -reg [10:0] vcnt_1x, vcnt_1x_tvp, vcnt_2x, vcnt_4x, vcnt_5x, vcnt_2x_ref, vcnt_3x_ref, vcnt_4x_ref, vcnt_5x_ref, lines_1x, lines_2x, lines_4x, lines_5x; //max. 2047 -reg [9:0] vcnt_3x, lines_3x; //max. 1023 +reg [10:0] vcnt_tvp, vcnt_1x, vcnt_2x, vcnt_3x, vcnt_4x, vcnt_5x; //max. 2047 -reg DE_3x_prev4x; - -reg pclk_1x_prev3x; -reg [1:0] pclk_3x_cnt; - -reg pclk_1x_prev4x; -reg [1:0] pclk_4x_cnt; - -reg pclk_1x_prev5x; -reg pclk_1x_prevprev5x; -reg [2:0] pclk_5x_cnt; - -// Data enable -reg DE_1x, DE_2x, DE_3x, DE_4x, DE_5x; - -reg prev_hs, prev_vs; +//other counters +wire [2:0] line_id_act, col_id_act; +reg [2:0] line_id_pp1, line_id_pp2, col_id_pp1, col_id_pp2; reg [11:0] hmax[0:1]; reg line_idx; reg [1:0] line_out_idx_2x, line_out_idx_3x, line_out_idx_4x; reg [2:0] line_out_idx_5x; - reg [23:0] warn_h_unstable, warn_pll_lock_lost, warn_pll_lock_lost_3x; +reg mask_enable_pp1, mask_enable_pp2, mask_enable_pp3; +//helper registers for sampling at synchronized clock edges +reg pclk_1x_prev3x; +reg [1:0] pclk_3x_cnt; +reg pclk_1x_prev4x; +reg [1:0] pclk_4x_cnt; +reg pclk_1x_prev5x; +reg pclk_1x_prevprev5x; +reg [2:0] pclk_5x_cnt; + +//configuration registers reg [10:0] H_ACTIVE; //max. 2047 reg [8:0] H_BACKPORCH; //max. 511 reg [10:0] V_ACTIVE; //max. 2047 reg [5:0] V_BACKPORCH; //max. 63 +reg [7:0] H_SYNCLEN; +reg [2:0] V_SYNCLEN; reg [1:0] V_SCANLINEMODE; reg [4:0] V_SCANLINEID; -reg [7:0] H_SCANLINESTR; reg [5:0] V_MASK; reg [2:0] V_MULTMODE; reg [1:0] H_MULTMODE; reg [9:0] H_MASK; -reg [3:0] H_MASK_BR; reg [9:0] H_OPT_STARTOFF; reg [2:0] H_OPT_SCALE; reg [2:0] H_OPT_SAMPLE_MULT; reg [2:0] H_OPT_SAMPLE_SEL; reg [9:0] H_L5BORDER; +reg [3:0] X_MASK_BR; +reg [7:0] X_SCANLINESTR; -// clk27 related registers -reg VSYNC_in_L, VSYNC_in_LL, VSYNC_in_LLL; +//clk27 related registers +reg VSYNC_in_cc_L, VSYNC_in_cc_LL, VSYNC_in_cc_LLL; reg [21:0] clk27_ctr; // min. 6.5Hz reg [2:0] dbl_frame_ctr; -//8 bits per component -> 16.7M colors -reg [7:0] R_1x, G_1x, B_1x, R_2x, G_2x, B_2x, R_3x, G_3x, B_3x, R_4x, G_4x, B_4x, R_5x, G_5x, B_5x, R_pp1, G_pp1, B_pp1; -wire [7:0] R_lbuf, G_lbuf, B_lbuf; -wire [7:0] R_act, G_act, B_act; assign pclk_1x = PCLK_in; assign PCLK_out = pclk_act; @@ -193,14 +189,8 @@ function [7:0] apply_mask; input enable; input [7:0] data; input [3:0] brightness; - input [11:0] hoffset; - input [11:0] hstart; - input [11:0] hend; - input [10:0] voffset; - input [10:0] vstart; - input [10:0] vend; begin - if (enable & ((hoffset < hstart) | (hoffset >= hend) | (voffset < vstart) | (voffset >= vend))) + if (enable) apply_mask = {brightness, 4'h0}; else apply_mask = data; @@ -220,96 +210,86 @@ case (V_MULTMODE) R_act = R_1x; G_act = G_1x; B_act = B_1x; - DE_act = DE_1x; HSYNC_act = HSYNC_1x; VSYNC_act = VSYNC_1x; - lines_out = lines_1x; - linebuf_rdclock = 0; - linebuf_hoffset = 0; - pclk_act = pclk_1x; + DE_act = DE_1x; line_id_act = {2'b00, vcnt_1x[0]}; - col_id_act = {2'b00, hcnt_1x[0]}; hcnt_act = hcnt_1x; vcnt_act = vcnt_1x; + pclk_act = pclk_1x; + linebuf_rdclock = 0; + linebuf_hoffset = 0; + col_id_act = {2'b00, hcnt_1x[0]}; end `V_MULTMODE_2X: begin - R_act = R_2x; - G_act = G_2x; - B_act = B_2x; - DE_act = DE_2x; + R_act = R_lbuf; + G_act = G_lbuf; + B_act = B_lbuf; HSYNC_act = HSYNC_2x; VSYNC_act = VSYNC_2x; - lines_out = lines_2x; + DE_act = DE_2x; + line_id_act = {1'b0, line_out_idx_2x[1], line_out_idx_2x[0]^FID_1x}; + hcnt_act = hcnt_2x; + vcnt_act = vcnt_2x; linebuf_rdclock = pclk_2x; case (H_MULTMODE) default: begin //`H_MULTMODE_FULLWIDTH - linebuf_hoffset = hcnt_2x; pclk_act = pclk_2x; + linebuf_hoffset = hcnt_2x; col_id_act = {2'b00, hcnt_2x[0]}; end `H_MULTMODE_OPTIMIZED: begin - linebuf_hoffset = hcnt_2x_opt; pclk_act = pclk_1x; + linebuf_hoffset = hcnt_2x_opt; col_id_act = {2'b00, hcnt_2x[1]};; end endcase - line_id_act = {1'b0, line_out_idx_2x[1], line_out_idx_2x[0]^FID_1x}; - hcnt_act = hcnt_2x; - vcnt_act = vcnt_2x_ref; end `V_MULTMODE_3X: begin + R_act = R_lbuf; + G_act = G_lbuf; + B_act = B_lbuf; HSYNC_act = HSYNC_3x; - VSYNC_act = VSYNC_1x; + VSYNC_act = VSYNC_3x; DE_act = DE_3x; - lines_out = {1'b0, lines_3x}; line_id_act = {1'b0, line_out_idx_3x}; - vcnt_act = vcnt_3x_ref; + vcnt_act = vcnt_3x; case (H_MULTMODE) default: begin //`H_MULTMODE_FULLWIDTH - R_act = R_3x; - G_act = G_3x; - B_act = B_3x; + pclk_act = pclk_3x; linebuf_rdclock = pclk_3x; linebuf_hoffset = hcnt_3x; - pclk_act = pclk_3x; hcnt_act = hcnt_3x; col_id_act = {2'b00, hcnt_3x[0]}; end `H_MULTMODE_ASPECTFIX: begin - R_act = R_4x; - G_act = G_4x; - B_act = B_4x; + pclk_act = pclk_4x; linebuf_rdclock = pclk_4x; linebuf_hoffset = hcnt_4x_aspfix; - pclk_act = pclk_4x; hcnt_act = hcnt_4x_aspfix; col_id_act = {2'b00, hcnt_4x[0]}; end `H_MULTMODE_OPTIMIZED: begin - R_act = R_3x; - G_act = G_3x; - B_act = B_3x; + pclk_act = pclk_3x; linebuf_rdclock = pclk_3x; linebuf_hoffset = hcnt_3x_opt; - pclk_act = pclk_3x; hcnt_act = hcnt_3x; col_id_act = hcnt_3x_opt_ctr; end endcase end `V_MULTMODE_4X: begin - R_act = R_4x; - G_act = G_4x; - B_act = B_4x; + R_act = R_lbuf; + G_act = G_lbuf; + B_act = B_lbuf; HSYNC_act = HSYNC_4x; - VSYNC_act = VSYNC_1x; + VSYNC_act = VSYNC_4x; DE_act = DE_4x; - lines_out = lines_4x; line_id_act = {1'b0, line_out_idx_4x}; - vcnt_act = vcnt_4x_ref; - linebuf_rdclock = pclk_4x; - pclk_act = pclk_4x; hcnt_act = hcnt_4x; + vcnt_act = vcnt_4x; + pclk_act = pclk_4x; + linebuf_rdclock = pclk_4x; case (H_MULTMODE) default: begin //`H_MULTMODE_FULLWIDTH linebuf_hoffset = hcnt_4x; @@ -322,18 +302,17 @@ case (V_MULTMODE) endcase end `V_MULTMODE_5X: begin - R_act = R_5x; - G_act = G_5x; - B_act = B_5x; + R_act = R_lbuf; + G_act = G_lbuf; + B_act = B_lbuf; HSYNC_act = HSYNC_5x; - VSYNC_act = VSYNC_1x; + VSYNC_act = VSYNC_5x; DE_act = DE_5x; - lines_out = lines_5x; line_id_act = {2'b00, line_out_idx_5x}; - vcnt_act = vcnt_5x_ref; - linebuf_rdclock = pclk_5x; - pclk_act = pclk_5x; hcnt_act = hcnt_5x; + vcnt_act = vcnt_5x; + pclk_act = pclk_5x; + linebuf_rdclock = pclk_5x; case (H_MULTMODE) default: begin //`H_MULTMODE_FULLWIDTH linebuf_hoffset = hcnt_5x_hscomp; @@ -366,77 +345,71 @@ pll_3x pll_linetriple ( //TODO: add secondary buffers for interlaced signals with alternative field order linebuf linebuf_rgb ( - .data ( {R_1x, G_1x, B_1x} ), - .rdaddress ( linebuf_hoffset + (~line_idx << 10) ), + .data({R_in_L, G_in_L, B_in_L}), + .rdaddress ( linebuf_hoffset + (~line_idx << 11) ), .rdclock ( linebuf_rdclock ), - .wraddress ( hcnt_1x + (line_idx << 10) ), + .wraddress(hcnt_1x + (line_idx << 11)), .wrclock ( pclk_1x ), .wren ( 1'b1 ), .q ( {R_lbuf, G_lbuf, B_lbuf} ) ); //Postprocess pipeline -always @(posedge pclk_act or negedge reset_n) +// h_cnt, v_cnt, line_id, col_id: 0 +// HSYNC, VSYNC, DE: 1 +// RGB: 2 +always @(posedge pclk_act) begin - if (!reset_n) - begin - R_pp1 <= 8'h00; - G_pp1 <= 8'h00; - B_pp1 <= 8'h00; - HSYNC_pp1 <= 1'b0; - VSYNC_pp1 <= 1'b0; - DE_pp1 <= 1'b0; - R_out <= 8'h00; - G_out <= 8'h00; - B_out <= 8'h00; - HSYNC_out <= 1'b0; - VSYNC_out <= 1'b0; - DE_out <= 1'b0; - end - else - begin - R_pp1 <= apply_scanlines(V_SCANLINEMODE, R_act, H_SCANLINESTR, V_SCANLINEID, line_id_act, col_id_act, FID_1x); - G_pp1 <= apply_scanlines(V_SCANLINEMODE, G_act, H_SCANLINESTR, V_SCANLINEID, line_id_act, col_id_act, FID_1x); - B_pp1 <= apply_scanlines(V_SCANLINEMODE, B_act, H_SCANLINESTR, V_SCANLINEID, line_id_act, col_id_act, FID_1x); - HSYNC_pp1 <= HSYNC_act; - VSYNC_pp1 <= VSYNC_act; - DE_pp1 <= DE_act; - - R_out <= apply_mask(1, R_pp1, H_MASK_BR, hcnt_act, H_BACKPORCH+H_MASK+2'h2, H_BACKPORCH+H_ACTIVE-H_MASK+2'h2, vcnt_act, V_BACKPORCH+V_MASK, V_BACKPORCH+V_ACTIVE-V_MASK); - G_out <= apply_mask(1, G_pp1, H_MASK_BR, hcnt_act, H_BACKPORCH+H_MASK+2'h2, H_BACKPORCH+H_ACTIVE-H_MASK+2'h2, vcnt_act, V_BACKPORCH+V_MASK, V_BACKPORCH+V_ACTIVE-V_MASK); - B_out <= apply_mask(1, B_pp1, H_MASK_BR, hcnt_act, H_BACKPORCH+H_MASK+2'h2, H_BACKPORCH+H_ACTIVE-H_MASK+2'h2, vcnt_act, V_BACKPORCH+V_MASK, V_BACKPORCH+V_ACTIVE-V_MASK); - HSYNC_out <= HSYNC_pp1; - VSYNC_out <= VSYNC_pp1; - DE_out <= DE_pp1; - end + line_id_pp1 <= line_id_act; + col_id_pp1 <= col_id_act; + mask_enable_pp1 <= ((hcnt_act < H_SYNCLEN+H_BACKPORCH+H_MASK) | (hcnt_act >= H_SYNCLEN+H_BACKPORCH+H_ACTIVE-H_MASK) | (vcnt_act < V_SYNCLEN+V_BACKPORCH+V_MASK) | (vcnt_act >= V_SYNCLEN+V_BACKPORCH+V_ACTIVE-V_MASK)); + + HSYNC_pp2 <= HSYNC_act; + VSYNC_pp2 <= VSYNC_act; + DE_pp2 <= DE_act; + line_id_pp2 <= line_id_pp1; + col_id_pp2 <= col_id_pp1; + mask_enable_pp2 <= mask_enable_pp1; + + R_pp3 <= apply_scanlines(V_SCANLINEMODE, R_act, X_SCANLINESTR, V_SCANLINEID, line_id_pp2, col_id_pp2, FID_1x); + G_pp3 <= apply_scanlines(V_SCANLINEMODE, G_act, X_SCANLINESTR, V_SCANLINEID, line_id_pp2, col_id_pp2, FID_1x); + B_pp3 <= apply_scanlines(V_SCANLINEMODE, B_act, X_SCANLINESTR, V_SCANLINEID, line_id_pp2, col_id_pp2, FID_1x); + HSYNC_pp3 <= HSYNC_pp2; + VSYNC_pp3 <= VSYNC_pp2; + DE_pp3 <= DE_pp2; + mask_enable_pp3 <= mask_enable_pp2; + + R_out <= apply_mask(mask_enable_pp3, R_pp3, X_MASK_BR); + G_out <= apply_mask(mask_enable_pp3, G_pp3, X_MASK_BR); + B_out <= apply_mask(mask_enable_pp3, B_pp3, X_MASK_BR); + HSYNC_out <= HSYNC_pp3; + VSYNC_out <= VSYNC_pp3; + DE_out <= DE_pp3; end //Generate a warning signal from horizontal instability or PLL sync loss always @(posedge pclk_1x or negedge reset_n) begin - if (!reset_n) - begin - warn_h_unstable <= 1'b0; - warn_pll_lock_lost <= 1'b0; - warn_pll_lock_lost_3x <= 1'b0; - end - else - begin - if (hmax[0] != hmax[1]) - warn_h_unstable <= 1; - else if (warn_h_unstable != 0) - warn_h_unstable <= warn_h_unstable + 1'b1; - - if (((V_MULTMODE == `V_MULTMODE_2X) | (V_MULTMODE == `V_MULTMODE_5X)) & ~pclk_2x_lock) - warn_pll_lock_lost <= 1; - else if (warn_pll_lock_lost != 0) - warn_pll_lock_lost <= warn_pll_lock_lost + 1'b1; - - if (((V_MULTMODE == `V_MULTMODE_3X) | (V_MULTMODE == `V_MULTMODE_4X)) & ~pclk_3x_lock) - warn_pll_lock_lost_3x <= 1; - else if (warn_pll_lock_lost_3x != 0) - warn_pll_lock_lost_3x <= warn_pll_lock_lost_3x + 1'b1; - end + if (!reset_n) begin + warn_h_unstable <= 1'b0; + warn_pll_lock_lost <= 1'b0; + warn_pll_lock_lost_3x <= 1'b0; + end else begin + if (hmax[0] != hmax[1]) + warn_h_unstable <= 1; + else if (warn_h_unstable != 0) + warn_h_unstable <= warn_h_unstable + 1'b1; + + if (((V_MULTMODE == `V_MULTMODE_2X) | (V_MULTMODE == `V_MULTMODE_5X)) & ~pclk_2x_lock) + warn_pll_lock_lost <= 1; + else if (warn_pll_lock_lost != 0) + warn_pll_lock_lost <= warn_pll_lock_lost + 1'b1; + + if (((V_MULTMODE == `V_MULTMODE_3X) | (V_MULTMODE == `V_MULTMODE_4X)) & ~pclk_3x_lock) + warn_pll_lock_lost_3x <= 1; + else if (warn_pll_lock_lost_3x != 0) + warn_pll_lock_lost_3x <= warn_pll_lock_lost_3x + 1'b1; + end end assign h_unstable = (warn_h_unstable != 0); @@ -447,13 +420,13 @@ always @(posedge clk27 or negedge reset_n) begin if (!reset_n) begin fpga_vsyncgen[`VSYNCGEN_GENMID_BIT] <= 1'b0; - VSYNC_in_L <= 1'b0; - VSYNC_in_LL <= 1'b0; - VSYNC_in_LLL <= 1'b0; + VSYNC_in_cc_L <= 1'b0; + VSYNC_in_cc_LL <= 1'b0; + VSYNC_in_cc_LLL <= 1'b0; clk27_ctr <= 0; dbl_frame_ctr <= 0; end else begin - if ((VSYNC_in_LLL == `HI) && (VSYNC_in_LL == `LO)) begin + if ((VSYNC_in_cc_LLL == `HI) && (VSYNC_in_cc_LL == `LO)) begin // If calculated refresh rate is between 22Hz and 44Hz, assume TVP7002 has skipped a vsync if ((clk27_ctr >= (27000000/44)) && (clk27_ctr <= (27000000/22)) && (dbl_frame_ctr < `DBLFRAME_THOLD)) dbl_frame_ctr <= dbl_frame_ctr + 1'b1; @@ -470,331 +443,244 @@ begin else if (dbl_frame_ctr == `DBLFRAME_THOLD) fpga_vsyncgen[`VSYNCGEN_GENMID_BIT] <= 1'b1; - VSYNC_in_L <= VSYNC_in; - VSYNC_in_LL <= VSYNC_in_L; - VSYNC_in_LLL <= VSYNC_in_LL; + VSYNC_in_cc_L <= VSYNC_in; + VSYNC_in_cc_LL <= VSYNC_in_cc_L; + VSYNC_in_cc_LLL <= VSYNC_in_cc_LL; end end //Buffer the inputs using input pixel clock and generate 1x signals always @(posedge pclk_1x or negedge reset_n) begin - if (!reset_n) - begin + if (!reset_n) begin + hcnt_1x <= 0; + vcnt_1x <= 0; + vcnt_tvp <= 0; + hmax[0] <= 0; + hmax[1] <= 0; + vmax <= 0; + vmax_tvp <= 0; + line_idx <= 0; + FID_cur <= 1'b0; + line_change <= 1'b0; + frame_change <= 1'b0; + fpga_vsyncgen[`VSYNCGEN_CHOPMID_BIT] <= 1'b0; + H_MULTMODE <= 0; + V_MULTMODE <= 0; + end else begin + if (`HSYNC_LEADING_EDGE) begin hcnt_1x <= 0; - hmax[0] <= 0; - hmax[1] <= 0; - line_idx <= 0; - vcnt_1x <= 0; - vcnt_1x_tvp <= 0; - FID_prev <= 0; - fpga_vsyncgen[`VSYNCGEN_CHOPMID_BIT] <= 1'b0; - lines_1x <= 0; - H_MULTMODE <= 0; - V_MULTMODE <= 0; - H_ACTIVE <= 0; - H_BACKPORCH <= 0; - H_MASK <= 0; - V_ACTIVE <= 0; - V_BACKPORCH <= 0; - V_MASK <= 0; - V_SCANLINEMODE <= 0; - V_SCANLINEID <= 0; - H_SCANLINESTR <= 0; - H_OPT_STARTOFF <= 0; - H_OPT_SAMPLE_MULT <= 0; - H_OPT_SAMPLE_SEL <= 0; - H_OPT_SCALE <= 0; - H_L5BORDER <= 0; - H_MASK_BR <= 0; - prev_hs <= 0; - prev_vs <= 0; - HSYNC_start <= 0; - R_1x <= 8'h00; - G_1x <= 8'h00; - B_1x <= 8'h00; - HSYNC_1x <= 0; - VSYNC_1x <= 0; - DE_1x <= 0; - FID_1x <= 0; + hmax[line_idx] <= hcnt_1x; + line_idx <= line_idx ^ 1'b1; + line_change <= 1'b1; + end else begin + hcnt_1x <= hcnt_1x + 1'b1; + line_change <= 1'b0; end - else - begin - if (`HSYNC_TRAILING_EDGE) - begin - hcnt_1x <= 0; - hmax[line_idx] <= hcnt_1x; - line_idx <= line_idx ^ 1'b1; - vcnt_1x <= vcnt_1x + 1'b1; - vcnt_1x_tvp <= vcnt_1x_tvp + 1'b1; - FID_1x <= fpga_vsyncgen[`VSYNCGEN_CHOPMID_BIT] ? 1'b0 : (fpga_vsyncgen[`VSYNCGEN_GENMID_BIT] ? (vcnt_1x > (V_BACKPORCH + V_ACTIVE)) : FID_in); - end - else - begin - hcnt_1x <= hcnt_1x + 1'b1; - end - if (`VSYNC_TRAILING_EDGE) //should be checked at every pclk_1x? - begin - vcnt_1x_tvp <= 0; - tvp_lines <= vcnt_1x_tvp; - FID_prev <= FID_in; - - // detect non-interlaced signal with odd-odd field signaling (TVP7002 detects it as interlaced with analog sync inputs). - // FID is updated at leading edge of VSYNC, so trailing edge has the status of current field. - if (FID_in == FID_prev) - fpga_vsyncgen[`VSYNCGEN_CHOPMID_BIT] <= `FALSE; - else if (FID_in == `FID_ODD) // TVP7002 falsely indicates field change with (vcnt < active_lines) - fpga_vsyncgen[`VSYNCGEN_CHOPMID_BIT] <= (vcnt_1x_tvp < `MIN_VALID_LINES); + if (`HSYNC_LEADING_EDGE) begin + if (`VSYNC_LEADING_EDGE) begin // non-interlace frame or even field (interlace) start + FID_cur <= 1'b0; + vcnt_1x <= 0; + frame_change <= 1'b1; + vmax <= vcnt_1x; + vcnt_tvp <= 0; + vmax_tvp <= vcnt_tvp; + end else begin + vcnt_1x <= vcnt_1x + 1'b1; + vcnt_tvp <= vcnt_tvp + 1'b1; + end + end else if (`VSYNC_LEADING_EDGE) begin // odd field (interlace) start + if (!`FALSE_FIELD) begin + FID_cur <= 1'b1; + vcnt_1x <= -1; + frame_change <= 1'b1; + vmax <= vcnt_1x; + end + vcnt_tvp <= 0; + vmax_tvp <= vcnt_tvp; + end else if ((fpga_vsyncgen[`VSYNCGEN_GENMID_BIT]) && (vcnt_tvp == (vmax_tvp>>1)) && (hcnt_1x == (hmax[~line_idx]>>1))) begin //VSM=1 + FID_cur <= 1'b1; + vcnt_1x <= -1; + frame_change <= 1'b1; + vmax <= vcnt_1x; + end else + frame_change <= 1'b0; - if (!(`FALSE_FIELD)) - begin - vcnt_1x <= 0; - lines_1x <= vcnt_1x; - end - - //Read configuration data from CPU - H_MULTMODE <= h_info[31:30]; // Horizontal scaling mode - V_MULTMODE <= v_info[26:24]; // Line multiply mode + if (`VSYNC_LEADING_EDGE) begin + FID_prev <= FID_in; + // detect non-interlaced signal with odd-odd field signaling (TVP7002 detects it as interlaced with analog sync inputs). + // FID is updated at leading edge of VSYNC + if (FID_in == FID_prev) + fpga_vsyncgen[`VSYNCGEN_CHOPMID_BIT] <= `FALSE; + else if (FID_in == `FID_ODD) // TVP7002 falsely indicates field change with (vcnt < active_lines) + fpga_vsyncgen[`VSYNCGEN_CHOPMID_BIT] <= (vcnt_tvp < `MIN_VALID_LINES); + end - H_ACTIVE <= h_info[19:9]; // Horizontal active length from by the CPU - 11bits (0...2047) - H_BACKPORCH <= h_info[7:0]; // Horizontal backporch length from by the CPU - 8bits (0...255) - H_MASK <= h_info[29:20]; - V_ACTIVE <= v_info[17:7]; // Vertical active length from by the CPU, 11bits (0...2047) - V_BACKPORCH <= v_info[5:0]; // Vertical backporch length from by the CPU, 6bits (0...64) - V_MASK <= v_info[23:18]; - - H_SCANLINESTR <= ((h_info2[22:19]+8'h01)<<4)-1'b1; - V_SCANLINEMODE <= v_info[31:30]; - case (v_info[26:24]) - `V_MULTMODE_1X, `V_MULTMODE_2X: V_SCANLINEID <= (5'b00001 << v_info[28]); - `V_MULTMODE_3X: V_SCANLINEID <= (5'b00001 << {v_info[28], 1'b0}); - `V_MULTMODE_4X: V_SCANLINEID <= (5'b00011 << {v_info[28], 1'b0}); - `V_MULTMODE_5X: V_SCANLINEID <= (5'b00011 << {2{v_info[28]}}); - endcase - - H_OPT_STARTOFF <= h_info2[9:0]; - H_OPT_SAMPLE_MULT <= h_info2[12:10]; - H_OPT_SAMPLE_SEL <= h_info2[15:13]; - H_OPT_SCALE <= h_info2[18:16]; - H_MASK_BR <= h_info2[26:23]; - H_L5BORDER <= h_info2[27] ? (1920-h_info[19:9])/2 : (1600-h_info[19:9])/2; - end - - prev_hs <= HSYNC_in; - prev_vs <= VSYNC_in; + if (frame_change) begin + //Read configuration data from CPU + H_MULTMODE <= h_info[31:30]; // Horizontal scaling mode + V_MULTMODE <= v_info[31:29]; // Line multiply mode - // record start position of HSYNC - if (`HSYNC_LEADING_EDGE) - HSYNC_start <= hcnt_1x; + H_SYNCLEN <= h_info[27:20]; + H_BACKPORCH <= h_info[19:11]; // Horizontal backporch length from by the CPU - 9bits (0...511) + H_ACTIVE <= h_info[10:0]; // Horizontal active length from by the CPU - 11bits (0...2047) - R_1x <= R_in; - G_1x <= G_in; - B_1x <= B_in; - HSYNC_1x <= HSYNC_in; + V_SYNCLEN <= v_info[19:17]; + V_BACKPORCH <= v_info[16:11]; // Vertical backporch length from by the CPU, 6bits (0...64) + V_ACTIVE <= v_info[10:0]; // Vertical active length from by the CPU, 11bits (0...2047) - // Ignore possible invalid vsyncs generated by TVP7002 - if (vcnt_1x > V_ACTIVE) - VSYNC_1x <= VSYNC_in; + H_MASK <= h_info2[28:19]; + V_MASK <= v_info[25:20]; - DE_1x <= ((hcnt_1x >= H_BACKPORCH) & (hcnt_1x < H_BACKPORCH + H_ACTIVE)) & ((vcnt_1x >= V_BACKPORCH) & (vcnt_1x < V_BACKPORCH + V_ACTIVE)); + V_SCANLINEMODE <= v_info[28:27]; + case (v_info[31:29]) + `V_MULTMODE_1X, `V_MULTMODE_2X: V_SCANLINEID <= (5'b00001 << v_info[26]); + `V_MULTMODE_3X: V_SCANLINEID <= (5'b00001 << {v_info[26], 1'b0}); + `V_MULTMODE_4X: V_SCANLINEID <= (5'b00011 << {v_info[26], 1'b0}); + `V_MULTMODE_5X: V_SCANLINEID <= (5'b00011 << {2{v_info[26]}}); + endcase + + H_L5BORDER <= h_info[29] ? (11'd1920-h_info[10:0])/2 : (11'd1600-h_info[10:0])/2; + + H_OPT_SCALE <= h_info2[18:16]; + H_OPT_SAMPLE_SEL <= h_info2[15:13]; + H_OPT_SAMPLE_MULT <= h_info2[12:10]; + H_OPT_STARTOFF <= h_info2[9:0]; + + X_MASK_BR <= extra_info[7:4]; + X_SCANLINESTR <= ((extra_info[3:0]+8'h01)<<4)-1'b1; end + + R_in_L <= R_in; + G_in_L <= G_in; + B_in_L <= B_in; + HSYNC_in_L <= HSYNC_in; + VSYNC_in_L <= VSYNC_in; + + // Add one delay stage to match linebuf delay + R_in_LL <= R_in_L; + G_in_LL <= G_in_L; + B_in_LL <= B_in_L; + + R_1x <= R_in_LL; + G_1x <= G_in_LL; + B_1x <= B_in_LL; + HSYNC_1x <= (hcnt_1x < H_SYNCLEN) ? `HSYNC_POL : ~`HSYNC_POL; + if (FID_cur == `FID_EVEN) + VSYNC_1x <= (vcnt_1x < V_SYNCLEN) ? `VSYNC_POL : ~`VSYNC_POL; + else + VSYNC_1x <= (((vcnt_1x+1'b1) < V_SYNCLEN) | ((vcnt_1x+1'b1 == V_SYNCLEN) & (hcnt_1x <= (hmax[~line_idx]>>1)))) ? `VSYNC_POL : ~`VSYNC_POL; + DE_1x <= ((hcnt_1x >= H_SYNCLEN+H_BACKPORCH) & (hcnt_1x < H_SYNCLEN+H_BACKPORCH+H_ACTIVE)) & ((vcnt_1x >= V_SYNCLEN+V_BACKPORCH) & (vcnt_1x < V_SYNCLEN+V_BACKPORCH+V_ACTIVE)); + FID_1x <= FID_cur; + end end //Generate 2x signals for linedouble always @(posedge pclk_2x or negedge reset_n) begin - if (!reset_n) - begin + if (!reset_n) begin + hcnt_2x <= 0; + vcnt_2x <= 0; + line_out_idx_2x <= 0; + end else begin + if ((pclk_1x == 1'b0) & (line_change | frame_change)) begin //aligned with posedge of pclk_1x hcnt_2x <= 0; - vcnt_2x <= 0; - vcnt_2x_ref <= 0; - lines_2x <= 0; - R_2x <= 8'h00; - G_2x <= 8'h00; - B_2x <= 8'h00; - HSYNC_2x <= 0; - VSYNC_2x <= 0; - DE_2x <= 0; - line_out_idx_2x <= 0; - hcnt_2x_opt <= 0; + hcnt_2x_opt <= H_OPT_SAMPLE_SEL; hcnt_2x_opt_ctr <= 0; - end - else - begin - if ((pclk_1x == 1'b0) & `HSYNC_TRAILING_EDGE) //aligned with posedge of pclk_1x - begin - hcnt_2x <= 0; - line_out_idx_2x <= 0; - hcnt_2x_opt <= H_OPT_SAMPLE_SEL; + line_out_idx_2x <= 0; + if (frame_change) + vcnt_2x <= -1; + else if (line_change & (FID_cur == `FID_EVEN)) + vcnt_2x <= vcnt_2x + 1'b1; + end else if (hcnt_2x == hmax[~line_idx]) begin + hcnt_2x <= 0; + line_out_idx_2x <= line_out_idx_2x + 1'b1; + hcnt_2x_opt <= H_OPT_SAMPLE_SEL; + hcnt_2x_opt_ctr <= 0; + if (FID_cur == `FID_ODD) + vcnt_2x <= vcnt_2x + 1'b1; + end else begin + hcnt_2x <= hcnt_2x + 1'b1; + if (hcnt_2x >= H_OPT_STARTOFF) begin + if (hcnt_2x_opt_ctr == H_OPT_SCALE-1'b1) begin + hcnt_2x_opt <= hcnt_2x_opt + H_OPT_SAMPLE_MULT; hcnt_2x_opt_ctr <= 0; - end - else if (hcnt_2x == hmax[~line_idx]) - begin - hcnt_2x <= 0; - line_out_idx_2x <= line_out_idx_2x + 1'b1; - hcnt_2x_opt <= H_OPT_SAMPLE_SEL; - hcnt_2x_opt_ctr <= 0; - end - else - begin - hcnt_2x <= hcnt_2x + 1'b1; - if (hcnt_2x >= H_OPT_STARTOFF) - begin - if (hcnt_2x_opt_ctr == H_OPT_SCALE-1'b1) - begin - hcnt_2x_opt <= hcnt_2x_opt + H_OPT_SAMPLE_MULT; - hcnt_2x_opt_ctr <= 0; - end - else - hcnt_2x_opt_ctr <= hcnt_2x_opt_ctr + 1'b1; - end - end - - if ((pclk_1x == 1'b0) & `VSYNC_TRAILING_EDGE & !(`FALSE_FIELD)) //aligned with posedge of pclk_1x - begin - vcnt_2x <= 0; - vcnt_2x_ref <= 0; - if (fpga_vsyncgen[`VSYNCGEN_GENMID_BIT] == 1'b0) - lines_2x <= vcnt_2x; - end - else if (hcnt_2x == hmax[~line_idx]) - begin - if ((fpga_vsyncgen[`VSYNCGEN_GENMID_BIT] == 1'b1) & (vcnt_2x == lines_1x-1)) - begin - vcnt_2x <= 0; - vcnt_2x_ref <= 0; - lines_2x <= lines_1x; - end - else - begin - vcnt_2x <= vcnt_2x + 1'b1; - if (line_out_idx_2x == 1) - vcnt_2x_ref <= vcnt_2x_ref + 1'b1; - end - end - - if (pclk_1x == 1'b0) - begin - if (fpga_vsyncgen[`VSYNCGEN_GENMID_BIT] == 1'b1) - VSYNC_2x <= (vcnt_2x >= lines_1x - `VSYNCGEN_LEN) ? 1'b0 : 1'b1; - else if (vcnt_2x_ref > V_ACTIVE) - VSYNC_2x <= VSYNC_in; - end - - - R_2x <= R_lbuf; - G_2x <= G_lbuf; - B_2x <= B_lbuf; - HSYNC_2x <= ~(hcnt_2x >= HSYNC_start); - DE_2x <= ((hcnt_2x >= H_BACKPORCH) & (hcnt_2x < H_BACKPORCH + H_ACTIVE)) & ((vcnt_2x >= (V_BACKPORCH<<1)) & (vcnt_2x < ((V_BACKPORCH + V_ACTIVE)<<1))); + end else + hcnt_2x_opt_ctr <= hcnt_2x_opt_ctr + 1'b1; + end end + + HSYNC_2x <= (hcnt_2x < H_SYNCLEN) ? `HSYNC_POL : ~`HSYNC_POL; + VSYNC_2x <= (vcnt_2x < V_SYNCLEN) ? `VSYNC_POL : ~`VSYNC_POL; + DE_2x <= ((hcnt_2x >= H_SYNCLEN+H_BACKPORCH) & (hcnt_2x < H_SYNCLEN+H_BACKPORCH+H_ACTIVE)) & ((vcnt_2x >= V_SYNCLEN+V_BACKPORCH) & (vcnt_2x < V_SYNCLEN+V_BACKPORCH+V_ACTIVE)); + end end always @(posedge pclk_3x or negedge reset_n) begin - if (!reset_n) - begin + if (!reset_n) begin + hcnt_3x <= 0; + vcnt_3x <= 0; + line_out_idx_3x <= 0; + end else begin + if ((pclk_3x_cnt == 0) & (line_change | frame_change)) begin //aligned with posedge of pclk_1x + if (!(frame_change & (FID_cur == `FID_ODD))) begin + hcnt_3x <= 0; + hcnt_3x_opt <= H_OPT_SAMPLE_SEL; + hcnt_3x_opt_ctr <= 0; + line_out_idx_3x <= 0; + end + if (frame_change) + vcnt_3x <= -11'b1-FID_cur; + else if (line_change) + vcnt_3x <= vcnt_3x + 1'b1; + end else if (hcnt_3x == hmax[~line_idx]) begin hcnt_3x <= 0; - vcnt_3x <= 0; - vcnt_3x_ref <= 0; - lines_3x <= 0; - R_3x <= 8'h00; - G_3x <= 8'h00; - B_3x <= 8'h00; - HSYNC_3x <= 0; - DE_3x <= 0; - pclk_3x_cnt <= 0; - pclk_1x_prev3x <= 0; - line_out_idx_3x <= 0; - hcnt_3x_opt <= 0; + line_out_idx_3x <= line_out_idx_3x + 1'b1; + hcnt_3x_opt <= H_OPT_SAMPLE_SEL; hcnt_3x_opt_ctr <= 0; + end else begin + hcnt_3x <= hcnt_3x + 1'b1; + if (hcnt_3x >= H_OPT_STARTOFF) begin + if (hcnt_3x_opt_ctr == H_OPT_SCALE-1'b1) begin + hcnt_3x_opt <= hcnt_3x_opt + H_OPT_SAMPLE_MULT; + hcnt_3x_opt_ctr <= 0; + end else + hcnt_3x_opt_ctr <= hcnt_3x_opt_ctr + 1'b1; + end end - else - begin - if ((pclk_3x_cnt == 0) & `HSYNC_TRAILING_EDGE) //aligned with posedge of pclk_1x - begin - hcnt_3x <= 0; - line_out_idx_3x <= 0; - hcnt_3x_opt <= H_OPT_SAMPLE_SEL; - hcnt_3x_opt_ctr <= 0; - end - else if (hcnt_3x == hmax[~line_idx]) - begin - hcnt_3x <= 0; - line_out_idx_3x <= line_out_idx_3x + 1'b1; - hcnt_3x_opt <= H_OPT_SAMPLE_SEL; - hcnt_3x_opt_ctr <= 0; - end - else - begin - hcnt_3x <= hcnt_3x + 1'b1; - if (hcnt_3x >= H_OPT_STARTOFF) - begin - if (hcnt_3x_opt_ctr == H_OPT_SCALE-1'b1) - begin - hcnt_3x_opt <= hcnt_3x_opt + H_OPT_SAMPLE_MULT; - hcnt_3x_opt_ctr <= 0; - end - else - hcnt_3x_opt_ctr <= hcnt_3x_opt_ctr + 1'b1; - end - end - if ((pclk_3x_cnt == 0) & `VSYNC_TRAILING_EDGE & !(`FALSE_FIELD)) //aligned with posedge of pclk_1x - begin - vcnt_3x <= 0; - vcnt_3x_ref <= 0; - lines_3x <= vcnt_3x; - end - else if (hcnt_3x == hmax[~line_idx]) - begin - vcnt_3x <= vcnt_3x + 1'b1; - if (line_out_idx_3x == 2) - vcnt_3x_ref <= vcnt_3x_ref + 1'b1; - end - //track pclk_3x alignment to pclk_1x rising edge (pclk_1x=1 @ 120deg & pclk_1x=0 @ 240deg) if (((pclk_1x_prev3x == 1'b1) & (pclk_1x == 1'b0)) | (pclk_3x_cnt == 2'h2)) pclk_3x_cnt <= 0; else pclk_3x_cnt <= pclk_3x_cnt + 1'b1; - + pclk_1x_prev3x <= pclk_1x; - - R_3x <= R_lbuf; - G_3x <= G_lbuf; - B_3x <= B_lbuf; - HSYNC_3x <= ~(hcnt_3x >= HSYNC_start); - //TODO: VSYNC_3x - DE_3x <= ((hcnt_3x >= H_BACKPORCH) & (hcnt_3x < H_BACKPORCH + H_ACTIVE)) & ((vcnt_3x_ref >= V_BACKPORCH) & (vcnt_3x_ref < V_BACKPORCH + V_ACTIVE)); + HSYNC_3x <= (hcnt_3x < H_SYNCLEN) ? `HSYNC_POL : ~`HSYNC_POL; + if (FID_cur == `FID_EVEN) + VSYNC_3x <= (vcnt_3x < V_SYNCLEN) ? `VSYNC_POL : ~`VSYNC_POL; + else begin + if ((vcnt_3x+1'b1 == 11'd0) & (line_out_idx_3x == 1) & (hcnt_3x == (hmax[~line_idx]>>1)+1'b1)) + VSYNC_3x <= `VSYNC_POL; + else if ((vcnt_3x+1'b1 == V_SYNCLEN) & (line_out_idx_3x == 1) & (hcnt_3x == (hmax[~line_idx]>>1)+1'b1)) + VSYNC_3x <= ~`VSYNC_POL; end + + DE_3x <= ((hcnt_3x >= H_SYNCLEN+H_BACKPORCH) & (hcnt_3x < H_SYNCLEN+H_BACKPORCH+H_ACTIVE)) & ((vcnt_3x >= V_SYNCLEN+V_BACKPORCH) & (vcnt_3x < V_SYNCLEN+V_BACKPORCH+V_ACTIVE)); + end end always @(posedge pclk_4x or negedge reset_n) begin - if (!reset_n) - begin - hcnt_4x_aspfix <= 0; - DE_3x_prev4x <= 0; - hcnt_4x <= 0; - vcnt_4x <= 0; - vcnt_4x_ref <= 0; - lines_4x <= 0; - R_4x <= 8'h00; - G_4x <= 8'h00; - B_4x <= 8'h00; - HSYNC_4x <= 0; - DE_4x <= 0; - pclk_4x_cnt <= 0; - pclk_1x_prev4x <= 0; - line_out_idx_4x <= 0; - hcnt_4x_opt <= 0; - hcnt_4x_opt_ctr <= 0; - end - else - begin + if (!reset_n) begin + hcnt_4x <= 0; + vcnt_4x <= 0; + line_out_idx_4x <= 0; + end else begin + // TODO: better implementation if ((DE_3x == 1) & (DE_3x_prev4x == 0)) hcnt_4x_aspfix <= hcnt_3x - 160; @@ -802,50 +688,34 @@ begin hcnt_4x_aspfix <= hcnt_4x_aspfix + 1'b1; DE_3x_prev4x <= DE_3x; - - - if ((pclk_4x_cnt == 0) & `HSYNC_TRAILING_EDGE) //aligned with posedge of pclk_1x - begin - hcnt_4x <= 0; - line_out_idx_4x <= 0; - hcnt_4x_opt <= H_OPT_SAMPLE_SEL; + + if ((pclk_4x_cnt == 0) & (line_change | frame_change)) begin //aligned with posedge of pclk_1x + hcnt_4x <= 0; + hcnt_4x_opt <= H_OPT_SAMPLE_SEL; + hcnt_4x_opt_ctr <= 0; + line_out_idx_4x <= 0; + if (frame_change) + vcnt_4x <= -1; + else if (line_change & (FID_cur == `FID_EVEN)) + vcnt_4x <= vcnt_4x + 1'b1; + end else if (hcnt_4x == hmax[~line_idx]) begin + hcnt_4x <= 0; + line_out_idx_4x <= line_out_idx_4x + 1'b1; + hcnt_4x_opt <= H_OPT_SAMPLE_SEL; + hcnt_4x_opt_ctr <= 0; + if ((FID_cur == `FID_ODD) && (line_out_idx_4x == 1)) + vcnt_4x <= vcnt_4x + 1'b1; + end else begin + hcnt_4x <= hcnt_4x + 1'b1; + if (hcnt_4x >= H_OPT_STARTOFF) begin + if (hcnt_4x_opt_ctr == H_OPT_SCALE-1'b1) begin + hcnt_4x_opt <= hcnt_4x_opt + H_OPT_SAMPLE_MULT; hcnt_4x_opt_ctr <= 0; - end - else if (hcnt_4x == hmax[~line_idx]) - begin - hcnt_4x <= 0; - line_out_idx_4x <= line_out_idx_4x + 1'b1; - hcnt_4x_opt <= H_OPT_SAMPLE_SEL; - hcnt_4x_opt_ctr <= 0; - end - else - begin - hcnt_4x <= hcnt_4x + 1'b1; - if (hcnt_4x >= H_OPT_STARTOFF) - begin - if (hcnt_4x_opt_ctr == H_OPT_SCALE-1'b1) - begin - hcnt_4x_opt <= hcnt_4x_opt + H_OPT_SAMPLE_MULT; - hcnt_4x_opt_ctr <= 0; - end - else - hcnt_4x_opt_ctr <= hcnt_4x_opt_ctr + 1'b1; - end - end - - if ((pclk_4x_cnt == 0) & `VSYNC_TRAILING_EDGE & !(`FALSE_FIELD)) //aligned with posedge of pclk_1x - begin - vcnt_4x <= 0; - vcnt_4x_ref <= 0; - lines_4x <= vcnt_4x; - end - else if (hcnt_4x == hmax[~line_idx]) - begin - vcnt_4x <= vcnt_4x + 1'b1; - if (line_out_idx_4x == 3) - vcnt_4x_ref <= vcnt_4x_ref + 1'b1; - end - + end else + hcnt_4x_opt_ctr <= hcnt_4x_opt_ctr + 1'b1; + end + end + //track pclk_4x alignment to pclk_1x rising edge (pclk_1x=1 @ 180deg & pclk_1x=0 @ 270deg) if (((pclk_1x_prev4x == 1'b1) & (pclk_1x == 1'b0)) | (pclk_4x_cnt == 2'h3)) pclk_4x_cnt <= 0; @@ -854,81 +724,44 @@ begin pclk_1x_prev4x <= pclk_1x; - - R_4x <= R_lbuf; - G_4x <= G_lbuf; - B_4x <= B_lbuf; - HSYNC_4x <= ~(hcnt_4x >= HSYNC_start); - //TODO: VSYNC_4x - DE_4x <= ((hcnt_4x >= H_BACKPORCH) & (hcnt_4x < H_BACKPORCH + H_ACTIVE)) & ((vcnt_4x_ref >= V_BACKPORCH) & (vcnt_4x_ref < V_BACKPORCH + V_ACTIVE)); - end + HSYNC_4x <= (hcnt_4x < H_SYNCLEN) ? `HSYNC_POL : ~`HSYNC_POL; + VSYNC_4x <= (vcnt_4x < V_SYNCLEN) ? `VSYNC_POL : ~`VSYNC_POL; + DE_4x <= ((hcnt_4x >= H_SYNCLEN+H_BACKPORCH) & (hcnt_4x < H_SYNCLEN+H_BACKPORCH+H_ACTIVE)) & ((vcnt_4x >= V_SYNCLEN+V_BACKPORCH) & (vcnt_4x < V_SYNCLEN+V_BACKPORCH+V_ACTIVE)); + end end always @(posedge pclk_5x or negedge reset_n) begin - if (!reset_n) - begin + if (!reset_n) begin + hcnt_5x <= 0; + vcnt_5x <= 0; + line_out_idx_5x <= 0; + end else begin + if ((pclk_5x_cnt == 0) & (line_change | frame_change)) begin //aligned with posedge of pclk_1x hcnt_5x <= 0; - vcnt_5x <= 0; - vcnt_5x_ref <= 0; - lines_5x <= 0; - R_5x <= 8'h00; - G_5x <= 8'h00; - B_5x <= 8'h00; - HSYNC_5x <= 0; - DE_5x <= 0; - pclk_5x_cnt <= 0; - pclk_1x_prev5x <= 0; - pclk_1x_prevprev5x <= 0; - line_out_idx_5x <= 0; - hcnt_5x_opt <= 0; + hcnt_5x_opt <= H_OPT_SAMPLE_SEL + 11'd120; hcnt_5x_opt_ctr <= 0; - hcnt_5x_hscomp <= 0; + line_out_idx_5x <= 0; + if (frame_change) + vcnt_5x <= -1; + else if (line_change) + vcnt_5x <= vcnt_5x + 1'b1; + end else if (hcnt_5x == hmax[~line_idx]) begin + hcnt_5x <= 0; + line_out_idx_5x <= line_out_idx_5x + 1'b1; + hcnt_5x_opt <= H_OPT_SAMPLE_SEL + 11'd120; + hcnt_5x_opt_ctr <= 0; + end else begin + hcnt_5x <= hcnt_5x + 1'b1; + if (hcnt_5x >= H_OPT_STARTOFF) begin + if (hcnt_5x_opt_ctr == H_OPT_SCALE-1'b1) begin + hcnt_5x_opt <= hcnt_5x_opt + H_OPT_SAMPLE_MULT; + hcnt_5x_opt_ctr <= 0; + end else + hcnt_5x_opt_ctr <= hcnt_5x_opt_ctr + 1'b1; + end end - else - begin - if ((pclk_5x_cnt == 0) & `HSYNC_TRAILING_EDGE) //aligned with posedge of pclk_1x - begin - hcnt_5x <= 0; - line_out_idx_5x <= 0; - hcnt_5x_opt <= 120 + H_OPT_SAMPLE_SEL; - hcnt_5x_opt_ctr <= 0; - end - else if (hcnt_5x == hmax[~line_idx]) - begin - hcnt_5x <= 0; - line_out_idx_5x <= line_out_idx_5x + 1'b1; - hcnt_5x_opt <= 120 + H_OPT_SAMPLE_SEL; - hcnt_5x_opt_ctr <= 0; - end - else - begin - hcnt_5x <= hcnt_5x + 1'b1; - if (hcnt_5x >= H_OPT_STARTOFF) - begin - if (hcnt_5x_opt_ctr == H_OPT_SCALE-1'b1) - begin - hcnt_5x_opt <= hcnt_5x_opt + H_OPT_SAMPLE_MULT; - hcnt_5x_opt_ctr <= 0; - end - else - hcnt_5x_opt_ctr <= hcnt_5x_opt_ctr + 1'b1; - end - end - - if ((pclk_5x_cnt == 0) & `VSYNC_TRAILING_EDGE & !(`FALSE_FIELD)) //aligned with posedge of pclk_1x - begin - vcnt_5x <= 0; - vcnt_5x_ref <= 0; - lines_5x <= vcnt_5x; - end - else if (hcnt_5x == hmax[~line_idx]) - begin - vcnt_5x <= vcnt_5x + 1'b1; - if (line_out_idx_5x == 4) - vcnt_5x_ref <= vcnt_5x_ref + 1'b1; - end - + //track pclk_5x alignment to pclk_1x rising edge (pclk_1x=1 @ 144deg & pclk_1x=0 @ 216deg & pclk_1x=0 @ 288deg) if (((pclk_1x_prevprev5x == 1'b1) & (pclk_1x_prev5x == 1'b0)) | (pclk_5x_cnt == 3'h4)) pclk_5x_cnt <= 0; @@ -938,16 +771,12 @@ begin pclk_1x_prev5x <= pclk_1x; pclk_1x_prevprev5x <= pclk_1x_prev5x; - hcnt_5x_hscomp <= hcnt_5x + 121; - - - R_5x <= R_lbuf; - G_5x <= G_lbuf; - B_5x <= B_lbuf; - HSYNC_5x <= ~(hcnt_5x >= HSYNC_start); - //TODO: VSYNC_5x - DE_5x <= ((hcnt_5x >= H_BACKPORCH - H_L5BORDER) & (hcnt_5x < H_BACKPORCH + H_ACTIVE + H_L5BORDER)) & ((vcnt_5x_ref >= V_BACKPORCH) & (vcnt_5x_ref < V_BACKPORCH + V_ACTIVE)); - end + hcnt_5x_hscomp <= hcnt_5x + 11'd121; + + HSYNC_5x <= (hcnt_5x < H_SYNCLEN) ? `HSYNC_POL : ~`HSYNC_POL; + VSYNC_5x <= (vcnt_5x < V_SYNCLEN) ? `VSYNC_POL : ~`VSYNC_POL; + DE_5x <= ((hcnt_5x >= H_SYNCLEN+H_BACKPORCH-H_L5BORDER) & (hcnt_5x < H_SYNCLEN+H_BACKPORCH+H_ACTIVE+H_L5BORDER)) & ((vcnt_5x >= V_SYNCLEN+V_BACKPORCH) & (vcnt_5x < V_SYNCLEN+V_BACKPORCH+V_ACTIVE)); + end end endmodule diff --git a/rtl/videogen.v b/rtl/videogen.v index 455f4c6..5b82bd8 100644 --- a/rtl/videogen.v +++ b/rtl/videogen.v @@ -1,5 +1,5 @@ // -// Copyright (C) 2015-2016 Markus Hiienkari +// Copyright (C) 2015-2017 Markus Hiienkari // // This file is part of Open Source Scan Converter project. // @@ -72,79 +72,57 @@ reg [7:0] V_gen; //HSYNC gen (negative polarity) always @(posedge clk27 or negedge reset_n) begin - if (!reset_n) - begin + if (!reset_n) begin + h_cnt <= 0; + HSYNC_out <= 0; + end else begin + //Hsync counter + if (h_cnt < H_TOTAL-1) + h_cnt <= h_cnt + 1'b1; + else h_cnt <= 0; - HSYNC_out <= 0; - end - else - begin - //Hsync counter - if (h_cnt < H_TOTAL-1 ) - h_cnt <= h_cnt + 1'b1; - else - h_cnt <= 0; - - //Hsync signal - HSYNC_out <= (h_cnt < H_SYNCLEN) ? 1'b0 : 1'b1; - end + + //Hsync signal + HSYNC_out <= (h_cnt < H_SYNCLEN) ? 1'b0 : 1'b1; + end end //VSYNC gen (negative polarity) always @(posedge clk27 or negedge reset_n) begin - if (!reset_n) - begin - v_cnt <= 0; - VSYNC_out <= 0; - end - else - begin - if (h_cnt == 0) - begin - //Vsync counter - if (v_cnt < V_TOTAL-1 ) - v_cnt <= v_cnt + 1'b1; - else - v_cnt <= 0; - - //Vsync signal - VSYNC_out <= (v_cnt < V_SYNCLEN) ? 1'b0 : 1'b1; - end - end -end - -//Data gen -always @(posedge clk27 or negedge reset_n) -begin - if (!reset_n) - begin - V_gen <= 8'h00; - end - else - begin - if ((h_cnt < X_START+H_OVERSCAN) || (h_cnt >= X_START+H_OVERSCAN+H_AREA) || (v_cnt < Y_START+V_OVERSCAN) || (v_cnt >= Y_START+V_OVERSCAN+V_AREA)) - V_gen <= (h_cnt[0] ^ v_cnt[0]) ? 8'hff : 8'h00; - else if ((h_cnt < X_START+H_OVERSCAN+H_BORDER) || (h_cnt >= X_START+H_OVERSCAN+H_AREA-H_BORDER) || (v_cnt < Y_START+V_OVERSCAN+V_BORDER) || (v_cnt >= Y_START+V_OVERSCAN+V_AREA-V_BORDER)) - V_gen <= 8'h50; + if (!reset_n) begin + v_cnt <= 0; + VSYNC_out <= 0; + end else begin + //Vsync counter + if (h_cnt == H_TOTAL-1) begin + if (v_cnt < V_TOTAL-1) + v_cnt <= v_cnt + 1'b1; else - V_gen <= (h_cnt - (X_START+H_OVERSCAN+H_BORDER)) >> 1; - /*else - V_gen <= 8'h00;*/ + v_cnt <= 0; end + + //Vsync signal + VSYNC_out <= (v_cnt < V_SYNCLEN) ? 1'b0 : 1'b1; + end end -//Enable gen +//Data and ENABLE gen always @(posedge clk27 or negedge reset_n) begin - if (!reset_n) - begin - ENABLE_out <= 1'b0; - end - else - begin - ENABLE_out <= (h_cnt >= X_START && h_cnt < X_START + H_ACTIVE && v_cnt >= Y_START && v_cnt < Y_START + V_ACTIVE); - end + if (!reset_n) begin + V_gen <= 8'h00; + ENABLE_out <= 1'b0; + end else begin + if ((h_cnt < X_START+H_OVERSCAN) || (h_cnt >= X_START+H_OVERSCAN+H_AREA) || (v_cnt < Y_START+V_OVERSCAN) || (v_cnt >= Y_START+V_OVERSCAN+V_AREA)) + V_gen <= (h_cnt[0] ^ v_cnt[0]) ? 8'hff : 8'h00; + else if ((h_cnt < X_START+H_OVERSCAN+H_BORDER) || (h_cnt >= X_START+H_OVERSCAN+H_AREA-H_BORDER) || (v_cnt < Y_START+V_OVERSCAN+V_BORDER) || (v_cnt >= Y_START+V_OVERSCAN+V_AREA-V_BORDER)) + V_gen <= 8'h50; + else + V_gen <= (h_cnt - (X_START+H_OVERSCAN+H_BORDER)) >> 1; + + ENABLE_out <= (h_cnt >= X_START && h_cnt < X_START + H_ACTIVE && v_cnt >= Y_START && v_cnt < Y_START + V_ACTIVE); + end end endmodule diff --git a/software/sys_controller/it6613/HDMI_TX.c b/software/sys_controller/it6613/HDMI_TX.c index f96ced0..0c8098d 100644 --- a/software/sys_controller/it6613/HDMI_TX.c +++ b/software/sys_controller/it6613/HDMI_TX.c @@ -78,19 +78,18 @@ bool HDMITX_HPD(void){ } -void HDMITX_SetAVIInfoFrame(alt_u8 VIC, alt_u8 OutputColorMode, bool b16x9, bool ITU709) +void HDMITX_SetAVIInfoFrame(alt_u8 VIC, bool b16x9, bool ITU709, bool ITC, alt_u8 pixelrep) { - AVI_InfoFrame AviInfo; - alt_u8 pixelrep = 0; - - OS_PRINTF("HDMITX_SetAVIInfoFrame, VIC=%d, ColorMode=%d, Aspect-Ratio=%s, ITU709=%s\n", - VIC, OutputColorMode, b16x9?"16:9":"4:3", ITU709?"Yes":"No"); + AVI_InfoFrame AviInfo; + + OS_PRINTF("HDMITX_SetAVIInfoFrame, VIC=%d, Aspect-Ratio=%s, ITU709=%s, ITC=%s, pixelrep=%u\n", + VIC, b16x9?"16:9":"4:3", ITU709?"Yes":"No", ITC?"Yes":"No", pixelrep); AviInfo.pktbyte.AVI_HB[0] = AVI_INFOFRAME_TYPE|0x80 ; AviInfo.pktbyte.AVI_HB[1] = AVI_INFOFRAME_VER ; AviInfo.pktbyte.AVI_HB[2] = AVI_INFOFRAME_LEN ; - switch(OutputColorMode) + /*switch(OutputColorMode) { case F_MODE_YUV444: // AviInfo.info.ColorMode = 2 ; @@ -105,14 +104,15 @@ void HDMITX_SetAVIInfoFrame(alt_u8 VIC, alt_u8 OutputColorMode, bool b16x9, bool // AviInfo.info.ColorMode = 0 ; AviInfo.pktbyte.AVI_DB[0] = (0<<5)|(1<<4) ; break ; - } + }*/ + AviInfo.pktbyte.AVI_DB[0] = (0<<5)|(1<<4) ; AviInfo.pktbyte.AVI_DB[0] |= 2; // indicate "no overscan" AviInfo.pktbyte.AVI_DB[1] = 8 ; - AviInfo.pktbyte.AVI_DB[1] |= (!b16x9)?(1<<4):(2<<4) ; // 4:3 or 16:9 + //AviInfo.pktbyte.AVI_DB[1] |= (!b16x9)?(1<<4):(2<<4) ; // 4:3 or 16:9 AviInfo.pktbyte.AVI_DB[1] |= (!ITU709)?(1<<6):(2<<6) ; // ITU709 or ITU601 - AviInfo.pktbyte.AVI_DB[2] = (1<<3) ; // indicate "full-range RGB" + AviInfo.pktbyte.AVI_DB[2] = ((1<<3) | (ITC<<7)) ; // indicate "full-range RGB", setup ITC bit AviInfo.pktbyte.AVI_DB[3] = VIC ; - AviInfo.pktbyte.AVI_DB[4] = pixelrep & 3 ; + AviInfo.pktbyte.AVI_DB[4] = pixelrep & 3 ; AviInfo.pktbyte.AVI_DB[5] = 0 ; AviInfo.pktbyte.AVI_DB[6] = 0 ; AviInfo.pktbyte.AVI_DB[7] = 0 ; diff --git a/software/sys_controller/it6613/HDMI_TX.h b/software/sys_controller/it6613/HDMI_TX.h index 061e7e6..464761b 100644 --- a/software/sys_controller/it6613/HDMI_TX.h +++ b/software/sys_controller/it6613/HDMI_TX.h @@ -12,7 +12,7 @@ bool HDMITX_ChipVerify(void); bool HDMITX_HPD(void); void HDMITX_ChangeVideoTiming(int VIC); void HDMITX_ChangeVideoTimingAndColor(int VIC, COLOR_TYPE Color); -void HDMITX_SetAVIInfoFrame(alt_u8 VIC, alt_u8 OutputColorMode, bool b16x9, bool ITU709); +void HDMITX_SetAVIInfoFrame(alt_u8 VIC, bool b16x9, bool ITU709, bool ITC, alt_u8 pixelrep); void HDMITX_DisableVideoOutput(void); void HDMITX_EnableVideoOutput(void); diff --git a/software/sys_controller/it6613/it6613_drv.c b/software/sys_controller/it6613/it6613_drv.c index 1c00e9b..736db30 100644 --- a/software/sys_controller/it6613/it6613_drv.c +++ b/software/sys_controller/it6613/it6613_drv.c @@ -3274,25 +3274,16 @@ DISABLE_MPG_INFOFRM_PKT() HDMITX_WriteI2C_Byte(REG_TX_MPG_INFOFRM_CTRL,0); } -void HDMITX_SetPixelRepetition(int pixelrep, int set_infoframe) { +void HDMITX_SetPixelRepetition(BYTE pixelrep, BYTE set_infoframe) { BYTE pllpr; - //Switch_HDMITX_Bank(0); - pllpr = HDMITX_ReadI2C_Byte(REG_TX_CLK_CTRL1) & 0x2F; - pixelrep &= 0x3; - - if (set_infoframe) { - HDMITX_WriteI2C_Byte(REG_TX_CLK_CTRL1, pllpr); - Switch_HDMITX_Bank(1); - HDMITX_WriteI2C_Byte(REG_TX_AVIINFO_DB5, pixelrep); - } else { - pllpr |= (1<<4)|(pixelrep<<6); - HDMITX_WriteI2C_Byte(REG_TX_CLK_CTRL1, pllpr); - Switch_HDMITX_Bank(1); - HDMITX_WriteI2C_Byte(REG_TX_AVIINFO_DB5, 0); - } - Switch_HDMITX_Bank(0); + pllpr = HDMITX_ReadI2C_Byte(REG_TX_CLK_CTRL1) & 0x2F; + + if (!set_infoframe) + pllpr |= (1<<4)|((pixelrep&0x3)<<6); + + HDMITX_WriteI2C_Byte(REG_TX_CLK_CTRL1, pllpr); } ////////////////////////////////////////////////////////////////////// diff --git a/software/sys_controller/it6613/it6613_drv.h b/software/sys_controller/it6613/it6613_drv.h index 53316ac..8fdaab5 100644 --- a/software/sys_controller/it6613/it6613_drv.h +++ b/software/sys_controller/it6613/it6613_drv.h @@ -834,7 +834,7 @@ BOOL EnableAudioInfoFrame(BYTE bEnable,BYTE *pAudioInfoFrame); void SetAVMute(BYTE bEnable) ; void SetOutputColorDepthPhase(BYTE ColorDepth,BYTE bPhase) ; void Get6613Reg(BYTE *pReg) ; -void HDMITX_SetPixelRepetition(int pixelrep, int set_infoframe); +void HDMITX_SetPixelRepetition(BYTE pixelrep, BYTE set_infoframe); //////////////////////////////////////////////////////////////////// // Required Interfance diff --git a/software/sys_controller/mem_init/sys_onchip_memory2_0.hex b/software/sys_controller/mem_init/sys_onchip_memory2_0.hex index df99ee4..326246b 100644 --- a/software/sys_controller/mem_init/sys_onchip_memory2_0.hex +++ b/software/sys_controller/mem_init/sys_onchip_memory2_0.hex @@ -1,968 +1,968 @@ :020000020000FC :2000000000402074084008140800683A0000000000000000000000000000000000000000FE -:2000080006C02074DEE8001406802074D6BF1A140080207410A1181400C0207418E235143F -:2000100010C00326100000151080010410FFFD360815E0800815EE80003FFF06DEFFFB04B3 -:2000180000BFE084D880000500800084D880004500800344D8800085DFC0041529403FCCD7 -:200020000080004428800426008000842880041E008014040000030600800C040000010624 -:2000280000800404D88000C5D88000C331803FCC10800094D88000C5300002260080080417 -:20003000000001060080040439C03FCC10C002143800022600BFE004000001060080100499 -:200038001884B03AD8800105D900018500800204D80B883A01000044D8800145D80001C5B9 -:20004000D8000205D8000245D8000285D80002C5D8000305D8000345D8000385D80003C5A4 -:2000480008104640DFC00417DEC00504F800283ADEFFFC04DC000015040020B484041804F5 -:20005000DC80021504801304DC400115900B883A2023883A000D883A8009883ADFC003151D -:200058000816654089403FCC8009883A000D883A08166B8004400044900B883A8009883A9E -:20006000880D883A08166540880B883A8009883ADFC00317DC800217DC400117DC00001771 -:20006800DEC00404081668C1DEFFFC04DC000015040020B484041804DC800215DC4001159C -:200070002025883A2823883A8009883A000D883A01401304DFC003150816654091403FCC94 -:200078008009883A000D883A08166B800180004489403FCC8009883ADFC00317DC80021733 -:20008000DC400117DC000017DEC0040408166B81DEFFFF0421003FCCDFC00015081013009E -:20008800DFC00017DEC00104F800283ADEFFFF0429403FCC21003FCCDFC0001508101A80BF -:200090000005883ADFC00017DEC00104F800283ADEFFFB04DCC00315DC800215DC400115A1 -:20009800DC000015DFC004152825883A3027883A2023883A2821883A8485C83A14C0060E74 -:2000A0008140000389003FCC8400004408101A808C400044003FF8060005883ADFC00417A0 -:2000A800DCC00317DC800217DC400117DC000017DEC00504F800283ADEFFFF040140FA04C6 -:2000B000DFC00015081553C01009883ADFC00017DEC001040815F141DEFFFF04000B883A1C -:2000B800010003C4DFC00015081022C0000B883A01001844DFC00017DEC00104081022C134 -:2000C000DEFFFD04DC000015040020B484212C048140008301000144DFC00215DC40011532 -:2000C800081022C0808000838100030300FFFEC41004D1FA20C6703A044001041085883A44 -:2000D0001085883A1884B03A01400F448809883A80800305081022C00100004408102B8042 -:2000D8008809883A01400744081022C001400C0401001844081022C001402C84010002444F -:2000E000081022C001403E0401000284081022C001400DC4010002C4081022C0000B883A62 -:2000E800010003C4081022C0000B883A01003244081022C0000B883A01003284081022C07A -:2000F000000B883A010032C4081022C0000B883A01003304081022C0000B883A01003344EE -:2000F800081022C0000B883A01003384081022C0000B883A010033C4081022C0000B883AE3 -:2001000001003404081022C08140010301003844DFC00217DC400117DC000017DEC00304E6 -:20010800081022C1DEFFFE04DC000015040001048009883ADFC00115081021001080021424 -:200110008009883A11403FCC081022C001400C0401001844DFC00117DC000017DEC0020432 -:20011800081022C1DEFFFE04DFC00115DC00001521003FCC2000021E000B883A00003B06CD -:200120002821883A28003D2601400044010003C4081022C0814000C301001604081022C049 -:200128008140010301001644081022C08140014301001684081022C081400183010016C4E3 -:20013000081022C0814001C301001704081022C08140020301001784081022C081400243B8 -:20013800010017C4081022C08140028301001804081022C0814002C301001844081022C097 -:200140008140030301001884081022C081400343010018C4081022C08140038301001904FE -:20014800081022C0814003C301001944081022C0808000C4000B883A8400040410C00003CE -:200150001080004428CBC83A143FFC1E29401BC429403FCC01001744081022C0000B883A7A -:20015800010003C4081022C0014000C401003344081022C000800044000001060005883ABC -:20016000DFC00117DC000017DEC00204F800283ADEFFFD04DC000015000B883A2021883A38 -:20016800010003C4DFC00215DC400115081022C0044030448809883A0810210084003FCCFA -:20017000800AC03A10803F8C8809883A114AB03A081022C0014000C401003184DFC002178B -:20017800DC400117DC000017DEC00304081022C1DEFFF904DCC00315DC800215DC4001156D -:200180002025883A2823883A010001040140074404C020B49CE12C04DD000415DC0000158D -:20018800DFC006153821883ADD4005153029883A081022C098C0030381C0004C00BFFF4449 -:200190001884703A39CF883A11CEB03A99C00305988003171080008C10000226010000444A -:200198000810590001001C049C0000C308102100108000CC8D4000CC00C00044100B883A47 -:2001A000A8C0052600C00084A8C0041E017FE004114AB03A00000106114010148080020CAB -:2001A80010000126294008148080004C10000126294004148080008C100001262940021435 -:2001B0008400010C800001262940011429403FCC01001C04081022C0A800131EA50000CCA0 -:2001B80000800044A080082600800084A0800E1E88803FCC1080201C10BFE00410005016BD -:2001C0000029883A00004F0688803FCC1080201C10BFE0048D00100C10004A0E00BFE80491 -:2001C8001528B03A000047060029883A0021883A01001C84081021001080070CA420B03AAA -:2001D000140AB03A29403FCC01001C84081022C0988003171080008C1000022601400044ED -:2001D80000000106000B883A01003004081022C00140054401000104081022C00140040431 -:2001E00001001844081022C094803FCC008000849080081E0140220401001884081022C051 -:2001E80001400404010018C4081022C001402104000007060140060401001884081022C082 -:2001F00001400404010018C4081022C00140030401001904081022C00100004408102B8067 -:2001F80001000104081021001140074C01000104081022C00100190408102B80010001041D -:20020000081021001140054C01000104081022C00400190401000384081021001080040C81 -:200208001000321E0100004408102B8080BFFFC41021883A10BFFFCC103FF61E00002B064B -:20021000053FE8048C400C0C008008048880081E018000C4D16000C401001CC408102500A8 -:200218000140207401800484295D6F840000090600800C0488800B1E018000C4D16000C465 -:2002200001001CC4081025000140207401800484295D668401001D840810250004000084EB -:20022800003FA306008004048880081E018000C4D160000401001CC40810250001402074AB -:2002300001800484295D6204003FF206018000C4D160000401001CC4081025000140207415 -:2002380001800484295D6B04003FEA06000B883A01000304081022C001401004010003440D -:20024000081022C00140004401000384081022C0000B883A01000384081022C008102D8089 -:2002480000800044DFC00617DD400517DD000417DCC00317DC800217DC400117DC00001793 -:20025000DEC00704F800283ADEFFFD04DC0000152021883A01001644DC400115DFC0021576 -:200258002823883A0810210010800BCC840000CC88000826100B883A01001644081022C0A1 -:2002600001400044010003C4081022C0800B883A00000906802091BA0100164481400414BC -:20026800114AB03A081022C001400044010003C4081022C0000B883A01001704081022C00D -:20027000000B883A010003C4DFC00217DC400117DC000017DEC00304081022C10080207446 -:20027800109EE30410C03217D0A1FF151800042610803517108040180085C83AF800283A4C -:2002800000BFFFC4F800283ADEFFFD04DC400115280F883A2823883A200B883AD121FF1777 -:20028800DC000015DFC002153021883A08163B0010000B1E800D883A8463883A3440062672 -:20029000308000031005C2721005D63A3180004430BFFFC5003FF9060005883A0000010679 -:2002980000BFFFC4DFC00217DC400117DC000017DEC00304F800283ADEFFFA04DC80031597 -:2002A000DC400215DC000115DFC00515DCC0041530803FCC2023883A2825883A3021883AC9 -:2002A800100003268805883A8C89883A00001706300A923AD121FF1708160A401027883A4B -:2002B000103FF82601402074010020B401800444295A1B042121330408156D400180207454 -:2002B800010020B4980F883A319A1E04014004442121330408155BC0008020B410A13B84FD -:2002C0001000000500FFCE0400001D061100062610C000031807C2721807D63A10800044AF -:2002C80010FFFFC5003FF906800AD23A800C923AD121FF17280A943ADC800015880F883A45 -:2002D000081613800007883A10000D2601402074010020B401800444295A210421213304BD -:2002D80008156D4001402074010020B401800444295A240421213B8408156D4000FFCDC4C3 -:2002E0001805883ADFC00517DCC00417DC800317DC400217DC000117DEC00604F800283A0C -:2002E800DEFFF904DD400515DD000415DCC00315DC800215DC000015DFC00615DC400115EB -:2002F0002825883A3029883A3827883A0021883A0007883A0540400484800F2E9423C83A74 -:2002F800AC40012E04404004980D883A880B883A8009883A0810A0801000141E800D003AFB -:20030000880B883A9809883A081656C01007883A84004004003FF0060005883A1D000C2605 -:2003080001802074010020B4319A2604014004442121330408155BC0008020B410A13B84F8 -:200310001000000500BFCD440000010600BFCD84DFC00617DD400517DD000417DCC003172E -:20031800DC800217DC400117DC000017DEC00704F800283ADEFFFD04DC0001152021883A53 -:20032000010020B421213004DFC002150814F30010803FCC10000B2601802074010020B4E7 -:20032800319A2B04014004442121330408155BC0008020B410A13B841000000500800044E4 -:200330000000090600808004010020B4D8800015000F883A000D883A800B883A21213004F5 -:20033800081514C010803FCCDFC00217DC000117DEC00304F800283A014020B4010020B484 -:2003400029613B84212133040813A8C1014020B4010020B429614F04212137440813A8C14F -:20034800DEFFFE04DC0000152021883A01000044DFC001150810590008104240000B883AF0 -:200350000009883A0810464084003FCC800F003A000D883A000B883A0100004408105F0074 -:200358008000051E000F883A000D883A000B883A01000084081005C00009883ADFC0011791 -:20036000DC000017DEC0020408105901DEFFFD04DFC00215DC400115DC00001521003FCC91 -:200368002000271ED0A2014300C0020410C01D2600C0040410C0062600C0010410C01C1EEE -:200370000009883A08143A000100004400002E06040020B48421400481400117010067349D -:20037800213F30040815480081000287014007041023883A081553C000C020B418E16E04F2 -:2003800010C5883A1140000B8809883A081553C000C072B418F0DFC418800236010003C4BE -:20038800000001060009883A08143A00000015060009883A08143A000009883A000012060E -:20039000008020B410A1534410C006C3044000841021883A1C4002260009883A0000010607 -:20039800010003C408143A00810006C320803FCC8880042E008001441109C83A21003FCCEB -:2003A00000000106010000C4DFC00217DC400117DC000017DEC003040813D7C1DEFFF50464 -:2003A80000C020B4DFC00A15DF000915DDC00815DD800715DD400615DD000515DCC00415CF -:2003B000DC800315DC400215DC0001150089C40418C4240419800037050020B4A5042404C5 -:2003B8003000020E10BFFFC4103FFA1E29403FCC21003FCC040020B4081487C08421400428 -:2003C0001025883A808002C310000426A44000378823D43A8C4000CC000001060023883ACF -:2003C80001000DC40813E64001000E041027883A0813E64010C003CC1806923A1CE6B03A40 -:2003D0001006D1BA18C0004C80C00245A0C00037010000848C403FCC89001126010020B439 -:2003D80021214004210002C32000021E010063C424C00B2E010000448900071E1807D47AB4 -:2003E0009CC9883A213FFF8418C1FFCC20C0022E1826D07A000005061080080C10000326CF -:2003E8009D00322805800044000002069D006428002D883A80C002C390803FCC1800101EAF -:2003F00010001E26A0001D26D0A200030100008410C03FCC18C0201C18FFE00420C0060EDE -:2003F800008020B400C0004410A14004D022000510C002C500000C061080004400000D0611 -:2004000010000126A0000D1ED0A2000300FFFF0411003FCC2100201C213FE00420C0040EB4 -:20040800D0220005800002C5044001040000050610BFFFC4D0A2000500000106D02200053B -:200410000023883A01000E440813E64001000E84048020B4102B883A94A153440813E6405E -:20041800A0008526108003CC1004923A80C00017156AB03A008020B410A140041CC0051E32 -:2004200010C00117A8C0031E10C00203B0803FCC18800226D022044500000C06D0A2044375 -:2004280000C0004411003FCC20C0082610C5883AD0A2044510803FCC10C0041E88803FCC94 -:2004300000C0008410C0012E1823883A9140024380800803010020B400C020B42121534409 -:2004380018E1400428801B1E21400283188008432880181E214002C3188008832880151EBB -:2004400021400303188008C32880121E214003431880090328800F1E214001431880070393 -:2004480028800C1E21400183188007432880091E214001C3188007832880061E21400203B3 -:20045000188007C32880031E2100054318800B032080042688803FCC00C0008410C0012E32 -:200458001823883A90C004C380800A8318801126008020B410A140041100028701400704E5 -:20046000081553C000C020B418E1704410C5883A1080000300C0004410BFFF0410803FCC70 -:200468001880043688803FCC00C0008410C0012E1823883AD0A2054310002C2685C0028765 -:2004700001400704050020B4B809883A081553C0A5216A0487000403A085883A1140040B8B -:20047800E009883A081553C0173FFFCC80800B03A8FFFFCC10000A2601400704B809883AD9 -:20048000D8C00015081553C0A085883A1180068BD8C00017300CD07A3180004C000001063D -:20048800000D883A180B883AE009883A08140D408100028701400704081553C0A085883A1F -:200490008140040311000583081553C081400483010001C4114BC83A29403FCC0813EE4092 -:2004980088803FCC1000011E0440004484C00015854001158580020591400003810005C31D -:2004A00000C020B4008020B418E1534410A140042900151E19400043110006032900121E64 -:2004A800194000831100064329000F1E194000C31100068329000C1E194003C311000983E3 -:2004B0002900091E19400403110009C32900061E1940044311000A032900031E18C00383EC -:2004B800108009431880032688803FCC1000011E044000449100050380800AC304C020B4BF -:2004C0009CE140042080062699400403081443C09880044588803FCC1000011E0440004465 -:2004C800910005C380800B8320800126081454009100060380800BC3208001260814058026 -:2004D0009100064380800C0320800126081406409100070380800CC32080071E008020B477 -:2004D80010A1534410C00743008020B410A1400410800D0318800226914007430814024080 -:2004E0009100058380800B432080062601400604081553C001002074211C80042089883A8D -:2004E80008142880910006C380800C83208001260810D8C09100068380800C4320800126A0 -:2004F00008143E80014020B4010020B40180018429614D8421215B04081556401000031E42 -:2004F800010020B421214D8408140700014020B4010020B40180094429615344212145C4B5 -:20050000081559408805883AD0220545DFC00A17DF000917DDC00817DD800717DD4006176A -:20050800DD000517DCC00417DC800317DC400217DC000117DEC00B04F800283ADEFFF104AB -:20051000DC000515040020B484214004DF000D158700028701400704DD800B15E009883A8F -:20051800DD400A15DCC00815DFC00E15DDC00C15DD000915DC800715DC400615081553C074 -:20052000058020B480C005C3B5A16A04B085883A0100008414C0030B154005431900031E61 -:20052800848006039480004400000C06010000441900091E1080068B848003031104703ACD -:200530001000032690000426048000C4000003069024C03A000001060025883A80C0050B7B -:20053800008020B40100800410A1400419001B2620C00836010010041900132601002004D1 -:20054000190013260100020419002A1E1440040300002B06010200041900142620C00536E0 -:20054800010100041900231E108009430440014400000C0601040004190011260108000456 -:200550001900142600001B06044000C400001C061080094304400104000002060440010477 -:200558000000170688A3C83A00001506108007C31000101E9CFFFA04AD40030400000D06E6 -:20056000108007C310000D1E9CFFFA04AD40030400000A0610C00943108007C3044001840A -:2005680088E3C83A1000061E9CFFFA04AD4003040000030604400044000001060440014424 -:200570008240040389803FCCE009883A4DC03FCCB985C83A01400704D9800415DA4002159C -:20057800D8800015081553C0B085883A1200028BD9000017400B883ADA000315081553C011 -:200580001028D7FAE009883A01400704A085883A1029D07A081553C0B085883A11000503B1 -:20058800B80B883A081553C0D9000017100B883AD8800115081553C0B80B883A1009883AD3 -:2005900008153880A085883AB80B883A113FFFCC08153880DA400217100B883A49003FCCB6 -:20059800081553C087000343DA000317D8C00117E03897BA400B883AB809883AE0F8B03AE7 -:2005A000102D883A081553C01004927A8100098389403FCCE0B8B03A081553C0A085883A72 -:2005A8001004953A00C020B418C42C04E084B03A1880003581000A0380800643D98004174A -:2005B000200895FA100494FA80C007C3300C943A2084B03A8100044318C00058180696FA8A -:2005B8002008937AB5BFFFCC1108B03A80800403100492BA2084B03A118CB03A358CB03A85 -:2005C000008020B430C6B03A1084200410C0003580C00683808003031806973A1004963A88 -:2005C8001886B03A808009C3100494BA1886B03A900497BA18A4B03AA8BFFFCC90A4B03AFA -:2005D00098BFFFCC100491FA90A4B03A008020B41084280414800035DFC00E17DF000D1788 -:2005D800DDC00C17DD800B17DD400A17DD000917DCC00817DC800717DC400617DC00051723 -:2005E000DEC00F04F800283ADEFFF004DC000615040020B484214004DC4007158440011753 -:2005E80000800044DFC00F15DF000E15DDC00D15DD800C15DD400B15DD000A15DCC009153A -:2005F000DC800815D0A204458800162684C000179800142601006734880B883A213F300441 -:2005F800081548001025883A8080020301283BF4980B883A212EC004100004260815480013 -:20060000880B883A1009883A0000030608154800880B883A1089883A081548001023883A32 -:20060800000002060445DC04048F550401000EC40813E64001000F041027883A0813E64053 -:200610008080058300C0207418DA77041085883A1085883A1885883A11C000178080020387 -:2006180080C000171000021E00801A440000010600801C0401802074010020B4D8C000151F -:20062000319A2F040140044421213744D880011508155BC0014019048809883A08154800BA -:200628000140FA049009883A1029883A08154800014019048809883A102B883A08154E405F -:200630000140FA049009883AD8800215DD00011508154E40014002841009883A08154800FC -:2006380001802074010020B4D8800015A80F883A319A31040140044421214F0408155BC07C -:20064000D0A20A831000011E0810D0C081000017D1E2050381400203A00D883A044020B424 -:2006480008148EC011003FCC2100201C213FE00400FFFFC48C61400420C0011E00800104F4 -:20065000888002858580028301400704048020B4D5A20105B5803FCCB580201CB5BFE00447 -:20065800B009883A081553C094A16A0490B9883AE4400603D0A205038500040385C0011799 -:2006600088A2703AD4620145E0C0040BA1403FCC9CC03FCC193FFFCCD8C00515081553C023 -:200668009809883A100B883A081553C0B80B883A1009883A08154800D8C00517A5003FCCD9 -:20067000A00B883A1809883A102B883A081553C0123FFFCC80800B038C403FCCBDFFFFCC65 -:200678009027883A10000426E480068B9024D07A9480004C000001060025883A80800C035F -:2006800001400704B009883AD880041580800D03DA000515AD403FCCD880031580800CC3E7 -:20068800D8800215081553C09885883A11000583A00B883A081553C080C00483DA000517E1 -:20069000900F883A10C5C83A10BFFFCC400B883AD8800115B80D883A8809883ADD400015F1 -:200698000814608081000C830810D8C081000AC381400403081443C08080044580800A43BB -:2006A000810003831000041E008020B410A14004114003C300000106000B883A08109480A1 -:2006A800DFC00F17DF000E17DDC00D17DD800C17DD400B17DD000A17DCC00917DC800817B4 -:2006B000DC400717DC000617DEC01004081143C120803FCC00C003C410C00E2600C004042A -:2006B80010C0112600C002C4D12203C310C0271EDEFFFE04DC000015DFC00115081376C0F1 -:2006C0001021883A10000F2601C0207439DA390400000E06D0A203C310C03FCC18000726D1 -:2006C80010BFFFC400000506D0A203C30100020410C03FCC20C0013610800044D0A203C536 -:2006D000F800283A01C0207439DA370401802074010020B4319A3C040140044421213B848E -:2006D80008155BC00810CF808000021E010003C408135AC00100023421284804DFC0011743 -:2006E000DC000017DEC002040815F141200F883A01802074010020B4319A3D0401400444A4 -:2006E80021213B8408155BC120803FCC00C003C410C00E2600C0040410C0112600C002C42D -:2006F000D12203C310C0271EDEFFFE04DC000015DFC0011508135AC01021883A10000F262A -:2006F80001C0207439DA410400000E06D0A203C310C03FCC1800072610BFFFC4000005062C -:20070000D0A203C30100020410C03FCC20C0013610800044D0A203C5F800283A01C02074EB -:2007080039DA3F0401802074010020B4319A3C040140044421213B8408155BC00810CF805D -:200710008000021E010003C408135AC00100023421284804DFC00117DC000017DEC0020412 -:200718000815F141200F883A01802074010020B4319A3D040140044421213B8408155BC1C8 -:2007200021003FCC008003C4208026260080040420802926DEFFFD04DC000015DFC002155E -:20072800040020B4DC400115008002C484216A042080281ED462010301400704D4620405A3 -:200730008C403FCC8809883A081553C08085883A10C0040B014007048809883AD0E2030D48 -:2007380010C00583D0E2058D10C0028BD0E2028D10C0030BD0E2020D10800503D0A2008D31 -:20074000081553C08085883A10800543D0A2048DDFC00217DC400117DC000017DEC0030443 -:20074800F800283AD0A2010310C03FCC1800072610BFFFC400000506D0A20103010006C4C3 -:2007500010C03FCC20C0013610800044D0A20105F800283AD122010301400704081553C07E -:20075800010020B401800444808B883A21213B84DFC00217DC400117DC000017DEC0030491 -:2007600008156D41DEFFFA04008020B4DD000415DCC00315DC800215DC400115DC0000153F -:20076800DFC0051510A1400410C002C3040020B42029883AD462040384216A04D4E2008BBA -:20077000D4A2048B18001E261080028714401C1E8809883A01400704081553C08085883ACB -:200778001100040BD0E2030B20C0131E11000583D0E2058B20C0101E1100028BD0E2028BAA -:2007800020C00D1E1100030BD0E2020B20C00A1E10C0050398803FCC1880071E0140070464 -:200788008809883A081553C08085883A10C0054390803FCC1880022600800044D0A2054594 -:200790008809883A01400704081553C0D0E2030B8085883A8809883A10C0040DD0E2058B7D -:200798000140070410C00585D0E2028B10C0028DD0E2020B14C0050510C0030D081553C050 -:2007A00001802074010020B48085883AA1FFFFCC319B36040140044421213B8414800545AF -:2007A800DFC00517DD000417DCC00317DC800217DC400117DC000017DEC0060408155BC14B -:2007B000DEFFFE04DC000015040020B4DFC00115840434040080044480800035800000355A -:2007B800008020B410842C0410000035008020B410842804100000350109C4040815F1404B -:2007C00000BFF444D0A201850080344480800035010000F4210350040815F140018001B40C -:2007C80001406734010020B43186A004297F30042104180408165E0008139A400813D0404C -:2007D000100022260009883A0813E64000C03FC410C0202608144BC00100008408102100E7 -:2007D80010803FCC00C004C410C01C1E0810300008109DC01021883A10001A1E081245C0BD -:2007E00001402074010020B401800D84295AD80421215C8408155940010003C4081376C0ED -:2007E800D12203C3081376C0008020B41084300410800037108000AC1000011E08124CC073 -:2007F0000009883A0810D20000000706043FFF8400000506043FFF4400000306043FFF0481 -:2007F80000000106043FFFC48005883ADFC00117DC000017DEC00204F800283ADEFFFF0405 -:20080000DFC00015081178800813FD80008020B410A1534411000483DFC00017DEC00104EE -:200808000810D201DEFFF504DFC00A15DF000915DDC00815DD800715DD400615DD000515F2 -:20081000DCC00415DC800315DC400215DC0001150811EC0010001B16008013040180207488 -:20081800010020B4000F883A319A44040140044421213744D880001508155BC00140207447 -:20082000010020B401800444295A500421214F04081559400810D0C0010002342128480484 -:20082800054020B40815F140AD615344A88007830100024410C03FCC20C01136D0A20385AF -:2008300000000F0601802074010020B4100F883A319A4904014004442121374408155BC032 -:2008380001402074010020B401800444295B450421214F0408156D400810D0C0003FFF0615 -:20084000058020B405C02074070020740029883A0023883A0021883A0025883AB5A1400417 -:20084800BDDA7704E708700400C020B418C430041880003710FFFFCCD0E208150086303A0F -:200850001004D63A18C000ECD0E20915D0A20A051000062610FFFF8418C03FCC010000C4D9 -:2008580020C0022ED0E2070310C0011ED022081508126740D0A20A83100002260009883AF3 -:20086000081310C0B0C00583D0A2038304C020B49CE140041880011ED0220385D0E20383DB -:200868000100020418BFFFC410803FCC20803836100490BA1705883A108000171000683A91 -:20087000008121E4008121F40081220C0081221C0081222C00812240008122500081226036 -:2008780000812278008003C4D0A205050023883A00000306008003C4D0A205050440008409 -:20088000040000440025883A00002306008003C4D0A20505044000C4003FF906008003C4B0 -:20088800D0A20505044000C400000306008003C4D0A20505044000840021883A003FF1061F -:2008900000800404D0A205050440004400000D06008003C4D0A205050023883A00000906F2 -:2008980004400084008003C4D0A205058821883A8825883A00000806008003C4D0A205050A -:2008A000044000C4040000848025883A0000020618803FCC10002C2699400C8398C00585EA -:2008A800980002C528803FCC00C0004481003FCC1880042E00800144114BC83A29403FCC2D -:2008B00000000106014000C40813DE800813F4C089403FCC91003FCC0814744098800583F4 -:2008B800010020B4018004441085883A1085883AB885883A11400017212137449800011502 -:2008C00008156D4001402074010020B401800444295A4D0421214F0408156D40D0A20A83A9 -:2008C8001000011E0810D0C0A5003FCCA0000526A8C00783008002841880021E010003C446 -:2008D00008135AC005000044A900048398800A43208006260810D200008020B410A15344A3 -:2008D80010800483B0000115B0800A45A0803FCC1000322689403FCC91003FCC0810E9C0E0 -:2008E00010803FCC00C0008410C0252600C0010410C0032600C0004410C0281E00002406FC -:2008E800988002C310000926D0A2018300C020B418C4340410800094D0A2018510803FCC7F -:2008F000188000350811FFC000001C06B00001150813F4C0B0800583010020B40180044436 -:2008F8001085883A1085883AB885883A114000172121374408156D4001402074010020B49A -:2009000001800444295A4D0421214F0408156D40D0A20A831000091E0810D0C000000706F0 -:20090800988002C3100005260811788000000306988002C310000126081143C0D0A20917DB -:2009100001004B04D0220385D0A20615D0A20A03D0A207050815F140003F330600C020B419 -:2009180018E1534401402074DEFFFF041809883A01800944295A8204DFC000150815594056 -:200920001007883A008020B41084300410800037014020741004D4BA010020B40180CB045F -:200928001080004C295C8C0421216A04188004850815594000800044D0A205450005883AF0 -:20093000DFC00017DEC00104F800283ADEFFF804DD000415DCC00315DC8002150500207465 -:20093800048020B404C020B4DD800615DC000015DFC00715DD400515DC400115002D883A33 -:200940000021883AA51AE604948430049CE15C8401402074010020B401800444295A8C04DC -:200948002121330408156D408405883A1085883AA085883A11400017010020B401800444BD -:2009500021213B8408156D400810CF800023883A054000849080003710BFFFCCD0A2081537 -:2009580090C0003700C6303A18C000ECD0E2091510001A26B08019268407883A98C7883A07 -:2009600088000A1E01402074010020B401800444295A8E04212133041880000D08156D4057 -:200968000810CF800440004400000C0618C0000B10C0092601402074010020B40180044419 -:20097000295A90042121330408156D400810CF800023883A0000010604400084D0A2061763 -:2009780010000F1ED0E209170080007418800C1E8000091E01402074010020B401800D8437 -:20098000295AD80421215C840815594004400084040006C400000206843FFF840440008474 -:20098800D0A20917D5A20817D0A206158D4003260109C4040815F140003FC60684000044B1 -:2009900000800684143FB20E010003C4DFC00717DD800617DD400517DD000417DCC0031744 -:20099800DC800217DC400117DC000017DEC0080408135AC1D1220817DEFFFA04014020B4C1 -:2009A000DFC00515DCC00415DC800315DC400215DC0001150005883A29615C8401800684F4 -:2009A8001087883A1947883A18C0000B040020B484215C84190003261180CE2610800044D9 -:2009B000003FF70600C006841880CA36100490BA00C0207418C9B90410C5883A108000177B -:2009B8001000683A008127500081276C0081277C00812758008127740081278400812764E9 -:2009C000008129F40081278C008127940081279C008129F4008129F4008129F4008129F44D -:2009C800008129F4008129F4008127C0008128380081285800812884008128D0008128B08A -:2009D000008129F4008128FC008129240081294C008000440000010600800084D0A2038537 -:2009D8000000A406008000C4003FFC0600800104003FFA0600800144003FF8060080018405 -:2009E000003FF606008001C4003FF40600800204003FF20600800244003FF006D0A20A8387 -:2009E8001007003AD0E20A851000031E01000044081310C000008F060810D0C000008D062C -:2009F000008020B410A140041100028701400704081553C001C020B439E16A040180207456 -:2009F800010020B4388F883A319A9404014004442121330408155BC0008020B410842404D4 -:200A000011C0003710800037018020741005D43A010020B439FFFFCC108000CC319A970435 -:200A08000140044421213B84D880001508155BC00810CF8000006F06D0A2018300C020B439 -:200A100018C434041080041CD0A2018510803FCC188000350000670600C020B418E1534411 -:200A1800188000030140004411003FCC290002361145883A000001060005883A188000059E -:200A200000005C0600C020B418E15344188000430140004411003FCC290002361145883A3B -:200A2800000001060005883A1880004500005106008020B410A1534410C0008319003FCC99 -:200A30002000012618FFFFC410C000850000490600C020B418E153441880008301400384DA -:200A380011003FCC290002361080004400000106008003C41880008500003E0600C020B40A -:200A400018E15344188005030140078411003FCC290002361080004400000A060005883A72 -:200A48000000080600C020B418E153441880050311003FCC2000022610BFFFC400000106BF -:200A5000008007C41880050500002A0601402074010020B401800444295A9B04212133045B -:200A580008156D4001402074010020B401800444295A9F0421213B8408156D40044020B438 -:200A60000810CF808C443004048006C404C00244888000370009883A10BFFFCC2107883A25 -:200A68001C07883A18C0000B10C003262100004424BFFA1E000008069900071601400284C2 -:200A700021000044081540C0010002C4D0A203C50811AD00000005068080060B11000326C7 -:200A78000109C4040815F140003FE9060810D0C0D0220A85D0A206171000191ED0E209173F -:200A80001880006C10000A26008020B410A14004108005830100024411403FCC29000226BD -:200A8800108000440000010600800044D0A2038518C000AC18000A2600C020B418E15344C5 -:200A9000188000030140004411003FCC290002361145883A000001060005883A1880000526 -:200A9800DFC00517DCC00417DC800317DC400217DC000117DEC00604F800283ADEFF6C04DE -:200AA000D9000304DC008C15DFC09315DD809215DD409115DD009015DCC08F15DC808E150A -:200AA800DC408D150810C7401021883A08152C808000891E01800104D9400304D900830468 -:200AB00008156D400140207401800104295B0104D90083040815674010000B2601802074FE -:200AB800010020B4319B0304014004442121330408155BC0008020B410A13B841000000563 -:200AC0000400004400007406D8800403DC808484D9400484D8808405D880044301800204E9 -:200AC8009009883AD880844508156D40D880068BD8008645D8808B0DD880070BD8808B8D72 -:200AD000D9408B17280BC232D880078BD9408715D8808B0DD880080BD8808B8DD8808B17C0 -:200AD8001005C232D8808815D880088BD8808B0DD880090BD8808B8DD8808B171005C23246 -:200AE000D8808915D8808217D8808B151005C232D8808A1500C0788428BFF98418800B2E26 -:200AE80001802074010020B4319B0704014004442121330408155BC0008020B410A13B842F -:200AF00010000005043FFFC40000430601800044D9000304081656C0D8C08A1710C00A2670 -:200AF80001802074010020B4319B0B04014004442121330408155BC0008020B410A13B841B -:200B0000100000050000330601802074010020B4319B0F04014004442121330408155BC084 -:200B0800D9C0881701802074010020B4319B13040140044421213B8408155BC00810CF809F -:200B1000DCC08817DD4089170021883A0005883A0580800484C0132E9C23C83AB440012EB1 -:200B18000440800485008004A00CD27A010020B4DC400015000F883AD94003042121300487 -:200B2000081514C010803FCC1000121E800D003A880B883AD9000304081656C0A021883A36 -:200B2800003FEC06A880612601802074010020B4319B1604014004442121330408155BC0C3 -:200B3000008020B410A13B8410000005043FFF4400000106043FFF8404C000C408152C8028 -:200B38000810CF80010003F4211090040815F14000BFCE4480804B0E98004A2601802074E4 -:200B4000010020B4319B2C04014004442121330408155BC09CFFFFC401402074010020B482 -:200B480001800444295B240421213B8408156D400810CF800025883A0580800405004004AD -:200B5000DC4088179440202E8CA3C83AB440012E0440800495408004A80DD27A010020B45D -:200B5800DC400015000F883AD940030421213004081514C014003FCC803FD81E9025D23A5F -:200B6000880B883AA440012E01404004900D883AD90003040810A7801021883A103FCF1EDB -:200B6800A4400236A825883A003FE50691800044897FC004D90043040810A7801021883A25 -:200B7000103FF826003FC50601402074010020B401800444295B28042121330408156D4088 -:200B780001402074010020B401800444295B240421213B8408156D400810CF80D980891713 -:200B8000D9408817D9C003040009883A0810BA001021883A103FB11E08152C800005883ABF -:200B88000000430600BFFFC400004106D8808487D9C08403D8C0844310000326008020740C -:200B9000109ACB040000020600802074109B450401802074010020B4D8C00015319B1B043A -:200B98000140044421213304DC800215D880011508155BC001402074010020B401800444AF -:200BA000295B300421213B8408155940044020B4040020B40810CF808C44300484215C84E6 -:200BA8008880003780C0000B10BFFFCC10C00E2680C0008B10C0091E01402074010020B499 -:200BB00001800444295B1E042121330408156D4004C000C404000084003F80060109C404CC -:200BB8000815F140003FEE060813F4C0D0A2018300C020B418C4340410800094D0A2018513 -:200BC00010803FCC188000350109C4040815F14001402074010020B401800444295B210471 -:200BC8002121330408156D4004C000C4003F7A06DFC09317DD809217DD409117DD009017EB -:200BD000DCC08F17DC808E17DC408D17DC008C17DEC09404F800283A21C03FCC01802074F2 -:200BD800010020B4319B35040140044421213B8408155BC1DEFFFF040141194421003FCCB5 -:200BE000DFC00015081553C0014019041009883A0815388001802074010020B4100F883A38 -:200BE800319B37040140044421213B84DFC00017DEC0010408155BC121C03FCC01802074C9 -:200BF000010020B4319B39040140044421213B8408155BC1014003F4DEFFFC042950900422 -:200BF80021003FCCDFC00315DC400215DC000115081553C0014018F4294BA8041009883A5D -:200C00001021883A081548008009883A014659041023883A081548000140FA041009883A19 -:200C080008154E40014002841009883A0815480001802074010020B4D8800015880F883A6A -:200C1000319B3C040140044421213B8408155BC0DFC00317DC400217DC000117DEC004046E -:200C1800F800283ADEFFFF04014119C421003FCCDFC00015081553C0014019041009883A1A -:200C20000815388001802074010020B4100F883A319B3F040140044421213B84DFC00017C5 -:200C2800DEC0010408155BC121C03FCC01802074010020B4319B41040140044421213B845F -:200C300008155BC121003FCCDEFFFF0401409C4421000044DFC00015081553C00140190497 -:200C38001009883A0815388001802074010020B4100F883A319B44040140044421213B8483 -:200C4000DFC00017DEC0010408155BC1D0A20817DEFFF604018020B4DCC00315DFC00915D4 -:200C4800DF000815DDC00715DD800615DD400515DD000415DC800215DC400115DC0000159C -:200C500004C002C431A15C84014004449CC7883A1987883A18C0000B1880041E21003FCC6F -:200C58009823883A2000051E000003069CC00044997FF61E0000A50610010026D5620A4381 -:200C600004802074949D7404AF003FCCE02090FA014005049405883A1500010315C00017C5 -:200C6800A5803FCCB009883A081553C0B8C00117010001041885883A88FFFD0418C03FCC31 -:200C700020C02936180690BA01002074210C77041907883A18C000171800683A008132241E -:200C7800008131F0008132080081331C0081331CB000011EBD000003A53FFFC49421883AB2 -:200C80008500010500008406B94000039421883AB100004484000104081540C0808000052C -:200C880000007D06E0000326AD7FFFC4D5620A4500007906D0220A85DFC00917DF0008178E -:200C9000DDC00717DD800617DD400517DD000417DCC00317DC800217DC400117DC0000178C -:200C9800DEC00A040810D0C110C00103014000C4194006261900631E10800217044002C43C -:200CA000103EE83A1021883A000064061080031710000226010002C4103EE83AD4620A43CB -:200CA800014005048C003FCC802690FA94C5883A1540001711000103AD000117081553C08A -:200CB000A085883A10C0021718004E2684000044802090FA00802074109D74041405883AC2 -:200CB8001100001719000126100001059421883A94E5883A91000103ACC001170140050489 -:200CC000081553C09885883A108002178C400044D4620A458080001500003A0610C001039E -:200CC800010000841900202619000336010000C419002F26000038061180021789C03FCC67 -:200CD000020003C41100030310C0034331400003108003833A000A1E19C03FCC2A003FCC09 -:200CD8003A00022E28BFFFC40000030621003FCC2000011E1805883A3080000500002606B4 -:200CE00011C03FCC2A003FCC41C0022E288000440000030621003FCC200001261805883A6B -:200CE80030800005000010061100021789403FCC018003C420C0000B2980061E1080030B85 -:200CF000197FFFCC1140012E18FFFFC420C0000D000011061080038B197FFFCC2880012ECB -:200CF80018C0004420C0000D0440040400000A06108003171000082699003FCC103EE83A7B -:200D000000000506044002C40000030621003FCC200059260023883A0021883AD0A20A4363 -:200D080000C0207418DD7404100490FA014005041885883A1100010314C00017081553C093 -:200D10001025883A98800117010020B4212133041485883A114000170180044408156D40F8 -:200D180098800117010001041485883A10C0010320C03536180690BA01002074210D2304B9 -:200D20001907883A18C000171800683A008134A0008134D0008134E0008134F0008135045A -:200D280010C00217110004170180044418C0000318C5883A1085883A2085883A114000172D -:200D3000010020B421213B8408156D4000001E0610C0021710800417190000030000070622 -:200D380010C00217108004171900000B0000030610800317100006260009883A103EE83AB9 -:200D4000000011068C403FCC00C002C488C00426008020B410A13B841000000500000A06C4 -:200D48008000021E11C003170000010611C0041701802074010020B4319A3C04014004448F -:200D500021213B8408155BC0DFC00917DF000817DDC00717DD800617DD400517DD00041727 -:200D5800DCC00317DC800217DC400117DC000017DEC00A040810CF81103FA61EDFC0091743 -:200D6000DF000817DDC00717DD800617DD400517DD000417DCC00317DC800217DC400117B0 -:200D6800DC000017DEC00A04F800283A21003FCC008003C411005F36009114B4DEFFB60469 -:200D70001094D544D88000150080107410951044D880011500801304D8800245208002B046 -:200D7800DC004015DFC04915DF004815DDC04715DD804615DD404515DD004415DCC043159F -:200D8000DC804215DC404115D8000205D8800285240004041000151E00800E04D88002C550 -:200D8800D0A203C3014020B401800D84D8800345008020B410A140041080058329615C8481 -:200D9000D90003C4D8000305D880038508155940800C923A01401144D809883A0810A7805D -:200D98001004C03A0085C83A0000340600800B04014020B4802A923A01800944D8800345E4 -:200DA00029615344008000C4D90003C4070020B4D98002C5D8000305D88003850025883A8C -:200DA80008155940002F883A04400D040580CB0405004004E7216A04893FFFCCA10DC83AD9 -:200DB000B0BFFFCCD909883AB97FFFCC94C03FCC11800C16E14B883A08155940A463C83A83 -:200DB8009D4D883A01404004D809883A8DEF883AB5BFC0040810A780948000440023883A55 -:200DC000003FED06100D883A008020B410A16A04114B883A08155940800C923A01404004DE -:200DC800D809883A34CD883A0810A7800005883A0000020600BFFFC4F800283ADFC04917BC -:200DD000DF004817DDC04717DD804617DD404517DD004417DCC04317DC804217DC40411740 -:200DD800DC004017DEC04A04F800283ADEFFB704DFC04815DDC04715DD804615DD404515C6 -:200DE000DD004415DCC04315DC804215DC404115DC00401521003FCC008003C41100022EBF -:200DE800047FFFC400006306240004048008943AD80D883A014040040810A080103FF81EF1 -:200DF0000140207401800204295C7D04D809883A081567401023883A1000531ED880020347 -:200DF8001000531ED8C00243008013041880501ED88002831000032600C0004410C01626BA -:200E000000004C06D8800303D8C002C31004923A10C4B03A00C00E0410C0461ED880034383 -:200E080000C0024411003FCC19000136D0A203C5D880038311003FCC19000136D0A20385DA -:200E1000010020B401800D84D94003C421215C840815594000003706D8800317D8C002C317 -:200E180011803FCC300C923A30CCB03A00C0094430C0301E1004D23A00C0CB041025883A3F -:200E200010BFFFCC10C02B1E010020B48020923AD94003C42121534405C020B408155940B6 -:200E28000027883A002D883A05400D0405004004BDE16A04A97FFFCCA14DC83A90BFFFCC2A -:200E3000B13FFFCCD94B883A11800F16B909883A08155940990000442027883A21003FCCFF -:200E38002409883A2008923AA56BC83AD80D883A01404004ADAD883A94BFC0040810A0800E -:200E4000002B883A003FEB06100D883A008020B410A16A041109883A0815594000800044CD -:200E4800D0A20545000003060440004400000106044000848805883ADFC04817DDC0471726 -:200E5000DD804617DD404517DD004417DCC04317DC804217DC404117DC004017DEC04904DA -:200E5800F800283ADEFFFD04D9000005010020B4DC000115018000442821883A210418048C -:200E6000D80B883ADFC0021508167340813FFFCC0815F140DFC00217DC000117DEC003041C -:200E6800F800283AD0E20183DEFFFC0400BFE7C41884703ADC400115044020B4D0A201850B -:200E7000DFC00315DC800215DC00001510803FCC8C44340488800035040005048009883A0F -:200E78000815F140800B883A01000E0408139640800B883A01000E4408139640800B883ADD -:200E80008009883A08139640800B883A01001C4408139640800B883A01001784081396409D -:200E8800800B883A01001B4408139640800B883A01000304081396400480C804900B883AB9 -:200E90000100004408139640800B883A0100018408139640900B883A010000840813964075 -:200E9800D0A2018310801014D0A2018510803FCC88800035DFC00317DC800217DC4001175E -:200EA000DC000017DEC00404F800283AD0E20183DEFFFA0400BFE7C41884703ADC0000158D -:200EA800040020B4DC800215DC400115D0A20185DFC00515DD000415DCC003152025883A4B -:200EB0002823883A10803FCC84043404808000350140C8040100004408139640D0A201834C -:200EB80010800814D0A2018510803FCC80800035014004049009883A081572801029883AF8 -:200EC00010803FCC1000091E014020749009883A01800444295C7F0408156D4091000003E1 -:200EC8000140050408139640000009060027883AA5003FCC94C5883A1100000301400504AE -:200ED0009CC000440813964098803FCC153FF936D0E2018300BFF7C41884703AD0A20185DD -:200ED80010803FCC80800035014005040100300408139640D0A2018310800814D0A2018520 -:200EE00010803FCC80800035014004048809883A081572801027883A10803FCC1000091EAC -:200EE800014020748809883A01800444295C7F0408156D4089000003014005040813964060 -:200EF000000009060025883A9CC03FCC8C85883A110000030140050494800044081396400B -:200EF80090803FCC14FFF936D0A2018310801014D0A2018510803FCC80800035DFC0051750 -:200F0000DD000417DCC00317DC800217DC400117DC000017DEC00604F800283ADEFFFB04A9 -:200F0800DC000015040020B484041804DC80021504800B04DCC00315900B883A2027883A3C -:200F1000000D883A8009883ADFC00415DC4001150816654004400044880D883A99403FCC37 -:200F18008009883A08166B80900B883A8009883A880D883A08166540880B883A8009883A03 -:200F2000DFC00417DCC00317DC800217DC400117DC000017DEC00504081668C1DEFFFC04DA -:200F2800DC000015040020B484041804DC800215DC4001152025883A2823883A8009883A38 -:200F3000000D883A01400B04DFC003150816654091403FCC8009883A000D883A08166B8009 -:200F38000180004489403FCC8009883ADFC00317DC800217DC400117DC000017DEC00404BA -:200F400008166B81010020B4DEFFFD04000D883A000B883A21041804DFC00215DC4001150F -:200F4800DC00001508166B80010002840815F1400400060404400044800B883A8809883A84 -:200F50000813C9C0800B883A010000840813C9C0800B883A010000C40813C9C08809883A5E -:200F58000813C1C01405003ADFC00217DC400117DC000017DEC00304F800283ADEFFFD04CE -:200F6000DC400115DC000015044000442021883A84003FCC8809883ADFC00215802090FA01 -:200F68000813C1C000FFF9C410C4703A80A0B03A84003FCC800B883A8809883A0813C9C0B6 -:200F7000800B883A010000840813C9C0800B883A010000C4DFC00217DC400117DC000017FA -:200F7800DEC003040813C9C1DEFFFD04DC4001152023883A01000044DC000015DFC002150E -:200F8000043FF6040813C1C01420703A89003FCC008000842080021E840000540000030661 -:200F88002008917A2080011480A0B03A84003FCC800B883A010000440813C9C0800B883A45 -:200F9000010000840813C9C0800B883A010000C4DFC00217DC400117DC000017DEC0030482 -:200F98000813C9C1DEFFFB04DC000015040020B484041804DC80021504801704DCC0031585 -:200FA000900B883A2027883A000D883A8009883ADFC00415DC40011508166540044000447C -:200FA800880D883A99403FCC8009883A08166B80900B883A8009883A880D883A08166540D8 -:200FB000880B883A8009883ADFC00417DCC00317DC800217DC400117DC000017DEC00504CE -:200FB800081668C1DEFFFC04DC000015040020B484041804DC800215DC4001152025883ADC -:200FC0002823883A8009883A000D883A01401704DFC003150816654091403FCC8009883AED -:200FC800000D883A08166B800180004489403FCC8009883ADFC00317DC800217DC400117EB -:200FD000DC000017DEC0040408166B81DEFFFC04DC000015040008848009883ADFC00315FE -:200FD800DC800215DC4001150813E640014004C4010005841023883A0489C4040813EE40ED -:200FE0009009883A0815F140014000C4010005C40813EE409009883A0815F140017FE00423 -:200FE800894AB03A29403FCC8009883A0813EE400100FA040815F14089401FCC8009883AD8 -:200FF000DFC00317DC800217DC400117DC000017DEC004040813EE41DEFFFE04DC000015CC -:200FF8000409C4048009883ADFC001150815F14001400444010005840813EE408009883A0F -:201000000815F14001400084010005C40813EE408009883ADFC00117DC000017DEC0020411 -:201008000815F141DEFFFE04DC0000152821883A21403FCC01000484DFC001150813EE40AB -:2010100081403FCC010004C4DFC00117DC000017DEC002040813EE4121403FCC01000F44D3 -:201018000813EE4121403FCC010004440813EE41DEFFFE04DFC00115DC000015214000C3C6 -:201020002021883A010002840813EE4081400103010002440813EE4081400143010002047C -:201028000813EE4081400003010003440813EE4081400043010003040813EE408140008371 -:20103000010002C4DFC00117DC000017DEC002040813EE41DEFFFB04DC400115DC00001542 -:201038002023883A2021883A01000104DCC00315DC8002153027883A2825883ADFC0041583 -:201040000813E640017FFE049CC03FCC1144703A9800092680FFFFCC0101FFC420C0063675 -:201048001140005429403FCC010001040813EE408423883A0000030611403FCC010001044C -:201050000813EE408C7FFFCC880AD13A0100004429403FCC0813EE40880A913A01000084E0 -:2010580029403C0C0813EE4001006734917FFFCC213F300408154800880B883A1009883ADE -:20106000081553C00140FA041009883A0815480000E327D41880092E00C0007418C45BC4E5 -:201068001880082E00C000B418C3D5C41885403A00C000C41885C83A000003060005883AA8 -:20107000000001060080004414003FCCD0A01E041405883A1100000301400A04081553C076 -:201078008808D07A880B883A1109883A08153880100B883A00C001C410803FCC1880012EB4 -:20108000180B883A29403FCC800491BA280A90FA010000C4288AB03A29403FCCDFC00417DD -:20108800DCC00317DC800217DC400117DC000017DEC005040813EE41DEFFFE04DC00001535 -:201090002021883A01000684DFC001150813E640017FFE8484003FCC00C000441144703A28 -:2010980080C0021E10800094000001061080029411403FCC01000684DFC00117DC000017F6 -:2010A000DEC002040813EE412140028BDEFFFE04DC000015280AD23A2021883A010012C46C -:2010A800DFC001150813EE4081400283010012840813EE408140030B01001344280AD23A9F -:2010B0000813EE4081400303010013040813EE408140038B010013C4280AD23A0813EE4001 -:2010B80081400383010013840813EE408140010B01001444280AD23A0813EE40814001037E -:2010C000010014040813EE408140018B010014C4280AD23A0813EE40814001830100148423 -:2010C8000813EE408140020B01001544280AD23A0813EE4081400203010015040813EE40E7 -:2010D0008140040B010015C4280AD23A0813EE4081400403010015840813EE408140048BD4 -:2010D80001001644280AD23A0813EE4081400483010016040813EE408140050B010016C4BE -:2010E000280AD23A0813EE408140050301001684DFC00117DC000017DEC002040813EE416D -:2010E800DEFFFD04DC00001504000FC4DC4001152023883A8009883ADFC002150813E640C9 -:2010F00000FFFC0410C4703A888AB03A29403FCC8009883ADFC00217DC400117DC000017C9 -:2010F800DEC003040813EE41DEFFFD04DC40011504400684DC0000152021883A8809883AC4 -:20110000DFC002150813E64080C03FCC014000C428C7C83A180691BA10800FCC8809883A70 -:20110800188AB03A29403FCCDFC00217DC400117DC000017DEC003040813EE41DEFFFB041D -:20111000DCC0031504C00104DC4001152023883A9809883ADFC00415DC800215DC0000158C -:201118002825883A0813E640900B883A8809883A1021883A081553C0108007CC100A90FA8D -:20112000840001CC9809883A2C0AB03A0813EE4091403FCC89003FCC081553C01004D17A93 -:20112800DFC00417DCC00317DC800217DC400117DC000017DEC00504F800283ADEFFFF04BA -:20113000DFC000150813F4C00009883A08142380000B883A01000D440813EE400100207495 -:20113800211C8004081428800140004401000404081443C00009883A08143A000009883A79 -:2011400008143E800100018408140580014000C401000D040813EE400100110408140640B6 -:2011480001402204010006C40813EE400140020401000704DFC00017DEC001040813EE4116 -:20115000DEFFFD04DC0000152021883ADC40011584003FCC044004048809883A802090FA23 -:20115800DFC002150813E640108001CC808AB03A29403FCC8809883ADFC00217DC4001177C -:20116000DC000017DEC003040813EE4121003FCC20001A26DEFFFD04DC4001150100098463 -:201168002823883A01402004DC000015DFC002153021883A0813EE4089403FCC008000445A -:2011700028800426008002042880041E814016840000030681400244000001068140060400 -:2011780029403FCC01000C44DFC00217DC400117DC000017DEC0030400000206000B883A39 -:20118000010009840813EE41DEFFF604DD0004152829883AD9400A17DF000815DDC00715A8 -:20118800DD800615DD400515DCC00315DC800215DC400115DC000015DFC0091524003FCC62 -:2011900000800044302B883A382D883ADC400B17DC800C17DCC00D17DDC00E172F003FCCBE -:20119800808008260080020480800D1E29400C8429403FCC010001440813EE40014008040F -:2011A00000000C062940008429403FCC010001440813EE40014001842809883A0000060668 -:2011A8002940018429403FCC010001440813EE4001400404010001840813EE40E00D883A6F -:2011B000800B883A01000044081458C0B9003FCC08140640008004048080021E0140030443 -:2011B8000000010601400204010008840813EE40B1803FCCA97FFFCCA13FFFCC08140D40B0 -:2011C00099403FCC91003FCC0814024089403FCC010001C4DFC00917DF000817DDC007171F -:2011C800DD800617DD400517DD000417DCC00317DC800217DC400117DC000017DEC00A045E -:2011D0000813EE41DEFFFD0429BFFF84DC400115DC000015DFC0021531803FCC0080004413 -:2011D80024403FCC2C003FCC11800436008000848880071E8805883A000008068800061E4C -:2011E0008005003A00C000841885C83A000003060005883A0000010600800084880A913A15 -:2011E8008C47883A10803FCC100491BA18C7883A28CAB03A214AB03A288AB03A29403FCC76 -:2011F000010006440813EE40008000C48080041E01401744010004040813EE4000001206DF -:2011F80001401604010004040813EE400080008488800D1E0080004414000B368080021EBA -:201200000140148400000106014014C4010003840813EE400100FA040815F14001000504AD -:201208000813E64000000B06014016C4010003840813EE400100FA040815F1400100050431 -:201210000813E640008000C48080021E0140040400000106000B883A010006040813EE40A8 -:20121800000B883A01000D84DFC00217DC400117DC000017DEC003040813EE41DEFFFD04AB -:20122000DC4001152023883A01000504DC000015DFC002152821883A0813E6408C403FCCA3 -:2012280000C0008488C00A1E81403FCC00C0004428C0031E1080240C108024200000060679 -:201230002800031E1080220C10802220000002061004D07A1080004CDFC00217DC40011797 -:20123800DC000017DEC00304F800283ADEFFEC0400800104DC000A15040020B48421400496 -:20124000D880070D00800204D880078D808007030280040400C040045084983A01820004EB -:2012480083000A83D880080D80800743020020B4DFC013151884983ADF001215DDC01115EB -:20125000D880088D80800783DD801015DD400F153084983ADD000E15DCC00D15D880090D92 -:20125800D8800984D880001580800804D880011580800844D880021580800884D8800315F3 -:20126000808008C4D8800415D880051580800904DC800C15203F883ADC400B15D800098572 -:20126800D8800615422170040009883A034001040380200403C100040480100404C0020438 -:2012700005000144054001840580004405FFFEC40700008440C000432023883A4080000325 -:2012780019803FCC3340071E62403FCC4800031E027FFBC44884703A00000A064F00091EC8 -:2012800000009C063500061E62403FCC4800021EB884703A000003064D80021E00009506C7 -:20128800A980943611C4703A10803FCC100091263185883A1085883AD885883A10800017DD -:201290004240008B108000031085883AD885883A1080070B1256703A5AFFFFCC580085264D -:201298004A40004C2AC03FCC4A40005C5A40811E427FFE8B4A4007844FC07E3602C0004424 -:2012A000024020B48080050D80000385800003C582C004058000048510BFFFCC4A614004D9 -:2012A8001380502670800B36128047265080033613401C2614C0222600006E0600C00804F3 -:2012B00010C0432614806B1E008000848080030500004B0613C04E267880083602C04004E8 -:2012B80012C0432600C0800410C0621E008000C480800305008000840000410602C40004E6 -:2012C00012C04A2600C8000410C0512602C2000412C0581E00800104808003058000034554 -:2012C8000000510618C03F4C18C00060480003054800034548C0038548C003C500002006AE -:2012D000008000441A3FFFC4014020B48080030542003FCC01C000842961400400800044DD -:2012D8003A0005360200008429C003452A00040531C0021E000011062800034518FFFF04E5 -:2012E00018C03FCC10C00A2E0080018430800A1E01400704081553C000C020B418E16E04AB -:2012E80010C5883A1080000B10812C300000030600800044000001060005883A80800385A4 -:2012F0008805883A000030060080008400000906008000844880030500800044488003459E -:2012F800003FF706008000844880030500000B06008000C44880030548000345003FF006DC -:20130000808003450080010480800405003FEC06008000C44880030500800084488003459E -:201308000080014448800405003FE5060080010448800305008000844880034500800144D7 -:201310004880040500801E0448800485003FDC0600800104808003050080008480800345FF -:20131800008001848080040500801E0480800485003FD306210000440080074442000704E7 -:2013200020BF541E00BFFFC4DFC01317DF001217DDC01117DD801017DD400F17DD000E177B -:20132800DCC00D17DC800C17DC400B17DC000A17DEC01404F800283A20803FCCDEFFF90496 -:201330001080201CDC400415DFC00615DC800515DC00031510BFE0042823883A10000A0E90 -:201338002025883A000B883A01001DC40814CB80D880028510C03FCC0100004420C02E3635 -:2013400094001FCC000001062021883A08152C80014001040009883A0815294008152AC09D -:201348008804D63ADC000005DC400105D88000458804D43A84003FCCD88000858804D23AAB -:20135000D88000C50080100480800426008012048080041E00BFE1C40000030600BFE54495 -:20135800000001060080004401400184D809883AD880014508152800010001440815324089 -:201360001021883A0440004401400044D900028408152940D8800287100003168000051EDB -:20136800081538000000030608153600147FF626003FFA06D8800283DFC00617DC800517B5 -:20137000DC400417DC000317DEC00704F800283ADEFFF604DC000515000B883A2021883A90 -:2013780001001244DFC00915DCC00815DC800715DC4006150814CB8010803FCC100002269F -:201380000005883A0000430601000144081532401023883A0480004404C03FC4014000445F -:20138800D900048408152940D880048314C003268800051E08153800000003060815360026 -:2013900014BFF626003FFA06D8C0048300803F8418BFEB1E01400484D809883A08152940DB -:201398008080010310C0008C18001326D8800183D8C001C3D9400143108000CC1004923AB3 -:2013A000294003CC10C8B03AD88002031006D1BA2105883A1085883AD900028310C4B03ADA -:2013A800D8C002432008D1FA18C000CC18C7883A20C8B03A000010061080010C10000B264A -:2013B000D88001C3D9000203000B883A10800FCC1004923A1104B03A1006923AD88002438D -:2013B800010004441884B03A00000306000B883A0009883A0005883A10BFFFCC10C0004430 -:2013C00021003FCC28803FCC2085883A10BFFE441884983ADFC00917DCC00817DC80071754 -:2013C800DC400617DC000517DEC00A04F800283ADEFFF60401402074DCC007150180028463 -:2013D0002027883A295D5704D809883ADD000815DC400515DFC00915DC800615DC00041517 -:2013D800050000C408155940044000440815264008152C800815308001400284D809883A6B -:2013E00008152800000B883A98000015010010040814CB8010803FCC1440511E01406A8425 -:2013E800010012040814CB8010803FCC1440271E01400104D900028408152940D8800303AA -:2013F0001440471ED8C0034300802A841880441E0100FA04081532400815360014400326C0 -:2013F8000815360014400C1E000006060150003401003A440814CB8010803FCC103FF61E8F -:20140000003FF706000B883A01001E840814CB8010803FCC100002260021883A00000906F4 -:2014080001400104D900028408152940D88002831080100C1000021E0400010400000106D0 -:20141000040003040815380000002606000B883A01003A440814CB8010803FCC8880032EA9 -:201418000400004404801044000002060400008404BFFA4401003E840815324094803FCC92 -:201420000815360014400426081536001000081E0021883A00000606000B883A9009883A3B -:201428000814CB8010803FCC103FF51E003FF60608153800000B883A01001EC40814CB8099 -:2014300010803FCC100001260021883A01408004010014040814CB8010803FCC10000126D0 -:201438000021883AA0BFFFC41029883A10803FCC84803FCC10000A26903F9C260080004455 -:201440009C000105988000159809883A0814DD0010BFFFC49880021508152EC0000001068E -:20144800903FF61E08152A809005003ADFC00917DD000817DCC00717DC800617DC400517E5 -:20145000DC000417DEC00A04F800283A20800217DEFFF804DC000115DFC00715DD40061508 -:20145800DD000515DCC00415DC800315DC400215DC0008171180313684BFFFCC90002F263B -:20146000208001032827883A3823883A1080020C300B883A1000011E300A927A0100144431 -:201468000814CB8010803FCC100002260400008400001F0601001904081532400500004487 -:2014700005403FC401400044D809883A08152940D88000031540052608153800D8C000039B -:2014780000803F8418BFF11E0000030608153600153FF426003FF806008080841445C83A45 -:20148000897FFFCC1421C83A280002260009883A08152940900B883A9809883A081529405B -:20148800817FFFCC0009883A081529400021883A08152A808005883A00000106008000C4EC -:20149000DFC00717DD400617DD000517DCC00417DC800317DC400217DC000117DEC008044C -:20149800F800283A018001B401406734010020B43186A004297F30042104100408165E0106 -:2014A000280D883A200B883A010020B42104100408167341280D883A200B883A010020B4AF -:2014A8002104100408166F41F800283AD0A2018300C020B418C4340410801FCCD0A20185B2 -:2014B00018800035F800283AD0E2018300BFE0041884B03A00C020B4D0A2018518C43404F6 -:2014B80010803FCC18800035F800283A01800A7401406734010020B4318CB804297F30044D -:2014C0002104100408165E01018001B401406734010020B43186A004297F300421041004FF -:2014C80008165E01D0A20B1710000B1EDEFFFF04015A5E04213FFFCCDFC00015081553C00E -:2014D000D0A20B150815F5C00005883ADFC00017DEC00104F800283A00800044F800283A00 -:2014D800DEFFFF04DFC000150815F980D0E20B1710C5803ADFC00017DEC00104F800283AB4 -:2014E000D0220B15F800283A20001B16000F883A28001616200D883A29001A2E008008041E -:2014E80000C000440000010610000D26294B883A10BFFFC418C7883A293FFB360005883ACD -:2014F000180007260005883A31400236314DC83A10C4B03A1806D07A280AD07A183FFA1E96 -:2014F800380001260085C83AF800283A014BC83A39C0005C003FE7060109C83A01C00044B4 -:20150000003FE30600C00044003FEE0620001716000F883A2005883A280012162900162EAA -:201508000180080400C000440000010630000A26294B883A31BFFFC418C7883A293FFB36A8 -:20151000180005261806D07A114001361145C83A280AD07A183FFB1E380001260085C83A5E -:20151800F800283A014BC83A003FEC060109C83A01C00044003FE70600C00044003FF10663 -:20152000200D883A2900152E280014160080080400C000440000020610000E2628000516DF -:20152800294B883A10BFFFC418C7883A293FFA36180008260005883A31400236314DC83A6C -:2015300010C4B03A1806D07A280AD07A183FFA1EF800283A0005883AF800283A00C000440B -:20153800003FF4062005883A2900122E280011160180080400C000440000020630000C26C0 -:2015400028000516294B883A31BFFFC418C7883A293FFA36180006261806D07A11400136F2 -:201548001145C83A280AD07A183FFB1EF800283AF800283A00C00044003FF7060005883A84 -:201550002000072620C0004C2008D07A180001261145883A294B883A203FFA1EF800283A32 -:20155800F800283A218D883A218008262080000328C0000310C0022610C5C83AF800283A23 -:201560002100004429400044003FF7060005883AF800283A2005883A2007883A218D883ABC -:20156800198005262900000318C0004429400044193FFFC5003FFA06F800283ADEFFF5041F -:20157000DFC00915DC400815DC000715D9C00A1500802074109F3904144000172800040E10 -:20157800008022C48880001500BFFFC400001C0600C08204D8C0000DD9000415D90002155F -:201580002800022628FFFFC4000001060007883AD8C00515D8C003151100001700FFFFC4F5 -:20158800D8C0008D00C0207418D739042821883AD9C00A04D80B883AD8C00115D8000615A6 -:2015900008157B8000FFFFC410C0020E00C022C488C0001580000226D8C004171800000506 -:20159800DFC00917DC400817DC000717DEC00B04F800283A3000152631BFFFC4218D883AAA -:2015A0002080000328C0000311C03FCC1A003FCC39C0201C4200201C39FFE004423FE00468 -:2015A8003A00061E21800426380003262100004429400044003FF2061007883A18C03FCC94 -:2015B00010803FCC10C5C83AF800283A0005883AF800283A2005883A200F883A30000C26F4 -:2015B8002A00000338C0004431BFFFC43A00000542003FCC4200201C423FE00429400044DB -:2015C000180F883A403FF51E198D883A00000106F800283A30C003261800000518C0004475 -:2015C800003FFC06F800283A214B883A2005883A1140021E1105C83AF800283A10C0000799 -:2015D000183FFC2610800044003FF906DEFFFB04DC800315DC400215DC000115DFC0041543 -:2015D8002025883A2823883AD98000053821883A04000A0E8880011701C00044D80D883A7E -:2015E000880B883A9009883A103EE83A843FFFC4103FF72600BFFFC4000001060005883A89 -:2015E800DFC00417DC800317DC400217DC000117DEC00504F800283ADEFFE504D8C008041F -:2015F000DDC01815DD801715DD401615DD001515DCC01415DC801315DC401215DC001115AB -:2015F800DFC01A15DF0019152029883A2823883A382D883AD9800F150021883AD8000E155E -:20160000D8000A15002B883A0027883A0025883AD8000C15D8000B15002F883AD8C009157E -:20160800D8C00F171900000320803FCC1080201C10BFE00410011E2600C00044B8C01426B3 -:201610001DC00216B80006260001150601400084B9401D26014000C4B9402B26000110065E -:20161800014009441140FC2688800117D900000501C00044D80D883A880B883AA009883A47 -:20162000103EE83A1000D81E840000440001040601400C041140FA260140094411400A1E98 -:20162800D880000588800117B80F883AD80D883A880B883AA009883A103EE83A1000CA1ECD -:20163000840000440000F50625FFF404BDC03FCC00C002441DC0093600BFFFC49080042655 -:20163800014002849009883A081553C0000001060005883AB8A5883A0000E20601400B849B -:201640001140E42605C00084213FF40427003FCC00C002441F00093600BFFFC49880042634 -:20164800014002849809883A081553C0000001060005883AE0A7883A0000D90600C01B0453 -:2016500010C0D226013FFFC499000226D8000B150000010604C0004401001A44110016263B -:2016580020800916010018C4110088260100190411001126010016041100C81E00C000449B -:20166000D8C00E150000150601001CC4110098262080041601001BC41100C01E0540020410 -:2016680000000F0601001D4411000D2601001E0411000A260000B906D8C00A17B70001040F -:2016700018000726DF000D15B5C00017B800080E05EFC83A024000440000060605400404E5 -:20167800B0C00104D8C00D15B5C00017D8000A150013883AD839883AB8001726A80B883A8E -:20168000B809883ADA40101508154800A80B883A1009883A102D883A081553C0B885C83A65 -:2016880000C00244DA4010171880021610800C0400000506D8C00E171800022610800DC442 -:2016900000000106108015C4E0800005B02F883AE7000044003FE806E6EFC83A9DC5C83A31 -:201698000080090EE085883A01400C04D8C00917E009883AE0C0032EE7000044214000055E -:2016A000E0BFFA1EE6EFC83AD8C00B174DD1883A922DC83A1800162648000A2600800B44A6 -:2016A800D88008058880011701C00044D9800804880B883AA009883A103EE83A10004A1E8B -:2016B000840000440580070EB00F883A01800C04880B883AA009883A081574C01000421E25 -:2016B80085A1883AE02D883ABF2FC83A000020060580090EB00F883A01800804880B883A46 -:2016C000A009883ADA401015081574C0DA4010171000351E85A1883A483FF22600800B4415 -:2016C800D88008058880011701C00044D9800804880B883AA009883A103EE83A10002A1E8B -:2016D00084000044003FE706B5BFFFC4B080000301C00044D9800804D880080588800117AD -:2016D800880B883AA009883A103EE83A10001E1E8585C83AB5C9883AE085883A013FF216BB -:2016E0001021883ADD800D1700004406008000441480080E95FFFFC4B80F883A0180080451 -:2016E800880B883AA009883A081574C010000E1E85E1883AB080001701C00044D80D883A7A -:2016F000D880000588800117880B883AA009883AB5C00104103EE83A1000031E84000044BA -:2016F800B82D883A00002D0600BFFFC400003106B5C00017B7000104B809883A0815DEC0B9 -:201700009091C83A102D883A0200090E400F883A01800804880B883AA009883ADA00101531 -:20170800081574C0DA001017103FEF1E8221883A88800117B00F883AB80D883A880B883A31 -:20171000A009883A103EE83A103FE71E85A1883AE02D883A0000110600C0004404FFFFC4F2 -:20171800D8000E15D8C00A15054002849825883AD8000C15D8000B15182F883A00000806AD -:20172000DDC00B1505C000840000050600C00044D8C00C1505C000C400000106002F883A5A -:20172800D8C00F1718C00044D8C00F15003EDC068005883ADFC01A17DF001917DDC01817F9 -:20173000DD801717DD401617DD001517DCC01417DC801317DC401217DC001117DEC01B0468 -:20173800F800283A2880000B10C0020C1800202628C0008FDEFFFD04DC000015DFC002154C -:20174000DC4001152821883A1800150E10C0800C180013262C40051789C0030E10C0200C86 -:201748001800032600000E063C40010E3823883A81000417300B883A880D883A0815D8C0DF -:20175000808005171445C83A80800515808004171463883A844004150005883A00000606E4 -:20175800108010148080000D00BFFFC40000020600BFFFC4F800283ADFC00217DC4001175E -:20176000DC000017DEC00304F800283A2005883A218F883A290002361007883A00000C06D2 -:201768002987883A20FFFC2E380B883A30CDC83A1989883A2000052618FFFFC419000003FD -:20177000297FFFC429000005003FF906F800283A19C005262900000318C00044294000442F -:20177800193FFFC5003FFA06F800283A2005883A10C000071800022610800044003FFC0689 -:201780001105C83AF800283ADEFFFF040100207401402074DFC00015211D6204295F3D046C -:201788002140061E010020740140207421000804294008042140121E00000B0600C02074BA -:2017900018DF3D041907C83A0005883A10FFF526114F883A39C00017110D883A1080010447 -:2017980031C00015003FF9060100207401402074211A1B04295A1B042140101E00000B06E7 -:2017A00000C0207418C008041907C83A0005883A10FFF526114F883A39C00017110D883ACC -:2017A8001080010431C00015003FF90608167F00DFC00017DEC001040816860100C0207459 -:2017B00018DD62041907C83A0005883A18BFF726114F883A39C00017110D883A108001043A -:2017B80031C00015003FF906DEFFFF040009883ADFC000150815F1800815F380D1A20C17BA -:2017C000D1620D17D1220E17DFC00017DEC001040812024108167701DEFFFF04DFC00015BA -:2017C80008168640008000441001703ADFC00017DEC00104F800283A008020B410840004FF -:2017D000D0A21015010020740080673410BF3004211EE304D0A20F1508164001D0E20F17BC -:2017D800D0A2101718000A2610C001040100020419000035013FFFD4110002351100033542 -:2017E00000800104188000350005883AF800283A00BFFFC4F800283AD0A20F1710000926C3 -:2017E800D0E2101718800404100000351080003718C005371806943A10BFFFCC1884303ABC -:2017F000F800283A00BFFFC4F800283AD0A20F17F800283A20001D262804923A20C030172F -:2017F800DEFFFD04DC400115DC000015DFC002152823883A2021883A108000D418800335D6 -:2018000080C03017188000371080004C100003260100004408167700003FF9061980003775 -:201808003007D0BA3009D0FA18C001CC2100020C1908B03A3007D07A18C0040C1906B03AAB -:2018100088C0042600BFF4840000020600BFFA84F800283ADFC00217DC400117DC00001791 -:20181800DEC00304F800283A20000A26280009263000082620800C173080001520800C1761 -:201820001000062621000D04290000150005883AF800283A00BFFA84F800283A00BFFEC4C3 -:20182800F800283A2005883A20001D262809883A28001B1610C0311728C0192E11403417CD -:2018300028FFFFC41906703A1800151EDEFFFE04DC000015DFC001151021883A08154800BD -:201838001004923A00C0403418FFC00410C4703A80C03017108000941880033580C0301721 -:2018400018C00404188000371080004C10000626008000441880003500BFFEC400000206A7 -:2018480000BFFA84F800283ADFC00117DC000017DEC00204F800283ADEFFF504DC00011579 -:20185000DFC00A15DF000915DDC00815DD800715DD400615DD000515DCC00415DC80031532 -:20185800DC400215DC000B1728003A163023883A300038162027883A20003626382B883A8A -:2018600038003426208031173080322E2880312E208034173147C83A10C7C83A1C002D361A -:2018680080002C1610BFFFC4114A703A2800291E0029883A05BFFFC405C000C40700010491 -:2018700080002226DD800015890000CC20000626E105C83A8025883A1400012E1025883AF4 -:201878008923C83A00000406BC0002368025883A0000010604800104AD0B883A900D883AD4 -:20188000D909883A0815594098802E17D8C00017A4A9883A84A1C83A8885883A10C00035D8 -:20188800988030171080040410C0003718C0008C1800042600C0008410C0003500BFFEC4D2 -:20189000000005068C400104003FDD060005883A0000010600BFFA84DFC00A17DF00091770 -:20189800DDC00817DD800717DD400617DD000517DCC00417DC800317DC400217DC00011770 -:2018A000DEC00B04F800283A20001626DEFFF604DD000515DFC00915DDC00815DD80071507 -:2018A800DD400615DCC00415DC800315DC400215DC0001153029883A30000C262021883A1A -:2018B00020802E1780C02F172823883A2885883A382B883A3889883A10C0042E20C005366C -:2018B8000000020600BFFA84F800283A00BFFA8400002406814034178809883A002D883ABC -:2018C00008154800102F883A80803317B8801C2EA8001B2684C0341704E7C83A9C66703AC5 -:2018C8008CC002268CE5C83A000001060025883A980B883A8009883A08160A401000111ED4 -:2018D0008080341714A5C83AAC80012EA825883ADC800015A58F883A880D883A980B883AE5 -:2018D8008009883A081613801000061EACABC83AB4AD883A8CA3883ABDC00044003FE2066B -:2018E0000005883ADFC00917DDC00817DD800717DD400617DD000517DCC00417DC800317CB -:2018E800DC400217DC000117DEC00A04F800283A200008263007883A3000062620802E1729 -:2018F000288B883A20802F17394D883A2880012E3080023600BFFA84F800283ADEFFFF04FF -:2018F800380D883A1809883ADFC00015081559400005883ADFC00017DEC00104F800283A02 -:2019000020004E262080301710004E2620C03217DEFFFB04DFC00415DCC00315DC800215E4 -:20190800DC400115DC00001518001E1E1480023700C0030494803FCC90BFFAC41880433677 -:20191000100490BA00C0207418D9160410C5883A108000171000683A008164C4008164D4A8 -:20191800008164DC008164CC0081648C0081654C0081654C0081654C0081654C0081654CD2 -:201920000081654C008164940081649C0440800400001306044100040000110604420004F0 -:2019280000000F06148001370080058494803FCC90800A2600800604908004260080050409 -:201930009080221E0440080400000506044040040000030604401004000001060440200494 -:2019380024C034172021883A8809883A980B883A081553C080C0311710C0021E80C0331773 -:2019400088C0022680000C150000100600C000448480361580C00C1580000D1580800E15E7 -:2019480084400F1584C01015D16021048009883A08167F400005883A0000050600BFFA84A1 -:20195000F800283A00BFFB44F800283A00BFFB44DFC00417DCC00317DC800217DC400117AE -:20195800DC000017DEC00504F800283A300001260005C03200FFFF042005883A28C6703AAC -:20196000110DC83A30C0042E11800017300DC0F210800104003FFA06294000CC00C000C401 -:2019680028C0041E10C0000B1807C0B2108000830000080600C0008428C0031E1080000BE0 -:201970001005C0B20000040600C0004428C0021E108000031005C0720005C132F800283A8E -:20197800DEFFFD04DC400115DC0000152823883A2021883A014001443009883ADFC0021507 -:20198000081553C0100B883A8809883A0815480010BFFFC480C00204180000350100004418 -:201988008100043511003FCC810000351004D23A10803FCC80800135008020041880003551 -:20199000DFC00217DC400117DC000017DEC00304F800283A3180004C294B883A298B883AB0 -:2019980021400335210004040080240420800035208000371080008C103FFD1E20800037BC -:2019A0001004D1FA1080004CF800283A20C004042800022600801A040000010600800804A9 -:2019A80018800035188000371080008C103FFD1E20800337F800283A29403FCC21400335BC -:2019B000210004043000022600801404000001060080040420800035208000371080008CA7 -:2019B800103FFD1E208000371004D1FA1080004CF800283A21C004042805883A02000B04D0 -:2019C000210003041147C83A1980090E3A00003538C0003718C0008C183FFD1E2800022611 -:2019C80020C0003710C0000510800044003FF506F800283A21C003042805883A21000404AB -:2019D000020007041147C83A1980080E10C0000338C000352200003520C0003718C0008C0F -:2019D800183FFD1E10800044003FF606F800283A014AAAF4DEFFFE04296AAA84DC0000159A -:2019E000DFC001152021883A0815480010000F2601600034013555740007883A297FFFC4BD -:2019E80021155584297FFFC4283FFE1E18C000448121883A18BFFB168405883A1421883A38 -:2019F000843FFFC4803FFE1E000004068405883A1421883A843FFFC4043FFE160005883A86 -:2019F800DFC00117DC000017DEC00204F800283AF800283A20000226208002171000101E8E -:201A0000D0A0201710000926DEFFFF04DFC00015103EE83A00C0058410C0001500BFFA8471 -:201A0800DFC00017DEC00104F800283AD0A2110400C0058410C0001500BFFA84F800283ABF -:201A10002880001721400115208000152880001711000115290000150005883AF800283A86 -:201A1800F800283A000170FAF800283A73616C4672652068006573616F727265642520729E -:201A20000000000073616C4672772068006574696F7272650000007273616C46657620685A -:201A2800206669726C6961660000000053206F4E6163204464206472002E7465252073250B -:201A300000632575252E75256B75322E25207A482E252E757A4875320000000064616F4C86 -:201A38000000646564616F4C696166200064656C00007325746F6C5300752520657661533D -:201A40000000006465766153696166200064656C4353534F776620207525202E322E252E1E -:201A48000000007574696E49727265202020726F000064252020202053204F4E00434E59E8 -:201A5000343130323130322D6D202037737172610000000074736554746170206E72657496 -:201A5800000000003A31564142475220000000533A31564173475220000000423A315641AC -:201A600062505920000072503A32564162505920000072503A325641734752200000004218 -:201A68003A33564142475220000056483A33564142475220000000533A335641734752203F -:201A7000000000423A33564162505920000072507473614C65737520000000640081695480 -:201A780000816964008169700081697C0081698800816994008169A0008169AC008169B88E -:201A8000008169C4008169D000000000000001000101010000000100000000000B000110BD -:201A880000034406800000011A1A80800000001A7365725000000073666E6F43006D726947 -:201A90006D73694D686374616572202C00797274646F4D567325203A00000000203A4F4C21 -:201A980056207525203A4D5300007525666F725020656C6964616F6C0000003A7365727005 -:201AA0002D30207300000039000000310000003200000033000000340000003500000036C8 -:201AA8000000003700000038554E454D0000000000004B4F4B43414200000000000050552A -:201AB0004E574F44000000005446454C0000000048474952000000544F464E490000000009 -:201AB8005F44434C4B4341424847494C000000544E414353454E494C444F4D5F0000004582 -:201AC0004E414353454E494C5059545F000000454E414353454E494C544E495F0000002B56 -:201AC8004E414353454E494C544E495F0000002D454E494C544C554D444F4D5F000000454C -:201AD0005341485000002B455341485000002D45464F52505F454C494B544F480000594578 -:201AD8003EA93E293EE93E693E993E193ED93E593EC93E393E1D3E4D3E2D3EED3EAD3ECD06 -:201AE0003E653E6D1C483E011C501C181CC81CD05ED85E5800003EB900816A8800816A8CB8 -:201AE80000816A9000816A9400816A9800816A9C00816AA000816AA400816A840081710C53 -:201AF00000816AA800816AB000816AB400816ABC00816AC000816AC800816AD000816AD886 -:201AF80000816AE000816AF000816B0000816B1000816B2000816B3000816B4000816B48B8 -:201B000000816B504353534F0000000061766E492064696C67616D690000006561766E49D9 -:201B08002064696C646165680000726561766E492064696C2072646800435243696C615652 -:201B1000697461646420676E0061746162207525736574790000000061766E492064696CBC -:201B1800617461644352432000000000252E75252575322E00732573636E6143656C6C6512 -:201B20000000006461647055676E69740057462061656C70772065732E74696100002E2E6F -:201B2800697265566E6979666C6620670068736172746552676E69796470752000657461C5 -:201B300061647055203F65742C593D314E3D322000000000202020200000752564206425DC -:201B3800000067656C20752573656E6900000000252E75252075322E000073756D2064250C -:201B400000000056702075256C657869000000732525752500000000656469566E69206F0E -:201B48006F7270203E20206300000000706D6153676E696C74706F203E20202E00000000D1 -:201B5000636E795374706F202020202E3E202020000000007074754F6F207475202E7470E7 -:201B58003E2020200000000074736F506F72702D20202E633E20202000000000616F4C3CE4 -:201B6000727020646C69666F003E20657661533C727020656C69666F003E20657365523CF2 -:201B680073207465697474653E73676E00000000657365526F6420740000656E2E77463CC5 -:201B700064707520206574613E202020000000002D204B4F736C7020736572207472617479 -:201B7800000000006C696166000064656E616353656E696C000000736E616353656E696C1B -:201B8000727473200000002E6E616353656E696C70797420000000656E616353656E696C62 -:201B8800696C61202E6D6E670000000069726F48746E6F7A6D206C61006B736174726556E0 -:201B90006C61636973616D200000006B6B73614D697262206E7468670073736570303432E5 -:201B98003838322F727020700000636F703438336F72702000000063693038343637352F5F -:201BA000727020690000636F703038343637352F727020700000636F693036393830312FF7 -:201BA8007020693000636F72656E694C6D2078330065646F656E694C6D2078340065646FBF -:201BB000656E694C6D2078350065646F656E694C66207835616D726F000000747836353228 -:201BB8002030343265707361000074636D2058540065646F74696E49206C616975706E69C0 -:201BC000000000746C616E417320676F20636E790046504C6C616E417320676F20636E7911 -:201BC800006874566E7973486F7420636172656C0065636E6E797356687420636873657228 -:201BD00000646C6F4C502D487250204C6F432D65007473614C502D486F50204C432D747358 -:201BD8007473616F00000000706D6153676E696C616870200000657370303834206E6920A7 -:201BE000706D61730072656C6F6C6C41565420775048205078324C4C000000007664413C87 -:201BE8006974202E676E696D3E2020200000000065646956504C206F000000465062505915 -:201BF0006E6920726C6F43200061705372502F5266666F200074657320592F477366666F83 -:201BF8000000746562502F4266666F200074657372502F52696167200000006E20592F4739 -:201C00006E6961670000000062502F42696167200000006E73202E486C706D6174617265E4 -:201C08000000006573202E486C636E7900006E6561202E48766974630000006561202E56AE -:201C1000766974630000006562202E48706B63616863726F0000000062202E56706B6361B1 -:201C18006863726F0000000000706F5474746F4200006D6F69726F48746E6F7A00006C612E -:201C2000747265566C6163690000000065746C4174616E7200676E690066664F6F7475413D -:201C280000000000756E614D00006C61494D4448000000000049564400373A3873736150F9 -:201C30007572687400000000656E694C00007832656E694C2820783229626F6200000000C9 -:201C3800656E694C00007833656E694C00007834656E694C00007835303239313830317813 -:201C400000000030303036313032317800000030303239313032317800000030656E6547CC -:201C48002063697200333A3478303233203034326974706F00002E6D783635322030343298 -:201C50006974706F00002E6D656E654720636972393A363100000000484D33336D28207A3C -:201C580000296E69484D30316D28207A002964654D352E3228207A482978616D00000000FA -:201C6000205654447030383400000000415345563034362030383478003036402E6365525F -:201C680031303620000000002E6365523930372000000000484D35394828207A2056544482 -:201C700000294949484D35334828207A2056544400002949484D36314528207A29565444F8 -:201C7800000000007A484D39445328200029565400006E4F44525355004154410000002061 -:201C80000081719C0000200020002CE5E926F4FD38BC200000000000008171A80000200097 -:201C88002000323EF113FA043B61200000000000303832313034327805000000177000F099 -:201C900001060618034810AA01120112783036390030343203C00000177000F00106049260 -:201C98000336108000220112783032330030343201400000177000F0010601AA031F1031BE -:201CA00012420112783635320030343201000000177000F001060155031910272482011231 -:201CA800703034320000000002D00000177000F00106035A033C1041000E011236333531E9 -:201CB0003034322A06000000177000F0010607FE039610EA08020112303832313838327836 -:201CB800050000001388012001380618034810AA01120112783036390038383203C000004D -:201CC00013880120013804920336108000220112783032334C30343201400042138800F07E -:201CC800013801AA031F293102420112783635324C30343201000042138800F001380155F1 -:201CD0000319292704820112703838320000000002D000001388012001380360033C104123 -:201CD800000E0112703438330000000001F000001686018001A70280033E1D32000E0204E0 -:201CE000783034360034383302800000157C018001EC032002603F30000E02106930383499 -:201CE8000000000002D00000176A00F0020D035A033C1041000F031270303834000000006D -:201CF00002D00000176A01E0020D035A063E1E3C000C041478303436003038340280000042 -:201CF800177001E0020D032002602130000C051478303436003231350280000017700200A5 -:201D00000238032002601C3000040010693637350000000002D00000138801200271036035 -:201D0800033C1041000F0312703637350000000002D000001388024002710360063C2041CD -:201D1000000C04047830303800303036032000001770025802740420048017580004001054 -:201D1800703032370000000005000000176A02D002EE0672052814FF0004000830383231CB -:201D20003032377805000000177002D002EE0672052814DC000400103432303138363778B7 -:201D280004000000177003000326054006881DA00004001030383231323031780500003431 -:201D300017700400042A0698037026F800040010783034366930363902800000176A01E099 -:201D3800041A032002602130000D0614303830310000006907800000176A021C046508980F -:201D4000052C10BC000D0608303830310000007007800000176A043804650898052C24BCD4 -:201D4800000400083032393138303178078000301770043804650898052C24940004001012 -:201D5000303036313032317806400030177004B004E2087003C02EFF00040010FFFFFFFF92 -:201D5800FFFFFFFF0000FFFF7665642F6370652F6F635F716F72746E72656C6C615F305F39 -:201D60006D5F6C7600006D65000000000000000000000000000000000000000000000000E3 -:201D680000000000000000000000000000000000000000000000000000000000000000005B -:201D7000000000000000000000000000000000000000000000000000000000000000000053 -:201D780000000000000000000000000000000000000000000000000000000000000000004B -:201D8000000000000000000000000000000000000000000000000000000000000000000043 -:201D880000000000000000000000000000000000000000000000000000000000000000003B -:201D9000000000000000000000000000000000000000000000000000000000000000000033 -:201D980000000000000000000000000000000000000000000000000000000000000000002B -:201DA000000000000000000000000000000000000000000000000000000000000000000023 -:201DA80000000000000000000000000000000000000000000000000000000000000000001B -:201DB000000000000000000000000000000000000000000000000000000000000000000013 -:201DB80000000000000000000000000000000000000000000000000000000000000000000B -:201DC000000000000000000000000000000000000000000000000000000000000000000003 -:201DC8000000000000000000000000000000000000000000000000000000000000000000FB -:201DD0000000000000000000000000000000000000000000000000000000000000000000F3 -:201DD8000000000000000000000000000000000000000000000000000000000000000000EB -:201DE0000000000000000000000000000000000000000000000000000000000000000000E3 -:201DE8000000000000000000000000000000000000000000000000000000000000000000DB -:201DF0000000000000000000000000000000000000000000000000000000000000000000D3 -:201DF8000000000000000000000000000000000000000000000000000000000000000000CB -:201E00000000000000000000000000000000000000000000000000000000000000000000C2 -:201E08000000000000000000000000000000000000000000000000000000000000000000BA -:201E10000000000000000000000000000000000000000000000000000000000000000000B2 -:201E18000000000000000000000000000000000000000000000000000000000000000000AA +:2000080006C02074DEE8001406802074D6BFEB140080207410A1F81400C0207418E31F14A3 +:2000100010C00326100000151080010410FFFD360816074008161540003FFF06DEFFFB04E3 +:2000180000BFE084D880000500800084D880004500800344D880008500800484DFC0041543 +:20002000D88000C531803FCCD8C005173000022600BFE004000001060080100439C03FCC99 +:20002800380E91FAD900018518C000CC39C0021410800214D80B883A01000044D8800105E7 +:20003000D9C00145D8C001C5D8000205D8000245D8000285D80002C5D8000305D800034577 +:20003800D8000385D80003C5081042C0DFC00417DEC00504F800283ADEFFFC04DC00001505 +:20004000040020B484041804DC80021504801304DC400115900B883A2023883A000D883AB3 +:200048008009883ADFC0031508168C0089403FCC8009883A000D883A081692400440004486 +:20005000900B883A8009883A880D883A08168C00880B883A8009883ADFC00317DC80021719 +:20005800DC400117DC000017DEC0040408168F81DEFFFC04DC000015040020B48404180443 +:20006000DC800215DC4001152025883A2823883A8009883A000D883A01401304DFC003159E +:2000680008168C0091403FCC8009883A000D883A081692400180004489403FCC8009883A04 +:20007000DFC00317DC800217DC400117DC000017DEC0040408169241DEFFFF0421003FCC78 +:20007800DFC0001508100F80DFC00017DEC00104F800283ADEFFFF0429403FCC21003FCCDA +:20008000DFC00015081017000005883ADFC00017DEC00104F800283ADEFFFB04DCC0031573 +:20008800DC800215DC400115DC000015DFC004152825883A3027883A2023883A2821883AD2 +:200090008485C83A14C0060E8140000389003FCC84000044081017008C400044003FF806C1 +:200098000005883ADFC00417DCC00317DC800217DC400117DC000017DEC00504F800283A74 +:2000A000DEFFFF040140FA04DFC0001508157A801009883ADFC00017DEC0010408161801EB +:2000A800DEFFFF04000B883A010003C4DFC0001508101F40000B883A01001844DFC00017B8 +:2000B000DEC0010408101F41DEFFFD04DC000015040020B484220D0481400083010001442D +:2000B800DFC00215DC40011508101F40808000838100030300FFFEC41004D1FA20C6703A8F +:2000C000044001041085883A1085883A1884B03A01400F448809883A8080030508101F403D +:2000C80001000044081028008809883A0140074408101F4001400C040100184408101F4018 +:2000D00001402C840100024408101F4001403E040100028408101F4001400DC4010002C407 +:2000D80008101F40000B883A010003C408101F40000B883A0100324408101F40000B883AFD +:2000E0000100328408101F40000B883A010032C408101F40000B883A0100330408101F401B +:2000E800000B883A0100334408101F40000B883A0100338408101F40000B883A010033C47B +:2000F00008101F40000B883A0100340408101F408140010301003844DFC00217DC400117CE +:2000F800DC000017DEC0030408101F41DEFFFE04DC000015040001048009883ADFC00115FF +:2001000008101D80108002148009883A11403FCC08101F4001400C0401001844DFC0011701 +:20010800DC000017DEC0020408101F41DEFFFE04DFC00115DC00001521003FCC2000021ED7 +:20011000000B883A00003B062821883A28003D2601400044010003C408101F40814000C3E3 +:200118000100160408101F40814001030100164408101F40814001430100168408101F4087 +:2001200081400183010016C408101F40814001C30100170408101F408140020301001784AE +:2001280008101F4081400243010017C408101F40814002830100180408101F40814002C387 +:200130000100184408101F40814003030100188408101F4081400343010018C408101F40A5 +:20013800814003830100190408101F40814003C30100194408101F40808000C4000B883ADE +:200140008400040410C000031080004428CBC83A143FFC1E29401BC429403FCC01001744F2 +:2001480008101F40000B883A010003C408101F40014000C40100334408101F40008000445C +:20015000000001060005883ADFC00117DC000017DEC00204F800283ADEFFFD04DC0000154A +:20015800000B883A2021883A010003C4DFC00215DC40011508101F40044030448809883A85 +:2001600008101D8084003FCC800AC03A10803F8C8809883A114AB03A08101F40014000C448 +:2001680001003184DFC00217DC400117DC000017DEC0030408101F41DEFFF904DCC0031537 +:20017000DC800215DC4001152025883A2823883A010001040140074404C020B49CE20D04FD +:20017800DD000415DC000015DFC006153821883ADD4005153029883A08101F4098C0030384 +:2001800081C0004C00BFFF441884703A39CF883A11CEB03A99C00305988003171080008C48 +:2001880010000226010000440810558001001C049C0000C308101D80108000CC8D4000CCC3 +:2001900000C00044100B883AA8C0052600C00084A8C0041E017FE004114AB03A000001065D +:20019800114010148080020C10000126294008148080004C10000126294004148080008C78 +:2001A00010000126294002148400010C800001262940011429403FCC01001C0408101F40C7 +:2001A800A800131EA50000CC00800044A080082600800084A0800E1E88803FCC1080201CAC +:2001B00010BFE004100050160029883A00004F0688803FCC1080201C10BFE0048D00100C8B +:2001B80010004A0E00BFE8041528B03A000047060029883A0021883A01001C8408101D807C +:2001C0001080070CA420B03A140AB03A29403FCC01001C8408101F40988003171080008CEC +:2001C800100002260140004400000106000B883A0100300408101F4001400544010001044A +:2001D00008101F40014004040100184408101F4094803FCC008000849080081E01402204BB +:2001D8000100188408101F4001400404010018C408101F4001402104000007060140060498 +:2001E0000100188408101F4001400404010018C408101F40014003040100190408101F4071 +:2001E80001000044081028000100010408101D801140074C0100010408101F400100190478 +:2001F000081028000100010408101D801140054C0100010408101F4004001904010003842C +:2001F80008101D801080040C1000321E010000440810280080BFFFC41021883A10BFFFCC1E +:20020000103FF61E00002B06053FE8048C400C0C008008048880081E018000C4D16000C442 +:2002080001001CC4081021800140207401800484295E2D840000090600800C0488800B1E56 +:20021000018000C4D16000C401001CC4081021800140207401800484295E248401001D844B +:200218000810218004000084003FA306008004048880081E018000C4D160000401001CC48C +:20022000081021800140207401800484295E2004003FF206018000C4D160000401001CC4EA +:20022800081021800140207401800484295E2904003FEA06000B883A0100030408101F40F0 +:20023000014010040100034408101F40014000440100038408101F40000B883A01000384C1 +:2002380008101F4008102A0000800044DFC00617DD400517DD000417DCC00317DC80021711 +:20024000DC400117DC000017DEC00704F800283ADEFFFD04DC400115DC0000152823883A66 +:200248002021883A000B883A010003C4DFC0021508101F400100164408101D808C403FCCEA +:2002500010800BCC8800051E81403FCC280A91BA29400414114AB03A00000106100B883A89 +:2002580029403FCC01001644DFC00217DC400117DC000017DEC0030408101F4100802074A7 +:20026000109FB40410C03217D0A20E151800042610803517108040180085C83AF800283A82 +:2002680000BFFFC4F800283ADEFFFD04DC400115280F883A2823883A200B883AD1220E177F +:20027000DC000015DFC002153021883A081661C010000B1E800D883A8463883A34400626A4 +:20027800308000031005C2721005D63A3180004430BFFFC5003FF9060005883A0000010691 +:2002800000BFFFC4DFC00217DC400117DC000017DEC00304F800283ADEFFFA04DC800315AF +:20028800DC400215DC000115DFC00515DCC0041530803FCC2023883A2825883A3021883AE1 +:20029000100003268805883A8C89883A00001706300A923AD1220E17081631001027883A6C +:20029800103FF82601402074010020B401800444295AB60421221404081594000180207408 +:2002A000010020B4980F883A319AB904014004442122140408158280008020B410A21C84CF +:2002A8001000000500FFCE0400001D061100062610C000031807C2721807D63A10800044C7 +:2002B00010FFFFC5003FF906800AD23A800C923AD1220E17280A943ADC800015880F883A4D +:2002B80008163A400007883A10000D2601402074010020B401800444295ABC042122140471 +:2002C0000815940001402074010020B401800444295ABF0421221C840815940000FFCDC490 +:2002C8001805883ADFC00517DCC00417DC800317DC400217DC000117DEC00604F800283A24 +:2002D000DEFFF904DD400515DD000415DCC00315DC800215DC000015DFC00615DC40011503 +:2002D8002825883A3029883A3827883A0021883A0007883A0540400484800F2E9423C83A8C +:2002E000AC40012E04404004980D883A880B883A8009883A08109A801000141E800D003A19 +:2002E800880B883A9809883A08167D801007883A84004004003FF0060005883A1D000C2637 +:2002F00001802074010020B4319AC104014004442122140408158280008020B410A21C84CB +:2002F8001000000500BFCD440000010600BFCD84DFC00617DD400517DD000417DCC0031747 +:20030000DC800217DC400117DC000017DEC00704F800283ADEFFFD04DC0001152021883A6B +:20030800010020B421221104DFC00215081519C010803FCC10000B2601802074010020B436 +:20031000319AC604014004442122140408158280008020B410A21C841000000500800044B6 +:200318000000090600808004010020B4D8800015000F883A000D883A800B883A212211042B +:2003200008153B8010803FCCDFC00217DC000117DEC00304F800283A014020B4010020B4B5 +:2003280029621C84212214040813C781014020B4010020B429623104212218440813C78120 +:20033000DEFFFC04DC0001152021883A01000044DFC00315DC4002150810558008103EC0A9 +:20033800000B883A0009883A081042C084003FCC800F003A000D883A000B883A01000044BA +:2003400008105B8080000D1E040020B484222104044020B4808003838C62354489C0050306 +:20034800D8800015000D883A000B883A0009883A081005C08880050380800AC50009883A3A +:20035000DFC00317DC400217DC000117DEC0040408105581DEFFFD04DFC00215DC40011551 +:20035800DC00001521003FCC2000271ED0A2104300C0020410C01D2600C0040410C00626A1 +:2003600000C0010410C01C1E0009883A081458C00100004400002E06040020B48422210493 +:200368008140011701006734213F300408156EC081000287014007041023883A08157A80BF +:2003700000C020B418E2508410C5883A1140000B8809883A08157A8000C072B418F0DFC41D +:2003780018800236010003C4000001060009883A081458C0000015060009883A081458C0AD +:200380000009883A00001206008020B410A2354410C00743044000841021883A1C400226A2 +:200388000009883A00000106010003C4081458C08100074320803FCC8880042E0080014412 +:200390001109C83A21003FCC00000106010000C4DFC00217DC400117DC000017DEC00304B5 +:200398000813F681DEFFF50400C020B4DFC00A15DF000915DDC00815DD800715DD40061523 +:2003A000DD000515DCC00415DC800315DC400215DC0001150089C40418C4300419800037C7 +:2003A800054020B4AD4430043000020E10BFFFC4103FFA1E29403FCC21003FCC040020B446 +:2003B0000814A5C084222104102D883A808002C310000426AC4000378823D43A8C4000CC6F +:2003B800000001060023883A01000DC40814050001000E041027883A081405001025883A22 +:2003C000108003CC1004923A01000E4414E6B03A9004D1BA1080004C808002450814050044 +:2003C80001000E841029883A08140500A8C00037010000848C403FCC89000E26010020B4D9 +:2003D00021222104210002C32000021E010063C424C0082E010000448900041E1827D4BA80 +:2003D8009CC1FFCC9927883A000005069480080C9000032698C0322805400044000002062C +:2003E00098C06428002B883A814002C3048020B4B1003FCC94A235442800131E2000212623 +:2003E80018002026D0E20F030140008419003FCC2100201C213FE0042900070E00C020B477 +:2003F0000100004418E22104D0220F05190002C5044001040000160618C00044D0E20F055C +:2003F8000023883A000012062000012618000D1ED1220F03017FFF0421803FCC3180201C3D +:2004000031BFE0043140040ED0220F05800002C50440010400000506213FFFC4D1220F05BA +:2004080000000106D0220F050023883A18007C26108003CC1004923A80C000171528B03A6B +:20041000008020B410A221041CC0051E10C00117A0C0031E10C00203A8803FCC1880022671 +:20041800D02213C500000C06D0E213C30080004419003FCC208008261887883AD0E213C5BF +:2004200018C03FCC1880041E88803FCC00C0008410C0012E1823883A91400283808008432B +:20042800010020B400C020B42122354418E2210428801E1E214002C31880088328801B1E62 +:2004300021400303188008C32880181E21400343188009032880151E214003831880094313 +:200438002880121E214001431880070328800F1E214001831880074328800C1E214001C3F2 +:20044000188007832880091E21400203188007C32880061E21000243188008032080031E4D +:2004480090C005C380800B831880042688803FCC00C0008410C0012E1823883A90C0054341 +:2004500080800B0318801126008020B410A22104110002870140070408157A8000C020B4F3 +:2004580018E252C410C5883A1080000300C0004410BFFF0410803FCC1880043688803FCCF4 +:2004600000C0008410C0012E1823883AD0A214C31000202685C0028701400704058020B42A +:20046800B809883A08157A80B5A24C8487000403B085883A1140040BE009883A08157A800C +:20047000173FFFCC80800B83A0FFFFCC10000A2601400704B809883AD8C0001508157A8080 +:20047800B085883A1180068BD8C00017300CD07A3180004C00000106000D883A180B883A5E +:20048000E009883A08142C0088803FCC1000011E0440004484C000158500011585400205DF +:2004880091400003810005C300C020B4008020B418E2354410A221042900151E194000430D +:20049000110006032900121E194000831100064329000F1E194000C31100068329000C1E44 +:2004980019400403110009C32900091E1940044311000A032900061E1940048311000A436E +:2004A0002900031E18C003C3108009831880032688803FCC1000011E044000449100058394 +:2004A80080800B4304C020B49CE221042080062699400403081462809880044588803FCC8D +:2004B0001000011E044000449100064380800C0320800126081473809100068380800C434D +:2004B8002080012608142440910006C380800C8320800126081425009100078380800D4381 +:2004C0002080071E008020B410A2354410C007C3008020B410A2210410800D831880022633 +:2004C800914007C3081421009100060380800BC3208006260140060408157A800100207411 +:2004D000211D37042089883A081447409100074380800D03208001260810D540910007030B +:2004D80080800CC32080012608145D40014020B4010020B40180018429622F0421223D8403 +:2004E00008157D001000031E010020B421222F04081425C0014020B4010020B4018009C4AD +:2004E80029623544212226C4081580008805883AD02214C5DFC00A17DF000917DDC0081791 +:2004F000DD800717DD400617DD000517DCC00417DC800317DC400217DC000117DEC00B043B +:2004F800F800283ADEFFF004DC400715044020B48C622104DF000E158F00028701400704F0 +:20050000DD400B15E009883ADD000A15DCC00915DFC00F15DDC00D15DD800C15DC800815C4 +:20050800DC00061508157A8004C020B488C005C39CE24C849885883A010000841540030B08 +:20051000150005431900031E8C8006039480004400000C06010000441900091E1080068B0F +:200518008C8003031104703A1000032690000426048000C4000003069024C03A00000106F9 +:200520000025883A8880050B010020B400C080042122210410C0242618800D3600C004047E +:2005280010C01A261880043600C0020410C0341E240004030000350600C0080410C01526AC +:2005300000C0400410C02E1E040000C400002F0600C8000410C018261880073600C2000419 +:2005380010C00A2600C4000410C0251E2400098300C0014400000E0600D0000410C0132622 +:2005400000E0001410C0162600001D060400010400001E062400098300C000C41C21C83AD8 +:200548008421883A000019062400098300C001041C21C83A00001506208008031000101E55 +:20055000AD7FFA04A500030400000D062080080310000D1EAD7FFA04A500030400000A06D6 +:20055800240009832080080300C001841C21C83A1000061EAD7FFA04A50003040000030691 +:200560000400004400000106040001448A80040381803FCCE009883A55C03FCCB985C83ABB +:2005680001400704D9800515DA800115D880001508157A809887883A1A40028BD900001708 +:20057000D8C00215480B883ADA40031508157A80102CD7FA890009C381403FCCB085883A39 +:20057800102DD07A08157A80D8C00217B08F883AE009883A014007041C000583D9C00415C6 +:2005800008157A809885883A10C00503D940001780C9883AD8C0021508157A80B085883A95 +:20058800B80B883A113FFFCC08155F40DA800117100B883A51003FCC08157A80D8C0021784 +:20059000B809883AD8800115180B883A08157A80DA40031710807FCC100692FA8F000343D8 +:20059800480B883AB809883AD8C00215E03897BA08157A80D8C002171081FFCC1704B03A6A +:2005A000800B883AB809883A18B8B03A08157A8088C004838D80080310C5C83A10803FCC41 +:2005A800B58000581004953AB02C977A00C020B4E084B03A1584B03A18C42C041880003598 +:2005B00088800443D9800517D9C004171006937A88800403300C943A380E94FA100492BA43 +:2005B800DA0001171884B03A118CB03A31CCB03A423FFFCC008020B4320CB03A10842804B5 +:2005C0001180003588C0030388800683890002871806977A100496BA014007041886B03AFD +:2005C80088800A031004953A18A0B03A08157A809885883A108005C31004947A8086B03A19 +:2005D000900496FA18A4B03AA8BFFFCC90A4B03AA0BFFFCC100492FA90A4B03A008020B4B5 +:2005D800108424041480003588800A431006913A888006431884B03A00C020B418C42004DD +:2005E00018800035DFC00F17DF000E17DDC00D17DD800C17DD400B17DD000A17DCC009172B +:2005E800DC800817DC400717DC000617DEC01004F800283ADEFFF304DC000415040020B498 +:2005F00084222104DC4005158440011700800044DFC00C15DDC00B15DD800A15DD40091516 +:2005F800DD000815DCC00715DC800615D0A213C58800162684C000179800142601006734E3 +:20060000880B883A213F300408156EC01025883A8080020301283BF4980B883A212EC004DA +:200608001000042608156EC0880B883A1009883A0000030608156EC0880B883A1089883A19 +:2006100008156EC01023883A000002060445DC04048F550401000EC40814050001000F0465 +:200618001027883A081405008080058300C0207418DB12041085883A1085883A1885883AB6 +:2006200011C000178080020380C000171000021E00801A440000010600801C0401802074AC +:20062800010020B4D8C00015319ACA040140044421221844D8800115081582800140190484 +:200630008809883A08156EC00140FA049009883A1029883A08156EC0014019048809883A7B +:20063800102B883A081575000140FA049009883AD8800215DD0001150815750001400284BE +:200640001009883A08156EC001802074010020B4D8800015A80F883A319ACC040140044480 +:200648002122310408158280D0A21A831000011E0810CAC081000017D1E214838140020373 +:20065000A00D883A044020B40814ACC011003FCC2100201C213FE00400FFFFC48C622104E9 +:2006580020C0011E00800104888002858480028301400704054020B4D4A2100594803FCCD7 +:200660009480201C94BFE0049009883A08157A80AD624C84A885883AD0E21483144006030D +:20066800858004038500011788E2703AD462104515C0040BB1403FCC9CC03FCCB93FFFCC20 +:2006700008157A809809883A100B883A08157A80A00B883A1009883A08156EC0B1003FCCAD +:20067800B80B883A1027883A08157A8015BFFFCC80800B838C403FCCA53FFFCC10000826DC +:20068000014007049009883A08157A80A885883A11C0068B380ED07A39C0004C000001066F +:20068800000F883A80800C839CC03FCCA00D883AD880031580800D83B00B883A8809883A4C +:20069000D880021580800D43DCC00015D88001150814800081000D030810D54081000B4343 +:2006980081400403081462808080044580800A83810003831000041E008020B410A2210442 +:2006A000114003C300000106000B883A0810910080C00A83008020B410A2210418000B1E6D +:2006A80010C003C311C00AC31800022610800383000001060005883AD8800015000D883A9E +:2006B000000B883A0009883A081005C0DFC00C17DDC00B17DD800A17DD400917DD0008177D +:2006B800DCC00717DC800617DC400517DC000417DEC00D0408113E4120803FCC00C003C447 +:2006C00010C00E2600C0040410C0112600C002C4D122134310C0271EDEFFFE04DC00001593 +:2006C800DFC00115081395801021883A10000F2601C0207439DAD40400000E06D0A21343D9 +:2006D00010C03FCC1800072610BFFFC400000506D0A213430100020410C03FCC20C001368C +:2006D80010800044D0A21345F800283A01C0207439DAD20401802074010020B4319AD7043C +:2006E0000140044421221C84081582800810C9808000021E010003C408137980010002345B +:2006E80021284804DFC00117DC000017DEC0020408161801200F883A01802074010020B4FD +:2006F000319AD8040140044421221C840815828120803FCC00C003C410C00E2600C00404B9 +:2006F80010C0112600C002C4D122134310C0271EDEFFFE04DC000015DFC00115081379805E +:200700001021883A10000F2601C0207439DADC0400000E06D0A2134310C03FCC180007265D +:2007080010BFFFC400000506D0A213430100020410C03FCC20C0013610800044D0A21345D5 +:20071000F800283A01C0207439DADA0401802074010020B4319AD7040140044421221C842D +:20071800081582800810C9808000021E010003C4081379800100023421284804DFC0011742 +:20072000DC000017DEC0020408161801200F883A01802074010020B4319AD80401400444E0 +:2007280021221C840815828121003FCC008003C4208028260080040420802B26DEFFFD04F6 +:20073000DC000015DFC00215040020B4DC400115008002C484224C8420802A1ED46210030B +:2007380001400704D46213858C403FCC8809883A08157A808085883A10C0040B0140070454 +:200740008809883AD0E2128D10C00583D0E2150D10C00503D0E20F8D10C0028BD0E2120D75 +:2007480010C005C3D0E2108D10800543D0A2140D08157A808085883A1080030BD0A2118DB3 +:20075000DFC00217DC400117DC000017DEC00304F800283AD0A2100310C03FCC1800072606 +:2007580010BFFFC400000506D0A210030100070410C03FCC20C0013610800044D0A2100506 +:20076000F800283AD12210030140070408157A80010020B401800444808B883A21221C8468 +:20076800DFC00217DC400117DC000017DEC0030408159401DEFFFA04008020B4DD00041516 +:20077000DCC00315DC800215DC400115DC000015DFC0051510A2210410C002C3040020B422 +:200778002029883AD462138384224C84D4E20F8BD4A2140B180021261080028714401F1E26 +:200780008809883A0140070408157A808085883A1100040BD0E2128B20C0161E11000583C0 +:20078800D0E2150B20C0131E1100050398C03FCC20C0101E1100028BD0E2120B20C00D1E6C +:20079000110005C3D0E2108B20C00A1E10C0054390803FCC1880071E014007048809883A8C +:2007980008157A808085883A10C0030BD0A2118B1880022600800044D0A214C58809883A55 +:2007A0000140070408157A80D0E2128B8085883A8809883A10C0040DD0E2150B14C00505DC +:2007A8000140070410C00585D0E2120B10C0028DD0E2108B1480054510C005C508157A8081 +:2007B000D0E2118B01802074010020B48085883AA1FFFFCC319BDC040140044421221C84A7 +:2007B80010C0030DDFC00517DD000417DCC00317DC800217DC400117DC000017DEC0060494 +:2007C00008158281DEFFFE04DC000015040020B4DFC00115840438040080044480800035DB +:2007C80080000035008020B410842C0410000035008020B410842404100000350109C404D8 +:2007D0000816180000BFF444D0A211050080344480800035010000F4210350040816180084 +:2007D800018001B401406734010020B43186A004297F300421041804081684C00813B9006C +:2007E0000813EF00100022260009883A0814050000C03FC410C0202608146A800100008447 +:2007E80008101D8010803FCC00C004C410C01C1E08102C80081097C01021883A10001A1EA1 +:2007F00008124D4001402074010020B401800D84295B7E8421223F0408158000010003C415 +:2007F80008139580D122134308139580008020B41084340410800037108000AC1000011EE6 +:20080000081254400009883A0810CC0000000706043FFF8400000506043FFF44000003060E +:20080800043FFF0400000106043FFFC48005883ADFC00117DC000017DEC00204F800283A8E +:20081000DEFFFF04DFC0001508117B4008141C40008020B410A23544110004C3DFC00017DB +:20081800DEC001040810CC01DEFFF504DFC00A15DF000915DDC00815DD800715DD4006153C +:20082000DD000515DCC00415DC800315DC400215DC0001150811F04010001B160080134412 +:2008280001802074010020B4000F883A319ADF040140044421221844D88000150815828093 +:2008300001402074010020B401800444295AEB0421223104081580000810CAC001000234D5 +:2008380021284804058020B408161800B5A23544B08008030100024410C03FCC20C0113628 +:20084000D0A2130500000F0601802074010020B4100F883A319AE404014004442122184453 +:200848000815828001402074010020B401800444295BEB0421223104081594000810CAC0C0 +:20085000003FFF06054020B40700207405C020B40029883A0023883A0021883A0025883A5D +:20085800AD622104E71B1204BDE2354400C020B418C434041880003710FFFFCCD0E21815EC +:200860000086303A1004D63A18C000ECD0E21915D0A21A051000062610FFFF8418C03FCC7E +:20086800010000C420C0022ED0E2170310C0011ED022181508126EC0D0A21A831000022632 +:200870000009883A08132F80A8C00583D0A2130304C020B49CE221041880011ED02213055F +:20087800D0E213030100020418BFFFC410803FCC20803A36100490BA0100207421088304A9 +:200880001105883A108000171000683A008122300081224000812258008122680081227850 +:200888000081228C0081229C008122AC008122C4008003C4D0A214850023883A00000306EC +:20089000008003C4D0A2148504400084040000440025883A00002306008003C4D0A2148584 +:20089800044000C4003FF906008003C4D0A21485044000C400000306008003C4D0A2148545 +:2008A000044000840021883A003FF10600800404D0A214850440004400000D06008003C4E2 +:2008A800D0A214850023883A0000090604400084008003C4D0A214858821883A8825883A3D +:2008B00000000806008003C4D0A21485044000C4040000848025883A0000020618803FCC26 +:2008B80010002C2699400D0398C00585980002C528803FCC00C0004481003FCC1880042E87 +:2008C00000800144114BC83A29403FCC00000106014000C40813FD400814138089403FCC9A +:2008C80091003FCC0814924098800583010020B4018004441085883A1085883AE085883A73 +:2008D0001140001721221844980001150815940001402074010020B401800444295AE804C0 +:2008D8002122310408159400D0A21A831000011E0810CAC0A5003FCCA0000526B0C0080301 +:2008E000008002841880021E010003C40813798005000044B10004C398800A83208004262E +:2008E8000810CC00B88004C3A8000115A8800A85B08004C310000B1EB9C0050398800AC302 +:2008F00038800826A8800383000D883A000B883AD88000150009883A081005C0B880050363 +:2008F800A8800AC5A0803FCC1000322689403FCC91003FCC0810E64010803FCC00C00084C9 +:2009000010C0252600C0010410C0032600C0004410C0281E00002406988002C3100009269E +:20090800D0A2110300C020B418C4380410800094D0A2110510803FCC18800035081204006B +:2009100000001C06A800011508141380A8800583010020B4018004441085883A1085883A3C +:20091800E085883A11400017212218440815940001402074010020B401800444295AE804FE +:200920002122310408159400D0A21A831000091E0810CAC000000706988002C31000052681 +:2009280008117B4000000306988002C31000012608113E40D0A2191701004B04D02213052B +:20093000D0A21615D0A21A03D0A2170508161800003F260600C020B418E235440140207470 +:20093800DEFFFF041809883A018009C4295B1D04DFC00015081580001007883A008020B46B +:200940001084340410800037014020741004D4BA010020B40180D2041080004C295D4304B8 +:2009480021224C84188004C50815800000800044D0A214C50005883ADFC00017DEC001044F +:20095000F800283ADEFFF804DD000415DCC00315DC80021505002074048020B404C020B4AE +:20095800DD800615DC000015DFC00715DD400515DC400115002D883A0021883AA51B8C04D0 +:20096000948434049CE23F0401402074010020B401800444295B2704212214040815940038 +:200968008405883A1085883AA085883A11400017010020B40180044421221C84081594004C +:200970000810C9800023883A054000849080003710BFFFCCD0A2181590C0003700C6303A21 +:2009780018C000ECD0E2191510001A26B08019268407883A98C7883A88000A1E0140207409 +:20098000010020B401800444295B2904212214041880000D081594000810C980044000446E +:2009880000000C0618C0000B10C0092601402074010020B401800444295B2B0421221404DA +:20099000081594000810C9800023883A0000010604400084D0A2161710000F1ED0E21917C3 +:200998000080007418800C1E8000091E01402074010020B401800D84295B7E8421223F041A +:2009A0000815800004400084040006C400000206843FFF8404400084D0A21917D5A21817A6 +:2009A800D0A216158D4003260109C40408161800003FC6068400004400800684143FB20EA4 +:2009B000010003C4DFC00717DD800617DD400517DD000417DCC00317DC800217DC40011798 +:2009B800DC000017DEC0080408137981DEFFEF04D88009C4D8800115008020B410A237C409 +:2009C00010C00044D8C003150140207410C00084D8800215D8C00415018001C410C000C430 +:2009C800295B7CC410800104D9000804DFC01015DD400F15DD000E15DCC00D15DC800C1591 +:2009D000DC400B15DC000A15D80009C5D8C00515D8C00615D880071508158000D122181792 +:2009D800014020B40005883A29623F04018006841087883A1947883A18C0000B044020B4D4 +:2009E0008C623F04190003261181132610800044003FF70600C0068418810F36100490BA23 +:2009E80000C0207418C9ED0410C5883A108000171000683A008128200081283C0081284C36 +:2009F0000081282800812844008128540081283400812BD80081285C008128640081286CA4 +:2009F80000812BD800812BD800812BD800812BD800812BD800812BD8008128900081290CD8 +:200A00000081292C00812958008129A400812984008129D000812B6C00812B9400812AE025 +:200A0800008000440000010600800084D0A213050000E906008000C4003FFC06008001047C +:200A1000003FFA0600800144003FF80600800184003FF606008001C4003FF4060080020441 +:200A1800003FF20600800244003FF006D0A21A831007003AD0E21A851000031E0100004465 +:200A200008132F800000D4060810CAC00000D206008020B410A22104110002870140070487 +:200A280008157A8001C020B439E24C8401802074010020B4388F883A319B2F04014004441C +:200A30002122140408158280008020B41084300411C0003710800037018020741005D43A09 +:200A380039C1FFCC010020B4108000CC39C00044319B32040140044421221C84D880001590 +:200A4000081582800810C9800000B306D0A2110300C020B418C438041080041CD0A21105F3 +:200A480010803FCC188000350000AB0600C020B418E23544188000030140004411003FCC32 +:200A5000290002361145883A000001060005883A188000050000A00600C020B418E23544F5 +:200A5800188000430140004411003FCC290002361145883A000001060005883A18800045DE +:200A600000009506008020B410A2354410C0008319003FCC2000012618FFFFC410C000856F +:200A680000008D0600C020B418E23544188000830140038411003FCC2900023610800044A0 +:200A700000000106008003C4188000850000820601402074010020B401800444295B360442 +:200A7800212214040815940001402074010020B401800444295B3A0421221C840815940089 +:200A8000048020B4050020B4054020B40810C9809484340404C006C4A5224C84AD62210402 +:200A8800908000370021883A10BFFFCC8407883A1C47883A18C0000B10C002268400004475 +:200A900084FFFA1EA90002870140070408157A80A085883A1080064300C001841880403603 +:200A980000C001041C001916D90008042087883A18C000031C07D83A18C0004C1800072667 +:200AA0001085883A1085883AD8C001041885883A1080001714000005000031060180207480 +:200AA800010020B481C00044319B3D040140044421221C84081582800810C98001000234A4 +:200AB00021284804081618000000250600800304808023260109C40408161800003FD00643 +:200AB80001402074010020B401800444295B4104212214040815940001402074010020B42C +:200AC00001800444295B450421221C8408159400040020B40810C98084043404048006C4A5 +:200AC80004C0024405000304808000370009883A10BFFFCC2107883A1C47883A18C0000B6A +:200AD00010C01E1E99002016210000440140028408156780010002C4D0A213450811AF8022 +:200AD8000810CAC0D0221A8500001B0600C020B418E23544188005830140078411003FCC9B +:200AE000290002361080004400000A060005883A0000080600C020B418E2354418800583B5 +:200AE80011003FCC2000022610BFFFC400000106008007C418800585000007062100004412 +:200AF00024BFDC1E00000106253FE5260109C40408161800003FD406D0A216171000191E8C +:200AF800D0E219171880006C10000A26008020B410A22104108005830100024411403FCCD2 +:200B000029000226108000440000010600800044D0A2130518C000AC18000A2600C020B4FB +:200B080018E23544188000030140004411003FCC290002361145883A000001060005883AD7 +:200B100018800005DFC01017DD400F17DD000E17DCC00D17DC800C17DC400B17DC000A17A3 +:200B1800DEC01104F800283ADEFF6C04D9000304DC008C15DFC09315DD809215DD409115F8 +:200B2000DD009015DCC08F15DC808E15DC408D150810C1401021883A081553408000891E53 +:200B280001800104D9400304D9008304081594000140207401800104295BA704D90083040C +:200B300008158E0010000B2601802074010020B4319BA90401400444212214040815828053 +:200B3800008020B410A21C84100000050400004400007406D8800403DC808484D9400484BC +:200B4000D8808405D8800443018002049009883AD880844508159400D880068BD8008645D5 +:200B4800D8808B0DD880070BD8808B8DD9408B17280BC232D880078BD9408715D8808B0D52 +:200B5000D880080BD8808B8DD8808B171005C232D8808815D880088BD8808B0DD880090B6B +:200B5800D8808B8DD8808B171005C232D8808915D8808217D8808B151005C232D8808A152B +:200B600000C0788428BFF98418800B2E01802074010020B4319BAD04014004442122140439 +:200B680008158280008020B410A21C8410000005043FFFC40000430601800044D90003049F +:200B700008167D80D8C08A1710C00A2601802074010020B4319BB1040140044421221404C2 +:200B780008158280008020B410A21C84100000050000330601802074010020B4319BB504DB +:200B8000014004442122140408158280D9C0881701802074010020B4319BB904014004441E +:200B880021221C84081582800810C980DCC08817DD4089170021883A0005883A058080043F +:200B900084C0132E9C23C83AB440012E0440800485008004A00CD27A010020B4DC4000150D +:200B9800000F883AD94003042122110408153B8010803FCC1000121E800D003A880B883A25 +:200BA000D900030408167D80A021883A003FEC06A880612601802074010020B4319BBC0461 +:200BA800014004442122140408158280008020B410A21C8410000005043FFF4400000106E2 +:200BB000043FFF8404C000C4081553400810C980010003F4211090040816180000BFCE4402 +:200BB80080804B0E98004A2601802074010020B4319BD2040140044421221404081582802D +:200BC0009CFFFFC401402074010020B401800444295BCA0421221C84081594000810C980FD +:200BC8000025883A0580800405004004DC4088179440202E8CA3C83AB440012E04408004DB +:200BD00095408004A80DD27A010020B4DC400015000F883AD94003042122110408153B8084 +:200BD80014003FCC803FD81E9025D23A880B883AA440012E01404004900D883AD90003043C +:200BE0000810A1801021883A103FCF1EA4400236A825883A003FE50691800044897FC00497 +:200BE800D90043040810A1801021883A103FF826003FC50601402074010020B401800444B7 +:200BF000295BCE04212214040815940001402074010020B401800444295BCA0421221C84DB +:200BF800081594000810C980D9808917D9408817D9C003040009883A0810B4001021883AF0 +:200C0000103FB11E081553400005883A0000430600BFFFC400004106D8808487D9C08403AA +:200C0800D8C084431000032600802074109B70040000020600802074109BEB040180207436 +:200C1000010020B4D8C00015319BC1040140044421221404DC800215D880011508158280CD +:200C180001402074010020B401800444295BD60421221C8408158000044020B4040020B47B +:200C20000810C9808C44340484223F048880003780C0000B10BFFFCC10C00E2680C0008B6F +:200C280010C0091E01402074010020B401800444295BC404212214040815940004C000C462 +:200C300004000084003F80060109C40408161800003FEE0608141380D0A2110300C020B453 +:200C380018C4380410800094D0A2110510803FCC188000350109C404081618000140207493 +:200C4000010020B401800444295BC704212214040815940004C000C4003F7A06DFC093170B +:200C4800DD809217DD409117DD009017DCC08F17DC808E17DC408D17DC008C17DEC0940485 +:200C5000F800283A21C03FCC01802074010020B4319BDB040140044421221C84081582811D +:200C5800DEFFFF040141194421003FCCDFC0001508157A80014019041009883A08155F4011 +:200C600001802074010020B4100F883A319BDD040140044421221C84DFC00017DEC0010437 +:200C68000815828121C03FCC01802074010020B4319BDF040140044421221C84081582813B +:200C7000014003F4DEFFFC042950900421003FCCDFC00315DC400215DC00011508157A8023 +:200C7800014018F4294BA8041009883A1021883A08156EC08009883A014659041023883AF2 +:200C800008156EC00140FA041009883A08157500014002841009883A08156EC0018020745B +:200C8800010020B4D8800015880F883A319BE2040140044421221C8408158280DFC00317BB +:200C9000DC400217DC000117DEC00404F800283ADEFFFF04014119C421003FCCDFC000153C +:200C980008157A80014019041009883A08155F4001802074010020B4100F883A319BE504B0 +:200CA0000140044421221C84DFC00017DEC001040815828121C03FCC01802074010020B479 +:200CA800319BE7040140044421221C840815828121003FCCDEFFFF0401409C442100004457 +:200CB000DFC0001508157A80014019041009883A08155F4001802074010020B4100F883A99 +:200CB800319BEA040140044421221C84DFC00017DEC0010408158281D0A21817DEFFF60405 +:200CC000018020B4DCC00315DFC00915DF000815DDC00715DD800615DD400515DD000415F4 +:200CC800DC800215DC400115DC00001504C002C431A23F04014004449CC7883A1987883AC6 +:200CD00018C0000B1880041E21003FCC9823883A2000051E000003069CC00044997FF61EA6 +:200CD8000000A50610010026D5621A4304802074949E3204AF003FCCE02090FA0140050478 +:200CE0009405883A1500010315C00017A5803FCCB009883A08157A80B8C00117010001043C +:200CE8001885883A88FFFD0418C03FCC20C02936180690BA01002074210CF2041907883AE1 +:200CF00018C000171800683A00813410008133DC008133F40081350800813508B000011EF3 +:200CF800BD000003A53FFFC49421883A8500010500008406B94000039421883AB100004481 +:200D000084000104081567808080000500007D06E0000326AD7FFFC4D5621A4500007906B1 +:200D0800D0221A85DFC00917DF000817DDC00717DD800617DD400517DD000417DCC0031761 +:200D1000DC800217DC400117DC000017DEC00A040810CAC110C00103014000C4194006267A +:200D18001900631E10800217044002C4103EE83A1021883A000064061080031710000226BF +:200D2000010002C4103EE83AD4621A43014005048C003FCC802690FA94C5883A1540001751 +:200D280011000103AD00011708157A80A085883A10C0021718004E2684000044802090FA6C +:200D300000802074109E32041405883A1100001719000126100001059421883A94E5883AA0 +:200D380091000103ACC001170140050408157A809885883A108002178C400044D4621A45F4 +:200D40008080001500003A0610C00103010000841900202619000336010000C419002F2601 +:200D4800000038061180021789C03FCC020003C41100030310C003433140000310800383CF +:200D50003A000A1E19C03FCC2A003FCC3A00022E28BFFFC40000030621003FCC2000011E80 +:200D58001805883A308000050000260611C03FCC2A003FCC41C0022E288000440000030684 +:200D600021003FCC200001261805883A30800005000010061100021789403FCC018003C410 +:200D680020C0000B2980061E1080030B197FFFCC1140012E18FFFFC420C0000D0000110654 +:200D70001080038B197FFFCC2880012E18C0004420C0000D0440040400000A0610800317FC +:200D78001000082699003FCC103EE83A00000506044002C40000030621003FCC2000592620 +:200D80000023883A0021883AD0A21A4300C0207418DE3204100490FA014005041885883AF5 +:200D88001100010314C0001708157A801025883A98800117010020B4212214041485883A82 +:200D900011400017018004440815940098800117010001041485883A10C0010320C03536B1 +:200D9800180690BA01002074210D9E041907883A18C000171800683A0081368C008136BC2D +:200DA000008136CC008136DC008136F010C00217110004170180044418C0000318C5883A1E +:200DA8001085883A2085883A11400017010020B421221C840815940000001E0610C002178F +:200DB00010800417190000030000070610C00217108004171900000B0000030610800317E4 +:200DB800100006260009883A103EE83A000011068C403FCC00C002C488C00426008020B46A +:200DC00010A21C841000000500000A068000021E11C003170000010611C004170180207409 +:200DC800010020B4319AD7040140044421221C8408158280DFC00917DF000817DDC007178D +:200DD000DD800617DD400517DD000417DCC00317DC800217DC400117DC000017DEC00A045A +:200DD8000810C981103FA61EDFC00917DF000817DDC00717DD800617DD400517DD00041763 +:200DE000DCC00317DC800217DC400117DC000017DEC00A04F800283A21003FCC008003C428 +:200DE80011005F36009114B4DEFFB6041094D544D88000150080107410951044D8800115C0 +:200DF00000801344D8800245208002B0DC004015DFC04915DF004815DDC04715DD80461500 +:200DF800DD404515DD004415DCC04315DC804215DC404115D8000205D8800285240004042B +:200E00001000151E00800E04D88002C5D0A21343014020B401800D84D8800345008020B4FB +:200E080010A221041080058329623F04D90003C4D8000305D880038508158000800C923AB8 +:200E100001401144D809883A0810A1801004C03A0085C83A0000340600801204014020B4D6 +:200E1800802A923A018009C4D880034529623544008000C4D90003C4070020B4D98002C573 +:200E2000D8000305D88003850025883A08158000002F883A04400D840580D2040500400404 +:200E2800E7224C84893FFFCCA10DC83AB0BFFFCCD909883AB97FFFCC94C03FCC11800C169B +:200E3000E14B883A08158000A463C83A9D4D883A01404004D809883A8DEF883AB5BFC004C4 +:200E38000810A180948000440023883A003FED06100D883A008020B410A24C84114B883A1F +:200E400008158000800C923A01404004D809883A34CD883A0810A1800005883A00000206AA +:200E480000BFFFC4F800283ADFC04917DF004817DDC04717DD804617DD404517DD0044170B +:200E5000DCC04317DC804217DC404117DC004017DEC04A04F800283ADEFFB704DFC0481556 +:200E5800DDC04715DD804615DD404515DD004415DCC04315DC804215DC404115DC004015D2 +:200E600021003FCC008003C41100022E047FFFC400006306240004048008943AD80D883AE6 +:200E68000140400408109A80103FF81E0140207401800204295D3404D809883A08158E00E6 +:200E70001023883A1000531ED88002031000531ED8C00243008013441880501ED880028377 +:200E78001000032600C0004410C0162600004C06D8800303D8C002C31004923A10C4B03A66 +:200E800000C00E0410C0461ED880034300C0024411003FCC19000136D0A21345D880038394 +:200E880011003FCC19000136D0A21305010020B401800D84D94003C421223F04081580006A +:200E900000003706D8800317D8C002C311803FCC300C923A30CCB03A00C009C430C0301EE1 +:200E98001004D23A00C0D2041025883A10BFFFCC10C02B1E010020B48020923AD94003C4B9 +:200EA0002122354405C020B4081580000027883A002D883A05400D8405004004BDE24C84DA +:200EA800A97FFFCCA14DC83A90BFFFCCB13FFFCCD94B883A11800F16B909883A08158000B5 +:200EB000990000442027883A21003FCC2409883A2008923AA56BC83AD80D883A01404004EF +:200EB800ADAD883A94BFC00408109A80002B883A003FEB06100D883A008020B410A24C84E3 +:200EC0001109883A0815800000800044D0A214C5000003060440004400000106044000842A +:200EC8008805883ADFC04817DDC04717DD804617DD404517DD004417DCC04317DC804217AC +:200ED000DC404117DC004017DEC04904F800283ADEFFFD04D9000005010020B4DC00011593 +:200ED800018000442821883A21041804D80B883ADFC0021508169A00813FFFCC0816180015 +:200EE000DFC00217DC000117DEC00304F800283AD0E21103DEFFFC0400BFE7C41884703AF4 +:200EE800DC400115044020B4D0A21105DFC00315DC800215DC00001510803FCC8C44380456 +:200EF00088800035040005048009883A08161800800B883A01000E040813B500800B883A9A +:200EF80001000E440813B500800B883A8009883A0813B500800B883A01001C440813B500D1 +:200F0000800B883A010017840813B500800B883A01001B440813B500800B883A0100030446 +:200F08000813B5000480C804900B883A010000440813B500800B883A010001840813B50094 +:200F1000900B883A010000840813B500D0A2110310801014D0A2110510803FCC8880003575 +:200F1800DFC00317DC800217DC400117DC000017DEC00404F800283AD0E21103DEFFFA04C3 +:200F200000BFE7C41884703ADC000015040020B4DC800215DC400115D0A21105DFC0051552 +:200F2800DD000415DCC003152025883A2823883A10803FCC84043804808000350140C8044A +:200F3000010000440813B500D0A2110310800814D0A2110510803FCC8080003501400404B9 +:200F38009009883A081599401029883A10803FCC1000091E014020749009883A0180044482 +:200F4000295D36040815940091000003014005040813B500000009060027883AA5003FCCCA +:200F480094C5883A11000003014005049CC000440813B50098803FCC153FF936D0E2110334 +:200F500000BFF7C41884703AD0A2110510803FCC8080003501400504010030040813B5001A +:200F5800D0A2110310800814D0A2110510803FCC80800035014004048809883A081599405D +:200F60001027883A10803FCC1000091E014020748809883A01800444295D36040815940044 +:200F680089000003014005040813B500000009060025883A9CC03FCC8C85883A110000037F +:200F700001400504948000440813B50090803FCC14FFF936D0A2110310801014D0A21105D0 +:200F780010803FCC80800035DFC00517DD000417DCC00317DC800217DC400117DC00001784 +:200F8000DEC00604F800283ADEFFFB04DC000015040020B484041804DC80021504800B0400 +:200F8800DCC00315900B883A2027883A000D883A8009883ADFC00415DC40011508168C0081 +:200F900004400044880D883A99403FCC8009883A08169240900B883A8009883A880D883A44 +:200F980008168C00880B883A8009883ADFC00417DCC00317DC800217DC400117DC000017E3 +:200FA000DEC0050408168F81DEFFFC04DC000015040020B484041804DC800215DC4001156D +:200FA8002025883A2823883A8009883A000D883A01400B04DFC0031508168C0091403FCC6E +:200FB0008009883A000D883A081692400180004489403FCC8009883ADFC00317DC80021705 +:200FB800DC400117DC000017DEC0040408169241010020B4DEFFFD04000D883A000B883A0C +:200FC00021041804DFC00215DC400115DC000015081692400100028408161800040006043C +:200FC80004400044800B883A8809883A0813E880800B883A010000840813E880800B883ABC +:200FD000010000C40813E8808809883A0813E0801405003ADFC00217DC400117DC000017B9 +:200FD800DEC00304F800283ADEFFFD04DC400115DC000015044000442021883A84003FCCDF +:200FE0008809883ADFC00215802090FA0813E08000FFF9C410C4703A80A0B03A84003FCC70 +:200FE800800B883A8809883A0813E880800B883A010000840813E880800B883A010000C45F +:200FF000DFC00217DC400117DC000017DEC003040813E881DEFFFD04DC4001152023883AC4 +:200FF80001000044DC000015DFC00215043FF6040813E0801420703A89003FCC00800084BF +:201000002080021E84000054000003062008917A2080011480A0B03A84003FCC800B883A61 +:20100800010000440813E880800B883A010000840813E880800B883A010000C4DFC00217E1 +:20101000DC400117DC000017DEC003040813E881DEFFFB04DC000015040020B48404180427 +:20101800DC80021504801704DCC00315900B883A2027883A000D883A8009883ADFC00415BA +:20102000DC40011508168C0004400044880D883A99403FCC8009883A08169240900B883A79 +:201028008009883A880D883A08168C00880B883A8009883ADFC00417DCC00317DC800217D7 +:20103000DC400117DC000017DEC0050408168F81DEFFFC04DC000015040020B4840418045A +:20103800DC800215DC4001152025883A2823883A8009883A000D883A01401704DFC00315B2 +:2010400008168C0091403FCC8009883A000D883A081692400180004489403FCC8009883A1C +:20104800DFC00317DC800217DC400117DC000017DEC0040408169241DEFFFC04DC000015CE +:20105000040008848009883ADFC00315DC800215DC40011508140500014004C40100058495 +:201058001023883A0489C40408140D009009883A08161800014000C4010005C408140D007C +:201060009009883A08161800017FE004894AB03A29403FCC8009883A08140D000100FA04D7 +:201068000816180089401FCC8009883ADFC00317DC800217DC400117DC000017DEC0040438 +:2010700008140D01DEFFFE04DC0000150409C4048009883ADFC001150816180001400444D2 +:201078000100058408140D008009883A0816180001400084010005C408140D008009883A21 +:20108000DFC00117DC000017DEC0020408161801DEFFFE04DC0000152821883A21403FCC84 +:2010880001000484DFC0011508140D0081403FCC010004C4DFC00117DC000017DEC00204FE +:2010900008140D0121403FCC01000F4408140D0121403FCC0100044408140D01DEFFFE046E +:20109800DFC00115DC000015214000C32021883A0100028408140D008140010301000244AF +:2010A00008140D00814001430100020408140D00814000030100034408140D008140004399 +:2010A8000100030408140D0081400083010002C4DFC00117DC000017DEC0020408140D0174 +:2010B000DEFFFB04DC400115DC0000152023883A2021883A01000104DCC00315DC800215EC +:2010B8003027883A2825883ADFC0041508140500017FFE049CC03FCC1144703A9800092668 +:2010C00080FFFFCC0101FFC420C006361140005429403FCC0100010408140D008423883A34 +:2010C8000000030611403FCC0100010408140D008C7FFFCC880AD13A0100004429403FCC48 +:2010D00008140D00880A913A0100008429403C0C08140D0001006734917FFFCC213F300410 +:2010D80008156EC0880B883A1009883A08157A800140FA041009883A08156EC000E327D423 +:2010E0001880092E00C0007418C45BC41880082E00C000B418C3D5C41885403A00C000C4A1 +:2010E8001885C83A000003060005883A000001060080004414003FCCD0A01C041405883A24 +:2010F0001100000301400A0408157A808808D07A880B883A1109883A08155F40100B883AC2 +:2010F80000C001C410803FCC1880012E180B883A29403FCC800491BA280A90FA010000C448 +:20110000288AB03A29403FCCDFC00417DCC00317DC800217DC400117DC000017DEC005040C +:2011080008140D01DEFFFE04DC0000152021883A01000684DFC0011508140500017FFE8467 +:2011100084003FCC00C000441144703A80C0021E10800094000001061080029411403FCC20 +:2011180001000684DFC00117DC000017DEC0020408140D012140028BDEFFFE04DC000015F6 +:20112000280AD23A2021883A010012C4DFC0011508140D00814002830100128408140D00B3 +:201128008140030B01001344280AD23A08140D00814003030100130408140D008140038BC2 +:20113000010013C4280AD23A08140D00814003830100138408140D008140010B0100144432 +:20113800280AD23A08140D00814001030100140408140D008140018B010014C4280AD23AC5 +:2011400008140D00814001830100148408140D008140020B01001544280AD23A08140D00D0 +:20114800814002030100150408140D008140040B010015C4280AD23A08140D0081400403A5 +:201150000100158408140D008140048B01001644280AD23A08140D00814004830100160447 +:2011580008140D008140050B010016C4280AD23A08140D008140050301001684DFC0011720 +:20116000DC000017DEC0020408140D01DEFFFD04DC00001504000FC4DC4001152023883AD1 +:201168008009883ADFC002150814050000FFFC0410C4703A888AB03A29403FCC8009883A0D +:20117000DFC00217DC400117DC000017DEC0030408140D01DEFFFD04DC40011504400684D3 +:20117800DC0000152021883A8809883ADFC002150814050080C03FCC014000C428C7C83AF8 +:20118000180691BA10800FCC8809883A188AB03A29403FCCDFC00217DC400117DC00001749 +:20118800DEC0030408140D01DEFFFB04DCC0031504C00104DC4001152023883A9809883A85 +:20119000DFC00415DC800215DC0000152825883A08140500900B883A8809883A1021883A50 +:2011980008157A80108007CC100A90FA840001CC9809883A2C0AB03A08140D0091403FCC40 +:2011A00089003FCC08157A801004D17ADFC00417DCC00317DC800217DC400117DC00001719 +:2011A800DEC00504F800283ADEFFFE04DFC00115DC000015081413800009883A0814424089 +:2011B00004000044800B883A01000D4408140D0001002074211D370408144740800B883A11 +:2011B80001000404081462800009883A081458C00009883A08145D40010001840814244087 +:2011C000014000C401000D0408140D00010011040814250001402204010006C408140D001D +:2011C8000140020401000704DFC00117DC000017DEC0020408140D01DEFFFD04DC0000156D +:2011D0002021883ADC40011584003FCC044004048809883A802090FADFC00215081405009B +:2011D800108001CC808AB03A29403FCC8809883ADFC00217DC400117DC000017DEC003045B +:2011E00008140D0121003FCC20001A26DEFFFD04DC400115010009842823883A0140200429 +:2011E800DC000015DFC002153021883A08140D0089403FCC00800044288004260080020414 +:2011F0002880041E814016840000030681400244000001068140060429403FCC01000C4413 +:2011F800DFC00217DC400117DC000017DEC0030400000206000B883A0100098408140D01C6 +:20120000DEFFF704DCC003152827883AD9400917DDC00715DD800615DD400515DD0004159A +:20120800DC800215DC400115DC000015DFC0081524003FCC008000443029883A382B883A41 +:20121000DC400A17DC800B17DD800C172DC03FCC808008260080020480800D1E29400C84B3 +:2012180029403FCC0100014408140D000140080400000C062940008429403FCC01000144CD +:2012200008140D00014001842809883A000006062940018429403FCC0100014408140D00EF +:20122800014004040100018408140D00B80D883A800B883A0100004408147840B1003FCC05 +:2012300008142500008004048080021E0140030400000106014002040100088408140D0069 +:20123800A17FFFCC993FFFCCA9803FCC08142C0091403FCC89003FCCDFC00817DDC00717A3 +:20124000DD800617DD400517DD000417DCC00317DC800217DC400117DC000017DEC00904E6 +:2012480008142101DEFFFD0429BFFF84DC400115DC000015DFC0021531803FCC00800044A6 +:2012500024403FCC2C003FCC11800436008000848880071E8805883A000008068800061ED3 +:201258008005003A00C000841885C83A000003060005883A0000010600800084880A913A9C +:201260008C47883A10803FCC100491BA18C7883A28CAB03A214AB03A288AB03A29403FCCFD +:201268000100064408140D00008000C48080041E014017440100040408140D0000001206A6 +:20127000014016040100040408140D000080008488800D1E0080004414000B368080021E61 +:201278000140148400000106014014C40100038408140D000100FA0408161800010005046D +:201280000814050000000B06014016C40100038408140D000100FA04081618000100050411 +:2012880008140500008000C48080021E0140040400000106000B883A0100060408140D0070 +:20129000000B883A01000D84DFC00217DC400117DC000017DEC0030408140D01DEFFFD0453 +:20129800DC4001152023883A01000504DC000015DFC002152821883A081405008C403FCC4B +:2012A00000C0008488C00A1E81403FCC00C0004428C0031E1080240C108024200000060601 +:2012A8002800031E1080220C10802220000002061004D07A1080004CDFC00217DC4001171F +:2012B000DC000017DEC00304F800283ADEFFEC04DC000A15040020B484222104008001043C +:2012B800D880070D8080070302C00204028010045884983A00C100040188000412C4B03A82 +:2012C000D880078D8080074383800B03020020B45084983ADFC01315DF001215D880080D11 +:2012C80080800783DDC01115DD8010151884983ADD400F15DD000E15D880088D808007C3D1 +:2012D000DCC00D15DC800C153084983A2027883ADC400B15D880090DD8800984D880001538 +:2012D80080800844D880011580800884D8800215808008C4D880031580800904D880041587 +:2012E000D880051580800944D8000985D8800615422252840009883A03C0400407C400047B +:2012E8000500800404800404054020040580080405C001040700004440C0004302400184B8 +:2012F0002023883A19803FCC408000034980C236301290BA030020746312FA044B13883AFB +:2012F8004A4000174800683A00814C4C00814C4C00814C4C00814C0400814C1800814C3449 +:2013000000814C4C02401004DA40080D02410004DA40088D00000D0672403FCC4800021E01 +:20130800027FFBC400000606030000844B00071E0000A90672403FCC4800031E027FFEC46A +:201310004884703A000001064F00A32611C4703A10803FCC1000A0263185883A1085883A69 +:20131800D885883A108000174240008B108000031085883AD885883A1300070B6258703A50 +:2013200060BFFFCC100094264A40004C2B403FCC4A40005C6A40901E427FFE8B4A40078410 +:201328004CC08D3603400044024020B480000385800003C583400405800004858300050D7F +:201330004A62210413C05D2678800E3614804A269080033615C0212612C0272600007E062E +:20133800128049261540502615807B1E00800044808003050080008480800345008001847E +:201340000000590617C05C26F8800A3600C1000410C057260242000412404E2615006E1E5C +:201348000080008480800305808003450080014400004D06031000041300552603600014FD +:2013500013405C2600C8000410C0631E00800104808003058000034500005C0618C03F4C71 +:2013580018C00060480003054800034548C0038548C003C500005E06008000441A3FFFC4B9 +:20136000014020B48080030542003FCC01C0008429622104008000443A000536020000844F +:2013680029C003452A00040531C0021E00001C062800034518FFFF0418C03FCC10C00A2E59 +:201370000080018430800A1E0140070408157A8000C020B418E2508410C5883A1080000B89 +:2013780010812C3000000E060080004400000C060005883A00000A06008000444880030513 +:201380000080008400000F06008000844880030548000345008000C43080351E00800044C5 +:2013880080800385000032060080008480800305008000448080034500002D060080008436 +:201390004880030548800345008001044880040500002706008000C480800305008000848A +:2013980080800345008001048080040500002006008000C4003FE506008000C448800305B7 +:2013A000008000844880034500800144003FEF0600800104488003050080008448800345B7 +:2013A800008001444880040500801E044880048500000F06008001048080030500800084F6 +:2013B00080800345008001848080040500801E048080048500000606210000440080078420 +:2013B8004200070420BF341E00BFFFC4000001068805883ADFC01317DF001217DDC0111729 +:2013C000DD801017DD400F17DD000E17DCC00D17DC800C17DC400B17DC000A17DEC0140414 +:2013C800F800283A20803FCCDEFFF9041080201CDC400415DFC00615DC800515DC00031501 +:2013D00010BFE0042823883A10000A0E2025883A000B883A01001DC40814F240D880028532 +:2013D80010C03FCC0100004420C02E3694001FCC000001062021883A081553400140010412 +:2013E0000009883A08155000081551808804D63ADC000005DC400105D88000458804D43AF1 +:2013E80084003FCCD88000858804D23AD88000C50080100480800426008012048080041E4E +:2013F00000BFE1C40000030600BFE544000001060080004401400184D809883AD8800145B6 +:2013F80008154EC001000144081559001021883A0440004401400044D90002840815500022 +:20140000D8800287100003168000051E08155EC00000030608155CC0147FF626003FFA06B4 +:20140800D8800283DFC00617DC800517DC400417DC000317DEC00704F800283ADEFFF604AC +:20141000DC000515000B883A2021883A01001244DFC00915DCC00815DC800715DC4006157A +:201418000814F24010803FCC100002260005883A0000430601000144081559001023883AD2 +:201420000480004404C03FC401400044D900048408155000D880048314C003268800051E43 +:2014280008155EC00000030608155CC014BFF626003FFA06D8C0048300803F8418BFEB1EB7 +:2014300001400484D809883A081550008080010310C0008C18001326D8800183D8C001C3DA +:20143800D9400143108000CC1004923A294003CC10C8B03AD88002031006D1BA2105883A1B +:201440001085883AD900028310C4B03AD8C002432008D1FA18C000CC18C7883A20C8B03A32 +:20144800000010061080010C10000B26D88001C3D9000203000B883A10800FCC1004923A7E +:201450001104B03A1006923AD8800243010004441884B03A00000306000B883A0009883A8E +:201458000005883A10BFFFCC10C0004421003FCC28803FCC2085883A10BFFE441884983A3A +:20146000DFC00917DCC00817DC800717DC400617DC000517DEC00A04F800283ADEFFF6046A +:2014680001402074DCC00715018002842027883A295E1504D809883ADD000815DC40051554 +:20147000DFC00915DC800615DC000415050000C4081580000440004408154D00081553402B +:201478000815574001400284D809883A08154EC0000B883A98000015010010040814F2402E +:2014800010803FCC1440511E01406A84010012040814F24010803FCC1440271E01400104E0 +:20148800D900028408155000D88003031440471ED8C0034300802A841880441E0100FA045C +:201490000815590008155CC01440032608155CC014400C1E000006060150003401003A4449 +:201498000814F24010803FCC103FF61E003FF706000B883A01001E840814F24010803FCC53 +:2014A000100002260021883A0000090601400104D900028408155000D88002831080100C67 +:2014A8001000021E04000104000001060400030408155EC000002606000B883A01003A4426 +:2014B0000814F24010803FCC8880032E0400004404801044000002060400008404BFFA4449 +:2014B80001003E840815590094803FCC08155CC01440042608155CC01000081E0021883AB3 +:2014C00000000606000B883A9009883A0814F24010803FCC103FF51E003FF60608155EC017 +:2014C800000B883A01001EC40814F24010803FCC100001260021883A014080040100140473 +:2014D0000814F24010803FCC100001260021883AA0BFFFC41029883A10803FCC84803FCC32 +:2014D80010000A26903F9C26008000449C000105988000159809883A081503C010BFFFC4BB +:2014E000988002150815558000000106903FF61E081551409005003ADFC00917DD000817A9 +:2014E800DCC00717DC800617DC400517DC000417DEC00A04F800283A20800217DEFFF804EA +:2014F000DC000115DFC00715DD400615DD000515DCC00415DC800315DC400215DC000817A9 +:2014F8001180313684BFFFCC90002F26208001032827883A3823883A1080020C300B883A7C +:201500001000011E300A927A010014440814F24010803FCC100002260400008400001F062F +:2015080001001904081559000500004405403FC401400044D809883A08155000D8800003AE +:201510001540052608155EC0D8C0000300803F8418BFF11E0000030608155CC0153FF4268C +:20151800003FF806008080841445C83A897FFFCC1421C83A280002260009883A0815500005 +:20152000900B883A9809883A08155000817FFFCC0009883A081550000021883A08155140EA +:201528008005883A00000106008000C4DFC00717DD400617DD000517DCC00417DC800317F4 +:20153000DC400217DC000117DEC00804F800283A018001B401406734010020B43186A0042C +:20153800297F300421041004081684C1280D883A200B883A010020B42104100408169A0170 +:20154000280D883A200B883A010020B42104100408169601F800283AD0A2110300C020B470 +:2015480018C4380410801FCCD0A2110518800035F800283AD0E2110300BFE0041884B03A52 +:2015500000C020B4D0A2110518C4380410803FCC18800035F800283A01800A7401406734AA +:20155800010020B4318CB804297F300421041004081684C1018001B401406734010020B4C6 +:201560003186A004297F300421041004081684C1D0A21B1710000B1EDEFFFF04015A5E041E +:20156800213FFFCCDFC0001508157A80D0A21B1508161C800005883ADFC00017DEC00104F1 +:20157000F800283A00800044F800283ADEFFFF04DFC0001508162040D0E21B1710C5803A5E +:20157800DFC00017DEC00104F800283AD0221B15F800283A20001B16000F883A28001616AE +:20158000200D883A29001A2E0080080400C000440000010610000D26294B883A10BFFFC449 +:2015880018C7883A293FFB360005883A180007260005883A31400236314DC83A10C4B03A4F +:201590001806D07A280AD07A183FFA1E380001260085C83AF800283A014BC83A39C0005C05 +:20159800003FE7060109C83A01C00044003FE30600C00044003FEE0620001716000F883A79 +:2015A0002005883A280012162900162E0180080400C000440000010630000A26294B883A59 +:2015A80031BFFFC418C7883A293FFB36180005261806D07A114001361145C83A280AD07A2F +:2015B000183FFB1E380001260085C83AF800283A014BC83A003FEC060109C83A01C00044DB +:2015B800003FE70600C00044003FF106200D883A2900152E280014160080080400C0004470 +:2015C0000000020610000E2628000516294B883A10BFFFC418C7883A293FFA361800082635 +:2015C8000005883A31400236314DC83A10C4B03A1806D07A280AD07A183FFA1EF800283AA8 +:2015D0000005883AF800283A00C00044003FF4062005883A2900122E280011160180080471 +:2015D80000C000440000020630000C2628000516294B883A31BFFFC418C7883A293FFA3620 +:2015E000180006261806D07A114001361145C83A280AD07A183FFB1EF800283AF800283ABF +:2015E80000C00044003FF7060005883A2000072620C0004C2008D07A180001261145883A9A +:2015F000294B883A203FFA1EF800283AF800283A218D883A218008262080000328C00003AD +:2015F80010C0022610C5C83AF800283A2100004429400044003FF7060005883AF800283A3B +:201600002005883A2007883A218D883A198005262900000318C0004429400044193FFFC5B5 +:20160800003FFA06F800283ADEFFF504DFC00915DC400815DC000715D9C00A15008020B459 +:2016100010A00804144000172800040E008022C48880001500BFFFC400001C0600C08204EC +:20161800D8C0000DD9000415D90002152800022628FFFFC4000001060007883AD8C005156F +:20162000D8C003151100001700FFFFC4D8C0008D00C0207418D7D4042821883AD9C00A041E +:20162800D80B883AD8C00115D80006150815A24000FFFFC410C0020E00C022C488C00015B8 +:2016300080000226D8C0041718000005DFC00917DC400817DC000717DEC00B04F800283A27 +:201638003000152631BFFFC4218D883A2080000328C0000311C03FCC1A003FCC39C0201C40 +:201640004200201C39FFE004423FE0043A00061E21800426380003262100004429400044EF +:20164800003FF2061007883A18C03FCC10803FCC10C5C83AF800283A0005883AF800283AA2 +:201650002005883A200F883A30000C262A00000338C0004431BFFFC43A00000542003FCC98 +:201658004200201C423FE00429400044180F883A403FF51E198D883A00000106F800283A9E +:2016600030C003261800000518C00044003FFC06F800283A214B883A2005883A1140021EF7 +:201668001105C83AF800283A10C00007183FFC2610800044003FF906DEFFFB04DC8003153E +:20167000DC400215DC000115DFC004152025883A2823883AD98000053821883A04000A0ED4 +:201678008880011701C00044D80D883A880B883A9009883A103EE83A843FFFC4103FF72674 +:2016800000BFFFC4000001060005883ADFC00417DC800317DC400217DC000117DEC00504FA +:20168800F800283ADEFFE504D8C00804DDC01815DD801715DD401615DD001515DCC0141517 +:20169000DC801315DC401215DC001115DFC01A15DF0019152029883A2823883A382D883A57 +:20169800D9800F150021883AD8000E15D8000A15002B883A0027883A0025883AD8000C152A +:2016A000D8000B15002F883AD8C00915D8C00F171900000320803FCC1080201C10BFE00487 +:2016A80010011E2600C00044B8C014261DC00216B80006260001150601400084B9401D2621 +:2016B000014000C4B9402B2600011006014009441140FC2688800117D900000501C00044B0 +:2016B800D80D883A880B883AA009883A103EE83A1000D81E840000440001040601400C0411 +:2016C0001140FA260140094411400A1ED880000588800117B80F883AD80D883A880B883A90 +:2016C800A009883A103EE83A1000CA1E840000440000F50625FFF404BDC03FCC00C00244C2 +:2016D0001DC0093600BFFFC490800426014002849009883A08157A80000001060005883A1B +:2016D800B8A5883A0000E20601400B841140E42605C00084213FF40427003FCC00C00244E7 +:2016E0001F00093600BFFFC498800426014002849809883A08157A80000001060005883AB9 +:2016E800E0A7883A0000D90600C01B0410C0D226013FFFC499000226D8000B150000010650 +:2016F00004C0004401001A441100162620800916010018C411008826010019041100112665 +:2016F800010016041100C81E00C00044D8C00E150000150601001CC411009826208004167C +:2017000001001BC41100C01E0540020400000F0601001D4411000D2601001E0411000A2690 +:201708000000B906D8C00A17B700010418000726DF000D15B5C00017B800080E05EFC83AF7 +:20171000024000440000060605400404B0C00104D8C00D15B5C00017D8000A150013883A53 +:20171800D839883AB8001726A80B883AB809883ADA40101508156EC0A80B883A1009883A17 +:20172000102D883A08157A80B885C83A00C00244DA4010171880021610800C0400000506B2 +:20172800D8C00E171800022610800DC400000106108015C4E0800005B02F883AE7000044A2 +:20173000003FE806E6EFC83A9DC5C83A0080090EE085883A01400C04D8C00917E009883ABF +:20173800E0C0032EE700004421400005E0BFFA1EE6EFC83AD8C00B174DD1883A922DC83A46 +:201740001800162648000A2600800B44D88008058880011701C00044D9800804880B883AAA +:20174800A009883A103EE83A10004A1E840000440580070EB00F883A01800C04880B883A65 +:20175000A009883A08159B801000421E85A1883AE02D883ABF2FC83A000020060580090EFD +:20175800B00F883A01800804880B883AA009883ADA40101508159B80DA4010171000351E88 +:2017600085A1883A483FF22600800B44D88008058880011701C00044D9800804880B883ACF +:20176800A009883A103EE83A10002A1E84000044003FE706B5BFFFC4B080000301C00044CB +:20177000D9800804D880080588800117880B883AA009883A103EE83A10001E1E8585C83AE7 +:20177800B5C9883AE085883A013FF2161021883ADD800D1700004406008000441480080E76 +:2017800095FFFFC4B80F883A01800804880B883AA009883A08159B8010000E1E85E1883A80 +:20178800B080001701C00044D80D883AD880000588800117880B883AA009883AB5C0010497 +:20179000103EE83A1000031E84000044B82D883A00002D0600BFFFC400003106B5C00017B1 +:20179800B7000104B809883A081605809091C83A102D883A0200090E400F883A0180080476 +:2017A000880B883AA009883ADA00101508159B80DA001017103FEF1E8221883A8880011750 +:2017A800B00F883AB80D883A880B883AA009883A103EE83A103FE71E85A1883AE02D883ADE +:2017B0000000110600C0004404FFFFC4D8000E15D8C00A15054002849825883AD8000C1543 +:2017B800D8000B15182F883A00000806DDC00B1505C000840000050600C00044D8C00C1534 +:2017C00005C000C400000106002F883AD8C00F1718C00044D8C00F15003EDC068005883A8B +:2017C800DFC01A17DF001917DDC01817DD801717DD401617DD001517DCC01417DC8013172B +:2017D000DC401217DC001117DEC01B04F800283A2880000B10C0020C1800202628C0008F33 +:2017D800DEFFFD04DC000015DFC00215DC4001152821883A1800150E10C0800C1800132647 +:2017E0002C40051789C0030E10C0200C1800032600000E063C40010E3823883A8100041772 +:2017E800300B883A880D883A0815FF80808005171445C83A80800515808004171463883A0C +:2017F000844004150005883A00000606108010148080000D00BFFFC40000020600BFFFC45C +:2017F800F800283ADFC00217DC400117DC000017DEC00304F800283A2005883A218F883A40 +:20180000290002361007883A00000C062987883A20FFFC2E380B883A30CDC83A1989883A59 +:201808002000052618FFFFC419000003297FFFC429000005003FF906F800283A19C005264A +:201810002900000318C0004429400044193FFFC5003FFA06F800283A2005883A10C0000750 +:201818001800022610800044003FFC061105C83AF800283ADEFFFF0401002074014020B45F +:20182000DFC00015211E200429600C042140061E0100207401402074210008042940080467 +:201828002140121E00000B0600C020B418E00C041907C83A0005883A10FFF526114F883A2D +:2018300039C00017110D883A1080010431C00015003FF9060100207401402074211AB60470 +:20183800295AB6042140101E00000B0600C0207418C008041907C83A0005883A10FFF52668 +:20184000114F883A39C00017110D883A1080010431C00015003FF9060816A5C0DFC0001764 +:20184800DEC001040816ACC100C0207418DE20041907C83A0005883A18BFF726114F883AE5 +:2018500039C00017110D883A1080010431C00015003FF906DEFFFF040009883ADFC0001550 +:201858000816184008161A40D1A21C17D1621D17D1221E17DFC00017DEC001040812068153 +:2018600008169DC1DEFFFF04DFC000150816AD00008000441001703ADFC00017DEC00104B5 +:20186800F800283A008020B410840004D0A22015010020740080673410BF3004211FB404C8 +:20187000D0A21F15081666C1D0E21F17D0A2201718000A2610C0010401000204190000356A +:20187800013FFFD4110002351100033500800104188000350005883AF800283A00BFFFC4B7 +:20188000F800283AD0A21F1710000926D0E2201718800404100000351080003718C005375E +:201888001806943A10BFFFCC1884303AF800283A00BFFFC4F800283AD0A21F17F800283A7C +:2018900020001D262804923A20C03017DEFFFD04DC400115DC000015DFC002152823883AF2 +:201898002021883A108000D41880033580C03017188000371080004C100003260100004449 +:2018A00008169DC0003FF906198000373007D0BA3009D0FA18C001CC2100020C1908B03AFC +:2018A8003007D07A18C0040C1906B03A88C0042600BFF4840000020600BFFA84F800283A66 +:2018B000DFC00217DC400117DC000017DEC00304F800283A20000A26280009263000082635 +:2018B80020800C173080001520800C171000062621000D04290000150005883AF800283AF8 +:2018C00000BFFA84F800283A00BFFEC4F800283A2005883A20001D262809883A28001B1600 +:2018C80010C0311728C0192E1140341728FFFFC41906703A1800151EDEFFFE04DC0000154F +:2018D000DFC001151021883A08156EC01004923A00C0403418FFC00410C4703A80C0301711 +:2018D800108000941880033580C0301718C00404188000371080004C1000062600800044EA +:2018E0001880003500BFFEC40000020600BFFA84F800283ADFC00117DC000017DEC00204AD +:2018E800F800283ADEFFF504DC000115DFC00A15DF000915DDC00815DD800715DD40061598 +:2018F000DD000515DCC00415DC800315DC400215DC000B1728003A163023883A300038167C +:2018F8002027883A20003626382B883A38003426208031173080322E2880312E20803417AA +:201900003147C83A10C7C83A1C002D3680002C1610BFFFC4114A703A2800291E0029883A42 +:2019080005BFFFC405C000C40700010480002226DD800015890000CC20000626E105C83AE0 +:201910008025883A1400012E1025883A8923C83A00000406BC0002368025883A00000106FC +:2019180004800104AD0B883A900D883AD909883A0815800098802E17D8C00017A4A9883AF1 +:2019200084A1C83A8885883A10C00035988030171080040410C0003718C0008C1800042608 +:2019280000C0008410C0003500BFFEC4000005068C400104003FDD060005883A0000010609 +:2019300000BFFA84DFC00A17DF000917DDC00817DD800717DD400617DD000517DCC004177A +:20193800DC800317DC400217DC000117DEC00B04F800283A20001626DEFFF604DD000515BF +:20194000DFC00915DDC00815DD800715DD400615DCC00415DC800315DC400215DC00011511 +:201948003029883A30000C262021883A20802E1780C02F172823883A2885883A382B883AF3 +:201950003889883A10C0042E20C005360000020600BFFA84F800283A00BFFA8400002406D1 +:20195800814034178809883A002D883A08156EC0102F883A80803317B8801C2EA8001B2620 +:2019600084C0341704E7C83A9C66703A8CC002268CE5C83A000001060025883A980B883A05 +:201968008009883A081631001000111E8080341714A5C83AAC80012EA825883ADC80001525 +:20197000A58F883A880D883A980B883A8009883A08163A401000061EACABC83AB4AD883A12 +:201978008CA3883ABDC00044003FE2060005883ADFC00917DDC00817DD800717DD4006177F +:20198000DD000517DCC00417DC800317DC400217DC000117DEC00A04F800283A20000826A4 +:201988003007883A3000062620802E17288B883A20802F17394D883A2880012E30800236A3 +:2019900000BFFA84F800283ADEFFFF04380D883A1809883ADFC00015081580000005883ABE +:20199800DFC00017DEC00104F800283A20004E262080301710004E2620C03217DEFFFB0478 +:2019A000DFC00415DCC00315DC800215DC400115DC00001518001E1E1480023700C003043D +:2019A80094803FCC90BFFAC418804336100490BA00C0207418D9B10410C5883A108000174C +:2019B0001000683A00816730008167400081674800816738008166F8008167B8008167B8B6 +:2019B800008167B8008167B8008167B8008167B800816700008167080440800400001306D6 +:2019C00004410004000011060442000400000F06148001370080058494803FCC90800A2614 +:2019C8000080060490800426008005049080221E0440080400000506044040040000030676 +:2019D00004401004000001060440200424C034172021883A8809883A980B883A08157A802F +:2019D80080C0311710C0021E80C0331788C0022680000C150000100600C000448480361573 +:2019E00080C00C1580000D1580800E1584400F1584C01015D1601F048009883A0816A6000D +:2019E8000005883A0000050600BFFA84F800283A00BFFB44F800283A00BFFB44DFC0041766 +:2019F000DCC00317DC800217DC400117DC000017DEC00504F800283A300001260005C03236 +:2019F80000FFFF042005883A28C6703A110DC83A30C0042E11800017300DC0F210800104E0 +:201A0000003FFA06294000CC00C000C428C0041E10C0000B1807C0B2108000830000080637 +:201A080000C0008428C0031E1080000B1005C0B20000040600C0004428C0021E10800003A6 +:201A10001005C0720005C132F800283ADEFFFD04DC400115DC0000152823883A2021883A0C +:201A1800014001443009883ADFC0021508157A80100B883A8809883A08156EC010BFFFC453 +:201A200080C0020418000035010000448100043511003FCC810000351004D23A10803FCC87 +:201A2800808001350080200418800035DFC00217DC400117DC000017DEC00304F800283A19 +:201A30003180004C294B883A298B883A2140033521000404008024042080003520800037D7 +:201A38001080008C103FFD1E208000371004D1FA1080004CF800283A20C0040428000226E4 +:201A400000801A04000001060080080418800035188000371080008C103FFD1E2080033759 +:201A4800F800283A29403FCC2140033521000404300002260080140400000106008004046F +:201A500020800035208000371080008C103FFD1E208000371004D1FA1080004CF800283A58 +:201A580021C004042805883A02000B04210003041147C83A1980090E3A00003538C00037B5 +:201A600018C0008C183FFD1E2800022620C0003710C0000510800044003FF506F800283AEC +:201A680021C003042805883A21000404020007041147C83A1980080E10C0000338C0003548 +:201A70002200003520C0003718C0008C183FFD1E10800044003FF606F800283A014AAAF4C0 +:201A7800DEFFFE04296AAA84DC000015DFC001152021883A08156EC010000F2601600034E0 +:201A8000013555740007883A297FFFC421155584297FFFC4283FFE1E18C000448121883A96 +:201A880018BFFB168405883A1421883A843FFFC4803FFE1E000004068405883A1421883A67 +:201A9000843FFFC4043FFE160005883ADFC00117DC000017DEC00204F800283AF800283A90 +:201A980020000226208002171000101ED0A01E1710000926DEFFFF04DFC00015103EE83A07 +:201AA00000C0058410C0001500BFFA84DFC00017DEC00104F800283AD0A2210400C0058428 +:201AA80010C0001500BFFA84F800283A2880001721400115208000152880001711000115D1 +:201AB000290000150005883AF800283AF800283A000170FAF800283A73616C4672652068B3 +:201AB800006573616F727265642520720000000073616C4672772068006574696F72726511 +:201AC0000000007273616C4665762068206669726C6961660000000053206F4E6163204456 +:201AC80064206472002E74652520732500632575252E75256B75322E25207A482E252E7599 +:201AD0007A4875320000000064616F4C0000646564616F4C696166200064656C00007325A7 +:201AD800746F6C5300752520657661530000006465766153696166200064656C4353534F53 +:201AE000776620207525202E322E252E0000007574696E49727265202020726F0000642512 +:201AE8002020202053204F4E00434E59343130323130322D6D202037737172610000000042 +:201AF00074736554746170206E726574000000003A31564142475220000000533A315641C6 +:201AF80073475220000000423A31564162505920000072503A325641625059200000725081 +:201B00003A32564173475220000000423A33564142475220000056483A33564142475220B8 +:201B0800000000533A33564173475220000000423A33564162505920000072507473614C73 +:201B1000657375200000006400816BC000816BD000816BDC00816BE800816BF400816C0013 +:201B180000816C0C00816C1800816C2400816C3000816C3C00000000000100000101000055 +:201B200000010001000000000110000144060B000001000380808000001A1A1A73657250D0 +:201B280000000073666E6F43006D72696D73694D686374616572202C00797274646F4D562E +:201B30007325203A00000000203A434C56207525203A4D5300007525656E694C746C756DCC +:201B3800646F6D2000003A65736572702D312073000000352078752575736E75726F7070F0 +:201B400000646574666F725020656C6964616F6C0000003A736572702D302073000000399A +:201B480000000031000000320000003300000034000000360000003700000038554E454DD9 +:201B50000000000000004B4F4B43414200000000000050554E574F44000000005446454CC2 +:201B58000000000048474952000000544F464E49000000005F44434C4B4341424847494C5C +:201B6000000000544E414353454E494C444F4D5F000000454E414353454E494C5059545F97 +:201B6800000000454E414353454E494C544E495F0000002B4E414353454E494C544E495FBF +:201B70000000002D454E494C544C554D444F4D5F000000455341485000002B455341485072 +:201B780000002D45464F52505F454C494B544F4801005945030F031F3E2903033E693EA967 +:201B80003E193EE93E593E993E393ED93E4D3EC93EED3E1D3ECD3E2D3E6D3EAD3E013E65C5 +:201B88001C181C481CD01C505E581CC83EB95ED800816D2000816D2400816D2800816D2C36 +:201B900000816CF000816D3000816D3400816D3800816D1C008173E800816D3C00816D44B0 +:201B980000816D4800816D5000816D5400816D5C00816D6400816D6C00816D7400816D84AD +:201BA00000816D9400816DA400816DB400816DC400816DD400816DDC00816DE44353534F27 +:201BA8000000000061766E492064696C67616D690000006561766E492064696C64616568BA +:201BB0000000726561766E492064696C2072646800435243696C6156697461646420676E9A +:201BB8000061746162207525736574790000000061766E492064696C61746164435243207D +:201BC00000000000252E75252575322E00732573636E6143656C6C6500000064616470550E +:201BC800676E69740057462061656C70772065732E74696100002E2E697265566E69796669 +:201BD0006C6620670068736172746552676E6979647075200065746161647055203F6574A7 +:201BD8002C593D314E3D322000000000202020200000752564206425000067656C20752504 +:201BE00073656E6900000000252E75252075322E000073756D2064250000005670207525D6 +:201BE8006C657869000000732525752500000000656469566E69206F6F7270203E20206394 +:201BF00000000000706D6153676E696C74706F203E20202E00000000636E795374706F206B +:201BF8002020202E3E202020000000007074754F6F207475202E74703E20202000000000B1 +:201C000074736F506F72702D20202E633E20202000000000616F4C3C727020646C69666FC9 +:201C0800003E20657661533C727020656C69666F003E20657365523C732074656974746537 +:201C10003E73676E00000000657365526F6420740000656E2E77463C64707520206574617B +:201C18003E202020000000002D204B4F736C70207365722074726174000000006C696166F7 +:201C2000000064656E616353656E696C000000736E616353656E696C727473200000002E67 +:201C28006E616353656E696C70797420000000656E616353656E696C696C61202E6D6E679A +:201C30000000000069726F48746E6F7A6D206C61006B7361747265566C61636973616D2003 +:201C38000000006B6B73614D697262206E74686700737365703034323838322F72702070F3 +:201C40000000636F703438336F72702000000063693038343637352F727020690000636FBC +:201C4800703038343637352F727020700000636F693036393830312F7020693000636F721E +:201C5000656E694C6D2078320065646F656E694C6D2078330065646F656E694C6D207834C4 +:201C58000065646F656E694C6D2078350065646F656E694C66207835616D726F000000745C +:201C6000783635322030343265707361000074636D2058540065646F494D44484354492086 +:201C68000000000074696E49206C616975706E69000000746C616E417320676F20636E79F3 +:201C70000046504C6C616E417320676F20636E79006874566E7973486F7420636172656C45 +:201C78000065636E6E797356687420636873657200646C6F4C502D487250204C6F432D6593 +:201C8000007473614C502D486F50204C432D74737473616F00000000706D6153676E696C77 +:201C8800616870200000657370303834206E6920706D61730072656C6F6C6C41565420772B +:201C90005048205078324C4C000000007664413C6974202E676E696D3E202020000000001F +:201C980065646956504C206F00000046506250596E6920726C6F43200061705372502F52CA +:201CA00066666F200074657320592F477366666F0000746562502F4266666F20007465733D +:201CA80072502F52696167200000006E20592F476E6961670000000062502F426961672018 +:201CB0000000006E73202E486C706D61746172650000006573202E486C636E7900006E6550 +:201CB80062202E48706B63616863726F0000000061202E48766974630000006573202E56A0 +:201CC0006C636E7900006E6562202E56706B63616863726F0000000061202E56766974636F +:201CC8000000006500706F5474746F4200006D6F69726F48746E6F7A00006C617472655624 +:201CD0006C6163690000000065746C4174616E7200676E690066664F6F747541000000002E +:201CD800756E614D00006C61494D4448000000000049564400373A38737361507572687486 +:201CE00000000000656E694C00007832656E694C2820783229626F6200000000656E694C54 +:201CE800282078336563616C00002964656E694C2820783429626F6200000000656E694C67 +:201CF00000007833656E694C00007834656E694C00007835303239313830317800000030B3 +:201CF800303036313032317800000030303239313032317800000030656E654720636972E6 +:201D000000333A3478303233203034326974706F00002E6D78363532203034326974706F81 +:201D080000002E6D656E654720636972393A363100000000484D33336D28207A00296E693F +:201D1000484D30316D28207A002964654D352E3228207A482978616D000000002056544433 +:201D18007030383400000000415345563034362030383478003036402E63655231303620FD +:201D2000000000002E6365523930372000000000484D35394828207A2056544400294949C5 +:201D2800484D35334828207A2056544400002949484D36314528207A2956544400000000FA +:201D30007A484D39445328200029565400006E4F445253550041544100000020008174783B +:201D38000000200020002CE5E926F4FD38BC20000000000000817484000020002000323EFD +:201D4000F113FA043B61200000000000363335313034327806000000177000F0010607FE5F +:201D480003960FEA20020112303832313034327805000000177000F00106061803480FAA36 +:201D500004420112783036390030343203C00000177000F00106049203360F800082011239 +:201D5800783032330030343201400000177000F0010601AA031F0E3149100112783635327C +:201D60000030343201000000177000F00106015503190E27922001127030343200000000DC +:201D680002D00000177000F00106035A033E0F39000E011236333531303432780600004CD5 +:201D7000138800F0013807FE039629EA200201123038323138383278050000001388012003 +:201D78000138061803480FAA04420112783036390038383203C00000138801200138049290 +:201D800003360F8000820112783032334C30343201400042138800F0013801AA031F293189 +:201D880049100112783635324C30343201000042138800F00138015503192927922001124A +:201D9000703838320000000002D000001388012001380360033F1345000E0112703438332D +:201D98000000000001F000001686018001A70280033E1D32000E020478303436003438339E +:201DA00002800000157C018001EC032002603F30000E0210693038340000000002D00000B7 +:201DA800176A00F0020D035A033E0F39044F0312703038340000000002D00000176A01E00D +:201DB000020D035A063E1E3C000C0414783034360030383402800000177001E0020D03201B +:201DB80002602130000C0514783034360032313502800000177002000238032002601C3073 +:201DC00000040010693637350000000002D000001388012002710360033F1345044F03127E +:201DC800703637350000000002D00000138802400271036005402744000C04047830303890 +:201DD0000030303603200000177002580274042004801758000400107030323700000000AF +:201DD80005000000176A02D002EE0672052814FF00040008303832313032377805000000FE +:201DE000177002D002EE0672052814DC00040010343230313836377804000000177003007F +:201DE8000326054006881DA00004001030383231323031780500003417700400042A0698A8 +:201DF000037026F800040010783034366930363902800000176A01E0041A0320026021303C +:201DF800000D0614303830310000006907800000176A021C04650898052C10BC000D06082B +:201E0000303830310000007007800000176A043804650898052C24BC000400083032393153 +:201E080038303178078000301770043804650898052C249400040010303036313032317857 +:201E100006400030177004B004E2087003C02EFF00040010FFFFFFFFFFFFFFFF0000FFFFA9 +:201E18007665642F6370652F6F635F716F72746E72656C6C615F305F6D5F6C7600006D65F2 :201E20000000000000000000000000000000000000000000000000000000000000000000A2 :201E280000000000000000000000000000000000000000000000000000000000000000009A :201E3000000000000000000000000000000000000000000000000000000000000000000092 @@ -998,94 +998,94 @@ :201F20000000000000000000000000000000000000000000000000000000000000000000A1 :201F2800000000000000000000000000000000000000000000000000000000000000000099 :201F3000000000000000000000000000000000000000000000000000000000000000000091 -:201F38000000000000000000000000000000000000000000017804E53CCE00813FAE038329 -:201F40003F333D4905B80383009301B404163C493CD93F9F04163F10020E04093D0E00C8D3 -:201F48003F6E03833ED03DAC04B2038300E9026404163C933D493F5604163E9F00817C705C -:201F5000000000000000000000000000000000000000000000816D180000000300817C98D3 -:201F5800000000000000000000816D2C0000000300817C90000000000000000000816D4091 -:201F60000000000300817C88000000000000000000816D540000000300817C800000000017 -:201F68000000000000816D680000000300817C78000000000000000000816D7C000000031E -:201F70000000000000811AD00000000000816D8C000000030000000000811BA80000000025 -:201F780000816D9C000000040081245C00816DB000816D1400816DBC0000000400812A7C45 -:201F800000816DD000816DE400816DEC000000000081854D0002000100817A0400816DF89C -:201F8800000000010081854F000F0000008130C400816E08000000000081854E0002000111 -:201F9000008179F800816E1800000000008185500001000100817CA800816E2C000000011F -:201F98000081855C003F0000008130A800816E3C000000010081855D003F0000008130A808 -:201FA00000816E4C000000010081855E000F000000812F5800816E5C0000000000818556C3 -:201FA8000004000100817A1000816E6C00000000008185570001000100817CC000816E782B -:201FB00000000000008185580001000100817CC800816E8800000000008185590001000114 -:201FB80000817CC000816E98000000000081855A0001000100817CC800816EA80000000007 -:201FC000008185520003000100817A3C00816EB400000000008185530002000100817A3044 -:201FC80000816EC000000000008185540002000100817A3000816ECC0000000000818555AC -:201FD0000002000100817A2400816EDC000000000081855B0001000100817CB800816EEC11 -:201FD800000000000081855F0001000100817CB000816EF4000000000081856B000A000176 -:201FE00000817A8000816F0400000000008185670003000100817A4C00816F1400000001B5 -:201FE80000818564001F00000081306400816F24000000010081856500FF000000812FD438 -:201FF00000816F34000000010081856600C80A0000812FD400816F44000000010081856946 -:201FF8000005000000812FB800816F54000000010081856A0005000000812FB800816F68E2 -:202000000000000100818561001F000100812F7400816F7800000000008185600002000143 -:2020080000817A5C00816F8800000000008185620001000100817CD800816F9C000000031B -:2020100000817CA000811C800000000000816FB000000000008185680005000100817A687F -:2020180000816FBC00000000008185630001000100817CD000816FCC000000010081856C95 -:2020200000FF000000812F5800816FD8000000010081856D00FF000000812F5800816FE482 -:20202800000000010081856E00FF000000812F5800816FF0000000010081856F00FF0000C7 -:2020300000812F5800816FFC000000010081857000FF000000812F58008170080000000124 -:202038000081857100FF000000812F5800817014000000020081847408FC012C00811D8437 -:2020400000817024000000020081847E00C8000A00811D8400817030000000020081847258 -:20204800078000C800811D840081703C000000020081847004B000C800811D84008170488C -:20205000000000020081846A00FF000100811D8400817058000000020081847A00FF000113 -:2020580000811D8400817074008170800081708C008170980081709C008170A4008170BC9B -:20206000008170C8008170E0008170E8008170F0008170F800817104008171100081711C2D -:202068000081712800817138008171480081711C00817128008171380081709800817158B5 -:2020700000817164008171700081709C008171800081718C0081709C00817098008171B45F -:20207800008171C4008171D4008171E40081695400816964008169700081697C0081698838 -:2020800000816994008169A0008169AC008169B8008169C4008169D00000000000817B6C30 -:2020880000817B7400817B7C00000000000000000000000000000000000000000000000050 -:20209000000000000000000000000000000000000000000000000000000000000000000030 -:20209800000000000000000000000000000000000000000000000000000000000000000028 -:2020A000000000000000000000000000000000000000000000000000000000000000000020 -:2020A800000000000000000000000000000000000000000000000000000000000000000018 -:2020B00000000000000000000000000000000000000000000000000000000004000000000C -:2020B8000001000A000000000002000A0000000000000000000000000000000000000000F1 -:2020C00000817568000000000000000000816288008163B000816068008160A400816138BB -:2020C800000000000080000000000000000000000000000000000000000000000000000078 -:2020D0000000000000000000000000000000000000000000000000000000000000000000F0 -:2020D8000000000000000000000000000000000000000000000000000000000000000000E8 -:2020E0000000000000000000000000000000000000000000000000000000000000000000E0 -:2020E80000000000000000000000000000815FD40000000000800000008210200080000072 -:2020F000000000010000008000010000000001000000000000108010000000800000000924 -:2020F800008175E8000000070081769C0000000C0081772800000006008178180000000409 -:202100000081789000000008008178E00000000600817980008170680081706C008170AC82 -:20210800008170B400817124008170B8008170BC008170C8008170BC008170D00081719CF1 -:20211000008171A800817098008171F0C896554B00817AAC0000000000817CEC00817CEC33 -:202118000000000000000000000000000000000000000000000000000000000000000000A7 -:2021200000000000000000000000000000000000000000000000000000000000000000009F -:20212800000000000000000000000000000000000000000000000000000000000000000097 -:2021300000000000000000000000000000000000000000000000000000000000000000008F -:20213800000000000000000000000000000000000000000000000000000000000000000087 -:2021400000000000000000000000000000000000000000000000000000000000000000007F -:20214800000000000000000000000000000000000000000000000000000000000000000077 -:2021500000000000000000000000000000000000000000000000000000000000000000006F -:20215800000000000000000000000000000000000000000000000000000000000000000067 -:2021600000000000000000000000000000000000000000000000000000000000000000005F -:20216800000000000000000000000000000000000000000000000000000000000000000057 +: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 +:2020080000000000000000000000000000000000017804E53CCE00813FAE03833F333D4960 +:2020100005B80383009301B404163C493CD93F9F04163F10020E04093D0E00C83F6E0383C7 +:202018003ED03DAC04B2038300E9026404163C933D493F5604163E9F00817FB40000000077 +:202020000000000000000000000000000000000000816FB00000000300817FDC0000000021 +:202028000000000000816FC40000000300817FD4000000000000000000816FD80000000342 +:2020300000817FCC000000000000000000816FEC0000000300817FC4000000000000000021 +:20203800008170000000000300817FBC0000000000000000008170140000000300000000D0 +:2020400000811AF80000000000817024000000030000000000811BD0000000000081703444 +:2020480000000004008124D40081704800816FAC008170540000000400812C68008170686F +:202050000081707C0081708400000000008188D50002000100817D380081709000000001F5 +:20205800008188D7000F0000008132B0008170A000000000008188D60002000100817D2C79 +:20206000008170B000000000008188D80001000100817FEC008170C400000001008188E54C +:20206800003F000000813294008170D400000001008188E6003F000000813294008170E4C2 +:2020700000000001008188E7000F000000813144008170F400000000008188DF0004000188 +:2020780000817D540081710400000000008188E0000100010081800400817110000000000E +:20208000008188E10003000100817D440081712000000000008188E200010001008180040C +:202088000081713000000000008188E30003000100817D440081714000000000008188DACF +:202090000002000100817D740081714C00000000008188DB0003000100817D8000817158CD +:2020980000000000008188DC0002000100817D740081716400000000008188DD000200018F +:2020A00000817D740081717000000000008188DE0002000100817D6800817180000000008A +:2020A800008188E40001000100817FFC0081719000000000008188E80001000100817FF4C4 +:2020B0000081719800000000008188E90001000100818014008171A400000000008188F5E9 +:2020B800000A000100817DC4008171B400000000008188F10003000100817D90008171C453 +:2020C00000000001008188EE001F000000813250008171D400000001008188EF00FF000028 +:2020C800008131C0008171E400000001008188F000C80A00008131C0008171F4000000018B +:2020D000008188F300050000008131A40081720400000001008188F400050000008131A449 +:2020D8000081721800000001008188EB001F0001008131600081722800000000008188EAA8 +:2020E0000002000100817DA00081723800000000008188EC00010001008180140081724CC9 +:2020E8000000000300817FE400811CA8000000000081726000000000008188F20005000158 +:2020F00000817DAC0081726C00000000008188ED000100010081800C0081727C0000000152 +:2020F800008188F600FF0000008131440081728800000001008188F700FF00000081314463 +:202100000081729400000001008188F800FF000000813144008172A000000001008188F9AB +:2021080000FF000000813144008172AC00000001008188FA00FF000000813144008172B87F +:2021100000000001008188FB00FF000000813144008172C400000002008187F608FC012CCD +:2021180000811DB4008172D4000000020081880000C8000A00811DB4008172E0000000028A +:20212000008187EA00FF000100811DB4008172F000000002008187F4078000C800811DB4D9 +:20212800008172FC00000002008187EE0007000100811DB40081730800000002008187FC54 +:20213000003F000100811DB40081731800000002008187F204B000C800811DB40081733003 +:202138000081733C00817348008173540081735800817360008173780081738C0081739CB7 +:20214000008173AC0081737800817384008173BC008173C4008173CC008173D4008173E037 +:20214800008173EC008173F8008174040081741400817424008173F80081740400817414A2 +:202150000081735400817434008174400081744C008173580081745C008174680081735842 +:202158000081735400817490008174A0008174B0008174C000816BC000816BD000816BDC7B +:2021600000816BE800816BF400816C0000816C0C00816C1800816C2400816C3000816C3C69 +:202168000000000000817EB000817EB800817EC00000000000000000000000000000000032 :2021700000000000000000000000000000000000000000000000000000000000000000004F :20217800000000000000000000000000000000000000000000000000000000000000000047 :2021800000000000000000000000000000000000000000000000000000000000000000003F :20218800000000000000000000000000000000000000000000000000000000000000000037 :2021900000000000000000000000000000000000000000000000000000000000000000002F -:20219800000000000000000000000000000000000000000000000000000000000000000027 -:2021A00000000000000000000000000000000000000000000000000000000000000000001F -:2021A800000000000000000000000000000000000000000000000000000000000000000017 +:2021980000000004000000000001000A000000000002000A0000000000000000000000000C +:2021A0000000000000000000008178600000000000000000008164F40081661C008162D433 +:2021A80000816310008163A40000000000800000000000000000000000000000000000001B :2021B00000000000000000000000000000000000000000000000000000000000000000000F :2021B800000000000000000000000000000000000000000000000000000000000000000007 :2021C0000000000000000000000000000000000000000000000000000000000000000000FF -:2021C8000000000000000000000000000000000000000000000000000000000000000000F7 -:2021D0000000000000000000000000000000000000000000000000000000000000000000EF -:2021D8000000000000000000000000000000000000000000000000000000000000000000E7 -:2021E0000000000000000000000000000000000000000000000000000000000000000000DF -:2021E8000000000000000000000000000000000000000000000000000000000000000000D7 -:2021F0000000000000000000000000000000000000000000000000000000000000000000CF +:2021C800000000000000000000000000000000000000000000816240000000000080000054 +:2021D00000821020008000000000000100000080000100000000010000000000001080109A +:2021D8000000008000000009008178E000000007008179940000000E00817A2000000006C1 +:2021E00000817B380000000400817BB00000000800817C000000000700817CA0008173243A +:2021E80000817328008173680081737000817400008173740081737800817384008174784D +:2021F0000081748400817354008174CCC896554B00817DF00000000000818028008180280F :2021F8000000000000000000000000000000000000000000000000000000000000000000C7 :202200000000000000000000000000000000000000000000000000000000000000000000BE :202208000000000000000000000000000000000000000000000000000000000000000000B6 diff --git a/software/sys_controller/ossc/av_controller.c b/software/sys_controller/ossc/av_controller.c index 3282e12..5395a68 100644 --- a/software/sys_controller/ossc/av_controller.c +++ b/software/sys_controller/ossc/av_controller.c @@ -68,7 +68,7 @@ alt_u8 stable_frames; alt_u8 update_cur_vm; alt_u8 vm_sel, vm_edit, profile_sel; -alt_u16 tc_h_samplerate, tc_h_synclen, tc_h_active, tc_v_active, tc_h_bporch, tc_v_bporch; +alt_u16 tc_h_samplerate, tc_h_synclen, tc_h_bporch, tc_h_active, tc_v_synclen, tc_v_bporch, tc_v_active; char row1[LCD_ROW_LEN+1], row2[LCD_ROW_LEN+1], menu_row1[LCD_ROW_LEN+1], menu_row2[LCD_ROW_LEN+1]; @@ -94,8 +94,7 @@ inline void SetupAudio(tx_mode_t mode) if (tc.tx_mode == TX_HDMI) { alt_u32 pclk_out = (TVP_EXTCLK_HZ/cm.clkcnt)*video_modes[cm.id].h_total*cm.sample_mult*(cm.fpga_vmultmode+1); - if (cm.hdmitx_pixelrep == HDMITX_PIXELREP_2X) - pclk_out *= 2; + pclk_out *= 1+cm.hdmitx_pixelrep; printf("PCLK_out: %luHz\n", pclk_out); EnableAudioOutput4OSSC(pclk_out, tc.audio_dw_sampl, tc.audio_swap_lr); @@ -122,9 +121,10 @@ inline void TX_enable(tx_mode_t mode) // re-setup EnableVideoOutput(PCLK_MEDIUM, COLOR_RGB444, COLOR_RGB444, !mode); - //TODO: set correct VID based on mode + //TODO: set VIC based on mode if (mode == TX_HDMI) { - HDMITX_SetAVIInfoFrame(HDMI_480p60, F_MODE_RGB444, 0, 0); + HDMITX_SetAVIInfoFrame(HDMI_Unkown, 0, 0, tc.hdmi_itc, cm.hdmitx_pixelrep); + cm.cc.hdmi_itc = tc.hdmi_itc; #ifdef DIY_AUDIO SetupAudio(mode); #endif @@ -184,7 +184,7 @@ status_t get_status(tvp_input_t input, video_format format) //alt_u8 refclk; alt_u8 sync_active; alt_u8 vsyncmode; - alt_u16 fpga_totlines; + alt_u16 totlines_tvp; alt_u16 h_samplerate; status_t status; static alt_8 act_ctr; @@ -196,14 +196,14 @@ status_t get_status(tvp_input_t input, video_format format) // Wait until vsync active (avoid noise coupled to I2C bus on earlier prototypes) for (ctr=0; ctr> 16) & 0x3) : 0; + vsyncmode = cm.sync_active ? ((IORD_ALTERA_AVALON_PIO_DATA(PIO_2_BASE) >> 16) & 0x3) : 0; // Read sync information from TVP7002 status registers data1 = tvp_readreg(TVP_LINECNT1); @@ -215,15 +215,15 @@ status_t get_status(tvp_input_t input, video_format format) data2 = tvp_readreg(TVP_CLKCNT2); clkcnt = ((data2 & 0x0f) << 8) | data1; - // Read how many lines FPGA actually receives from TVP7002 - fpga_totlines = (IORD_ALTERA_AVALON_PIO_DATA(PIO_4_BASE) >> 18) & 0x7ff; + // Read how many lines TVP7002 outputs in reality + totlines_tvp = ((IORD_ALTERA_AVALON_PIO_DATA(PIO_2_BASE) >> 18) & 0x7ff)+1; // NOTE: "progressive" may not have correct value if H-PLL is not locked (!cm.sync_active) if ((vsyncmode == 0x2) || (!cm.sync_active && (totlines < MIN_LINES_INTERLACED))) { progressive = 1; } else if (vsyncmode == 0x1) { progressive = 0; - totlines = fpga_totlines; //compensate skipped vsync + totlines = totlines_tvp; //compensate skipped vsync } valid_linecnt = check_linecnt(progressive, totlines); @@ -254,7 +254,7 @@ status_t get_status(tvp_input_t input, video_format format) if (valid_linecnt) { if ((totlines != cm.totlines) || (clkcnt != cm.clkcnt) || (progressive != cm.progressive)) { - printf("totlines: %lu (cur) / %lu (prev), clkcnt: %lu (cur) / %lu (prev). FPGA_totlines: %u, VSM: %u\n", totlines, cm.totlines, clkcnt, cm.clkcnt, fpga_totlines, vsyncmode); + printf("totlines: %lu (cur) / %lu (prev), clkcnt: %lu (cur) / %lu (prev). totlines_tvp: %u, VSM: %u\n", totlines, cm.totlines, clkcnt, cm.clkcnt, totlines_tvp, vsyncmode); /*if (!cm.sync_active) act_ctr = 0;*/ stable_frames = 0; @@ -282,8 +282,6 @@ status_t get_status(tvp_input_t input, video_format format) if (update_cur_vm) { tvp_setup_hpll(cm.sample_mult*video_modes[cm.id].h_total, clkcnt, cm.cc.tvp_hpll2x && (video_modes[cm.id].flags & MODE_PLLDIVBY2)); - tvp_writereg(TVP_HSOUTWIDTH, cm.sample_mult*video_modes[cm.id].h_synclen-cm.hsync_cut); - status = (status < INFO_CHANGE) ? INFO_CHANGE : status; } @@ -348,14 +346,17 @@ status_t get_status(tvp_input_t input, video_format format) return status; } -// h_info: [31:30] [29:20] [19:9] [8:0] -// | H_MULTMODE[1:0] | H_MASK[9:0] | H_ACTIVE[10:0] | H_BACKPORCH[8:0] | +// h_info: [31:30] [29] [28] [27:20] [19:11] [10:0] +// | H_MULTMODE[1:0] | H_L5FMT | | H_SYNCLEN[7:0] | H_BACKPORCH[8:0] | H_ACTIVE[10:0] | // -// h_info2: [31:28] [27] [26:23] [22:19] [18:16] [15:13] [12:10] [9:0] -// | | H_L5FMT | H_MASK_BR[3:0] | H_SCANLINESTR[3:0] | H_OPT_SCALE[2:0] | H_OPT_SAMPLE_SEL[2:0] | H_OPT_SAMPLE_MULT[2:0] | H_OPT_STARTOFF[9:0] | +// h_info2: [31:29] [28:19] [18:16] [15:13] [12:10] [9:0] +// | | H_MASK[9:0] | H_OPT_SCALE[2:0] | H_OPT_SAMPLE_SEL[2:0] | H_OPT_SAMPLE_MULT[2:0] | H_OPT_STARTOFF[9:0] | // -// v_info: [31:30] [29:28] [27] [26:24] [23:18] [17:7] [6] [5:0] -// | V_SCANLINEMODE[1:0] | V_SCANLINEID | | V_MULTMODE[2:0] | V_MASK[5:0] | V_ACTIVE[10:0] | | V_BACKPORCH[5:0] | +// v_info: [31:29] [28:27] [26] [25:20] [19:17] [16:11] [10:0] +// | V_MULTMODE[2:0] | V_SCANLINEMODE[1:0] | V_SCANLINEID | V_MASK[5:0] | V_SYNCLEN[2:0] | V_BACKPORCH[5:0] | V_ACTIVE[10:0] | +// +// extra: [31:8] [7:4] [3:0] +// | | H_MASK_BR[3:0] | H_SCANLINESTR[3:0] | // void set_videoinfo() { @@ -427,13 +428,29 @@ void set_videoinfo() h_border = (((cm.sample_mult-h_opt_scale)*video_modes[cm.id].h_active)/2); h_mask = h_border + h_opt_scale*cm.cc.h_mask; - h_opt_startoffs = h_border + ((cm.sample_mult-h_opt_scale)*(cm.sample_mult*(alt_u16)video_modes[cm.id].h_backporch) / cm.sample_mult); + h_opt_startoffs = h_border + (cm.sample_mult-h_opt_scale)*((alt_u16)video_modes[cm.id].h_synclen+(alt_u16)video_modes[cm.id].h_backporch); h_opt_startoffs = (h_opt_startoffs/cm.sample_mult)*cm.sample_mult; - printf("h_opt_startoffs: %u\n", h_opt_startoffs); + printf("h_border: %u, h_opt_startoffs: %u\n", h_border, h_opt_startoffs); - IOWR_ALTERA_AVALON_PIO_DATA(PIO_2_BASE, (cm.fpga_hmultmode<<30) | (h_mask<<20) | ((cm.sample_mult*video_modes[cm.id].h_active)<<9) | cm.sample_mult*(alt_u16)video_modes[cm.id].h_backporch); - IOWR_ALTERA_AVALON_PIO_DATA(PIO_5_BASE, ((cm.cc.l5_fmt!=L5FMT_1600x1200)<<27) | (cm.cc.mask_br<<23) | (cm.cc.sl_str<<19) | (h_opt_scale<<16) | (cm.sample_sel<<13) | (cm.sample_mult<<10) | h_opt_startoffs); - IOWR_ALTERA_AVALON_PIO_DATA(PIO_3_BASE, (sl_mode_fpga<<30) | (cm.cc.sl_id<<28) | (cm.fpga_vmultmode<<24) | (cm.cc.v_mask<<18) | (v_active<<7) | v_backporch); + IOWR_ALTERA_AVALON_PIO_DATA(PIO_3_BASE, (cm.fpga_hmultmode<<30) | + ((cm.cc.l5_fmt!=L5FMT_1600x1200)<<29) | + ((((cm.sample_mult*video_modes[cm.id].h_synclen)-cm.hsync_cut)&0xff)<<20) | + (((cm.sample_mult*(alt_u16)video_modes[cm.id].h_backporch)&0x1ff)<<11) | + ((cm.sample_mult*video_modes[cm.id].h_active)&0x7ff)); + IOWR_ALTERA_AVALON_PIO_DATA(PIO_4_BASE, (h_mask<<19) | + (h_opt_scale<<16) | + (cm.sample_sel<<13) | + (cm.sample_mult<<10) | + h_opt_startoffs); + IOWR_ALTERA_AVALON_PIO_DATA(PIO_5_BASE, (cm.fpga_vmultmode<<29) | + (sl_mode_fpga<<27) | + (cm.cc.sl_id<<26) | + (cm.cc.v_mask<<20) | + (video_modes[cm.id].v_synclen<<17) | + (v_backporch<<11) | + v_active); + IOWR_ALTERA_AVALON_PIO_DATA(PIO_6_BASE, (cm.cc.mask_br<<4) | + cm.cc.sl_str); } // Configure TVP7002 and scan converter logic based on the video mode @@ -484,7 +501,6 @@ void program_mode() cm.clkcnt, cm.cc.tvp_hpll2x && (video_modes[cm.id].flags & MODE_PLLDIVBY2), (alt_u8)h_synclen_px, - cm.sample_mult*video_modes[cm.id].h_synclen-cm.hsync_cut, cm.cc.pre_coast, cm.cc.post_coast, cm.cc.vsync_thold); @@ -492,6 +508,8 @@ void program_mode() cm.sample_sel = tvp_set_hpll_phase(cm.cc.sampler_phase, cm.sample_mult); HDMITX_SetPixelRepetition(cm.hdmitx_pixelrep, (cm.cc.tx_mode==TX_HDMI) ? cm.hdmitx_pixr_ifr : 0); + if (cm.cc.tx_mode==TX_HDMI) + HDMITX_SetAVIInfoFrame(HDMI_Unkown, 0, 0, cm.cc.hdmi_itc, cm.hdmitx_pixr_ifr ? cm.hdmitx_pixelrep : 0); set_videoinfo(); @@ -567,10 +585,11 @@ void vm_display(alt_u8 code) { vm_edit = vm_sel; tc_h_samplerate = video_modes[vm_edit].h_total; tc_h_synclen = (alt_u16)video_modes[vm_edit].h_synclen; - tc_h_active = video_modes[vm_edit].h_active; - tc_v_active = video_modes[vm_edit].v_active; tc_h_bporch = (alt_u16)video_modes[vm_edit].h_backporch; + tc_h_active = video_modes[vm_edit].h_active; + tc_v_synclen = (alt_u16)video_modes[vm_edit].v_synclen; tc_v_bporch = (alt_u16)video_modes[vm_edit].v_backporch; + tc_v_active = video_modes[vm_edit].v_active; break; case NO_ACTION: default: @@ -583,18 +602,20 @@ void vm_tweak(alt_u16 v) { if (cm.sync_active && (cm.id == vm_edit)) { if ((video_modes[cm.id].h_total != tc_h_samplerate) || (video_modes[cm.id].h_synclen != tc_h_synclen) || - (video_modes[cm.id].h_active != tc_h_active) || - (video_modes[cm.id].v_active != tc_v_active) || (video_modes[cm.id].h_backporch != (alt_u8)tc_h_bporch) || - (video_modes[cm.id].v_backporch != (alt_u8)tc_v_bporch)) + (video_modes[cm.id].h_active != tc_h_active) || + (video_modes[cm.id].v_synclen != tc_v_synclen) || + (video_modes[cm.id].v_backporch != (alt_u8)tc_v_bporch) || + (video_modes[cm.id].v_active != tc_v_active)) update_cur_vm = 1; } video_modes[vm_edit].h_total = tc_h_samplerate; video_modes[vm_edit].h_synclen = (alt_u8)tc_h_synclen; - video_modes[vm_edit].h_active = tc_h_active; - video_modes[vm_edit].v_active = tc_v_active; video_modes[vm_edit].h_backporch = (alt_u8)tc_h_bporch; + video_modes[vm_edit].h_active = tc_h_active; + video_modes[vm_edit].v_synclen = (alt_u8)tc_v_synclen; video_modes[vm_edit].v_backporch = (alt_u8)tc_v_bporch; + video_modes[vm_edit].v_active = tc_v_active; sniprintf(menu_row2, LCD_ROW_LEN+1, "%u", v); } @@ -607,8 +628,8 @@ int init_hw() // Reset hardware IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, AV_RESET_N|LCD_BL); IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, 0x00); - IOWR_ALTERA_AVALON_PIO_DATA(PIO_2_BASE, 0x00000000); IOWR_ALTERA_AVALON_PIO_DATA(PIO_3_BASE, 0x00000000); + IOWR_ALTERA_AVALON_PIO_DATA(PIO_5_BASE, 0x00000000); usleep(10000); // unreset hw @@ -826,6 +847,12 @@ int main() cm.cc.tx_mode = tc.tx_mode; cm.clkcnt = 0; //TODO: proper invalidate } + if ((tc.tx_mode == TX_HDMI) && (tc.hdmi_itc != cm.cc.hdmi_itc)) { + //EnableAVIInfoFrame(FALSE, NULL); + printf("setting ITC to %d\n", tc.hdmi_itc); + HDMITX_SetAVIInfoFrame(0, 0, 0, tc.hdmi_itc, cm.hdmitx_pixelrep); + cm.cc.hdmi_itc = tc.hdmi_itc; + } if (av_init) { status = get_status(target_input, target_format); diff --git a/software/sys_controller/ossc/avconfig.c b/software/sys_controller/ossc/avconfig.c index 66e4a6a..5e2715f 100644 --- a/software/sys_controller/ossc/avconfig.c +++ b/software/sys_controller/ossc/avconfig.c @@ -47,6 +47,7 @@ const avconfig_t tc_default = { .pm_480i = 1, .pm_1080i = 1, .tvp_hpll2x = 1, + .hdmi_itc = 1, .sampler_phase = DEFAULT_SAMPLER_PHASE, .sync_vth = DEFAULT_SYNC_VTH, .linelen_tol = DEFAULT_LINELEN_TOL, diff --git a/software/sys_controller/ossc/avconfig.h b/software/sys_controller/ossc/avconfig.h index fce10ea..c58d51a 100644 --- a/software/sys_controller/ossc/avconfig.h +++ b/software/sys_controller/ossc/avconfig.h @@ -62,6 +62,7 @@ typedef struct { alt_u8 v_mask; alt_u8 mask_br; alt_u8 tx_mode; + alt_u8 hdmi_itc; alt_u8 s480p_mode; alt_u8 sampler_phase; alt_u8 tvp_hpll2x; diff --git a/software/sys_controller/ossc/controls.c b/software/sys_controller/ossc/controls.c index 81e9b0c..3752774 100644 --- a/software/sys_controller/ossc/controls.c +++ b/software/sys_controller/ossc/controls.c @@ -111,7 +111,7 @@ void parse_control() // one for each video_group alt_u8* pmcfg_ptr[] = { &pt_only, &tc.pm_240p, &tc.pm_384p, &tc.pm_480i, &tc.pm_480p, &tc.pm_480p, &tc.pm_1080i }; - alt_u8 valid_pm[] = { 0x1, 0x1f, 0x3, 0x3, 0x3, 0x3, 0x3 }; + alt_u8 valid_pm[] = { 0x1, 0x1f, 0x3, 0xf, 0x3, 0x3, 0x3 }; if (remote_code) printf("RCODE: 0x%.4lx, %d\n", remote_code, remote_rpt); @@ -147,10 +147,10 @@ void parse_control() break; case RC_INFO: sniprintf(menu_row1, LCD_ROW_LEN+1, "VMod: %s", video_modes[cm.id].name); - sniprintf(menu_row2, LCD_ROW_LEN+1, "LO: %u VSM: %u", IORD_ALTERA_AVALON_PIO_DATA(PIO_4_BASE) & 0x7ff, (IORD_ALTERA_AVALON_PIO_DATA(PIO_4_BASE) >> 16) & 0x3); + sniprintf(menu_row2, LCD_ROW_LEN+1, "LC: %u VSM: %u", (IORD_ALTERA_AVALON_PIO_DATA(PIO_2_BASE) & 0x7ff)+1, (IORD_ALTERA_AVALON_PIO_DATA(PIO_2_BASE) >> 16) & 0x3); lcd_write_menu(); printf("Mod: %s\n", video_modes[cm.id].name); - printf("Lines: %u M: %u\n", IORD_ALTERA_AVALON_PIO_DATA(PIO_4_BASE) & 0x7ff, cm.macrovis); + printf("Lines: %u M: %u\n", (IORD_ALTERA_AVALON_PIO_DATA(PIO_2_BASE) & 0x7ff)+1, cm.macrovis); break; case RC_LCDBL: sys_ctrl ^= LCD_BL; diff --git a/software/sys_controller/ossc/firmware.h b/software/sys_controller/ossc/firmware.h index 4fd18d4..37e0955 100644 --- a/software/sys_controller/ossc/firmware.h +++ b/software/sys_controller/ossc/firmware.h @@ -24,7 +24,7 @@ #include "sysconfig.h" #define FW_VER_MAJOR 0 -#define FW_VER_MINOR 76 +#define FW_VER_MINOR 77 #ifdef DIY_AUDIO #define FW_SUFFIX1 "a" diff --git a/software/sys_controller/ossc/menu.c b/software/sys_controller/ossc/menu.c index 9878221..4d6d4cf 100644 --- a/software/sys_controller/ossc/menu.c +++ b/software/sys_controller/ossc/menu.c @@ -37,7 +37,7 @@ extern char row1[LCD_ROW_LEN+1], row2[LCD_ROW_LEN+1], menu_row1[LCD_ROW_LEN+1], menu_row2[LCD_ROW_LEN+1]; extern avconfig_t tc; -extern alt_u16 tc_h_samplerate, tc_h_synclen, tc_h_active, tc_v_active, tc_h_bporch, tc_v_bporch; +extern alt_u16 tc_h_samplerate, tc_h_synclen, tc_h_bporch, tc_h_active, tc_v_synclen, tc_v_bporch, tc_v_active; extern alt_u32 remote_code; extern alt_u16 rc_keymap[REMOTE_MAX_KEYS]; @@ -52,7 +52,7 @@ static const char *l3_mode_desc[] = { LNG("Generic 16:9","ジェネリック static const char *l2l4l5_mode_desc[] = { LNG("Generic 4:3","ジェネリック 4:3"), LNG("320x240 optim.","320x240 サイテキカ."), LNG("256x240 optim.","256x240 サイテキカ.") }; static const char *l5_fmt_desc[] = { "1920x1080", "1600x1200", "1920x1200" }; static const char *pm_240p_desc[] = { LNG("Passthru","パススルー"), "Line2x", "Line3x", "Line4x", "Line5x" }; -static const char *pm_480i_desc[] = { LNG("Passthru","パススルー"), "Line2x (bob)" }; +static const char *pm_480i_desc[] = { LNG("Passthru","パススルー"), "Line2x (bob)", "Line3x (laced)", "Line4x (bob)" }; static const char *pm_384p_480p_desc[] = { LNG("Passthru","パススルー"), "Line2x" }; static const char *ar_256col_desc[] = { "4:3", "8:7" }; static const char *tx_mode_desc[] = { "HDMI", "DVI" }; @@ -73,10 +73,11 @@ static void value_disp(alt_u8 v) { sniprintf(menu_row2, LCD_ROW_LEN+1, " %u", MENU(menu_advtiming, P99_PROTECT({ \ { LNG("H. samplerate","スイヘイサンプルレト"), OPT_AVCONFIG_NUMVAL_U16,{ .num_u16 = { &tc_h_samplerate, H_TOTAL_MIN, H_TOTAL_MAX, vm_tweak } } }, { LNG("H. synclen","スイヘイラインドウキシンゴ"), OPT_AVCONFIG_NUMVAL_U16,{ .num_u16 = { &tc_h_synclen, H_SYNCLEN_MIN, H_SYNCLEN_MAX, vm_tweak } } }, - { LNG("H. active","スイヘイアクティブ"), OPT_AVCONFIG_NUMVAL_U16,{ .num_u16 = { &tc_h_active, H_ACTIVE_MIN, H_ACTIVE_MAX, vm_tweak } } }, - { LNG("V. active","スイチョクアクティブ"), OPT_AVCONFIG_NUMVAL_U16,{ .num_u16 = { &tc_v_active, V_ACTIVE_MIN, V_ACTIVE_MAX, vm_tweak } } }, { LNG("H. backporch","スイヘイバックポーチ"), OPT_AVCONFIG_NUMVAL_U16,{ .num_u16 = { &tc_h_bporch, H_BPORCH_MIN, H_BPORCH_MAX, vm_tweak } } }, + { LNG("H. active","スイヘイアクティブ"), OPT_AVCONFIG_NUMVAL_U16,{ .num_u16 = { &tc_h_active, H_ACTIVE_MIN, H_ACTIVE_MAX, vm_tweak } } }, + { LNG("V. synclen","スイチョクラインドウキシンゴ"), OPT_AVCONFIG_NUMVAL_U16,{ .num_u16 = { &tc_v_synclen, V_SYNCLEN_MIN, V_SYNCLEN_MAX, vm_tweak } } }, { LNG("V. backporch","スイチョクバックポーチ"), OPT_AVCONFIG_NUMVAL_U16,{ .num_u16 = { &tc_v_bporch, V_BPORCH_MIN, V_BPORCH_MAX, vm_tweak } } }, + { LNG("V. active","スイチョクアクティブ"), OPT_AVCONFIG_NUMVAL_U16,{ .num_u16 = { &tc_v_active, V_ACTIVE_MIN, V_ACTIVE_MAX, vm_tweak } } }, })) @@ -120,6 +121,7 @@ MENU(menu_output, P99_PROTECT({ \ { LNG("Line5x format","Line5xケイシキ"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.l5_fmt, OPT_WRAP, SETTING_ITEM(l5_fmt_desc) } } }, { LNG("256x240 aspect","256x240アスペクト"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.ar_256col, OPT_WRAP, SETTING_ITEM(ar_256col_desc) } } }, { LNG("TX mode","TXモード"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.tx_mode, OPT_WRAP, SETTING_ITEM(tx_mode_desc) } } }, + { "HDMI ITC", OPT_AVCONFIG_SELECTION, { .sel = { &tc.hdmi_itc, OPT_WRAP, SETTING_ITEM(off_on_desc) } } }, { LNG("Initial input","ショキニュウリョク"), OPT_AVCONFIG_SELECTION, { .sel = { &tc.def_input, OPT_WRAP, SETTING_ITEM(avinput_str) } } }, })) diff --git a/software/sys_controller/tvp7002/tvp7002.c b/software/sys_controller/tvp7002/tvp7002.c index 8753426..bdea7c9 100644 --- a/software/sys_controller/tvp7002/tvp7002.c +++ b/software/sys_controller/tvp7002/tvp7002.c @@ -342,7 +342,7 @@ void tvp_set_alc(alt_u8 en_alc, video_type type, alt_u8 h_syncinlen) } } -void tvp_source_setup(video_type type, alt_u16 h_samplerate, alt_u16 refclks_per_line, alt_u8 plldivby2, alt_u8 h_syncinlen, alt_u16 h_syncoutlen, alt_u8 pre_coast, alt_u8 post_coast, alt_u8 vsync_thold) +void tvp_source_setup(video_type type, alt_u16 h_samplerate, alt_u16 refclks_per_line, alt_u8 plldivby2, alt_u8 h_syncinlen, alt_u8 pre_coast, alt_u8 post_coast, alt_u8 vsync_thold) { // Clamp position and ALC tvp_set_clamp_position(type, h_syncinlen); @@ -370,9 +370,6 @@ void tvp_source_setup(video_type type, alt_u16 h_samplerate, alt_u16 refclks_per // Default (3,3) coast may lead to PLL jitter and sync loss (e.g. SNES) tvp_set_hpllcoast(pre_coast, post_coast); - - // Hsync output width - tvp_writereg(TVP_HSOUTWIDTH, h_syncoutlen); } void tvp_source_sel(tvp_input_t input, video_format fmt) diff --git a/software/sys_controller/tvp7002/tvp7002.h b/software/sys_controller/tvp7002/tvp7002.h index 10b22b3..0174db3 100644 --- a/software/sys_controller/tvp7002/tvp7002.h +++ b/software/sys_controller/tvp7002/tvp7002.h @@ -100,7 +100,7 @@ void tvp_set_sog_thold(alt_u8 val); void tvp_set_alc(alt_u8 en_alc, video_type type, alt_u8 h_syncinlen); -void tvp_source_setup(video_type type, alt_u16 h_samplerate, alt_u16 refclks_per_line, alt_u8 plldivby2, alt_u8 h_syncinlen, alt_u16 h_syncoutlen, alt_u8 pre_coast, alt_u8 post_coast, alt_u8 vsync_thold); +void tvp_source_setup(video_type type, alt_u16 h_samplerate, alt_u16 refclks_per_line, alt_u8 plldivby2, alt_u8 h_syncinlen, alt_u8 pre_coast, alt_u8 post_coast, alt_u8 vsync_thold); void tvp_source_sel(tvp_input_t input, video_format fmt); diff --git a/software/sys_controller/tvp7002/video_modes.c b/software/sys_controller/tvp7002/video_modes.c index f847688..9d532b8 100644 --- a/software/sys_controller/tvp7002/video_modes.c +++ b/software/sys_controller/tvp7002/video_modes.c @@ -46,20 +46,33 @@ alt_8 get_mode_id(alt_u32 totlines, alt_u8 progressive, alt_u32 hz, video_type t for (i=0; i GROUP_1080I) { - printf("WARNING: Corrupted mode (id %d)\n", i); - continue; + break; } target_lm = valid_lm[*group_ptr[video_modes[i].group]]; @@ -106,6 +119,8 @@ alt_8 get_mode_id(alt_u32 totlines, alt_u8 progressive, alt_u32 hz, video_type t case MODE_L3_GEN_16_9: cm.fpga_vmultmode = FPGA_V_MULTMODE_3X; cm.fpga_hmultmode = FPGA_H_MULTMODE_FULLWIDTH; + if (video_modes[i].group == GROUP_480I) + cm.hdmitx_pixelrep = HDMITX_PIXELREP_2X; break; case MODE_L3_GEN_4_3: cm.fpga_vmultmode = FPGA_V_MULTMODE_3X; @@ -124,6 +139,8 @@ alt_8 get_mode_id(alt_u32 totlines, alt_u8 progressive, alt_u32 hz, video_type t case MODE_L4_GEN_4_3: cm.fpga_vmultmode = FPGA_V_MULTMODE_4X; cm.fpga_hmultmode = FPGA_H_MULTMODE_FULLWIDTH; + if (video_modes[i].group == GROUP_480I) + cm.hdmitx_pixelrep = HDMITX_PIXELREP_2X; break; case MODE_L4_320_COL: cm.fpga_vmultmode = FPGA_V_MULTMODE_4X; diff --git a/software/sys_controller/tvp7002/video_modes.h b/software/sys_controller/tvp7002/video_modes.h index b28067d..f8b9e4f 100644 --- a/software/sys_controller/tvp7002/video_modes.h +++ b/software/sys_controller/tvp7002/video_modes.h @@ -23,18 +23,20 @@ #include #include "sysconfig.h" -#define H_ACTIVE_MIN 200 -#define H_ACTIVE_MAX 1920 -#define V_ACTIVE_MIN 200 -#define V_ACTIVE_MAX 1200 #define H_TOTAL_MIN 300 #define H_TOTAL_MAX 2300 #define H_SYNCLEN_MIN 10 #define H_SYNCLEN_MAX 200 #define H_BPORCH_MIN 1 #define H_BPORCH_MAX 255 +#define H_ACTIVE_MIN 200 +#define H_ACTIVE_MAX 1920 +#define V_SYNCLEN_MIN 1 +#define V_SYNCLEN_MAX 7 #define V_BPORCH_MIN 1 -#define V_BPORCH_MAX 255 +#define V_BPORCH_MAX 63 +#define V_ACTIVE_MIN 200 +#define V_ACTIVE_MAX 1200 typedef enum { FORMAT_RGBS = 0, @@ -97,37 +99,49 @@ typedef struct { mode_flags flags; } mode_data_t; + #define VIDEO_MODES_DEF { \ - { "1280x240", 1280, 240, 6000, 1560, 262, 170, 16, 72, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L3_GEN_16_9 | MODE_L4_GEN_4_3 | MODE_PLLDIVBY2) }, \ - { "960x240", 960, 240, 6000, 1170, 262, 128, 16, 54, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L3_GEN_4_3 | MODE_PLLDIVBY2) }, \ - /*{ "240p_L3M2", 384, 240, 6000, 512, 262, 66, 16, 31, 3, (VIDEO_LDTV|VIDEO_PC), (MODE_L3_MODE2|MODE_PLLDIVBY2) }, //CPS2*/ \ - { "320x240", 320, 240, 6000, 426, 262, 49, 16, 31, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L2_320_COL | MODE_L3_320_COL | MODE_L4_320_COL | MODE_L5_320_COL) }, \ - { "256x240", 256, 240, 6000, 341, 262, 39, 16, 25, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L2_256_COL | MODE_L3_256_COL | MODE_L4_256_COL | MODE_L5_256_COL) }, \ - { "240p", 720, 240, 6000, 858, 262, 65, 16, 60, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_PT | MODE_L2 | MODE_PLLDIVBY2) }, \ - { "1536x240", 1536, 240, 6000, 2046, 262, 234, 16, 150, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L5_GEN_4_3 | MODE_PLLDIVBY2) }, \ - { "1280x288", 1280, 288, 5000, 1560, 312, 170, 16, 72, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L3_GEN_16_9 | MODE_L4_GEN_4_3 | MODE_PLLDIVBY2) }, \ - { "960x288", 960, 288, 5000, 1170, 312, 128, 16, 54, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L3_GEN_4_3 | MODE_PLLDIVBY2) }, \ - { "320x240LB", 320, 240, 5000, 426, 312, 49, 41, 31, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L2_320_COL | MODE_L3_320_COL | MODE_L4_320_COL | MODE_L5_320_COL) }, \ - { "256x240LB", 256, 240, 5000, 341, 312, 39, 41, 25, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L2_256_COL | MODE_L3_256_COL | MODE_L4_256_COL | MODE_L5_256_COL) }, \ - { "288p", 720, 288, 5000, 864, 312, 65, 16, 60, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_PT | MODE_L2 | MODE_PLLDIVBY2) }, \ + /* 240p modes */ \ + { "1536x240", 1536, 240, 6000, 2046, 262, 234, 15, 150, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L5_GEN_4_3 | MODE_PLLDIVBY2) }, \ + { "1280x240", 1280, 240, 6000, 1560, 262, 170, 15, 72, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L3_GEN_16_9 | MODE_L4_GEN_4_3 | MODE_PLLDIVBY2) }, \ + { "960x240", 960, 240, 6000, 1170, 262, 128, 15, 54, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L3_GEN_4_3 | MODE_PLLDIVBY2) }, \ + { "320x240", 320, 240, 6000, 426, 262, 49, 14, 31, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L2_320_COL | MODE_L3_320_COL | MODE_L4_320_COL | MODE_L5_320_COL) }, \ + { "256x240", 256, 240, 6000, 341, 262, 39, 14, 25, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L2_256_COL | MODE_L3_256_COL | MODE_L4_256_COL | MODE_L5_256_COL) }, \ + { "240p", 720, 240, 6000, 858, 262, 57, 15, 62, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_PT | MODE_L2 | MODE_PLLDIVBY2) }, \ + /* 288p modes */ \ { "1536x240L", 1536, 240, 5000, 2046, 312, 234, 41, 150, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L5_GEN_4_3 | MODE_PLLDIVBY2) }, \ - { "384p", 496, 384, 5766, 640, 423, 50, 29, 62, 3, (VIDEO_EDTV), GROUP_384P, (MODE_PT | MODE_L2 | MODE_PLLDIVBY2) }, /* Sega Model 2 */ \ - { "640x384", 640, 384, 5500, 800, 492, 48, 63, 96, 2, VIDEO_PC, GROUP_384P, (MODE_PT | MODE_L2 | MODE_PLLDIVBY2) }, /* X68k @ 24kHz */ \ - { "480i", 720, 240, 5994, 858, 525, 65, 16, 60, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_480I, (MODE_PT | MODE_L2 | MODE_PLLDIVBY2 | MODE_INTERLACED) }, \ - { "480p", 720, 480, 5994, 858, 525, 60, 30, 62, 6, (VIDEO_EDTV | VIDEO_PC), GROUP_DTV480P, (MODE_PT | MODE_L2) }, \ - { "640x480", 640, 480, 6000, 800, 525, 48, 33, 96, 2, (VIDEO_PC | VIDEO_EDTV), GROUP_VGA480P, (MODE_PT | MODE_L2) }, \ - { "640x512", 640, 512, 6000, 800, 568, 48, 28, 96, 2, VIDEO_PC, GROUP_NONE, MODE_PT }, /* X68k @ 31kHz */ \ - { "576i", 720, 288, 5000, 864, 625, 65, 16, 60, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_480I, (MODE_PT | MODE_L2 | MODE_PLLDIVBY2 | MODE_INTERLACED) }, \ - { "576p", 720, 576, 5000, 864, 625, 65, 32, 60, 6, VIDEO_EDTV, GROUP_DTV480P, (MODE_PT | MODE_L2) }, \ + { "1280x288", 1280, 288, 5000, 1560, 312, 170, 15, 72, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L3_GEN_16_9 | MODE_L4_GEN_4_3 | MODE_PLLDIVBY2) }, \ + { "960x288", 960, 288, 5000, 1170, 312, 128, 15, 54, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L3_GEN_4_3 | MODE_PLLDIVBY2) }, \ + { "320x240LB", 320, 240, 5000, 426, 312, 49, 41, 31, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L2_320_COL | MODE_L3_320_COL | MODE_L4_320_COL | MODE_L5_320_COL) }, \ + { "256x240LB", 256, 240, 5000, 341, 312, 39, 41, 25, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_L2_256_COL | MODE_L3_256_COL | MODE_L4_256_COL | MODE_L5_256_COL) }, \ + { "288p", 720, 288, 5000, 864, 312, 69, 19, 63, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_240P, (MODE_PT | MODE_L2 | MODE_PLLDIVBY2) }, \ + /* 384p: Sega Model 2 */ \ + { "384p", 496, 384, 5766, 640, 423, 50, 29, 62, 3, (VIDEO_EDTV), GROUP_384P, (MODE_PT | MODE_L2 | MODE_PLLDIVBY2) }, \ + /* 384p: X68k @ 24kHz */ \ + { "640x384", 640, 384, 5500, 800, 492, 48, 63, 96, 2, VIDEO_PC, GROUP_384P, (MODE_PT | MODE_L2 | MODE_PLLDIVBY2) }, \ + /* ~525-line modes */ \ + { "480i", 720, 240, 5994, 858, 525, 57, 15, 62, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_480I, (MODE_PT | MODE_L2 | MODE_L3_GEN_16_9 | MODE_L4_GEN_4_3 | MODE_PLLDIVBY2 | MODE_INTERLACED) }, \ + { "480p", 720, 480, 5994, 858, 525, 60, 30, 62, 6, (VIDEO_EDTV | VIDEO_PC), GROUP_DTV480P, (MODE_PT | MODE_L2) }, \ + { "640x480", 640, 480, 6000, 800, 525, 48, 33, 96, 2, (VIDEO_PC | VIDEO_EDTV), GROUP_VGA480P, (MODE_PT | MODE_L2) }, \ + /* X68k @ 31kHz */ \ + { "640x512", 640, 512, 6000, 800, 568, 48, 28, 96, 2, VIDEO_PC, GROUP_NONE, MODE_PT }, \ + /* ~625-line modes */ \ + { "576i", 720, 288, 5000, 864, 625, 69, 19, 63, 3, (VIDEO_SDTV | VIDEO_PC), GROUP_480I, (MODE_PT | MODE_L2 | MODE_L3_GEN_16_9 | MODE_L4_GEN_4_3 | MODE_PLLDIVBY2 | MODE_INTERLACED) }, \ + { "576p", 720, 576, 5000, 864, 625, 68, 39, 64, 5, VIDEO_EDTV, GROUP_DTV480P, (MODE_PT | MODE_L2) }, \ { "800x600", 800, 600, 6000, 1056, 628, 88, 23, 128, 4, VIDEO_PC, GROUP_NONE, MODE_PT }, \ + /* 720p modes */ \ { "720p", 1280, 720, 5994, 1650, 750, 255, 20, 40, 5, VIDEO_HDTV, GROUP_NONE, MODE_PT }, \ { "1280x720", 1280, 720, 6000, 1650, 750, 220, 20, 40, 5, VIDEO_PC, GROUP_NONE, MODE_PT }, \ + /* VESA XGA and SXGA modes */ \ { "1024x768", 1024, 768, 6000, 1344, 806, 160, 29, 136, 6, VIDEO_PC, GROUP_NONE, MODE_PT }, \ { "1280x1024", 1280, 1024, 6000, 1688, 1066, 248, 38, 112, 3, VIDEO_PC, GROUP_NONE, MODE_PT }, \ + /* PS2 GSM 960i mode */ \ { "640x960i", 640, 480, 5994, 800, 1050, 48, 33, 96, 2, (VIDEO_EDTV | VIDEO_PC), GROUP_1080I, (MODE_PT | MODE_L2 | MODE_INTERLACED) }, \ + /* 1080i/p HDTV modes */ \ { "1080i", 1920, 540, 5994, 2200, 1125, 188, 16, 44, 5, VIDEO_HDTV, GROUP_1080I, (MODE_PT | MODE_L2 | MODE_INTERLACED) }, \ { "1080p", 1920, 1080, 5994, 2200, 1125, 188, 36, 44, 5, VIDEO_HDTV, GROUP_NONE, MODE_PT }, \ { "1920x1080", 1920, 1080, 6000, 2200, 1125, 148, 36, 44, 5, VIDEO_PC, GROUP_NONE, MODE_PT }, \ + /* VESA UXGA with reduced h.backporch */ \ { "1600x1200", 1600, 1200, 6000, 2160, 1250, 255, 46, 192, 3, VIDEO_PC, GROUP_NONE, MODE_PT }, \ } diff --git a/software/sys_controller_bsp/libhal_bsp.a b/software/sys_controller_bsp/libhal_bsp.a index 6ed23a7c785ee26b9ecf64db7a63d460dac1630f..6db8f32a9acbf1b7e52d29a45ee40e5fd88a9fdb 100644 GIT binary patch delta 1159 zcmZ8fUr19?9Okz_Zo|3F8M}AWSs}BRSlwk0BXTw$#b#x_6t19$)c(O9BqVZ`;2_!Z z6idPaBW4uBI*fxU%ta6NP_fJ?C=#UyAA(U9;Y;0NG(AmYe`0icCXI1xuMhBg!qHcl{5Lq9VPuc$^O#Ysx<)qDXW(;%q=5 znQ_xir-$&a%8)5N+p958_r$W5zGYfHa8qagSB63yL5b!soDdXVN$BDW1gJe;YsQ(} zL~EiMPl+0u#K^xA%5glp_b=JeVzdUCy5BlP&rJ5;90%!ClwQ2j`^JgU`O{t5%(%UQW=SLw85&iEEFK~VVQMz!W0_ZVAUUh@rsLGii^ED1k3mY z0n(*NY~dJO0)5GGnH1_`WXb0sL#+-{@;TXh4>V&n0sdYrbP`4}cRJb!KiKnAkiu1B yDm47xOx+pyiOsOz=irNmATvV@thim=l+1PxfI$Pf*ug>Qv5Cw)&8q}-*Zct;2vv9h delta 1173 zcmZ9KUr3Wt7{+#FXLba+oFrQs90tc6b+>dF9Iox@TShucE0m<_kGXzJJ0*P&v&M#E2pL_ zldh^=t%1M}|IWa^sU2VHT2#iPtJ7E-OogFHcNUxAvO=i?L zPJ%!aX$5ocF`Y&j*pyX;uus8YbHP+5FzmYtc*pxdAWZ425ubCR3QPHggndq22-h|W zA(5`f4X1|1Sw<*`XZkeZad$K$=T@+K@P^L#uM8it2b`EYe_Ta)CBX|Xg@CqLjZw_x zA==_C;wxcGlbkz<&#vxOgK&>+iL72bMo+F)Ym6S>elMIck)Biy)?Gj0mWLV9FMfH{ ztzE4vv!n*G#awtOyU`$KrjGT4g4buxiEaI4AB*4oG$SBC$+M^{`THU&XB_zC`KqyO zr( zz)Y1YvwuZrP4KZoNU4$o4%6>8@JfCh3)aDeDp7`AQC|s*MlZV{u4zW0Tix(m8pm?c zP7jz&V%+#QCmry@yc&QvN+YfCS*nY>AK3#%$(>7G?XYAPR=jxH(+zU-oNCw)6VgFe zD}8$q79@K72IMf%|q!5cg|8Ywp@t}!HNRh>+Xum*ksS2E5cFEro%uGe hal default - May 9, 2017 1:10:34 AM - 1494281434127 + May 17, 2017 10:57:24 PM + 1495051044048 ./ settings.bsp ../../sys.sopcinfo @@ -935,44 +935,50 @@ - pio_5 + pio_6 0x00821080 - 0x0082108F 16 - pio_4 + pio_5 0x00821090 - 0x0082109F 16 - pio_3 + pio_4 0x008210A0 - 0x008210AF 16 - pio_2 + pio_3 0x008210B0 - 0x008210BF 16 - pio_1 + pio_2 0x008210C0 - 0x008210CF 16 - pio_0 + pio_1 0x008210D0 - 0x008210DF 16 + + pio_0 + 0x008210E0 - 0x008210EF + 16 + + jtag_uart_0 - 0x008210E0 - 0x008210E7 + 0x008210F0 - 0x008210F7 8 printable diff --git a/software/sys_controller_bsp/system.h b/software/sys_controller_bsp/system.h index 6330ba0..8b5a1fd 100644 --- a/software/sys_controller_bsp/system.h +++ b/software/sys_controller_bsp/system.h @@ -4,7 +4,7 @@ * Machine generated for CPU 'nios2_qsys_0' in SOPC Builder design 'sys' * SOPC Builder design path: ../../sys.sopcinfo * - * Generated: Sat Jan 21 12:40:58 EET 2017 + * Generated: Tue May 16 19:45:17 EEST 2017 */ /* @@ -175,19 +175,19 @@ #define ALT_NUM_INTERNAL_INTERRUPT_CONTROLLERS 1 #define ALT_NUM_INTERRUPT_CONTROLLERS 1 #define ALT_STDERR "/dev/jtag_uart_0" -#define ALT_STDERR_BASE 0x8210e0 +#define ALT_STDERR_BASE 0x8210f0 #define ALT_STDERR_DEV jtag_uart_0 #define ALT_STDERR_IS_JTAG_UART #define ALT_STDERR_PRESENT #define ALT_STDERR_TYPE "altera_avalon_jtag_uart" #define ALT_STDIN "/dev/jtag_uart_0" -#define ALT_STDIN_BASE 0x8210e0 +#define ALT_STDIN_BASE 0x8210f0 #define ALT_STDIN_DEV jtag_uart_0 #define ALT_STDIN_IS_JTAG_UART #define ALT_STDIN_PRESENT #define ALT_STDIN_TYPE "altera_avalon_jtag_uart" #define ALT_STDOUT "/dev/jtag_uart_0" -#define ALT_STDOUT_BASE 0x8210e0 +#define ALT_STDOUT_BASE 0x8210f0 #define ALT_STDOUT_DEV jtag_uart_0 #define ALT_STDOUT_IS_JTAG_UART #define ALT_STDOUT_PRESENT @@ -279,7 +279,7 @@ */ #define ALT_MODULE_CLASS_jtag_uart_0 altera_avalon_jtag_uart -#define JTAG_UART_0_BASE 0x8210e0 +#define JTAG_UART_0_BASE 0x8210f0 #define JTAG_UART_0_IRQ 1 #define JTAG_UART_0_IRQ_INTERRUPT_CONTROLLER_ID 0 #define JTAG_UART_0_NAME "/dev/jtag_uart_0" @@ -326,7 +326,7 @@ */ #define ALT_MODULE_CLASS_pio_0 altera_avalon_pio -#define PIO_0_BASE 0x8210d0 +#define PIO_0_BASE 0x8210e0 #define PIO_0_BIT_CLEARING_EDGE_REGISTER 0 #define PIO_0_BIT_MODIFYING_OUTPUT_REGISTER 0 #define PIO_0_CAPTURE 0 @@ -353,7 +353,7 @@ */ #define ALT_MODULE_CLASS_pio_1 altera_avalon_pio -#define PIO_1_BASE 0x8210c0 +#define PIO_1_BASE 0x8210d0 #define PIO_1_BIT_CLEARING_EDGE_REGISTER 0 #define PIO_1_BIT_MODIFYING_OUTPUT_REGISTER 0 #define PIO_1_CAPTURE 0 @@ -380,7 +380,7 @@ */ #define ALT_MODULE_CLASS_pio_2 altera_avalon_pio -#define PIO_2_BASE 0x8210b0 +#define PIO_2_BASE 0x8210c0 #define PIO_2_BIT_CLEARING_EDGE_REGISTER 0 #define PIO_2_BIT_MODIFYING_OUTPUT_REGISTER 0 #define PIO_2_CAPTURE 0 @@ -389,8 +389,8 @@ #define PIO_2_DRIVEN_SIM_VALUE 0 #define PIO_2_EDGE_TYPE "NONE" #define PIO_2_FREQ 27000000 -#define PIO_2_HAS_IN 0 -#define PIO_2_HAS_OUT 1 +#define PIO_2_HAS_IN 1 +#define PIO_2_HAS_OUT 0 #define PIO_2_HAS_TRI 0 #define PIO_2_IRQ -1 #define PIO_2_IRQ_INTERRUPT_CONTROLLER_ID -1 @@ -407,7 +407,7 @@ */ #define ALT_MODULE_CLASS_pio_3 altera_avalon_pio -#define PIO_3_BASE 0x8210a0 +#define PIO_3_BASE 0x8210b0 #define PIO_3_BIT_CLEARING_EDGE_REGISTER 0 #define PIO_3_BIT_MODIFYING_OUTPUT_REGISTER 0 #define PIO_3_CAPTURE 0 @@ -434,7 +434,7 @@ */ #define ALT_MODULE_CLASS_pio_4 altera_avalon_pio -#define PIO_4_BASE 0x821090 +#define PIO_4_BASE 0x8210a0 #define PIO_4_BIT_CLEARING_EDGE_REGISTER 0 #define PIO_4_BIT_MODIFYING_OUTPUT_REGISTER 0 #define PIO_4_CAPTURE 0 @@ -443,8 +443,8 @@ #define PIO_4_DRIVEN_SIM_VALUE 0 #define PIO_4_EDGE_TYPE "NONE" #define PIO_4_FREQ 27000000 -#define PIO_4_HAS_IN 1 -#define PIO_4_HAS_OUT 0 +#define PIO_4_HAS_IN 0 +#define PIO_4_HAS_OUT 1 #define PIO_4_HAS_TRI 0 #define PIO_4_IRQ -1 #define PIO_4_IRQ_INTERRUPT_CONTROLLER_ID -1 @@ -461,7 +461,7 @@ */ #define ALT_MODULE_CLASS_pio_5 altera_avalon_pio -#define PIO_5_BASE 0x821080 +#define PIO_5_BASE 0x821090 #define PIO_5_BIT_CLEARING_EDGE_REGISTER 0 #define PIO_5_BIT_MODIFYING_OUTPUT_REGISTER 0 #define PIO_5_CAPTURE 0 @@ -482,6 +482,33 @@ #define PIO_5_TYPE "altera_avalon_pio" +/* + * pio_6 configuration + * + */ + +#define ALT_MODULE_CLASS_pio_6 altera_avalon_pio +#define PIO_6_BASE 0x821080 +#define PIO_6_BIT_CLEARING_EDGE_REGISTER 0 +#define PIO_6_BIT_MODIFYING_OUTPUT_REGISTER 0 +#define PIO_6_CAPTURE 0 +#define PIO_6_DATA_WIDTH 32 +#define PIO_6_DO_TEST_BENCH_WIRING 0 +#define PIO_6_DRIVEN_SIM_VALUE 0 +#define PIO_6_EDGE_TYPE "NONE" +#define PIO_6_FREQ 27000000 +#define PIO_6_HAS_IN 0 +#define PIO_6_HAS_OUT 1 +#define PIO_6_HAS_TRI 0 +#define PIO_6_IRQ -1 +#define PIO_6_IRQ_INTERRUPT_CONTROLLER_ID -1 +#define PIO_6_IRQ_TYPE "NONE" +#define PIO_6_NAME "/dev/pio_6" +#define PIO_6_RESET_VALUE 0 +#define PIO_6_SPAN 16 +#define PIO_6_TYPE "altera_avalon_pio" + + /* * timer_0 configuration * diff --git a/sys.qsys b/sys.qsys index 2e62c28..0f4c594 100644 --- a/sys.qsys +++ b/sys.qsys @@ -85,7 +85,7 @@ { datum baseAddress { - value = "8524000"; + value = "8524016"; type = "String"; } } @@ -157,7 +157,7 @@ { datum baseAddress { - value = "8523984"; + value = "8524000"; type = "String"; } } @@ -173,7 +173,7 @@ { datum baseAddress { - value = "8523968"; + value = "8523984"; type = "String"; } } @@ -189,7 +189,7 @@ { datum baseAddress { - value = "8523952"; + value = "8523968"; type = "String"; } } @@ -205,7 +205,7 @@ { datum baseAddress { - value = "8523936"; + value = "8523952"; type = "String"; } } @@ -221,7 +221,7 @@ { datum baseAddress { - value = "8523920"; + value = "8523936"; type = "String"; } } @@ -234,6 +234,22 @@ } } element pio_5.s1 + { + datum baseAddress + { + value = "8523920"; + type = "String"; + } + } + element pio_6 + { + datum _sortIndex + { + value = "17"; + type = "int"; + } + } + element pio_6.s1 { datum baseAddress { @@ -300,25 +316,30 @@ type="conduit" dir="end" /> + @@ -408,7 +429,7 @@ - ]]> + ]]> @@ -643,7 +664,7 @@ - + @@ -671,7 +692,7 @@ - + @@ -694,6 +715,20 @@ + + + + + + + + + + + + + + @@ -712,7 +747,7 @@ start="nios2_qsys_0.data_master" end="jtag_uart_0.avalon_jtag_slave"> - + - + - + - + - + - + + + + + + @@ -859,6 +903,7 @@ + + - + java.lang.Integer - 1494281170 + 1495139511 false true false @@ -384,6 +384,12 @@ parameters are a RESULT of the module parameters. --> clk pio_5.clk + + false + pio_6 + clk + pio_6.clk + false onchip_memory2_0 @@ -5438,7 +5444,7 @@ the requested settings for a module instance. --> java.lang.String - ]]> + ]]> false true false @@ -6109,7 +6115,7 @@ parameters are a RESULT of the module parameters. --> jtag_uart_0 avalon_jtag_slave jtag_uart_0.avalon_jtag_slave - 8524000 + 8524016 8 @@ -6165,7 +6171,7 @@ parameters are a RESULT of the module parameters. --> pio_0 s1 pio_0.s1 - 8523984 + 8524000 16 @@ -6173,7 +6179,7 @@ parameters are a RESULT of the module parameters. --> pio_1 s1 pio_1.s1 - 8523968 + 8523984 16 @@ -6181,7 +6187,7 @@ parameters are a RESULT of the module parameters. --> pio_2 s1 pio_2.s1 - 8523952 + 8523968 16 @@ -6189,7 +6195,7 @@ parameters are a RESULT of the module parameters. --> pio_3 s1 pio_3.s1 - 8523936 + 8523952 16 @@ -6197,7 +6203,7 @@ parameters are a RESULT of the module parameters. --> pio_4 s1 pio_4.s1 - 8523920 + 8523936 16 @@ -6213,6 +6219,14 @@ parameters are a RESULT of the module parameters. --> pio_5 s1 pio_5.s1 + 8523920 + 16 + + + false + pio_6 + s1 + pio_6.s1 8523904 16 @@ -9978,11 +9992,11 @@ the requested settings for a module instance. --> embeddedsw.CMacro.HAS_IN - 0 + 1 embeddedsw.CMacro.HAS_OUT - 1 + 0 embeddedsw.CMacro.HAS_TRI @@ -10032,7 +10046,7 @@ the requested settings for a module instance. --> boolean false false - true + false true true @@ -10040,13 +10054,13 @@ the requested settings for a module instance. --> boolean false false - false + true true true java.lang.String - Output + Input false true true @@ -10064,7 +10078,7 @@ the requested settings for a module instance. --> boolean false false - false + true true true @@ -10080,7 +10094,7 @@ the requested settings for a module instance. --> long 0 false - true + false true true @@ -10088,7 +10102,7 @@ the requested settings for a module instance. --> boolean false false - false + true true true @@ -10128,7 +10142,7 @@ the requested settings for a module instance. --> boolean - true + false true true false @@ -10136,7 +10150,7 @@ the requested settings for a module instance. --> boolean - false + true true true false @@ -10644,24 +10658,6 @@ parameters are a RESULT of the module parameters. --> 2 address - - write_n - Input - 1 - write_n - - - writedata - Input - 32 - writedata - - - chipselect - Input - 1 - chipselect - readdata Output @@ -10708,8 +10704,8 @@ parameters are a RESULT of the module parameters. --> conduit false - out_port - Output + in_port + Input 32 export @@ -11526,11 +11522,11 @@ the requested settings for a module instance. --> embeddedsw.CMacro.HAS_IN - 1 + 0 embeddedsw.CMacro.HAS_OUT - 0 + 1 embeddedsw.CMacro.HAS_TRI @@ -11580,7 +11576,7 @@ the requested settings for a module instance. --> boolean false false - false + true true true @@ -11588,13 +11584,13 @@ the requested settings for a module instance. --> boolean false false - true + false true true java.lang.String - Input + Output false true true @@ -11612,7 +11608,7 @@ the requested settings for a module instance. --> boolean false false - true + false true true @@ -11628,7 +11624,7 @@ the requested settings for a module instance. --> long 0 false - false + true true true @@ -11636,7 +11632,7 @@ the requested settings for a module instance. --> boolean false false - true + false true true @@ -11676,7 +11672,7 @@ the requested settings for a module instance. --> boolean - false + true true true false @@ -11684,7 +11680,7 @@ the requested settings for a module instance. --> boolean - true + false true true false @@ -12192,6 +12188,24 @@ parameters are a RESULT of the module parameters. --> 2 address + + write_n + Input + 1 + write_n + + + writedata + Input + 32 + writedata + + + chipselect + Input + 1 + chipselect + readdata Output @@ -12238,8 +12252,8 @@ parameters are a RESULT of the module parameters. --> conduit false - in_port - Input + out_port + Output 32 export @@ -12976,6 +12990,780 @@ parameters are a RESULT of the module parameters. --> + + java.lang.String + + false + true + true + true + + + java.lang.String + + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + conduit + false + + out_port + Output + 32 + export + + + + + + + embeddedsw.CMacro.BIT_CLEARING_EDGE_REGISTER + 0 + + + embeddedsw.CMacro.BIT_MODIFYING_OUTPUT_REGISTER + 0 + + + embeddedsw.CMacro.CAPTURE + 0 + + + embeddedsw.CMacro.DATA_WIDTH + 32 + + + embeddedsw.CMacro.DO_TEST_BENCH_WIRING + 0 + + + embeddedsw.CMacro.DRIVEN_SIM_VALUE + 0 + + + embeddedsw.CMacro.EDGE_TYPE + NONE + + + embeddedsw.CMacro.FREQ + 27000000 + + + embeddedsw.CMacro.HAS_IN + 0 + + + embeddedsw.CMacro.HAS_OUT + 1 + + + embeddedsw.CMacro.HAS_TRI + 0 + + + embeddedsw.CMacro.IRQ_TYPE + NONE + + + embeddedsw.CMacro.RESET_VALUE + 0 + + + embeddedsw.dts.compatible + altr,pio-1.0 + + + embeddedsw.dts.group + gpio + + + embeddedsw.dts.name + pio + + + embeddedsw.dts.params.altr,gpio-bank-width + 32 + + + embeddedsw.dts.params.resetvalue + 0 + + + embeddedsw.dts.vendor + altr + + + boolean + false + false + false + true + true + + + boolean + false + false + true + true + true + + + boolean + false + false + false + true + true + + + java.lang.String + Output + false + true + true + true + + + java.lang.String + RISING + false + false + true + true + + + boolean + false + false + false + true + true + + + java.lang.String + LEVEL + false + false + true + true + + + long + 0 + false + true + true + true + + + boolean + false + false + false + true + true + + + long + 0 + false + false + true + true + + + int + 32 + false + true + true + true + + + long + 27000000 + false + true + false + true + CLOCK_RATE + clk + + + boolean + false + true + true + false + true + + + boolean + true + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + java.lang.String + NONE + true + true + false + true + + + boolean + false + true + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + + + boolean + false + false + true + false + true + + + java.lang.String + + false + true + false + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.Boolean + true + true + true + false + true + + + java.lang.Long + 27000000 + true + true + false + true + + clock + false + + clk + Input + 1 + clk + + + + + + java.lang.String + clk + false + true + true + true + + + com.altera.sopcmodel.reset.Reset$Edges + DEASSERT + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + reset + false + + reset_n + Input + 1 + reset_n + + + + + + embeddedsw.configuration.isFlash + 0 + + + embeddedsw.configuration.isMemoryDevice + 0 + + + embeddedsw.configuration.isNonVolatileStorage + 0 + + + embeddedsw.configuration.isPrintableDevice + 0 + + + com.altera.sopcmodel.avalon.AvalonConnectionPoint$AddressAlignment + NATIVE + false + true + false + true + + + int + 0 + false + true + false + true + + + java.math.BigInteger + 4 + true + true + false + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.lang.String + clk + false + true + true + true + + + java.lang.String + reset + false + true + true + true + + + int + 8 + false + true + true + true + + + java.math.BigInteger + + false + true + false + true + + + com.altera.entityinterfaces.IConnectionPoint + + false + true + false + true + + + boolean + false + false + true + true + true + + + com.altera.sopcmodel.avalon.EAddrBurstUnits + WORDS + false + true + true + true + + + boolean + false + false + true + false + true + + + java.math.BigInteger + 0 + false + true + true + true + + + int + 0 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + true + true + + + int + 0 + false + false + true + true + + + int + 0 + false + false + true + true + + + int + 1 + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + int + 1 + false + true + false + true + + + int + 1 + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + true + true + + + com.altera.sopcmodel.avalon.TimingUnits + Cycles + false + true + true + true + + + boolean + false + false + true + false + true + + + boolean + false + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + false + true + + + int + 0 + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + avalon + false + + address + Input + 2 + address + + + write_n + Input + 1 + write_n + + + writedata + Input + 32 + writedata + + + chipselect + Input + 1 + chipselect + + + readdata + Output + 32 + readdata + + + + java.lang.String @@ -13817,7 +14605,7 @@ parameters are a RESULT of the module parameters. --> java.math.BigInteger - 0x008210e0 + 0x008210f0 false true true @@ -14174,7 +14962,7 @@ parameters are a RESULT of the module parameters. --> java.math.BigInteger - 0x008210d0 + 0x008210e0 false true true @@ -14225,7 +15013,7 @@ parameters are a RESULT of the module parameters. --> java.math.BigInteger - 0x008210c0 + 0x008210d0 false true true @@ -14276,7 +15064,7 @@ parameters are a RESULT of the module parameters. --> java.math.BigInteger - 0x008210b0 + 0x008210c0 false true true @@ -14327,7 +15115,7 @@ parameters are a RESULT of the module parameters. --> java.math.BigInteger - 0x008210a0 + 0x008210b0 false true true @@ -14378,7 +15166,7 @@ parameters are a RESULT of the module parameters. --> java.math.BigInteger - 0x00821090 + 0x008210a0 false true true @@ -14480,7 +15268,7 @@ parameters are a RESULT of the module parameters. --> java.math.BigInteger - 0x00821080 + 0x00821090 false true true @@ -14515,6 +15303,57 @@ parameters are a RESULT of the module parameters. --> pio_5 s1 + + + int + 1 + false + true + true + true + + + java.math.BigInteger + 0x00821080 + false + true + true + true + + + boolean + false + false + true + true + true + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + nios2_qsys_0 + data_master + pio_6 + s1 + pio_5 clk + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_27 + clk + pio_6 + clk + pio_5 reset + + + java.lang.String + UNKNOWN + false + true + true + true + + + boolean + false + false + true + true + true + + clk_27 + clk_reset + pio_6 + reset + 16.1 - 13 + 14 clock_sink com.altera.entityinterfaces.IElementClass com.altera.entityinterfaces.IMutableConnectionPoint @@ -15752,7 +16645,7 @@ parameters are a RESULT of the module parameters. --> 16.1 - 13 + 14 reset_sink com.altera.entityinterfaces.IElementClass com.altera.entityinterfaces.IMutableConnectionPoint @@ -15760,7 +16653,7 @@ parameters are a RESULT of the module parameters. --> 16.1 - 14 + 15 avalon_slave com.altera.entityinterfaces.IElementClass com.altera.entityinterfaces.IMutableConnectionPoint @@ -15784,7 +16677,7 @@ parameters are a RESULT of the module parameters. --> 16.1 - 8 + 9 conduit_end com.altera.entityinterfaces.IElementClass com.altera.entityinterfaces.IMutableConnectionPoint @@ -15880,7 +16773,7 @@ parameters are a RESULT of the module parameters. --> 16.1 - 6 + 7 altera_avalon_pio com.altera.entityinterfaces.IElementClass com.altera.entityinterfaces.IModule @@ -15896,7 +16789,7 @@ parameters are a RESULT of the module parameters. --> 16.1 - 16 + 17 avalon com.altera.entityinterfaces.IElementClass com.altera.entityinterfaces.IConnection @@ -15904,7 +16797,7 @@ parameters are a RESULT of the module parameters. --> 16.1 - 13 + 14 clock com.altera.entityinterfaces.IElementClass com.altera.entityinterfaces.IConnection @@ -15928,7 +16821,7 @@ parameters are a RESULT of the module parameters. --> 16.1 - 13 + 14 reset com.altera.entityinterfaces.IElementClass com.altera.entityinterfaces.IConnection