.----------------. .----------------.   .----------------. .----------------. .----------------.
| .--------------. | .--------------. | | .--------------. | .--------------. | .--------------. |
| |  _________   | | |     _____    | | | |      __      | | | ____    ____ | | |     ____     | |
| | |  _   _  |  | | |    |_   _|   | | | |     /  \     | | ||_   \  /   _|| | |   .'    `.   | |
| | |_/ | | \_|  | | |      | |     | | | |    / /\ \    | | |  |   \/   |  | | |  /  .--.  \  | |
| |     | |      | | |      | |     | | | |   / ____ \   | | |  | |\  /| |  | | |  | |    | |  | |
| |    _| |_     | | |     _| |_    | | | | _/ /    \ \_ | | | _| |_\/_| |_ | | |  \  `--'  /  | |
| |   |_____|    | | |    |_____|   | | | ||____|  |____|| | ||_____||_____|| | |   `.____.'   | |
| |              | | |              | | | |              | | |              | | |              | |
| '--------------' | '--------------' | | '--------------' | '--------------' | '--------------' |
 '----------------' '----------------'   '----------------' '----------------' '----------------'