Post your handy utility scripts!

Needs a litle something, though… :grin: Maybe a redundant read for exiting?
:duck:

What for? Ctrl+C does the trick.

Besides, it’s such a beautiful clock, you’ll never want to exit from it :frog:

2 Likes

Sure CTRLC works - but some users might not have that hard-wired into their brains yet! Touching the ANY key might be…
:thinking:

BLOAT!!1! :frog:

3 Likes

A few functions and aliases that I use which some people may or may not find useful.

#Fix video timestamp
ffmpegfix ()
{
ffmpeg -i "$1" -an -map 0:v -vcodec copy -bsf:v h264_mp4toannexb output.h264
ffmpeg -fflags +genpts -r 25 -i "output.h264" -vcodec copy output2.mp4
}

#Play music from youtube
mpvmusic ()
{
mpv --no-config --volume=70 --volume-max=200 --ytdl-format=bestaudio "$1"
}

#Play live stream videos using streamlink and mpv
streampv ()
{
streamlink --player=mpv "$1" best
}

#Cut video using ffmpeg stream copy
ffmpegcut ()
{
ffmpeg -ss "$2" -i "$1" -to "$3" -c copy "${1%.*}-cut.mkv"
}

#Watch youtube/vimeo/dailymotion video using mpv
mpvyt ()
{
mpv --no-config --fs --volume=70 --volume-max=200 --ytdl-format=22/best --video-sync=display-resample --interpolation=yes --tscale=oversample --scale=ewa_lanczossharp --cscale=bicubic "$1"
}

#Sync wallpapers to pcloud
alias syncpcloud='rsync -avrP --update --delete-before /home/galadriel/Downloads/pix/walls/ "/home/galadriel/pcloud/pics/pics 1"'
2 Likes

It’s not really much of a script, but for those of you on KDE Plasma, who have issues with gamma not applying on nVidia graphics cards, I have a line sitting in my .bashrc that executes a script with one line :

nvidia-settings -a 0/RedGamma[DP-0]=0.700000 -a 0/BlueGamma[DP-0]=0.700000 -a 0/GreenGamma[DP-0]=0.700000

Obviously change the integers according to your needs, but until this bug is fixed, it’s a way to automatically force this without having to drop into the system settings for display.

2 Likes

A few weeks ago, I shared a simple digital clock, a bash script that made a figlet-like display that animated in the terminal.

Then @freebird54 reacted with a :mantelpiece_clock: emoji and I got an idea…

I quickly dismissed this idea as too complicated, and decided not to bother with it. But two nights ago I had a dream in which I figured out how to do it, so yesterday and last night, I did it.

So, I present to you bashclock2, an animated scalable analogue clock, completely written in bash:

#!/usr/bin/env bash
# An analogue version of bashclock

function cleanup_() {
  printf '\033[?25h' # unhide cursor
  stty echo 2>/dev/null
}
trap cleanup_ EXIT

REFRESH_INTERVAL=0.2  # display the clock every 0.2 seconds, adjust if necessary
CLOCK_RADIUS=23       # default size of the clock, adjust if necessary

# parsing the only option
# bashclock N, where N is an integer, for a clock of a different size.
# minumum radius is 7, maximum radius is 37, adjust if necessary
if (( $# >= 1 )) && (( $1 >= 7 && $1 <= 37 )); then
  CLOCK_RADIUS=$1
fi

# Trigonometric & other mathematical functions -------------------------------
# Table of sines, first quadrant, 1Β° increment
declare -r sin_table=(
          0   17452406   34899497   52335956   69756474   87155743  104528463 
  121869343  139173101  156434465  173648178  190808995  207911691  224951054 
  241921896  258819045  275637356  292371705  309016994  325568154  342020143 
  358367950  374606593  390731128  406736643  422618262  438371147  453990500 
  469471563  484809620  500000000  515038075  529919264  544639035  559192903 
  573576436  587785252  601815023  615661475  629320391  642787610  656059029 
  669130606  681998360  694658370  707106781  719339800  731353702  743144825 
  754709580  766044443  777145961  788010754  798635510  809016994  819152044 
  829037573  838670568  848048096  857167301  866025404  874619707  882947593 
  891006524  898794046  906307787  913545458  920504853  927183855  933580426 
  939692621  945518576  951056516  956304756  961261696  965925826  970295726 
  974370065  978147601  981627183  984807753  987688341  990268069  992546152 
  994521895  996194698  997564050  998629535  999390827  999847695 1000000000 
)
function cosE9() { # returns 1000000000*cos($1), $1=0..360Β°
  if   (($1 >=  0 && $1 <=  90)); then printf ${sin_table[90-$1]}
  elif (($1 >  90 && $1 <= 180)); then printf -- -${sin_table[$1-90]}
  elif (($1 > 180 && $1 <= 270)); then printf -- -${sin_table[270-$1]}
  elif (($1 > 270 && $1 <= 360)); then printf ${sin_table[$1-270]}
  fi
}
function sinE9() { # returns 1000000000*sin($1), $1=0..360Β°
  if   (($1 >=  0 && $1 <=  90)); then printf ${sin_table[$1]}
  elif (($1 >  90 && $1 <= 180)); then printf ${sin_table[180-$1]}
  elif (($1 > 180 && $1 <= 270)); then printf -- -${sin_table[$1-180]}
  elif (($1 > 270 && $1 <= 360)); then printf -- -${sin_table[360-$1]}
  fi
}
function abs() { 
  if (($1 >= 0)); then printf $1
  else printf -- -$1
  fi
}
function signum() { 
  if   (($1 >  0)); then printf 1
  elif (($1 == 0)); then printf 0
  else printf -- -1
  fi
}
#-----------------------------------------------------------------------------
W=$((2*CLOCK_RADIUS+1)) # clock width
H=$((CLOCK_RADIUS+1))   # clock height

declare RASTER_MATRIX   # array of pixels
declare CLOCK_MATRIX    # the clock face without hands

# runs once on startup, draws the clock and saves it as the CLOCK_MATRIX
function generate_CLOCK_MATRIX() {
  # Midpoint circle rasterising algorithm
  local E=-$CLOCK_RADIUS
  local x=$CLOCK_RADIUS
  local y=0
  while ((y <= x)); do
    CLOCK_MATRIX[$(((CLOCK_RADIUS+x)+(CLOCK_RADIUS+y)*W))]=1
    CLOCK_MATRIX[$(((CLOCK_RADIUS+x)+(CLOCK_RADIUS-y)*W))]=1
    CLOCK_MATRIX[$(((CLOCK_RADIUS-x)+(CLOCK_RADIUS+y)*W))]=1
    CLOCK_MATRIX[$(((CLOCK_RADIUS-x)+(CLOCK_RADIUS-y)*W))]=1
    CLOCK_MATRIX[$(((CLOCK_RADIUS+y)+(CLOCK_RADIUS+x)*W))]=1
    CLOCK_MATRIX[$(((CLOCK_RADIUS+y)+(CLOCK_RADIUS-x)*W))]=1
    CLOCK_MATRIX[$(((CLOCK_RADIUS-y)+(CLOCK_RADIUS+x)*W))]=1
    CLOCK_MATRIX[$(((CLOCK_RADIUS-y)+(CLOCK_RADIUS-x)*W))]=1
    E=$((E+2*y+1))
    y=$((y+1))
    if ((E >= 0)); then
      E=$((E-(2*x-1)))
      x=$((x-1))
    fi
  done
  # hour ticks
  for ((phi = 0; phi < 360; phi+=30)) {
    x=$((CLOCK_RADIUS+((CLOCK_RADIUS*$(cosE9 $phi))/1050000000)))
    y=$((CLOCK_RADIUS-((CLOCK_RADIUS*$(sinE9 $phi))/1050000000)))
    CLOCK_MATRIX[x+y*W]=1
  }
  CLOCK_MATRIX[CLOCK_RADIUS+CLOCK_RADIUS*W]=1
}

function reset_RASTER_MATRIX() {
  local l=$((W*(W+1)))
  for ((i = 0; i < l; i++)); do
    RASTER_MATRIX[i]=${CLOCK_MATRIX[i]}
  done
}

function plot_line() {
  # Bresenham's line rasterising algorithm
  local x0=$1
  local y0=$2
  local x1=$3
  local y1=$4
  
  local dx=$((x1-x0))
  local sx=$(signum $dx)
  local dx=$(abs $dx)
  
  local dy=$((y1-y0))
  local sy=$(signum $dy)
  local dy=-$(abs $dy)
  
  local E=$((dx+dy))
  
  while true; do
    local x=$((CLOCK_RADIUS+x0))
    local y=$((CLOCK_RADIUS-y0))
    RASTER_MATRIX[x+y*W]=1
    
    local e2=$((2*E))
    if ((e2 >= dy)); then
      ((x0 == x1)) && return
      E=$((E+dy))
      x0=$((x0+sx))
    fi
    if ((e2 <= dx)); then
      ((y0 == y1)) && return
      E=$((E+dx));
      y0=$((y0+sy))
    fi
  done
}
#-----------------------------------------------------------------------------
function draw_HOURS_hand() {
  local phi=$(((($HOURS*30+$MINUTES*30/60)+270)%360))
  local x=$(((CLOCK_RADIUS*$(cosE9 $phi))/1700000000))
  local y=-$(((CLOCK_RADIUS*$(sinE9 $phi))/1700000000))
  plot_line 0 0 $x $y
}
function draw_MINUTES_hand() {
  local phi=$(((($MINUTES*6+$SECONDS*6/60)+270)%360))
  local x=$(((CLOCK_RADIUS*$(cosE9 $phi))/1200000000))
  local y=-$(((CLOCK_RADIUS*$(sinE9 $phi))/1200000000))
  plot_line 0 0 $x $y
}
function draw_SECONDS_hand() {
  local phi=$(((($SECONDS*6)+270)%360))
  local x=$(((CLOCK_RADIUS*$(cosE9 $phi))/1060000000))
  local y=-$(((CLOCK_RADIUS*$(sinE9 $phi))/1060000000))
  plot_line 0 0 $x $y
}

# converts the pixel array into characters β–ˆ, β–€, and β–„, prints to stdout
function print_RASTER_MATRIX() {
  for ((r = 0; r < H; r++)); do
    printf '  ' # indentation
    for ((c = 0; c < W; c++)); do
      if   ((RASTER_MATRIX[c+2*r*W] == 1 && RASTER_MATRIX[c+2*r*W+W] == 1))
        then printf 'β–ˆ'
      elif ((RASTER_MATRIX[c+2*r*W] == 1 && RASTER_MATRIX[c+2*r*W+W] == 0))
        then printf 'β–€'
      elif ((RASTER_MATRIX[c+2*r*W] == 0 && RASTER_MATRIX[c+2*r*W+W] == 1))
        then printf 'β–„'
      else
        printf ' '
      fi
    done
    printf '\n'
  done
}
#-----------------------------------------------------------------------------
generate_CLOCK_MATRIX
stty -echo 2>/dev/null
printf '\033[?25l\n' # hide cursor
unset EXIT_

while true; do
  HOURS=$((10#$(printf "%(%H)T" $((EPOCHSECONDS)))))
  MINUTES=$((10#$(printf "%(%M)T" $((EPOCHSECONDS)))))
  SECONDS=$((10#$(printf "%(%S)T" $((EPOCHSECONDS)))))

  reset_RASTER_MATRIX
  draw_HOURS_hand
  draw_MINUTES_hand
  draw_SECONDS_hand
  print_RASTER_MATRIX

  [[ -z $EXIT_ ]] || exit 0
  read -t $REFRESH_INTERVAL -n 1 && EXIT_=1;

  printf "\033[${H}A\r" # move cursor to beginning
done

bashclock2

You can change the size of the clock with a command line argument. The default radius is 20, but it can be anything between 7 and 37. The bigger clock looks nicer. The big sizes require a fast terminal emulator. It works very nice on Konsole (with the Hack font). It also looks great in the TTY.


This is a bit more complex than the previous script. It uses the same trick of writing the escape sequence \033[F to move the cursor to the beginning of the last line, so as to overwrite what was written previously. However, this drawing is slightly more complex than just printing out the β€œfigletised” digits. It involves rasterising vector graphics composed of two primitive types: a line and a circle. The algorithms for that are well-known, and used all the time: Midpoint Circle Algorithm and the Bresenham’s Line Algorithm. You can find a very nice description of both (which I used as a guide when writing this), here:

https://members.chello.at/~easyfilter/Bresenham.pdf

After figuring that out, drawing lines and circles using the characters β–ˆ, β–€, and β–„ was quite easy, however the bigger problem with the script was performance. In order for the animation to be fairly smooth and not skip seconds, the clock has to be updated several times a second. The problem is that drawing the hands of the clock requires trigonometry, and bash has no support for floating point computations. Using integers, it is fairly straightforward to implement fixed point computation in bash, but computing sine and cosine functions in fixed point, at runtime, was out of the question (due to precision and time). The obvious way to use floating point computations in bash is to outsource it and do the calculation in another program like bc or awk, but running a separate process for every frame of the animation was out of the question. The solution, which works rather well, is to hardcode the trigonometric functions. BTW, this was done in Doom (1993), in order to maximise performance. :slight_smile:

Oh, and just for @freebird54, I’m using read instead of sleep, so that one can exit with the press of the Any key (that, and the clock looks ugly when you exit in the middle of the frame).

Three additional tricks: using escape sequences to hide the cursor, turning off stty echo, and using trap to cleanup the mess on exit.


PS. After spending hours working on this, when I close my eyes, all I see is clocks.
frog_clocks

Edit: updated the script to get rid of calling the external date process. Bash has builtin printf which provides the facilities for outputting the time without calling an external process. This should improve performance significantly.

14 Likes

That’s some old-school bash scripting right there!
BASED CLOCK :frog:

1 Like

Really impressive! If I’m going to influence further development, though, I just have mention the 24 hr variant - or, more to the point, a separately updated AM/PM designation (below the clock face?). :duck:

After all, only frogs always know whether it’s day or night! (especially if they keep my kind of hours)

2 Likes

Thanks! :frog:

But are there no limits to your desire for even MOAR BLOAT!? :rofl:

Coming from a creature that bloats up just to β€˜sing’… :grin: Anyway - I did have to check an alternative (24 hr) clock to be sure - as this time of day at this latitude there’s some daylight either way…

1 Like

@Kresimir
Really impressive! :+1: :sweat_smile:

For what its worth, a couple years ago I tested the speed of some popular terminals.
Then clearly the fastest was qterminal. Don’t know how it is today, but maybe qterminal is worth a try for the bash clock.

2 Likes

I got bored, constantly changing to various directories in ~/.config so I wrote this:

cfg() {
    cd ~/.config
    if [[ "$1" != "" ]]; then
	       cd $1
    fi
}

Usage:

# cfg <directory> e.g.:
cfg autostart

Saves a bit of typing/multiple aliases.

1 Like

Nice!

Another bash solution for the same problem is to use variable CDPATH.
It is a colon separated list of folder paths, and cd looks for subdirectories under those folders (usage is similar to your function).

More info with command: man bash

3 Likes

A very important script:

#!/bin/sh
if [ "$COLORTERM" = "truecolor" ]; then
  printf "    \033[38;2;36;55;26mβ–„\033[38;2;111;166;79mβ–„\033[48;2;119;178;85m\033[38;2;62;93;44mβ–€\033[38;2;98;147;70mβ–€\033[38;2;113;170;81mβ–€\033[38;2;112;168;80mβ–€\033[38;2;91;137;65mβ–€\033[38;2;51;76;36mβ–€\033[0m\033[38;2;99;148;70mβ–„\033[38;2;22;34;16mβ–„            β–„\033[38;2;99;148;71mβ–„\033[48;2;119;178;85m\033[38;2;51;77;36mβ–€\033[38;2;92;137;65mβ–€\033[38;2;112;168;80mβ–€\033[38;2;113;170;81mβ–€\033[38;2;98;147;70mβ–€\033[38;2;62;92;44mβ–€\033[0m\033[38;2;111;166;79mβ–„\033[38;2;36;55;26mβ–„    \033[0m\n   \033[48;2;103;155;74m\033[38;2;32;48;23mβ–€\033[48;2;120;178;86m\033[38;2;116;173;83mβ–€\033[48;2;182;213;164m\033[38;2;119;178;86mβ–€\033[48;2;254;254;253m\033[38;2;154;198;129mβ–€\033[48;2;255;255;255m\033[38;2;204;226;192mβ–€\033[38;2;216;233;206mβ–€\033[38;2;192;219;176mβ–€\033[48;2;242;248;239m\033[38;2;136;187;106mβ–€\033[48;2;149;195;122m\033[38;2;119;178;85mβ–€β–ˆ\033[48;2;104;156;74mβ–„\033[48;2;81;122;58m\033[38;2;18;27;13mβ–€\033[0m\033[38;2;18;27;13m          \033[48;2;82;122;58mβ–€\033[48;2;119;178;85m\033[38;2;104;156;74mβ–€ \033[38;2;149;195;123mβ–„\033[48;2;242;248;239m\033[38;2;136;188;107mβ–€\033[48;2;255;255;255m\033[38;2;192;219;176mβ–€\033[38;2;216;233;206mβ–€\033[38;2;204;226;192mβ–€\033[48;2;254;254;253m\033[38;2;154;197;129mβ–€\033[48;2;181;213;163m\033[38;2;119;178;86mβ–€\033[48;2;120;178;86m\033[38;2;116;173;83mβ–€\033[48;2;103;155;74m\033[38;2;32;48;23mβ–€\033[0m\033[38;2;32;48;23m   \033[0m\n  \033[48;2;75;112;54m\033[38;2;43;65;31mβ–€\033[38;2;119;178;85mβ–ˆ\033[48;2;183;214;165m\033[38;2;143;191;115mβ–€\033[48;2;255;255;255m\033[38;2;252;253;251mβ–€\033[48;2;219;220;221m\033[38;2;254;254;254mβ–€\033[48;2;48;54;58m\033[38;2;206;207;208mβ–€\033[48;2;41;47;51m\033[38;2;163;165;167mβ–€\033[48;2;87;92;95m\033[38;2;232;232;233mβ–€\033[48;2;252;252;252m\033[38;2;255;255;255mβ–€\033[48;2;246;250;244m\033[38;2;226;238;219mβ–€\033[48;2;146;193;118m\033[38;2;123;180;90mβ–€\033[38;2;119;178;85mβ–ˆ\033[48;2;111;166;79mβ–„\033[48;2;106;159;75m\033[38;2;24;36;17mβ–€\033[0m\033[38;2;117;174;83mβ–„\033[48;2;119;178;85m\033[38;2;38;57;27mβ–€\033[38;2;57;85;41mβ–€\033[38;2;66;99;47mβ–€β–€\033[38;2;57;85;41mβ–€\033[38;2;38;57;27mβ–€\033[0m\033[38;2;117;174;83mβ–„\033[48;2;106;159;75m\033[38;2;24;37;17mβ–€\033[48;2;119;178;85m\033[38;2;111;167;79mβ–€ \033[48;2;146;193;119m\033[38;2;123;180;90mβ–€\033[48;2;246;250;244m\033[38;2;226;238;219mβ–€\033[48;2;251;252;252m\033[38;2;255;255;255mβ–€\033[48;2;86;91;94m\033[38;2;232;232;233mβ–€\033[48;2;41;47;51m\033[38;2;163;165;167mβ–€\033[48;2;47;53;57m\033[38;2;207;208;209mβ–€\033[48;2;219;220;221m\033[38;2;254;254;254mβ–€\033[48;2;255;255;255m\033[38;2;252;253;251mβ–€\033[48;2;182;214;165m\033[38;2;142;191;114mβ–€\033[38;2;119;178;85mβ–ˆ\033[48;2;75;112;53m\033[38;2;43;65;31mβ–€\033[0m\033[38;2;43;65;31m  \033[0m\n  \033[48;2;85;127;60m\033[38;2;87;131;62mβ–€\033[38;2;119;178;85mβ–ˆ\033[48;2;161;201;137m\033[38;2;189;218;173mβ–€\033[38;2;255;255;255mβ–ˆ\033[48;2;248;248;249m\033[38;2;199;201;202mβ–€\033[48;2;133;137;139m\033[38;2;41;47;51mβ–€\033[48;2;83;88;91mβ–€\033[48;2;181;183;185m\033[38;2;66;71;75mβ–€\033[48;2;255;255;255m\033[38;2;245;246;246mβ–€\033[48;2;239;246;235m\033[38;2;248;251;246mβ–€\033[48;2;131;184;100m\033[38;2;150;196;124mβ–€\033[38;2;119;178;85mβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;131;185;100m\033[38;2;151;196;125mβ–€\033[48;2;239;246;235m\033[38;2;248;251;247mβ–€\033[48;2;255;255;255m\033[38;2;245;245;246mβ–€\033[48;2;180;183;184m\033[38;2;66;71;75mβ–€\033[48;2;83;88;91m\033[38;2;41;47;51mβ–€\033[48;2;134;137;140mβ–€\033[48;2;248;248;249m\033[38;2;199;201;202mβ–€\033[38;2;255;255;255mβ–ˆ\033[48;2;160;201;136m\033[38;2;189;218;173mβ–€\033[38;2;119;178;85mβ–ˆ\033[48;2;84;126;60m\033[38;2;87;131;62mβ–€\033[0m\033[38;2;87;131;62m  \033[0m\n  \033[48;2;23;34;16m\033[38;2;63;95;45mβ–€\033[48;2;118;176;84m\033[38;2;119;178;85mβ–€\033[48;2;123;180;90mβ–„\033[48;2;128;183;97m\033[38;2;221;235;212mβ–€\033[48;2;203;226;191m\033[38;2;255;255;255mβ–€\033[48;2;250;252;249mβ–€\033[48;2;254;254;254mβ–€\033[48;2;241;247;237mβ–€\033[48;2;176;210;156m\033[38;2;252;253;252mβ–€\033[48;2;120;178;86m\033[38;2;181;213;162mβ–€\033[38;2;119;178;85mβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[38;2;181;213;163mβ–€\033[48;2;176;210;157m\033[38;2;252;253;252mβ–€\033[48;2;241;247;238m\033[38;2;255;255;255mβ–€\033[48;2;254;254;254mβ–€\033[48;2;250;252;249mβ–€\033[48;2;203;225;190mβ–€\033[48;2;128;183;97m\033[38;2;220;235;211mβ–€\033[48;2;119;178;85m\033[38;2;123;180;90mβ–€\033[38;2;118;176;84mβ–„\033[48;2;22;33;16m\033[38;2;63;94;45mβ–€\033[0m\033[38;2;63;94;45m  \033[0m\n   \033[38;2;74;111;52mβ–€\033[48;2;89;133;64m\033[38;2;119;178;85mβ–€β–ˆβ–ˆ\033[48;2;123;180;91mβ–„\033[48;2;131;185;100mβ–„\033[48;2;120;178;87mβ–„β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–„\033[48;2;131;185;100mβ–„\033[48;2;123;180;91mβ–„β–ˆβ–ˆ\033[48;2;90;135;64mβ–€\033[0m\033[38;2;73;110;52mβ–€   \033[0m\n   \033[38;2;91;128;69mβ–„\033[48;2;119;178;85m\033[38;2;101;145;76mβ–€                              \033[38;2;101;145;75mβ–€\033[0m\033[38;2;90;127;68mβ–„   \033[0m\n  \033[48;2;118;173;87m\033[38;2;55;77;43mβ–€\033[38;2;119;178;85mβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;118;172;87m\033[38;2;54;76;42mβ–€\033[0m\033[38;2;54;76;42m  \033[0m\n \033[48;2;120;176;87m\033[38;2;77;109;58mβ–€\033[38;2;119;178;85mβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;120;175;87m\033[38;2;77;109;59mβ–€\033[0m\033[38;2;77;109;59m \033[0m\n\033[48;2;88;127;66m\033[38;2;58;80;45mβ–€\033[38;2;119;178;85mβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;111;169;78mβ–€\033[48;2;97;152;64mβ–€\033[48;2;109;166;76mβ–€β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–€\033[48;2;97;152;64mβ–€\033[48;2;112;169;78mβ–€β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;87;126;65m\033[38;2;58;80;45mβ–€\033[0m\n\033[48;2;121;178;88m\033[38;2;118;170;89mβ–€\033[38;2;119;178;85mβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;117;176;83m\033[38;2;106;162;72mβ–€\033[48;2;111;168;77m\033[38;2;92;145;59mβ–€\033[48;2;117;175;83m\033[38;2;103;158;69mβ–€\033[38;2;119;178;85mβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;116;175;83m\033[38;2;103;158;69mβ–€\033[48;2;111;168;77m\033[38;2;92;145;59mβ–€\033[48;2;117;176;83m\033[38;2;106;162;72mβ–€\033[38;2;119;178;85mβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;122;179;89m\033[38;2;118;170;89mβ–€\033[0m\n\033[48;2;123;179;90m\033[38;2;120;178;86mβ–€\033[38;2;119;178;85mβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;120;179;87mβ–€\033[48;2;129;184;97mβ–€\033[48;2;138;190;108mβ–€\033[48;2;144;194;114mβ–€\033[48;2;147;196;118mβ–€β–€\033[48;2;144;194;114mβ–€\033[48;2;138;190;108mβ–€\033[48;2;129;184;97mβ–€\033[48;2;120;179;87mβ–€β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;122;179;90m\033[38;2;120;178;86mβ–€\033[0m\n\033[48;2;92;118;77m\033[38;2;117;164;89mβ–€\033[48;2;120;179;87m\033[38;2;119;178;85mβ–€β–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;120;178;86mβ–€\033[48;2;134;188;103mβ–€\033[48;2;154;200;126mβ–€\033[48;2;173;213;150mβ–€\033[48;2;192;225;172m\033[38;2;120;178;86mβ–€\033[48;2;198;229;179m\033[38;2;134;188;103mβ–€\033[38;2;153;199;125mβ–€\033[38;2;169;211;145mβ–€\033[38;2;185;220;163mβ–€\033[38;2;196;227;176mβ–€        β–€\033[38;2;185;220;163mβ–€\033[38;2;169;211;145mβ–€\033[38;2;152;199;125mβ–€\033[38;2;134;188;103mβ–€\033[48;2;192;225;172m\033[38;2;120;178;86mβ–€\033[48;2;173;213;150m\033[38;2;119;178;85mβ–€\033[48;2;154;200;126mβ–€\033[48;2;134;188;103mβ–€\033[48;2;120;178;86mβ–€β–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;120;179;87mβ–€\033[48;2;92;117;78m\033[38;2;116;164;89mβ–€\033[0m\n\033[38;2;45;52;40mβ–€\033[48;2;149;173;135m\033[38;2;185;220;164mβ–€\033[48;2;198;229;179m\033[38;2;161;205;135mβ–€\033[38;2;157;202;130mβ–€\033[38;2;163;206;138mβ–€\033[38;2;176;215;153mβ–€\033[38;2;193;225;172mβ–€                          β–€\033[38;2;176;215;153mβ–€\033[38;2;163;206;138mβ–€\033[38;2;157;202;130mβ–€\033[38;2;161;205;136mβ–€\033[48;2;150;174;136m\033[38;2;185;220;164mβ–€\033[0m\033[38;2;44;51;40mβ–€\033[0m\n \033[38;2;40;46;36mβ–€\033[48;2;84;98;76m\033[38;2;192;222;174mβ–€\033[48;2;197;228;178m\033[38;2;198;229;179mβ–€β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–€\033[48;2;85;99;77m\033[38;2;192;223;174mβ–€\033[0m\033[38;2;40;46;36mβ–€ \033[0m\n   \033[38;2;98;114;89mβ–€\033[48;2;79;91;71m\033[38;2;197;228;178mβ–€\033[48;2;189;219;171m\033[38;2;198;229;179mβ–€β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆ\033[48;2;190;220;172mβ–€\033[48;2;79;91;71m\033[38;2;197;228;178mβ–€\033[0m\033[38;2;99;114;90mβ–€   \033[0m\n     \033[38;2;35;40;31mβ–€\033[38;2;147;171;133mβ–€\033[48;2;62;72;56m\033[38;2;198;229;179mβ–€\033[48;2;154;178;139mβ–€\033[48;2;197;228;178mβ–€β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–€\033[48;2;153;178;139mβ–€\033[48;2;62;71;55mβ–€\033[0m\033[38;2;150;173;135mβ–€\033[38;2;35;40;31mβ–€     \033[0m\n         \033[38;2;35;40;31mβ–€\033[38;2;108;125;98mβ–€\033[38;2;169;195;152mβ–€\033[48;2;25;29;23m\033[38;2;197;228;178mβ–€\033[48;2;68;80;62m\033[38;2;198;229;179mβ–€\033[48;2;106;123;96mβ–€\033[48;2;136;158;123mβ–€\033[48;2;160;185;144mβ–€\033[48;2;177;204;160mβ–€\033[48;2;188;218;170mβ–€\033[48;2;194;225;176mβ–€β–€\033[48;2;188;218;170mβ–€\033[48;2;177;204;160mβ–€\033[48;2;160;185;144mβ–€\033[48;2;136;157;123mβ–€\033[48;2;106;122;95mβ–€\033[48;2;68;79;62mβ–€\033[48;2;25;29;22m\033[38;2;197;228;178mβ–€\033[0m\033[38;2;168;194;152mβ–€\033[38;2;109;126;98mβ–€\033[38;2;39;46;36mβ–€         \033[0m\n"
else
  printf "Sorry, your terminal sucks. Try Konsole or Alacritty.\n"
fi

Only works in a terminal emulator that supports 24-bit colour, like Konsole, Alacritty, Kitty, Terminator (in fact most modern terminals should support this). Also, you need a terminal font that correctly displays block characters: β–„β–€β–ˆ

The code for this script was generated using a little experimental program I wrote, called Fay:

5 Likes

Works fine in Terminator. :stuck_out_tongue_winking_eye:

2 Likes

:rofl:


That is very impressive for a :frog:

1 Like

I just pasted it in to try and it works, and made me laugh thank you

:green_heart:

2 Likes

Nicely done. My xfce4-terminal likes the pond life, and I enjoy the smile!

How does the generator work? Does it only work for ponds? :grin:

1 Like

It takes a picture, downsamples it to fit the terminal size (using ImageMagick API), then loops through all the pixels and prints them on the screen using four characters: ' ', 'β–„', 'β–€', and 'β–ˆ', and a bunch of ANSI escape codes to change the foreground and background colours (it tries to minimise the number of escape sequences).

You can just run it to display an image:

To generate a character sequence to use in a script (the potential for terminal ricing is near endless), you just run it with two additional options and redirect the stdout to a text file:

fay nice_frog.webp --width 49 --escape > nice_frog.txt

And you get this:

nice_frog.txt

\033[48;2;58;103;57m\033[38;2;58;97;58mβ–€\033[48;2;60;108;57m\033[38;2;57;102;58mβ–€\033[48;2;60;108;60m\033[38;2;57;103;60mβ–€\033[48;2;62;108;62m\033[38;2;58;103;60mβ–€\033[48;2;63;109;60m\033[38;2;59;101;58mβ–€\033[48;2;63;109;61m\033[38;2;61;102;58mβ–€\033[48;2;66;113;65m\033[38;2;62;106;62mβ–€\033[48;2;69;118;70m\033[38;2;66;111;68mβ–€\033[48;2;73;120;74m\033[38;2;69;114;71mβ–€\033[48;2;75;121;73m\033[38;2;69;116;69mβ–€\033[48;2;75;122;72mβ–€\033[48;2;74;121;73m\033[38;2;69;115;70mβ–€\033[48;2;74;121;72mβ–€\033[48;2;74;121;71mβ–€\033[48;2;73;120;70m\033[38;2;68;114;68mβ–€\033[38;2;68;114;69mβ–€\033[38;2;69;114;69mβ–€\033[38;2;71;113;69mβ–€\033[48;2;71;120;70m\033[38;2;69;114;69mβ–€\033[48;2;72;120;69m\033[38;2;69;114;68mβ–€\033[48;2;72;119;71m\033[38;2;67;113;68mβ–€\033[48;2;72;118;72m\033[38;2;67;112;69mβ–€\033[48;2;72;118;70m\033[38;2;68;110;65mβ–€\033[48;2;71;117;71m\033[38;2;68;109;66mβ–€\033[48;2;70;116;69m\033[38;2;67;108;68mβ–€\033[48;2;69;115;68m\033[38;2;66;107;66mβ–€\033[48;2;67;114;68m\033[38;2;64;105;63mβ–€\033[48;2;67;113;67m\033[38;2;64;105;65mβ–€\033[38;2;64;105;62mβ–€\033[48;2;67;112;67m\033[38;2;64;105;64mβ–€\033[48;2;68;112;65m\033[38;2;63;103;64mβ–€\033[48;2;68;112;66m\033[38;2;63;105;62mβ–€\033[38;2;61;103;64mβ–€\033[48;2;68;110;65m\033[38;2;62;103;64mβ–€\033[48;2;66;110;63m\033[38;2;60;102;60mβ–€\033[48;2;64;106;62m\033[38;2;60;100;59mβ–€\033[48;2;60;102;59m\033[38;2;56;97;56mβ–€\033[48;2;58;99;57m\033[38;2;53;94;53mβ–€\033[48;2;56;97;55m\033[38;2;52;92;50mβ–€\033[38;2;52;90;49mβ–€\033[48;2;54;95;54m\033[38;2;52;89;51mβ–€\033[48;2;53;95;53m\033[38;2;51;88;51mβ–€\033[48;2;51;92;50m\033[38;2;49;87;48mβ–€\033[48;2;50;91;48m\033[38;2;47;84;47mβ–€\033[48;2;48;88;47m\033[38;2;46;83;43mβ–€\033[48;2;47;87;46m\033[38;2;45;82;45mβ–€\033[48;2;46;87;46m\033[38;2;44;81;43mβ–€\033[48;2;47;86;48mβ–€\033[48;2;43;81;43m\033[38;2;42;75;43mβ–€\033[0m\n\033[48;2;58;104;57m\033[38;2;57;103;57mβ–€\033[48;2;63;109;61m\033[38;2;60;108;58mβ–€\033[48;2;64;110;63m\033[38;2;63;109;62mβ–€\033[48;2;65;111;64m\033[38;2;64;110;61mβ–€\033[48;2;66;112;65m\033[38;2;64;110;63mβ–€\033[48;2;67;114;66m\033[38;2;65;112;65mβ–€\033[48;2;70;116;69m\033[38;2;68;115;67mβ–€\033[48;2;73;120;72m\033[38;2;73;118;72mβ–€\033[48;2;75;122;72m\033[38;2;75;121;73mβ–€\033[48;2;76;123;73m\033[38;2;75;122;73mβ–€\033[48;2;77;123;72m\033[38;2;75;122;74mβ–€\033[48;2;77;123;73m\033[38;2;75;122;73mβ–€\033[48;2;75;122;72m\033[38;2;74;121;70mβ–€\033[48;2;74;121;71m\033[38;2;73;120;70mβ–€β–€β–€\033[48;2;73;121;70mβ–€\033[48;2;72;120;70mβ–€\033[38;2;72;119;70mβ–„\033[48;2;73;119;70mβ–„\033[48;2;72;119;69m\033[38;2;72;118;72mβ–€\033[48;2;72;119;68m\033[38;2;72;118;70mβ–€β–ˆ\033[48;2;71;117;70mβ–„\033[48;2;70;116;68m\033[38;2;70;116;67mβ–€β–€\033[48;2;68;115;67m\033[38;2;68;114;67mβ–€\033[48;2;70;115;67m\033[38;2;69;114;65mβ–€\033[48;2;71;114;67m\033[38;2;68;114;66mβ–€\033[48;2;71;112;66m\033[38;2;67;113;65mβ–€\033[48;2;72;113;67m\033[38;2;69;112;65mβ–€\033[38;2;69;112;66mβ–€\033[38;2;70;111;64mβ–€\033[48;2;70;111;67m\033[38;2;68;110;64mβ–€\033[48;2;69;111;65mβ–€\033[48;2;67;109;63m\033[38;2;67;108;63mβ–€\033[48;2;65;106;61m\033[38;2;64;105;59mβ–€\033[48;2;62;104;58m\033[38;2;61;102;61mβ–€\033[48;2;61;103;57m\033[38;2;59;100;58mβ–€\033[48;2;61;102;59m\033[38;2;58;99;57mβ–€\033[48;2;59;100;59m\033[38;2;57;97;56mβ–€\033[48;2;57;98;56m\033[38;2;55;96;55mβ–€\033[48;2;55;96;53m\033[38;2;53;95;51mβ–€\033[48;2;54;94;51m\033[38;2;53;92;49mβ–€\033[48;2;52;94;51m\033[38;2;52;90;48mβ–€\033[48;2;54;92;49m\033[38;2;50;89;48mβ–€\033[48;2;50;89;49m\033[38;2;49;86;48mβ–€\033[48;2;48;87;49m\033[38;2;49;86;49mβ–€\033[38;2;44;82;44mβ–ˆ\033[0m\n\033[48;2;62;108;62m\033[38;2;60;106;59mβ–€\033[48;2;69;115;66m\033[38;2;66;112;63mβ–€\033[48;2;69;115;68m\033[38;2;66;113;66mβ–€\033[48;2;71;117;70m\033[38;2;68;115;67mβ–€\033[48;2;72;119;71m\033[38;2;69;115;68mβ–€\033[48;2;73;119;72m\033[38;2;70;116;69mβ–€\033[48;2;74;121;72m\033[38;2;72;119;71mβ–€\033[48;2;74;121;70m\033[38;2;74;121;71mβ–€\033[48;2;76;122;72m\033[38;2;75;122;72mβ–€ \033[48;2;76;122;73m\033[38;2;77;123;73mβ–€\033[48;2;75;122;74m\033[38;2;76;122;75mβ–€\033[38;2;74;121;72mβ–ˆ\033[48;2;75;121;73mβ–€\033[48;2;79;118;80m\033[38;2;75;121;74mβ–€\033[48;2;92;119;94m\033[38;2;77;121;74mβ–€\033[48;2;108;136;109m\033[38;2;74;120;73mβ–€\033[48;2;111;142;120m\033[38;2;73;119;72mβ–€\033[48;2;102;136;105m\033[38;2;72;118;72mβ–€\033[48;2;81;119;76m\033[38;2;72;119;69mβ–€\033[48;2;75;117;69m\033[38;2;72;118;68mβ–€\033[48;2;72;118;69m\033[38;2;72;119;69mβ–€\033[38;2;72;118;70mβ–ˆ\033[48;2;72;119;69mβ–„\033[48;2;71;117;70m\033[38;2;71;118;68mβ–€\033[48;2;70;115;68m\033[38;2;70;116;68mβ–€\033[38;2;71;114;68mβ–„β–„\033[48;2;73;113;68m\033[38;2;73;114;67mβ–€\033[38;2;78;112;74mβ–„\033[48;2;105;132;106m\033[38;2;75;113;72mβ–€\033[48;2;127;152;134m\033[38;2;88;123;93mβ–€\033[48;2;131;148;108m\033[38;2;101;134;104mβ–€\033[48;2;97;108;95m\033[38;2;93;119;72mβ–€\033[48;2;103;120;112m\033[38;2;72;110;64mβ–€\033[48;2;74;94;54m\033[38;2;65;108;62mβ–€\033[48;2;65;102;57m\033[38;2;65;106;61mβ–€\033[48;2;63;106;60m\033[38;2;63;105;59mβ–€\033[48;2;62;105;59mβ–€\033[48;2;62;104;58m\033[38;2;61;103;59mβ–€\033[48;2;62;104;57m\033[38;2;61;103;58mβ–€\033[48;2;61;103;57m\033[38;2;59;101;55mβ–€\033[48;2;60;101;59m\033[38;2;57;98;56mβ–€\033[48;2;58;99;58m\033[38;2;56;97;56mβ–€\033[48;2;56;96;55m\033[38;2;55;94;53mβ–€\033[48;2;53;95;53m\033[38;2;53;94;52mβ–€\033[48;2;52;93;51m\033[38;2;51;92;50mβ–€\033[48;2;52;90;50m\033[38;2;50;88;50mβ–€\033[48;2;45;83;45m\033[38;2;44;82;44mβ–€\033[0m\n\033[48;2;64;110;64m\033[38;2;63;109;62mβ–€\033[48;2;71;117;68m\033[38;2;69;115;66mβ–€\033[48;2;71;117;71m\033[38;2;71;117;69mβ–€\033[48;2;74;121;73m\033[38;2;73;120;72mβ–€\033[38;2;75;122;72mβ–„\033[48;2;77;123;72m\033[38;2;75;122;73mβ–€\033[48;2;77;123;73m\033[38;2;75;121;72mβ–€\033[48;2;74;121;71m\033[38;2;73;120;70mβ–€ \033[48;2;74;121;73m\033[38;2;75;122;72mβ–€\033[48;2;74;121;74m\033[38;2;75;122;73mβ–€\033[48;2;75;116;74m\033[38;2;74;120;73mβ–€\033[48;2;56;73;52m\033[38;2;73;116;73mβ–€\033[48;2;47;60;46m\033[38;2;83;114;89mβ–€\033[48;2;114;130;113m\033[38;2;108;133;144mβ–€\033[48;2;108;126;109m\033[38;2;79;97;126mβ–€\033[48;2;88;99;89m\033[38;2;62;76;62mβ–€\033[48;2;132;153;74m\033[38;2;131;151;105mβ–€\033[48;2;171;201;128m\033[38;2;127;148;115mβ–€\033[48;2;155;183;109m\033[38;2;113;135;95mβ–€\033[48;2;130;153;88m\033[38;2;87;122;68mβ–€\033[48;2;80;114;68m\033[38;2;72;117;71mβ–€\033[48;2;71;118;71mβ–„\033[48;2;71;117;70m\033[38;2;72;118;71mβ–€\033[38;2;70;116;68mβ–€\033[48;2;70;115;68mβ–€\033[48;2;71;114;69m\033[38;2;71;115;68mβ–€\033[48;2;73;110;69m\033[38;2;72;114;68mβ–€\033[48;2;76;94;50m\033[38;2;76;105;66mβ–€\033[48;2;109;125;55m\033[38;2;91;108;66mβ–€\033[48;2;140;160;70m\033[38;2;113;133;85mβ–€\033[48;2;174;205;112m\033[38;2;145;174;113mβ–€\033[48;2;180;202;133m\033[38;2;141;163;107mβ–€\033[48;2;148;161;165m\033[38;2;113;122;115mβ–€\033[48;2;162;169;176m\033[38;2;129;139;129mβ–€\033[48;2;153;169;193m\033[38;2;113;126;95mβ–€\033[48;2;57;66;69m\033[38;2;62;72;39mβ–€\033[48;2;26;30;15m\033[38;2;61;87;53mβ–€\033[48;2;59;93;56m\033[38;2;63;104;61mβ–€\033[48;2;63;105;60m\033[38;2;62;104;60mβ–€\033[48;2;63;105;58m\033[38;2;62;104;58mβ–€\033[48;2;63;105;59m\033[38;2;62;103;58mβ–€\033[48;2;62;103;61m\033[38;2;61;102;61mβ–€\033[48;2;60;101;59m\033[38;2;60;101;60mβ–€\033[48;2;56;97;55m\033[38;2;56;97;56mβ–€\033[48;2;55;96;54m\033[38;2;54;95;54mβ–€\033[48;2;54;95;52m\033[38;2;53;94;50mβ–€\033[48;2;52;93;50m\033[38;2;52;91;51mβ–€\033[48;2;46;87;45m\033[38;2;47;85;47mβ–€\033[0m\n\033[48;2;70;116;69m\033[38;2;66;112;66mβ–€\033[48;2;76;122;73m\033[38;2;72;119;70mβ–€\033[48;2;76;122;74m\033[38;2;73;120;72mβ–€\033[48;2;76;123;73m\033[38;2;76;122;72mβ–€\033[48;2;77;123;73m\033[38;2;77;123;72mβ–€\033[38;2;77;123;74mβ–„ \033[38;2;76;122;72mβ–ˆ\033[48;2;76;122;73m\033[38;2;74;121;71mβ–€\033[48;2;75;122;74m\033[38;2;74;121;73mβ–€\033[48;2;80;122;76mβ–€\033[48;2;32;41;26m\033[38;2;55;79;53mβ–€\033[48;2;24;31;42m\033[38;2;17;26;22mβ–€\033[48;2;15;21;23m\033[38;2;14;20;15mβ–€\033[48;2;31;34;26m\033[38;2;86;95;67mβ–€\033[48;2;32;39;28m\033[38;2;90;100;83mβ–€\033[48;2;165;180;156m\033[38;2;138;150;146mβ–€\033[48;2;122;147;73m\033[38;2;138;163;76mβ–€\033[48;2;185;212;103m\033[38;2;174;199;87mβ–€\033[48;2;178;201;111m\033[38;2;175;202;112mβ–€\033[48;2;148;172;95m\033[38;2;158;181;99mβ–€\033[48;2;126;146;84m\033[38;2;115;137;70mβ–€\033[48;2;76;112;68m\033[38;2;74;116;70mβ–€\033[48;2;75;116;75m\033[38;2;73;117;71mβ–€\033[48;2;72;117;75m\033[38;2;73;116;71mβ–€\033[48;2;73;116;77m\033[38;2;71;114;70mβ–€\033[48;2;81;118;81m\033[38;2;70;113;69mβ–€\033[48;2;79;101;79m\033[38;2;71;100;59mβ–€\033[48;2;100;117;91m\033[38;2;79;92;44mβ–€\033[48;2;116;135;93m\033[38;2;117;136;60mβ–€\033[48;2;167;188;104m\033[38;2;151;172;67mβ–€\033[48;2;214;238;150m\033[38;2;175;201;98mβ–€\033[48;2;153;180;151m\033[38;2;177;202;153mβ–€\033[48;2;208;220;210m\033[38;2;171;181;183mβ–€\033[48;2;53;59;54m\033[38;2;77;82;84mβ–€\033[48;2;61;67;49m\033[38;2;93;103;133mβ–€\033[48;2;28;31;21m\033[38;2;79;89;102mβ–€\033[48;2;18;21;11m\033[38;2;16;20;8mβ–€\033[48;2;41;53;29m\033[38;2;41;61;35mβ–€\033[48;2;66;106;63m\033[38;2;65;106;62mβ–€\033[48;2;65;107;59m\033[38;2;63;105;58mβ–€\033[38;2;63;105;59mβ–ˆ\033[48;2;62;104;58m\033[38;2;63;104;59mβ–€\033[38;2;61;103;58mβ–€\033[48;2;62;103;59m\033[38;2;60;101;56mβ–€\033[48;2;59;100;56m\033[38;2;57;98;57mβ–€\033[48;2;57;98;56m\033[38;2;55;96;55mβ–€\033[48;2;54;95;52mβ–„\033[48;2;53;90;52m\033[38;2;50;89;49mβ–€\033[0m\n\033[48;2;72;117;71m\033[38;2;71;117;71mβ–€\033[48;2;75;123;73m\033[38;2;76;123;74mβ–€\033[48;2;77;123;72mβ–€\033[38;2;77;123;73mβ–„\033[38;2;77;123;74mβ–€β–€\033[38;2;77;123;73mβ–„β–ˆ\033[48;2;76;123;73m\033[38;2;77;123;75mβ–€\033[48;2;74;121;74m\033[38;2;75;122;74mβ–€\033[48;2;75;115;70m\033[38;2;78;117;75mβ–€\033[48;2;100;110;81m\033[38;2;45;52;35mβ–€\033[48;2;120;130;95m\033[38;2;21;28;19mβ–€\033[48;2;119;124;69m\033[38;2;45;50;28mβ–€\033[48;2;41;44;23m\033[38;2;48;50;31mβ–€\033[48;2;123;145;87m\033[38;2;56;67;48mβ–€\033[48;2;111;133;83m\033[38;2;157;180;133mβ–€\033[48;2;123;144;58m\033[38;2;102;126;61mβ–€\033[48;2;126;142;53m\033[38;2;169;198;82mβ–€\033[48;2;102;112;51m\033[38;2;124;138;69mβ–€\033[48;2;79;87;47m\033[38;2;128;145;96mβ–€\033[48;2;93;110;72m\033[38;2;135;155;120mβ–€\033[48;2;143;168;141m\033[38;2;137;165;155mβ–€\033[48;2;147;169;157m\033[38;2;132;163;165mβ–€\033[48;2;125;143;150m\033[38;2;135;165;165mβ–€\033[48;2;147;165;161m\033[38;2;139;170;169mβ–€\033[48;2;146;163;154m\033[38;2;147;176;174mβ–€\033[48;2;150;162;106m\033[38;2;144;166;162mβ–€\033[48;2;148;163;74m\033[38;2;124;141;119mβ–€\033[48;2;137;151;99m\033[38;2;137;157;103mβ–€\033[48;2;145;165;76m\033[38;2;157;179;88mβ–€\033[48;2;172;198;94m\033[38;2;182;206;121mβ–€\033[48;2;154;185;123m\033[38;2;157;185;118mβ–€\033[48;2;135;161;138m\033[38;2;181;198;167mβ–€\033[48;2;191;209;169m\033[38;2;141;160;137mβ–€\033[48;2;90;91;58m\033[38;2;56;58;33mβ–€\033[48;2;111;110;75m\033[38;2;134;136;102mβ–€\033[48;2;76;84;56m\033[38;2;110;114;91mβ–€\033[48;2;68;87;56m\033[38;2;80;95;57mβ–€\033[48;2;63;107;62m\033[38;2;65;106;64mβ–€\033[48;2;65;107;60m\033[38;2;66;107;61mβ–€\033[48;2;65;106;61m\033[38;2;65;106;60mβ–€\033[48;2;64;105;59m\033[38;2;63;105;59mβ–€β–ˆβ–ˆ\033[48;2;62;104;58m\033[38;2;61;103;57mβ–€\033[48;2;60;101;60m\033[38;2;58;99;57mβ–€\033[48;2;57;98;57m\033[38;2;56;97;56mβ–€\033[48;2;52;92;49m\033[38;2;52;90;51mβ–€\033[0m\n\033[38;2;72;117;71mβ–ˆ\033[48;2;75;123;73m\033[38;2;76;122;73mβ–€\033[48;2;77;123;73m\033[38;2;76;123;75mβ–€\033[48;2;78;124;74m\033[38;2;77;123;72mβ–€\033[38;2;77;123;73mβ–€β–€\033[48;2;78;124;75mβ–€β–€\033[48;2;77;123;76m\033[38;2;77;123;75mβ–€\033[48;2;75;121;75m\033[38;2;74;120;75mβ–€\033[48;2;74;121;74m\033[38;2;77;120;77mβ–€\033[48;2;76;103;62m\033[38;2;70;88;56mβ–€\033[48;2;66;73;43m\033[38;2;77;86;50mβ–€\033[48;2;67;73;39m\033[38;2;107;113;67mβ–€\033[48;2;81;96;54m\033[38;2;62;71;32mβ–€\033[48;2;92;113;54m\033[38;2;142;166;90mβ–€\033[48;2;135;157;60m\033[38;2;108;131;66mβ–€\033[48;2;167;194;80m\033[38;2;119;140;58mβ–€\033[48;2;167;197;99m\033[38;2;127;147;59mβ–€\033[48;2;147;172;82m\033[38;2;101;117;46mβ–€\033[48;2;127;147;61m\033[38;2;97;111;50mβ–€\033[48;2;104;117;45m\033[38;2;104;118;62mβ–€\033[48;2;114;121;50m\033[38;2;123;136;69mβ–€\033[48;2;123;126;51m\033[38;2;136;147;79mβ–€\033[48;2;111;114;74m\033[38;2;123;132;95mβ–€\033[48;2;127;138;127m\033[38;2;124;140;119mβ–€\033[48;2;161;177;179m\033[38;2;144;161;143mβ–€\033[48;2;179;192;200m\033[38;2;159;172;128mβ–€\033[48;2;151;162;144m\033[38;2;158;167;83mβ–€\033[48;2;147;156;79m\033[38;2;155;167;64mβ–€\033[48;2;141;150;61m\033[38;2;159;174;69mβ–€\033[48;2;174;184;68m\033[38;2;189;209;99mβ–€\033[48;2;180;193;72m\033[38;2;190;220;144mβ–€\033[48;2;183;199;83m\033[38;2;172;207;130mβ–€\033[48;2;170;191;81m\033[38;2;141;176;143mβ–€\033[48;2;121;140;79m\033[38;2;109;131;97mβ–€\033[48;2;65;73;62m\033[38;2;84;87;57mβ–€\033[48;2;51;59;44m\033[38;2;78;83;55mβ–€\033[48;2;69;96;59m\033[38;2;69;97;60mβ–€\033[48;2;66;107;64m\033[38;2;65;107;63mβ–€\033[48;2;66;107;61m\033[38;2;66;107;60mβ–€\033[38;2;65;106;60mβ–€β–€\033[48;2;66;107;62mβ–€\033[48;2;64;105;59m\033[38;2;63;105;59mβ–€β–ˆ\033[48;2;63;104;62m\033[38;2;62;103;62mβ–€\033[48;2;61;102;61m\033[38;2;60;100;59mβ–€\033[48;2;55;94;54m\033[38;2;53;92;52mβ–€\033[0m\n\033[38;2;72;117;71mβ–ˆ\033[48;2;76;124;73m\033[38;2;76;123;73mβ–€\033[48;2;77;123;74m\033[38;2;77;123;72mβ–€\033[38;2;78;124;75mβ–„β–„β–„\033[38;2;78;124;74mβ–„\033[38;2;77;124;74mβ–„\033[38;2;77;123;75mβ–ˆ\033[48;2;76;122;74m\033[38;2;75;122;74mβ–€\033[48;2;81;122;76m\033[38;2;76;121;72mβ–€\033[48;2;74;81;50m\033[38;2;76;100;62mβ–€\033[48;2;52;56;34m\033[38;2;50;59;34mβ–€\033[48;2;107;122;53m\033[38;2;53;63;34mβ–€\033[48;2;137;154;62m\033[38;2;99;119;53mβ–€\033[48;2;128;145;52m\033[38;2;142;164;61mβ–€\033[48;2;149;169;68m\033[38;2;151;174;66mβ–€\033[48;2;148;171;68m\033[38;2;162;188;75mβ–€\033[48;2;131;155;58m\033[38;2;154;180;78mβ–€\033[48;2;119;138;56m\033[38;2;126;146;57mβ–€\033[48;2;119;134;59m\033[38;2;135;155;67mβ–€\033[48;2;105;117;46m\033[38;2;128;145;66mβ–€\033[48;2;101;105;39m\033[38;2;97;103;54mβ–€\033[48;2;110;108;41m\033[38;2;108;107;49mβ–€\033[48;2;106;98;41m\033[38;2;96;93;49mβ–€\033[48;2;99;89;49m\033[38;2;107;109;78mβ–€\033[48;2;134;131;70m\033[38;2;142;147;117mβ–€\033[48;2;166;169;75m\033[38;2;164;175;141mβ–€\033[48;2;170;178;82m\033[38;2;170;182;138mβ–€\033[48;2;164;177;75m\033[38;2;180;199;112mβ–€\033[48;2;147;166;69m\033[38;2;164;181;74mβ–€\033[48;2;118;142;74m\033[38;2;165;191;77mβ–€\033[48;2;147;174;77m\033[38;2;174;196;76mβ–€\033[48;2;147;171;69m\033[38;2;167;187;73mβ–€\033[48;2;139;158;64m\033[38;2;154;175;70mβ–€\033[48;2;147;162;63m\033[38;2;147;165;59mβ–€\033[48;2;150;164;57m\033[38;2;141;154;60mβ–€\033[48;2;156;168;65m\033[38;2;73;79;43mβ–€\033[48;2;129;134;48m\033[38;2;92;100;54mβ–€\033[48;2;89;114;51m\033[38;2;69;107;62mβ–€\033[48;2;66;107;63m\033[38;2;66;108;60mβ–€\033[48;2;65;106;60m\033[38;2;66;107;61mβ–€\033[38;2;64;106;60mβ–„\033[48;2;63;105;59m\033[38;2;65;106;61mβ–€\033[38;2;62;104;58mβ–„β–„\033[48;2;62;103;57m\033[38;2;63;105;61mβ–€\033[38;2;61;103;60mβ–€\033[48;2;57;97;52m\033[38;2;56;96;53mβ–€\033[0m\n\033[48;2;78;120;75m\033[38;2;72;117;71mβ–€\033[48;2;80;127;77m\033[38;2;78;124;74mβ–€\033[48;2;79;126;76m\033[38;2;78;124;75mβ–€\033[48;2;79;125;76mβ–€\033[48;2;78;125;75mβ–€\033[48;2;77;123;74mβ–„\033[48;2;77;123;73mβ–„β–„\033[48;2;76;122;75m\033[38;2;77;123;75mβ–€\033[48;2;77;111;68m\033[38;2;77;121;74mβ–€\033[48;2;97;105;52m\033[38;2;82;104;62mβ–€\033[48;2;122;130;60m\033[38;2;76;80;40mβ–€\033[48;2;117;127;49m\033[38;2;112;122;59mβ–€\033[48;2;115;125;45m\033[38;2;126;139;61mβ–€\033[48;2;111;122;40m\033[38;2;117;129;51mβ–€\033[48;2;116;130;49m\033[38;2;121;136;50mβ–€\033[48;2;108;121;44m\033[38;2;118;138;52mβ–€\033[48;2;92;101;38m\033[38;2;102;121;42mβ–€\033[48;2;84;89;37m\033[38;2;95;107;43mβ–€\033[48;2;96;100;37m\033[38;2;95;104;41mβ–€\033[48;2;91;92;35m\033[38;2;80;85;32mβ–€\033[48;2;92;92;27m\033[38;2;88;88;35mβ–€\033[48;2;96;89;24m\033[38;2;106;101;37mβ–€\033[48;2;110;97;25m\033[38;2;118;113;31mβ–€\033[48;2;119;103;29m\033[38;2;122;112;39mβ–€\033[48;2;123;107;34m\033[38;2;112;98;40mβ–€\033[48;2;120;105;36m\033[38;2;127;117;51mβ–€\033[48;2;117;104;37m\033[38;2;155;151;59mβ–€\033[48;2;142;135;45m\033[38;2;161;162;56mβ–€\033[48;2;134;132;41m\033[38;2;136;141;50mβ–€\033[48;2;115;117;48m\033[38;2;146;159;62mβ–€\033[48;2;112;114;50m\033[38;2;130;149;65mβ–€\033[48;2;135;144;77m\033[38;2;100;117;70mβ–€\033[48;2;116;122;78m\033[38;2;129;152;80mβ–€\033[48;2;110;114;61m\033[38;2;140;161;73mβ–€\033[48;2;134;148;60m\033[38;2;156;178;58mβ–€\033[48;2;162;179;70m\033[38;2;173;196;69mβ–€\033[48;2;143;155;60m\033[38;2;166;187;63mβ–€\033[48;2;125;133;47m\033[38;2;175;193;65mβ–€\033[48;2;170;187;66m\033[38;2;134;153;53mβ–€\033[48;2;99;119;58m\033[38;2;69;100;60mβ–€\033[48;2;67;101;58m\033[38;2;65;106;60mβ–€\033[38;2;63;104;59mβ–ˆ\033[48;2;62;105;59mβ–€\033[48;2;63;104;60m\033[38;2;62;104;58mβ–€\033[48;2;63;104;61m\033[38;2;62;103;58mβ–€\033[48;2;63;104;59mβ–€\033[48;2;63;105;58mβ–€\033[48;2;59;99;55m\033[38;2;58;98;55mβ–€\033[0m\n\033[48;2;106;149;99m\033[38;2;87;130;84mβ–€\033[48;2;110;158;107m\033[38;2;91;138;88mβ–€\033[48;2;108;154;106m\033[38;2;89;135;87mβ–€\033[48;2;101;148;100m\033[38;2;85;131;84mβ–€\033[48;2;100;147;96m\033[38;2;83;130;81mβ–€\033[48;2;99;147;91m\033[38;2;84;131;80mβ–€\033[48;2;100;148;91m\033[38;2;88;135;82mβ–€\033[48;2;98;146;88m\033[38;2;89;136;85mβ–€\033[48;2;84;118;70m\033[38;2;87;132;86mβ–€\033[48;2;113;124;55m\033[38;2;89;109;55mβ–€\033[48;2;115;126;48m\033[38;2;125;133;59mβ–€\033[48;2;85;83;36m\033[38;2;115;116;52mβ–€\033[48;2;98;99;37m\033[38;2;109;119;44mβ–€\033[48;2;77;78;28m\033[38;2;116;128;38mβ–€\033[48;2;72;71;26m\033[38;2;119;130;44mβ–€\033[48;2;68;62;27m\033[38;2;104;111;43mβ–€\033[48;2;79;77;31m\033[38;2;83;86;36mβ–€\033[48;2;99;99;45m\033[38;2;64;62;30mβ–€\033[48;2;107;112;68m\033[38;2;63;62;32mβ–€\033[48;2;112;119;69m\033[38;2;80;77;33mβ–€\033[48;2;122;130;67m\033[38;2;75;68;29mβ–€\033[48;2;122;126;51m\033[38;2;79;73;26mβ–€\033[48;2;121;121;41m\033[38;2;87;76;22mβ–€\033[48;2;122;117;30m\033[38;2;88;73;19mβ–€\033[48;2;118;113;24m\033[38;2;100;84;18mβ–€\033[48;2;116;113;31m\033[38;2;112;98;25mβ–€\033[48;2;116;117;47m\033[38;2;106;90;27mβ–€\033[48;2;121;126;55m\033[38;2;96;76;28mβ–€\033[48;2;131;134;42m\033[38;2;106;91;25mβ–€\033[48;2;145;145;37m\033[38;2;115;107;31mβ–€\033[48;2;140;142;61m\033[38;2;117;117;57mβ–€\033[48;2;142;150;89m\033[38;2;109;103;68mβ–€\033[48;2;180;186;78m\033[38;2;138;137;74mβ–€\033[48;2;194;207;104m\033[38;2;141;138;75mβ–€\033[48;2;195;208;126m\033[38;2;113;106;61mβ–€\033[48;2;215;225;115m\033[38;2;96;86;44mβ–€\033[48;2;162;168;105m\033[38;2;90;86;44mβ–€\033[48;2;129;129;70m\033[38;2;84;78;43mβ–€\033[48;2;92;87;39m\033[38;2;100;93;48mβ–€\033[48;2;106;106;37m\033[38;2;151;161;52mβ–€\033[48;2;135;143;47m\033[38;2;150;171;60mβ–€\033[48;2;149;165;68m\033[38;2;79;106;47mβ–€\033[48;2;80;111;55m\033[38;2;64;104;60mβ–€\033[48;2;63;104;59m\033[38;2;62;104;60mβ–€\033[48;2;63;105;57m\033[38;2;63;104;60mβ–€\033[48;2;62;104;57m\033[38;2;63;105;59mβ–€\033[48;2;62;104;58m\033[38;2;63;105;58mβ–€\033[38;2;63;105;59mβ–€\033[48;2;58;101;56m\033[38;2;59;100;56mβ–€\033[0m\n\033[48;2;144;182;133m\033[38;2;127;168;118mβ–€\033[48;2;150;193;144m\033[38;2;132;178;128mβ–€\033[48;2;148;189;146m\033[38;2;129;175;126mβ–€\033[48;2;140;185;142m\033[38;2;123;169;121mβ–€\033[48;2;132;179;132m\033[38;2;117;164;114mβ–€\033[48;2;124;171;121m\033[38;2;113;160;107mβ–€\033[48;2;116;164;106m\033[38;2;107;156;96mβ–€\033[48;2;107;132;70m\033[38;2;100;145;87mβ–€\033[48;2;133;142;56m\033[38;2;90;104;53mβ–€\033[48;2;108;111;44m\033[38;2;127;139;53mβ–€\033[48;2;71;66;28m\033[38;2;110;117;37mβ–€\033[48;2;67;64;26m\033[38;2;73;68;36mβ–€\033[48;2;119;120;53m\033[38;2;53;48;22mβ–€\033[48;2;153;158;66m\033[38;2;71;65;31mβ–€\033[48;2;134;138;52m\033[38;2;98;97;40mβ–€\033[48;2;91;94;44m\033[38;2;122;124;62mβ–€\033[48;2;108;110;53m\033[38;2;145;151;61mβ–€\033[48;2;113;116;38m\033[38;2;142;150;67mβ–€\033[48;2;99;97;23m\033[38;2;130;141;67mβ–€\033[48;2;90;88;28m\033[38;2;107;112;54mβ–€\033[48;2;93;91;24m\033[38;2;104;105;40mβ–€\033[48;2;99;98;30m\033[38;2;103;107;41mβ–€\033[48;2;102;103;43m\033[38;2;106;113;48mβ–€\033[48;2;99;98;42m\033[38;2;108;109;38mβ–€\033[48;2;96;94;30m\033[38;2;106;104;25mβ–€\033[48;2;104;98;20m\033[38;2;111;107;22mβ–€\033[48;2;106;101;21m\033[38;2;112;110;27mβ–€\033[48;2;99;98;25m\033[38;2;107;111;46mβ–€\033[48;2;97;98;31m\033[38;2;106;109;46mβ–€\033[48;2;100;99;35m\033[38;2;110;109;35mβ–€\033[48;2;101;98;32m\033[38;2;105;104;38mβ–€\033[48;2;102;95;20m\033[38;2;107;102;30mβ–€\033[48;2;106;91;18m\033[38;2;125;114;26mβ–€\033[48;2;111;93;18m\033[38;2;139;134;51mβ–€\033[48;2;116;100;25m\033[38;2;140;138;73mβ–€\033[48;2;121;112;47m\033[38;2;164;168;75mβ–€\033[48;2;138;137;85m\033[38;2;158;167;108mβ–€\033[48;2;189;190;87m\033[38;2;213;222;121mβ–€\033[48;2;201;211;104m\033[38;2;184;188;96mβ–€\033[48;2;217;222;98m\033[38;2;113;109;44mβ–€\033[48;2;109;110;53m\033[38;2;82;82;38mβ–€\033[48;2;71;65;36m\033[38;2;116;117;45mβ–€\033[48;2;125;126;50m\033[38;2;140;157;69mβ–€\033[48;2;111;138;60m\033[38;2;69;108;58mβ–€\033[48;2;63;105;59m\033[38;2;63;104;59mβ–€\033[48;2;64;106;60m\033[38;2;62;104;58mβ–€\033[48;2;65;106;60m\033[38;2;64;105;59mβ–€\033[48;2;64;106;60m\033[38;2;63;105;59mβ–€\033[48;2;60;100;56m\033[38;2;59;100;56mβ–€\033[0m\n\033[48;2;152;190;144m\033[38;2;150;188;139mβ–€\033[48;2;159;202;155m\033[38;2;158;200;153mβ–€\033[48;2;160;201;159m\033[38;2;156;197;156mβ–€\033[48;2;156;195;155m\033[38;2;150;193;153mβ–€\033[48;2;145;188;146m\033[38;2;140;185;141mβ–€\033[48;2;135;176;132m\033[38;2;129;177;129mβ–€\033[48;2;125;145;83m\033[38;2;122;162;107mβ–€\033[48;2;89;88;31m\033[38;2;129;139;57mβ–€\033[48;2;54;46;18m\033[38;2;97;96;40mβ–€\033[48;2;105;99;47m\033[38;2;53;47;22mβ–€\033[48;2;164;165;66m\033[38;2;84;76;38mβ–€\033[48;2;145;146;46m\033[38;2;163;167;69mβ–€\033[48;2;103;101;40m\033[38;2;157;163;60mβ–€\033[48;2;99;94;30m\033[38;2;141;144;53mβ–€\033[48;2;104;91;26m\033[38;2;108;102;36mβ–€\033[48;2;99;87;22m\033[38;2;102;97;34mβ–€\033[48;2;96;90;22m\033[38;2;98;96;34mβ–€\033[48;2;99;94;20m\033[38;2;92;89;31mβ–€\033[48;2;104;97;18m\033[38;2;93;87;22mβ–€\033[48;2;111;106;28m\033[38;2;98;94;25mβ–€\033[48;2;112;113;48m\033[38;2;102;104;39mβ–€\033[48;2;109;109;46m\033[38;2;103;104;43mβ–€\033[48;2;108;102;31m\033[38;2;102;101;40mβ–€\033[48;2;103;98;31m\033[38;2;99;97;39mβ–€\033[48;2;99;96;29m\033[38;2;96;95;31mβ–€\033[48;2;98;93;24m\033[38;2;98;93;19mβ–€\033[48;2;102;92;20m\033[38;2;101;94;18mβ–€\033[48;2;105;92;17m\033[38;2;101;93;20mβ–€\033[48;2;105;92;16m\033[38;2;101;93;22mβ–€\033[48;2;106;94;17m\033[38;2;104;95;23mβ–€\033[48;2;110;97;20m\033[38;2;107;97;22mβ–€\033[48;2;108;94;18m\033[38;2;106;95;16mβ–€\033[48;2;106;90;15m\033[38;2;105;89;18mβ–€\033[48;2;104;89;16m\033[38;2;105;87;17mβ–€\033[48;2;103;86;15m\033[38;2;106;87;16mβ–€\033[48;2;113;97;21mβ–„\033[48;2;112;92;17m\033[38;2;130;110;30mβ–€\033[48;2;123;105;16m\033[38;2;151;141;49mβ–€\033[48;2;136;123;35m\033[38;2;163;163;90mβ–€\033[48;2;149;144;56m\033[38;2;208;212;84mβ–€\033[48;2;142;143;84m\033[38;2;176;190;98mβ–€\033[48;2;150;156;76m\033[38;2;87;85;40mβ–€\033[48;2;64;55;28m\033[38;2;84;74;28mβ–€\033[48;2;83;75;32m\033[38;2;115;123;55mβ–€\033[48;2;85;108;57m\033[38;2;68;104;60mβ–€\033[48;2;65;107;60m\033[38;2;66;107;61mβ–€\033[48;2;65;106;60mβ–„β–„\033[48;2;61;100;57m\033[38;2;61;101;57mβ–€\033[0m\n\033[48;2;138;174;136m\033[38;2;145;181;140mβ–€\033[48;2;149;184;143m\033[38;2;156;195;149mβ–€\033[48;2;149;184;144m\033[38;2;157;194;153mβ–€\033[48;2;148;185;146m\033[38;2;153;191;151mβ–€\033[48;2;146;180;136m\033[38;2;147;187;146mβ–€\033[48;2;116;126;60m\033[38;2;143;170;118mβ–€\033[48;2;53;47;23m\033[38;2;96;96;40mβ–€\033[48;2;90;86;37m\033[38;2;51;43;17mβ–€\033[48;2;132;130;55m\033[38;2;102;98;43mβ–€\033[48;2;119;117;34m\033[38;2;150;153;63mβ–€\033[48;2;118;110;24m\033[38;2;141;142;37mβ–€\033[48;2;105;95;19m\033[38;2;106;103;24mβ–€\033[48;2;101;90;19m\033[38;2;88;83;22mβ–€\033[48;2;99;87;17m\033[38;2;96;88;19mβ–€\033[48;2;96;84;13m\033[38;2;97;82;16mβ–€\033[48;2;103;90;16m\033[38;2;99;86;17mβ–€\033[48;2;106;93;16m\033[38;2;104;91;19mβ–€\033[48;2;114;101;17m\033[38;2;110;97;16mβ–€\033[48;2;114;102;13m\033[38;2;114;103;14mβ–€\033[48;2;114;104;17m\033[38;2;115;109;22mβ–€\033[48;2;118;109;22m\033[38;2;115;115;33mβ–€\033[48;2;118;111;30m\033[38;2;112;110;41mβ–€\033[48;2;115;111;30m\033[38;2;112;106;31mβ–€\033[48;2;117;105;18m\033[38;2;112;102;17mβ–€\033[48;2;115;99;18m\033[38;2;111;99;20mβ–€\033[48;2;112;98;16m\033[38;2;107;95;19mβ–€\033[48;2;115;102;15m\033[38;2;109;96;17mβ–€\033[48;2;115;104;17m\033[38;2;109;98;14mβ–€\033[48;2;113;102;17m\033[38;2;109;98;15mβ–€\033[48;2;114;98;16m\033[38;2;109;96;16mβ–€\033[48;2;115;99;16m\033[38;2;110;96;16mβ–€\033[48;2;113;97;14m\033[38;2;109;95;14mβ–€\033[48;2;114;99;13m\033[38;2;110;95;15mβ–€\033[48;2;115;99;16m\033[38;2;107;92;13mβ–€\033[48;2;112;98;15m\033[38;2;105;90;16mβ–€\033[48;2;113;97;17m\033[38;2;105;88;16mβ–€\033[48;2;109;92;17m\033[38;2;108;87;17mβ–€\033[48;2;111;93;19m\033[38;2;114;95;18mβ–€\033[48;2;108;90;11m\033[38;2;122;104;20mβ–€\033[48;2;113;96;15m\033[38;2;128;114;25mβ–€\033[48;2;131;114;26m\033[38;2;141;133;46mβ–€\033[48;2;156;151;47m\033[38;2;164;169;63mβ–€\033[48;2;125;125;44m\033[38;2;87;84;41mβ–€\033[48;2;58;51;30m\033[38;2;66;53;27mβ–€\033[48;2;100;97;46m\033[38;2;118;124;52mβ–€\033[48;2;69;108;61m\033[38;2;67;108;57mβ–€\033[48;2;66;107;61m\033[38;2;66;107;60mβ–€β–€\033[38;2;61;100;56mβ–ˆ\033[0m\n\033[48;2;146;179;145m\033[38;2;141;172;137mβ–€\033[48;2;153;181;146m\033[38;2;154;184;146mβ–€\033[48;2;147;168;136m\033[38;2;155;183;147mβ–€\033[48;2;144;163;135m\033[38;2;144;172;138mβ–€\033[48;2;127;131;96m\033[38;2;133;151;97mβ–€\033[48;2;69;64;34m\033[38;2;74;71;28mβ–€\033[48;2;71;67;28m\033[38;2;75;70;36mβ–€\033[48;2;99;96;27m\033[38;2;104;103;39mβ–€\033[48;2;109;104;26m\033[38;2;102;99;29mβ–€\033[48;2;110;102;22m\033[38;2;102;95;24mβ–€\033[48;2;105;93;16m\033[38;2;112;100;21mβ–€\033[48;2;102;89;16m\033[38;2;103;90;15mβ–€\033[48;2;105;95;16m\033[38;2;101;89;15mβ–€\033[48;2;108;95;15m\033[38;2;100;88;17mβ–€\033[48;2;111;99;15m\033[38;2;102;90;13mβ–€\033[48;2;114;101;14m\033[38;2;109;97;16mβ–€\033[48;2;119;106;14m\033[38;2;114;100;17mβ–€\033[48;2;121;107;15m\033[38;2;117;102;14mβ–€\033[48;2;119;106;14m\033[38;2;116;102;14mβ–€\033[48;2;114;102;11m\033[38;2;113;101;13mβ–€\033[48;2;120;109;19m\033[38;2;117;107;16mβ–€\033[48;2;121;113;19m\033[38;2;118;112;23mβ–€\033[48;2;122;116;28m\033[38;2;119;115;33mβ–€\033[48;2;122;117;32m\033[38;2;121;112;25mβ–€\033[48;2;122;117;40m\033[38;2;118;107;23mβ–€\033[48;2;116;112;33m\033[38;2;115;104;19mβ–€\033[48;2;118;113;31m\033[38;2;117;107;20mβ–€\033[48;2;120;114;33m\033[38;2;119;110;24mβ–€\033[48;2;119;109;20m\033[38;2;117;105;20mβ–€\033[48;2;120;107;16m\033[38;2;115;100;15mβ–€\033[48;2;121;106;19m\033[38;2;117;101;15mβ–€\033[48;2;120;106;19m\033[38;2;118;102;16mβ–€\033[48;2;117;103;16m\033[38;2;116;101;15mβ–€\033[48;2;120;105;16m\033[38;2;119;103;17mβ–€\033[38;2;123;108;16mβ–„\033[48;2;127;112;20m\033[38;2;119;104;16mβ–€\033[48;2;122;108;20m\033[38;2;116;99;19mβ–€\033[48;2;121;108;16m\033[38;2;109;92;17mβ–€\033[48;2;125;109;18m\033[38;2;110;93;15mβ–€\033[48;2;118;102;14m\033[38;2;106;89;17mβ–€\033[48;2;120;105;17m\033[38;2;111;96;19mβ–€\033[48;2;122;105;23m\033[38;2;131;120;28mβ–€\033[48;2;110;100;36m\033[38;2;124;120;42mβ–€\033[48;2;76;69;40m\033[38;2;64;60;40mβ–€\033[48;2;107;111;64m\033[38;2;86;87;50mβ–€\033[48;2;100;122;97m\033[38;2;78;112;75mβ–€\033[48;2;90;119;84m\033[38;2;71;111;66mβ–€\033[48;2;78;114;70m\033[38;2;67;108;63mβ–€\033[48;2;62;101;58m\033[38;2;61;101;57mβ–€\033[0m\n\033[48;2;140;157;122m\033[38;2;145;177;143mβ–€\033[48;2;143;155;122m\033[38;2;145;171;141mβ–€\033[48;2;145;153;122m\033[38;2;140;155;129mβ–€\033[48;2;151;159;128m\033[38;2;145;157;128mβ–€\033[48;2;153;162;132m\033[38;2;141;151;120mβ–€\033[48;2;80;84;52m\033[38;2;72;74;43mβ–€\033[48;2;77;75;26m\033[38;2;73;71;29mβ–€\033[48;2;96;89;19m\033[38;2;103;97;20mβ–€\033[48;2;99;87;15m\033[38;2;103;91;18mβ–€\033[48;2;103;90;16m\033[38;2;103;90;17mβ–€\033[48;2;109;95;15m\033[38;2;105;93;17mβ–€\033[48;2;116;100;17m\033[38;2;104;93;16mβ–€\033[48;2;114;100;14m\033[38;2;114;102;17mβ–€\033[48;2;123;107;18m\033[38;2;118;102;14mβ–€\033[48;2;121;106;14m\033[38;2;121;107;14mβ–€\033[48;2;122;108;15m\033[38;2;121;107;15mβ–€\033[48;2;123;109;17m\033[38;2;122;109;14mβ–€\033[48;2;123;111;15m\033[38;2;122;111;15mβ–€\033[48;2;127;117;14m\033[38;2;122;112;14mβ–€\033[48;2;126;117;21m\033[38;2;122;113;17mβ–€\033[48;2;123;118;23m\033[38;2;121;115;25mβ–€\033[48;2;123;115;21m\033[38;2;125;116;23mβ–€\033[48;2;121;114;29m\033[38;2;124;114;26mβ–€\033[48;2;117;116;39m\033[38;2;120;117;36mβ–€\033[48;2;118;117;45m\033[38;2;118;119;49mβ–€\033[48;2;120;116;34m\033[38;2;117;117;43mβ–€\033[48;2;121;115;27m\033[38;2;119;115;31mβ–€\033[48;2;121;117;32m\033[38;2;120;116;32mβ–€\033[48;2;126;118;28m\033[38;2;123;113;22mβ–€\033[48;2;127;123;32m\033[38;2;127;115;23mβ–€\033[48;2;121;125;56m\033[38;2;124;119;37mβ–€\033[48;2;128;122;29m\033[38;2;124;113;24mβ–€\033[48;2;125;114;14m\033[38;2;123;110;18mβ–€\033[48;2;127;116;19m\033[38;2;122;107;15mβ–€\033[48;2;131;120;21m\033[38;2;129;114;19mβ–€\033[48;2;125;115;15m\033[38;2;127;116;16mβ–€\033[48;2;134;119;19m\033[38;2;130;120;21mβ–€\033[48;2;142;129;17m\033[38;2;136;123;20mβ–€\033[48;2;135;117;12m\033[38;2;139;123;18mβ–€\033[48;2;157;140;21m\033[38;2;150;134;19mβ–€\033[48;2;150;135;22m\033[38;2;140;120;23mβ–€\033[48;2;144;129;35m\033[38;2;126;112;24mβ–€\033[48;2;121;110;36m\033[38;2;106;95;31mβ–€\033[48;2;83;76;24m\033[38;2;102;94;38mβ–€\033[48;2;121;119;62m\033[38;2;123;125;67mβ–€\033[48;2;136;149;138m\033[38;2;115;131;119mβ–€\033[48;2;141;154;137m\033[38;2;112;129;108mβ–€\033[48;2;130;146;121m\033[38;2;100;124;92mβ–€\033[48;2;100;119;92m\033[38;2;72;101;68mβ–€\033[0m\n\033[48;2;124;125;75m\033[38;2;134;139;95mβ–€\033[48;2;138;138;86m\033[38;2;147;150;105mβ–€\033[48;2;129;129;91m\033[38;2;142;144;106mβ–€\033[48;2;117;122;100m\033[38;2;139;143;117mβ–€\033[48;2;124;133;115m\033[38;2;148;156;131mβ–€\033[48;2;142;149;124m\033[38;2;116;120;90mβ–€\033[48;2;102;103;46m\033[38;2;87;85;30mβ–€\033[48;2;104;97;25m\033[38;2;96;89;18mβ–€\033[48;2;106;95;18m\033[38;2;104;94;17mβ–€\033[48;2;114;101;19m\033[38;2;110;97;17mβ–€\033[48;2;117;101;15m\033[38;2;120;106;19mβ–€\033[48;2;120;106;18m\033[38;2;110;94;11mβ–€\033[48;2;116;104;19m\033[38;2;115;99;15mβ–€\033[48;2;113;104;27m\033[38;2;117;103;16mβ–€\033[48;2;110;107;35m\033[38;2;116;105;15mβ–€\033[48;2;111;107;34m\033[38;2;116;106;15mβ–€\033[48;2;112;109;30m\033[38;2;118;110;18mβ–€\033[48;2;116;115;41m\033[38;2;123;116;22mβ–€\033[48;2;114;110;30m\033[38;2;124;116;18mβ–€\033[48;2;118;110;20m\033[38;2;126;117;21mβ–€\033[48;2;117;109;27m\033[38;2;123;114;20mβ–€\033[48;2;119;110;22m\033[38;2;121;112;21mβ–€\033[48;2;116;115;40m\033[38;2;120;115;38mβ–€\033[48;2;115;116;48m\033[38;2;116;116;44mβ–€\033[48;2;117;113;43m\033[38;2;118;115;40mβ–€\033[48;2;120;112;27m\033[38;2;122;113;23mβ–€\033[48;2;122;113;31m\033[38;2;125;116;24mβ–€\033[48;2;116;113;49m\033[38;2;120;116;41mβ–€\033[48;2;113;114;53m\033[38;2;122;119;49mβ–€\033[48;2;113;115;54m\033[38;2;119;122;51mβ–€\033[48;2;116;118;59m\033[38;2;120;125;68mβ–€\033[48;2;117;116;54m\033[38;2;125;123;42mβ–€\033[48;2;119;115;42m\033[38;2;124;117;22mβ–€\033[48;2;118;110;22m\033[38;2;125;118;26mβ–€\033[48;2;124;113;19m\033[38;2;129;121;24mβ–€\033[48;2;132;118;17m\033[38;2;129;116;16mβ–€\033[48;2;140;125;18m\033[38;2;130;114;12mβ–€\033[48;2;137;119;13m\033[38;2;133;118;10mβ–€\033[48;2;141;123;13m\033[38;2;142;125;15mβ–€\033[48;2;151;133;19m\033[38;2;145;128;18mβ–€\033[48;2;168;153;27m\033[38;2;151;135;26mβ–€\033[48;2;166;158;31m\033[38;2;150;138;35mβ–€\033[48;2;156;154;38m\033[38;2;132;127;36mβ–€\033[48;2;114;112;30m\033[38;2;91;88;30mβ–€\033[48;2;152;157;76m\033[38;2;143;143;75mβ–€\033[48;2;147;159;138m\033[38;2;142;154;140mβ–€\033[48;2;149;161;144m\033[38;2;143;155;141mβ–€\033[48;2;152;165;151m\033[38;2;147;159;138mβ–€\033[48;2;137;149;133m\033[38;2;132;144;118mβ–€\033[0m\n\033[48;2;145;155;122m\033[38;2;128;132;87mβ–€\033[48;2;150;161;125m\033[38;2;154;162;124mβ–€\033[48;2;147;162;104m\033[38;2;158;168;141mβ–€\033[48;2;130;143;93m\033[38;2;157;174;149mβ–€\033[48;2;122;132;83m\033[38;2;158;177;154mβ–€\033[48;2;104;115;75m\033[38;2;146;162;140mβ–€\033[48;2;95;98;50m\033[38;2;106;112;63mβ–€\033[48;2;105;103;21m\033[38;2;108;103;26mβ–€\033[48;2;112;103;18m\033[38;2;110;99;18mβ–€\033[48;2;118;110;17m\033[38;2;115;102;17mβ–€\033[48;2;124;115;18m\033[38;2;120;107;16mβ–€\033[48;2;121;112;14m\033[38;2;116;104;14mβ–€\033[48;2;117;102;14m\033[38;2;120;111;15mβ–€\033[48;2;119;105;18m\033[38;2;118;111;21mβ–€\033[48;2;113;104;18m\033[38;2;114;112;41mβ–€\033[48;2;112;104;22m\033[38;2;111;110;44mβ–€\033[48;2;110;102;17m\033[38;2;109;106;36mβ–€\033[48;2;113;106;17m\033[38;2;112;110;33mβ–€\033[48;2;112;106;25m\033[38;2;108;105;29mβ–€\033[48;2;110;106;50m\033[38;2;106;104;30mβ–€\033[48;2;109;109;51m\033[38;2;110;109;42mβ–€\033[48;2;114;115;50m\033[38;2;118;113;35mβ–€\033[48;2;110;111;45m\033[38;2;114;115;44mβ–€\033[48;2;104;104;43m\033[38;2;112;111;50mβ–€\033[48;2;103;104;42m\033[38;2;113;110;47mβ–€\033[48;2;108;105;46m\033[38;2;113;111;41mβ–€\033[48;2;106;106;45m\033[38;2;113;111;44mβ–€\033[48;2;101;102;43m\033[38;2;108;108;47mβ–€\033[48;2;98;99;43m\033[38;2;107;107;48mβ–€\033[48;2;100;103;46m\033[38;2;107;106;48mβ–€\033[48;2;110;113;52m\033[38;2;110;110;41mβ–€\033[48;2;114;113;44m\033[38;2;112;113;41mβ–€\033[48;2;118;113;27m\033[38;2;113;114;44mβ–€\033[48;2;116;102;19m\033[38;2;114;104;21mβ–€\033[48;2;113;98;13m\033[38;2;118;103;14mβ–€\033[48;2;123;108;14m\033[38;2;129;114;18mβ–€\033[48;2;133;119;16m\033[38;2;134;117;13mβ–€\033[48;2;134;122;20m\033[38;2;137;120;16mβ–€\033[48;2;143;131;16m\033[38;2;148;133;18mβ–€\033[48;2;158;144;21m\033[38;2;162;148;24mβ–€\033[48;2;174;161;26m\033[38;2;168;155;24mβ–€\033[48;2;175;164;33m\033[38;2;176;166;31mβ–€\033[48;2;153;152;45m\033[38;2;154;154;38mβ–€\033[48;2;132;137;65m\033[38;2;103;101;31mβ–€\033[48;2;159;170;88m\033[38;2;145;149;84mβ–€\033[48;2;159;175;114m\033[38;2;153;164;130mβ–€\033[48;2;128;139;98m\033[38;2;140;155;129mβ–€\033[48;2;130;139;106m\033[38;2;135;151;136mβ–€\033[48;2;137;149;119m\033[38;2;133;148;141mβ–€\033[0m\n\033[38;2;166;174;149mβ–€\033[38;2;162;168;134mβ–€\033[38;2;146;150;113mβ–€\033[38;2;138;140;113mβ–€\033[38;2;133;135;109mβ–€\033[38;2;120;122;94mβ–€\033[38;2;109;109;81mβ–€\033[38;2;139;137;95mβ–€\033[38;2;131;127;60mβ–€\033[38;2;115;110;22mβ–€\033[38;2;111;105;21mβ–€\033[38;2;112;105;20mβ–€\033[38;2;111;101;20mβ–€\033[38;2;108;97;20mβ–€\033[38;2;104;92;19mβ–€\033[38;2;102;89;20mβ–€\033[38;2;101;92;22mβ–€\033[38;2;104;99;31mβ–€\033[38;2;110;103;33mβ–€\033[38;2;107;102;38mβ–€\033[38;2;102;104;45mβ–€\033[38;2;102;102;47mβ–€\033[38;2;97;97;41mβ–€\033[38;2;95;95;39mβ–€\033[38;2;97;97;41mβ–€\033[38;2;101;97;42mβ–€\033[38;2;98;97;42mβ–€\033[38;2;93;92;41mβ–€\033[38;2;93;93;40mβ–€\033[38;2;99;102;45mβ–€\033[38;2;107;110;51mβ–€\033[38;2;108;105;34mβ–€\033[38;2;110;103;22mβ–€\033[38;2;102;90;18mβ–€\033[38;2;101;89;22mβ–€\033[38;2;106;94;21mβ–€\033[38;2;118;107;26mβ–€\033[38;2;124;113;31mβ–€\033[38;2;134;123;29mβ–€\033[38;2;148;136;34mβ–€\033[38;2;158;142;36mβ–€\033[38;2;143;134;35mβ–€\033[38;2;111;110;43mβ–€\033[38;2;99;102;50mβ–€\033[38;2;131;139;72mβ–€\033[38;2;174;186;115mβ–€\033[38;2;169;180;118mβ–€\033[38;2;162;174;133mβ–€\033[38;2;146;156;120mβ–€\033[0m\n

which you can easily convert into a shell script by manually adding a printf command in front of it.

I’m pretty sure that it works for images other than those of frogs, as well, but I only have pictures of frogs on my drive, so I have not tested it on anything else.

1 Like