__,.--―-...,_
         /|                   ,.-'::::::::::::::::::::::::::~`‐-,.-‐´~ ̄ ̄ ̄```ー- ._
         //                 /;:-‐''´ ̄~``>:::::::::::..::::::::::::::::::::::::::::::::::::::::::::::::`‐.、
        /::/   __           //   _,..-‐~ ̄....::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\
       /::::/ /::_.-‐' _,..-―-.._     //   /..:    _::-‐'´::::::::::::::::::::/:::::::::::::::::::::::::::::::::::::::::::\
       |:::::| /:::::/ _.-'´~..:::::::::::::....~``‐-.,,|」.  _,,.ゝ::  _,.-'":::::::::::::::::::::::::::/:::::::::::/::::::::::ヽ:::::::::::::::::::::::::ヽ
      .|:::::|/:::://::::::::::::::::::::::::::::::::::::::::::::::|/ ̄//::://   / /''''/''  ''''/::''/:::::::::\::::::::::::''''  ヽ
      ヽ;:::|::::::':::''::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::///::::. /  /  ./    ./   |     ヽ       |
       _.ゝヽ   ''''''''  '''''''''::::::::::::::;;;;::::'''''''''':|/ /|::::://:::::::/::::::::://:::::::::::::::|/'-.,|......   ヽ...    ..:..|
     /´                      ',.-.|::://::::::::/:::::::::/_::::::::::: ||::::::::||_:::::::::::::::|:::::::::::::::::::::|  _,.-‐"~~"‐-..、
    //, '..:. .................::::::::......  ......:::::::::............./.....|:///::::::::/:::::::..'´,.-‐`:::::::::| |:::.´~:」=``-、:::::|:::、,.-‐-、|/ ,....,,_
   ν /:::::::::::::::::::::/::::::::::,:::::::,:::::::::::::::、::::::::::::::::'::::::::ヽ:::ヽ:::::::::::::::::://;⌒:`-._::|. |,.-,'´.- ~`.、_::::|::::|    ヽ;=~~::::::::::;;;;``-、
     .|:::::::::::::::::::/:::::::::/::::,;:,|:::::::::::::::ヽヽ:::::::::::、::::::::::.-'´|:::::::::::-久 |::ヽ...|  `   /::ヽ .|`\┐:::|    |、 \:::::::::::::;  ;::)
     |:::::::::::::::::::|:::::::::/_;:===ゝ::::::::::::::|.;-=-.、:ヽ:::::::/ ::::::|:::/::/|  ヽv.;ノ      .|::v;:::/ '\`|、:|   /,ヽ  ヽ::::::::'  ;:|
     ヽ|:::::,.-‐ |::::::.-'|::/-=-、\:::::::::::| ;-=、,`':::|::::::|:、'::::ゝ::::/:::|  ``゛゛  ,     `ー '   \:::|   /,` \_ )::::;  ::::::|
      ヽ/   |::::::/ ,-/ ) |`  ヽ:::::::,/ )|`、::::|:::::|:::; ::,./|::::/ 、″″ _,....___  〃〃   ,|::::/_./|/;,_ ゝ_フ‐-..; -.,;::::|
       |   _,.-i´ヽ.|-_'::::|   ヽ,' |:._'::::|へ.,_||::::|.、//  .|::::|,..ヽ    .   `j      /::/  `' / |ゝ-」    `-、:ノ
       ヽ、  \|  ヽ_ノ     ヽ__.ノ  /|/|::/ |:|   \ヽ.| \  ヽ、_ノ     .// /|   ト`-.,_  ,   |::|
        ヽ__    〃〃     ゝ 〃〃/ノ/~^`>'   /ヽ `-'  ` - 、_ ___ ,..- '´/ / ,.-、_」 ,~`)  ̄   //
       _,.;;;;;v''|~\      、_ ..   √~~_,.-‐'' ヽ、 /ヽ,,,,ヽ   '((-ー-.,_´  ー''´ / /   / _\   ,/
     ヘ´:::::::::::ヽ.'  `‐ .._       _,.-:´|/ヽ´,. ,ν∩ヽ-´彡ミ\ ´-_.,ν,ヽ、,ヽ,-‐´ ,.-‐´,-‐'  _,-'' _,-'" `|
   /- , \:::::::::ヽ\ `‐-~`_‐---‐コ";;;;;;::0. ξ';'() /~>  '/;ヽ` `'<`';、(),V,''-,|  -´-‐'´ _,..-‐'_,..-'     |
  ./   \ ヽ:::::::::ヽ``‐-、._,..=' <=...  `´(,._...,,‐-ゝ`_,.-'' .ミ  ∠フゝ ヽノ`o-,....---‐''"/ / /      .|
  |    ヽNヽ:::::::::|         |ー=','-,, .-,  _ / ヽ|-'    <._ ,(`'‐ヽ‐ノ´~`ー-―=,> ,| /.-'       |
  ∫    .V |:::::::::::|        .|:::;_/ 'ノ/ -//´)`Vノ.     |`,r`y‐' 、 .- 、 _;:::ζ'  >'´~.       ノ
  ノ      )  ヽ;;;::-―--.,,_    /:::;|  (/  /  /'/~'),_.-‐ /⌒|/  |  |_|  | _..-,⌒))  / ノ      ノ,
 / 、 ,..--.ゝ_),.-'´    _,.、 ヽ.、_ノ-;=|  .i  |  |,/ / ヽ,Y  / |  .|  .|‐|  |-‐''‐, '  / /      ,'.ノ
v/ -'´  ,.-'´/´    ,.、 \ヽ. |‐、::,'-/ヽ '   '  ノノ  '  ノ |. `r'|  .|  |..ノ  ./ /.......-≦:; 、     / |
|(  ,  |  |  , <ヽ `\ ``-'' ヽ/ i.._/`‐-..、    _,/ .ノ`、 ` '  i  '   / /,    ,、 `ヽヽ、 `:. / | |;i,
;l| ,;,`;, |、 、/`、)ヽ._,)`- ''   |     ~  ̄`‐='-´-‐'  `-.、     _,,/ノ  ., ,、l|i,、`;, |i, 、 i;i;、 ),i|;i|, l:
li;|;,li;i,`;i;,`;li;j,,`i', ,、.,  ,;,   、  |    ,、  .、 ,`i‐l;-..,__;  l; l;l;``ー=''"_,:-'"   ;, ,`;;ijl;ijl,、`j;li,`;/`;lj,;'`;::j:i;l,l:i;.
li:;jl`;:i;:,li:j:.`li:lj,l:i;,;il ,l;ij ,l:;il,, i, `;:,、,.|;, , ,.  l;:  `; li,;、 i;:,. ノ;,~"l:,li:j,;i;l, `, 、; l; l;, , , ,j;:,;l:i;:j;i;:jl;:ij:;,i:lji:;jil;,.l;:ij:;;.,i:jl:li:j:;  .、,
:j::i;jl:il;:ijl:;:j;:li:li;l:jli;lji:;lil;i,;ilj;l,jil:, ;li;,;i|,l;i;,llji;,,.. l;li;j;, ,lli;:ilj:: :lilji:;j:iljli:l;:li:jlijl:ilji:,.:il;ljlijl:;ij, li;,;i .,:i;jljlilljli:;jllij:i,j:;i,jil:,lijlli:j:;ilijli:j;,lij:;l,ijili;j;il
lij,i:,i;j,i:il:jl,ilijjlij:i;l,lijliljilljjlillj:;,ljil;,;.llij:,ijlijililj:i,;:;,.l:;,ilij;i;,liljilij;lli:;i:lilji:,lijllij:;,iljliljliljlij::;l:ilj:iljljl:il,.jl:ilji:ljilijliljiljlililji:;l,:;ij:lijlilj:ilj,:;ii;:lj:illli;jlijlji;lj
lji;j:i:j;il;:i:lj:ililjliljillijljliljilljlilli:j;li:jillil:jlijiljijliljliljlijililljlliljijjillijlillj:i;l:jililjliljli:;jilljliljlijliljlilljillijllijlijjili:;j:liljlijlijiljillijlli:i:ilij;:illjlillji:jlijll,j;li;i:;li;j,ij;lil;ij;