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