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