******* *********** **** ******** *************** ** **** ** ****** ********** ** ******** **** ** ** ****** **** *** ********
****** ********** ******** *** ****** ***** ************* ****** ******* ** ******* ******* ******** ****** ********* ************ ** ****** ********* *********** ********** ******** **** ****** *********
** ********** ******* ********* ** *************** ***** ******* ****** ******* ***** ******* ******* ********** ******* ******** ********* ****** ***** ******** ***** ******** ****** ****** ***** ******* ** **** ******* ****** ******** ******* ** **********
**** ******* ********* ******* ********* ********** ** ****** *** ***** ********** ********** ** *****
******* ********* ******* ** ***** **** ******* *****************