----                                                                                
              =-:-------                                                           -----            
              -:-=-----::::                                                     --::::::-           
              -:--===----::::                                                --::------::           
               :---=--==---::::                                           -::::------=-::           
               --=-===--------::::   ::::::..........:::.:::..:::::- +=--::::::::::--=::            
                ----====--------::::-----::... .   .. ... ......:--=--::------:-------:             
                 -=-===-------===-:::--=-::... . .......  ......:---::--::-::::::::--:              
                 --=-===--------===--::::.... ......................:::::-:::::::::-:               
                  -==--:::::::-:::-:........  ................ ........::::::...::---               
                   ------:----:..:.............:.......::.....  ... .......::::-----                
                   =------:::::..............:.:::...:::::::...............::::::::                 
                   +++==-:::..::::..:.......:-:.::::..:::--:.::................::::                 
                   =+====----:::::::.:......:--:.:-:.:::--:.::..:................::                 
                   ===---::::::::::::::::...:=-:..:-:::--::::..:-:...............:::                
                   ==+=----:::::..::::::::...-=:...::::---:::..:-:. ...............:                
                  ---=--:::::::::............::....::::=-:::...:.   ...............::               
                -::---:::::.::::::::::-=++++-....::::::=::::.... :::::::..:..::.....::              
               ::::--:::::::::::--=++%%@@@%@@#-..::-:::-:::....=#%%@%#*=--::::::......:             
              -:::---::::::::::...::+#*%@@**#@%-.::---:-:::.:.+%@%*@%*#+=::....:......:             
                 ---::::::::::....  :*##%%%#*%@*:.:==-::--:.:+##%@@@#*#-..............:             
                 --:::::::::::::::.. :+##%######=::==-:-::::-+###%####=:...............:            
                --:::::::::::::::::::..:-====-=++-===--=:----=======-:.::............:::            
               --:::::::::::::::::::..:......:=+**++=====-==++=:...::::..............::             
               ---:::::..:.::::::::......:::::=++****++====++==-:::::.................:             
                 --::::.....:::::::::..:....:--==*#**++++++++-::::...................::             
                 =---::...::..::::::::.......::-=+*+==++===-=-:..... .................:             
                  ---:::::::::::::::.........:::-+###*++=+##*-... ..   ..............::             
                  --:::::-----:::::::....:::-:-::-=*#%*+++#*=:.......................::             
                   ----::::--::.........:::.:.:::::::=+++=-.......   ................:              
                    --:::::::::--:::::::...::::::::::--+=--..........   ............::              
                    -::::::::::-------:..:.:...:::--===+===-::.....................::               
                     :::::::::::----:::.::::::::::--===++=--::::...................:                
                      --:::::..::::----:::::::::--==-----------:::.....:........::::                
                        ::::...::::::----------=---::::::..::-::::::::.........::                   
                         ::::...::::::::--:------::-::::...:::::::..::::.::..:::                    
                           ::::..:.:::::::::::::-----::::::::::..:::::    ::::                      
                              ::::::::::::::::::::::--:::::....::::::                               
                                   ::::::::::::::::---:::::::::::                                   
                                                -