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