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