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