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