#### ##     ####                 # ## #      ##   # ###   # ### #### ####   
 ##  ## ####  #                #   ## #      ##  ##  ##  ##   #  ##   ##    
 ##  ## #   #                    # ## #    # ##  ##     ###      ##   ##    
 ## ###   #   #                #   ## #    #  ##  ####  ###      ##   ##    
 ##  ##   #   #      ####   #### # ## #   # ####     ## ###      ##   ##    
 ##  ## #    #   ####   ####   #   ## #   #   ## ##  ##  ##   #  ##   ##    
#### ##   #   #    #   ## #   ## # ## #  ### ### ## ##    # ### #### ####   
          #   #    ####   ####  #  ## #