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