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