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