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