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