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