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