------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX------------
XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------XX----------
--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX--------------XXXXXXXXXX
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------