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