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