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