::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::–:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::-:::::::::::::::..:::::::::::::::-:::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::-.::::::::::::::..::::::::::::::.-:::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::-`-::::::::::::..::::::::::::-`-::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::-.-:::::::::::.-:::::::::::-.-:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::—:::::::::—-:::::::::—::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::-:–:::::::-::-:::::::–:.:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::-:–::::::.::.::::::–:.::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::-..–:::::::::::::.::-:::::.//.:::::-::.::::::::::::::-..-:::::::::::::::::::
::::::::::::::::::::::::-..–:::::::::::.:/–:::.//.:::–::.:::::::::::–..-::::::::::::::::::::::
:::::::::::::::::::::::::::——::::::::.:/–::.//.::–/:.::::::::——:::::::::::::::::::::::::
::::::::::::::::::::::::::::::–::—:::::.:/:-:.//.:-:/:.:::::–:::–::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::–:/:—::.:/:..//..:/:.::—:/:—::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::—://:–.://`::`//:.–://:—:::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::–://:-.-.…-.-://:–:::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::————–.—.-` “-.—.————–::::::::::::::::::::::::::
:::::::::::::::::-.….…—-:::://////////:.-` `-.://////////::::—-.….…-:::::::::::::::
:::::::::::::::::::::::::::::::———-..—.-““-.—..———-:::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::—://:–:.…:-.://:—::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::—:/::–.:/:`:/`:/:.–::/:—:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::—:::—::.:/:-.//.-:/:.::—:::—::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::—::—:::::.:/–:.//.:–/:.:::::—-:—:::::::::::::::::::::::::::
::::::::::::::::::::::::::——-::::::::.:/–::.//.::–/:.::::::::——-::::::::::::::::::::::::
:::::::::::::::::::::::–.—:::::::::::.::–:::.//.::::-::.:::::::::::—.–:::::::::::::::::::::
:::::::::::::::::::::-..-::::::::::::::.::-:::::.//.:::::-::.::::::::::::::-..-:::::::::::::::::::
::::::::::::::::::::::::::::::::::::::.:–::::::.::.::::::–:.::::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::.:–:::::::-::-:::::::–:.:::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::—:::::::::—-:::::::::–.::::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::..-:::::::::::.-:::::::::::-..:::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::..-::::::::::::..::::::::::::-..::::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::-.::::::::::::::..::::::::::::::.-:::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::-:::::::::::::::..:::::::::::::::-:::::::::::::::::::::::::::::::
:::::::::::::::::::::::::::::::::::::::::::::::::..:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::-:::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::