::iiiiiii. ..ii::::::ii::iiii:::::   .. :::::i:iiii::i:i: :::ii:::::::iii: :: .
:::iiii:::ii:::ii:iiiii:::::::i:::iii:i:::iiiiii:.    :::ii::i:i:i::iiii::  ::
:i:::iiii::::i::::::iiiiiiiii:::::iiiiii:  .   ..  :::::::ii::iii::::::ii::::::
 '::::i:::ii::iii::i::iii::::'::i::::i::::::  :::::....::::::::::::ii::i:iii: :
.:i:iii:::::::::::::::::i::::::::::::::::::::  .oo88o::'''        `"::::ii::iii
:::::::::ii::::::::::::::i::::::  :::::  .:..oooooo""  oo..          `::::i:iii
::. ::::ii::::::: ::::::i::::: :::::: :::..:oooo   oob. ooo           `::ii::::
 :::::::::::: .:::::::i::::::: .o88oo.      `oo  o. `oo.ooo            `:::::::
:::::':::::::::::::::::::: .oP o8"""o8b.     `8 ooo..  ooo'             :::.::i
::::::::::::'::::::::::::.do'.o888b.`oo'     oo  `4oo o  ooo88o.        ::: .::
::: :::::::::::::::::::: 88' o8'  .oo. `b    `oo ooooooooo' ooooo.     .:::: .:
 ' :::::::::::::i::::::  48. `4o o8P .o P      `ooooooo' .oooooo oo.  .:::::: :
.:::::::::::::::::::::::. `4o d8o. .o8'             .8  .oo o oooooo.  `:::::::
::::::::::::::::::: .:::::  ` `4oggoP'              oo ooo  oo    ooo    ::::':
:::::::::::::::::: . ::::      ... .. ....          o8  oo    o oo  o    ::':::
::::::...  ::::::. ::::: _...oooooooooooooo...:.:.. `oo.  ooooo  ooo     ::::::
:.:'  .   .::::::::::: .oooSSSSSSSSSSSSoooooooo....; `4oooooooooo       .:: :::
  . .     :::::::::: .d8SSSSSSSSSSSSSSSSSSSSooooooo.:.  `oooo      ,: .:::: .::
 .     .  .:::::'   .88SSSSSSSSSSSSSSSSSSSSooooooooi...           .;'   `::: ::
                    8SSSSSSSSSSSSSSSSSSSSSoooooooii:::.                   `: ::
                   j8SSSSSSSSSSSSSSSSSSSSoooooooiii:::.               '    : ::
                   SSSSSSSSSSSSSSSSSSSSSSoooooooiii::::.             . '   ':::
          . '     jSSSSSSSSSSSSSSSSSSSSSSoooooooii:::::.                    :::
        ,' .      gSSSSSSSSSSSSSSSSSSSSSSSSSooooiii:::::.                  .:::
     .'/  '      '      `+4SSSSSSSP+'         `4o::::::::                 : ::
   ,' /   :      SooSSbo..  `4P''  _.ooSSSSSSSbo.SSS::::    .           .::..::
 ,'  /    :      `4SSSSoob`o.,:_.odSSSSSSSSSSS88SSSSSSS. .     _.oooo.   `: ::
/   /     :        .no'"74S SSSSSoSS.xxP+4SSS888SSSSSSSS. '  .dSSP""`Sb   ::::
   j      :       .d@@. .dP,d88oiib.<@@( `)PSSSSSSSSSoooS.  .SSS'8Sb `i;  :.:
          :       jSSooiif,d88oSSSSoSbnbodSSSSSSSSSoooooi::dSSS'.`8S  i:..:::::
  .       :       ooooSSf,d88oSSSSSSoSSSSSSSSSSSSooooooii::SSS'.S `8 ji:::'::.:
          :       oooooS,j88oSSboSSSSSSSSSSSSSooooooooii:::SS' gPl 8 x' ':::.
 ;  \     '      .loooo l888oSS+ggSSSSSSSSSSoooooooooii:::::l." .odSf' ' .    .
 '  :\.  .     .'  Soool._`""" .  dSSSSSSSSSooooooooii::::::ld8SSxxf'
'   : .`.     .    `SSoo8ssssSSSSSSSSSSSSSSSoooooooii::::::::8SSxxP  :` .
    :  . `.   :     lSoo8oSoooSooSSSSSSSSSSooooooooii::::'::: `""    |   `--.
    :   .  `. :      SoooP'"+""`qSooSSSSSSSoooooooii::::'::::        |       `-
    ;        `.      lSP.--._..._`"q8SSSSSSoooooooii:::'.::::        :
    :     .    \      SSL._ ===  _.oSSSSSSSoooooooi::' .:::::        : ,-'
    :      .    `.    lSSSoooooodSSSSSSSSSoooooooi::' .::::::.     ,-''  ':
   ':             \    SSSSooooooooSSSSSSoooooooo:'  .i:::::::   ,'     . |
 .' |       .      \   `SSSS@@@@88SSSSSSSooooooP'  .:iii::::::  /      ,  |
    :               `   `4SSSSSSSSSSSSooooSSP'   .iiiiii:::::::'      /   |
             `       .   `4SSSSSSSSSSoooP+'    .diiiiiiii::::::      /    |
     :        .            `4Sggsss""'     ..soooiiiiiiiii:::::     /     '
      \              :       ` :    __..ooooooooooiiiiiiiii::::.   /      :
       \       .     :         88SSSSSSSSSoooooooooooiiiiiii:::: -'      '
        \      :     '         8888SSSSSSSSSooooooooooiiiiii:::::      .'
         \     :    .          888888SSSSSSSSSSoooooooooiiiii::::.
          `.   :   .           88888888SSSSSSSSSoooooooooiiii:::::