ooooooooo oooooooooooo oooo .o. ooooo ooo ooooo d"""""""8' d'""""""d888' `888 .888. `888b. `8' `888' .8' .888P 888 .8"888. 8 `88b. 8 888 .8' d888' 888 .8' `888. 8 `88b. 8 888 .8' .888P 888 .88ooo8888. 8 `88b.8 888 .8' d888' .P 888 .8' `888. 8 `888 888 .8' .8888888888P .o. 88P o88o o8888o o8o `8 o888o `Y888P