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