:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::...............
:::::::::::::::::::::::::::::::::::::::::::::::::::::....
:::::::::::::::::::::::::::::::::::::::::::::_-------------------------------------
::::::::::::::::::::::::::::::........................................................................................