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