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