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