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