*******************************************************+*******************************+*********************************************************************************************+*******************************************************************+***************************************************************************+***************************************************************************+***************************************************************************+*******++****************/*********************************+***************************************************************************+***+****************************************************************+***********************************************************************************+**********+********+**+*******+*******************+************+**********+************+***********************************************************************************************/**********************+*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+***+*****************+**********+***********************+******************************************************************+***+****+******+***+********+***************+******************+*******************************************************+****+******+***+********+***************+******************+***************************************************+****+******+***+********+***************+******************+***+***++****************/******************************************************************************************************+*******************+******************************************************+***+***++***********************/***************************************************************************+***********************************************************************************************************+*******************************************+**********+********+**+*******+*******************+************+**********+**********************************************************************************************************+***+*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+***********************************+*******************************************************************+*********+***************+*******************++********************************+*********+***************+********************+******+****************************************************************/****************************************+**********************************/********************************+******************************************************************************+***********************************************************+***************************+***********************************************************************+*********************************************************************************************************************************+********+******************************************************+***************+*******+*******+***********+*************************************************************************+***********************************+**********/******************************************/***********************+**********+****+************************+***************************************************+**********************************+**************************************************************************************************************************************************************+*******************+*************************************************************************************************+***********************************+**********/****************************************************************************************************************************************************************+**********************+******************************************************+*******++****************************************+*******************************+*******************************************+***********************************************************************+***************************************************************************************************+***+***********+*********************************************************************************************/************************************************************************+*********************************************************/************************+**************+************************+*********+***********+*************+*************+*******++****************************+*********************************************************************/***********/***********************+**************+**********************+***************+***+*******************+***************+***+*********************/**********+*******************************/************************+*************************+*********************************************************+**************+********************************+******************************************************/***********/***********************+***********************************************+*********************************************************************************+*****************************+***************+*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************+********+************************************************************************************************************************************************************************************************************************************+**********************************************************************************************************************==