tttt                                                                    
                                                                                        ttt:::t                                                                    
                                                                                        t:::::t                                                                    
                                                                                        t:::::t                                                                    
    ccccccccccccccccrrrrr   rrrrrrrrryyyyyyy           yyyyyyyppppp   ppppppppp   ttttttt:::::tttttttyyyyyyy           yyyyyyyzzzzzzzzzzzzzzzzz    eeeeeeeeeeee    
  cc:::::::::::::::cr::::rrr:::::::::ry:::::y         y:::::y p::::ppp:::::::::p  t:::::::::::::::::t y:::::y         y:::::y z:::::::::::::::z  ee::::::::::::ee  
 c:::::::::::::::::cr:::::::::::::::::ry:::::y       y:::::y  p:::::::::::::::::p t:::::::::::::::::t  y:::::y       y:::::y  z::::::::::::::z  e::::::eeeee:::::ee
c:::::::cccccc:::::crr::::::rrrrr::::::ry:::::y     y:::::y   pp::::::ppppp::::::ptttttt:::::::tttttt   y:::::y     y:::::y   zzzzzzzz::::::z  e::::::e     e:::::e
c::::::c     ccccccc r:::::r     r:::::r y:::::y   y:::::y     p:::::p     p:::::p      t:::::t          y:::::y   y:::::y          z::::::z   e:::::::eeeee::::::e
c:::::c              r:::::r     rrrrrrr  y:::::y y:::::y      p:::::p     p:::::p      t:::::t           y:::::y y:::::y          z::::::z    e:::::::::::::::::e 
c:::::c              r:::::r               y:::::y:::::y       p:::::p     p:::::p      t:::::t            y:::::y:::::y          z::::::z     e::::::eeeeeeeeeee  
c::::::c     ccccccc r:::::r                y:::::::::y        p:::::p    p::::::p      t:::::t    tttttt   y:::::::::y          z::::::z      e:::::::e           
c:::::::cccccc:::::c r:::::r                 y:::::::y         p:::::pppp:::::::p      t::::::tttt:::::t    y:::::::y          z::::::zzzzzzzze::::::::e          
 c:::::::::::::::::c r:::::r                  y:::::y          p::::::::::::::::p       tt::::::::::::::t     y:::::y          z::::::::::::::z e::::::::eeeeeeee  
  cc:::::::::::::::c r:::::r                 y:::::y           p::::::::::::::pp          tt:::::::::::tt    y:::::y          z:::::::::::::::z  ee:::::::::::::e  
    cccccccccccccccc rrrrrrr                y:::::y            p::::::pppppppp              ttttttttttt     y:::::y           zzzzzzzzzzzzzzzzz    eeeeeeeeeeeeee  
                                           y:::::y             p:::::p                                     y:::::y                                                 
                                          y:::::y              p:::::p                                    y:::::y                                                  
                                         y:::::y              p:::::::p                                  y:::::y                                                   
                                        y:::::y               p:::::::p                                 y:::::y                                                    
                                       yyyyyyy                p:::::::p                                yyyyyyy                                                     
                                                              ppppppppp