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