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