Index: firmware/FTM/FTM_central_control.vhd
===================================================================
--- firmware/FTM/FTM_central_control.vhd	(revision 10227)
+++ firmware/FTM/FTM_central_control.vhd	(revision 10227)
@@ -0,0 +1,131 @@
+----------------------------------------------------------------------------------
+-- Company:        ETH Zurich, Institute for Particle Physics
+-- Engineer:       Q. Weitzel
+-- 
+-- Create Date:    15:56:13 02/28/2011 
+-- Design Name: 
+-- Module Name:    FTM_central_control - Behavioral 
+-- Project Name: 
+-- Target Devices: 
+-- Tool versions: 
+-- Description:    Central FSM for FTM firmware
+--
+-- Dependencies: 
+--
+-- Revision: 
+-- Revision 0.01 - File Created
+-- Additional Comments: 
+--
+----------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library ftm_definitions;
+USE ftm_definitions.ftm_array_types.all;
+USE ftm_definitions.ftm_constants.all;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity FTM_central_control is
+  port(
+    clk                  : IN  std_logic;
+    new_config           : IN  std_logic;
+    config_started       : OUT std_logic := '0';
+    config_started_ack   : IN  std_logic;
+    config_start_eth     : OUT std_logic := '0';
+    config_started_eth   : IN  std_logic;
+    config_ready_eth     : IN  std_logic;
+    config_start_ftu     : OUT std_logic := '0';
+    config_started_ftu   : IN  std_logic ;
+    config_ready_ftu     : IN  std_logic ;
+    ping_ftu_start       : IN  std_logic;
+    ping_ftu_started     : OUT std_logic := '0';
+    ping_ftu_ready       : OUT std_logic := '0';
+    ping_ftu_start_ftu   : OUT std_logic := '0';
+    ping_ftu_started_ftu : IN  std_logic;
+    ping_ftu_ready_ftu   : IN  std_logic
+  );
+end FTM_central_control;
+
+architecture Behavioral of FTM_central_control is
+
+  type state_central_proc_type is (CP_INIT, CP_CONFIG_START, CP_CONFIG, CP_CONFIG_01,
+                                   CP_CONFIG_FTU, CP_CONFIG_FTU_01,
+                                   CP_IDLE, CP_PING);
+  signal state_central_proc : state_central_proc_type := CP_INIT;
+  
+begin
+
+  central_proc : process (clk)
+  begin
+    if rising_edge (clk) then
+      case state_central_proc is
+
+        when CP_INIT =>
+          state_central_proc <= CP_CONFIG;
+          
+        when CP_CONFIG_START =>
+          if (config_started_ack = '1') then
+            config_started <= '0';
+            state_central_proc <= CP_CONFIG;
+          end if;
+
+        when CP_CONFIG =>
+          config_start_eth <= '1';
+          if (config_started_eth = '1') then
+            config_start_eth <= '0';
+            state_central_proc <= CP_CONFIG_01;
+          end if;
+
+        when CP_CONFIG_01 =>
+          if (config_ready_eth = '1') then
+            state_central_proc <= CP_CONFIG_FTU;
+          end if;
+
+        when CP_CONFIG_FTU =>
+          config_start_ftu <= '1';
+          if (config_started_ftu = '1') then
+            config_start_ftu <= '0';
+            state_central_proc <= CP_CONFIG_FTU_01;
+          end if;
+
+        when CP_CONFIG_FTU_01 =>
+          if (config_ready_ftu = '1') then
+            state_central_proc <= CP_IDLE;
+          end if;
+          
+        when CP_IDLE =>
+          if (new_config = '1') then
+            config_started <= '1';
+            state_central_proc <= CP_CONFIG_START;
+
+          elsif (ping_ftu_start = '1') then
+            ping_ftu_start_ftu <= '1';
+            if (ping_ftu_started_ftu = '1') then
+              ping_ftu_start_ftu <= '0';
+              ping_ftu_started <= '1';
+              ping_ftu_ready <= '0';
+              state_central_proc <= CP_PING;
+            end if;
+
+          end if;
+
+        when CP_PING =>
+          if (ping_ftu_ready_ftu = '1') then
+            if (ping_ftu_start = '0') then
+              ping_ftu_started <= '0';
+              ping_ftu_ready <= '1';
+              state_central_proc <= CP_IDLE;
+            end if;
+          end if;
+
+      end case;
+    end if;
+  end process central_proc;
+
+end Behavioral;
Index: firmware/FTM/FTM_top.vhd
===================================================================
--- firmware/FTM/FTM_top.vhd	(revision 10225)
+++ firmware/FTM/FTM_top.vhd	(revision 10227)
@@ -25,8 +25,12 @@
 use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
+library ftm_definitions;
+USE ftm_definitions.ftm_array_types.all;
+USE ftm_definitions.ftm_constants.all;
+
 ---- Uncomment the following library declaration if instantiating
 ---- any Xilinx primitives in this code.
---library UNISIM;
---use UNISIM.VComponents.all;
+library UNISIM;
+use UNISIM.VComponents.all;
 
 
@@ -44,22 +48,23 @@
 
     -- W5300 address bus
-    W_A  : out STD_LOGIC_VECTOR(9 downto 1);   -- there is NO net W_A0 because
+    W_A  : out STD_LOGIC_VECTOR(9 downto 0);   -- there is no real net W_A0 because
                                                -- the W5300 is operated in the 
-                                               -- 16-bit mode 
+                                               -- 16-bit mode
+                                               -- -> W_A<0> assigned to unconnected pin
 
     -- W5300 control signals
     -- the signals W_INT, W_RD, W_WR and W_RES also go to testpoints T17
     -- W_CS is also routed to testpoint JP7
-    W_CS   : out  STD_LOGIC;                      -- W5300 chip select
+    W_CS   : out  STD_LOGIC := '1';               -- W5300 chip select
     W_INT  : IN   STD_LOGIC;                      -- interrupt
-    W_RD   : out  STD_LOGIC;                      -- read
-    W_WR   : out  STD_LOGIC;                      -- write
-    W_RES  : out  STD_LOGIC;                      -- reset W5300 chip
+    W_RD   : out  STD_LOGIC := '1';               -- read
+    W_WR   : out  STD_LOGIC := '1';               -- write
+    W_RES  : out  STD_LOGIC := '1';               -- reset W5300 chip
 
     -- W5300 buffer ready indicator
-    W_BRDY : in STD_LOGIC_VECTOR(3 downto 0); 
+    -- W_BRDY : in STD_LOGIC_VECTOR(3 downto 0); 
 
     -- testpoints (T18) associated with the W5300 on IO-bank 1
-    W_T    : inout STD_LOGIC_VECTOR(3 downto 0);  
+    -- W_T    : inout STD_LOGIC_VECTOR(3 downto 0);  
  
 
@@ -69,5 +74,5 @@
     -- on IO-Bank 1
     -------------------------------------------------------------------------------
-    S_CLK  : out  STD_LOGIC;     -- SPI clock
+    -- S_CLK  : out  STD_LOGIC;     -- SPI clock
 
     -- EEPROM
@@ -77,6 +82,6 @@
 
     -- temperature sensors U45, U46, U48 and U49
-    SIO    : inout  STD_LOGIC;          -- serial IO
-    TS_CS  : out STD_LOGIC_VECTOR(3 downto 0);     -- temperature sensors chip select
+    -- SIO    : inout  STD_LOGIC;          -- serial IO
+    -- TS_CS  : out STD_LOGIC_VECTOR(3 downto 0);     -- temperature sensors chip select
 
  
@@ -84,8 +89,8 @@
     -- on IO-Bank 2
     -------------------------------------------------------------------------------
-    Trig_Prim_A  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 0
-    Trig_Prim_B  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 1
-    Trig_Prim_C  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 2
-    Trig_Prim_D  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 3
+    -- Trig_Prim_A  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 0
+    -- Trig_Prim_B  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 1
+    -- Trig_Prim_C  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 2
+    -- Trig_Prim_D  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 3
 
   
@@ -93,16 +98,16 @@
     ------------------------------------------------------------------------------
     -- on IO-Bank 3  
-    ext_Trig  : in  STD_LOGIC_VECTOR(2 downto 1);      -- external trigger input
-    Veto      : in  STD_LOGIC;                         -- trigger veto input
-    NIM_In    : in  STD_LOGIC_VECTOR(2 downto 0);      -- auxiliary inputs
+    -- ext_Trig  : in  STD_LOGIC_VECTOR(2 downto 1);      -- external trigger input
+    -- Veto      : in  STD_LOGIC;                         -- trigger veto input
+    -- NIM_In    : in  STD_LOGIC_VECTOR(2 downto 0);      -- auxiliary inputs
 
     -- on IO-Bank 0
     -- alternative external clock input for FPGA
-    NIM_In3_GCLK  : in  STD_LOGIC;      -- input with global clock buffer available 
+    -- NIM_In3_GCLK  : in  STD_LOGIC;      -- input with global clock buffer available 
 
    
     -- LEDs on IO-Banks 0 and 3
     -------------------------------------------------------------------------------
-    LED_red  : out STD_LOGIC_VECTOR(3 downto 0);    -- red
+    LED_red  : out STD_LOGIC_VECTOR(3 downto 0);  -- red
     LED_ye   : out STD_LOGIC_VECTOR(1 downto 0);    -- yellow
     LED_gn   : out STD_LOGIC_VECTOR(1 downto 0);    -- green
@@ -112,10 +117,10 @@
     -- on IO-Bank 3
     -------------------------------------------------------------------------------
-    CLK_Clk_Cond  : out STD_LOGIC;  -- MICROWIRE interface serial clock
-    LE_Clk_Cond   : out STD_LOGIC;  -- MICROWIRE interface latch enable   
-    DATA_Clk_Cond : out STD_LOGIC;  -- MICROWIRE interface data
+    -- CLK_Clk_Cond  : out STD_LOGIC;  -- MICROWIRE interface serial clock
+    -- LE_Clk_Cond   : out STD_LOGIC;  -- MICROWIRE interface latch enable   
+    -- DATA_Clk_Cond : out STD_LOGIC;  -- MICROWIRE interface data
    
-    SYNC_Clk_Cond : out STD_LOGIC;  -- global clock synchronization
-    LD_Clk_Cond   : in STD_LOGIC;   -- lock detect, should be checked for                  
+    -- SYNC_Clk_Cond : out STD_LOGIC;  -- global clock synchronization
+    -- LD_Clk_Cond   : in STD_LOGIC;   -- lock detect, should be checked for                  
 
     
@@ -137,22 +142,22 @@
 
     Bus1_RxD_3    : in STD_LOGIC;   -- crate 3
-    Bus1_TxD_3    : out STD_LOGIC;  
+    Bus1_TxD_3    : out STD_LOGIC 
 
 
     -- Bus 2: Trigger-ID to FAD boards
-    Bus2_Tx_En    : out STD_LOGIC;  -- bus 2: transmitter enable                                 
-    Bus2_Rx_En    : out STD_LOGIC;  -- bus 2: receiver enable
-
-    Bus2_RxD_0    : in STD_LOGIC;   -- crate 0
-    Bus2_TxD_0    : out STD_LOGIC;
-
-    Bus2_RxD_1    : in STD_LOGIC;   -- crate 1
-    Bus2_TxD_1    : out STD_LOGIC;
-
-    Bus2_RxD_2    : in STD_LOGIC;   -- crate 2
-    Bus2_TxD_2    : out STD_LOGIC;
-
-    Bus2_RxD_3    : in STD_LOGIC;   -- crate 3
-    Bus2_TxD_3    : out STD_LOGIC;  
+    -- Bus2_Tx_En    : out STD_LOGIC;  -- bus 2: transmitter enable                                 
+    -- Bus2_Rx_En    : out STD_LOGIC;  -- bus 2: receiver enable
+
+    -- Bus2_RxD_0    : in STD_LOGIC;   -- crate 0
+    -- Bus2_TxD_0    : out STD_LOGIC;
+
+    -- Bus2_RxD_1    : in STD_LOGIC;   -- crate 1
+    -- Bus2_TxD_1    : out STD_LOGIC;
+
+    -- Bus2_RxD_2    : in STD_LOGIC;   -- crate 2
+    -- Bus2_TxD_2    : out STD_LOGIC;
+
+    -- Bus2_RxD_3    : in STD_LOGIC;   -- crate 3
+    -- Bus2_TxD_3    : out STD_LOGIC;  
    
 
@@ -172,8 +177,8 @@
     -- on IO-Bank 3
     -------------------------------------------------------------------------------
-    Crate_Res0   : out STD_LOGIC;
-    Crate_Res1   : out STD_LOGIC;
-    Crate_Res2   : out STD_LOGIC;
-    Crate_Res3   : out STD_LOGIC;
+    -- Crate_Res0   : out STD_LOGIC;
+    -- Crate_Res1   : out STD_LOGIC;
+    -- Crate_Res2   : out STD_LOGIC;
+    -- Crate_Res3   : out STD_LOGIC;
 
 
@@ -181,8 +186,8 @@
     -- on IO-Bank 3
     -------------------------------------------------------------------------------
-    Busy0     : in STD_LOGIC;
-    Busy1     : in STD_LOGIC;
-    Busy2     : in STD_LOGIC;
-    Busy3     : in STD_LOGIC;
+    -- Busy0     : in STD_LOGIC;
+    -- Busy1     : in STD_LOGIC;
+    -- Busy2     : in STD_LOGIC;
+    -- Busy3     : in STD_LOGIC;
 
 
@@ -207,13 +212,13 @@
     -- LVDS output at the FPGA followed by LVDS to NIM conversion stage
     -------------------------------------------------------------------------------
-    RES_p      : out STD_LOGIC;   --  RES+   Reset
-    RES_n      : out STD_LOGIC;   --  RES-  IO-Bank 0
-
-    TRG_p      : out STD_LOGIC;   -- TRG+  Trigger
-    TRG_n      : out STD_LOGIC;   -- TRG-  IO-Bank 0
-
-    TIM_Run_p  : out STD_LOGIC;   -- TIM_Run+  Time Marker
-    TIM_Run_n  : out STD_LOGIC;   -- TIM_Run-  IO-Bank 2
-    TIM_Sel    : out STD_LOGIC;   -- Time Marker selector on IO-Bank 2
+    -- RES_p      : out STD_LOGIC;   --  RES+   Reset
+    -- RES_n      : out STD_LOGIC;   --  RES-  IO-Bank 0
+
+    -- TRG_p      : out STD_LOGIC;   -- TRG+  Trigger
+    -- TRG_n      : out STD_LOGIC;   -- TRG-  IO-Bank 0
+
+    -- TIM_Run_p  : out STD_LOGIC;   -- TIM_Run+  Time Marker
+    -- TIM_Run_n  : out STD_LOGIC;   -- TIM_Run-  IO-Bank 2
+    -- TIM_Sel    : out STD_LOGIC;   -- Time Marker selector on IO-Bank 2
                                                     
     -- CLD_FPGA   : in STD_LOGIC;    -- DRS-Clock feedback into FPGA
@@ -225,23 +230,23 @@
     -- to connector J13
     -- for light pulsar in the mirror dish
-    Cal_0_p    : out STD_LOGIC;  
-    Cal_0_n    : out STD_LOGIC;
-    Cal_1_p    : out STD_LOGIC;
-    Cal_1_n    : out STD_LOGIC;
-    Cal_2_p    : out STD_LOGIC;
-    Cal_2_n    : out STD_LOGIC;
-    Cal_3_p    : out STD_LOGIC;
-    Cal_3_n    : out STD_LOGIC;
+    -- Cal_0_p    : out STD_LOGIC;  
+    -- Cal_0_n    : out STD_LOGIC;
+    -- Cal_1_p    : out STD_LOGIC;
+    -- Cal_1_n    : out STD_LOGIC;
+    -- Cal_2_p    : out STD_LOGIC;
+    -- Cal_2_n    : out STD_LOGIC;
+    -- Cal_3_p    : out STD_LOGIC;
+    -- Cal_3_n    : out STD_LOGIC;
 
     -- to connector J12
     -- for light pulsar inside shutter
-    Cal_4_p    : out STD_LOGIC;
-    Cal_4_n    : out STD_LOGIC;
-    Cal_5_p    : out STD_LOGIC;
-    Cal_5_n    : out STD_LOGIC;
-    Cal_6_p    : out STD_LOGIC;
-    Cal_6_n    : out STD_LOGIC; 
-    Cal_7_p    : out STD_LOGIC;
-    Cal_7_n    : out STD_LOGIC  
+    -- Cal_4_p    : out STD_LOGIC;
+    -- Cal_4_n    : out STD_LOGIC;
+    -- Cal_5_p    : out STD_LOGIC;
+    -- Cal_5_n    : out STD_LOGIC;
+    -- Cal_6_p    : out STD_LOGIC;
+    -- Cal_6_n    : out STD_LOGIC; 
+    -- Cal_7_p    : out STD_LOGIC;
+    -- Cal_7_n    : out STD_LOGIC  
 
 
@@ -262,5 +267,387 @@
 architecture Behavioral of FTM_top is
 
+  signal cc_R0_sig              : std_logic_vector(31 DOWNTO 0);
+  signal cc_R1_sig              : std_logic_vector(31 DOWNTO 0);
+  signal cc_R11_sig             : std_logic_vector(31 DOWNTO 0);
+  signal cc_R13_sig             : std_logic_vector(31 DOWNTO 0);
+  signal cc_R14_sig             : std_logic_vector(31 DOWNTO 0);
+  signal cc_R15_sig             : std_logic_vector(31 DOWNTO 0);
+  signal cc_R8_sig              : std_logic_vector(31 DOWNTO 0);
+  signal cc_R9_sig              : std_logic_vector(31 DOWNTO 0);
+  signal coin_n_c_sig           : std_logic_vector(15 DOWNTO 0);
+  signal coin_n_p_sig           : std_logic_vector(15 DOWNTO 0);
+  signal dead_time_sig          : std_logic_vector(15 DOWNTO 0);
+  signal ftu_active_cr0_sig     : std_logic_vector(15 DOWNTO 0);
+  signal ftu_active_cr1_sig     : std_logic_vector(15 DOWNTO 0);
+  signal ftu_active_cr2_sig     : std_logic_vector(15 DOWNTO 0);
+  signal ftu_active_cr3_sig     : std_logic_vector(15 DOWNTO 0);
+  signal general_settings_sig   : std_logic_vector(15 DOWNTO 0);
+  signal lp1_amplitude_sig      : std_logic_vector(15 DOWNTO 0);
+  signal lp1_delay_sig          : std_logic_vector(15 DOWNTO 0);
+  signal lp2_amplitude_sig      : std_logic_vector(15 DOWNTO 0);
+  signal lp2_delay_sig          : std_logic_vector(15 DOWNTO 0);
+  signal lp_pt_freq_sig         : std_logic_vector(15 DOWNTO 0);
+  signal lp_pt_ratio_sig        : std_logic_vector(15 DOWNTO 0);
+  signal timemarker_delay_sig   : std_logic_vector(15 DOWNTO 0);
+  signal trigger_delay_sig      : std_logic_vector(15 DOWNTO 0);
+  signal sd_addr_ftu_sig        : std_logic_vector(11 DOWNTO 0);
+  signal sd_busy_sig            : std_logic;
+  signal sd_data_out_ftu_sig    : std_logic_vector(15 DOWNTO 0) := (others => '0');
+  signal sd_read_ftu_sig        : std_logic;
+  signal sd_ready_sig           : std_logic;
+  signal sd_started_ftu_sig     : std_logic := '0';
+  signal new_config_sig         : std_logic := '0';
+  signal config_started_sig     : std_logic := '0';
+  signal config_start_eth_sig   : std_logic := '0';
+  signal config_started_eth_sig : std_logic := '0';
+  signal config_ready_eth_sig   : std_logic := '0';
+  signal config_started_ack_sig : std_logic := '0';
+  signal ping_ftu_start_sig     : std_logic := '0';
+  signal ping_ftu_started_sig   : std_logic := '0';
+  signal ping_ftu_ready_sig     : std_logic := '0';
+  signal config_start_ftu_sig   : std_logic := '0';
+  signal config_started_ftu_sig : std_logic := '0';
+  signal config_ready_ftu_sig   : std_logic := '0';
+  signal rates_ftu_start_sig    : std_logic := '0';
+  signal rates_ftu_started_sig  : std_logic := '0';
+  signal rates_ftu_ready_sig    : std_logic := '0';
+  signal fl_busy_sig            : std_logic;
+  signal fl_ready_sig           : std_logic;
+  signal fl_write_sig           : std_logic := '0';
+  signal fl_started_ftu_sig     : std_logic := '0';
+  signal fl_addr_sig            : std_logic_vector(11 DOWNTO 0) := (others => '0');
+  signal fl_data_sig            : std_logic_vector(15 DOWNTO 0) := (others => '0');
+  signal ping_ftu_start_ftu_sig : std_logic := '0';
+  signal ping_ftu_started1_sig  : std_logic := '0';
+  signal ping_ftu_ready1_sig    : std_logic := '0';
+  signal dd_addr_ftu_sig        : std_logic_vector(11 DOWNTO 0);
+  signal dd_busy_sig            : std_logic;
+  signal dd_data_in_ftu_sig     : std_logic_vector(15 DOWNTO 0);
+  signal dd_ready_sig           : std_logic;
+  signal dd_started_ftu_sig     : std_logic := '0';
+  signal dd_write_ftu_sig       : std_logic;
+  signal coin_win_c_sig         : std_logic_vector(15 DOWNTO 0) := (others => '0');
+  signal coin_win_p_sig         : std_logic_vector(15 DOWNTO 0) := (others => '0');
+
+  signal clk_buf_sig     : std_logic;
+  signal clk_1M_sig      : STD_LOGIC;         -- generated from 50M clock by divider
+  signal clk_50M_sig     : STD_LOGIC;         -- generated by internal DCM
+  signal clk_250M_sig    : STD_LOGIC;         -- generated by internal DCM
+  signal clk_250M_ps_sig : STD_LOGIC;         -- generated by internal DCM
+  signal clk_ready_sig   : STD_LOGIC := '0';  -- set high by FTM_clk_gen when DCMs have locked
+
+  signal reset_sig : STD_LOGIC := '0';  -- initialize to 0 on power-up
+
+  signal led_sig : std_logic_vector(7 downto 0) := (others => '0');
+  
+  component FTM_clk_gen
+    port(
+      clk        : IN  STD_LOGIC;
+      rst        : IN  STD_LOGIC;
+      clk_1      : OUT STD_LOGIC;
+      clk_50     : OUT STD_LOGIC;
+      clk_250    : OUT STD_LOGIC;
+      clk_250_ps : OUT STD_LOGIC;
+      ready      : OUT STD_LOGIC
+    );
+  end component;
+  
+  component FTM_central_control
+    port(
+      clk                  : IN  std_logic ;
+      new_config           : IN  std_logic ;
+      config_started       : OUT std_logic := '0';
+      config_started_ack   : IN  std_logic ;
+      config_start_eth     : OUT std_logic := '0';
+      config_started_eth   : IN  std_logic ;
+      config_ready_eth     : IN  std_logic ;
+      config_start_ftu     : OUT std_logic := '0';
+      config_started_ftu   : IN  std_logic ;
+      config_ready_ftu     : IN  std_logic ;
+      ping_ftu_start       : IN  std_logic ;
+      ping_ftu_started     : OUT std_logic := '0';
+      ping_ftu_ready       : OUT std_logic := '0';
+      ping_ftu_start_ftu   : OUT std_logic := '0';
+      ping_ftu_started_ftu : IN  std_logic ;
+      ping_ftu_ready_ftu   : IN  std_logic
+    );
+  end component;
+
+  component FTM_ftu_control
+    port(
+      clk_50MHz           : in  std_logic;
+      rx_en               : out STD_LOGIC;
+      tx_en               : out STD_LOGIC; 
+      rx_d_0              : in  STD_LOGIC;
+      tx_d_0              : out STD_LOGIC;
+      rx_d_1              : in  STD_LOGIC;
+      tx_d_1              : out STD_LOGIC;
+      rx_d_2              : in  STD_LOGIC;
+      tx_d_2              : out STD_LOGIC;
+      rx_d_3              : in  STD_LOGIC;
+      tx_d_3              : out STD_LOGIC;
+      new_config          : in std_logic;
+      ping_all            : in std_logic;
+      read_rates          : in std_logic;
+      read_rates_started  : out std_logic := '0';
+      read_rates_done     : out std_logic := '0';
+      new_config_started  : out std_logic := '0';
+      new_config_done     : out std_logic := '0';
+      ping_all_started    : out std_logic := '0';
+      ping_all_done       : out std_logic := '0';
+      ftu_active_cr0      :  in std_logic_vector (15 downto 0);
+      ftu_active_cr1      :  in std_logic_vector (15 downto 0);
+      ftu_active_cr2      :  in std_logic_vector (15 downto 0);
+      ftu_active_cr3      :  in std_logic_vector (15 downto 0);
+      static_RAM_busy     :  in std_logic;
+      static_RAM_started  :  in std_logic;
+      static_RAM_ready    :  in std_logic;
+      data_static_RAM     :  in std_logic_vector(15 downto 0) := (others => '0');
+      read_static_RAM     : out std_logic := '0';
+      addr_static_RAM     : out std_logic_vector(11 downto 0) := (others => '0');
+      dynamic_RAM_busy    :  in std_logic;
+      dynamic_RAM_started :  in std_logic;
+      dynamic_RAM_ready   :  in std_logic;
+      data_dynamic_RAM    : out std_logic_vector(15 downto 0) := (others => '0');
+      write_dynamic_RAM   : out std_logic := '0';
+      addr_dynamic_RAM    : out std_logic_vector(11 downto 0) := (others => '0');
+      FTUlist_RAM_busy    :  in std_logic;
+      FTUlist_RAM_started :  in std_logic;
+      FTUlist_RAM_ready   :  in std_logic;
+      data_FTUlist_RAM    : out std_logic_vector(15 downto 0) := (others => '0');
+      write_FTUlist_RAM   : out std_logic := '0';
+      addr_FTUlist_RAM    : out std_logic_vector(11 downto 0) := (others => '0')
+    );
+  end component;
+
+  component ethernet_modul
+    port(
+      wiz_reset          : OUT   std_logic := '1';
+      wiz_addr           : OUT   std_logic_vector (9 DOWNTO 0);
+      wiz_data           : INOUT std_logic_vector (15 DOWNTO 0);
+      wiz_cs             : OUT   std_logic := '1';
+      wiz_wr             : OUT   std_logic := '1';
+      wiz_rd             : OUT   std_logic := '1';
+      wiz_int            : IN    std_logic ;
+      clk                : IN    std_logic ;
+      sd_ready           : OUT   std_logic ;
+      sd_busy            : OUT   std_logic ;
+      led                : OUT   std_logic_vector (7 DOWNTO 0);
+      sd_read_ftu        : IN    std_logic ;
+      sd_started_ftu     : OUT   std_logic := '0';
+      cc_R0              : OUT   std_logic_vector (31 DOWNTO 0);
+      cc_R1              : OUT   std_logic_vector (31 DOWNTO 0);
+      cc_R11             : OUT   std_logic_vector (31 DOWNTO 0);
+      cc_R13             : OUT   std_logic_vector (31 DOWNTO 0);
+      cc_R14             : OUT   std_logic_vector (31 DOWNTO 0);
+      cc_R15             : OUT   std_logic_vector (31 DOWNTO 0);
+      cc_R8              : OUT   std_logic_vector (31 DOWNTO 0);
+      cc_R9              : OUT   std_logic_vector (31 DOWNTO 0);
+      coin_n_c           : OUT   std_logic_vector (15 DOWNTO 0);
+      coin_n_p           : OUT   std_logic_vector (15 DOWNTO 0);
+      dead_time          : OUT   std_logic_vector (15 DOWNTO 0);
+      general_settings   : OUT   std_logic_vector (15 DOWNTO 0);
+      lp1_amplitude      : OUT   std_logic_vector (15 DOWNTO 0);
+      lp1_delay          : OUT   std_logic_vector (15 DOWNTO 0);
+      lp2_amplitude      : OUT   std_logic_vector (15 DOWNTO 0);
+      lp2_delay          : OUT   std_logic_vector (15 DOWNTO 0);
+      lp_pt_freq         : OUT   std_logic_vector (15 DOWNTO 0);
+      lp_pt_ratio        : OUT   std_logic_vector (15 DOWNTO 0);
+      timemarker_delay   : OUT   std_logic_vector (15 DOWNTO 0);
+      trigger_delay      : OUT   std_logic_vector (15 DOWNTO 0);
+      sd_addr_ftu        : IN    std_logic_vector (11 DOWNTO 0);
+      sd_data_out_ftu    : OUT   std_logic_vector (15 DOWNTO 0) := (others => '0');
+      ftu_active_cr0     : OUT   std_logic_vector (15 DOWNTO 0);
+      ftu_active_cr1     : OUT   std_logic_vector (15 DOWNTO 0);
+      ftu_active_cr2     : OUT   std_logic_vector (15 DOWNTO 0);
+      ftu_active_cr3     : OUT   std_logic_vector (15 DOWNTO 0);
+      new_config         : OUT   std_logic := '0';
+      config_started     : IN    std_logic ;
+      config_start_eth   : IN    std_logic ;
+      config_started_eth : OUT   std_logic := '0';
+      config_ready_eth   : OUT   std_logic := '0';
+      config_started_ack : OUT   std_logic := '0';
+      fl_busy            : OUT   std_logic ;
+      fl_ready           : OUT   std_logic ;
+      fl_write_ftu       : IN    std_logic ;
+      fl_started_ftu     : OUT   std_logic := '0';
+      fl_addr_ftu        : IN    std_logic_vector (11 DOWNTO 0);
+      fl_data_in_ftu     : IN    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      ping_ftu_start     : OUT   std_logic := '0';
+      ping_ftu_started   : IN    std_logic ;
+      ping_ftu_ready     : IN    std_logic ;
+      dd_write_ftu       : IN    std_logic ;
+      dd_started_ftu     : OUT   std_logic := '0';
+      dd_data_in_ftu     : IN    std_logic_vector (15 DOWNTO 0);
+      dd_addr_ftu        : IN    std_logic_vector (11 DOWNTO 0);
+      dd_busy            : OUT   std_logic ;
+      dd_ready           : OUT   std_logic ;
+      coin_win_c         : OUT   std_logic_vector (15 DOWNTO 0) := (others => '0');
+      coin_win_p         : OUT   std_logic_vector (15 DOWNTO 0) := (others => '0')
+    );
+  end component;
+  
 begin
+
+  -- IBUFG: Single-ended global clock input buffer
+  --        Spartan-3A
+  -- Xilinx HDL Language Template, version 11.4
+  
+   IBUFG_inst : IBUFG
+   generic map (
+      IBUF_DELAY_VALUE => "0", -- Specify the amount of added input delay for buffer, 
+                               -- "0"-"16" 
+      IOSTANDARD => "DEFAULT")
+   port map (
+      O => clk_buf_sig, -- Clock buffer output
+      I => clk      -- Clock buffer input (connect directly to top-level port)
+   );
+  
+  Inst_FTM_clk_gen : FTM_clk_gen
+    port map(
+      clk        => clk_buf_sig,
+      rst        => reset_sig,
+      clk_1      => clk_1M_sig,
+      clk_50     => clk_50M_sig,
+      clk_250    => clk_250M_sig,
+      clk_250_ps => clk_250M_ps_sig,
+      ready      => clk_ready_sig
+    );
+  
+  Inst_FTM_central_control : FTM_central_control
+    port map(
+      clk                  => clk_50M_sig,
+      new_config           => new_config_sig,
+      config_started       => config_started_sig,
+      config_started_ack   => config_started_ack_sig,
+      config_start_eth     => config_start_eth_sig,
+      config_started_eth   => config_started_eth_sig,
+      config_ready_eth     => config_ready_eth_sig,
+      config_start_ftu     => config_start_ftu_sig,
+      config_started_ftu   => config_started_ftu_sig,
+      config_ready_ftu     => config_ready_ftu_sig,
+      ping_ftu_start       => ping_ftu_start_sig,
+      ping_ftu_started     => ping_ftu_started_sig,
+      ping_ftu_ready       => ping_ftu_ready_sig,
+      ping_ftu_start_ftu   => ping_ftu_start_ftu_sig,
+      ping_ftu_started_ftu => ping_ftu_started1_sig,
+      ping_ftu_ready_ftu   => ping_ftu_ready1_sig
+    );
+  
+  Inst_FTM_ftu_control : FTM_ftu_control
+    port map(
+      clk_50MHz           => clk_50M_sig,
+      rx_en               => Bus1_Rx_En,
+      tx_en               => Bus1_Tx_En,
+      rx_d_0              => Bus1_RxD_0,
+      tx_d_0              => Bus1_TxD_0,
+      rx_d_1              => Bus1_RxD_1,
+      tx_d_1              => Bus1_TxD_1,
+      rx_d_2              => Bus1_RxD_2,
+      tx_d_2              => Bus1_TxD_2,
+      rx_d_3              => Bus1_RxD_3,
+      tx_d_3              => Bus1_TxD_3,
+      new_config          => config_start_ftu_sig,
+      ping_all            => ping_ftu_start_ftu_sig,
+      read_rates          => rates_ftu_start_sig,
+      read_rates_started  => rates_ftu_started_sig,
+      read_rates_done     => rates_ftu_ready_sig,
+      new_config_started  => config_started_ftu_sig,
+      new_config_done     => config_ready_ftu_sig,
+      ping_all_started    => ping_ftu_started1_sig,
+      ping_all_done       => ping_ftu_ready1_sig,
+      ftu_active_cr0      => ftu_active_cr0_sig,
+      ftu_active_cr1      => ftu_active_cr1_sig,
+      ftu_active_cr2      => ftu_active_cr2_sig,
+      ftu_active_cr3      => ftu_active_cr3_sig,
+      static_RAM_busy     => sd_busy_sig,
+      static_RAM_started  => sd_started_ftu_sig,
+      static_RAM_ready    => sd_ready_sig,
+      data_static_RAM     => sd_data_out_ftu_sig,
+      read_static_RAM     => sd_read_ftu_sig,
+      addr_static_RAM     => sd_addr_ftu_sig,
+      dynamic_RAM_busy    => dd_busy_sig,
+      dynamic_RAM_started => dd_started_ftu_sig,
+      dynamic_RAM_ready   => dd_ready_sig,
+      data_dynamic_RAM    => dd_data_in_ftu_sig,
+      write_dynamic_RAM   => dd_write_ftu_sig,
+      addr_dynamic_RAM    => dd_addr_ftu_sig,
+      FTUlist_RAM_busy    => fl_busy_sig,
+      FTUlist_RAM_started => fl_started_ftu_sig,
+      FTUlist_RAM_ready   => fl_ready_sig,
+      data_FTUlist_RAM    => fl_data_sig,
+      write_FTUlist_RAM   => fl_write_sig,
+      addr_FTUlist_RAM    => fl_addr_sig
+    );
+  
+  Inst_ethernet_modul : ethernet_modul
+    port map(
+      wiz_reset          => W_RES,
+      wiz_addr           => W_A,
+      wiz_data           => W_D,
+      wiz_cs             => W_CS,
+      wiz_wr             => W_WR,
+      wiz_rd             => W_RD,
+      wiz_int            => W_INT,
+      clk                => clk_50M_sig,
+      sd_ready           => sd_ready_sig,
+      sd_busy            => sd_busy_sig,
+      led                => led_sig,
+      sd_read_ftu        => sd_read_ftu_sig,
+      sd_started_ftu     => sd_started_ftu_sig,
+      cc_R0              => cc_R0_sig,
+      cc_R1              => cc_R1_sig,
+      cc_R11             => cc_R11_sig,
+      cc_R13             => cc_R13_sig,
+      cc_R14             => cc_R14_sig,
+      cc_R15             => cc_R15_sig,
+      cc_R8              => cc_R8_sig,
+      cc_R9              => cc_R9_sig,
+      coin_n_c           => coin_n_c_sig,
+      coin_n_p           => coin_n_p_sig,
+      dead_time          => dead_time_sig,
+      general_settings   => general_settings_sig,
+      lp1_amplitude      => lp1_amplitude_sig,
+      lp1_delay          => lp1_delay_sig,
+      lp2_amplitude      => lp2_amplitude_sig,
+      lp2_delay          => lp2_delay_sig,
+      lp_pt_freq         => lp_pt_freq_sig,
+      lp_pt_ratio        => lp_pt_ratio_sig,
+      timemarker_delay   => timemarker_delay_sig,
+      trigger_delay      => trigger_delay_sig,
+      sd_addr_ftu        => sd_addr_ftu_sig,
+      sd_data_out_ftu    => sd_data_out_ftu_sig,
+      ftu_active_cr0     => ftu_active_cr0_sig,
+      ftu_active_cr1     => ftu_active_cr1_sig,
+      ftu_active_cr2     => ftu_active_cr2_sig,
+      ftu_active_cr3     => ftu_active_cr3_sig,
+      new_config         => new_config_sig,
+      config_started     => config_started_sig,
+      config_start_eth   => config_start_eth_sig,
+      config_started_eth => config_started_eth_sig,
+      config_ready_eth   => config_ready_eth_sig,
+      config_started_ack => config_started_ack_sig,
+      fl_busy            => fl_busy_sig,
+      fl_ready           => fl_ready_sig,
+      fl_write_ftu       => fl_write_sig,
+      fl_started_ftu     => fl_started_ftu_sig,
+      fl_addr_ftu        => fl_addr_sig,
+      fl_data_in_ftu     => fl_data_sig,
+      ping_ftu_start     => ping_ftu_start_sig,
+      ping_ftu_started   => ping_ftu_started_sig,
+      ping_ftu_ready     => ping_ftu_ready_sig,
+      dd_write_ftu       => dd_write_ftu_sig,
+      dd_started_ftu     => dd_started_ftu_sig,
+      dd_data_in_ftu     => dd_data_in_ftu_sig,
+      dd_addr_ftu        => dd_addr_ftu_sig,
+      dd_busy            => dd_busy_sig,
+      dd_ready           => dd_ready_sig,
+      coin_win_c         => coin_win_c_sig,
+      coin_win_p         => coin_win_p_sig
+    );
+
+  LED_red <= led_sig(3 downto 0);
+  LED_ye  <= led_sig(5 downto 4);
+  LED_gn  <= led_sig(7 downto 6);
   
 end Behavioral;
Index: firmware/FTM/FTM_top_tb.vhd
===================================================================
--- firmware/FTM/FTM_top_tb.vhd	(revision 10225)
+++ firmware/FTM/FTM_top_tb.vhd	(revision 10227)
@@ -53,7 +53,8 @@
 
       -- W5300 address bus
-      W_A  : out STD_LOGIC_VECTOR(9 downto 1); -- there is NO net W_A0 because
+      W_A  : out STD_LOGIC_VECTOR(9 downto 0); -- there is no real net W_A0 because
                                                -- the W5300 is operated in the 
-                                               -- 16-bit mode 
+                                               -- 16-bit mode
+                                               -- -> W_A<0> assigned to unconnected pin
 
       -- W5300 control signals
@@ -67,8 +68,8 @@
 
       -- W5300 buffer ready indicator
-      W_BRDY : in STD_LOGIC_VECTOR(3 downto 0); 
+      -- W_BRDY : in STD_LOGIC_VECTOR(3 downto 0); 
 
       -- testpoints (T18) associated with the W5300
-      W_T    : inout STD_LOGIC_VECTOR(3 downto 0);  
+      -- W_T    : inout STD_LOGIC_VECTOR(3 downto 0);  
  
 
@@ -77,5 +78,5 @@
       -- temperature sensors U45, U46, U48 and U49 (all MAX6662)
       -------------------------------------------------------------------------------
-      S_CLK  : out  STD_LOGIC;     -- SPI clock
+      -- S_CLK  : out  STD_LOGIC;     -- SPI clock
 
       -- EEPROM
@@ -85,24 +86,24 @@
 
       -- temperature sensors U45, U46, U48 and U49
-      SIO    : inout  STD_LOGIC;          -- serial IO
-      TS_CS  : out STD_LOGIC_VECTOR(3 downto 0);     -- temperature sensors chip select
+      -- SIO    : inout  STD_LOGIC;          -- serial IO
+      -- TS_CS  : out STD_LOGIC_VECTOR(3 downto 0);     -- temperature sensors chip select
 
  
       -- Trigger primitives inputs
       -------------------------------------------------------------------------------
-      Trig_Prim_A  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 0
-      Trig_Prim_B  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 1
-      Trig_Prim_C  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 2
-      Trig_Prim_D  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 3
+      -- Trig_Prim_A  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 0
+      -- Trig_Prim_B  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 1
+      -- Trig_Prim_C  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 2
+      -- Trig_Prim_D  : in STD_LOGIC_VECTOR(9 downto 0);  -- crate 3
 
   
       -- NIM inputs
       ------------------------------------------------------------------------------
-      ext_Trig  : in  STD_LOGIC_VECTOR(2 downto 1);      -- external trigger input
-      Veto      : in  STD_LOGIC;                         -- trigger veto input
-      NIM_In    : in  STD_LOGIC_VECTOR(2 downto 0);      -- auxiliary inputs
+      -- ext_Trig  : in  STD_LOGIC_VECTOR(2 downto 1);      -- external trigger input
+      -- Veto      : in  STD_LOGIC;                         -- trigger veto input
+      -- NIM_In    : in  STD_LOGIC_VECTOR(2 downto 0);      -- auxiliary inputs
 
       -- alternative external clock input for FPGA
-      NIM_In3_GCLK  : in  STD_LOGIC;      -- input with global clock buffer available 
+      -- NIM_In3_GCLK  : in  STD_LOGIC;      -- input with global clock buffer available 
 
    
@@ -116,10 +117,10 @@
       -- Clock conditioner LMK03000
       -------------------------------------------------------------------------------
-      CLK_Clk_Cond  : out STD_LOGIC;  -- MICROWIRE interface serial clock
-      LE_Clk_Cond   : out STD_LOGIC;  -- MICROWIRE interface latch enable   
-      DATA_Clk_Cond : out STD_LOGIC;  -- MICROWIRE interface data
+      -- CLK_Clk_Cond  : out STD_LOGIC;  -- MICROWIRE interface serial clock
+      -- LE_Clk_Cond   : out STD_LOGIC;  -- MICROWIRE interface latch enable   
+      -- DATA_Clk_Cond : out STD_LOGIC;  -- MICROWIRE interface data
    
-      SYNC_Clk_Cond : out STD_LOGIC;  -- global clock synchronization
-      LD_Clk_Cond   : in STD_LOGIC;   -- lock detect, should be checked for                  
+      -- SYNC_Clk_Cond : out STD_LOGIC;  -- global clock synchronization
+      -- LD_Clk_Cond   : in STD_LOGIC;   -- lock detect, should be checked for                  
 
     
@@ -140,22 +141,22 @@
 
       Bus1_RxD_3    : in STD_LOGIC;   -- crate 3
-      Bus1_TxD_3    : out STD_LOGIC;  
+      Bus1_TxD_3    : out STD_LOGIC
 
 
       -- Bus 2: Trigger-ID to FAD boards
-      Bus2_Tx_En    : out STD_LOGIC;  -- bus 2: transmitter enable                                 
-      Bus2_Rx_En    : out STD_LOGIC;  -- bus 2: receiver enable
-
-      Bus2_RxD_0    : in STD_LOGIC;   -- crate 0
-      Bus2_TxD_0    : out STD_LOGIC;
-
-      Bus2_RxD_1    : in STD_LOGIC;   -- crate 1
-      Bus2_TxD_1    : out STD_LOGIC;
-
-      Bus2_RxD_2    : in STD_LOGIC;   -- crate 2
-      Bus2_TxD_2    : out STD_LOGIC;
-
-      Bus2_RxD_3    : in STD_LOGIC;   -- crate 3
-      Bus2_TxD_3    : out STD_LOGIC;  
+      -- Bus2_Tx_En    : out STD_LOGIC;  -- bus 2: transmitter enable                                 
+      -- Bus2_Rx_En    : out STD_LOGIC;  -- bus 2: receiver enable
+
+      -- Bus2_RxD_0    : in STD_LOGIC;   -- crate 0
+      -- Bus2_TxD_0    : out STD_LOGIC;
+
+      -- Bus2_RxD_1    : in STD_LOGIC;   -- crate 1
+      -- Bus2_TxD_1    : out STD_LOGIC;
+
+      -- Bus2_RxD_2    : in STD_LOGIC;   -- crate 2
+      -- Bus2_TxD_2    : out STD_LOGIC;
+
+      -- Bus2_RxD_3    : in STD_LOGIC;   -- crate 3
+      -- Bus2_TxD_3    : out STD_LOGIC;  
    
 
@@ -174,16 +175,16 @@
       -- Crate-Resets
       -------------------------------------------------------------------------------
-      Crate_Res0   : out STD_LOGIC;
-      Crate_Res1   : out STD_LOGIC;
-      Crate_Res2   : out STD_LOGIC;
-      Crate_Res3   : out STD_LOGIC;
+      -- Crate_Res0   : out STD_LOGIC;
+      -- Crate_Res1   : out STD_LOGIC;
+      -- Crate_Res2   : out STD_LOGIC;
+      -- Crate_Res3   : out STD_LOGIC;
 
 
       -- Busy signals from the FAD boards
       -------------------------------------------------------------------------------
-      Busy0     : in STD_LOGIC;
-      Busy1     : in STD_LOGIC;
-      Busy2     : in STD_LOGIC;
-      Busy3     : in STD_LOGIC;
+--      Busy0     : in STD_LOGIC;
+--      Busy1     : in STD_LOGIC;
+--      Busy2     : in STD_LOGIC;
+--      Busy3     : in STD_LOGIC;
 
 
@@ -207,13 +208,13 @@
       -- LVDS output at the FPGA followed by LVDS to NIM conversion stage
       -------------------------------------------------------------------------------
-      RES_p      : out STD_LOGIC;   --  RES+   Reset
-      RES_n      : out STD_LOGIC;   --  RES-
-
-      TRG_p      : out STD_LOGIC;   -- TRG+  Trigger
-      TRG_n      : out STD_LOGIC;   -- TRG-
-
-      TIM_Run_p  : out STD_LOGIC;   -- TIM_Run+  Time Marker
-      TIM_Run_n  : out STD_LOGIC;   -- TIM_Run-
-      TIM_Sel    : out STD_LOGIC;   -- Time Marker selector
+--      RES_p      : out STD_LOGIC;   --  RES+   Reset
+--      RES_n      : out STD_LOGIC;   --  RES-
+
+--      TRG_p      : out STD_LOGIC;   -- TRG+  Trigger
+--      TRG_n      : out STD_LOGIC;   -- TRG-
+
+--      TIM_Run_p  : out STD_LOGIC;   -- TIM_Run+  Time Marker
+--      TIM_Run_n  : out STD_LOGIC;   -- TIM_Run-
+--      TIM_Sel    : out STD_LOGIC;   -- Time Marker selector
                                                     
       -- CLD_FPGA   : in STD_LOGIC;    -- DRS-Clock feedback into FPGA
@@ -224,23 +225,23 @@
       -- to connector J13
       -- for light pulsar in the mirror dish
-      Cal_0_p    : out STD_LOGIC;  
-      Cal_0_n    : out STD_LOGIC;
-      Cal_1_p    : out STD_LOGIC;
-      Cal_1_n    : out STD_LOGIC;
-      Cal_2_p    : out STD_LOGIC;
-      Cal_2_n    : out STD_LOGIC;
-      Cal_3_p    : out STD_LOGIC;
-      Cal_3_n    : out STD_LOGIC;
+--      Cal_0_p    : out STD_LOGIC;  
+--      Cal_0_n    : out STD_LOGIC;
+--      Cal_1_p    : out STD_LOGIC;
+--      Cal_1_n    : out STD_LOGIC;
+--      Cal_2_p    : out STD_LOGIC;
+--      Cal_2_n    : out STD_LOGIC;
+--      Cal_3_p    : out STD_LOGIC;
+--      Cal_3_n    : out STD_LOGIC;
 
       -- to connector J12
       -- for light pulsar inside shutter
-      Cal_4_p    : out STD_LOGIC;
-      Cal_4_n    : out STD_LOGIC;
-      Cal_5_p    : out STD_LOGIC;
-      Cal_5_n    : out STD_LOGIC;
-      Cal_6_p    : out STD_LOGIC;
-      Cal_6_n    : out STD_LOGIC; 
-      Cal_7_p    : out STD_LOGIC;
-      Cal_7_n    : out STD_LOGIC  
+--      Cal_4_p    : out STD_LOGIC;
+--      Cal_4_n    : out STD_LOGIC;
+--      Cal_5_p    : out STD_LOGIC;
+--      Cal_5_n    : out STD_LOGIC;
+--      Cal_6_p    : out STD_LOGIC;
+--      Cal_6_n    : out STD_LOGIC; 
+--      Cal_7_p    : out STD_LOGIC;
+--      Cal_7_n    : out STD_LOGIC  
 
 
@@ -291,5 +292,5 @@
   
   --Outputs
-  signal W_A_sig           : STD_LOGIC_VECTOR(9 downto 1);
+  signal W_A_sig           : STD_LOGIC_VECTOR(9 downto 0);
   signal W_CS_sig          : STD_LOGIC;
   signal W_RD_sig          : STD_LOGIC;
@@ -361,25 +362,25 @@
       W_WR          => W_WR_sig,
       W_RES         => W_RES_sig,
-      W_BRDY        => W_BRDY_sig, 
-      W_T           => W_T_sig,  
-      S_CLK         => S_CLK_sig,
-      SIO           => SIO_sig,
-      TS_CS         => TS_CS_sig,
-      Trig_Prim_A   => Trig_Prim_A_sig,
-      Trig_Prim_B   => Trig_Prim_B_sig,
-      Trig_Prim_C   => Trig_Prim_C_sig,
-      Trig_Prim_D   => Trig_Prim_D_sig,
-      ext_Trig      => ext_Trig_sig,
-      Veto          => Veto_sig, 
-      NIM_In        => NIM_In_sig, 
-      NIM_In3_GCLK  => NIM_In3_GCLK_sig, 
+--      W_BRDY        => W_BRDY_sig, 
+--      W_T           => W_T_sig,  
+--      S_CLK         => S_CLK_sig,
+--      SIO           => SIO_sig,
+--      TS_CS         => TS_CS_sig,
+--      Trig_Prim_A   => Trig_Prim_A_sig,
+--      Trig_Prim_B   => Trig_Prim_B_sig,
+--      Trig_Prim_C   => Trig_Prim_C_sig,
+--      Trig_Prim_D   => Trig_Prim_D_sig,
+--      ext_Trig      => ext_Trig_sig,
+--      Veto          => Veto_sig, 
+--      NIM_In        => NIM_In_sig, 
+--      NIM_In3_GCLK  => NIM_In3_GCLK_sig, 
       LED_red       => LED_red_sig,
       LED_ye        => LED_ye_sig,
       LED_gn        => LED_gn_sig,
-      CLK_Clk_Cond  => CLK_Clk_Cond_sig,
-      LE_Clk_Cond   => LE_Clk_Cond_sig,
-      DATA_Clk_Cond => DATA_Clk_Cond_sig,
-      SYNC_Clk_Cond => SYNC_Clk_Cond_sig,
-      LD_Clk_Cond   => LD_Clk_Cond_sig,               
+--      CLK_Clk_Cond  => CLK_Clk_Cond_sig,
+--      LE_Clk_Cond   => LE_Clk_Cond_sig,
+--      DATA_Clk_Cond => DATA_Clk_Cond_sig,
+--      SYNC_Clk_Cond => SYNC_Clk_Cond_sig,
+--      LD_Clk_Cond   => LD_Clk_Cond_sig,               
       Bus1_Tx_En    => Bus1_Tx_En_sig,                               
       Bus1_Rx_En    => Bus1_Rx_En_sig,
@@ -391,46 +392,46 @@
       Bus1_TxD_2    => Bus1_TxD_2_sig,
       Bus1_RxD_3    => Bus1_RxD_3_sig,
-      Bus1_TxD_3    => Bus1_TxD_3_sig,  
-      Bus2_Tx_En    => Bus2_Tx_En_sig,                               
-      Bus2_Rx_En    => Bus2_Rx_En_sig,
-      Bus2_RxD_0    => Bus2_RxD_0_sig,
-      Bus2_TxD_0    => Bus2_TxD_0_sig,
-      Bus2_RxD_1    => Bus2_RxD_1_sig,
-      Bus2_TxD_1    => Bus2_TxD_1_sig,
-      Bus2_RxD_2    => Bus2_RxD_2_sig,
-      Bus2_TxD_2    => Bus2_TxD_2_sig,
-      Bus2_RxD_3    => Bus2_RxD_3_sig,
-      Bus2_TxD_3    => Bus2_TxD_3_sig,
-      Crate_Res0    => Crate_Res0_sig,
-      Crate_Res1    => Crate_Res1_sig,
-      Crate_Res2    => Crate_Res2_sig,
-      Crate_Res3    => Crate_Res3_sig,
-      Busy0         => Busy0_sig,
-      Busy1         => Busy1_sig,
-      Busy2         => Busy2_sig,
-      Busy3         => Busy3_sig,
-      RES_p         => RES_p_sig,
-      RES_n         => RES_n_sig,
-      TRG_p         => TRG_p_sig,
-      TRG_n         => TRG_n_sig,
-      TIM_Run_p     => TIM_Run_p_sig,
-      TIM_Run_n     => TIM_Run_n_sig,
-      TIM_Sel       => TIM_Sel_sig,
-      Cal_0_p       => Cal_0_p_sig,  
-      Cal_0_n       => Cal_0_n_sig,
-      Cal_1_p       => Cal_1_p_sig,
-      Cal_1_n       => Cal_1_n_sig,
-      Cal_2_p       => Cal_2_p_sig,
-      Cal_2_n       => Cal_2_n_sig,
-      Cal_3_p       => Cal_3_p_sig,
-      Cal_3_n       => Cal_3_n_sig,
-      Cal_4_p       => Cal_4_p_sig,
-      Cal_4_n       => Cal_4_n_sig,
-      Cal_5_p       => Cal_5_p_sig,
-      Cal_5_n       => Cal_5_n_sig,
-      Cal_6_p       => Cal_6_p_sig,
-      Cal_6_n       => Cal_6_n_sig, 
-      Cal_7_p       => Cal_7_p_sig,
-      Cal_7_n       => Cal_7_n_sig  
+      Bus1_TxD_3    => Bus1_TxD_3_sig  
+--      Bus2_Tx_En    => Bus2_Tx_En_sig,                               
+--      Bus2_Rx_En    => Bus2_Rx_En_sig,
+--      Bus2_RxD_0    => Bus2_RxD_0_sig,
+--      Bus2_TxD_0    => Bus2_TxD_0_sig,
+--      Bus2_RxD_1    => Bus2_RxD_1_sig,
+--      Bus2_TxD_1    => Bus2_TxD_1_sig,
+--      Bus2_RxD_2    => Bus2_RxD_2_sig,
+--      Bus2_TxD_2    => Bus2_TxD_2_sig,
+--      Bus2_RxD_3    => Bus2_RxD_3_sig,
+--      Bus2_TxD_3    => Bus2_TxD_3_sig,
+--      Crate_Res0    => Crate_Res0_sig,
+--      Crate_Res1    => Crate_Res1_sig,
+--      Crate_Res2    => Crate_Res2_sig,
+--      Crate_Res3    => Crate_Res3_sig,
+--      Busy0         => Busy0_sig,
+--      Busy1         => Busy1_sig,
+--      Busy2         => Busy2_sig,
+--      Busy3         => Busy3_sig,
+--      RES_p         => RES_p_sig,
+--      RES_n         => RES_n_sig,
+--      TRG_p         => TRG_p_sig,
+--      TRG_n         => TRG_n_sig,
+--      TIM_Run_p     => TIM_Run_p_sig,
+--      TIM_Run_n     => TIM_Run_n_sig,
+--      TIM_Sel       => TIM_Sel_sig,
+--      Cal_0_p       => Cal_0_p_sig,  
+--      Cal_0_n       => Cal_0_n_sig,
+--      Cal_1_p       => Cal_1_p_sig,
+--      Cal_1_n       => Cal_1_n_sig,
+--      Cal_2_p       => Cal_2_p_sig,
+--      Cal_2_n       => Cal_2_n_sig,
+--      Cal_3_p       => Cal_3_p_sig,
+--      Cal_3_n       => Cal_3_n_sig,
+--      Cal_4_p       => Cal_4_p_sig,
+--      Cal_4_n       => Cal_4_n_sig,
+--      Cal_5_p       => Cal_5_p_sig,
+--      Cal_5_n       => Cal_5_n_sig,
+--      Cal_6_p       => Cal_6_p_sig,
+--      Cal_6_n       => Cal_6_n_sig, 
+--      Cal_7_p       => Cal_7_p_sig,
+--      Cal_7_n       => Cal_7_n_sig  
     );
 
Index: firmware/FTM/clock/FTM_clk_gen.vhd
===================================================================
--- firmware/FTM/clock/FTM_clk_gen.vhd	(revision 10227)
+++ firmware/FTM/clock/FTM_clk_gen.vhd	(revision 10227)
@@ -0,0 +1,156 @@
+----------------------------------------------------------------------------------
+-- Company:        ETH Zurich, Institute for Particle Physics
+-- Engineer:       Q. Weitzel
+-- 
+-- Create Date:    February 28, 2011 
+-- Design Name: 
+-- Module Name:    FTM_clk_gen - Behavioral 
+-- Project Name: 
+-- Target Devices: 
+-- Tool versions: 
+-- Description:    interface to different DCMs and clk dividers for FMU board
+--                 add here more DCMs if needed
+--
+-- Dependencies: 
+--
+-- Revision: 
+-- Revision 0.01 - File Created
+-- Additional Comments: 
+--
+----------------------------------------------------------------------------------
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+---- Uncomment the following library declaration if instantiating
+---- any Xilinx primitives in this code.
+--library UNISIM;
+--use UNISIM.VComponents.all;
+
+entity FTM_clk_gen is
+  Port (
+    clk        : IN  STD_LOGIC;
+    rst        : IN  STD_LOGIC;
+    clk_1      : OUT STD_LOGIC;
+    clk_50     : OUT STD_LOGIC;
+    clk_250    : OUT STD_LOGIC;
+    clk_250_ps : OUT STD_LOGIC;
+    ready      : OUT STD_LOGIC
+  );
+end FTM_clk_gen;
+
+architecture Behavioral of FTM_clk_gen is
+
+  component FTM_dcm_40M_to_50M
+    port(
+      CLKIN_IN   : in  std_logic;
+      RST_IN     : in  std_logic;
+      CLKFX_OUT  : out std_logic;
+      LOCKED_OUT : out std_logic
+    );
+  end component;
+
+  component FTM_dcm_40M_to_250M
+    port(
+      CLKIN_IN     : in  std_logic;
+      RST_IN       : in  std_logic;
+      CLKFX_OUT    : out std_logic;
+      CLKFX180_OUT : out std_logic;
+      LOCKED_OUT   : out std_logic
+    );
+  end component;
+  
+  component Clock_Divider
+    port(
+      clock_in  : IN  STD_LOGIC;
+      clock_out : OUT STD_LOGIC
+    );
+  end component;
+
+  signal clk_1M_sig      : std_logic;
+  signal clk_50M_sig     : std_logic;
+  signal clk_250M_sig    : std_logic;
+  signal clk_250M_ps_sig : std_logic;
+
+  signal dcm1_locked : std_logic;
+  signal dcm2_locked : std_logic;
+  
+begin
+  
+  Inst_FTM_dcm_40M_to_50M : FTM_dcm_40M_to_50M
+    port map(
+      CLKIN_IN   => clk,
+      RST_IN     => rst,
+      CLKFX_OUT  => clk_50M_sig,
+      LOCKED_OUT => dcm1_locked
+    );
+
+  Inst_FTM_dcm_40M_to_250M : FTM_dcm_40M_to_250M
+    port map(
+      CLKIN_IN     => clk,
+      RST_IN       => rst,
+      CLKFX_OUT    => clk_250M_sig,
+      CLKFX180_OUT => clk_250M_ps_sig,
+      LOCKED_OUT   => dcm2_locked
+    );
+  
+  Inst_Clock_Divider : Clock_Divider
+    port map (
+      clock_in  => clk_50M_sig,
+      clock_out => clk_1M_sig
+    );
+
+  clk_1      <= clk_1M_sig;
+  clk_50     <= clk_50M_sig;
+  clk_250    <= clk_250M_sig;
+  clk_250_ps <= clk_250M_ps_sig;
+
+  ready <= dcm1_locked and dcm2_locked;
+
+end Behavioral;
+
+----------------------------------------------------------------------------------
+
+library IEEE;
+use IEEE.STD_LOGIC_1164.ALL;
+use IEEE.STD_LOGIC_ARITH.ALL;
+use IEEE.STD_LOGIC_UNSIGNED.ALL;
+
+library ftm_definitions;
+USE ftm_definitions.ftm_array_types.all;
+USE ftm_definitions.ftm_constants.all;
+
+entity Clock_Divider is
+  generic(
+    divider : integer := INT_CLK_FREQUENCY_1 / LOW_FREQUENCY
+  );
+  port(
+    clock_in  : in  std_logic;
+    clock_out : out std_logic := '0'
+  );
+end entity Clock_Divider;
+
+architecture RTL of Clock_Divider is
+
+begin
+    
+  process (clock_in)
+    variable Z: integer range 0 to divider - 1;
+  begin
+    if rising_edge(clock_in) then
+      if (Z < divider - 1) then
+        Z := Z + 1;
+      else
+        Z := 0;
+      end if;
+      if (Z = 0) then
+        clock_out <= '1';
+      end if;
+      if (Z = divider / 2) then
+        clock_out <= '0';
+      end if;
+    end if;
+  end process;
+
+end architecture RTL;
Index: firmware/FTM/clock/FTM_dcm_40M_to_250M.vhd
===================================================================
--- firmware/FTM/clock/FTM_dcm_40M_to_250M.vhd	(revision 10227)
+++ firmware/FTM/clock/FTM_dcm_40M_to_250M.vhd	(revision 10227)
@@ -0,0 +1,89 @@
+--------------------------------------------------------------------------------
+-- Copyright (c) 1995-2009 Xilinx, Inc.  All rights reserved.
+--------------------------------------------------------------------------------
+--   ____  ____ 
+--  /   /\/   / 
+-- /___/  \  /    Vendor: Xilinx 
+-- \   \   \/     Version : 11.5
+--  \   \         Application : xaw2vhdl
+--  /   /         Filename : FTM_dcm_40M_to_250M.vhd
+-- /___/   /\     Timestamp : 03/02/2011 11:02:39
+-- \   \  /  \ 
+--  \___\/\___\ 
+--
+--Command: xaw2vhdl-st /ihp/home01/qweitzel/FPGA/trac-ISDC.svn/firmware/FTM/clock/FTM_dcm_40M_to_250M.xaw /ihp/home01/qweitzel/FPGA/trac-ISDC.svn/firmware/FTM/clock/FTM_dcm_40M_to_250M
+--Design Name: FTM_dcm_40M_to_250M
+--Device: xc3sd3400a-4fg676
+--
+-- Module FTM_dcm_40M_to_250M
+-- Generated by Xilinx Architecture Wizard
+-- Written for synthesis tool: XST
+-- Period Jitter (unit interval) for block DCM_SP_INST = 0.20 UI
+-- Period Jitter (Peak-to-Peak) for block DCM_SP_INST = 0.79 ns
+
+library ieee;
+use ieee.std_logic_1164.ALL;
+use ieee.numeric_std.ALL;
+library UNISIM;
+use UNISIM.Vcomponents.ALL;
+
+entity FTM_dcm_40M_to_250M is
+   port ( CLKIN_IN     : in    std_logic; 
+          RST_IN       : in    std_logic; 
+          CLKFX_OUT    : out   std_logic; 
+          CLKFX180_OUT : out   std_logic; 
+          LOCKED_OUT   : out   std_logic);
+end FTM_dcm_40M_to_250M;
+
+architecture BEHAVIORAL of FTM_dcm_40M_to_250M is
+   signal CLKFX_BUF    : std_logic;
+   signal CLKFX180_BUF : std_logic;
+   signal GND_BIT      : std_logic;
+begin
+   GND_BIT <= '0';
+   CLKFX_BUFG_INST : BUFG
+      port map (I=>CLKFX_BUF,
+                O=>CLKFX_OUT);
+   
+   CLKFX180_BUFG_INST : BUFG
+      port map (I=>CLKFX180_BUF,
+                O=>CLKFX180_OUT);
+   
+   DCM_SP_INST : DCM_SP
+   generic map( CLK_FEEDBACK => "NONE",
+            CLKDV_DIVIDE => 2.0,
+            CLKFX_DIVIDE => 4,
+            CLKFX_MULTIPLY => 25,
+            CLKIN_DIVIDE_BY_2 => FALSE,
+            CLKIN_PERIOD => 25.000,
+            CLKOUT_PHASE_SHIFT => "NONE",
+            DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS",
+            DFS_FREQUENCY_MODE => "LOW",
+            DLL_FREQUENCY_MODE => "LOW",
+            DUTY_CYCLE_CORRECTION => TRUE,
+            FACTORY_JF => x"C080",
+            PHASE_SHIFT => 0,
+            STARTUP_WAIT => FALSE)
+      port map (CLKFB=>GND_BIT,
+                CLKIN=>CLKIN_IN,
+                DSSEN=>GND_BIT,
+                PSCLK=>GND_BIT,
+                PSEN=>GND_BIT,
+                PSINCDEC=>GND_BIT,
+                RST=>RST_IN,
+                CLKDV=>open,
+                CLKFX=>CLKFX_BUF,
+                CLKFX180=>CLKFX180_BUF,
+                CLK0=>open,
+                CLK2X=>open,
+                CLK2X180=>open,
+                CLK90=>open,
+                CLK180=>open,
+                CLK270=>open,
+                LOCKED=>LOCKED_OUT,
+                PSDONE=>open,
+                STATUS=>open);
+   
+end BEHAVIORAL;
+
+
Index: firmware/FTM/clock/FTM_dcm_40M_to_250M.xaw
===================================================================
--- firmware/FTM/clock/FTM_dcm_40M_to_250M.xaw	(revision 10227)
+++ firmware/FTM/clock/FTM_dcm_40M_to_250M.xaw	(revision 10227)
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.5e
+$6dx17=(aaz$dbcj00-rs`osrlf$J]IN/upbg(OTLJ$xzc!iisotewc(N]G$oaalk.DWIZbdeV>;ARz`_373I+~f81;86>!21684+1>92;?7<?!59922"nD81::7?<4244860(78990>8>>;508051<I[IC[DT>7:CQS_YHFESTOL]LAEKMCZEKC820M_YU_NLO]ZEKC@DTIUZJROCO50=FZ^PTCCBV_BNHMKYQIE_N=o5NRVX\KKJ^WMIFS^YFTBJJJBYDDB;;7L\XZ^MMH\YCL[UH<<>4ASUY[JHKQVNO^RM>109BVR\XGGFRSIJ]_BNH53=FZ^PTCCBV_EFQ[CJNXOFD\<;4ASUY[JHKQVLISHV[ESLBH44<I[]QSB@CY^KMWQYI]Do0M_YU_NLO]ZVJKM;>7L\XZ^MMH\YUMZO_SAAHIB3;?DTPRVEE@TQYAMKG[A@TWDEOIk5NW[]@HNDRN]S[I<?<;@UY[FJLWF__\XZPTXRFg>GPRVLGCZZVPD:8ER\XXHX_h6OXZ^QZJQNSGFF?7OA[H59AQCA33JF@<;5LLJ3;43=DDB8<<85LLJ0[<>EKC;R:4=;4CMI:40=DDBN]o6MCKET\@LPNLL?0OAEIB49@HN@_02IGGKV>81a8GIMAP82;SO[I139@HN@_91:TNXHH_HLPPf=DDBLS=5>POTV:?FJLNQUIYKh4CMIE\ZDRNNUBB^Zl;BNHB]YCA_COIh5LLJD[[HSK\@ZGU45LLJD[[JSS=2IGGD@>1:AOOLHXL@\BHHQMY^0;?FJLAGUBBn5LLJKM[UCUAFNn7NBDIO]PVFYSQYO:>6MCKNWW[UNF[LUXDDH[c:AOOZ@BMMHJOF74CNONMQRBL>1H^HO[EE48@FKX[Yh0HNCPSQ]JJVRc3MOXGHYPAEHVWQ753MLXSK\JQTGMG\YJGMO:>6JCL^DQATSBFJSTABJJ5:FPW@H6=2N^XTQLYBNF[FIUZLI_EB@8;E]UEISBi2LJOYA]Y^HE1>@FDZO27KLPSNWQG@?<N@DTYCG[S99EKPRX[]Xj7KAZT^WMMQUf3OE^XRXNLTG1?C^63@20ECZJROCO54=MA]^N^RGAPTV\P\VBk2@BXYK]_QI1TNe<B@^_I_QYAMWF2>JHKBOOm6B@CJGG[JSS;2FD[>5BH[58IZPFD\O<7CK[WNPH0>HHFL;0C55@FEFQGUCe3YBJ_HQ\HHDW=>VNFAKXNX]n;QKMMVAILLN37]GAWHFWL==WZ@G_U]K>0:RQKUYWAGCXMNZFVD78TVEKC?1[_IAAE59SW@H?3YYBBNJJC29QWQ0<ZZ^TECl4SHEF\QCUFHF=7^GAGMG`?VRFZ]_[SZOFT79PPDRR[880_T][EL]P]KEOZFDDY^=4TNR7?QTRM11^_HQMUGE:?PUBWK_MK^;4VHGT5g=_I^U]I_]FOO3g?]OKAGR&TIL/0/3#WQSE(9$:,L]LIH48\adXAm;;7Ujb_LcikwPbzzcdb<>4Xeo\Ilhhz_oydaa5:Y3>5[23R:1;P:4asuy7>bdek1}i}foo"2*52<~ang=<5wc2qg7167i$>mk;993:zppxFGx::0LMv?:G81>4}T;m0<579m:011`gbb28=?;iua7482?k112<1/;9483:P7f<013=i6<==dcff>4>00l1o;44?:082V5c2>31;o4>33fa``<6?==o7{Z81;295?7=?rY8h796:6`9564cjmo1=::8d:`5`?6=8391;v*k:6c8 4b=?j1/=h48d:&2b?1b3-=9685m3g83>45=83:p(;>53d9'a?4?3-l1:45+10816>"6:3897)?<:318 42=:;1/=84:b:&22?0>3-;<695+1986=>"613><7)?n:328 6d==01/>448;%11>g=#;:037)=9:558 6>=12.857:i;%1b>0?<,=:1:n5+4487?!262<?0(9<5549'01<1m2.?:784$5:91<=#<00>:6*;b;75?!2d2h1/9=4;a:&63?d<,<i1=6*9a;64?!0a2>:0(<>5c:&2g?2c3-?96?5+5080?l52290/9k487:&55?0b32c9m7>5$4d932=#=l0=i6*91;4f?>o1>3:1(8h5769'24<1m21b:94?:%7e>21<,<o1:h54i7794?"2n3=<7);j:7g8?l05290/9k487:&6a?0b32c??7>5$4d932=#=l0=i65`2383>!3a2>=07b<8:18'1c<0?21d>>4?:%7e>21<3f8?6=4+5g843>=h:10;6);i:658?j42290/9k487:9l63<72-?m6:94;n0a>5<#=o0<;6*91;4f?!7e2;;07b<l:18'1c<0?2.==78j;%3a>77<3f<i6=4+5g84<>"2l3<n76a:3;29 0`=?>1/:<49e:9l26<72-?m6:94;|`05?6=:3:1<v*90;02?l2b290/9k487:&55?0b32e>m7>5$4d932=#>80=i65rb3g94?4=83:p(;>5209j0`<72-?m6:94$7392`=<g<k1<7*:f;54?!062?o07p}<7;295~;4n39>7)87:5g8yv00290:w0=i:748 3>=<l1v>>50;0x96`=:k16?<4;e:p6a<72;q6?k4=c:?1a?2b3ty>87>51z?0b?343-<368o4}r17>5<6s49:68o4$7:91d=z{;l1<7?t=3g91d=#>10>m6srn3094?7|ug886=4>{|l10?6=9rwe>84?:0y~j70=83;pqc<8:182xh503:1=vsr}|BCG~572l=3mom75|BCF~6zHIZpqMN
Index: firmware/FTM/clock/FTM_dcm_40M_to_250M_arwz.ucf
===================================================================
--- firmware/FTM/clock/FTM_dcm_40M_to_250M_arwz.ucf	(revision 10227)
+++ firmware/FTM/clock/FTM_dcm_40M_to_250M_arwz.ucf	(revision 10227)
@@ -0,0 +1,17 @@
+# Generated by Xilinx Architecture Wizard
+# --- UCF Template Only ---
+# Cut and paste these attributes into the project's UCF file, if desired
+INST DCM_SP_INST CLK_FEEDBACK = NONE;
+INST DCM_SP_INST CLKDV_DIVIDE = 2.0;
+INST DCM_SP_INST CLKFX_DIVIDE = 4;
+INST DCM_SP_INST CLKFX_MULTIPLY = 25;
+INST DCM_SP_INST CLKIN_DIVIDE_BY_2 = FALSE;
+INST DCM_SP_INST CLKIN_PERIOD = 25.000;
+INST DCM_SP_INST CLKOUT_PHASE_SHIFT = NONE;
+INST DCM_SP_INST DESKEW_ADJUST = SYSTEM_SYNCHRONOUS;
+INST DCM_SP_INST DFS_FREQUENCY_MODE = LOW;
+INST DCM_SP_INST DLL_FREQUENCY_MODE = LOW;
+INST DCM_SP_INST DUTY_CYCLE_CORRECTION = TRUE;
+INST DCM_SP_INST FACTORY_JF = C080;
+INST DCM_SP_INST PHASE_SHIFT = 0;
+INST DCM_SP_INST STARTUP_WAIT = FALSE;
Index: firmware/FTM/clock/FTM_dcm_40M_to_50M.vhd
===================================================================
--- firmware/FTM/clock/FTM_dcm_40M_to_50M.vhd	(revision 10227)
+++ firmware/FTM/clock/FTM_dcm_40M_to_50M.vhd	(revision 10227)
@@ -0,0 +1,83 @@
+--------------------------------------------------------------------------------
+-- Copyright (c) 1995-2009 Xilinx, Inc.  All rights reserved.
+--------------------------------------------------------------------------------
+--   ____  ____ 
+--  /   /\/   / 
+-- /___/  \  /    Vendor: Xilinx 
+-- \   \   \/     Version : 11.5
+--  \   \         Application : xaw2vhdl
+--  /   /         Filename : FTM_dcm_40M_to_50M.vhd
+-- /___/   /\     Timestamp : 03/01/2011 18:26:24
+-- \   \  /  \ 
+--  \___\/\___\ 
+--
+--Command: xaw2vhdl-st /ihp/home01/qweitzel/FPGA/trac-ISDC.svn/firmware/FTM/clock/FTM_dcm_40M_to_50M.xaw /ihp/home01/qweitzel/FPGA/trac-ISDC.svn/firmware/FTM/clock/FTM_dcm_40M_to_50M
+--Design Name: FTM_dcm_40M_to_50M
+--Device: xc3sd3400a-4fg676
+--
+-- Module FTM_dcm_40M_to_50M
+-- Generated by Xilinx Architecture Wizard
+-- Written for synthesis tool: XST
+-- Period Jitter (unit interval) for block DCM_SP_INST = 0.04 UI
+-- Period Jitter (Peak-to-Peak) for block DCM_SP_INST = 0.86 ns
+
+library ieee;
+use ieee.std_logic_1164.ALL;
+use ieee.numeric_std.ALL;
+library UNISIM;
+use UNISIM.Vcomponents.ALL;
+
+entity FTM_dcm_40M_to_50M is
+   port ( CLKIN_IN   : in    std_logic; 
+          RST_IN     : in    std_logic; 
+          CLKFX_OUT  : out   std_logic; 
+          LOCKED_OUT : out   std_logic);
+end FTM_dcm_40M_to_50M;
+
+architecture BEHAVIORAL of FTM_dcm_40M_to_50M is
+   signal CLKFX_BUF  : std_logic;
+   signal GND_BIT    : std_logic;
+begin
+   GND_BIT <= '0';
+   CLKFX_BUFG_INST : BUFG
+      port map (I=>CLKFX_BUF,
+                O=>CLKFX_OUT);
+   
+   DCM_SP_INST : DCM_SP
+   generic map( CLK_FEEDBACK => "NONE",
+            CLKDV_DIVIDE => 2.0,
+            CLKFX_DIVIDE => 4,
+            CLKFX_MULTIPLY => 5,
+            CLKIN_DIVIDE_BY_2 => FALSE,
+            CLKIN_PERIOD => 25.000,
+            CLKOUT_PHASE_SHIFT => "NONE",
+            DESKEW_ADJUST => "SYSTEM_SYNCHRONOUS",
+            DFS_FREQUENCY_MODE => "LOW",
+            DLL_FREQUENCY_MODE => "LOW",
+            DUTY_CYCLE_CORRECTION => TRUE,
+            FACTORY_JF => x"C080",
+            PHASE_SHIFT => 0,
+            STARTUP_WAIT => FALSE)
+      port map (CLKFB=>GND_BIT,
+                CLKIN=>CLKIN_IN,
+                DSSEN=>GND_BIT,
+                PSCLK=>GND_BIT,
+                PSEN=>GND_BIT,
+                PSINCDEC=>GND_BIT,
+                RST=>RST_IN,
+                CLKDV=>open,
+                CLKFX=>CLKFX_BUF,
+                CLKFX180=>open,
+                CLK0=>open,
+                CLK2X=>open,
+                CLK2X180=>open,
+                CLK90=>open,
+                CLK180=>open,
+                CLK270=>open,
+                LOCKED=>LOCKED_OUT,
+                PSDONE=>open,
+                STATUS=>open);
+   
+end BEHAVIORAL;
+
+
Index: firmware/FTM/clock/FTM_dcm_40M_to_50M.xaw
===================================================================
--- firmware/FTM/clock/FTM_dcm_40M_to_50M.xaw	(revision 10227)
+++ firmware/FTM/clock/FTM_dcm_40M_to_50M.xaw	(revision 10227)
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.5e
+$6ax14=(aaz$dbcj00-rs`osrlf$J]IN/upbg(OTLJ$xzc!iisotewc(N]G$oaalk.DWIZbdeV>;ARz`_42N*}gp92:?7= ?4593*=0638>0=< :8:35#mE709;0>;5=5/2344=3:2>;=6;=;424?DTD@^CQ=:5NRVX\KKJ^WJKXOLJFNF]@HN7?3HX\VRAALX]@HNOIWLR_I_@NL078EWQ]WFDGURMCKHL\RDJRM8h0M_YU_NLO]ZBDEVY\EYMGIOE\GIM682KY[WQ@NM[\@ATXK9;;7L\XZ^MMH\YCL[UH=<?4ASUY[JHKQVNO^RMCK048EWQ]WFDGURJKR^DOMU@KGY;>7L\XZ^MMH\YAJVOSXH\AAM31?DTPRVEE@TQFNRV\JPKb3HX\VRAALX]SIFB6=2KY[WQ@NM[\V@UB\VFDKDM>8:CQS_YHFESTZLBFD^FEWZKHLLl0MZTPCMIAQCR^XL;:?6OXZ^AOOZIR\Y__SYW_Eb9BS_YADF]_U]K7;@UY[UGU\m1J[WQ\YOVKPJIK<2HDXE:4BTDD0>EKC9<0OAE>8148GIM5?9?0OAE=X99@HN4_91:>7NBD9178GIMC^j1H@FJY_EKUMAC23JF@JO;4CMIE\==DDBLS=5>6;BNHB]YE]Ol0OAEIX^@VBBYNFZ^h7NBDFY]GMSOCMl1H@FHW_LWOPLVKQ01H@FHW_NWW1>EKC@D:=6MCKHL\@LPNLLUIUR<7;BNHMKYNFj1H@FGA_QGQMJBb3JF@ECQ\RB]W]UC6:2IGGB[[_QJBW@YT@@L_o6MCK^DFAADFKB30OBCBIUVF@2=DZLK_II84DBO\WUd<LJGT_]QFNRVg?ACTCL]TMIDZSU31?A@TWOXN]XKACX]NKAC6:2NG@RH]EPWFJF_XEFNN96J\SDL21>BR\PUHUNBJ_BMQV@ESAFD<7IQYAMWFe>@FK]EYURDI5:DBHVC>3OHT_B[]CD;8BLHX]GC__55IOTV\WQTf3OE^XR[AIUQb?CIR\V\J@XK=;GZ2?L><AG^N^COC109IMQRBZVCE\XZPTXRFg>LN\]OYS]E=PJa8NLRSM[U]MA[J6:NLGNCCi2FDOFKK_NWW7>JH_:1FDW94M^TBHPC03GO_[B\D4:LLJ@7<G11DJIJ]CQGa?UNF[LUXDDH[9:RJJMGTJ\Yj7]GAIREM@@B?3YCE[DJ[H99SVLKSQYO:<6^]OQ]SMKOTIJ^BZH;4PRAOO3=W[MEEI95_SDL;?UUNFJNNO>5]SU48VVRXAGh0_DIJXUGQJDJ13ZCEKAKl;RVBVQSWW^KBX;5\T@VVW44<[PY_I@Q\YOAKVJHH]Z90XB^;;UPVA==R[LUIYKI6;TQF[GSAOZ?0ZDKX1c9[ERYQM[YBCC?k;YKOMK^*PMH+<#?/SUWA$5(6(HYHED84Xe`\Ma773QnfS@oeosTfvvohf8:0TicPMhllvScu{`ee96U?:1_6?^6=?T>0myu3:f`ig=qm{ybcc.>.168rmbk981so>}k3523e(2ao?==?6v|t|BCt7?<HIr;6K4=:0yP7d<0>3=36<==dcfg>7g6m0qe;?4>;o50>0=#?80<<6s\38842?1?2899hojk:3c115=c??0;6<4>{R1b>20=?10:??jmde81e4c>3^=i7>51;391~U4i3==6:65120gfab=:h;n56l9a;294?4==r.o6:94$0f93<=#9l0<m6*>f;5a?!0a2<1i?n4?:0194?6|,<n1?o5+e;0;?!`=>?1/=<4=2:&26?453-;86?=4$06967=#9<0>46*>6;45?!702=1/=54:6:&2=?233-;j6?>4$2:913=#:00<7)<i:89'75<e3-9869:4$279<>"4>3>h7)=8:448 6b=>01/8?4;;%1f>04<,:l19?5+4085f>"3;3<0(9;5579'03<2;2.?47;<;%6:>f=#<m0?;6*:4;;8 0?=92.=;7:;;%4`>3b<,8:1m6*>c;6b?!2a2;1/8h4<;h11>5<#=j0<86*:e;4a?>o5i3:1(8m5759'1g<1j2.>i78m;:k57?6=,<i1;95+5d85f>=n>80;6);l:668 0d=>k10e;<50;&6g?133-?i6;l4;h7e>5<#=j0<86*:b;4a?>o383:1(8m5759'1g<1j21d>?4?:%7`>22<3f8<6=4+5b840>=h::0;6);l:668?j43290/9n484:9l6=<72-?h6::4;n06>5<#=j0<865`2783>!3d2>>07b<m:18'1f<0<2.>i78m;%3a>77<3f8h6=4+5b840>=h>10;6);l:678 0g=>k10c8>50;&6g?133-?n6;l4;n43>5<#=j0<865rb3g94?4=83:p(8j5209j0g<72-?h6::4$4g92g=<g<=1<7*:c;57?!3b2?h07p}<4;295~;4k3997)8::5`8yv03290:w0=l:718 33=<k1v?j50;0x96e=:k16>h4;b:p14<728q6?n4:0:&51?303ty8=7>51z?1a?303-<>6894}|l2b?6=9rwe>=4?:0y~j77=83;pqc<=:182xh5;3:1=vsr}|BCG~4>2k9n;llk7|BCF~6zHIZpqMN
Index: firmware/FTM/clock/FTM_dcm_40M_to_50M_arwz.ucf
===================================================================
--- firmware/FTM/clock/FTM_dcm_40M_to_50M_arwz.ucf	(revision 10227)
+++ firmware/FTM/clock/FTM_dcm_40M_to_50M_arwz.ucf	(revision 10227)
@@ -0,0 +1,17 @@
+# Generated by Xilinx Architecture Wizard
+# --- UCF Template Only ---
+# Cut and paste these attributes into the project's UCF file, if desired
+INST DCM_SP_INST CLK_FEEDBACK = NONE;
+INST DCM_SP_INST CLKDV_DIVIDE = 2.0;
+INST DCM_SP_INST CLKFX_DIVIDE = 4;
+INST DCM_SP_INST CLKFX_MULTIPLY = 5;
+INST DCM_SP_INST CLKIN_DIVIDE_BY_2 = FALSE;
+INST DCM_SP_INST CLKIN_PERIOD = 25.000;
+INST DCM_SP_INST CLKOUT_PHASE_SHIFT = NONE;
+INST DCM_SP_INST DESKEW_ADJUST = SYSTEM_SYNCHRONOUS;
+INST DCM_SP_INST DFS_FREQUENCY_MODE = LOW;
+INST DCM_SP_INST DLL_FREQUENCY_MODE = LOW;
+INST DCM_SP_INST DUTY_CYCLE_CORRECTION = TRUE;
+INST DCM_SP_INST FACTORY_JF = C080;
+INST DCM_SP_INST PHASE_SHIFT = 0;
+INST DCM_SP_INST STARTUP_WAIT = FALSE;
Index: firmware/FTM/clock/xaw2vhdl.log
===================================================================
--- firmware/FTM/clock/xaw2vhdl.log	(revision 10227)
+++ firmware/FTM/clock/xaw2vhdl.log	(revision 10227)
@@ -0,0 +1,1 @@
+xaw2vhdl: Completed successfully
Index: firmware/FTM/ethernet/CRAM_4096_16b.ngc
===================================================================
--- firmware/FTM/ethernet/CRAM_4096_16b.ngc	(revision 10227)
+++ firmware/FTM/ethernet/CRAM_4096_16b.ngc	(revision 10227)
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.4e
+$3244g<,[o}e~g`n;"2*413&;$>"9 > %;8456789:;<9>40123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?3:3-442<9;0BB][[:`fgvd.693:"=95>2;KMTPR=imnyn%?>:1+20>732@D[YY4NDEPB,45=8 ;?7<:5IORVP?GCL[H#=>4?)01853<NFY__6igaa)36>5/6;2;=6D@_UU8gmkd/9<0;%<;4178LQQVR\3ndyyo'1483-43<9?0DYY^ZT;flqqd/9<0;%<>41;KMTPR=lk#<7>&1192>LHW]]0|io&?:1+26>552@D[YY4KI@*05?6.9;18>7GAPTV9@LD/;80;%<=4338LQQVR\3NDM%=>:1+27>552F__\XZ5DN@+74<7!m18:>?age7<1+3981?6D@_UU8GMUG/;3:"=<5;:HLSQQ<CAYH#?7>&1197>LHW]]0\IL&<:1+24>2=AGZ^X7YJB)194,753=0DYY^ZT;FLTD.429#:>6:5OTVSQQ<CGYH#?7>&8:CG@WG/8 20MIJ]A)3*=>GCL[K#=='6;@FGVD.69 30MIJ]A)31-<=FLMXJ$<=&b:CG@WG/9:0;%55NDEPB,7/?3HNO^L&<)99B@ATF =#37LJKR@*6-==FLMXJ$;'7;@FGVD.0!11JHI\N(9+;?DBCZH"2%55NDEPA,5/?3HNO^O&>)89B@ATE 8:"56OKDS@+54/>3HNO^O&>2(;8EABUJ!;8%o5NDEPA,45=8 20MIJ]B)0*<>GCL[H#?$64AEFQF-2.02KOH_L'5(:8EABUJ!<"46OKDS@+3,><IMNYN%6&8:CG@WD/1 90MAB<;CW1<>DR[VCEJB:m;B8,@JMRELt:#fof/MMHEICy9&^na}!losgdakYli`%hckheo-wiu)Xkn%H^LCP41;5[40e&gmd=?5LHDAH[IODMGYNSYW_E59@HNG33JF@N45LOLOJPQCC9=1HC_KPGDLFVDRNGGUBBKAk;BPBIZ271?U::o<7;BPBIZ271?U::o"mlj]nahY`mgU}>R6#NNLF(KIIM:=>7N\NM^63=3Y6>k&i`fQbel]dakYq:V2'wnQgar]qabebj4:'oRfns^pfcfcf59&hS`kb_u{sa87+kVzye`Q{yqg>5)eX{`dbxlQyam?3(fYumhnT{dj{h^`>53*dW{ojhRyfduj\e871$jUoe~omld]tewhXja|Tobbc=1.`[lhn|Vlb`hQaalg>jjYdglUmeakPlncgaa*dW~xbxhQboeg\f8TBIMUME_][,b]tvlrbWdeoiRo2RDCG[COU[]&hS`{w_qksaioimVymjk|=1.`[mgtWdofSb{{ptv\v`atWk7; nQco`f\mkosWocgi0>#c^jbwZkbeVe~x}{{_sgdwZg:8%iT{g{e^fftqnXj4>;5;"l_vpjp`Ycmy~cSl3;084/gZnf{Vyx~o3?,b]kevYj}qUdyy~zt^pfcvYe59&hSeo|_rqqe86+kVbjRczx^mvpussW{olRo20-a\eabuiV}bhyf213.`[dbczkU|eizg=00/gZbbnhgxRjnt`?3(fYr{lUnon3?,b]bhbiua}bf1<"l_ekpegjbW~kybRlgv^pbjbc:8%iT{g{e^uj`qnXj4;= nQxrhvf[roc|aUj1<8#c^pfeaYcmy~cSo3;084/gZtbimUoi}zg_`?74<0+kVhrxhQ|i{g>=)eX{`gTobbcirkljZeomja6MAB#c^alihiiWjf`1="l_tqf[wgjj8<i{h|Prrv\fmp:8%iT{hoPwhfwl87+kVbjRkab<2/gZnf{Voem0>#c^uffZqnl}b6=!mPshljpgYqie7; nabpnlfjqYiido6O_OB_52:2Z71j%iTy~kPbxvf[rce59&hSx}j_c{waZqbi4:'oR{|e^ffbdsk|Vnjxl3>,|07?FTFEV>;5;Q>6c]ahnYjmdUlicQy2^:\|vrX9>1H^HO[EEa8@DRFW^COXEQNc:FBPDYPAM^CSO84DHC+4,0<L@K#=$94DHC+55/03MCJ$<?&7:FJE-75!>1OEL&>3(58@LG/9=#<7IGN(07*3>BNI!;=%:5KI@*23,1<L@K#=5'8;EKB,4?.>2NBM%<&7:FJE-47!>1OEL&=1(58@LG/:;#<7IGN(31*3>BNI!8?%:5KI@*11,1<L@K#>;'8;EKB,71.?2NBM%<7)69GMD.51 <0HDO'3(58@LG/;9#<7IGN(23*=>BNI!9:6='9;EKB,1/13MCJ$8'9;EKB,3/13MCJ$:'9;EKB,=/13MCJ$4'9;EKA,5/13MCI$<'8;EKA,46.?2NBN%?>)69GMG.6: =0HDL'12+4?AOE 8>";6JFB)36-2=CAK"::$94DH@+52/03MCI$<6&7:FJF-7>!?1OEO&=)69GMG.58 =0HDL'20+4?AOE ;8";6JFB)00-2=CAK"98$94DH@+60/03MCI$?8&7:FJF-40!>1OEO&=8(58@LD/:0#=7IGM(2+4?AOE ::";6JFB)12-<=CAK"8=7>&6:FJF-2.>2NBN%;&6:FJF-0.>2NBN%9&6:FJF->.>2NBN%7&7:FJTD.7!>1OE]O'1(58@LVF ;#<7IG_A)1*=>BNXH"86='8;EKSF-6.?2NB\O&>)69GMUD/: =0HD^M(2+:?AOWJ!91<$84DNC+4,0<LFK#=$94DNC+55/03MEJ$<?&7:FLE-75!>1OCL&>3(58@JG/9=#<7IAN(07*3>BHI!;=%:5KO@*23,1<LFK#=5'8;EMB,4?.>2NDM%<&7:FLE-47!>1OCL&=1(58@JG/:;#<7IAN(31*3>BHI!8?%:5KO@*11,1<LFK#>;'8;EMB,71.?2NDM%<7)69GKD.51 <0HBO'3(58@JG/;9#<7IAN(23*=>BHI!9:6='9;EMB,1/13MEJ$8'9;EMB,3/13MEJ$:'9;EMB,=/13MEJ$4'9;EMA,5/13MEI$<'8;EMA,46.?2NDN%?>)69GKG.6: =0HBL'12+4?AIE 8>";6J@B)36-2=CGK"::$94DN@+52/03MEI$<6&7:FLF-7>!?1OCO&=)69GKG.58 =0HBL'20+4?AIE ;8";6J@B)00-2=CGK"98$94DN@+60/03MEI$?8&7:FLF-40!>1OCO&=8(58@JD/:0#=7IAM(2+4?AIE ::";6J@B)12-<=CGK"8=7>&6:FLF-2.>2NDN%;&6:FLF-0.>2NDN%9&6:FLF->.>2NDN%7&7:FLTD.7!>1OC]O'1(58@JVF ;#<7IA_A)1*=>BHXH"86='8;EMSF-6.?2ND\O&>)69GKUD/: =0HB^M(2+:?AIWJ!91<$=4EOC0?@HE92M87J@K8:KMMQVX8920ECG[P^22<>OIA]ZT<?64IOKWTZ6402CEEY^P05:8MKOSXV:>46GAIUR\43><AGC_\R>87:KMMQY78>1BBDZP0058MKOSW98<7D@FT^203>OIA]U;8:5FNHV\401<AGC_S=88;HLJPZ60?2CEEYQ?869JJLRX80=0ECG[_1C4?LHN\V:I;6GAIU]3G2=NF@^T<I94IOKW[5C03@DBXR>I7:KMMQY68>1BBDZP1058MKOSW88<7D@FT^303>OIA]U:8:5FNHV\501<AGC_S<88;HLJPZ70?2CEEYQ>869JJLRX90=0ECG[_0C4?LHN\V;I;6GAIU]2G2=NF@^T=I94IOKW[4C03@DBXR?I7:KMMQY58>1BBDZP2058MKOSW;8<7D@FT^003>OIA]U98:5FNHV\601<AGC_S?88;HLJPZ40?2CEEYQ=869JJLRX:0=0ECG[_3C4?LHN\V8I;6GAIU]1G2=NF@^T>I94IOKW[7C03@DBXR<I7:KMMQY48>1BBDZP3058MKOSW:8<7D@FT^103>OIA]U88:5FNHV\701<AGC_S>88;HLJPZ50?2CEEYQ<869JJLRX;0=0ECG[_2C4?LHN\V9I;6GAIU]0G2=NF@^T?I94IOKW[6C03@DBXR=I6:KMMQYF>2CEEYQM6:NLEACC?2FDKDMNLb9Neoiu^lxxeb`l;LkmkwPbzzcdb?5A129M555<F8;87C?=3:L276=I9=90B<;<;O357>H6?:1E=5=4N0;1?K443G8;?6@=129M675<F;987C<;3:L116=I:?90B?9<;O0;7>H51;1E?>5A3118J6553G>97C;<;O726>H1;2D=4>5A6808J25<F>:87C9>3:L466=I?:90B::<;O567>H0>:1E;:=4N6:0?K1>:2D3?6@7429M<05<F1<87C683:L;<6=I0080B4=4N820?K?6;2D2>>5A9218J<243G3>?6@6629M=25<F0287C767:LFPRIUC81[86^NRUc8TLHXJ\YBHUl4PHL\FPUIIDO27_OBB04AS@g<ZLKOSKG]SU30?VOJWJEG@D]FOO]@L@EL>2YDY_MJ7:QQRDJXI>1X^[OC_C68WVTF<2YX^O:4TXRF02=R8&hggRcjm^efj`tf|fx$zlbfd/appw)uidfdc}U?]/pbi+t({:kTecg{.scn+avuid$ym`:8;T2,fimXelgTkh`jr`vlv*pfd`n%o~z}/scnhjiwS8W%~lc!r.q0eZoia}$ym`!kpscn*wgj<>1^<"lck^ofiZabflxjxb| v`nj`+et|{%ym`b`oqY1Y+tfe'x$>oPiokw*wgj'mzym` }al64?P6(jeaTahcPgdlfvdrhz&|j`dj!crvq+wgjdfe{W>S!r`o-v*u4iVceey }al-gtwgj&{kfm6[\ES]BHLGTk2_XI_QYIRKAH@5<^JI27[GJW^VZT@0<_LK#<$84WDC+5,0<_LK#>$84WDC+7,><_LK#?7>&6:UFF-6.>2]NN%?&6:UFF-4.>2]NN%=&8:UFF-5=8 i0[_G[E^OL@@YFk2]YEYKPMNFF[G7c3QCGECV"XE@#4+7'[]_I,= > @Q@ML0<PZ^GEO94XRV\CKB03QY_S[MLb:Z\GJTBW@DMC;5Wdc]J`c=_laU[~dcYesqjkk773QnfS@oeosTfvvohf8:0TicPMhllvScu{`ee46okdsc+4,><imnym%?&9:cg`wg/99#27ljkr`*25,d<imnym%?>:1+;?dbczh"9%55ndepb,6/?3hno~l&;)99b`atf <#37ljkr`*5-==flmxj$:'7;`fgvd.?!11jhi|n(8+;?dbczk";%55ndepa,4/>3hno~o&>0(;8eabuj!;:%o5ndepa,47=8 20mij}b)0*<>gcl{h#?$64aefqf-2.02kohl'5(:8eabuj!<"46okds`+3,><imnyn%6&8:cg`wd/1 987obd_lgn[bciW8T4!.Wimkm|%EHZL*Lick}aumq$46)9':8Sd~<4:aood2<keai;6jmiugqv2=cagk#<$94dhlb,4/?3mcem%??)99gmkg/98#37igaa)31-==cagk#=>'7;ekme-73!11oeco'14+b?aoii!;>6='8;ekme-4.?2nbbl&<)69gmkg/< =0hd`n(4+4?aoii!<";6jfn`*4-2=cagk#4$94dhlb,</03mcen%>&7:fjjg.6!11oecl'11+;?aoij!;:%55kio`+57/?3mcen%?<)99gmkd/9=#37igab)36-d=cagh#=84?)69gmkd/: =0hd`m(2+4?aoij!>";6jfnc*6-2=cagh#:$94dhla,2/03mcen%6&7:fjjg.>!11ocxzn(1+;?air|h":%45kotvb,46.12ndyyo'10+:?air|h":>$74dnwwe-74!01ocxzn(06*=>bh}}k#=8'm;emvpd.6=3:"46j`uuc+6,><lfm%=&8:flqqg/< 20hb{{a)7*<>bh}}k#:$64dnwwe-1.02ndyyo'8(:8`jssi!3"46j`uu`+4,><lfn%?&9:flqqd/99#27iaztc*25,?<lfn%?=)89gkpre 89"56j`uu`+51/>3me~xo&>5(`8`jssj!;>6='7;emvpg.5!11ocxzm(2+;?air|k"?%55kotva,0/?3me~xo&9)99gkpre >#37iaztc*;-==cg|~i$4'7;dfjb7h`l:1nbl=4eo`;?kadj|cgh;5}efafe3=umninn:5|bhvfvw2<{zxj86}|rc48s`g/8 20{ho'0;2*2>qbj!:"46yjb)294,{GHy>>86NOx2c9B?2=9rY?87?ia;19564cj1:1=o;>dzl2=3<63g;2;7:4$0;7>4>a3tY8i7?ia;19564cj1:1=o;>d:Q26a<6nm0;6<==dc:3>4d29m1X?h4>fe83>455lk2;6<l:1d9g05<7280:w^:;:0db>6<6;;ni4=4>b43g?sR6?<0;6<4>:2fxW12=9ok1?7?<2e`;4?7e=8n0(<6=:00f?S7>=38py<<i:09v566=82w/=;h5139a05<72:h1?7=m{I3;4>\413?po7:55;`9<?{#9>k18=5+18195g4<a;:86=4+1639652<f8=;6=54i0;a>5<#9>;1=4m4n053>5=<a83j6=4+16395<e<f8=;6<54i0c7>5<#9>;1=4m4n053>7=<a8k86=4+16395<e<f8=;6>54i0c1>5<#9>;1=4m4n053>1=<a8k:6=4+16395<e<f8=;6854i0c3>5<#9>;1=4m4n053>3=<a83m6=4+16395<e<f8=;6:54i0;f>5<#9>;1=4m4n053>==<a83o6=4+16395<e<f8=;6454i0;:>5<#9>;1=4m4n053>d=<a8336=4+16395<e<f8=;6o54i0c;>5<#9>;1=l74n053>5=<a8k<6=4+16395d?<f8=;6<54i0`2>5<#9>;1=l74n053>7=<a8h;6=4+16395d?<f8=;6>54i0ce>5<#9>;1=l74n053>1=<a8kn6=4+16395d?<f8=;6854i0cg>5<#9>;1=l74n053>3=<a8kh6=4+16395d?<f8=;6:54i0ca>5<#9>;1=l74n053>==<a8kj6=4+16395d?<f8=;6454i0c5>5<#9>;1=l74n053>d=<a8k>6=4+16395d?<f8=;6o54o0d3>5<#9>;1=k?4n053>5=<g8om6=4+16395c7<f8=;6<54o0gf>5<#9>;1=k?4n053>7=<g8oo6=4+16395c7<f8=;6>54o0g`>5<#9>;1=k?4n053>1=<g8oi6=4+16395c7<f8=;6854o0d:>5<#9>;1=k?4n053>3=<g8l36=4+16395c7<f8=;6:54o0d4>5<#9>;1=k?4n053>==<g8l=6=4+16395c7<f8=;6454o0d6>5<#9>;1=k?4n053>d=<g8l?6=4+16395c7<f8=;6o54o0d0>5<#9>;1=k?4n053>f=<g8l96=4+16395c7<f8=;6i54o0gb>5<#9>;1=k?4n053>`=<g8o26=4+16395c7<f8=;6k54i0`0>5<<a8h?6=44i0`g>5<#9>;1=ok4n053>5=<a8hh6=4+16395gc<f8=;6<54i0`a>5<#9>;1=ok4n053>7=<a8hj6=4+16395gc<f8=;6>54i0`:>5<#9>;1=ok4n053>1=<a8h36=4+16395gc<f8=;6854i0a5>5<#9>;1=ok4n053>3=<a8i>6=4+16395gc<f8=;6:54i0a7>5<#9>;1=ok4n053>==<a8i86=4+16395gc<f8=;6454i0a1>5<#9>;1=ok4n053>d=<a8i:6=4+16395gc<f8=;6o54i0a3>5<#9>;1=ok4n053>f=<a8hm6=4+16395gc<f8=;6i54i0`4>5<#9>;1=ok4n053>`=<a8h=6=4+16395gc<f8=;6k54b0:2>5<6290;wE?70:&23d<6081d=;k50;9~f`4=83;1<7>tH0:3?!70i3o97bk>:188yg5?290=87853eyK5=6<R:31==ul:e87>0<f2k03644n:c8`>a<32<03644r$05b>15<,:h18<5+3g876>o6nk0;66g>fb83>>o5880;66g=0383>>o6nl0;66g>fg83>>o58:0;6)?81;030>h6?90;76g=0483>!70938;:6`>7183?>o61k0;6)?81;3:g>h6?90;76g>9`83>!7093;2o6`>7182?>o6i=0;6)?81;3:g>h6?90976g>a283>!7093;2o6`>7180?>o6i;0;6)?81;3:g>h6?90?76g>a083>!7093;2o6`>7186?>o6i90;6)?81;3:g>h6?90=76g>9g83>!7093;2o6`>7184?>o61l0;6)?81;3:g>h6?90376g>9e83>!7093;2o6`>718:?>o6100;6)?81;3:g>h6?90j76g>9983>!7093;2o6`>718a?>o6i10;6)?81;3b=>h6?90;76g>a683>!7093;j56`>7182?>o6j80;6)?81;3b=>h6?90976g>b183>!7093;j56`>7180?>o6io0;6)?81;3b=>h6?90?76g>ad83>!7093;j56`>7186?>o6im0;6)?81;3b=>h6?90=76g>ab83>!7093;j56`>7184?>o6ik0;6)?81;3b=>h6?90376g>a`83>!7093;j56`>718:?>o6i?0;6)?81;3b=>h6?90j76g>a483>!7093;j56`>718a?>i5890;66a>dg83>!7093;n<6`>7183?>i6ll0;6)?81;3f4>h6?90:76a>de83>!7093;n<6`>7181?>i6lj0;6)?81;3f4>h6?90876a>dc83>!7093;n<6`>7187?>i6lh0;6)?81;3f4>h6?90>76a>e983>!7093;n<6`>7185?>i6m>0;6)?81;3f4>h6?90<76a>e783>!7093;n<6`>718;?>i6m<0;6)?81;3f4>h6?90276a>e583>!7093;n<6`>718b?>i6m:0;6)?81;3f4>h6?90i76a>e383>!7093;n<6`>718`?>i6m80;6)?81;3f4>h6?90o76a>d883>!7093;n<6`>718f?>i6l10;6)?81;3f4>h6?90m76a>f183>!7093;m=6`>7183?>i6mo0;6)?81;3e5>h6?90:76a>ed83>!7093;m=6`>7181?>i6mm0;6)?81;3e5>h6?90876a>eb83>!7093;m=6`>7187?>i6mk0;6)?81;3e5>h6?90>76a>f883>!7093;m=6`>7185?>i6n10;6)?81;3e5>h6?90<76a>f683>!7093;m=6`>718;?>i6n?0;6)?81;3e5>h6?90276a>f483>!7093;m=6`>718b?>i6n=0;6)?81;3e5>h6?90i76a>f283>!7093;m=6`>718`?>i6n;0;6)?81;3e5>h6?90o76a>e`83>!7093;m=6`>718f?>i6m00;6)?81;3e5>h6?90m76g>b283>>o6j=0;66g>be83>!7093;ii6`>7183?>o6jj0;6)?81;3aa>h6?90:76g>bc83>!7093;ii6`>7181?>o6jh0;6)?81;3aa>h6?90876g>b883>!7093;ii6`>7187?>o6j10;6)?81;3aa>h6?90>76g>c783>!7093;ii6`>7185?>o6k<0;6)?81;3aa>h6?90<76g>c583>!7093;ii6`>718;?>o6k:0;6)?81;3aa>h6?90276g>c383>!7093;ii6`>718b?>o6k80;6)?81;3aa>h6?90i76g>c183>!7093;ii6`>718`?>o6jo0;6)?81;3aa>h6?90o76g>b683>!7093;ii6`>718f?>o6j?0;6)?81;3aa>h6?90m76g>cd83>!7093;hj6`>7183?>o6km0;6)?81;3`b>h6?90:76g>cb83>!7093;hj6`>7181?>o6kk0;6)?81;3`b>h6?90876g>c`83>!7093;hj6`>7187?>o6k00;6)?81;3`b>h6?90>76g>d683>!7093;hj6`>7185?>o6l?0;6)?81;3`b>h6?90<76g>d483>!7093;hj6`>718;?>o6l=0;6)?81;3`b>h6?90276g>d283>!7093;hj6`>718b?>o6l;0;6)?81;3`b>h6?90i76g>d083>!7093;hj6`>718`?>o6l90;6)?81;3`b>h6?90o76g>c983>!7093;hj6`>718f?>o6k>0;6)?81;3`b>h6?90m76a>b483>>d6180;6<4?:1y'52g=m;1C=4>4H0:3?jc62900qo?62;295?6=8r.:;l4>809K5<6<@82;7b?9e;29?xd6?l0;6oo50;2x 41f28=97E?60:J2<5=];00hw;48:d8e>45=9=0:97?9:02954<6?3;36p`;5;68j10=<2.:>o4>;%31g?7<,l91>6*j4;08 `3=:2.n:7<4$d596>"b0380(<6j:050?!70>3;0(hl52:&fg?4<,ln1>6*je;08 ``=:2.m<7<4$g396>"a:380(k=52:&e0?4<,o?1>6*i6;08 c1=:2.m47<4$g;96>"ai380(kl52:&eg?4<,on1>6*ie;08 c`=:2.:<=4=;%335?4<,8:96?5+11196>"68=097)??5;08 4612;1/==952:&24=<53-;;57<4$02b>7=#99h1>6*>0b81?!77l380(<>j:39'55`=:2.:==4=;%325?4<,8;96?5+10196>"69=097)?>5;08 4712;1/=<952:&25=<53-;:57<4$03b>7=#98h1>6*>1b81?!76l380(<?j:39'54`=:2.:>=4=;%315?4<,8896?5+13196>"6:=097)?=5;08 4412;1/=?952:&26=<53-;957<4$00b>7=#9>>1?:5+e881?!cf2;1/=5j51618 410281b?n4?::k0`?6=3`nm6=44id294?=n9>21<75f16;94?=n9l0;6)?81;3e?k7083:07d?k:18'527=9o1e=:>51:9j5f<72-;<=7?i;o344?4<3`;i6=4+16395c=i9>:1?65f2683>!7093;m7c?80;68?l41290/=:?51g9m526==21b>84?:%345?7a3g;<<784;h07>5<#9>;1=k5a16293>=n::0;6)?81;3e?k7083207d<=:18'527=9o1e=:>59:9j64<72-;<=7?i;o344?g<3`8;6=4+16395c=i9>:1n65f1`83>!7093;m7c?80;a8?l7>290/=:?51g9m526=l21b>i4?:%345?4b3g;<<7>4;h0`>5<#9>;1>h5a16295>=n:k0;6)?81;0f?k7083807d<n:18'527=:l1e=:>53:9j73<72-;<=7<j;o344?2<3`9>6=4+16396`=i9>:1965f3583>!70938n7c?80;48?l54290/=:?52d9m526=?21b??4?:%345?4b3g;<<764;h12>5<#9>;1>h5a1629=>=n;90;6)?81;0f?k7083k07d<i:18'527=:l1e=:>5b:9j6<<72-;<=7<j;o344?e<3`836=4+16396`=i9>:1h65f6183>!7093<:7c?80;28?l3a290/=:?5609m526=921b9i4?:%345?063g;<<7<4;h7`>5<#9>;1:<5a16297>=n=k0;6)?81;42?k7083>07d;n:18'527=>81e=:>55:9j1<<72-;<=78>;o344?0<3`?36=4+163924=i9>:1;65f5683>!7093<:7c?80;:8?l31290/=:?5609m526=121b984?:%345?063g;<<7o4;h77>5<#9>;1:<5a1629f>=n=;0;6)?81;42?k7083i07d;>:18'527=>81e=:>5d:9j15<72-;<=78>;o344?c<3`>m6=4+163924=i9>:1j65f4d83>!7093<:7c?80;33?>o3l3:1(<9>:738j41728;07d:l:18'527=>81e=:>51398m1d=83.:;<491:l235<6;21b8l4?:%345?063g;<<7?;;:k7=?6=,8=:6;?4n053>43<3`<<6=4+163924=i9>:1=;54i7494?"6?80==6`>71823>=n><0;6)?81;42?k7083;376g94;29 4162?;0b<9?:0;8?l04290/=:?5609m526=9h10e;<50;&234<192d:;=4>b:9j1`<72-;<=78>;o344?7d32c>?7>5$052>37<f8=;6<j4;h6;>5<#9>;1:<5a16295`=<a==1<7*>70855>h6?90:j65f8083>!7093297c?80;28?l>7290/=:?5839m526=921b;h4?:%345?>53g;<<7<4;h5g>5<#9>;14?5a16297>=n?j0;6)?81;:1?k7083>07d9m:18'527=0;1e=:>55:9j3d<72-;<=76=;o344?0<3`=26=4+1639<7=i9>:1;65f7983>!7093297c?80;:8?l10290/=:?5839m526=121b;;4?:%345?>53g;<<7o4;h56>5<#9>;14?5a1629f>=n?:0;6)?81;:1?k7083i07d9=:18'527=0;1e=:>5d:9j34<72-;<=76=;o344?c<3`=;6=4+1639<7=i9>:1j65f6g83>!7093297c?80;33?>o1m3:1(<9>:908j41728;07d8k:18'527=0;1e=:>51398m3e=83.:;<472:l235<6;21b:o4?:%345?>53g;<<7?;;:k5e?6=,8=:65<4n053>43<3`236=4+1639<7=i9>:1=;54i9594?"6?803>6`>71823>=n0?0;6)?81;:1?k7083;376g75;29 4162180b<9?:0;8?l>3290/=:?5839m526=9h10e5=50;&234<?:2d:;=4>b:9j3c<72-;<=76=;o344?7d32c<87>5$052>=4<f8=;6<j4;h4:>5<#9>;14?5a16295`=<a?21<7*>708;6>h6?90:j65f8b83>!70932o7c?80;28?l>e290/=:?58e9m526=921b4l4?:%345?>c3g;<<7<4;h::>5<#9>;14i5a16297>=n180;6)?81;;1?k7083:07d7?:18'527=1;1e=:>51:9j<c<72-;<=77=;o344?4<3`2n6=4+1639=7=i9>:1?65f19494?"6?80:4:5a16294>=n91?1<7*>7082<2=i9>:1=65f19694?"6?80:4:5a16296>=n9191<7*>7082<2=i9>:1?65f19`94?"6?80:4n5a16294>=n91k1<7*>7082<f=i9>:1=65f19;94?"6?80:4n5a16296>=n9121<7*>7082<f=i9>:1?65`ab83>!7093ko7c?80;28?jge290/=:?5ae9m526=921dm44?:%345?gc3g;<<7<4;nc;>5<#9>;1mi5a16297>=hi>0;6)?81;cg?k7083>07bo9:18'527=im1e=:>55:9le0<72-;<=7ok;o344?0<3fk?6=4+1639ea=i9>:1;65`a283>!7093ko7c?80;:8?jg5290/=:?5ae9m526=121dm<4?:%345?gc3g;<<7o4;nc3>5<#9>;1mi5a1629f>=h1l0;6)?81;cg?k7083i07b7k:18'527=im1e=:>5d:9l=f<72-;<=7ok;o344?c<3f3i6=4+1639ea=i9>:1j65`9`83>!7093ko7c?80;33?>i>13:1(<9>:`f8j41728;07b77:18'527=im1e=:>51398k<1=83.:;<4nd:l235<6;21d5;4?:%345?gc3g;<<7?;;:m:1?6=,8=:6lj4n053>43<3fh86=4+1639ea=i9>:1=;54oc094?"6?80jh6`>71823>=hj80;6)?81;cg?k7083;376am0;29 4162hn0b<9?:0;8?jga290/=:?5ae9m526=9h10clk50;&234<fl2d:;=4>b:9led<72-;<=7ok;o344?7d32e2j7>5$052>db<f8=;6<j4;n;7>5<#9>;1mi5a16295`=<g091<7*>708b`>h6?90:j65`ce83>!7093in7c?80;28?jed290/=:?5cd9m526=921dol4?:%345?eb3g;<<7<4;na:>5<#9>;1oh5a16297>=hk10;6)?81;af?k7083>07bm8:18'527=kl1e=:>55:9lg3<72-;<=7mj;o344?0<3fi>6=4+1639g`=i9>:1;65`c583>!7093in7c?80;:8?je4290/=:?5cd9m526=121do?4?:%345?eb3g;<<7o4;na2>5<#9>;1oh5a1629f>=hjo0;6)?81;af?k7083i07blj:18'527=kl1e=:>5d:9lfa<72-;<=7mj;o344?c<3fhh6=4+1639g`=i9>:1j65`bc83>!7093in7c?80;33?>iei3:1(<9>:bg8j41728;07bl6:18'527=kl1e=:>51398kg>=83.:;<4le:l235<6;21dn:4?:%345?eb3g;<<7?;;:ma2?6=,8=:6nk4n053>43<3fn?6=4+1639g`=i9>:1=;54oe194?"6?80hi6`>71823>=hl;0;6)?81;af?k7083;376ak1;29 4162jo0b<9?:0;8?jb7290/=:?5cd9m526=9h10cnh50;&234<dm2d:;=4>b:9lgg<72-;<=7mj;o344?7d32eh<7>5$052>fc<f8=;6<j4;n`6>5<#9>;1oh5a16295`=<gk>1<7*>708`a>h6?90:j65`d983>!7093n27c?80;28?jb0290/=:?5d89m526=921dh;4?:%345?b>3g;<<7<4;nf6>5<#9>;1h45a16297>=hlm0;6)?81;ff?k7083:07bjl:18'527=ll1e=:>51:9l`g<72-;<=7jj;o344?4<3fnj6=4+1639``=i9>:1?65rb05g>5<ei3:1<v*>7`8237=O90:0D<6?;[1:>f}12>0n6k4>3;37>43=9?0:<7?>:0595=<zf=?186`;6;68 44e281/=?m51:&f7?4<,l>1>6*j5;08 `0=:2.n;7<4$d:96>"60l0:;>5+16495>"bj380(hm52:&f`?4<,lo1>6*jf;08 c6=:2.m=7<4$g096>"a;380(k:52:&e1?4<,o<1>6*i7;08 c>=:2.m57<4$gc96>"aj380(km52:&e`?4<,oo1>6*if;08 4672;1/==?52:&247<53-;;?7<4$027>7=#99?1>6*>0781?!77?380(<>7:39'55?=:2.:<l4=;%33f?4<,8:h6?5+11f96>"68l097)??f;08 4772;1/=<?52:&257<53-;:?7<4$037>7=#98?1>6*>1781?!76?380(<?7:39'54?=:2.:=l4=;%32f?4<,8;h6?5+10f96>"69l097)?>f;08 4472;1/=??52:&267<53-;9?7<4$007>7=#9;?1>6*>2781?!75?380(<<7:39'57?=:2.:>l4=;%340?503-o26?5+e`81?!7?l3;<?6*>7682?l5d2900e>j50;9j`c<722cn<7>5;h34<?6=3`;<57>5;h3f>5<#9>;1=k5a16294>=n9m0;6)?81;3e?k7083;07d?l:18'527=9o1e=:>52:9j5g<72-;<=7?i;o344?5<3`8<6=4+16395c=i9>:1865f2783>!7093;m7c?80;78?l42290/=:?51g9m526=>21b>94?:%345?7a3g;<<794;h00>5<#9>;1=k5a1629<>=n:;0;6)?81;3e?k7083307d<>:18'527=9o1e=:>5a:9j65<72-;<=7?i;o344?d<3`;j6=4+16395c=i9>:1o65f1883>!7093;m7c?80;f8?l4c290/=:?52d9m526=821b>n4?:%345?4b3g;<<7?4;h0a>5<#9>;1>h5a16296>=n:h0;6)?81;0f?k7083907d=9:18'527=:l1e=:>54:9j70<72-;<=7<j;o344?3<3`9?6=4+16396`=i9>:1:65f3283>!70938n7c?80;58?l55290/=:?52d9m526=021b?<4?:%345?4b3g;<<774;h13>5<#9>;1>h5a1629e>=n:o0;6)?81;0f?k7083h07d<6:18'527=:l1e=:>5c:9j6=<72-;<=7<j;o344?b<3`<;6=4+163924=i9>:1<65f5g83>!7093<:7c?80;38?l3c290/=:?5609m526=:21b9n4?:%345?063g;<<7=4;h7a>5<#9>;1:<5a16290>=n=h0;6)?81;42?k7083?07d;6:18'527=>81e=:>56:9j1=<72-;<=78>;o344?1<3`?<6=4+163924=i9>:1465f5783>!7093<:7c?80;;8?l32290/=:?5609m526=i21b994?:%345?063g;<<7l4;h71>5<#9>;1:<5a1629g>=n=80;6)?81;42?k7083n07d;?:18'527=>81e=:>5e:9j0c<72-;<=78>;o344?`<3`>n6=4+163924=i9>:1==54i5f94?"6?80==6`>71825>=n<j0;6)?81;42?k7083;976g;b;29 4162?;0b<9?:018?l2f290/=:?5609m526=9=10e9750;&234<192d:;=4>5:9j22<72-;<=78>;o344?7132c=:7>5$052>37<f8=;6<94;h46>5<#9>;1:<5a16295==<a?>1<7*>70855>h6?90:565f6283>!7093<:7c?80;3b?>o1:3:1(<9>:738j41728h07d;j:18'527=>81e=:>51b98m05=83.:;<491:l235<6l21b854?:%345?063g;<<7?j;:k73?6=,8=:6;?4n053>4`<3`2:6=4+1639<7=i9>:1<65f8183>!7093297c?80;38?l1b290/=:?5839m526=:21b;i4?:%345?>53g;<<7=4;h5`>5<#9>;14?5a16290>=n?k0;6)?81;:1?k7083?07d9n:18'527=0;1e=:>56:9j3<<72-;<=76=;o344?1<3`=36=4+1639<7=i9>:1465f7683>!7093297c?80;;8?l11290/=:?5839m526=i21b;84?:%345?>53g;<<7l4;h50>5<#9>;14?5a1629g>=n?;0;6)?81;:1?k7083n07d9>:18'527=0;1e=:>5e:9j35<72-;<=76=;o344?`<3`<m6=4+1639<7=i9>:1==54i7g94?"6?803>6`>71825>=n>m0;6)?81;:1?k7083;976g9c;29 4162180b<9?:018?l0e290/=:?5839m526=9=10e;o50;&234<?:2d:;=4>5:9j<=<72-;<=76=;o344?7132c3;7>5$052>=4<f8=;6<94;h:5>5<#9>;14?5a16295==<a1?1<7*>708;6>h6?90:565f8583>!7093297c?80;3b?>o?;3:1(<9>:908j41728h07d9i:18'527=0;1e=:>51b98m22=83.:;<472:l235<6l21b:44?:%345?>53g;<<7?j;:k5<?6=,8=:65<4n053>4`<3`2h6=4+1639<a=i9>:1<65f8c83>!70932o7c?80;38?l>f290/=:?58e9m526=:21b444?:%345?>c3g;<<7=4;h;2>5<#9>;15?5a16294>=n190;6)?81;;1?k7083;07d6i:18'527=1;1e=:>52:9j<`<72-;<=77=;o344?5<3`;3:7>5$052>4>03g;<<7>4;h3;1?6=,8=:6<68;o344?7<3`;387>5$052>4>03g;<<7<4;h3;7?6=,8=:6<68;o344?5<3`;3n7>5$052>4>d3g;<<7>4;h3;e?6=,8=:6<6l;o344?7<3`;357>5$052>4>d3g;<<7<4;h3;<?6=,8=:6<6l;o344?5<3fkh6=4+1639ea=i9>:1<65`ac83>!7093ko7c?80;38?jg>290/=:?5ae9m526=:21dm54?:%345?gc3g;<<7=4;nc4>5<#9>;1mi5a16290>=hi?0;6)?81;cg?k7083?07bo::18'527=im1e=:>56:9le1<72-;<=7ok;o344?1<3fk86=4+1639ea=i9>:1465`a383>!7093ko7c?80;;8?jg6290/=:?5ae9m526=i21dm=4?:%345?gc3g;<<7l4;n;f>5<#9>;1mi5a1629g>=h1m0;6)?81;cg?k7083n07b7l:18'527=im1e=:>5e:9l=g<72-;<=7ok;o344?`<3f3j6=4+1639ea=i9>:1==54o8;94?"6?80jh6`>71825>=h110;6)?81;cg?k7083;976a67;29 4162hn0b<9?:018?j?1290/=:?5ae9m526=9=10c4;50;&234<fl2d:;=4>5:9lf6<72-;<=7ok;o344?7132ei>7>5$052>db<f8=;6<94;n`2>5<#9>;1mi5a16295==<gk:1<7*>708b`>h6?90:565`ag83>!7093ko7c?80;3b?>ifm3:1(<9>:`f8j41728h07bon:18'527=im1e=:>51b98k<`=83.:;<4nd:l235<6l21d594?:%345?gc3g;<<7?j;:m:7?6=,8=:6lj4n053>4`<3fio6=4+1639g`=i9>:1<65`cb83>!7093in7c?80;38?jef290/=:?5cd9m526=:21do44?:%345?eb3g;<<7=4;na;>5<#9>;1oh5a16290>=hk>0;6)?81;af?k7083?07bm9:18'527=kl1e=:>56:9lg0<72-;<=7mj;o344?1<3fi?6=4+1639g`=i9>:1465`c283>!7093in7c?80;;8?je5290/=:?5cd9m526=i21do<4?:%345?eb3g;<<7l4;n`e>5<#9>;1oh5a1629g>=hjl0;6)?81;af?k7083n07blk:18'527=kl1e=:>5e:9lff<72-;<=7mj;o344?`<3fhi6=4+1639g`=i9>:1==54occ94?"6?80hi6`>71825>=hj00;6)?81;af?k7083;976am8;29 4162jo0b<9?:018?jd0290/=:?5cd9m526=9=10co850;&234<dm2d:;=4>5:9l`1<72-;<=7mj;o344?7132eo?7>5$052>fc<f8=;6<94;nf1>5<#9>;1oh5a16295==<gm;1<7*>708`a>h6?90:565`d183>!7093in7c?80;3b?>idn3:1(<9>:bg8j41728h07bmm:18'527=kl1e=:>51b98kf6=83.:;<4le:l235<6l21dn84?:%345?eb3g;<<7?j;:ma0?6=,8=:6nk4n053>4`<3fn36=4+1639`<=i9>:1<65`d683>!7093n27c?80;38?jb1290/=:?5d89m526=:21dh84?:%345?b>3g;<<7=4;nfg>5<#9>;1hh5a16294>=hlj0;6)?81;ff?k7083;07bjm:18'527=ll1e=:>52:9l`d<72-;<=7jj;o344?5<3th:;n4?:cc94?6|,8=j6<9=;I3:4>N6091Q?44l{784>`<a2891=94>5;35>46=980:;7?7:|l71?2<f=<186*>2c82?!75k3;0(h=52:&f0?4<,l?1>6*j6;08 `1=:2.n47<4$0:f>4143-;<:7?4$d`96>"bk380(hj52:&fa?4<,ll1>6*i0;08 c7=:2.m>7<4$g196>"a<380(k;52:&e2?4<,o=1>6*i8;08 c?=:2.mm7<4$g`96>"ak380(kj52:&ea?4<,ol1>6*>0181?!779380(<>=:39'555=:2.:<94=;%331?4<,8:=6?5+11596>"681097)??9;08 46f2;1/==l52:&24f<53-;;h7<4$02f>7=#99l1>6*>1181?!769380(<?=:39'545=:2.:=94=;%321?4<,8;=6?5+10596>"691097)?>9;08 47f2;1/=<l52:&25f<53-;:h7<4$03f>7=#98l1>6*>2181?!759380(<<=:39'575=:2.:>94=;%311?4<,88=6?5+13596>"6:1097)?=9;08 44f2;1/=::5369'a<<53-oj6?5+19f9525<,8=<6<5f3b83>>o4l3:17dji:188m`6=831b=:650;9j52?=831b=h4?:%345?7a3g;<<7>4;h3g>5<#9>;1=k5a16295>=n9j0;6)?81;3e?k7083807d?m:18'527=9o1e=:>53:9j62<72-;<=7?i;o344?2<3`8=6=4+16395c=i9>:1965f2483>!7093;m7c?80;48?l43290/=:?51g9m526=?21b>>4?:%345?7a3g;<<764;h01>5<#9>;1=k5a1629=>=n:80;6)?81;3e?k7083k07d<?:18'527=9o1e=:>5b:9j5d<72-;<=7?i;o344?e<3`;26=4+16395c=i9>:1h65f2e83>!70938n7c?80;28?l4d290/=:?52d9m526=921b>o4?:%345?4b3g;<<7<4;h0b>5<#9>;1>h5a16297>=n;?0;6)?81;0f?k7083>07d=::18'527=:l1e=:>55:9j71<72-;<=7<j;o344?0<3`986=4+16396`=i9>:1;65f3383>!70938n7c?80;:8?l56290/=:?52d9m526=121b?=4?:%345?4b3g;<<7o4;h0e>5<#9>;1>h5a1629f>=n:00;6)?81;0f?k7083i07d<7:18'527=:l1e=:>5d:9j25<72-;<=78>;o344?6<3`?m6=4+163924=i9>:1=65f5e83>!7093<:7c?80;08?l3d290/=:?5609m526=;21b9o4?:%345?063g;<<7:4;h7b>5<#9>;1:<5a16291>=n=00;6)?81;42?k7083<07d;7:18'527=>81e=:>57:9j12<72-;<=78>;o344?><3`?=6=4+163924=i9>:1565f5483>!7093<:7c?80;c8?l33290/=:?5609m526=j21b9?4?:%345?063g;<<7m4;h72>5<#9>;1:<5a1629`>=n=90;6)?81;42?k7083o07d:i:18'527=>81e=:>5f:9j0`<72-;<=78>;o344?7732c?h7>5$052>37<f8=;6<?4;h6`>5<#9>;1:<5a162957=<a=h1<7*>70855>h6?90:?65f4`83>!7093<:7c?80;37?>o313:1(<9>:738j41728?07d88:18'527=>81e=:>51798m30=83.:;<491:l235<6?21b:84?:%345?063g;<<7?7;:k50?6=,8=:6;?4n053>4?<3`<86=4+163924=i9>:1=l54i7094?"6?80==6`>7182f>=n=l0;6)?81;42?k7083;h76g:3;29 4162?;0b<9?:0f8?l2?290/=:?5609m526=9l10e9950;&234<192d:;=4>f:9j<4<72-;<=76=;o344?6<3`2;6=4+1639<7=i9>:1=65f7d83>!7093297c?80;08?l1c290/=:?5839m526=;21b;n4?:%345?>53g;<<7:4;h5a>5<#9>;14?5a16291>=n?h0;6)?81;:1?k7083<07d96:18'527=0;1e=:>57:9j3=<72-;<=76=;o344?><3`=<6=4+1639<7=i9>:1565f7783>!7093297c?80;c8?l12290/=:?5839m526=j21b;>4?:%345?>53g;<<7m4;h51>5<#9>;14?5a1629`>=n?80;6)?81;:1?k7083o07d9?:18'527=0;1e=:>5f:9j2c<72-;<=76=;o344?7732c=i7>5$052>=4<f8=;6<?4;h4g>5<#9>;14?5a162957=<a?i1<7*>708;6>h6?90:?65f6c83>!7093297c?80;37?>o1i3:1(<9>:908j41728?07d67:18'527=0;1e=:>51798m=1=83.:;<472:l235<6?21b4;4?:%345?>53g;<<7?7;:k;1?6=,8=:65<4n053>4?<3`2?6=4+1639<7=i9>:1=l54i9194?"6?803>6`>7182f>=n?o0;6)?81;:1?k7083;h76g84;29 4162180b<9?:0f8?l0>290/=:?5839m526=9l10e;650;&234<?:2d:;=4>f:9j<f<72-;<=76k;o344?6<3`2i6=4+1639<a=i9>:1=65f8`83>!70932o7c?80;08?l>>290/=:?58e9m526=;21b5<4?:%345??53g;<<7>4;h;3>5<#9>;15?5a16295>=n0o0;6)?81;;1?k7083807d6j:18'527=1;1e=:>53:9j5=0=83.:;<4>869m526=821b=5;50;&234<60>1e=:>51:9j5=2=83.:;<4>869m526=:21b=5=50;&234<60>1e=:>53:9j5=d=83.:;<4>8b9m526=821b=5o50;&234<60j1e=:>51:9j5=?=83.:;<4>8b9m526=:21b=5650;&234<60j1e=:>53:9lef<72-;<=7ok;o344?6<3fki6=4+1639ea=i9>:1=65`a883>!7093ko7c?80;08?jg?290/=:?5ae9m526=;21dm:4?:%345?gc3g;<<7:4;nc5>5<#9>;1mi5a16291>=hi<0;6)?81;cg?k7083<07bo;:18'527=im1e=:>57:9le6<72-;<=7ok;o344?><3fk96=4+1639ea=i9>:1565`a083>!7093ko7c?80;c8?jg7290/=:?5ae9m526=j21d5h4?:%345?gc3g;<<7m4;n;g>5<#9>;1mi5a1629`>=h1j0;6)?81;cg?k7083o07b7m:18'527=im1e=:>5f:9l=d<72-;<=7ok;o344?7732e257>5$052>db<f8=;6<?4;n;;>5<#9>;1mi5a162957=<g0=1<7*>708b`>h6?90:?65`9783>!7093ko7c?80;37?>i>=3:1(<9>:`f8j41728?07bl<:18'527=im1e=:>51798kg4=83.:;<4nd:l235<6?21dn<4?:%345?gc3g;<<7?7;:ma4?6=,8=:6lj4n053>4?<3fkm6=4+1639ea=i9>:1=l54o`g94?"6?80jh6`>7182f>=hih0;6)?81;cg?k7083;h76a6f;29 4162hn0b<9?:0f8?j?3290/=:?5ae9m526=9l10c4=50;&234<fl2d:;=4>f:9lga<72-;<=7mj;o344?6<3fih6=4+1639g`=i9>:1=65`c`83>!7093in7c?80;08?je>290/=:?5cd9m526=;21do54?:%345?eb3g;<<7:4;na4>5<#9>;1oh5a16291>=hk?0;6)?81;af?k7083<07bm::18'527=kl1e=:>57:9lg1<72-;<=7mj;o344?><3fi86=4+1639g`=i9>:1565`c383>!7093in7c?80;c8?je6290/=:?5cd9m526=j21dnk4?:%345?eb3g;<<7m4;n`f>5<#9>;1oh5a1629`>=hjm0;6)?81;af?k7083o07bll:18'527=kl1e=:>5f:9lfg<72-;<=7mj;o344?7732eim7>5$052>fc<f8=;6<?4;n`:>5<#9>;1oh5a162957=<gk21<7*>708`a>h6?90:?65`b683>!7093in7c?80;37?>ie>3:1(<9>:bg8j41728?07bj;:18'527=kl1e=:>51798ka5=83.:;<4le:l235<6?21dh?4?:%345?eb3g;<<7?7;:mg5?6=,8=:6nk4n053>4?<3fn;6=4+1639g`=i9>:1=l54obd94?"6?80hi6`>7182f>=hkk0;6)?81;af?k7083;h76al0;29 4162jo0b<9?:0f8?jd2290/=:?5cd9m526=9l10co:50;&234<dm2d:;=4>f:9l`=<72-;<=7j6;o344?6<3fn<6=4+1639`<=i9>:1=65`d783>!7093n27c?80;08?jb2290/=:?5d89m526=;21dhi4?:%345?bb3g;<<7>4;nf`>5<#9>;1hh5a16295>=hlk0;6)?81;ff?k7083807bjn:18'527=ll1e=:>53:9~f41e290im7>50z&23d<6?;1C=4>4H0:3?_5>2jq=6:4j:g827?7328?1=;4>0;32>41=910vb9;54:l72?2<,88i6<5+13a95>"b;380(h:52:&f1?4<,l<1>6*j7;08 `>=:2.:4h4>729'520=92.nn7<4$da96>"bl380(hk52:&fb?4<,o:1>6*i1;08 c4=:2.m?7<4$g696>"a=380(k852:&e3?4<,o21>6*i9;08 cg=:2.mn7<4$ga96>"al380(kk52:&eb?4<,8:;6?5+11396>"68;097)??3;08 4632;1/==;52:&243<53-;;;7<4$02;>7=#9931>6*>0`81?!77j380(<>l:39'55b=:2.:<h4=;%33b?4<,8;;6?5+10396>"69;097)?>3;08 4732;1/=<;52:&253<53-;:;7<4$03;>7=#9831>6*>1`81?!76j380(<?l:39'54b=:2.:=h4=;%32b?4<,88;6?5+13396>"6:;097)?=3;08 4432;1/=?;52:&263<53-;9;7<4$00;>7=#9;31>6*>2`81?!70<39<7)k6:39'ad<53-;3h7?83:&232<63`9h6=44i2f94?=nlo0;66gj0;29?l7003:17d?89;29?l7b290/=:?51g9m526=821b=i4?:%345?7a3g;<<7?4;h3`>5<#9>;1=k5a16296>=n9k0;6)?81;3e?k7083907d<8:18'527=9o1e=:>54:9j63<72-;<=7?i;o344?3<3`8>6=4+16395c=i9>:1:65f2583>!7093;m7c?80;58?l44290/=:?51g9m526=021b>?4?:%345?7a3g;<<774;h02>5<#9>;1=k5a1629e>=n:90;6)?81;3e?k7083h07d?n:18'527=9o1e=:>5c:9j5<<72-;<=7?i;o344?b<3`8o6=4+16396`=i9>:1<65f2b83>!70938n7c?80;38?l4e290/=:?52d9m526=:21b>l4?:%345?4b3g;<<7=4;h15>5<#9>;1>h5a16290>=n;<0;6)?81;0f?k7083?07d=;:18'527=:l1e=:>56:9j76<72-;<=7<j;o344?1<3`996=4+16396`=i9>:1465f3083>!70938n7c?80;;8?l57290/=:?52d9m526=i21b>k4?:%345?4b3g;<<7l4;h0:>5<#9>;1>h5a1629g>=n:10;6)?81;0f?k7083n07d8?:18'527=>81e=:>50:9j1c<72-;<=78>;o344?7<3`?o6=4+163924=i9>:1>65f5b83>!7093<:7c?80;18?l3e290/=:?5609m526=<21b9l4?:%345?063g;<<7;4;h7:>5<#9>;1:<5a16292>=n=10;6)?81;42?k7083=07d;8:18'527=>81e=:>58:9j13<72-;<=78>;o344??<3`?>6=4+163924=i9>:1m65f5583>!7093<:7c?80;`8?l35290/=:?5609m526=k21b9<4?:%345?063g;<<7j4;h73>5<#9>;1:<5a1629a>=n<o0;6)?81;42?k7083l07d:j:18'527=>81e=:>51198m1b=83.:;<491:l235<6921b8n4?:%345?063g;<<7?=;:k7f?6=,8=:6;?4n053>45<3`>j6=4+163924=i9>:1=954i5;94?"6?80==6`>71821>=n>>0;6)?81;42?k7083;=76g96;29 4162?;0b<9?:058?l02290/=:?5609m526=9110e;:50;&234<192d:;=4>9:9j26<72-;<=78>;o344?7f32c=>7>5$052>37<f8=;6<l4;h7f>5<#9>;1:<5a16295f=<a<91<7*>70855>h6?90:h65f4983>!7093<:7c?80;3f?>o3?3:1(<9>:738j41728l07d6>:18'527=0;1e=:>50:9j<5<72-;<=76=;o344?7<3`=n6=4+1639<7=i9>:1>65f7e83>!7093297c?80;18?l1d290/=:?5839m526=<21b;o4?:%345?>53g;<<7;4;h5b>5<#9>;14?5a16292>=n?00;6)?81;:1?k7083=07d97:18'527=0;1e=:>58:9j32<72-;<=76=;o344??<3`==6=4+1639<7=i9>:1m65f7483>!7093297c?80;`8?l14290/=:?5839m526=k21b;?4?:%345?>53g;<<7j4;h52>5<#9>;14?5a1629a>=n?90;6)?81;:1?k7083l07d8i:18'527=0;1e=:>51198m3c=83.:;<472:l235<6921b:i4?:%345?>53g;<<7?=;:k5g?6=,8=:65<4n053>45<3`<i6=4+1639<7=i9>:1=954i7c94?"6?803>6`>71821>=n010;6)?81;:1?k7083;=76g77;29 4162180b<9?:058?l>1290/=:?5839m526=9110e5;50;&234<?:2d:;=4>9:9j<1<72-;<=76=;o344?7f32c3?7>5$052>=4<f8=;6<l4;h5e>5<#9>;14?5a16295f=<a>>1<7*>708;6>h6?90:h65f6883>!7093297c?80;3f?>o103:1(<9>:908j41728l07d6l:18'527=0m1e=:>50:9j<g<72-;<=76k;o344?7<3`2j6=4+1639<a=i9>:1>65f8883>!70932o7c?80;18?l?6290/=:?5939m526=821b5=4?:%345??53g;<<7?4;h:e>5<#9>;15?5a16296>=n0l0;6)?81;;1?k7083907d?76;29 416282<7c?80;28?l7?=3:1(<9>:0:4?k7083;07d?74;29 416282<7c?80;08?l7?;3:1(<9>:0:4?k7083907d?7b;29 416282h7c?80;28?l7?i3:1(<9>:0:`?k7083;07d?79;29 416282h7c?80;08?l7?03:1(<9>:0:`?k7083907bol:18'527=im1e=:>50:9leg<72-;<=7ok;o344?7<3fk26=4+1639ea=i9>:1>65`a983>!7093ko7c?80;18?jg0290/=:?5ae9m526=<21dm;4?:%345?gc3g;<<7;4;nc6>5<#9>;1mi5a16292>=hi=0;6)?81;cg?k7083=07bo<:18'527=im1e=:>58:9le7<72-;<=7ok;o344??<3fk:6=4+1639ea=i9>:1m65`a183>!7093ko7c?80;`8?j?b290/=:?5ae9m526=k21d5i4?:%345?gc3g;<<7j4;n;`>5<#9>;1mi5a1629a>=h1k0;6)?81;cg?k7083l07b7n:18'527=im1e=:>51198k<?=83.:;<4nd:l235<6921d554?:%345?gc3g;<<7?=;:m:3?6=,8=:6lj4n053>45<3f3=6=4+1639ea=i9>:1=954o8794?"6?80jh6`>71821>=hj:0;6)?81;cg?k7083;=76am2;29 4162hn0b<9?:058?jd6290/=:?5ae9m526=9110co>50;&234<fl2d:;=4>9:9lec<72-;<=7ok;o344?7f32eji7>5$052>db<f8=;6<l4;ncb>5<#9>;1mi5a16295f=<g0l1<7*>708b`>h6?90:h65`9583>!7093ko7c?80;3f?>i>;3:1(<9>:`f8j41728l07bmk:18'527=kl1e=:>50:9lgf<72-;<=7mj;o344?7<3fij6=4+1639g`=i9>:1>65`c883>!7093in7c?80;18?je?290/=:?5cd9m526=<21do:4?:%345?eb3g;<<7;4;na5>5<#9>;1oh5a16292>=hk<0;6)?81;af?k7083=07bm;:18'527=kl1e=:>58:9lg6<72-;<=7mj;o344??<3fi96=4+1639g`=i9>:1m65`c083>!7093in7c?80;`8?jda290/=:?5cd9m526=k21dnh4?:%345?eb3g;<<7j4;n`g>5<#9>;1oh5a1629a>=hjj0;6)?81;af?k7083l07blm:18'527=kl1e=:>51198kgg=83.:;<4le:l235<6921dn44?:%345?eb3g;<<7?=;:ma<?6=,8=:6nk4n053>45<3fh<6=4+1639g`=i9>:1=954oc494?"6?80hi6`>71821>=hl=0;6)?81;af?k7083;=76ak3;29 4162jo0b<9?:058?jb5290/=:?5cd9m526=9110ci?50;&234<dm2d:;=4>9:9l`5<72-;<=7mj;o344?7f32ehj7>5$052>fc<f8=;6<l4;naa>5<#9>;1oh5a16295f=<gj:1<7*>708`a>h6?90:h65`b483>!7093in7c?80;3f?>ie<3:1(<9>:bg8j41728l07bj7:18'527=l01e=:>50:9l`2<72-;<=7j6;o344?7<3fn=6=4+1639`<=i9>:1>65`d483>!7093n27c?80;18?jbc290/=:?5dd9m526=821dhn4?:%345?bb3g;<<7?4;nfa>5<#9>;1hh5a16296>=hlh0;6)?81;ff?k7083907p}>d983>42esW;i96P=019]5a`<V8nn7S?kd:\2`f=Y9mh0R<jn;_3f<>X6m>1U=h84^0g6?[7b<2T:i>5Q1d08Z4c63W;o56P>d99>5<7=m816=:k516:8941b28=270?8e;3b?870m3;270?8e;0:?870m38370?8e;43?870m3?m70?8e;7g?870m3?h70?8e;7a?870m3?j70?8e;7:?870m3?370?8e;74?870m3?=70?8e;76?870m3??70?8e;71?870m3?:70?8e;73?870m3>m70?8e;6f?870m3>o70?8e;6`?870m3>i70?8e;6b?870m3>270?8e;44?870m3<=70?8e;46?870m3<?70?8e;40?870m3<970?8e;:2?870m32;70?8e;5f?870m3=o70?8e;5`?870m3=i70?8e;5b?870m3=270?8e;5;?870m3=<70?8e;55?870m3=>70?8e;50?870m3=970?8e;52?870m3=;70?8e;4e?870m3<n70?8e;4g?870m3<h70?8e;4a?870m3<j70?8e;:;?870m32<70?8e;:5?870m32>70?8e;:7?870m32870?8e;5e?870m3=?70?8e;4:?870m3<370?8e;:`?870m32i70?8e;:b?870m32270?8e;;2?870m33;70?8e;:e?870m32n70?8e;3;f>;6?l0:4l5216g95=?<58=n6<67;<34`?70027:;i4>789>52b=9h16=:j5189>52b=:016=:j5299>52b=>916=:j55g9>52b==m16=:j55b9>52b==k16=:j55`9>52b==016=:j5599>52b==>16=:j5579>52b==<16=:j5559>52b==;16=:j5509>52b==916=:j54g9>52b=<l16=:j54e9>52b=<j16=:j54c9>52b=<h16=:j5489>52b=>>16=:j5679>52b=><16=:j5659>52b=>:16=:j5639>52b=0816=:j5819>52b=?l16=:j57e9>52b=?j16=:j57c9>52b=?h16=:j5789>52b=?116=:j5769>52b=??16=:j5749>52b=?:16=:j5739>52b=?816=:j5719>52b=>o16=:j56d9>52b=>m16=:j56b9>52b=>k16=:j56`9>52b=0116=:j5869>52b=0?16=:j5849>52b=0=16=:j5829>52b=?o16=:j5759>52b=>016=:j5699>52b=0j16=:j58c9>52b=0h16=:j5889>52b=1816=:j5919>52b=0o16=:j58d9>52b=91h01<9k:0:b?870l3;3563>7e82<==:9>i1=:64=05`>41>34;<o7?n;<34g?7>34;<o7<6;<34g?4?34;<o78?;<34g?3a34;<o7;k;<34g?3d34;<o7;m;<34g?3f34;<o7;6;<34g?3?34;<o7;8;<34g?3134;<o7;:;<34g?3334;<o7;=;<34g?3634;<o7;?;<34g?2a34;<o7:j;<34g?2c34;<o7:l;<34g?2e34;<o7:n;<34g?2>34;<o788;<34g?0134;<o78:;<34g?0334;<o78<;<34g?0534;<o76>;<34g?>734;<o79j;<34g?1c34;<o79l;<34g?1e34;<o79n;<34g?1>34;<o797;<34g?1034;<o799;<34g?1234;<o79<;<34g?1534;<o79>;<34g?1734;<o78i;<34g?0b34;<o78k;<34g?0d34;<o78m;<34g?0f34;<o767;<34g?>034;<o769;<34g?>234;<o76;;<34g?>434;<o79i;<34g?1334;<o786;<34g?0?34;<o76l;<34g?>e34;<o76n;<34g?>>34;<o77>;<34g??734;<o76i;<34g?>b34;<o7?7b:?23f<60h16=:m519;8941d282370?8b;34<>;6?k0:;45216`95d=:9>h1=45216`96<=:9>h1>55216`925=:9>h19k5216`91a=:9>h19n5216`91g=:9>h19l5216`91<=:9>h1955216`912=:9>h19;5216`910=:9>h1995216`917=:9>h19<5216`915=:9>h18k5216`90`=:9>h18i5216`90f=:9>h18o5216`90d=:9>h1845216`922=:9>h1:;5216`920=:9>h1:95216`926=:9>h1:?5216`9<4=:9>h14=5216`93`=:9>h1;i5216`93f=:9>h1;o5216`93d=:9>h1;45216`93==:9>h1;:5216`933=:9>h1;85216`936=:9>h1;?5216`934=:9>h1;=5216`92c=:9>h1:h5216`92a=:9>h1:n5216`92g=:9>h1:l5216`9<==:9>h14:5216`9<3=:9>h1485216`9<1=:9>h14>5216`93c=:9>h1;95216`92<=:9>h1:55216`9<f=:9>h14o5216`9<d=:9>h1445216`9=4=:9>h15=5216`9<c=:9>h14h5216`95=d<58=i6<6n;<34f?7?127:;o4>899~w4d4290>wS?m3:?23`<4k27:;i4<c:?23f<4k27:;o4<c:p5g2=83?pR<l;;<34a?5c34;<h7=k;<34g?5c34;<n7=k;|q2b5<72;qU=k>4=05f>fd<uz;nj7>52z\2ac=:9>o1o=5rs0gf>5<5sW;ni63>7d8a1>{t9ln1<7<t^0gg?870m3h?7p}>eb83>7}Y9li01<9k:b`8yv7bj3:1>vP>ec9>52b=k91v<h6:181[7a127:;i4m5:p5c>=838pR<h7;<34`?d33ty:j:4?:3y]5c1<58=h6nl4}r3e2?6=:rT:j;5216a9g5=z{8l>6=4={_3e1>;6?j0i96s|1g694?4|V8l?70?8c;`7?xu6n:0;6?uQ1g18941e2jh0q~?i2;296~X6n;16=:l5c19~w4cf2909wS?ja:?23g<e=2wx=h750;0xZ4c>34;<n7l;;|q146<728;pR?><;<34a?7?>27:;h4>849>52c=91>01<9j:0:0?870l3;3:63>7e82<0=:9>n1=5:4=05g>4>434;<o7?76:?23f<60<16=:m51968941d282870?8b;3;2>;6?k0:485216`95=2<58=i6<6<;|q2=g<72<qU=4l4=05f>4c<58=o6<k4=05`>4c<58=i6<k4}r3:e?6==rT:5l5216g95a=:9>n1=i5216a95a=:9>h1=i5rs0c7>5<2sW;j863>7d82g>;6?m0:o63>7b82g>;6?k0:o6s|1`194?3|V8k870?8e;3a?870l3;i70?8c;3a?870j3;i7p}>a383>0}Y9h801<9j:358941c2;=01<9l:358941e2;=0q~?n1;291~X6i816=:k5279>52b=:?16=:m5279>52d=:?1v<o?:186[7f827:;h4=5:?23a<5=27:;n4=5:?23g<5=2wx=4h50;7xZ4?a34;<i7<;;<34`?4334;<o7<;;<34f?433ty:5h4?:4y]5<c<58=n6?=4=05g>75<58=h6?=4=05a>75<uz;2h7>55z\2=a=:9>o1>?5216f967=:9>i1>?5216`967=z{8326=4:{_3:=>;6?l09=63>7e815>;6?j09=63>7c815>{t9021<7;t^0;;?870m38;70?8d;03?870k38;70?8b;03?xu6i10;68uQ1`:8941b2;n01<9k:3f8941d2;n01<9m:3f8yv7f?3:19vP>a69>52c=:j16=:j52b9>52e=:j16=:l52b9~w4d6290>wS?m1:?23`<5j27:;i4=b:?23f<5j27:;o4=b:p5g6=83?pR<l?;<34a?4f34;<h7<n;<34g?4f34;<n7<n;|q2ec<72<qU=lh4=05f>60<58=o6>84=05`>60<58=i6>84}r3ba?6==rT:mh5216g970=:9>n1?85216a970=:9>h1?85rs0cg>5<2sW;jh63>7d800>;6?m08863>7b800>;6?k0886s|1`a94?3|V8kh70?8e;10?870l39870?8c;10?870j3987p}>ac83>0}Y9hh01<9j:208941c2:801<9l:208941e2:80q~?na;291~X6ih16=:k5309>52b=;816=:m5309>52d=;81v<o9:186[7f>27:;h4<0:?23a<4827:;n4<0:?23g<482wx=l;50;7xZ4g234;<i7<i;<34`?4a34;<o7<i;<34f?4a3ty:ni4?:3y]5gb<58=n68k4}r3ag?6=:rT:nn5216g916=z{8hi6=4={_3af>;6?l0?46s|1cc94?4|V8hj70?8e;64?xu6j00;6?uQ1c;8941c2<o0q~?m8;296~X6j116=:j5529~w4e12909wS?l6:?23a<302wx=n;50;0xZ4e234;<h7:8;|q2g1<72;qU=n:4=05`>0c<uz;h?7>52z\2g6=:9>i19>5rs0a1>5<5sW;h>63>7b87<>{t9j;1<7<t^0a2?870k3><7p}>c183>7}Y9j:01<9m:4g8yv7en3:1>vP>bg9>52d==:1v<l8:181[7e?27:;o4;8:p5g0=838pR<l9;<34f?203ty:?<4?:8y>5<4=9?o01<9j:ed8941b2l:01<9k:ed8941c2l:01<9l:ed8941d2l:01<9m:ed8941e2l:0qp}>b283>7}Y9k901>651c18 41a289h7p}>be83>7}Y9kn01>651cf8 41a28><7p}>bb83>7}Y9ki01>651ca8 41a28>j7p}>bc83>7}Y9kh01>651c`8 41a28>i7p}>b`83>7}Y9kk01>651cc8 41a28>o7p}>b883>7}Y9k301>651c;8 41a28?;7p}>b983>7}Y9k201>651c:8 41a28?i7p}>c783>7}Y9j<01>651b48 41a28<97p}>c483>7}Y9j?01>651b78 41a28997p}>c583>7}Y9j>01>651b68 41a28987p}>c283>7}Y9j901>651b18 41a289?7p}>c383>7}Y9j801>651b08 41a289>7p}>c083>7}Y9j;01>651b38 41a289=7p}>c183>7}Y9j:01>651b28 41a289<7p}>bg83>7}Y9kl01>651cd8 41a28937p}>b683>7}Y9k=01>651c58 41a28927p}>b783>7}Y9k<01>651c48 41a289j7p}>9c83>7}Y90h01>6518`8 41a289i7p}>9`83>7}Y90k01>6518c8 41a289o7p}>a583>7}Y9h>01>651`68 41a289n7p}>a283>7}Y9h901>651`18 41a289m7p}>a383>7}Y9h801>651`08 41a28>;7p}>a083>7}Y9h;01>651`38 41a28>:7p}>a183>7}Y9h:01>651`28 41a28>97p}>9g83>7}Y90l01>6518d8 41a28>87p}>9d83>7}Y90o01>6518g8 41a28>?7p}>9e83>7}Y90n01>6518f8 41a28>>7p}>9883>7}Y90301>6518;8 41a28>=7p}>9983>7}Y90201>6518:8 41a28>37p}=0283>7}Y:9901>652118 41a28>27p}>b583>7}Y9k>01>651c68 41a28>h7p}>a983>7}Y9h201>651`:8 41a28>n7p}>a683>7}Y9h=01>651`58 41a28>m7p}>b083>7}Y9k;01>651c38 41a28?:7p}>b183>7}Y9k:01>651c28 41a28?97p}>ag83>7}Y9hl01>651`d8 41a28?87p}>ad83>7}Y9ho01>651`g8 41a28??7p}>ae83>7}Y9hn01>651`f8 41a28?>7p}>ab83>7}Y9hi01>651`a8 41a28?=7p}>ac83>7}Y9hh01>651``8 41a28?<7p}>a`83>7}Y9hk01>651`c8 41a28?37p}>a783>7}Y9h<01>651`48 41a28?27p}>a483>7}Y9h?01>651`78 41a28?j7p}>f183>7}Y9o:01>651g28 41a28?h7p}>eg83>7}Y9ll01>651dd8 41a28?o7p}>ed83>7}Y9lo01>651dg8 41a28?n7p}>ee83>7}Y9ln01>651df8 41a28?m7p}>eb83>7}Y9li01>651da8 41a28<;7p}>ec83>7}Y9lh01>651d`8 41a28<:7p}>f883>7}Y9o301>651g;8 41a28<87p}>f983>7}Y9o201>651g:8 41a28<?7p}>f683>7}Y9o=01>651g58 41a28<>7p}>f783>7}Y9o<01>651g48 41a28<=7p}>f483>7}Y9o?01>651g78 41a28<<7p}>f583>7}Y9o>01>651g68 41a28<37p}>f283>7}Y9o901>651g18 41a28<27p}>f383>7}Y9o801>651g08 41a28<j7p}>e`83>7}Y9lk01>651dc8 41a28<i7p}>e883>7}Y9l301>651d;8 41a28<h7psa3ea94?4|@82;7p`<de83>7}O91:0qc=ke;296~N6091vb>ji:181M7?82we?h>50;0xL4>73td8i<4?:3yK5=6<ug9n>7>52zJ2<5=zf:o86=4={I3;4>{i;l>1<7<tH0:3?xh4m<0;6?uG1928yk5b>3:1>vF>819~j6c02909wE?70:m7`>=838pD<6?;|l0a<<72;qC=5>4}o1fe?6=:rB:4=5rn2ga>5<5sA;3<6sa3da94?4|@82;7p`<ee83>7}O91:0qc=je;296~N6091vb>ki:181M7?82we?k>50;0xL4>73td8j<4?:3yK5=6<ug9m>7>52zJ2<5=zf:l86=4={I3;4>{i;o>1<7<tH0:3?xh4n<0;6?uG1928yk5a>3:1>vF>819~j6`02909wE?70:m7c>=838pD<6?;|l0b<<72;qC=5>4}o1ee?6=:rB:4=5rn2da>5<5sA;3<6sa3ga94?4|@82;7p`<fe83>7}O91:0qc=ie;296~N6091vb>hi:181M7?82we8=>50;0xL4>73td?<<4?:3yK5=6<ug>;>7>52zJ2<5=zf=:86=4={I3;4>{i<9>1<7<tH0:3?xh38<0;6?uG1928yk27>3:1>vF>819~j1602909wE?70:m05>=838pD<6?;|l74<<72;qC=5>4}o63e?6=:rB:4=5rn52a>5<5sA;3<6sa41a94?4|@82;7p`;0e83>7}O91:0qc:?e;296~N6091vb9>i:181M7?82we8<>50;0xL4>73td?=<4?:3yK5=6<ug>:>7>52zJ2<5=zf=;86=4={I3;4>{i<8>1<7<tH0:3?xh39<0;6?uG1928yk26>3:1>vF>819~j6?a290:wE?70:m7ad=83;pD<6?;|~yEFDs=??69oj0ed63xFGJr:vLM^t}AB
Index: firmware/FTM/ethernet/CRAM_4096_16b_CRAM_4096_16b_a.vhd
===================================================================
--- firmware/FTM/ethernet/CRAM_4096_16b_CRAM_4096_16b_a.vhd	(revision 10227)
+++ firmware/FTM/ethernet/CRAM_4096_16b_CRAM_4096_16b_a.vhd	(revision 10227)
@@ -0,0 +1,151 @@
+-- Coregen VHDL wrapper file modified by HDL Designer
+
+--------------------------------------------------------------------------------
+--     This file is owned and controlled by Xilinx and must be used           --
+--     solely for design, simulation, implementation and creation of          --
+--     design files limited to Xilinx devices or technologies. Use            --
+--     with non-Xilinx devices or technologies is expressly prohibited        --
+--     and immediately terminates your license.                               --
+--                                                                            --
+--     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"          --
+--     SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR                --
+--     XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION        --
+--     AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION            --
+--     OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS              --
+--     IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,                --
+--     AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE       --
+--     FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY               --
+--     WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE                --
+--     IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR         --
+--     REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF        --
+--     INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS        --
+--     FOR A PARTICULAR PURPOSE.                                              --
+--                                                                            --
+--     Xilinx products are not intended for use in life support               --
+--     appliances, devices, or systems. Use in such applications are          --
+--     expressly prohibited.                                                  --
+--                                                                            --
+--     (c) Copyright 1995-2007 Xilinx, Inc.                                   --
+--     All rights reserved.                                                   --
+--------------------------------------------------------------------------------
+-- You must compile the wrapper file CRAM_4096_16b.vhd when simulating
+-- the core, CRAM_4096_16b. When compiling the wrapper file, be sure to
+-- reference the XilinxCoreLib VHDL simulation library. For detailed
+-- instructions, please refer to the "CORE Generator Help".
+
+-- The synthesis directives "translate_off/translate_on" specified
+-- below are supported by Xilinx, Mentor Graphics and Synplicity
+-- synthesis tools. Ensure they are correct for your synthesis tool(s).
+
+-- hds interface_start
+LIBRARY ieee;
+USE ieee.std_logic_1164.ALL;
+-- synthesis translate_off
+LIBRARY XilinxCoreLib;
+
+--  synthesis translate_on
+-- 
+ENTITY CRAM_4096_16b IS
+   PORT( 
+      clka  : IN     std_logic;
+      dina  : IN     std_logic_VECTOR (15 DOWNTO 0);
+      addra : IN     std_logic_VECTOR (11 DOWNTO 0);
+      wea   : IN     std_logic_VECTOR (0 DOWNTO 0);
+      clkb  : IN     std_logic;
+      addrb : IN     std_logic_VECTOR (11 DOWNTO 0);
+      doutb : OUT    std_logic_VECTOR (15 DOWNTO 0)
+   );
+
+-- Declarations
+
+END CRAM_4096_16b ;
+-- hds interface_end
+
+ARCHITECTURE CRAM_4096_16b_a OF CRAM_4096_16b IS
+
+-- hds translate_off
+
+-- synthesis translate_off
+component wrapped_CRAM_4096_16b
+	port (
+	clka: IN std_logic;
+	dina: IN std_logic_VECTOR(15 downto 0);
+	addra: IN std_logic_VECTOR(11 downto 0);
+	wea: IN std_logic_VECTOR(0 downto 0);
+	clkb: IN std_logic;
+	addrb: IN std_logic_VECTOR(11 downto 0);
+	doutb: OUT std_logic_VECTOR(15 downto 0));
+end component;
+
+-- Configuration specification 
+	for all : wrapped_CRAM_4096_16b use entity XilinxCoreLib.blk_mem_gen_v2_8(behavioral)
+		generic map(
+			c_has_regceb => 0,
+			c_has_regcea => 0,
+			c_mem_type => 1,
+			c_prim_type => 1,
+			c_sinita_val => "0",
+			c_read_width_b => 16,
+			c_family => "spartan3",
+			c_read_width_a => 16,
+			c_disable_warn_bhv_coll => 0,
+			c_write_mode_b => "READ_FIRST",
+			c_init_file_name => "no_coe_file_loaded",
+			c_write_mode_a => "READ_FIRST",
+			c_mux_pipeline_stages => 0,
+			c_has_mem_output_regs_b => 0,
+			c_load_init_file => 0,
+			c_xdevicefamily => "spartan3a",
+			c_has_mem_output_regs_a => 0,
+			c_write_depth_b => 4096,
+			c_write_depth_a => 4096,
+			c_has_ssrb => 0,
+			c_has_mux_output_regs_b => 0,
+			c_has_ssra => 0,
+			c_has_mux_output_regs_a => 0,
+			c_addra_width => 12,
+			c_addrb_width => 12,
+			c_default_data => "0",
+			c_use_ecc => 0,
+			c_algorithm => 1,
+			c_disable_warn_bhv_range => 0,
+			c_write_width_b => 16,
+			c_write_width_a => 16,
+			c_read_depth_b => 4096,
+			c_read_depth_a => 4096,
+			c_byte_size => 9,
+			c_sim_collision_check => "ALL",
+			c_use_ramb16bwer_rst_bhv => 0,
+			c_common_clk => 0,
+			c_wea_width => 1,
+			c_has_enb => 0,
+			c_web_width => 1,
+			c_has_ena => 0,
+			c_sinitb_val => "0",
+			c_use_byte_web => 0,
+			c_use_byte_wea => 0,
+			c_use_default_data => 1);
+-- synthesis translate_on
+
+-- hds translate_on
+
+BEGIN
+
+-- hds translate_off
+
+-- synthesis translate_off
+U0 : wrapped_CRAM_4096_16b
+		port map (
+			clka => clka,
+			dina => dina,
+			addra => addra,
+			wea => wea,
+			clkb => clkb,
+			addrb => addrb,
+			doutb => doutb);
+-- synthesis translate_on
+
+
+-- hds translate_on
+
+END CRAM_4096_16b_a;
Index: firmware/FTM/ethernet/DRAM_4096_16b.ngc
===================================================================
--- firmware/FTM/ethernet/DRAM_4096_16b.ngc	(revision 10227)
+++ firmware/FTM/ethernet/DRAM_4096_16b.ngc	(revision 10227)
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.4e
+$3244g<,[o}e~g`n;"2*413&;$>"9 > %;8456789:;<9>40123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?3:3-442<9;0BB][[:`fgvd.693:"=95>2;KMTPR=imnyn%?>:1+20>732@D[YY4NDEPB,45=8 ;?7<:5IORVP?GCL[H#=>4?)01853<NFY__6igaa)36>5/6;2;=6D@_UU8gmkd/9<0;%<;4178LQQVR\3ndyyo'1483-43<9?0DYY^ZT;flqqd/9<0;%<>41;KMTPR=lk#<7>&1192>LHW]]0|io&?:1+26>552@D[YY4KI@*05?6.9;18>7GAPTV9@LD/;80;%<=4338LQQVR\3NDM%=>:1+27>552F__\XZ5DN@+74<7!m18:>?age7<1+3981?6D@_UU8GMUG/;3:"=<5;:HLSQQ<CAYH#?7>&1197>LHW]]0\IL&<:1+24>2=AGZ^X7YJB)194,753=0DYY^ZT;FLTD.429#:>6:5OTVSQQ<CGYH#?7>&8:CG@WG/8 20MIJ]A)3*=>GCL[K#=='6;@FGVD.69 30MIJ]A)31-<=FLMXJ$<=&b:CG@WG/9:0;%55NDEPB,7/?3HNO^L&<)99B@ATF =#37LJKR@*6-==FLMXJ$;'7;@FGVD.0!11JHI\N(9+;?DBCZH"2%55NDEPA,5/?3HNO^O&>)89B@ATE 8:"56OKDS@+54/>3HNO^O&>2(;8EABUJ!;8%o5NDEPA,45=8 20MIJ]B)0*<>GCL[H#?$64AEFQF-2.02KOH_L'5(:8EABUJ!<"46OKDS@+3,><IMNYN%6&8:CG@WD/1 90MAB<;CW1<>DR[VCEJB:m;B8,@JMRELt:#fof/MMHEICy9&^na}!losgdakYli`%hckheo-wiu)Xkn%O^LCP41;5[40e&gmd=?5LHDAH[IODMGYNSYW_E59@HNG33JF@N45LOLOJPQCC9=1HC_KPGDLFVDRNGGUBBKA8;BPFEQCCk2NJXLQXIEVK[De<LH^JSZGKTI]A2>BNI!:":6JFA)3*3>BNI!;;%:5KI@*25,1<L@K#=?'8;EKB,45.?2NBM%?;)69GMD.6= =0HDO'17+4?AOF 8=";6JFA)3;-2=CAH":5$84DHC+6,1<L@K#>='8;EKB,77.?2NBM%<=)69GMD.5; =0HDO'25+4?AOF ;?";6JFA)05-2=CAH"9;$94DHC+6=/03MCJ$?7&6:FJE-5.?2NBM%=?)69GMD.49 30HDO'3083-3=CAH"?%;5KI@*6-3=CAH"=%;5KI@*4-3=CAH"3%;5KI@*:-3=CAK";%;5KIC*2-2=CAK":<$94DH@+54/03MCI$<<&7:FJF-74!>1OEO&>4(58@LD/9<#<7IGM(04*3>BNJ!;<%:5KIC*2<,1<L@H#=4'9;EKA,7/03MCI$?>&7:FJF-46!>1OEO&=2(58@LD/::#<7IGM(36*3>BNJ!8>%:5KIC*12,1<L@H#>:'8;EKA,7>.?2NBN%<6)79GMG.4!>1OEO&<0(58@LD/;8#27IGM(2394,0<L@H#8$84DH@+1,0<L@H#:$84DH@+3,0<L@H#4$84DH@+=,1<L@ZJ$='8;EKSE-7.?2NB\L&=)69GMUG/; 30HD^N(283-2=CAYH#<$94DHRA,4/03MC[N%<&7:FJTG.4!01OE]L'3;2*2>BHI!:":6J@A)3*3>BHI!;;%:5KO@*25,1<LFK#=?'8;EMB,45.?2NDM%?;)69GKD.6= =0HBO'17+4?AIF 8=";6J@A)3;-2=CGH":5$84DNC+6,1<LFK#>='8;EMB,77.?2NDM%<=)69GKD.5; =0HBO'25+4?AIF ;?";6J@A)05-2=CGH"9;$94DNC+6=/03MEJ$?7&6:FLE-5.?2NDM%=?)69GKD.49 30HBO'3083-3=CGH"?%;5KO@*6-3=CGH"=%;5KO@*4-3=CGH"3%;5KO@*:-3=CGK";%;5KOC*2-2=CGK":<$94DN@+54/03MEI$<<&7:FLF-74!>1OCO&>4(58@JD/9<#<7IAM(04*3>BHJ!;<%:5KOC*2<,1<LFH#=4'9;EMA,7/03MEI$?>&7:FLF-46!>1OCO&=2(58@JD/::#<7IAM(36*3>BHJ!8>%:5KOC*12,1<LFH#>:'8;EMA,7>.?2NDN%<6)79GKG.4!>1OCO&<0(58@JD/;8#27IAM(2394,0<LFH#8$84DN@+1,0<LFH#:$84DN@+3,0<LFH#4$84DN@+=,1<LFZJ$='8;EMSE-7.?2ND\L&=)69GKUG/; 30HB^N(283-2=CGYH#<$94DNRA,4/03ME[N%<&7:FLTG.4!01OC]L'3;2*`>BUIDU?<48P17`1<>BUIDU?<48P17`/fimXelgTkh`Pv3];(KIIM%DDBH=85:FQEHY380<T=;l#bmi\i`kXoldTz?Q7,za\lduXzlmhio3?,b]kevYumninm0>#c^ofiZr~xl7: nQrho\p|vb58&hS~gaiuc\rdj:8%iT~hok_vkgpmYe58<'oR|jae]tmaroWh7::!mPdhqbficXhxeSofy_bmoh86+kVceeyQiimg\jdkb5geTobkPfhnf[iiflln'oRy}iug\ijbbWk7YILJPFHPPP)eX{ciRc`dd]b9WCFLVLB^^Z#c^ov|ZvnxlfbbhQ|t`efw86+kVbjRcjm^mvpussW{olRl20-a\hjgcW`dbxRhfld?3(fYoizUfi`Q`uurvpZtbozUj1="l_vpjp`Ycmy~cSo3;084/gZqua}oThh~{h^c>05?1$jUcm~Q|ss`>4)eX`hyTaxvPotvsqqYumnyTn0>#c^jbwZutzh7; nQgar]nq}Yh}}z~xR|jgr]b95*dWhno~lQxievk944+kVkohlPwhfwl875$jUoikozlu]geqg:8%iTy~kPeba>4)eXiemd~dzgm<3/gZbn{hhgiRynro]alsYuigmn1="l_vpjp`Ypam~cSo3>6-a\swosmV}bhyfPa<35(fYumhnThh~{h^`>05?1$jUyiljPddrwlZg:<93= nQmyug\wl|b50&hS~gb_bmohlunggUhdhmd=@NO(fYdgdgdbRmck<2/gZstmVxjao?9bvgq[wusWkb}1="l_vgb[roc|a7: nQgar]fjg;7$jUcm~Qjn`?3(fYpmkU|eizg=0.`[voia}hTzlb20-aliuiimg~Tblcj=EPBIZ271?U::o"l_tqf[gsmV}nn0>#c^wpaZd~|lU|il3?,b]vw`Ycmok~`yQkauc>5){5<2NYM@Q;084\53dXjeaTahcPgdl\r7Y?WqyS<=4EOC0?@HE92M87J@K8:KMMQVX8920ECG[P^22<>OIA]ZT<?64IOKWTZ6402CEEY^P05:8MKOSXV:>46GAIUR\43><AGC_\R>87:KMMQY78>1BBDZP0058MKOSW98<7D@FT^203>OIA]U;8:5FNHV\401<AGC_S=88;HLJPZ60?2CEEYQ?869JJLRX80=0ECG[_1C4?LHN\V:I;6GAIU]3G2=NF@^T<I94IOKW[5C03@DBXR>I7:KMMQY68>1BBDZP1058MKOSW88<7D@FT^303>OIA]U:8:5FNHV\501<AGC_S<88;HLJPZ70?2CEEYQ>869JJLRX90=0ECG[_0C4?LHN\V;I;6GAIU]2G2=NF@^T=I94IOKW[4C03@DBXR?I7:KMMQY58>1BBDZP2058MKOSW;8<7D@FT^003>OIA]U98:5FNHV\601<AGC_S?88;HLJPZ40?2CEEYQ=869JJLRX:0=0ECG[_3C4?LHN\V8I;6GAIU]1G2=NF@^T>I94IOKW[7C03@DBXR<I7:KMMQY48>1BBDZP3058MKOSW:8<7D@FT^103>OIA]U88:5FNHV\701<AGC_S>88;HLJPZ50?2CEEYQ<869JJLRX;0=0ECG[_2C4?LHN\V9I;6GAIU]0G2=NF@^T?I94IOKW[6C03@DBXR=I6:KMMQYF>2CEEYQM6:NLEACC?2FDKDMNLb9Neoiu^lxxeb`l;LkmkwPbzzcdb?5A129M555<F8;87C?=3:L276=I9=90B<;<;O357>H6?:1E=5=4N0;1?K443G8;?6@=129M675<F;987C<;3:L116=I:?90B?9<;O0;7>H51;1E?>5A3118J6553G>97C;<;O726>H1;2D=4>5A6808J25<F>:87C9>3:L466=I?:90B::<;O567>H0>:1E;:=4N6:0?K1>:2D3?6@7429M<05<F1<87C683:L;<6=I0080B4=4N820?K?6;2D2>>5A9218J<243G3>?6@6629M=25<F0287C767:LFPRIUC81[86^NRUc8TLHXJ\YBHUl4PHL\FPUIIDO27_OBB04AS@g<ZLKOSKG]SU30?VOJWJEG@D]FOO]@L@EL>2YDY_MJ7:QQRDJXI>1X^[OC_C68WVTF<2YX^O:4TXRF02=R8&hggRcjm^efj`tf|fx$zlbfd/appw)uidfdc}U?]/pbi+t({:kTecg{.scn+avuid$ym`:8;T2,fimXelgTkh`jr`vlv*pfd`n%o~z}/scnhjiwS8W%~lc!r.q0eZoia}$ym`!kpscn*wgj<>1^<"lck^ofiZabflxjxb| v`nj`+et|{%ym`b`oqY1Y+tfe'x$>oPiokw*wgj'mzym` }al64?P6(jeaTahcPgdlfvdrhz&|j`dj!crvq+wgjdfe{W>S!r`o-v*u4iVceey }al-gtwgj&{kfm6[\ES]BHLGTk2_XI_QYIRKAH@5<^JI27[GJW^VZT@0<_LK#<$84WDC+5,0<_LK#>$84WDC+7,><_LK#?7>&6:UFF-6.>2]NN%?&6:UFF-4.>2]NN%=&8:UFF-5=8 i0[_G[E^OL@@YFk2]YEYKPMNFF[G7c3QCGECV"XE@#4+7'[]_I,= > @Q@ML0<PZ^GEO94XRV\CKB03QY_S[MLb:Z\GJTBW@DMC;5Wdc]J`c=_laU[~dcYesqjkk773QnfS@oeosTfvvohf8:0TicPMhllvScu{`ee46okdsc+4,><imnym%?&9:cg`wg/99#27ljkr`*25,d<imnym%?>:1+;?dbczh"9%55ndepb,6/?3hno~l&;)99b`atf <#37ljkr`*5-==flmxj$:'7;`fgvd.?!11jhi|n(8+;?dbczk";%55ndepa,4/>3hno~o&>0(;8eabuj!;:%o5ndepa,47=8 20mij}b)0*<>gcl{h#?$64aefqf-2.02kohl'5(:8eabuj!<"46okds`+3,><imnyn%6&8:cg`wd/1 987obd_lgn[bciW8T4!.Wimkm|%EHZL*Lick}aumq$46)9':8Sd~<4:aood2<keai;6jmiugqv2=cagk#<$94dhlb,4/?3mcem%??)99gmkg/98#37igaa)31-==cagk#=>'7;ekme-73!11oeco'14+b?aoii!;>6='8;ekme-4.?2nbbl&<)69gmkg/< =0hd`n(4+4?aoii!<";6jfn`*4-2=cagk#4$94dhlb,</03mcen%>&7:fjjg.6!11oecl'11+;?aoij!;:%55kio`+57/?3mcen%?<)99gmkd/9=#37igab)36-d=cagh#=84?)69gmkd/: =0hd`m(2+4?aoij!>";6jfnc*6-2=cagh#:$94dhla,2/03mcen%6&7:fjjg.>!11ocxzn(1+;?air|h":%45kotvb,46.12ndyyo'10+:?air|h":>$74dnwwe-74!01ocxzn(06*=>bh}}k#=8'm;emvpd.6=3:"46j`uuc+6,><lfm%=&8:flqqg/< 20hb{{a)7*<>bh}}k#:$64dnwwe-1.02ndyyo'8(:8`jssi!3"46j`uu`+4,><lfn%?&9:flqqd/99#27iaztc*25,?<lfn%?=)89gkpre 89"56j`uu`+51/>3me~xo&>5(`8`jssj!;>6='7;emvpg.5!11ocxzm(2+;?air|k"?%55kotva,0/?3me~xo&9)99gkpre >#37iaztc*;-==cg|~i$4'7;dfjb7h`l:1nbl=4eo`;?kadj|cgh;5}efafe3=umninn:5|bhvfvw2<{zxj86}|rc48s`g/8 20{ho'0;2*2>qbj!:"46yjb)294,{GHy>>86NOx2c9B?2=9rY?<7?ia;19564cj1:1=o=;2zl2=3<63g;2;7:4$0;7>4>a3tY8i7?ia;19564cj1:1=o=;2:Q26a<6nm0;6<==dc:3>4d4<;1X?h4>fe83>455lk2;6<l<429g`g<7280:w^:?:0db>6<6;;ni4=4>b261?sR6?<0;6<4>:2fxW16=9ok1?7?<2e`;4?7e;=80(<6=:00f?S7>=38py<<i:09v566=82w/=;h5139a`g<72:h1?7=m{I3;4>\413?po7:55;`9<?{#9>k1ho5+18195g4<a;:86=4+1639652<f8=;6=54i0;a>5<#9>;1=4m4n053>5=<a83j6=4+16395<e<f8=;6<54i0c7>5<#9>;1=4m4n053>7=<a8k86=4+16395<e<f8=;6>54i0c1>5<#9>;1=4m4n053>1=<a8k:6=4+16395<e<f8=;6854i0c3>5<#9>;1=4m4n053>3=<a83m6=4+16395<e<f8=;6:54i0;f>5<#9>;1=4m4n053>==<a83o6=4+16395<e<f8=;6454i0;:>5<#9>;1=4m4n053>d=<a8336=4+16395<e<f8=;6o54i0c;>5<#9>;1=l74n053>5=<a8k<6=4+16395d?<f8=;6<54i0`2>5<#9>;1=l74n053>7=<a8h;6=4+16395d?<f8=;6>54i0ce>5<#9>;1=l74n053>1=<a8kn6=4+16395d?<f8=;6854i0cg>5<#9>;1=l74n053>3=<a8kh6=4+16395d?<f8=;6:54i0ca>5<#9>;1=l74n053>==<a8kj6=4+16395d?<f8=;6454i0c5>5<#9>;1=l74n053>d=<a8k>6=4+16395d?<f8=;6o54o0d3>5<#9>;1=k?4n053>5=<g8om6=4+16395c7<f8=;6<54o0gf>5<#9>;1=k?4n053>7=<g8oo6=4+16395c7<f8=;6>54o0g`>5<#9>;1=k?4n053>1=<g8oi6=4+16395c7<f8=;6854o0d:>5<#9>;1=k?4n053>3=<g8l36=4+16395c7<f8=;6:54o0d4>5<#9>;1=k?4n053>==<g8l=6=4+16395c7<f8=;6454o0d6>5<#9>;1=k?4n053>d=<g8l?6=4+16395c7<f8=;6o54o0d0>5<#9>;1=k?4n053>f=<g8l96=4+16395c7<f8=;6i54o0gb>5<#9>;1=k?4n053>`=<g8o26=4+16395c7<f8=;6k54i0`0>5<<a8h?6=44i0`g>5<#9>;1=ok4n053>5=<a8hh6=4+16395gc<f8=;6<54i0`a>5<#9>;1=ok4n053>7=<a8hj6=4+16395gc<f8=;6>54i0`:>5<#9>;1=ok4n053>1=<a8h36=4+16395gc<f8=;6854i0a5>5<#9>;1=ok4n053>3=<a8i>6=4+16395gc<f8=;6:54i0a7>5<#9>;1=ok4n053>==<a8i86=4+16395gc<f8=;6454i0a1>5<#9>;1=ok4n053>d=<a8i:6=4+16395gc<f8=;6o54i0a3>5<#9>;1=ok4n053>f=<a8hm6=4+16395gc<f8=;6i54i0`4>5<#9>;1=ok4n053>`=<a8h=6=4+16395gc<f8=;6k54b0:2>5<6290;wE?70:&23d<6081d=;k50;9~f`4=83;1<7>tH0:3?!70i3o97bk>:188yg5?290=87853eyK5=6<R:31==ul:e87>0<f2k03644n:c8`>a<32<03644r$05b>ac<,:h1hn5+3g8g`>o6nk0;66g>fb83>>o5880;66g=0383>>o6nl0;66g>fg83>>o58:0;6)?81;030>h6?90;76g=0483>!70938;:6`>7183?>o61k0;6)?81;3:g>h6?90;76g>9`83>!7093;2o6`>7182?>o6i=0;6)?81;3:g>h6?90976g>a283>!7093;2o6`>7180?>o6i;0;6)?81;3:g>h6?90?76g>a083>!7093;2o6`>7186?>o6i90;6)?81;3:g>h6?90=76g>9g83>!7093;2o6`>7184?>o61l0;6)?81;3:g>h6?90376g>9e83>!7093;2o6`>718:?>o6100;6)?81;3:g>h6?90j76g>9983>!7093;2o6`>718a?>o6i10;6)?81;3b=>h6?90;76g>a683>!7093;j56`>7182?>o6j80;6)?81;3b=>h6?90976g>b183>!7093;j56`>7180?>o6io0;6)?81;3b=>h6?90?76g>ad83>!7093;j56`>7186?>o6im0;6)?81;3b=>h6?90=76g>ab83>!7093;j56`>7184?>o6ik0;6)?81;3b=>h6?90376g>a`83>!7093;j56`>718:?>o6i?0;6)?81;3b=>h6?90j76g>a483>!7093;j56`>718a?>i5890;66a>dg83>!7093;n<6`>7183?>i6ll0;6)?81;3f4>h6?90:76a>de83>!7093;n<6`>7181?>i6lj0;6)?81;3f4>h6?90876a>dc83>!7093;n<6`>7187?>i6lh0;6)?81;3f4>h6?90>76a>e983>!7093;n<6`>7185?>i6m>0;6)?81;3f4>h6?90<76a>e783>!7093;n<6`>718;?>i6m<0;6)?81;3f4>h6?90276a>e583>!7093;n<6`>718b?>i6m:0;6)?81;3f4>h6?90i76a>e383>!7093;n<6`>718`?>i6m80;6)?81;3f4>h6?90o76a>d883>!7093;n<6`>718f?>i6l10;6)?81;3f4>h6?90m76a>f183>!7093;m=6`>7183?>i6mo0;6)?81;3e5>h6?90:76a>ed83>!7093;m=6`>7181?>i6mm0;6)?81;3e5>h6?90876a>eb83>!7093;m=6`>7187?>i6mk0;6)?81;3e5>h6?90>76a>f883>!7093;m=6`>7185?>i6n10;6)?81;3e5>h6?90<76a>f683>!7093;m=6`>718;?>i6n?0;6)?81;3e5>h6?90276a>f483>!7093;m=6`>718b?>i6n=0;6)?81;3e5>h6?90i76a>f283>!7093;m=6`>718`?>i6n;0;6)?81;3e5>h6?90o76a>e`83>!7093;m=6`>718f?>i6m00;6)?81;3e5>h6?90m76g>b283>>o6j=0;66g>be83>!7093;ii6`>7183?>o6jj0;6)?81;3aa>h6?90:76g>bc83>!7093;ii6`>7181?>o6jh0;6)?81;3aa>h6?90876g>b883>!7093;ii6`>7187?>o6j10;6)?81;3aa>h6?90>76g>c783>!7093;ii6`>7185?>o6k<0;6)?81;3aa>h6?90<76g>c583>!7093;ii6`>718;?>o6k:0;6)?81;3aa>h6?90276g>c383>!7093;ii6`>718b?>o6k80;6)?81;3aa>h6?90i76g>c183>!7093;ii6`>718`?>o6jo0;6)?81;3aa>h6?90o76g>b683>!7093;ii6`>718f?>o6j?0;6)?81;3aa>h6?90m76g>cd83>!7093;hj6`>7183?>o6km0;6)?81;3`b>h6?90:76g>cb83>!7093;hj6`>7181?>o6kk0;6)?81;3`b>h6?90876g>c`83>!7093;hj6`>7187?>o6k00;6)?81;3`b>h6?90>76g>d683>!7093;hj6`>7185?>o6l?0;6)?81;3`b>h6?90<76g>d483>!7093;hj6`>718;?>o6l=0;6)?81;3`b>h6?90276g>d283>!7093;hj6`>718b?>o6l;0;6)?81;3`b>h6?90i76g>d083>!7093;hj6`>718`?>o6l90;6)?81;3`b>h6?90o76g>c983>!7093;hj6`>718f?>o6k>0;6)?81;3`b>h6?90m76a>b483>>d6180;6<4?:1y'52g=m;1C=4>4H0:3?jc62900qo?62;295?6=8r.:;l4>809K5<6<@82;7b?9e;29?xd6?l0;6oo50;2x 41f28=97E?60:J2<5=];00hw;48:d8e>45=9=0:97?9:02954<6?3;36p`;1;68j14=<2.:>o4>;%31g?7<,l91>6*j4;08 `3=:2.n:7<4$d596>"b0380(<6j:050?!70>3;0(hl52:&fg?4<,ln1>6*je;08 ``=:2.m<7<4$g396>"a:380(k=52:&e0?4<,o?1>6*i6;08 c1=:2.m47<4$g;96>"ai380(kl52:&eg?4<,on1>6*ie;08 c`=:2.:<=4=;%335?4<,8:96?5+11196>"68=097)??5;08 4612;1/==952:&24=<53-;;57<4$02b>7=#99h1>6*>0b81?!77l380(<>j:39'55`=:2.:==4=;%325?4<,8;96?5+10196>"69=097)?>5;08 4712;1/=<952:&25=<53-;:57<4$03b>7=#98h1>6*>1b81?!76l380(<?j:39'54`=:2.:>=4=;%315?4<,8896?5+13196>"6:=097)?=5;08 4412;1/=?952:&26=<53-;957<4$00b>7=#9>>1?:5+e881?!cf2;1/=5j51618 410281b?n4?::k0`?6=3`nm6=44id294?=n9>21<75f16;94?=n9l0;6)?81;3e?k7083:07d?k:18'527=9o1e=:>51:9j5f<72-;<=7?i;o344?4<3`;i6=4+16395c=i9>:1?65f2683>!7093;m7c?80;68?l41290/=:?51g9m526==21b>84?:%345?7a3g;<<784;h07>5<#9>;1=k5a16293>=n::0;6)?81;3e?k7083207d<=:18'527=9o1e=:>59:9j64<72-;<=7?i;o344?g<3`8;6=4+16395c=i9>:1n65f1`83>!7093;m7c?80;a8?l7>290/=:?51g9m526=l21b>i4?:%345?4b3g;<<7>4;h0`>5<#9>;1>h5a16295>=n:k0;6)?81;0f?k7083807d<n:18'527=:l1e=:>53:9j73<72-;<=7<j;o344?2<3`9>6=4+16396`=i9>:1965f3583>!70938n7c?80;48?l54290/=:?52d9m526=?21b??4?:%345?4b3g;<<764;h12>5<#9>;1>h5a1629=>=n;90;6)?81;0f?k7083k07d<i:18'527=:l1e=:>5b:9j6<<72-;<=7<j;o344?e<3`836=4+16396`=i9>:1h65f5b83>!7093?o7c?80;28?l3e290/=:?55e9m526=921b944?:%345?3c3g;<<7<4;h7;>5<#9>;19i5a16297>=n=>0;6)?81;7g?k7083>07d;9:18'527==m1e=:>55:9j10<72-;<=7;k;o344?0<3`??6=4+16391a=i9>:1;65f5283>!7093?o7c?80;:8?l35290/=:?55e9m526=121b9<4?:%345?3c3g;<<7o4;h73>5<#9>;19i5a1629f>=n<l0;6)?81;7g?k7083i07d:k:18'527==m1e=:>5d:9j0f<72-;<=7;k;o344?c<3`>i6=4+16391a=i9>:1j65f4`83>!7093?o7c?80;33?>o313:1(<9>:4f8j41728;07d:7:18'527==m1e=:>51398m11=83.:;<4:d:l235<6;21b8;4?:%345?3c3g;<<7?;;:k71?6=,8=:68j4n053>43<3`<86=4+16391a=i9>:1=;54i7094?"6?80>h6`>71823>=n>80;6)?81;7g?k7083;376g90;29 4162<n0b<9?:0;8?l3a290/=:?55e9m526=9h10e8k50;&234<2l2d:;=4>b:9j1d<72-;<=7;k;o344?7d32c?j7>5$052>0b<f8=;6<j4;h67>5<#9>;19i5a16295`=<a=91<7*>7086`>h6?90:j65f7e83>!7093=n7c?80;28?l1d290/=:?57d9m526=921b;l4?:%345?1b3g;<<7<4;h5:>5<#9>;1;h5a16297>=n?10;6)?81;5f?k7083>07d98:18'527=?l1e=:>55:9j33<72-;<=79j;o344?0<3`=>6=4+16393`=i9>:1;65f7583>!7093=n7c?80;:8?l14290/=:?57d9m526=121b;?4?:%345?1b3g;<<7o4;h52>5<#9>;1;h5a1629f>=n>o0;6)?81;5f?k7083i07d8j:18'527=?l1e=:>5d:9j2a<72-;<=79j;o344?c<3`<h6=4+16393`=i9>:1j65f6c83>!7093=n7c?80;33?>o1i3:1(<9>:6g8j41728;07d86:18'527=?l1e=:>51398m3>=83.:;<48e:l235<6;21b::4?:%345?1b3g;<<7?;;:k52?6=,8=:6:k4n053>43<3`2?6=4+16393`=i9>:1=;54i9194?"6?80<i6`>71823>=n0;0;6)?81;5f?k7083;376g71;29 4162>o0b<9?:0;8?l>7290/=:?57d9m526=9h10e:h50;&234<0m2d:;=4>b:9j3g<72-;<=79j;o344?7d32c<<7>5$052>2c<f8=;6<j4;h46>5<#9>;1;h5a16295`=<a?>1<7*>7084a>h6?90:j65f8983>!7093227c?80;28?l>0290/=:?5889m526=921b4;4?:%345?>>3g;<<7<4;h:6>5<#9>;1445a16297>=n0m0;6)?81;:f?k7083:07d6l:18'527=0l1e=:>51:9j<g<72-;<=76j;o344?4<3`2j6=4+1639<`=i9>:1?65f19494?"6?80:4:5a16294>=n91?1<7*>7082<2=i9>:1=65f19694?"6?80:4:5a16296>=n9191<7*>7082<2=i9>:1?65f19`94?"6?80:4n5a16294>=n91k1<7*>7082<f=i9>:1=65f19;94?"6?80:4n5a16296>=n9121<7*>7082<f=i9>:1?65`a983>!7093k27c?80;28?jg0290/=:?5a89m526=921dm84?:%345?g>3g;<<7<4;nc7>5<#9>;1m45a16297>=hi:0;6)?81;c:?k7083>07bo=:18'527=i01e=:>55:9le4<72-;<=7o6;o344?0<3fk;6=4+1639e<=i9>:1;65`9g83>!7093k27c?80;:8?j?b290/=:?5a89m526=121d5i4?:%345?g>3g;<<7o4;n;`>5<#9>;1m45a1629f>=h1h0;6)?81;c:?k7083i07b76:18'527=i01e=:>5d:9l==<72-;<=7o6;o344?c<3f3<6=4+1639e<=i9>:1j65`9783>!7093k27c?80;33?>i>=3:1(<9>:`;8j41728;07b7;:18'527=i01e=:>51398k<5=83.:;<4n9:l235<6;21d5?4?:%345?g>3g;<<7?;;:m:5?6=,8=:6l74n053>43<3fkm6=4+1639e<=i9>:1=;54o`g94?"6?80j56`>71823>=him0;6)?81;c:?k7083;376anc;29 4162h30b<9?:0;8?jge290/=:?5a89m526=9h10clo50;&234<f12d:;=4>b:9le3<72-;<=7o6;o344?7d32e2n7>5$052>d?<f8=;6<j4;n;3>5<#9>;1m45a16295`=<g1l1<7*>708b=>h6?90:j65`c883>!7093ij7c?80;28?je?290/=:?5c`9m526=921do;4?:%345?ef3g;<<7<4;na6>5<#9>;1ol5a16297>=hk=0;6)?81;ab?k7083>07bm<:18'527=kh1e=:>55:9lg7<72-;<=7mn;o344?0<3fi:6=4+1639gd=i9>:1;65`c183>!7093ij7c?80;:8?jda290/=:?5c`9m526=121dnh4?:%345?ef3g;<<7o4;n`g>5<#9>;1ol5a1629f>=hjk0;6)?81;ab?k7083i07bln:18'527=kh1e=:>5d:9lf<<72-;<=7mn;o344?c<3fh36=4+1639gd=i9>:1j65`b683>!7093ij7c?80;33?>ie>3:1(<9>:bc8j41728;07bl::18'527=kh1e=:>51398kg2=83.:;<4la:l235<6;21dn>4?:%345?ef3g;<<7?;;:ma6?6=,8=:6no4n053>43<3fn;6=4+1639gd=i9>:1=;54obd94?"6?80hm6`>71823>=hkl0;6)?81;ab?k7083;376ald;29 4162jk0b<9?:0;8?jed290/=:?5c`9m526=9h10cnl50;&234<di2d:;=4>b:9lg2<72-;<=7mn;o344?7d32eio7>5$052>fg<f8=;6<j4;n`2>5<#9>;1ol5a16295`=<gk:1<7*>708`e>h6?90:j65`d583>!7093n>7c?80;28?jb4290/=:?5d49m526=921dh?4?:%345?b23g;<<7<4;nf2>5<#9>;1h85a16297>=hl00;6)?81;fb?k7083:07bj7:18'527=lh1e=:>51:9l`2<72-;<=7jn;o344?4<3fn=6=4+1639`d=i9>:1?65rb05g>5<ei3:1<v*>7`8237=O90:0D<6?;[1:>f}12>0n6k4>3;37>43=9?0:<7?>:0595=<zf=;186`;2;68 44e281/=?m51:&f7?4<,l>1>6*j5;08 `0=:2.n;7<4$d:96>"60l0:;>5+16495>"bj380(hm52:&f`?4<,lo1>6*jf;08 c6=:2.m=7<4$g096>"a;380(k:52:&e1?4<,o<1>6*i7;08 c>=:2.m57<4$gc96>"aj380(km52:&e`?4<,oo1>6*if;08 4672;1/==?52:&247<53-;;?7<4$027>7=#99?1>6*>0781?!77?380(<>7:39'55?=:2.:<l4=;%33f?4<,8:h6?5+11f96>"68l097)??f;08 4772;1/=<?52:&257<53-;:?7<4$037>7=#98?1>6*>1781?!76?380(<?7:39'54?=:2.:=l4=;%32f?4<,8;h6?5+10f96>"69l097)?>f;08 4472;1/=??52:&267<53-;9?7<4$007>7=#9;?1>6*>2781?!75?380(<<7:39'57?=:2.:>l4=;%340?503-o26?5+e`81?!7?l3;<?6*>7682?l5d2900e>j50;9j`c<722cn<7>5;h34<?6=3`;<57>5;h3f>5<#9>;1=k5a16294>=n9m0;6)?81;3e?k7083;07d?l:18'527=9o1e=:>52:9j5g<72-;<=7?i;o344?5<3`8<6=4+16395c=i9>:1865f2783>!7093;m7c?80;78?l42290/=:?51g9m526=>21b>94?:%345?7a3g;<<794;h00>5<#9>;1=k5a1629<>=n:;0;6)?81;3e?k7083307d<>:18'527=9o1e=:>5a:9j65<72-;<=7?i;o344?d<3`;j6=4+16395c=i9>:1o65f1883>!7093;m7c?80;f8?l4c290/=:?52d9m526=821b>n4?:%345?4b3g;<<7?4;h0a>5<#9>;1>h5a16296>=n:h0;6)?81;0f?k7083907d=9:18'527=:l1e=:>54:9j70<72-;<=7<j;o344?3<3`9?6=4+16396`=i9>:1:65f3283>!70938n7c?80;58?l55290/=:?52d9m526=021b?<4?:%345?4b3g;<<774;h13>5<#9>;1>h5a1629e>=n:o0;6)?81;0f?k7083h07d<6:18'527=:l1e=:>5c:9j6=<72-;<=7<j;o344?b<3`?h6=4+16391a=i9>:1<65f5c83>!7093?o7c?80;38?l3>290/=:?55e9m526=:21b954?:%345?3c3g;<<7=4;h74>5<#9>;19i5a16290>=n=?0;6)?81;7g?k7083?07d;::18'527==m1e=:>56:9j11<72-;<=7;k;o344?1<3`?86=4+16391a=i9>:1465f5383>!7093?o7c?80;;8?l36290/=:?55e9m526=i21b9=4?:%345?3c3g;<<7l4;h6f>5<#9>;19i5a1629g>=n<m0;6)?81;7g?k7083n07d:l:18'527==m1e=:>5e:9j0g<72-;<=7;k;o344?`<3`>j6=4+16391a=i9>:1==54i5;94?"6?80>h6`>71825>=n<10;6)?81;7g?k7083;976g;7;29 4162<n0b<9?:018?l21290/=:?55e9m526=9=10e9;50;&234<2l2d:;=4>5:9j26<72-;<=7;k;o344?7132c=>7>5$052>0b<f8=;6<94;h42>5<#9>;19i5a16295==<a?:1<7*>7086`>h6?90:565f5g83>!7093?o7c?80;3b?>o2m3:1(<9>:4f8j41728h07d;n:18'527==m1e=:>51b98m1`=83.:;<4:d:l235<6l21b894?:%345?3c3g;<<7?j;:k77?6=,8=:68j4n053>4`<3`=o6=4+16393`=i9>:1<65f7b83>!7093=n7c?80;38?l1f290/=:?57d9m526=:21b;44?:%345?1b3g;<<7=4;h5;>5<#9>;1;h5a16290>=n?>0;6)?81;5f?k7083?07d99:18'527=?l1e=:>56:9j30<72-;<=79j;o344?1<3`=?6=4+16393`=i9>:1465f7283>!7093=n7c?80;;8?l15290/=:?57d9m526=i21b;<4?:%345?1b3g;<<7l4;h4e>5<#9>;1;h5a1629g>=n>l0;6)?81;5f?k7083n07d8k:18'527=?l1e=:>5e:9j2f<72-;<=79j;o344?`<3`<i6=4+16393`=i9>:1==54i7c94?"6?80<i6`>71825>=n>00;6)?81;5f?k7083;976g98;29 4162>o0b<9?:018?l00290/=:?57d9m526=9=10e;850;&234<0m2d:;=4>5:9j<1<72-;<=79j;o344?7132c3?7>5$052>2c<f8=;6<94;h:1>5<#9>;1;h5a16295==<a1;1<7*>7084a>h6?90:565f8183>!7093=n7c?80;3b?>o0n3:1(<9>:6g8j41728h07d9m:18'527=?l1e=:>51b98m26=83.:;<48e:l235<6l21b:84?:%345?1b3g;<<7?j;:k50?6=,8=:6:k4n053>4`<3`236=4+1639<<=i9>:1<65f8683>!7093227c?80;38?l>1290/=:?5889m526=:21b484?:%345?>>3g;<<7=4;h:g>5<#9>;14h5a16294>=n0j0;6)?81;:f?k7083;07d6m:18'527=0l1e=:>52:9j<d<72-;<=76j;o344?5<3`;3:7>5$052>4>03g;<<7>4;h3;1?6=,8=:6<68;o344?7<3`;387>5$052>4>03g;<<7<4;h3;7?6=,8=:6<68;o344?5<3`;3n7>5$052>4>d3g;<<7>4;h3;e?6=,8=:6<6l;o344?7<3`;357>5$052>4>d3g;<<7<4;h3;<?6=,8=:6<6l;o344?5<3fk36=4+1639e<=i9>:1<65`a683>!7093k27c?80;38?jg2290/=:?5a89m526=:21dm94?:%345?g>3g;<<7=4;nc0>5<#9>;1m45a16290>=hi;0;6)?81;c:?k7083?07bo>:18'527=i01e=:>56:9le5<72-;<=7o6;o344?1<3f3m6=4+1639e<=i9>:1465`9d83>!7093k27c?80;;8?j?c290/=:?5a89m526=i21d5n4?:%345?g>3g;<<7l4;n;b>5<#9>;1m45a1629g>=h100;6)?81;c:?k7083n07b77:18'527=i01e=:>5e:9l=2<72-;<=7o6;o344?`<3f3=6=4+1639e<=i9>:1==54o8794?"6?80j56`>71825>=h1=0;6)?81;c:?k7083;976a63;29 4162h30b<9?:018?j?5290/=:?5a89m526=9=10c4?50;&234<f12d:;=4>5:9lec<72-;<=7o6;o344?7132eji7>5$052>d?<f8=;6<94;ncg>5<#9>;1m45a16295==<ghi1<7*>708b=>h6?90:565`ac83>!7093k27c?80;3b?>ifi3:1(<9>:`;8j41728h07bo9:18'527=i01e=:>51b98k<d=83.:;<4n9:l235<6l21d5=4?:%345?g>3g;<<7?j;:m;b?6=,8=:6l74n053>4`<3fi26=4+1639gd=i9>:1<65`c983>!7093ij7c?80;38?je1290/=:?5c`9m526=:21do84?:%345?ef3g;<<7=4;na7>5<#9>;1ol5a16290>=hk:0;6)?81;ab?k7083?07bm=:18'527=kh1e=:>56:9lg4<72-;<=7mn;o344?1<3fi;6=4+1639gd=i9>:1465`bg83>!7093ij7c?80;;8?jdb290/=:?5c`9m526=i21dni4?:%345?ef3g;<<7l4;n`a>5<#9>;1ol5a1629g>=hjh0;6)?81;ab?k7083n07bl6:18'527=kh1e=:>5e:9lf=<72-;<=7mn;o344?`<3fh<6=4+1639gd=i9>:1==54oc494?"6?80hm6`>71825>=hj<0;6)?81;ab?k7083;976am4;29 4162jk0b<9?:018?jd4290/=:?5c`9m526=9=10co<50;&234<di2d:;=4>5:9l`5<72-;<=7mn;o344?7132ehj7>5$052>fg<f8=;6<94;naf>5<#9>;1ol5a16295==<gjn1<7*>708`e>h6?90:565`cb83>!7093ij7c?80;3b?>idj3:1(<9>:bc8j41728h07bm8:18'527=kh1e=:>51b98kge=83.:;<4la:l235<6l21dn<4?:%345?ef3g;<<7?j;:ma4?6=,8=:6no4n053>4`<3fn?6=4+1639`0=i9>:1<65`d283>!7093n>7c?80;38?jb5290/=:?5d49m526=:21dh<4?:%345?b23g;<<7=4;nf:>5<#9>;1hl5a16294>=hl10;6)?81;fb?k7083;07bj8:18'527=lh1e=:>52:9l`3<72-;<=7jn;o344?5<3th:;n4?:cc94?6|,8=j6<9=;I3:4>N6091Q?44l{784>`<a2891=94>5;35>46=980:;7?7:|l75?2<f=8186*>2c82?!75k3;0(h=52:&f0?4<,l?1>6*j6;08 `1=:2.n47<4$0:f>4143-;<:7?4$d`96>"bk380(hj52:&fa?4<,ll1>6*i0;08 c7=:2.m>7<4$g196>"a<380(k;52:&e2?4<,o=1>6*i8;08 c?=:2.mm7<4$g`96>"ak380(kj52:&ea?4<,ol1>6*>0181?!779380(<>=:39'555=:2.:<94=;%331?4<,8:=6?5+11596>"681097)??9;08 46f2;1/==l52:&24f<53-;;h7<4$02f>7=#99l1>6*>1181?!769380(<?=:39'545=:2.:=94=;%321?4<,8;=6?5+10596>"691097)?>9;08 47f2;1/=<l52:&25f<53-;:h7<4$03f>7=#98l1>6*>2181?!759380(<<=:39'575=:2.:>94=;%311?4<,88=6?5+13596>"6:1097)?=9;08 44f2;1/=::5369'a<<53-oj6?5+19f9525<,8=<6<5f3b83>>o4l3:17dji:188m`6=831b=:650;9j52?=831b=h4?:%345?7a3g;<<7>4;h3g>5<#9>;1=k5a16295>=n9j0;6)?81;3e?k7083807d?m:18'527=9o1e=:>53:9j62<72-;<=7?i;o344?2<3`8=6=4+16395c=i9>:1965f2483>!7093;m7c?80;48?l43290/=:?51g9m526=?21b>>4?:%345?7a3g;<<764;h01>5<#9>;1=k5a1629=>=n:80;6)?81;3e?k7083k07d<?:18'527=9o1e=:>5b:9j5d<72-;<=7?i;o344?e<3`;26=4+16395c=i9>:1h65f2e83>!70938n7c?80;28?l4d290/=:?52d9m526=921b>o4?:%345?4b3g;<<7<4;h0b>5<#9>;1>h5a16297>=n;?0;6)?81;0f?k7083>07d=::18'527=:l1e=:>55:9j71<72-;<=7<j;o344?0<3`986=4+16396`=i9>:1;65f3383>!70938n7c?80;:8?l56290/=:?52d9m526=121b?=4?:%345?4b3g;<<7o4;h0e>5<#9>;1>h5a1629f>=n:00;6)?81;0f?k7083i07d<7:18'527=:l1e=:>5d:9j1f<72-;<=7;k;o344?6<3`?i6=4+16391a=i9>:1=65f5883>!7093?o7c?80;08?l3?290/=:?55e9m526=;21b9:4?:%345?3c3g;<<7:4;h75>5<#9>;19i5a16291>=n=<0;6)?81;7g?k7083<07d;;:18'527==m1e=:>57:9j16<72-;<=7;k;o344?><3`?96=4+16391a=i9>:1565f5083>!7093?o7c?80;c8?l37290/=:?55e9m526=j21b8h4?:%345?3c3g;<<7m4;h6g>5<#9>;19i5a1629`>=n<j0;6)?81;7g?k7083o07d:m:18'527==m1e=:>5f:9j0d<72-;<=7;k;o344?7732c?57>5$052>0b<f8=;6<?4;h6;>5<#9>;19i5a162957=<a==1<7*>7086`>h6?90:?65f4783>!7093?o7c?80;37?>o3=3:1(<9>:4f8j41728?07d8<:18'527==m1e=:>51798m34=83.:;<4:d:l235<6?21b:<4?:%345?3c3g;<<7?7;:k54?6=,8=:68j4n053>4?<3`?m6=4+16391a=i9>:1=l54i4g94?"6?80>h6`>7182f>=n=h0;6)?81;7g?k7083;h76g;f;29 4162<n0b<9?:0f8?l23290/=:?55e9m526=9l10e9=50;&234<2l2d:;=4>f:9j3a<72-;<=79j;o344?6<3`=h6=4+16393`=i9>:1=65f7`83>!7093=n7c?80;08?l1>290/=:?57d9m526=;21b;54?:%345?1b3g;<<7:4;h54>5<#9>;1;h5a16291>=n??0;6)?81;5f?k7083<07d9::18'527=?l1e=:>57:9j31<72-;<=79j;o344?><3`=86=4+16393`=i9>:1565f7383>!7093=n7c?80;c8?l16290/=:?57d9m526=j21b:k4?:%345?1b3g;<<7m4;h4f>5<#9>;1;h5a1629`>=n>m0;6)?81;5f?k7083o07d8l:18'527=?l1e=:>5f:9j2g<72-;<=79j;o344?7732c=m7>5$052>2c<f8=;6<?4;h4:>5<#9>;1;h5a162957=<a?21<7*>7084a>h6?90:?65f6683>!7093=n7c?80;37?>o1>3:1(<9>:6g8j41728?07d6;:18'527=?l1e=:>51798m=5=83.:;<48e:l235<6?21b4?4?:%345?1b3g;<<7?7;:k;5?6=,8=:6:k4n053>4?<3`2;6=4+16393`=i9>:1=l54i6d94?"6?80<i6`>7182f>=n?k0;6)?81;5f?k7083;h76g80;29 4162>o0b<9?:0f8?l02290/=:?57d9m526=9l10e;:50;&234<0m2d:;=4>f:9j<=<72-;<=766;o344?6<3`2<6=4+1639<<=i9>:1=65f8783>!7093227c?80;08?l>2290/=:?5889m526=;21b4i4?:%345?>b3g;<<7>4;h:`>5<#9>;14h5a16295>=n0k0;6)?81;:f?k7083807d6n:18'527=0l1e=:>53:9j5=0=83.:;<4>869m526=821b=5;50;&234<60>1e=:>51:9j5=2=83.:;<4>869m526=:21b=5=50;&234<60>1e=:>53:9j5=d=83.:;<4>8b9m526=821b=5o50;&234<60j1e=:>51:9j5=?=83.:;<4>8b9m526=:21b=5650;&234<60j1e=:>53:9le=<72-;<=7o6;o344?6<3fk<6=4+1639e<=i9>:1=65`a483>!7093k27c?80;08?jg3290/=:?5a89m526=;21dm>4?:%345?g>3g;<<7:4;nc1>5<#9>;1m45a16291>=hi80;6)?81;c:?k7083<07bo?:18'527=i01e=:>57:9l=c<72-;<=7o6;o344?><3f3n6=4+1639e<=i9>:1565`9e83>!7093k27c?80;c8?j?d290/=:?5a89m526=j21d5l4?:%345?g>3g;<<7m4;n;:>5<#9>;1m45a1629`>=h110;6)?81;c:?k7083o07b78:18'527=i01e=:>5f:9l=3<72-;<=7o6;o344?7732e297>5$052>d?<f8=;6<?4;n;7>5<#9>;1m45a162957=<g091<7*>708b=>h6?90:?65`9383>!7093k27c?80;37?>i>93:1(<9>:`;8j41728?07boi:18'527=i01e=:>51798kdc=83.:;<4n9:l235<6?21dmi4?:%345?g>3g;<<7?7;:mbg?6=,8=:6l74n053>4?<3fki6=4+1639e<=i9>:1=l54o`c94?"6?80j56`>7182f>=hi?0;6)?81;c:?k7083;h76a6b;29 4162h30b<9?:0f8?j?7290/=:?5a89m526=9l10c5h50;&234<f12d:;=4>f:9lg<<72-;<=7mn;o344?6<3fi36=4+1639gd=i9>:1=65`c783>!7093ij7c?80;08?je2290/=:?5c`9m526=;21do94?:%345?ef3g;<<7:4;na0>5<#9>;1ol5a16291>=hk;0;6)?81;ab?k7083<07bm>:18'527=kh1e=:>57:9lg5<72-;<=7mn;o344?><3fhm6=4+1639gd=i9>:1565`bd83>!7093ij7c?80;c8?jdc290/=:?5c`9m526=j21dno4?:%345?ef3g;<<7m4;n`b>5<#9>;1ol5a1629`>=hj00;6)?81;ab?k7083o07bl7:18'527=kh1e=:>5f:9lf2<72-;<=7mn;o344?7732ei:7>5$052>fg<f8=;6<?4;n`6>5<#9>;1ol5a162957=<gk>1<7*>708`e>h6?90:?65`b283>!7093ij7c?80;37?>ie:3:1(<9>:bc8j41728?07bj?:18'527=kh1e=:>51798kf`=83.:;<4la:l235<6?21doh4?:%345?ef3g;<<7?7;:m``?6=,8=:6no4n053>4?<3fih6=4+1639gd=i9>:1=l54ob`94?"6?80hm6`>7182f>=hk>0;6)?81;ab?k7083;h76amc;29 4162jk0b<9?:0f8?jd6290/=:?5c`9m526=9l10co>50;&234<di2d:;=4>f:9l`1<72-;<=7j:;o344?6<3fn86=4+1639`0=i9>:1=65`d383>!7093n>7c?80;08?jb6290/=:?5d49m526=;21dh44?:%345?bf3g;<<7>4;nf;>5<#9>;1hl5a16295>=hl>0;6)?81;fb?k7083807bj9:18'527=lh1e=:>53:9~f41e290im7>50z&23d<6?;1C=4>4H0:3?_5>2jq=6:4j:g827?7328?1=;4>0;32>41=910vb9?54:l76?2<,88i6<5+13a95>"b;380(h:52:&f1?4<,l<1>6*j7;08 `>=:2.:4h4>729'520=92.nn7<4$da96>"bl380(hk52:&fb?4<,o:1>6*i1;08 c4=:2.m?7<4$g696>"a=380(k852:&e3?4<,o21>6*i9;08 cg=:2.mn7<4$ga96>"al380(kk52:&eb?4<,8:;6?5+11396>"68;097)??3;08 4632;1/==;52:&243<53-;;;7<4$02;>7=#9931>6*>0`81?!77j380(<>l:39'55b=:2.:<h4=;%33b?4<,8;;6?5+10396>"69;097)?>3;08 4732;1/=<;52:&253<53-;:;7<4$03;>7=#9831>6*>1`81?!76j380(<?l:39'54b=:2.:=h4=;%32b?4<,88;6?5+13396>"6:;097)?=3;08 4432;1/=?;52:&263<53-;9;7<4$00;>7=#9;31>6*>2`81?!70<39<7)k6:39'ad<53-;3h7?83:&232<63`9h6=44i2f94?=nlo0;66gj0;29?l7003:17d?89;29?l7b290/=:?51g9m526=821b=i4?:%345?7a3g;<<7?4;h3`>5<#9>;1=k5a16296>=n9k0;6)?81;3e?k7083907d<8:18'527=9o1e=:>54:9j63<72-;<=7?i;o344?3<3`8>6=4+16395c=i9>:1:65f2583>!7093;m7c?80;58?l44290/=:?51g9m526=021b>?4?:%345?7a3g;<<774;h02>5<#9>;1=k5a1629e>=n:90;6)?81;3e?k7083h07d?n:18'527=9o1e=:>5c:9j5<<72-;<=7?i;o344?b<3`8o6=4+16396`=i9>:1<65f2b83>!70938n7c?80;38?l4e290/=:?52d9m526=:21b>l4?:%345?4b3g;<<7=4;h15>5<#9>;1>h5a16290>=n;<0;6)?81;0f?k7083?07d=;:18'527=:l1e=:>56:9j76<72-;<=7<j;o344?1<3`996=4+16396`=i9>:1465f3083>!70938n7c?80;;8?l57290/=:?52d9m526=i21b>k4?:%345?4b3g;<<7l4;h0:>5<#9>;1>h5a1629g>=n:10;6)?81;0f?k7083n07d;l:18'527==m1e=:>50:9j1g<72-;<=7;k;o344?7<3`?26=4+16391a=i9>:1>65f5983>!7093?o7c?80;18?l30290/=:?55e9m526=<21b9;4?:%345?3c3g;<<7;4;h76>5<#9>;19i5a16292>=n==0;6)?81;7g?k7083=07d;<:18'527==m1e=:>58:9j17<72-;<=7;k;o344??<3`?:6=4+16391a=i9>:1m65f5183>!7093?o7c?80;`8?l2b290/=:?55e9m526=k21b8i4?:%345?3c3g;<<7j4;h6`>5<#9>;19i5a1629a>=n<k0;6)?81;7g?k7083l07d:n:18'527==m1e=:>51198m1?=83.:;<4:d:l235<6921b854?:%345?3c3g;<<7?=;:k73?6=,8=:68j4n053>45<3`>=6=4+16391a=i9>:1=954i5794?"6?80>h6`>71821>=n>:0;6)?81;7g?k7083;=76g92;29 4162<n0b<9?:058?l06290/=:?55e9m526=9110e;>50;&234<2l2d:;=4>9:9j1c<72-;<=7;k;o344?7f32c>i7>5$052>0b<f8=;6<l4;h7b>5<#9>;19i5a16295f=<a=l1<7*>7086`>h6?90:h65f4583>!7093?o7c?80;3f?>o3;3:1(<9>:4f8j41728l07d9k:18'527=?l1e=:>50:9j3f<72-;<=79j;o344?7<3`=j6=4+16393`=i9>:1>65f7883>!7093=n7c?80;18?l1?290/=:?57d9m526=<21b;:4?:%345?1b3g;<<7;4;h55>5<#9>;1;h5a16292>=n?<0;6)?81;5f?k7083=07d9;:18'527=?l1e=:>58:9j36<72-;<=79j;o344??<3`=96=4+16393`=i9>:1m65f7083>!7093=n7c?80;`8?l0a290/=:?57d9m526=k21b:h4?:%345?1b3g;<<7j4;h4g>5<#9>;1;h5a1629a>=n>j0;6)?81;5f?k7083l07d8m:18'527=?l1e=:>51198m3g=83.:;<48e:l235<6921b:44?:%345?1b3g;<<7?=;:k5<?6=,8=:6:k4n053>45<3`<<6=4+16393`=i9>:1=954i7494?"6?80<i6`>71821>=n0=0;6)?81;5f?k7083;=76g73;29 4162>o0b<9?:058?l>5290/=:?57d9m526=9110e5?50;&234<0m2d:;=4>9:9j<5<72-;<=79j;o344?7f32c<j7>5$052>2c<f8=;6<l4;h5a>5<#9>;1;h5a16295f=<a>:1<7*>7084a>h6?90:h65f6483>!7093=n7c?80;3f?>o1<3:1(<9>:6g8j41728l07d67:18'527=001e=:>50:9j<2<72-;<=766;o344?7<3`2=6=4+1639<<=i9>:1>65f8483>!7093227c?80;18?l>c290/=:?58d9m526=821b4n4?:%345?>b3g;<<7?4;h:a>5<#9>;14h5a16296>=n0h0;6)?81;:f?k7083907d?76;29 416282<7c?80;28?l7?=3:1(<9>:0:4?k7083;07d?74;29 416282<7c?80;08?l7?;3:1(<9>:0:4?k7083907d?7b;29 416282h7c?80;28?l7?i3:1(<9>:0:`?k7083;07d?79;29 416282h7c?80;08?l7?03:1(<9>:0:`?k7083907bo7:18'527=i01e=:>50:9le2<72-;<=7o6;o344?7<3fk>6=4+1639e<=i9>:1>65`a583>!7093k27c?80;18?jg4290/=:?5a89m526=<21dm?4?:%345?g>3g;<<7;4;nc2>5<#9>;1m45a16292>=hi90;6)?81;c:?k7083=07b7i:18'527=i01e=:>58:9l=`<72-;<=7o6;o344??<3f3o6=4+1639e<=i9>:1m65`9b83>!7093k27c?80;`8?j?f290/=:?5a89m526=k21d544?:%345?g>3g;<<7j4;n;;>5<#9>;1m45a1629a>=h1>0;6)?81;c:?k7083l07b79:18'527=i01e=:>51198k<3=83.:;<4n9:l235<6921d594?:%345?g>3g;<<7?=;:m:7?6=,8=:6l74n053>45<3f396=4+1639e<=i9>:1=954o8394?"6?80j56`>71821>=hio0;6)?81;c:?k7083;=76ane;29 4162h30b<9?:058?jgc290/=:?5a89m526=9110clm50;&234<f12d:;=4>9:9leg<72-;<=7o6;o344?7f32ejm7>5$052>d?<f8=;6<l4;nc5>5<#9>;1m45a16295f=<g0h1<7*>708b=>h6?90:h65`9183>!7093k27c?80;3f?>i?n3:1(<9>:`;8j41728l07bm6:18'527=kh1e=:>50:9lg=<72-;<=7mn;o344?7<3fi=6=4+1639gd=i9>:1>65`c483>!7093ij7c?80;18?je3290/=:?5c`9m526=<21do>4?:%345?ef3g;<<7;4;na1>5<#9>;1ol5a16292>=hk80;6)?81;ab?k7083=07bm?:18'527=kh1e=:>58:9lfc<72-;<=7mn;o344??<3fhn6=4+1639gd=i9>:1m65`be83>!7093ij7c?80;`8?jde290/=:?5c`9m526=k21dnl4?:%345?ef3g;<<7j4;n`:>5<#9>;1ol5a1629a>=hj10;6)?81;ab?k7083l07bl8:18'527=kh1e=:>51198kg0=83.:;<4la:l235<6921dn84?:%345?ef3g;<<7?=;:ma0?6=,8=:6no4n053>45<3fh86=4+1639gd=i9>:1=954oc094?"6?80hm6`>71821>=hl90;6)?81;ab?k7083;=76alf;29 4162jk0b<9?:058?jeb290/=:?5c`9m526=9110cnj50;&234<di2d:;=4>9:9lgf<72-;<=7mn;o344?7f32ehn7>5$052>fg<f8=;6<l4;na4>5<#9>;1ol5a16295f=<gki1<7*>708`e>h6?90:h65`b083>!7093ij7c?80;3f?>ie83:1(<9>:bc8j41728l07bj;:18'527=l<1e=:>50:9l`6<72-;<=7j:;o344?7<3fn96=4+1639`0=i9>:1>65`d083>!7093n>7c?80;18?jb>290/=:?5d`9m526=821dh54?:%345?bf3g;<<7?4;nf4>5<#9>;1hl5a16296>=hl?0;6)?81;fb?k7083907p}>d983>42esW;i96P=019]5a`<V8nn7S?kd:\2`f=Y9mh0R<jn;_3f<>X6m>1U=h84^0g6?[7b<2T:i>5Q1d08Z4c63W;o56P>d99>5<7=m816=:k516:8941b28=270?8e;3b?870m3;270?8e;0:?870m38370?8e;7`?870m3?i70?8e;7:?870m3?370?8e;74?870m3?=70?8e;76?870m3??70?8e;70?870m3?970?8e;72?870m3?;70?8e;6f?870m3>o70?8e;6`?870m3>i70?8e;6b?870m3>270?8e;6;?870m3><70?8e;65?870m3>>70?8e;40?870m3<970?8e;42?870m3<;70?8e;7e?870m3?n70?8e;5g?870m3=h70?8e;5b?870m3=270?8e;5;?870m3=<70?8e;55?870m3=>70?8e;57?870m3=870?8e;51?870m3=:70?8e;4e?870m3<n70?8e;4g?870m3<h70?8e;4a?870m3<j70?8e;4:?870m3<370?8e;44?870m3<=70?8e;:7?870m32870?8e;:1?870m32:70?8e;:3?870m3=m70?8e;5a?870m3=;70?8e;46?870m3<?70?8e;:;?870m32<70?8e;:5?870m32>70?8e;:g?870m32h70?8e;:a?870m32j70?8e;3;f>;6?l0:4l5216g95=?<58=n6<67;<34`?70027:;i4>789>52b=9h16=:j5189>52b=:016=:j5299>52b==j16=:j55c9>52b==016=:j5599>52b==>16=:j5579>52b==<16=:j5559>52b==:16=:j5539>52b==816=:j5519>52b=<l16=:j54e9>52b=<j16=:j54c9>52b=<h16=:j5489>52b=<116=:j5469>52b=<?16=:j5449>52b=>:16=:j5639>52b=>816=:j5619>52b==o16=:j55d9>52b=?m16=:j57b9>52b=?h16=:j5789>52b=?116=:j5769>52b=??16=:j5749>52b=?=16=:j5729>52b=?;16=:j5709>52b=>o16=:j56d9>52b=>m16=:j56b9>52b=>k16=:j56`9>52b=>016=:j5699>52b=>>16=:j5679>52b=0=16=:j5829>52b=0;16=:j5809>52b=0916=:j57g9>52b=?k16=:j5719>52b=><16=:j5659>52b=0116=:j5869>52b=0?16=:j5849>52b=0m16=:j58b9>52b=0k16=:j58`9>52b=91h01<9k:0:b?870l3;3563>7e82<==:9>i1=:64=05`>41>34;<o7?n;<34g?7>34;<o7<6;<34g?4?34;<o7;l;<34g?3e34;<o7;6;<34g?3?34;<o7;8;<34g?3134;<o7;:;<34g?3334;<o7;<;<34g?3534;<o7;>;<34g?3734;<o7:j;<34g?2c34;<o7:l;<34g?2e34;<o7:n;<34g?2>34;<o7:7;<34g?2034;<o7:9;<34g?2234;<o78<;<34g?0534;<o78>;<34g?0734;<o7;i;<34g?3b34;<o79k;<34g?1d34;<o79n;<34g?1>34;<o797;<34g?1034;<o799;<34g?1234;<o79;;<34g?1434;<o79=;<34g?1634;<o78i;<34g?0b34;<o78k;<34g?0d34;<o78m;<34g?0f34;<o786;<34g?0?34;<o788;<34g?0134;<o76;;<34g?>434;<o76=;<34g?>634;<o76?;<34g?1a34;<o79m;<34g?1734;<o78:;<34g?0334;<o767;<34g?>034;<o769;<34g?>234;<o76k;<34g?>d34;<o76m;<34g?>f34;<o7?7b:?23f<60h16=:m519;8941d282370?8b;34<>;6?k0:;45216`95d=:9>h1=45216`96<=:9>h1>55216`91f=:9>h19o5216`91<=:9>h1955216`912=:9>h19;5216`910=:9>h1995216`916=:9>h19?5216`914=:9>h19=5216`90`=:9>h18i5216`90f=:9>h18o5216`90d=:9>h1845216`90==:9>h18:5216`903=:9>h1885216`926=:9>h1:?5216`924=:9>h1:=5216`91c=:9>h19h5216`93a=:9>h1;n5216`93d=:9>h1;45216`93==:9>h1;:5216`933=:9>h1;85216`931=:9>h1;>5216`937=:9>h1;<5216`92c=:9>h1:h5216`92a=:9>h1:n5216`92g=:9>h1:l5216`92<=:9>h1:55216`922=:9>h1:;5216`9<1=:9>h14>5216`9<7=:9>h14<5216`9<5=:9>h1;k5216`93g=:9>h1;=5216`920=:9>h1:95216`9<==:9>h14:5216`9<3=:9>h1485216`9<a=:9>h14n5216`9<g=:9>h14l5216`95=d<58=i6<6n;<34f?7?127:;o4>899~w4d4290>wS?m3:?23`<4k27:;i4<c:?23f<4k27:;o4<c:p5g2=83?pR<l;;<34a?5c34;<h7=k;<34g?5c34;<n7=k;|q2b5<72;qU=k>4=05f>f1<uz;nj7>52z\2ac=:9>o1nn5rs0gf>5<5sW;ni63>7d8a5>{t9ln1<7<t^0gg?870m3h;7p}>eb83>7}Y9li01<9k:b58yv7bj3:1>vP>ec9>52b=jj1v<h6:181[7a127:;i4m1:p5c>=838pR<h7;<34`?d73ty:j:4?:3y]5c1<58=h6n94}r3e2?6=:rT:j;5216a9ff=z{8l>6=4={_3e1>;6?j0i=6s|1g694?4|V8l?70?8c;`3?xu6n:0;6?uQ1g18941e2j=0q~?i2;296~X6n;16=:l5bb9~w4cf2909wS?ja:?23g<e92wx=h750;0xZ4c>34;<n7l?;|q146<728;pR?><;<34a?7?>27:;h4>849>52c=91>01<9j:0:0?870l3;3:63>7e82<0=:9>n1=5:4=05g>4>434;<o7?76:?23f<60<16=:m51968941d282870?8b;3;2>;6?k0:485216`95=2<58=i6<6<;|q2=g<72<qU=4l4=05f>4c<58=o6<k4=05`>4c<58=i6<k4}r3:e?6==rT:5l5216g95a=:9>n1=i5216a95a=:9>h1=i5rs0c7>5<2sW;j863>7d82g>;6?m0:o63>7b82g>;6?k0:o6s|1`194?3|V8k870?8e;3a?870l3;i70?8c;3a?870j3;i7p}>a383>0}Y9h801<9j:358941c2;=01<9l:358941e2;=0q~?n1;291~X6i816=:k5279>52b=:?16=:m5279>52d=:?1v<o?:186[7f827:;h4=5:?23a<5=27:;n4=5:?23g<5=2wx=4h50;7xZ4?a34;<i7<;;<34`?4334;<o7<;;<34f?433ty:5h4?:4y]5<c<58=n6?=4=05g>75<58=h6?=4=05a>75<uz;2h7>55z\2=a=:9>o1>?5216f967=:9>i1>?5216`967=z{8326=4:{_3:=>;6?l09=63>7e815>;6?j09=63>7c815>{t9021<7;t^0;;?870m38;70?8d;03?870k38;70?8b;03?xu6i10;68uQ1`:8941b2;n01<9k:3f8941d2;n01<9m:3f8yv7f?3:19vP>a69>52c=:j16=:j52b9>52e=:j16=:l52b9~w4d6290>wS?m1:?23`<5j27:;i4=b:?23f<5j27:;o4=b:p5g6=83?pR<l?;<34a?4f34;<h7<n;<34g?4f34;<n7<n;|q2ec<72<qU=lh4=05f>60<58=o6>84=05`>60<58=i6>84}r3ba?6==rT:mh5216g970=:9>n1?85216a970=:9>h1?85rs0cg>5<2sW;jh63>7d800>;6?m08863>7b800>;6?k0886s|1`a94?3|V8kh70?8e;10?870l39870?8c;10?870j3987p}>ac83>0}Y9hh01<9j:208941c2:801<9l:208941e2:80q~?na;291~X6ih16=:k5309>52b=;816=:m5309>52d=;81v<o9:186[7f>27:;h4<0:?23a<4827:;n4<0:?23g<482wx=l;50;7xZ4g234;<i7<i;<34`?4a34;<o7<i;<34f?4a3ty:ni4?:3y]5gb<58=n68o4}r3ag?6=:rT:nn5216g90c=z{8hi6=4={_3af>;6?l0?86s|1cc94?4|V8hj70?8e;60?xu6j00;6?uQ1c;8941c2<k0q~?m8;296~X6j116=:j54g9~w4e12909wS?l6:?23a<3<2wx=n;50;0xZ4e234;<h7:<;|q2g1<72;qU=n:4=05`>0g<uz;h?7>52z\2g6=:9>i18k5rs0a1>5<5sW;h>63>7b870>{t9j;1<7<t^0a2?870k3>87p}>c183>7}Y9j:01<9m:4c8yv7en3:1>vP>bg9>52d=<o1v<l8:181[7e?27:;o4;4:p5g0=838pR<l9;<34f?243ty:?<4?:8y>5<4=9?o01<9j:ed8941b2l:01<9k:ed8941c2l:01<9l:ed8941d2l:01<9m:ed8941e2l:0qp}>b283>7}Y9k901>651c18 41a289h7p}>be83>7}Y9kn01>651cf8 41a28><7p}>bb83>7}Y9ki01>651ca8 41a28>j7p}>bc83>7}Y9kh01>651c`8 41a28>i7p}>b`83>7}Y9kk01>651cc8 41a28>o7p}>b883>7}Y9k301>651c;8 41a28?;7p}>b983>7}Y9k201>651c:8 41a28?i7p}>c783>7}Y9j<01>651b48 41a28<97p}>c483>7}Y9j?01>651b78 41a28997p}>c583>7}Y9j>01>651b68 41a28987p}>c283>7}Y9j901>651b18 41a289?7p}>c383>7}Y9j801>651b08 41a289>7p}>c083>7}Y9j;01>651b38 41a289=7p}>c183>7}Y9j:01>651b28 41a289<7p}>bg83>7}Y9kl01>651cd8 41a28937p}>b683>7}Y9k=01>651c58 41a28927p}>b783>7}Y9k<01>651c48 41a289j7p}>9c83>7}Y90h01>6518`8 41a289i7p}>9`83>7}Y90k01>6518c8 41a289o7p}>a583>7}Y9h>01>651`68 41a289n7p}>a283>7}Y9h901>651`18 41a289m7p}>a383>7}Y9h801>651`08 41a28>;7p}>a083>7}Y9h;01>651`38 41a28>:7p}>a183>7}Y9h:01>651`28 41a28>97p}>9g83>7}Y90l01>6518d8 41a28>87p}>9d83>7}Y90o01>6518g8 41a28>?7p}>9e83>7}Y90n01>6518f8 41a28>>7p}>9883>7}Y90301>6518;8 41a28>=7p}>9983>7}Y90201>6518:8 41a28>37p}=0283>7}Y:9901>652118 41a28>27p}>b583>7}Y9k>01>651c68 41a28>h7p}>a983>7}Y9h201>651`:8 41a28>n7p}>a683>7}Y9h=01>651`58 41a28>m7p}>b083>7}Y9k;01>651c38 41a28?:7p}>b183>7}Y9k:01>651c28 41a28?97p}>ag83>7}Y9hl01>651`d8 41a28?87p}>ad83>7}Y9ho01>651`g8 41a28??7p}>ae83>7}Y9hn01>651`f8 41a28?>7p}>ab83>7}Y9hi01>651`a8 41a28?=7p}>ac83>7}Y9hh01>651``8 41a28?<7p}>a`83>7}Y9hk01>651`c8 41a28?37p}>a783>7}Y9h<01>651`48 41a28?27p}>a483>7}Y9h?01>651`78 41a28?j7p}>f183>7}Y9o:01>651g28 41a28?h7p}>eg83>7}Y9ll01>651dd8 41a28?o7p}>ed83>7}Y9lo01>651dg8 41a28?n7p}>ee83>7}Y9ln01>651df8 41a28?m7p}>eb83>7}Y9li01>651da8 41a28<;7p}>ec83>7}Y9lh01>651d`8 41a28<:7p}>f883>7}Y9o301>651g;8 41a28<87p}>f983>7}Y9o201>651g:8 41a28<?7p}>f683>7}Y9o=01>651g58 41a28<>7p}>f783>7}Y9o<01>651g48 41a28<=7p}>f483>7}Y9o?01>651g78 41a28<<7p}>f583>7}Y9o>01>651g68 41a28<37p}>f283>7}Y9o901>651g18 41a28<27p}>f383>7}Y9o801>651g08 41a28<j7p}>e`83>7}Y9lk01>651dc8 41a28<i7p}>e883>7}Y9l301>651d;8 41a28<h7psa3ea94?4|@82;7p`<de83>7}O91:0qc=ke;296~N6091vb>ji:181M7?82we?h>50;0xL4>73td8i<4?:3yK5=6<ug9n>7>52zJ2<5=zf:o86=4={I3;4>{i;l>1<7<tH0:3?xh4m<0;6?uG1928yk5b>3:1>vF>819~j6c02909wE?70:m7`>=838pD<6?;|l0a<<72;qC=5>4}o1fe?6=:rB:4=5rn2ga>5<5sA;3<6sa3da94?4|@82;7p`<ee83>7}O91:0qc=je;296~N6091vb>ki:181M7?82we?k>50;0xL4>73td8j<4?:3yK5=6<ug9m>7>52zJ2<5=zf:l86=4={I3;4>{i;o>1<7<tH0:3?xh4n<0;6?uG1928yk5a>3:1>vF>819~j6`02909wE?70:m7c>=838pD<6?;|l0b<<72;qC=5>4}o1ee?6=:rB:4=5rn2da>5<5sA;3<6sa3ga94?4|@82;7p`<fe83>7}O91:0qc=ie;296~N6091vb>hi:181M7?82we8=>50;0xL4>73td?<<4?:3yK5=6<ug>;>7>52zJ2<5=zf=:86=4={I3;4>{i<9>1<7<tH0:3?xh38<0;6?uG1928yk27>3:1>vF>819~j1602909wE?70:m05>=838pD<6?;|l74<<72;qC=5>4}o63e?6=:rB:4=5rn52a>5<5sA;3<6sa41a94?4|@82;7p`;0e83>7}O91:0qc:?e;296~N6091vb9>i:181M7?82we8<>50;0xL4>73td?=<4?:3yK5=6<ug>:>7>52zJ2<5=zf=;86=4={I3;4>{i<8>1<7<tH0:3?xh39<0;6?uG1928yk26>3:1>vF>819~j6?a290:wE?70:m7ad=83;pD<6?;|~yEFDs=??6>6?14417xFGJr:vLM^t}AB
Index: firmware/FTM/ethernet/DRAM_4096_16b_DRAM_4096_16b_a.vhd
===================================================================
--- firmware/FTM/ethernet/DRAM_4096_16b_DRAM_4096_16b_a.vhd	(revision 10227)
+++ firmware/FTM/ethernet/DRAM_4096_16b_DRAM_4096_16b_a.vhd	(revision 10227)
@@ -0,0 +1,151 @@
+-- Coregen VHDL wrapper file modified by HDL Designer
+
+--------------------------------------------------------------------------------
+--     This file is owned and controlled by Xilinx and must be used           --
+--     solely for design, simulation, implementation and creation of          --
+--     design files limited to Xilinx devices or technologies. Use            --
+--     with non-Xilinx devices or technologies is expressly prohibited        --
+--     and immediately terminates your license.                               --
+--                                                                            --
+--     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"          --
+--     SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR                --
+--     XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION        --
+--     AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION            --
+--     OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS              --
+--     IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,                --
+--     AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE       --
+--     FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY               --
+--     WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE                --
+--     IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR         --
+--     REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF        --
+--     INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS        --
+--     FOR A PARTICULAR PURPOSE.                                              --
+--                                                                            --
+--     Xilinx products are not intended for use in life support               --
+--     appliances, devices, or systems. Use in such applications are          --
+--     expressly prohibited.                                                  --
+--                                                                            --
+--     (c) Copyright 1995-2007 Xilinx, Inc.                                   --
+--     All rights reserved.                                                   --
+--------------------------------------------------------------------------------
+-- You must compile the wrapper file DRAM_4096_16b.vhd when simulating
+-- the core, DRAM_4096_16b. When compiling the wrapper file, be sure to
+-- reference the XilinxCoreLib VHDL simulation library. For detailed
+-- instructions, please refer to the "CORE Generator Help".
+
+-- The synthesis directives "translate_off/translate_on" specified
+-- below are supported by Xilinx, Mentor Graphics and Synplicity
+-- synthesis tools. Ensure they are correct for your synthesis tool(s).
+
+-- hds interface_start
+LIBRARY ieee;
+USE ieee.std_logic_1164.ALL;
+-- synthesis translate_off
+LIBRARY XilinxCoreLib;
+
+--  synthesis translate_on
+-- 
+ENTITY DRAM_4096_16b IS
+   PORT( 
+      clka  : IN     std_logic;
+      dina  : IN     std_logic_VECTOR (15 DOWNTO 0);
+      addra : IN     std_logic_VECTOR (11 DOWNTO 0);
+      wea   : IN     std_logic_VECTOR (0 DOWNTO 0);
+      clkb  : IN     std_logic;
+      addrb : IN     std_logic_VECTOR (11 DOWNTO 0);
+      doutb : OUT    std_logic_VECTOR (15 DOWNTO 0)
+   );
+
+-- Declarations
+
+END DRAM_4096_16b ;
+-- hds interface_end
+
+ARCHITECTURE DRAM_4096_16b_a OF DRAM_4096_16b IS
+
+-- hds translate_off
+
+-- synthesis translate_off
+component wrapped_DRAM_4096_16b
+	port (
+	clka: IN std_logic;
+	dina: IN std_logic_VECTOR(15 downto 0);
+	addra: IN std_logic_VECTOR(11 downto 0);
+	wea: IN std_logic_VECTOR(0 downto 0);
+	clkb: IN std_logic;
+	addrb: IN std_logic_VECTOR(11 downto 0);
+	doutb: OUT std_logic_VECTOR(15 downto 0));
+end component;
+
+-- Configuration specification 
+	for all : wrapped_DRAM_4096_16b use entity XilinxCoreLib.blk_mem_gen_v2_8(behavioral)
+		generic map(
+			c_has_regceb => 0,
+			c_has_regcea => 0,
+			c_mem_type => 1,
+			c_prim_type => 1,
+			c_sinita_val => "0",
+			c_read_width_b => 16,
+			c_family => "spartan3",
+			c_read_width_a => 16,
+			c_disable_warn_bhv_coll => 0,
+			c_write_mode_b => "READ_FIRST",
+			c_init_file_name => "no_coe_file_loaded",
+			c_write_mode_a => "READ_FIRST",
+			c_mux_pipeline_stages => 0,
+			c_has_mem_output_regs_b => 0,
+			c_load_init_file => 0,
+			c_xdevicefamily => "spartan3a",
+			c_has_mem_output_regs_a => 0,
+			c_write_depth_b => 4096,
+			c_write_depth_a => 4096,
+			c_has_ssrb => 0,
+			c_has_mux_output_regs_b => 0,
+			c_has_ssra => 0,
+			c_has_mux_output_regs_a => 0,
+			c_addra_width => 12,
+			c_addrb_width => 12,
+			c_default_data => "0",
+			c_use_ecc => 0,
+			c_algorithm => 1,
+			c_disable_warn_bhv_range => 0,
+			c_write_width_b => 16,
+			c_write_width_a => 16,
+			c_read_depth_b => 4096,
+			c_read_depth_a => 4096,
+			c_byte_size => 9,
+			c_sim_collision_check => "ALL",
+			c_use_ramb16bwer_rst_bhv => 0,
+			c_common_clk => 0,
+			c_wea_width => 1,
+			c_has_enb => 0,
+			c_web_width => 1,
+			c_has_ena => 0,
+			c_sinitb_val => "0",
+			c_use_byte_web => 0,
+			c_use_byte_wea => 0,
+			c_use_default_data => 1);
+-- synthesis translate_on
+
+-- hds translate_on
+
+BEGIN
+
+-- hds translate_off
+
+-- synthesis translate_off
+U0 : wrapped_DRAM_4096_16b
+		port map (
+			clka => clka,
+			dina => dina,
+			addra => addra,
+			wea => wea,
+			clkb => clkb,
+			addrb => addrb,
+			doutb => doutb);
+-- synthesis translate_on
+
+
+-- hds translate_on
+
+END DRAM_4096_16b_a;
Index: firmware/FTM/ethernet/FRAM_4096_16b.ngc
===================================================================
--- firmware/FTM/ethernet/FRAM_4096_16b.ngc	(revision 10227)
+++ firmware/FTM/ethernet/FRAM_4096_16b.ngc	(revision 10227)
@@ -0,0 +1,3 @@
+XILINX-XDB 0.1 STUB 0.1 ASCII
+XILINX-XDM V1.4e
+$3244g<,[o}e~g`n;"2*413&;$>"9 > %;8456789:;<9>40123456789:;<=>?0123456789:;<=>?0123456789:;<=>?0123456789:;<=>?3:3-442<9;0BB][[:`fgvd.693:"=95>2;KMTPR=imnyn%?>:1+20>732@D[YY4NDEPB,45=8 ;?7<:5IORVP?GCL[H#=>4?)01853<NFY__6igaa)36>5/6;2;=6D@_UU8gmkd/9<0;%<;4178LQQVR\3ndyyo'1483-43<9?0DYY^ZT;flqqd/9<0;%<>41;KMTPR=lk#<7>&1192>LHW]]0|io&?:1+26>552@D[YY4KI@*05?6.9;18>7GAPTV9@LD/;80;%<=4338LQQVR\3NDM%=>:1+27>552F__\XZ5DN@+74<7!m18:>?age7<1+2981?6D@_UU8GMUG/;3:"=<5;:HLSQQ<CAYH#?7>&1197>LHW]]0\IL&<:1+24>2=AGZ^X7YJB)194,753=0DYY^ZT;FLTD.429#:>6:5OTVSQQ<CGYH#?7>&8:CG@WG/8 20MIJ]A)3*=>GCL[K#=='6;@FGVD.69 30MIJ]A)31-<=FLMXJ$<=&b:CG@WG/9:0;%55NDEPB,7/?3HNO^L&<)99B@ATF =#37LJKR@*6-==FLMXJ$;'7;@FGVD.0!11JHI\N(9+;?DBCZH"2%55NDEPA,5/?3HNO^O&>)89B@ATE 8:"56OKDS@+54/>3HNO^O&>2(;8EABUJ!;8%o5NDEPA,45=8 20MIJ]B)0*<>GCL[H#?$64AEFQF-2.02KOH_L'5(:8EABUJ!<"46OKDS@+3,><IMNYN%6&8:CG@WD/1 90MAB<;CW1<>DR[VCEJB:m;B8,@JMRELt:#fof/MMHEICy9&^na}!losgdakYli`%hckheo-wiu)Xkn%M^LCP41;5[40e&gmd=?5LHDAH[IODMGYNSYW_E59@HNG33JF@N45LOLOJPQCC9=1HC_KPGDLFVDRNGGUBBKA8;BPFEQCCk2NJXLQXIEVK[De<LH^JSZGKTI]A2>BNI!:":6JFA)3*3>BNI!;;%:5KI@*25,1<L@K#=?'8;EKB,45.?2NBM%?;)69GMD.6= =0HDO'17+4?AOF 8=";6JFA)3;-2=CAH":5$84DHC+6,1<L@K#>='8;EKB,77.?2NBM%<=)69GMD.5; =0HDO'25+4?AOF ;?";6JFA)05-2=CAH"9;$94DHC+6=/03MCJ$?7&6:FJE-5.?2NBM%=?)69GMD.49 30HDO'3083-3=CAH"?%;5KI@*6-3=CAH"=%;5KI@*4-3=CAH"3%;5KI@*:-3=CAK";%;5KIC*2-2=CAK":<$94DH@+54/03MCI$<<&7:FJF-74!>1OEO&>4(58@LD/9<#<7IGM(04*3>BNJ!;<%:5KIC*2<,1<L@H#=4'9;EKA,7/03MCI$?>&7:FJF-46!>1OEO&=2(58@LD/::#<7IGM(36*3>BNJ!8>%:5KIC*12,1<L@H#>:'8;EKA,7>.?2NBN%<6)79GMG.4!>1OEO&<0(58@LD/;8#27IGM(2394,0<L@H#8$84DH@+1,0<L@H#:$84DH@+3,0<L@H#4$84DH@+=,1<L@ZJ$='8;EKSE-7.?2NB\L&=)69GMUG/; 30HD^N(283-2=CAYH#<$94DHRA,4/03MC[N%<&7:FJTG.4!01OE]L'3;2*2>BHI!:":6J@A)3*3>BHI!;;%:5KO@*25,1<LFK#=?'8;EMB,45.?2NDM%?;)69GKD.6= =0HBO'17+4?AIF 8=";6J@A)3;-2=CGH":5$84DNC+6,1<LFK#>='8;EMB,77.?2NDM%<=)69GKD.5; =0HBO'25+4?AIF ;?";6J@A)05-2=CGH"9;$94DNC+6=/03MEJ$?7&6:FLE-5.?2NDM%=?)69GKD.49 30HBO'3083-3=CGH"?%;5KO@*6-3=CGH"=%;5KO@*4-3=CGH"3%;5KO@*:-3=CGK";%;5KOC*2-2=CGK":<$94DN@+54/03MEI$<<&7:FLF-74!>1OCO&>4(58@JD/9<#<7IAM(04*3>BHJ!;<%:5KOC*2<,1<LFH#=4'9;EMA,7/03MEI$?>&7:FLF-46!>1OCO&=2(58@JD/::#<7IAM(36*3>BHJ!8>%:5KOC*12,1<LFH#>:'8;EMA,7>.?2NDN%<6)79GKG.4!>1OCO&<0(58@JD/;8#27IAM(2394,0<LFH#8$84DN@+1,0<LFH#:$84DN@+3,0<LFH#4$84DN@+=,1<LFZJ$='8;EMSE-7.?2ND\L&=)69GKUG/; 30HB^N(283-2=CGYH#<$94DNRA,4/03ME[N%<&7:FLTG.4!01OC]L'3;2*7>CII:1NBOj4FSCN[16>>V;=n?64FSCN[16>>V;=n!lck^ofiZabfV|9S5"AOOG/JJHB;>?0J_OB_52:2Z71j%hggRcjm^efjZp5W1&poRfns^pfcfce59&hSeo|_sgdg`g:8%iTahcPtxrf94*dWyxbaRzvpd?2(fYtagcmRxnl<2/gZtbimU|eizg_c?22)eXzlkoSzgkti]b940+kVnbllce^ubvkYe`Uhcab20-a\mkosWocgiR`nmd?mkZehmVlb`hQco`ff`)eX{ciRc`dd]a9WCFLVLB^^Z#c^uqmqcXefnnSl3]E@F\BLTT\%iTaxvPphrfhlhbWz~jkh}20-a\lduXelgTcxzuu]qabuXj4:'oRb`ae]jjlrXn`fn1="l_icp[hcjWf|xzPrdep[d;7$jU|~dzj_egspmYe5=:2:!mPwskwaZbbx}bTm0:?97.`[mgtWzyyn0>#c^jbwZkrpVe~x}{{_sgdwZd:8%iTdl}Psrpb95*dWakxS`{w_nwwtprXzlmxSl3?,b]b`atfW~coxe3>2-a\eabujV}bhyf213.`[acai|fSio{a<2/gZstmVoho0>#c^cocjtn|ag6=!mPdhqbficXhxeSofy_scmc`;7$jU|~dzj_vkgpmYe58<'oRy}iug\slbs`Vk6=;"l_sgb`Zbbx}bTn0:?97.`[wcflVnn|yfPa<63=3*dWksiR}fzd?:(fYtadUhcabfshmm[fnbkb7J@A"l_bmnijhXkea6<!mPurg\vdke9?h|iQ}su]als;7$jU|ilQxievk94*dWakxSh`m=1.`[mgtWldj1="l_vga[roc|a7: nQ|iokwfZpfd4:'obcoogmpZhfel7M^LCP41;5[40e$jU~hQmyug\s`d:8%iTy~kPbxvf[rcf59&hSx}j_egeepjsWmkm0?#}368BWGJW=:2:R?9b^`ooZkbeVmnbRx=_9]{wqY692M87J@K8:KMMQVX8920ECG[P^22<>OIA]ZT<?64IOKWTZ6402CEEY^P05:8MKOSXV:>46GAIUR\43><AGC_\R>87:KMMQY78>1BBDZP0058MKOSW98<7D@FT^203>OIA]U;8:5FNHV\401<AGC_S=88;HLJPZ60?2CEEYQ?869JJLRX80=0ECG[_1C4?LHN\V:I;6GAIU]3G2=NF@^T<I94IOKW[5C03@DBXR>I7:KMMQY68>1BBDZP1058MKOSW88<7D@FT^303>OIA]U:8:5FNHV\501<AGC_S<88;HLJPZ70?2CEEYQ>869JJLRX90=0ECG[_0C4?LHN\V;I;6GAIU]2G2=NF@^T=I94IOKW[4C03@DBXR?I7:KMMQY58>1BBDZP2058MKOSW;8<7D@FT^003>OIA]U98:5FNHV\601<AGC_S?88;HLJPZ40?2CEEYQ=869JJLRX:0=0ECG[_3C4?LHN\V8I;6GAIU]1G2=NF@^T>I94IOKW[7C03@DBXR<I7:KMMQY48>1BBDZP3058MKOSW:8<7D@FT^103>OIA]U88:5FNHV\701<AGC_S>88;HLJPZ50?2CEEYQ<869JJLRX;0=0ECG[_2C4?LHN\V9I;6GAIU]0G2=NF@^T?I94IOKW[6C03@DBXR=I6:KMMQYF>2CEEYQM6:NLEACC?2FDKDMNLb9Neoiu^lxxeb`l;LkmkwPbzzcdb?5A129M555<F8;87C?=3:L276=I9=90B<;<;O357>H6?:1E=5=4N0;1?K443G8;?6@=129M675<F;987C<;3:L116=I:?90B?9<;O0;7>H51;1E?>5A3118J6553G>97C;<;O726>H1;2D=4>5A6808J25<F>:87C9>3:L466=I?:90B::<;O567>H0>:1E;:=4N6:0?K1>:2D3?6@7429M<05<F1<87C683:L;<6=I0080B4=4N820?K?6;2D2>>5A9218J<243G3>?6@6629M=25<F0287C767:LFPRIUC81[86^NRUc8TLHXJ\YBHUl4PHL\FPUIIDO27_OBB04AS@g<ZLKOSKG]SU30?VOJWJEG@D]FOO]@L@EL>2YDY_MJ7:QQRDJXI>1X^[OC_C68WVTF<2YX^O:4TXRF02=R8&hggRcjm^efj`tf|fx$zlbfd/appw)uidfdc}U?]/pbi+t({:kTecg{.scn+avuid$ym`:8;T2,fimXelgTkh`jr`vlv*pfd`n%o~z}/scnhjiwS8W%~lc!r.q0eZoia}$ym`!kpscn*wgj<>1^<"lck^ofiZabflxjxb| v`nj`+et|{%ym`b`oqY1Y+tfe'x$>oPiokw*wgj'mzym` }al64?P6(jeaTahcPgdlfvdrhz&|j`dj!crvq+wgjdfe{W>S!r`o-v*u4iVceey }al-gtwgj&{kfm6[\ES]BHLGTk2_XI_QYIRKAH@5<^JI27[GJW^VZT@0<_LK#<$84WDC+5,0<_LK#>$84WDC+7,><_LK#?7>&6:UFF-6.>2]NN%?&6:UFF-4.>2]NN%=&8:UFF-5=8 i0[_G[E^OL@@YFk2]YEYKPMNFF[G7c3QCGECV"XE@#4+7'[]_I,= > @Q@ML0<PZ^GEO94XRV\CKB03QY_S[MLb:Z\GJTBW@DMC;5Wdc]J`c=_laU[~dcYesqjkk773QnfS@oeosTfvvohf8:0TicPMhllvScu{`ee46okdsc+4,><imnym%?&9:cg`wg/99#27ljkr`*25,d<imnym%?>:1+;?dbczh"9%55ndepb,6/?3hno~l&;)99b`atf <#37ljkr`*5-==flmxj$:'7;`fgvd.?!11jhi|n(8+;?dbczk";%55ndepa,4/>3hno~o&>0(;8eabuj!;:%o5ndepa,47=8 20mij}b)0*<>gcl{h#?$64aefqf-2.02kohl'5(:8eabuj!<"46okds`+3,><imnyn%6&8:cg`wd/1 987obd_lgn[bciW8T4!.Wimkm|%EHZL*Lick}aumq$46)9':8Sd~<4:aood2<keai;6jmiugqv2=cagk#<$94dhlb,4/?3mcem%??)99gmkg/98#37igaa)31-==cagk#=>'7;ekme-73!11oeco'14+b?aoii!;>6='8;ekme-4.?2nbbl&<)69gmkg/< =0hd`n(4+4?aoii!<";6jfn`*4-2=cagk#4$94dhlb,</03mcen%>&7:fjjg.6!11oecl'11+;?aoij!;:%55kio`+57/?3mcen%?<)99gmkd/9=#37igab)36-d=cagh#=84?)69gmkd/: =0hd`m(2+4?aoij!>";6jfnc*6-2=cagh#:$94dhla,2/03mcen%6&7:fjjg.>!11ocxzn(1+;?air|h":%45kotvb,46.12ndyyo'10+:?air|h":>$74dnwwe-74!01ocxzn(06*=>bh}}k#=8'm;emvpd.6=3:"46j`uuc+6,><lfm%=&8:flqqg/< 20hb{{a)7*<>bh}}k#:$64dnwwe-1.02ndyyo'8(:8`jssi!3"46j`uu`+4,><lfn%?&9:flqqd/99#27iaztc*25,?<lfn%?=)89gkpre 89"56j`uu`+51/>3me~xo&>5(`8`jssj!;>6='7;emvpg.5!11ocxzm(2+;?air|k"?%55kotva,0/?3me~xo&9)99gkpre >#37iaztc*;-==cg|~i$4'7;dfjb7h`l:1nbl=4eo`;?kadj|cgh;5}efafe3=umninn:5|bhvfvw2<{zxj86}|rc48s`g/8 20{ho'0;2*2>qbj!:"46yjb)294,{GHy>>86NOx2c9B?2=9rY?<7?ia;19564cj1n1=48:bzl2=3<63g;2;7:4$0;7>4>a3tY8i7?ia;19564cj1n1=48:b:Q26a<6nm0;6<==dc:g>4?1=k1X?h4>fe83>455lk2o6<795b9g`a<7280:w^:?:0db>6<6;;ni4i4>977a?sR6?<0;6<4>:2fxW16=9ok1?7?<2e`;`?7>><h0(<6=:00f?S7>=38py<<i:09v566=82w/=;h5139a`a<72:h1?7=m{I3;4>\413?po7:55;`9<?{#9>k1hi5+18195g4<a;:86=4+1639652<f8=;6=54i0;a>5<#9>;1=4m4n053>5=<a83j6=4+16395<e<f8=;6<54i0c7>5<#9>;1=4m4n053>7=<a8k86=4+16395<e<f8=;6>54i0c1>5<#9>;1=4m4n053>1=<a8k:6=4+16395<e<f8=;6854i0c3>5<#9>;1=4m4n053>3=<a83m6=4+16395<e<f8=;6:54i0;f>5<#9>;1=4m4n053>==<a83o6=4+16395<e<f8=;6454i0;:>5<#9>;1=4m4n053>d=<a8336=4+16395<e<f8=;6o54i0c;>5<#9>;1=l74n053>5=<a8k<6=4+16395d?<f8=;6<54i0`2>5<#9>;1=l74n053>7=<a8h;6=4+16395d?<f8=;6>54i0ce>5<#9>;1=l74n053>1=<a8kn6=4+16395d?<f8=;6854i0cg>5<#9>;1=l74n053>3=<a8kh6=4+16395d?<f8=;6:54i0ca>5<#9>;1=l74n053>==<a8kj6=4+16395d?<f8=;6454i0c5>5<#9>;1=l74n053>d=<a8k>6=4+16395d?<f8=;6o54o0d3>5<#9>;1=k?4n053>5=<g8om6=4+16395c7<f8=;6<54o0gf>5<#9>;1=k?4n053>7=<g8oo6=4+16395c7<f8=;6>54o0g`>5<#9>;1=k?4n053>1=<g8oi6=4+16395c7<f8=;6854o0d:>5<#9>;1=k?4n053>3=<g8l36=4+16395c7<f8=;6:54o0d4>5<#9>;1=k?4n053>==<g8l=6=4+16395c7<f8=;6454o0d6>5<#9>;1=k?4n053>d=<g8l?6=4+16395c7<f8=;6o54o0d0>5<#9>;1=k?4n053>f=<g8l96=4+16395c7<f8=;6i54o0gb>5<#9>;1=k?4n053>`=<g8o26=4+16395c7<f8=;6k54i0`0>5<<a8h?6=44i0`g>5<#9>;1=ok4n053>5=<a8hh6=4+16395gc<f8=;6<54i0`a>5<#9>;1=ok4n053>7=<a8hj6=4+16395gc<f8=;6>54i0`:>5<#9>;1=ok4n053>1=<a8h36=4+16395gc<f8=;6854i0a5>5<#9>;1=ok4n053>3=<a8i>6=4+16395gc<f8=;6:54i0a7>5<#9>;1=ok4n053>==<a8i86=4+16395gc<f8=;6454i0a1>5<#9>;1=ok4n053>d=<a8i:6=4+16395gc<f8=;6o54i0a3>5<#9>;1=ok4n053>f=<a8hm6=4+16395gc<f8=;6i54i0`4>5<#9>;1=ok4n053>`=<a8h=6=4+16395gc<f8=;6k54b0:2>5<6290;wE?70:&23d<6081d=;k50;9~f`4=83;1<7>tH0:3?!70i3o97bk>:188yg5?290=87853eyK5=6<R:31==ul:e87>0<f2k03644n:c8`>a<32<03644r$05b>`6<,:h1hh5+3g8gb>o6nk0;66g>fb83>>o5880;66g=0383>>o6nl0;66g>fg83>>o58:0;6)?81;030>h6?90;76g=0483>!70938;:6`>7183?>o61k0;6)?81;3:g>h6?90;76g>9`83>!7093;2o6`>7182?>o6i=0;6)?81;3:g>h6?90976g>a283>!7093;2o6`>7180?>o6i;0;6)?81;3:g>h6?90?76g>a083>!7093;2o6`>7186?>o6i90;6)?81;3:g>h6?90=76g>9g83>!7093;2o6`>7184?>o61l0;6)?81;3:g>h6?90376g>9e83>!7093;2o6`>718:?>o6100;6)?81;3:g>h6?90j76g>9983>!7093;2o6`>718a?>o6i10;6)?81;3b=>h6?90;76g>a683>!7093;j56`>7182?>o6j80;6)?81;3b=>h6?90976g>b183>!7093;j56`>7180?>o6io0;6)?81;3b=>h6?90?76g>ad83>!7093;j56`>7186?>o6im0;6)?81;3b=>h6?90=76g>ab83>!7093;j56`>7184?>o6ik0;6)?81;3b=>h6?90376g>a`83>!7093;j56`>718:?>o6i?0;6)?81;3b=>h6?90j76g>a483>!7093;j56`>718a?>i5890;66a>dg83>!7093;n<6`>7183?>i6ll0;6)?81;3f4>h6?90:76a>de83>!7093;n<6`>7181?>i6lj0;6)?81;3f4>h6?90876a>dc83>!7093;n<6`>7187?>i6lh0;6)?81;3f4>h6?90>76a>e983>!7093;n<6`>7185?>i6m>0;6)?81;3f4>h6?90<76a>e783>!7093;n<6`>718;?>i6m<0;6)?81;3f4>h6?90276a>e583>!7093;n<6`>718b?>i6m:0;6)?81;3f4>h6?90i76a>e383>!7093;n<6`>718`?>i6m80;6)?81;3f4>h6?90o76a>d883>!7093;n<6`>718f?>i6l10;6)?81;3f4>h6?90m76a>f183>!7093;m=6`>7183?>i6mo0;6)?81;3e5>h6?90:76a>ed83>!7093;m=6`>7181?>i6mm0;6)?81;3e5>h6?90876a>eb83>!7093;m=6`>7187?>i6mk0;6)?81;3e5>h6?90>76a>f883>!7093;m=6`>7185?>i6n10;6)?81;3e5>h6?90<76a>f683>!7093;m=6`>718;?>i6n?0;6)?81;3e5>h6?90276a>f483>!7093;m=6`>718b?>i6n=0;6)?81;3e5>h6?90i76a>f283>!7093;m=6`>718`?>i6n;0;6)?81;3e5>h6?90o76a>e`83>!7093;m=6`>718f?>i6m00;6)?81;3e5>h6?90m76g>b283>>o6j=0;66g>be83>!7093;ii6`>7183?>o6jj0;6)?81;3aa>h6?90:76g>bc83>!7093;ii6`>7181?>o6jh0;6)?81;3aa>h6?90876g>b883>!7093;ii6`>7187?>o6j10;6)?81;3aa>h6?90>76g>c783>!7093;ii6`>7185?>o6k<0;6)?81;3aa>h6?90<76g>c583>!7093;ii6`>718;?>o6k:0;6)?81;3aa>h6?90276g>c383>!7093;ii6`>718b?>o6k80;6)?81;3aa>h6?90i76g>c183>!7093;ii6`>718`?>o6jo0;6)?81;3aa>h6?90o76g>b683>!7093;ii6`>718f?>o6j?0;6)?81;3aa>h6?90m76g>cd83>!7093;hj6`>7183?>o6km0;6)?81;3`b>h6?90:76g>cb83>!7093;hj6`>7181?>o6kk0;6)?81;3`b>h6?90876g>c`83>!7093;hj6`>7187?>o6k00;6)?81;3`b>h6?90>76g>d683>!7093;hj6`>7185?>o6l?0;6)?81;3`b>h6?90<76g>d483>!7093;hj6`>718;?>o6l=0;6)?81;3`b>h6?90276g>d283>!7093;hj6`>718b?>o6l;0;6)?81;3`b>h6?90i76g>d083>!7093;hj6`>718`?>o6l90;6)?81;3`b>h6?90o76g>c983>!7093;hj6`>718f?>o6k>0;6)?81;3`b>h6?90m76a>b483>>d6180;6<4?:1y'52g=m;1C=4>4H0:3?jc62900qo?62;295?6=8r.:;l4>809K5<6<@82;7b?9e;29?xd6?l0;6oo50;2x 41f28=97E?60:J2<5=];00hw;48:d8e>45=9=0:97?9:02954<6?3;36p`;1;68j14=<2.:>o4>;%31g?7<,l91>6*j4;08 `3=:2.n:7<4$d596>"b0380(<6j:050?!70>3;0(hl52:&fg?4<,ln1>6*je;08 ``=:2.m<7<4$g396>"a:380(k=52:&e0?4<,o?1>6*i6;08 c1=:2.m47<4$g;96>"ai380(kl52:&eg?4<,on1>6*ie;08 c`=:2.:<=4=;%335?4<,8:96?5+11196>"68=097)??5;08 4612;1/==952:&24=<53-;;57<4$02b>7=#99h1>6*>0b81?!77l380(<>j:39'55`=:2.:==4=;%325?4<,8;96?5+10196>"69=097)?>5;08 4712;1/=<952:&25=<53-;:57<4$03b>7=#98h1>6*>1b81?!76l380(<?j:39'54`=:2.:>=4=;%315?4<,8896?5+13196>"6:=097)?=5;08 4412;1/=?952:&26=<53-;957<4$00b>7=#9>>1?:5+e881?!cf2;1/=5j51618 410281b?n4?::k0`?6=3`ni6=44iea94?=n9>21<75f16;94?=n9l0;6)?81;3e?k7083:07d?k:18'527=9o1e=:>51:9j5f<72-;<=7?i;o344?4<3`;i6=4+16395c=i9>:1?65f2683>!7093;m7c?80;68?l41290/=:?51g9m526==21b>84?:%345?7a3g;<<784;h07>5<#9>;1=k5a16293>=n::0;6)?81;3e?k7083207d<=:18'527=9o1e=:>59:9j64<72-;<=7?i;o344?g<3`8;6=4+16395c=i9>:1n65f1`83>!7093;m7c?80;a8?l7>290/=:?51g9m526=l21b>i4?:%345?4b3g;<<7>4;h0`>5<#9>;1>h5a16295>=n:k0;6)?81;0f?k7083807d<n:18'527=:l1e=:>53:9j73<72-;<=7<j;o344?2<3`9>6=4+16396`=i9>:1965f3583>!70938n7c?80;48?l54290/=:?52d9m526=?21b??4?:%345?4b3g;<<764;h12>5<#9>;1>h5a1629=>=n;90;6)?81;0f?k7083k07d<i:18'527=:l1e=:>5b:9j6<<72-;<=7<j;o344?e<3`836=4+16396`=i9>:1h65f5b83>!7093?o7c?80;28?l3e290/=:?55e9m526=921b944?:%345?3c3g;<<7<4;h7;>5<#9>;19i5a16297>=n=>0;6)?81;7g?k7083>07d;9:18'527==m1e=:>55:9j10<72-;<=7;k;o344?0<3`??6=4+16391a=i9>:1;65f5283>!7093?o7c?80;:8?l35290/=:?55e9m526=121b9<4?:%345?3c3g;<<7o4;h73>5<#9>;19i5a1629f>=n<l0;6)?81;7g?k7083i07d:k:18'527==m1e=:>5d:9j0f<72-;<=7;k;o344?c<3`>i6=4+16391a=i9>:1j65f4`83>!7093?o7c?80;33?>o313:1(<9>:4f8j41728;07d:7:18'527==m1e=:>51398m11=83.:;<4:d:l235<6;21b8;4?:%345?3c3g;<<7?;;:k71?6=,8=:68j4n053>43<3`<86=4+16391a=i9>:1=;54i7094?"6?80>h6`>71823>=n>80;6)?81;7g?k7083;376g90;29 4162<n0b<9?:0;8?l3a290/=:?55e9m526=9h10e8k50;&234<2l2d:;=4>b:9j1d<72-;<=7;k;o344?7d32c?j7>5$052>0b<f8=;6<j4;h67>5<#9>;19i5a16295`=<a=91<7*>7086`>h6?90:j65f7e83>!7093=n7c?80;28?l1d290/=:?57d9m526=921b;l4?:%345?1b3g;<<7<4;h5:>5<#9>;1;h5a16297>=n?10;6)?81;5f?k7083>07d98:18'527=?l1e=:>55:9j33<72-;<=79j;o344?0<3`=>6=4+16393`=i9>:1;65f7583>!7093=n7c?80;:8?l14290/=:?57d9m526=121b;?4?:%345?1b3g;<<7o4;h52>5<#9>;1;h5a1629f>=n>o0;6)?81;5f?k7083i07d8j:18'527=?l1e=:>5d:9j2a<72-;<=79j;o344?c<3`<h6=4+16393`=i9>:1j65f6c83>!7093=n7c?80;33?>o1i3:1(<9>:6g8j41728;07d86:18'527=?l1e=:>51398m3>=83.:;<48e:l235<6;21b::4?:%345?1b3g;<<7?;;:k52?6=,8=:6:k4n053>43<3`2?6=4+16393`=i9>:1=;54i9194?"6?80<i6`>71823>=n0;0;6)?81;5f?k7083;376g71;29 4162>o0b<9?:0;8?l>7290/=:?57d9m526=9h10e:h50;&234<0m2d:;=4>b:9j3g<72-;<=79j;o344?7d32c<<7>5$052>2c<f8=;6<j4;h46>5<#9>;1;h5a16295`=<a?>1<7*>7084a>h6?90:j65f8983>!7093227c?80;28?l>0290/=:?5889m526=921b4;4?:%345?>>3g;<<7<4;h:6>5<#9>;1445a16297>=n0m0;6)?81;:f?k7083:07d6l:18'527=0l1e=:>51:9j<g<72-;<=76j;o344?4<3`2j6=4+1639<`=i9>:1?65f19494?"6?80:4:5a16294>=n91?1<7*>7082<2=i9>:1=65f19694?"6?80:4:5a16296>=n9191<7*>7082<2=i9>:1?65f19`94?"6?80:4n5a16294>=n91k1<7*>7082<f=i9>:1=65f19;94?"6?80:4n5a16296>=n9121<7*>7082<f=i9>:1?65`a983>!7093k27c?80;28?jg0290/=:?5a89m526=921dm84?:%345?g>3g;<<7<4;nc7>5<#9>;1m45a16297>=hi:0;6)?81;c:?k7083>07bo=:18'527=i01e=:>55:9le4<72-;<=7o6;o344?0<3fk;6=4+1639e<=i9>:1;65`9g83>!7093k27c?80;:8?j?b290/=:?5a89m526=121d5i4?:%345?g>3g;<<7o4;n;`>5<#9>;1m45a1629f>=h1h0;6)?81;c:?k7083i07b76:18'527=i01e=:>5d:9l==<72-;<=7o6;o344?c<3f3<6=4+1639e<=i9>:1j65`9783>!7093k27c?80;33?>i>=3:1(<9>:`;8j41728;07b7;:18'527=i01e=:>51398k<5=83.:;<4n9:l235<6;21d5?4?:%345?g>3g;<<7?;;:m:5?6=,8=:6l74n053>43<3fkm6=4+1639e<=i9>:1=;54o`g94?"6?80j56`>71823>=him0;6)?81;c:?k7083;376anc;29 4162h30b<9?:0;8?jge290/=:?5a89m526=9h10clo50;&234<f12d:;=4>b:9le3<72-;<=7o6;o344?7d32e2n7>5$052>d?<f8=;6<j4;n;3>5<#9>;1m45a16295`=<g1l1<7*>708b=>h6?90:j65`c883>!7093ij7c?80;28?je?290/=:?5c`9m526=921do;4?:%345?ef3g;<<7<4;na6>5<#9>;1ol5a16297>=hk=0;6)?81;ab?k7083>07bm<:18'527=kh1e=:>55:9lg7<72-;<=7mn;o344?0<3fi:6=4+1639gd=i9>:1;65`c183>!7093ij7c?80;:8?jda290/=:?5c`9m526=121dnh4?:%345?ef3g;<<7o4;n`g>5<#9>;1ol5a1629f>=hjk0;6)?81;ab?k7083i07bln:18'527=kh1e=:>5d:9lf<<72-;<=7mn;o344?c<3fh36=4+1639gd=i9>:1j65`b683>!7093ij7c?80;33?>ie>3:1(<9>:bc8j41728;07bl::18'527=kh1e=:>51398kg2=83.:;<4la:l235<6;21dn>4?:%345?ef3g;<<7?;;:ma6?6=,8=:6no4n053>43<3fn;6=4+1639gd=i9>:1=;54obd94?"6?80hm6`>71823>=hkl0;6)?81;ab?k7083;376ald;29 4162jk0b<9?:0;8?jed290/=:?5c`9m526=9h10cnl50;&234<di2d:;=4>b:9lg2<72-;<=7mn;o344?7d32eio7>5$052>fg<f8=;6<j4;n`2>5<#9>;1ol5a16295`=<gk:1<7*>708`e>h6?90:j65`d583>!7093n>7c?80;28?jb4290/=:?5d49m526=921dh?4?:%345?b23g;<<7<4;nf2>5<#9>;1h85a16297>=hl00;6)?81;fb?k7083:07bj7:18'527=lh1e=:>51:9l`2<72-;<=7jn;o344?4<3fn=6=4+1639`d=i9>:1?65rb05g>5<ei3:1<v*>7`8237=O90:0D<6?;[1:>f}12>0n6k4>3;37>43=9?0:<7?>:0595=<zf=;186`;2;68 44e281/=?m51:&f7?4<,l>1>6*j5;08 `0=:2.n;7<4$d:96>"60l0:;>5+16495>"bj380(hm52:&f`?4<,lo1>6*jf;08 c6=:2.m=7<4$g096>"a;380(k:52:&e1?4<,o<1>6*i7;08 c>=:2.m57<4$gc96>"aj380(km52:&e`?4<,oo1>6*if;08 4672;1/==?52:&247<53-;;?7<4$027>7=#99?1>6*>0781?!77?380(<>7:39'55?=:2.:<l4=;%33f?4<,8:h6?5+11f96>"68l097)??f;08 4772;1/=<?52:&257<53-;:?7<4$037>7=#98?1>6*>1781?!76?380(<?7:39'54?=:2.:=l4=;%32f?4<,8;h6?5+10f96>"69l097)?>f;08 4472;1/=??52:&267<53-;9?7<4$007>7=#9;?1>6*>2781?!75?380(<<7:39'57?=:2.:>l4=;%340?503-o26?5+e`81?!7?l3;<?6*>7682?l5d2900e>j50;9j`g<722coo7>5;h34<?6=3`;<57>5;h3f>5<#9>;1=k5a16294>=n9m0;6)?81;3e?k7083;07d?l:18'527=9o1e=:>52:9j5g<72-;<=7?i;o344?5<3`8<6=4+16395c=i9>:1865f2783>!7093;m7c?80;78?l42290/=:?51g9m526=>21b>94?:%345?7a3g;<<794;h00>5<#9>;1=k5a1629<>=n:;0;6)?81;3e?k7083307d<>:18'527=9o1e=:>5a:9j65<72-;<=7?i;o344?d<3`;j6=4+16395c=i9>:1o65f1883>!7093;m7c?80;f8?l4c290/=:?52d9m526=821b>n4?:%345?4b3g;<<7?4;h0a>5<#9>;1>h5a16296>=n:h0;6)?81;0f?k7083907d=9:18'527=:l1e=:>54:9j70<72-;<=7<j;o344?3<3`9?6=4+16396`=i9>:1:65f3283>!70938n7c?80;58?l55290/=:?52d9m526=021b?<4?:%345?4b3g;<<774;h13>5<#9>;1>h5a1629e>=n:o0;6)?81;0f?k7083h07d<6:18'527=:l1e=:>5c:9j6=<72-;<=7<j;o344?b<3`?h6=4+16391a=i9>:1<65f5c83>!7093?o7c?80;38?l3>290/=:?55e9m526=:21b954?:%345?3c3g;<<7=4;h74>5<#9>;19i5a16290>=n=?0;6)?81;7g?k7083?07d;::18'527==m1e=:>56:9j11<72-;<=7;k;o344?1<3`?86=4+16391a=i9>:1465f5383>!7093?o7c?80;;8?l36290/=:?55e9m526=i21b9=4?:%345?3c3g;<<7l4;h6f>5<#9>;19i5a1629g>=n<m0;6)?81;7g?k7083n07d:l:18'527==m1e=:>5e:9j0g<72-;<=7;k;o344?`<3`>j6=4+16391a=i9>:1==54i5;94?"6?80>h6`>71825>=n<10;6)?81;7g?k7083;976g;7;29 4162<n0b<9?:018?l21290/=:?55e9m526=9=10e9;50;&234<2l2d:;=4>5:9j26<72-;<=7;k;o344?7132c=>7>5$052>0b<f8=;6<94;h42>5<#9>;19i5a16295==<a?:1<7*>7086`>h6?90:565f5g83>!7093?o7c?80;3b?>o2m3:1(<9>:4f8j41728h07d;n:18'527==m1e=:>51b98m1`=83.:;<4:d:l235<6l21b894?:%345?3c3g;<<7?j;:k77?6=,8=:68j4n053>4`<3`=o6=4+16393`=i9>:1<65f7b83>!7093=n7c?80;38?l1f290/=:?57d9m526=:21b;44?:%345?1b3g;<<7=4;h5;>5<#9>;1;h5a16290>=n?>0;6)?81;5f?k7083?07d99:18'527=?l1e=:>56:9j30<72-;<=79j;o344?1<3`=?6=4+16393`=i9>:1465f7283>!7093=n7c?80;;8?l15290/=:?57d9m526=i21b;<4?:%345?1b3g;<<7l4;h4e>5<#9>;1;h5a1629g>=n>l0;6)?81;5f?k7083n07d8k:18'527=?l1e=:>5e:9j2f<72-;<=79j;o344?`<3`<i6=4+16393`=i9>:1==54i7c94?"6?80<i6`>71825>=n>00;6)?81;5f?k7083;976g98;29 4162>o0b<9?:018?l00290/=:?57d9m526=9=10e;850;&234<0m2d:;=4>5:9j<1<72-;<=79j;o344?7132c3?7>5$052>2c<f8=;6<94;h:1>5<#9>;1;h5a16295==<a1;1<7*>7084a>h6?90:565f8183>!7093=n7c?80;3b?>o0n3:1(<9>:6g8j41728h07d9m:18'527=?l1e=:>51b98m26=83.:;<48e:l235<6l21b:84?:%345?1b3g;<<7?j;:k50?6=,8=:6:k4n053>4`<3`236=4+1639<<=i9>:1<65f8683>!7093227c?80;38?l>1290/=:?5889m526=:21b484?:%345?>>3g;<<7=4;h:g>5<#9>;14h5a16294>=n0j0;6)?81;:f?k7083;07d6m:18'527=0l1e=:>52:9j<d<72-;<=76j;o344?5<3`;3:7>5$052>4>03g;<<7>4;h3;1?6=,8=:6<68;o344?7<3`;387>5$052>4>03g;<<7<4;h3;7?6=,8=:6<68;o344?5<3`;3n7>5$052>4>d3g;<<7>4;h3;e?6=,8=:6<6l;o344?7<3`;357>5$052>4>d3g;<<7<4;h3;<?6=,8=:6<6l;o344?5<3fk36=4+1639e<=i9>:1<65`a683>!7093k27c?80;38?jg2290/=:?5a89m526=:21dm94?:%345?g>3g;<<7=4;nc0>5<#9>;1m45a16290>=hi;0;6)?81;c:?k7083?07bo>:18'527=i01e=:>56:9le5<72-;<=7o6;o344?1<3f3m6=4+1639e<=i9>:1465`9d83>!7093k27c?80;;8?j?c290/=:?5a89m526=i21d5n4?:%345?g>3g;<<7l4;n;b>5<#9>;1m45a1629g>=h100;6)?81;c:?k7083n07b77:18'527=i01e=:>5e:9l=2<72-;<=7o6;o344?`<3f3=6=4+1639e<=i9>:1==54o8794?"6?80j56`>71825>=h1=0;6)?81;c:?k7083;976a63;29 4162h30b<9?:018?j?5290/=:?5a89m526=9=10c4?50;&234<f12d:;=4>5:9lec<72-;<=7o6;o344?7132eji7>5$052>d?<f8=;6<94;ncg>5<#9>;1m45a16295==<ghi1<7*>708b=>h6?90:565`ac83>!7093k27c?80;3b?>ifi3:1(<9>:`;8j41728h07bo9:18'527=i01e=:>51b98k<d=83.:;<4n9:l235<6l21d5=4?:%345?g>3g;<<7?j;:m;b?6=,8=:6l74n053>4`<3fi26=4+1639gd=i9>:1<65`c983>!7093ij7c?80;38?je1290/=:?5c`9m526=:21do84?:%345?ef3g;<<7=4;na7>5<#9>;1ol5a16290>=hk:0;6)?81;ab?k7083?07bm=:18'527=kh1e=:>56:9lg4<72-;<=7mn;o344?1<3fi;6=4+1639gd=i9>:1465`bg83>!7093ij7c?80;;8?jdb290/=:?5c`9m526=i21dni4?:%345?ef3g;<<7l4;n`a>5<#9>;1ol5a1629g>=hjh0;6)?81;ab?k7083n07bl6:18'527=kh1e=:>5e:9lf=<72-;<=7mn;o344?`<3fh<6=4+1639gd=i9>:1==54oc494?"6?80hm6`>71825>=hj<0;6)?81;ab?k7083;976am4;29 4162jk0b<9?:018?jd4290/=:?5c`9m526=9=10co<50;&234<di2d:;=4>5:9l`5<72-;<=7mn;o344?7132ehj7>5$052>fg<f8=;6<94;naf>5<#9>;1ol5a16295==<gjn1<7*>708`e>h6?90:565`cb83>!7093ij7c?80;3b?>idj3:1(<9>:bc8j41728h07bm8:18'527=kh1e=:>51b98kge=83.:;<4la:l235<6l21dn<4?:%345?ef3g;<<7?j;:ma4?6=,8=:6no4n053>4`<3fn?6=4+1639`0=i9>:1<65`d283>!7093n>7c?80;38?jb5290/=:?5d49m526=:21dh<4?:%345?b23g;<<7=4;nf:>5<#9>;1hl5a16294>=hl10;6)?81;fb?k7083;07bj8:18'527=lh1e=:>52:9l`3<72-;<=7jn;o344?5<3th:;n4?:cc94?6|,8=j6<9=;I3:4>N6091Q?44l{784>`<a2891=94>5;35>46=980:;7?7:|l75?2<f=8186*>2c82?!75k3;0(h=52:&f0?4<,l?1>6*j6;08 `1=:2.n47<4$0:f>4143-;<:7?4$d`96>"bk380(hj52:&fa?4<,ll1>6*i0;08 c7=:2.m>7<4$g196>"a<380(k;52:&e2?4<,o=1>6*i8;08 c?=:2.mm7<4$g`96>"ak380(kj52:&ea?4<,ol1>6*>0181?!779380(<>=:39'555=:2.:<94=;%331?4<,8:=6?5+11596>"681097)??9;08 46f2;1/==l52:&24f<53-;;h7<4$02f>7=#99l1>6*>1181?!769380(<?=:39'545=:2.:=94=;%321?4<,8;=6?5+10596>"691097)?>9;08 47f2;1/=<l52:&25f<53-;:h7<4$03f>7=#98l1>6*>2181?!759380(<<=:39'575=:2.:>94=;%311?4<,88=6?5+13596>"6:1097)?=9;08 44f2;1/=::5369'a<<53-oj6?5+19f9525<,8=<6<5f3b83>>o4l3:17djm:188mae=831b=:650;9j52?=831b=h4?:%345?7a3g;<<7>4;h3g>5<#9>;1=k5a16295>=n9j0;6)?81;3e?k7083807d?m:18'527=9o1e=:>53:9j62<72-;<=7?i;o344?2<3`8=6=4+16395c=i9>:1965f2483>!7093;m7c?80;48?l43290/=:?51g9m526=?21b>>4?:%345?7a3g;<<764;h01>5<#9>;1=k5a1629=>=n:80;6)?81;3e?k7083k07d<?:18'527=9o1e=:>5b:9j5d<72-;<=7?i;o344?e<3`;26=4+16395c=i9>:1h65f2e83>!70938n7c?80;28?l4d290/=:?52d9m526=921b>o4?:%345?4b3g;<<7<4;h0b>5<#9>;1>h5a16297>=n;?0;6)?81;0f?k7083>07d=::18'527=:l1e=:>55:9j71<72-;<=7<j;o344?0<3`986=4+16396`=i9>:1;65f3383>!70938n7c?80;:8?l56290/=:?52d9m526=121b?=4?:%345?4b3g;<<7o4;h0e>5<#9>;1>h5a1629f>=n:00;6)?81;0f?k7083i07d<7:18'527=:l1e=:>5d:9j1f<72-;<=7;k;o344?6<3`?i6=4+16391a=i9>:1=65f5883>!7093?o7c?80;08?l3?290/=:?55e9m526=;21b9:4?:%345?3c3g;<<7:4;h75>5<#9>;19i5a16291>=n=<0;6)?81;7g?k7083<07d;;:18'527==m1e=:>57:9j16<72-;<=7;k;o344?><3`?96=4+16391a=i9>:1565f5083>!7093?o7c?80;c8?l37290/=:?55e9m526=j21b8h4?:%345?3c3g;<<7m4;h6g>5<#9>;19i5a1629`>=n<j0;6)?81;7g?k7083o07d:m:18'527==m1e=:>5f:9j0d<72-;<=7;k;o344?7732c?57>5$052>0b<f8=;6<?4;h6;>5<#9>;19i5a162957=<a==1<7*>7086`>h6?90:?65f4783>!7093?o7c?80;37?>o3=3:1(<9>:4f8j41728?07d8<:18'527==m1e=:>51798m34=83.:;<4:d:l235<6?21b:<4?:%345?3c3g;<<7?7;:k54?6=,8=:68j4n053>4?<3`?m6=4+16391a=i9>:1=l54i4g94?"6?80>h6`>7182f>=n=h0;6)?81;7g?k7083;h76g;f;29 4162<n0b<9?:0f8?l23290/=:?55e9m526=9l10e9=50;&234<2l2d:;=4>f:9j3a<72-;<=79j;o344?6<3`=h6=4+16393`=i9>:1=65f7`83>!7093=n7c?80;08?l1>290/=:?57d9m526=;21b;54?:%345?1b3g;<<7:4;h54>5<#9>;1;h5a16291>=n??0;6)?81;5f?k7083<07d9::18'527=?l1e=:>57:9j31<72-;<=79j;o344?><3`=86=4+16393`=i9>:1565f7383>!7093=n7c?80;c8?l16290/=:?57d9m526=j21b:k4?:%345?1b3g;<<7m4;h4f>5<#9>;1;h5a1629`>=n>m0;6)?81;5f?k7083o07d8l:18'527=?l1e=:>5f:9j2g<72-;<=79j;o344?7732c=m7>5$052>2c<f8=;6<?4;h4:>5<#9>;1;h5a162957=<a?21<7*>7084a>h6?90:?65f6683>!7093=n7c?80;37?>o1>3:1(<9>:6g8j41728?07d6;:18'527=?l1e=:>51798m=5=83.:;<48e:l235<6?21b4?4?:%345?1b3g;<<7?7;:k;5?6=,8=:6:k4n053>4?<3`2;6=4+16393`=i9>:1=l54i6d94?"6?80<i6`>7182f>=n?k0;6)?81;5f?k7083;h76g80;29 4162>o0b<9?:0f8?l02290/=:?57d9m526=9l10e;:50;&234<0m2d:;=4>f:9j<=<72-;<=766;o344?6<3`2<6=4+1639<<=i9>:1=65f8783>!7093227c?80;08?l>2290/=:?5889m526=;21b4i4?:%345?>b3g;<<7>4;h:`>5<#9>;14h5a16295>=n0k0;6)?81;:f?k7083807d6n:18'527=0l1e=:>53:9j5=0=83.:;<4>869m526=821b=5;50;&234<60>1e=:>51:9j5=2=83.:;<4>869m526=:21b=5=50;&234<60>1e=:>53:9j5=d=83.:;<4>8b9m526=821b=5o50;&234<60j1e=:>51:9j5=?=83.:;<4>8b9m526=:21b=5650;&234<60j1e=:>53:9le=<72-;<=7o6;o344?6<3fk<6=4+1639e<=i9>:1=65`a483>!7093k27c?80;08?jg3290/=:?5a89m526=;21dm>4?:%345?g>3g;<<7:4;nc1>5<#9>;1m45a16291>=hi80;6)?81;c:?k7083<07bo?:18'527=i01e=:>57:9l=c<72-;<=7o6;o344?><3f3n6=4+1639e<=i9>:1565`9e83>!7093k27c?80;c8?j?d290/=:?5a89m526=j21d5l4?:%345?g>3g;<<7m4;n;:>5<#9>;1m45a1629`>=h110;6)?81;c:?k7083o07b78:18'527=i01e=:>5f:9l=3<72-;<=7o6;o344?7732e297>5$052>d?<f8=;6<?4;n;7>5<#9>;1m45a162957=<g091<7*>708b=>h6?90:?65`9383>!7093k27c?80;37?>i>93:1(<9>:`;8j41728?07boi:18'527=i01e=:>51798kdc=83.:;<4n9:l235<6?21dmi4?:%345?g>3g;<<7?7;:mbg?6=,8=:6l74n053>4?<3fki6=4+1639e<=i9>:1=l54o`c94?"6?80j56`>7182f>=hi?0;6)?81;c:?k7083;h76a6b;29 4162h30b<9?:0f8?j?7290/=:?5a89m526=9l10c5h50;&234<f12d:;=4>f:9lg<<72-;<=7mn;o344?6<3fi36=4+1639gd=i9>:1=65`c783>!7093ij7c?80;08?je2290/=:?5c`9m526=;21do94?:%345?ef3g;<<7:4;na0>5<#9>;1ol5a16291>=hk;0;6)?81;ab?k7083<07bm>:18'527=kh1e=:>57:9lg5<72-;<=7mn;o344?><3fhm6=4+1639gd=i9>:1565`bd83>!7093ij7c?80;c8?jdc290/=:?5c`9m526=j21dno4?:%345?ef3g;<<7m4;n`b>5<#9>;1ol5a1629`>=hj00;6)?81;ab?k7083o07bl7:18'527=kh1e=:>5f:9lf2<72-;<=7mn;o344?7732ei:7>5$052>fg<f8=;6<?4;n`6>5<#9>;1ol5a162957=<gk>1<7*>708`e>h6?90:?65`b283>!7093ij7c?80;37?>ie:3:1(<9>:bc8j41728?07bj?:18'527=kh1e=:>51798kf`=83.:;<4la:l235<6?21doh4?:%345?ef3g;<<7?7;:m``?6=,8=:6no4n053>4?<3fih6=4+1639gd=i9>:1=l54ob`94?"6?80hm6`>7182f>=hk>0;6)?81;ab?k7083;h76amc;29 4162jk0b<9?:0f8?jd6290/=:?5c`9m526=9l10co>50;&234<di2d:;=4>f:9l`1<72-;<=7j:;o344?6<3fn86=4+1639`0=i9>:1=65`d383>!7093n>7c?80;08?jb6290/=:?5d49m526=;21dh44?:%345?bf3g;<<7>4;nf;>5<#9>;1hl5a16295>=hl>0;6)?81;fb?k7083807bj9:18'527=lh1e=:>53:9~f41e290im7>50z&23d<6?;1C=4>4H0:3?_5>2jq=6:4j:g827?7328?1=;4>0;32>41=910vb9?54:l76?2<,88i6<5+13a95>"b;380(h:52:&f1?4<,l<1>6*j7;08 `>=:2.:4h4>729'520=92.nn7<4$da96>"bl380(hk52:&fb?4<,o:1>6*i1;08 c4=:2.m?7<4$g696>"a=380(k852:&e3?4<,o21>6*i9;08 cg=:2.mn7<4$ga96>"al380(kk52:&eb?4<,8:;6?5+11396>"68;097)??3;08 4632;1/==;52:&243<53-;;;7<4$02;>7=#9931>6*>0`81?!77j380(<>l:39'55b=:2.:<h4=;%33b?4<,8;;6?5+10396>"69;097)?>3;08 4732;1/=<;52:&253<53-;:;7<4$03;>7=#9831>6*>1`81?!76j380(<?l:39'54b=:2.:=h4=;%32b?4<,88;6?5+13396>"6:;097)?=3;08 4432;1/=?;52:&263<53-;9;7<4$00;>7=#9;31>6*>2`81?!70<39<7)k6:39'ad<53-;3h7?83:&232<63`9h6=44i2f94?=nlk0;66gkc;29?l7003:17d?89;29?l7b290/=:?51g9m526=821b=i4?:%345?7a3g;<<7?4;h3`>5<#9>;1=k5a16296>=n9k0;6)?81;3e?k7083907d<8:18'527=9o1e=:>54:9j63<72-;<=7?i;o344?3<3`8>6=4+16395c=i9>:1:65f2583>!7093;m7c?80;58?l44290/=:?51g9m526=021b>?4?:%345?7a3g;<<774;h02>5<#9>;1=k5a1629e>=n:90;6)?81;3e?k7083h07d?n:18'527=9o1e=:>5c:9j5<<72-;<=7?i;o344?b<3`8o6=4+16396`=i9>:1<65f2b83>!70938n7c?80;38?l4e290/=:?52d9m526=:21b>l4?:%345?4b3g;<<7=4;h15>5<#9>;1>h5a16290>=n;<0;6)?81;0f?k7083?07d=;:18'527=:l1e=:>56:9j76<72-;<=7<j;o344?1<3`996=4+16396`=i9>:1465f3083>!70938n7c?80;;8?l57290/=:?52d9m526=i21b>k4?:%345?4b3g;<<7l4;h0:>5<#9>;1>h5a1629g>=n:10;6)?81;0f?k7083n07d;l:18'527==m1e=:>50:9j1g<72-;<=7;k;o344?7<3`?26=4+16391a=i9>:1>65f5983>!7093?o7c?80;18?l30290/=:?55e9m526=<21b9;4?:%345?3c3g;<<7;4;h76>5<#9>;19i5a16292>=n==0;6)?81;7g?k7083=07d;<:18'527==m1e=:>58:9j17<72-;<=7;k;o344??<3`?:6=4+16391a=i9>:1m65f5183>!7093?o7c?80;`8?l2b290/=:?55e9m526=k21b8i4?:%345?3c3g;<<7j4;h6`>5<#9>;19i5a1629a>=n<k0;6)?81;7g?k7083l07d:n:18'527==m1e=:>51198m1?=83.:;<4:d:l235<6921b854?:%345?3c3g;<<7?=;:k73?6=,8=:68j4n053>45<3`>=6=4+16391a=i9>:1=954i5794?"6?80>h6`>71821>=n>:0;6)?81;7g?k7083;=76g92;29 4162<n0b<9?:058?l06290/=:?55e9m526=9110e;>50;&234<2l2d:;=4>9:9j1c<72-;<=7;k;o344?7f32c>i7>5$052>0b<f8=;6<l4;h7b>5<#9>;19i5a16295f=<a=l1<7*>7086`>h6?90:h65f4583>!7093?o7c?80;3f?>o3;3:1(<9>:4f8j41728l07d9k:18'527=?l1e=:>50:9j3f<72-;<=79j;o344?7<3`=j6=4+16393`=i9>:1>65f7883>!7093=n7c?80;18?l1?290/=:?57d9m526=<21b;:4?:%345?1b3g;<<7;4;h55>5<#9>;1;h5a16292>=n?<0;6)?81;5f?k7083=07d9;:18'527=?l1e=:>58:9j36<72-;<=79j;o344??<3`=96=4+16393`=i9>:1m65f7083>!7093=n7c?80;`8?l0a290/=:?57d9m526=k21b:h4?:%345?1b3g;<<7j4;h4g>5<#9>;1;h5a1629a>=n>j0;6)?81;5f?k7083l07d8m:18'527=?l1e=:>51198m3g=83.:;<48e:l235<6921b:44?:%345?1b3g;<<7?=;:k5<?6=,8=:6:k4n053>45<3`<<6=4+16393`=i9>:1=954i7494?"6?80<i6`>71821>=n0=0;6)?81;5f?k7083;=76g73;29 4162>o0b<9?:058?l>5290/=:?57d9m526=9110e5?50;&234<0m2d:;=4>9:9j<5<72-;<=79j;o344?7f32c<j7>5$052>2c<f8=;6<l4;h5a>5<#9>;1;h5a16295f=<a>:1<7*>7084a>h6?90:h65f6483>!7093=n7c?80;3f?>o1<3:1(<9>:6g8j41728l07d67:18'527=001e=:>50:9j<2<72-;<=766;o344?7<3`2=6=4+1639<<=i9>:1>65f8483>!7093227c?80;18?l>c290/=:?58d9m526=821b4n4?:%345?>b3g;<<7?4;h:a>5<#9>;14h5a16296>=n0h0;6)?81;:f?k7083907d?76;29 416282<7c?80;28?l7?=3:1(<9>:0:4?k7083;07d?74;29 416282<7c?80;08?l7?;3:1(<9>:0:4?k7083907d?7b;29 416282h7c?80;28?l7?i3:1(<9>:0:`?k7083;07d?79;29 416282h7c?80;08?l7?03:1(<9>:0:`?k7083907bo7:18'527=i01e=:>50:9le2<72-;<=7o6;o344?7<3fk>6=4+1639e<=i9>:1>65`a583>!7093k27c?80;18?jg4290/=:?5a89m526=<21dm?4?:%345?g>3g;<<7;4;nc2>5<#9>;1m45a16292>=hi90;6)?81;c:?k7083=07b7i:18'527=i01e=:>58:9l=`<72-;<=7o6;o344??<3f3o6=4+1639e<=i9>:1m65`9b83>!7093k27c?80;`8?j?f290/=:?5a89m526=k21d544?:%345?g>3g;<<7j4;n;;>5<#9>;1m45a1629a>=h1>0;6)?81;c:?k7083l07b79:18'527=i01e=:>51198k<3=83.:;<4n9:l235<6921d594?:%345?g>3g;<<7?=;:m:7?6=,8=:6l74n053>45<3f396=4+1639e<=i9>:1=954o8394?"6?80j56`>71821>=hio0;6)?81;c:?k7083;=76ane;29 4162h30b<9?:058?jgc290/=:?5a89m526=9110clm50;&234<f12d:;=4>9:9leg<72-;<=7o6;o344?7f32ejm7>5$052>d?<f8=;6<l4;nc5>5<#9>;1m45a16295f=<g0h1<7*>708b=>h6?90:h65`9183>!7093k27c?80;3f?>i?n3:1(<9>:`;8j41728l07bm6:18'527=kh1e=:>50:9lg=<72-;<=7mn;o344?7<3fi=6=4+1639gd=i9>:1>65`c483>!7093ij7c?80;18?je3290/=:?5c`9m526=<21do>4?:%345?ef3g;<<7;4;na1>5<#9>;1ol5a16292>=hk80;6)?81;ab?k7083=07bm?:18'527=kh1e=:>58:9lfc<72-;<=7mn;o344??<3fhn6=4+1639gd=i9>:1m65`be83>!7093ij7c?80;`8?jde290/=:?5c`9m526=k21dnl4?:%345?ef3g;<<7j4;n`:>5<#9>;1ol5a1629a>=hj10;6)?81;ab?k7083l07bl8:18'527=kh1e=:>51198kg0=83.:;<4la:l235<6921dn84?:%345?ef3g;<<7?=;:ma0?6=,8=:6no4n053>45<3fh86=4+1639gd=i9>:1=954oc094?"6?80hm6`>71821>=hl90;6)?81;ab?k7083;=76alf;29 4162jk0b<9?:058?jeb290/=:?5c`9m526=9110cnj50;&234<di2d:;=4>9:9lgf<72-;<=7mn;o344?7f32ehn7>5$052>fg<f8=;6<l4;na4>5<#9>;1ol5a16295f=<gki1<7*>708`e>h6?90:h65`b083>!7093ij7c?80;3f?>ie83:1(<9>:bc8j41728l07bj;:18'527=l<1e=:>50:9l`6<72-;<=7j:;o344?7<3fn96=4+1639`0=i9>:1>65`d083>!7093n>7c?80;18?jb>290/=:?5d`9m526=821dh54?:%345?bf3g;<<7?4;nf4>5<#9>;1hl5a16296>=hl?0;6)?81;fb?k7083907p}>d983>42esW;i96P=019]5a`<V8nn7S?kd:\2`f=Y9mh0R<jn;_3f<>X6m>1U=h84^0g6?[7b<2T:i>5Q1d08Z4c63W;o56P>d99>5<7=m816=:k516:8941b28=270?8e;3b?870m3;270?8e;0:?870m38370?8e;7`?870m3?i70?8e;7:?870m3?370?8e;74?870m3?=70?8e;76?870m3??70?8e;70?870m3?970?8e;72?870m3?;70?8e;6f?870m3>o70?8e;6`?870m3>i70?8e;6b?870m3>270?8e;6;?870m3><70?8e;65?870m3>>70?8e;40?870m3<970?8e;42?870m3<;70?8e;7e?870m3?n70?8e;5g?870m3=h70?8e;5b?870m3=270?8e;5;?870m3=<70?8e;55?870m3=>70?8e;57?870m3=870?8e;51?870m3=:70?8e;4e?870m3<n70?8e;4g?870m3<h70?8e;4a?870m3<j70?8e;4:?870m3<370?8e;44?870m3<=70?8e;:7?870m32870?8e;:1?870m32:70?8e;:3?870m3=m70?8e;5a?870m3=;70?8e;46?870m3<?70?8e;:;?870m32<70?8e;:5?870m32>70?8e;:g?870m32h70?8e;:a?870m32j70?8e;3;f>;6?l0:4l5216g95=?<58=n6<67;<34`?70027:;i4>789>52b=9h16=:j5189>52b=:016=:j5299>52b==j16=:j55c9>52b==016=:j5599>52b==>16=:j5579>52b==<16=:j5559>52b==:16=:j5539>52b==816=:j5519>52b=<l16=:j54e9>52b=<j16=:j54c9>52b=<h16=:j5489>52b=<116=:j5469>52b=<?16=:j5449>52b=>:16=:j5639>52b=>816=:j5619>52b==o16=:j55d9>52b=?m16=:j57b9>52b=?h16=:j5789>52b=?116=:j5769>52b=??16=:j5749>52b=?=16=:j5729>52b=?;16=:j5709>52b=>o16=:j56d9>52b=>m16=:j56b9>52b=>k16=:j56`9>52b=>016=:j5699>52b=>>16=:j5679>52b=0=16=:j5829>52b=0;16=:j5809>52b=0916=:j57g9>52b=?k16=:j5719>52b=><16=:j5659>52b=0116=:j5869>52b=0?16=:j5849>52b=0m16=:j58b9>52b=0k16=:j58`9>52b=91h01<9k:0:b?870l3;3563>7e82<==:9>i1=:64=05`>41>34;<o7?n;<34g?7>34;<o7<6;<34g?4?34;<o7;l;<34g?3e34;<o7;6;<34g?3?34;<o7;8;<34g?3134;<o7;:;<34g?3334;<o7;<;<34g?3534;<o7;>;<34g?3734;<o7:j;<34g?2c34;<o7:l;<34g?2e34;<o7:n;<34g?2>34;<o7:7;<34g?2034;<o7:9;<34g?2234;<o78<;<34g?0534;<o78>;<34g?0734;<o7;i;<34g?3b34;<o79k;<34g?1d34;<o79n;<34g?1>34;<o797;<34g?1034;<o799;<34g?1234;<o79;;<34g?1434;<o79=;<34g?1634;<o78i;<34g?0b34;<o78k;<34g?0d34;<o78m;<34g?0f34;<o786;<34g?0?34;<o788;<34g?0134;<o76;;<34g?>434;<o76=;<34g?>634;<o76?;<34g?1a34;<o79m;<34g?1734;<o78:;<34g?0334;<o767;<34g?>034;<o769;<34g?>234;<o76k;<34g?>d34;<o76m;<34g?>f34;<o7?7b:?23f<60h16=:m519;8941d282370?8b;34<>;6?k0:;45216`95d=:9>h1=45216`96<=:9>h1>55216`91f=:9>h19o5216`91<=:9>h1955216`912=:9>h19;5216`910=:9>h1995216`916=:9>h19?5216`914=:9>h19=5216`90`=:9>h18i5216`90f=:9>h18o5216`90d=:9>h1845216`90==:9>h18:5216`903=:9>h1885216`926=:9>h1:?5216`924=:9>h1:=5216`91c=:9>h19h5216`93a=:9>h1;n5216`93d=:9>h1;45216`93==:9>h1;:5216`933=:9>h1;85216`931=:9>h1;>5216`937=:9>h1;<5216`92c=:9>h1:h5216`92a=:9>h1:n5216`92g=:9>h1:l5216`92<=:9>h1:55216`922=:9>h1:;5216`9<1=:9>h14>5216`9<7=:9>h14<5216`9<5=:9>h1;k5216`93g=:9>h1;=5216`920=:9>h1:95216`9<==:9>h14:5216`9<3=:9>h1485216`9<a=:9>h14n5216`9<g=:9>h14l5216`95=d<58=i6<6n;<34f?7?127:;o4>899~w4d4290>wS?m3:?23`<4k27:;i4<c:?23f<4k27:;o4<c:p5g2=83?pR<l;;<34a?5c34;<h7=k;<34g?5c34;<n7=k;|q2b5<72;qU=k>4=05f>f1<uz;nj7>52z\2ac=:9>o1nn5rs0gf>5<5sW;ni63>7d8a5>{t9ln1<7<t^0gg?870m3h;7p}>eb83>7}Y9li01<9k:b58yv7bj3:1>vP>ec9>52b=jj1v<h6:181[7a127:;i4m1:p5c>=838pR<h7;<34`?d73ty:j:4?:3y]5c1<58=h6n94}r3e2?6=:rT:j;5216a9ff=z{8l>6=4={_3e1>;6?j0i=6s|1g694?4|V8l?70?8c;`3?xu6n:0;6?uQ1g18941e2j=0q~?i2;296~X6n;16=:l5bb9~w4cf2909wS?ja:?23g<e92wx=h750;0xZ4c>34;<n7l?;|q146<728;pR?><;<34a?7?>27:;h4>849>52c=91>01<9j:0:0?870l3;3:63>7e82<0=:9>n1=5:4=05g>4>434;<o7?76:?23f<60<16=:m51968941d282870?8b;3;2>;6?k0:485216`95=2<58=i6<6<;|q2=g<72<qU=4l4=05f>4c<58=o6<k4=05`>4c<58=i6<k4}r3:e?6==rT:5l5216g95a=:9>n1=i5216a95a=:9>h1=i5rs0c7>5<2sW;j863>7d82g>;6?m0:o63>7b82g>;6?k0:o6s|1`194?3|V8k870?8e;3a?870l3;i70?8c;3a?870j3;i7p}>a383>0}Y9h801<9j:358941c2;=01<9l:358941e2;=0q~?n1;291~X6i816=:k5279>52b=:?16=:m5279>52d=:?1v<o?:186[7f827:;h4=5:?23a<5=27:;n4=5:?23g<5=2wx=4h50;7xZ4?a34;<i7<;;<34`?4334;<o7<;;<34f?433ty:5h4?:4y]5<c<58=n6?=4=05g>75<58=h6?=4=05a>75<uz;2h7>55z\2=a=:9>o1>?5216f967=:9>i1>?5216`967=z{8326=4:{_3:=>;6?l09=63>7e815>;6?j09=63>7c815>{t9021<7;t^0;;?870m38;70?8d;03?870k38;70?8b;03?xu6i10;68uQ1`:8941b2;n01<9k:3f8941d2;n01<9m:3f8yv7f?3:19vP>a69>52c=:j16=:j52b9>52e=:j16=:l52b9~w4d6290>wS?m1:?23`<5j27:;i4=b:?23f<5j27:;o4=b:p5g6=83?pR<l?;<34a?4f34;<h7<n;<34g?4f34;<n7<n;|q2ec<72<qU=lh4=05f>60<58=o6>84=05`>60<58=i6>84}r3ba?6==rT:mh5216g970=:9>n1?85216a970=:9>h1?85rs0cg>5<2sW;jh63>7d800>;6?m08863>7b800>;6?k0886s|1`a94?3|V8kh70?8e;10?870l39870?8c;10?870j3987p}>ac83>0}Y9hh01<9j:208941c2:801<9l:208941e2:80q~?na;291~X6ih16=:k5309>52b=;816=:m5309>52d=;81v<o9:186[7f>27:;h4<0:?23a<4827:;n4<0:?23g<482wx=l;50;7xZ4g234;<i7<i;<34`?4a34;<o7<i;<34f?4a3ty:ni4?:3y]5gb<58=n68o4}r3ag?6=:rT:nn5216g90c=z{8hi6=4={_3af>;6?l0?86s|1cc94?4|V8hj70?8e;60?xu6j00;6?uQ1c;8941c2<k0q~?m8;296~X6j116=:j54g9~w4e12909wS?l6:?23a<3<2wx=n;50;0xZ4e234;<h7:<;|q2g1<72;qU=n:4=05`>0g<uz;h?7>52z\2g6=:9>i18k5rs0a1>5<5sW;h>63>7b870>{t9j;1<7<t^0a2?870k3>87p}>c183>7}Y9j:01<9m:4c8yv7en3:1>vP>bg9>52d=<o1v<l8:181[7e?27:;o4;4:p5g0=838pR<l9;<34f?243ty:?<4?:8y>5<4=9?o01<9j:e`8941b2mi01<9k:e`8941c2mi01<9l:e`8941d2mi01<9m:e`8941e2mi0qp}>b283>7}Y9k901>651c18 41a289h7p}>be83>7}Y9kn01>651cf8 41a28><7p}>bb83>7}Y9ki01>651ca8 41a28>j7p}>bc83>7}Y9kh01>651c`8 41a28>i7p}>b`83>7}Y9kk01>651cc8 41a28>o7p}>b883>7}Y9k301>651c;8 41a28?;7p}>b983>7}Y9k201>651c:8 41a28?i7p}>c783>7}Y9j<01>651b48 41a28<97p}>c483>7}Y9j?01>651b78 41a28997p}>c583>7}Y9j>01>651b68 41a28987p}>c283>7}Y9j901>651b18 41a289?7p}>c383>7}Y9j801>651b08 41a289>7p}>c083>7}Y9j;01>651b38 41a289=7p}>c183>7}Y9j:01>651b28 41a289<7p}>bg83>7}Y9kl01>651cd8 41a28937p}>b683>7}Y9k=01>651c58 41a28927p}>b783>7}Y9k<01>651c48 41a289j7p}>9c83>7}Y90h01>6518`8 41a289i7p}>9`83>7}Y90k01>6518c8 41a289o7p}>a583>7}Y9h>01>651`68 41a289n7p}>a283>7}Y9h901>651`18 41a289m7p}>a383>7}Y9h801>651`08 41a28>;7p}>a083>7}Y9h;01>651`38 41a28>:7p}>a183>7}Y9h:01>651`28 41a28>97p}>9g83>7}Y90l01>6518d8 41a28>87p}>9d83>7}Y90o01>6518g8 41a28>?7p}>9e83>7}Y90n01>6518f8 41a28>>7p}>9883>7}Y90301>6518;8 41a28>=7p}>9983>7}Y90201>6518:8 41a28>37p}=0283>7}Y:9901>652118 41a28>27p}>b583>7}Y9k>01>651c68 41a28>h7p}>a983>7}Y9h201>651`:8 41a28>n7p}>a683>7}Y9h=01>651`58 41a28>m7p}>b083>7}Y9k;01>651c38 41a28?:7p}>b183>7}Y9k:01>651c28 41a28?97p}>ag83>7}Y9hl01>651`d8 41a28?87p}>ad83>7}Y9ho01>651`g8 41a28??7p}>ae83>7}Y9hn01>651`f8 41a28?>7p}>ab83>7}Y9hi01>651`a8 41a28?=7p}>ac83>7}Y9hh01>651``8 41a28?<7p}>a`83>7}Y9hk01>651`c8 41a28?37p}>a783>7}Y9h<01>651`48 41a28?27p}>a483>7}Y9h?01>651`78 41a28?j7p}>f183>7}Y9o:01>651g28 41a28?h7p}>eg83>7}Y9ll01>651dd8 41a28?o7p}>ed83>7}Y9lo01>651dg8 41a28?n7p}>ee83>7}Y9ln01>651df8 41a28?m7p}>eb83>7}Y9li01>651da8 41a28<;7p}>ec83>7}Y9lh01>651d`8 41a28<:7p}>f883>7}Y9o301>651g;8 41a28<87p}>f983>7}Y9o201>651g:8 41a28<?7p}>f683>7}Y9o=01>651g58 41a28<>7p}>f783>7}Y9o<01>651g48 41a28<=7p}>f483>7}Y9o?01>651g78 41a28<<7p}>f583>7}Y9o>01>651g68 41a28<37p}>f283>7}Y9o901>651g18 41a28<27p}>f383>7}Y9o801>651g08 41a28<j7p}>e`83>7}Y9lk01>651dc8 41a28<i7p}>e883>7}Y9l301>651d;8 41a28<h7psa3ea94?4|@82;7p`<de83>7}O91:0qc=ke;296~N6091vb>ji:181M7?82we?h>50;0xL4>73td8i<4?:3yK5=6<ug9n>7>52zJ2<5=zf:o86=4={I3;4>{i;l>1<7<tH0:3?xh4m<0;6?uG1928yk5b>3:1>vF>819~j6c02909wE?70:m7`>=838pD<6?;|l0a<<72;qC=5>4}o1fe?6=:rB:4=5rn2ga>5<5sA;3<6sa3da94?4|@82;7p`<ee83>7}O91:0qc=je;296~N6091vb>ki:181M7?82we?k>50;0xL4>73td8j<4?:3yK5=6<ug9m>7>52zJ2<5=zf:l86=4={I3;4>{i;o>1<7<tH0:3?xh4n<0;6?uG1928yk5a>3:1>vF>819~j6`02909wE?70:m7c>=838pD<6?;|l0b<<72;qC=5>4}o1ee?6=:rB:4=5rn2da>5<5sA;3<6sa3ga94?4|@82;7p`<fe83>7}O91:0qc=ie;296~N6091vb>hi:181M7?82we8=>50;0xL4>73td?<<4?:3yK5=6<ug>;>7>52zJ2<5=zf=:86=4={I3;4>{i<9>1<7<tH0:3?xh38<0;6?uG1928yk27>3:1>vF>819~j1602909wE?70:m05>=838pD<6?;|l74<<72;qC=5>4}o63e?6=:rB:4=5rn52a>5<5sA;3<6sa41a94?4|@82;7p`;0e83>7}O91:0qc:?e;296~N6091vb9>i:181M7?82we8<>50;0xL4>73td?=<4?:3yK5=6<ug>:>7>52zJ2<5=zf=;86=4={I3;4>{i<8>1<7<tH0:3?xh39<0;6?uG1928yk26>3:1>vF>819~j6?a290:wE?70:m7ad=83;pD<6?;|~yEFDs=??6<k9cg142xFGJr:vLM^t}AB
Index: firmware/FTM/ethernet/FRAM_4096_16b_FRAM_4096_16b_a.vhd
===================================================================
--- firmware/FTM/ethernet/FRAM_4096_16b_FRAM_4096_16b_a.vhd	(revision 10227)
+++ firmware/FTM/ethernet/FRAM_4096_16b_FRAM_4096_16b_a.vhd	(revision 10227)
@@ -0,0 +1,151 @@
+-- Coregen VHDL wrapper file modified by HDL Designer
+
+--------------------------------------------------------------------------------
+--     This file is owned and controlled by Xilinx and must be used           --
+--     solely for design, simulation, implementation and creation of          --
+--     design files limited to Xilinx devices or technologies. Use            --
+--     with non-Xilinx devices or technologies is expressly prohibited        --
+--     and immediately terminates your license.                               --
+--                                                                            --
+--     XILINX IS PROVIDING THIS DESIGN, CODE, OR INFORMATION "AS IS"          --
+--     SOLELY FOR USE IN DEVELOPING PROGRAMS AND SOLUTIONS FOR                --
+--     XILINX DEVICES.  BY PROVIDING THIS DESIGN, CODE, OR INFORMATION        --
+--     AS ONE POSSIBLE IMPLEMENTATION OF THIS FEATURE, APPLICATION            --
+--     OR STANDARD, XILINX IS MAKING NO REPRESENTATION THAT THIS              --
+--     IMPLEMENTATION IS FREE FROM ANY CLAIMS OF INFRINGEMENT,                --
+--     AND YOU ARE RESPONSIBLE FOR OBTAINING ANY RIGHTS YOU MAY REQUIRE       --
+--     FOR YOUR IMPLEMENTATION.  XILINX EXPRESSLY DISCLAIMS ANY               --
+--     WARRANTY WHATSOEVER WITH RESPECT TO THE ADEQUACY OF THE                --
+--     IMPLEMENTATION, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OR         --
+--     REPRESENTATIONS THAT THIS IMPLEMENTATION IS FREE FROM CLAIMS OF        --
+--     INFRINGEMENT, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS        --
+--     FOR A PARTICULAR PURPOSE.                                              --
+--                                                                            --
+--     Xilinx products are not intended for use in life support               --
+--     appliances, devices, or systems. Use in such applications are          --
+--     expressly prohibited.                                                  --
+--                                                                            --
+--     (c) Copyright 1995-2007 Xilinx, Inc.                                   --
+--     All rights reserved.                                                   --
+--------------------------------------------------------------------------------
+-- You must compile the wrapper file FRAM_4096_16b.vhd when simulating
+-- the core, FRAM_4096_16b. When compiling the wrapper file, be sure to
+-- reference the XilinxCoreLib VHDL simulation library. For detailed
+-- instructions, please refer to the "CORE Generator Help".
+
+-- The synthesis directives "translate_off/translate_on" specified
+-- below are supported by Xilinx, Mentor Graphics and Synplicity
+-- synthesis tools. Ensure they are correct for your synthesis tool(s).
+
+-- hds interface_start
+LIBRARY ieee;
+USE ieee.std_logic_1164.ALL;
+-- synthesis translate_off
+LIBRARY XilinxCoreLib;
+
+--  synthesis translate_on
+-- 
+ENTITY FRAM_4096_16b IS
+   PORT( 
+      clka  : IN     std_logic;
+      dina  : IN     std_logic_VECTOR (15 DOWNTO 0);
+      addra : IN     std_logic_VECTOR (11 DOWNTO 0);
+      wea   : IN     std_logic_VECTOR (0 DOWNTO 0);
+      clkb  : IN     std_logic;
+      addrb : IN     std_logic_VECTOR (11 DOWNTO 0);
+      doutb : OUT    std_logic_VECTOR (15 DOWNTO 0)
+   );
+
+-- Declarations
+
+END FRAM_4096_16b ;
+-- hds interface_end
+
+ARCHITECTURE FRAM_4096_16b_a OF FRAM_4096_16b IS
+
+-- hds translate_off
+
+-- synthesis translate_off
+component wrapped_FRAM_4096_16b
+	port (
+	clka: IN std_logic;
+	dina: IN std_logic_VECTOR(15 downto 0);
+	addra: IN std_logic_VECTOR(11 downto 0);
+	wea: IN std_logic_VECTOR(0 downto 0);
+	clkb: IN std_logic;
+	addrb: IN std_logic_VECTOR(11 downto 0);
+	doutb: OUT std_logic_VECTOR(15 downto 0));
+end component;
+
+-- Configuration specification 
+	for all : wrapped_FRAM_4096_16b use entity XilinxCoreLib.blk_mem_gen_v2_8(behavioral)
+		generic map(
+			c_has_regceb => 0,
+			c_has_regcea => 0,
+			c_mem_type => 1,
+			c_prim_type => 1,
+			c_sinita_val => "0",
+			c_read_width_b => 16,
+			c_family => "spartan3",
+			c_read_width_a => 16,
+			c_disable_warn_bhv_coll => 0,
+			c_write_mode_b => "READ_FIRST",
+			c_init_file_name => "no_coe_file_loaded",
+			c_write_mode_a => "READ_FIRST",
+			c_mux_pipeline_stages => 0,
+			c_has_mem_output_regs_b => 0,
+			c_load_init_file => 0,
+			c_xdevicefamily => "spartan3a",
+			c_has_mem_output_regs_a => 0,
+			c_write_depth_b => 4096,
+			c_write_depth_a => 4096,
+			c_has_ssrb => 0,
+			c_has_mux_output_regs_b => 0,
+			c_has_ssra => 0,
+			c_has_mux_output_regs_a => 0,
+			c_addra_width => 12,
+			c_addrb_width => 12,
+			c_default_data => "0",
+			c_use_ecc => 0,
+			c_algorithm => 1,
+			c_disable_warn_bhv_range => 0,
+			c_write_width_b => 16,
+			c_write_width_a => 16,
+			c_read_depth_b => 4096,
+			c_read_depth_a => 4096,
+			c_byte_size => 9,
+			c_sim_collision_check => "ALL",
+			c_use_ramb16bwer_rst_bhv => 0,
+			c_common_clk => 0,
+			c_wea_width => 1,
+			c_has_enb => 0,
+			c_web_width => 1,
+			c_has_ena => 0,
+			c_sinitb_val => "0",
+			c_use_byte_web => 0,
+			c_use_byte_wea => 0,
+			c_use_default_data => 1);
+-- synthesis translate_on
+
+-- hds translate_on
+
+BEGIN
+
+-- hds translate_off
+
+-- synthesis translate_off
+U0 : wrapped_FRAM_4096_16b
+		port map (
+			clka => clka,
+			dina => dina,
+			addra => addra,
+			wea => wea,
+			clkb => clkb,
+			addrb => addrb,
+			doutb => doutb);
+-- synthesis translate_on
+
+
+-- hds translate_on
+
+END FRAM_4096_16b_a;
Index: firmware/FTM/ethernet/cram_control_beha.vhd
===================================================================
--- firmware/FTM/ethernet/cram_control_beha.vhd	(revision 10227)
+++ firmware/FTM/ethernet/cram_control_beha.vhd	(revision 10227)
@@ -0,0 +1,349 @@
+--
+-- VHDL Architecture FACT_FTM_lib.cram_control.beha
+--
+-- Created:
+--          by - kai.UNKNOWN (E5PCXX)
+--          at - 14:42:24 01.02.2011
+--
+-- using Mentor Graphics HDL Designer(TM) 2009.1 (Build 12)
+--
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE ieee.std_logic_arith.all;
+USE IEEE.STD_LOGIC_UNSIGNED.all;
+-- LIBRARY FACT_FTM_lib;
+-- USE FACT_FTM_lib.ftm_array_types.all;
+-- USE FACT_FTM_lib.ftm_constants.all;
+library ftm_definitions;
+USE ftm_definitions.ftm_array_types.all;
+USE ftm_definitions.ftm_constants.all;
+
+ENTITY cram_control IS
+   PORT( 
+      clk : IN     std_logic;
+      led : OUT std_logic_vector (7 downto 0) := X"00";
+      cram_data_in : OUT std_logic_vector (15 downto 0);
+      cram_data_out : IN std_logic_vector (15 downto 0);
+      cram_addr_in, cram_addr_out : OUT std_logic_vector (11 downto 0);
+      cram_we : OUT std_logic_vector (0 downto 0) := "0";
+      sd_write, sd_read, sd_read_ftu : IN std_logic;
+      sd_busy : OUT std_logic := '1';
+      sd_started, sd_started_ftu : OUT std_logic := '0';
+      sd_ready : OUT std_logic := '0';
+      sd_data_in : IN std_logic_vector (15 downto 0);
+      sd_data_out, sd_data_out_ftu : OUT std_logic_vector (15 downto 0) := (others => '0');
+      sd_addr, sd_addr_ftu : IN std_logic_vector (11 downto 0);
+      
+      config_start_cc : IN std_logic;
+      config_started_cc : OUT std_logic := '0';
+      config_ready_cc : OUT std_logic := '0';
+      
+      -- data from config ram
+      general_settings  : OUT std_logic_vector (15 downto 0) := (others => '0');
+      lp_pt_freq        : OUT std_logic_vector (15 downto 0) := (others => '0');
+      lp_pt_ratio       : OUT std_logic_vector (15 downto 0) := (others => '0');
+      lp1_amplitude     : OUT std_logic_vector (15 downto 0) := (others => '0');
+      lp2_amplitude     : OUT std_logic_vector (15 downto 0) := (others => '0');
+      lp1_delay         : OUT std_logic_vector (15 downto 0) := (others => '0');
+      lp2_delay         : OUT std_logic_vector (15 downto 0) := (others => '0');
+      coin_n_p          : OUT std_logic_vector (15 downto 0) := (others => '0');
+      coin_n_c          : OUT std_logic_vector (15 downto 0) := (others => '0');
+      trigger_delay     : OUT std_logic_vector (15 downto 0) := (others => '0');
+      timemarker_delay  : OUT std_logic_vector (15 downto 0) := (others => '0');
+      dead_time         : OUT std_logic_vector (15 downto 0) := (others => '0');
+      cc_R0             : OUT std_logic_vector (31 downto 0) := (others => '0');
+      cc_R1             : OUT std_logic_vector (31 downto 0) := (others => '0');
+      cc_R8             : OUT std_logic_vector (31 downto 0) := (others => '0');
+      cc_R9             : OUT std_logic_vector (31 downto 0) := (others => '0');
+      cc_R11            : OUT std_logic_vector (31 downto 0) := (others => '0');
+      cc_R13            : OUT std_logic_vector (31 downto 0) := (others => '0');
+      cc_R14            : OUT std_logic_vector (31 downto 0) := (others => '0');
+      cc_R15            : OUT std_logic_vector (31 downto 0) := (others => '0');
+	  coin_win_p		: OUT std_logic_vector (15 downto 0) := (others => '0');
+	  coin_win_c		: OUT std_logic_vector (15 downto 0) := (others => '0');
+      ftu_active_cr0    : OUT std_logic_vector (15 downto 0) := (others => '0');
+      ftu_active_cr1    : OUT std_logic_vector (15 downto 0) := (others => '0');
+      ftu_active_cr2    : OUT std_logic_vector (15 downto 0) := (others => '0');
+      ftu_active_cr3    : OUT std_logic_vector (15 downto 0) := (others => '0')
+   );
+
+-- Declarations
+
+END cram_control ;
+
+--
+ARCHITECTURE beha OF cram_control IS
+
+  type state_cram_proc_type is (CR_INIT, CR_INIT_01, CR_INIT_02, CR_INIT_03,
+                                CR_CONFIG, CR_CONFIG_START, CR_CONFIG_01,
+                                CR_IDLE, CR_WRITE_START, CR_WRITE_END, CR_READ_START, CR_READ_WAIT, CR_READ_END,
+                                CR_DOUT_WIZ_START, CR_DOUT_WIZ_END, CR_DOUT_FTU_START, CR_DOUT_FTU_END);
+  signal state_cram_proc : state_cram_proc_type := CR_INIT;
+  signal next_state      : state_cram_proc_type := CR_IDLE;
+  
+  signal local_sd_addr  : std_logic_vector (11 downto 0) := X"000";
+  signal local_sd_data  : std_logic_vector (15 downto 0);
+--  signal addr_cnt       : integer range 0 to 4096 := 0;
+  signal addr_cnt       : std_logic_vector (11 downto 0) := X"000";
+  signal ftu_cnt        : integer range 0 to SD_FTU_NUM := 0;
+  signal ftu_active_cnt : integer range 0 to SD_FTU_ACTIVE_NUM := 0;
+
+BEGIN
+  
+  cram_proc : process (clk)
+  begin
+    if rising_edge (clk) then
+      case state_cram_proc is
+        
+        when CR_INIT =>
+          addr_cnt <= X"000";
+          state_cram_proc <= CR_INIT_01;
+          
+        -- general part of static data block
+        when CR_INIT_01 =>
+          if (addr_cnt < SD_BLOCK_SIZE_GENERAL) then
+            local_sd_addr <= addr_cnt;
+            local_sd_data <= sd_block_default_array (conv_integer (addr_cnt));
+            addr_cnt <= addr_cnt + 1;
+            next_state <= CR_INIT_01;
+            state_cram_proc <= CR_WRITE_START;
+          else
+            addr_cnt <= X"000";
+            ftu_cnt <= 0;
+            state_cram_proc <= CR_INIT_02;
+          end if;
+
+        -- defaults for FTUs
+        when CR_INIT_02 =>
+          if (ftu_cnt < SD_FTU_NUM) then
+            if (addr_cnt < SD_FTU_DATA_SIZE) then
+              local_sd_addr <= SD_FTU_BASE_ADDR + (ftu_cnt * SD_FTU_DATA_SIZE) + addr_cnt;
+              -- only for testing
+              -- local_sd_data <= sd_block_ftu_default_array (conv_integer (addr_cnt)) OR (conv_std_logic_vector (ftu_cnt, 8) & X"00");
+              -- for FTM-Board
+              local_sd_data <= sd_block_ftu_default_array (conv_integer (addr_cnt));
+              -- --
+              addr_cnt <= addr_cnt + 1;
+              next_state <= CR_INIT_02;
+              state_cram_proc <= CR_WRITE_START;
+            else
+              addr_cnt <= X"000";
+              ftu_cnt <= ftu_cnt + 1;
+            end if;
+          else
+            addr_cnt <= X"000";
+            state_cram_proc <= CR_INIT_03;
+          end if;
+          
+        -- defaults for active FTU lists
+        when CR_INIT_03 =>
+          if (ftu_active_cnt < SD_FTU_ACTIVE_NUM) then
+            local_sd_addr <= SD_FTU_ACTIVE_BASE_ADDR + conv_std_logic_vector (ftu_active_cnt, 12);
+            -- only for testing
+            -- local_sd_data <= conv_std_logic_vector (ftu_active_cnt, 16);
+            -- for FTM-Board
+            local_sd_data <= sd_block_activeFTUlist_default_array (ftu_active_cnt);
+            ftu_active_cnt <= ftu_active_cnt + 1;
+            next_state <= CR_INIT_03;
+            state_cram_proc <= CR_WRITE_START;
+          else
+            ftu_active_cnt <= 0;
+            state_cram_proc <= CR_CONFIG;
+          end if;
+
+
+        when CR_CONFIG =>
+          if (config_start_cc = '1') then
+            config_ready_cc <= '0';
+            config_started_cc <= '1';
+            state_cram_proc <= CR_CONFIG_START;
+          end if;
+          
+        when CR_CONFIG_START =>
+          if (addr_cnt < SD_BLOCK_SIZE) then
+            if ((addr_cnt < SD_FTU_BASE_ADDR) OR (addr_cnt >= SD_FTU_ACTIVE_BASE_ADDR)) then
+              local_sd_addr <= addr_cnt;
+              next_state <= CR_CONFIG_01;
+              state_cram_proc <= CR_READ_START;
+            elsif (addr_cnt = SD_FTU_BASE_ADDR) then
+              addr_cnt <= SD_FTU_ACTIVE_BASE_ADDR;
+            end if;
+          else
+            addr_cnt <= X"000";
+            config_started_cc <= '0';
+            config_ready_cc <= '1';
+            state_cram_proc <= CR_IDLE;
+          end if;
+          
+        when CR_CONFIG_01 =>
+            state_cram_proc <= CR_CONFIG_START;
+            addr_cnt <= addr_cnt + 1;
+            case addr_cnt is
+              when SD_ADDR_general_settings =>
+                general_settings <= local_sd_data;
+              when SD_ADDR_led =>
+                led <= local_sd_data (7 downto 0);
+              when SD_ADDR_lp_pt_freq =>
+                lp_pt_freq <= local_sd_data;
+              when SD_ADDR_lp_pt_ratio =>
+                lp_pt_ratio <= local_sd_data;
+              when SD_ADDR_lp1_amplitude =>
+                lp1_amplitude <= local_sd_data;
+              when SD_ADDR_lp2_amplitude =>
+                lp2_amplitude <= local_sd_data;
+              when SD_ADDR_lp1_delay =>
+                lp1_delay <= local_sd_data;
+              when SD_ADDR_lp2_delay =>
+                lp2_delay <= local_sd_data;
+              when SD_ADDR_coin_n_p =>
+                coin_n_p <= local_sd_data;
+              when SD_ADDR_coin_n_c =>
+                coin_n_c <= local_sd_data;
+              when SD_ADDR_trigger_delay =>
+                trigger_delay <= local_sd_data;
+              when SD_ADDR_timemarker_delay =>
+                timemarker_delay <= local_sd_data;
+              when SD_ADDR_dead_time =>
+                dead_time <= local_sd_data;
+              when SD_ADDR_cc_R0_HI =>
+                cc_R0 (31 downto 16) <= local_sd_data;
+              when SD_ADDR_cc_R0_LO =>
+                cc_R0 (15 downto 0) <= local_sd_data;  
+              when SD_ADDR_cc_R1_HI =>
+                cc_R1 (31 downto 16) <= local_sd_data;
+              when SD_ADDR_cc_R1_LO =>
+                cc_R1 (15 downto 0) <= local_sd_data;  
+              when SD_ADDR_cc_R8_HI =>
+                cc_R8 (31 downto 16) <= local_sd_data;
+              when SD_ADDR_cc_R8_LO =>
+                cc_R8 (15 downto 0) <= local_sd_data;  
+              when SD_ADDR_cc_R9_HI =>
+                cc_R9 (31 downto 16) <= local_sd_data;
+              when SD_ADDR_cc_R9_LO =>
+                cc_R9 (15 downto 0) <= local_sd_data;  
+              when SD_ADDR_cc_R11_HI =>
+                cc_R11 (31 downto 16) <= local_sd_data;
+              when SD_ADDR_cc_R11_LO =>
+                cc_R11 (15 downto 0) <= local_sd_data;  
+              when SD_ADDR_cc_R13_HI =>
+                cc_R13 (31 downto 16) <= local_sd_data;
+              when SD_ADDR_cc_R13_LO =>
+                cc_R13 (15 downto 0) <= local_sd_data;  
+              when SD_ADDR_cc_R14_HI =>
+                cc_R14 (31 downto 16) <= local_sd_data;
+              when SD_ADDR_cc_R14_LO =>
+                cc_R14 (15 downto 0) <= local_sd_data;  
+              when SD_ADDR_cc_R15_HI =>
+                cc_R15 (31 downto 16) <= local_sd_data;
+              when SD_ADDR_cc_R15_LO =>
+                cc_R15 (15 downto 0) <= local_sd_data;
+			  when SD_ADDR_coin_win_p =>
+				coin_win_p <= local_sd_data;
+			  when SD_ADDR_coin_win_c =>
+				coin_win_c <= local_sd_data;
+              when SD_ADDR_ftu_active_cr0 =>
+                ftu_active_cr0 <= local_sd_data;
+              when SD_ADDR_ftu_active_cr1 =>
+                ftu_active_cr1 <= local_sd_data;
+              when SD_ADDR_ftu_active_cr2 =>
+                ftu_active_cr2 <= local_sd_data;
+              when SD_ADDR_ftu_active_cr3 =>
+                ftu_active_cr3 <= local_sd_data;
+              when others =>
+                null;
+            end case;          
+
+        when CR_IDLE =>
+          sd_busy <= '0';
+          
+          if (config_start_cc = '1') then
+            sd_busy <= '1';
+            state_cram_proc <= CR_CONFIG;
+
+          elsif (sd_write = '1') then
+            sd_busy <= '1';
+            sd_started <= '1';
+            sd_ready <= '0';
+            local_sd_addr <= sd_addr;
+            local_sd_data <= sd_data_in;
+            next_state <= CR_IDLE;
+            state_cram_proc <= CR_WRITE_START;
+
+          elsif (sd_read = '1') then
+            sd_busy <= '1';
+            sd_started <= '1';
+            sd_ready <= '0';
+            local_sd_addr <= sd_addr;
+            next_state <= CR_DOUT_WIZ_START;
+            state_cram_proc <= CR_READ_START;
+          
+          elsif (sd_read_ftu = '1') then
+            sd_busy <= '1';
+            sd_started_ftu <= '1';
+            sd_ready <= '0';
+            local_sd_addr <= sd_addr_ftu;
+            next_state <= CR_DOUT_FTU_START;
+            state_cram_proc <= CR_READ_START;
+          end if;
+          
+  
+        when CR_DOUT_FTU_START =>
+          sd_data_out_ftu <= local_sd_data;
+          sd_ready <= '1';
+          state_cram_proc <= CR_DOUT_FTU_END;
+          
+        when CR_DOUT_FTU_END =>
+          if (sd_read_ftu <= '0') then
+            sd_started_ftu <= '0';
+            state_cram_proc <= CR_IDLE;
+          end if;
+        
+        when CR_DOUT_WIZ_START =>
+          sd_data_out <= local_sd_data;
+          sd_ready <= '1';
+          state_cram_proc <= CR_DOUT_WIZ_END;
+          
+        when CR_DOUT_WIZ_END =>
+          if (sd_read <= '0') then
+            sd_started <= '0';
+            state_cram_proc <= CR_IDLE;
+          end if;
+                   
+
+        -- --
+        -- write to config ram
+        -- --
+        when CR_WRITE_START =>
+          cram_addr_in <= local_sd_addr;
+          cram_data_in <= local_sd_data;
+          cram_we <= "1";
+          state_cram_proc <= CR_WRITE_END;
+          
+        when CR_WRITE_END =>
+          cram_we <= "0";
+          sd_started <= '0';
+          sd_ready <= '1';
+          state_cram_proc <= next_state;
+
+
+        -- --
+        -- read from config ram
+        -- --
+        when CR_READ_START =>
+          cram_addr_out <= local_sd_addr;
+          state_cram_proc <= CR_READ_WAIT;
+          
+        when CR_READ_WAIT =>
+          state_cram_proc <= CR_READ_END;
+          
+        when CR_READ_END =>
+          local_sd_data <= cram_data_out;
+          state_cram_proc <= next_state;
+          
+          
+      end case;
+    end if; -- rising edge
+  end process cram_proc;
+  
+END ARCHITECTURE beha;
+
Index: firmware/FTM/ethernet/dram_control_beha.vhd
===================================================================
--- firmware/FTM/ethernet/dram_control_beha.vhd	(revision 10227)
+++ firmware/FTM/ethernet/dram_control_beha.vhd	(revision 10227)
@@ -0,0 +1,179 @@
+--
+-- VHDL Architecture FACT_FTM_lib.dram_control.beha
+--
+-- Created:
+--          by - kai.UNKNOWN (E5PCXX)
+--          at - 11:39:22 23.02.2011
+--
+-- using Mentor Graphics HDL Designer(TM) 2009.1 (Build 12)
+--
+
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE ieee.std_logic_arith.all;
+USE IEEE.STD_LOGIC_UNSIGNED.all;
+-- LIBRARY FACT_FTM_lib;
+-- USE FACT_FTM_lib.ftm_array_types.all;
+-- USE FACT_FTM_lib.ftm_constants.all;
+library ftm_definitions;
+USE ftm_definitions.ftm_array_types.all;
+USE ftm_definitions.ftm_constants.all;
+
+ENTITY dram_control IS
+   PORT( 
+	clk            			: IN	std_logic;
+	dram_data_in   			: OUT	std_logic_vector (15 DOWNTO 0);
+	dram_data_out  			: IN	std_logic_vector (15 DOWNTO 0);
+	dram_addr_in   			: OUT	std_logic_vector (11 DOWNTO 0);
+	dram_addr_out  			: OUT	std_logic_vector (11 DOWNTO 0);
+	dram_we        			: OUT	std_logic_vector (0 DOWNTO 0) := "0";
+	dd_block_start 			: IN	std_logic;
+	dd_block_start_ftu 		: IN	std_logic;
+	dd_block_start_ack 		: OUT	std_logic := '0';
+	dd_block_start_ack_ftu 	: OUT	std_logic := '0';
+	dd_block_ready 			: IN	std_logic;
+	dd_block_ready_ftu 		: IN	std_logic;
+	dd_read        			: IN	std_logic;
+	dd_write_ftu   			: IN	std_logic;
+	dd_busy        			: OUT	std_logic := '1';
+	dd_started     			: OUT	std_logic := '0';
+	dd_started_ftu 			: OUT	std_logic := '0';
+	dd_ready       			: OUT	std_logic := '0';
+	dd_data_out    			: OUT	std_logic_vector (15 DOWNTO 0) := (others => '0');
+	dd_data_in_ftu 			: IN	std_logic_vector (15 DOWNTO 0);
+	dd_addr        			: IN	std_logic_vector (11 DOWNTO 0);
+	dd_addr_ftu    			: IN	std_logic_vector (11 DOWNTO 0)
+   );
+
+-- Declarations
+
+END dram_control ;
+
+--
+ARCHITECTURE beha OF dram_control IS
+  
+  type state_dram_proc_type is (DR_INIT, DR_CONFIG, DR_IDLE, DR_DOUT_WIZ_START, DR_DOUT_WIZ_END, DR_WRITE_START, DR_WRITE_END,
+                                DR_READ_START, DR_READ_WAIT, DR_READ_END);
+  type state_dd_block_proc_type is (DD_BLOCK_IDLE, DD_BLOCK_WAIT_WIZ, DD_BLOCK_WAIT_FTU);
+
+                                
+  signal state_dram_proc  : state_dram_proc_type := DR_INIT;
+  signal next_state       : state_dram_proc_type := DR_IDLE;
+  
+  signal state_dd_block_proc : state_dd_block_proc_type := DD_BLOCK_IDLE;
+
+  signal local_addr  : std_logic_vector (11 downto 0) := X"000";
+  signal local_data  : std_logic_vector (15 downto 0);
+ 
+BEGIN
+
+  dd_block_proc : process (clk)
+  begin
+	if rising_edge (clk) then
+	  case state_dd_block_proc is
+
+		when DD_BLOCK_IDLE =>
+		  if (dd_block_start = '1') then
+			dd_block_start_ack <= '1';
+			state_dd_block_proc <= DD_BLOCK_WAIT_WIZ;
+		  elsif (dd_block_start_ftu = '1') then
+			dd_block_start_ack_ftu <= '1';
+			state_dd_block_proc <= DD_BLOCK_WAIT_FTU;
+		  end if;
+
+		when DD_BLOCK_WAIT_WIZ =>
+		  if (dd_block_ready = '1') then
+			dd_block_start_ack <= '0';
+			state_dd_block_proc <= DD_BLOCK_IDLE;
+		  end if;
+
+		when DD_BLOCK_WAIT_FTU =>
+		  if (dd_block_ready_ftu = '1') then
+			dd_block_start_ack_ftu <= '0';
+			state_dd_block_proc <= DD_BLOCK_IDLE;
+		  end if;
+
+	  end case;
+	end if;
+  end process dd_block_proc;
+
+  dram_proc : process (clk)
+  begin
+    if rising_edge (clk) then
+      case state_dram_proc is
+
+        when DR_INIT =>
+          state_dram_proc <= DR_CONFIG;
+
+        when DR_CONFIG =>
+          state_dram_proc <= DR_IDLE;
+          
+        when DR_IDLE =>
+          dd_busy <= '0';
+          
+          if (dd_read = '1') then
+            dd_busy <= '1';
+            dd_started <= '1';
+            dd_ready <= '0';
+            local_addr <= dd_addr;
+            next_state <= DR_DOUT_WIZ_START;
+            state_dram_proc <= DR_READ_START;
+            
+          elsif (dd_write_ftu = '1') then
+            dd_busy <= '1';
+            dd_started_ftu <= '1';
+            dd_ready <= '0';
+            local_addr <= dd_addr_ftu;
+            local_data <= dd_data_in_ftu;
+            next_state <= DR_IDLE;
+            state_dram_proc <= DR_WRITE_START;
+          end if;
+
+
+
+        when DR_DOUT_WIZ_START =>
+          dd_data_out <= local_data;
+          dd_ready <= '1';
+          state_dram_proc <= DR_DOUT_WIZ_END;
+          
+        when DR_DOUT_WIZ_END =>
+          if (dd_read <= '0') then
+            dd_started <= '0';
+            state_dram_proc <= DR_IDLE;
+          end if;
+
+        -- --
+        -- write to dynamic data ram
+        -- --
+        when DR_WRITE_START =>
+          dram_addr_in <= local_addr;
+          dram_data_in <= local_data;
+          dram_we <= "1";
+          state_dram_proc <= DR_WRITE_END;
+          
+        when DR_WRITE_END =>
+          dram_we <= "0";
+          dd_started_ftu <= '0';
+          dd_ready <= '1';
+          state_dram_proc <= next_state;
+
+        -- --
+        -- read from dynamic data ram
+        -- --
+        when DR_READ_START =>
+          dram_addr_out <= local_addr;
+          state_dram_proc <= DR_READ_WAIT;
+          
+        when DR_READ_WAIT =>
+          state_dram_proc <= DR_READ_END;
+          
+        when DR_READ_END =>
+          local_data <= dram_data_out;
+          state_dram_proc <= next_state;
+
+
+      end case;
+    end if; -- rising edge
+  end process dram_proc;
+
+END ARCHITECTURE beha;
Index: firmware/FTM/ethernet/eth_config_modul_beha.vhd
===================================================================
--- firmware/FTM/ethernet/eth_config_modul_beha.vhd	(revision 10227)
+++ firmware/FTM/ethernet/eth_config_modul_beha.vhd	(revision 10227)
@@ -0,0 +1,77 @@
+--
+-- VHDL Architecture FACT_FTM_lib.eth_config_modul.beha
+--
+-- Created:
+--          by - kai.UNKNOWN (E5PCXX)
+--          at - 14:52:32 15.02.2011
+--
+-- using Mentor Graphics HDL Designer(TM) 2009.1 (Build 12)
+--
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE ieee.std_logic_arith.all;
+USE IEEE.STD_LOGIC_UNSIGNED.all;
+-- LIBRARY FACT_FTM_lib;
+-- USE FACT_FTM_lib.ftm_array_types.all;
+-- USE FACT_FTM_lib.ftm_constants.all;
+library ftm_definitions;
+USE ftm_definitions.ftm_array_types.all;
+USE ftm_definitions.ftm_constants.all;
+
+ENTITY eth_config_modul IS
+  PORT(
+    clk                 : IN std_logic;
+    config_start_eth    : IN std_logic;
+    config_started_eth  : OUT std_logic := '0';
+    config_ready_eth    : OUT std_logic := '0';
+    
+    config_start_cc     : OUT std_logic := '0';
+    config_started_cc   : IN std_logic;
+    config_ready_cc     : IN std_logic
+  );
+END ENTITY eth_config_modul;
+
+--
+ARCHITECTURE beha OF eth_config_modul IS
+  
+  type state_config_proc_type is (CP_IDLE, CP_CONFIG_START, CP_CONFIG_01, CP_CONFIG_END);
+  signal state_config_proc : state_config_proc_type := CP_IDLE; 
+  
+BEGIN
+  
+  config_proc : process (clk)
+  begin
+    if rising_edge (clk) then
+      case state_config_proc is
+        
+        when CP_IDLE =>
+          if (config_start_eth = '1') then
+            config_ready_eth <= '0';
+            config_started_eth <= '1';
+            state_config_proc <= CP_CONFIG_START;
+          end if;
+          
+        when CP_CONFIG_START =>
+          config_start_cc <= '1';
+          if (config_started_cc = '1') then
+            config_start_cc <= '0';
+            state_config_proc <= CP_CONFIG_01;
+          end if;
+          
+        when CP_CONFIG_01 =>
+          if (config_ready_cc = '1') then
+            state_config_proc <= CP_CONFIG_END;
+          end if;
+          
+        when CP_CONFIG_END =>
+          config_started_eth <= '0';
+          config_ready_eth <= '1';
+          state_config_proc <= CP_IDLE;
+          
+        
+      end case;
+    end if;
+  end process config_proc;
+
+END ARCHITECTURE beha;
+
Index: firmware/FTM/ethernet/ethernet_modul_beha.vhd
===================================================================
--- firmware/FTM/ethernet/ethernet_modul_beha.vhd	(revision 10227)
+++ firmware/FTM/ethernet/ethernet_modul_beha.vhd	(revision 10227)
@@ -0,0 +1,565 @@
+-- VHDL Entity FACT_FTM_lib.ethernet_modul.symbol
+--
+-- Created:
+--          by - kai.UNKNOWN (E5PCXX)
+--          at - 11:17:45 25.02.2011
+--
+-- Generated by Mentor Graphics' HDL Designer(TM) 2009.1 (Build 12)
+--
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE ieee.std_logic_arith.all;
+--LIBRARY FACT_FTM_lib;
+library ftm_definitions;
+USE ftm_definitions.ftm_array_types.all;
+USE ftm_definitions.ftm_constants.all;
+
+ENTITY ethernet_modul IS
+   PORT( 
+      wiz_reset          : OUT    std_logic                      := '1';
+      wiz_addr           : OUT    std_logic_vector (9 DOWNTO 0);
+      wiz_data           : INOUT  std_logic_vector (15 DOWNTO 0);
+      wiz_cs             : OUT    std_logic                      := '1';
+      wiz_wr             : OUT    std_logic                      := '1';
+      wiz_rd             : OUT    std_logic                      := '1';
+      wiz_int            : IN     std_logic;
+      clk                : IN     std_logic;
+      sd_ready           : OUT    std_logic;
+      sd_busy            : OUT    std_logic;
+      led                : OUT    std_logic_vector (7 DOWNTO 0);
+      sd_read_ftu        : IN     std_logic;
+      sd_started_ftu     : OUT    std_logic                      := '0';
+      cc_R0              : OUT    std_logic_vector (31 DOWNTO 0);
+      cc_R1              : OUT    std_logic_vector (31 DOWNTO 0);
+      cc_R11             : OUT    std_logic_vector (31 DOWNTO 0);
+      cc_R13             : OUT    std_logic_vector (31 DOWNTO 0);
+      cc_R14             : OUT    std_logic_vector (31 DOWNTO 0);
+      cc_R15             : OUT    std_logic_vector (31 DOWNTO 0);
+      cc_R8              : OUT    std_logic_vector (31 DOWNTO 0);
+      cc_R9              : OUT    std_logic_vector (31 DOWNTO 0);
+      coin_n_c           : OUT    std_logic_vector (15 DOWNTO 0);
+      coin_n_p           : OUT    std_logic_vector (15 DOWNTO 0);
+      dead_time          : OUT    std_logic_vector (15 DOWNTO 0);
+      -- data from config ram
+      general_settings   : OUT    std_logic_vector (15 DOWNTO 0);
+      lp1_amplitude      : OUT    std_logic_vector (15 DOWNTO 0);
+      lp1_delay          : OUT    std_logic_vector (15 DOWNTO 0);
+      lp2_amplitude      : OUT    std_logic_vector (15 DOWNTO 0);
+      lp2_delay          : OUT    std_logic_vector (15 DOWNTO 0);
+      lp_pt_freq         : OUT    std_logic_vector (15 DOWNTO 0);
+      lp_pt_ratio        : OUT    std_logic_vector (15 DOWNTO 0);
+      timemarker_delay   : OUT    std_logic_vector (15 DOWNTO 0);
+      trigger_delay      : OUT    std_logic_vector (15 DOWNTO 0);
+      sd_addr_ftu        : IN     std_logic_vector (11 DOWNTO 0);
+      sd_data_out_ftu    : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      ftu_active_cr0     : OUT    std_logic_vector (15 DOWNTO 0);
+      ftu_active_cr1     : OUT    std_logic_vector (15 DOWNTO 0);
+      ftu_active_cr2     : OUT    std_logic_vector (15 DOWNTO 0);
+      ftu_active_cr3     : OUT    std_logic_vector (15 DOWNTO 0);
+      new_config         : OUT    std_logic                      := '0';
+      config_started     : IN     std_logic;
+      config_start_eth   : IN     std_logic;
+      config_started_eth : OUT    std_logic                      := '0';
+      config_ready_eth   : OUT    std_logic                      := '0';
+      config_started_ack : OUT    std_logic                      := '0';
+      fl_busy            : OUT    std_logic;
+      fl_ready           : OUT    std_logic;
+      fl_write_ftu       : IN     std_logic;
+      fl_started_ftu     : OUT    std_logic                      := '0';
+      fl_addr_ftu        : IN     std_logic_vector (11 DOWNTO 0);
+      fl_data_in_ftu     : IN     std_logic_vector (15 DOWNTO 0) := (others => '0');
+      --
+      ping_ftu_start     : OUT    std_logic                      := '0';
+      ping_ftu_started   : IN     std_logic;
+      ping_ftu_ready     : IN     std_logic;
+      dd_write_ftu       : IN     std_logic;
+      dd_started_ftu     : OUT    std_logic                      := '0';
+      dd_data_in_ftu     : IN     std_logic_vector (15 DOWNTO 0);
+      dd_addr_ftu        : IN     std_logic_vector (11 DOWNTO 0);
+      dd_busy            : OUT    std_logic;
+      dd_ready           : OUT    std_logic;
+      coin_win_c         : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      coin_win_p         : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0')
+   );
+
+-- Declarations
+
+END ethernet_modul ;
+
+--
+-- VHDL Architecture FACT_FTM_lib.ethernet_modul.beha
+--
+-- Created:
+--          by - kai.UNKNOWN (E5PCXX)
+--          at - 11:17:46 25.02.2011
+--
+-- Generated by Mentor Graphics' HDL Designer(TM) 2009.1 (Build 12)
+--
+-- 
+-- 
+--LIBRARY IEEE;
+--USE IEEE.STD_LOGIC_1164.all;
+--USE IEEE.STD_LOGIC_ARITH.all;
+--USE IEEE.STD_LOGIC_UNSIGNED.all;
+--LIBRARY FACT_FTM_lib;
+--USE FACT_FTM_lib.ftm_array_types.all;
+--USE FACT_FTM_lib.ftm_constants.all;
+
+--LIBRARY FACT_FTM_lib;
+
+ARCHITECTURE beha OF ethernet_modul IS
+
+   -- Architecture declarations
+
+   -- Internal signal declarations
+   SIGNAL busy                   : std_logic                     := '1';
+   SIGNAL cram_data_out          : std_logic_vector(15 DOWNTO 0);
+   SIGNAL cram_data_in           : std_logic_vector(15 DOWNTO 0);
+   SIGNAL cram_we                : std_logic_vector(0 DOWNTO 0)  := "0";
+   SIGNAL sd_write               : std_logic                     := '0';
+   SIGNAL sd_read                : std_logic;
+   SIGNAL led1                   : std_logic_vector(7 DOWNTO 0)  := (others => '0');
+   SIGNAL sd_started             : std_logic;
+   SIGNAL sd_addr                : std_logic_vector(11 DOWNTO 0);
+   SIGNAL cram_addr_out          : std_logic_vector(11 DOWNTO 0);
+   SIGNAL cram_addr_in           : std_logic_vector(11 DOWNTO 0);
+   SIGNAL sd_data_in             : std_logic_vector(15 DOWNTO 0) := (others => '0');
+   SIGNAL sd_data_out            : std_logic_vector(15 DOWNTO 0);
+   SIGNAL config_ready_cc        : std_logic                     := '0';
+   SIGNAL config_started_cc      : std_logic                     := '0';
+   SIGNAL config_start_cc        : std_logic;
+   SIGNAL fl_started             : std_logic;
+   SIGNAL fl_read                : std_logic                     := '0';
+   --
+   SIGNAL fl_addr                : std_logic_vector(11 DOWNTO 0);
+   SIGNAL fl_data_out            : std_logic_vector(15 DOWNTO 0);
+   SIGNAL fram_addr_out          : std_logic_vector(11 DOWNTO 0);
+   SIGNAL doutb                  : std_logic_VECTOR(15 DOWNTO 0);
+   SIGNAL fram_we                : std_logic_vector(0 DOWNTO 0)  := "0";
+   SIGNAL fram_addr_in           : std_logic_vector(11 DOWNTO 0);
+   SIGNAL fram_data_in           : std_logic_vector(15 DOWNTO 0);
+   SIGNAL led2                   : std_logic_vector(7 DOWNTO 0)  := X"00";
+   SIGNAL dram_addr_out          : std_logic_vector(11 DOWNTO 0);
+   SIGNAL doutb1                 : std_logic_VECTOR(15 DOWNTO 0);
+   SIGNAL dram_we                : std_logic_vector(0 DOWNTO 0)  := "0";
+   SIGNAL dram_addr_in           : std_logic_vector(11 DOWNTO 0);
+   SIGNAL dram_data_in           : std_logic_vector(15 DOWNTO 0);
+   SIGNAL dd_read                : std_logic;
+   SIGNAL dd_started             : std_logic                     := '0';
+   SIGNAL dd_data_out            : std_logic_vector(15 DOWNTO 0) := (others => '0');
+   SIGNAL dd_addr                : std_logic_vector(11 DOWNTO 0);
+   SIGNAL dd_block_ready         : std_logic                     := '0';
+   --
+   SIGNAL dd_block_start         : std_logic                     := '0';
+   SIGNAL dd_block_start_ack     : std_logic;
+   SIGNAL dd_block_ready_ftu     : std_logic;
+   SIGNAL dd_block_start_ack_ftu : std_logic                     := '0';
+   SIGNAL dd_block_start_ftu     : std_logic;
+
+   -- Implicit buffer signal declarations
+   SIGNAL dd_busy_internal  : std_logic;
+   SIGNAL dd_ready_internal : std_logic;
+   SIGNAL fl_busy_internal  : std_logic;
+   SIGNAL fl_ready_internal : std_logic;
+   SIGNAL sd_busy_internal  : std_logic;
+   SIGNAL sd_ready_internal : std_logic;
+
+
+   -- Component Declarations
+   COMPONENT CRAM_4096_16b
+   PORT (
+      clka  : IN     std_logic ;
+      dina  : IN     std_logic_VECTOR (15 DOWNTO 0);
+      addra : IN     std_logic_VECTOR (11 DOWNTO 0);
+      wea   : IN     std_logic_VECTOR (0 DOWNTO 0);
+      clkb  : IN     std_logic ;
+      addrb : IN     std_logic_VECTOR (11 DOWNTO 0);
+      doutb : OUT    std_logic_VECTOR (15 DOWNTO 0)
+   );
+   END COMPONENT;
+   COMPONENT DRAM_4096_16b
+   PORT (
+      clka  : IN     std_logic ;
+      dina  : IN     std_logic_VECTOR (15 DOWNTO 0);
+      addra : IN     std_logic_VECTOR (11 DOWNTO 0);
+      wea   : IN     std_logic_VECTOR (0 DOWNTO 0);
+      clkb  : IN     std_logic ;
+      addrb : IN     std_logic_VECTOR (11 DOWNTO 0);
+      doutb : OUT    std_logic_VECTOR (15 DOWNTO 0)
+   );
+   END COMPONENT;
+   COMPONENT FRAM_4096_16b
+   PORT (
+      clka  : IN     std_logic ;
+      dina  : IN     std_logic_VECTOR (15 DOWNTO 0);
+      addra : IN     std_logic_VECTOR (11 DOWNTO 0);
+      wea   : IN     std_logic_VECTOR (0 DOWNTO 0);
+      clkb  : IN     std_logic ;
+      addrb : IN     std_logic_VECTOR (11 DOWNTO 0);
+      doutb : OUT    std_logic_VECTOR (15 DOWNTO 0)
+   );
+   END COMPONENT;
+   COMPONENT cram_control
+   PORT (
+      clk               : IN     std_logic ;
+      led               : OUT    std_logic_vector (7 DOWNTO 0)  := X"00";
+      cram_data_in      : OUT    std_logic_vector (15 DOWNTO 0);
+      cram_data_out     : IN     std_logic_vector (15 DOWNTO 0);
+      cram_addr_in      : OUT    std_logic_vector (11 DOWNTO 0);
+      cram_addr_out     : OUT    std_logic_vector (11 DOWNTO 0);
+      cram_we           : OUT    std_logic_vector (0 DOWNTO 0)  := "0";
+      sd_write          : IN     std_logic ;
+      sd_read           : IN     std_logic ;
+      sd_read_ftu       : IN     std_logic ;
+      sd_busy           : OUT    std_logic                      := '1';
+      sd_started        : OUT    std_logic                      := '0';
+      sd_started_ftu    : OUT    std_logic                      := '0';
+      sd_ready          : OUT    std_logic                      := '0';
+      sd_data_in        : IN     std_logic_vector (15 DOWNTO 0);
+      sd_data_out       : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      sd_data_out_ftu   : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      sd_addr           : IN     std_logic_vector (11 DOWNTO 0);
+      sd_addr_ftu       : IN     std_logic_vector (11 DOWNTO 0);
+      config_start_cc   : IN     std_logic ;
+      config_started_cc : OUT    std_logic                      := '0';
+      config_ready_cc   : OUT    std_logic                      := '0';
+      -- data from config ram
+      general_settings  : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      lp_pt_freq        : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      lp_pt_ratio       : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      lp1_amplitude     : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      lp2_amplitude     : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      lp1_delay         : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      lp2_delay         : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      coin_n_p          : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      coin_n_c          : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      trigger_delay     : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      timemarker_delay  : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      dead_time         : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      cc_R0             : OUT    std_logic_vector (31 DOWNTO 0) := (others => '0');
+      cc_R1             : OUT    std_logic_vector (31 DOWNTO 0) := (others => '0');
+      cc_R8             : OUT    std_logic_vector (31 DOWNTO 0) := (others => '0');
+      cc_R9             : OUT    std_logic_vector (31 DOWNTO 0) := (others => '0');
+      cc_R11            : OUT    std_logic_vector (31 DOWNTO 0) := (others => '0');
+      cc_R13            : OUT    std_logic_vector (31 DOWNTO 0) := (others => '0');
+      cc_R14            : OUT    std_logic_vector (31 DOWNTO 0) := (others => '0');
+      cc_R15            : OUT    std_logic_vector (31 DOWNTO 0) := (others => '0');
+      coin_win_p        : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      coin_win_c        : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      ftu_active_cr0    : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      ftu_active_cr1    : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      ftu_active_cr2    : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      ftu_active_cr3    : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0')
+   );
+   END COMPONENT;
+   COMPONENT dram_control
+   PORT (
+      clk                    : IN     std_logic ;
+      dram_data_in           : OUT    std_logic_vector (15 DOWNTO 0);
+      dram_data_out          : IN     std_logic_vector (15 DOWNTO 0);
+      dram_addr_in           : OUT    std_logic_vector (11 DOWNTO 0);
+      dram_addr_out          : OUT    std_logic_vector (11 DOWNTO 0);
+      dram_we                : OUT    std_logic_vector (0 DOWNTO 0)  := "0";
+      dd_block_start         : IN     std_logic ;
+      dd_block_start_ftu     : IN     std_logic ;
+      dd_block_start_ack     : OUT    std_logic                      := '0';
+      dd_block_start_ack_ftu : OUT    std_logic                      := '0';
+      dd_block_ready         : IN     std_logic ;
+      dd_block_ready_ftu     : IN     std_logic ;
+      dd_read                : IN     std_logic ;
+      dd_write_ftu           : IN     std_logic ;
+      dd_busy                : OUT    std_logic                      := '1';
+      dd_started             : OUT    std_logic                      := '0';
+      dd_started_ftu         : OUT    std_logic                      := '0';
+      dd_ready               : OUT    std_logic                      := '0';
+      dd_data_out            : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      dd_data_in_ftu         : IN     std_logic_vector (15 DOWNTO 0);
+      dd_addr                : IN     std_logic_vector (11 DOWNTO 0);
+      dd_addr_ftu            : IN     std_logic_vector (11 DOWNTO 0)
+   );
+   END COMPONENT;
+   COMPONENT eth_config_modul
+   PORT (
+      clk                : IN     std_logic ;
+      config_start_eth   : IN     std_logic ;
+      config_started_eth : OUT    std_logic  := '0';
+      config_ready_eth   : OUT    std_logic  := '0';
+      config_start_cc    : OUT    std_logic  := '0';
+      config_started_cc  : IN     std_logic ;
+      config_ready_cc    : IN     std_logic 
+   );
+   END COMPONENT;
+   COMPONENT fram_control
+   PORT (
+      clk            : IN     std_logic ;
+      fram_data_in   : OUT    std_logic_vector (15 DOWNTO 0);
+      fram_data_out  : IN     std_logic_vector (15 DOWNTO 0);
+      fram_addr_in   : OUT    std_logic_vector (11 DOWNTO 0);
+      fram_addr_out  : OUT    std_logic_vector (11 DOWNTO 0);
+      fram_we        : OUT    std_logic_vector (0 DOWNTO 0)  := "0";
+      fl_read        : IN     std_logic ;
+      fl_write_ftu   : IN     std_logic ;
+      fl_busy        : OUT    std_logic                      := '1';
+      fl_started     : OUT    std_logic                      := '0';
+      fl_started_ftu : OUT    std_logic                      := '0';
+      fl_ready       : OUT    std_logic                      := '0';
+      fl_data_out    : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      fl_data_in_ftu : IN     std_logic_vector (15 DOWNTO 0);
+      fl_addr        : IN     std_logic_vector (11 DOWNTO 0);
+      fl_addr_ftu    : IN     std_logic_vector (11 DOWNTO 0)
+   );
+   END COMPONENT;
+   COMPONENT w5300_modul
+   PORT (
+      clk                : IN     std_logic ;
+      wiz_reset          : OUT    std_logic                      := '1';
+      addr               : OUT    std_logic_vector (9 DOWNTO 0);
+      data               : INOUT  std_logic_vector (15 DOWNTO 0);
+      cs                 : OUT    std_logic                      := '1';
+      wr                 : OUT    std_logic                      := '1';
+      led                : OUT    std_logic_vector (7 DOWNTO 0)  := (others => '0');
+      rd                 : OUT    std_logic                      := '1';
+      int                : IN     std_logic ;
+      busy               : OUT    std_logic                      := '1';
+      new_config         : OUT    std_logic                      := '0';
+      config_started     : IN     std_logic ;
+      config_started_ack : OUT    std_logic                      := '0';
+      --
+      ping_ftu_start     : OUT    std_logic                      := '0';
+      ping_ftu_started   : IN     std_logic ;
+      ping_ftu_ready     : IN     std_logic ;
+      --
+      sd_addr            : OUT    std_logic_vector (11 DOWNTO 0);
+      sd_data_out        : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      sd_data_in         : IN     std_logic_vector (15 DOWNTO 0);
+      sd_write           : OUT    std_logic                      := '0';
+      sd_read            : OUT    std_logic                      := '0';
+      sd_started         : IN     std_logic ;
+      sd_ready           : IN     std_logic ;
+      sd_busy            : IN     std_logic ;
+      --
+      dd_block_start     : OUT    std_logic                      := '0';
+      dd_block_start_ack : IN     std_logic ;
+      dd_block_ready     : OUT    std_logic                      := '0';
+      dd_addr            : OUT    std_logic_vector (11 DOWNTO 0);
+      dd_data_in         : IN     std_logic_vector (15 DOWNTO 0);
+      dd_read            : OUT    std_logic                      := '0';
+      dd_started         : IN     std_logic ;
+      dd_ready           : IN     std_logic ;
+      dd_busy            : IN     std_logic ;
+      --
+      fl_addr            : OUT    std_logic_vector (11 DOWNTO 0);
+      fl_data_in         : IN     std_logic_vector (15 DOWNTO 0);
+      fl_read            : OUT    std_logic                      := '0';
+      fl_started         : IN     std_logic ;
+      fl_ready           : IN     std_logic ;
+      fl_busy            : IN     std_logic 
+   );
+   END COMPONENT;
+
+   -- Optional embedded configurations
+   -- pragma synthesis_off
+   -- FOR ALL : CRAM_4096_16b USE ENTITY FACT_FTM_lib.CRAM_4096_16b;
+   -- FOR ALL : DRAM_4096_16b USE ENTITY FACT_FTM_lib.DRAM_4096_16b;
+   -- FOR ALL : FRAM_4096_16b USE ENTITY FACT_FTM_lib.FRAM_4096_16b;
+   -- FOR ALL : cram_control USE ENTITY FACT_FTM_lib.cram_control;
+   -- FOR ALL : dram_control USE ENTITY FACT_FTM_lib.dram_control;
+   -- FOR ALL : eth_config_modul USE ENTITY FACT_FTM_lib.eth_config_modul;
+   -- FOR ALL : fram_control USE ENTITY FACT_FTM_lib.fram_control;
+   -- FOR ALL : w5300_modul USE ENTITY FACT_FTM_lib.w5300_modul;
+   -- pragma synthesis_on
+
+
+BEGIN
+
+   -- ModuleWare code(v1.9) for instance 'U_3' of 'or'
+   led <= led1 OR led2;
+
+   -- Instance port mappings.
+   U_1 : CRAM_4096_16b
+      PORT MAP (
+         clka  => clk,
+         dina  => cram_data_in,
+         addra => cram_addr_in,
+         wea   => cram_we,
+         clkb  => clk,
+         addrb => cram_addr_out,
+         doutb => cram_data_out
+      );
+   U_7 : DRAM_4096_16b
+      PORT MAP (
+         clka  => clk,
+         dina  => dram_data_in,
+         addra => dram_addr_in,
+         wea   => dram_we,
+         clkb  => clk,
+         addrb => dram_addr_out,
+         doutb => doutb1
+      );
+   U_5 : FRAM_4096_16b
+      PORT MAP (
+         clka  => clk,
+         dina  => fram_data_in,
+         addra => fram_addr_in,
+         wea   => fram_we,
+         clkb  => clk,
+         addrb => fram_addr_out,
+         doutb => doutb
+      );
+   U_2 : cram_control
+      PORT MAP (
+         clk               => clk,
+         led               => led2,
+         cram_data_in      => cram_data_in,
+         cram_data_out     => cram_data_out,
+         cram_addr_in      => cram_addr_in,
+         cram_addr_out     => cram_addr_out,
+         cram_we           => cram_we,
+         sd_write          => sd_write,
+         sd_read           => sd_read,
+         sd_read_ftu       => sd_read_ftu,
+         sd_busy           => sd_busy_internal,
+         sd_started        => sd_started,
+         sd_started_ftu    => sd_started_ftu,
+         sd_ready          => sd_ready_internal,
+         sd_data_in        => sd_data_in,
+         sd_data_out       => sd_data_out,
+         sd_data_out_ftu   => sd_data_out_ftu,
+         sd_addr           => sd_addr,
+         sd_addr_ftu       => sd_addr_ftu,
+         config_start_cc   => config_start_cc,
+         config_started_cc => config_started_cc,
+         config_ready_cc   => config_ready_cc,
+         general_settings  => general_settings,
+         lp_pt_freq        => lp_pt_freq,
+         lp_pt_ratio       => lp_pt_ratio,
+         lp1_amplitude     => lp1_amplitude,
+         lp2_amplitude     => lp2_amplitude,
+         lp1_delay         => lp1_delay,
+         lp2_delay         => lp2_delay,
+         coin_n_p          => coin_n_p,
+         coin_n_c          => coin_n_c,
+         trigger_delay     => trigger_delay,
+         timemarker_delay  => timemarker_delay,
+         dead_time         => dead_time,
+         cc_R0             => cc_R0,
+         cc_R1             => cc_R1,
+         cc_R8             => cc_R8,
+         cc_R9             => cc_R9,
+         cc_R11            => cc_R11,
+         cc_R13            => cc_R13,
+         cc_R14            => cc_R14,
+         cc_R15            => cc_R15,
+         coin_win_p        => coin_win_p,
+         coin_win_c        => coin_win_c,
+         ftu_active_cr0    => ftu_active_cr0,
+         ftu_active_cr1    => ftu_active_cr1,
+         ftu_active_cr2    => ftu_active_cr2,
+         ftu_active_cr3    => ftu_active_cr3
+      );
+   U_8 : dram_control
+      PORT MAP (
+         clk                    => clk,
+         dram_data_in           => dram_data_in,
+         dram_data_out          => doutb1,
+         dram_addr_in           => dram_addr_in,
+         dram_addr_out          => dram_addr_out,
+         dram_we                => dram_we,
+         dd_block_start         => dd_block_start,
+         dd_block_start_ftu     => dd_block_start_ftu,
+         dd_block_start_ack     => dd_block_start_ack,
+         dd_block_start_ack_ftu => dd_block_start_ack_ftu,
+         dd_block_ready         => dd_block_ready,
+         dd_block_ready_ftu     => dd_block_ready_ftu,
+         dd_read                => dd_read,
+         dd_write_ftu           => dd_write_ftu,
+         dd_busy                => dd_busy_internal,
+         dd_started             => dd_started,
+         dd_started_ftu         => dd_started_ftu,
+         dd_ready               => dd_ready_internal,
+         dd_data_out            => dd_data_out,
+         dd_data_in_ftu         => dd_data_in_ftu,
+         dd_addr                => dd_addr,
+         dd_addr_ftu            => dd_addr_ftu
+      );
+   U_4 : eth_config_modul
+      PORT MAP (
+         clk                => clk,
+         config_start_eth   => config_start_eth,
+         config_started_eth => config_started_eth,
+         config_ready_eth   => config_ready_eth,
+         config_start_cc    => config_start_cc,
+         config_started_cc  => config_started_cc,
+         config_ready_cc    => config_ready_cc
+      );
+   U_6 : fram_control
+      PORT MAP (
+         clk            => clk,
+         fram_data_in   => fram_data_in,
+         fram_data_out  => doutb,
+         fram_addr_in   => fram_addr_in,
+         fram_addr_out  => fram_addr_out,
+         fram_we        => fram_we,
+         fl_read        => fl_read,
+         fl_write_ftu   => fl_write_ftu,
+         fl_busy        => fl_busy_internal,
+         fl_started     => fl_started,
+         fl_started_ftu => fl_started_ftu,
+         fl_ready       => fl_ready_internal,
+         fl_data_out    => fl_data_out,
+         fl_data_in_ftu => fl_data_in_ftu,
+         fl_addr        => fl_addr,
+         fl_addr_ftu    => fl_addr_ftu
+      );
+   U_0 : w5300_modul
+      PORT MAP (
+         clk                => clk,
+         wiz_reset          => wiz_reset,
+         addr               => wiz_addr,
+         data               => wiz_data,
+         cs                 => wiz_cs,
+         wr                 => wiz_wr,
+         led                => led1,
+         rd                 => wiz_rd,
+         int                => wiz_int,
+         busy               => busy,
+         new_config         => new_config,
+         config_started     => config_started,
+         config_started_ack => config_started_ack,
+         ping_ftu_start     => ping_ftu_start,
+         ping_ftu_started   => ping_ftu_started,
+         ping_ftu_ready     => ping_ftu_ready,
+         sd_addr            => sd_addr,
+         sd_data_out        => sd_data_in,
+         sd_data_in         => sd_data_out,
+         sd_write           => sd_write,
+         sd_read            => sd_read,
+         sd_started         => sd_started,
+         sd_ready           => sd_ready_internal,
+         sd_busy            => sd_busy_internal,
+         dd_block_start     => dd_block_start,
+         dd_block_start_ack => dd_block_start_ack,
+         dd_block_ready     => dd_block_ready,
+         dd_addr            => dd_addr,
+         dd_data_in         => dd_data_out,
+         dd_read            => dd_read,
+         dd_started         => dd_started,
+         dd_ready           => dd_ready_internal,
+         dd_busy            => dd_busy_internal,
+         fl_addr            => fl_addr,
+         fl_data_in         => fl_data_out,
+         fl_read            => fl_read,
+         fl_started         => fl_started,
+         fl_ready           => fl_ready_internal,
+         fl_busy            => fl_busy_internal
+      );
+
+   -- Implicit buffered output assignments
+   dd_busy  <= dd_busy_internal;
+   dd_ready <= dd_ready_internal;
+   fl_busy  <= fl_busy_internal;
+   fl_ready <= fl_ready_internal;
+   sd_busy  <= sd_busy_internal;
+   sd_ready <= sd_ready_internal;
+
+END beha;
Index: firmware/FTM/ethernet/fram_control_beha.vhd
===================================================================
--- firmware/FTM/ethernet/fram_control_beha.vhd	(revision 10227)
+++ firmware/FTM/ethernet/fram_control_beha.vhd	(revision 10227)
@@ -0,0 +1,138 @@
+--
+-- VHDL Architecture FACT_FTM_lib.fram_control.beha
+--
+-- Created:
+--          by - kai.UNKNOWN (E5PCXX)
+--          at - 11:47:24 21.02.2011
+--
+-- using Mentor Graphics HDL Designer(TM) 2009.1 (Build 12)
+--
+LIBRARY ieee;
+USE ieee.std_logic_1164.all;
+USE ieee.std_logic_arith.all;
+USE IEEE.STD_LOGIC_UNSIGNED.all;
+-- LIBRARY FACT_FTM_lib;
+-- USE FACT_FTM_lib.ftm_array_types.all;
+-- USE FACT_FTM_lib.ftm_constants.all;
+library ftm_definitions;
+USE ftm_definitions.ftm_array_types.all;
+USE ftm_definitions.ftm_constants.all;
+
+ENTITY fram_control IS
+   PORT( 
+      clk            : IN     std_logic;
+      fram_data_in   : OUT    std_logic_vector (15 DOWNTO 0);
+      fram_data_out  : IN     std_logic_vector (15 DOWNTO 0);
+      fram_addr_in   : OUT    std_logic_vector (11 DOWNTO 0);
+      fram_addr_out  : OUT    std_logic_vector (11 DOWNTO 0);
+      fram_we        : OUT    std_logic_vector (0 DOWNTO 0)  := "0";
+      fl_read        : IN     std_logic;
+      fl_write_ftu   : IN     std_logic;
+      fl_busy        : OUT    std_logic                      := '1';
+      fl_started     : OUT    std_logic                      := '0';
+      fl_started_ftu : OUT    std_logic                      := '0';
+      fl_ready       : OUT    std_logic                      := '0';
+      fl_data_out    : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      fl_data_in_ftu : IN     std_logic_vector (15 DOWNTO 0);
+      fl_addr        : IN     std_logic_vector (11 DOWNTO 0);
+      fl_addr_ftu    : IN     std_logic_vector (11 DOWNTO 0)
+   );
+
+-- Declarations
+
+END fram_control ;
+
+--
+ARCHITECTURE beha OF fram_control IS
+  
+  type state_fram_proc_type is (FR_INIT, FR_CONFIG, FR_IDLE, FR_DOUT_WIZ_START, FR_DOUT_WIZ_END, FR_WRITE_START, FR_WRITE_END,
+                                FR_READ_START, FR_READ_WAIT, FR_READ_END);
+                                
+  signal state_fram_proc  : state_fram_proc_type := FR_INIT;
+  signal next_state       : state_fram_proc_type := FR_IDLE;
+
+  signal local_addr  : std_logic_vector (11 downto 0) := X"000";
+  signal local_data  : std_logic_vector (15 downto 0);
+ 
+BEGIN
+
+  fram_proc : process (clk)
+  begin
+    if rising_edge (clk) then
+      case state_fram_proc is
+
+        when FR_INIT =>
+          state_fram_proc <= FR_CONFIG;
+
+        when FR_CONFIG =>
+          state_fram_proc <= FR_IDLE;
+          
+        when FR_IDLE =>
+          fl_busy <= '0';
+          
+          if (fl_read = '1') then
+            fl_busy <= '1';
+            fl_started <= '1';
+            fl_ready <= '0';
+            local_addr <= fl_addr;
+            next_state <= FR_DOUT_WIZ_START;
+            state_fram_proc <= FR_READ_START;
+            
+          elsif (fl_write_ftu = '1') then
+            fl_busy <= '1';
+            fl_started_ftu <= '1';
+            fl_ready <= '0';
+            local_addr <= fl_addr_ftu;
+            local_data <= fl_data_in_ftu;
+            next_state <= FR_IDLE;
+            state_fram_proc <= FR_WRITE_START;
+          end if;
+
+
+
+        when FR_DOUT_WIZ_START =>
+          fl_data_out <= local_data;
+          fl_ready <= '1';
+          state_fram_proc <= FR_DOUT_WIZ_END;
+          
+        when FR_DOUT_WIZ_END =>
+          if (fl_read <= '0') then
+            fl_started <= '0';
+            state_fram_proc <= FR_IDLE;
+          end if;
+
+        -- --
+        -- write to ftu-list ram
+        -- --
+        when FR_WRITE_START =>
+          fram_addr_in <= local_addr;
+          fram_data_in <= local_data;
+          fram_we <= "1";
+          state_fram_proc <= FR_WRITE_END;
+          
+        when FR_WRITE_END =>
+          fram_we <= "0";
+          fl_started_ftu <= '0';
+          fl_ready <= '1';
+          state_fram_proc <= next_state;
+
+        -- --
+        -- read from ftu-list ram
+        -- --
+        when FR_READ_START =>
+          fram_addr_out <= local_addr;
+          state_fram_proc <= FR_READ_WAIT;
+          
+        when FR_READ_WAIT =>
+          state_fram_proc <= FR_READ_END;
+          
+        when FR_READ_END =>
+          local_data <= fram_data_out;
+          state_fram_proc <= next_state;
+
+
+      end case;
+    end if; -- rising edge
+  end process fram_proc;
+
+END ARCHITECTURE beha;
Index: firmware/FTM/ethernet/w5300_modul.vhd
===================================================================
--- firmware/FTM/ethernet/w5300_modul.vhd	(revision 10227)
+++ firmware/FTM/ethernet/w5300_modul.vhd	(revision 10227)
@@ -0,0 +1,939 @@
+----------------------------------------------------------------------------------
+-- Company: 
+-- Engineer: 
+-- 
+-- Create Date:    11:48:48 11/10/2009 
+-- Design Name: 
+-- Module Name:    w5300_modul - Behavioral 
+-- Project Name: 
+-- Target Devices: 
+-- Tool versions: 
+-- Description: 
+--
+-- Dependencies: 
+--
+-- Revision: 
+-- Revision 0.01 - File Created
+-- Additional Comments: 
+--
+----------------------------------------------------------------------------------
+-- hds interface_start
+LIBRARY IEEE;
+USE IEEE.STD_LOGIC_1164.all;
+USE IEEE.STD_LOGIC_ARITH.all;
+USE IEEE.STD_LOGIC_UNSIGNED.all;
+-- LIBRARY FACT_FTM_lib;
+-- USE FACT_FTM_lib.ftm_array_types.all;
+-- USE FACT_FTM_lib.ftm_constants.all;
+library ftm_definitions;
+USE ftm_definitions.ftm_array_types.all;
+USE ftm_definitions.ftm_constants.all;
+
+-- -- Uncomment the following library declaration if instantiating
+-- -- any Xilinx primitives in this code.
+ library UNISIM;
+ use UNISIM.VComponents.all;
+
+--
+ENTITY w5300_modul IS
+   PORT( 
+      clk                 : IN     std_logic;
+      wiz_reset           : OUT    std_logic                      := '1';
+      addr                : OUT    std_logic_vector (9 DOWNTO 0);
+      data                : INOUT  std_logic_vector (15 DOWNTO 0);
+      cs                  : OUT    std_logic                      := '1';
+      wr                  : OUT    std_logic                      := '1';
+      led                 : OUT    std_logic_vector (7 DOWNTO 0)  := (others => '0');
+      rd                  : OUT    std_logic                      := '1';
+      int                 : IN     std_logic;
+      busy                : OUT    std_logic                      := '1';
+      new_config          : OUT    std_logic                      := '0';
+      config_started      : IN     std_logic;
+      config_started_ack  : OUT    std_logic                         := '0';
+      --
+      ping_ftu_start      : OUT    std_logic                         := '0';
+      ping_ftu_started    : IN     std_logic;
+      ping_ftu_ready      : IN     std_logic;
+      --
+      sd_addr        : OUT    std_logic_vector (11 DOWNTO 0);
+      sd_data_out    : OUT    std_logic_vector (15 DOWNTO 0) := (others => '0');
+      sd_data_in     : IN     std_logic_vector (15 DOWNTO 0);
+      sd_write       : OUT    std_logic                      := '0';
+      sd_read        : OUT    std_logic                      := '0';
+      sd_started     : IN     std_logic;
+      sd_ready       : IN     std_logic;
+      sd_busy        : IN     std_logic;
+	  --
+	  dd_block_start : OUT	  std_logic := '0';
+	  dd_block_start_ack : IN std_logic;
+	  dd_block_ready : OUT	  std_logic := '0';
+      dd_addr        : OUT    std_logic_vector (11 DOWNTO 0);
+      dd_data_in     : IN     std_logic_vector (15 DOWNTO 0);
+      dd_read        : OUT    std_logic                      := '0';
+      dd_started     : IN     std_logic;
+      dd_ready       : IN     std_logic;
+      dd_busy        : IN     std_logic;
+      --
+      fl_addr        : OUT    std_logic_vector (11 DOWNTO 0);
+      fl_data_in     : IN     std_logic_vector (15 DOWNTO 0);
+      fl_read        : OUT    std_logic                      := '0';
+      fl_started     : IN     std_logic;
+      fl_ready       : IN     std_logic;
+      fl_busy        : IN     std_logic
+   );
+
+-- Declarations
+
+END w5300_modul ;
+-- hds interface_end
+
+architecture Behavioral of w5300_modul is
+
+  type state_init_type is (INTERRUPT, RESET, WRITE_REG, READ_REG, WRITE_DATA,
+                           INIT, IM, MT, STX, STX1, STX2, STX3, SRX, SRX1, SRX2, SRX3, MAC, MAC1, MAC2, GW, GW1, SNM, SNM1, IP, IP1, TIMEOUT, RETRY,
+                           SI, SI1, SI2, SI3, SI4, SI5, SI6, ESTABLISH, EST1, CONFIG, MAIN, MAIN1, MAIN2, MAIN3, CHK_RECEIVED,
+                           READ_DATA, WRITE_TO_SD_ADDR, READ_FROM_SD_ADDR, READ_FROM_DD_ADDR, READ_FROM_FL_ADDR);
+  type state_write_type is (WR_START, WR_LENGTH, WR_01, WR_02, WR_03, WR_04, WR_05, WR_06, WR_07, WR_08, WR_FIFO, WR_FIFO_01); 
+  type state_interrupt_1_type is (IR1_01, IR1_02, IR1_03, IR1_04);
+  type state_interrupt_2_type is (IR2_01, IR2_02, IR2_03, IR2_04, IR2_05, IR2_06);
+  type state_read_data_type is (RD_1, RD_2, RD_3, RD_4, RD_5, RD_CMD, RD_CMD_PARSE, RD_PING, RD_WRITE_SD_ADDR, RD_READ_SD_ADDR, RD_READ_SD_BLOCK, RD_READ_DD_BLOCK, RD_WRITE_SD_BLOCK, RD_END);
+  type state_write_sd_type is (WRITE_SD_START, WRITE_SD_WAIT, WRITE_SD_END);
+  type state_read_sd_type is (READ_SD_START, READ_SD_WAIT, READ_SD_END);
+  type state_read_fl_type is (READ_FL_START, READ_FL_WAIT, READ_FL_END);
+  type state_ping_type is (PING_START, PING_WAIT, PING_WRITE_LIST);
+  type state_read_dd_type is (READ_DD_START, READ_DD_WAIT, READ_DD_END);
+  type state_read_dd_block_type is (READ_DD_BLOCK_START, READ_DD_BLOCK_WRITE, READ_DD_BLOCK_END);
+
+  signal RST_TIME : std_logic_vector(19 downto 0) := X"7A120";
+
+  signal par_addr      : std_logic_vector (9 downto 0)  := (others => '0');
+  signal par_data      : std_logic_vector (15 downto 0) := (others => '0');
+  signal data_read     : std_logic_vector (15 downto 0) := (others => '0');
+
+  signal state_init, next_state , next_state_tmp : state_init_type               := RESET;
+  signal read_addr_state                         : state_init_type               := RESET;
+  signal count                                   : std_logic_vector (2 downto 0) := "000";
+  signal state_write                             : state_write_type              := WR_START;
+  signal state_interrupt_1                       : state_interrupt_1_type        := IR1_01;
+  signal state_interrupt_2                       : state_interrupt_2_type        := IR2_01;
+  signal state_read_data                         : state_read_data_type          := RD_1;
+  signal next_state_read_data                    : state_read_data_type          := RD_CMD;
+  signal state_write_sd                          : state_write_sd_type           := WRITE_SD_START;
+  signal state_read_sd                           : state_read_sd_type            := READ_SD_START;
+  signal state_read_fl                           : state_read_fl_type            := READ_FL_START;
+  signal state_ping                              : state_ping_type               := PING_START;
+  signal state_read_dd                           : state_read_dd_type            := READ_DD_START;
+  signal state_read_dd_block                     : state_read_dd_block_type      := READ_DD_BLOCK_START;
+
+
+  signal interrupt_ignore : std_logic := '1';
+  signal int_flag         : std_logic := '0';
+
+  signal zaehler     : std_logic_vector (19 downto 0) := (others => '0');
+  signal data_cnt    : integer                        := 0;
+  signal socket_cnt  : std_logic_vector (2 downto 0)  := "000";
+
+  signal socket_tx_free     : std_logic_vector (31 downto 0) := (others => '0');
+  signal write_length_bytes : std_logic_vector (16 downto 0);
+
+  signal socket_rx_received : std_logic_vector (31 downto 0) := (others => '0');
+  signal chk_recv_cntr      : integer range 0 to 10000       := 0;
+
+  signal next_packet_data_cnt : integer range 0 to 4095 := 0;
+  signal rx_packets_cnt   : std_logic_vector (15 downto 0);
+  signal new_config_flag  : std_logic := '0';
+
+  signal local_write_length                            : std_logic_vector (16 downto 0);
+  signal local_socket_nr                               : std_logic_vector (2 downto 0);
+
+  type cmd_array_type is array (0 to 4) of std_logic_vector (15 downto 0);
+  signal cmd_array : cmd_array_type;
+
+  -- -- --
+  signal led_int : std_logic_vector (7 downto 0) := X"00";
+  signal led_cnt : integer range 0 to 2**22 := 0;
+  -- -- --
+
+  signal local_sd_addr : std_logic_vector (11 downto 0);
+  signal local_sd_data : std_logic_vector (15 downto 0);
+
+
+begin
+
+  --synthesis translate_off
+  RST_TIME <= X"00120";
+  --synthesis translate_on
+
+
+  w5300_init_proc : process (clk, int)
+  begin
+    
+    if rising_edge (clk) then
+
+      -- -- --  
+      led <= led_int;
+      -- -- --
+
+      -- Interrupt low
+      if (int = '0') and (interrupt_ignore = '0') then
+        case state_interrupt_1 is
+          when IR1_01 =>
+            int_flag          <= '1';
+            busy              <= '1';
+            state_interrupt_1 <= IR1_02;
+          when IR1_02 =>
+            state_interrupt_1 <= IR1_03;
+          when IR1_03 =>
+            state_init        <= INTERRUPT;
+            socket_cnt        <= "000";
+            zaehler           <= X"00000";
+            count             <= "000";
+            int_flag          <= '0';
+            interrupt_ignore  <= '1';
+            state_interrupt_1 <= IR1_04;
+          when others =>
+            null;
+        end case;
+      end if;  -- int = '0'
+
+      if int_flag = '0' then
+        case state_init is
+                                        -- Interrupt
+          when INTERRUPT =>
+            case state_interrupt_2 is
+              when IR2_01 =>
+                par_addr          <= W5300_IR;
+                state_init        <= READ_REG;
+                next_state        <= INTERRUPT;
+                state_interrupt_2 <= IR2_02;
+              when IR2_02 =>
+                if (data_read (conv_integer(socket_cnt)) = '1') then  -- Sx Interrupt
+                  state_interrupt_2 <= IR2_03;
+                else
+                  socket_cnt <= socket_cnt + 1;
+                  if (socket_cnt = W5300_LAST_SOCKET) then
+                    state_interrupt_2 <= IR2_06;
+                  else
+                    state_interrupt_2 <= IR2_02;
+                  end if;
+                end if;
+              when IR2_03 =>
+                par_addr          <= W5300_S0_IR + socket_cnt * W5300_S_INC;  -- Sx Interrupt Register
+                state_init        <= READ_REG;
+                next_state        <= INTERRUPT;
+                state_interrupt_2 <= IR2_04;
+              when IR2_04 =>
+                par_addr          <= W5300_S0_IR + socket_cnt * W5300_S_INC;
+                par_data          <= data_read;  -- clear Interrupts
+                state_init        <= WRITE_REG;
+                next_state        <= INTERRUPT;
+                state_interrupt_2 <= IR2_05;
+              when IR2_05 =>
+                par_addr   <= W5300_S0_CR + socket_cnt * W5300_S_INC;
+                par_data   <= X"0010";  -- CLOSE
+                state_init <= WRITE_REG;
+                next_state <= INTERRUPT;
+                socket_cnt <= socket_cnt + 1;
+                if (socket_cnt = W5300_LAST_SOCKET) then
+                  state_interrupt_2 <= IR2_06;
+                else
+                  state_interrupt_2 <= IR2_01;
+                end if;
+
+              when IR2_06 =>
+                state_interrupt_1 <= IR1_01;
+                state_interrupt_2 <= IR2_01;
+                socket_cnt        <= "000";
+                state_init        <= RESET;
+            end case;
+
+                                           -- reset W5300
+          when RESET =>
+            busy      <= '1';
+            zaehler   <= zaehler + 1;
+            wiz_reset <= '0';
+            if (zaehler >= X"00064") then  -- wait 2µs
+              wiz_reset <= '1';
+            end if;
+            if (zaehler = RST_TIME) then   -- wait 10ms
+              zaehler          <= X"00000";
+              socket_cnt       <= "000";
+              count            <= "000";
+              interrupt_ignore <= '0';
+              rd               <= '1';
+              wr               <= '1';
+              cs               <= '1';
+              state_write      <= WR_START;
+              state_init       <= INIT;
+              -- -- --
+              led_int          <= X"00";
+              -- -- --
+            end if;
+
+                                        -- Init
+          when INIT =>
+            par_addr   <= W5300_MR;
+            par_data   <= X"0000";
+            state_init <= WRITE_REG;
+            next_state <= IM;
+
+                                        -- Interrupt Mask
+          when IM =>
+            par_addr   <= W5300_IMR;
+            par_data   <= X"00FF";      -- S0-S7 Interrupts
+            state_init <= WRITE_REG;
+            next_state <= MT;
+
+                                        -- Memory Type
+          when MT =>
+            par_addr   <= W5300_MTYPER;
+            par_data   <= X"00FF";      -- 64K RX, 64K TX-Buffer
+            state_init <= WRITE_REG;
+            next_state <= STX;
+
+                                        -- Socket TX Memory Size
+          when STX =>
+            par_data <= X"4000";        -- 64K TX for socket 0, others 0
+
+            par_addr   <= W5300_TMS01R;
+            state_init <= WRITE_REG;
+            next_state <= STX1;
+          when STX1 =>
+            par_data <= X"0000";
+            par_addr   <= W5300_TMS23R;
+            state_init <= WRITE_REG;
+            next_state <= STX2;
+          when STX2 =>
+            par_addr   <= W5300_TMS45R;
+            state_init <= WRITE_REG;
+            next_state <= STX3;
+          when STX3 =>
+            par_addr   <= W5300_TMS67R;
+            state_init <= WRITE_REG;
+            next_state <= SRX;
+
+            -- Socket RX Memory Size
+          when SRX =>
+            par_data <= X"4000";        -- 64K RX for socket 0, others 0
+
+            par_addr   <= W5300_RMS01R;
+            state_init <= WRITE_REG;
+            next_state <= SRX1;
+          when SRX1 =>
+            par_data <= X"0000";
+            par_addr   <= W5300_RMS23R;
+            state_init <= WRITE_REG;
+            next_state <= SRX2;
+          when SRX2 =>
+            par_addr   <= W5300_RMS45R;
+            state_init <= WRITE_REG;
+            next_state <= SRX3;
+          when SRX3 =>
+            par_addr   <= W5300_RMS67R;
+            state_init <= WRITE_REG;
+            next_state <= MAC;
+
+                                        -- MAC
+          when MAC =>
+            par_addr   <= W5300_SHAR;
+            par_data   <= MAC_ADDRESS (0);
+            state_init <= WRITE_REG;
+            next_state <= MAC1;
+          when MAC1 =>
+            par_addr   <= W5300_SHAR + 2;
+            par_data   <= MAC_ADDRESS (1);
+            state_init <= WRITE_REG;
+            next_state <= MAC2;
+          when MAC2 =>
+            par_addr   <= W5300_SHAR + 4;
+            par_data   <= MAC_ADDRESS (2);
+            state_init <= WRITE_REG;
+            next_state <= GW;
+
+                                        -- Gateway
+          when GW =>
+            par_addr               <= W5300_GAR;
+            par_data (15 downto 8) <= conv_std_logic_vector(GATEWAY (0), 8);
+            par_data (7 downto 0)  <= conv_std_logic_vector(GATEWAY (1), 8);
+            state_init             <= WRITE_REG;
+            next_state             <= GW1;
+          when GW1 =>
+            par_addr               <= W5300_GAR + 2;
+            par_data (15 downto 8) <= conv_std_logic_vector(GATEWAY (2), 8);
+            par_data (7 downto 0)  <= conv_std_logic_vector(GATEWAY (3), 8);
+            state_init             <= WRITE_REG;
+            next_state             <= SNM;
+
+                                                      -- Subnet Mask
+          when SNM =>
+            par_addr               <= W5300_SUBR;
+            par_data (15 downto 8) <= conv_std_logic_vector(NETMASK (0), 8);
+            par_data (7 downto 0)  <= conv_std_logic_vector(NETMASK (1), 8);
+            state_init             <= WRITE_REG;
+            next_state             <= SNM1;
+          when SNM1 =>
+            par_addr               <= W5300_SUBR + 2;
+            par_data (15 downto 8) <= conv_std_logic_vector(NETMASK (2), 8);
+            par_data (7 downto 0)  <= conv_std_logic_vector(NETMASK (3), 8);
+            state_init             <= WRITE_REG;
+            next_state             <= IP;
+                                                      -- Own IP-Address
+          when IP =>
+            par_addr               <= W5300_SIPR;
+            par_data (15 downto 8) <= conv_std_logic_vector(IP_ADDRESS (0), 8);
+            par_data (7 downto 0)  <= conv_std_logic_vector(IP_ADDRESS (1), 8);
+            state_init             <= WRITE_REG;
+            next_state             <= IP1;
+          when IP1 =>
+            par_addr               <= W5300_SIPR + 2;
+            par_data (15 downto 8) <= conv_std_logic_vector(IP_ADDRESS (2), 8);
+            par_data (7 downto 0)  <= conv_std_logic_vector(IP_ADDRESS (3), 8);
+            state_init             <= WRITE_REG;
+            next_state             <= SI;
+                                                      -- Socket Init
+          when SI =>
+            par_addr   <= W5300_S0_MR + socket_cnt * W5300_S_INC;
+            par_data   <= X"0101";                    -- ALIGN, TCP
+            state_init <= WRITE_REG;
+            next_state <= SI1;
+                                                      -- Sx Interrupt Mask
+          when SI1 =>
+            par_addr   <= W5300_S0_IMR + socket_cnt * W5300_S_INC;
+            par_data   <= X"000A";                    -- TIMEOUT, DISCON
+            state_init <= WRITE_REG;
+            next_state <= SI2;
+          when SI2 =>
+            par_addr   <= W5300_S0_PORTR + socket_cnt * W5300_S_INC;
+            par_data   <= conv_std_logic_vector(FIRST_PORT + unsigned (socket_cnt), 16);
+            state_init <= WRITE_REG;
+            next_state <= SI3;
+          when SI3 =>
+            par_addr   <= W5300_S0_CR + socket_cnt * W5300_S_INC;
+            par_data   <= X"0001";                    -- OPEN
+            state_init <= WRITE_REG;
+            next_state <= SI4;
+          when SI4 =>
+            par_addr   <= W5300_S0_SSR + socket_cnt * W5300_S_INC;
+            state_init <= READ_REG;
+            next_state <= SI5;
+          when SI5 =>
+            if (data_read (7 downto 0) = X"13") then  -- is open?
+              state_init <= SI6;
+            else
+              state_init <= SI4;
+            end if;
+          when SI6 =>
+            par_addr   <= W5300_S0_CR + socket_cnt * W5300_S_INC;
+            par_data   <= X"0002";                    -- LISTEN
+            state_init <= WRITE_REG;
+            socket_cnt <= socket_cnt + 1;
+            if (socket_cnt = W5300_LAST_SOCKET) then
+              socket_cnt <= "000";
+              next_state <= ESTABLISH;                -- All Sockets open
+            else
+              next_state <= SI;                       -- Next Socket
+            end if;
+            -- End Socket Init
+            
+          when ESTABLISH =>
+            par_addr   <= W5300_S0_SSR + socket_cnt * W5300_S_INC;
+            state_init <= READ_REG;
+            next_state <= EST1;
+          when EST1 =>
+            case data_read (7 downto 0) is
+              when X"17" =>             -- established
+                if (socket_cnt = W5300_LAST_SOCKET) then
+                  socket_cnt <= "000";
+                  busy       <= '0';
+                  state_init <= MAIN;
+                  -- -- --
+                  led_int <= X"00";
+                  -- -- --
+                else
+                  socket_cnt <= socket_cnt + 1;
+                  state_init <= ESTABLISH;
+                end if;
+              when others =>
+                state_init <= ESTABLISH;
+                -- -- --
+                -- Just for fun...
+                if (led_cnt = 1100000) then
+                  if (led_int = X"00") then
+                    led_int <= X"18";
+                  else
+                    led_int (7 downto 4) <= led_int (6 downto 4) & '0';
+                    led_int (3 downto 0) <= '0' & led_int (3 downto 1);
+                  end if;
+                  led_cnt <= 0;
+                else
+                  led_cnt <= led_cnt + 1;
+                end if;
+                -- -- --
+            end case;
+            
+          when CONFIG =>
+            new_config <= '1';
+            config_started_ack <= '0';
+            if (config_started = '1') then
+              new_config <= '0';
+              config_started_ack <= '1';
+              state_init <= MAIN;
+            end if;
+
+            -- main "loop"
+          when MAIN =>
+            if (chk_recv_cntr = 1000) then
+              chk_recv_cntr   <= 0;
+              state_read_data <= RD_1;
+              state_init      <= READ_DATA;
+              busy            <= '1';
+            else
+              chk_recv_cntr <= chk_recv_cntr + 1;
+            end if;
+
+
+                                        -- read data from socket 0  
+          when READ_DATA =>
+            case state_read_data is
+              when RD_1 =>
+                par_addr        <= W5300_S0_RX_RSR;
+                state_init      <= READ_REG;
+                next_state      <= READ_DATA;
+                state_read_data <= RD_2;
+              when RD_2 =>
+                socket_rx_received (31 downto 16) <= data_read;
+                par_addr                          <= W5300_S0_RX_RSR + X"2";
+                state_init                        <= READ_REG;
+                next_state                        <= READ_DATA;
+                state_read_data                   <= RD_3;
+              when RD_3 =>
+                socket_rx_received (15 downto 0) <= data_read;
+                state_read_data                  <= RD_4;
+              when RD_4 =>
+                if (socket_rx_received (16 downto 0) > ('0' & X"000")) then
+                  rx_packets_cnt  <= socket_rx_received (16 downto 1);  -- socket_rx_received / 2
+                  state_read_data <= RD_5;
+                else
+                  busy       <= '0';
+                  state_init <= MAIN;
+                end if;
+              when RD_5 =>
+                if (rx_packets_cnt > 0) then
+                  rx_packets_cnt  <= rx_packets_cnt - '1';
+                  par_addr        <= W5300_S0_RX_FIFOR;
+                  state_init      <= READ_REG;
+                  next_state      <= READ_DATA;
+                  state_read_data <= next_state_read_data;
+                else
+                  state_read_data <= RD_END;
+                end if;
+
+
+              -------------------------
+              -- command handling
+              -------------------------
+              
+              -- read command (5 words)
+              when RD_CMD =>
+                cmd_array (next_packet_data_cnt) <= data_read;
+                next_packet_data_cnt <= next_packet_data_cnt + 1;
+                -- look for command start
+                if (next_packet_data_cnt = 0) then
+                  if (data_read /= CMD_START_DELIMITER) then
+                    next_packet_data_cnt <= 0;
+                  end if;
+                end if;
+                -- last command-word
+                if (next_packet_data_cnt = 4) then
+                  next_packet_data_cnt <= 0;
+                  state_read_data <= RD_CMD_PARSE;
+                else
+                  state_read_data <= RD_5;
+                end if;
+              
+              -- process commands and parameters
+              when RD_CMD_PARSE =>
+                case cmd_array (1) is
+
+                  when CMD_TLED =>
+                    led_int <= NOT led_int;
+                    state_read_data <= RD_5;
+
+                  when CMD_WRITE =>
+                    case cmd_array (2) is
+                      -- write to address in static data block
+                      when PAR_WRITE_SD_ADDR =>
+                        new_config_flag <= '1';
+                        next_state_read_data <= RD_WRITE_SD_ADDR;
+                        state_read_data <= RD_5;
+                      -- write static data block
+                      when PAR_WRITE_SD =>
+                        new_config_flag <= '1';
+                        next_state_read_data <= RD_WRITE_SD_BLOCK;
+                        state_read_data <= RD_5;
+                      when others =>
+                        state_read_data <= RD_5;
+                    end case; -- cmd_array (2)
+
+                  when CMD_READ =>
+                    case cmd_array (2) is
+                      -- read from address in static data block
+                      when PAR_READ_SD_ADDR =>
+                        next_state_read_data <= RD_READ_SD_ADDR;
+                        state_read_data <= RD_5;
+                      -- read static data block
+                      when PAR_READ_SD =>
+                        state_read_data <= RD_READ_SD_BLOCK;
+					  when PAR_READ_DD =>
+						state_read_data <= RD_READ_DD_BLOCK;
+                      when others =>
+                        state_read_data <= RD_5;
+                    end case; -- cmd_array (2)
+                    
+                  when CMD_PING =>
+                    state_ping <= PING_START;
+                    state_read_data <= RD_PING;
+                    
+                  when others =>
+                    state_read_data <= RD_5;
+
+                end case; -- cmd_array (1)
+                
+
+              -- ping all FTUs and write FTU-list to ethernet
+              when RD_PING =>
+                case state_ping is
+                  when PING_START =>
+                    ping_ftu_start <= '1';
+                    if (ping_ftu_started = '1') then
+                      ping_ftu_start <= '0';
+                      state_ping <= PING_WAIT;
+                    end if;
+                  when PING_WAIT =>
+                    if (ping_ftu_ready = '1') then
+                      state_ping <= PING_WRITE_LIST;
+                    end if;
+                  when PING_WRITE_LIST =>
+                    state_read_data <= RD_5;
+                    read_addr_state <= READ_FROM_FL_ADDR;
+                    local_sd_addr <= X"000"; --start at address 0x000
+                    local_write_length <= "00000" & FL_BLOCK_SIZE;
+                    next_state_read_data <= RD_CMD;
+                    next_state <= READ_DATA;
+                    state_init <= WRITE_DATA;
+                end case;
+
+              -- read dynamic data block and write it to ethernet
+              when RD_READ_DD_BLOCK =>
+				case state_read_dd_block is
+				  when READ_DD_BLOCK_START =>
+					dd_block_start <= '1';
+					dd_block_ready <= '0';
+					if (dd_block_start_ack = '1') then
+					  dd_block_start <= '0';
+					  state_read_dd_block <= READ_DD_BLOCK_WRITE;
+					end if;
+				  when READ_DD_BLOCK_WRITE =>
+					read_addr_state <= READ_FROM_DD_ADDR;
+					local_sd_addr <= X"000"; -- start at address 0x000
+					local_write_length <= "00000" & DD_BLOCK_SIZE;
+					state_read_dd_block <= READ_DD_BLOCK_END;
+					next_state <= READ_DATA;
+					state_init <= WRITE_DATA;
+				  when READ_DD_BLOCK_END =>
+					dd_block_ready <= '1';
+					state_read_dd_block <= READ_DD_BLOCK_START;
+					state_read_data <= RD_5;
+					next_state_read_data <= RD_CMD;
+				end case;
+
+				-- read static data block and write it to ethernet
+              when RD_READ_SD_BLOCK =>
+                state_read_data <= RD_5;
+                read_addr_state <= READ_FROM_SD_ADDR;
+                local_sd_addr <= X"000"; -- start at address 0x000
+                local_write_length <= "00000" & SD_BLOCK_SIZE;
+                next_state_read_data <= RD_CMD;
+                next_state <= READ_DATA;
+                state_init <= WRITE_DATA;
+
+              -- read from address in static data ram and write data to ethernet
+              when RD_READ_SD_ADDR =>
+                state_read_data <= RD_5;
+                read_addr_state <= READ_FROM_SD_ADDR;
+                local_sd_addr <= data_read (11 downto 0);
+                local_write_length <= '0' & X"0001"; -- one word will be written to ethernet
+                next_state_read_data <= RD_CMD;
+                next_state <= READ_DATA;
+                state_init <= WRITE_DATA;
+                
+              -- read static data block from ethernet and write it to static data ram
+              when RD_WRITE_SD_BLOCK =>
+                state_read_data <= RD_5;
+                next_packet_data_cnt <= next_packet_data_cnt + 1;
+                local_sd_addr <= conv_std_logic_vector (next_packet_data_cnt, 12);
+                local_sd_data <= data_read;
+                next_state <= READ_DATA;
+                state_init <= WRITE_TO_SD_ADDR;
+                -- last word
+                if (next_packet_data_cnt = (SD_BLOCK_SIZE - 1)) then
+                  next_packet_data_cnt <= 0;
+                  next_state_read_data <= RD_CMD;
+                end if;
+
+              -- write to address in static data ram
+              when RD_WRITE_SD_ADDR =>
+                state_read_data <= RD_5;
+                next_packet_data_cnt <= next_packet_data_cnt + 1;
+                if (next_packet_data_cnt = 0) then
+                  local_sd_addr <= data_read (11 downto 0);
+                else
+                  local_sd_data <= data_read;
+                  next_packet_data_cnt <= 0;
+                  next_state_read_data <= RD_CMD;
+                  next_state <= READ_DATA;
+                  state_init <= WRITE_TO_SD_ADDR;
+                end if;
+                  
+
+              -------------------------
+              -------------------------
+
+
+              when RD_END =>
+                par_addr   <= W5300_S0_CR;
+                par_data   <= X"0040";  -- RECV
+                state_init <= WRITE_REG;
+                if (new_config_flag = '1') then
+                  new_config_flag <= '0';
+                  next_state      <= CONFIG;
+                else
+                  next_state <= MAIN;
+                end if;
+
+            end case;  -- state_read_data
+            
+
+          -- read from ftu list ram
+          when READ_FROM_FL_ADDR =>
+            case state_read_fl is
+              when READ_FL_START =>
+                if (fl_busy = '0') then
+                  fl_addr <= local_sd_addr;
+                  fl_read <= '1';
+                  state_read_fl <= READ_FL_WAIT;
+                end if;
+              when READ_FL_WAIT =>
+                if (fl_started = '1') then
+                  state_read_fl <= READ_FL_END;
+                end if;
+              when READ_FL_END =>
+                if (fl_ready = '1') then
+                  local_sd_data <= fl_data_in;
+                  fl_read <= '0';
+                  state_read_fl <= READ_FL_START;
+                  state_init <= next_state;
+                end if;
+            end case;
+          
+         -- read from dynamic data block
+          when READ_FROM_DD_ADDR =>
+            case state_read_dd is
+              when READ_DD_START =>
+                if (dd_busy = '0') then
+                  dd_addr <= local_sd_addr;
+                  dd_read <= '1';
+                  state_read_dd <= READ_DD_WAIT;
+                end if;
+              when READ_DD_WAIT =>
+                if (dd_started = '1') then
+                  state_read_dd <= READ_DD_END;
+                end if;
+              when READ_DD_END =>
+                if (dd_ready = '1') then
+                  local_sd_data <= dd_data_in;
+                  dd_read <= '0';
+                  state_read_dd <= READ_DD_START;
+                  state_init <= next_state;
+                end if;
+            end case;
+          
+          -- read from static data block
+          when READ_FROM_SD_ADDR =>
+            case state_read_sd is
+              when READ_SD_START =>
+                if (sd_busy = '0') then
+                  sd_addr <= local_sd_addr;
+                  sd_read <= '1';
+                  state_read_sd <= READ_SD_WAIT;
+                end if;
+              when READ_SD_WAIT =>
+                if (sd_started = '1') then
+                  state_read_sd <= READ_SD_END;
+                end if;
+              when READ_SD_END =>
+                if (sd_ready = '1') then
+                  local_sd_data <= sd_data_in;
+                  sd_read <= '0';
+                  state_read_sd <= READ_SD_START;
+                  state_init <= next_state;
+                end if;
+            end case;
+          
+          -- write to static data block
+          when WRITE_TO_SD_ADDR =>
+            case state_write_sd is
+              when WRITE_SD_START =>
+                if (sd_busy = '0') then
+                  sd_addr <= local_sd_addr;
+                  sd_data_out <= local_sd_data;
+                  sd_write <= '1';
+                  state_write_sd <= WRITE_SD_WAIT;
+                end if;
+              when WRITE_SD_WAIT =>
+                if (sd_started = '1') then
+                  sd_write <= '0';
+                  state_write_sd <= WRITE_SD_END;
+                end if;
+              when WRITE_SD_END =>
+                if (sd_ready = '1') then
+                  state_write_sd <= WRITE_SD_START;
+                  state_init <= next_state;
+                end if;
+            end case;
+
+
+
+          when WRITE_DATA =>
+            case state_write is
+              when WR_START =>
+                state_write <= WR_LENGTH;
+              when WR_LENGTH =>
+                local_socket_nr    <= "000";
+                next_state_tmp     <= next_state;
+                write_length_bytes <= local_write_length (15 downto 0) & '0';  -- shift left (*2)
+                data_cnt           <= 0;
+                state_write        <= WR_01;
+                -- Check FIFO Size
+              when WR_01 =>
+                par_addr    <= W5300_S0_TX_FSR + local_socket_nr * W5300_S_INC;
+                state_init  <= READ_REG;
+                next_state  <= WRITE_DATA;
+                state_write <= WR_02;
+              when WR_02 =>
+                socket_tx_free (31 downto 16) <= data_read;
+                par_addr                      <= W5300_S0_TX_FSR + (local_socket_nr * W5300_S_INC) + X"2";
+                state_init                    <= READ_REG;
+                next_state                    <= WRITE_DATA;
+                state_write                   <= WR_03;
+              when WR_03 =>
+                socket_tx_free (15 downto 0) <= data_read;
+                state_write                  <= WR_04;
+              when WR_04 =>
+                if (socket_tx_free (16 downto 0) < W5300_TX_FIFO_SIZE_8B) then
+                  state_write <= WR_01;
+                else
+                  state_write <= WR_FIFO;
+                end if;
+
+                -- Fill FIFO
+              when WR_FIFO =>
+                state_init <= read_addr_state;
+                next_state <= WRITE_DATA;
+                state_write <= WR_FIFO_01;
+
+              when WR_FIFO_01 =>
+                data_cnt <= data_cnt + 1;
+                if (data_cnt < local_write_length) then
+                  local_sd_addr  <= local_sd_addr + 1;
+                  par_addr       <= W5300_S0_TX_FIFOR + local_socket_nr * W5300_S_INC;
+                  par_data       <= local_sd_data;
+                  state_init     <= WRITE_REG;
+                  next_state     <= WRITE_DATA;
+                  state_write    <= WR_FIFO;
+                else
+                  state_write <= WR_05;
+                end if;
+
+                --Send FIFO
+              when WR_05 =>
+                par_addr    <= W5300_S0_TX_WRSR + local_socket_nr * W5300_S_INC;
+                par_data    <= (0 => write_length_bytes (16), others => '0');
+                state_init  <= WRITE_REG;
+                state_write <= WR_06;
+              when WR_06 =>
+                par_addr    <= W5300_S0_TX_WRSR + (local_socket_nr * W5300_S_INC) + X"2";
+                par_data    <= write_length_bytes (15 downto 0);
+                state_init  <= WRITE_REG;
+                state_write <= WR_07;
+              when WR_07 =>
+                par_addr    <= W5300_S0_CR + local_socket_nr * W5300_S_INC;
+                par_data    <= X"0020";  -- Send
+                state_init  <= WRITE_REG;
+                state_write <= WR_08;
+              when others =>
+                state_init  <= next_state_tmp;
+                state_write <= WR_START;
+            end case;
+            -- End WRITE_DATA
+            
+          when READ_REG =>
+            case count is
+              when "000" =>
+                cs    <= '0';
+                rd    <= '0';
+                wr    <= '1';
+                data  <= (others => 'Z');  -- !!!!!!!!!!
+                count <= "001";
+                addr  <= par_addr;
+              when "001" =>
+                count <= "010";
+              when "010" =>
+                count <= "100";
+              when "100" =>
+                data_read <= data;
+                count     <= "110";
+              when "110" =>
+                count <= "111";
+              when "111" =>
+                cs         <= '1';
+                rd         <= '1';
+                count      <= "000";
+                state_init <= next_state;
+              when others =>
+                null;
+            end case;
+            
+          when WRITE_REG =>
+            case count is
+              when "000" =>
+                cs   <= '0';
+                wr   <= '0';
+                rd   <= '1';
+                addr <= par_addr;
+                data <= par_data;
+                count <= "100";
+              when "100" =>
+                count <= "101";
+              when "101" =>
+                count <= "110";
+              when "110" =>
+                cs         <= '1';
+                wr         <= '1';
+                state_init <= next_state;
+                count      <= "000";
+              when others =>
+                null;
+            end case;
+            
+          when others =>
+            null;
+        end case;
+      end if;  -- int_flag = '0'
+
+    end if;  -- rising_edge (clk)
+
+  end process w5300_init_proc;
+
+end Behavioral;
+
Index: firmware/FTM/ftm_board.ucf
===================================================================
--- firmware/FTM/ftm_board.ucf	(revision 10225)
+++ firmware/FTM/ftm_board.ucf	(revision 10227)
@@ -5,6 +5,8 @@
 # Pin location constraints
 #
-# by Patrick Vogler
-# 18 August 2010
+# by Patrick Vogler, 18 August 2010
+#
+# modified by Q. Weitzel, 01 March 2011
+# (NET W_A<0> added and assigned to unconnected pin)
 ########################################################
 
@@ -38,7 +40,8 @@
 
 # W5300 address bus
-NET W_A<1> LOC  = AA25 | IOSTANDARD=LVCMOS33; # there is NO net W_A0 because
-NET W_A<2> LOC  = AA24 | IOSTANDARD=LVCMOS33; #	the W5300 is operated in the 16-bit mode 
-NET W_A<3> LOC  = AA23 | IOSTANDARD=LVCMOS33; # see W5300 datasheet
+NET W_A<0> LOC  = U18  | IOSTANDARD=LVCMOS33; # there is no real net W_A0 because
+NET W_A<1> LOC  = AA25 | IOSTANDARD=LVCMOS33; # the W5300 is operated in the 16-bit mode 
+NET W_A<2> LOC  = AA24 | IOSTANDARD=LVCMOS33; #	(see W5300 datasheet)
+NET W_A<3> LOC  = AA23 | IOSTANDARD=LVCMOS33; # -> W_A<0> assigned to unconnected pin
 NET W_A<4> LOC  = Y25  | IOSTANDARD=LVCMOS33; #
 NET W_A<5> LOC  = Y24  | IOSTANDARD=LVCMOS33; #
@@ -58,14 +61,14 @@
 
 # W5300 buffer ready indicator
-NET W_BRDY<0>   LOC  = AB26  | IOSTANDARD=LVCMOS33; #
-NET W_BRDY<1>   LOC  = AC26  | IOSTANDARD=LVCMOS33; #
-NET W_BRDY<2>   LOC  = AC25  | IOSTANDARD=LVCMOS33; #
-NET W_BRDY<3>   LOC  = AD26  | IOSTANDARD=LVCMOS33; #
+# NET W_BRDY<0>   LOC  = AB26  | IOSTANDARD=LVCMOS33; #
+# NET W_BRDY<1>   LOC  = AC26  | IOSTANDARD=LVCMOS33; #
+# NET W_BRDY<2>   LOC  = AC25  | IOSTANDARD=LVCMOS33; #
+# NET W_BRDY<3>   LOC  = AD26  | IOSTANDARD=LVCMOS33; #
 
 # W5300 associated testpoints
-NET W_T<0>   LOC  = N21  | IOSTANDARD=LVCMOS33; #
-NET W_T<1>   LOC  = M21  | IOSTANDARD=LVCMOS33; #
-NET W_T<2>   LOC  = K21  | IOSTANDARD=LVCMOS33; #
-NET W_T<3>   LOC  = R19  | IOSTANDARD=LVCMOS33; #
+# NET W_T<0>   LOC  = N21  | IOSTANDARD=LVCMOS33; #
+# NET W_T<1>   LOC  = M21  | IOSTANDARD=LVCMOS33; #
+# NET W_T<2>   LOC  = K21  | IOSTANDARD=LVCMOS33; #
+# NET W_T<3>   LOC  = R19  | IOSTANDARD=LVCMOS33; #
 
 
@@ -75,17 +78,17 @@
 # on IO-Bank 1
 #######################################################
-NET S_CLK  LOC  = U20  | IOSTANDARD=LVCMOS33;  # SPI clock
+# NET S_CLK  LOC  = U20  | IOSTANDARD=LVCMOS33;  # SPI clock
 
 # EEPROM
-NET MOSI   LOC  = AA22 | IOSTANDARD=LVCMOS33;    # master out slave in
-NET MISO   LOC  = V22  | IOSTANDARD=LVCMOS33;    # master in slave out
-NET EE_CS  LOC  = G22  | IOSTANDARD=LVCMOS33;    # master out slave in
+# NET MOSI   LOC  = AA22 | IOSTANDARD=LVCMOS33;    # master out slave in
+# NET MISO   LOC  = V22  | IOSTANDARD=LVCMOS33;    # master in slave out
+# NET EE_CS  LOC  = G22  | IOSTANDARD=LVCMOS33;    # master out slave in
 
 # temperature sensors
-NET SIO       LOC  = F22  | IOSTANDARD=LVCMOS33;  # serial IO
-NET TS_CS<0>  LOC  = H21  | IOSTANDARD=LVCMOS33;  # temperature sensors chip select0
-NET TS_CS<1>  LOC  = J21  | IOSTANDARD=LVCMOS33;  # temperature sensors chip select1
-NET TS_CS<2>  LOC  = C25  | IOSTANDARD=LVCMOS33;  # temperature sensors chip select2
-NET TS_CS<3>  LOC  = C26  | IOSTANDARD=LVCMOS33;  # temperature sensors chip select3
+# NET SIO       LOC  = F22  | IOSTANDARD=LVCMOS33;  # serial IO
+# NET TS_CS<0>  LOC  = H21  | IOSTANDARD=LVCMOS33;  # temperature sensors chip select0
+# NET TS_CS<1>  LOC  = J21  | IOSTANDARD=LVCMOS33;  # temperature sensors chip select1
+# NET TS_CS<2>  LOC  = C25  | IOSTANDARD=LVCMOS33;  # temperature sensors chip select2
+# NET TS_CS<3>  LOC  = C26  | IOSTANDARD=LVCMOS33;  # temperature sensors chip select3
 
 
@@ -95,53 +98,53 @@
 # crate 0 
 # crate A
-NET Trig_Prim_A<0>  LOC  = AC6  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<0>	
-NET Trig_Prim_A<1>  LOC  = AD6  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<1>
-NET Trig_Prim_A<2>  LOC  = AF3  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<2>
-NET Trig_Prim_A<3>  LOC  = AE4  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<3>
-NET Trig_Prim_A<4>  LOC  = AE6  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<4>
-NET Trig_Prim_A<5>  LOC  = AE7  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<5>
-NET Trig_Prim_A<6>  LOC  = AE8  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<6>
-NET Trig_Prim_A<7>  LOC  = AC8  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<7>
-NET Trig_Prim_A<8>  LOC  = AC11 | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<8>
-NET Trig_Prim_A<9>  LOC  = AD11 | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<9>
+# NET Trig_Prim_A<0>  LOC  = AC6  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<0>	
+# NET Trig_Prim_A<1>  LOC  = AD6  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<1>
+# NET Trig_Prim_A<2>  LOC  = AF3  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<2>
+# NET Trig_Prim_A<3>  LOC  = AE4  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<3>
+# NET Trig_Prim_A<4>  LOC  = AE6  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<4>
+# NET Trig_Prim_A<5>  LOC  = AE7  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<5>
+# NET Trig_Prim_A<6>  LOC  = AE8  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<6>
+# NET Trig_Prim_A<7>  LOC  = AC8  | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<7>
+# NET Trig_Prim_A<8>  LOC  = AC11 | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<8>
+# NET Trig_Prim_A<9>  LOC  = AD11 | IOSTANDARD=LVCMOS33; # Trig_Prim_0_<9>
 
 # crate 1
 # crate B
-NET Trig_Prim_B<0>  LOC  = AB16 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<0>	
-NET Trig_Prim_B<1>  LOC  = AC15 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<1>
-NET Trig_Prim_B<2>  LOC  = AC16 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<2>
-NET Trig_Prim_B<3>  LOC  = AE17 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<3>
-NET Trig_Prim_B<4>  LOC  = AD19 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<4>
-NET Trig_Prim_B<5>  LOC  = AE19 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<5>
-NET Trig_Prim_B<6>  LOC  = AE20 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<6>
-NET Trig_Prim_B<7>  LOC  = AF20 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<7>
-NET Trig_Prim_B<8>  LOC  = AD21 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<8>
-NET Trig_Prim_B<9>  LOC  = AE23 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<9>
+# NET Trig_Prim_B<0>  LOC  = AB16 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<0>	
+# NET Trig_Prim_B<1>  LOC  = AC15 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<1>
+# NET Trig_Prim_B<2>  LOC  = AC16 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<2>
+# NET Trig_Prim_B<3>  LOC  = AE17 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<3>
+# NET Trig_Prim_B<4>  LOC  = AD19 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<4>
+# NET Trig_Prim_B<5>  LOC  = AE19 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<5>
+# NET Trig_Prim_B<6>  LOC  = AE20 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<6>
+# NET Trig_Prim_B<7>  LOC  = AF20 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<7>
+# NET Trig_Prim_B<8>  LOC  = AD21 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<8>
+# NET Trig_Prim_B<9>  LOC  = AE23 | IOSTANDARD=LVCMOS33; # Trig_Prim_1_<9>
 
 # crate 2
 # crate C
-NET Trig_Prim_C<0>  LOC  = AF23 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<0>	
-NET Trig_Prim_C<1>  LOC  = AC21 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<1>
-NET Trig_Prim_C<2>  LOC  = AE21 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<2>
-NET Trig_Prim_C<3>  LOC  = AD20 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<3>
-NET Trig_Prim_C<4>  LOC  = AC20 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<4>
-NET Trig_Prim_C<5>  LOC  = AF19 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<5>
-NET Trig_Prim_C<6>  LOC  = AC19 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<6>
-NET Trig_Prim_C<7>  LOC  = AD17 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<7>
-NET Trig_Prim_C<8>  LOC  = AD14 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<8>
-NET Trig_Prim_C<9>  LOC  = AC14 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<9>
+# NET Trig_Prim_C<0>  LOC  = AF23 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<0>	
+# NET Trig_Prim_C<1>  LOC  = AC21 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<1>
+# NET Trig_Prim_C<2>  LOC  = AE21 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<2>
+# NET Trig_Prim_C<3>  LOC  = AD20 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<3>
+# NET Trig_Prim_C<4>  LOC  = AC20 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<4>
+# NET Trig_Prim_C<5>  LOC  = AF19 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<5>
+# NET Trig_Prim_C<6>  LOC  = AC19 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<6>
+# NET Trig_Prim_C<7>  LOC  = AD17 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<7>
+# NET Trig_Prim_C<8>  LOC  = AD14 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<8>
+# NET Trig_Prim_C<9>  LOC  = AC14 | IOSTANDARD=LVCMOS33; # Trig_Prim_2_<9>
 
 # crate 3
 # crate D
-NET Trig_Prim_D<0>  LOC  = AB12 | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<0>	
-NET Trig_Prim_D<1>  LOC  = AC12 | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<1>
-NET Trig_Prim_D<2>  LOC  = AC9  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<2>
-NET Trig_Prim_D<3>  LOC  = AB9  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<3>
-NET Trig_Prim_D<4>  LOC  = AB7  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<4>
-NET Trig_Prim_D<5>  LOC  = AF8  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<5>
-NET Trig_Prim_D<6>  LOC  = AF4  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<6>
-NET Trig_Prim_D<7>  LOC  = AF5  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<7>
-NET Trig_Prim_D<8>  LOC  = AD7  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<8>
-NET Trig_Prim_D<9>  LOC  = AE3  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<9>
+# NET Trig_Prim_D<0>  LOC  = AB12 | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<0>	
+# NET Trig_Prim_D<1>  LOC  = AC12 | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<1>
+# NET Trig_Prim_D<2>  LOC  = AC9  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<2>
+# NET Trig_Prim_D<3>  LOC  = AB9  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<3>
+# NET Trig_Prim_D<4>  LOC  = AB7  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<4>
+# NET Trig_Prim_D<5>  LOC  = AF8  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<5>
+# NET Trig_Prim_D<6>  LOC  = AF4  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<6>
+# NET Trig_Prim_D<7>  LOC  = AF5  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<7>
+# NET Trig_Prim_D<8>  LOC  = AD7  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<8>
+# NET Trig_Prim_D<9>  LOC  = AE3  | IOSTANDARD=LVCMOS33; # Trig_Prim_3_<9>
 
 
@@ -149,14 +152,14 @@
 #######################################################
 # on IO-Bank 3
-NET ext_Trig<1>  LOC  = B1  | IOSTANDARD=LVCMOS33; #	
-NET ext_Trig<2>  LOC  = B2  | IOSTANDARD=LVCMOS33; #
-NET Veto         LOC  = E4  | IOSTANDARD=LVCMOS33; #
-NET NIM_In<0>    LOC  = D3  | IOSTANDARD=LVCMOS33; #
-NET NIM_In<1>    LOC  = F4  | IOSTANDARD=LVCMOS33; #
-NET NIM_In<2>    LOC  = E3  | IOSTANDARD=LVCMOS33; #
+# NET ext_Trig<1>  LOC  = B1  | IOSTANDARD=LVCMOS33; #	
+# NET ext_Trig<2>  LOC  = B2  | IOSTANDARD=LVCMOS33; #
+# NET Veto         LOC  = E4  | IOSTANDARD=LVCMOS33; #
+# NET NIM_In<0>    LOC  = D3  | IOSTANDARD=LVCMOS33; #
+# NET NIM_In<1>    LOC  = F4  | IOSTANDARD=LVCMOS33; #
+# NET NIM_In<2>    LOC  = E3  | IOSTANDARD=LVCMOS33; #
 
 # on IO-Bank 0
 # input pin with global clock buffer available
-NET NIM_In3_GCLK  LOC  = K14  | IOSTANDARD=LVCMOS33;
+# NET NIM_In3_GCLK  LOC  = K14  | IOSTANDARD=LVCMOS33;
 
 
@@ -182,9 +185,9 @@
 # on IO-Bank 3
 #######################################################
-NET CLK_Clk_Cond    LOC  = G4  | IOSTANDARD=LVCMOS33; # IO-Bank 3
-NET LE_Clk_Cond     LOC  = F2  | IOSTANDARD=LVCMOS33; # IO-Bank 3
-NET LD_Clk_Cond     LOC  = J4  | IOSTANDARD=LVCMOS33; # IO-Bank 3
-NET DATA_Clk_Cond   LOC  = F3  | IOSTANDARD=LVCMOS33; # IO-Bank 3
-NET SYNC_Clk_Cond   LOC  = H2  | IOSTANDARD=LVCMOS33; # IO-Bank 3
+# NET CLK_Clk_Cond    LOC  = G4  | IOSTANDARD=LVCMOS33; # IO-Bank 3
+# NET LE_Clk_Cond     LOC  = F2  | IOSTANDARD=LVCMOS33; # IO-Bank 3
+# NET LD_Clk_Cond     LOC  = J4  | IOSTANDARD=LVCMOS33; # IO-Bank 3
+# NET DATA_Clk_Cond   LOC  = F3  | IOSTANDARD=LVCMOS33; # IO-Bank 3
+# NET SYNC_Clk_Cond   LOC  = H2  | IOSTANDARD=LVCMOS33; # IO-Bank 3
 
 
@@ -214,33 +217,33 @@
 
 # Bus 2: Trigger-ID to FAD boards
-NET Bus2_Tx_En   LOC  = K2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
-NET Bus2_Rx_En   LOC  = K4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Bus2_Tx_En   LOC  = K2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Bus2_Rx_En   LOC  = K4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
 
 # crate 0
-NET Bus2_RxD_0   LOC  = L4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
-NET Bus2_TxD_0   LOC  = M3  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Bus2_RxD_0   LOC  = L4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Bus2_TxD_0   LOC  = M3  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
 
 # crate 1
-NET Bus2_RxD_1   LOC  = N2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
-NET Bus2_TxD_1   LOC  = N1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Bus2_RxD_1   LOC  = N2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Bus2_TxD_1   LOC  = N1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
 
 # crate 2
-NET Bus2_RxD_2   LOC  = R2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
-NET Bus2_TxD_2   LOC  = R1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Bus2_RxD_2   LOC  = R2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Bus2_TxD_2   LOC  = R1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
 
 # crate 3
-NET Bus2_RxD_3   LOC  = U4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
-NET Bus2_TxD_3   LOC  = U2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Bus2_RxD_3   LOC  = U4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Bus2_TxD_3   LOC  = U2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
 
 
 # auxiliary access
-NET Aux_Rx_D     LOC  = W3  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
-NET Aux_Tx_D     LOC  = Y2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
-NET Aux_Rx_En    LOC  = W4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # Rx- and Tx enable 
-NET Aux_Tx_En    LOC  = V1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # also for auxiliary Trigger-ID
+# NET Aux_Rx_D     LOC  = W3  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Aux_Tx_D     LOC  = Y2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET Aux_Rx_En    LOC  = W4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # Rx- and Tx enable 
+# NET Aux_Tx_En    LOC  = V1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # also for auxiliary Trigger-ID
 
 # auxiliary Trigger-ID (i.e. to send the Trigger-ID to the counting hut/house/container)
-NET TrID_Rx_D    LOC  = U6  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
-NET TrID_Tx_D    LOC  = T7  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET TrID_Rx_D    LOC  = U6  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
+# NET TrID_Tx_D    LOC  = T7  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; # 
 
 
@@ -248,8 +251,8 @@
 # on IO-Bank 3
 #######################################################
-NET Crate_Res0    LOC  = M1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
-NET Crate_Res1    LOC  = P1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
-NET Crate_Res2    LOC  = R3  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
-NET Crate_Res3    LOC  = V2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
+# NET Crate_Res0    LOC  = M1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
+# NET Crate_Res1    LOC  = P1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
+# NET Crate_Res2    LOC  = R3  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
+# NET Crate_Res3    LOC  = V2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
 
 
@@ -257,8 +260,8 @@
 # on IO-Bank 3
 #######################################################
-NET Busy0    LOC  = M4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
-NET Busy1    LOC  = P2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
-NET Busy2    LOC  = R4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
-NET Busy3    LOC  = U1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
+# NET Busy0    LOC  = M4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
+# NET Busy1    LOC  = P2  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
+# NET Busy2    LOC  = R4  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
+# NET Busy3    LOC  = U1  | IOSTANDARD=LVCMOS33 | SLEW = SLOW ; #
 
 
@@ -269,14 +272,14 @@
 #######################################################
 # calibration
-NET Cal_NIM1_p   LOC  = D18 | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; #  Cal_NIM1+ 
-NET Cal_NIM1_n   LOC  = C18 | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; #  Cal_NIM1-
-NET Cal_NIM2_p   LOC  = B18 | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; #  Cal_NIM2+ 
-NET Cal_NIM2_n   LOC  = A18 | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; #  Cal_NIM2- 
+# NET Cal_NIM1_p   LOC  = D18 | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; #  Cal_NIM1+ 
+# NET Cal_NIM1_n   LOC  = C18 | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; #  Cal_NIM1-
+# NET Cal_NIM2_p   LOC  = B18 | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; #  Cal_NIM2+ 
+# NET Cal_NIM2_n   LOC  = A18 | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; #  Cal_NIM2- 
 
 # auxiliarry / spare NIM outputs
-NET NIM_Out0_p  LOC  = C17 | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; #  NIM_Out0+
-NET NIM_Out0_n  LOC  = B17 | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # NIM_Out0-
-NET NIM_Out1_p  LOC  = D17 | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; #  NIM_Out1+
-NET NIM_Out1_n  LOC  = C16 | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # NIM_Out1-
+# NET NIM_Out0_p  LOC  = C17 | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; #  NIM_Out0+
+# NET NIM_Out0_n  LOC  = B17 | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # NIM_Out0-
+# NET NIM_Out1_p  LOC  = D17 | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; #  NIM_Out1+
+# NET NIM_Out1_n  LOC  = C16 | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # NIM_Out1-
 
 
@@ -285,16 +288,16 @@
 # conversion stage
 #######################################################
-NET RES_p       LOC  = D16  | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # RES+ Reset
-NET RES_n       LOC  = C15  | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # RES- IO-Bank 0
-
-NET TRG_p       LOC  = B15  | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; # TRG+ Trigger
-NET TRG_n       LOC  = A15  | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; # TRG- IO-Bank 0
-
-NET TIM_Run_p   LOC  = AF25 | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # TIM_Run+ Time Marker
-NET TIM_Run_n   LOC  = AE25 | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # TIM_Run- on IO-Bank2
-
-NET TIM_Sel     LOC  = AD22 | IOSTANDARD=LVCMOS33;  # Time Marker selector IO-Bank 2
-
-NET CLD_FPGA    LOC  = AA14 | IOSTANDARD=LVCMOS33;  # DRS-Clock feedback into FPGA
+# NET RES_p       LOC  = D16  | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # RES+ Reset
+# NET RES_n       LOC  = C15  | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # RES- IO-Bank 0
+
+# NET TRG_p       LOC  = B15  | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; # TRG+ Trigger
+# NET TRG_n       LOC  = A15  | IOSTANDARD=LVDS_33 | DIFF_TERM="False"; # TRG- IO-Bank 0
+
+# NET TIM_Run_p   LOC  = AF25 | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # TIM_Run+ Time Marker
+# NET TIM_Run_n   LOC  = AE25 | IOSTANDARD=LVDS_33 | DIFF_TERM="False" ; # TIM_Run- on IO-Bank2
+
+# NET TIM_Sel     LOC  = AD22 | IOSTANDARD=LVCMOS33;  # Time Marker selector IO-Bank 2
+
+# NET CLD_FPGA    LOC  = AA14 | IOSTANDARD=LVCMOS33;  # DRS-Clock feedback into FPGA
 
 
@@ -303,22 +306,22 @@
 #######################################################
 # to connector J13
-NET Cal_0_p   LOC  = D22 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_0+
-NET Cal_0_n   LOC  = C22 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_0-
-NET Cal_1_p   LOC  = D23 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_1+
-NET Cal_1_n   LOC  = C23 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_1-
-NET Cal_2_p   LOC  = B23 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_2+
-NET Cal_2_n   LOC  = A22 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_2-
-NET Cal_3_p   LOC  = C21 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_3+
-NET Cal_3_n   LOC  = B21 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_3-
+# NET Cal_0_p   LOC  = D22 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_0+
+# NET Cal_0_n   LOC  = C22 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_0-
+# NET Cal_1_p   LOC  = D23 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_1+
+# NET Cal_1_n   LOC  = C23 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_1-
+# NET Cal_2_p   LOC  = B23 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_2+
+# NET Cal_2_n   LOC  = A22 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_2-
+# NET Cal_3_p   LOC  = C21 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_3+
+# NET Cal_3_n   LOC  = B21 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_3-
 
 # to connector J12
-NET Cal_4_p   LOC  = E21 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_4+   
-NET Cal_4_n   LOC  = D21 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_4-   
-NET Cal_5_p   LOC  = D20 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_5+   
-NET Cal_5_n   LOC  = C20 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_5-   
-NET Cal_6_p   LOC  = B20 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_6+   
-NET Cal_6_n   LOC  = A20 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_6-   
-NET Cal_7_p   LOC  = B19 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_7+   
-NET Cal_7_n   LOC  = A19 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_7-    
+# NET Cal_4_p   LOC  = E21 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_4+   
+# NET Cal_4_n   LOC  = D21 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_4-   
+# NET Cal_5_p   LOC  = D20 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_5+   
+# NET Cal_5_n   LOC  = C20 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_5-   
+# NET Cal_6_p   LOC  = B20 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_6+   
+# NET Cal_6_n   LOC  = A20 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_6-   
+# NET Cal_7_p   LOC  = B19 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_7+   
+# NET Cal_7_n   LOC  = A19 | IOSTANDARD=LVDS_33 | DIFF_TERM=No ; # Cal_7-    
 
 
@@ -327,65 +330,65 @@
 # Connector T7
 # IO-Bank 0
-NET TP<0> LOC  = B14 | IOSTANDARD=LVCMOS33;  # 
-NET TP<1> LOC  = A14 | IOSTANDARD=LVCMOS33;  # 
-NET TP<2> LOC  = C13 | IOSTANDARD=LVCMOS33;  # 
-NET TP<3> LOC  = B13 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<0> LOC  = B14 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<1> LOC  = A14 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<2> LOC  = C13 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<3> LOC  = B13 | IOSTANDARD=LVCMOS33;  # 
 
 # Connector T10
 # IO-Bank 0
-NET TP<4> LOC  = D13 | IOSTANDARD=LVCMOS33;  # 
-NET TP<5> LOC  = C12 | IOSTANDARD=LVCMOS33;  # 
-NET TP<6> LOC  = B12 | IOSTANDARD=LVCMOS33;  # 
-NET TP<7> LOC  = A12 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<4> LOC  = D13 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<5> LOC  = C12 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<6> LOC  = B12 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<7> LOC  = A12 | IOSTANDARD=LVCMOS33;  # 
 
 # on Connector T12
 # IO-Bank 0
-NET TP<8> LOC  = D11 | IOSTANDARD=LVCMOS33;  # 
-NET TP<9> LOC  = C11 | IOSTANDARD=LVCMOS33;  #
+# NET TP<8> LOC  = D11 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<9> LOC  = C11 | IOSTANDARD=LVCMOS33;  #
 
 # on Connector T14
 # IO-Bank 0
-NET TP<10> LOC  = D10 | IOSTANDARD=LVCMOS33;  # 
-NET TP<11> LOC  = C10 | IOSTANDARD=LVCMOS33;  # 
-NET TP<12> LOC  = A10 | IOSTANDARD=LVCMOS33;  # 
-NET TP<13> LOC  = B10 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<10> LOC  = D10 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<11> LOC  = C10 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<12> LOC  = A10 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<13> LOC  = B10 | IOSTANDARD=LVCMOS33;  # 
 
 # on Connector T16
 # IO-Bank 0
-NET TP<14> LOC  = A9 | IOSTANDARD=LVCMOS33;  # 
-NET TP<15> LOC  = B9 | IOSTANDARD=LVCMOS33;  # 
-NET TP<16> LOC  = A8 | IOSTANDARD=LVCMOS33;  # 
-NET TP<17> LOC  = B8 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<14> LOC  = A9 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<15> LOC  = B9 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<16> LOC  = A8 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<17> LOC  = B8 | IOSTANDARD=LVCMOS33;  # 
 
 # on Connector T8
 # IO-Bank 0
-NET TP<18> LOC  = C8 | IOSTANDARD=LVCMOS33;  # 
-NET TP<19> LOC  = D8 | IOSTANDARD=LVCMOS33;  # 
-NET TP<20> LOC  = C6 | IOSTANDARD=LVCMOS33;  # 
-NET TP<21> LOC  = B6 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<18> LOC  = C8 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<19> LOC  = D8 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<20> LOC  = C6 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<21> LOC  = B6 | IOSTANDARD=LVCMOS33;  # 
 
 # on Connector T9
 # IO-Bank 0
-NET TP<22> LOC  = C7 | IOSTANDARD=LVCMOS33;  # 
-NET TP<23> LOC  = B7 | IOSTANDARD=LVCMOS33;  #
+# NET TP<22> LOC  = C7 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<23> LOC  = B7 | IOSTANDARD=LVCMOS33;  #
 
 # on Connector T11
 # IO-Bank 3
-NET TP<24> LOC  = Y1  | IOSTANDARD=LVCMOS33;  # 
-NET TP<25> LOC  = AA3 | IOSTANDARD=LVCMOS33;  # 
-NET TP<26> LOC  = AA2 | IOSTANDARD=LVCMOS33;  # 
-NET TP<27> LOC  = AC1 | IOSTANDARD=LVCMOS33;  #
+# NET TP<24> LOC  = Y1  | IOSTANDARD=LVCMOS33;  # 
+# NET TP<25> LOC  = AA3 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<26> LOC  = AA2 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<27> LOC  = AC1 | IOSTANDARD=LVCMOS33;  #
 
 # on Connector T13
 # IO-Bank 3
-NET TP<28> LOC  = AB1 | IOSTANDARD=LVCMOS33;  # 
-NET TP<29> LOC  = AC3 | IOSTANDARD=LVCMOS33;  # 
-NET TP<30> LOC  = AC2 | IOSTANDARD=LVCMOS33;  # 
-NET TP<31> LOC  = AD2 | IOSTANDARD=LVCMOS33;  #
+# NET TP<28> LOC  = AB1 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<29> LOC  = AC3 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<30> LOC  = AC2 | IOSTANDARD=LVCMOS33;  # 
+# NET TP<31> LOC  = AD2 | IOSTANDARD=LVCMOS33;  #
 
 # on Connector T15
-NET TP<32> LOC  = AD1 | IOSTANDARD=LVCMOS33;  # IO-Bank 3
-NET TP_in<33> LOC  = AE2 | IOSTANDARD=LVCMOS33;  # input only
-NET TP_in<34> LOC  = AE1 | IOSTANDARD=LVCMOS33;  # input only
+# NET TP<32> LOC  = AD1 | IOSTANDARD=LVCMOS33;  # IO-Bank 3
+# NET TP_in<33> LOC  = AE2 | IOSTANDARD=LVCMOS33;  # input only
+# NET TP_in<34> LOC  = AE1 | IOSTANDARD=LVCMOS33;  # input only
 
 
@@ -394,11 +397,10 @@
 # all on 'input only' pins
 #######################################################
-NET brd_id<0> LOC  = A13 | IOSTANDARD=LVCMOS33; # 		
-NET brd_id<1> LOC  = A17 | IOSTANDARD=LVCMOS33; # 		
-NET brd_id<2> LOC  = D12 | IOSTANDARD=LVCMOS33; #		
-NET brd_id<3> LOC  = N25 | IOSTANDARD=LVCMOS33; #		
-NET brd_id<4> LOC  = N26 | IOSTANDARD=LVCMOS33; #		
-NET brd_id<5> LOC  = K24 | IOSTANDARD=LVCMOS33; #		
-NET brd_id<6> LOC  = H24 | IOSTANDARD=LVCMOS33; #	
-NET brd_id<7> LOC  = Y26 | IOSTANDARD=LVCMOS33; #	
-
+# NET brd_id<0> LOC  = A13 | IOSTANDARD=LVCMOS33; #
+# NET brd_id<1> LOC  = A17 | IOSTANDARD=LVCMOS33; #
+# NET brd_id<2> LOC  = D12 | IOSTANDARD=LVCMOS33; #
+# NET brd_id<3> LOC  = N25 | IOSTANDARD=LVCMOS33; #	
+# NET brd_id<4> LOC  = N26 | IOSTANDARD=LVCMOS33; #	
+# NET brd_id<5> LOC  = K24 | IOSTANDARD=LVCMOS33; #	
+# NET brd_id<6> LOC  = H24 | IOSTANDARD=LVCMOS33; #
+# NET brd_id<7> LOC  = Y26 | IOSTANDARD=LVCMOS33; #
Index: firmware/FTM/ftm_definitions.vhd
===================================================================
--- firmware/FTM/ftm_definitions.vhd	(revision 10225)
+++ firmware/FTM/ftm_definitions.vhd	(revision 10227)
@@ -19,4 +19,7 @@
 -- modified:   Patrick Vogler, February 17 2011
 -- merged with library file from Dortmund, Q. Weitzel, February 24, 2011
+--
+-- kw 25.02.:  changes for HDL-Designer (use FACT_FTM.lib.ftm_...),
+-- DD_BLOCK_SIZE added (set to 0x008 for first tests), SD_ADDR_coin_win_[p,c] defined
 ----------------------------------------------------------------------------------
 
@@ -53,7 +56,10 @@
 use IEEE.STD_LOGIC_ARITH.ALL;
 use IEEE.STD_LOGIC_UNSIGNED.ALL;
+-- for HDL-Designer
+-- LIBRARY FACT_FTM_lib;
+-- use FACT_FTM_lib.ftm_array_types.all;
 library ftm_definitions;
 use ftm_definitions.ftm_array_types.all;
--- use IEEE.NUMERIC_STD.ALL;
+use IEEE.NUMERIC_STD.ALL;
 
 package ftm_constants is
@@ -69,4 +75,5 @@
   constant INT_CLK_FREQUENCY_1 : integer :=  50000000;  --  50MHz
   constant INT_CLK_FREQUENCY_2 : integer := 250000000;  -- 250MHz
+  constant LOW_FREQUENCY       : integer :=   1000000;  -- has to be smaller than INT_CLK_FREQUENCY_1
 
   --FTM address and firmware ID
@@ -77,4 +84,6 @@
   constant FTU_RS485_BAUD_RATE   : integer := 250000;  -- bits / sec in our case
   constant FTU_RS485_TIMEOUT     : integer := (INT_CLK_FREQUENCY_1 * 2) / 1000;  -- 2ms @ 50MHz (100000 clk periods)
+  -- constant FTU_RS485_BAUD_RATE   : integer := 10000000;  -- for simulation
+  -- constant FTU_RS485_TIMEOUT     : integer := (INT_CLK_FREQUENCY_1 * 2) / 40000;  -- for simulation
   constant FTU_RS485_NO_OF_RETRY : integer range 0 to 2 := 2;  -- in case of timeout, !!! HAS TO BE < 3 !!!
   constant FTU_RS485_BLOCK_WIDTH : integer := 224;  -- 28 byte protocol
@@ -166,5 +175,5 @@
 
   -- FTU-list parameters
-  constant FL_BLOCK_SIZE           : std_logic_vector := X"0F9"; -- FTU-list size -- 9 + (40 * 6) =249
+  constant FL_BLOCK_SIZE           : std_logic_vector := X"0F9"; -- FTU-list size -- 9 + (40 * 6) = 249
   constant NO_OF_FTU_LIST_REG      : integer := 6;
   constant FTU_LIST_RAM_OFFSET     : integer := 16#009#;
@@ -181,4 +190,7 @@
   constant SD_FTU_ACTIVE_NUM         : integer := 4;                -- number of active FTU lists (cr0 to cr3)
   constant SD_BLOCK_SIZE             : std_logic_vector (11 downto 0) := X"1B4";  -- total size of static data block
+
+  -- dynamic data block
+  constant DD_BLOCK_SIZE : std_logic_vector (11 downto 0) := X"008"; -- 7 + (40 * 12) = 0x1E7 --total size of dynamic data block 
 
   -- addresses in static data block
@@ -212,4 +224,6 @@
   constant SD_ADDR_cc_R15_HI        : std_logic_vector := X"01B";
   constant SD_ADDR_cc_R15_LO        : std_logic_vector := X"01C";
+  constant SD_ADDR_coin_win_p	    : std_logic_vector := X"01D";
+  constant SD_ADDR_coin_win_c	    : std_logic_vector := X"01E";
   constant SD_ADDR_ftu_active_cr0   : std_logic_vector := X"1B0";
   constant SD_ADDR_ftu_active_cr1   : std_logic_vector := X"1B1";
@@ -221,4 +235,5 @@
   type sd_block_default_array_type is array (0 to (SD_BLOCK_SIZE_GENERAL - 1)) of std_logic_vector (15 downto 0);
   type sd_block_ftu_default_array_type is array (0 to (SD_FTU_DATA_SIZE - 1)) of std_logic_vector (15 downto 0);
+  type sd_block_activeFTUlist_default_array_type is array (0 to (NO_OF_CRATES - 1)) of std_logic_vector (15 downto 0);
   
   -- general default values
@@ -272,4 +287,12 @@
       X"0001"  -- Prescaling board x crate y
   );
+
+  --default values for active FTU lists
+  constant sd_block_activeFTUlist_default_array : sd_block_activeFTUlist_default_array_type := (
+    X"0001",
+    X"0000",
+    X"0000",
+    X"0000"
+  );
   
 end ftm_constants;
Index: firmware/FTM/ftu_control/FTM_ftu_control.vhd
===================================================================
--- firmware/FTM/ftu_control/FTM_ftu_control.vhd	(revision 10225)
+++ firmware/FTM/ftu_control/FTM_ftu_control.vhd	(revision 10227)
@@ -69,4 +69,10 @@
     ping_all_done      : out std_logic := '0';
 
+    -- active FTU lists
+    ftu_active_cr0 : in std_logic_vector (15 downto 0);
+    ftu_active_cr1 : in std_logic_vector (15 downto 0);
+    ftu_active_cr2 : in std_logic_vector (15 downto 0);
+    ftu_active_cr3 : in std_logic_vector (15 downto 0);
+    
     -- communication with static (config) RAM
     -- this RAM is only read by FTU_control
@@ -123,10 +129,10 @@
 
   -- global signals after multiplexer
-  signal rx_en_sig    : std_logic;
-  signal tx_en_sig    : std_logic;
-  signal rx_valid_sig : std_logic;
-  signal tx_busy_sig  : std_logic;
-  signal tx_start_sig : std_logic;
-  signal tx_data_sig  : std_logic_vector (7 DOWNTO 0);
+  signal rx_en_sig    : std_logic := '0';
+  signal tx_en_sig    : std_logic := '0';
+  signal rx_valid_sig : std_logic := '0';
+  signal tx_busy_sig  : std_logic := '0';
+  signal tx_start_sig : std_logic := '0';
+  signal tx_data_sig  : std_logic_vector (7 DOWNTO 0) := (others => '0');
   
   -- signals for interpreter of FTU communication
@@ -190,5 +196,5 @@
 
   -- various loop counters
-  signal active_FTU_list_cnt : integer range 0 to NO_OF_CRATES := 0;
+  --signal active_FTU_list_cnt : integer range 0 to NO_OF_CRATES := 0;
   signal crate_cnt           : integer range 0 to NO_OF_CRATES := 0;
   signal FTU_cnt             : integer range 0 to NO_OF_FTUS_PER_CRATE := 0;
@@ -272,5 +278,4 @@
   type FTM_ftu_rs485_control_StateType is (INIT, IDLE, ACTIVE_LIST, READ_CONFIG, TRANSMIT_CONFIG,
                                            PING, PING_END, FTU_LIST, RATES,
-                                           ACTIVE_LIST_1, ACTIVE_LIST_2, ACTIVE_LIST_3,
                                            READ_CONFIG_1, READ_CONFIG_2, READ_CONFIG_3,
                                            TRANSMIT_CONFIG_1, TRANSMIT_CONFIG_2, TRANSMIT_CONFIG_3,
@@ -435,31 +440,38 @@
           end if;
 
-        when ACTIVE_LIST =>  -- loop over 4 crates to get active FTU list
-          if (active_FTU_list_cnt < NO_OF_CRATES) then
-            active_FTU_list_cnt <= active_FTU_list_cnt + 1;
-            FTM_ftu_rs485_control_State <= ACTIVE_LIST_1;
-          else
-            active_FTU_list_cnt <= 0;
-            FTM_ftu_rs485_control_State <= READ_CONFIG;
-          end if;
-
-        when ACTIVE_LIST_1 =>
-          if (static_RAM_busy = '0') then
-            read_static_RAM <= '1';
-            addr_static_RAM <= conv_std_logic_vector(STATIC_RAM_ACT_FTU_OFFSET + (active_FTU_list_cnt - 1), STATIC_RAM_ADDR_WIDTH);
-            FTM_ftu_rs485_control_State <= ACTIVE_LIST_2;
-          end if;
+        when ACTIVE_LIST =>  -- copy active FTU list from inputs to array
+          active_FTU_array_sig(0) <= ftu_active_cr0;
+          active_FTU_array_sig(1) <= ftu_active_cr1;
+          active_FTU_array_sig(2) <= ftu_active_cr2;
+          active_FTU_array_sig(3) <= ftu_active_cr3;
+          FTM_ftu_rs485_control_State <= READ_CONFIG;
+          
+--        when ACTIVE_LIST =>  -- loop over 4 crates to get active FTU list
+--          if (active_FTU_list_cnt < NO_OF_CRATES) then
+--            active_FTU_list_cnt <= active_FTU_list_cnt + 1;
+--            FTM_ftu_rs485_control_State <= ACTIVE_LIST_1;
+--          else
+--            active_FTU_list_cnt <= 0;
+--            FTM_ftu_rs485_control_State <= READ_CONFIG;
+--          end if;
+
+--        when ACTIVE_LIST_1 =>
+--          if (static_RAM_busy = '0') then
+--            read_static_RAM <= '1';
+--            addr_static_RAM <= conv_std_logic_vector(STATIC_RAM_ACT_FTU_OFFSET + (active_FTU_list_cnt - 1), STATIC_RAM_ADDR_WIDTH);
+--            FTM_ftu_rs485_control_State <= ACTIVE_LIST_2;
+--          end if;
             
-        when ACTIVE_LIST_2 =>
-          if (static_RAM_started = '1') then
-            FTM_ftu_rs485_control_State <= ACTIVE_LIST_3;
-          end if;
+--        when ACTIVE_LIST_2 =>
+--          if (static_RAM_started = '1') then
+--            FTM_ftu_rs485_control_State <= ACTIVE_LIST_3;
+--          end if;
             
-        when ACTIVE_LIST_3 =>
-          if (static_RAM_ready = '1') then
-            active_FTU_array_sig(active_FTU_list_cnt - 1) <= data_static_RAM;
-            read_static_RAM <= '0';
-            FTM_ftu_rs485_control_State <= ACTIVE_LIST;
-          end if;
+--        when ACTIVE_LIST_3 =>
+--          if (static_RAM_ready = '1') then
+--            active_FTU_array_sig(active_FTU_list_cnt - 1) <= data_static_RAM;
+--            read_static_RAM <= '0';
+--            FTM_ftu_rs485_control_State <= ACTIVE_LIST;
+--          end if;
                     
         when READ_CONFIG =>  -- read configuration of FTUs (one by one)
@@ -535,7 +547,7 @@
                                      & FTU_dac_array_RAM_sig(0)(15 downto 8) & FTU_dac_array_RAM_sig(0)(7 downto 0)
                                      & "00000000" & FIRMWARE_ID & FTM_ADDRESS
-                                     & "00" & conv_std_logic_vector(FTU_cnt,4) & conv_std_logic_vector(crate_cnt,2)
+                                     & "00" & conv_std_logic_vector((FTU_cnt - 1),4) & conv_std_logic_vector(crate_cnt,2)
                                      & FTU_RS485_START_DELIM;
-            FTU_brd_add_sig <= conv_std_logic_vector(FTU_cnt,4) & conv_std_logic_vector(crate_cnt,2);
+            FTU_brd_add_sig <= conv_std_logic_vector((FTU_cnt - 1),4) & conv_std_logic_vector(crate_cnt,2);
             FTU_command_sig <= "00000000";
             FTM_ftu_rs485_control_State <= TRANSMIT_CONFIG_1;
@@ -552,7 +564,7 @@
                                      & FTU_enable_array_RAM_sig(0)(15 downto 8) & FTU_enable_array_RAM_sig(0)(7 downto 0)
                                      & "00000011" & FIRMWARE_ID & FTM_ADDRESS
-                                     & "00" & conv_std_logic_vector(FTU_cnt,4) & conv_std_logic_vector(crate_cnt,2)
+                                     & "00" & conv_std_logic_vector((FTU_cnt - 1),4) & conv_std_logic_vector(crate_cnt,2)
                                      & FTU_RS485_START_DELIM;
-            FTU_brd_add_sig <= conv_std_logic_vector(FTU_cnt,4) & conv_std_logic_vector(crate_cnt,2);
+            FTU_brd_add_sig <= conv_std_logic_vector((FTU_cnt - 1),4) & conv_std_logic_vector(crate_cnt,2);
             FTU_command_sig <= "00000011";
             FTM_ftu_rs485_control_State <= TRANSMIT_CONFIG_1;
@@ -567,7 +579,7 @@
                                      & FTU_prescaling_RAM_sig(15 downto 8) & FTU_prescaling_RAM_sig(7 downto 0)
                                      & "00000110" & FIRMWARE_ID & FTM_ADDRESS
-                                     & "00" & conv_std_logic_vector(FTU_cnt,4) & conv_std_logic_vector(crate_cnt,2)
+                                     & "00" & conv_std_logic_vector((FTU_cnt - 1),4) & conv_std_logic_vector(crate_cnt,2)
                                      & FTU_RS485_START_DELIM;
-            FTU_brd_add_sig <= conv_std_logic_vector(FTU_cnt,4) & conv_std_logic_vector(crate_cnt,2);
+            FTU_brd_add_sig <= conv_std_logic_vector((FTU_cnt - 1),4) & conv_std_logic_vector(crate_cnt,2);
             FTU_command_sig <= "00000110";
             FTM_ftu_rs485_control_State <= TRANSMIT_CONFIG_1;
@@ -735,5 +747,5 @@
             write_FTUlist_RAM <= '1';
             addr_FTUlist_RAM <= conv_std_logic_vector(FTU_LIST_RAM_OFFSET +
-                                                      FTU_cnt * NO_OF_FTU_LIST_REG +
+                                                      (FTU_cnt - 1)* NO_OF_FTU_LIST_REG +
                                                       (FTU_list_reg_cnt - 1), FTU_LIST_RAM_ADDR_WIDTH);
             if (retry_cnt < FTU_RS485_NO_OF_RETRY) then
