Hon is back

HONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHONHON