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