[
  {
    "path": ".gitignore",
    "content": "mpd/.config/mpd/mpd.log\nmpd/.config/mpd/mpdstate\nmpd/.config/mpd/mpd.pid\nmpd/.config/mpd/mpd.db\n\nnvim/.config/nvim/.netrwhist\nnvim/.config/nvim/tmp/*\nnvim/.config/nvim/plugged/*\n\nvifminfo.json\ntoken.txt\nbattery-notify.sh\npacker_compiled.lua\n"
  },
  {
    "path": "X11/.Xresources",
    "content": "Xft.dpi: 120\n\n! These might also be useful depending on your monitor and personal preference:\nXft.autohint: 0\nXft.lcdfilter:  lcddefault\nXft.hintstyle:  hintfull\nXft.hinting: 1\nXft.antialias: 1\nXft.rgba: rgb\n"
  },
  {
    "path": "X11/.xinitrc",
    "content": "#!/bin/sh\n#\n# ~/.xinitrc\n#\n# Executed by startx (run your window manager from here)\n# \n# NOTICE: the exec commands MUST be the last command in this file.\n#         anything after it WON'T get executed!\n#\n\n# Dont clutter the home directory\nUSERXSESSION=\"$XDG_CACHE_HOME/X11/xsession\"\nUSERXSESSIONRC=\"$XDG_CACHE_HOME/X11/xsessionrc\"\nALTUSERXSESSION=\"$XDG_CACHE_HOME/X11/Xsession\"\nERRFILE=\"$XDG_CACHE_HOME/X11/xsession-errors\"\n\nxrdb -merge ~/.Xresources\n\n# Set keyboard layout to Norwegian for Xorg. Seems like 'loadkeys' is not\n# persistant and might only affect the TTY session. Same goes with the\n# /etc/vconsole.conf\nsetxkbmap -layout no -variant nodeadkeys -option caps:swapescape -option altwin:swap_lalt_lwin\n\nexec i3 --shmlog-size 0\n\n"
  },
  {
    "path": "alacritty/.config/alacritty/alacritty.toml",
    "content": "[font]\nsize = 10.4\n\n[font.bold]\nfamily = \"JetBrainsMono NerdFont\"\nstyle = \"Bold\"\n\n[font.bold_italic]\nfamily = \"JetBrainsMono NerdFont\"\nstyle = \"Bold Italic\"\n\n[font.italic]\nfamily = \"JetBrainsMono NerdFont\"\nstyle = \"Italic\"\n\n[font.normal]\nfamily = \"JetBrainsMono NerdFont\"\nstyle = \"Regular\"\n\n[window.padding]\nx = 15\ny = 15\n"
  },
  {
    "path": "bin/bin/applications/radio",
    "content": "#!/usr/bin/env bash\n#\n# Siddharth Dushantha 2020\n#\n\nversion=\"1.0.0\"\nconfig_file=\"$HOME/.config/radio/config.json\"\ncache_dir=\"$HOME/.cache/radio\"\nlast_played=\"$cache_dir/last_played\"\npid_file=\"$cache_dir/pid\"\nnotification_icon_path=\"$cache_dir/icon.png\"\n\nusage(){\n    cat << EOF\nradio\nradio -h | -l | --version\nradio {pause|resume}\nradio [STATION]\n\nPlay your favorite radio station from the command line with ease\n\nCommands\nkill         Same behavior as 'pause'\npause        Pause the radio.\nresume       Resume the radio\nstop         Same behavior as 'pause'\n\nOptions\n-h, --help           Show help \n-l, --list           List available radio stations\n-n, --now-playing    Show which station is playing\n--version            Show version\nEOF\n}\n\nprint_error() {\n    printf \"%b\\n\" \"Error: $1\" >&2\n    exit 1\n}\n\nstop(){\n    kill -9 \"$(cat \"$pid_file\")\" 2> /dev/null\n    # Remove the $pid_file when we stop the radio or else the script\n    # will think that there is a \"radio session\" already playing\n    rm \"$pid_file\" 2> /dev/null\n}\n\nplay(){\n    # A very hacky form of fuzzy searching.\n    # We list out the station names and then use grep to find the station name\n    # which the user provided. This prevents the user from having to type out\n    # the exact name of the station name. The reason for using 'head -n 1' is\n    # is so that we can get the first match in case there are multiple matches.\n    station_name=$(printf %s \"$radio_stations\" | jq -r keys[] | grep -i \"$1\" | head -n 1)\n\n    if [ \"$station_name\" = \"\" ]; then\n        notify-send \"Radio\" \"Could not find a radio station named \\\"$1\\\"\" -i \"$notification_icon_path\"\n        exit 1\n    fi\n\n    cover_art_url=$(printf %s \"$radio_stations\" | jq -r \".\\\"$station_name\\\".coverArtUrl\")\n    cover_art_ext=$(printf \"${cover_art_url##*.}\")\n    cover_art_path=\"$cache_dir/$(printf %s \"$station_name\" | tr -d ' ').$cover_art_ext\"\n    stream_url=$(printf %s \"$radio_stations\" | jq -r \".\\\"$station_name\\\".streamUrl\")\n\n    # The cover art of the station is saved in teh cache so that we dont need\n    # redownload it everytime the user listens to a station.\n    [ ! -f \"$cover_art_path\" ] && curl -s \"$cover_art_url\" -o \"$cover_art_path\"\n\n    # If the $pid_file *does not* exist, that means there is no other active radio\n    # playing. But if it does exist, then we must kill the proccess otherwise\n    # there would be multiple audios playing which is unpleasent.\n    if [ -f \"$pid_file\" ]; then\n        pid=$(cat \"$pid_file\")\n        # We cannot just 'killall mpv' in order to stop any other radios \"sessions\"\n        # from playing. This is because the user may be using mpv to view a video/image.\n        # Thus, 'killall mpv' would also kill those proccesses.\n        # Instead, we take the PID and get the exact command belonging to that PID. We\n        # then check if the $streamUrl of the selected station is in the command\n        # belonging to that PID. If so, that mean\n        # shellcheck disable=SC2009\n        if ! ps -p \"$pid\" -o args | grep \"$stream_url\" > /dev/null; then\n            stop\n        else\n            # The station the user specified is already being played, so there\n            # there is nothing to do.\n            return 0\n        fi\n    fi\n\n    # This is just for some extra ★bling★\n    # Notify the user what radio is being played along with\n    # the appropriate cover art.\n    notify-send \"Radio\" \"Playing $station_name\" -i \"$cover_art_path\"\n\n    # We save the current station name in the cache so that the user can easily\n    # play/pause the radio without having to provide the station name again when\n    # wanting to play the same station they previoulsy listened to.\n    printf %s \"$station_name\" > \"$last_played\"\n\n    # This is where the radio is actually played \n    mpv --no-terminal \"$stream_url\" &\n\n    # Save the PID of the command above so that we can kill that proccess\n    # if we need to stop the radio \n    printf %s \"$!\" > \"$pid_file\"\n}\n\nplay_last_played(){\n    if [ -f \"$last_played\" ]; then\n        play \"$(cat \"$last_played\")\"\n    else\n        notify-send \"Radio\" \"Couldn't find recently played station\" -i \"$notification_icon_path\"\n    fi\n}\n\ntoggle(){\n    if [ -f \"$pid_file\" ]; then\n        stop\n        exit\n    else\n        play_last_played\n        exit\n    fi\n}\n\nmain(){\n    mkdir -p \"$cache_dir\"\n\n    [ ! -f \"$config_file\" ] && print_error \"Couldn't find config file: $config_file\"\n\n    radio_stations=$(jq -r \".stations\" < \"$config_file\")\n    notification_icon_url=$(jq -r \".settings.notificationIconUrl\" < \"$config_file\")\n\n    [ ! -f \"$notification_icon_path\" ] && curl -s \"$notification_icon_url\" -o \"$notification_icon_path\"\n\n    # Running this script wihtout any arguments, toggles the play/pause\n    [ $# -eq 0 ] && toggle\n\n    while [ \"$1\" ]; do\n        case \"$1\" in\n            --help | -h)\n                usage\n                exit ;;\n            --version)\n                echo \"$version\"\n                exit ;;\n            --list | -l)\n                printf %s \"$radio_stations\" | jq -r keys[] | sed \"s/^/- /g\"\n                exit ;;\n            --now-playing | -n)\n                notify-send \"Radio\" \"Now playing $(cat $last_played)\" -i \"$notification_icon_path\"\n                exit ;;\n            stop|kill|pause)\n                stop\n                exit ;;\n            resume)\n                play_last_played\n                exit ;;\n            -*)\n                print_error \"option '$1' does not exist\"\n                exit 1 ;;\n            *)\n                play \"$@\"\n                exit ;;\n        esac\n        shift\n    done\n}\n\nmain \"$@\"\n"
  },
  {
    "path": "bin/bin/bugbounty/deadlinks",
    "content": "#!/usr/bin/env sh\n#\n# by Siddharth Dushantha 2021\n#\n# A wrapper around blc[1] and subfinder[2] which finds dead links that \n# may be used to find broken link hijacking vulnerabilities[3]\n#\n# [1] https://github.com/stevenvachon/broken-link-checker/\n# [2] https://github.com/projectdiscovery/subfinder\n# [3] https://gist.github.com/EdOverflow/24e0bb929169eb948bb7f3d0a2d5528f\n#\n\nversion=\"1.0.0\"\nsubdomain_file=\"/tmp/subdomains.txt\"\n\nusage(){\n    cat <<EOF\ndeadlink -d [DOMAIN]\ndeadlink -u [URL]\n\n-d, --domain DOMAIN\n        Scan DOMAIN and it's subdomains for deadlinks\n-u, --url URL\n        Scan the provided URL for deadlinks\nEOF\n}\n\nprint_error() {\n    printf \"%b\\n\" \"Error: $1\" >&2\n    exit 1\n}\n\nscan_url(){\n    if ! printf \"%s\" \"$1\" | grep -Eq \"https:\\/\\/\"; then\n        print_error \"URL doesn't start with 'https://'\"\n    fi\n    blc \"$1\" | grep \"─BROKEN─\"\n}\n\nscan_domain(){\n    # Add the domain into the list so that it is also included\n    # when we scan the subdomains for dead links.\n    printf \"%s\\n\" \"$1\" > \"$subdomain_file\"\n\n    printf \"%s\\n\" \"Fetching all subdomains for '$1'\"\n    subfinder -d \"$1\" -silent >> \"$subdomain_file\"\n\n    while read -r line; do\n        printf \"%s\\n\" \"Scanning $line\"\n        blc \"https://$line\" | grep \"─BROKEN─\"\n    done <\"$subdomain_file\"\n\n    rm \"$subdomain_file\" \n}\n\nmain(){\n    for dependency in blc subfinder; do\n        if ! command -v \"$dependency\" >/dev/null 2>&1; then\n            print_error \"Could not find '$dependency', is it installed?\"\n        fi\n    done\n\n    [ $# -eq 0 ] && usage && exit\n\n    while [ \"$1\" ]; do\n        case \"$1\" in\n            --help | -h) usage && exit ;;\n            --domain | -d) scan_domain \"$2\" ;;\n            --url| -u) scan_url \"$2\" ;;\n            --version) echo \"$version\" && exit ;;\n            -*) print_error \"option '$1' does not exist\" ;;\n            *) usage && exit ;;\n        esac\n        shift\n    done\n}\n\nmain \"$@\"\n"
  },
  {
    "path": "bin/bin/bugbounty/vdp",
    "content": "#!/usr/bin/env bash\n#\n# by Siddharth Dushantha 2022\n#\n\nusage(){\n    cat <<EOF\nvdp [OPTIONS]\n\nOPTIONS\n-d, --domain  Domain to scan\n-l, --list    Scan from a text file containing a list of domains\n-t, --target  Name of target/scan. Must be used when using --list\n--version     Show version\n--help        Show this help message\nEOF\n}\n\nfor dependency in subfinder nuclei httpx; do\n    if ! command -v \"$dependency\" >/dev/null 2>&1; then\n        # Append to our list of missing dependencies\n        dep_missing=\"$dep_missing $dependency\"\n    fi\ndone\n\nif [ \"${#dep_missing}\" -gt 0 ]; then\n    printf %s \"Could not find the following dependencies: $dep_missing\"\n    exit 1\nfi\n\nwhile [ \"$1\" ]; do\n    case \"$1\" in\n        --help | -h) usage && exit ;;\n        --domain | -d) domain=\"$2\" ;;\n        --list | -l) list=\"$2\" ;;\n        --target | -t) target=\"$2\";;\n        --version) echo \"$version\" && exit ;;\n        -*) usage ;;\n    esac\n    shift\ndone\n\n\nif [ ! -z \"$domain\" ]; then\n    target=$domain\n    tmp_dir=\"$target/tmp\"\n    \n    mkdir -p \"$target\"\n    mkdir -p \"$tmp_dir\"\n    \n    # If using screen or tmux, change the name of the window to the name of the target\n    if ! { [ \"$TERM\" = \"screen\" ] && [ -n \"$TMUX\" ]; } then\n              tmux rename-window -t${TMUX_PANE} \"$target\"\n    fi\n\n    printf %b \"[\\e[34mi\\e[0m] Finding subdomains for $target\"\n    subfinder -d \"$target\" > \"$tmp_dir/subdomains.txt\" --silent\n    printf %b \"\\e[2K\\r[\\e[34mi\\e[0m] Found $(cat \"$tmp_dir/subdomains.txt\" | wc -l) subdomains on \\e[34m$target\\e[0m\\n\"\n\n    # Remove duplicates\n    sort -u \"$tmp_dir/subdomains.txt\" > \"$tmp_dir/sorted_subdomains.txt\"\n\n    printf %b \"[\\e[34mi\\e[0m] Removing dead subdomains\\n\"\n    httpx -l \"$tmp_dir/sorted_subdomains.txt\" > \"$tmp_dir/working_subdomains.txt\" --silent\n\n    printf %b \"[\\e[34mi\\e[0m] Scanning vulnerabilities on $(cat \"$tmp_dir/working_subdomains.txt\" | wc -l) subdomains\\n\"\n    nuclei -es info -list \"$tmp_dir/working_subdomains.txt\" -me \"$target\" --silent\n\nelif [ ! -z \"$list\" ] && [ ! -z \"$target\" ]; then\n    printf %b \"[\\e[34mi\\e[0m] Scanning for vulnerabilities\"\n    mkdir -p \"$target\"\n\n    # If using screen or tmux, change the name of the window to the name of the target\n    if ! { [ \"$TERM\" = \"screen\" ] && [ -n \"$TMUX\" ]; } then\n              tmux rename-window -t${TMUX_PANE} \"$target\"\n    fi\n\n    # Find vulnerabilities\n    nuclei -es info -list \"$list\" -me \"$target\" --silent\nfi\n\n"
  },
  {
    "path": "bin/bin/just4fun/10print",
    "content": "#!/usr/bin/env python3\n\n# Creates the famous 10print art, nothing special\nimport random\nfor i in range(100000):print(chr(9585+random.randint(0,1)), end=\"\")\n\n"
  },
  {
    "path": "bin/bin/just4fun/bee",
    "content": "#!/usr/bin/env python\n\nBEE = \"\"\"\\n\\033[1m     \\033[32m\"Bee\" careful    \\033[34m__\n       \\033[32mwith sudo!    \\033[34m// \\\\\n                     \\\\\\_/ \\033[33m//\n   \\033[35m''-.._.-''-.._.. \\033[33m-(||)(')\n                     '''\\033[0m\"\"\"\n\nprint(BEE) \n"
  },
  {
    "path": "bin/bin/just4fun/groot",
    "content": "     \u001b[00;32m  \\^V//\n     \u001b[00;33m  |\u001b[01;37m. \u001b[01;37m.\u001b[00;33m|   \u001b[01;34m I AM (G)ROOT!\n     \u001b[00;32m- \u001b[00;33m\\ - / \u001b[00;32m_\n     \u001b[00;33m \\_| |_/\n     \u001b[00;33m   \\ \\\n     \u001b[00;31m __\u001b[00;33m/\u001b[00;31m_\u001b[00;33m/\u001b[00;31m__\n     \u001b[00;31m|_______|  \u001b[00;37m With great power comes great responsibility.\n     \u001b[00;31m \\     /   \u001b[00;37m Use sudo wisely.\n     \u001b[00;31m  \\___/\n\u001b[0m\n"
  },
  {
    "path": "bin/bin/just4fun/panes",
    "content": "#!/usr/bin/env bash\n\n# Author: GekkoP\n# Source: http://linuxbbq.org/bbs/viewtopic.php?f=4&t=1656#p33189\n \nf=3 b=4\nfor j in f b; do\n  for i in {0..7}; do\n    printf -v $j$i %b \"\\e[${!j}${i}m\"\n  done\ndone\nd=$'\\e[1m'\nt=$'\\e[0m'\nv=$'\\e[7m'\n \n \ncat << EOF\n \n $f1███$d▄$t  $f2███$d▄$t  $f3███$d▄$t  $f4███$d▄$t  $f5███$d▄$t  $f6███$d▄$t  $f7███$d▄$t  \n $f1███$d█$t  $f2███$d█$t  $f3███$d█$t  $f4███$d█$t  $f5███$d█$t  $f6███$d█$t  $f7███$d█$t  \n $f1███$d█$t  $f2███$d█$t  $f3███$d█$t  $f4███$d█$t  $f5███$d█$t  $f6███$d█$t  $f7███$d█$t  \n $d$f1 ▀▀▀   $f2▀▀▀   $f3▀▀▀   $f4▀▀▀   $f5▀▀▀   $f6▀▀▀   $f7▀▀▀  \nEOF\n"
  },
  {
    "path": "bin/bin/keybinded/brightness/brightness",
    "content": "33.453367\n"
  },
  {
    "path": "bin/bin/keybinded/brightness/brightnessControl.sh",
    "content": "#!/usr/bin/env bash\n\n# You can call this script like this:\n# $ ./brightnessControl.sh up\n# $ ./brightnessControl.sh down\n\n# Script inspired by these wonderful people:\n# https://github.com/dastorm/volume-notification-dunst/blob/master/volume.sh\n# https://gist.github.com/sebastiencs/5d7227f388d93374cebdf72e783fbd6a\n\nfunction get_brightness {\n  xbacklight -get | cut -d '.' -f 1\n}\n\nfunction send_notification {\n  icon=\"preferences-system-brightness-lock\"\n  brightness=$(get_brightness)\n  # Make the bar with the special character ─ (it's not dash -)\n  # https://en.wikipedia.org/wiki/Box-drawing_character\n  bar=$(seq -s \"─\" 0 $((brightness / 5)) | sed 's/[0-9]//g')\n  # Send the notification\n  dunstify -i \"$icon\" -r 5555 -u low \"    $bar\"\n}\n\ncase $1 in\n  up)\n    # increase the backlight by 5%\n    xbacklight -inc 5\n\n    # We output the current brightness into a file, so that when we reboot\n    # or restart i3wm, the brightness can be restored by running a command\n    # that is in my i3 config\n    xbacklight -get > $HOME/bin/keybinded/brightness/brightness\n    send_notification\n    ;;\n  down)\n    # decrease the backlight by 5%\n    xbacklight -dec 5\n    xbacklight -get > $HOME/bin/keybinded/brightness/brightness\n    send_notification\n    ;;\nesac\n"
  },
  {
    "path": "bin/bin/keybinded/brightness/restoreBrightness.sh",
    "content": "#!/usr/bin/env bash\n#\n# Restore the brightness by taking the value in the file, brightness\n\nVALUE=$(cat $HOME/bin/keybinded/brightness/brightness)\n\nxbacklight -set $VALUE\n"
  },
  {
    "path": "bin/bin/keybinded/music_ctrl.sh",
    "content": "#!/usr/bin/env bash\n#\n# mpDris2  is needed\n_command=\"$1\"\n\nif [ \"$1\" == \"toggle\" ]; then\n    if [ $(playerctl status) == \"Paused\" ]; then\n        _command=\"play\"\n    else\n        _command=\"pause\"\n    fi\nfi\n\n\n\nplayerctl --player=\"spotify,mpd\" \"$_command\"\n"
  },
  {
    "path": "bin/bin/keybinded/pop_mpv.sh",
    "content": "#!/usr/bin/env bash\n#\n# Created by Siddharth Dushantha (sdushantha)\n#\n# Dependencies: xdotool, mpv, xclip, youtube-dl\n# \n# This script lets you pop almost any video from your web browser\n# into mpv. If you are not using a browser, then the script will\n# look in your clipboard to see if you have copied an url which\n# can be played on mpv.\n# \n# The reason I made this script was because I fed up of dragging\n# the url into mpv everytime I wanted to view a YouTube video\n# on mpv. \n# \n# ==How you can use this==\n# - Copy a url to a video and run the script and it will show it in mpv\n# - While on the webpage with the video, run the script, and the\n#   video will be shown in mpv\n#\n# This script was tested using Firefox, so if you use another\n# browser, replace the value for WEB_BROSWER with the name\n# of your web browser (e.g Google Chrome, Opera, etc.)\n\n\n# Edit this with the name of your web browser\nWEB_BROWSER=\"Mozilla Firefox\"\n\n# Checking if the user is currently on the web browser\nCURRENT=$(xdotool getwindowfocus getwindowname | grep \"$WEB_BROWSER\")\n\n# Get the exit code of the command above.\n# If the user is using a web browser, then the \n# exit code will be 0\nSTATUS=$?\n\n# If the user is using web browser...\nif [ $STATUS -eq 0 ];then\n    # Then select the url bar and copy the url\n    xdotool key ctrl+l\n    xdotool key ctrl+c\nfi\n\n# Get the content from the clipboard\nURL=$(xclip -selection clipboard -o)\n    \nnotify-send \"mpv\" \"Fetching video...\"\nmpv $URL \n\n# Get the exit code if mpv\nSTATUS=$?\n\nif [ $STATUS -ne 0 ];then\n    notify-send \"mpv\" \"Failed to fetch the video\"\n    exit\nfi\n\n\n"
  },
  {
    "path": "bin/bin/keybinded/rofi_notes.sh",
    "content": "#!/usr/bin/env bash\n#\n# Use rofi to select/create notes and then edit them using nvim\n#\n\nnotes_directory=\"$HOME/documents/notes\"\nnote_name=$(ls ~/documents/notes | rofi -dmenu)\nnote_path=\"$notes_directory/$note_name\"\n\n[ -n \"$note_name\" ] && kitty -e nvim \"$note_path\"\n"
  },
  {
    "path": "bin/bin/keybinded/vifm.py",
    "content": "#!/usr/bin/env python\n\nimport sys\nimport subprocess\nimport i3ipc\nimport os\n\ni3 = i3ipc.Connection()\n\ndef on(i3, e):\n    e.container.command('floating enable')\n\n    e.container.command(\"resize set 748 px 460 px, move window to position 347 px 230 px\")\n    sys.exit(0)\n\n\nos.popen(\"kitty -e /home/siddharth/bin/utils/vifmrun\")\n\ni3.on('window::new', on)\ntry:\n    i3.main()\nfinally:\n    i3.main_quit()\n"
  },
  {
    "path": "bin/bin/light-theme/libreoffice.sh",
    "content": "#!/usr/bin/env bash\n#\n# This script allows me to run libreoffice with a light GTK theme.\n# To be able to get the light theme when launching the apps from your app\n# launcher, edit the .desktop file for all of the libreoffice. All you have\n# to do is to replace \"libreoffice\" with the path to this script in the exec\n# variable.\n# \n# Keep note, there are usually 2 \"Exec\" variables in each .desktop file.\n#\n# Example (diff):\n#  - Exec=libreoffice --writer\n#  + Exec=/path/to/this/script.sh --writer\n\nGTK_THEME=\"Arc\" libreoffice $1\n"
  },
  {
    "path": "bin/bin/utils/0x0",
    "content": "#!/usr/bin/env bash\nURL=\"https://0x0.st\"\n\nif [ $# -eq 0 ]; then\n    echo \"Usage: 0x0.st FILE\\n\"\n    exit 1\nfi\n\nFILE=$1\n\nif [ ! -f \"$FILE\" ]; then\n    echo \"File ${FILE} not found\"\n    exit 1\nfi\n\nRESPONSE=$(curl -s -F \"file=@${FILE}\" \"${URL}\")\n\necho \"${RESPONSE}\"\n"
  },
  {
    "path": "bin/bin/utils/add-shadow",
    "content": "#!/usr/bin/env bash\n\n# This script adds a cool shadow effect to images, just like MacOS screenshots.\n# I usually use this for screenshots that I take with scrot\n# Source: https://stefanscherer.github.io/how-to-take-screenshots-with-drop-shadow/\n\nconvert \"$1\" \\( +clone -background grey25 -shadow 80x40+5+30 \\) +swap -background transparent -layers merge +repage \"$1-shadow.png\"\n"
  },
  {
    "path": "bin/bin/utils/aperisolve",
    "content": "#!/usr/bin/env bash\nHOST=\"https://www.aperisolve.com\"\nARGC=$#\nEXPECTED_ARGS=1\n\nif [ $# -eq $EXPECTED_ARGS ]\nthen\n    P=$(realpath $1) # Get File Path Browser\n    REPHASH=$(curl -s -F file=@$P $HOST/upload | jq .File | tr -d '\"') # Upload and get hash\n    xdg-open $HOST/$REPHASH  # Open Browser\nelse\n    echo \"[?] Usage: aperisolve <file>\"\nfi;\n"
  },
  {
    "path": "bin/bin/utils/border",
    "content": "#!/usr/bin/env sh\n#\n# Siddharth Dushantha\n#\n# Turn the i3wm border on/off and change the size\n#\n\nset_border(){\n    i3-msg \"[class=.*] border pixel $1\" > /dev/null 2>&1\n}\n\n# RegEx to match integers\nregex=\"^[0-9]+$\"\n\nif [ \"$1\" = \"on\" ]; then\n    set_border 1\nelif [ \"$1\" = \"off\" ]; then\n    set_border 0\nelif printf %b \"$1\" | grep -Eq \"$regex\"; then\n    set_border $1\nfi\n\n"
  },
  {
    "path": "bin/bin/utils/ce",
    "content": "#!/usr/bin/env bash\n#\n# This script lets me compile and execute in one go.\n# \n# Usage: ce CODE OUTPUT\n#\n# Example:\n#  ce test.c test\n#\n\ncode=\"$1\"\noutput=\"$2\"\n\ngcc \"$code\" -o \"$output\"\n\n./\"$output\"\n"
  },
  {
    "path": "bin/bin/utils/cnf",
    "content": "#!/usr/bin/env sh\n#\n# by Siddharth Dushantha 2021\n#\n# cnf - Command Not Found\n#\n# An utility which get the previous command that returned a\n# command not found error and then checks if there is package\n# which has that command. If a package is found, then it asks\n# you if you want to intall it.\n#\n# !!README!! \n# In order for this scrip to work, create a command-not-found handler\n# function in your shell's config file (e.g bashrc, zshrc, etc) and put the\n# command below in the function:\n#\n#   mkdir -p \"/tmp/command_not_found\"\n#   echo -n \"$1\" > \"/tmp/command_not_found/command\"\n#\n#   echo \"zsh: command not found: $1\" && exit 1\n#\n# Each shell has a different command-not-found handler function name:\n# In the zsh its a function named command_not_found_handler[1]\n# In the bash its a function named command_not_found_handle[2]\n#\n# [1] https://zsh.sourceforge.io/Doc/Release/Command-Execution.html#Command-Execution\n# [2] https://www.gnu.org/software/bash/manual/bash.html#Command-Search-and-Execution\n#\n\ncommand_name=$(cat \"/tmp/command_not_found/command\")\n\n# Fetch the package name which contains the file /usr/bin/COMMAND\npackage_name=$(pacman -Fq \"/usr/bin/$command_name\" | head)\n\n# If no package is found output the error message which ZSH shows by default\nif [ -z \"$package_name\" ]; then\n    printf \"%b\\n\" \"Couldn't find the package containing the '\\e[1m$command_name\\e[0m' command\"\n    exit 1\nfi\n\n# Notify user and ask whether or not they want to install the package\nprintf \"%b\\n\" \"Command '\\e[1m$command_name\\e[0m' not found, but was found in the '\\e[1m$package_name\\e[0m' package.\"\n\nread -p \"Would you like to install it? [Y/n] \" -N1 confirm\n\n# Just adding a few blank lines so that things look clean\nprintf \"%b\" \"\\n\\n\"\n\nif  printf %s \"$confirm\" | grep -Eq \"[yY]\"; then\n    sudo pacman -S \"$package_name\"\nfi\n"
  },
  {
    "path": "bin/bin/utils/darkmode.sh",
    "content": "#!/usr/bin/env sh\n\n\nsetGTKTheme(){\n    # I run i3 along with GNOME services in the background, therefore\n    # I'm able to use 'gsettings'. Change the command according to your system \n    if [ \"$1\" == \"light\" ]; then\n        gsettings set org.gnome.desktop.interface gtk-theme \"Kali-Light\"\n    elif [ \"$1\" == \"dark\" ]; then\n        gsettings set org.gnome.desktop.interface gtk-theme \"Kali-Dark\"\n    else\n        printf %s \"Error in setGTKTheme: got invalid argument '$1'\"\n    fi\n}\n\n\nsetLightMode(){\n    setGTKTheme light\n}\n\nsetDarkMode(){\n    setGTKTheme dark \n}\n\nmain(){\n    while [ \"$1\" ]; do\n        case \"$1\" in\n            on) setDarkMode && exit ;;\n            off) setLightMode && exit ;;\n        esac\n        shift\n    done\n}\n\nmain \"$@\"\n"
  },
  {
    "path": "bin/bin/utils/duckmail",
    "content": "#!/usr/bin/env sh\n#\n# by Siddharth Dushantha 2023\n#\n# Dependencies: jq, curl, xclip\n#\n# duckmail is a POSIX shell script that generates @duck.com email address using\n# Duck Duck Go's Email Protection service.\n#\n\n# This file contains the auth token that is needed inorder to generate a duck email address\nauth_token_path=\"$HOME/.config/duckmail/token.txt\"\nauth_token=$(cat \"$auth_token_path\")\n\n# This is DuckDuckGo's logo. This image gets used as an icon for notifications thats are sent\nddg_icon_path=\"$HOME/.config/duckmail/ddg.png\"\n\noutput(){\n    # This function show output to STDOUT or as a notification depending on whether or not\n    # the user executes duckmail through the terminal or a program such as 'rofi'\n    message=\"$1\"\n    if [ -z \"$TERM\" ] || [ \"$TERM\" = \"dumb\" ]; then\n        notify-send \"DuckDuckGo\" \"$message\" --icon \"$ddg_icon_path\"\n    else\n        printf \"%b\\n\" \"$message\"\n    fi\n\n}\n\nmain(){\n    # Iterate of the array of dependencies and check if the user has them installed.\n    #\n    # dep_missing allows us to keep track of how many dependencies the user is missing\n    # and then print out the missing dependencies once the checking is done.\n    dep_missing=\"\"\n\n    for dependency in jq curl xclip; do\n        if ! command -v \"$dependency\" >/dev/null 2>&1; then\n            # Append to our list of missing dependencies\n            dep_missing=\"$dep_missing $dependency\"\n        fi\n    done\n\n    if [ \"${#dep_missing}\" -gt 0 ]; then\n        printf %s \"Could not find the following dependencies:$dep_missing\"\n        exit 1\n    fi\n\n    # The user may provide a flag such as the ones mentioed in the list below:\n    #   --clipboard\n    #   --copy\n    #   -c\n    # \n    # Since they all start with one or more '-' and a 'c' we can simply check for \"-{1,2}c\"\n    if printf \"%b\" \"$1\" | grep -Eq -- \"-{1,2}c\"; then\n        copy_to_clipboard=true\n    fi\n\n    # Without the auth token, we're unable to genereate a @duck.com address\n    if [ ! -f \"$auth_token_path\" ]; then\n        output \"Auth token file could not be found at $auth_token_path\"\n        exit 1\n    fi\n\n    if [ -z \"$auth_token\" ];then\n        output \"Auth token file is empty\"\n        exit 1\n    fi\n\n    # Using the DuckDuckGo's Email Protection service's API endpoint, we fetch the username\n    response=$(curl -s \"https://quack.duckduckgo.com/api/email/addresses\" -X POST -H \"Authorization: Bearer $auth_token\")\n\n    if printf \"%b\" \"$response\" | grep -Eq \"invalid_token\"; then\n        output \"Your token is invalid\"\n        exit 1\n    fi\n\n    username=$(printf \"%b\" \"$response\" | jq -r .address)\n    duck_address=\"$username@duck.com\"\n\n    # If $TERM is not present or is set to 'dumb', we asume the user is executing duckmail\n    # through a program such as 'rofi'. Therefore, we much force duckmail to save the duck\n    # adress to the clipboard as the user will be unable to copy the output sent to STDOUT\n    if [ -z \"$TERM\" ] || [ \"$TERM\" = \"dumb\" ]; then\n        copy_to_clipboard=true\n    fi\n\n    if [ \"$copy_to_clipboard\" = true ]; then\n        printf \"%b\" \"$duck_address\" | xclip -sel c\n        output \"Duck address copied!\"\n        exit\n    fi\n\n    printf \"%b\\n\" \"$duck_address\"\n\n}\n\nmain \"$@\"\n"
  },
  {
    "path": "bin/bin/utils/ew",
    "content": "#!/bin/sh\n#\n# Siddharth Dushantha 2020\n#\n# https://github.com/sdushantha/bin\n#\n# ew - Edit Which\n# Quickly edit the source code of a command. This is pretty much a short\n# cut for doing --> vim $(which mycommand)\n\nfile_path=$(command -v \"$1\" 2>/dev/null)\n\nif [ -z \"$file_path\" ]; then\n    printf \"%s\\n\" \"Error: $1 not found\"\n    exit 1\nfi\n\n$EDITOR \"$file_path\"\n"
  },
  {
    "path": "bin/bin/utils/ex",
    "content": "#!/usr/bin/env bash\n#\n# A better way to extract archives.\n# I got this from the web, so credits goes to who ever wrote this.\nSAVEIFS=$IFS\nIFS=\"$(printf '\\n\\t')\"\n\nextract() {\n if [ -z \"$1\" ]; then\n    # display usage if no parameters given\n    echo \"Usage: extract <path/file_name>.<zip|rar|bz2|gz|tar|tbz2|tgz|Z|7z|xz|ex|tar.bz2|tar.gz|tar.xz>\"\n    echo \"       extract <path/file_name_1.ext> [path/file_name_2.ext] [path/file_name_3.ext]\"\n else\n    for n in \"$@\"\n    do\n      if [ -f \"$n\" ] ; then\n          case \"${n%,}\" in\n            *.cbt|*.tar.bz2|*.tar.gz|*.tar.xz|*.tbz2|*.tgz|*.txz|*.tar) \n                         tar xvf \"$n\"       ;;\n            *.lzma)      unlzma ./\"$n\"      ;;\n            *.bz2)       bunzip2 ./\"$n\"     ;;\n            *.cbr|*.rar)       unrar x -ad ./\"$n\" ;;\n            *.gz)        gunzip ./\"$n\"      ;;\n            *.cbz|*.epub)       unzip ./\"$n\"       ;;\n            *.z)         uncompress ./\"$n\"  ;;\n            *.7z|*.apk|*.arj|*.zip|*.cab|*.cb7|*.chm|*.deb|*.dmg|*.iso|*.lzh|*.msi|*.pkg|*.rpm|*.udf|*.wim|*.xar)\n                         7z x ./\"$n\"        ;;\n            *.xz)        unxz ./\"$n\"        ;;\n            *.exe)       cabextract ./\"$n\"  ;;\n            *.cpio)      cpio -id < ./\"$n\"  ;;\n            *.cba|*.ace)      unace x ./\"$n\"      ;;\n            *.zpaq)      zpaq x ./\"$n\"      ;;\n            *.arc)         arc e ./\"$n\"       ;;\n            *.cso)       ciso 0 ./\"$n\" ./\"$n.iso\" && \\\n                              extract \"$n.iso\" && \\rm -f \"$n\" ;;\n            *)\n                         echo \"extract: '$n' - unknown archive method\"\n                         return 1\n                         ;;\n          esac\n      else\n          echo \"'$n' - file does not exist\"\n          return 1\n      fi\n    done\nfi\n}\n\nIFS=$SAVEIFS\nextract \"$@\"\n"
  },
  {
    "path": "bin/bin/utils/ffmpeg-wrappers/vid2",
    "content": "#!/usr/bin/env bash\n#\n# Convert a video to...MP4, AVI, etc\n#\n# usage: vid2 FILE_FORMAT FILE\n#\n\nFILE_FORMAT=\"$1\"\nFILE=\"$2\"\nOUTPUT=\"$FILENAME.$FILE_FORMAT\"\n\nFILENAME=$(basename -- \"$2\")\nFILENAME=\"${FILENAME%.*}\"\n\nffmpeg -hide_banner \\\n    -i \"$FILE\" \\\n    -codec copy \\\n    \"$OUTPUT\" \n"
  },
  {
    "path": "bin/bin/utils/ffmpeg-wrappers/vidcut",
    "content": "#!/usr/bin/env bash\n#\n# Cut a video from timestamp x to y.\n#\n# Example:\n#   vid-cut myvideo.mp4 00:01 00:12 output.mp4\n#\n\nVIDEO=\"$1\"\nFROM=\"$2\"\nTO=\"$3\"\nOUTPUT=\"$4\"\n\n# This is where the actual cutting happens\nffmpeg -i \"$VIDEO\" \\\n\t-ss \"$FROM\" \\\n\t-t \"$TO\" \\\n\t-async 1 \\\n\t\"$OUTPUT\"\n\n\n"
  },
  {
    "path": "bin/bin/utils/ffmpeg-wrappers/vidmute",
    "content": "#!/usr/bin/env bash\n#\n# Remove audio from a video file\n#\n# usage: vid-mute myvideo.mp4 myvideo-muted.mp4\n#\n\nINPUT=\"$1\"\nOUTPUT=\"$2\"\n\nffmpeg -i \"$INPUT\" \\\n\t-c copy \\\n\t-an \\\n\t\"$OUTPUT\"\n"
  },
  {
    "path": "bin/bin/utils/fwifi",
    "content": "#!/usr/bin/env bash\n\n\nhas() {\n  local verbose=false\n  if [[ $1 == '-v' ]]; then\n    verbose=true\n    shift\n  fi\n  for c in \"$@\"; do c=\"${c%% *}\"\n    if ! command -v \"$c\" &> /dev/null; then\n      [[ \"$verbose\" == true ]] && err \"$c not found\"\n      return 1\n    fi\n  done\n}\n\nerr() {\n  printf '\\e[31m%s\\e[0m\\n' \"$*\" >&2\n}\n\ndie() {\n  (( $# > 0 )) && err \"$*\"\n  exit 1\n}\n\nhas -v nmcli fzf || die\n\nSSID=$(nmcli --color yes device wifi | fzf --ansi --height=40% --reverse --cycle --inline-info --header-lines=1 | awk '{print $2}')\n[[ -z \"$SSID\" ]] && exit\necho \"connecting to \\\"${SSID}\\\"...\"\nnmcli -a device wifi connect \"$SSID\"\n"
  },
  {
    "path": "bin/bin/utils/gifgen",
    "content": "#!/usr/bin/env bash\n\n# Echo help/usage message\nshow_help() {\n  echo \"gifgen 1.1.2\"\n  echo\n  echo \"Usage: gifgen [options] [input]\"\n  echo\n  echo \"Options:\"\n  echo \"  -o   Output file [input.gif]\"\n  echo \"  -f   Frames per second [10]\"\n  echo \"  -s   Optimize for static background\"\n  echo \"  -v   Display verbose output from ffmpeg\"\n  echo\n  echo \"Examples:\"\n  echo \"  $ gifgen video.mp4\"\n  echo \"  $ gifgen -o demo.gif SCM_1457.mp4\"\n  echo \"  $ gifgen -sf 15 screencap.mov\"\n}\n\n# Setup defaults\npid=$$\npalette=\"/tmp/gif-palette-$pid.png\"\nfps=\"10\"\nverbosity=\"warning\"\nstats_mode=\"full\"\ndither=\"sierra2_4a\"\n\n# Parse args\nwhile getopts \"hi:o:f:sv\" opt; do\n  case \"$opt\" in\n    h)\n      show_help=true\n      ;;\n    o)\n      output=$OPTARG\n      ;;\n    f)\n      fps=$OPTARG\n      ;;\n    s)\n      stats_mode=\"diff\"\n      dither=\"none\"\n      ;;\n    v)\n      verbosity=\"info\"\n      ;;\n  esac\ndone\nshift \"$((OPTIND-1))\"\n\n# Grab input file from end of command\ninput=$1\n\n# Show help and exit if we have no input\n[[ \"$input\" = \"\" ]] || [[ $show_help = true ]] && show_help && exit\n\n# Check for ffmpeg before encoding\ntype ffmpeg >/dev/null 2>&1 || {\n  echo \"Error: gifgen requires ffmpeg to be installed\"\n  exit 1\n}\n\n# Set output if not specified\nif [[ \"$output\" = \"\" ]]; then\n  input_filename=${input##*/}\n  output=${input_filename%.*}.gif\nfi\n\necho -e \"[\\033[1mI\\033[0m] Using video \\033[1m$input\\033[0m\"\necho -e \"[\\033[1mI\\033[0m] Extracting frames from video\"\n\n# Encode GIF\nffmpeg -v \"$verbosity\" -i \"$input\" -vf \"fps=$fps,palettegen=stats_mode=$stats_mode\" -y \"$palette\"\n\n[[ \"$verbosity\" = \"info\" ]] && echo\n\necho -e \"[\\033[1mI\\033[0m] Encoding GIF\"\nffmpeg -v \"$verbosity\" -i \"$input\" -i \"$palette\" -lavfi \"fps=$fps [x]; [x][1:v] paletteuse=dither=$dither\" -y \"$output\"\n\necho -e \"[\\033[1mI\\033[0m] Saved GIF as \\033[1m$output\\033[0m\"\n\n"
  },
  {
    "path": "bin/bin/utils/gym",
    "content": "#!/usr/bin/env python3\n#\n# Siddharth Dushantha 2022\n#\n# Check number of people at the gym \n#\n\nimport requests\nimport re\n\nr = requests.get(\"https://spicheren.no/besokstall/\")\nhtml = r.text\n\ntotal_visits = re.findall(r\"Total visits: (\\d+) -->\", html)\n\nprint(f\"Total visitors: {total_visits[0]}\")\n"
  },
  {
    "path": "bin/bin/utils/h2s",
    "content": "#!/usr/bin/env sh\n#\n# by Siddharth Dushantha\n#\n# Change the HTTPS git url to a SSH git url\n#\n\nurl=$(git config --get remote.origin.url)\n\nif [ $(echo \"$url\" | grep \"git@github.com\") ]; then\n    printf \"%s\\n\" \"Already SSH compatible url\"\n    exit\nfi\n\nusername_reponame=$(echo $url | cut -d \"/\" -f 4-5)\nssh_url=\"git@github.com:$username_reponame\"\n\ngit remote set-url origin \"$ssh_url\"\nprintf \"Changed remote git url to SSH compatible: %s\\n\" \"$ssh_url\"\n"
  },
  {
    "path": "bin/bin/utils/kp",
    "content": "#!/usr/bin/env bash\n# mnemonic: [K]ill [P]rocess\n# show output of \"ps -ef\", use [tab] to select one or multiple entries\n# press [enter] to kill selected processes and go back to the process list.\n# or press [escape] to go back to the process list. Press [escape] twice to exit completely.\n\npid=$(ps -ef | sed 1d | eval \"fzf ${FZF_DEFAULT_OPTS} -m --header='Select proccess to kill'\" | awk '{print $2}')\n\nif [ \"x$pid\" != \"x\" ]\nthen\n  echo \"$pid\" | xargs kill \"-${1:-9}\"\n  kp\nfi\n"
  },
  {
    "path": "bin/bin/utils/mmv",
    "content": "#!/usr/bin/env bash\nset -eu\n\n# Lists the current directory's files in Vim, so you can edit it and save to rename them\n# USAGE: vimv [file1 file2]\n# https://github.com/thameera/vimv\n\ndeclare -r FILENAMES_FILE=$(mktemp \"${TMPDIR:-/tmp}/vimv.XXX\")\n\ntrap '{ rm -f \"${FILENAMES_FILE}\" ; }' EXIT\n\nif [ $# -ne 0 ]; then\n    src=( \"$@\" )\nelse\n    IFS=$'\\r\\n' GLOBIGNORE='*' command eval 'src=($(ls))'\nfi\n\nfor ((i=0;i<${#src[@]};++i)); do\n    echo \"${src[i]}\" >> \"${FILENAMES_FILE}\"\ndone\n\n${EDITOR:-vi} \"${FILENAMES_FILE}\"\n\nIFS=$'\\r\\n' GLOBIGNORE='*' command eval 'dest=($(cat \"${FILENAMES_FILE}\"))'\n\nif (( ${#src[@]} != ${#dest[@]} )); then\n    echo \"WARN: Number of files changed. Did you delete a line by accident? Aborting..\" >&2\n    exit 1\nfi\n\ndeclare -i count=0\nfor ((i=0;i<${#src[@]};++i)); do\n    if [ \"${src[i]}\" != \"${dest[i]}\" ]; then\n        mkdir -p \"$(dirname \"${dest[i]}\")\"\n        if git ls-files --error-unmatch \"${src[i]}\" > /dev/null 2>&1; then\n            git mv --verbose \"${src[i]}\" \"${dest[i]}\"\n        else\n            mv --interactive --verbose \"${src[i]}\" \"${dest[i]}\"\n        fi\n        ((++count))\n    fi\ndone\n\necho \"$count\" files renamed.\n"
  },
  {
    "path": "bin/bin/utils/notes",
    "content": "#!/usr/bin/env sh\n\nnotes_dir=\"$HOME/documents/notes\"\nfile_name=$(ls \"$notes_dir\" | fzf)\n\nif [ -z \"$file_name\" ]; then\n    nvim -c \"cd $notes_dir\"\nelse\n    nvim ~/documents/notes/$file_name\nfi\n"
  },
  {
    "path": "bin/bin/utils/ocr",
    "content": "#!/usr/bin/env bash\n#\n# Siddharth Dushantha 2020\n# \n# https://github.com/sdushantha/bin\n#\n\nTEXT_FILE=\"/tmp/ocr.txt\"\nIMAGE_FILE=\"/tmp/ocr.png\"\n\n\n# Check if the needed dependencies are installed\ndependencies=(tesseract maim notify-send xclip)\nfor dependency in \"${dependencies[@]}\"; do\n    type -p \"$dependency\" &>/dev/null || {\n        # The reason why we are sending the error as a notification is because\n        # user is most likely going to run this script by binding it to their\n        # keyboard, therefor they cant see any text that is outputed using echo\n        notify-send \"ocr\" \"Could not find '${dependency}', is it installed?\"\n        echo \"Could not find '${dependency}', is it installed?\"\n        exit 1\n    }\ndone\n\n# Take screenshot by selecting the area\nmaim -s \"$IMAGE_FILE\"\n\n# Get the exit code of the previous command.\n# So in this case, it is the screenshot command. If it did not exit with an\n# exit code 0, then it means the user canceled the process of taking a\n# screenshot by doing something like pressing the escape key\nSTATUS=$?\n\n# If the user pressed the escape key or did something to terminate the proccess\n# taking a screenshot, then just exit\n[ $STATUS -ne 0 ] && exit 1\n\n# Do the magic (∩^o^)⊃━☆ﾟ.*･｡ﾟ\n# Notice how I have removing the extension .txt from the file path. This is\n# because tesseract adds .txt to the given file path anyways. So if we were to\n# specify /tmp/ocr.txt as the file path, tesseract would out the text to \n# /tmp/ocr.txt.txt\ntesseract \"$IMAGE_FILE\" \"${TEXT_FILE//\\.txt/}\" 2> /dev/null\n\n# Remove the new page character.\n# Source: https://askubuntu.com/a/1276441/782646\nsed -i 's/\\x0c//' \"$TEXT_FILE\"\n\n# Check if the text was detected by checking number\n# of lines in the file\nNUM_LINES=$(wc -l < $TEXT_FILE)\nif [ \"$NUM_LINES\" -eq 0 ]; then\n    notify-send \"ocr\" \"no text was detected\"\n    exit 1\nfi\n\n# Copy text to clipboard\nxclip -selection clip < \"$TEXT_FILE\"\n\n# Send a notification with the text that was grabbed using OCR\nnotify-send \"ocr\" \"$(cat $TEXT_FILE)\"\n\n# Clean up\n# \"Always leave the area better than you found it\" \n#                       - My first grade teacher\nrm \"$TEXT_FILE\"\nrm \"$IMAGE_FILE\"\n"
  },
  {
    "path": "bin/bin/utils/pauseallmpv",
    "content": "#!/usr/bin/env bash\nfor i in /tmp/mpvsoc*; do\n    [ -e \"$i\" ] || break\n\techo '{ \"command\": [\"set_property\", \"pause\", true] }' | socat - \"$i\";\ndone\n"
  },
  {
    "path": "bin/bin/utils/qrshot",
    "content": "#!/usr/bin/env bash\n#\n# Siddharth Dushantha 2022\n# \n# https://github.com/sdushantha/bin\n#\n\nimage_file=\"/tmp/ocr.png\"\n\n# Check if the needed dependencies are installed\ndependencies=(maim notify-send zbarimg xclip)\nfor dependency in \"${dependencies[@]}\"; do\n    type -p \"$dependency\" &>/dev/null || {\n        # The reason why we are sending the error as a notification is because\n        # user is most likely going to run this script by binding it to their\n        # keyboard, therefor they cant see any text that is outputed using echo\n        notify-send \"ocr\" \"Could not find '${dependency}', is it installed?\"\n        echo \"Could not find '${dependency}', is it installed?\"\n        exit 1\n    }\ndone\n\n# Take screenshot by selecting the area\nmaim -s \"$image_file\"\n\n# Get the exit code of the previous command.\n# So in this case, it is the screenshot command. If it did not exit with an\n# exit code 0, then it means the user canceled the process of taking a\n# screenshot by doing something like pressing the escape key\nstatus=$?\n\n# If the user pressed the escape key or did something to terminate the proccess\n# taking a screenshot, then just exit\n[ $status -ne 0 ] && exit 1\n\n# Use zbarimg to decode the text from the QR code\ndecoded_text=$(zbarimg \"$image_file\" -q --raw)\n\nif [ -z \"$decoded_text\" ]; then\n    notify-send \"qrshot\" \"no qr code was found\"\n    rm $image_file && exit 1\nfi\n\n# Copy text to clipboard\nprintf %b \"$decoded_text\" | xclip -selection clip\n\n# Let us know that something was decoded\nnotify-send \"qrshot\" \"$decoded_text\"\n\n# Cleaning up the trash that was left behind\nrm $image_file\n"
  },
  {
    "path": "bin/bin/utils/rofi-askpass",
    "content": "#!/usr/bin/env bash\nrofi -dmenu\\\n    -password\\\n    -i\\\n    -no-fixed-num-lines\\\n    -p \"Password:\"\\\n    -theme themes/askpass.rasi\n"
  },
  {
    "path": "bin/bin/utils/sk",
    "content": "#!/usr/bin/env bash\n#\n# Toggle screenkey\n#\n\nif pgrep screenkey > /dev/null 2>&1; then\n    killall screenkey > /dev/null 2>&1 &\n    notify-send \"Screenkey\" \"Turned off\"\nelse\n    screenkey \\\n        --geometry 350x700-20+430 \\\n        --font \"JetBrains Mono Nerd Font\" \\\n        --bg-color \"#101010\" \\\n        --font-color \"#e9e4e4\" \\\n        --no-systray \\\n        > /dev/null 2>&1 &\n    notify-send \"Screenkey\" \"Turned on\"\n\nfi\n"
  },
  {
    "path": "bin/bin/utils/sloc",
    "content": "#!/bin/sh\n#\n# http://github.com/mitchweaver/bin\n#\n# count lines of code in a shellscript\n# ignores comments and blank lines\n#\n\nusage() {\n    >&2 printf 'Usage: %s [file] or %s < [file]\\n' \"${0##*/}\" \"${0##*/}\"\n    exit 1\n}\n\nif [ \"$1\" ] ; then\n    case ${1#-} in\n        h)\n            usage\n            ;;\n        *)\n            [ -f \"$1\" ] || usage\n    esac\n\n    printf '%s' 'SLOC: '\n    sed '/^\\s*#/d;/^\\s*$/d' \"$1\" | wc -l | sed 's/ //g'\nelse\n    printf '%s' 'SLOC: '\n    sed '/^\\s*#/d;/^\\s*$/d' | wc -l | sed 's/ //g'\nfi\n"
  },
  {
    "path": "bin/bin/utils/tmpjn",
    "content": "#!/usr/bin/env sh\n#\n# by Siddharth Dushantha 2020\n#\n# tmpjn - Temporary Jupyter Notebook\n#\n\nnb_file_name=\"notebook.ipynb\"\n\ncd \"$(mktemp -d)\"\n\n# The content of an \"empty\" Jupyter Notebook file.\n# Even though the file is not empty, Jupyter Notebook will\n# detect that this a Interactive Python Notebook.\ncat >\"$nb_file_name\" << EOL\n{\n \"cells\": [],\n \"metadata\": {},\n \"nbformat\": 4,\n \"nbformat_minor\": 5\n}\nEOL\n\n# Open the \"empty\" Notebook\njupyter notebook \"$nb_file_name\"\n"
  },
  {
    "path": "bin/bin/utils/tmpsh",
    "content": "#!/usr/bin/env bash\n#\n# http://github.com/mitchweaver\n#\n# open a shell in a temporary dir without adding commands to history\n#\n\ncd \"$(mktemp -d)\" || exit\nzsh\n"
  },
  {
    "path": "bin/bin/utils/touchpad",
    "content": "#!/usr/bin/env bash\n#\n# Siddharth Dushantha 2021\n#\n# Disable/enable the touchpad\n#\n\nposition=$(xinput list --name-only | grep -n \"Touchpad\" | cut -d : -f 1)\ntouchpad_id=$(xinput list --id-only | sed -n \"$position p\")\ntouchpad_status=$(xinput list-props 12 | grep \"Device Enabled\" | cut -d : -f 2)\n\nif [ \"$touchpad_status\" -eq 1 ]; then\n    xinput disable \"$touchpad_id\"\n    notify-send \"Touchpad\" \"Disabled touchpad\"\n\nelif [ \"$touchpad_status\" -eq 0 ]; then\n    xinput enable \"$touchpad_id\"\n    notify-send \"Touchpad\" \"Enabled touchpad\"\n\nelse\n    notify \"Touchpad\" \"Unknown status: $touchpad_status\"\n\nfi\n"
  },
  {
    "path": "bin/bin/utils/upld",
    "content": "#!/usr/bin/env sh\nif [ $# -eq 0 ];then\n    echo -e \"No arguments specified.\\nUsage:\\n  transfer <file|directory>\\n  ... | transfer <file_name>\">&2\n    exit 1\nfi\n\nif tty -s;then\n    file=\"$1\"\n    file_name=$(basename \"$file\")\n    if [ ! -e \"$file\" ];then\n        echo \"$file: No such file or directory\">&2\n        return 1\n    fi\n    if [ -d \"$file\" ];then\n        file_name=\"$file_name.zip\" ,\n        (cd \"$file\"&&zip -r -q - .)|curl --progress-bar --upload-file \"-\" \"https://transfer.sh/$file_name\"|tee /dev/null,\n    else\n        cat \"$file\"|curl --progress-bar --upload-file \"-\" \"https://transfer.sh/$file_name\"|tee /dev/null\n    fi\nelse\n    file_name=$1;curl --progress-bar --upload-file \"-\" \"https://transfer.sh/$file_name\"|tee /dev/null\nfi\n"
  },
  {
    "path": "bin/bin/utils/urldecode",
    "content": "#!/usr/bin/env python3\nimport sys\nimport urllib.parse\n\nprint(urllib.parse.unquote_plus(sys.argv[1]))\n"
  },
  {
    "path": "bin/bin/utils/urlencode",
    "content": "#!/usr/bin/env python3\nimport sys, urllib.parse\nprint(urllib.parse.quote_plus(sys.argv[1]))\n"
  },
  {
    "path": "bin/bin/utils/webcam",
    "content": "#!/usr/bin/env bash\n#\n# Show webcam\n#\n\nmpv --demuxer-lavf-format=video4linux2 \\\n    --demuxer-lavf-o-set=input_format=mjpeg av://v4l2:\"/dev/video0\" \\\n    --profile=low-latency \\\n    --untimed \\\n    --vf=hflip \\\n    --no-keepaspect-window &> /dev/null &\n"
  },
  {
    "path": "bin/bin/utils/xcwd-helper",
    "content": "#!/usr/bin/env bash\n#\n# by Siddharth Dushantha 2023\n#\n# A script that only allows xcwd to be used for opening a terminal from certain applications.\n# If the current window is Discord, the xcwd will return '/usr/bin/' and that's not where we\n# want to open our terminal. So 'xcwd' only works properly when launching while our focused\n# window is a terminal such as Alacritty. Thunar used work, but no longer works.\n#\n# Example usage:\n#   alacritty --working-directory=$(xcwd-helper)\n#\n\ncurrent_dir=\"$(xcwd)\"\nallowed_program_classes=\"Alacritty\"\nactive_window_class=$(xdotool getactivewindow getwindowclassname)\n\nif ! printf %s \"$allowed_program_classes\" | grep -q \"$active_window_class\"; then\n    printf %s \"$HOME\"\n    exit\nfi\n\nprintf %s \"$current_dir\"\n\n"
  },
  {
    "path": "discord/.config/discord/settings.json",
    "content": "{\n  \"chromiumSwitches\": {},\n  \"IS_MAXIMIZED\": false,\n  \"IS_MINIMIZED\": false,\n  \"WINDOW_BOUNDS\": {\n    \"x\": 0,\n    \"y\": 24,\n    \"width\": 1536,\n    \"height\": 936\n  },\n  \"SKIP_HOST_UPDATE\": true\n}"
  },
  {
    "path": "dunst/.config/dunst/dunstrc",
    "content": "[global]\n   monitor = 0\n\n    # If this option is set to mouse or keyboard, the monitor option\n    # will be ignored.\n    follow = mouse\n\n    # Geometery reference --> [{width}]x{height}[+/-{x}+/-{y}]\n    geometry = \"300x0-12+37\"\n\n    # Radius of the four corners of the notification\n    corner_radius = 5\n\n    # Show how many messages are currently hidden (because of geometry).\n    indicate_hidden = yes\n\n    # Shrink window if it's smaller than the width.  Will be ignored if width is 0.\n    shrink = no\n\n    # The transparency of the window.  Range: [0; 100].\n    transparency = 0\n    \n    # The height of the entire notification.  If the height is smaller\n    # than the font height and padding combined, it will be raised\n    # to the font height and padding.\n    notification_height = 0\n\n    # Show multiple notifications in the same box\n    separator_height = 2\n\n    # Define a color for the separator.\n    # possible values are:\n    #  * auto: dunst tries to find a color fitting to the background;\n    #  * foreground: use the same color as the foreground;\n    #  * frame: use the same color as the frame;\n    #  * anything else will be interpreted as a X color.\n    separator_color = auto\n\n    # Add vertical padding to the inside of the notification\n    padding = 10\n\n    # Add horizontal padding for when the text gets long enough\n    horizontal_padding = 10\n\n    # The frame color and width of the notification\n    frame_width = 2\n    frame_color = \"#333333\"\n\n\n    sort = yes\n\n    # How long a user needs to be idle for sticky notifications\n    idle_threshold = 120\n\n    # Font and typography settings\n    font = JetBrains Mono Nerdfont 10\n    alignment = left\n    word_wrap = yes\n\n    # The spacing between lines.  If the height is smaller than the font height, it will get raised to the font height.\n    line_height = 0\n\n    # Allow some HTML tags like <i> and <u> in notifications\n    markup = full\n\n    # Format for how notifications will be displayed\n    #format = \"<b>%s</b>\\n%b\"\n    format = \"<span foreground='#f3f4f5'><b>%s %p</b></span>\\n%b\"\n\n    show_age_threshold = 60\n\n    # When word_wrap is set to no, specify where to make an ellipsis in long lines.\n    # Possible values are \"start\", \"middle\" and \"end\".\n    ellipsize = middle\n\n    # Ignore newlines '\\n' in notifications.\n    ignore_newline = no\n\n    # Stack together notifications with the same content\n    stack_duplicates = true\n\n    # Hide the count of stacked notifications with the same content\n    hide_duplicate_count = true \n\n    # Display indicators for URLs (U) and actions (A).\n    show_indicators = no\n\n    # Align icons left/right/off\n    icon_position = left\n\n    # Scale larger icons down to this size, set to 0 to disable\n    max_icon_size = 48\n\n    icon_path = /usr/share/icons/Paper/16x16/status/:/usr/share/icons/Paper/16x16/devices/:/usr/share/icons/Paper/16x16/apps/\n\n    sticky_history = yes\n    history_length = 20\n\n    # Always run rule-defined scripts, even if the notification is suppressed\n    always_run_script = true\n\n    startup_notification = false\n\n    force_xinerama = false\n\n    ### mouse\n    # Defines action of mouse event\n    # Possible values are:\n    # * none: Don't do anything.\n    # * do_action: If the notification has exactly one action, or one is marked as default,\n    #              invoke it. If there are multiple and no default, open the context menu.\n    # * close_current: Close current notification.\n    # * close_all: Close all notifications.\n    mouse_left_click = do_action\n    mouse_middle_click = close_all\n    mouse_right_click = close_current\n\n[urgency_low]\n    # This urgency should be used only \n    # for volume/brightness notification\n    background = \"#111116\"\n    foreground = \"#a8a8a8\"\n    timeout = 1\n    icon = /dev/null\n\n[urgency_normal]\n    background = \"#111116\"\n    foreground = \"#a8a8a8\"\n    timeout = 10\n    icon = /dev/null\n\n[urgency_critical]\n    background = \"#d64e4e\"\n    foreground = \"#f0e0e0\"\n    frame_color = \"#d64e4e\"\n    timeout = 0\n    icon = /usr/share/icons/Paper/16x16/status/dialog-warning.png\n\n[skip-rule] \nappname=discord\nskip_display=true\n\n"
  },
  {
    "path": "flameshot/.config/flameshot/flameshot.ini",
    "content": "[General]\ncheckForUpdates=false\ncontrastOpacity=102\ncontrastUiColor=#7c8fa3\ndisabledTrayIcon=true\ndrawColor=#ff0000\ndrawFontSize=27\ndrawThickness=4\nfilenamePattern=%F-%H%M%S\nsaveAfterCopy=true\nsaveAsFileExtension=png\nsavePath=/home/siddharth/pictures/screenshots\nsavePathFixed=true\nshowDesktopNotification=false\nshowHelp=false\nshowSidePanelButton=false\nshowStartupLaunchMessage=false\nstartupLaunch=false\nuiColor=#abc4e0\nundoLimit=104\nuploadHistoryMax=22\n\n[Shortcuts]\nTYPE_COPY=Return\n"
  },
  {
    "path": "gtk-2.0/.config/gtk-2.0/gtkfilechooser.ini",
    "content": "[Filechooser Settings]\nLocationMode=path-bar\nShowHidden=false\nShowSizeColumn=true\nGeometryX=1020\nGeometryY=0\nGeometryWidth=840\nGeometryHeight=630\nSortColumn=name\nSortOrder=ascending\nStartupMode=recent\n"
  },
  {
    "path": "gtk-3.0/.config/gtk-3.0/bookmarks",
    "content": "file:///home/siddharth/documents\nfile:///home/siddharth/downloads\nfile:///home/siddharth/pictures\nfile:///home/siddharth/videos\nfile:///home/siddharth/pictures/screenshots\nfile:///home/siddharth/projects\n"
  },
  {
    "path": "gtk-3.0/.config/gtk-3.0/settings.ini",
    "content": "[Settings]\ngtk-theme-name=Arc-Dark\ngtk-icon-theme-name=Paper\ngtk-font-name=Noto Sans 11\ngtk-cursor-theme-name=Adwaita\ngtk-cursor-theme-size=0\ngtk-toolbar-style=GTK_TOOLBAR_BOTH\ngtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR\ngtk-button-images=1\ngtk-menu-images=1\ngtk-enable-event-sounds=1\ngtk-enable-input-feedback-sounds=1\ngtk-xft-antialias=1\ngtk-xft-hinting=1\ngtk-xft-hintstyle=hintfull\ngtk-xft-rgba=rgb\n"
  },
  {
    "path": "i3/.config/i3/config",
    "content": "# Norwegian speacial letters\n# Æ = ae\n# Ø = oslash\n# Å = aring\n\n# General {{{  \n# Define names for default workspaces for which we configure key bindings later on.\n# We use variables to avoid repeating the names in multiple places.\nset $ws1 \"1\"\nset $ws2 \"2\"\nset $ws3 \"3\"\nset $ws4 \"4\"\nset $ws5 \"5\"\nset $ws6 \"6\"\nset $ws7 \"7\"\nset $ws8 \"8\"\nset $ws9 \"9\"\nset $ws10 \"10\"\n\n# The pixles of the gaps\ngaps inner 0\ngaps outer 0\nsmart_borders on\n\nfont pango:Hack 9\n#}}}\n\n\n# Keybindings {{{ \n\nset $mod Mod4\n\n# Use Mouse+$mod to drag floating windows to their wanted position\nfloating_modifier $mod\n\n# kill focused window\nbindsym $mod+q kill\n\n# change focus\nbindsym $mod+h focus left\nbindsym $mod+j focus down\nbindsym $mod+k focus up\nbindsym $mod+l focus right\n\n# move focused window\nbindsym $mod+Shift+h move left\nbindsym $mod+Shift+j move down\nbindsym $mod+Shift+k move up\nbindsym $mod+Shift+l move right\n\n# split in horizontal orientation\nbindsym $mod+period split h\n\n# split in vertical orientation\nbindsym $mod+comma split v\n\n# enter fullscreen mode for the focused container\nbindsym $mod+f fullscreen toggle\n\n# change container layout (tacked, tabbed, toggle split)\nbindsym $mod+t layout tabbed \nbindsym $mod+Shift+t layout splith\n\n# toggle tiling / floating\nbindsym $mod+Shift+space floating toggle,move absolute position center\n\n# focus the parent container\nbindsym $mod+a focus parent\n\n# switch to workspace\nbindsym $mod+1 workspace $ws1\nbindsym $mod+2 workspace $ws2\nbindsym $mod+3 workspace $ws3\nbindsym $mod+4 workspace $ws4\nbindsym $mod+5 workspace $ws5\nbindsym $mod+6 workspace $ws6\nbindsym $mod+7 workspace $ws7\nbindsym $mod+8 workspace $ws8\nbindsym $mod+9 workspace $ws9\nbindsym $mod+0 workspace $ws10\n\n# move focused container to workspace\nbindsym $mod+Shift+1 move container to workspace $ws1\nbindsym $mod+Shift+2 move container to workspace $ws2\nbindsym $mod+Shift+3 move container to workspace $ws3\nbindsym $mod+Shift+4 move container to workspace $ws4\nbindsym $mod+Shift+5 move container to workspace $ws5\nbindsym $mod+Shift+6 move container to workspace $ws6\nbindsym $mod+Shift+7 move container to workspace $ws7\nbindsym $mod+Shift+8 move container to workspace $ws8\nbindsym $mod+Shift+9 move container to workspace $ws9\nbindsym $mod+Shift+0 move container to workspace $ws10\n\n# Restart i3 inplace (preserves your layout/session, can be used to upgrade i3)\nbindsym $mod+Shift+r restart\n\n# Exit i3 (logs you out of your X session)\nbindsym $mod+Shift+e exec \"i3-nagbar -t warning -m 'You pressed the exit shortcut. Do you really want to exit i3? This will end your X session.' -b 'Yes, exit i3' 'i3-msg exit'\"\n\n# Resize window\n# Mod1 = Alt\nbindsym $mod+Mod1+h resize shrink width 1 px or 1 ppt\nbindsym $mod+Mod1+j resize grow height 1 px or 1 ppt\nbindsym $mod+Mod1+k resize shrink height 1 px or 1 ppt\nbindsym $mod+Mod1+l resize grow width 1 px or 1 ppt\n\n# Launch terminal\nbindsym $mod+Return exec alacritty --working-directory=\"$(command -v xcwd >/dev/null && xcwd | awk -F '\\n' '{print $1}'|| echo $HOME)\" \n\n# Launch a terminal with vifm\nbindsym $mod+Shift+Return exec alacritty --working-directory=\"$(command -v xcwd >/dev/null && xcwd | awk -F '\\n' '{print $1}' || echo $HOME)\" -e vifmrun\n\n# Keybindings that do things using rofi\nbindsym $mod+space exec --no-startup-id rofi -show drun\nbindsym $mod+n exec bash $HOME/bin/keybinded/rofi_notes.sh \nbindsym $mod+ae exec bash $HOME/bin/keybinded/rofi_todo.sh\nbindsym $mod+v exec rofi -modi \"clipboard:greenclip print\" -show clipboard -run-command '{cmd}' && xdotool key ctrl+shift+v\nbindsym $mod+Shift+d exec bash $HOME/.config/rofi/scripts/rofi-picker.sh\nbindsym $mod+o exec zsh -c \"bash $HOME/.config/rofi/scripts/rofi-finder.sh $HOME\"\nbindsym $mod+Shift+c exec bash $HOME/.config/rofi/scripts/rofi-farge.sh\n\n# Lauch my Calculator \nbindsym XF86Calculator exec qalculate-gtk \n\n# Volume controls\nbindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ 0 && pactl set-sink-volume @DEFAULT_SINK@ +5% \nbindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ 0 && pactl set-sink-volume @DEFAULT_SINK@ -5% \nbindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle\n\n# Music control\nbindsym XF86AudioNext exec --no-startup-id bash $HOME/bin/keybinded/music_ctrl.sh next  \nbindsym XF86AudioPrev exec --no-startup-id bash $HOME/bin/keybinded/music_ctrl.sh previous\nbindsym XF86AudioPlay exec --no-startup-id bash $HOME/bin/keybinded/music_ctrl.sh toggle\nbindsym XF86AudioStop exec --no-startup-id bash $HOME/bin/keybinded/music_ctrl.sh pause \n\n# Toggle mic\nbindsym XF86AudioMicMute exec --no-startup-id pactl set-source-mute 0 toggle\n\n# Brightness control\nbindsym XF86MonBrightnessUp exec brightnessctl s 5%+\nbindsym XF86MonBrightnessDown exec brightnessctl s 5%-\n\n# Screenshot selected area\n# You need to use `--release` in the binding.\n# See \"4.3. Keyboard bindings\" on i3wm docs \nbindsym $mod+Shift+x --release exec flameshot gui\n\n# Select color from screen and save the value to clipboard \nbindsym $mod+c --release exec farge --no-color-code --no-preview\n\n# Rotating the display. Keybinings taken from Windows.\nbindsym Control+Mod1+Up exec xrandr -o normal\nbindsym Control+Mod1+Down exec xrandr -o inverted \nbindsym Control+Mod1+Right exec xrandr -x \n\n# Hide/unhide windows. A little similar to minimizing/maximizing\n# windows on a DE \nbindsym $mod+m move scratchpad\nbindsym $mod+shift+m scratchpad show\n\n# Control dunst notifications\nbindsym Control+space exec dunstctl close\n#bindsym Control+Shift+space exec dunstctl all \nbindsym Control+Shift+period exec dunstctl context \n\n# Lock my screen\nbindsym $mod+x exec betterlockscreen --lock\n\n# Launch Thunar\nbindsym $mod+E exec thunar &\n\n#}}}\n\n\n# Autorun {{{ \n# exec -> On start-up\n# exec_always -> On start-up and reload\nexec_always --no-startup-id feh pictures/current/* --bg-fill --no-fehbg\nexec_always --no-startup-id picom\nexec_always --no-startup-id bash $HOME/bin/keybinded/brightness/restoreBrightness.sh\nexec_always --no-startup-id bash $HOME/.config/polybar/launch.sh\nexec_always --no-startup-id dunst\nexec_always --no-startup-id i3-auto-layout \nexec_always --no-startup-id flameshot \nexec_always --no-startup-id xfce4-power-manager\nexec_always --no-startup-id greenclip daemon\nexec_always --no-startup-id nm-applet \n\n#exec --no-startup-id /usr/lib/gsd-xsettings\nexec --no-startup-id /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1\n#}}}\n\n\n# Window rules {{{ \n# Gives a border to the windows. \nfor_window [class=\"^.*\"] border pixel 1\n\n# class                 border  backgr. text    indicator child_border\nclient.focused          #2c2f3e #2c2f3e #F5C2E7 #8c8c8c   #8c8c8c\nclient.focused_inactive #2c2f3e #2c2f3e #F5C2E7 #333333   #333333\nclient.unfocused        #121317 #121317 #D9E0EE #333333   #333333\nclient.urgent           #f28fad #f28fad #000000 #333333   #f28fad\nclient.placeholder      #333333 #333333 #000000 #333333   #333333\n\n# Dialogs, popups, etc should be floating and in the center of the screen\nfor_window [window_role=\"task_dialog\"]      floating enable, move absolute position center, border pixel 0\nfor_window [window_role=\"Dialog\"]           floating enable, move absolute position center, border pixel 0\nfor_window [window_role=\"pop-up\"]           floating enable, move absolute position center                     \nfor_window [window_role=\"bubble\"]           floating enable, move absolute position center\nfor_window [window_role=\"Preferences\"]      floating enable, move absolute position center\nfor_window [window_type=\"dialog\"]           floating enable, move absolute position center, border pixel 0\nfor_window [window_type=\"menu\"]             floating enable, move absolute position center\nfor_window [title=\"(Open File|File Upload)\"] floating enable, move absolute position center\n\nfor_window [class=\"zoom\"] floating enable\nfor_window [class=\"[Bb]lueberry.py\"] floating enable\nfor_window [class=\"mpv\"] floating enable\nfor_window [class=\"[qQ]alculate-gtk\"] floating enable\nfor_window [class=\"[Ss]imple[Ss]creen[Rr]ecorder\"] floating enable\nfor_window [class=\"[Gg]nome-calendar\"] floating enable\nfor_window [class=\"[Dd]ragon-drag-and-drop\"] floating enable, border pixel 0\nfor_window [class=\"Windscribe[2]\"] floating enable, border pixel 0\nfor_window [class=\"die\"] floating enable\nfor_window [class=\"[Xx][Cc]alc\"] floating enable\nfor_window [class=\"[N]sxiv\"] floating enable\n\n# Prevent mouse from changing the focus\nfocus_follows_mouse yes\n\n# Fixes graphics glitch\nnew_window none\n#}}}\n\n"
  },
  {
    "path": "mimetype/.config/mimeapps.list",
    "content": "[Default Applications]\ninode/directory=thunar.desktop;\ntext/x-shellscript=text.desktop;\ntext/plain=text.desktop;\ntext/x-makefile=text.desktop;\nimage/png=img.desktop;\nimage/jpeg=img.desktop;\nimage/gif=img.desktop;\napplication/pdf=pdf.desktop;\nvideo/x-matroska=video.desktop;\nvideo/mp4=video.desktop;\nx-scheme-handler/http=browser.desktop;\nx-scheme-handler/https=browser.desktop;\n\n[Added Associations]\napplication/json=text.desktop;\n"
  },
  {
    "path": "mimetype/.local/share/applications/browser.desktop",
    "content": "[Desktop Entry]\nType=Application\nName=Web Browser\nExec=/usr/bin/firefox %u\n"
  },
  {
    "path": "mimetype/.local/share/applications/img.desktop",
    "content": "[Desktop Entry]\nType=Application\nName=Image viewer\nExec=/usr/bin/nsxiv -a %f\n"
  },
  {
    "path": "mimetype/.local/share/applications/pdf.desktop",
    "content": "[Desktop Entry]\nType=Application\nName=PDF reader\nExec=/usr/bin/firefox  %u\n"
  },
  {
    "path": "mimetype/.local/share/applications/text.desktop",
    "content": "[Desktop Entry]\nType=Application\nName=Text editor\nExec=/usr/bin/alacritty -e nvim %u\n"
  },
  {
    "path": "mimetype/.local/share/applications/video.desktop",
    "content": "[Desktop Entry]\nType=Application\nName=Video viewer\nExec=/usr/bin/mpv -quiet \"%u\"\n"
  },
  {
    "path": "mpv/.config/mpv/input.conf",
    "content": "# Seeking\nl seek 5    # Forward\nh seek -5   # Rewind\n\n# Volume controle\nj add volume -2   # Decrease volume\nk add volume 2    # Increase volume\n\n# Hit the space bar to play/pause\nSPACE cycle pause\n\n# Quit mpv\nq quit\n\n# Zoom in and out\n+ add video-zoom 0.1\n- add video-zoom -0.1\n\n# Vim like keybindings to pan\nH add video-pan-x  0.1    # Pan left\nL add video-pan-x -0.1    # Pan right\nK add video-pan-y  0.1    # Pan up\nJ add video-pan-y -0.1    # Pan down\n\n# Reset the panning and zooming\n= set video-zoom 0 ; set video-pan-x 0 ; set video-pan-y 0\n\n# Mute/Unmute\nm cycle mute\n\n# Next/Prev in playlist\nn playlist-next\np playlist-prev\n\n# Disable the arrow keys because I rather\n# get used to VIM keys\nleft ignore\nright ignore\nup ignore\ndown ignore\n\n# Rotate\nCtrl+r no-osd cycle-values video-rotate  \"90\" \"180\" \"270\" \"0\"\n\n# Open curren file in dragon so you can drag and drop it\nCtrl+o run \"/bin/bash\" \"-c\" \"dragon-drag-and-drop \\\"${path}\\\"\"\n\n# Copy the full path of the current file\nCtrl+c run \"/bin/bash\" \"-c\" \"echo $PWD/${path} | xclip -selection c && dunstify mpv \\\"File path copied to clipboard\\\"\"\n\n# Copy only the name of the file\nCtrl+Shift+c run \"/bin/bash\" \"-c\" \"echo ${path} | xclip -selection c && dunstify mpv \\\"File name copied to clipboard\\\"\"\n"
  },
  {
    "path": "mpv/.config/mpv/mpv.conf",
    "content": "# Adjusting the initial window size\ngeometry=36%\n\n# Disable On Screen Controlers\nosc=no\n\n# uosc provides its own seeking/volume indicators, so you also don't need this\nosd-bar=no\n# uosc will draw its own window controls if you disable window border\nborder=no\n\n# Enable the best hardware decoder\nhwdec=yes\n\n# If the current file is an image, keep\n# it open forever\nimage-display-duration=inf\n\n# Loops the playlist forever\nloop-playlist=inf\n\n# Loop files in case of webms or gifs\nloop-file=inf\n\n# I honestly dont know what these lines\n# do, but all I know is that these lines\n# allow me to display images properly\n# source: https://git.io/fjvtn\nscale=spline36\ncscale=spline36\ndscale=mitchell\ndither-depth=auto\ncorrect-downscaling\nsigmoid-upscaling\n\nscript-opts=ytdl_hook-ytdl_path=yt-dlp\n\n[extension.mp3]\ngeometry=250x250\n\n"
  },
  {
    "path": "mpv/.config/mpv/scripts/uosc.lua",
    "content": "--[[\n\nuosc 2.16.0 - 2022-Mar-21 | https://github.com/darsain/uosc\n\nMinimalist cursor proximity based UI for MPV player.\n\nuosc replaces the default osc UI, so that has to be disabled first.\nPlace these options into your `mpv.conf` file:\n\n```\n# required so that the 2 UIs don't fight each other\nosc=no\n# uosc provides its own seeking/volume indicators, so you also don't need this\nosd-bar=no\n# uosc will draw its own window controls if you disable window border\nborder=no\n```\n\nOptions go in `script-opts/uosc.conf`. Defaults:\n\n```\n# timeline size when fully retracted, 0 will hide it completely\ntimeline_size_min=2\n# timeline size when fully expanded, in pixels, 0 to disable\ntimeline_size_max=40\n# same as ^ but when in fullscreen\ntimeline_size_min_fullscreen=0\ntimeline_size_max_fullscreen=60\n# same thing as calling toggle-progress command once on startup\ntimeline_start_hidden=no\n# comma separated states when timeline should always be visible. available: paused, audio\ntimeline_persistency=\n# timeline opacity\ntimeline_opacity=0.8\n# top border of background color to help visually separate timeline from video\ntimeline_border=1\n# when scrolling above timeline, wheel will seek by this amount of seconds\ntimeline_step=5\n# display seekable buffered ranges for streaming videos, syntax `color:opacity`,\n# color is an BBGGRR hex code, set to `none` to disable\ntimeline_cached_ranges=345433:0.5\n# floating number font scale adjustment\ntimeline_font_scale=1\n\n# timeline chapters style: none, dots, lines, lines-top, lines-bottom\nchapters=dots\nchapters_opacity=0.3\n\n# where to display volume controls: none, left, right\nvolume=right\nvolume_size=40\nvolume_size_fullscreen=60\nvolume_persistency=\nvolume_opacity=0.8\nvolume_border=1\nvolume_step=1\nvolume_font_scale=1\n\n# playback speed widget: mouse drag or wheel to change, click to reset\nspeed=no\nspeed_size=46\nspeed_size_fullscreen=68\nspeed_persistency=\nspeed_opacity=1\nspeed_step=0.1\nspeed_font_scale=1\n\n# controls all menus, such as context menu, subtitle loader/selector, etc\nmenu_item_height=36\nmenu_item_height_fullscreen=50\nmenu_wasd_navigation=no\nmenu_hjkl_navigation=no\nmenu_opacity=0.8\nmenu_font_scale=1\n\n# menu button widget\n# can be: never, bottom-bar, center\nmenu_button=never\nmenu_button_size=26\nmenu_button_size_fullscreen=30\nmenu_button_persistency=\nmenu_button_opacity=1\nmenu_button_border=1\n\n# top bar with window controls and media title\n# can be: never, no-border, always\ntop_bar=no-border\ntop_bar_size=40\ntop_bar_size_fullscreen=46\ntop_bar_persistency=\ntop_bar_controls=yes\ntop_bar_title=yes\n\n# window border drawn in no-border mode\nwindow_border_size=1\nwindow_border_opacity=0.8\n\n# pause video on clicks shorter than this number of milliseconds, 0 to disable\npause_on_click_shorter_than=0\n# flash duration in milliseconds used by `flash-{element}` commands\nflash_duration=1000\n# distances in pixels below which elements are fully faded in/out\nproximity_in=40\nproximity_out=120\n# BBGGRR - BLUE GREEN RED hex color codes\ncolor_foreground=ffffff\ncolor_foreground_text=000000\ncolor_background=000000\ncolor_background_text=ffffff\n# use bold font weight throughout the whole UI\nfont_bold=no\n# show total time instead of time remaining\ntotal_time=no\n# hide UI when mpv autohides the cursor\nautohide=no\n# can be: none, flash, static, manual (controlled by flash-pause-indicator and decide-pause-indicator commands)\npause_indicator=flash\n# screen dim when stuff like menu is open, 0 to disable\ncurtain_opacity=0.5\n# sizes to list in stream quality menu\nstream_quality_options=4320,2160,1440,1080,720,480,360,240,144\n# load first file when calling next on a last file in a directory and vice versa\ndirectory_navigation_loops=no\n# file types to look for when navigating media files\nmedia_types=3gp,avi,bmp,flac,flv,gif,h264,h265,jpeg,jpg,m4a,m4v,mid,midi,mkv,mov,mp3,mp4,mp4a,mp4v,mpeg,mpg,oga,ogg,ogm,ogv,opus,png,rmvb,svg,tif,tiff,wav,weba,webm,webp,wma,wmv\n# file types to look for when loading external subtitles\nsubtitle_types=aqt,gsub,jss,sub,ttxt,pjs,psb,rt,smi,slt,ssf,srt,ssa,ass,usf,idx,vt\n# used to approximate text width\n# if you are using some wide font and see a lot of right side clipping in menus,\n# try bumping this up\nfont_height_to_letter_width_ratio=0.5\n\n# `chapter_ranges` lets you transform chapter indicators into range indicators.\n#\n# Chapter range definition syntax:\n# ```\n# start_pattern<color:opacity>end_pattern\n# ```\n#\n# Multiple start and end patterns can be defined by separating them with `|`:\n# ```\n# p1|pN<color:opacity>p1|pN\n# ```\n#\n# Multiple chapter ranges can be defined by separating them with comma:\n#\n# chapter_ranges=range1,rangeN\n#\n# One of `start_pattern`s can be a custom keyword `{bof}` that will match\n# beginning of file when it makes sense.\n#\n# One of `end_pattern`s can be a custom keyword `{eof}` that will match end of\n# file when it makes sense.\n#\n# Patterns are lua patterns (http://lua-users.org/wiki/PatternsTutorial).\n# They only need to occur in a title, not match it completely.\n# Matching is case insensitive.\n#\n# `color` is a `bbggrr` hexadecimal color code.\n# `opacity` is a float number from 0 to 1.\n#\n# Examples:\n#\n# Display anime openings and endings as ranges:\n# ```\n# chapter_ranges=^op| op$|opening<968638:0.5>.*, ^ed| ed$|^end|ending$<968638:0.5>.*|{eof}\n# ```\n#\n# Display skippable youtube video sponsor blocks from https://github.com/po5/mpv_sponsorblock\n# ```\n# chapter_ranges=sponsor start<3535a5:.5>sponsor end, segment start<3535a5:0.5>segment end\n# ```\nchapter_ranges=^op| op$|opening<968638:0.5>.*, ^ed| ed$|^end|ending$<968638:0.5>.*|{eof}, sponsor start<3535a5:.5>sponsor end, segment start<3535a5:0.5>segment end\n```\n\nAvailable keybindings (place into `input.conf`):\n\n```\nKey  script-binding uosc/peek-timeline\nKey  script-binding uosc/toggle-progress\nKey  script-binding uosc/flash-timeline\nKey  script-binding uosc/flash-top-bar\nKey  script-binding uosc/flash-volume\nKey  script-binding uosc/flash-speed\nKey  script-binding uosc/flash-pause-indicator\nKey  script-binding uosc/decide-pause-indicator\nKey  script-binding uosc/menu\nKey  script-binding uosc/load-subtitles\nKey  script-binding uosc/subtitles\nKey  script-binding uosc/audio\nKey  script-binding uosc/video\nKey  script-binding uosc/playlist\nKey  script-binding uosc/chapters\nKey  script-binding uosc/stream-quality\nKey  script-binding uosc/open-file\nKey  script-binding uosc/next\nKey  script-binding uosc/prev\nKey  script-binding uosc/first\nKey  script-binding uosc/last\nKey  script-binding uosc/next-file\nKey  script-binding uosc/prev-file\nKey  script-binding uosc/first-file\nKey  script-binding uosc/last-file\nKey  script-binding uosc/delete-file-next\nKey  script-binding uosc/delete-file-quit\nKey  script-binding uosc/show-in-directory\nKey  script-binding uosc/open-config-directory\n```\n]]\n\nif mp.get_property('osc') == 'yes' then\n\tmp.msg.info('Disabled because original osc is enabled!')\n\treturn\nend\n\nlocal assdraw = require('mp.assdraw')\nlocal opt = require('mp.options')\nlocal utils = require('mp.utils')\nlocal msg = require('mp.msg')\nlocal osd = mp.create_osd_overlay('ass-events')\nlocal infinity = 1e309\n\n-- OPTIONS/CONFIG/STATE\nlocal options = {\n\ttimeline_size_min = 2,\n\ttimeline_size_max = 40,\n\ttimeline_size_min_fullscreen = 0,\n\ttimeline_size_max_fullscreen = 60,\n\ttimeline_start_hidden = false,\n\ttimeline_persistency = '',\n\ttimeline_opacity = 0.8,\n\ttimeline_border = 1,\n\ttimeline_step = 5,\n\ttimeline_cached_ranges = '345433:0.5',\n\ttimeline_font_scale = 1,\n\n\tchapters = 'dots',\n\tchapters_opacity = 0.3,\n\n\tvolume = 'right',\n\tvolume_size = 40,\n\tvolume_size_fullscreen = 60,\n\tvolume_persistency = '',\n\tvolume_opacity = 0.8,\n\tvolume_border = 1,\n\tvolume_step = 1,\n\tvolume_font_scale = 1,\n\n\tspeed = false,\n\tspeed_size = 46,\n\tspeed_size_fullscreen = 60,\n\tspeed_persistency = '',\n\tspeed_opacity = 1,\n\tspeed_step = 0.1,\n\tspeed_font_scale = 1,\n\n\tmenu_item_height = 36,\n\tmenu_item_height_fullscreen = 50,\n\tmenu_wasd_navigation = false,\n\tmenu_hjkl_navigation = false,\n\tmenu_opacity = 0.8,\n\tmenu_font_scale = 1,\n\n\tmenu_button = 'never',\n\tmenu_button_size = 26,\n\tmenu_button_size_fullscreen = 30,\n\tmenu_button_opacity = 1,\n\tmenu_button_persistency = '',\n\tmenu_button_border = 1,\n\n\ttop_bar = 'no-border',\n\ttop_bar_size = 40,\n\ttop_bar_size_fullscreen = 46,\n\ttop_bar_persistency = '',\n\ttop_bar_controls = true,\n\ttop_bar_title = true,\n\n\twindow_border_size = 1,\n\twindow_border_opacity = 0.8,\n\tpause_on_click_shorter_than = 0,\n\tflash_duration = 1000,\n\tproximity_in = 40,\n\tproximity_out = 120,\n\tcolor_foreground = 'ffffff',\n\tcolor_foreground_text = '000000',\n\tcolor_background = '000000',\n\tcolor_background_text = 'ffffff',\n\ttotal_time = false,\n\tfont_bold = false,\n\tautohide = false,\n\tpause_indicator = 'flash',\n\tcurtain_opacity = 0.5,\n\tstream_quality_options = '4320,2160,1440,1080,720,480,360,240,144',\n\tdirectory_navigation_loops = false,\n\tmedia_types = '3gp,asf,avi,bmp,flac,flv,gif,h264,h265,jpeg,jpg,m4a,m4v,mid,midi,mkv,mov,mp3,mp4,mp4a,mp4v,mpeg,mpg,oga,ogg,ogm,ogv,opus,png,rmvb,svg,tif,tiff,wav,weba,webm,webp,wma,wmv',\n\tsubtitle_types = 'aqt,gsub,jss,sub,ttxt,pjs,psb,rt,smi,slt,ssf,srt,ssa,ass,usf,idx,vt',\n\tfont_height_to_letter_width_ratio = 0.5,\n\tchapter_ranges = '^op| op$|opening<968638:0.5>.*, ^ed| ed$|^end|ending$<968638:0.5>.*|{eof}, sponsor start<3535a5:.5>sponsor end, segment start<3535a5:0.5>segment end',\n}\nopt.read_options(options, 'uosc')\nlocal config = {\n\trender_delay = 0.03, -- sets max rendering frequency\n\tfont = mp.get_property('options/osd-font'),\n\tmenu_parent_opacity = 0.4,\n\tmenu_min_width = 260\n}\nlocal bold_tag = options.font_bold and '\\\\b1' or ''\nlocal display = {\n\twidth = 1280,\n\theight = 720,\n\taspect = 1.77778,\n}\nlocal cursor = {\n\thidden = true, -- true when autohidden or outside of the player window\n\tx = 0,\n\ty = 0,\n}\nlocal state = {\n\tos = (function()\n\t\tif os.getenv('windir') ~= nil then return 'windows' end\n\t\tlocal homedir = os.getenv('HOME')\n\t\tif homedir ~= nil and string.sub(homedir,1,6) == '/Users' then return 'macos' end\n\t\treturn 'linux'\n\tend)(),\n\tcwd = mp.get_property('working-directory'),\n\tmedia_title = '',\n\tduration = nil,\n\tposition = nil,\n\tpause = false,\n\tchapters = nil,\n\tchapter_ranges = nil,\n\tborder = mp.get_property_native('border'),\n\tfullscreen = mp.get_property_native('fullscreen'),\n\tmaximized = mp.get_property_native('window-maximized'),\n\tfullormaxed = mp.get_property_native('fullscreen') or mp.get_property_native('window-maximized'),\n\trender_timer = nil,\n\trender_last_time = 0,\n\tvolume = nil,\n\tvolume_max = nil,\n\tmute = nil,\n\tis_audio = nil, -- true if file is audio only (mp3, etc)\n\tcursor_autohide_timer = mp.add_timeout(mp.get_property_native('cursor-autohide') / 1000, function()\n\t\tif not options.autohide then return end\n\t\thandle_mouse_leave()\n\tend),\n\tmouse_bindings_enabled = false,\n\tcached_ranges = nil,\n}\nlocal forced_key_bindings -- defined at the bottom next to events\n\n-- HELPERS\n\nfunction round(number)\n\tlocal modulus = number % 1\n\treturn modulus < 0.5 and math.floor(number) or math.ceil(number)\nend\n\nfunction call_me_maybe(fn, value1, value2, value3)\n\tif fn then fn(value1, value2, value3) end\nend\n\nfunction split(str, pattern)\n\tlocal list = {}\n\tlocal full_pattern = '(.-)' .. pattern\n\tlocal last_end = 1\n\tlocal start_index, end_index, capture = str:find(full_pattern, 1)\n\twhile start_index do\n\t\tlist[#list +1] = capture\n\t\tlast_end = end_index + 1\n\t\tstart_index, end_index, capture = str:find(full_pattern, last_end)\n\tend\n\tif last_end <= (#str + 1) then\n\t\tcapture = str:sub(last_end)\n\t\tlist[#list +1] = capture\n\tend\n\treturn list\nend\n\nfunction itable_find(haystack, needle)\n\tlocal is_needle = type(needle) == 'function' and needle or function(index, value)\n\t\treturn value == needle\n\tend\n\tfor index, value in ipairs(haystack) do\n\t\tif is_needle(index, value) then return index, value end\n\tend\nend\n\nfunction itable_filter(haystack, needle)\n\tlocal is_needle = type(needle) == 'function' and needle or function(index, value)\n\t\treturn value == needle\n\tend\n\tlocal filtered = {}\n\tfor index, value in ipairs(haystack) do\n\t\tif is_needle(index, value) then filtered[#filtered + 1] = value end\n\tend\n\treturn filtered\nend\n\nfunction itable_remove(haystack, needle)\n\tlocal should_remove = type(needle) == 'function' and needle or function(value)\n\t\treturn value == needle\n\tend\n\tlocal new_table = {}\n\tfor _, value in ipairs(haystack) do\n\t\tif not should_remove(value) then\n\t\t\tnew_table[#new_table + 1] = value\n\t\tend\n\tend\n\treturn new_table\nend\n\nfunction itable_slice(haystack, start_pos, end_pos)\n\tstart_pos = start_pos and start_pos or 1\n\tend_pos = end_pos and end_pos or #haystack\n\n\tif end_pos < 0 then end_pos = #haystack + end_pos + 1 end\n\tif start_pos < 0 then start_pos = #haystack + start_pos + 1 end\n\n\tlocal new_table = {}\n\tfor index, value in ipairs(haystack) do\n\t\tif index >= start_pos and index <= end_pos then\n\t\t\tnew_table[#new_table + 1] = value\n\t\tend\n\tend\n\treturn new_table\nend\n\nfunction table_copy(table)\n\tlocal new_table = {}\n\tfor key, value in pairs(table) do new_table[key] = value end\n\treturn new_table\nend\n\n-- Sorting comparator close to (but not exactly) how file explorers sort files\nlocal word_order_comparator = (function()\n\tlocal symbol_order\n\tlocal default_order\n\n\tif state.os == 'win' then\n\t\tsymbol_order = {\n\t\t\t['!'] = 1, ['#'] = 2, ['$'] = 3, ['%'] = 4, ['&'] = 5, ['('] = 6, [')'] = 6, [','] = 7,\n\t\t\t['.'] = 8, [\"'\"] = 9, ['-'] = 10, [';'] = 11, ['@'] = 12, ['['] = 13, [']'] = 13, ['^'] = 14,\n\t\t\t['_'] = 15, ['`'] = 16, ['{'] = 17, ['}'] = 17, ['~'] = 18, ['+'] = 19, ['='] = 20,\n\t\t}\n\t\tdefault_order = 21\n\telse\n\t\tsymbol_order = {\n\t\t\t['`'] = 1, ['^'] = 2, ['~'] = 3, ['='] = 4, ['_'] = 5, ['-'] = 6, [','] = 7, [';'] = 8,\n\t\t\t['!'] = 9, [\"'\"] = 10, ['('] = 11, [')'] = 11, ['['] = 12, [']'] = 12, ['{'] = 13, ['}'] = 14,\n\t\t\t['@'] = 15, ['$'] = 16, ['*'] = 17, ['&'] = 18, ['%'] = 19, ['+'] = 20, ['.'] = 22, ['#'] = 23,\n\t\t}\n\t\tdefault_order = 21\n\tend\n\n\treturn function (a, b)\n\t\ta = a:lower()\n\t\tb = b:lower()\n\t\tfor i = 1, math.max(#a, #b) do\n\t\t\tlocal ai = a:sub(i, i)\n\t\t\tlocal bi = b:sub(i, i)\n\t\t\tif ai == nil and bi then return true end\n\t\t\tif bi == nil and ai then return false end\n\t\t\tlocal a_order = symbol_order[ai] or default_order\n\t\t\tlocal b_order = symbol_order[bi] or default_order\n\t\t\tif a_order == b_order then\n\t\t\t\treturn a < b\n\t\t\telse\n\t\t\t\treturn a_order < b_order\n\t\t\tend\n\t\tend\n\tend\nend)()\n\n-- Creates in-between frames to animate value from `from` to `to` numbers.\n-- Returns function that terminates animation.\n-- `to` can be a function that returns target value, useful for movable targets.\n-- `speed` is an optional float between 1-instant and 0-infinite duration\n-- `callback` is called either on animation end, or when animation is canceled\nfunction tween(from, to, setter, speed, callback)\n\tif type(speed) ~= 'number' then\n\t\tcallback = speed\n\t\tspeed = 0.3\n\tend\n\tlocal timeout\n\tlocal getTo = type(to) == 'function' and to or function() return to end\n\tlocal cutoff = math.abs(getTo() - from) * 0.01\n\tfunction tick()\n\t\tfrom = from + ((getTo() - from) * speed)\n\t\tlocal is_end = math.abs(getTo() - from) <= cutoff\n\t\tsetter(is_end and getTo() or from)\n\t\trequest_render()\n\t\tif is_end then\n\t\t\tcall_me_maybe(callback)\n\t\telse\n\t\t\ttimeout:resume()\n\t\tend\n\tend\n\ttimeout = mp.add_timeout(0.016, tick)\n\ttick()\n\treturn function()\n\t\ttimeout:kill()\n\t\tcall_me_maybe(callback)\n\tend\nend\n\n-- Kills ongoing animation if one is already running on this element.\n-- Killed animation will not get its `on_end` called.\nfunction tween_element(element, from, to, setter, speed, callback)\n\tif type(speed) ~= 'number' then\n\t\tcallback = speed\n\t\tspeed = 0.3\n\tend\n\n\ttween_element_stop(element)\n\n\telement.stop_current_animation = tween(\n\t\tfrom, to,\n\t\tfunction(value) setter(element, value) end,\n\t\tspeed,\n\t\tfunction()\n\t\t\telement.stop_current_animation = nil\n\t\t\tcall_me_maybe(callback, element)\n\t\tend\n\t)\nend\n\n-- Stopped animation will not get its on_end called.\nfunction tween_element_is_tweening(element)\n\treturn element and element.stop_current_animation\nend\n\n-- Stopped animation will not get its on_end called.\nfunction tween_element_stop(element)\n\tcall_me_maybe(element and element.stop_current_animation)\nend\n\n-- Helper to automatically use an element property setter\nfunction tween_element_property(element, prop, from, to, speed, callback)\n\ttween_element(element, from, to, function(_, value) element[prop] = value end, speed, callback)\nend\n\nfunction get_point_to_rectangle_proximity(point, rect)\n\tlocal dx = math.max(rect.ax - point.x, 0, point.x - rect.bx + 1)\n\tlocal dy = math.max(rect.ay - point.y, 0, point.y - rect.by + 1)\n\treturn math.sqrt(dx*dx + dy*dy);\nend\n\nfunction text_width_estimate(letters, font_size)\n\treturn letters and letters * font_size * options.font_height_to_letter_width_ratio or 0\nend\n\nfunction opacity_to_alpha(opacity)\n\treturn 255 - math.ceil(255 * opacity)\nend\n\nfunction ass_opacity(opacity, fraction)\n\tfraction = fraction ~= nil and fraction or 1\n\tif type(opacity) == 'number' then\n\t\treturn string.format('{\\\\alpha&H%X&}', opacity_to_alpha(opacity * fraction))\n\telse\n\t\treturn string.format(\n\t\t\t'{\\\\1a&H%X&\\\\2a&H%X&\\\\3a&H%X&\\\\4a&H%X&}',\n\t\t\topacity_to_alpha((opacity[1] or 0) * fraction),\n\t\t\topacity_to_alpha((opacity[2] or 0) * fraction),\n\t\t\topacity_to_alpha((opacity[3] or 0) * fraction),\n\t\t\topacity_to_alpha((opacity[4] or 0) * fraction)\n\t\t)\n\tend\nend\n\n-- Ensures path is absolute and normalizes slashes to the current platform\nfunction normalize_path(path)\n\tif not path or is_protocol(path) then return path end\n\n\t-- Ensure path is absolute\n\tif not (path:match('^/') or path:match('^%a+:') or path:match('^\\\\\\\\')) then\n\t\tpath = utils.join_path(state.cwd, path)\n\tend\n\n\t-- Use proper slashes\n\tif state.os == 'windows' then\n\t\treturn path:gsub('/', '\\\\')\n\telse\n\t\treturn path:gsub('\\\\', '/')\n\tend\nend\n\n-- Check if path is a protocol, such as `http://...`\nfunction is_protocol(path)\n\treturn path:match('^%a[%a%d-_]+://')\nend\n\nfunction get_extension(path)\n\tlocal parts = split(path, '%.')\n\treturn parts and #parts > 1 and parts[#parts] or nil\nend\n\n-- Serializes path into its semantic parts\nfunction serialize_path(path)\n\tif not path or is_protocol(path) then return end\n\tpath = normalize_path(path)\n\tlocal parts = split(path, '[\\\\/]+')\n\tif parts[#parts] == '' then table.remove(parts, #parts) end -- remove trailing separator\n\tlocal basename = parts and parts[#parts] or path\n\tlocal dirname = #parts > 1 and table.concat(itable_slice(parts, 1, #parts - 1), state.os == 'windows' and '\\\\' or '/') or nil\n\tlocal dot_split = split(basename, '%.')\n\treturn {\n\t\tpath = path:sub(-1) == ':' and state.os == 'windows' and path..'\\\\' or path,\n\t\tis_root = dirname == nil,\n\t\tdirname = dirname,\n\t\tbasename = basename,\n\t\tfilename = #dot_split > 1 and table.concat(itable_slice(dot_split, 1, #dot_split - 1), '.') or basename,\n\t\textension = #dot_split > 1 and dot_split[#dot_split] or nil,\n\t}\nend\n\nfunction get_files_in_directory(directory, allowed_types)\n\tlocal files, error = utils.readdir(directory, 'files')\n\n\tif not files then\n\t\tmsg.error('Retrieving files failed: '..(error or ''))\n\t\treturn\n\tend\n\n\t-- Filter only requested file types\n\tif allowed_types then\n\t\tfiles = itable_filter(files, function(_, file)\n\t\t\tlocal extension = get_extension(file)\n\t\t\treturn extension and itable_find(allowed_types, extension:lower())\n\t\tend)\n\tend\n\n\ttable.sort(files, word_order_comparator)\n\n\treturn files\nend\n\nfunction get_adjacent_file(file_path, direction, allowed_types)\n\tlocal current_file = serialize_path(file_path)\n\tlocal files = get_files_in_directory(current_file.dirname, allowed_types)\n\n\tif not files then return end\n\n\tfor index, file in ipairs(files) do\n\t\tif current_file.basename == file then\n\t\t\tif direction == 'forward' then\n\t\t\t\tif files[index + 1] then return utils.join_path(current_file.dirname, files[index + 1]) end\n\t\t\t\tif options.directory_navigation_loops and files[1] then return utils.join_path(current_file.dirname, files[1]) end\n\t\t\telse\n\t\t\t\tif files[index - 1] then return utils.join_path(current_file.dirname, files[index - 1]) end\n\t\t\t\tif options.directory_navigation_loops and files[#files] then return utils.join_path(current_file.dirname, files[#files]) end\n\t\t\tend\n\n\t\t\t-- This is the only file in directory\n\t\t\treturn nil\n\t\tend\n\tend\nend\n\n-- Can't use `os.remove()` as it fails on paths with unicode characters.\n-- Returns `result, error`, result is table of `status:number(<0=error), stdout, stderr, error_string, killed_by_us:boolean`\nfunction delete_file(file_path)\n\tlocal args = state.os == 'windows' and {'cmd', '/C', 'del', file_path} or {'rm', file_path}\n\treturn mp.command_native({name = 'subprocess', args = args, playback_only = false, capture_stdout = true, capture_stderr = true})\nend\n\n-- Ensures chapters are in chronological order\nfunction get_normalized_chapters()\n\tlocal chapters = mp.get_property_native('chapter-list')\n\n\tif not chapters then return end\n\n\t-- Copy table\n\tchapters = itable_slice(chapters)\n\n\t-- Ensure chronological order of chapters\n\ttable.sort(chapters, function(a, b) return a.time < b.time end)\n\n\treturn chapters\nend\n\nfunction is_element_persistent(name)\n\tlocal option_name = name..'_persistency';\n\treturn (options[option_name].audio and state.is_audio) or (options[option_name].paused and state.pause)\nend\n\n-- Element\n--[[\nSignature:\n{\n\t-- element rectangle coordinates\n\tax = 0, ay = 0, bx = 0, by = 0,\n\t-- cursor<>element relative proximity as a 0-1 floating number\n\t-- where 0 = completely away, and 1 = touching/hovering\n\t-- so it's easy to work with and throw into equations\n\tproximity = 0,\n\t-- raw cursor<>element proximity in pixels\n\tproximity_raw = infinity,\n\t-- called when element is created\n\t?init = function(this),\n\t-- called manually when disposing of element\n\t?destroy = function(this),\n\t-- triggered when event happens and cursor is above element\n\t?on_{event_name} = function(this),\n\t-- triggered when any event happens anywhere on a page\n\t?on_global_{event_name} = function(this),\n\t-- object\n\t?render = function(this_element),\n}\n]]\nlocal Element = {\n\tax = 0, ay = 0, bx = 0, by = 0,\n\tproximity = 0, proximity_raw = infinity,\n}\nElement.__index = Element\n\nfunction Element.new(props)\n\tlocal element = setmetatable(props, Element)\n\telement._eventListeners = {}\n\n\t-- Flash timer\n\telement._flash_out_timer = mp.add_timeout(options.flash_duration / 1000, function()\n\t\tlocal getTo = function() return element.proximity end\n\t\telement:tween_property('forced_proximity', 1, getTo, function()\n\t\t\telement.forced_proximity = nil\n\t\tend)\n\tend)\n\telement._flash_out_timer:kill()\n\n\telement:init()\n\n\treturn element\nend\n\nfunction Element:init() end\nfunction Element:destroy() end\n\n-- Call method if it exists\nfunction Element:maybe(name, ...)\n\tif self[name] then return self[name](self, ...) end\nend\n\n-- Tween helpers\nfunction Element:tween(...) tween_element(self, ...) end\nfunction Element:tween_property(...) tween_element_property(self, ...) end\nfunction Element:tween_stop() tween_element_stop(self) end\nfunction Element:is_tweening() tween_element_is_tweening(self) end\n\n-- Event listeners\nfunction Element:on(name, handler)\n\tif self._eventListeners[name] == nil then self._eventListeners[name] = {} end\n\tlocal preexistingIndex = itable_find(self._eventListeners[name], handler)\n\tif preexistingIndex then\n\t\treturn\n\telse\n\t\tself._eventListeners[name][#self._eventListeners[name] + 1] = handler\n\tend\nend\nfunction Element:off(name, handler)\n\tif self._eventListeners[name] == nil then return end\n\tlocal index = itable_find(self._eventListeners, handler)\n\tif index then table.remove(self._eventListeners, index) end\nend\nfunction Element:trigger(name, ...)\n\tself:maybe('on_'..name, ...)\n\tif self._eventListeners[name] == nil then return end\n\tfor _, handler in ipairs(self._eventListeners[name]) do handler(...) end\n\trequest_render()\nend\n\n-- Briefly flashes the element for `options.flash_duration` milliseconds.\n-- Useful to visualize changes of volume and timeline when changed via hotkeys.\n-- Implemented by briefly adding animated `forced_proximity` property to the element.\nfunction Element:flash()\n\tif options.flash_duration > 0 and (self.proximity < 1 or self._flash_out_timer:is_enabled()) then\n\t\tself:tween_stop()\n\t\tself.forced_proximity = 1\n\t\tself._flash_out_timer:kill()\n\t\tself._flash_out_timer:resume()\n\tend\nend\n\n-- ELEMENTS\n\nlocal Elements = {itable = {}}\nElements.__index = Elements\nlocal elements = setmetatable({}, Elements)\n\nfunction Elements:add(name, element)\n\tlocal insert_index = #Elements.itable + 1\n\n\t-- Replace if element already exists\n\tif self:has(name) then\n\t\tinsert_index = itable_find(Elements.itable, function(_, element)\n\t\t\treturn element.name == name\n\t\tend)\n\tend\n\n\telement.name = name\n\tElements.itable[insert_index] = element\n\tself[name] = element\n\n\trequest_render()\nend\n\nfunction Elements:remove(name, props)\n\tElements.itable = itable_remove(Elements.itable, self[name])\n\tself[name] = nil\n\trequest_render()\nend\n\nfunction Elements:trigger(name, ...)\n\tfor _, element in self:ipairs() do element:trigger(name, ...) end\nend\n\nfunction Elements:has(name) return self[name] ~= nil end\nfunction Elements:ipairs() return ipairs(Elements.itable) end\nfunction Elements:pairs(elements) return pairs(self) end\n\n-- MENU\n--[[\nUsage:\n```\nlocal items = {\n\t{title = 'Foo title', hint = 'Ctrl+F', value = 'foo'},\n\t{title = 'Bar title', hint = 'Ctrl+B', value = 'bar'},\n\t{\n\t\ttitle = 'Submenu',\n\t\titems = {\n\t\t\t{title = 'Sub item 1', value = 'sub1'},\n\t\t\t{title = 'Sub item 2', value = 'sub2'}\n\t\t}\n\t}\n}\n\nfunction open_item(value)\n\tvalue -- value from `item.value`\nend\n\nmenu:open(items, open_item)\n```\n]]\nlocal Menu = {}\nMenu.__index = Menu\nlocal menu = setmetatable({key_bindings = {}, is_closing = false}, Menu)\n\nfunction Menu:is_open(menu_type)\n\treturn elements.menu ~= nil and (not menu_type or elements.menu.type == menu_type)\nend\n\nfunction Menu:open(items, open_item, opts)\n\topts = opts or {}\n\n\tif menu:is_open() then\n\t\tif not opts.parent_menu then\n\t\t\tmenu:close(true, function()\n\t\t\t\tmenu:open(items, open_item, opts)\n\t\t\tend)\n\t\t\treturn\n\t\tend\n\telse\n\t\tmenu:enable_key_bindings()\n\t\telements.curtain:fadein()\n\tend\n\n\telements:add('menu', Element.new({\n\t\ttype = nil, -- menu type such as `menu`, `chapters`, ...\n\t\ttitle = nil,\n\t\twidth = nil,\n\t\theight = nil,\n\t\toffset_x = 0, -- used to animated from/to left when submenu\n\t\titem_height = nil,\n\t\titem_spacing = 1,\n\t\titem_content_spacing = nil,\n\t\tfont_size = nil,\n\t\tscroll_step = nil,\n\t\tscroll_height = nil,\n\t\tscroll_y = 0,\n\t\topacity = 0,\n\t\trelative_parent_opacity = 0.4,\n\t\titems = items,\n\t\tactive_item = nil,\n\t\tselected_item = nil,\n\t\topen_item = open_item,\n\t\tparent_menu = nil,\n\t\tinit = function(this)\n\t\t\t-- Already initialized\n\t\t\tif this.width ~= nil then return end\n\n\t\t\t-- Apply options\n\t\t\tfor key, value in pairs(opts) do this[key] = value end\n\n\t\t\tif not this.selected_item then\n\t\t\t\tthis.selected_item = this.active_item\n\t\t\tend\n\n\t\t\t-- Set initial dimensions\n\t\t\tthis:on_display_change()\n\n\t\t\t-- Scroll to active item\n\t\t\tthis:scroll_to_item(this.active_item)\n\n\t\t\t-- Transition in animation\n\t\t\tmenu.transition = {to = 'child', target = this}\n\t\t\tlocal start_offset = this.parent_menu and (this.parent_menu.width + this.width) / 2 or 0\n\n\t\t\ttween_element(menu.transition.target, 0, 1, function(_, pos)\n\t\t\t\tthis:set_offset_x(round(start_offset * (1 - pos)))\n\t\t\t\tthis.opacity = pos\n\t\t\t\tthis:set_parent_opacity(1 - ((1 - config.menu_parent_opacity) * pos))\n\t\t\tend, function()\n\t\t\t\tmenu.transition = nil\n\t\t\t\tupdate_proximities()\n\t\t\tend)\n\t\tend,\n\t\tdestroy = function(this)\n\t\t\trequest_render()\n\t\tend,\n\t\ton_display_change = function(this)\n\t\t\tthis.item_height = state.fullormaxed and options.menu_item_height_fullscreen or options.menu_item_height\n\t\t\tthis.font_size = round(this.item_height * 0.48 * options.menu_font_scale)\n\t\t\tthis.item_content_spacing = round((this.item_height - this.font_size) * 0.6)\n\t\t\tthis.scroll_step = this.item_height + this.item_spacing\n\n\t\t\t-- Estimate width of a widest item\n\t\t\tlocal estimated_max_width = 0\n\t\t\tfor _, item in ipairs(this.items) do\n\t\t\t\tlocal item_text_length = ((item.title and item.title:len() or 0) + (item.hint and item.hint:len() or 0))\n\t\t\t\tlocal spacings_in_item = item.hint and 3 or 2\n\t\t\t\tlocal estimated_width = text_width_estimate(item_text_length, this.font_size) + (this.item_content_spacing * spacings_in_item)\n\t\t\t\tif estimated_width > estimated_max_width then\n\t\t\t\t\testimated_max_width = estimated_width\n\t\t\t\tend\n\t\t\tend\n\n\t\t\t-- Also check menu title\n\t\t\tlocal menu_title_length = this.title and this.title:len() or 0\n\t\t\tlocal estimated_menu_title_width = text_width_estimate(menu_title_length, this.font_size)\n\t\t\tif estimated_menu_title_width > estimated_max_width then\n\t\t\t\testimated_max_width = estimated_menu_title_width\n\t\t\tend\n\n\t\t\t-- Coordinates and sizes are of the scrollable area to make\n\t\t\t-- consuming values in rendering easier. Title drawn above this, so\n\t\t\t-- we need to account for that in max_height and ay position.\n\t\t\tthis.width = round(math.min(math.max(estimated_max_width, config.menu_min_width), display.width * 0.9))\n\t\t\tlocal title_height = this.title and this.scroll_step or 0\n\t\t\tlocal max_height = round(display.height * 0.9) - title_height\n\t\t\tthis.height = math.min(round(this.scroll_step * #this.items) - this.item_spacing, max_height)\n\t\t\tthis.scroll_height = math.max((this.scroll_step * #this.items) - this.height - this.item_spacing, 0)\n\t\t\tthis.ax = round((display.width - this.width) / 2) + this.offset_x\n\t\t\tthis.ay = round((display.height - this.height) / 2 + (title_height / 2))\n\t\t\tthis.bx = round(this.ax + this.width)\n\t\t\tthis.by = round(this.ay + this.height)\n\n\t\t\tif this.parent_menu then\n\t\t\t\tthis.parent_menu:on_display_change()\n\t\t\tend\n\t\tend,\n\t\tupdate = function(this, props)\n\t\t\tif props then\n\t\t\t\tfor key, value in pairs(props) do this[key] = value end\n\t\t\tend\n\n\t\t\t-- Reset indexes and scroll\n\t\t\tthis:select_index(this.selected_item)\n\t\t\tthis:activate_index(this.active_item)\n\t\t\tthis:scroll_to(this.scroll_y)\n\n\t\t\t-- Trigger changes and re-render\n\t\t\tthis:on_display_change()\n\t\t\trequest_render()\n\t\tend,\n\t\tset_offset_x = function(this, offset)\n\t\t\tlocal delta = offset - this.offset_x\n\t\t\tthis.offset_x = offset\n\t\t\tthis.ax = this.ax + delta\n\t\t\tthis.bx = this.bx + delta\n\t\t\tif this.parent_menu then\n\t\t\t\tthis.parent_menu:set_offset_x(offset - ((this.width + this.parent_menu.width) / 2) - this.item_spacing)\n\t\t\telse\n\t\t\t\tupdate_proximities()\n\t\t\tend\n\t\tend,\n\t\tfadeout = function(this, callback)\n\t\t\tthis:tween(1, 0, function(this, pos)\n\t\t\t\tthis.opacity = pos\n\t\t\t\tthis:set_parent_opacity(pos * config.menu_parent_opacity)\n\t\t\tend, callback)\n\t\tend,\n\t\tset_parent_opacity = function(this, opacity)\n\t\t\tif this.parent_menu then\n\t\t\t\tthis.parent_menu.opacity = opacity\n\t\t\t\tthis.parent_menu:set_parent_opacity(opacity * config.menu_parent_opacity)\n\t\t\tend\n\t\tend,\n\t\tget_item_index_below_cursor = function(this)\n\t\t\treturn math.ceil((cursor.y - this.ay + this.scroll_y) / this.scroll_step)\n\t\tend,\n\t\tget_first_visible_index = function(this)\n\t\t\treturn round(this.scroll_y / this.scroll_step) + 1\n\t\tend,\n\t\tget_last_visible_index = function(this)\n\t\t\treturn round((this.scroll_y + this.height) / this.scroll_step)\n\t\tend,\n\t\tget_centermost_visible_index = function(this)\n\t\t\treturn round((this.scroll_y + (this.height / 2)) / this.scroll_step)\n\t\tend,\n\t\tscroll_to = function(this, pos)\n\t\t\tthis.scroll_y = math.max(math.min(pos, this.scroll_height), 0)\n\t\t\trequest_render()\n\t\tend,\n\t\tscroll_to_item = function(this, index)\n\t\t\tif (index and index >= 1 and index <= #this.items) then\n\t\t\t\tthis:scroll_to(round((this.scroll_step * (index - 1)) - ((this.height - this.scroll_step) / 2)))\n\t\t\tend\n\t\tend,\n\t\tselect_index = function(this, index)\n\t\t\tthis.selected_item = (index and index >= 1 and index <= #this.items) and index or nil\n\t\t\trequest_render()\n\t\tend,\n\t\tselect_value = function(this, value)\n\t\t\tthis:select_index(itable_find(this.items, function(_, item) return item.value == value end))\n\t\tend,\n\t\tactivate_index = function(this, index)\n\t\t\tthis.active_item = (index and index >= 1 and index <= #this.items) and index or nil\n\t\t\trequest_render()\n\t\tend,\n\t\tactivate_value = function(this, value)\n\t\t\tthis:activate_index(itable_find(this.items, function(_, item) return item.value == value end))\n\t\tend,\n\t\tdelete_index = function(this, index)\n\t\t\tif (index and index >= 1 and index <= #this.items) then\n\t\t\t\tlocal previous_active_value = this.active_index and this.items[this.active_index].value or nil\n\t\t\t\ttable.remove(this.items, index)\n\t\t\t\tthis:on_display_change()\n\t\t\t\tif previous_active_value then this:activate_value(previous_active_value) end\n\t\t\t\tthis:scroll_to_item(this.selected_item)\n\t\t\tend\n\t\tend,\n\t\tdelete_value = function(this, value)\n\t\t\tthis:delete_index(itable_find(this.items, function(_, item) return item.value == value end))\n\t\tend,\n\t\tprev = function(this)\n\t\t\tlocal default_anchor = this.scroll_height > this.scroll_step and this:get_centermost_visible_index() or this:get_last_visible_index()\n\t\t\tlocal current_index = this.selected_item or default_anchor + 1\n\t\t\tthis.selected_item = math.max(current_index - 1, 1)\n\t\t\tthis:scroll_to_item(this.selected_item)\n\t\tend,\n\t\tnext = function(this)\n\t\t\tlocal default_anchor = this.scroll_height > this.scroll_step and this:get_centermost_visible_index() or this:get_first_visible_index()\n\t\t\tlocal current_index = this.selected_item or default_anchor - 1\n\t\t\tthis.selected_item = math.min(current_index + 1, #this.items)\n\t\t\tthis:scroll_to_item(this.selected_item)\n\t\tend,\n\t\tback = function(this)\n\t\t\tif menu.transition then\n\t\t\t\tlocal transition_target = menu.transition.target\n\t\t\t\tlocal transition_target_type = menu.transition.target\n\t\t\t\ttween_element_stop(transition_target)\n\t\t\t\tif transition_target_type == 'parent' then\n\t\t\t\t\telements:add('menu', transition_target)\n\t\t\t\tend\n\t\t\t\tmenu.transition = nil\n\t\t\t\ttransition_target:back()\n\t\t\t\treturn\n\t\t\telse\n\t\t\t\tmenu.transition = {to = 'parent', target = this.parent_menu}\n\t\t\tend\n\n\t\t\tif menu.transition.target == nil then\n\t\t\t\tmenu:close()\n\t\t\t\treturn\n\t\t\tend\n\n\t\t\tlocal target = menu.transition.target\n\t\t\tlocal to_offset = -target.offset_x + this.offset_x\n\n\t\t\ttween_element(target, 0, 1, function(_, pos)\n\t\t\t\tthis:set_offset_x(round(to_offset * pos))\n\t\t\t\tthis.opacity = 1 - pos\n\t\t\t\tthis:set_parent_opacity(config.menu_parent_opacity + ((1 - config.menu_parent_opacity) * pos))\n\t\t\tend, function()\n\t\t\t\tmenu.transition = nil\n\t\t\t\telements:add('menu', target)\n\t\t\t\tupdate_proximities()\n\t\t\tend)\n\t\tend,\n\t\topen_selected_item = function(this, soft)\n\t\t\t-- If there is a transition active and this method got called, it\n\t\t\t-- means we are animating from this menu to parent menu, and all\n\t\t\t-- calls to this method should be relayed to the parent menu.\n\t\t\tif menu.transition and menu.transition.to == 'parent' then\n\t\t\t\tlocal target = menu.transition.target\n\t\t\t\ttween_element_stop(target)\n\t\t\t\tmenu.transition = nil\n\t\t\t\ttarget:open_selected_item(soft)\n\t\t\t\treturn\n\t\t\tend\n\n\t\t\tif this.selected_item then\n\t\t\t\tlocal item = this.items[this.selected_item]\n\t\t\t\t-- Is submenu\n\t\t\t\tif item.items then\n\t\t\t\t\tlocal opts = table_copy(opts)\n\t\t\t\t\topts.parent_menu = this\n\t\t\t\t\tmenu:open(item.items, this.open_item, opts)\n\t\t\t\telse\n\t\t\t\t\tif soft ~= true then menu:close(true) end\n\t\t\t\t\tthis.open_item(item.value)\n\t\t\t\tend\n\t\t\tend\n\t\tend,\n\t\topen_selected_item_soft = function(this) this:open_selected_item(true) end,\n\t\tclose = function(this) menu:close() end,\n\t\ton_global_mbtn_left_down = function(this)\n\t\t\tif this.proximity_raw == 0 then\n\t\t\t\tthis.selected_item = this:get_item_index_below_cursor()\n\t\t\t\tthis:open_selected_item()\n\t\t\telse\n\t\t\t\t-- check if this is clicking on any parent menus\n\t\t\t\tlocal parent_menu = this.parent_menu\n\t\t\t\trepeat\n\t\t\t\t\tif parent_menu then\n\t\t\t\t\t\tif get_point_to_rectangle_proximity(cursor, parent_menu) == 0 then\n\t\t\t\t\t\t\tthis:back()\n\t\t\t\t\t\t\treturn\n\t\t\t\t\t\tend\n\t\t\t\t\t\tparent_menu = parent_menu.parent_menu\n\t\t\t\t\tend\n\t\t\t\tuntil parent_menu == nil\n\n\t\t\t\tmenu:close()\n\t\t\tend\n\t\tend,\n\t\ton_global_mouse_move = function(this)\n\t\t\tif this.proximity_raw == 0 then\n\t\t\t\tthis.selected_item = this:get_item_index_below_cursor()\n\t\t\telse\n\t\t\t\tif this.selected_item then this.selected_item = nil end\n\t\t\tend\n\t\t\trequest_render()\n\t\tend,\n\t\ton_wheel_up = function(this)\n\t\t\tthis.selected_item = nil\n\t\t\tthis:scroll_to(this.scroll_y - this.scroll_step)\n\t\t\t-- Selects item below cursor\n\t\t\tthis:on_global_mouse_move()\n\t\t\trequest_render()\n\t\tend,\n\t\ton_wheel_down = function(this)\n\t\t\tthis.selected_item = nil\n\t\t\tthis:scroll_to(this.scroll_y + this.scroll_step)\n\t\t\t-- Selects item below cursor\n\t\t\tthis:on_global_mouse_move()\n\t\t\trequest_render()\n\t\tend,\n\t\ton_pgup = function(this)\n\t\t\tthis.selected_item = nil\n\t\t\tthis:scroll_to(this.scroll_y - this.height)\n\t\tend,\n\t\ton_pgdwn = function(this)\n\t\t\tthis.selected_item = nil\n\t\t\tthis:scroll_to(this.scroll_y + this.height)\n\t\tend,\n\t\ton_home = function(this)\n\t\t\tthis.selected_item = nil\n\t\t\tthis:scroll_to(0)\n\t\tend,\n\t\ton_end = function(this)\n\t\t\tthis.selected_item = nil\n\t\t\tthis:scroll_to(this.scroll_height)\n\t\tend,\n\t\trender = render_menu,\n\t}))\n\n\telements.menu:maybe('on_open')\nend\n\nfunction Menu:add_key_binding(key, name, fn, flags)\n\tmenu.key_bindings[#menu.key_bindings + 1] = name\n\tmp.add_forced_key_binding(key, name, fn, flags)\nend\n\nfunction Menu:enable_key_bindings()\n\tmenu.key_bindings = {}\n\t-- The `mp.set_key_bindings()` method would be easier here, but that\n\t-- doesn't support 'repeatable' flag, so we are stuck with this monster.\n\tmenu:add_key_binding('up',              'menu-prev1',        self:create_action('prev'), 'repeatable')\n\tmenu:add_key_binding('down',            'menu-next1',        self:create_action('next'), 'repeatable')\n\tmenu:add_key_binding('left',            'menu-back1',        self:create_action('back'))\n\tmenu:add_key_binding('right',           'menu-select1',      self:create_action('open_selected_item'))\n\tmenu:add_key_binding('shift+right',     'menu-select-soft1', self:create_action('open_selected_item_soft'))\n\tmenu:add_key_binding('shift+mbtn_left', 'menu-select-soft',  self:create_action('open_selected_item_soft'))\n\n\tif options.menu_wasd_navigation then\n\t\tmenu:add_key_binding('w',       'menu-prev2',        self:create_action('prev'), 'repeatable')\n\t\tmenu:add_key_binding('a',       'menu-back2',        self:create_action('back'))\n\t\tmenu:add_key_binding('s',       'menu-next2',        self:create_action('next'), 'repeatable')\n\t\tmenu:add_key_binding('d',       'menu-select2',      self:create_action('open_selected_item'))\n\t\tmenu:add_key_binding('shift+d', 'menu-select-soft2', self:create_action('open_selected_item_soft'))\n\tend\n\n\tif options.menu_hjkl_navigation then\n\t\tmenu:add_key_binding('h',       'menu-back3',        self:create_action('back'))\n\t\tmenu:add_key_binding('j',       'menu-next3',        self:create_action('next'), 'repeatable')\n\t\tmenu:add_key_binding('k',       'menu-prev3',        self:create_action('prev'), 'repeatable')\n\t\tmenu:add_key_binding('l',       'menu-select3',      self:create_action('open_selected_item'))\n\t\tmenu:add_key_binding('shift+l', 'menu-select-soft3', self:create_action('open_selected_item_soft'))\n\tend\n\n\tmenu:add_key_binding('mbtn_back',  'menu-back-alt3',   self:create_action('back'))\n\tmenu:add_key_binding('bs',         'menu-back-alt4',   self:create_action('back'))\n\tmenu:add_key_binding('enter',      'menu-select-alt3', self:create_action('open_selected_item'))\n\tmenu:add_key_binding('kp_enter',   'menu-select-alt4', self:create_action('open_selected_item'))\n\tmenu:add_key_binding('esc',        'menu-close',       self:create_action('close'))\n\tmenu:add_key_binding('pgup',       'menu-page-up',     self:create_action('on_pgup'))\n\tmenu:add_key_binding('pgdwn',      'menu-page-down',   self:create_action('on_pgdwn'))\n\tmenu:add_key_binding('home',       'menu-home',        self:create_action('on_home'))\n\tmenu:add_key_binding('end',        'menu-end',         self:create_action('on_end'))\nend\n\nfunction Menu:disable_key_bindings()\n\tfor _, name in ipairs(menu.key_bindings) do mp.remove_key_binding(name) end\n\tmenu.key_bindings = {}\nend\n\nfunction Menu:create_action(name)\n\treturn function(...)\n\t\tif elements.menu then elements.menu:maybe(name, ...) end\n\tend\nend\n\nfunction Menu:close(immediate, callback)\n\tif type(immediate) ~= 'boolean' then callback = immediate end\n\n\tif elements:has('menu') and not menu.is_closing then\n\t\tfunction close()\n\t\t\telements.menu:maybe('on_close')\n\t\t\telements.menu:destroy()\n\t\t\telements:remove('menu')\n\t\t\tmenu.is_closing = false\n\t\t\tupdate_proximities()\n\t\t\tmenu:disable_key_bindings()\n\t\t\tcall_me_maybe(callback)\n\t\tend\n\n\t\tmenu.is_closing = true\n\t\telements.curtain:fadeout()\n\n\t\tif immediate then\n\t\t\tclose()\n\t\telse\n\t\t\telements.menu:fadeout(close)\n\t\tend\n\tend\nend\n\n-- ICONS\n--[[\nASS \\shadN shadows are drawn also below the element, which when there is an\nopacity in play, blends icon colors into ugly greys. The mess below is an\nattempt to fix it by rendering shadows for icons with clipping.\n\nAdd icons by adding functions to render them to `icons` table.\n\nSignature: function(pos_x, pos_y, size) => string\n\nFunction has to return ass path coordinates to draw the icon centered at pox_x\nand pos_y of passed size.\n]]\nlocal icons = {}\nfunction icon(name, icon_x, icon_y, icon_size, shad_x, shad_y, shad_size, backdrop, opacity, clip)\n\tlocal ass = assdraw.ass_new()\n\tlocal icon_path = icons[name](icon_x, icon_y, icon_size)\n\tlocal icon_color = options['color_'..backdrop..'_text']\n\tlocal shad_color = options['color_'..backdrop]\n\tlocal use_border = (shad_x + shad_y) == 0\n\tlocal icon_border = use_border and shad_size or 0\n\n\t-- clip can't clip out shadows, a very annoying limitation I can't work\n\t-- around without going back to ugly default ass shadows, but atm I actually\n\t-- don't need clipping of icons with shadows, so I'm choosing to ignore this\n\tif not clip then\n\t\tclip = ''\n\tend\n\n\tif not use_border then\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord0\\\\shad0\\\\1c&H'..shad_color..'\\\\iclip('..ass.scale..', '..icon_path..')}')\n\t\tass:append(ass_opacity(opacity))\n\t\tass:pos(shad_x + shad_size, shad_y + shad_size)\n\t\tass:draw_start()\n\t\tass:append(icon_path)\n\t\tass:draw_stop()\n\tend\n\n\tass:new_event()\n\tass:append('{\\\\blur0\\\\bord'..icon_border..'\\\\shad0\\\\1c&H'..icon_color..'\\\\3c&H'..shad_color..clip..'}')\n\tass:append(ass_opacity(opacity))\n\tass:pos(0, 0)\n\tass:draw_start()\n\tass:append(icon_path)\n\tass:draw_stop()\n\n\treturn ass.text\nend\n\nfunction icons._volume(muted, pos_x, pos_y, size)\n\tlocal ass = assdraw.ass_new()\n\tlocal scale = size / 200\n\tfunction x(number) return pos_x + (number * scale) end\n\tfunction y(number) return pos_y + (number * scale) end\n\tass:move_to(x(-85), y(-35))\n\tass:line_to(x(-50), y(-35))\n\tass:line_to(x(-5), y(-75))\n\tass:line_to(x(-5), y(75))\n\tass:line_to(x(-50), y(35))\n\tass:line_to(x(-85), y(35))\n\tif muted then\n\t\tass:move_to(x(76), y(-35)) ass:line_to(x(50), y(-9)) ass:line_to(x(24), y(-35))\n\t\tass:line_to(x(15), y(-26)) ass:line_to(x(41), y(0)) ass:line_to(x(15), y(26))\n\t\tass:line_to(x(24), y(35)) ass:line_to(x(50), y(9)) ass:line_to(x(76), y(35))\n\t\tass:line_to(x(85), y(26)) ass:line_to(x(59), y(0)) ass:line_to(x(85), y(-26))\n\telse\n\t\tass:move_to(x(20), y(-30)) ass:line_to(x(20), y(30))\n\t\tass:line_to(x(35), y(30)) ass:line_to(x(35), y(-30))\n\n\t\tass:move_to(x(55), y(-60)) ass:line_to(x(55), y(60))\n\t\tass:line_to(x(70), y(60)) ass:line_to(x(70), y(-60))\n\tend\n\treturn ass.text\nend\nfunction icons.volume(pos_x, pos_y, size) return icons._volume(false, pos_x, pos_y, size) end\nfunction icons.volume_muted(pos_x, pos_y, size) return icons._volume(true, pos_x, pos_y, size) end\n\nfunction icons.menu_button(pos_x, pos_y, size)\n\tlocal ass = assdraw.ass_new()\n\tlocal scale = size / 100\n\tfunction x(number) return pos_x + (number * scale) end\n\tfunction y(number) return pos_y + (number * scale) end\n\tlocal line_height = 14\n\tlocal line_spacing = 18\n\tfor i = -1, 1 do\n\tlocal offs = i * (line_height + line_spacing)\n\t\tass:move_to(x(-50), y(offs - line_height/2))\n\t\tass:line_to(x(50), y(offs - line_height/2))\n\t\tass:line_to(x(50), y(offs + line_height/2))\n\t\tass:line_to(x(-50), y(offs + line_height/2))\n\tend\n\treturn ass.text\nend\n\nfunction icons.arrow_right(pos_x, pos_y, size)\n\tlocal ass = assdraw.ass_new()\n\tlocal scale = size / 200\n\tfunction x(number) return pos_x + (number * scale) end\n\tfunction y(number) return pos_y + (number * scale) end\n\tass:move_to(x(-22), y(-80))\n\tass:line_to(x(-45), y(-57))\n\tass:line_to(x(12), y(0))\n\tass:line_to(x(-45), y(57))\n\tass:line_to(x(-22), y(80))\n\tass:line_to(x(58), y(0))\n\treturn ass.text\nend\n\n-- STATE UPDATES\n\nfunction update_display_dimensions()\n\tlocal o = mp.get_property_native('osd-dimensions')\n\tdisplay.width = o.w\n\tdisplay.height = o.h\n\tdisplay.aspect = o.aspect\n\n\t-- Tell elements about this\n\telements:trigger('display_change')\n\n\t-- Some elements probably changed their rectangles as a reaction to `display_change`\n\tupdate_proximities()\n\trequest_render()\nend\n\nfunction update_element_cursor_proximity(element)\n\tif cursor.hidden then\n\t\telement.proximity_raw = infinity\n\t\telement.proximity = 0\n\telse\n\t\tlocal range = options.proximity_out - options.proximity_in\n\t\telement.proximity_raw = get_point_to_rectangle_proximity(cursor, element)\n\t\telement.proximity = menu:is_open() and 0 or 1 - (math.min(math.max(element.proximity_raw - options.proximity_in, 0), range) / range)\n\tend\nend\n\nfunction update_proximities()\n\tlocal capture_mbtn_left = false\n\tlocal capture_wheel = false\n\tlocal menu_only = menu:is_open()\n\tlocal mouse_leave_elements = {}\n\tlocal mouse_enter_elements = {}\n\n\t-- Calculates proximities and opacities for defined elements\n\tfor _, element in elements:ipairs() do\n\t\tlocal previous_proximity_raw = element.proximity_raw\n\n\t\t-- If menu is open, all other elements have to be disabled\n\t\tif menu_only then\n\t\t\tif element.name == 'menu' then\n\t\t\t\tcapture_mbtn_left = true\n\t\t\t\tcapture_wheel = true\n\t\t\t\tupdate_element_cursor_proximity(element)\n\t\t\telse\n\t\t\t\telement.proximity_raw = infinity\n\t\t\t\telement.proximity = 0\n\t\t\tend\n\t\telse\n\t\t\tupdate_element_cursor_proximity(element)\n\t\tend\n\n\t\t-- Element has global forced key listeners\n\t\tif element.on_global_mbtn_left_down then capture_mbtn_left = true end\n\t\tif element.on_global_wheel_up or element.on_global_wheel_down then capture_wheel = true end\n\n\t\tif element.proximity_raw == 0 then\n\t\t\t-- Element has local forced key listeners\n\t\t\tif element.on_mbtn_left_down then capture_mbtn_left = true end\n\t\t\tif element.on_wheel_up or element.on_wheel_up then capture_wheel = true end\n\n\t\t\t-- Mouse entered element area\n\t\t\tif previous_proximity_raw ~= 0 then\n\t\t\t\tmouse_enter_elements[#mouse_enter_elements + 1] = element\n\t\t\tend\n\t\telse\n\t\t\t-- Mouse left element area\n\t\t\tif previous_proximity_raw == 0 then\n\t\t\t\tmouse_leave_elements[#mouse_leave_elements + 1] = element\n\t\t\tend\n\t\tend\n\tend\n\n\t-- Enable key group captures elements request.\n\tif capture_mbtn_left then\n\t\tforced_key_bindings.mbtn_left:enable()\n\telse\n\t\tforced_key_bindings.mbtn_left:disable()\n\tend\n\tif capture_wheel then\n\t\tforced_key_bindings.wheel:enable()\n\telse\n\t\tforced_key_bindings.wheel:disable()\n\tend\n\n\t-- Trigger `mouse_leave` and `mouse_enter` events\n\tfor _, element in ipairs(mouse_leave_elements) do element:trigger('mouse_leave') end\n\tfor _, element in ipairs(mouse_enter_elements) do element:trigger('mouse_enter') end\nend\n\n-- ELEMENT RENDERERS\n\nfunction render_timeline(this)\n\tif this.size_max == 0 or state.duration == nil or state.duration == 0 or state.position == nil then return end\n\n\tlocal size_min = this:get_effective_size_min()\n\tlocal size = this:get_effective_size()\n\n\tif size < 1 then return end\n\n\tlocal ass = assdraw.ass_new()\n\n\t-- Text opacity rapidly drops to 0 just before it starts overflowing, or before it reaches timeline.size_min\n\tlocal hide_text_below = math.max(this.font_size * 0.7, size_min * 2)\n\tlocal hide_text_ramp = hide_text_below / 2\n\tlocal text_opacity = math.max(math.min(size - hide_text_below, hide_text_ramp), 0) / hide_text_ramp\n\n\tlocal spacing = math.max(math.floor((this.size_max - this.font_size) / 2.5), 4)\n\tlocal progress = state.position / state.duration\n\n\t-- Background bar coordinates\n\tlocal bax = this.ax\n\tlocal bay = this.by - size\n\tlocal bbx = this.bx\n\tlocal bby = this.by\n\n\t-- Foreground bar coordinates\n\tlocal fax = bax\n\tlocal fay = bay + this.top_border\n\tlocal fbx = fax + this.width * progress\n\tlocal fby = bby\n\tlocal foreground_size = bby - bay\n\tlocal foreground_coordinates = fax..','..fay..','..fbx..','..fby -- for clipping\n\n\t-- Background\n\tass:new_event()\n\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.color_background..'\\\\iclip('..foreground_coordinates..')}')\n\tass:append(ass_opacity(math.max(options.timeline_opacity - 0.1, 0)))\n\tass:pos(0, 0)\n\tass:draw_start()\n\tass:rect_cw(bax, bay, bbx, bby)\n\tass:draw_stop()\n\n\t-- Foreground\n\tass:new_event()\n\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.color_foreground..'}')\n\tass:append(ass_opacity(options.timeline_opacity))\n\tass:pos(0, 0)\n\tass:draw_start()\n\tass:rect_cw(fax, fay, fbx, fby)\n\tass:draw_stop()\n\n\t-- Seekable ranges\n\tif options.timeline_cached_ranges and state.cached_ranges then\n\t\tlocal range_height = math.max(foreground_size / 8, size_min)\n\t\tlocal range_ay = fby - range_height\n\t\tfor _, range in ipairs(state.cached_ranges) do\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.timeline_cached_ranges.color..'}')\n\t\t\tass:append(ass_opacity(options.timeline_cached_ranges.opacity))\n\t\t\tass:pos(0, 0)\n\t\t\tass:draw_start()\n\t\t\tlocal range_start = math.max(type(range['start']) == 'number' and range['start'] or 0.000001, 0.000001)\n\t\t\tlocal range_end = math.min(type(range['end']) and range['end'] or state.duration, state.duration)\n\t\t\tass:rect_cw(\n\t\t\t\tbax + this.width * (range_start / state.duration), range_ay,\n\t\t\t\tbax + this.width * (range_end / state.duration), range_ay + range_height\n\t\t\t)\n\t\t\tass:draw_stop()\n\t\tend\n\tend\n\n\t-- Custom ranges\n\tif state.chapter_ranges ~= nil then\n\t\tfor i, chapter_range in ipairs(state.chapter_ranges) do\n\t\t\tfor i, range in ipairs(chapter_range.ranges) do\n\t\t\t\tlocal rax = bax + this.width * (range['start'].time / state.duration)\n\t\t\t\tlocal rbx = bax + this.width * (range['end'].time / state.duration)\n\t\t\t\tass:new_event()\n\t\t\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..chapter_range.color..'}')\n\t\t\t\tass:append(ass_opacity(chapter_range.opacity))\n\t\t\t\tass:pos(0, 0)\n\t\t\t\tass:draw_start()\n\t\t\t\t-- for 1px chapter size, use the whole size of the bar including padding\n\t\t\t\tif size <= 1 then\n\t\t\t\t\tass:rect_cw(rax, bay, rbx, bby)\n\t\t\t\telse\n\t\t\t\t\tass:rect_cw(rax, fay, rbx, fby)\n\t\t\t\tend\n\t\t\t\tass:draw_stop()\n\t\t\tend\n\t\tend\n\tend\n\n\t-- Chapters\n\tif (\n\t\toptions.chapters ~= 'none'\n\t\tand (\n\t\t\tstate.chapters ~= nil and #state.chapters > 0\n\t\t\tor state.ab_loop_a and state.ab_loop_a > 0\n\t\t\tor state.ab_loop_b and state.ab_loop_b > 0\n\t\t)\n\t) then\n\t\tlocal half_size = size / 2\n\t\tlocal dots = false\n\t\tlocal chapter_size, chapter_y\n\t\tif options.chapters == 'dots' then\n\t\t\tdots = true\n\t\t\tchapter_size = math.min(6, (foreground_size / 2) + 2)\n\t\t\tchapter_y = math.min(fay + chapter_size, fay + half_size)\n\t\telseif options.chapters == 'lines' then\n\t\t\tchapter_size = size\n\t\t\tchapter_y = fay + (chapter_size / 2)\n\t\telseif options.chapters == 'lines-top' then\n\t\t\tchapter_size = math.min(this.size_max / 3.5, size)\n\t\t\tchapter_y = fay + (chapter_size / 2)\n\t\telseif options.chapters == 'lines-bottom' then\n\t\t\tchapter_size = math.min(this.size_max / 3.5, size)\n\t\t\tchapter_y = fay + size - (chapter_size / 2)\n\t\tend\n\n\t\tif chapter_size ~= nil then\n\t\t\t-- for 1px chapter size, use the whole size of the bar including padding\n\t\t\tchapter_size = size <= 1 and foreground_size or chapter_size\n\t\t\tlocal chapter_half_size = chapter_size / 2\n\t\t\tlocal draw_chapter = function (time)\n\t\t\t\tlocal chapter_x = bax + this.width * (time / state.duration)\n\t\t\t\tlocal color = chapter_x > fbx and options.color_foreground or options.color_background\n\n\t\t\t\tass:new_event()\n\t\t\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..color..'}')\n\t\t\t\tass:append(ass_opacity(options.chapters_opacity))\n\t\t\t\tass:pos(0, 0)\n\t\t\t\tass:draw_start()\n\n\t\t\t\tif dots then\n\t\t\t\t\tlocal bezier_stretch = chapter_size * 0.67\n\t\t\t\t\tass:move_to(chapter_x - chapter_half_size, chapter_y)\n\t\t\t\t\tass:bezier_curve(\n\t\t\t\t\t\tchapter_x - chapter_half_size, chapter_y - bezier_stretch,\n\t\t\t\t\t\tchapter_x + chapter_half_size, chapter_y - bezier_stretch,\n\t\t\t\t\t\tchapter_x + chapter_half_size, chapter_y\n\t\t\t\t\t)\n\t\t\t\t\tass:bezier_curve(\n\t\t\t\t\t\tchapter_x + chapter_half_size, chapter_y + bezier_stretch,\n\t\t\t\t\t\tchapter_x - chapter_half_size, chapter_y + bezier_stretch,\n\t\t\t\t\t\tchapter_x - chapter_half_size, chapter_y\n\t\t\t\t\t)\n\t\t\t\telse\n\t\t\t\t\tass:rect_cw(chapter_x, chapter_y - chapter_half_size, chapter_x + 1, chapter_y + chapter_half_size)\n\t\t\t\tend\n\n\t\t\t\tass:draw_stop()\n\t\t\tend\n\n\t\t\tif state.chapters ~= nil then\n\t\t\t\tfor i, chapter in ipairs(state.chapters) do\n\t\t\t\t\tdraw_chapter(chapter.time)\n\t\t\t\tend\n\t\t\tend\n\n\t\t\tif state.ab_loop_a and state.ab_loop_a > 0 then\n\t\t\t\tdraw_chapter(state.ab_loop_a)\n\t\t\tend\n\n\t\t\tif state.ab_loop_b and state.ab_loop_b > 0 then\n\t\t\t\tdraw_chapter(state.ab_loop_b)\n\t\t\tend\n\t\tend\n\tend\n\n\tif text_opacity > 0 then\n\t\t-- Elapsed time\n\t\tif state.elapsed_seconds then\n\t\t\tlocal elapsed_x = bax + spacing\n\t\t\tlocal elapsed_y = fay + (size / 2)\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\shad0\\\\1c&H'..options.color_foreground_text..'\\\\fn'..config.font..'\\\\fs'..this.font_size..bold_tag..'\\\\clip('..foreground_coordinates..')')\n\t\t\tass:append(ass_opacity(math.min(options.timeline_opacity + 0.1, 1), text_opacity))\n\t\t\tass:pos(elapsed_x, elapsed_y)\n\t\t\tass:an(4)\n\t\t\tass:append(state.elapsed_time)\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\shad1\\\\1c&H'..options.color_background_text..'\\\\4c&H'..options.color_background..'\\\\fn'..config.font..'\\\\fs'..this.font_size..bold_tag..'\\\\iclip('..foreground_coordinates..')')\n\t\t\tass:append(ass_opacity(math.min(options.timeline_opacity + 0.1, 1), text_opacity))\n\t\t\tass:pos(elapsed_x, elapsed_y)\n\t\t\tass:an(4)\n\t\t\tass:append(state.elapsed_time)\n\t\tend\n\n\t\t-- End time\n\t\tlocal end_time\n\t\tif options.total_time then\n\t\t\tend_time = this.total_time\n\t\telse\n\t\t\tend_time = state.remaining_time and '-'..state.remaining_time\n\t\tend\n\t\tif end_time then\n\t\t\tlocal end_x = bbx - spacing\n\t\t\tlocal end_y = fay + (size / 2)\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\shad0\\\\1c&H'..options.color_foreground_text..'\\\\fn'..config.font..'\\\\fs'..this.font_size..bold_tag..'\\\\clip('..foreground_coordinates..')')\n\t\t\tass:append(ass_opacity(math.min(options.timeline_opacity + 0.1, 1), text_opacity))\n\t\t\tass:pos(end_x, end_y)\n\t\t\tass:an(6)\n\t\t\tass:append(end_time)\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\shad1\\\\1c&H'..options.color_background_text..'\\\\4c&H'..options.color_background..'\\\\fn'..config.font..'\\\\fs'..this.font_size..bold_tag..'\\\\iclip('..foreground_coordinates..')')\n\t\t\tass:append(ass_opacity(math.min(options.timeline_opacity + 0.1, 1), text_opacity))\n\t\t\tass:pos(end_x, end_y)\n\t\t\tass:an(6)\n\t\t\tass:append(end_time)\n\t\tend\n\tend\n\n\tif (this.proximity_raw == 0 or this.pressed) and not (elements.speed and elements.speed.dragging) then\n\t\t-- Hovered time\n\t\tlocal hovered_seconds = state.duration * (cursor.x / display.width)\n\t\tlocal box_half_width_guesstimate = (this.font_size * 4.2) / 2\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord1\\\\shad0\\\\1c&H'..options.color_background_text..'\\\\3c&H'..options.color_background..'\\\\fn'..config.font..'\\\\fs'..this.font_size..bold_tag..'')\n\t\tass:append(ass_opacity(math.min(options.timeline_opacity + 0.1, 1)))\n\t\tass:pos(math.min(math.max(cursor.x, box_half_width_guesstimate), display.width - box_half_width_guesstimate), fay)\n\t\tass:an(2)\n\t\tass:append(mp.format_time(hovered_seconds))\n\n\t\t-- Cursor line\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord0\\\\xshad-1\\\\yshad0\\\\1c&H'..options.color_foreground..'\\\\4c&H'..options.color_background..'}')\n\t\tass:append(ass_opacity(0.2))\n\t\tass:pos(0, 0)\n\t\tass:draw_start()\n\t\tass:rect_cw(cursor.x, fay, cursor.x + 1, fby)\n\t\tass:draw_stop()\n\tend\n\n\treturn ass\nend\n\nfunction render_top_bar(this)\n\tlocal opacity = this:get_effective_proximity()\n\n\tif not this.enabled or opacity == 0 then return end\n\n\tlocal ass = assdraw.ass_new()\n\n\tif options.top_bar_controls then\n\t\t-- Close button\n\t\tlocal close = elements.window_controls_close\n\t\tif close.proximity_raw == 0 then\n\t\t\t-- Background on hover\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H2311e8}')\n\t\t\tass:append(ass_opacity(this.button_opacity, opacity))\n\t\t\tass:pos(0, 0)\n\t\t\tass:draw_start()\n\t\t\tass:rect_cw(close.ax, close.ay, close.bx, close.by)\n\t\t\tass:draw_stop()\n\t\tend\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord1\\\\shad1\\\\3c&HFFFFFF\\\\4c&H000000}')\n\t\tass:append(ass_opacity(this.button_opacity, opacity))\n\t\tass:pos(close.ax + (this.button_width / 2), close.ay + (this.size / 2))\n\t\tass:draw_start()\n\t\tass:move_to(-this.icon_size, this.icon_size)\n\t\tass:line_to(this.icon_size, -this.icon_size)\n\t\tass:move_to(-this.icon_size, -this.icon_size)\n\t\tass:line_to(this.icon_size, this.icon_size)\n\t\tass:draw_stop()\n\n\t\t-- Maximize button\n\t\tlocal maximize = elements.window_controls_maximize\n\t\tif maximize.proximity_raw == 0 then\n\t\t\t-- Background on hover\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H222222}')\n\t\t\tass:append(ass_opacity(this.button_opacity, opacity))\n\t\t\tass:pos(0, 0)\n\t\t\tass:draw_start()\n\t\t\tass:rect_cw(maximize.ax, maximize.ay, maximize.bx, maximize.by)\n\t\t\tass:draw_stop()\n\t\tend\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord2\\\\shad0\\\\1c\\\\3c&H000000}')\n\t\tass:append(ass_opacity({[3] = this.button_opacity}, opacity))\n\t\tass:pos(maximize.ax + (this.button_width / 2), maximize.ay + (this.size / 2))\n\t\tass:draw_start()\n\t\tass:rect_cw(-this.icon_size + 1, -this.icon_size + 1, this.icon_size + 1, this.icon_size + 1)\n\t\tass:draw_stop()\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord2\\\\shad0\\\\1c\\\\3c&HFFFFFF}')\n\t\tass:append(ass_opacity({[3] = this.button_opacity}, opacity))\n\t\tass:pos(maximize.ax + (this.button_width / 2), maximize.ay + (this.size / 2))\n\t\tass:draw_start()\n\t\tass:rect_cw(-this.icon_size, -this.icon_size, this.icon_size, this.icon_size)\n\t\tass:draw_stop()\n\n\t\t-- Minimize button\n\t\tlocal minimize = elements.window_controls_minimize\n\t\tif minimize.proximity_raw == 0 then\n\t\t\t-- Background on hover\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H222222}')\n\t\t\tass:append(ass_opacity(this.button_opacity, opacity))\n\t\t\tass:pos(0, 0)\n\t\t\tass:draw_start()\n\t\t\tass:rect_cw(minimize.ax, minimize.ay, minimize.bx, minimize.by)\n\t\t\tass:draw_stop()\n\t\tend\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord1\\\\shad1\\\\3c&HFFFFFF\\\\4c&H000000}')\n\t\tass:append(ass_opacity(this.button_opacity, opacity))\n\t\tass:append('{\\\\1a&HFF&}')\n\t\tass:pos(minimize.ax + (this.button_width / 2), minimize.ay + (this.size / 2))\n\t\tass:draw_start()\n\t\tass:move_to(-this.icon_size, 0)\n\t\tass:line_to(this.icon_size, 0)\n\t\tass:draw_stop()\n\tend\n\n\t-- Window title\n\tif options.top_bar_title and state.media_title then\n\t\tlocal clip_coordinates = this.ax..','..this.ay..','..(this.title_bx - this.spacing)..','..this.by\n\n\t\tass:new_event()\n\t\tass:append('{\\\\q2\\\\blur0\\\\bord1\\\\shad0\\\\1c&HFFFFFF\\\\3c&H000000\\\\fn'..config.font..'\\\\fs'..this.font_size..bold_tag..'\\\\clip('..clip_coordinates..')')\n\t\tass:append(ass_opacity(1, opacity))\n\t\tass:pos(this.ax + this.spacing, this.ay + (this.size / 2))\n\t\tass:an(4)\n\t\tass:append(state.media_title)\n\tend\n\n\treturn ass\nend\n\nfunction render_volume(this)\n\tlocal slider = elements.volume_slider\n\tlocal opacity = this:get_effective_proximity()\n\n\tif this.width == 0 or opacity == 0 then return end\n\n\tlocal ass = assdraw.ass_new()\n\n\tif slider.height > 0 then\n\t\t-- Background bar coordinates\n\t\tlocal bax = slider.ax\n\t\tlocal bay = slider.ay\n\t\tlocal bbx = slider.bx\n\t\tlocal bby = slider.by\n\n\t\t-- Foreground bar coordinates\n\t\tlocal height_without_border = slider.height - (options.volume_border * 2)\n\t\tlocal fax = slider.ax + options.volume_border\n\t\tlocal fay = slider.ay + (height_without_border * (1 - math.min(state.volume / state.volume_max, 1))) + options.volume_border\n\t\tlocal fbx = slider.bx - options.volume_border\n\t\tlocal fby = slider.by - options.volume_border\n\n\t\t-- Path to draw a foreground bar with a 100% volume indicator, already\n\t\t-- clipped by volume level. Can't just clip it with rectangle, as it itself\n\t\t-- also needs to be used as a path to clip the background bar and volume\n\t\t-- number.\n\t\tlocal fpath = assdraw.ass_new()\n\t\tfpath:move_to(fbx, fby)\n\t\tfpath:line_to(fax, fby)\n\t\tlocal nudge_bottom_y = slider.nudge_y + slider.nudge_size\n\t\tif fay <= nudge_bottom_y and slider.draw_nudge then\n\t\t\tfpath:line_to(fax, math.min(nudge_bottom_y))\n\t\t\tif fay <= slider.nudge_y then\n\t\t\t\tfpath:line_to((fax + slider.nudge_size), slider.nudge_y)\n\t\t\t\tlocal nudge_top_y = slider.nudge_y - slider.nudge_size\n\t\t\t\tif fay <= nudge_top_y then\n\t\t\t\t\tfpath:line_to(fax, nudge_top_y)\n\t\t\t\t\tfpath:line_to(fax, fay)\n\t\t\t\t\tfpath:line_to(fbx, fay)\n\t\t\t\t\tfpath:line_to(fbx, nudge_top_y)\n\t\t\t\telse\n\t\t\t\t\tlocal triangle_side = fay - nudge_top_y\n\t\t\t\t\tfpath:line_to((fax + triangle_side), fay)\n\t\t\t\t\tfpath:line_to((fbx - triangle_side), fay)\n\t\t\t\tend\n\t\t\t\tfpath:line_to((fbx - slider.nudge_size), slider.nudge_y)\n\t\t\telse\n\t\t\t\tlocal triangle_side = nudge_bottom_y - fay\n\t\t\t\tfpath:line_to((fax + triangle_side), fay)\n\t\t\t\tfpath:line_to((fbx - triangle_side), fay)\n\t\t\tend\n\t\t\tfpath:line_to(fbx, nudge_bottom_y)\n\t\telse\n\t\t\tfpath:line_to(fax, fay)\n\t\t\tfpath:line_to(fbx, fay)\n\t\tend\n\t\tfpath:line_to(fbx, fby)\n\n\t\t-- Background\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.color_background..'\\\\iclip('..fpath.scale..', '..fpath.text..')}')\n\t\tass:append(ass_opacity(math.max(options.volume_opacity - 0.1, 0), opacity))\n\t\tass:pos(0, 0)\n\t\tass:draw_start()\n\t\tass:move_to(bax, bay)\n\t\tass:line_to(bbx, bay)\n\t\tlocal half_border = options.volume_border / 2\n\t\tif slider.draw_nudge then\n\t\t\tass:line_to(bbx, math.max(slider.nudge_y - slider.nudge_size + half_border, bay))\n\t\t\tass:line_to(bbx - slider.nudge_size + half_border, slider.nudge_y)\n\t\t\tass:line_to(bbx, slider.nudge_y + slider.nudge_size - half_border)\n\t\tend\n\t\tass:line_to(bbx, bby)\n\t\tass:line_to(bax, bby)\n\t\tif slider.draw_nudge then\n\t\t\tass:line_to(bax, slider.nudge_y + slider.nudge_size - half_border)\n\t\t\tass:line_to(bax + slider.nudge_size - half_border, slider.nudge_y)\n\t\t\tass:line_to(bax, math.max(slider.nudge_y - slider.nudge_size + half_border, bay))\n\t\tend\n\t\tass:line_to(bax, bay)\n\t\tass:draw_stop()\n\n\t\t-- Foreground\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.color_foreground..'}')\n\t\tass:append(ass_opacity(options.volume_opacity, opacity))\n\t\tass:pos(0, 0)\n\t\tass:draw_start()\n\t\tass:append(fpath.text)\n\t\tass:draw_stop()\n\n\t\t-- Current volume value\n\t\tlocal volume_string = tostring(round(state.volume * 10) / 10)\n\t\tlocal font_size = round(((this.width * 0.6) - (#volume_string * (this.width / 20))) * options.volume_font_scale)\n\t\tif fay < slider.by - slider.spacing then\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\shad0\\\\1c&H'..options.color_foreground_text..'\\\\fn'..config.font..'\\\\fs'..font_size..bold_tag..'\\\\clip('..fpath.scale..', '..fpath.text..')}')\n\t\t\tass:append(ass_opacity(math.min(options.volume_opacity + 0.1, 1), opacity))\n\t\t\tass:pos(slider.ax + (slider.width / 2), slider.by - slider.spacing)\n\t\t\tass:an(2)\n\t\t\tass:append(volume_string)\n\t\tend\n\t\tif fay > slider.by - slider.spacing - font_size then\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\shad1\\\\1c&H'..options.color_background_text..'\\\\4c&H'..options.color_background..'\\\\fn'..config.font..'\\\\fs'..font_size..bold_tag..'\\\\iclip('..fpath.scale..', '..fpath.text..')}')\n\t\t\tass:append(ass_opacity(math.min(options.volume_opacity + 0.1, 1), opacity))\n\t\t\tass:pos(slider.ax + (slider.width / 2), slider.by - slider.spacing)\n\t\t\tass:an(2)\n\t\t\tass:append(volume_string)\n\t\tend\n\tend\n\n\t-- Mute button\n\tlocal mute = elements.volume_mute\n\tlocal icon_name = state.mute and 'volume_muted' or 'volume'\n\tass:new_event()\n\tass:append(icon(\n\t\ticon_name,\n\t\tmute.ax + (mute.width / 2), mute.ay + (mute.height / 2), mute.width * 0.7, -- x, y, size\n\t\t0, 0, options.volume_border, -- shadow_x, shadow_y, shadow_size\n\t\t'background', options.volume_opacity * opacity -- backdrop, opacity\n\t))\n\treturn ass\nend\n\nfunction render_speed(this)\n\tif not this.dragging and (elements.curtain.opacity > 0) then return end\n\n\tlocal proximity = this:get_effective_proximity()\n\tlocal opacity = this.dragging and 1 or proximity\n\n\tif opacity == 0 then return end\n\n\tlocal ass = assdraw.ass_new()\n\n\t-- Coordinates\n\tlocal ax = this.ax\n\t-- local ay = this.ay + timeline.size_max - timeline:get_effective_size()\n\tlocal ay = this.ay\n\tlocal bx = this.bx\n\tlocal by = ay + this.height\n\tlocal half_width = (this.width / 2)\n\tlocal half_x = ax + half_width\n\n\t-- Notches\n\tlocal speed_at_center = state.speed\n\tif this.dragging then\n\t\tspeed_at_center = this.dragging.start_speed + ((-this.dragging.distance / this.step_distance) * options.speed_step)\n\t\tspeed_at_center = math.min(math.max(speed_at_center, 0.01), 100)\n\tend\n\tlocal nearest_notch_speed = round(speed_at_center / this.notch_every) * this.notch_every\n\tlocal nearest_notch_x = half_x + (((nearest_notch_speed - speed_at_center) / this.notch_every) * this.notch_spacing)\n\tlocal guide_size = math.floor(this.height / 7.5)\n\tlocal notch_by = by - guide_size\n\tlocal notch_ay_big = ay + round(this.font_size * 1.1)\n\tlocal notch_ay_medium = notch_ay_big + ((notch_by - notch_ay_big) * 0.2)\n\tlocal notch_ay_small = notch_ay_big + ((notch_by - notch_ay_big) * 0.4)\n\tlocal from_to_index = math.floor(this.notches / 2)\n\n\tfor i = -from_to_index, from_to_index do\n\t\tlocal notch_speed = nearest_notch_speed + (i * this.notch_every)\n\n\t\tif notch_speed < 0 or notch_speed > 100 then goto continue end\n\n\t\tlocal notch_x = nearest_notch_x + (i * this.notch_spacing)\n\t\tlocal notch_thickness = 1\n\t\tlocal notch_ay = notch_ay_small\n\t\tif (notch_speed % (this.notch_every * 10)) < 0.00000001 then\n\t\t\tnotch_ay = notch_ay_big\n\t\t\tnotch_thickness = 1\n\t\telseif (notch_speed % (this.notch_every * 5)) < 0.00000001 then\n\t\t\tnotch_ay = notch_ay_medium\n\t\tend\n\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord1\\\\shad0\\\\1c&HFFFFFF\\\\3c&H000000}')\n\t\tass:append(ass_opacity(math.min(1.2 - (math.abs((notch_x - ax - half_width) / half_width)), 1), opacity))\n\t\tass:pos(0, 0)\n\t\tass:draw_start()\n\t\tass:move_to(notch_x - notch_thickness, notch_ay)\n\t\tass:line_to(notch_x + notch_thickness, notch_ay)\n\t\tass:line_to(notch_x + notch_thickness, notch_by)\n\t\tass:line_to(notch_x - notch_thickness, notch_by)\n\t\tass:draw_stop()\n\n\t\t::continue::\n\tend\n\n\t-- Center guide\n\tass:new_event()\n\tass:append('{\\\\blur0\\\\bord1\\\\shad0\\\\1c&HFFFFFF\\\\3c&H000000}')\n\tass:append(ass_opacity(options.speed_opacity, opacity))\n\tass:pos(0, 0)\n\tass:draw_start()\n\tass:move_to(half_x, by - 2 - guide_size)\n\tass:line_to(half_x + guide_size, by - 2)\n\tass:line_to(half_x - guide_size, by - 2)\n\tass:draw_stop()\n\n\t-- Speed value\n\tlocal speed_text = (round(state.speed * 100) / 100)..'x'\n\tass:new_event()\n\tass:append('{\\\\blur0\\\\bord1\\\\shad0\\\\1c&H'..options.color_background_text..'\\\\3c&H'..options.color_background..'\\\\fn'..config.font..'\\\\fs'..this.font_size..bold_tag..'}')\n\tass:append(ass_opacity(options.speed_opacity, opacity))\n\tass:pos(half_x, ay)\n\tass:an(8)\n\tass:append(speed_text)\n\n\treturn ass\nend\n\nfunction render_menu_button(this)\n\tlocal opacity = this:get_effective_proximity()\n\n\tif this.width == 0 or opacity == 0 then return end\n\n\tif this.proximity_raw > 0 then opacity = opacity / 2 end\n\n\tlocal ass = assdraw.ass_new()\n\t-- Menu button\n\tlocal burger = elements.menu_button\n\tass:new_event()\n\tass:append(icon(\n\t'menu_button',\n\t\tburger.ax + (burger.width / 2), burger.ay + (burger.height / 2), burger.width, -- x, y, size\n\t\t0, 0, options.menu_button_border, -- shadow_x, shadow_y, shadow_size\n\t\t'background', options.menu_button_opacity * opacity -- backdrop, opacity\n\t))\n\treturn ass\nend\n\nfunction render_menu(this)\n\tlocal ass = assdraw.ass_new()\n\n\tif this.parent_menu then\n\t\tass:merge(this.parent_menu:render())\n\tend\n\n\t-- Menu title\n\tif this.title then\n\t\t-- Background\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.color_background..'}')\n\t\tass:append(ass_opacity(options.menu_opacity, this.opacity))\n\t\tass:pos(0, 0)\n\t\tass:draw_start()\n\t\tass:rect_cw(this.ax, this.ay - this.item_height, this.bx, this.ay - 1)\n\t\tass:draw_stop()\n\n\t\t-- Title\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord0\\\\shad1\\\\b1\\\\1c&H'..options.color_background_text..'\\\\4c&H'..options.color_background..'\\\\fn'..config.font..'\\\\fs'..this.font_size..'\\\\q2\\\\clip('..this.ax..','..this.ay - this.item_height..','..this.bx..','..this.ay..')}')\n\t\tass:append(ass_opacity(options.menu_opacity, this.opacity))\n\t\tass:pos(display.width / 2, this.ay - (this.item_height * 0.5))\n\t\tass:an(5)\n\t\tass:append(this.title)\n\tend\n\n\tlocal scroll_area_clip = '\\\\clip('..this.ax..','..this.ay..','..this.bx..','..this.by..')'\n\n\tfor index, item in ipairs(this.items) do\n\t\tlocal item_ay = this.ay - this.scroll_y + (this.item_height * (index - 1) + this.item_spacing * (index - 1))\n\t\tlocal item_by = item_ay + this.item_height\n\t\tlocal item_clip = ''\n\n\t\t-- Clip items overflowing scroll area\n\t\tif item_ay <= this.ay or item_by >= this.by then\n\t\t\titem_clip = scroll_area_clip\n\t\tend\n\n\t\tif item_by < this.ay or item_ay > this.by then goto continue end\n\n\t\tlocal is_active = this.active_item == index\n\t\tlocal font_color, background_color, ass_shadow, ass_shadow_color\n\t\tlocal icon_size = this.font_size\n\n\t\tif is_active then\n\t\t\tfont_color, background_color = options.color_foreground_text, options.color_foreground\n\t\t\tass_shadow, ass_shadow_color = '\\\\shad0', ''\n\t\telse\n\t\t\tfont_color, background_color = options.color_background_text, options.color_background\n\t\t\tass_shadow, ass_shadow_color = '\\\\shad1', '\\\\4c&H'..background_color\n\t\tend\n\n\t\tlocal has_submenu = item.items ~= nil\n\t\tlocal hint_width = 0\n\t\tif item.hint then\n\t\t\thint_width = text_width_estimate(item.hint:len(), this.font_size) + this.item_content_spacing\n\t\telseif has_submenu then\n\t\t\thint_width = icon_size + this.item_content_spacing\n\t\tend\n\n\t\t-- Background\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..background_color..item_clip..'}')\n\t\tass:append(ass_opacity(options.menu_opacity, this.opacity))\n\t\tass:pos(0, 0)\n\t\tass:draw_start()\n\t\tass:rect_cw(this.ax, item_ay, this.bx, item_by)\n\t\tass:draw_stop()\n\n\t\t-- Selected highlight\n\t\tif this.selected_item == index then\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.color_foreground..item_clip..'}')\n\t\t\tass:append(ass_opacity(0.1, this.opacity))\n\t\t\tass:pos(0, 0)\n\t\t\tass:draw_start()\n\t\t\tass:rect_cw(this.ax, item_ay, this.bx, item_by)\n\t\t\tass:draw_stop()\n\t\tend\n\n\t\t-- Title\n\t\tif item.title then\n\t\t\titem.ass_save_title = item.ass_save_title or item.title:gsub(\"([{}])\",\"\\\\%1\")\n\t\t\tlocal title_clip_x = (this.bx - hint_width - this.item_content_spacing)\n\t\t\tlocal title_clip = '\\\\clip('..this.ax..','..math.max(item_ay, this.ay)..','..title_clip_x..','..math.min(item_by, this.by)..')'\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\shad1\\\\1c&H'..font_color..'\\\\4c&H'..background_color..'\\\\fn'..config.font..'\\\\fs'..this.font_size..bold_tag..title_clip..'\\\\q2}')\n\t\t\tass:append(ass_opacity(options.menu_opacity, this.opacity))\n\t\t\tass:pos(this.ax + this.item_content_spacing, item_ay + (this.item_height / 2))\n\t\t\tass:an(4)\n\t\t\tass:append(item.ass_save_title)\n\t\tend\n\n\t\t-- Hint\n\t\tif item.hint then\n\t\t\titem.ass_save_hint = item.ass_save_hint or item.hint:gsub(\"([{}])\",\"\\\\%1\")\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0'..ass_shadow..'\\\\1c&H'..font_color..''..ass_shadow_color..'\\\\fn'..config.font..'\\\\fs'..(this.font_size - 1)..bold_tag..item_clip..'}')\n\t\t\tass:append(ass_opacity(options.menu_opacity * (has_submenu and 1 or 0.5), this.opacity))\n\t\t\tass:pos(this.bx - this.item_content_spacing, item_ay + (this.item_height / 2))\n\t\t\tass:an(6)\n\t\t\tass:append(item.ass_save_hint)\n\t\telseif has_submenu then\n\t\t\tass:new_event()\n\t\t\tass:append(icon(\n\t\t\t\t'arrow_right',\n\t\t\t\tthis.bx - this.item_content_spacing - (icon_size / 2), -- x\n\t\t\t\titem_ay + (this.item_height / 2), -- y\n\t\t\t\ticon_size, -- size\n\t\t\t\t0, 0, 1, -- shadow_x, shadow_y, shadow_size\n\t\t\t\tis_active and 'foreground' or 'background', this.opacity, -- backdrop, opacity\n\t\t\t\titem_clip\n\t\t\t))\n\t\tend\n\n\t\t::continue::\n\tend\n\n\t-- Scrollbar\n\tif this.scroll_height > 0 then\n\t\tlocal groove_height = this.height - 2\n\t\tlocal thumb_height = math.max((this.height / (this.scroll_height + this.height)) * groove_height, 40)\n\t\tlocal thumb_y = this.ay + 1 + ((this.scroll_y / this.scroll_height) * (groove_height - thumb_height))\n\t\tass:new_event()\n\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.color_foreground..'}')\n\t\tass:append(ass_opacity(options.menu_opacity, this.opacity * 0.8))\n\t\tass:pos(0, 0)\n\t\tass:draw_start()\n\t\tass:rect_cw(this.bx - 3, thumb_y, this.bx - 1, thumb_y + thumb_height)\n\t\tass:draw_stop()\n\tend\n\n\treturn ass\nend\n\n-- MAIN RENDERING\n\n-- Request that render() is called.\n-- The render is then either executed immediately, or rate-limited if it was\n-- called a small time ago.\nfunction request_render()\n\tif state.render_timer == nil then\n\t\tstate.render_timer = mp.add_timeout(0, render)\n\tend\n\n\tif not state.render_timer:is_enabled() then\n\t\tlocal now = mp.get_time()\n\t\tlocal timeout = config.render_delay - (now - state.render_last_time)\n\t\tif timeout < 0 then\n\t\t\ttimeout = 0\n\t\tend\n\t\tstate.render_timer.timeout = timeout\n\t\tstate.render_timer:resume()\n\tend\nend\n\nfunction render()\n\tstate.render_last_time = mp.get_time()\n\n\t-- Actual rendering\n\tlocal ass = assdraw.ass_new()\n\n\tfor _, element in elements.ipairs() do\n\t\tlocal result = element:maybe('render')\n\t\tif result then\n\t\t\tass:new_event()\n\t\t\tass:merge(result)\n\t\tend\n\tend\n\n\t-- submit\n\tif osd.res_x == display.width and osd.res_y == display.height and osd.data == ass.text then\n\t\treturn\n\tend\n\n\tosd.res_x = display.width\n\tosd.res_y = display.height\n\tosd.data = ass.text\n\tosd.z = 2000\n\tosd:update()\nend\n\n-- STATIC ELEMENTS\n\nelements:add('window_border', Element.new({\n\tsize = nil, -- set in init\n\tinit = function(this)\n\t\tthis:update_size();\n\tend,\n\tupdate_size = function(this)\n\t\tthis.size = options.window_border_size > 0 and not state.fullormaxed and not state.border and options.window_border_size or 0\n\tend,\n\ton_prop_border = function(this) this:update_size() end,\n\ton_prop_fullormaxed = function(this) this:update_size() end,\n\trender = function(this)\n\t\tif this.size > 0 then\n\t\t\tlocal ass = assdraw.ass_new()\n\t\t\tlocal clip_coordinates = this.size..','..this.size..','..(display.width - this.size)..','..(display.height - this.size)\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.color_background..'\\\\iclip('..clip_coordinates..')}')\n\t\t\tass:append(ass_opacity(options.window_border_opacity))\n\t\t\tass:pos(0, 0)\n\t\t\tass:draw_start()\n\t\t\tass:rect_cw(0, 0, display.width, display.height)\n\t\t\tass:draw_stop()\n\t\t\treturn ass\n\t\tend\n\tend\n}))\nelements:add('pause_indicator', Element.new({\n\tbase_icon_opacity = options.pause_indicator == 'flash' and 1 or 0.8,\n\tpaused = false,\n\ttype = options.pause_indicator,\n\tis_manual = options.pause_indicator == 'manual',\n\tfadeout_requested = false,\n\topacity = 0,\n\tinit = function(this)\n\t\tlocal initial_call = true\n\t\tmp.observe_property('pause', 'bool', function(_, paused)\n\t\t\tif initial_call then\n\t\t\t\tinitial_call = false\n\t\t\t\treturn\n\t\t\tend\n\n\t\t\tthis.paused = paused\n\n\t\t\tif options.pause_indicator == 'flash' then\n\t\t\t\tthis:flash()\n\t\t\telseif options.pause_indicator == 'static' then\n\t\t\t\tthis:decide()\n\t\t\tend\n\t\tend)\n\tend,\n\tflash = function(this)\n\t\tif not this.is_manual and this.type ~= 'flash' then return end\n\t\t-- can't wait for pause property event listener to set this, because when this is used inside a binding like:\n\t\t-- cycle pause; script-binding uosc/flash-pause-indicator\n\t\t-- the pause event is not fired fast enough, and indicator starts rendering with old icon\n\t\tthis.paused = mp.get_property_native('pause')\n\t\tif this.is_manual then this.type = 'flash' end\n\t\tthis.opacity = 1\n\t\tthis:tween_property('opacity', 1, 0, 0.15)\n\tend,\n\t-- decides whether static indicator should be visible or not\n\tdecide = function(this)\n\t\tif not this.is_manual and this.type ~= 'static' then return end\n\t\tthis.paused = mp.get_property_native('pause') -- see flash() for why this line is necessary\n\t\tif this.is_manual then this.type = 'static' end\n\t\tthis.opacity = this.paused and 1 or 0\n\t\trequest_render()\n\n\t\t-- works around an mpv race condition bug during pause on windows builds, which cause osd updates to be ignored\n\t\t-- .03 was still loosing renders, .04 was fine, but to be safe I added 10ms more\n\t\tmp.add_timeout(.05, function() osd:update() end)\n\tend,\n\trender = function(this)\n\t\tif this.opacity == 0 then return end\n\n\t\tlocal ass = assdraw.ass_new()\n\t\tlocal is_static = this.type == 'static'\n\n\t\t-- Background fadeout\n\t\tif is_static then\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.color_background..'}')\n\t\t\tass:append(ass_opacity(0.3, this.opacity))\n\t\t\tass:pos(0, 0)\n\t\t\tass:draw_start()\n\t\t\tass:rect_cw(0, 0, display.width, display.height)\n\t\t\tass:draw_stop()\n\t\tend\n\n\t\t-- Icon\n\t\tlocal size = round((math.min(display.width, display.height) * (is_static and 0.20 or 0.15)) / 2)\n\n\t\tsize = size + size * (1 - this.opacity)\n\n\t\tif this.paused then\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord1\\\\1c&H'..options.color_foreground..'\\\\3c&H'..options.color_background..'}')\n\t\t\tass:append(ass_opacity(this.base_icon_opacity, this.opacity))\n\t\t\tass:pos(display.width / 2, display.height / 2)\n\t\t\tass:draw_start()\n\t\t\tass:rect_cw(-size, -size, -size / 3, size)\n\t\t\tass:draw_stop()\n\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord1\\\\1c&H'..options.color_foreground..'\\\\3c&H'..options.color_background..'}')\n\t\t\tass:append(ass_opacity(this.base_icon_opacity, this.opacity))\n\t\t\tass:pos(display.width / 2, display.height / 2)\n\t\t\tass:draw_start()\n\t\t\tass:rect_cw(size / 3, -size, size, size)\n\t\t\tass:draw_stop()\n\t\telse\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord1\\\\1c&H'..options.color_foreground..'\\\\3c&H'..options.color_background..'}')\n\t\t\tass:append(ass_opacity(this.base_icon_opacity, this.opacity))\n\t\t\tass:pos(display.width / 2, display.height / 2)\n\t\t\tass:draw_start()\n\t\t\tass:move_to(-size * 0.6, -size)\n\t\t\tass:line_to(size, 0)\n\t\t\tass:line_to(-size * 0.6, size)\n\t\t\tass:draw_stop()\n\t\tend\n\n\t\treturn ass\n\tend\n}))\nelements:add('timeline', Element.new({\n\tpressed = false,\n\tsize_max = 0, size_min = 0, -- set in `on_display_change` handler based on `state.fullormaxed`\n\tsize_min_override = options.timeline_start_hidden and 0 or nil, -- used for toggle-progress command\n\tfont_size = 0, -- calculated in on_display_change\n\ttotal_time = nil, -- set in op_prop_duration listener\n\ttop_border = options.timeline_border,\n\tget_effective_proximity = function(this)\n\t\tif this.pressed or is_element_persistent('timeline') then return 1 end\n\t\tif this.forced_proximity then return this.forced_proximity end\n\t\treturn (elements.volume_slider and elements.volume_slider.pressed) and 0 or this.proximity\n\tend,\n\tget_effective_size_min = function(this)\n\t\treturn this.size_min_override or this.size_min\n\tend,\n\tget_effective_size = function(this)\n\t\tif elements.speed and elements.speed.dragging then return this.size_max end\n\t\tlocal size_min = this:get_effective_size_min()\n\t\treturn size_min + math.ceil((this.size_max - size_min) * this:get_effective_proximity())\n\tend,\n\tupdate_dimensions = function(this)\n\t\tif state.fullormaxed then\n\t\t\tthis.size_min = options.timeline_size_min_fullscreen\n\t\t\tthis.size_max = options.timeline_size_max_fullscreen\n\t\telse\n\t\t\tthis.size_min = options.timeline_size_min\n\t\t\tthis.size_max = options.timeline_size_max\n\t\tend\n\t\tthis.font_size = math.floor(math.min((this.size_max + 60) * 0.2, this.size_max * 0.96) * options.timeline_font_scale)\n\t\tthis.ax = elements.window_border.size\n\t\tthis.ay = display.height - elements.window_border.size - this.size_max - this.top_border\n\t\tthis.bx = display.width - elements.window_border.size\n\t\tthis.by = display.height - elements.window_border.size\n\t\tthis.width = this.bx - this.ax\n\tend,\n\ton_prop_border = function(this) this:update_dimensions() end,\n\ton_prop_fullormaxed = function(this) this:update_dimensions() end,\n\ton_display_change = function(this) this:update_dimensions() end,\n\ton_prop_duration = function(this, value)\n\t\tthis.total_time = value and mp.format_time(value) or nil\n\tend,\n\tset_from_cursor = function(this)\n\t\tmp.commandv('seek', (((cursor.x - this.ax) / this.width) * 100), 'absolute-percent+exact')\n\tend,\n\ton_mbtn_left_down = function(this)\n\t\tthis.pressed = true\n\t\tthis:set_from_cursor()\n\tend,\n\ton_global_mbtn_left_up = function(this) this.pressed = false end,\n\ton_global_mouse_leave = function(this) this.pressed = false end,\n\ton_global_mouse_move = function(this)\n\t\tif this.pressed then this:set_from_cursor() end\n\tend,\n\ton_wheel_up = function(this)\n\t\tif options.timeline_step > 0 then mp.commandv('seek', -options.timeline_step) end\n\tend,\n\ton_wheel_down = function(this)\n\t\tif options.timeline_step > 0 then mp.commandv('seek', options.timeline_step) end\n\tend,\n\trender = render_timeline,\n}))\nelements:add('top_bar', Element.new({\n\tbutton_opacity = 0.8,\n\tenabled = false,\n\tget_effective_proximity = function(this)\n\t\tif is_element_persistent('top_bar') then return 1 end\n\t\tif this.forced_proximity then return this.forced_proximity end\n\t\treturn (elements.volume_slider and elements.volume_slider.pressed) and 0 or this.proximity\n\tend,\n\tdecide_enabled = function(this)\n\t\tif options.top_bar == 'no-border' then\n\t\t\tthis.enabled = not state.border or state.fullormaxed\n\t\telseif options.top_bar == 'always' then\n\t\t\tthis.enabled = true\n\t\telse\n\t\t\tthis.enabled = false\n\t\tend\n\t\tthis.enabled = this.enabled and (options.top_bar_controls or options.top_bar_title)\n\tend,\n\tupdate_dimensions = function(this)\n\t\tthis.size = state.fullormaxed and options.top_bar_size_fullscreen or options.top_bar_size\n\t\tthis.icon_size = round(this.size / 8)\n\t\tthis.spacing = math.ceil(this.size * 0.25)\n\t\tthis.font_size = math.floor(this.size - (this.spacing * 2))\n\t\tthis.button_width = round(this.size * 1.15)\n\t\tthis.ay = elements.window_border.size\n\t\tthis.bx = display.width - elements.window_border.size\n\t\tthis.by = this.size + elements.window_border.size\n\t\tthis.title_bx = this.bx - (options.top_bar_controls and (this.button_width * 3) or 0)\n\t\tthis.ax = options.top_bar_title and elements.window_border.size or this.title_bx\n\tend,\n\ton_prop_border = function(this)\n\t\tthis:decide_enabled()\n\t\tthis:update_dimensions()\n\tend,\n\ton_prop_fullormaxed = function(this)\n\t\tthis:decide_enabled()\n\t\tthis:update_dimensions()\n\tend,\n\ton_display_change = function(this) this:update_dimensions() end,\n\trender = render_top_bar,\n}))\nif options.top_bar_controls then\n\telements:add('window_controls_minimize', Element.new({\n\t\tupdate_dimensions = function(this)\n\t\t\tthis.ax = elements.top_bar.bx - (elements.top_bar.button_width * 3)\n\t\t\tthis.ay = elements.top_bar.ay\n\t\t\tthis.bx = this.ax + elements.top_bar.button_width\n\t\t\tthis.by = this.ay + elements.top_bar.size\n\t\tend,\n\t\ton_prop_border = function(this) this:update_dimensions() end,\n\t\ton_display_change = function(this) this:update_dimensions() end,\n\t\ton_mbtn_left_down = function() mp.commandv('cycle', 'window-minimized') end\n\t}))\n\telements:add('window_controls_maximize', Element.new({\n\t\tupdate_dimensions = function(this)\n\t\t\tthis.ax = elements.top_bar.bx - (elements.top_bar.button_width * 2)\n\t\t\tthis.ay = elements.top_bar.ay\n\t\t\tthis.bx = this.ax + elements.top_bar.button_width\n\t\t\tthis.by = this.ay + elements.top_bar.size\n\t\tend,\n\t\ton_prop_border = function(this) this:update_dimensions() end,\n\t\ton_display_change = function(this) this:update_dimensions() end,\n\t\ton_mbtn_left_down = function() mp.commandv('cycle', 'window-maximized') end\n\t}))\n\telements:add('window_controls_close', Element.new({\n\t\tupdate_dimensions = function(this)\n\t\t\tthis.ax = elements.top_bar.bx - elements.top_bar.button_width\n\t\t\tthis.ay = elements.top_bar.ay\n\t\t\tthis.bx = this.ax + elements.top_bar.button_width\n\t\t\tthis.by = this.ay + elements.top_bar.size\n\t\tend,\n\t\ton_prop_border = function(this) this:update_dimensions() end,\n\t\ton_display_change = function(this) this:update_dimensions() end,\n\t\ton_mbtn_left_down = function() mp.commandv('quit') end\n\t}))\nend\nif itable_find({'left', 'right'}, options.volume) then\n\telements:add('volume', Element.new({\n\t\twidth = nil, -- set in `on_display_change` handler based on `state.fullormaxed`\n\t\theight = nil, -- set in `on_display_change` handler based on `state.fullormaxed`\n\t\tmargin = nil, -- set in `on_display_change` handler based on `state.fullormaxed`\n\t\tget_effective_proximity = function(this)\n\t\t\tif is_element_persistent('volume') or elements.volume_slider.pressed then return 1 end\n\t\t\tif this.forced_proximity then return this.forced_proximity end\n\t\t\treturn elements.timeline.proximity_raw == 0 and 0 or this.proximity\n\t\tend,\n\t\tupdate_dimensions = function(this)\n\t\t\tthis.width = state.fullormaxed and options.volume_size_fullscreen or options.volume_size\n\t\t\tthis.height = round(math.min(this.width * 8, (elements.timeline.ay - elements.top_bar.size) * 0.8))\n\t\t\t-- Don't bother rendering this if too small\n\t\t\tif this.height < (this.width * 2) then\n\t\t\t\tthis.height = 0\n\t\t\tend\n\t\t\tthis.margin = (this.width / 2) + elements.window_border.size\n\t\t\tthis.ax = round(options.volume == 'left' and this.margin or display.width - this.margin - this.width)\n\t\t\tthis.ay = round((display.height - this.height) / 2)\n\t\t\tthis.bx = round(this.ax + this.width)\n\t\t\tthis.by = round(this.ay + this.height)\n\t\tend,\n\t\ton_display_change = function(this) this:update_dimensions() end,\n\t\ton_prop_border = function(this) this:update_dimensions() end,\n\t\trender = render_volume,\n\t}))\n\telements:add('volume_mute', Element.new({\n\t\twidth = 0,\n\t\theight = 0,\n\t\ton_display_change = function(this)\n\t\t\tthis.width = elements.volume.width\n\t\t\tthis.height = this.width\n\t\t\tthis.ax = elements.volume.ax\n\t\t\tthis.ay = elements.volume.by - this.height\n\t\t\tthis.bx = elements.volume.bx\n\t\t\tthis.by = elements.volume.by\n\t\tend,\n\t\ton_mbtn_left_down = function(this) mp.commandv('cycle', 'mute') end\n\t}))\n\telements:add('volume_slider', Element.new({\n\t\tpressed = false,\n\t\twidth = 0,\n\t\theight = 0,\n\t\tnudge_y = 0, -- vertical position where volume overflows 100\n\t\tnudge_size = nil, -- set on resize\n\t\tfont_size = nil,\n\t\tspacing = nil,\n\t\ton_display_change = function(this)\n\t\t\tif state.volume_max == nil or state.volume_max == 0 then return end\n\t\t\tthis.ax = elements.volume.ax\n\t\t\tthis.ay = elements.volume.ay\n\t\t\tthis.bx = elements.volume.bx\n\t\t\tthis.by = elements.volume_mute.ay\n\t\t\tthis.width = this.bx - this.ax\n\t\t\tthis.height = this.by - this.ay\n\t\t\tthis.nudge_y = this.by - round(this.height * (100 / state.volume_max))\n\t\t\tthis.nudge_size = round(elements.volume.width * 0.18)\n\t\t\tthis.draw_nudge = this.ay < this.nudge_y\n\t\t\tthis.spacing = round(this.width * 0.2)\n\t\tend,\n\t\tset_from_cursor = function(this)\n\t\t\tlocal volume_fraction = (this.by - cursor.y - options.volume_border) / (this.height - options.volume_border)\n\t\t\tlocal new_volume = math.min(math.max(volume_fraction, 0), 1) * state.volume_max\n\t\t\tnew_volume = round(new_volume / options.volume_step) * options.volume_step\n\t\t\tif state.volume ~= new_volume then mp.commandv('set', 'volume', math.min(new_volume, state.volume_max)) end\n\t\tend,\n\t\ton_mbtn_left_down = function(this)\n\t\t\tthis.pressed = true\n\t\t\tthis:set_from_cursor()\n\t\tend,\n\t\ton_global_mbtn_left_up = function(this) this.pressed = false end,\n\t\ton_global_mouse_leave = function(this) this.pressed = false end,\n\t\ton_global_mouse_move = function(this)\n\t\t\tif this.pressed then this:set_from_cursor() end\n\t\tend,\n\t\ton_wheel_up = function(this)\n\t\t\tlocal current_rounded_volume = round(state.volume / options.volume_step) * options.volume_step\n\t\t\tmp.commandv('set', 'volume', math.min(current_rounded_volume + options.volume_step, state.volume_max))\n\t\tend,\n\t\ton_wheel_down = function(this)\n\t\t\tlocal current_rounded_volume = round(state.volume / options.volume_step) * options.volume_step\n\t\t\tmp.commandv('set', 'volume', math.min(current_rounded_volume - options.volume_step, state.volume_max))\n\t\tend,\n\t}))\nend\nif itable_find({'center', 'bottom-bar'}, options.menu_button) then\n\telements:add('menu_button', Element.new({\n\t\twidth = 0, height = 0,\n\t\tget_effective_proximity = function(this)\n\t\t\tif menu:is_open() then return 0 end\n\t\t\tif is_element_persistent('menu_button') then return 1 end\n\t\t\tif elements.timeline.proximity_raw == 0 then return 0 end\n\t\t\tif this.forced_proximity then return this.forced_proximity end\n\t\t\tif options.menu_button == 'bottom-bar' then\n\t\t\t\tlocal timeline_proximity = elements.timeline.forced_proximity or elements.timeline.proximity\n\t\t\t\treturn this.forced_proximity or math[cursor.hidden and 'min' or 'max'](this.proximity, timeline_proximity)\n\t\t\tend\n\t\t\treturn this.proximity\n\t\tend,\n\t\tupdate_dimensions = function(this)\n\t\t\tthis.width = state.fullormaxed and options.menu_button_size_fullscreen or options.menu_button_size\n\t\t\tthis.height = this.width\n\n\t\t\tif options.menu_button == 'bottom-bar' then\n\t\t\t\tthis.ax = 15\n\t\t\t\tthis.bx = this.ax + this.width\n\t\t\t\tthis.by = display.height - 10 - elements.window_border.size - elements.timeline.size_max - elements.timeline.top_border\n\t\t\t\tthis.ay = this.by - this.height\n\t\t\telse\n\t\t\t\tthis.ax = round((display.width - this.width) / 2)\n\t\t\t\tthis.ay = round((display.height - this.height) / 2)\n\t\t\t\tthis.bx = this.ax + this.width\n\t\t\t\tthis.by = this.ay + this.height\n\t\t\tend\n\t\tend,\n\t\ton_display_change = function(this) this:update_dimensions() end,\n\t\ton_prop_border = function(this) this:update_dimensions() end,\n\t\ton_mbtn_left_down = function(this)\n\t\t\tif this.proximity_raw == 0 then menu_key_binding() end\n\t\tend,\n\t\trender = render_menu_button,\n\t}))\nend\nif options.speed then\n\telements:add('speed', Element.new({\n\t\tdragging = nil,\n\t\twidth = 0,\n\t\theight = 0,\n\t\tnotches = 10,\n\t\tnotch_every = 0.1,\n\t\tstep_distance = nil,\n\t\tfont_size = nil,\n\t\tget_effective_proximity = function(this)\n\t\t\tif elements.timeline.proximity_raw == 0 then return 0 end\n\t\t\tif is_element_persistent('speed') then return 1 end\n\t\t\tif this.forced_proximity then return this.forced_proximity end\n\t\t\tlocal timeline_proximity = elements.timeline.forced_proximity or elements.timeline.proximity\n\t\t\treturn this.forced_proximity or math[cursor.hidden and 'min' or 'max'](this.proximity, timeline_proximity)\n\t\tend,\n\t\tupdate_dimensions = function(this)\n\t\t\tthis.height = state.fullormaxed and options.speed_size_fullscreen or options.speed_size\n\t\t\tthis.width = round(this.height * 3.6)\n\t\t\tthis.notch_spacing = this.width / this.notches\n\t\t\tthis.step_distance = this.notch_spacing * (options.speed_step / this.notch_every)\n\t\t\tthis.ax = (display.width - this.width) / 2\n\t\t\tthis.by = display.height - elements.window_border.size - elements.timeline.size_max - elements.timeline.top_border\n\t\t\tthis.ay = this.by - this.height\n\t\t\tthis.bx = this.ax + this.width\n\t\t\tthis.font_size = round(this.height * 0.48 * options.speed_font_scale)\n\t\tend,\n\t\tset_from_cursor = function(this)\n\t\t\tlocal volume_fraction = (this.by - cursor.y - options.volume_border) / (this.height - options.volume_border)\n\t\t\tlocal new_volume = math.min(math.max(volume_fraction, 0), 1) * state.volume_max\n\t\t\tnew_volume = round(new_volume / options.volume_step) * options.volume_step\n\t\t\tif state.volume ~= new_volume then mp.commandv('set', 'volume', new_volume) end\n\t\tend,\n\t\ton_prop_border = function(this) this:update_dimensions() end,\n\t\ton_display_change = function(this) this:update_dimensions() end,\n\t\ton_mbtn_left_down = function(this)\n\t\t\tthis:tween_stop() -- Stop and cleanup possible ongoing animations\n\t\t\tthis.dragging = {\n\t\t\t\tstart_time = mp.get_time(),\n\t\t\t\tstart_x = cursor.x,\n\t\t\t\tdistance = 0,\n\t\t\t\tstart_speed = state.speed\n\t\t\t}\n\t\tend,\n\t\ton_global_mouse_move = function(this)\n\t\t\tif not this.dragging then return end\n\n\t\t\tthis.dragging.distance = cursor.x - this.dragging.start_x\n\t\t\tlocal steps_dragged = round(-this.dragging.distance / this.step_distance)\n\t\t\tlocal new_speed = this.dragging.start_speed + (steps_dragged * options.speed_step)\n\t\t\tmp.set_property_native('speed', round(new_speed * 100) / 100)\n\t\tend,\n\t\ton_mbtn_left_up = function(this)\n\t\t\t-- Reset speed on short clicks\n\t\t\tif this.dragging and math.abs(this.dragging.distance) < 6 and mp.get_time() - this.dragging.start_time < 0.15 then\n\t\t\t\tmp.set_property_native('speed', 1)\n\t\t\tend\n\t\tend,\n\t\ton_global_mbtn_left_up = function(this)\n\t\t\tif this.dragging and elements.timeline.proximity_raw == 0 then\n\t\t\t\tthis:fadeout()\n\t\t\tend\n\t\t\tthis.dragging = nil\n\t\t\trequest_render()\n\t\tend,\n\t\ton_global_mouse_leave = function(this)\n\t\t\tthis.dragging = nil\n\t\t\trequest_render()\n\t\tend,\n\t\ton_wheel_up = function(this)\n\t\t\tmp.set_property_native('speed', state.speed - options.speed_step)\n\t\tend,\n\t\ton_wheel_down = function(this)\n\t\t\tmp.set_property_native('speed', state.speed + options.speed_step)\n\t\tend,\n\t\trender = render_speed,\n\t}))\nend\nelements:add('curtain', Element.new({\n\topacity = 0,\n\tfadeout = function(this)\n\t\tthis:tween_property('opacity', this.opacity, 0);\n\tend,\n\tfadein = function(this)\n\t\tthis:tween_property('opacity', this.opacity, 1);\n\tend,\n\trender = function(this)\n\t\tif this.opacity > 0 and options.curtain_opacity > 0 then\n\t\t\tlocal ass = assdraw.ass_new()\n\t\t\tass:new_event()\n\t\t\tass:append('{\\\\blur0\\\\bord0\\\\1c&H'..options.color_background..'}')\n\t\t\tass:append(ass_opacity(options.curtain_opacity, this.opacity))\n\t\t\tass:pos(0, 0)\n\t\t\tass:draw_start()\n\t\t\tass:rect_cw(0, 0, display.width, display.height)\n\t\t\tass:draw_stop()\n\t\t\treturn ass\n\t\tend\n\tend\n}))\n\n-- CHAPTERS SERIALIZATION\n\n-- Parse `chapter_ranges` option into workable data structure\nfor _, definition in ipairs(split(options.chapter_ranges, ' *,+ *')) do\n\tlocal start_patterns, color, opacity, end_patterns = string.match(definition, '([^<]+)<(%x%x%x%x%x%x):(%d?%.?%d*)>([^>]+)')\n\n\t-- Invalid definition\n\tif start_patterns == nil then goto continue end\n\n\tstart_patterns = start_patterns:lower()\n\tend_patterns = end_patterns:lower()\n\tlocal uses_bof = start_patterns:find('{bof}') ~= nil\n\tlocal uses_eof = end_patterns:find('{eof}') ~= nil\n\tlocal chapter_range = {\n\t\tstart_patterns = split(start_patterns, '|'),\n\t\tend_patterns = split(end_patterns, '|'),\n\t\tcolor = color,\n\t\topacity = tonumber(opacity),\n\t\tranges = {}\n\t}\n\n\t-- Filter out special keywords so we don't use them when matching titles\n\tif uses_bof then\n\t\tchapter_range.start_patterns = itable_remove(chapter_range.start_patterns, '{bof}')\n\tend\n\tif uses_eof and chapter_range.end_patterns then\n\t\tchapter_range.end_patterns = itable_remove(chapter_range.end_patterns, '{eof}')\n\tend\n\n\tchapter_range['serialize'] = function (chapters)\n\t\tchapter_range.ranges = {}\n\t\tlocal current_range = nil\n\t\t-- bof and eof should be used only once per timeline\n\t\t-- eof is only used when last range is missing end\n\t\tlocal bof_used = false\n\n\t\tfunction start_range(chapter)\n\t\t\t-- If there is already a range started, should we append or overwrite?\n\t\t\t-- I chose overwrite here.\n\t\t\tcurrent_range = {['start'] = chapter}\n\t\tend\n\n\t\tfunction end_range(chapter)\n\t\t\tcurrent_range['end'] = chapter\n\t\t\tchapter_range.ranges[#chapter_range.ranges + 1] = current_range\n\t\t\t-- Mark both chapter objects\n\t\t\tcurrent_range['start']._uosc_used_as_range_point = true\n\t\t\tcurrent_range['end']._uosc_used_as_range_point = true\n\t\t\t-- Clear for next range\n\t\t\tcurrent_range = nil\n\t\tend\n\n\t\tfor _, chapter in ipairs(chapters) do\n\t\t\tif type(chapter.title) == 'string' then\n\t\t\t\tlocal lowercase_title = chapter.title:lower()\n\t\t\t\tlocal is_end = false\n\t\t\t\tlocal is_start = false\n\n\t\t\t\t-- Is ending check and handling\n\t\t\t\tif chapter_range.end_patterns then\n\t\t\t\t\tfor _, end_pattern in ipairs(chapter_range.end_patterns) do\n\t\t\t\t\t\tis_end = is_end or lowercase_title:find(end_pattern) ~= nil\n\t\t\t\t\tend\n\n\t\t\t\t\tif is_end then\n\t\t\t\t\t\tif current_range == nil and uses_bof and not bof_used then\n\t\t\t\t\t\t\tbof_used = true\n\t\t\t\t\t\t\tstart_range({time = 0})\n\t\t\t\t\t\tend\n\t\t\t\t\t\tif current_range ~= nil then\n\t\t\t\t\t\t\tend_range(chapter)\n\t\t\t\t\t\telse\n\t\t\t\t\t\t\tis_end = false\n\t\t\t\t\t\tend\n\t\t\t\t\tend\n\t\t\t\tend\n\n\t\t\t\t-- Is start check and handling\n\t\t\t\tfor _, start_pattern in ipairs(chapter_range.start_patterns) do\n\t\t\t\t\tis_start = is_start or lowercase_title:find(start_pattern) ~= nil\n\t\t\t\tend\n\n\t\t\t\tif is_start then start_range(chapter) end\n\t\t\tend\n\t\tend\n\n\t\t-- If there is an unfinished range and range type accepts eof, use it\n\t\tif current_range ~= nil and uses_eof then\n\t\t\tend_range({time = state.duration or infinity})\n\t\tend\n\tend\n\n\tstate.chapter_ranges = state.chapter_ranges or {}\n\tstate.chapter_ranges[#state.chapter_ranges + 1] = chapter_range\n\n\t::continue::\nend\n\nfunction parse_chapters()\n\t-- Sometimes state.duration is not initialized yet for some reason\n\tstate.duration = mp.get_property_native('duration')\n\n\tlocal chapters = get_normalized_chapters()\n\n\tif not chapters or not state.duration then return end\n\n\t-- Reset custom ranges\n\tfor _, chapter_range in ipairs(state.chapter_ranges or {}) do\n\t\tchapter_range.serialize(chapters)\n\tend\n\n\t-- Filter out chapters that were used as ranges\n\tstate.chapters = itable_remove(chapters, function(chapter)\n\t\treturn chapter._uosc_used_as_range_point == true\n\tend)\n\n\trequest_render()\nend\n\n-- CONTEXT MENU SERIALIZATION\n\nstate.context_menu_items = (function()\n\tlocal input_conf_path = mp.command_native({'expand-path', '~~/input.conf'})\n\tlocal input_conf_meta, meta_error = utils.file_info(input_conf_path)\n\n\t-- File doesn't exist\n\tif not input_conf_meta or not input_conf_meta.is_file then return end\n\n\tlocal main_menu = {items = {}, items_by_command = {}}\n\tlocal submenus_by_id = {}\n\n\tfor line in io.lines(input_conf_path) do\n\t\tlocal key, command, title = string.match(line, '%s*([%S]+)%s+(.*)%s#!%s*(.*)')\n\t\tif not key then\n\t\t\tkey, command, title = string.match(line, '%s*([%S]+)%s+(.*)%s#menu:%s*(.*)')\n\t\tend\n\t\tif key then\n\t\t\tlocal is_dummy = key:sub(1, 1) == '#'\n\t\t\tlocal submenu_id = ''\n\t\t\tlocal target_menu = main_menu\n\t\t\tlocal title_parts = split(title or '', ' *> *')\n\n\t\t\tfor index, title_part in ipairs(#title_parts > 0 and title_parts or {''}) do\n\t\t\t\tif index < #title_parts then\n\t\t\t\t\tsubmenu_id = submenu_id .. title_part\n\n\t\t\t\t\tif not submenus_by_id[submenu_id] then\n\t\t\t\t\t\tlocal items = {}\n\t\t\t\t\t\tsubmenus_by_id[submenu_id] = {items = items, items_by_command = {}}\n\t\t\t\t\t\ttarget_menu.items[#target_menu.items + 1] = {title = title_part, items = items}\n\t\t\t\t\tend\n\n\t\t\t\t\ttarget_menu = submenus_by_id[submenu_id]\n\t\t\t\telse\n\t\t\t\t\t-- If command is already in menu, just append the key to it\n\t\t\t\t\tif target_menu.items_by_command[command] then\n\t\t\t\t\t\tlocal hint = target_menu.items_by_command[command].hint\n\t\t\t\t\t\ttarget_menu.items_by_command[command].hint = hint and hint..', '..key or key\n\t\t\t\t\telse\n\t\t\t\t\t\tlocal item = {\n\t\t\t\t\t\t\ttitle = title_part,\n\t\t\t\t\t\t\thint = not is_dummy and key or nil,\n\t\t\t\t\t\t\tvalue = command\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttarget_menu.items_by_command[command] = item\n\t\t\t\t\t\ttarget_menu.items[#target_menu.items + 1] = item\n\t\t\t\t\tend\n\t\t\t\tend\n\t\t\tend\n\t\tend\n\tend\n\n\tif #main_menu.items > 0 then return main_menu.items end\nend)()\n\n-- EVENT HANDLERS\n\nfunction create_state_setter(name)\n\treturn function(_, value)\n\t\tstate[name] = value\n\t\telements:trigger('prop_'..name, value)\n\t\trequest_render()\n\tend\nend\n\nfunction update_cursor_position()\n\tcursor.x, cursor.y = mp.get_mouse_pos()\n\t-- mpv reports initial mouse position on linux as (0, 0), which always\n\t-- displays the top bar, so we just swap this one coordinate to infinity\n\tif cursor.x == 0 and cursor.y == 0 then\n\t\tcursor.x = infinity\n\t\tcursor.y = infinity\n\tend\n\tupdate_proximities()\n\trequest_render()\nend\n\nfunction handle_mouse_leave()\n\t-- Slowly fadeout elements that are currently visible\n\tfor _, element_name in ipairs({'timeline', 'volume', 'top_bar'}) do\n\t\tlocal element = elements[element_name]\n\t\tif element and element.proximity > 0 then\n\t\t\telement:tween_property('forced_proximity', element:get_effective_proximity(), 0, function()\n\t\t\t\telement.forced_proximity = nil\n\t\t\tend)\n\t\tend\n\tend\n\n\tcursor.hidden = true\n\tupdate_proximities()\n\telements:trigger('global_mouse_leave')\nend\n\nfunction handle_mouse_enter()\n\tcursor.hidden = false\n\tupdate_cursor_position()\n\ttween_element_stop(state)\n\telements:trigger('global_mouse_enter')\nend\n\nfunction handle_mouse_move()\n\t-- Handle case when we are in cursor hidden state but not left the actual\n\t-- window (i.e. when autohide simulates mouse_leave).\n\tif cursor.hidden then\n\t\thandle_mouse_enter()\n\t\treturn\n\tend\n\n\tupdate_cursor_position()\n\telements:trigger('global_mouse_move')\n\trequest_render()\n\n\t-- Restart timer that hides UI when mouse is autohidden\n\tif options.autohide then\n\t\tstate.cursor_autohide_timer:kill()\n\t\tstate.cursor_autohide_timer:resume()\n\tend\nend\n\nfunction navigate_directory(direction)\n\tlocal path = mp.get_property_native(\"path\")\n\n\tif not path or is_protocol(path) then return end\n\n\tlocal next_file = get_adjacent_file(path, direction, options.media_types)\n\n\tif next_file then\n\t\tmp.commandv(\"loadfile\", utils.join_path(serialize_path(path).dirname, next_file))\n\tend\nend\n\nfunction load_file_in_current_directory(index)\n\tlocal path = mp.get_property_native(\"path\")\n\n\tif not path or is_protocol(path) then return end\n\n\tlocal dirname = serialize_path(path).dirname\n\tlocal files = get_files_in_directory(dirname, options.media_types)\n\n\tif not files then return end\n\tif index < 0 then index = #files + index + 1 end\n\n\tif files[index] then\n\t\tmp.commandv(\"loadfile\", utils.join_path(dirname, files[index]))\n\tend\nend\n\n-- MENUS\n\nfunction create_select_tracklist_type_menu_opener(menu_title, track_type, track_prop)\n\treturn function()\n\t\tif menu:is_open(track_type) then menu:close() return end\n\n\t\tlocal items = {}\n\t\tlocal active_item = nil\n\n\t\tfor index, track in ipairs(mp.get_property_native('track-list')) do\n\t\t\tif track.type == track_type then\n\t\t\t\tif track.selected then active_item = track.id end\n\n\t\t\t\titems[#items + 1] = {\n\t\t\t\t\ttitle = (track.title and track.title or 'Track '..track.id),\n\t\t\t\t\thint = track.lang and track.lang:upper() or nil,\n\t\t\t\t\tvalue = track.id\n\t\t\t\t}\n\t\t\tend\n\t\tend\n\n\t\t-- Add option to disable a subtitle track. This works for all tracks,\n\t\t-- but why would anyone want to disable audio or video? Better to not\n\t\t-- let people mistakenly select what is unwanted 99.999% of the time.\n\t\t-- If I'm mistaken and there is an active need for this, feel free to\n\t\t-- open an issue.\n\t\tif track_type == 'sub' then\n\t\t\tactive_item = active_item and active_item + 1 or 1\n\t\t\ttable.insert(items, 1, {hint = 'disabled', value = nil})\n\t\tend\n\n\t\tmenu:open(items, function(id)\n\t\t\tmp.commandv('set', track_prop, id and id or 'no')\n\n\t\t\t-- If subtitle track was selected, assume user also wants to see it\n\t\t\tif id and track_type == 'sub' then\n\t\t\t\tmp.commandv('set', 'sub-visibility', 'yes')\n\t\t\tend\n\n\t\t\tmenu:close()\n\t\tend, {type = track_type, title = menu_title, active_item = active_item})\n\tend\nend\n\n-- `menu_options`:\n-- **allowed_types** - table with file extensions to display\n-- **active_path** - full path of a file to preselect\n-- Rest of the options are passed to `menu:open()`\nfunction open_file_navigation_menu(directory, handle_select, menu_options)\n\tdirectory = serialize_path(directory)\n\tlocal directories, error = utils.readdir(directory.path, 'dirs')\n\tlocal files, error = get_files_in_directory(directory.path, menu_options.allowed_types)\n\tlocal is_root = not directory.dirname\n\n\tif not files or not directories then\n\t\tmsg.error('Retrieving files from '..directory..' failed: '..(error or ''))\n\t\treturn\n\tend\n\n\t-- Files are already sorted\n\ttable.sort(directories, word_order_comparator)\n\n\t-- Pre-populate items with parent directory selector if not at root\n\tlocal items = is_root and {} or {\n\t\t{title = '..', hint = 'parent dir', value = directory.dirname}\n\t}\n\n\tfor _, dir in ipairs(directories) do\n\t\tlocal serialized = serialize_path(utils.join_path(directory.path, dir))\n\t\titems[#items + 1] = {title = serialized.basename, value = serialized.path, hint = '/'}\n\tend\n\n\tmenu_options.active_item = nil\n\n\tfor _, file in ipairs(files) do\n\t\tlocal serialized = serialize_path(utils.join_path(directory.path, file))\n\t\tlocal item_index = #items + 1\n\n\t\titems[item_index] = {\n\t\t\ttitle = serialized.basename,\n\t\t\tvalue = serialized.path,\n\t\t}\n\n\t\tif menu_options.active_path == serialized.path then\n\t\t\tmenu_options.active_item = item_index\n\t\tend\n\tend\n\n\tmenu_options.selected_item = menu_options.active_item or ((is_root == false and #files > 1) and 2 or 1)\n\tmenu_options.title = directory.basename..'/'\n\n\tmenu:open(items, function(path)\n\t\tlocal meta, error = utils.file_info(path)\n\n\t\tif not meta then\n\t\t\tmsg.error('Retrieving file info for '..path..' failed: '..(error or ''))\n\t\t\treturn\n\t\tend\n\n\t\tif meta.is_dir then\n\t\t\topen_file_navigation_menu(path, handle_select, menu_options)\n\t\telse\n\t\t\thandle_select(path)\n\t\t\tmenu:close()\n\t\tend\n\tend, menu_options)\nend\n\n-- VALUE SERIALIZATION/NORMALIZATION\n\noptions.proximity_out = math.max(options.proximity_out, options.proximity_in + 1)\noptions.chapters = itable_find({'dots', 'lines', 'lines-top', 'lines-bottom'}, options.chapters) and options.chapters or 'none'\noptions.media_types = split(options.media_types, ' *, *')\noptions.subtitle_types = split(options.subtitle_types, ' *, *')\noptions.stream_quality_options = split(options.stream_quality_options, ' *, *')\noptions.timeline_cached_ranges = (function()\n\tif options.timeline_cached_ranges == '' or options.timeline_cached_ranges == 'no' then return nil end\n\tlocal parts = split(options.timeline_cached_ranges, ':')\n\treturn parts[1] and {color = parts[1], opacity = tonumber(parts[2])} or nil\nend)()\nfor _, name in ipairs({'timeline', 'volume', 'top_bar', 'speed'}) do\n\tlocal option_name = name..'_persistency'\n\tlocal flags = {}\n\tfor _, state in ipairs(split(options[option_name], ' *, *')) do\n\t\tflags[state] = true\n\tend\n\toptions[option_name] = flags\nend\n\n-- HOOKS\nmp.register_event('file-loaded', parse_chapters)\nmp.observe_property('track-list', 'native', function(name, value)\n\t-- checks if the file is audio only (mp3, etc)\n\tlocal has_audio = false\n\tlocal has_video = false\n\tfor _, track in ipairs(value) do\n\t\tif track.type == 'audio' then has_audio = true end\n\t\tif track.type == 'video' and not track.albumart then has_video = true end\n\tend\n\tstate.is_audio = not has_video and has_audio\nend)\nmp.observe_property('chapter-list', 'native', parse_chapters)\nmp.observe_property('border', 'bool', create_state_setter('border'))\nmp.observe_property('ab-loop-a', 'number', create_state_setter('ab_loop_a'))\nmp.observe_property('ab-loop-b', 'number', create_state_setter('ab_loop_b'))\nmp.observe_property('duration', 'number', create_state_setter('duration'))\nmp.observe_property('media-title', 'string', create_state_setter('media_title'))\nmp.observe_property('fullscreen', 'bool', function(_, value)\n\tstate.fullscreen = value\n\tstate.fullormaxed = state.fullscreen or state.maximized\n\tupdate_display_dimensions()\n\telements:trigger('prop_fullscreen', value)\n\telements:trigger('prop_fullormaxed', state.fullormaxed)\nend)\nmp.observe_property('window-maximized', 'bool', function(_, value)\n\tstate.maximized = value\n\tstate.fullormaxed = state.fullscreen or state.maximized\n\tupdate_display_dimensions()\n\telements:trigger('prop_maximized', value)\n\telements:trigger('prop_fullormaxed', state.fullormaxed)\nend)\nmp.observe_property('idle-active', 'bool', create_state_setter('idle'))\nmp.observe_property('speed', 'number', create_state_setter('speed'))\nmp.observe_property('pause', 'bool', create_state_setter('pause'))\nmp.observe_property('volume', 'number', create_state_setter('volume'))\nmp.observe_property('volume-max', 'number', create_state_setter('volume_max'))\nmp.observe_property('mute', 'bool', create_state_setter('mute'))\nmp.observe_property('playback-time', 'number', function(name, val)\n\t-- Ignore the initial call with nil value\n\tif val == nil then return end\n\n\tstate.position = val\n\tstate.elapsed_seconds = val\n\tstate.elapsed_time = state.elapsed_seconds and mp.format_time(state.elapsed_seconds) or nil\n\tstate.remaining_seconds = mp.get_property_native('playtime-remaining')\n\tstate.remaining_time = state.remaining_seconds and mp.format_time(state.remaining_seconds) or nil\n\n\trequest_render()\nend)\nmp.observe_property('osd-dimensions', 'native', function(name, val)\n\tupdate_display_dimensions()\n\trequest_render()\nend)\nmp.observe_property('demuxer-cache-state', 'native', function(prop, cache_state)\n\tif cache_state == nil then\n\t\tstate.cached_ranges = nil\n\t\treturn\n\tend\n\tlocal cache_ranges = cache_state['seekable-ranges']\n\tstate.cached_ranges = #cache_ranges > 0 and cache_ranges or nil\nend)\n\n-- CONTROLS\n\n-- Mouse movement key binds\nlocal base_keybinds = {\n\t{'mouse_move', handle_mouse_move},\n\t{'mouse_leave', handle_mouse_leave},\n\t{'mouse_enter', handle_mouse_enter},\n}\nif options.pause_on_click_shorter_than > 0 then\n\t-- Cycles pause when click is shorter than `options.pause_on_click_shorter_than`\n\t-- while filtering out double clicks.\n\tlocal duration_seconds = options.pause_on_click_shorter_than / 1000\n\tlocal last_down_event;\n\tlocal click_timer = mp.add_timeout(duration_seconds, function()\n\t\tmp.command('cycle pause')\n\tend);\n\tclick_timer:kill()\n\tbase_keybinds[#base_keybinds + 1] = {'mbtn_left', function()\n\t\t\tif mp.get_time() - last_down_event < duration_seconds then\n\t\t\t\tclick_timer:resume()\n\t\t\tend\n\t\tend, function()\n\t\t\tif click_timer:is_enabled() then\n\t\t\t\tclick_timer:kill()\n\t\t\t\tlast_down_event = 0\n\t\t\telse\n\t\t\t\tlast_down_event = mp.get_time()\n\t\t\tend\n\t\tend\n\t}\nend\nmp.set_key_bindings(base_keybinds, 'mouse_movement', 'force')\nmp.enable_key_bindings('mouse_movement', 'allow-vo-dragging+allow-hide-cursor')\n\n-- Context based key bind groups\n\nforced_key_bindings = (function()\n\tfunction create_mouse_event_dispatcher(name)\n\t\treturn function(...)\n\t\t\tfor _, element in pairs(elements) do\n\t\t\t\tif element.proximity_raw == 0 then\n\t\t\t\t\telement:trigger(name, ...)\n\t\t\t\tend\n\t\t\t\telement:trigger('global_'..name, ...)\n\t\t\tend\n\t\tend\n\tend\n\n\tmp.set_key_bindings({\n\t\t{'mbtn_left', create_mouse_event_dispatcher('mbtn_left_up'), create_mouse_event_dispatcher('mbtn_left_down')},\n\t\t{'mbtn_left_dbl', 'ignore'},\n\t}, 'mbtn_left', 'force')\n\tmp.set_key_bindings({\n\t\t{'wheel_up', create_mouse_event_dispatcher('wheel_up')},\n\t\t{'wheel_down', create_mouse_event_dispatcher('wheel_down')},\n\t}, 'wheel', 'force')\n\n\tlocal groups = {}\n\tfor _, group in ipairs({'mbtn_left', 'wheel'}) do\n\t\tgroups[group] = {\n\t\t\tis_enabled = false,\n\t\t\tenable = function(this)\n\t\t\t\tif this.is_enabled then return end\n\t\t\t\tthis.is_enabled = true\n\t\t\t\tmp.enable_key_bindings(group)\n\t\t\tend,\n\t\t\tdisable = function(this)\n\t\t\t\tif not this.is_enabled then return end\n\t\t\t\tthis.is_enabled = false\n\t\t\t\tmp.disable_key_bindings(group)\n\t\t\tend,\n\t\t}\n\tend\n\treturn groups\nend)()\n\n-- KEY BINDABLE FEATURES\n\nmp.add_key_binding(nil, 'peek-timeline', function()\n\tif elements.timeline.proximity > 0.5 then\n\t\telements.timeline:tween_property('proximity', elements.timeline.proximity, 0)\n\telse\n\t\telements.timeline:tween_property('proximity', elements.timeline.proximity, 1)\n\tend\nend)\nmp.add_key_binding(nil, 'toggle-progress', function()\n\tlocal timeline = elements.timeline\n\tif timeline.size_min_override then\n\t\ttimeline:tween_property('size_min_override', timeline.size_min_override, timeline.size_min, function()\n\t\t\ttimeline.size_min_override = nil\n\t\tend)\n\telse\n\t\ttimeline:tween_property('size_min_override', timeline.size_min, 0)\n\tend\nend)\nmp.add_key_binding(nil, 'flash-timeline', function()\n\telements.timeline:flash()\nend)\nmp.add_key_binding(nil, 'flash-top-bar', function()\n\telements.top_bar:flash()\nend)\nmp.add_key_binding(nil, 'flash-volume', function()\n\tif elements.volume then elements.volume:flash() end\nend)\nmp.add_key_binding(nil, 'flash-speed', function()\n\tif elements.speed then elements.speed:flash() end\nend)\nmp.add_key_binding(nil, 'flash-pause-indicator', function()\n\telements.pause_indicator:flash()\nend)\nmp.add_key_binding(nil, 'decide-pause-indicator', function()\n\telements.pause_indicator:decide()\nend)\nfunction menu_key_binding()\n  if menu:is_open('menu') then\n    menu:close()\n  elseif state.context_menu_items then\n    menu:open(state.context_menu_items, function(command)\n      mp.command(command)\n    end, {type = 'menu'})\n  end\nend\nmp.add_key_binding(nil, 'menu', menu_key_binding)\nmp.add_key_binding(nil, 'load-subtitles', function()\n\tif menu:is_open('load-subtitles') then menu:close() return end\n\n\tlocal path = mp.get_property_native('path')\n\tif path and is_protocol(path) then\n\t\tpath='$HOME'\n\tend\n\topen_file_navigation_menu(\n\t\tserialize_path(path).dirname,\n\t\tfunction(path) mp.commandv('sub-add', path) end,\n\t\t{\n\t\t\ttype = 'load-subtitles',\n\t\t\tallowed_types = options.subtitle_types\n\t\t}\n\t)\nend)\nmp.add_key_binding(nil, 'subtitles', create_select_tracklist_type_menu_opener('Subtitles', 'sub', 'sid'))\nmp.add_key_binding(nil, 'audio', create_select_tracklist_type_menu_opener('Audio', 'audio', 'aid'))\nmp.add_key_binding(nil, 'video', create_select_tracklist_type_menu_opener('Video', 'video', 'vid'))\nmp.add_key_binding(nil, 'playlist', function()\n\tif menu:is_open('playlist') then menu:close() return end\n\n\tfunction serialize_playlist()\n\t\tlocal pos = mp.get_property_number('playlist-pos-1', 0)\n\t\tlocal items = {}\n\t\tlocal active_item\n\t\tfor index, item in ipairs(mp.get_property_native('playlist')) do\n\t\t\tlocal is_url = item.filename:find('://')\n\t\t\titems[index] = {\n\t\t\t\ttitle = is_url and item.filename or serialize_path(item.filename).basename,\n\t\t\t\thint = tostring(index),\n\t\t\t\tvalue = index\n\t\t\t}\n\n\t\t\tif index == pos then active_item = index end\n\t\tend\n\t\treturn items, active_item\n\tend\n\n\t-- Update active index and playlist content on playlist changes\n\tfunction handle_playlist_change()\n\t\tif menu:is_open('playlist') then\n\t\t\tlocal items, active_item = serialize_playlist()\n\t\t\telements.menu:update({\n\t\t\t\titems = items,\n\t\t\t\tactive_item = active_item\n\t\t\t})\n\t\tend\n\tend\n\n\t-- Items and active_item are set in the handle_playlist_change callback, since adding\n\t-- a property observer triggers its handler immediately, we just let that initialize the items.\n\tmenu:open({}, function(index)\n\t\tmp.commandv('set', 'playlist-pos-1', tostring(index))\n\tend, {\n\t\ttype = 'playlist',\n\t\ttitle = 'Playlist',\n\t\ton_open = function()\n\t\t\tmp.observe_property('playlist', 'native', handle_playlist_change)\n\t\t\tmp.observe_property('playlist-pos-1', 'native', handle_playlist_change)\n\t\tend,\n\t\ton_close = function()\n\t\t\tmp.unobserve_property(handle_playlist_change)\n\t\tend,\n\t})\nend)\nmp.add_key_binding(nil, 'chapters', function()\n\tif menu:is_open('chapters') then menu:close() return end\n\n\tlocal items = {}\n\tlocal chapters = get_normalized_chapters()\n\n\tfor index, chapter in ipairs(chapters) do\n\t\titems[#items + 1] = {\n\t\t\ttitle = chapter.title or '',\n\t\t\thint = mp.format_time(chapter.time),\n\t\t\tvalue = chapter.time\n\t\t}\n\tend\n\n\t-- Select first chapter from the end with time lower\n\t-- than current playing position (with 100ms leeway).\n\tfunction get_selected_chapter_index()\n\t\tlocal position = mp.get_property_native('playback-time')\n\t\tif not position then return nil end\n\t\tfor index = #items, 1, -1 do\n\t\t\tif position - 0.1 > items[index].value then return index end\n\t\tend\n\tend\n\n\t-- Update selected chapter in chapter navigation menu\n\tfunction seek_handler()\n\t\tif menu:is_open('chapters') then\n\t\t\telements.menu:activate_index(get_selected_chapter_index())\n\t\tend\n\tend\n\n\tmenu:open(items, function(time)\n\t\tmp.commandv('seek', tostring(time), 'absolute')\n\tend, {\n\t\ttype = 'chapters',\n\t\ttitle = 'Chapters',\n\t\tactive_item = get_selected_chapter_index(),\n\t\ton_open = function() mp.register_event('seek', seek_handler) end,\n\t\ton_close = function() mp.unregister_event(seek_handler) end\n\t})\nend)\nmp.add_key_binding(nil, 'show-in-directory', function()\n\tlocal path = mp.get_property_native('path')\n\n\t-- Ignore URLs\n\tif not path or is_protocol(path) then return end\n\n\tpath = normalize_path(path)\n\n\tif state.os == 'windows' then\n\t\tutils.subprocess_detached({args = {'explorer', '/select,', path}, cancellable = false})\n\telseif state.os == 'macos' then\n\t\tutils.subprocess_detached({args = {'open', '-R', path}, cancellable = false})\n\telseif state.os == 'linux' then\n\t\tlocal result = utils.subprocess({args = {'nautilus', path}, cancellable = false})\n\n\t\t-- Fallback opens the folder with xdg-open instead\n\t\tif result.status ~= 0 then\n\t\t\tutils.subprocess({args = {'xdg-open', serialize_path(path).dirname}, cancellable = false})\n\t\tend\n\tend\nend)\nmp.add_key_binding(nil, 'stream-quality', function()\n\tif menu:is_open('stream-quality') then menu:close() return end\n\n\tlocal ytdl_format = mp.get_property_native('ytdl-format')\n\tlocal active_item = nil\n\tlocal formats = {}\n\n\tfor index, height in ipairs(options.stream_quality_options) do\n\t\tlocal format = 'bestvideo[height<=?'..height..']+bestaudio/best[height<=?'..height..']'\n\t\tformats[#formats + 1] = {\n\t\t\ttitle = height..'p',\n\t\t\tvalue = format\n\t\t}\n\t\tif format == ytdl_format then active_item = index end\n\tend\n\n\tmenu:open(formats, function(format)\n\t\tmp.set_property('ytdl-format', format)\n\n\t\t-- Reload the video to apply new format\n\t\t-- This is taken from https://github.com/jgreco/mpv-youtube-quality\n\t\t-- which is in turn taken from https://github.com/4e6/mpv-reload/\n\t\t-- Dunno if playlist_pos shenanigans below are necessary.\n\t\tlocal playlist_pos = mp.get_property_number('playlist-pos')\n\t\tlocal duration = mp.get_property_native('duration')\n\t\tlocal time_pos = mp.get_property('time-pos')\n\n\t\tmp.set_property_number('playlist-pos', playlist_pos)\n\n\t\t-- Tries to determine live stream vs. pre-recordered VOD. VOD has non-zero\n\t\t-- duration property. When reloading VOD, to keep the current time position\n\t\t-- we should provide offset from the start. Stream doesn't have fixed start.\n\t\t-- Decent choice would be to reload stream from it's current 'live' positon.\n\t\t-- That's the reason we don't pass the offset when reloading streams.\n\t\tif duration and duration > 0 then\n\t\t\tlocal function seeker()\n\t\t\t\tmp.commandv('seek', time_pos, 'absolute')\n\t\t\t\tmp.unregister_event(seeker)\n\t\t\tend\n\t\t\tmp.register_event('file-loaded', seeker)\n\t\tend\n\tend, {\n\t\ttype = 'stream-quality',\n\t\ttitle = 'Stream quality',\n\t\tactive_item = active_item,\n\t})\nend)\nmp.add_key_binding(nil, 'open-file', function()\n\tif menu:is_open('open-file') then menu:close() return end\n\n\tlocal path = mp.get_property_native('path')\n\tlocal directory\n\tlocal active_file\n\n\tif path == nil or is_protocol(path) then\n\t\tlocal path = serialize_path(mp.command_native({'expand-path', '~/'}))\n\t\tdirectory = path.path\n\t\tactive_file = nil\n\telse\n\t\tlocal path = serialize_path(path)\n\t\tdirectory = path.dirname\n\t\tactive_file = path.path\n\tend\n\n\t-- Update selected file in directory navigation menu\n\tfunction handle_file_loaded()\n\t\tif menu:is_open('open-file') then\n\t\t\tlocal path = normalize_path(mp.get_property_native('path'))\n\t\t\telements.menu:activate_value(path)\n\t\t\telements.menu:select_value(path)\n\t\tend\n\tend\n\n\topen_file_navigation_menu(\n\t\tdirectory,\n\t\tfunction(path) mp.commandv('loadfile', path) end,\n\t\t{\n\t\t\ttype = 'open-file',\n\t\t\tallowed_types = options.media_types,\n\t\t\tactive_path = active_file,\n\t\t\ton_open = function() mp.register_event('file-loaded', handle_file_loaded) end,\n\t\t\ton_close = function() mp.unregister_event(handle_file_loaded) end,\n\t\t}\n\t)\nend)\nmp.add_key_binding(nil, 'next', function()\n\tif mp.get_property_native('playlist-count') > 1 then\n\t\tmp.command('playlist-next')\n\telse\n\t\tnavigate_directory('forward')\n\tend\nend)\nmp.add_key_binding(nil, 'prev', function()\n\tif mp.get_property_native('playlist-count') > 1 then\n\t\tmp.command('playlist-prev')\n\telse\n\t\tnavigate_directory('backward')\n\tend\nend)\nmp.add_key_binding(nil, 'next-file', function() navigate_directory('forward') end)\nmp.add_key_binding(nil, 'prev-file', function() navigate_directory('backward') end)\nmp.add_key_binding(nil, 'first', function()\n\tif mp.get_property_native('playlist-count') > 1 then\n\t\tmp.commandv('set', 'playlist-pos-1', '1')\n\telse\n\t\tload_file_in_current_directory(1)\n\tend\nend)\nmp.add_key_binding(nil, 'last', function()\n\tlocal playlist_count = mp.get_property_native('playlist-count')\n\tif playlist_count > 1 then\n\t\tmp.commandv('set', 'playlist-pos-1', tostring(playlist_count))\n\telse\n\t\tload_file_in_current_directory(-1)\n\tend\nend)\nmp.add_key_binding(nil, 'first-file', function() load_file_in_current_directory(1) end)\nmp.add_key_binding(nil, 'last-file', function() load_file_in_current_directory(-1) end)\nmp.add_key_binding(nil, 'delete-file-next', function()\n\tlocal playlist_count = mp.get_property_native('playlist-count')\n\n\tlocal next_file = nil\n\n\tlocal path = mp.get_property_native('path')\n\tlocal is_local_file = path and not is_protocol(path)\n\n\tif is_local_file then\n\t\tpath = normalize_path(path)\n\n\t\tif menu:is_open('open-file') then\n\t\t\telements.menu:delete_value(path)\n\t\tend\n\tend\n\n\tif playlist_count > 1 then\n\t\tmp.commandv('playlist-remove', 'current')\n\telse\n\t\tif is_local_file then\n\t\t\tnext_file = get_adjacent_file(path, 'forward', options.media_types)\n\t\tend\n\n\t\tif next_file then\n\t\t\tmp.commandv('loadfile', next_file)\n\t\telse\n\t\t\tmp.commandv('stop')\n\t\tend\n\tend\n\n\tif is_local_file then delete_file(path) end\nend)\nmp.add_key_binding(nil, 'delete-file-quit', function()\n\tlocal path = mp.get_property_native('path')\n\tmp.command('stop')\n\tif path and not is_protocol(path) then delete_file(normalize_path(path)) end\n\tmp.command('quit')\nend)\nmp.add_key_binding(nil, 'open-config-directory', function()\n\tlocal config = serialize_path(mp.command_native({'expand-path', '~~/mpv.conf'}))\n\tlocal args\n\n\tif state.os == 'windows' then\n\t\targs = {'explorer', '/select,', config.path}\n\telseif state.os == 'macos' then\n\t\targs = {'open', '-R', config.path}\n\telseif state.os == 'linux' then\n\t\targs = {'xdg-open', config.dirname}\n\tend\n\n\tutils.subprocess_detached({args = args, cancellable = false})\nend)\n"
  },
  {
    "path": "nvim/.config/nvim/colors/idk.vim",
    "content": "\" vi:syntax=vim\n\" \n\" Modified version of Base16 Tomorrow Night to tailored to my liking\n\" Original by Chris Kempson\n\" Modified by Siddharth Dushantha\n\n\n\" GUI color definitions\nlet s:gui00        = \"101213\"\nlet g:base16_gui00 = \"101213\"\nlet s:gui01        = \"101213\"\nlet g:base16_gui01 = \"282a2e\"\nlet s:gui02        = \"373b41\"\nlet g:base16_gui02 = \"373b41\"\nlet s:gui03        = \"969896\"\nlet g:base16_gui03 = \"969896\"\nlet s:gui04        = \"b4b7b4\"\nlet g:base16_gui04 = \"b4b7b4\"\nlet s:gui05        = \"c5c8c6\"\nlet g:base16_gui05 = \"c5c8c6\"\nlet s:gui06        = \"e0e0e0\"\nlet g:base16_gui06 = \"e0e0e0\"\nlet s:gui07        = \"ffffff\"\nlet g:base16_gui07 = \"ffffff\"\nlet s:gui08        = \"cc6666\"\nlet g:base16_gui08 = \"cc6666\"\nlet s:gui09        = \"de935f\"\nlet g:base16_gui09 = \"de935f\"\nlet s:gui0A        = \"f0c674\"\nlet g:base16_gui0A = \"f0c674\"\nlet s:gui0B        = \"b5bd68\"\nlet g:base16_gui0B = \"b5bd68\"\nlet s:gui0C        = \"8abeb7\"\nlet g:base16_gui0C = \"8abeb7\"\nlet s:gui0D        = \"81a2be\"\nlet g:base16_gui0D = \"81a2be\"\nlet s:gui0E        = \"b294bb\"\nlet g:base16_gui0E = \"b294bb\"\nlet s:gui0F        = \"a3685a\"\nlet g:base16_gui0F = \"a3685a\"\n\n\" Terminal color definitions\nlet s:cterm00        = \"00\"\nlet g:base16_cterm00 = \"00\"\nlet s:cterm03        = \"08\"\nlet g:base16_cterm03 = \"08\"\nlet s:cterm05        = \"07\"\nlet g:base16_cterm05 = \"07\"\nlet s:cterm07        = \"15\"\nlet g:base16_cterm07 = \"15\"\nlet s:cterm08        = \"01\"\nlet g:base16_cterm08 = \"01\"\nlet s:cterm0A        = \"03\"\nlet g:base16_cterm0A = \"03\"\nlet s:cterm0B        = \"02\"\nlet g:base16_cterm0B = \"02\"\nlet s:cterm0C        = \"06\"\nlet g:base16_cterm0C = \"06\"\nlet s:cterm0D        = \"04\"\nlet g:base16_cterm0D = \"04\"\nlet s:cterm0E        = \"05\"\nlet g:base16_cterm0E = \"05\"\nif exists(\"base16colorspace\") && base16colorspace == \"256\"\n  let s:cterm01        = \"18\"\n  let g:base16_cterm01 = \"18\"\n  let s:cterm02        = \"19\"\n  let g:base16_cterm02 = \"19\"\n  let s:cterm04        = \"20\"\n  let g:base16_cterm04 = \"20\"\n  let s:cterm06        = \"21\"\n  let g:base16_cterm06 = \"21\"\n  let s:cterm09        = \"16\"\n  let g:base16_cterm09 = \"16\"\n  let s:cterm0F        = \"17\"\n  let g:base16_cterm0F = \"17\"\nelse\n  let s:cterm01        = \"10\"\n  let g:base16_cterm01 = \"10\"\n  let s:cterm02        = \"11\"\n  let g:base16_cterm02 = \"11\"\n  let s:cterm04        = \"12\"\n  let g:base16_cterm04 = \"12\"\n  let s:cterm06        = \"13\"\n  let g:base16_cterm06 = \"13\"\n  let s:cterm09        = \"09\"\n  let g:base16_cterm09 = \"09\"\n  let s:cterm0F        = \"14\"\n  let g:base16_cterm0F = \"14\"\nendif\n\n\" Neovim terminal colours\nif has(\"nvim\")\n  let g:terminal_color_0 =  \"#1d1f21\"\n  let g:terminal_color_1 =  \"#cc6666\"\n  let g:terminal_color_2 =  \"#b5bd68\"\n  let g:terminal_color_3 =  \"#f0c674\"\n  let g:terminal_color_4 =  \"#81a2be\"\n  let g:terminal_color_5 =  \"#b294bb\"\n  let g:terminal_color_6 =  \"#8abeb7\"\n  let g:terminal_color_7 =  \"#c5c8c6\"\n  let g:terminal_color_8 =  \"#969896\"\n  let g:terminal_color_9 =  \"#cc6666\"\n  let g:terminal_color_10 = \"#b5bd68\"\n  let g:terminal_color_11 = \"#f0c674\"\n  let g:terminal_color_12 = \"#81a2be\"\n  let g:terminal_color_13 = \"#b294bb\"\n  let g:terminal_color_14 = \"#8abeb7\"\n  let g:terminal_color_15 = \"#ffffff\"\n  let g:terminal_color_background = g:terminal_color_0\n  let g:terminal_color_foreground = g:terminal_color_5\n  if &background == \"light\"\n    let g:terminal_color_background = \"#000000\"\n    let g:terminal_color_foreground = g:terminal_color_2\n  endif\nelseif has(\"terminal\")\n  let g:terminal_ansi_colors = [\n        \\ \"#1d1f21\",\n        \\ \"#cc6666\",\n        \\ \"#b5bd68\",\n        \\ \"#f0c674\",\n        \\ \"#81a2be\",\n        \\ \"#b294bb\",\n        \\ \"#8abeb7\",\n        \\ \"#c5c8c6\",\n        \\ \"#969896\",\n        \\ \"#cc6666\",\n        \\ \"#b5bd68\",\n        \\ \"#f0c674\",\n        \\ \"#81a2be\",\n        \\ \"#b294bb\",\n        \\ \"#8abeb7\",\n        \\ \"#ffffff\",\n        \\ ]\nendif\n\n\" Theme setup\nhi clear\nsyntax reset\nlet g:colors_name = \"base16-tomorrow-night\"\n\n\" Highlighting function\n\" Optional variables are attributes and guisp\nfunction! g:Base16hi(group, guifg, guibg, ctermfg, ctermbg, ...)\n  let l:attr = get(a:, 1, \"\")\n  let l:guisp = get(a:, 2, \"\")\n\n  if a:guifg != \"\"\n    exec \"hi \" . a:group . \" guifg=#\" . a:guifg\n  endif\n  if a:guibg != \"\"\n    exec \"hi \" . a:group . \" guibg=#\" . a:guibg\n  endif\n  if a:ctermfg != \"\"\n    exec \"hi \" . a:group . \" ctermfg=\" . a:ctermfg\n  endif\n  if a:ctermbg != \"\"\n    exec \"hi \" . a:group . \" ctermbg=\" . a:ctermbg\n  endif\n  if l:attr != \"\"\n    exec \"hi \" . a:group . \" gui=\" . l:attr . \" cterm=\" . l:attr\n  endif\n  if l:guisp != \"\"\n    exec \"hi \" . a:group . \" guisp=#\" . l:guisp\n  endif\nendfunction\n\n\nfun <sid>hi(group, guifg, guibg, ctermfg, ctermbg, attr, guisp)\n  call g:Base16hi(a:group, a:guifg, a:guibg, a:ctermfg, a:ctermbg, a:attr, a:guisp)\nendfun\n\n\" Vim editor colors\ncall <sid>hi(\"Normal\",        s:gui05, s:gui00, s:cterm05, s:cterm00, \"\", \"\")\ncall <sid>hi(\"Bold\",          \"\", \"\", \"\", \"\", \"bold\", \"\")\ncall <sid>hi(\"Debug\",         s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"Directory\",     s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"Error\",         s:gui00, s:gui08, s:cterm00, s:cterm08, \"\", \"\")\ncall <sid>hi(\"ErrorMsg\",      s:gui08, s:gui00, s:cterm08, s:cterm00, \"\", \"\")\ncall <sid>hi(\"Exception\",     s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"FoldColumn\",    s:gui0C, s:gui01, s:cterm0C, s:cterm01, \"\", \"\")\ncall <sid>hi(\"Folded\",        s:gui03, s:gui01, s:cterm03, s:cterm01, \"\", \"\")\ncall <sid>hi(\"IncSearch\",     s:gui01, s:gui09, s:cterm01, s:cterm09, \"none\", \"\")\ncall <sid>hi(\"Italic\",        \"\", \"\", \"\", \"\", \"none\", \"\")\ncall <sid>hi(\"Macro\",         s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"MatchParen\",    \"\", s:gui03, \"\", s:cterm03,  \"\", \"\")\ncall <sid>hi(\"ModeMsg\",       s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"MoreMsg\",       s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"Question\",      s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"Search\",        s:gui01, s:gui0A, s:cterm01, s:cterm0A,  \"\", \"\")\ncall <sid>hi(\"Substitute\",    s:gui01, s:gui0A, s:cterm01, s:cterm0A, \"none\", \"\")\ncall <sid>hi(\"SpecialKey\",    s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"TooLong\",       s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"Underlined\",    s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"Visual\",        \"\", s:gui02, \"\", s:cterm02, \"\", \"\")\ncall <sid>hi(\"VisualNOS\",     s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"WarningMsg\",    s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"WildMenu\",      s:gui08, s:gui0A, s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"Title\",         s:gui0D, \"\", s:cterm0D, \"\", \"none\", \"\")\ncall <sid>hi(\"Conceal\",       s:gui0D, s:gui00, s:cterm0D, s:cterm00, \"\", \"\")\ncall <sid>hi(\"Cursor\",        s:gui00, s:gui05, s:cterm00, s:cterm05, \"\", \"\")\ncall <sid>hi(\"NonText\",       s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"LineNr\",        s:gui03, s:gui01, s:cterm03, s:cterm01, \"\", \"\")\ncall <sid>hi(\"SignColumn\",    s:gui03, s:gui01, s:cterm03, s:cterm01, \"\", \"\")\ncall <sid>hi(\"StatusLine\",    s:gui04, s:gui02, s:cterm04, s:cterm02, \"none\", \"\")\ncall <sid>hi(\"StatusLineNC\",  s:gui03, s:gui01, s:cterm03, s:cterm01, \"none\", \"\")\ncall <sid>hi(\"VertSplit\",     s:gui02, s:gui02, s:cterm02, s:cterm02, \"none\", \"\")\ncall <sid>hi(\"ColorColumn\",   \"\", s:gui01, \"\", s:cterm01, \"none\", \"\")\ncall <sid>hi(\"CursorColumn\",  \"\", s:gui01, \"\", s:cterm01, \"none\", \"\")\ncall <sid>hi(\"CursorLine\",    \"\", s:gui01, \"\", s:cterm01, \"none\", \"\")\ncall <sid>hi(\"CursorLineNr\",  s:gui04, s:gui01, s:cterm04, s:cterm01, \"\", \"\")\ncall <sid>hi(\"QuickFixLine\",  \"\", s:gui01, \"\", s:cterm01, \"none\", \"\")\ncall <sid>hi(\"PMenu\",         s:gui05, s:gui01, s:cterm05, s:cterm01, \"none\", \"\")\ncall <sid>hi(\"PMenuSel\",      s:gui01, s:gui05, s:cterm01, s:cterm05, \"\", \"\")\ncall <sid>hi(\"TabLine\",       s:gui03, s:gui01, s:cterm03, s:cterm01, \"none\", \"\")\ncall <sid>hi(\"TabLineFill\",   s:gui03, s:gui01, s:cterm03, s:cterm01, \"none\", \"\")\ncall <sid>hi(\"TabLineSel\",    s:gui0B, s:gui01, s:cterm0B, s:cterm01, \"none\", \"\")\n\n\" Standard syntax highlighting\ncall <sid>hi(\"Boolean\",      s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"Character\",    s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"Comment\",      s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"Conditional\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"Constant\",     s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"Define\",       s:gui0E, \"\", s:cterm0E, \"\", \"none\", \"\")\ncall <sid>hi(\"Delimiter\",    s:gui0F, \"\", s:cterm0F, \"\", \"\", \"\")\ncall <sid>hi(\"Float\",        s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"Function\",     s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"Identifier\",   s:gui08, \"\", s:cterm08, \"\", \"none\", \"\")\ncall <sid>hi(\"Include\",      s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"Keyword\",      s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"Label\",        s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"Number\",       s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"Operator\",     s:gui05, \"\", s:cterm05, \"\", \"none\", \"\")\ncall <sid>hi(\"PreProc\",      s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"Repeat\",       s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"Special\",      s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"SpecialChar\",  s:gui0F, \"\", s:cterm0F, \"\", \"\", \"\")\ncall <sid>hi(\"Statement\",    s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"StorageClass\", s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"String\",       s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"Structure\",    s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"Tag\",          s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"Todo\",         s:gui0A, s:gui01, s:cterm0A, s:cterm01, \"\", \"\")\ncall <sid>hi(\"Type\",         s:gui0A, \"\", s:cterm0A, \"\", \"none\", \"\")\ncall <sid>hi(\"Typedef\",      s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\n\n\" C highlighting\ncall <sid>hi(\"cOperator\",   s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"cPreCondit\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\n\n\" C# highlighting\ncall <sid>hi(\"csClass\",                 s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"csAttribute\",             s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"csModifier\",              s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"csType\",                  s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"csUnspecifiedStatement\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"csContextualStatement\",   s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"csNewDecleration\",        s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\n\n\" CSS highlighting\ncall <sid>hi(\"cssBraces\",      s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"cssClassName\",   s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"cssColor\",       s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\n\n\" Diff highlighting\ncall <sid>hi(\"DiffAdd\",      s:gui0B, s:gui01,  s:cterm0B, s:cterm01, \"\", \"\")\ncall <sid>hi(\"DiffChange\",   s:gui03, s:gui01,  s:cterm03, s:cterm01, \"\", \"\")\ncall <sid>hi(\"DiffDelete\",   s:gui08, s:gui01,  s:cterm08, s:cterm01, \"\", \"\")\ncall <sid>hi(\"DiffText\",     s:gui0D, s:gui01,  s:cterm0D, s:cterm01, \"\", \"\")\ncall <sid>hi(\"DiffAdded\",    s:gui0B, s:gui00,  s:cterm0B, s:cterm00, \"\", \"\")\ncall <sid>hi(\"DiffFile\",     s:gui08, s:gui00,  s:cterm08, s:cterm00, \"\", \"\")\ncall <sid>hi(\"DiffNewFile\",  s:gui0B, s:gui00,  s:cterm0B, s:cterm00, \"\", \"\")\ncall <sid>hi(\"DiffLine\",     s:gui0D, s:gui00,  s:cterm0D, s:cterm00, \"\", \"\")\ncall <sid>hi(\"DiffRemoved\",  s:gui08, s:gui00,  s:cterm08, s:cterm00, \"\", \"\")\n\n\" Git highlighting\ncall <sid>hi(\"gitcommitOverflow\",       s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitSummary\",        s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitComment\",        s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitUntracked\",      s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitDiscarded\",      s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitSelected\",       s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitHeader\",         s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitSelectedType\",   s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitUnmergedType\",   s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitDiscardedType\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitBranch\",         s:gui09, \"\", s:cterm09, \"\", \"bold\", \"\")\ncall <sid>hi(\"gitcommitUntrackedFile\",  s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitUnmergedFile\",   s:gui08, \"\", s:cterm08, \"\", \"bold\", \"\")\ncall <sid>hi(\"gitcommitDiscardedFile\",  s:gui08, \"\", s:cterm08, \"\", \"bold\", \"\")\ncall <sid>hi(\"gitcommitSelectedFile\",   s:gui0B, \"\", s:cterm0B, \"\", \"bold\", \"\")\n\n\" GitGutter highlighting\ncall <sid>hi(\"GitGutterAdd\",     s:gui0B, s:gui01, s:cterm0B, s:cterm01, \"\", \"\")\ncall <sid>hi(\"GitGutterChange\",  s:gui0D, s:gui01, s:cterm0D, s:cterm01, \"\", \"\")\ncall <sid>hi(\"GitGutterDelete\",  s:gui08, s:gui01, s:cterm08, s:cterm01, \"\", \"\")\ncall <sid>hi(\"GitGutterChangeDelete\",  s:gui0E, s:gui01, s:cterm0E, s:cterm01, \"\", \"\")\n\n\" HTML highlighting\ncall <sid>hi(\"htmlBold\",    s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"htmlItalic\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"htmlEndTag\",  s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"htmlTag\",     s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\n\n\" JavaScript highlighting\ncall <sid>hi(\"javaScript\",        s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"javaScriptBraces\",  s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"javaScriptNumber\",  s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\n\" pangloss/vim-javascript highlighting\ncall <sid>hi(\"jsOperator\",          s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"jsStatement\",         s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"jsReturn\",            s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"jsThis\",              s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"jsClassDefinition\",   s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"jsFunction\",          s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"jsFuncName\",          s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"jsFuncCall\",          s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"jsClassFuncName\",     s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"jsClassMethodType\",   s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"jsRegexpString\",      s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"jsGlobalObjects\",     s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"jsGlobalNodeObjects\", s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"jsExceptions\",        s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"jsBuiltins\",          s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\n\n\" Mail highlighting\ncall <sid>hi(\"mailQuoted1\",  s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"mailQuoted2\",  s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"mailQuoted3\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"mailQuoted4\",  s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"mailQuoted5\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"mailQuoted6\",  s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"mailURL\",      s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"mailEmail\",    s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\n\n\" Markdown highlighting\ncall <sid>hi(\"markdownCode\",              s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"markdownError\",             s:gui05, s:gui00, s:cterm05, s:cterm00, \"\", \"\")\ncall <sid>hi(\"markdownCodeBlock\",         s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"markdownHeadingDelimiter\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\n\n\" NERDTree highlighting\ncall <sid>hi(\"NERDTreeDirSlash\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"NERDTreeExecFile\",  s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\n\n\" PHP highlighting\ncall <sid>hi(\"phpMemberSelector\",  s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"phpComparison\",      s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"phpParent\",          s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"phpMethodsVar\",      s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\n\n\" Python highlighting\ncall <sid>hi(\"pythonOperator\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"pythonRepeat\",    s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"pythonInclude\",   s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"pythonStatement\", s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\n\n\" Ruby highlighting\ncall <sid>hi(\"rubyAttribute\",               s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"rubyConstant\",                s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"rubyInterpolationDelimiter\",  s:gui0F, \"\", s:cterm0F, \"\", \"\", \"\")\ncall <sid>hi(\"rubyRegexp\",                  s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"rubySymbol\",                  s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"rubyStringDelimiter\",         s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\n\n\" SASS highlighting\ncall <sid>hi(\"sassidChar\",     s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"sassClassChar\",  s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"sassInclude\",    s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"sassMixing\",     s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"sassMixinName\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\n\n\" Signify highlighting\ncall <sid>hi(\"SignifySignAdd\",     s:gui0B, s:gui01, s:cterm0B, s:cterm01, \"\", \"\")\ncall <sid>hi(\"SignifySignChange\",  s:gui0D, s:gui01, s:cterm0D, s:cterm01, \"\", \"\")\ncall <sid>hi(\"SignifySignDelete\",  s:gui08, s:gui01, s:cterm08, s:cterm01, \"\", \"\")\n\n\" Spelling highlighting\ncall <sid>hi(\"SpellBad\",     \"\", \"\", \"\", \"\", \"undercurl\", s:gui08)\ncall <sid>hi(\"SpellLocal\",   \"\", \"\", \"\", \"\", \"undercurl\", s:gui0C)\ncall <sid>hi(\"SpellCap\",     \"\", \"\", \"\", \"\", \"undercurl\", s:gui0D)\ncall <sid>hi(\"SpellRare\",    \"\", \"\", \"\", \"\", \"undercurl\", s:gui0E)\n\n\" Startify highlighting\ncall <sid>hi(\"StartifyBracket\",  s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"StartifyFile\",     s:gui07, \"\", s:cterm07, \"\", \"\", \"\")\ncall <sid>hi(\"StartifyFooter\",   s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"StartifyHeader\",   s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"StartifyNumber\",   s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"StartifyPath\",     s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"StartifySection\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"StartifySelect\",   s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"StartifySlash\",    s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"StartifySpecial\",  s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\n\n\" Java highlighting\ncall <sid>hi(\"javaOperator\",     s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\n\n\" Remove functions\ndelf <sid>hi\n\n\" Remove color variables\nunlet s:gui00 s:gui01 s:gui02 s:gui03  s:gui04  s:gui05  s:gui06  s:gui07  s:gui08  s:gui09 s:gui0A  s:gui0B  s:gui0C  s:gui0D  s:gui0E  s:gui0F\nunlet s:cterm00 s:cterm01 s:cterm02 s:cterm03 s:cterm04 s:cterm05 s:cterm06 s:cterm07 s:cterm08 s:cterm09 s:cterm0A s:cterm0B s:cterm0C s:cterm0D s:cterm0E s:cterm0F\n"
  },
  {
    "path": "nvim/.config/nvim/colors/test.vim",
    "content": "\" vi:syntax=vim\n\n\" base16-vim (https://github.com/chriskempson/base16-vim)\n\" by Chris Kempson (http://chriskempson.com)\n\" Tomorrow Night scheme by Chris Kempson (http://chriskempson.com)\n\n\" This enables the coresponding base16-shell script to run so that\n\" :colorscheme works in terminals supported by base16-shell scripts\n\" User must set this variable in .vimrc\n\"   let g:base16_shell_path=base16-builder/output/shell/\nif !has(\"gui_running\")\n  if exists(\"g:base16_shell_path\")\n    execute \"silent !/bin/sh \".g:base16_shell_path.\"/base16-tomorrow-night.sh\"\n  endif\nendif\n\n\" GUI color definitions\nlet s:gui00        = \"1d1f21\"\nlet g:base16_gui00 = \"1d1f21\"\nlet s:gui01        = \"282a2e\"\nlet g:base16_gui01 = \"282a2e\"\nlet s:gui02        = \"373b41\"\nlet g:base16_gui02 = \"373b41\"\nlet s:gui03        = \"969896\"\nlet g:base16_gui03 = \"969896\"\nlet s:gui04        = \"b4b7b4\"\nlet g:base16_gui04 = \"b4b7b4\"\nlet s:gui05        = \"c5c8c6\"\nlet g:base16_gui05 = \"c5c8c6\"\nlet s:gui06        = \"e0e0e0\"\nlet g:base16_gui06 = \"e0e0e0\"\nlet s:gui07        = \"ffffff\"\nlet g:base16_gui07 = \"ffffff\"\nlet s:gui08        = \"cc6666\"\nlet g:base16_gui08 = \"cc6666\"\nlet s:gui09        = \"de935f\"\nlet g:base16_gui09 = \"de935f\"\nlet s:gui0A        = \"f0c674\"\nlet g:base16_gui0A = \"f0c674\"\nlet s:gui0B        = \"b5bd68\"\nlet g:base16_gui0B = \"b5bd68\"\nlet s:gui0C        = \"8abeb7\"\nlet g:base16_gui0C = \"8abeb7\"\nlet s:gui0D        = \"81a2be\"\nlet g:base16_gui0D = \"81a2be\"\nlet s:gui0E        = \"b294bb\"\nlet g:base16_gui0E = \"b294bb\"\nlet s:gui0F        = \"a3685a\"\nlet g:base16_gui0F = \"a3685a\"\n\n\" Terminal color definitions\nlet s:cterm00        = \"00\"\nlet g:base16_cterm00 = \"00\"\nlet s:cterm03        = \"08\"\nlet g:base16_cterm03 = \"08\"\nlet s:cterm05        = \"07\"\nlet g:base16_cterm05 = \"07\"\nlet s:cterm07        = \"15\"\nlet g:base16_cterm07 = \"15\"\nlet s:cterm08        = \"01\"\nlet g:base16_cterm08 = \"01\"\nlet s:cterm0A        = \"03\"\nlet g:base16_cterm0A = \"03\"\nlet s:cterm0B        = \"02\"\nlet g:base16_cterm0B = \"02\"\nlet s:cterm0C        = \"06\"\nlet g:base16_cterm0C = \"06\"\nlet s:cterm0D        = \"04\"\nlet g:base16_cterm0D = \"04\"\nlet s:cterm0E        = \"05\"\nlet g:base16_cterm0E = \"05\"\nif exists(\"base16colorspace\") && base16colorspace == \"256\"\n  let s:cterm01        = \"18\"\n  let g:base16_cterm01 = \"18\"\n  let s:cterm02        = \"19\"\n  let g:base16_cterm02 = \"19\"\n  let s:cterm04        = \"20\"\n  let g:base16_cterm04 = \"20\"\n  let s:cterm06        = \"21\"\n  let g:base16_cterm06 = \"21\"\n  let s:cterm09        = \"16\"\n  let g:base16_cterm09 = \"16\"\n  let s:cterm0F        = \"17\"\n  let g:base16_cterm0F = \"17\"\nelse\n  let s:cterm01        = \"10\"\n  let g:base16_cterm01 = \"10\"\n  let s:cterm02        = \"11\"\n  let g:base16_cterm02 = \"11\"\n  let s:cterm04        = \"12\"\n  let g:base16_cterm04 = \"12\"\n  let s:cterm06        = \"13\"\n  let g:base16_cterm06 = \"13\"\n  let s:cterm09        = \"09\"\n  let g:base16_cterm09 = \"09\"\n  let s:cterm0F        = \"14\"\n  let g:base16_cterm0F = \"14\"\nendif\n\n\" Neovim terminal colours\nif has(\"nvim\")\n  let g:terminal_color_0 =  \"#1d1f21\"\n  let g:terminal_color_1 =  \"#cc6666\"\n  let g:terminal_color_2 =  \"#b5bd68\"\n  let g:terminal_color_3 =  \"#f0c674\"\n  let g:terminal_color_4 =  \"#81a2be\"\n  let g:terminal_color_5 =  \"#b294bb\"\n  let g:terminal_color_6 =  \"#8abeb7\"\n  let g:terminal_color_7 =  \"#c5c8c6\"\n  let g:terminal_color_8 =  \"#969896\"\n  let g:terminal_color_9 =  \"#cc6666\"\n  let g:terminal_color_10 = \"#b5bd68\"\n  let g:terminal_color_11 = \"#f0c674\"\n  let g:terminal_color_12 = \"#81a2be\"\n  let g:terminal_color_13 = \"#b294bb\"\n  let g:terminal_color_14 = \"#8abeb7\"\n  let g:terminal_color_15 = \"#ffffff\"\n  let g:terminal_color_background = g:terminal_color_0\n  let g:terminal_color_foreground = g:terminal_color_5\n  if &background == \"light\"\n    let g:terminal_color_background = g:terminal_color_7\n    let g:terminal_color_foreground = g:terminal_color_2\n  endif\nelseif has(\"terminal\")\n  let g:terminal_ansi_colors = [\n        \\ \"#1d1f21\",\n        \\ \"#cc6666\",\n        \\ \"#b5bd68\",\n        \\ \"#f0c674\",\n        \\ \"#81a2be\",\n        \\ \"#b294bb\",\n        \\ \"#8abeb7\",\n        \\ \"#c5c8c6\",\n        \\ \"#969896\",\n        \\ \"#cc6666\",\n        \\ \"#b5bd68\",\n        \\ \"#f0c674\",\n        \\ \"#81a2be\",\n        \\ \"#b294bb\",\n        \\ \"#8abeb7\",\n        \\ \"#ffffff\",\n        \\ ]\nendif\n\n\" Theme setup\nhi clear\nsyntax reset\nlet g:colors_name = \"base16-tomorrow-night\"\n\n\" Highlighting function\n\" Optional variables are attributes and guisp\nfunction! g:Base16hi(group, guifg, guibg, ctermfg, ctermbg, ...)\n  let l:attr = get(a:, 1, \"\")\n  let l:guisp = get(a:, 2, \"\")\n\n  if a:guifg != \"\"\n    exec \"hi \" . a:group . \" guifg=#\" . a:guifg\n  endif\n  if a:guibg != \"\"\n    exec \"hi \" . a:group . \" guibg=#\" . a:guibg\n  endif\n  if a:ctermfg != \"\"\n    exec \"hi \" . a:group . \" ctermfg=\" . a:ctermfg\n  endif\n  if a:ctermbg != \"\"\n    exec \"hi \" . a:group . \" ctermbg=\" . a:ctermbg\n  endif\n  if l:attr != \"\"\n    exec \"hi \" . a:group . \" gui=\" . l:attr . \" cterm=\" . l:attr\n  endif\n  if l:guisp != \"\"\n    exec \"hi \" . a:group . \" guisp=#\" . l:guisp\n  endif\nendfunction\n\n\nfun <sid>hi(group, guifg, guibg, ctermfg, ctermbg, attr, guisp)\n  call g:Base16hi(a:group, a:guifg, a:guibg, a:ctermfg, a:ctermbg, a:attr, a:guisp)\nendfun\n\n\" Vim editor colors\ncall <sid>hi(\"Normal\",        s:gui05, s:gui00, s:cterm05, s:cterm00, \"\", \"\")\ncall <sid>hi(\"Bold\",          \"\", \"\", \"\", \"\", \"bold\", \"\")\ncall <sid>hi(\"Debug\",         s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"Directory\",     s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"Error\",         s:gui00, s:gui08, s:cterm00, s:cterm08, \"\", \"\")\ncall <sid>hi(\"ErrorMsg\",      s:gui08, s:gui00, s:cterm08, s:cterm00, \"\", \"\")\ncall <sid>hi(\"Exception\",     s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"FoldColumn\",    s:gui0C, s:gui01, s:cterm0C, s:cterm01, \"\", \"\")\ncall <sid>hi(\"Folded\",        s:gui03, s:gui01, s:cterm03, s:cterm01, \"\", \"\")\ncall <sid>hi(\"IncSearch\",     s:gui01, s:gui09, s:cterm01, s:cterm09, \"none\", \"\")\ncall <sid>hi(\"Italic\",        \"\", \"\", \"\", \"\", \"none\", \"\")\ncall <sid>hi(\"Macro\",         s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"MatchParen\",    \"\", s:gui03, \"\", s:cterm03,  \"\", \"\")\ncall <sid>hi(\"ModeMsg\",       s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"MoreMsg\",       s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"Question\",      s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"Search\",        s:gui01, s:gui0A, s:cterm01, s:cterm0A,  \"\", \"\")\ncall <sid>hi(\"Substitute\",    s:gui01, s:gui0A, s:cterm01, s:cterm0A, \"none\", \"\")\ncall <sid>hi(\"SpecialKey\",    s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"TooLong\",       s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"Underlined\",    s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"Visual\",        \"\", s:gui02, \"\", s:cterm02, \"\", \"\")\ncall <sid>hi(\"VisualNOS\",     s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"WarningMsg\",    s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"WildMenu\",      s:gui08, s:gui0A, s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"Title\",         s:gui0D, \"\", s:cterm0D, \"\", \"none\", \"\")\ncall <sid>hi(\"Conceal\",       s:gui0D, s:gui00, s:cterm0D, s:cterm00, \"\", \"\")\ncall <sid>hi(\"Cursor\",        s:gui00, s:gui05, s:cterm00, s:cterm05, \"\", \"\")\ncall <sid>hi(\"NonText\",       s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"LineNr\",        s:gui03, s:gui01, s:cterm03, s:cterm01, \"\", \"\")\ncall <sid>hi(\"SignColumn\",    s:gui03, s:gui01, s:cterm03, s:cterm01, \"\", \"\")\ncall <sid>hi(\"StatusLine\",    s:gui04, s:gui02, s:cterm04, s:cterm02, \"none\", \"\")\ncall <sid>hi(\"StatusLineNC\",  s:gui03, s:gui01, s:cterm03, s:cterm01, \"none\", \"\")\ncall <sid>hi(\"VertSplit\",     s:gui02, s:gui02, s:cterm02, s:cterm02, \"none\", \"\")\ncall <sid>hi(\"ColorColumn\",   \"\", s:gui01, \"\", s:cterm01, \"none\", \"\")\ncall <sid>hi(\"CursorColumn\",  \"\", s:gui01, \"\", s:cterm01, \"none\", \"\")\ncall <sid>hi(\"CursorLine\",    \"\", s:gui01, \"\", s:cterm01, \"none\", \"\")\ncall <sid>hi(\"CursorLineNr\",  s:gui04, s:gui01, s:cterm04, s:cterm01, \"\", \"\")\ncall <sid>hi(\"QuickFixLine\",  \"\", s:gui01, \"\", s:cterm01, \"none\", \"\")\ncall <sid>hi(\"PMenu\",         s:gui05, s:gui01, s:cterm05, s:cterm01, \"none\", \"\")\ncall <sid>hi(\"PMenuSel\",      s:gui01, s:gui05, s:cterm01, s:cterm05, \"\", \"\")\ncall <sid>hi(\"TabLine\",       s:gui03, s:gui01, s:cterm03, s:cterm01, \"none\", \"\")\ncall <sid>hi(\"TabLineFill\",   s:gui03, s:gui01, s:cterm03, s:cterm01, \"none\", \"\")\ncall <sid>hi(\"TabLineSel\",    s:gui0B, s:gui01, s:cterm0B, s:cterm01, \"none\", \"\")\n\n\" Standard syntax highlighting\ncall <sid>hi(\"Boolean\",      s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"Character\",    s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"Comment\",      s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"Conditional\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"Constant\",     s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"Define\",       s:gui0E, \"\", s:cterm0E, \"\", \"none\", \"\")\ncall <sid>hi(\"Delimiter\",    s:gui0F, \"\", s:cterm0F, \"\", \"\", \"\")\ncall <sid>hi(\"Float\",        s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"Function\",     s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"Identifier\",   s:gui08, \"\", s:cterm08, \"\", \"none\", \"\")\ncall <sid>hi(\"Include\",      s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"Keyword\",      s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"Label\",        s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"Number\",       s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"Operator\",     s:gui05, \"\", s:cterm05, \"\", \"none\", \"\")\ncall <sid>hi(\"PreProc\",      s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"Repeat\",       s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"Special\",      s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"SpecialChar\",  s:gui0F, \"\", s:cterm0F, \"\", \"\", \"\")\ncall <sid>hi(\"Statement\",    s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"StorageClass\", s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"String\",       s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"Structure\",    s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"Tag\",          s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"Todo\",         s:gui0A, s:gui01, s:cterm0A, s:cterm01, \"\", \"\")\ncall <sid>hi(\"Type\",         s:gui0A, \"\", s:cterm0A, \"\", \"none\", \"\")\ncall <sid>hi(\"Typedef\",      s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\n\n\" C highlighting\ncall <sid>hi(\"cOperator\",   s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"cPreCondit\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\n\n\" C# highlighting\ncall <sid>hi(\"csClass\",                 s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"csAttribute\",             s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"csModifier\",              s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"csType\",                  s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"csUnspecifiedStatement\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"csContextualStatement\",   s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"csNewDecleration\",        s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\n\n\" CSS highlighting\ncall <sid>hi(\"cssBraces\",      s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"cssClassName\",   s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"cssColor\",       s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\n\n\" Diff highlighting\ncall <sid>hi(\"DiffAdd\",      s:gui0B, s:gui01,  s:cterm0B, s:cterm01, \"\", \"\")\ncall <sid>hi(\"DiffChange\",   s:gui03, s:gui01,  s:cterm03, s:cterm01, \"\", \"\")\ncall <sid>hi(\"DiffDelete\",   s:gui08, s:gui01,  s:cterm08, s:cterm01, \"\", \"\")\ncall <sid>hi(\"DiffText\",     s:gui0D, s:gui01,  s:cterm0D, s:cterm01, \"\", \"\")\ncall <sid>hi(\"DiffAdded\",    s:gui0B, s:gui00,  s:cterm0B, s:cterm00, \"\", \"\")\ncall <sid>hi(\"DiffFile\",     s:gui08, s:gui00,  s:cterm08, s:cterm00, \"\", \"\")\ncall <sid>hi(\"DiffNewFile\",  s:gui0B, s:gui00,  s:cterm0B, s:cterm00, \"\", \"\")\ncall <sid>hi(\"DiffLine\",     s:gui0D, s:gui00,  s:cterm0D, s:cterm00, \"\", \"\")\ncall <sid>hi(\"DiffRemoved\",  s:gui08, s:gui00,  s:cterm08, s:cterm00, \"\", \"\")\n\n\" Git highlighting\ncall <sid>hi(\"gitcommitOverflow\",       s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitSummary\",        s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitComment\",        s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitUntracked\",      s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitDiscarded\",      s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitSelected\",       s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitHeader\",         s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitSelectedType\",   s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitUnmergedType\",   s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitDiscardedType\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitBranch\",         s:gui09, \"\", s:cterm09, \"\", \"bold\", \"\")\ncall <sid>hi(\"gitcommitUntrackedFile\",  s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"gitcommitUnmergedFile\",   s:gui08, \"\", s:cterm08, \"\", \"bold\", \"\")\ncall <sid>hi(\"gitcommitDiscardedFile\",  s:gui08, \"\", s:cterm08, \"\", \"bold\", \"\")\ncall <sid>hi(\"gitcommitSelectedFile\",   s:gui0B, \"\", s:cterm0B, \"\", \"bold\", \"\")\n\n\" GitGutter highlighting\ncall <sid>hi(\"GitGutterAdd\",     s:gui0B, s:gui01, s:cterm0B, s:cterm01, \"\", \"\")\ncall <sid>hi(\"GitGutterChange\",  s:gui0D, s:gui01, s:cterm0D, s:cterm01, \"\", \"\")\ncall <sid>hi(\"GitGutterDelete\",  s:gui08, s:gui01, s:cterm08, s:cterm01, \"\", \"\")\ncall <sid>hi(\"GitGutterChangeDelete\",  s:gui0E, s:gui01, s:cterm0E, s:cterm01, \"\", \"\")\n\n\" HTML highlighting\ncall <sid>hi(\"htmlBold\",    s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"htmlItalic\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"htmlEndTag\",  s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"htmlTag\",     s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\n\n\" JavaScript highlighting\ncall <sid>hi(\"javaScript\",        s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"javaScriptBraces\",  s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"javaScriptNumber\",  s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\n\" pangloss/vim-javascript highlighting\ncall <sid>hi(\"jsOperator\",          s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"jsStatement\",         s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"jsReturn\",            s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"jsThis\",              s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"jsClassDefinition\",   s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"jsFunction\",          s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"jsFuncName\",          s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"jsFuncCall\",          s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"jsClassFuncName\",     s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"jsClassMethodType\",   s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"jsRegexpString\",      s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"jsGlobalObjects\",     s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"jsGlobalNodeObjects\", s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"jsExceptions\",        s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"jsBuiltins\",          s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\n\n\" Mail highlighting\ncall <sid>hi(\"mailQuoted1\",  s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"mailQuoted2\",  s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"mailQuoted3\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"mailQuoted4\",  s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"mailQuoted5\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"mailQuoted6\",  s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"mailURL\",      s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"mailEmail\",    s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\n\n\" Markdown highlighting\ncall <sid>hi(\"markdownCode\",              s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"markdownError\",             s:gui05, s:gui00, s:cterm05, s:cterm00, \"\", \"\")\ncall <sid>hi(\"markdownCodeBlock\",         s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"markdownHeadingDelimiter\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\n\n\" NERDTree highlighting\ncall <sid>hi(\"NERDTreeDirSlash\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"NERDTreeExecFile\",  s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\n\n\" PHP highlighting\ncall <sid>hi(\"phpMemberSelector\",  s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"phpComparison\",      s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"phpParent\",          s:gui05, \"\", s:cterm05, \"\", \"\", \"\")\ncall <sid>hi(\"phpMethodsVar\",      s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\n\n\" Python highlighting\ncall <sid>hi(\"pythonOperator\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"pythonRepeat\",    s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"pythonInclude\",   s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"pythonStatement\", s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\n\n\" Ruby highlighting\ncall <sid>hi(\"rubyAttribute\",               s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\ncall <sid>hi(\"rubyConstant\",                s:gui0A, \"\", s:cterm0A, \"\", \"\", \"\")\ncall <sid>hi(\"rubyInterpolationDelimiter\",  s:gui0F, \"\", s:cterm0F, \"\", \"\", \"\")\ncall <sid>hi(\"rubyRegexp\",                  s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"rubySymbol\",                  s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"rubyStringDelimiter\",         s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\n\n\" SASS highlighting\ncall <sid>hi(\"sassidChar\",     s:gui08, \"\", s:cterm08, \"\", \"\", \"\")\ncall <sid>hi(\"sassClassChar\",  s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"sassInclude\",    s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"sassMixing\",     s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"sassMixinName\",  s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\n\n\" Signify highlighting\ncall <sid>hi(\"SignifySignAdd\",     s:gui0B, s:gui01, s:cterm0B, s:cterm01, \"\", \"\")\ncall <sid>hi(\"SignifySignChange\",  s:gui0D, s:gui01, s:cterm0D, s:cterm01, \"\", \"\")\ncall <sid>hi(\"SignifySignDelete\",  s:gui08, s:gui01, s:cterm08, s:cterm01, \"\", \"\")\n\n\" Spelling highlighting\ncall <sid>hi(\"SpellBad\",     \"\", \"\", \"\", \"\", \"undercurl\", s:gui08)\ncall <sid>hi(\"SpellLocal\",   \"\", \"\", \"\", \"\", \"undercurl\", s:gui0C)\ncall <sid>hi(\"SpellCap\",     \"\", \"\", \"\", \"\", \"undercurl\", s:gui0D)\ncall <sid>hi(\"SpellRare\",    \"\", \"\", \"\", \"\", \"undercurl\", s:gui0E)\n\n\" Startify highlighting\ncall <sid>hi(\"StartifyBracket\",  s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"StartifyFile\",     s:gui07, \"\", s:cterm07, \"\", \"\", \"\")\ncall <sid>hi(\"StartifyFooter\",   s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"StartifyHeader\",   s:gui0B, \"\", s:cterm0B, \"\", \"\", \"\")\ncall <sid>hi(\"StartifyNumber\",   s:gui09, \"\", s:cterm09, \"\", \"\", \"\")\ncall <sid>hi(\"StartifyPath\",     s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"StartifySection\",  s:gui0E, \"\", s:cterm0E, \"\", \"\", \"\")\ncall <sid>hi(\"StartifySelect\",   s:gui0C, \"\", s:cterm0C, \"\", \"\", \"\")\ncall <sid>hi(\"StartifySlash\",    s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\ncall <sid>hi(\"StartifySpecial\",  s:gui03, \"\", s:cterm03, \"\", \"\", \"\")\n\n\" Java highlighting\ncall <sid>hi(\"javaOperator\",     s:gui0D, \"\", s:cterm0D, \"\", \"\", \"\")\n\n\" Remove functions\ndelf <sid>hi\n\n\" Remove color variables\nunlet s:gui00 s:gui01 s:gui02 s:gui03  s:gui04  s:gui05  s:gui06  s:gui07  s:gui08  s:gui09 s:gui0A  s:gui0B  s:gui0C  s:gui0D  s:gui0E  s:gui0F\nunlet s:cterm00 s:cterm01 s:cterm02 s:cterm03 s:cterm04 s:cterm05 s:cterm06 s:cterm07 s:cterm08 s:cterm09 s:cterm0A s:cterm0B s:cterm0C s:cterm0D s:cterm0E s:cterm0F\n"
  },
  {
    "path": "nvim/.config/nvim/init.lua",
    "content": "local core_modules = {\n  \"options\",\n  \"plugins\",\n  \"mappings\",\n}\n\nfor _, module in ipairs(core_modules) do\n  local ok, err = pcall(require, module)\n  if not ok then\n      vim.notify(\"Failed to load \" .. module .. \"\\n\\n\" .. err)\n  end\nend\n"
  },
  {
    "path": "nvim/.config/nvim/lua/mappings.lua",
    "content": "local function map(mode, lhs, rhs, opts)\n    local options = {noremap = true}\n    if opts then\n        options = vim.tbl_extend(\"force\", options, opts)\n    end\n    vim.api.nvim_set_keymap(mode, lhs, rhs, options)\nend\n\n-- Scroll up/down\nmap(\"n\", \"J\", \"<C-e>\")\nmap(\"n\", \"K\", \"<C-y>\")\n\n-- Since I have mapped Shift-J or uppercase J to scrolling down,\n-- we have to map ctrl-j to join so that we can join two lines\nmap(\"n\", \"<C-J>\", \":join<CR>\")\n\n-- More intuitive way of...\nmap(\"n\", \"H\", \"0\")    -- going home in normal mode\nmap(\"v\", \"H\", \"0\")    -- going home in visual mode\nmap(\"n\", \"L\", \"A\")    -- going to end of line and appending in normal mode\nmap(\"v\", \"L\", \"$\")    -- going to end of line in visual mode\n\n-- Move up and down visual lines\nmap(\"n\", \"j\", \"v:count == 0 ? 'gj' : 'j'\", {expr = true})\nmap(\"n\", \"k\", \"v:count == 0 ? 'gk' : 'k'\", {expr = true})\n\n-- Quickly access the vim command line\nmap(\"n\", \",\", \":\")\n\n-- Move between splits\nmap(\"n\", \"<C-J>\", \"<C-W><C-J>\")\nmap(\"n\", \"<C-K>\", \"<C-W><C-K>\")\nmap(\"n\", \"<C-L>\", \"<C-W><C-L>\")\nmap(\"n\", \"<C-H>\", \"<C-W><C-H>\")\n\n-- Top/bottom of fold\nmap(\"n\", \"fj\", \"zo]zk\")\nmap(\"n\", \"fk\", \"zo[zj\")\n\n-- Create new file or edit an existing file\nmap(\"n\", \"<C-n>\", \":e \" .. vim.fn.expand('%:p:h') .. \"/\")\n\n-- Close current buffer\nmap(\"n\", \"<C-w>\", \":bp<CR>:bdelete #<CR>\", {silent = true})\n\n-- Go to Nth buffer\nmap(\"\", \"<M-1>\", \"<CMD>lua require'bufferline'.go_to_buffer(1)<CR>\")\nmap(\"\", \"<M-2>\", \"<CMD>lua require'bufferline'.go_to_buffer(2)<CR>\")\nmap(\"\", \"<M-3>\", \"<CMD>lua require'bufferline'.go_to_buffer(3)<CR>\")\nmap(\"\", \"<M-4>\", \"<CMD>lua require'bufferline'.go_to_buffer(4)<CR>\")\nmap(\"\", \"<M-5>\", \"<CMD>lua require'bufferline'.go_to_buffer(5)<CR>\")\nmap(\"\", \"<M-6>\", \"<CMD>lua require'bufferline'.go_to_buffer(6)<CR>\")\nmap(\"\", \"<M-7>\", \"<CMD>lua require'bufferline'.go_to_buffer(7)<CR>\")\nmap(\"\", \"<M-8>\", \"<CMD>lua require'bufferline'.go_to_buffer(8)<CR>\")\nmap(\"\", \"<M-9>\", \"<CMD>lua require'bufferline'.go_to_buffer(9)<CR>\")\nmap(\"\", \"<M-0>\", \"<CMD>lua require'bufferline'.go_to_buffer(10)<CR>\")\n\n-- Move buffer tabs (like moving tabs in web browser)\nmap(\"n\", \"<C-A-l>\", \":BufferLineMoveNext<CR>\", {silent = true})\nmap(\"n\", \"<C-A-h>\", \":BufferLineMovePrev<CR>\", {silent = true})\n\n-- Toggle the NvimTree\nmap(\"n\", \"<S-f>\", \":NvimTreeToggle<CR>\", {silent = true})\n\n-- Turn off highlighting\nmap(\"n\", \"<Esc>\", \":noh<CR>\", {silent = true})\n\n-- Open a file through Telescope\nmap(\"n\", \"<C-o>\", \":Telescope find_files hidden=true<CR>\", {silent = true})\n\n-- Rename a variable throughout the file\nmap('i', '<F2>', '<cmd>lua require(\"renamer\").rename()<cr>', { noremap = true, silent = true })\nmap('n', '<leader>rn', '<cmd>lua require(\"renamer\").rename()<cr>', { noremap = true, silent = true })\nmap('v', '<leader>rn', '<cmd>lua require(\"renamer\").rename()<cr>', { noremap = true, silent = true })\n\n-- Presistant indent mode\nmap(\"v\", \"<\", \"<gv\")\nmap(\"v\", \">\", \">gv\")\n\n-- Reload current file\nmap(\"n\", \"<M-r>\", \":luafile %<cr>\", {silent = true})\n\n-- More sensible undo\n-- https://stackoverflow.com/a/4360415/9215267\nmap(\"i\", \"<Space>\", \"<Space><C-g>u\")\n\n-- Paste without losing text\n-- https://andrewcourter.substack.com/i/137693539/paste-without-losing-text\nmap(\"v\", \"p\", '\"_dP')\n"
  },
  {
    "path": "nvim/.config/nvim/lua/options.lua",
    "content": "local opt = vim.opt\nlocal g = vim.g\nlocal cmd = vim.cmd\n\nopt.relativenumber = true\nopt.lazyredraw = true\nopt.termguicolors = true\nopt.clipboard = \"unnamedplus\"\nopt.cursorline = true\nopt.ignorecase = true\nopt.undofile = true\nopt.foldmethod=\"marker\"\nopt.mouse=\"a\"\ng.mapleader = \" \"\n\n-- Autowrite, this is very useful because when you have edited a file\n-- and want to edit another one using :e or move to another buffer,\n-- you dont have to write the current one manually every time you switch\n-- buffers.\nopt.autowriteall = true\n-- \n-- Show quotes in JSON files because they are usually hidden and\n-- it honestly messes up what you are typing/seeing\nopt.conceallevel = 0\n\n-- Dont show welcome menu\nopt.shortmess:append(\"sI\")\n\n-- Disable tilde on end of buffer\nopt.fillchars = {eob = \" \"}\n\n-- Indenting\nopt.tabstop = 4\nopt.shiftwidth = 4\nopt.expandtab = true\n\n-- Dont show \"INSERT\", \"VISUAL BLOCK\", etc\ncmd(\"set noshowmode\")\n\n-- Colorscheme\nopt.background = \"dark\"\ncmd(\"colorscheme idk\")\n\n-- Don't wrap lines\n-- vim.wo.wrap = false\n\ng.python3_host_prog = \"python3\"\n\n-- Telescope colors (TODO: need organise this)\nfg_bg = function(group, fgcol, bgcol)\n   cmd(\"hi \" .. group .. \" guifg=\" .. fgcol .. \" guibg=\" .. bgcol)\nend\n\nbg = function(group, col)\n   cmd(\"hi \" .. group .. \" guibg=\" .. col)\nend\n"
  },
  {
    "path": "nvim/.config/nvim/lua/plugins/configs/bufferline.lua",
    "content": "local present, telescope = pcall(require, \"bufferline\")\nif not present then\n    return\nend\n\nrequire(\"bufferline\").setup {\n    options = {\n        offsets = { {filetype = \"NvimTree\", text = \"Explorer\", adding = 1}}\n    }\n}\n"
  },
  {
    "path": "nvim/.config/nvim/lua/plugins/configs/lualine.lua",
    "content": "local present, telescope = pcall(require, \"lualine\")\nif not present then\n    return\nend\n\nrequire(\"lualine\").setup{\n    options = {\n        theme = 'onedark',\n        section_separators = {\"\", \"\"},\n        component_separators = {\"\", \"\"},\n    }\n}\n"
  },
  {
    "path": "nvim/.config/nvim/lua/plugins/init.lua",
    "content": "local g = vim.g\nlocal fn = vim.fn\nlocal cmd = vim.cmd\n\nlocal packer_status_ok, packer = pcall(require, \"packer\")\nif not packer_status_ok then\n  return\nend\n\npacker.startup {\n  function(use)\n    -- Package mananger\n    use {\"wbthomason/packer.nvim\"}\n\n    -- Statusline\n    use {\"nvim-lualine/lualine.nvim\", requires = {\"kyazdani42/nvim-web-devicons\", opt = true}}\n    require(\"plugins.configs.lualine\")\n\n    -- Bufferline (emulates tabs in GUI IDEs)\n    use {\"akinsho/bufferline.nvim\", requires = \"kyazdani42/nvim-web-devicons\"}\n    require(\"plugins.configs.bufferline\")\n\n    -- Syntax highlighting for i3 config\n    use {\"mboughaba/i3config.vim\"}\n    cmd(\"au BufNewFile,BufRead ~/.config/i3/config set filetype=i3config\")\n\n    -- Highlight/colorize hexcolors\n    use {\n      \"norcalli/nvim-colorizer.lua\",\n      config = function()\n        require \"colorizer\".setup()\n      end\n    }\n  end\n}\n"
  },
  {
    "path": "other/.config/user-dirs.dirs",
    "content": "# This file is written by xdg-user-dirs-update\n# If you want to change or add directories, just edit the line you're\n# interested in. All local changes will be retained on the next run.\n# Format is XDG_xxx_DIR=\"$HOME/yyy\", where yyy is a shell-escaped\n# homedir-relative path, or XDG_xxx_DIR=\"/yyy\", where /yyy is an\n# absolute path. No other format is supported.\n# \nXDG_DESKTOP_DIR=\"$HOME/\"\nXDG_DOWNLOAD_DIR=\"$HOME/downloads\"\nXDG_TEMPLATES_DIR=\"$HOME/\"\nXDG_PUBLICSHARE_DIR=\"$HOME/\"\nXDG_DOCUMENTS_DIR=\"$HOME/documents\"\nXDG_MUSIC_DIR=\"$HOME/music\"\nXDG_PICTURES_DIR=\"$HOME/pictures\"\nXDG_VIDEOS_DIR=\"$HOME/videos\"\n"
  },
  {
    "path": "picom/.config/picom/picom.conf",
    "content": "# Prevent screen tearing\nbackend = \"glx\";\nvsync = true;\nglx-swap-method = 2;\nxrender-sync-fence = true;\n\n# Fade windows in/out when opening/closing and when opacity changes,\n# unless no-fading-openclose is used.\n#fading = true;\n\n# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)\nfade-delta = 0.01;\n\n# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)\nfade-in-step = 0.01;\n\n# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)\nfade-out-step = 0.01;\n\ncorner-radius = 0\n"
  },
  {
    "path": "polybar/.config/polybar/config.ini",
    "content": "[bar/bar1]\n;------------;\n; DIMENSIONS ;\n;------------;\n\nwidth = 100%\nheight = 30\noffset-y = 0\noffset-x = 0\n\nborder-top-size = 0\nborder-bottom-size = 0\nborder-right-size = 0\nborder-left-size = 0\n\n;----------;\n; LOCATION ;\n;----------;\n\nbottom = false\nmonitor = ${env:MONITOR:}\noverride-redirect = false\n\n;-------;\n; FONTS ;\n;-------;\n\nfont-0 = JetBrains Mono Nerd Font:Semibold:size=11;3\n;--------;\n; COLORS ;\n;--------;\n\nbackground = #101010\nforeground = #e9e4e4\n\n;---------------;\n; MISCELLANEOUS ;\n;---------------;\nfixed-center = true\npadding-left = 2 \npadding-right = 2\nmodule-margin = 1.5\n\nmodules-left = i3\nmodules-center = \nmodules-right = openvpn micstatus volume battery wlan today\n\ntray-position = right \ntray-detached = false \n\n;---------;\n; MODULES ;\n;---------;\n\n\n[module/openvpn]\ntype = custom/script\nexec = $HOME/.config/polybar/scripts/vpn-ip.sh\ninterval = 2\nclick-left = $HOME/.config/polybar/scripts/vpn-ip.sh --copy &\n\n[module/today]\ntype = custom/script\nexec = $HOME/.config/polybar/scripts/today.sh\ninterval = 5\nclick-left = $HOME/.config/polybar/scripts/today.sh --calendar &\n\n[module/battery]\ntype = internal/battery\n\nbattery = BAT0\nadapter = ADP1\n\npoll-interval = 1\n\nfull-at = 100\n\nlabel-discharging = %percentage%%\nlabel-charging = %percentage%%\nlabel-full = %percentage%%\n\nformat-discharging = <ramp-capacity>  <label-discharging>\nformat-full = <ramp-capacity>  <label-full>\nformat-charging =  <label-charging>\n\nramp-capacity-0 = \nramp-capacity-1 = \nramp-capacity-2 = \nramp-capacity-3 = \nramp-capacity-4 = \n\n[module/volume]\ntype = internal/alsa\n\nformat-volume = <ramp-volume> <label-volume>\nformat-muted =  mute\n\nramp-volume-0 = \nramp-volume-1 = \nramp-volume-2 = \n\n[module/micstatus]\ntype = custom/script\nexec = $HOME/.config/polybar/scripts/mic_status.sh\ninterval = 1\nclick-left = pactl set-source-mute 0 toggle\n\n[module/i3]\ntype = internal/i3\nformat = <label-state> <label-mode>\nindex-sort = true\nwrapping-scroll = false\nenable-scroll = false\nenable-click = true \nreverse-scroll = false\n\nlabel-mode-padding = 2\nlabel-mode-foreground = #000\nlabel-mode-background = #ffb52a\n\n; focused = Active workspace on focused monitor\nlabel-focused = %index%\nlabel-focused-background = #444\nlabel-focused-padding = 1\n\n; unfocused = Inactive workspace on any monitor\nlabel-unfocused = %index%\nlabel-unfocused-padding = 1\n\n; visible = Active workspace on unfocused monitor\nlabel-visible = %index%\nlabel-visible-background = #ffb52a\nlabel-visible-padding = 1\n\n; urgent = Workspace with urgency hint set\nlabel-urgent = %index%\nlabel-urgent-background = #bd2c40\nlabel-urgent-padding = 1\n; vim:ft=dosini\n"
  },
  {
    "path": "polybar/.config/polybar/launch.sh",
    "content": "#!/bin/bash\n\n# Terminate already runnning bar instances\nkillall -q polybar\n\n# Wait until the processes have been shut down\n#while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done\n\n# Launch bar\n#polybar bar1 &\n\nif type \"xrandr\"; then\n  for m in $(xrandr --query | grep \" connected\" | cut -d\" \" -f1); do\n    MONITOR=$m polybar --reload bar1 &\n  done\nelse\n  polybar --reload bar1 &\nfi\n"
  },
  {
    "path": "polybar/.config/polybar/scripts/battery_widget.sh",
    "content": "#!/usr/bin/env bash\nTIME_TO_EMPTY=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -E \"time\" | xargs | sed -z \"s/time to empty: //g\")\nPERCENTAGE=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -E \"percent\" | xargs | sed -z \"s/percentage: //g\")\nSTATE=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -E \"state\" | xargs | sed -z \"s/state: //g\")\n\n# This line is very messy. That is why the I have left the \n# above lines so that I can refer back to them in the future\n#kitty --hold --title=\"batterywidget\" -e sh -c 'printf \"\\\\e]11;#0d0b0a\\\\e\\\\\\\\\" && echo \"\" && tput civis && PS1=\"\" && stty -echo && printf \"\\033[1mpercentage: \\033[0m\" && upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -E \"percent\" | xargs | sed -z \"s/percentage: //g\" && printf \"\\033[1mstate: \\033[0m\" && upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep -E \"state\" | xargs | sed -z \"s/state: //g\"' &\n\n#sleep 0.25\n\n#i3-msg [title=\"batterywidget\"] focus, floating enable, resize set 160 110, move position 1230 23\n\ndunstify \"percent: $PERCENTAGE\"\n"
  },
  {
    "path": "polybar/.config/polybar/scripts/bluetooth.sh",
    "content": "#!/usr/bin/env bash\nbt_connected_icon=\"\"\nbt_disconnected_icon=\"\"\n\ndevice_name=$(bluetoothctl info | sed -n \"s/Name: //p\" | awk '{$1=$1};1')\n\nif bluetoothctl show | grep -q \"Powered: no\"; then\n    echo -n \"$bt_disconnected_icon\"\n    exit\nfi\n\nif bluetoothctl info | grep -q \"Missing device address argument\"; then\n    echo -n \"$bt_disconnected_icon\"\n    exit\nfi\n\nif [ ! -z \"$device_name\" ]; then\n    echo -n \"$bt_connected_icon $device_name\"\n    exit\nfi\n"
  },
  {
    "path": "polybar/.config/polybar/scripts/mic_status.sh",
    "content": "#!/usr/bin/env bash\n\ncurrent_source=$(pactl info | grep \"Default Source\" | cut -f3 -d\" \")\nmic_is_on=$(pactl list sources | grep -A 10 $current_source | grep \"Mute: no\" )\n\nif [ $? -eq 0 ]; then\n    printf %s \" \"\nelse\n    printf %s \" \"\nfi\n"
  },
  {
    "path": "polybar/.config/polybar/scripts/today.sh",
    "content": "#!/bin/sh\n\nDATE=\"$(date +\"%a %d %H:%M\")\"\n\ncase \"$1\" in\n--calendar)\n    gnome-calendar\n    ;;\n*)\n    echo \"$DATE\"\n    ;;\nesac\n"
  },
  {
    "path": "polybar/.config/polybar/scripts/vpn-ip.sh",
    "content": "# TODO: add xclip checker and ability to copy the IP\n#       send notification upon copying\ninterface=\"$(ip tuntap show | cut -d : -f1 | head -n 1)\"\nip=\"$(ip a s \"${interface}\" 2>/dev/null | grep -o -P '(?<=inet )[0-9]{1,3}(\\.[0-9]{1,3}){3}')\"\n\n\ncase \"$1\" in\n    --copy)\n        if [ -n \"$ip\" ]; then\n            echo -n \"$ip\" | xclip -sel c\n            notify-send \"OpenVPN\" \"IP copied to clipboard\"\n        fi\n        ;;\n    *)\n        if [ -n \"$ip\" ]; then\n            echo \"󰒄 $ip\"\n        else\n            echo \"\"\n        fi\n        ;;\nesac\n\n\n\n\n"
  },
  {
    "path": "polybar/.config/polybar/scripts/wifi_widget.sh",
    "content": "#!/usr/bin/env bash\n\ndunstify \"wifi\" \"IP: $(hostname --ip-address)\\nRouter: $(ip route show | awk '/default/ {print $3}')\" \n"
  },
  {
    "path": "rofi/.config/rofi/config.rasi",
    "content": "configuration {\n\tshow-icons: false;\n\tdrun-display-format: \"<b>{name}</b>\";\n\tcycle: false;\n\tsidebar-mode: false;\n\tm: \"-1\";\n\tclick-to-exit: true;\n    modi: \"drun\";\n}\n\n\n@theme \"~/.config/rofi/themes/default.rasi\"\n"
  },
  {
    "path": "rofi/.config/rofi/scripts/chars.txt",
    "content": "😀 Grinning Face\n😁 Beaming Face With Smiling Eyes\n😂 Face With Tears of Joy\n🤣 Rolling on the Floor Laughing\n😃 Grinning Face With Big Eyes\n😄 Grinning Face With Smiling Eyes\n😅 Grinning Face With Sweat\n😆 Grinning Squinting Face\n😉 Winking Face\n😊 Smiling Face With Smiling Eyes\n😋 Face Savoring Food\n😎 Smiling Face With Sunglasses\n😍 Smiling Face With Heart-Eyes\n😘 Face Blowing a Kiss\n🥰 Smiling Face With 3 Hearts\n😗 Kissing Face\n😙 Kissing Face With Smiling Eyes\n😚 Kissing Face With Closed Eyes\n☺ Smiling Face\n🙂 Slightly Smiling Face\n🤗 Hugging Face\n¯\\_(ツ)_/¯ idk\n(╯°□°)╯︵ ┻━┻ table flip\n^ caret\nε epsilon\nΣ sigma\nδ del\n🤩 Star-Struck\n🤔 Thinking Face\n🤨 Face With Raised Eyebrow\n😐 Neutral Face\n😑 Expressionless Face\n😶 Face Without Mouth\n🙄 Face With Rolling Eyes\n😏 Smirking Face\n😣 Persevering Face\n😥 Sad but Relieved Face\n😮 Face With Open Mouth\n🤐 Zipper-Mouth Face\n😯 Hushed Face\n😪 Sleepy Face\n😫 Tired Face\n😴 Sleeping Face\n😌 Relieved Face\n😛 Face With Tongue\n😜 Winking Face With Tongue\n\\  back slash\n😝 Squinting Face With Tongue\n🤤 Drooling Face\n😒 Unamused Face\n😓 Downcast Face With Sweat\n😔 Pensive Face\n😕 Confused Face\n🙃 Upside-Down Face\n🤑 Money-Mouth Face\n😲 Astonished Face\n☹ Frowning Face\n🙁 Slightly Frowning Face\n😖 Confounded Face\n😞 Disappointed Face\n😟 Worried Face\n😤 Face With Steam From Nose\n😢 Crying Face\n😭 Loudly Crying Face\n😦 Frowning Face With Open Mouth\n😧 Anguished Face\n😨 Fearful Face\n😩 Weary Face\n🤯 Exploding Head\n😬 Grimacing Face\n😰 Anxious Face With Sweat\n😱 Face Screaming in Fear\n🥵 Hot Face\n🥶 Cold Face\n😳 Flushed Face\n🤪 Zany Face\n😵 Dizzy Face\n😡 Pouting Face\n😠 Angry Face\n🤬 Face With Symbols on Mouth\n😷 Face With Medical Mask\n🤒 Face With Thermometer\n🤕 Face With Head-Bandage\n🤢 Nauseated Face\n🤮 Face Vomiting\n🤧 Sneezing Face\n😇 Smiling Face With Halo\n🤠 Cowboy Hat Face\n🤡 Clown Face\n🥳 Partying Face\n🥴 Woozy Face\n🥺 Pleading Face\n🤥 Lying Face\n🤫 Shushing Face\n🤭 Face With Hand Over Mouth\n🧐 Face With Monocle\n🤓 Nerd Face\n😈 Smiling Face With Horns\n👿 Angry Face With Horns\n👹 Ogre\n👺 Goblin\n💀 Skull\n👻 Ghost\n👽 Alien\n👾 Alien Monster\n🤖 Robot Face\n💩 Pile of Poo\n😺 Grinning Cat Face\n😸 Grinning Cat Face With Smiling Eyes\n😹 Cat Face With Tears of Joy\n😻 Smiling Cat Face With Heart-Eyes\n😼 Cat Face With Wry Smile\n😽 Kissing Cat Face\n🙀 Weary Cat Face\n😿 Crying Cat Face\n😾 Pouting Cat Face\n👶 Baby\n👦 Boy\n👧 Girl\n👨 Man\n👩 Woman\n👴 Old Man\n👵 Old Woman\n$ dollar sign\n[] brackets square\n{} curly brackets\n👨‍⚕️ Man Health Worker\n👩‍⚕️ Woman Health Worker\n👨‍🎓 Man Student\n👩‍🎓 Woman Student\n👨‍⚖️ Man Judge\n👩‍⚖️ Woman Judge\n👨‍🌾 Man Farmer\n👩‍🌾 Woman Farmer\n👨‍🍳 Man Cook\n👩‍🍳 Woman Cook\n👨‍🔧 Man Mechanic\n👩‍🔧 Woman Mechanic\n👨‍🏭 Man Factory Worker\n👩‍🏭 Woman Factory Worker\n👨‍💼 Man Office Worker\n👩‍💼 Woman Office Worker\n👨‍🔬 Man Scientist\n👩‍🔬 Woman Scientist\n👨‍💻 Man Technologist\n👩‍💻 Woman Technologist\n👨‍🎤 Man Singer\n👩‍🎤 Woman Singer\n👨‍🎨 Man Artist\n👩‍🎨 Woman Artist\n👨‍✈️ Man Pilot\n👩‍✈️ Woman Pilot\n👨‍🚀 Man Astronaut\n👩‍🚀 Woman Astronaut\n👨‍🚒 Man Firefighter\n👩‍🚒 Woman Firefighter\n👮 Police Officer\n👮‍♂️ Man Police Officer\n👮‍♀️ Woman Police Officer\n🕵 Detective\n🕵️‍♂️ Man Detective\n🕵️‍♀️ Woman Detective\n💂 Guard\n💂‍♂️ Man Guard\n💂‍♀️ Woman Guard\n👷 Construction Worker\n👷‍♂️ Man Construction Worker\n👷‍♀️ Woman Construction Worker\n🤴 Prince\n👸 Princess\n👳 Person Wearing Turban\n👳‍♂️ Man Wearing Turban\n👳‍♀️ Woman Wearing Turban\n👲 Man With Chinese Cap\n🧕 Woman With Headscarf\n🧔 Man: Beard\n👱 Person: Blond Hair\n👱‍♂️ Man: Blond Hair\n👱‍♀️ Woman: Blond Hair\n👨‍🦰 Man: Red Hair\n👩‍🦰 Woman: Red Hair\n👨‍🦱 Man: Curly Hair\n👩‍🦱 Woman: Curly Hair\n👨‍🦲 Man: Bald\n👩‍🦲 Woman: Bald\n👨‍🦳 Man: White Hair\n👩‍🦳 Woman: White Hair\n🤵 Man in Tuxedo\n👰 Bride With Veil\n🤰 Pregnant Woman\n🤱 Breast-Feeding\n👼 Baby Angel\n🎅 Santa Claus\n🤶 Mrs. Claus\n🦸 Superhero\n🦸‍♀️ Woman Superhero\n🦸‍♂️ Man Superhero\n🦹 Supervillain\n🦹‍♀️ Woman Supervillain\n🦹‍♂️ Man Supervillain\n🧙 Mage\n🧙‍♀️ Woman Mage\n🧙‍♂️ Man Mage\n🧚‍♀️ Woman Fairy\n🧚‍♂️ Man Fairy\n🧛 Vampire\n🧛‍♀️ Woman Vampire\n🧛‍♂️ Man Vampire\n🧜 Merperson\n🧜‍♀️ Mermaid\n🧜‍♂️ Merman\n🧝 Elf\n🧝‍♀️ Woman Elf\n🧝‍♂️ Man Elf\n🧞 Genie\n🧞‍♀️ Woman Genie\n🧞‍♂️ Man Genie\n🧟 Zombie\n🧟‍♀️ Woman Zombie\n🧟‍♂️ Man Zombie\n🙍 Person Frowning\n🙍‍♂️ Man Frowning\n🙍‍♀️ Woman Frowning\n🙎 Person Pouting\n🙎‍♂️ Man Pouting\n🙎‍♀️ Woman Pouting\n🙅 Person Gesturing No\n🙅‍♂️ Man Gesturing No\n🙅‍♀️ Woman Gesturing No\n🙆 Person Gesturing OK\n🙆‍♂️ Man Gesturing OK\n🙆‍♀️ Woman Gesturing OK\n💁 Person Tipping Hand\n💁‍♂️ Man Tipping Hand\n💁‍♀️ Woman Tipping Hand\n🙋 Person Raising Hand\n🙋‍♂️ Man Raising Hand\n🙋‍♀️ Woman Raising Hand\n🙇 Person Bowing\n🙇‍♂️ Man Bowing\n🙇‍♀️ Woman Bowing\n🤦 Person Facepalming\n🤦‍♂️ Man Facepalming\n🤦‍♀️ Woman Facepalming\n🤷 Person Shrugging\n🤷‍♂️ Man Shrugging\n🤷‍♀️ Woman Shrugging\n💆 Person Getting Massage\n💆‍♂️ Man Getting Massage\n💆‍♀️ Woman Getting Massage\n💇 Person Getting Haircut\n💇‍♂️ Man Getting Haircut\n💇‍♀️ Woman Getting Haircut\n🚶 Person Walking\n🚶‍♂️ Man Walking\n🚶‍♀️ Woman Walking\n🏃 Person Running\n🏃‍♂️ Man Running\n🏃‍♀️ Woman Running\n💃 Woman Dancing\n🕺 Man Dancing\n👯 People With Bunny Ears\n👯‍♂️ Men With Bunny Ears\n👯‍♀️ Women With Bunny Ears\n🧖 Person in Steamy Room\n🧖‍♀️ Woman in Steamy Room\n🧖‍♂️ Man in Steamy Room\n🧘 Person in Lotus Position\n🕴 Man in Suit Levitating\n🗣 Speaking Head\n👤 Bust in Silhouette\n👥 Busts in Silhouette\n👫 Man and Woman Holding Hands\n👬 Two Men Holding Hands\n👭 Two Women Holding Hands\n💏 Kiss\n👨‍❤️‍💋‍👨 Kiss: Man, Man\n👩‍❤️‍💋‍👩 Kiss: Woman, Woman\n💑 Couple With Heart\n👨‍❤️‍👨 Couple With Heart: Man, Man\n👩‍❤️‍👩 Couple With Heart: Woman, Woman\n👪 Family\n👨‍👩‍👦 Family: Man, Woman, Boy\n👨‍👩‍👧 Family: Man, Woman, Girl\n👨‍👩‍👧‍👦 Family: Man, Woman, Girl, Boy\n👨‍👩‍👦‍👦 Family: Man, Woman, Boy, Boy\n👨‍👩‍👧‍👧 Family: Man, Woman, Girl, Girl\n👨‍👨‍👦 Family: Man, Man, Boy\n👨‍👨‍👧 Family: Man, Man, Girl\n👨‍👨‍👧‍👦 Family: Man, Man, Girl, Boy\n👨‍👨‍👦‍👦 Family: Man, Man, Boy, Boy\n👨‍👨‍👧‍👧 Family: Man, Man, Girl, Girl\n👩‍👩‍👦 Family: Woman, Woman, Boy\n👩‍👩‍👧 Family: Woman, Woman, Girl\n👩‍👩‍👧‍👦 Family: Woman, Woman, Girl, Boy\n👩‍👩‍👦‍👦 Family: Woman, Woman, Boy, Boy\n👩‍👩‍👧‍👧 Family: Woman, Woman, Girl, Girl\n👨‍👦 Family: Man, Boy\n👨‍👦‍👦 Family: Man, Boy, Boy\n👨‍👧 Family: Man, Girl\n👨‍👧‍👦 Family: Man, Girl, Boy\n👨‍👧‍👧 Family: Man, Girl, Girl\n👩‍👦 Family: Woman, Boy\n👩‍👦‍👦 Family: Woman, Boy, Boy\n👩‍👧 Family: Woman, Girl\n👩‍👧‍👦 Family: Woman, Girl, Boy\n👩‍👧‍👧 Family: Woman, Girl, Girl\n🤳 Selfie\n💪 Flexed Biceps\n🦵 Leg\n🦶 Foot\n👈 Backhand Index Pointing Left\n👉 Backhand Index Pointing Right\n☝ Index Pointing Up\n👆 Backhand Index Pointing Up\n🖕 Middle Finger\n👇 Backhand Index Pointing Down\n✌ Victory Hand\n🤞 Crossed Fingers\n🖖 Vulcan Salute\n🤘 Sign of the Horns\n🤙 Call Me Hand\n🖐 Hand With Fingers Splayed\n✋ Raised Hand\n👌 OK Hand\n👍 Thumbs Up\n👎 Thumbs Down\n✊ Raised Fist\n👊 Oncoming Fist\n🤛 Left-Facing Fist\n🤜 Right-Facing Fist\n🤚 Raised Back of Hand\n👋 Waving Hand\n🤟 Love-You Gesture\n✍ Writing Hand\n👏 Clapping Hands\n👐 Open Hands\n🙌 Raising Hands\n🤲 Palms Up Together\n🙏 Folded Hands\n🤝 Handshake\n💅 Nail Polish\n👂 Ear\n👃 Nose\n👣 Footprints\n👀 Eyes\n👁 Eye\n🧠 Brain\n🦴 Bone\n🦷 Tooth\n👅 Tongue\n👄 Mouth\n💋 Kiss Mark\n👓 Glasses\n🕶 Sunglasses\n🥽 Goggles\n🥼 Lab Coat\n👔 Necktie\n👕 T-Shirt\n👖 Jeans\n🧣 Scarf\n🧤 Gloves\n🧥 Coat\n🧦 Socks\n👗 Dress\n👘 Kimono\n👙 Bikini\n👚 Woman’S Clothes\n👛 Purse\n👜 Handbag\n👝 Clutch Bag\n🎒 Backpack\n👞 Man’S Shoe\n👟 Running Shoe\n🥾 Hiking Boot\n🥿 Flat Shoe\n👠 High-Heeled Shoe\n👡 Woman’S Sandal\n👢 Woman’S Boot\n👑 Crown\n👒 Woman’S Hat\n🎩 Top Hat\n🎓 Graduation Cap\n🧢 Billed Cap\n⛑ Rescue Worker’S Helmet\n💄 Lipstick\n💍 Ring\n🧳 Luggage\n🌂 Closed Umbrella\n☂ Umbrella\n💼 Briefcase\n🧵 Thread\n🧶 Yarn\n🙈 See-No-Evil Monkey\n🙉 Hear-No-Evil Monkey\n🙊 Speak-No-Evil Monkey\n💥 Collision\n💦 Sweat Droplets\n💨 Dashing Away\n💫 Dizzy\n🐵 Monkey Face\n🐒 Monkey\n🦍 Gorilla\n🐶 Dog Face\n🐕 Dog\n🐩 Poodle\n🐺 Wolf Face\n🦊 Fox Face\n🦝 Raccoon\n🐱 Cat Face\n🐈 Cat\n🦁 Lion Face\n🐯 Tiger Face\n🐅 Tiger\n🐆 Leopard\n🐴 Horse Face\n🐎 Horse\n🦄 Unicorn Face\n🦓 Zebra\n🐮 Cow Face\n🐂 Ox\n🐃 Water Buffalo\n🐄 Cow\n🐷 Pig Face\n🐖 Pig\n🐗 Boar\n🐽 Pig Nose\n🐏 Ram\n🐑 Ewe\n🐐 Goat\n🐪 Camel\n🐫 Two-Hump Camel\n🦙 Llama\n🦒 Giraffe\n🐘 Elephant\n🦏 Rhinoceros\n🦛 Hippopotamus\n🐭 Mouse Face\n🐁 Mouse\n🐀 Rat\n🐹 Hamster Face\n🐰 Rabbit Face\n🐇 Rabbit\n🐿 Chipmunk\n🦔 Hedgehog\n🦇 Bat\n🐻 Bear Face\n🐨 Koala\n🐼 Panda Face\n🦘 Kangaroo\n🦡 Badger\n🐾 Paw Prints\n🦃 Turkey\n🐔 Chicken\n🐓 Rooster\n🐣 Hatching Chick\n🐤 Baby Chick\n🐥 Front-Facing Baby Chick\n🐦 Bird\n🐧 Penguin\n🕊 Dove\n🦅 Eagle\n🦆 Duck\n🦢 Swan\n🦉 Owl\n🦚 Peacock\n🦜 Parrot\n🐸 Frog Face\n🐊 Crocodile\n🐢 Turtle\n🦎 Lizard\n🐍 Snake\n🐲 Dragon Face\n🐉 Dragon\n🦕 Sauropod\n🦖 T-Rex\n🐳 Spouting Whale\n🐋 Whale\n🐬 Dolphin\n🐟 Fish\n🐠 Tropical Fish\n🐡 Blowfish\n🦈 Shark\n🐙 Octopus\n🐚 Spiral Shell\n🦀 Crab\n🦞 Lobster\n🦐 Shrimp\n🦑 Squid\n🐌 Snail\n🦋 Butterfly\n🐛 Bug\n🐜 Ant\n🐝 Honeybee\n🐞 Lady Beetle\n🦗 Cricket\n🕷 Spider\n🕸 Spider Web\n🦂 Scorpion\n🦟 Mosquito\n🦠 Microbe\n💐 Bouquet\n🌸 Cherry Blossom\n💮 White Flower\n🏵 Rosette\n🌹 Rose\n🥀 Wilted Flower\n🌺 Hibiscus\n🌻 Sunflower\n🌼 Blossom\n🌷 Tulip\n🌱 Seedling\n🌲 Evergreen Tree\n🌳 Deciduous Tree\n🌴 Palm Tree\n🌵 Cactus\n🌾 Sheaf of Rice\n🌿 Herb\n☘ Shamrock\n🍀 Four Leaf Clover\n🍁 Maple Leaf\n🍂 Fallen Leaf\n🍃 Leaf Fluttering in Wind\n🍄 Mushroom\n🌰 Chestnut\n🌍 Globe Showing Europe-Africa\n🌎 Globe Showing Americas\n🌏 Globe Showing Asia-Australia\n🌐 Globe With Meridians\n🌑 New Moon\n🌒 Waxing Crescent Moon\n🌓 First Quarter Moon\n🌔 Waxing Gibbous Moon\n🌕 Full Moon\n🌖 Waning Gibbous Moon\n🌗 Last Quarter Moon\n🌘 Waning Crescent Moon\n🌙 Crescent Moon\n🌚 New Moon Face\n🌛 First Quarter Moon Face\n🌜 Last Quarter Moon Face\n☀ Sun\n🌝 Full Moon Face\n🌞 Sun With Face\n⭐ Star\n🌟 Glowing Star\n🌠 Shooting Star\n☁ Cloud\n⛅ Sun Behind Cloud\n⛈ Cloud With Lightning and Rain\n🌤 Sun Behind Small Cloud\n🌥 Sun Behind Large Cloud\n🌦 Sun Behind Rain Cloud\n🌧 Cloud With Rain\n🌨 Cloud With Snow\n🌩 Cloud With Lightning\n🌪 Tornado\n🌫 Fog\n🌬 Wind Face\n🌈 Rainbow\n☂ Umbrella\n☔ Umbrella With Rain Drops\n⚡ High Voltage\n❄ Snowflake\n☃ Snowman\n⛄ Snowman Without Snow\n☄ Comet\n🔥 Fire\n💧 Droplet\n🌊 Water Wave\n🎄 Christmas Tree\n✨ Sparkles\n🎋 Tanabata Tree\n🎍 Pine Decoration\n🍇 Grapes\n🍈 Melon\n🍉 Watermelon\n🍊 Tangerine\n🍋 Lemon\n🍌 Banana\n🍍 Pineapple\n🥭 Mango\n🍎 Red Apple\n🍏 Green Apple\n🍐 Pear\n🍑 Peach\n🍒 Cherries\n🍓 Strawberry\n🥝 Kiwi Fruit\n🍅 Tomato\n🥥 Coconut\n🥑 Avocado\n🍆 Eggplant\n🥔 Potato\n🥕 Carrot\n🌽 Ear of Corn\n🌶 Hot Pepper\n🥒 Cucumber\n🥬 Leafy Green\n🥦 Broccoli\n🍄 Mushroom\n🥜 Peanuts\n🌰 Chestnut\n🍞 Bread\n🥐 Croissant\n🥖 Baguette Bread\n🥨 Pretzel\n🥯 Bagel\n🥞 Pancakes\n🧀 Cheese Wedge\n🍖 Meat on Bone\n🍗 Poultry Leg\n🥩 Cut of Meat\n🥓 Bacon\n🍔 Hamburger\n🍟 French Fries\n🍕 Pizza\n🌭 Hot Dog\n🥪 Sandwich\n🌮 Taco\n🌯 Burrito\n🥙 Stuffed Flatbread\n🍳 Cooking\n🥘 Shallow Pan of Food\n🍲 Pot of Food\n🥣 Bowl With Spoon\n🥗 Green Salad\n🍿 Popcorn\n🧂 Salt\n🥫 Canned Food\n🍱 Bento Box\n🍘 Rice Cracker\n🍙 Rice Ball\n🍚 Cooked Rice\n🍛 Curry Rice\n🍜 Steaming Bowl\n🍝 Spaghetti\n🍠 Roasted Sweet Potato\n🍢 Oden\n🍣 Sushi\n🍤 Fried Shrimp\n🍥 Fish Cake With Swirl\n🥮 Moon Cake\n🍡 Dango\n🥟 Dumpling\n🥠 Fortune Cookie\n🥡 Takeout Box\n🍦 Soft Ice Cream\n🍧 Shaved Ice\n🍨 Ice Cream\n🍩 Doughnut\n🍪 Cookie\n🎂 Birthday Cake\n🍰 Shortcake\n🧁 Cupcake\n🥧 Pie\n🍫 Chocolate Bar\n🍬 Candy\n🍭 Lollipop\n🍮 Custard\n🍯 Honey Pot\n🍼 Baby Bottle\n🥛 Glass of Milk\n☕ Hot Beverage\n🍵 Teacup Without Handle\n🍶 Sake\n🍾 Bottle With Popping Cork\n🍷 Wine Glass\n🍸 Cocktail Glass\n🍹 Tropical Drink\n🍺 Beer Mug\n🍻 Clinking Beer Mugs\n🥂 Clinking Glasses\n🥃 Tumbler Glass\n🥤 Cup With Straw\n🥢 Chopsticks\n🍽 Fork and Knife With Plate\n🍴 Fork and Knife\n🥄 Spoon\n🧗 Person Climbing\n🧗‍♀️ Woman Climbing\n🧗‍♂️ Man Climbing\n🧘 Person in Lotus Position\n🧘‍♀️ Woman in Lotus Position\n🧘‍♂️ Man in Lotus Position\n🕴 Man in Suit Levitating\n🏇 Horse Racing\n⛷ Skier\n🏂 Snowboarder\n🏌 Person Golfing\n🏌️‍♂️ Man Golfing\n🏌️‍♀️ Woman Golfing\n🏄 Person Surfing\n🏄‍♂️ Man Surfing\n🏄‍♀️ Woman Surfing\n🚣 Person Rowing Boat\n🚣‍♂️ Man Rowing Boat\n🚣‍♀️ Woman Rowing Boat\n🏊 Person Swimming\n🏊‍♂️ Man Swimming\n🏊‍♀️ Woman Swimming\n⛹ Person Bouncing Ball\n⛹️‍♂️ Man Bouncing Ball\n⛹️‍♀️ Woman Bouncing Ball\n🏋 Person Lifting Weights\n🏋️‍♂️ Man Lifting Weights\n🏋️‍♀️ Woman Lifting Weights\n🚴 Person Biking\n🚴‍♂️ Man Biking\n🚴‍♀️ Woman Biking\n🚵 Person Mountain Biking\n🚵‍♂️ Man Mountain Biking\n🚵‍♀️ Woman Mountain Biking\n🤸 Person Cartwheeling\n🤸‍♂️ Man Cartwheeling\n🤸‍♀️ Woman Cartwheeling\n🤼 People Wrestling\n🤼‍♂️ Men Wrestling\n🤼‍♀️ Women Wrestling\n🤽 Person Playing Water Polo\n🤽‍♂️ Man Playing Water Polo\n🤽‍♀️ Woman Playing Water Polo\n🤾 Person Playing Handball\n🤾‍♂️ Man Playing Handball\n🤾‍♀️ Woman Playing Handball\n🤹 Person Juggling\n🤹‍♂️ Man Juggling\n🤹‍♀️ Woman Juggling\n🎪 Circus Tent\n🛹 Skateboard\n🎗 Reminder Ribbon\n🎟 Admission Tickets\n🎫 Ticket\n🎖 Military Medal\n🏆 Trophy\n🏅 Sports Medal\n🥇 1st Place Medal\n🥈 2nd Place Medal\n🥉 3rd Place Medal\n⚽ Soccer Ball\n⚾ Baseball\n🥎 Softball\n🏀 Basketball\n🏐 Volleyball\n🏈 American Football\n🏉 Rugby Football\n🎾 Tennis\n🥏 Flying Disc\n🎳 Bowling\n🏏 Cricket Game\n🏑 Field Hockey\n🏒 Ice Hockey\n🥍 Lacrosse\n🏓 Ping Pong\n🏸 Badminton\n🥊 Boxing Glove\n🥋 Martial Arts Uniform\n⛳ Flag in Hole\n⛸ Ice Skate\n🎣 Fishing Pole\n🎽 Running Shirt\n🎿 Skis\n🛷 Sled\n🥌 Curling Stone\n🎯 Direct Hit\n🎱 Pool 8 Ball\n🎮 Video Game\n🎰 Slot Machine\n🎲 Game Die\n🧩 Jigsaw\n♟ Chess Pawn\n🎭 Performing Arts\n🎨 Artist Palette\n🎼 Musical Score\n🎤 Microphone\n🎧 Headphone\n🎷 Saxophone\n🎸 Guitar\n🎹 Musical Keyboard\n🎺 Trumpet\n🎻 Violin\n🥁 Drum\n🎬 Clapper Board\n🏹 Bow and Arrow\n🧵 Thread\n🧶 Yarn\n🚣 Person Rowing Boat\n🏎 Racing Car\n🏍 Motorcycle\n🗾 Map of Japan\n🏔 Snow-Capped Mountain\n⛰ Mountain\n🌋 Volcano\n🗻 Mount Fuji\n🏕 Camping\n🏖 Beach With Umbrella\n🏜 Desert\n🏝 Desert Island\n🏞 National Park\n🏟 Stadium\n🏛 Classical Building\n🏗 Building Construction\n🏘 Houses\n🏚 Derelict House\n🏠 House\n🏡 House With Garden\n🏢 Office Building\n🏣 Japanese Post Office\n🏤 Post Office\n🏥 Hospital\n🏦 Bank\n🏨 Hotel\n🏩 Love Hotel\n🏪 Convenience Store\n🏫 School\n🏬 Department Store\n🏭 Factory\n🏯 Japanese Castle\n🏰 Castle\n💒 Wedding\n🗼 Tokyo Tower\n🗽 Statue of Liberty\n⛪ Church\n🕌 Mosque\n🕍 Synagogue\n⛩ Shinto Shrine\n🕋 Kaaba\n⛲ Fountain\n⛺ Tent\n🌁 Foggy\n🌃 Night With Stars\n🏙 Cityscape\n🌄 Sunrise Over Mountains\n🌅 Sunrise\n🌆 Cityscape at Dusk\n🌇 Sunset\n🌉 Bridge at Night\n🌌 Milky Way\n🎠 Carousel Horse\n🎡 Ferris Wheel\n🎢 Roller Coaster\n🚂 Locomotive\n🚃 Railway Car\n🚄 High-Speed Train\n🚅 Bullet Train\n🚆 Train\n🚇 Metro\n🚈 Light Rail\n🚉 Station\n🚊 Tram\n🚝 Monorail\n🚞 Mountain Railway\n🚋 Tram Car\n🚌 Bus\n🚍 Oncoming Bus\n🚎 Trolleybus\n🚐 Minibus\n🚑 Ambulance\n🚒 Fire Engine\n🚓 Police Car\n🚔 Oncoming Police Car\n🚕 Taxi\n🚖 Oncoming Taxi\n🚗 Automobile\n🚘 Oncoming Automobile\n🚚 Delivery Truck\n🚛 Articulated Lorry\n🚜 Tractor\n🚲 Bicycle\n🛴 Kick Scooter\n🛵 Motor Scooter\n🚏 Bus Stop\n🛤 Railway Track\n⛽ Fuel Pump\n🚨 Police Car Light\n🚥 Horizontal Traffic Light\n🚦 Vertical Traffic Light\n🚧 Construction\n⚓ Anchor\n⛵ Sailboat\n🚤 Speedboat\n🛳 Passenger Ship\n⛴ Ferry\n🛥 Motor Boat\n🚢 Ship\n✈ Airplane\n🛩 Small Airplane\n🛫 Airplane Departure\n🛬 Airplane Arrival\n💺 Seat\n🚁 Helicopter\n🚟 Suspension Railway\n🚠 Mountain Cableway\n🚡 Aerial Tramway\n🛰 Satellite\n🚀 Rocket\n🛸 Flying Saucer\n🌠 Shooting Star\n⛱ Umbrella on Ground\n🎆 Fireworks\n🎇 Sparkler\n🎑 Moon Viewing Ceremony\n💴 Yen Banknote\n💵 Dollar Banknote\n💶 Euro Banknote\n💷 Pound Banknote\n🗿 Moai\n🛂 Passport Control\n🛃 Customs\n🛄 Baggage Claim\n🛅 Left Luggage\n☠ Skull and Crossbones\n🛀 Person Taking Bath\n🛌 Person in Bed\n💌 Love Letter\n💣 Bomb\n🕳 Hole\n🛍 Shopping Bags\n📿 Prayer Beads\n💎 Gem Stone\n🔪 Kitchen Knife\n🏺 Amphora\n🗺 World Map\n🧭 Compass\n🧱 Brick\n💈 Barber Pole\n🛢 Oil Drum\n🛎 Bellhop Bell\n🧳 Luggage\n⌛ Hourglass Done\n⏳ Hourglass Not Done\n⌚ Watch\n⏰ Alarm Clock\n⏱ Stopwatch\n⏲ Timer Clock\n🕰 Mantelpiece Clock\n🌡 Thermometer\n⛱ Umbrella on Ground\n🧨 Firecracker\n🎈 Balloon\n🎉 Party Popper\n🎊 Confetti Ball\n🎎 Japanese Dolls\n🎏 Carp Streamer\n🎐 Wind Chime\n🧧 Red Envelope\n🎀 Ribbon\n🎁 Wrapped Gift\n🔮 Crystal Ball\n🧿 Nazar Amulet\n🕹 Joystick\n🧸 Teddy Bear\n🖼 Framed Picture\n📯 Postal Horn\n🎙 Studio Microphone\n🎚 Level Slider\n🎛 Control Knobs\n📻 Radio\n📱 Mobile Phone\n📲 Mobile Phone With Arrow\n☎ Telephone\n📞 Telephone Receiver\n📟 Pager\n📠 Fax Machine\n🔋 Battery\n🔌 Electric Plug\n💻 Laptop Computer\n🖥 Desktop Computer\n🖨 Printer\n⌨ Keyboard\n🖱 Computer Mouse\n🖲 Trackball\n💽 Computer Disk\n💾 Floppy Disk\n💿 Optical Disk\n📀 DVD\n🧮 Abacus\n🎥 Movie Camera\n🎞 Film Frames\n📽 Film Projector\n📺 Television\n📷 Camera\n📸 Camera With Flash\n📹 Video Camera\n📼 Videocassette\n🔍 Magnifying Glass Tilted Left\n🔎 Magnifying Glass Tilted Right\n🕯 Candle\n💡 Light Bulb\n🔦 Flashlight\n🏮 Red Paper Lantern\n📔 Notebook With Decorative Cover\n📕 Closed Book\n📖 Open Book\n📗 Green Book\n📘 Blue Book\n📙 Orange Book\n📚 Books\n📓 Notebook\n📃 Page With Curl\n📜 Scroll\n📄 Page Facing Up\n📰 Newspaper\n🗞 Rolled-Up Newspaper\n📑 Bookmark Tabs\n🔖 Bookmark\n🏷 Label\n💰 Money Bag\n💴 Yen Banknote\n💵 Dollar Banknote\n💶 Euro Banknote\n💷 Pound Banknote\n💸 Money With Wings\n💳 Credit Card\n🧾 Receipt\n✉ Envelope\n📧 E-Mail\n📨 Incoming Envelope\n📩 Envelope With Arrow\n📤 Outbox Tray\n📥 Inbox Tray\n📦 Package\n📫 Closed Mailbox With Raised Flag\n📪 Closed Mailbox With Lowered Flag\n📬 Open Mailbox With Raised Flag\n📭 Open Mailbox With Lowered Flag\n📮 Postbox\n🗳 Ballot Box With Ballot\n✏ Pencil\n✒ Black Nib\n🖋 Fountain Pen\n🖊 Pen\n🖌 Paintbrush\n🖍 Crayon\n📝 Memo\n📁 File Folder\n📂 Open File Folder\n🗂 Card Index Dividers\n📅 Calendar\n📆 Tear-Off Calendar\n🗒 Spiral Notepad\n🗓 Spiral Calendar\n📇 Card Index\n📈 Chart Increasing\n📉 Chart Decreasing\n📊 Bar Chart\n📋 Clipboard\n📌 Pushpin\n📍 Round Pushpin\n📎 Paperclip\n🖇 Linked Paperclips\n📏 Straight Ruler\n📐 Triangular Ruler\n✂ Scissors\n🗃 Card File Box\n🗄 File Cabinet\n🗑 Wastebasket\n🔒 Locked\n🔓 Unlocked\n🔏 Locked With Pen\n🔐 Locked With Key\n🔑 Key\n🗝 Old Key\n🔨 Hammer\n⛏ Pick\n⚒ Hammer and Pick\n🛠 Hammer and Wrench\n🗡 Dagger\n⚔ Crossed Swords\n🔫 Pistol\n🛡 Shield\n🔧 Wrench\n🔩 Nut and Bolt\n⚙ Gear\n🗜 Clamp\n⚖ Balance Scale\n🔗 Link\n⛓ Chains\n🧰 Toolbox\n🧲 Magnet\n⚗ Alembic\n🧪 Test Tube\n🧫 Petri Dish\n🧬 DNA\n🧯 Fire Extinguisher\n🔬 Microscope\n🔭 Telescope\n📡 Satellite Antenna\n💉 Syringe\n💊 Pill\n🚪 Door\n🛏 Bed\n🛋 Couch and Lamp\n🚽 Toilet\n🚿 Shower\n🛁 Bathtub\n🧴 Lotion Bottle\n🧵 Thread\n🧶 Yarn\n🧷 Safety Pin\n🧹 Broom\n🧺 Basket\n🧻 Roll of Paper\n🧼 Soap\n🧽 Sponge\n🚬 Cigarette\n⚰ Coffin\n⚱ Funeral Urn\n🗿 Moai\n🚰 Potable Water\n👁‍🗨 Eye in Speech Bubble\n💘 Heart With Arrow\n❤ Red Heart\n💓 Beating Heart\n💔 Broken Heart\n💕 Two Hearts\n💖 Sparkling Heart\n💗 Growing Heart\n💙 Blue Heart\n💚 Green Heart\n💛 Yellow Heart\n🧡 Orange Heart\n💜 Purple Heart\n🖤 Black Heart\n💝 Heart With Ribbon\n💞 Revolving Hearts\n💟 Heart Decoration\n❣ Heavy Heart Exclamation\n💤 Zzz\n💢 Anger Symbol\n💬 Speech Balloon\n🗯 Right Anger Bubble\n💭 Thought Balloon\n💮 White Flower\n♨ Hot Springs\n💈 Barber Pole\n🛑 Stop Sign\n🕛 Twelve O’Clock\n🕧 Twelve-Thirty\n🕐 One O’Clock\n🕜 One-Thirty\n🕑 Two O’Clock\n🕝 Two-Thirty\n🕒 Three O’Clock\n🕞 Three-Thirty\n🕓 Four O’Clock\n🕟 Four-Thirty\n🕔 Five O’Clock\n🕠 Five-Thirty\n🕕 Six O’Clock\n🕡 Six-Thirty\n🕖 Seven O’Clock\n🕢 Seven-Thirty\n🕗 Eight O’Clock\n🕣 Eight-Thirty\n🕘 Nine O’Clock\n🕤 Nine-Thirty\n🕙 Ten O’Clock\n🕥 Ten-Thirty\n🕚 Eleven O’Clock\n🕦 Eleven-Thirty\n🌀 Cyclone\n♠ Spade Suit\n♥ Heart Suit\n♦ Diamond Suit\n♣ Club Suit\n🃏 Joker\n🀄 Mahjong Red Dragon\n🎴 Flower Playing Cards\n🔇 Muted Speaker\n🔈 Speaker Low Volume\n🔉 Speaker Medium Volume\n🔊 Speaker High Volume\n📢 Loudspeaker\n📣 Megaphone\n📯 Postal Horn\n🔔 Bell\n🔕 Bell With Slash\n🎵 Musical Note\n🎶 Musical Notes\n🏧 ATM Sign\n🚮 Litter in Bin Sign\n🚰 Potable Water\n♿ Wheelchair Symbol\n🚹 Men’S Room\n🚺 Women’S Room\n🚻 Restroom\n🚼 Baby Symbol\n🚾 Water Closet\n⚠ Warning\n🚸 Children Crossing\n⛔ No Entry\n🚫 Prohibited\n🚳 No Bicycles\n🚭 No Smoking\n🚯 No Littering\n🚱 Non-Potable Water\n🚷 No Pedestrians\n🔞 No One Under Eighteen\n☢ Radioactive\n☣ Biohazard\n⬆ Up Arrow\n↗ Up-Right Arrow\n➡ Right Arrow\n↘ Down-Right Arrow\n⬇ Down Arrow\n↙ Down-Left Arrow\n⬅ Left Arrow\n↖ Up-Left Arrow\n↕ Up-Down Arrow\n↔ Left-Right Arrow\n↩ Right Arrow Curving Left\n↪ Left Arrow Curving Right\n⤴ Right Arrow Curving Up\n⤵ Right Arrow Curving Down\n🔃 Clockwise Vertical Arrows\n🔄 Counterclockwise Arrows Button\n🔙 Back Arrow\n🔚 End Arrow\n🔛 On! Arrow\n🔜 Soon Arrow\n🔝 Top Arrow\n🛐 Place of Worship\n⚛ Atom Symbol\n♾ Infinity\n🕉 Om\n✡ Star of David\n☸ Wheel of Dharma\n☯ Yin Yang\n✝ Latin Cross\n☦ Orthodox Cross\n☪ Star and Crescent\n☮ Peace Symbol\n🕎 Menorah\n🔯 Dotted Six-Pointed Star\n♈ Aries\n♉ Taurus\n♊ Gemini\n♋ Cancer\n♌ Leo\n♍ Virgo\n♎ Libra\n♏ Scorpio\n♐ Sagittarius\n♑ Capricorn\n♒ Aquarius\n♓ Pisces\n⛎ Ophiuchus\n🔀 Shuffle Tracks Button\n🔁 Repeat Button\n🔂 Repeat Single Button\n▶ Play Button\n⏩ Fast-Forward Button\n◀ Reverse Button\n⏪ Fast Reverse Button\n🔼 Upwards Button\n⏫ Fast Up Button\n🔽 Downwards Button\n⏬ Fast Down Button\n⏹ Stop Button\n⏏ Eject Button\n🎦 Cinema\n🔅 Dim Button\n🔆 Bright Button\n📶 Antenna Bars\n📳 Vibration Mode\n📴 Mobile Phone Off\n♻ Recycling Symbol\n🔱 Trident Emblem\n📛 Name Badge\n🔰 Japanese Symbol for Beginner\n⭕ Heavy Large Circle\n✅ White Heavy Check Mark\n☑ Ballot Box With Check\n✔ Heavy Check Mark\n✖ Heavy Multiplication X\n❌ Cross Mark\n❎ Cross Mark Button\n➕ Heavy Plus Sign\n➖ Heavy Minus Sign\n➗ Heavy Division Sign\n➰ Curly Loop\n➿ Double Curly Loop\n〽 Part Alternation Mark\n✳ Eight-Spoked Asterisk\n✴ Eight-Pointed Star\n❇ Sparkle\n‼ Double Exclamation Mark\n⁉ Exclamation Question Mark\n❓ Question Mark\n❔ White Question Mark\n❕ White Exclamation Mark\n❗ Exclamation Mark\n© Copyright\n® Registered\n™ Trade Mark\n0️⃣ Keycap Digit Zero\n1️⃣ Keycap Digit One\n2️⃣ Keycap Digit Two\n3️⃣ Keycap Digit Three\n4️⃣ Keycap Digit Four\n5️⃣ Keycap Digit Five\n6️⃣ Keycap Digit Six\n7️⃣ Keycap Digit Seven\n8️⃣ Keycap Digit Eight\n9️⃣ Keycap Digit Nine\n🔟 Keycap: 10\n💯 Hundred Points\n🔠 Input Latin Uppercase\n🔡 Input Latin Lowercase\n🔢 Input Numbers\n🔣 Input Symbols\n🔤 Input Latin Letters\n🅰 A Button (Blood Type)\n🆎 Ab Button (Blood Type)\n🅱 B Button (Blood Type)\n🆑 CL Button\n🆒 Cool Button\n🆓 Free Button\nℹ Information\n🆔 ID Button\nⓂ Circled M\n🆕 New Button\n🆖 NG Button\n🅾 O Button (Blood Type)\n🆗 OK Button\n🅿 P Button\n🆘 SOS Button\n🆙 Up! Button\n🆚 Vs Button\n🈁 Japanese “Here” Button\n🈂 Japanese “Service Charge” Button\n🈷 Japanese “Monthly Amount” Button\n🈶 Japanese “Not Free of Charge” Button\n🈯 Japanese “Reserved” Button\n🉐 Japanese “Bargain” Button\n🈹 Japanese “Discount” Button\n🈚 Japanese “Free of Charge” Button\n🈲 Japanese “Prohibited” Button\n🉑 Japanese “Acceptable” Button\n🈸 Japanese “Application” Button\n🈴 Japanese “Passing Grade” Button\n🈳 Japanese “Vacancy” Button\n㊗ Japanese “Congratulations” Button\n㊙ Japanese “Secret” Button\n🈺 Japanese “Open for Business” Button\n🈵 Japanese “No Vacancy” Button\n▪ Black Small Square\n▫ White Small Square\n◻ White Medium Square\n◼ Black Medium Square\n◽ White Medium-Small Square\n◾ Black Medium-Small Square\n⬛ Black Large Square\n⬜ White Large Square\n🔶 Large Orange Diamond\n🔷 Large Blue Diamond\n🔸 Small Orange Diamond\n🔹 Small Blue Diamond\n🔺 Red Triangle Pointed Up\n🔻 Red Triangle Pointed Down\n💠 Diamond With a Dot\n🔲 Black Square Button\n🔳 White Square Button\n⚪ White Circle\n⚫ Black Circle\n🔴 Red Circle\n🔵 Blue Circle\n🏁 Chequered Flag\n🚩 Triangular Flag\n🎌 Crossed Flags\n🏴 Black Flag\n🏳 White Flag\n🏳️‍🌈 Rainbow Flag\n🏴‍☠️ Pirate Flag\n🇦🇨 Flag: Ascension Island\n🇦🇩 Flag: Andorra\n🇦🇪 Flag: United Arab Emirates\n🇦🇫 Flag: Afghanistan\n🇦🇬 Flag: Antigua &amp; Barbuda\n🇦🇮 Flag: Anguilla\n🇦🇱 Flag: Albania\n🇦🇲 Flag: Armenia\n🇦🇴 Flag: Angola\n🇦🇶 Flag: Antarctica\n🇦🇷 Flag: Argentina\n🇦🇸 Flag: American Samoa\n🇦🇹 Flag: Austria\n🇦🇺 Flag: Australia\n🇦🇼 Flag: Aruba\n🇦🇽 Flag: Åland Islands\n🇦🇿 Flag: Azerbaijan\n🇧🇦 Flag: Bosnia &amp; Herzegovina\n🇧🇧 Flag: Barbados\n🇧🇩 Flag: Bangladesh\n🇧🇪 Flag: Belgium\n🇧🇫 Flag: Burkina Faso\n🇧🇬 Flag: Bulgaria\n🇧🇭 Flag: Bahrain\n🇧🇮 Flag: Burundi\n🇧🇯 Flag: Benin\n🇧🇱 Flag: St. Barthélemy\n🇧🇲 Flag: Bermuda\n🇧🇳 Flag: Brunei\n🇧🇴 Flag: Bolivia\n🇧🇶 Flag: Caribbean Netherlands\n🇧🇷 Flag: Brazil\n🇧🇸 Flag: Bahamas\n🇧🇹 Flag: Bhutan\n🇧🇻 Flag: Bouvet Island\n🇧🇼 Flag: Botswana\n🇧🇾 Flag: Belarus\n🇧🇿 Flag: Belize\n🇨🇦 Flag: Canada\n🇨🇨 Flag: Cocos (Keeling) Islands\n🇨🇩 Flag: Congo - Kinshasa\n🇨🇫 Flag: Central African Republic\n🇨🇬 Flag: Congo - Brazzaville\n🇨🇭 Flag: Switzerland\n🇨🇮 Flag: Côte D’Ivoire\n🇨🇰 Flag: Cook Islands\n🇨🇱 Flag: Chile\n🇨🇲 Flag: Cameroon\n🇨🇳 Flag: China\n🇨🇴 Flag: Colombia\n🇨🇵 Flag: Clipperton Island\n🇨🇷 Flag: Costa Rica\n🇨🇺 Flag: Cuba\n🇨🇻 Flag: Cape Verde\n🇨🇼 Flag: Curaçao\n🇨🇽 Flag: Christmas Island\n🇨🇾 Flag: Cyprus\n🇨🇿 Flag: Czechia\n🇩🇪 Flag: Germany\n🇩🇬 Flag: Diego Garcia\n🇩🇯 Flag: Djibouti\n🇩🇰 Flag: Denmark\n🇩🇲 Flag: Dominica\n🇩🇴 Flag: Dominican Republic\n🇩🇿 Flag: Algeria\n🇪🇦 Flag: Ceuta &amp; Melilla\n🇪🇨 Flag: Ecuador\n🇪🇪 Flag: Estonia\n🇪🇬 Flag: Egypt\n🇪🇭 Flag: Western Sahara\n🇪🇷 Flag: Eritrea\n🇪🇸 Flag: Spain\n🇪🇹 Flag: Ethiopia\n🇪🇺 Flag: European Union\n🇫🇮 Flag: Finland\n🇫🇯 Flag: Fiji\n🇫🇰 Flag: Falkland Islands\n🇫🇲 Flag: Micronesia\n🇫🇴 Flag: Faroe Islands\n🇫🇷 Flag: France\n🇬🇦 Flag: Gabon\n🇬🇧 Flag: United Kingdom\n🇬🇩 Flag: Grenada\n🇬🇪 Flag: Georgia\n🇬🇫 Flag: French Guiana\n🇬🇬 Flag: Guernsey\n🇬🇭 Flag: Ghana\n🇬🇮 Flag: Gibraltar\n🇬🇱 Flag: Greenland\n🇬🇲 Flag: Gambia\n🇬🇳 Flag: Guinea\n🇬🇵 Flag: Guadeloupe\n🇬🇶 Flag: Equatorial Guinea\n🇬🇷 Flag: Greece\n🇬🇸 Flag: South Georgia &amp; South Sandwich Islands\n🇬🇹 Flag: Guatemala\n🇬🇺 Flag: Guam\n🇬🇼 Flag: Guinea-Bissau\n🇬🇾 Flag: Guyana\n🇭🇰 Flag: Hong Kong SAR China\n🇭🇲 Flag: Heard &amp; McDonald Islands\n🇭🇳 Flag: Honduras\n🇭🇷 Flag: Croatia\n🇭🇹 Flag: Haiti\n🇭🇺 Flag: Hungary\n🇮🇨 Flag: Canary Islands\n🇮🇩 Flag: Indonesia\n🇮🇪 Flag: Ireland\n🇮🇱 Flag: Israel\n🇮🇲 Flag: Isle of Man\n🇮🇳 Flag: India\n🇮🇴 Flag: British Indian Ocean Territory\n🇮🇶 Flag: Iraq\n🇮🇷 Flag: Iran\n🇮🇸 Flag: Iceland\n🇮🇹 Flag: Italy\n🇯🇪 Flag: Jersey\n🇯🇲 Flag: Jamaica\n🇯🇴 Flag: Jordan\n🇯🇵 Flag: Japan\n🇰🇪 Flag: Kenya\n🇰🇬 Flag: Kyrgyzstan\n🇰🇭 Flag: Cambodia\n🇰🇮 Flag: Kiribati\n🇰🇲 Flag: Comoros\n🇰🇳 Flag: St. Kitts &amp; Nevis\n🇰🇵 Flag: North Korea\n🇰🇷 Flag: South Korea\n🇰🇼 Flag: Kuwait\n🇰🇾 Flag: Cayman Islands\n🇰🇿 Flag: Kazakhstan\n🇱🇦 Flag: Laos\n🇱🇧 Flag: Lebanon\n🇱🇨 Flag: St. Lucia\n🇱🇮 Flag: Liechtenstein\n🇱🇰 Flag: Sri Lanka\n🇱🇷 Flag: Liberia\n🇱🇸 Flag: Lesotho\n🇱🇹 Flag: Lithuania\n🇱🇺 Flag: Luxembourg\n🇱🇻 Flag: Latvia\n🇱🇾 Flag: Libya\n🇲🇦 Flag: Morocco\n🇲🇨 Flag: Monaco\n🇲🇩 Flag: Moldova\n🇲🇪 Flag: Montenegro\n🇲🇫 Flag: St. Martin\n🇲🇬 Flag: Madagascar\n🇲🇭 Flag: Marshall Islands\n🇲🇰 Flag: Macedonia\n🇲🇱 Flag: Mali\n🇲🇲 Flag: Myanmar (Burma)\n🇲🇳 Flag: Mongolia\n🇲🇴 Flag: Macau Sar China\n🇲🇵 Flag: Northern Mariana Islands\n🇲🇶 Flag: Martinique\n🇲🇷 Flag: Mauritania\n🇲🇸 Flag: Montserrat\n🇲🇹 Flag: Malta\n🇲🇺 Flag: Mauritius\n🇲🇻 Flag: Maldives\n🇲🇼 Flag: Malawi\n🇲🇽 Flag: Mexico\n🇲🇾 Flag: Malaysia\n🇲🇿 Flag: Mozambique\n🇳🇦 Flag: Namibia\n🇳🇨 Flag: New Caledonia\n🇳🇪 Flag: Niger\n🇳🇫 Flag: Norfolk Island\n🇳🇬 Flag: Nigeria\n🇳🇮 Flag: Nicaragua\n🇳🇱 Flag: Netherlands\n🇳🇴 Flag: Norway\n🇳🇵 Flag: Nepal\n🇳🇷 Flag: Nauru\n🇳🇺 Flag: Niue\n🇳🇿 Flag: New Zealand\n🇴🇲 Flag: Oman\n🇵🇦 Flag: Panama\n🇵🇪 Flag: Peru\n🇵🇫 Flag: French Polynesia\n🇵🇬 Flag: Papua New Guinea\n🇵🇭 Flag: Philippines\n🇵🇰 Flag: Pakistan\n🇵🇱 Flag: Poland\n🇵🇲 Flag: St. Pierre &amp; Miquelon\n🇵🇳 Flag: Pitcairn Islands\n🇵🇷 Flag: Puerto Rico\n🇵🇸 Flag: Palestinian Territories\n🇵🇹 Flag: Portugal\n🇵🇼 Flag: Palau\n🇵🇾 Flag: Paraguay\n🇶🇦 Flag: Qatar\n🇷🇪 Flag: Réunion\n🇷🇴 Flag: Romania\n🇷🇸 Flag: Serbia\n🇷🇺 Flag: Russia\n🇷🇼 Flag: Rwanda\n🇸🇦 Flag: Saudi Arabia\n🇸🇧 Flag: Solomon Islands\n🇸🇨 Flag: Seychelles\n🇸🇩 Flag: Sudan\n🇸🇪 Flag: Sweden\n🇸🇬 Flag: Singapore\n🇸🇭 Flag: St. Helena\n🇸🇮 Flag: Slovenia\n🇸🇯 Flag: Svalbard &amp; Jan Mayen\n🇸🇰 Flag: Slovakia\n🇸🇱 Flag: Sierra Leone\n🇸🇲 Flag: San Marino\n🇸🇳 Flag: Senegal\n🇸🇴 Flag: Somalia\n🇸🇷 Flag: Suriname\n🇸🇸 Flag: South Sudan\n🇸🇹 Flag: São Tomé &amp; Príncipe\n🇸🇻 Flag: El Salvador\n🇸🇽 Flag: Sint Maarten\n🇸🇾 Flag: Syria\n🇸🇿 Flag: Swaziland\n🇹🇦 Flag: Tristan Da Cunha\n🇹🇨 Flag: Turks &amp; Caicos Islands\n🇹🇩 Flag: Chad\n🇹🇫 Flag: French Southern Territories\n🇹🇬 Flag: Togo\n🇹🇭 Flag: Thailand\n🇹🇯 Flag: Tajikistan\n🇹🇰 Flag: Tokelau\n🇹🇱 Flag: Timor-Leste\n🇹🇲 Flag: Turkmenistan\n🇹🇳 Flag: Tunisia\n🇹🇴 Flag: Tonga\n🇹🇷 Flag: Turkey\n🇹🇹 Flag: Trinidad &amp; Tobago\n🇹🇻 Flag: Tuvalu\n🇹🇼 Flag: Taiwan\n🇹🇿 Flag: Tanzania\n🇺🇦 Flag: Ukraine\n🇺🇬 Flag: Uganda\n🇺🇲 Flag: U.S. Outlying Islands\n🇺🇳 Flag: United Nations\n🇺🇸 Flag: United States\n🇺🇾 Flag: Uruguay\n🇺🇿 Flag: Uzbekistan\n🇻🇦 Flag: Vatican City\n🇻🇨 Flag: St. Vincent &amp; Grenadines\n🇻🇪 Flag: Venezuela\n🇻🇬 Flag: British Virgin Islands\n🇻🇮 Flag: U.S. Virgin Islands\n🇻🇳 Flag: Vietnam\n🇻🇺 Flag: Vanuatu\n🇼🇫 Flag: Wallis &amp; Futuna\n🇼🇸 Flag: Samoa\n🇽🇰 Flag: Kosovo\n🇾🇪 Flag: Yemen\n🇾🇹 Flag: Mayotte\n🇿🇦 Flag: South Africa\n🇿🇲 Flag: Zambia\n🇿🇼 Flag: Zimbabwe\n🏴󠁧󠁢󠁥󠁮󠁧󠁿 Flag: England\n🏴󠁧󠁢󠁳󠁣󠁴󠁿 Flag: Scotland\n🏴󠁧󠁢󠁷󠁬󠁳󠁿 Flag: Wales\n  space\n! exclamation mark\n\" quotation mark\n$ dollar sign\n% percent sign\n& ampersand\n' apostrophe\n( left parenthesis\n) right parenthesis\n* asterisk\n+ plus sign\n, comma\n- hyphen-minus\n. full stop\n/ solidus\n0 digit zero\n1 digit one\n2 digit two\n3 digit three\n4 digit four\n5 digit five\n6 digit six\n7 digit seven\n8 digit eight\n9 digit nine\n: colon\n; semicolon\n< less-than sign\n= equals sign\n> greater-than sign\n? question mark\n@ commercial at\nA latin capital letter a\nB latin capital letter b\nC latin capital letter c\nD latin capital letter d\nE latin capital letter e\nF latin capital letter f\nG latin capital letter g\nH latin capital letter h\nI latin capital letter i\nJ latin capital letter j\nK latin capital letter k\nL latin capital letter l\nM latin capital letter m\nN latin capital letter n\nO latin capital letter o\nP latin capital letter p\nQ latin capital letter q\nR latin capital letter r\nS latin capital letter s\nT latin capital letter t\nU latin capital letter u\nV latin capital letter v\nW latin capital letter w\nX latin capital letter x\nY latin capital letter y\nZ latin capital letter z\n[ left square bracket\n\\ reverse solidus\n] right square bracket\n^ circumflex accent\n_ low line\n` grave accent\na latin small letter a\nb latin small letter b\nc latin small letter c\nd latin small letter d\ne latin small letter e\nf latin small letter f\ng latin small letter g\nh latin small letter h\ni latin small letter i\nj latin small letter j\nk latin small letter k\nl latin small letter l\nm latin small letter m\nn latin small letter n\no latin small letter o\np latin small letter p\nq latin small letter q\nr latin small letter r\ns latin small letter s\nt latin small letter t\nu latin small letter u\nv latin small letter v\nw latin small letter w\nx latin small letter x\ny latin small letter y\nz latin small letter z\n{ left curly bracket\n| vertical line\n} right curly bracket\n~ tilde\n  no-break space\n¡ inverted exclamation mark\n¢ cent sign\n£ pound sign\n¤ currency sign\n¥ yen sign\n¦ broken bar\n§ section sign\n¨ diaeresis\n© copyright sign\nª feminine ordinal indicator\n« left-pointing double angle quotation mark\n¬ not sign\n® registered sign\n¯ macron\n° degree sign\n± plus-minus sign\n² superscript two\n³ superscript three\n´ acute accent\nµ micro sign\n¶ pilcrow sign\n· middle dot\n¸ cedilla\n¹ superscript one\nº masculine ordinal indicator\n» right-pointing double angle quotation mark\n¼ vulgar fraction one quarter\n½ vulgar fraction one half\n¾ vulgar fraction three quarters\n¿ inverted question mark\nÀ latin capital letter a with grave\nÁ latin capital letter a with acute\nÂ latin capital letter a with circumflex\nÃ latin capital letter a with tilde\nÄ latin capital letter a with diaeresis\nÅ latin capital letter a with ring above\nÆ latin capital letter ae\nÇ latin capital letter c with cedilla\nÈ latin capital letter e with grave\nÉ latin capital letter e with acute\nÊ latin capital letter e with circumflex\nË latin capital letter e with diaeresis\nÌ latin capital letter i with grave\nÍ latin capital letter i with acute\nÎ latin capital letter i with circumflex\nÏ latin capital letter i with diaeresis\nÐ latin capital letter eth\nÑ latin capital letter n with tilde\nÒ latin capital letter o with grave\nÓ latin capital letter o with acute\nÔ latin capital letter o with circumflex\nÕ latin capital letter o with tilde\nÖ latin capital letter o with diaeresis\n× multiplication sign\nØ latin capital letter o with stroke\nÙ latin capital letter u with grave\nÚ latin capital letter u with acute\nÛ latin capital letter u with circumflex\nÜ latin capital letter u with diaeresis\nÝ latin capital letter y with acute\nÞ latin capital letter thorn\nß latin small letter sharp s\nà latin small letter a with grave\ná latin small letter a with acute\nâ latin small letter a with circumflex\nã latin small letter a with tilde\nä latin small letter a with diaeresis\nå latin small letter a with ring above\næ latin small letter ae\nç latin small letter c with cedilla\nè latin small letter e with grave\né latin small letter e with acute\nê latin small letter e with circumflex\në latin small letter e with diaeresis\nì latin small letter i with grave\ní latin small letter i with acute\nî latin small letter i with circumflex\nï latin small letter i with diaeresis\nð latin small letter eth\nñ latin small letter n with tilde\nò latin small letter o with grave\nó latin small letter o with acute\nô latin small letter o with circumflex\nõ latin small letter o with tilde\nö latin small letter o with diaeresis\n÷ division sign\nø latin small letter o with stroke\nù latin small letter u with grave\nú latin small letter u with acute\nû latin small letter u with circumflex\nü latin small letter u with diaeresis\ný latin small letter y with acute\nþ latin small letter thorn\nÿ latin small letter y with diaeresis\nĀ latin capital letter a with macron\nā latin small letter a with macron\nĂ latin capital letter a with breve\nă latin small letter a with breve\nĄ latin capital letter a with ogonek\ną latin small letter a with ogonek\nĆ latin capital letter c with acute\nć latin small letter c with acute\nĈ latin capital letter c with circumflex\nĉ latin small letter c with circumflex\nĊ latin capital letter c with dot above\nċ latin small letter c with dot above\nČ latin capital letter c with caron\nč latin small letter c with caron\nĎ latin capital letter d with caron\nď latin small letter d with caron\nĐ latin capital letter d with stroke\nđ latin small letter d with stroke\nĒ latin capital letter e with macron\nē latin small letter e with macron\nĔ latin capital letter e with breve\nĕ latin small letter e with breve\nĖ latin capital letter e with dot above\nė latin small letter e with dot above\nĘ latin capital letter e with ogonek\nę latin small letter e with ogonek\nĚ latin capital letter e with caron\ně latin small letter e with caron\nĜ latin capital letter g with circumflex\nĝ latin small letter g with circumflex\nĞ latin capital letter g with breve\nğ latin small letter g with breve\nĠ latin capital letter g with dot above\nġ latin small letter g with dot above\nĢ latin capital letter g with cedilla\nģ latin small letter g with cedilla\nĤ latin capital letter h with circumflex\nĥ latin small letter h with circumflex\nĦ latin capital letter h with stroke\nħ latin small letter h with stroke\nĨ latin capital letter i with tilde\nĩ latin small letter i with tilde\nĪ latin capital letter i with macron\nī latin small letter i with macron\nĬ latin capital letter i with breve\nĭ latin small letter i with breve\nĮ latin capital letter i with ogonek\nį latin small letter i with ogonek\nİ latin capital letter i with dot above\nı latin small letter dotless i\nĲ latin capital ligature ij\nĳ latin small ligature ij\nĴ latin capital letter j with circumflex\nĵ latin small letter j with circumflex\nĶ latin capital letter k with cedilla\nķ latin small letter k with cedilla\nĸ latin small letter kra\nĹ latin capital letter l with acute\nĺ latin small letter l with acute\nĻ latin capital letter l with cedilla\nļ latin small letter l with cedilla\nĽ latin capital letter l with caron\nľ latin small letter l with caron\nĿ latin capital letter l with middle dot\nŀ latin small letter l with middle dot\nŁ latin capital letter l with stroke\nł latin small letter l with stroke\nŃ latin capital letter n with acute\nń latin small letter n with acute\nŅ latin capital letter n with cedilla\nņ latin small letter n with cedilla\nŇ latin capital letter n with caron\nň latin small letter n with caron\nŉ latin small letter n preceded by apostrophe\nŊ latin capital letter eng\nŋ latin small letter eng\nŌ latin capital letter o with macron\nō latin small letter o with macron\nŎ latin capital letter o with breve\nŏ latin small letter o with breve\nŐ latin capital letter o with double acute\nő latin small letter o with double acute\nŒ latin capital ligature oe\nœ latin small ligature oe\nŔ latin capital letter r with acute\nŕ latin small letter r with acute\nŖ latin capital letter r with cedilla\nŗ latin small letter r with cedilla\nŘ latin capital letter r with caron\nř latin small letter r with caron\nŚ latin capital letter s with acute\nś latin small letter s with acute\nŜ latin capital letter s with circumflex\nŝ latin small letter s with circumflex\nŞ latin capital letter s with cedilla\nş latin small letter s with cedilla\nŠ latin capital letter s with caron\nš latin small letter s with caron\nŢ latin capital letter t with cedilla\nţ latin small letter t with cedilla\nŤ latin capital letter t with caron\nť latin small letter t with caron\nŦ latin capital letter t with stroke\nŧ latin small letter t with stroke\nŨ latin capital letter u with tilde\nũ latin small letter u with tilde\nŪ latin capital letter u with macron\nū latin small letter u with macron\nŬ latin capital letter u with breve\nŭ latin small letter u with breve\nŮ latin capital letter u with ring above\nů latin small letter u with ring above\nŰ latin capital letter u with double acute\nű latin small letter u with double acute\nŲ latin capital letter u with ogonek\nų latin small letter u with ogonek\nŴ latin capital letter w with circumflex\nŵ latin small letter w with circumflex\nŶ latin capital letter y with circumflex\nŷ latin small letter y with circumflex\nŸ latin capital letter y with diaeresis\nŹ latin capital letter z with acute\nź latin small letter z with acute\nŻ latin capital letter z with dot above\nż latin small letter z with dot above\nŽ latin capital letter z with caron\nž latin small letter z with caron\nſ latin small letter long s\nƀ latin small letter b with stroke\nƁ latin capital letter b with hook\nƂ latin capital letter b with topbar\nƃ latin small letter b with topbar\nƄ latin capital letter tone six\nƅ latin small letter tone six\nƆ latin capital letter open o\nƇ latin capital letter c with hook\nƈ latin small letter c with hook\nƉ latin capital letter african d\nƊ latin capital letter d with hook\nƋ latin capital letter d with topbar\nƌ latin small letter d with topbar\nƍ latin small letter turned delta\nƎ latin capital letter reversed e\nƏ latin capital letter schwa\nƐ latin capital letter open e\nƑ latin capital letter f with hook\nƒ latin small letter f with hook\nƓ latin capital letter g with hook\nƔ latin capital letter gamma\nƕ latin small letter hv\nƖ latin capital letter iota\nƗ latin capital letter i with stroke\nƘ latin capital letter k with hook\nƙ latin small letter k with hook\nƚ latin small letter l with bar\nƛ latin small letter lambda with stroke\nƜ latin capital letter turned m\nƝ latin capital letter n with left hook\nƞ latin small letter n with long right leg\nƟ latin capital letter o with middle tilde\nƠ latin capital letter o with horn\nơ latin small letter o with horn\nƢ latin capital letter oi\nƣ latin small letter oi\nƤ latin capital letter p with hook\nƥ latin small letter p with hook\nƦ latin letter yr\nƧ latin capital letter tone two\nƨ latin small letter tone two\nƩ latin capital letter esh\nƪ latin letter reversed esh loop\nƫ latin small letter t with palatal hook\nƬ latin capital letter t with hook\nƭ latin small letter t with hook\nƮ latin capital letter t with retroflex hook\nƯ latin capital letter u with horn\nư latin small letter u with horn\nƱ latin capital letter upsilon\nƲ latin capital letter v with hook\nƳ latin capital letter y with hook\nƴ latin small letter y with hook\nƵ latin capital letter z with stroke\nƶ latin small letter z with stroke\nƷ latin capital letter ezh\nƸ latin capital letter ezh reversed\nƹ latin small letter ezh reversed\nƺ latin small letter ezh with tail\nƻ latin letter two with stroke\nƼ latin capital letter tone five\nƽ latin small letter tone five\nƾ latin letter inverted glottal stop with stroke\nƿ latin letter wynn\nǀ latin letter dental click\nǁ latin letter lateral click\nǂ latin letter alveolar click\nǃ latin letter retroflex click\nǄ latin capital letter dz with caron\nǅ latin capital letter d with small letter z with caron\nǆ latin small letter dz with caron\nǇ latin capital letter lj\nǈ latin capital letter l with small letter j\nǉ latin small letter lj\nǊ latin capital letter nj\nǋ latin capital letter n with small letter j\nǌ latin small letter nj\nǍ latin capital letter a with caron\nǎ latin small letter a with caron\nǏ latin capital letter i with caron\nǐ latin small letter i with caron\nǑ latin capital letter o with caron\nǒ latin small letter o with caron\nǓ latin capital letter u with caron\nǔ latin small letter u with caron\nǕ latin capital letter u with diaeresis and macron\nǖ latin small letter u with diaeresis and macron\nǗ latin capital letter u with diaeresis and acute\nǘ latin small letter u with diaeresis and acute\nǙ latin capital letter u with diaeresis and caron\nǚ latin small letter u with diaeresis and caron\nǛ latin capital letter u with diaeresis and grave\nǜ latin small letter u with diaeresis and grave\nǝ latin small letter turned e\nǞ latin capital letter a with diaeresis and macron\nǟ latin small letter a with diaeresis and macron\nǠ latin capital letter a with dot above and macron\nǡ latin small letter a with dot above and macron\nǢ latin capital letter ae with macron\nǣ latin small letter ae with macron\nǤ latin capital letter g with stroke\nǥ latin small letter g with stroke\nǦ latin capital letter g with caron\nǧ latin small letter g with caron\nǨ latin capital letter k with caron\nǩ latin small letter k with caron\nǪ latin capital letter o with ogonek\nǫ latin small letter o with ogonek\nǬ latin capital letter o with ogonek and macron\nǭ latin small letter o with ogonek and macron\nǮ latin capital letter ezh with caron\nǯ latin small letter ezh with caron\nǰ latin small letter j with caron\nǱ latin capital letter dz\nǲ latin capital letter d with small letter z\nǳ latin small letter dz\nǴ latin capital letter g with acute\nǵ latin small letter g with acute\nǶ latin capital letter hwair\nǷ latin capital letter wynn\nǸ latin capital letter n with grave\nǹ latin small letter n with grave\nǺ latin capital letter a with ring above and acute\nǻ latin small letter a with ring above and acute\nǼ latin capital letter ae with acute\nǽ latin small letter ae with acute\nǾ latin capital letter o with stroke and acute\nǿ latin small letter o with stroke and acute\nȀ latin capital letter a with double grave\nȁ latin small letter a with double grave\nȂ latin capital letter a with inverted breve\nȃ latin small letter a with inverted breve\nȄ latin capital letter e with double grave\nȅ latin small letter e with double grave\nȆ latin capital letter e with inverted breve\nȇ latin small letter e with inverted breve\nȈ latin capital letter i with double grave\nȉ latin small letter i with double grave\nȊ latin capital letter i with inverted breve\nȋ latin small letter i with inverted breve\nȌ latin capital letter o with double grave\nȍ latin small letter o with double grave\nȎ latin capital letter o with inverted breve\nȏ latin small letter o with inverted breve\nȐ latin capital letter r with double grave\nȑ latin small letter r with double grave\nȒ latin capital letter r with inverted breve\nȓ latin small letter r with inverted breve\nȔ latin capital letter u with double grave\nȕ latin small letter u with double grave\nȖ latin capital letter u with inverted breve\nȗ latin small letter u with inverted breve\nȘ latin capital letter s with comma below\nș latin small letter s with comma below\nȚ latin capital letter t with comma below\nț latin small letter t with comma below\nȜ latin capital letter yogh\nȝ latin small letter yogh\nȞ latin capital letter h with caron\nȟ latin small letter h with caron\nȠ latin capital letter n with long right leg\nȡ latin small letter d with curl\nȢ latin capital letter ou\nȣ latin small letter ou\nȤ latin capital letter z with hook\nȥ latin small letter z with hook\nȦ latin capital letter a with dot above\nȧ latin small letter a with dot above\nȨ latin capital letter e with cedilla\nȩ latin small letter e with cedilla\nȪ latin capital letter o with diaeresis and macron\nȫ latin small letter o with diaeresis and macron\nȬ latin capital letter o with tilde and macron\nȭ latin small letter o with tilde and macron\nȮ latin capital letter o with dot above\nȯ latin small letter o with dot above\nȰ latin capital letter o with dot above and macron\nȱ latin small letter o with dot above and macron\nȲ latin capital letter y with macron\nȳ latin small letter y with macron\nȴ latin small letter l with curl\nȵ latin small letter n with curl\nȶ latin small letter t with curl\nȷ latin small letter dotless j\nȸ latin small letter db digraph\nȹ latin small letter qp digraph\nȺ latin capital letter a with stroke\nȻ latin capital letter c with stroke\nȼ latin small letter c with stroke\nȽ latin capital letter l with bar\nȾ latin capital letter t with diagonal stroke\nȿ latin small letter s with swash tail\nɀ latin small letter z with swash tail\nɁ latin capital letter glottal stop\nɂ latin small letter glottal stop\nɃ latin capital letter b with stroke\nɄ latin capital letter u bar\nɅ latin capital letter turned v\nɆ latin capital letter e with stroke\nɇ latin small letter e with stroke\nɈ latin capital letter j with stroke\nɉ latin small letter j with stroke\nɊ latin capital letter small q with hook tail\nɋ latin small letter q with hook tail\nɌ latin capital letter r with stroke\nɍ latin small letter r with stroke\nɎ latin capital letter y with stroke\nɏ latin small letter y with stroke\nɐ latin small letter turned a\nɑ latin small letter alpha\nɒ latin small letter turned alpha\nɓ latin small letter b with hook\nɔ latin small letter open o\nɕ latin small letter c with curl\nɖ latin small letter d with tail\nɗ latin small letter d with hook\nɘ latin small letter reversed e\nə latin small letter schwa\nɚ latin small letter schwa with hook\nɛ latin small letter open e\nɜ latin small letter reversed open e\nɝ latin small letter reversed open e with hook\nɞ latin small letter closed reversed open e\nɟ latin small letter dotless j with stroke\nɠ latin small letter g with hook\nɡ latin small letter script g\nɢ latin letter small capital g\nɣ latin small letter gamma\nɤ latin small letter rams horn\nɥ latin small letter turned h\nɦ latin small letter h with hook\nɧ latin small letter heng with hook\nɨ latin small letter i with stroke\nɩ latin small letter iota\nɪ latin letter small capital i\nɫ latin small letter l with middle tilde\nɬ latin small letter l with belt\nɭ latin small letter l with retroflex hook\nɮ latin small letter lezh\nɯ latin small letter turned m\nɰ latin small letter turned m with long leg\nɱ latin small letter m with hook\nɲ latin small letter n with left hook\nɳ latin small letter n with retroflex hook\nɴ latin letter small capital n\nɵ latin small letter barred o\nɶ latin letter small capital oe\nɷ latin small letter closed omega\nɸ latin small letter phi\nɹ latin small letter turned r\nɺ latin small letter turned r with long leg\nɻ latin small letter turned r with hook\nɼ latin small letter r with long leg\nɽ latin small letter r with tail\nɾ latin small letter r with fishhook\nɿ latin small letter reversed r with fishhook\nʀ latin letter small capital r\nʁ latin letter small capital inverted r\nʂ latin small letter s with hook\nʃ latin small letter esh\nʄ latin small letter dotless j with stroke and hook\nʅ latin small letter squat reversed esh\nʆ latin small letter esh with curl\nʇ latin small letter turned t\nʈ latin small letter t with retroflex hook\nʉ latin small letter u bar\nʊ latin small letter upsilon\nʋ latin small letter v with hook\nʌ latin small letter turned v\nʍ latin small letter turned w\nʎ latin small letter turned y\nʏ latin letter small capital y\nʐ latin small letter z with retroflex hook\nʑ latin small letter z with curl\nʒ latin small letter ezh\nʓ latin small letter ezh with curl\nʔ latin letter glottal stop\nʕ latin letter pharyngeal voiced fricative\nʖ latin letter inverted glottal stop\nʗ latin letter stretched c\nʘ latin letter bilabial click\nʙ latin letter small capital b\nʚ latin small letter closed open e\nʛ latin letter small capital g with hook\nʜ latin letter small capital h\nʝ latin small letter j with crossed-tail\nʞ latin small letter turned k\nʟ latin letter small capital l\nʠ latin small letter q with hook\nʡ latin letter glottal stop with stroke\nʢ latin letter reversed glottal stop with stroke\nʣ latin small letter dz digraph\nʤ latin small letter dezh digraph\nʥ latin small letter dz digraph with curl\nʦ latin small letter ts digraph\nʧ latin small letter tesh digraph\nʨ latin small letter tc digraph with curl\nʩ latin small letter feng digraph\nʪ latin small letter ls digraph\nʫ latin small letter lz digraph\nʬ latin letter bilabial percussive\nʭ latin letter bidental percussive\nʮ latin small letter turned h with fishhook\nʯ latin small letter turned h with fishhook and tail\nʰ modifier letter small h\nʱ modifier letter small h with hook\nʲ modifier letter small j\nʳ modifier letter small r\nʴ modifier letter small turned r\nʵ modifier letter small turned r with hook\nʶ modifier letter small capital inverted r\nʷ modifier letter small w\nʸ modifier letter small y\nʹ modifier letter prime\nʺ modifier letter double prime\nʻ modifier letter turned comma\nʼ modifier letter apostrophe\nʽ modifier letter reversed comma\nʾ modifier letter right half ring\nʿ modifier letter left half ring\nˀ modifier letter glottal stop\nˁ modifier letter reversed glottal stop\n˂ modifier letter left arrowhead\n˃ modifier letter right arrowhead\n˄ modifier letter up arrowhead\n˅ modifier letter down arrowhead\nˆ modifier letter circumflex accent\nˇ caron\nˈ modifier letter vertical line\nˉ modifier letter macron\nˊ modifier letter acute accent\nˋ modifier letter grave accent\nˌ modifier letter low vertical line\nˍ modifier letter low macron\nˎ modifier letter low grave accent\nˏ modifier letter low acute accent\nː modifier letter triangular colon\nˑ modifier letter half triangular colon\n˒ modifier letter centred right half ring\n˓ modifier letter centred left half ring\n˔ modifier letter up tack\n˕ modifier letter down tack\n˖ modifier letter plus sign\n˗ modifier letter minus sign\n˘ breve\n˙ dot above\n˚ ring above\n˛ ogonek\n˜ small tilde\n˝ double acute accent\n˞ modifier letter rhotic hook\n˟ modifier letter cross accent\nˠ modifier letter small gamma\nˡ modifier letter small l\nˢ modifier letter small s\nˣ modifier letter small x\nˤ modifier letter small reversed glottal stop\n˥ modifier letter extra-high tone bar\n˦ modifier letter high tone bar\n˧ modifier letter mid tone bar\n˨ modifier letter low tone bar\n˩ modifier letter extra-low tone bar\n˪ modifier letter yin departing tone mark\n˫ modifier letter yang departing tone mark\nˬ modifier letter voicing\n˭ modifier letter unaspirated\nˮ modifier letter double apostrophe\n˯ modifier letter low down arrowhead\n˰ modifier letter low up arrowhead\n˱ modifier letter low left arrowhead\n˲ modifier letter low right arrowhead\n˳ modifier letter low ring\n˴ modifier letter middle grave accent\n˵ modifier letter middle double grave accent\n˶ modifier letter middle double acute accent\n˷ modifier letter low tilde\n˸ modifier letter raised colon\n˹ modifier letter begin high tone\n˺ modifier letter end high tone\n˻ modifier letter begin low tone\n˼ modifier letter end low tone\n˽ modifier letter shelf\n˾ modifier letter open shelf\n˿ modifier letter low left arrow\nͰ greek capital letter heta\nͱ greek small letter heta\nͲ greek capital letter archaic sampi\nͳ greek small letter archaic sampi\nʹ greek numeral sign\n͵ greek lower numeral sign\nͶ greek capital letter pamphylian digamma\nͷ greek small letter pamphylian digamma\nͺ greek ypogegrammeni\nͻ greek small reversed lunate sigma symbol\nͼ greek small dotted lunate sigma symbol\nͽ greek small reversed dotted lunate sigma symbol\n; greek question mark\nͿ greek capital letter yot\n΄ greek tonos\n΅ greek dialytika tonos\nΆ greek capital letter alpha with tonos\n· greek ano teleia\nΈ greek capital letter epsilon with tonos\nΉ greek capital letter eta with tonos\nΊ greek capital letter iota with tonos\nΌ greek capital letter omicron with tonos\nΎ greek capital letter upsilon with tonos\nΏ greek capital letter omega with tonos\nΐ greek small letter iota with dialytika and tonos\nΑ greek capital letter alpha\nΒ greek capital letter beta\nΓ greek capital letter gamma\nΔ greek capital letter delta\nΕ greek capital letter epsilon\nΖ greek capital letter zeta\nΗ greek capital letter eta\nΘ greek capital letter theta\nΙ greek capital letter iota\nΚ greek capital letter kappa\nΛ greek capital letter lambda\nΜ greek capital letter mu\nΝ greek capital letter nu\nΞ greek capital letter xi\nΟ greek capital letter omicron\nΠ greek capital letter pi\nΡ greek capital letter rho\nΣ greek capital letter sigma\nΤ greek capital letter tau\nΥ greek capital letter upsilon\nΦ greek capital letter phi\nΧ greek capital letter chi\nΨ greek capital letter psi\nΩ greek capital letter omega\nΪ greek capital letter iota with dialytika\nΫ greek capital letter upsilon with dialytika\nά greek small letter alpha with tonos\nέ greek small letter epsilon with tonos\nή greek small letter eta with tonos\nί greek small letter iota with tonos\nΰ greek small letter upsilon with dialytika and tonos\nα greek small letter alpha\nβ greek small letter beta\nγ greek small letter gamma\nδ greek small letter delta\nε greek small letter epsilon\nζ greek small letter zeta\nη greek small letter eta\nθ greek small letter theta\nι greek small letter iota\nκ greek small letter kappa\nλ greek small letter lambda\nμ greek small letter mu\nν greek small letter nu\nξ greek small letter xi\nο greek small letter omicron\nπ greek small letter pi\nρ greek small letter rho\nς greek small letter final sigma\nσ greek small letter sigma\nτ greek small letter tau\nυ greek small letter upsilon\nφ greek small letter phi\nχ greek small letter chi\nψ greek small letter psi\nω greek small letter omega\nϊ greek small letter iota with dialytika\nϋ greek small letter upsilon with dialytika\nό greek small letter omicron with tonos\nύ greek small letter upsilon with tonos\nώ greek small letter omega with tonos\nϏ greek capital kai symbol\nϐ greek beta symbol\nϑ greek theta symbol\nϒ greek upsilon with hook symbol\nϓ greek upsilon with acute and hook symbol\nϔ greek upsilon with diaeresis and hook symbol\nϕ greek phi symbol\nϖ greek pi symbol\nϗ greek kai symbol\nϘ greek letter archaic koppa\nϙ greek small letter archaic koppa\nϚ greek letter stigma\nϛ greek small letter stigma\nϜ greek letter digamma\nϝ greek small letter digamma\nϞ greek letter koppa\nϟ greek small letter koppa\nϠ greek letter sampi\nϡ greek small letter sampi\nϢ coptic capital letter shei\nϣ coptic small letter shei\nϤ coptic capital letter fei\nϥ coptic small letter fei\nϦ coptic capital letter khei\nϧ coptic small letter khei\nϨ coptic capital letter hori\nϩ coptic small letter hori\nϪ coptic capital letter gangia\nϫ coptic small letter gangia\nϬ coptic capital letter shima\nϭ coptic small letter shima\nϮ coptic capital letter dei\nϯ coptic small letter dei\nϰ greek kappa symbol\nϱ greek rho symbol\nϲ greek lunate sigma symbol\nϳ greek letter yot\nϴ greek capital theta symbol\nϵ greek lunate epsilon symbol\n϶ greek reversed lunate epsilon symbol\nϷ greek capital letter sho\nϸ greek small letter sho\nϹ greek capital lunate sigma symbol\nϺ greek capital letter san\nϻ greek small letter san\nϼ greek rho with stroke symbol\nϽ greek capital reversed lunate sigma symbol\nϾ greek capital dotted lunate sigma symbol\nϿ greek capital reversed dotted lunate sigma symbol\nЀ cyrillic capital letter ie with grave\nЁ cyrillic capital letter io\nЂ cyrillic capital letter dje\nЃ cyrillic capital letter gje\nЄ cyrillic capital letter ukrainian ie\nЅ cyrillic capital letter dze\nІ cyrillic capital letter byelorussian-ukrainian i\nЇ cyrillic capital letter yi\nЈ cyrillic capital letter je\nЉ cyrillic capital letter lje\nЊ cyrillic capital letter nje\nЋ cyrillic capital letter tshe\nЌ cyrillic capital letter kje\nЍ cyrillic capital letter i with grave\nЎ cyrillic capital letter short u\nЏ cyrillic capital letter dzhe\nА cyrillic capital letter a\nБ cyrillic capital letter be\nВ cyrillic capital letter ve\nГ cyrillic capital letter ghe\nД cyrillic capital letter de\nЕ cyrillic capital letter ie\nЖ cyrillic capital letter zhe\nЗ cyrillic capital letter ze\nИ cyrillic capital letter i\nЙ cyrillic capital letter short i\nК cyrillic capital letter ka\nЛ cyrillic capital letter el\nМ cyrillic capital letter em\nН cyrillic capital letter en\nО cyrillic capital letter o\nП cyrillic capital letter pe\nР cyrillic capital letter er\nС cyrillic capital letter es\nТ cyrillic capital letter te\nУ cyrillic capital letter u\nФ cyrillic capital letter ef\nХ cyrillic capital letter ha\nЦ cyrillic capital letter tse\nЧ cyrillic capital letter che\nШ cyrillic capital letter sha\nЩ cyrillic capital letter shcha\nЪ cyrillic capital letter hard sign\nЫ cyrillic capital letter yeru\nЬ cyrillic capital letter soft sign\nЭ cyrillic capital letter e\nЮ cyrillic capital letter yu\nЯ cyrillic capital letter ya\nа cyrillic small letter a\nб cyrillic small letter be\nв cyrillic small letter ve\nг cyrillic small letter ghe\nд cyrillic small letter de\nе cyrillic small letter ie\nж cyrillic small letter zhe\nз cyrillic small letter ze\nи cyrillic small letter i\nй cyrillic small letter short i\nк cyrillic small letter ka\nл cyrillic small letter el\nм cyrillic small letter em\nн cyrillic small letter en\nо cyrillic small letter o\nп cyrillic small letter pe\nр cyrillic small letter er\nс cyrillic small letter es\nт cyrillic small letter te\nу cyrillic small letter u\nф cyrillic small letter ef\nх cyrillic small letter ha\nц cyrillic small letter tse\nч cyrillic small letter che\nш cyrillic small letter sha\nщ cyrillic small letter shcha\nъ cyrillic small letter hard sign\nы cyrillic small letter yeru\nь cyrillic small letter soft sign\nэ cyrillic small letter e\nю cyrillic small letter yu\nя cyrillic small letter ya\nѐ cyrillic small letter ie with grave\nё cyrillic small letter io\nђ cyrillic small letter dje\nѓ cyrillic small letter gje\nє cyrillic small letter ukrainian ie\nѕ cyrillic small letter dze\nі cyrillic small letter byelorussian-ukrainian i\nї cyrillic small letter yi\nј cyrillic small letter je\nљ cyrillic small letter lje\nњ cyrillic small letter nje\nћ cyrillic small letter tshe\nќ cyrillic small letter kje\nѝ cyrillic small letter i with grave\nў cyrillic small letter short u\nџ cyrillic small letter dzhe\nѠ cyrillic capital letter omega\nѡ cyrillic small letter omega\nѢ cyrillic capital letter yat\nѣ cyrillic small letter yat\nѤ cyrillic capital letter iotified e\nѥ cyrillic small letter iotified e\nѦ cyrillic capital letter little yus\nѧ cyrillic small letter little yus\nѨ cyrillic capital letter iotified little yus\nѩ cyrillic small letter iotified little yus\nѪ cyrillic capital letter big yus\nѫ cyrillic small letter big yus\nѬ cyrillic capital letter iotified big yus\nѭ cyrillic small letter iotified big yus\nѮ cyrillic capital letter ksi\nѯ cyrillic small letter ksi\nѰ cyrillic capital letter psi\nѱ cyrillic small letter psi\nѲ cyrillic capital letter fita\nѳ cyrillic small letter fita\nѴ cyrillic capital letter izhitsa\nѵ cyrillic small letter izhitsa\nѶ cyrillic capital letter izhitsa with double grave accent\nѷ cyrillic small letter izhitsa with double grave accent\nѸ cyrillic capital letter uk\nѹ cyrillic small letter uk\nѺ cyrillic capital letter round omega\nѻ cyrillic small letter round omega\nѼ cyrillic capital letter omega with titlo\nѽ cyrillic small letter omega with titlo\nѾ cyrillic capital letter ot\nѿ cyrillic small letter ot\nҀ cyrillic capital letter koppa\nҁ cyrillic small letter koppa\n҂ cyrillic thousands sign\nҊ cyrillic capital letter short i with tail\nҋ cyrillic small letter short i with tail\nҌ cyrillic capital letter semisoft sign\nҍ cyrillic small letter semisoft sign\nҎ cyrillic capital letter er with tick\nҏ cyrillic small letter er with tick\nҐ cyrillic capital letter ghe with upturn\nґ cyrillic small letter ghe with upturn\nҒ cyrillic capital letter ghe with stroke\nғ cyrillic small letter ghe with stroke\nҔ cyrillic capital letter ghe with middle hook\nҕ cyrillic small letter ghe with middle hook\nҖ cyrillic capital letter zhe with descender\nҗ cyrillic small letter zhe with descender\nҘ cyrillic capital letter ze with descender\nҙ cyrillic small letter ze with descender\nҚ cyrillic capital letter ka with descender\nқ cyrillic small letter ka with descender\nҜ cyrillic capital letter ka with vertical stroke\nҝ cyrillic small letter ka with vertical stroke\nҞ cyrillic capital letter ka with stroke\nҟ cyrillic small letter ka with stroke\nҠ cyrillic capital letter bashkir ka\nҡ cyrillic small letter bashkir ka\nҢ cyrillic capital letter en with descender\nң cyrillic small letter en with descender\nҤ cyrillic capital ligature en ghe\nҥ cyrillic small ligature en ghe\nҦ cyrillic capital letter pe with middle hook\nҧ cyrillic small letter pe with middle hook\nҨ cyrillic capital letter abkhasian ha\nҩ cyrillic small letter abkhasian ha\nҪ cyrillic capital letter es with descender\nҫ cyrillic small letter es with descender\nҬ cyrillic capital letter te with descender\nҭ cyrillic small letter te with descender\nҮ cyrillic capital letter straight u\nү cyrillic small letter straight u\nҰ cyrillic capital letter straight u with stroke\nұ cyrillic small letter straight u with stroke\nҲ cyrillic capital letter ha with descender\nҳ cyrillic small letter ha with descender\nҴ cyrillic capital ligature te tse\nҵ cyrillic small ligature te tse\nҶ cyrillic capital letter che with descender\nҷ cyrillic small letter che with descender\nҸ cyrillic capital letter che with vertical stroke\nҹ cyrillic small letter che with vertical stroke\nҺ cyrillic capital letter shha\nһ cyrillic small letter shha\nҼ cyrillic capital letter abkhasian che\nҽ cyrillic small letter abkhasian che\nҾ cyrillic capital letter abkhasian che with descender\nҿ cyrillic small letter abkhasian che with descender\nӀ cyrillic letter palochka\nӁ cyrillic capital letter zhe with breve\nӂ cyrillic small letter zhe with breve\nӃ cyrillic capital letter ka with hook\nӄ cyrillic small letter ka with hook\nӅ cyrillic capital letter el with tail\nӆ cyrillic small letter el with tail\nӇ cyrillic capital letter en with hook\nӈ cyrillic small letter en with hook\nӉ cyrillic capital letter en with tail\nӊ cyrillic small letter en with tail\nӋ cyrillic capital letter khakassian che\nӌ cyrillic small letter khakassian che\nӍ cyrillic capital letter em with tail\nӎ cyrillic small letter em with tail\nӏ cyrillic small letter palochka\nӐ cyrillic capital letter a with breve\nӑ cyrillic small letter a with breve\nӒ cyrillic capital letter a with diaeresis\nӓ cyrillic small letter a with diaeresis\nӔ cyrillic capital ligature a ie\nӕ cyrillic small ligature a ie\nӖ cyrillic capital letter ie with breve\nӗ cyrillic small letter ie with breve\nӘ cyrillic capital letter schwa\nә cyrillic small letter schwa\nӚ cyrillic capital letter schwa with diaeresis\nӛ cyrillic small letter schwa with diaeresis\nӜ cyrillic capital letter zhe with diaeresis\nӝ cyrillic small letter zhe with diaeresis\nӞ cyrillic capital letter ze with diaeresis\nӟ cyrillic small letter ze with diaeresis\nӠ cyrillic capital letter abkhasian dze\nӡ cyrillic small letter abkhasian dze\nӢ cyrillic capital letter i with macron\nӣ cyrillic small letter i with macron\nӤ cyrillic capital letter i with diaeresis\nӥ cyrillic small letter i with diaeresis\nӦ cyrillic capital letter o with diaeresis\nӧ cyrillic small letter o with diaeresis\nӨ cyrillic capital letter barred o\nө cyrillic small letter barred o\nӪ cyrillic capital letter barred o with diaeresis\nӫ cyrillic small letter barred o with diaeresis\nӬ cyrillic capital letter e with diaeresis\nӭ cyrillic small letter e with diaeresis\nӮ cyrillic capital letter u with macron\nӯ cyrillic small letter u with macron\nӰ cyrillic capital letter u with diaeresis\nӱ cyrillic small letter u with diaeresis\nӲ cyrillic capital letter u with double acute\nӳ cyrillic small letter u with double acute\nӴ cyrillic capital letter che with diaeresis\nӵ cyrillic small letter che with diaeresis\nӶ cyrillic capital letter ghe with descender\nӷ cyrillic small letter ghe with descender\nӸ cyrillic capital letter yeru with diaeresis\nӹ cyrillic small letter yeru with diaeresis\nӺ cyrillic capital letter ghe with stroke and hook\nӻ cyrillic small letter ghe with stroke and hook\nӼ cyrillic capital letter ha with hook\nӽ cyrillic small letter ha with hook\nӾ cyrillic capital letter ha with stroke\nӿ cyrillic small letter ha with stroke\nԀ cyrillic capital letter komi de\nԁ cyrillic small letter komi de\nԂ cyrillic capital letter komi dje\nԃ cyrillic small letter komi dje\nԄ cyrillic capital letter komi zje\nԅ cyrillic small letter komi zje\nԆ cyrillic capital letter komi dzje\nԇ cyrillic small letter komi dzje\nԈ cyrillic capital letter komi lje\nԉ cyrillic small letter komi lje\nԊ cyrillic capital letter komi nje\nԋ cyrillic small letter komi nje\nԌ cyrillic capital letter komi sje\nԍ cyrillic small letter komi sje\nԎ cyrillic capital letter komi tje\nԏ cyrillic small letter komi tje\nԐ cyrillic capital letter reversed ze\nԑ cyrillic small letter reversed ze\nԒ cyrillic capital letter el with hook\nԓ cyrillic small letter el with hook\nԔ cyrillic capital letter lha\nԕ cyrillic small letter lha\nԖ cyrillic capital letter rha\nԗ cyrillic small letter rha\nԘ cyrillic capital letter yae\nԙ cyrillic small letter yae\nԚ cyrillic capital letter qa\nԛ cyrillic small letter qa\nԜ cyrillic capital letter we\nԝ cyrillic small letter we\nԞ cyrillic capital letter aleut ka\nԟ cyrillic small letter aleut ka\nԠ cyrillic capital letter el with middle hook\nԡ cyrillic small letter el with middle hook\nԢ cyrillic capital letter en with middle hook\nԣ cyrillic small letter en with middle hook\nԤ cyrillic capital letter pe with descender\nԥ cyrillic small letter pe with descender\nԦ cyrillic capital letter shha with descender\nԧ cyrillic small letter shha with descender\nԨ cyrillic capital letter en with left hook\nԩ cyrillic small letter en with left hook\nԪ cyrillic capital letter dzzhe\nԫ cyrillic small letter dzzhe\nԬ cyrillic capital letter dche\nԭ cyrillic small letter dche\nԮ cyrillic capital letter el with descender\nԯ cyrillic small letter el with descender\nԱ armenian capital letter ayb\nԲ armenian capital letter ben\nԳ armenian capital letter gim\nԴ armenian capital letter da\nԵ armenian capital letter ech\nԶ armenian capital letter za\nԷ armenian capital letter eh\nԸ armenian capital letter et\nԹ armenian capital letter to\nԺ armenian capital letter zhe\nԻ armenian capital letter ini\nԼ armenian capital letter liwn\nԽ armenian capital letter xeh\nԾ armenian capital letter ca\nԿ armenian capital letter ken\nՀ armenian capital letter ho\nՁ armenian capital letter ja\nՂ armenian capital letter ghad\nՃ armenian capital letter cheh\nՄ armenian capital letter men\nՅ armenian capital letter yi\nՆ armenian capital letter now\nՇ armenian capital letter sha\nՈ armenian capital letter vo\nՉ armenian capital letter cha\nՊ armenian capital letter peh\nՋ armenian capital letter jheh\nՌ armenian capital letter ra\nՍ armenian capital letter seh\nՎ armenian capital letter vew\nՏ armenian capital letter tiwn\nՐ armenian capital letter reh\nՑ armenian capital letter co\nՒ armenian capital letter yiwn\nՓ armenian capital letter piwr\nՔ armenian capital letter keh\nՕ armenian capital letter oh\nՖ armenian capital letter feh\nՙ armenian modifier letter left half ring\n՚ armenian apostrophe\n՛ armenian emphasis mark\n՜ armenian exclamation mark\n՝ armenian comma\n՞ armenian question mark\n՟ armenian abbreviation mark\nա armenian small letter ayb\nբ armenian small letter ben\nգ armenian small letter gim\nդ armenian small letter da\nե armenian small letter ech\nզ armenian small letter za\nէ armenian small letter eh\nը armenian small letter et\nթ armenian small letter to\nժ armenian small letter zhe\nի armenian small letter ini\nլ armenian small letter liwn\nխ armenian small letter xeh\nծ armenian small letter ca\nկ armenian small letter ken\nհ armenian small letter ho\nձ armenian small letter ja\nղ armenian small letter ghad\nճ armenian small letter cheh\nմ armenian small letter men\nյ armenian small letter yi\nն armenian small letter now\nշ armenian small letter sha\nո armenian small letter vo\nչ armenian small letter cha\nպ armenian small letter peh\nջ armenian small letter jheh\nռ armenian small letter ra\nս armenian small letter seh\nվ armenian small letter vew\nտ armenian small letter tiwn\nր armenian small letter reh\nց armenian small letter co\nւ armenian small letter yiwn\nփ armenian small letter piwr\nք armenian small letter keh\nօ armenian small letter oh\nֆ armenian small letter feh\nև armenian small ligature ech yiwn\n։ armenian full stop\n֊ armenian hyphen\n֍ right-facing armenian eternity sign\n֎ left-facing armenian eternity sign\n֏ armenian dram sign\n־ hebrew punctuation maqaf\n׀ hebrew punctuation paseq\n׃ hebrew punctuation sof pasuq\n׆ hebrew punctuation nun hafukha\nא hebrew letter alef\nב hebrew letter bet\nג hebrew letter gimel\nד hebrew letter dalet\nה hebrew letter he\nו hebrew letter vav\nז hebrew letter zayin\nח hebrew letter het\nט hebrew letter tet\nי hebrew letter yod\nך hebrew letter final kaf\nכ hebrew letter kaf\nל hebrew letter lamed\nם hebrew letter final mem\nמ hebrew letter mem\nן hebrew letter final nun\nנ hebrew letter nun\nס hebrew letter samekh\nע hebrew letter ayin\nף hebrew letter final pe\nפ hebrew letter pe\nץ hebrew letter final tsadi\nצ hebrew letter tsadi\nק hebrew letter qof\nר hebrew letter resh\nש hebrew letter shin\nת hebrew letter tav\nװ hebrew ligature yiddish double vav\nױ hebrew ligature yiddish vav yod\nײ hebrew ligature yiddish double yod\n׳ hebrew punctuation geresh\n״ hebrew punctuation gershayim\n؆ arabic-indic cube root\n؇ arabic-indic fourth root\n؈ arabic ray\n؉ arabic-indic per mille sign\n؊ arabic-indic per ten thousand sign\n؋ afghani sign\n، arabic comma\n؍ arabic date separator\n؎ arabic poetic verse sign\n؏ arabic sign misra\n؛ arabic semicolon\n؞ arabic triple dot punctuation mark\n؟ arabic question mark\nؠ arabic letter kashmiri yeh\nء arabic letter hamza\nآ arabic letter alef with madda above\nأ arabic letter alef with hamza above\nؤ arabic letter waw with hamza above\nإ arabic letter alef with hamza below\nئ arabic letter yeh with hamza above\nا arabic letter alef\nب arabic letter beh\nة arabic letter teh marbuta\nت arabic letter teh\nث arabic letter theh\nج arabic letter jeem\nح arabic letter hah\nخ arabic letter khah\nد arabic letter dal\nذ arabic letter thal\nر arabic letter reh\nز arabic letter zain\nس arabic letter seen\nش arabic letter sheen\nص arabic letter sad\nض arabic letter dad\nط arabic letter tah\nظ arabic letter zah\nع arabic letter ain\nغ arabic letter ghain\nػ arabic letter keheh with two dots above\nؼ arabic letter keheh with three dots below\nؽ arabic letter farsi yeh with inverted v\nؾ arabic letter farsi yeh with two dots above\nؿ arabic letter farsi yeh with three dots above\nـ arabic tatweel\nف arabic letter feh\nق arabic letter qaf\nك arabic letter kaf\nل arabic letter lam\nم arabic letter meem\nن arabic letter noon\nه arabic letter heh\nو arabic letter waw\nى arabic letter alef maksura\nي arabic letter yeh\n٠ arabic-indic digit zero\n١ arabic-indic digit one\n٢ arabic-indic digit two\n٣ arabic-indic digit three\n٤ arabic-indic digit four\n٥ arabic-indic digit five\n٦ arabic-indic digit six\n٧ arabic-indic digit seven\n٨ arabic-indic digit eight\n٩ arabic-indic digit nine\n٪ arabic percent sign\n٫ arabic decimal separator\n٬ arabic thousands separator\n٭ arabic five pointed star\nٮ arabic letter dotless beh\nٯ arabic letter dotless qaf\nٱ arabic letter alef wasla\nٲ arabic letter alef with wavy hamza above\nٳ arabic letter alef with wavy hamza below\nٴ arabic letter high hamza\nٵ arabic letter high hamza alef\nٶ arabic letter high hamza waw\nٷ arabic letter u with hamza above\nٸ arabic letter high hamza yeh\nٹ arabic letter tteh\nٺ arabic letter tteheh\nٻ arabic letter beeh\nټ arabic letter teh with ring\nٽ arabic letter teh with three dots above downwards\nپ arabic letter peh\nٿ arabic letter teheh\nڀ arabic letter beheh\nځ arabic letter hah with hamza above\nڂ arabic letter hah with two dots vertical above\nڃ arabic letter nyeh\nڄ arabic letter dyeh\nڅ arabic letter hah with three dots above\nچ arabic letter tcheh\nڇ arabic letter tcheheh\nڈ arabic letter ddal\nډ arabic letter dal with ring\nڊ arabic letter dal with dot below\nڋ arabic letter dal with dot below and small tah\nڌ arabic letter dahal\nڍ arabic letter ddahal\nڎ arabic letter dul\nڏ arabic letter dal with three dots above downwards\nڐ arabic letter dal with four dots above\nڑ arabic letter rreh\nڒ arabic letter reh with small v\nړ arabic letter reh with ring\nڔ arabic letter reh with dot below\nڕ arabic letter reh with small v below\nږ arabic letter reh with dot below and dot above\nڗ arabic letter reh with two dots above\nژ arabic letter jeh\nڙ arabic letter reh with four dots above\nښ arabic letter seen with dot below and dot above\nڛ arabic letter seen with three dots below\nڜ arabic letter seen with three dots below and three dots above\nڝ arabic letter sad with two dots below\nڞ arabic letter sad with three dots above\nڟ arabic letter tah with three dots above\nڠ arabic letter ain with three dots above\nڡ arabic letter dotless feh\nڢ arabic letter feh with dot moved below\nڣ arabic letter feh with dot below\nڤ arabic letter veh\nڥ arabic letter feh with three dots below\nڦ arabic letter peheh\nڧ arabic letter qaf with dot above\nڨ arabic letter qaf with three dots above\nک arabic letter keheh\nڪ arabic letter swash kaf\nګ arabic letter kaf with ring\nڬ arabic letter kaf with dot above\nڭ arabic letter ng\nڮ arabic letter kaf with three dots below\nگ arabic letter gaf\nڰ arabic letter gaf with ring\nڱ arabic letter ngoeh\nڲ arabic letter gaf with two dots below\nڳ arabic letter gueh\nڴ arabic letter gaf with three dots above\nڵ arabic letter lam with small v\nڶ arabic letter lam with dot above\nڷ arabic letter lam with three dots above\nڸ arabic letter lam with three dots below\nڹ arabic letter noon with dot below\nں arabic letter noon ghunna\nڻ arabic letter rnoon\nڼ arabic letter noon with ring\nڽ arabic letter noon with three dots above\nھ arabic letter heh doachashmee\nڿ arabic letter tcheh with dot above\nۀ arabic letter heh with yeh above\nہ arabic letter heh goal\nۂ arabic letter heh goal with hamza above\nۃ arabic letter teh marbuta goal\nۄ arabic letter waw with ring\nۅ arabic letter kirghiz oe\nۆ arabic letter oe\nۇ arabic letter u\nۈ arabic letter yu\nۉ arabic letter kirghiz yu\nۊ arabic letter waw with two dots above\nۋ arabic letter ve\nی arabic letter farsi yeh\nۍ arabic letter yeh with tail\nێ arabic letter yeh with small v\nۏ arabic letter waw with dot above\nې arabic letter e\nۑ arabic letter yeh with three dots below\nے arabic letter yeh barree\nۓ arabic letter yeh barree with hamza above\n۔ arabic full stop\nە arabic letter ae\n۞ arabic start of rub el hizb\nۥ arabic small waw\nۦ arabic small yeh\n۩ arabic place of sajdah\nۮ arabic letter dal with inverted v\nۯ arabic letter reh with inverted v\n۰ extended arabic-indic digit zero\n۱ extended arabic-indic digit one\n۲ extended arabic-indic digit two\n۳ extended arabic-indic digit three\n۴ extended arabic-indic digit four\n۵ extended arabic-indic digit five\n۶ extended arabic-indic digit six\n۷ extended arabic-indic digit seven\n۸ extended arabic-indic digit eight\n۹ extended arabic-indic digit nine\nۺ arabic letter sheen with dot below\nۻ arabic letter dad with dot below\nۼ arabic letter ghain with dot below\n۽ arabic sign sindhi ampersand\n۾ arabic sign sindhi postposition men\nۿ arabic letter heh with inverted v\n܀ syriac end of paragraph\n܁ syriac supralinear full stop\n܂ syriac sublinear full stop\n܃ syriac supralinear colon\n܄ syriac sublinear colon\n܅ syriac horizontal colon\n܆ syriac colon skewed left\n܇ syriac colon skewed right\n܈ syriac supralinear colon skewed left\n܉ syriac sublinear colon skewed right\n܊ syriac contraction\n܋ syriac harklean obelus\n܌ syriac harklean metobelus\n܍ syriac harklean asteriscus\nܐ syriac letter alaph\nܒ syriac letter beth\nܓ syriac letter gamal\nܔ syriac letter gamal garshuni\nܕ syriac letter dalath\nܖ syriac letter dotless dalath rish\nܗ syriac letter he\nܘ syriac letter waw\nܙ syriac letter zain\nܚ syriac letter heth\nܛ syriac letter teth\nܜ syriac letter teth garshuni\nܝ syriac letter yudh\nܞ syriac letter yudh he\nܟ syriac letter kaph\nܠ syriac letter lamadh\nܡ syriac letter mim\nܢ syriac letter nun\nܣ syriac letter semkath\nܤ syriac letter final semkath\nܥ syriac letter e\nܦ syriac letter pe\nܧ syriac letter reversed pe\nܨ syriac letter sadhe\nܩ syriac letter qaph\nܪ syriac letter rish\nܫ syriac letter shin\nܬ syriac letter taw\nܭ syriac letter persian bheth\nܮ syriac letter persian ghamal\nܯ syriac letter persian dhalath\nݍ syriac letter sogdian zhain\nݎ syriac letter sogdian khaph\nݏ syriac letter sogdian fe\nݐ arabic letter beh with three dots horizontally below\nݑ arabic letter beh with dot below and three dots above\nݒ arabic letter beh with three dots pointing upwards below\nݓ arabic letter beh with three dots pointing upwards below and two dots above\nݔ arabic letter beh with two dots below and dot above\nݕ arabic letter beh with inverted small v below\nݖ arabic letter beh with small v\nݗ arabic letter hah with two dots above\nݘ arabic letter hah with three dots pointing upwards below\nݙ arabic letter dal with two dots vertically below and small tah\nݚ arabic letter dal with inverted small v below\nݛ arabic letter reh with stroke\nݜ arabic letter seen with four dots above\nݝ arabic letter ain with two dots above\nݞ arabic letter ain with three dots pointing downwards above\nݟ arabic letter ain with two dots vertically above\nݠ arabic letter feh with two dots below\nݡ arabic letter feh with three dots pointing upwards below\nݢ arabic letter keheh with dot above\nݣ arabic letter keheh with three dots above\nݤ arabic letter keheh with three dots pointing upwards below\nݥ arabic letter meem with dot above\nݦ arabic letter meem with dot below\nݧ arabic letter noon with two dots below\nݨ arabic letter noon with small tah\nݩ arabic letter noon with small v\nݪ arabic letter lam with bar\nݫ arabic letter reh with two dots vertically above\nݬ arabic letter reh with hamza above\nݭ arabic letter seen with two dots vertically above\nݮ arabic letter hah with small arabic letter tah below\nݯ arabic letter hah with small arabic letter tah and two dots\nݰ arabic letter seen with small arabic letter tah and two dots\nݱ arabic letter reh with small arabic letter tah and two dots\nݲ arabic letter hah with small arabic letter tah above\nݳ arabic letter alef with extended arabic-indic digit two above\nݴ arabic letter alef with extended arabic-indic digit three above\nݵ arabic letter farsi yeh with extended arabic-indic digit two above\nݶ arabic letter farsi yeh with extended arabic-indic digit three above\nݷ arabic letter farsi yeh with extended arabic-indic digit four below\nݸ arabic letter waw with extended arabic-indic digit two above\nݹ arabic letter waw with extended arabic-indic digit three above\nݺ arabic letter yeh barree with extended arabic-indic digit two above\nݻ arabic letter yeh barree with extended arabic-indic digit three above\nݼ arabic letter hah with extended arabic-indic digit four below\nݽ arabic letter seen with extended arabic-indic digit four above\nݾ arabic letter seen with inverted v\nݿ arabic letter kaf with two dots above\nހ thaana letter haa\nށ thaana letter shaviyani\nނ thaana letter noonu\nރ thaana letter raa\nބ thaana letter baa\nޅ thaana letter lhaviyani\nކ thaana letter kaafu\nއ thaana letter alifu\nވ thaana letter vaavu\nމ thaana letter meemu\nފ thaana letter faafu\nދ thaana letter dhaalu\nތ thaana letter thaa\nލ thaana letter laamu\nގ thaana letter gaafu\nޏ thaana letter gnaviyani\nސ thaana letter seenu\nޑ thaana letter daviyani\nޒ thaana letter zaviyani\nޓ thaana letter taviyani\nޔ thaana letter yaa\nޕ thaana letter paviyani\nޖ thaana letter javiyani\nޗ thaana letter chaviyani\nޘ thaana letter ttaa\nޙ thaana letter hhaa\nޚ thaana letter khaa\nޛ thaana letter thaalu\nޜ thaana letter zaa\nޝ thaana letter sheenu\nޞ thaana letter saadhu\nޟ thaana letter daadhu\nޠ thaana letter to\nޡ thaana letter zo\nޢ thaana letter ainu\nޣ thaana letter ghainu\nޤ thaana letter qaafu\nޥ thaana letter waavu\nޱ thaana letter naa\n߀ nko digit zero\n߁ nko digit one\n߂ nko digit two\n߃ nko digit three\n߄ nko digit four\n߅ nko digit five\n߆ nko digit six\n߇ nko digit seven\n߈ nko digit eight\n߉ nko digit nine\nߊ nko letter a\nߋ nko letter ee\nߌ nko letter i\nߍ nko letter e\nߎ nko letter u\nߏ nko letter oo\nߐ nko letter o\nߑ nko letter dagbasinna\nߒ nko letter n\nߓ nko letter ba\nߔ nko letter pa\nߕ nko letter ta\nߖ nko letter ja\nߗ nko letter cha\nߘ nko letter da\nߙ nko letter ra\nߚ nko letter rra\nߛ nko letter sa\nߜ nko letter gba\nߝ nko letter fa\nߞ nko letter ka\nߟ nko letter la\nߠ nko letter na woloso\nߡ nko letter ma\nߢ nko letter nya\nߣ nko letter na\nߤ nko letter ha\nߥ nko letter wa\nߦ nko letter ya\nߧ nko letter nya woloso\nߨ nko letter jona ja\nߩ nko letter jona cha\nߪ nko letter jona ra\nߴ nko high tone apostrophe\nߵ nko low tone apostrophe\n߶ nko symbol oo dennen\n߷ nko symbol gbakurunen\n߸ nko comma\n߹ nko exclamation mark\nߺ nko lajanyalan\nࠀ samaritan letter alaf\nࠁ samaritan letter bit\nࠂ samaritan letter gaman\nࠃ samaritan letter dalat\nࠄ samaritan letter iy\nࠅ samaritan letter baa\nࠆ samaritan letter zen\nࠇ samaritan letter it\nࠈ samaritan letter tit\nࠉ samaritan letter yut\nࠊ samaritan letter kaaf\nࠋ samaritan letter labat\nࠌ samaritan letter mim\nࠍ samaritan letter nun\nࠎ samaritan letter singaat\nࠏ samaritan letter in\nࠐ samaritan letter fi\nࠑ samaritan letter tsaadiy\nࠒ samaritan letter quf\nࠓ samaritan letter rish\nࠔ samaritan letter shan\nࠕ samaritan letter taaf\nࠚ samaritan modifier letter epenthetic yut\nࠤ samaritan modifier letter short a\nࠨ samaritan modifier letter i\n࠰ samaritan punctuation nequdaa\n࠱ samaritan punctuation afsaaq\n࠲ samaritan punctuation anged\n࠳ samaritan punctuation bau\n࠴ samaritan punctuation atmaau\n࠵ samaritan punctuation shiyyaalaa\n࠶ samaritan abbreviation mark\n࠷ samaritan punctuation melodic qitsa\n࠸ samaritan punctuation ziqaa\n࠹ samaritan punctuation qitsa\n࠺ samaritan punctuation zaef\n࠻ samaritan punctuation turu\n࠼ samaritan punctuation arkaanu\n࠽ samaritan punctuation sof mashfaat\n࠾ samaritan punctuation annaau\nࡀ mandaic letter halqa\nࡁ mandaic letter ab\nࡂ mandaic letter ag\nࡃ mandaic letter ad\nࡄ mandaic letter ah\nࡅ mandaic letter ushenna\nࡆ mandaic letter az\nࡇ mandaic letter it\nࡈ mandaic letter att\nࡉ mandaic letter aksa\nࡊ mandaic letter ak\nࡋ mandaic letter al\nࡌ mandaic letter am\nࡍ mandaic letter an\nࡎ mandaic letter as\nࡏ mandaic letter in\nࡐ mandaic letter ap\nࡑ mandaic letter asz\nࡒ mandaic letter aq\nࡓ mandaic letter ar\nࡔ mandaic letter ash\nࡕ mandaic letter at\nࡖ mandaic letter dushenna\nࡗ mandaic letter kad\nࡘ mandaic letter ain\n࡞ mandaic punctuation\nࢠ arabic letter beh with small v below\nࢡ arabic letter beh with hamza above\nࢢ arabic letter jeem with two dots above\nࢣ arabic letter tah with two dots above\nࢤ arabic letter feh with dot below and three dots above\nࢥ arabic letter qaf with dot below\nࢦ arabic letter lam with double bar\nࢧ arabic letter meem with three dots above\nࢨ arabic letter yeh with two dots below and hamza above\nࢩ arabic letter yeh with two dots below and dot above\nࢪ arabic letter reh with loop\nࢫ arabic letter waw with dot within\nࢬ arabic letter rohingya yeh\nࢭ arabic letter low alef\nࢮ arabic letter dal with three dots below\nࢯ arabic letter sad with three dots below\nࢰ arabic letter gaf with inverted stroke\nࢱ arabic letter straight waw\nࢲ arabic letter zain with inverted v above\nࢳ arabic letter ain with three dots below\nࢴ arabic letter kaf with dot below\nࢶ arabic letter beh with small meem above\nࢷ arabic letter peh with small meem above\nࢸ arabic letter teh with small teh above\nࢹ arabic letter reh with small noon above\nࢺ arabic letter yeh with two dots below and small noon above\nࢻ arabic letter african feh\nࢼ arabic letter african qaf\nࢽ arabic letter african noon\nऄ devanagari letter short a\nअ devanagari letter a\nआ devanagari letter aa\nइ devanagari letter i\nई devanagari letter ii\nउ devanagari letter u\nऊ devanagari letter uu\nऋ devanagari letter vocalic r\nऌ devanagari letter vocalic l\nऍ devanagari letter candra e\nऎ devanagari letter short e\nए devanagari letter e\nऐ devanagari letter ai\nऑ devanagari letter candra o\nऒ devanagari letter short o\nओ devanagari letter o\nऔ devanagari letter au\nक devanagari letter ka\nख devanagari letter kha\nग devanagari letter ga\nघ devanagari letter gha\nङ devanagari letter nga\nच devanagari letter ca\nछ devanagari letter cha\nज devanagari letter ja\nझ devanagari letter jha\nञ devanagari letter nya\nट devanagari letter tta\nठ devanagari letter ttha\nड devanagari letter dda\nढ devanagari letter ddha\nण devanagari letter nna\nत devanagari letter ta\nथ devanagari letter tha\nद devanagari letter da\nध devanagari letter dha\nन devanagari letter na\nऩ devanagari letter nnna\nप devanagari letter pa\nफ devanagari letter pha\nब devanagari letter ba\nभ devanagari letter bha\nम devanagari letter ma\nय devanagari letter ya\nर devanagari letter ra\nऱ devanagari letter rra\nल devanagari letter la\nळ devanagari letter lla\nऴ devanagari letter llla\nव devanagari letter va\nश devanagari letter sha\nष devanagari letter ssa\nस devanagari letter sa\nह devanagari letter ha\nऽ devanagari sign avagraha\nॐ devanagari om\nक़ devanagari letter qa\nख़ devanagari letter khha\nग़ devanagari letter ghha\nज़ devanagari letter za\nड़ devanagari letter dddha\nढ़ devanagari letter rha\nफ़ devanagari letter fa\nय़ devanagari letter yya\nॠ devanagari letter vocalic rr\nॡ devanagari letter vocalic ll\n। devanagari danda\n॥ devanagari double danda\n० devanagari digit zero\n१ devanagari digit one\n२ devanagari digit two\n३ devanagari digit three\n४ devanagari digit four\n५ devanagari digit five\n६ devanagari digit six\n७ devanagari digit seven\n८ devanagari digit eight\n९ devanagari digit nine\n॰ devanagari abbreviation sign\nॱ devanagari sign high spacing dot\nॲ devanagari letter candra a\nॳ devanagari letter oe\nॴ devanagari letter ooe\nॵ devanagari letter aw\nॶ devanagari letter ue\nॷ devanagari letter uue\nॸ devanagari letter marwari dda\nॹ devanagari letter zha\nॺ devanagari letter heavy ya\nॻ devanagari letter gga\nॼ devanagari letter jja\nॽ devanagari letter glottal stop\nॾ devanagari letter ddda\nॿ devanagari letter bba\nঀ bengali anji\nঅ bengali letter a\nআ bengali letter aa\nই bengali letter i\nঈ bengali letter ii\nউ bengali letter u\nঊ bengali letter uu\nঋ bengali letter vocalic r\nঌ bengali letter vocalic l\nএ bengali letter e\nঐ bengali letter ai\nও bengali letter o\nঔ bengali letter au\nক bengali letter ka\nখ bengali letter kha\nগ bengali letter ga\nঘ bengali letter gha\nঙ bengali letter nga\nচ bengali letter ca\nছ bengali letter cha\nজ bengali letter ja\nঝ bengali letter jha\nঞ bengali letter nya\nট bengali letter tta\nঠ bengali letter ttha\nড bengali letter dda\nঢ bengali letter ddha\nণ bengali letter nna\nত bengali letter ta\nথ bengali letter tha\nদ bengali letter da\nধ bengali letter dha\nন bengali letter na\nপ bengali letter pa\nফ bengali letter pha\nব bengali letter ba\nভ bengali letter bha\nম bengali letter ma\nয bengali letter ya\nর bengali letter ra\nল bengali letter la\nশ bengali letter sha\nষ bengali letter ssa\nস bengali letter sa\nহ bengali letter ha\nঽ bengali sign avagraha\nৎ bengali letter khanda ta\nড় bengali letter rra\nঢ় bengali letter rha\nয় bengali letter yya\nৠ bengali letter vocalic rr\nৡ bengali letter vocalic ll\n০ bengali digit zero\n১ bengali digit one\n২ bengali digit two\n৩ bengali digit three\n৪ bengali digit four\n৫ bengali digit five\n৬ bengali digit six\n৭ bengali digit seven\n৮ bengali digit eight\n৯ bengali digit nine\nৰ bengali letter ra with middle diagonal\nৱ bengali letter ra with lower diagonal\n৲ bengali rupee mark\n৳ bengali rupee sign\n৴ bengali currency numerator one\n৵ bengali currency numerator two\n৶ bengali currency numerator three\n৷ bengali currency numerator four\n৸ bengali currency numerator one less than the denominator\n৹ bengali currency denominator sixteen\n৺ bengali isshar\n৻ bengali ganda mark\nਅ gurmukhi letter a\nਆ gurmukhi letter aa\nਇ gurmukhi letter i\nਈ gurmukhi letter ii\nਉ gurmukhi letter u\nਊ gurmukhi letter uu\nਏ gurmukhi letter ee\nਐ gurmukhi letter ai\nਓ gurmukhi letter oo\nਔ gurmukhi letter au\nਕ gurmukhi letter ka\nਖ gurmukhi letter kha\nਗ gurmukhi letter ga\nਘ gurmukhi letter gha\nਙ gurmukhi letter nga\nਚ gurmukhi letter ca\nਛ gurmukhi letter cha\nਜ gurmukhi letter ja\nਝ gurmukhi letter jha\nਞ gurmukhi letter nya\nਟ gurmukhi letter tta\nਠ gurmukhi letter ttha\nਡ gurmukhi letter dda\nਢ gurmukhi letter ddha\nਣ gurmukhi letter nna\nਤ gurmukhi letter ta\nਥ gurmukhi letter tha\nਦ gurmukhi letter da\nਧ gurmukhi letter dha\nਨ gurmukhi letter na\nਪ gurmukhi letter pa\nਫ gurmukhi letter pha\nਬ gurmukhi letter ba\nਭ gurmukhi letter bha\nਮ gurmukhi letter ma\nਯ gurmukhi letter ya\nਰ gurmukhi letter ra\nਲ gurmukhi letter la\nਲ਼ gurmukhi letter lla\nਵ gurmukhi letter va\nਸ਼ gurmukhi letter sha\nਸ gurmukhi letter sa\nਹ gurmukhi letter ha\nਖ਼ gurmukhi letter khha\nਗ਼ gurmukhi letter ghha\nਜ਼ gurmukhi letter za\nੜ gurmukhi letter rra\nਫ਼ gurmukhi letter fa\n੦ gurmukhi digit zero\n੧ gurmukhi digit one\n੨ gurmukhi digit two\n੩ gurmukhi digit three\n੪ gurmukhi digit four\n੫ gurmukhi digit five\n੬ gurmukhi digit six\n੭ gurmukhi digit seven\n੮ gurmukhi digit eight\n੯ gurmukhi digit nine\nੲ gurmukhi iri\nੳ gurmukhi ura\nੴ gurmukhi ek onkar\nઅ gujarati letter a\nઆ gujarati letter aa\nઇ gujarati letter i\nઈ gujarati letter ii\nઉ gujarati letter u\nઊ gujarati letter uu\nઋ gujarati letter vocalic r\nઌ gujarati letter vocalic l\nઍ gujarati vowel candra e\nએ gujarati letter e\nઐ gujarati letter ai\nઑ gujarati vowel candra o\nઓ gujarati letter o\nઔ gujarati letter au\nક gujarati letter ka\nખ gujarati letter kha\nગ gujarati letter ga\nઘ gujarati letter gha\nઙ gujarati letter nga\nચ gujarati letter ca\nછ gujarati letter cha\nજ gujarati letter ja\nઝ gujarati letter jha\nઞ gujarati letter nya\nટ gujarati letter tta\nઠ gujarati letter ttha\nડ gujarati letter dda\nઢ gujarati letter ddha\nણ gujarati letter nna\nત gujarati letter ta\nથ gujarati letter tha\nદ gujarati letter da\nધ gujarati letter dha\nન gujarati letter na\nપ gujarati letter pa\nફ gujarati letter pha\nબ gujarati letter ba\nભ gujarati letter bha\nમ gujarati letter ma\nય gujarati letter ya\nર gujarati letter ra\nલ gujarati letter la\nળ gujarati letter lla\nવ gujarati letter va\nશ gujarati letter sha\nષ gujarati letter ssa\nસ gujarati letter sa\nહ gujarati letter ha\nઽ gujarati sign avagraha\nૐ gujarati om\nૠ gujarati letter vocalic rr\nૡ gujarati letter vocalic ll\n૦ gujarati digit zero\n૧ gujarati digit one\n૨ gujarati digit two\n૩ gujarati digit three\n૪ gujarati digit four\n૫ gujarati digit five\n૬ gujarati digit six\n૭ gujarati digit seven\n૮ gujarati digit eight\n૯ gujarati digit nine\n૰ gujarati abbreviation sign\n૱ gujarati rupee sign\nૹ gujarati letter zha\nଅ oriya letter a\nଆ oriya letter aa\nଇ oriya letter i\nଈ oriya letter ii\nଉ oriya letter u\nଊ oriya letter uu\nଋ oriya letter vocalic r\nଌ oriya letter vocalic l\nଏ oriya letter e\nଐ oriya letter ai\nଓ oriya letter o\nଔ oriya letter au\nକ oriya letter ka\nଖ oriya letter kha\nଗ oriya letter ga\nଘ oriya letter gha\nଙ oriya letter nga\nଚ oriya letter ca\nଛ oriya letter cha\nଜ oriya letter ja\nଝ oriya letter jha\nଞ oriya letter nya\nଟ oriya letter tta\nଠ oriya letter ttha\nଡ oriya letter dda\nଢ oriya letter ddha\nଣ oriya letter nna\nତ oriya letter ta\nଥ oriya letter tha\nଦ oriya letter da\nଧ oriya letter dha\nନ oriya letter na\nପ oriya letter pa\nଫ oriya letter pha\nବ oriya letter ba\nଭ oriya letter bha\nମ oriya letter ma\nଯ oriya letter ya\nର oriya letter ra\nଲ oriya letter la\nଳ oriya letter lla\nଵ oriya letter va\nଶ oriya letter sha\nଷ oriya letter ssa\nସ oriya letter sa\nହ oriya letter ha\nଽ oriya sign avagraha\nଡ଼ oriya letter rra\nଢ଼ oriya letter rha\nୟ oriya letter yya\nୠ oriya letter vocalic rr\nୡ oriya letter vocalic ll\n୦ oriya digit zero\n୧ oriya digit one\n୨ oriya digit two\n୩ oriya digit three\n୪ oriya digit four\n୫ oriya digit five\n୬ oriya digit six\n୭ oriya digit seven\n୮ oriya digit eight\n୯ oriya digit nine\n୰ oriya isshar\nୱ oriya letter wa\n୲ oriya fraction one quarter\n୳ oriya fraction one half\n୴ oriya fraction three quarters\n୵ oriya fraction one sixteenth\n୶ oriya fraction one eighth\n୷ oriya fraction three sixteenths\nஃ tamil sign visarga\nஅ tamil letter a\nஆ tamil letter aa\nஇ tamil letter i\nஈ tamil letter ii\nஉ tamil letter u\nஊ tamil letter uu\nஎ tamil letter e\nஏ tamil letter ee\nஐ tamil letter ai\nஒ tamil letter o\nஓ tamil letter oo\nஔ tamil letter au\nக tamil letter ka\nங tamil letter nga\nச tamil letter ca\nஜ tamil letter ja\nஞ tamil letter nya\nட tamil letter tta\nண tamil letter nna\nத tamil letter ta\nந tamil letter na\nன tamil letter nnna\nப tamil letter pa\nம tamil letter ma\nய tamil letter ya\nர tamil letter ra\nற tamil letter rra\nல tamil letter la\nள tamil letter lla\nழ tamil letter llla\nவ tamil letter va\nஶ tamil letter sha\nஷ tamil letter ssa\nஸ tamil letter sa\nஹ tamil letter ha\nௐ tamil om\n௦ tamil digit zero\n௧ tamil digit one\n௨ tamil digit two\n௩ tamil digit three\n௪ tamil digit four\n௫ tamil digit five\n௬ tamil digit six\n௭ tamil digit seven\n௮ tamil digit eight\n௯ tamil digit nine\n௰ tamil number ten\n௱ tamil number one hundred\n௲ tamil number one thousand\n௳ tamil day sign\n௴ tamil month sign\n௵ tamil year sign\n௶ tamil debit sign\n௷ tamil credit sign\n௸ tamil as above sign\n௹ tamil rupee sign\n௺ tamil number sign\nఅ telugu letter a\nఆ telugu letter aa\nఇ telugu letter i\nఈ telugu letter ii\nఉ telugu letter u\nఊ telugu letter uu\nఋ telugu letter vocalic r\nఌ telugu letter vocalic l\nఎ telugu letter e\nఏ telugu letter ee\nఐ telugu letter ai\nఒ telugu letter o\nఓ telugu letter oo\nఔ telugu letter au\nక telugu letter ka\nఖ telugu letter kha\nగ telugu letter ga\nఘ telugu letter gha\nఙ telugu letter nga\nచ telugu letter ca\nఛ telugu letter cha\nజ telugu letter ja\nఝ telugu letter jha\nఞ telugu letter nya\nట telugu letter tta\nఠ telugu letter ttha\nడ telugu letter dda\nఢ telugu letter ddha\nణ telugu letter nna\nత telugu letter ta\nథ telugu letter tha\nద telugu letter da\nధ telugu letter dha\nన telugu letter na\nప telugu letter pa\nఫ telugu letter pha\nబ telugu letter ba\nభ telugu letter bha\nమ telugu letter ma\nయ telugu letter ya\nర telugu letter ra\nఱ telugu letter rra\nల telugu letter la\nళ telugu letter lla\nఴ telugu letter llla\nవ telugu letter va\nశ telugu letter sha\nష telugu letter ssa\nస telugu letter sa\nహ telugu letter ha\nఽ telugu sign avagraha\nౘ telugu letter tsa\nౙ telugu letter dza\nౚ telugu letter rrra\nౠ telugu letter vocalic rr\nౡ telugu letter vocalic ll\n౦ telugu digit zero\n౧ telugu digit one\n౨ telugu digit two\n౩ telugu digit three\n౪ telugu digit four\n౫ telugu digit five\n౬ telugu digit six\n౭ telugu digit seven\n౮ telugu digit eight\n౯ telugu digit nine\n౸ telugu fraction digit zero for odd powers of four\n౹ telugu fraction digit one for odd powers of four\n౺ telugu fraction digit two for odd powers of four\n౻ telugu fraction digit three for odd powers of four\n౼ telugu fraction digit one for even powers of four\n౽ telugu fraction digit two for even powers of four\n౾ telugu fraction digit three for even powers of four\n౿ telugu sign tuumu\nಀ kannada sign spacing candrabindu\nಅ kannada letter a\nಆ kannada letter aa\nಇ kannada letter i\nಈ kannada letter ii\nಉ kannada letter u\nಊ kannada letter uu\nಋ kannada letter vocalic r\nಌ kannada letter vocalic l\nಎ kannada letter e\nಏ kannada letter ee\nಐ kannada letter ai\nಒ kannada letter o\nಓ kannada letter oo\nಔ kannada letter au\nಕ kannada letter ka\nಖ kannada letter kha\nಗ kannada letter ga\nಘ kannada letter gha\nಙ kannada letter nga\nಚ kannada letter ca\nಛ kannada letter cha\nಜ kannada letter ja\nಝ kannada letter jha\nಞ kannada letter nya\nಟ kannada letter tta\nಠ kannada letter ttha\nಡ kannada letter dda\nಢ kannada letter ddha\nಣ kannada letter nna\nತ kannada letter ta\nಥ kannada letter tha\nದ kannada letter da\nಧ kannada letter dha\nನ kannada letter na\nಪ kannada letter pa\nಫ kannada letter pha\nಬ kannada letter ba\nಭ kannada letter bha\nಮ kannada letter ma\nಯ kannada letter ya\nರ kannada letter ra\nಱ kannada letter rra\nಲ kannada letter la\nಳ kannada letter lla\nವ kannada letter va\nಶ kannada letter sha\nಷ kannada letter ssa\nಸ kannada letter sa\nಹ kannada letter ha\nಽ kannada sign avagraha\nೞ kannada letter fa\nೠ kannada letter vocalic rr\nೡ kannada letter vocalic ll\n೦ kannada digit zero\n೧ kannada digit one\n೨ kannada digit two\n೩ kannada digit three\n೪ kannada digit four\n೫ kannada digit five\n೬ kannada digit six\n೭ kannada digit seven\n೮ kannada digit eight\n೯ kannada digit nine\nೱ kannada sign jihvamuliya\nೲ kannada sign upadhmaniya\nഅ malayalam letter a\nആ malayalam letter aa\nഇ malayalam letter i\nഈ malayalam letter ii\nഉ malayalam letter u\nഊ malayalam letter uu\nഋ malayalam letter vocalic r\nഌ malayalam letter vocalic l\nഎ malayalam letter e\nഏ malayalam letter ee\nഐ malayalam letter ai\nഒ malayalam letter o\nഓ malayalam letter oo\nഔ malayalam letter au\nക malayalam letter ka\nഖ malayalam letter kha\nഗ malayalam letter ga\nഘ malayalam letter gha\nങ malayalam letter nga\nച malayalam letter ca\nഛ malayalam letter cha\nജ malayalam letter ja\nഝ malayalam letter jha\nഞ malayalam letter nya\nട malayalam letter tta\nഠ malayalam letter ttha\nഡ malayalam letter dda\nഢ malayalam letter ddha\nണ malayalam letter nna\nത malayalam letter ta\nഥ malayalam letter tha\nദ malayalam letter da\nധ malayalam letter dha\nന malayalam letter na\nഩ malayalam letter nnna\nപ malayalam letter pa\nഫ malayalam letter pha\nബ malayalam letter ba\nഭ malayalam letter bha\nമ malayalam letter ma\nയ malayalam letter ya\nര malayalam letter ra\nറ malayalam letter rra\nല malayalam letter la\nള malayalam letter lla\nഴ malayalam letter llla\nവ malayalam letter va\nശ malayalam letter sha\nഷ malayalam letter ssa\nസ malayalam letter sa\nഹ malayalam letter ha\nഺ malayalam letter ttta\nഽ malayalam sign avagraha\nൎ malayalam letter dot reph\n൏ malayalam sign para\nൔ malayalam letter chillu m\nൕ malayalam letter chillu y\nൖ malayalam letter chillu lll\n൘ malayalam fraction one one-hundred-and-sixtieth\n൙ malayalam fraction one fortieth\n൚ malayalam fraction three eightieths\n൛ malayalam fraction one twentieth\n൜ malayalam fraction one tenth\n൝ malayalam fraction three twentieths\n൞ malayalam fraction one fifth\nൟ malayalam letter archaic ii\nൠ malayalam letter vocalic rr\nൡ malayalam letter vocalic ll\n൦ malayalam digit zero\n൧ malayalam digit one\n൨ malayalam digit two\n൩ malayalam digit three\n൪ malayalam digit four\n൫ malayalam digit five\n൬ malayalam digit six\n൭ malayalam digit seven\n൮ malayalam digit eight\n൯ malayalam digit nine\n൰ malayalam number ten\n൱ malayalam number one hundred\n൲ malayalam number one thousand\n൳ malayalam fraction one quarter\n൴ malayalam fraction one half\n൵ malayalam fraction three quarters\n൶ malayalam fraction one sixteenth\n൷ malayalam fraction one eighth\n൸ malayalam fraction three sixteenths\n൹ malayalam date mark\nൺ malayalam letter chillu nn\nൻ malayalam letter chillu n\nർ malayalam letter chillu rr\nൽ malayalam letter chillu l\nൾ malayalam letter chillu ll\nൿ malayalam letter chillu k\nඅ sinhala letter ayanna\nආ sinhala letter aayanna\nඇ sinhala letter aeyanna\nඈ sinhala letter aeeyanna\nඉ sinhala letter iyanna\nඊ sinhala letter iiyanna\nඋ sinhala letter uyanna\nඌ sinhala letter uuyanna\nඍ sinhala letter iruyanna\nඎ sinhala letter iruuyanna\nඏ sinhala letter iluyanna\nඐ sinhala letter iluuyanna\nඑ sinhala letter eyanna\nඒ sinhala letter eeyanna\nඓ sinhala letter aiyanna\nඔ sinhala letter oyanna\nඕ sinhala letter ooyanna\nඖ sinhala letter auyanna\nක sinhala letter alpapraana kayanna\nඛ sinhala letter mahaapraana kayanna\nග sinhala letter alpapraana gayanna\nඝ sinhala letter mahaapraana gayanna\nඞ sinhala letter kantaja naasikyaya\nඟ sinhala letter sanyaka gayanna\nච sinhala letter alpapraana cayanna\nඡ sinhala letter mahaapraana cayanna\nජ sinhala letter alpapraana jayanna\nඣ sinhala letter mahaapraana jayanna\nඤ sinhala letter taaluja naasikyaya\nඥ sinhala letter taaluja sanyooga naaksikyaya\nඦ sinhala letter sanyaka jayanna\nට sinhala letter alpapraana ttayanna\nඨ sinhala letter mahaapraana ttayanna\nඩ sinhala letter alpapraana ddayanna\nඪ sinhala letter mahaapraana ddayanna\nණ sinhala letter muurdhaja nayanna\nඬ sinhala letter sanyaka ddayanna\nත sinhala letter alpapraana tayanna\nථ sinhala letter mahaapraana tayanna\nද sinhala letter alpapraana dayanna\nධ sinhala letter mahaapraana dayanna\nන sinhala letter dantaja nayanna\nඳ sinhala letter sanyaka dayanna\nප sinhala letter alpapraana payanna\nඵ sinhala letter mahaapraana payanna\nබ sinhala letter alpapraana bayanna\nභ sinhala letter mahaapraana bayanna\nම sinhala letter mayanna\nඹ sinhala letter amba bayanna\nය sinhala letter yayanna\nර sinhala letter rayanna\nල sinhala letter dantaja layanna\nව sinhala letter vayanna\nශ sinhala letter taaluja sayanna\nෂ sinhala letter muurdhaja sayanna\nස sinhala letter dantaja sayanna\nහ sinhala letter hayanna\nළ sinhala letter muurdhaja layanna\nෆ sinhala letter fayanna\n෦ sinhala lith digit zero\n෧ sinhala lith digit one\n෨ sinhala lith digit two\n෩ sinhala lith digit three\n෪ sinhala lith digit four\n෫ sinhala lith digit five\n෬ sinhala lith digit six\n෭ sinhala lith digit seven\n෮ sinhala lith digit eight\n෯ sinhala lith digit nine\n෴ sinhala punctuation kunddaliya\nก thai character ko kai\nข thai character kho khai\nฃ thai character kho khuat\nค thai character kho khwai\nฅ thai character kho khon\nฆ thai character kho rakhang\nง thai character ngo ngu\nจ thai character cho chan\nฉ thai character cho ching\nช thai character cho chang\nซ thai character so so\nฌ thai character cho choe\nญ thai character yo ying\nฎ thai character do chada\nฏ thai character to patak\nฐ thai character tho than\nฑ thai character tho nangmontho\nฒ thai character tho phuthao\nณ thai character no nen\nด thai character do dek\nต thai character to tao\nถ thai character tho thung\nท thai character tho thahan\nธ thai character tho thong\nน thai character no nu\nบ thai character bo baimai\nป thai character po pla\nผ thai character pho phung\nฝ thai character fo fa\nพ thai character pho phan\nฟ thai character fo fan\nภ thai character pho samphao\nม thai character mo ma\nย thai character yo yak\nร thai character ro rua\nฤ thai character ru\nล thai character lo ling\nฦ thai character lu\nว thai character wo waen\nศ thai character so sala\nษ thai character so rusi\nส thai character so sua\nห thai character ho hip\nฬ thai character lo chula\nอ thai character o ang\nฮ thai character ho nokhuk\nฯ thai character paiyannoi\nะ thai character sara a\nา thai character sara aa\nำ thai character sara am\n฿ thai currency symbol baht\nเ thai character sara e\nแ thai character sara ae\nโ thai character sara o\nใ thai character sara ai maimuan\nไ thai character sara ai maimalai\nๅ thai character lakkhangyao\nๆ thai character maiyamok\n๏ thai character fongman\n๐ thai digit zero\n๑ thai digit one\n๒ thai digit two\n๓ thai digit three\n๔ thai digit four\n๕ thai digit five\n๖ thai digit six\n๗ thai digit seven\n๘ thai digit eight\n๙ thai digit nine\n๚ thai character angkhankhu\n๛ thai character khomut\nກ lao letter ko\nຂ lao letter kho sung\nຄ lao letter kho tam\nງ lao letter ngo\nຈ lao letter co\nຊ lao letter so tam\nຍ lao letter nyo\nດ lao letter do\nຕ lao letter to\nຖ lao letter tho sung\nທ lao letter tho tam\nນ lao letter no\nບ lao letter bo\nປ lao letter po\nຜ lao letter pho sung\nຝ lao letter fo tam\nພ lao letter pho tam\nຟ lao letter fo sung\nມ lao letter mo\nຢ lao letter yo\nຣ lao letter lo ling\nລ lao letter lo loot\nວ lao letter wo\nສ lao letter so sung\nຫ lao letter ho sung\nອ lao letter o\nຮ lao letter ho tam\nຯ lao ellipsis\nະ lao vowel sign a\nາ lao vowel sign aa\nຳ lao vowel sign am\nຽ lao semivowel sign nyo\nເ lao vowel sign e\nແ lao vowel sign ei\nໂ lao vowel sign o\nໃ lao vowel sign ay\nໄ lao vowel sign ai\nໆ lao ko la\n໐ lao digit zero\n໑ lao digit one\n໒ lao digit two\n໓ lao digit three\n໔ lao digit four\n໕ lao digit five\n໖ lao digit six\n໗ lao digit seven\n໘ lao digit eight\n໙ lao digit nine\nໜ lao ho no\nໝ lao ho mo\nໞ lao letter khmu go\nໟ lao letter khmu nyo\nༀ tibetan syllable om\n༁ tibetan mark gter yig mgo truncated a\n༂ tibetan mark gter yig mgo -um rnam bcad ma\n༃ tibetan mark gter yig mgo -um gter tsheg ma\n༄ tibetan mark initial yig mgo mdun ma\n༅ tibetan mark closing yig mgo sgab ma\n༆ tibetan mark caret yig mgo phur shad ma\n༇ tibetan mark yig mgo tsheg shad ma\n༈ tibetan mark sbrul shad\n༉ tibetan mark bskur yig mgo\n༊ tibetan mark bka- shog yig mgo\n་ tibetan mark intersyllabic tsheg\n༌ tibetan mark delimiter tsheg bstar\n། tibetan mark shad\n༎ tibetan mark nyis shad\n༏ tibetan mark tsheg shad\n༐ tibetan mark nyis tsheg shad\n༑ tibetan mark rin chen spungs shad\n༒ tibetan mark rgya gram shad\n༓ tibetan mark caret -dzud rtags me long can\n༔ tibetan mark gter tsheg\n༕ tibetan logotype sign chad rtags\n༖ tibetan logotype sign lhag rtags\n༗ tibetan astrological sign sgra gcan -char rtags\n༚ tibetan sign rdel dkar gcig\n༛ tibetan sign rdel dkar gnyis\n༜ tibetan sign rdel dkar gsum\n༝ tibetan sign rdel nag gcig\n༞ tibetan sign rdel nag gnyis\n༟ tibetan sign rdel dkar rdel nag\n༠ tibetan digit zero\n༡ tibetan digit one\n༢ tibetan digit two\n༣ tibetan digit three\n༤ tibetan digit four\n༥ tibetan digit five\n༦ tibetan digit six\n༧ tibetan digit seven\n༨ tibetan digit eight\n༩ tibetan digit nine\n༪ tibetan digit half one\n༫ tibetan digit half two\n༬ tibetan digit half three\n༭ tibetan digit half four\n༮ tibetan digit half five\n༯ tibetan digit half six\n༰ tibetan digit half seven\n༱ tibetan digit half eight\n༲ tibetan digit half nine\n༳ tibetan digit half zero\n༴ tibetan mark bsdus rtags\n༶ tibetan mark caret -dzud rtags bzhi mig can\n༸ tibetan mark che mgo\n༺ tibetan mark gug rtags gyon\n༻ tibetan mark gug rtags gyas\n༼ tibetan mark ang khang gyon\n༽ tibetan mark ang khang gyas\nཀ tibetan letter ka\nཁ tibetan letter kha\nག tibetan letter ga\nགྷ tibetan letter gha\nང tibetan letter nga\nཅ tibetan letter ca\nཆ tibetan letter cha\nཇ tibetan letter ja\nཉ tibetan letter nya\nཊ tibetan letter tta\nཋ tibetan letter ttha\nཌ tibetan letter dda\nཌྷ tibetan letter ddha\nཎ tibetan letter nna\nཏ tibetan letter ta\nཐ tibetan letter tha\nད tibetan letter da\nདྷ tibetan letter dha\nན tibetan letter na\nཔ tibetan letter pa\nཕ tibetan letter pha\nབ tibetan letter ba\nབྷ tibetan letter bha\nམ tibetan letter ma\nཙ tibetan letter tsa\nཚ tibetan letter tsha\nཛ tibetan letter dza\nཛྷ tibetan letter dzha\nཝ tibetan letter wa\nཞ tibetan letter zha\nཟ tibetan letter za\nའ tibetan letter -a\nཡ tibetan letter ya\nར tibetan letter ra\nལ tibetan letter la\nཤ tibetan letter sha\nཥ tibetan letter ssa\nས tibetan letter sa\nཧ tibetan letter ha\nཨ tibetan letter a\nཀྵ tibetan letter kssa\nཪ tibetan letter fixed-form ra\nཫ tibetan letter kka\nཬ tibetan letter rra\n྅ tibetan mark paluta\nྈ tibetan sign lce tsa can\nྉ tibetan sign mchu can\nྊ tibetan sign gru can rgyings\nྋ tibetan sign gru med rgyings\nྌ tibetan sign inverted mchu can\n྾ tibetan ku ru kha\n྿ tibetan ku ru kha bzhi mig can\n࿀ tibetan cantillation sign heavy beat\n࿁ tibetan cantillation sign light beat\n࿂ tibetan cantillation sign cang te-u\n࿃ tibetan cantillation sign sbub -chal\n࿄ tibetan symbol dril bu\n࿅ tibetan symbol rdo rje\n࿇ tibetan symbol rdo rje rgya gram\n࿈ tibetan symbol phur pa\n࿉ tibetan symbol nor bu\n࿊ tibetan symbol nor bu nyis -khyil\n࿋ tibetan symbol nor bu gsum -khyil\n࿌ tibetan symbol nor bu bzhi -khyil\n࿎ tibetan sign rdel nag rdel dkar\n࿏ tibetan sign rdel nag gsum\n࿐ tibetan mark bska- shog gi mgo rgyan\n࿑ tibetan mark mnyam yig gi mgo rgyan\n࿒ tibetan mark nyis tsheg\n࿓ tibetan mark initial brda rnying yig mgo mdun ma\n࿔ tibetan mark closing brda rnying yig mgo sgab ma\n࿕ right-facing svasti sign\n࿖ left-facing svasti sign\n࿗ right-facing svasti sign with dots\n࿘ left-facing svasti sign with dots\n࿙ tibetan mark leading mchan rtags\n࿚ tibetan mark trailing mchan rtags\nက myanmar letter ka\nခ myanmar letter kha\nဂ myanmar letter ga\nဃ myanmar letter gha\nင myanmar letter nga\nစ myanmar letter ca\nဆ myanmar letter cha\nဇ myanmar letter ja\nဈ myanmar letter jha\nဉ myanmar letter nya\nည myanmar letter nnya\nဋ myanmar letter tta\nဌ myanmar letter ttha\nဍ myanmar letter dda\nဎ myanmar letter ddha\nဏ myanmar letter nna\nတ myanmar letter ta\nထ myanmar letter tha\nဒ myanmar letter da\nဓ myanmar letter dha\nန myanmar letter na\nပ myanmar letter pa\nဖ myanmar letter pha\nဗ myanmar letter ba\nဘ myanmar letter bha\nမ myanmar letter ma\nယ myanmar letter ya\nရ myanmar letter ra\nလ myanmar letter la\nဝ myanmar letter wa\nသ myanmar letter sa\nဟ myanmar letter ha\nဠ myanmar letter lla\nအ myanmar letter a\nဢ myanmar letter shan a\nဣ myanmar letter i\nဤ myanmar letter ii\nဥ myanmar letter u\nဦ myanmar letter uu\nဧ myanmar letter e\nဨ myanmar letter mon e\nဩ myanmar letter o\nဪ myanmar letter au\nဿ myanmar letter great sa\n၀ myanmar digit zero\n၁ myanmar digit one\n၂ myanmar digit two\n၃ myanmar digit three\n၄ myanmar digit four\n၅ myanmar digit five\n၆ myanmar digit six\n၇ myanmar digit seven\n၈ myanmar digit eight\n၉ myanmar digit nine\n၊ myanmar sign little section\n။ myanmar sign section\n၌ myanmar symbol locative\n၍ myanmar symbol completed\n၎ myanmar symbol aforementioned\n၏ myanmar symbol genitive\nၐ myanmar letter sha\nၑ myanmar letter ssa\nၒ myanmar letter vocalic r\nၓ myanmar letter vocalic rr\nၔ myanmar letter vocalic l\nၕ myanmar letter vocalic ll\nၚ myanmar letter mon nga\nၛ myanmar letter mon jha\nၜ myanmar letter mon bba\nၝ myanmar letter mon bbe\nၡ myanmar letter sgaw karen sha\nၥ myanmar letter western pwo karen tha\nၦ myanmar letter western pwo karen pwa\nၮ myanmar letter eastern pwo karen nna\nၯ myanmar letter eastern pwo karen ywa\nၰ myanmar letter eastern pwo karen ghwa\nၵ myanmar letter shan ka\nၶ myanmar letter shan kha\nၷ myanmar letter shan ga\nၸ myanmar letter shan ca\nၹ myanmar letter shan za\nၺ myanmar letter shan nya\nၻ myanmar letter shan da\nၼ myanmar letter shan na\nၽ myanmar letter shan pha\nၾ myanmar letter shan fa\nၿ myanmar letter shan ba\nႀ myanmar letter shan tha\nႁ myanmar letter shan ha\nႎ myanmar letter rumai palaung fa\n႐ myanmar shan digit zero\n႑ myanmar shan digit one\n႒ myanmar shan digit two\n႓ myanmar shan digit three\n႔ myanmar shan digit four\n႕ myanmar shan digit five\n႖ myanmar shan digit six\n႗ myanmar shan digit seven\n႘ myanmar shan digit eight\n႙ myanmar shan digit nine\n႞ myanmar symbol shan one\n႟ myanmar symbol shan exclamation\nႠ georgian capital letter an\nႡ georgian capital letter ban\nႢ georgian capital letter gan\nႣ georgian capital letter don\nႤ georgian capital letter en\nႥ georgian capital letter vin\nႦ georgian capital letter zen\nႧ georgian capital letter tan\nႨ georgian capital letter in\nႩ georgian capital letter kan\nႪ georgian capital letter las\nႫ georgian capital letter man\nႬ georgian capital letter nar\nႭ georgian capital letter on\nႮ georgian capital letter par\nႯ georgian capital letter zhar\nႰ georgian capital letter rae\nႱ georgian capital letter san\nႲ georgian capital letter tar\nႳ georgian capital letter un\nႴ georgian capital letter phar\nႵ georgian capital letter khar\nႶ georgian capital letter ghan\nႷ georgian capital letter qar\nႸ georgian capital letter shin\nႹ georgian capital letter chin\nႺ georgian capital letter can\nႻ georgian capital letter jil\nႼ georgian capital letter cil\nႽ georgian capital letter char\nႾ georgian capital letter xan\nႿ georgian capital letter jhan\nჀ georgian capital letter hae\nჁ georgian capital letter he\nჂ georgian capital letter hie\nჃ georgian capital letter we\nჄ georgian capital letter har\nჅ georgian capital letter hoe\nჇ georgian capital letter yn\nჍ georgian capital letter aen\nა georgian letter an\nბ georgian letter ban\nგ georgian letter gan\nდ georgian letter don\nე georgian letter en\nვ georgian letter vin\nზ georgian letter zen\nთ georgian letter tan\nი georgian letter in\nკ georgian letter kan\nლ georgian letter las\nმ georgian letter man\nნ georgian letter nar\nო georgian letter on\nპ georgian letter par\nჟ georgian letter zhar\nრ georgian letter rae\nს georgian letter san\nტ georgian letter tar\nუ georgian letter un\nფ georgian letter phar\nქ georgian letter khar\nღ georgian letter ghan\nყ georgian letter qar\nშ georgian letter shin\nჩ georgian letter chin\nც georgian letter can\nძ georgian letter jil\nწ georgian letter cil\nჭ georgian letter char\nხ georgian letter xan\nჯ georgian letter jhan\nჰ georgian letter hae\nჱ georgian letter he\nჲ georgian letter hie\nჳ georgian letter we\nჴ georgian letter har\nჵ georgian letter hoe\nჶ georgian letter fi\nჷ georgian letter yn\nჸ georgian letter elifi\nჹ georgian letter turned gan\nჺ georgian letter ain\n჻ georgian paragraph separator\nჼ modifier letter georgian nar\nჽ georgian letter aen\nჾ georgian letter hard sign\nჿ georgian letter labial sign\nᄀ hangul choseong kiyeok\nᄁ hangul choseong ssangkiyeok\nᄂ hangul choseong nieun\nᄃ hangul choseong tikeut\nᄄ hangul choseong ssangtikeut\nᄅ hangul choseong rieul\nᄆ hangul choseong mieum\nᄇ hangul choseong pieup\nᄈ hangul choseong ssangpieup\nᄉ hangul choseong sios\nᄊ hangul choseong ssangsios\nᄋ hangul choseong ieung\nᄌ hangul choseong cieuc\nᄍ hangul choseong ssangcieuc\nᄎ hangul choseong chieuch\nᄏ hangul choseong khieukh\nᄐ hangul choseong thieuth\nᄑ hangul choseong phieuph\nᄒ hangul choseong hieuh\nᄓ hangul choseong nieun-kiyeok\nᄔ hangul choseong ssangnieun\nᄕ hangul choseong nieun-tikeut\nᄖ hangul choseong nieun-pieup\nᄗ hangul choseong tikeut-kiyeok\nᄘ hangul choseong rieul-nieun\nᄙ hangul choseong ssangrieul\nᄚ hangul choseong rieul-hieuh\nᄛ hangul choseong kapyeounrieul\nᄜ hangul choseong mieum-pieup\nᄝ hangul choseong kapyeounmieum\nᄞ hangul choseong pieup-kiyeok\nᄟ hangul choseong pieup-nieun\nᄠ hangul choseong pieup-tikeut\nᄡ hangul choseong pieup-sios\nᄢ hangul choseong pieup-sios-kiyeok\nᄣ hangul choseong pieup-sios-tikeut\nᄤ hangul choseong pieup-sios-pieup\nᄥ hangul choseong pieup-ssangsios\nᄦ hangul choseong pieup-sios-cieuc\nᄧ hangul choseong pieup-cieuc\nᄨ hangul choseong pieup-chieuch\nᄩ hangul choseong pieup-thieuth\nᄪ hangul choseong pieup-phieuph\nᄫ hangul choseong kapyeounpieup\nᄬ hangul choseong kapyeounssangpieup\nᄭ hangul choseong sios-kiyeok\nᄮ hangul choseong sios-nieun\nᄯ hangul choseong sios-tikeut\nᄰ hangul choseong sios-rieul\nᄱ hangul choseong sios-mieum\nᄲ hangul choseong sios-pieup\nᄳ hangul choseong sios-pieup-kiyeok\nᄴ hangul choseong sios-ssangsios\nᄵ hangul choseong sios-ieung\nᄶ hangul choseong sios-cieuc\nᄷ hangul choseong sios-chieuch\nᄸ hangul choseong sios-khieukh\nᄹ hangul choseong sios-thieuth\nᄺ hangul choseong sios-phieuph\nᄻ hangul choseong sios-hieuh\nᄼ hangul choseong chitueumsios\nᄽ hangul choseong chitueumssangsios\nᄾ hangul choseong ceongchieumsios\nᄿ hangul choseong ceongchieumssangsios\nᅀ hangul choseong pansios\nᅁ hangul choseong ieung-kiyeok\nᅂ hangul choseong ieung-tikeut\nᅃ hangul choseong ieung-mieum\nᅄ hangul choseong ieung-pieup\nᅅ hangul choseong ieung-sios\nᅆ hangul choseong ieung-pansios\nᅇ hangul choseong ssangieung\nᅈ hangul choseong ieung-cieuc\nᅉ hangul choseong ieung-chieuch\nᅊ hangul choseong ieung-thieuth\nᅋ hangul choseong ieung-phieuph\nᅌ hangul choseong yesieung\nᅍ hangul choseong cieuc-ieung\nᅎ hangul choseong chitueumcieuc\nᅏ hangul choseong chitueumssangcieuc\nᅐ hangul choseong ceongchieumcieuc\nᅑ hangul choseong ceongchieumssangcieuc\nᅒ hangul choseong chieuch-khieukh\nᅓ hangul choseong chieuch-hieuh\nᅔ hangul choseong chitueumchieuch\nᅕ hangul choseong ceongchieumchieuch\nᅖ hangul choseong phieuph-pieup\nᅗ hangul choseong kapyeounphieuph\nᅘ hangul choseong ssanghieuh\nᅙ hangul choseong yeorinhieuh\nᅚ hangul choseong kiyeok-tikeut\nᅛ hangul choseong nieun-sios\nᅜ hangul choseong nieun-cieuc\nᅝ hangul choseong nieun-hieuh\nᅞ hangul choseong tikeut-rieul\nᅟ hangul choseong filler\nᅠ hangul jungseong filler\nᅡ hangul jungseong a\nᅢ hangul jungseong ae\nᅣ hangul jungseong ya\nᅤ hangul jungseong yae\nᅥ hangul jungseong eo\nᅦ hangul jungseong e\nᅧ hangul jungseong yeo\nᅨ hangul jungseong ye\nᅩ hangul jungseong o\nᅪ hangul jungseong wa\nᅫ hangul jungseong wae\nᅬ hangul jungseong oe\nᅭ hangul jungseong yo\nᅮ hangul jungseong u\nᅯ hangul jungseong weo\nᅰ hangul jungseong we\nᅱ hangul jungseong wi\nᅲ hangul jungseong yu\nᅳ hangul jungseong eu\nᅴ hangul jungseong yi\nᅵ hangul jungseong i\nᅶ hangul jungseong a-o\nᅷ hangul jungseong a-u\nᅸ hangul jungseong ya-o\nᅹ hangul jungseong ya-yo\nᅺ hangul jungseong eo-o\nᅻ hangul jungseong eo-u\nᅼ hangul jungseong eo-eu\nᅽ hangul jungseong yeo-o\nᅾ hangul jungseong yeo-u\nᅿ hangul jungseong o-eo\nᆀ hangul jungseong o-e\nᆁ hangul jungseong o-ye\nᆂ hangul jungseong o-o\nᆃ hangul jungseong o-u\nᆄ hangul jungseong yo-ya\nᆅ hangul jungseong yo-yae\nᆆ hangul jungseong yo-yeo\nᆇ hangul jungseong yo-o\nᆈ hangul jungseong yo-i\nᆉ hangul jungseong u-a\nᆊ hangul jungseong u-ae\nᆋ hangul jungseong u-eo-eu\nᆌ hangul jungseong u-ye\nᆍ hangul jungseong u-u\nᆎ hangul jungseong yu-a\nᆏ hangul jungseong yu-eo\nᆐ hangul jungseong yu-e\nᆑ hangul jungseong yu-yeo\nᆒ hangul jungseong yu-ye\nᆓ hangul jungseong yu-u\nᆔ hangul jungseong yu-i\nᆕ hangul jungseong eu-u\nᆖ hangul jungseong eu-eu\nᆗ hangul jungseong yi-u\nᆘ hangul jungseong i-a\nᆙ hangul jungseong i-ya\nᆚ hangul jungseong i-o\nᆛ hangul jungseong i-u\nᆜ hangul jungseong i-eu\nᆝ hangul jungseong i-araea\nᆞ hangul jungseong araea\nᆟ hangul jungseong araea-eo\nᆠ hangul jungseong araea-u\nᆡ hangul jungseong araea-i\nᆢ hangul jungseong ssangaraea\nᆣ hangul jungseong a-eu\nᆤ hangul jungseong ya-u\nᆥ hangul jungseong yeo-ya\nᆦ hangul jungseong o-ya\nᆧ hangul jungseong o-yae\nᆨ hangul jongseong kiyeok\nᆩ hangul jongseong ssangkiyeok\nᆪ hangul jongseong kiyeok-sios\nᆫ hangul jongseong nieun\nᆬ hangul jongseong nieun-cieuc\nᆭ hangul jongseong nieun-hieuh\nᆮ hangul jongseong tikeut\nᆯ hangul jongseong rieul\nᆰ hangul jongseong rieul-kiyeok\nᆱ hangul jongseong rieul-mieum\nᆲ hangul jongseong rieul-pieup\nᆳ hangul jongseong rieul-sios\nᆴ hangul jongseong rieul-thieuth\nᆵ hangul jongseong rieul-phieuph\nᆶ hangul jongseong rieul-hieuh\nᆷ hangul jongseong mieum\nᆸ hangul jongseong pieup\nᆹ hangul jongseong pieup-sios\nᆺ hangul jongseong sios\nᆻ hangul jongseong ssangsios\nᆼ hangul jongseong ieung\nᆽ hangul jongseong cieuc\nᆾ hangul jongseong chieuch\nᆿ hangul jongseong khieukh\nᇀ hangul jongseong thieuth\nᇁ hangul jongseong phieuph\nᇂ hangul jongseong hieuh\nᇃ hangul jongseong kiyeok-rieul\nᇄ hangul jongseong kiyeok-sios-kiyeok\nᇅ hangul jongseong nieun-kiyeok\nᇆ hangul jongseong nieun-tikeut\nᇇ hangul jongseong nieun-sios\nᇈ hangul jongseong nieun-pansios\nᇉ hangul jongseong nieun-thieuth\nᇊ hangul jongseong tikeut-kiyeok\nᇋ hangul jongseong tikeut-rieul\nᇌ hangul jongseong rieul-kiyeok-sios\nᇍ hangul jongseong rieul-nieun\nᇎ hangul jongseong rieul-tikeut\nᇏ hangul jongseong rieul-tikeut-hieuh\nᇐ hangul jongseong ssangrieul\nᇑ hangul jongseong rieul-mieum-kiyeok\nᇒ hangul jongseong rieul-mieum-sios\nᇓ hangul jongseong rieul-pieup-sios\nᇔ hangul jongseong rieul-pieup-hieuh\nᇕ hangul jongseong rieul-kapyeounpieup\nᇖ hangul jongseong rieul-ssangsios\nᇗ hangul jongseong rieul-pansios\nᇘ hangul jongseong rieul-khieukh\nᇙ hangul jongseong rieul-yeorinhieuh\nᇚ hangul jongseong mieum-kiyeok\nᇛ hangul jongseong mieum-rieul\nᇜ hangul jongseong mieum-pieup\nᇝ hangul jongseong mieum-sios\nᇞ hangul jongseong mieum-ssangsios\nᇟ hangul jongseong mieum-pansios\nᇠ hangul jongseong mieum-chieuch\nᇡ hangul jongseong mieum-hieuh\nᇢ hangul jongseong kapyeounmieum\nᇣ hangul jongseong pieup-rieul\nᇤ hangul jongseong pieup-phieuph\nᇥ hangul jongseong pieup-hieuh\nᇦ hangul jongseong kapyeounpieup\nᇧ hangul jongseong sios-kiyeok\nᇨ hangul jongseong sios-tikeut\nᇩ hangul jongseong sios-rieul\nᇪ hangul jongseong sios-pieup\nᇫ hangul jongseong pansios\nᇬ hangul jongseong ieung-kiyeok\nᇭ hangul jongseong ieung-ssangkiyeok\nᇮ hangul jongseong ssangieung\nᇯ hangul jongseong ieung-khieukh\nᇰ hangul jongseong yesieung\nᇱ hangul jongseong yesieung-sios\nᇲ hangul jongseong yesieung-pansios\nᇳ hangul jongseong phieuph-pieup\nᇴ hangul jongseong kapyeounphieuph\nᇵ hangul jongseong hieuh-nieun\nᇶ hangul jongseong hieuh-rieul\nᇷ hangul jongseong hieuh-mieum\nᇸ hangul jongseong hieuh-pieup\nᇹ hangul jongseong yeorinhieuh\nᇺ hangul jongseong kiyeok-nieun\nᇻ hangul jongseong kiyeok-pieup\nᇼ hangul jongseong kiyeok-chieuch\nᇽ hangul jongseong kiyeok-khieukh\nᇾ hangul jongseong kiyeok-hieuh\nᇿ hangul jongseong ssangnieun\nሀ ethiopic syllable ha\nሁ ethiopic syllable hu\nሂ ethiopic syllable hi\nሃ ethiopic syllable haa\nሄ ethiopic syllable hee\nህ ethiopic syllable he\nሆ ethiopic syllable ho\nሇ ethiopic syllable hoa\nለ ethiopic syllable la\nሉ ethiopic syllable lu\nሊ ethiopic syllable li\nላ ethiopic syllable laa\nሌ ethiopic syllable lee\nል ethiopic syllable le\nሎ ethiopic syllable lo\nሏ ethiopic syllable lwa\nሐ ethiopic syllable hha\nሑ ethiopic syllable hhu\nሒ ethiopic syllable hhi\nሓ ethiopic syllable hhaa\nሔ ethiopic syllable hhee\nሕ ethiopic syllable hhe\nሖ ethiopic syllable hho\nሗ ethiopic syllable hhwa\nመ ethiopic syllable ma\nሙ ethiopic syllable mu\nሚ ethiopic syllable mi\nማ ethiopic syllable maa\nሜ ethiopic syllable mee\nም ethiopic syllable me\nሞ ethiopic syllable mo\nሟ ethiopic syllable mwa\nሠ ethiopic syllable sza\nሡ ethiopic syllable szu\nሢ ethiopic syllable szi\nሣ ethiopic syllable szaa\nሤ ethiopic syllable szee\nሥ ethiopic syllable sze\nሦ ethiopic syllable szo\nሧ ethiopic syllable szwa\nረ ethiopic syllable ra\nሩ ethiopic syllable ru\nሪ ethiopic syllable ri\nራ ethiopic syllable raa\nሬ ethiopic syllable ree\nር ethiopic syllable re\nሮ ethiopic syllable ro\nሯ ethiopic syllable rwa\nሰ ethiopic syllable sa\nሱ ethiopic syllable su\nሲ ethiopic syllable si\nሳ ethiopic syllable saa\nሴ ethiopic syllable see\nስ ethiopic syllable se\nሶ ethiopic syllable so\nሷ ethiopic syllable swa\nሸ ethiopic syllable sha\nሹ ethiopic syllable shu\nሺ ethiopic syllable shi\nሻ ethiopic syllable shaa\nሼ ethiopic syllable shee\nሽ ethiopic syllable she\nሾ ethiopic syllable sho\nሿ ethiopic syllable shwa\nቀ ethiopic syllable qa\nቁ ethiopic syllable qu\nቂ ethiopic syllable qi\nቃ ethiopic syllable qaa\nቄ ethiopic syllable qee\nቅ ethiopic syllable qe\nቆ ethiopic syllable qo\nቇ ethiopic syllable qoa\nቈ ethiopic syllable qwa\nቊ ethiopic syllable qwi\nቋ ethiopic syllable qwaa\nቌ ethiopic syllable qwee\nቍ ethiopic syllable qwe\nቐ ethiopic syllable qha\nቑ ethiopic syllable qhu\nቒ ethiopic syllable qhi\nቓ ethiopic syllable qhaa\nቔ ethiopic syllable qhee\nቕ ethiopic syllable qhe\nቖ ethiopic syllable qho\nቘ ethiopic syllable qhwa\nቚ ethiopic syllable qhwi\nቛ ethiopic syllable qhwaa\nቜ ethiopic syllable qhwee\nቝ ethiopic syllable qhwe\nበ ethiopic syllable ba\nቡ ethiopic syllable bu\nቢ ethiopic syllable bi\nባ ethiopic syllable baa\nቤ ethiopic syllable bee\nብ ethiopic syllable be\nቦ ethiopic syllable bo\nቧ ethiopic syllable bwa\nቨ ethiopic syllable va\nቩ ethiopic syllable vu\nቪ ethiopic syllable vi\nቫ ethiopic syllable vaa\nቬ ethiopic syllable vee\nቭ ethiopic syllable ve\nቮ ethiopic syllable vo\nቯ ethiopic syllable vwa\nተ ethiopic syllable ta\nቱ ethiopic syllable tu\nቲ ethiopic syllable ti\nታ ethiopic syllable taa\nቴ ethiopic syllable tee\nት ethiopic syllable te\nቶ ethiopic syllable to\nቷ ethiopic syllable twa\nቸ ethiopic syllable ca\nቹ ethiopic syllable cu\nቺ ethiopic syllable ci\nቻ ethiopic syllable caa\nቼ ethiopic syllable cee\nች ethiopic syllable ce\nቾ ethiopic syllable co\nቿ ethiopic syllable cwa\nኀ ethiopic syllable xa\nኁ ethiopic syllable xu\nኂ ethiopic syllable xi\nኃ ethiopic syllable xaa\nኄ ethiopic syllable xee\nኅ ethiopic syllable xe\nኆ ethiopic syllable xo\nኇ ethiopic syllable xoa\nኈ ethiopic syllable xwa\nኊ ethiopic syllable xwi\nኋ ethiopic syllable xwaa\nኌ ethiopic syllable xwee\nኍ ethiopic syllable xwe\nነ ethiopic syllable na\nኑ ethiopic syllable nu\nኒ ethiopic syllable ni\nና ethiopic syllable naa\nኔ ethiopic syllable nee\nን ethiopic syllable ne\nኖ ethiopic syllable no\nኗ ethiopic syllable nwa\nኘ ethiopic syllable nya\nኙ ethiopic syllable nyu\nኚ ethiopic syllable nyi\nኛ ethiopic syllable nyaa\nኜ ethiopic syllable nyee\nኝ ethiopic syllable nye\nኞ ethiopic syllable nyo\nኟ ethiopic syllable nywa\nአ ethiopic syllable glottal a\nኡ ethiopic syllable glottal u\nኢ ethiopic syllable glottal i\nኣ ethiopic syllable glottal aa\nኤ ethiopic syllable glottal ee\nእ ethiopic syllable glottal e\nኦ ethiopic syllable glottal o\nኧ ethiopic syllable glottal wa\nከ ethiopic syllable ka\nኩ ethiopic syllable ku\nኪ ethiopic syllable ki\nካ ethiopic syllable kaa\nኬ ethiopic syllable kee\nክ ethiopic syllable ke\nኮ ethiopic syllable ko\nኯ ethiopic syllable koa\nኰ ethiopic syllable kwa\nኲ ethiopic syllable kwi\nኳ ethiopic syllable kwaa\nኴ ethiopic syllable kwee\nኵ ethiopic syllable kwe\nኸ ethiopic syllable kxa\nኹ ethiopic syllable kxu\nኺ ethiopic syllable kxi\nኻ ethiopic syllable kxaa\nኼ ethiopic syllable kxee\nኽ ethiopic syllable kxe\nኾ ethiopic syllable kxo\nዀ ethiopic syllable kxwa\nዂ ethiopic syllable kxwi\nዃ ethiopic syllable kxwaa\nዄ ethiopic syllable kxwee\nዅ ethiopic syllable kxwe\nወ ethiopic syllable wa\nዉ ethiopic syllable wu\nዊ ethiopic syllable wi\nዋ ethiopic syllable waa\nዌ ethiopic syllable wee\nው ethiopic syllable we\nዎ ethiopic syllable wo\nዏ ethiopic syllable woa\nዐ ethiopic syllable pharyngeal a\nዑ ethiopic syllable pharyngeal u\nዒ ethiopic syllable pharyngeal i\nዓ ethiopic syllable pharyngeal aa\nዔ ethiopic syllable pharyngeal ee\nዕ ethiopic syllable pharyngeal e\nዖ ethiopic syllable pharyngeal o\nዘ ethiopic syllable za\nዙ ethiopic syllable zu\nዚ ethiopic syllable zi\nዛ ethiopic syllable zaa\nዜ ethiopic syllable zee\nዝ ethiopic syllable ze\nዞ ethiopic syllable zo\nዟ ethiopic syllable zwa\nዠ ethiopic syllable zha\nዡ ethiopic syllable zhu\nዢ ethiopic syllable zhi\nዣ ethiopic syllable zhaa\nዤ ethiopic syllable zhee\nዥ ethiopic syllable zhe\nዦ ethiopic syllable zho\nዧ ethiopic syllable zhwa\nየ ethiopic syllable ya\nዩ ethiopic syllable yu\nዪ ethiopic syllable yi\nያ ethiopic syllable yaa\nዬ ethiopic syllable yee\nይ ethiopic syllable ye\nዮ ethiopic syllable yo\nዯ ethiopic syllable yoa\nደ ethiopic syllable da\nዱ ethiopic syllable du\nዲ ethiopic syllable di\nዳ ethiopic syllable daa\nዴ ethiopic syllable dee\nድ ethiopic syllable de\nዶ ethiopic syllable do\nዷ ethiopic syllable dwa\nዸ ethiopic syllable dda\nዹ ethiopic syllable ddu\nዺ ethiopic syllable ddi\nዻ ethiopic syllable ddaa\nዼ ethiopic syllable ddee\nዽ ethiopic syllable dde\nዾ ethiopic syllable ddo\nዿ ethiopic syllable ddwa\nጀ ethiopic syllable ja\nጁ ethiopic syllable ju\nጂ ethiopic syllable ji\nጃ ethiopic syllable jaa\nጄ ethiopic syllable jee\nጅ ethiopic syllable je\nጆ ethiopic syllable jo\nጇ ethiopic syllable jwa\nገ ethiopic syllable ga\nጉ ethiopic syllable gu\nጊ ethiopic syllable gi\nጋ ethiopic syllable gaa\nጌ ethiopic syllable gee\nግ ethiopic syllable ge\nጎ ethiopic syllable go\nጏ ethiopic syllable goa\nጐ ethiopic syllable gwa\nጒ ethiopic syllable gwi\nጓ ethiopic syllable gwaa\nጔ ethiopic syllable gwee\nጕ ethiopic syllable gwe\nጘ ethiopic syllable gga\nጙ ethiopic syllable ggu\nጚ ethiopic syllable ggi\nጛ ethiopic syllable ggaa\nጜ ethiopic syllable ggee\nጝ ethiopic syllable gge\nጞ ethiopic syllable ggo\nጟ ethiopic syllable ggwaa\nጠ ethiopic syllable tha\nጡ ethiopic syllable thu\nጢ ethiopic syllable thi\nጣ ethiopic syllable thaa\nጤ ethiopic syllable thee\nጥ ethiopic syllable the\nጦ ethiopic syllable tho\nጧ ethiopic syllable thwa\nጨ ethiopic syllable cha\nጩ ethiopic syllable chu\nጪ ethiopic syllable chi\nጫ ethiopic syllable chaa\nጬ ethiopic syllable chee\nጭ ethiopic syllable che\nጮ ethiopic syllable cho\nጯ ethiopic syllable chwa\nጰ ethiopic syllable pha\nጱ ethiopic syllable phu\nጲ ethiopic syllable phi\nጳ ethiopic syllable phaa\nጴ ethiopic syllable phee\nጵ ethiopic syllable phe\nጶ ethiopic syllable pho\nጷ ethiopic syllable phwa\nጸ ethiopic syllable tsa\nጹ ethiopic syllable tsu\nጺ ethiopic syllable tsi\nጻ ethiopic syllable tsaa\nጼ ethiopic syllable tsee\nጽ ethiopic syllable tse\nጾ ethiopic syllable tso\nጿ ethiopic syllable tswa\nፀ ethiopic syllable tza\nፁ ethiopic syllable tzu\nፂ ethiopic syllable tzi\nፃ ethiopic syllable tzaa\nፄ ethiopic syllable tzee\nፅ ethiopic syllable tze\nፆ ethiopic syllable tzo\nፇ ethiopic syllable tzoa\nፈ ethiopic syllable fa\nፉ ethiopic syllable fu\nፊ ethiopic syllable fi\nፋ ethiopic syllable faa\nፌ ethiopic syllable fee\nፍ ethiopic syllable fe\nፎ ethiopic syllable fo\nፏ ethiopic syllable fwa\nፐ ethiopic syllable pa\nፑ ethiopic syllable pu\nፒ ethiopic syllable pi\nፓ ethiopic syllable paa\nፔ ethiopic syllable pee\nፕ ethiopic syllable pe\nፖ ethiopic syllable po\nፗ ethiopic syllable pwa\nፘ ethiopic syllable rya\nፙ ethiopic syllable mya\nፚ ethiopic syllable fya\n፠ ethiopic section mark\n፡ ethiopic wordspace\n። ethiopic full stop\n፣ ethiopic comma\n፤ ethiopic semicolon\n፥ ethiopic colon\n፦ ethiopic preface colon\n፧ ethiopic question mark\n፨ ethiopic paragraph separator\n፩ ethiopic digit one\n፪ ethiopic digit two\n፫ ethiopic digit three\n፬ ethiopic digit four\n፭ ethiopic digit five\n፮ ethiopic digit six\n፯ ethiopic digit seven\n፰ ethiopic digit eight\n፱ ethiopic digit nine\n፲ ethiopic number ten\n፳ ethiopic number twenty\n፴ ethiopic number thirty\n፵ ethiopic number forty\n፶ ethiopic number fifty\n፷ ethiopic number sixty\n፸ ethiopic number seventy\n፹ ethiopic number eighty\n፺ ethiopic number ninety\n፻ ethiopic number hundred\n፼ ethiopic number ten thousand\nᎀ ethiopic syllable sebatbeit mwa\nᎁ ethiopic syllable mwi\nᎂ ethiopic syllable mwee\nᎃ ethiopic syllable mwe\nᎄ ethiopic syllable sebatbeit bwa\nᎅ ethiopic syllable bwi\nᎆ ethiopic syllable bwee\nᎇ ethiopic syllable bwe\nᎈ ethiopic syllable sebatbeit fwa\nᎉ ethiopic syllable fwi\nᎊ ethiopic syllable fwee\nᎋ ethiopic syllable fwe\nᎌ ethiopic syllable sebatbeit pwa\nᎍ ethiopic syllable pwi\nᎎ ethiopic syllable pwee\nᎏ ethiopic syllable pwe\n᎐ ethiopic tonal mark yizet\n᎑ ethiopic tonal mark deret\n᎒ ethiopic tonal mark rikrik\n᎓ ethiopic tonal mark short rikrik\n᎔ ethiopic tonal mark difat\n᎕ ethiopic tonal mark kenat\n᎖ ethiopic tonal mark chiret\n᎗ ethiopic tonal mark hidet\n᎘ ethiopic tonal mark deret-hidet\n᎙ ethiopic tonal mark kurt\nᎠ cherokee letter a\nᎡ cherokee letter e\nᎢ cherokee letter i\nᎣ cherokee letter o\nᎤ cherokee letter u\nᎥ cherokee letter v\nᎦ cherokee letter ga\nᎧ cherokee letter ka\nᎨ cherokee letter ge\nᎩ cherokee letter gi\nᎪ cherokee letter go\nᎫ cherokee letter gu\nᎬ cherokee letter gv\nᎭ cherokee letter ha\nᎮ cherokee letter he\nᎯ cherokee letter hi\nᎰ cherokee letter ho\nᎱ cherokee letter hu\nᎲ cherokee letter hv\nᎳ cherokee letter la\nᎴ cherokee letter le\nᎵ cherokee letter li\nᎶ cherokee letter lo\nᎷ cherokee letter lu\nᎸ cherokee letter lv\nᎹ cherokee letter ma\nᎺ cherokee letter me\nᎻ cherokee letter mi\nᎼ cherokee letter mo\nᎽ cherokee letter mu\nᎾ cherokee letter na\nᎿ cherokee letter hna\nᏀ cherokee letter nah\nᏁ cherokee letter ne\nᏂ cherokee letter ni\nᏃ cherokee letter no\nᏄ cherokee letter nu\nᏅ cherokee letter nv\nᏆ cherokee letter qua\nᏇ cherokee letter que\nᏈ cherokee letter qui\nᏉ cherokee letter quo\nᏊ cherokee letter quu\nᏋ cherokee letter quv\nᏌ cherokee letter sa\nᏍ cherokee letter s\nᏎ cherokee letter se\nᏏ cherokee letter si\nᏐ cherokee letter so\nᏑ cherokee letter su\nᏒ cherokee letter sv\nᏓ cherokee letter da\nᏔ cherokee letter ta\nᏕ cherokee letter de\nᏖ cherokee letter te\nᏗ cherokee letter di\nᏘ cherokee letter ti\nᏙ cherokee letter do\nᏚ cherokee letter du\nᏛ cherokee letter dv\nᏜ cherokee letter dla\nᏝ cherokee letter tla\nᏞ cherokee letter tle\nᏟ cherokee letter tli\nᏠ cherokee letter tlo\nᏡ cherokee letter tlu\nᏢ cherokee letter tlv\nᏣ cherokee letter tsa\nᏤ cherokee letter tse\nᏥ cherokee letter tsi\nᏦ cherokee letter tso\nᏧ cherokee letter tsu\nᏨ cherokee letter tsv\nᏩ cherokee letter wa\nᏪ cherokee letter we\nᏫ cherokee letter wi\nᏬ cherokee letter wo\nᏭ cherokee letter wu\nᏮ cherokee letter wv\nᏯ cherokee letter ya\nᏰ cherokee letter ye\nᏱ cherokee letter yi\nᏲ cherokee letter yo\nᏳ cherokee letter yu\nᏴ cherokee letter yv\nᏵ cherokee letter mv\nᏸ cherokee small letter ye\nᏹ cherokee small letter yi\nᏺ cherokee small letter yo\nᏻ cherokee small letter yu\nᏼ cherokee small letter yv\nᏽ cherokee small letter mv\n᐀ canadian syllabics hyphen\nᐁ canadian syllabics e\nᐂ canadian syllabics aai\nᐃ canadian syllabics i\nᐄ canadian syllabics ii\nᐅ canadian syllabics o\nᐆ canadian syllabics oo\nᐇ canadian syllabics y-cree oo\nᐈ canadian syllabics carrier ee\nᐉ canadian syllabics carrier i\nᐊ canadian syllabics a\nᐋ canadian syllabics aa\nᐌ canadian syllabics we\nᐍ canadian syllabics west-cree we\nᐎ canadian syllabics wi\nᐏ canadian syllabics west-cree wi\nᐐ canadian syllabics wii\nᐑ canadian syllabics west-cree wii\nᐒ canadian syllabics wo\nᐓ canadian syllabics west-cree wo\nᐔ canadian syllabics woo\nᐕ canadian syllabics west-cree woo\nᐖ canadian syllabics naskapi woo\nᐗ canadian syllabics wa\nᐘ canadian syllabics west-cree wa\nᐙ canadian syllabics waa\nᐚ canadian syllabics west-cree waa\nᐛ canadian syllabics naskapi waa\nᐜ canadian syllabics ai\nᐝ canadian syllabics y-cree w\nᐞ canadian syllabics glottal stop\nᐟ canadian syllabics final acute\nᐠ canadian syllabics final grave\nᐡ canadian syllabics final bottom half ring\nᐢ canadian syllabics final top half ring\nᐣ canadian syllabics final right half ring\nᐤ canadian syllabics final ring\nᐥ canadian syllabics final double acute\nᐦ canadian syllabics final double short vertical strokes\nᐧ canadian syllabics final middle dot\nᐨ canadian syllabics final short horizontal stroke\nᐩ canadian syllabics final plus\nᐪ canadian syllabics final down tack\nᐫ canadian syllabics en\nᐬ canadian syllabics in\nᐭ canadian syllabics on\nᐮ canadian syllabics an\nᐯ canadian syllabics pe\nᐰ canadian syllabics paai\nᐱ canadian syllabics pi\nᐲ canadian syllabics pii\nᐳ canadian syllabics po\nᐴ canadian syllabics poo\nᐵ canadian syllabics y-cree poo\nᐶ canadian syllabics carrier hee\nᐷ canadian syllabics carrier hi\nᐸ canadian syllabics pa\nᐹ canadian syllabics paa\nᐺ canadian syllabics pwe\nᐻ canadian syllabics west-cree pwe\nᐼ canadian syllabics pwi\nᐽ canadian syllabics west-cree pwi\nᐾ canadian syllabics pwii\nᐿ canadian syllabics west-cree pwii\nᑀ canadian syllabics pwo\nᑁ canadian syllabics west-cree pwo\nᑂ canadian syllabics pwoo\nᑃ canadian syllabics west-cree pwoo\nᑄ canadian syllabics pwa\nᑅ canadian syllabics west-cree pwa\nᑆ canadian syllabics pwaa\nᑇ canadian syllabics west-cree pwaa\nᑈ canadian syllabics y-cree pwaa\nᑉ canadian syllabics p\nᑊ canadian syllabics west-cree p\nᑋ canadian syllabics carrier h\nᑌ canadian syllabics te\nᑍ canadian syllabics taai\nᑎ canadian syllabics ti\nᑏ canadian syllabics tii\nᑐ canadian syllabics to\nᑑ canadian syllabics too\nᑒ canadian syllabics y-cree too\nᑓ canadian syllabics carrier dee\nᑔ canadian syllabics carrier di\nᑕ canadian syllabics ta\nᑖ canadian syllabics taa\nᑗ canadian syllabics twe\nᑘ canadian syllabics west-cree twe\nᑙ canadian syllabics twi\nᑚ canadian syllabics west-cree twi\nᑛ canadian syllabics twii\nᑜ canadian syllabics west-cree twii\nᑝ canadian syllabics two\nᑞ canadian syllabics west-cree two\nᑟ canadian syllabics twoo\nᑠ canadian syllabics west-cree twoo\nᑡ canadian syllabics twa\nᑢ canadian syllabics west-cree twa\nᑣ canadian syllabics twaa\nᑤ canadian syllabics west-cree twaa\nᑥ canadian syllabics naskapi twaa\nᑦ canadian syllabics t\nᑧ canadian syllabics tte\nᑨ canadian syllabics tti\nᑩ canadian syllabics tto\nᑪ canadian syllabics tta\nᑫ canadian syllabics ke\nᑬ canadian syllabics kaai\nᑭ canadian syllabics ki\nᑮ canadian syllabics kii\nᑯ canadian syllabics ko\nᑰ canadian syllabics koo\nᑱ canadian syllabics y-cree koo\nᑲ canadian syllabics ka\nᑳ canadian syllabics kaa\nᑴ canadian syllabics kwe\nᑵ canadian syllabics west-cree kwe\nᑶ canadian syllabics kwi\nᑷ canadian syllabics west-cree kwi\nᑸ canadian syllabics kwii\nᑹ canadian syllabics west-cree kwii\nᑺ canadian syllabics kwo\nᑻ canadian syllabics west-cree kwo\nᑼ canadian syllabics kwoo\nᑽ canadian syllabics west-cree kwoo\nᑾ canadian syllabics kwa\nᑿ canadian syllabics west-cree kwa\nᒀ canadian syllabics kwaa\nᒁ canadian syllabics west-cree kwaa\nᒂ canadian syllabics naskapi kwaa\nᒃ canadian syllabics k\nᒄ canadian syllabics kw\nᒅ canadian syllabics south-slavey keh\nᒆ canadian syllabics south-slavey kih\nᒇ canadian syllabics south-slavey koh\nᒈ canadian syllabics south-slavey kah\nᒉ canadian syllabics ce\nᒊ canadian syllabics caai\nᒋ canadian syllabics ci\nᒌ canadian syllabics cii\nᒍ canadian syllabics co\nᒎ canadian syllabics coo\nᒏ canadian syllabics y-cree coo\nᒐ canadian syllabics ca\nᒑ canadian syllabics caa\nᒒ canadian syllabics cwe\nᒓ canadian syllabics west-cree cwe\nᒔ canadian syllabics cwi\nᒕ canadian syllabics west-cree cwi\nᒖ canadian syllabics cwii\nᒗ canadian syllabics west-cree cwii\nᒘ canadian syllabics cwo\nᒙ canadian syllabics west-cree cwo\nᒚ canadian syllabics cwoo\nᒛ canadian syllabics west-cree cwoo\nᒜ canadian syllabics cwa\nᒝ canadian syllabics west-cree cwa\nᒞ canadian syllabics cwaa\nᒟ canadian syllabics west-cree cwaa\nᒠ canadian syllabics naskapi cwaa\nᒡ canadian syllabics c\nᒢ canadian syllabics sayisi th\nᒣ canadian syllabics me\nᒤ canadian syllabics maai\nᒥ canadian syllabics mi\nᒦ canadian syllabics mii\nᒧ canadian syllabics mo\nᒨ canadian syllabics moo\nᒩ canadian syllabics y-cree moo\nᒪ canadian syllabics ma\nᒫ canadian syllabics maa\nᒬ canadian syllabics mwe\nᒭ canadian syllabics west-cree mwe\nᒮ canadian syllabics mwi\nᒯ canadian syllabics west-cree mwi\nᒰ canadian syllabics mwii\nᒱ canadian syllabics west-cree mwii\nᒲ canadian syllabics mwo\nᒳ canadian syllabics west-cree mwo\nᒴ canadian syllabics mwoo\nᒵ canadian syllabics west-cree mwoo\nᒶ canadian syllabics mwa\nᒷ canadian syllabics west-cree mwa\nᒸ canadian syllabics mwaa\nᒹ canadian syllabics west-cree mwaa\nᒺ canadian syllabics naskapi mwaa\nᒻ canadian syllabics m\nᒼ canadian syllabics west-cree m\nᒽ canadian syllabics mh\nᒾ canadian syllabics athapascan m\nᒿ canadian syllabics sayisi m\nᓀ canadian syllabics ne\nᓁ canadian syllabics naai\nᓂ canadian syllabics ni\nᓃ canadian syllabics nii\nᓄ canadian syllabics no\nᓅ canadian syllabics noo\nᓆ canadian syllabics y-cree noo\nᓇ canadian syllabics na\nᓈ canadian syllabics naa\nᓉ canadian syllabics nwe\nᓊ canadian syllabics west-cree nwe\nᓋ canadian syllabics nwa\nᓌ canadian syllabics west-cree nwa\nᓍ canadian syllabics nwaa\nᓎ canadian syllabics west-cree nwaa\nᓏ canadian syllabics naskapi nwaa\nᓐ canadian syllabics n\nᓑ canadian syllabics carrier ng\nᓒ canadian syllabics nh\nᓓ canadian syllabics le\nᓔ canadian syllabics laai\nᓕ canadian syllabics li\nᓖ canadian syllabics lii\nᓗ canadian syllabics lo\nᓘ canadian syllabics loo\nᓙ canadian syllabics y-cree loo\nᓚ canadian syllabics la\nᓛ canadian syllabics laa\nᓜ canadian syllabics lwe\nᓝ canadian syllabics west-cree lwe\nᓞ canadian syllabics lwi\nᓟ canadian syllabics west-cree lwi\nᓠ canadian syllabics lwii\nᓡ canadian syllabics west-cree lwii\nᓢ canadian syllabics lwo\nᓣ canadian syllabics west-cree lwo\nᓤ canadian syllabics lwoo\nᓥ canadian syllabics west-cree lwoo\nᓦ canadian syllabics lwa\nᓧ canadian syllabics west-cree lwa\nᓨ canadian syllabics lwaa\nᓩ canadian syllabics west-cree lwaa\nᓪ canadian syllabics l\nᓫ canadian syllabics west-cree l\nᓬ canadian syllabics medial l\nᓭ canadian syllabics se\nᓮ canadian syllabics saai\nᓯ canadian syllabics si\nᓰ canadian syllabics sii\nᓱ canadian syllabics so\nᓲ canadian syllabics soo\nᓳ canadian syllabics y-cree soo\nᓴ canadian syllabics sa\nᓵ canadian syllabics saa\nᓶ canadian syllabics swe\nᓷ canadian syllabics west-cree swe\nᓸ canadian syllabics swi\nᓹ canadian syllabics west-cree swi\nᓺ canadian syllabics swii\nᓻ canadian syllabics west-cree swii\nᓼ canadian syllabics swo\nᓽ canadian syllabics west-cree swo\nᓾ canadian syllabics swoo\nᓿ canadian syllabics west-cree swoo\nᔀ canadian syllabics swa\nᔁ canadian syllabics west-cree swa\nᔂ canadian syllabics swaa\nᔃ canadian syllabics west-cree swaa\nᔄ canadian syllabics naskapi swaa\nᔅ canadian syllabics s\nᔆ canadian syllabics athapascan s\nᔇ canadian syllabics sw\nᔈ canadian syllabics blackfoot s\nᔉ canadian syllabics moose-cree sk\nᔊ canadian syllabics naskapi skw\nᔋ canadian syllabics naskapi s-w\nᔌ canadian syllabics naskapi spwa\nᔍ canadian syllabics naskapi stwa\nᔎ canadian syllabics naskapi skwa\nᔏ canadian syllabics naskapi scwa\nᔐ canadian syllabics she\nᔑ canadian syllabics shi\nᔒ canadian syllabics shii\nᔓ canadian syllabics sho\nᔔ canadian syllabics shoo\nᔕ canadian syllabics sha\nᔖ canadian syllabics shaa\nᔗ canadian syllabics shwe\nᔘ canadian syllabics west-cree shwe\nᔙ canadian syllabics shwi\nᔚ canadian syllabics west-cree shwi\nᔛ canadian syllabics shwii\nᔜ canadian syllabics west-cree shwii\nᔝ canadian syllabics shwo\nᔞ canadian syllabics west-cree shwo\nᔟ canadian syllabics shwoo\nᔠ canadian syllabics west-cree shwoo\nᔡ canadian syllabics shwa\nᔢ canadian syllabics west-cree shwa\nᔣ canadian syllabics shwaa\nᔤ canadian syllabics west-cree shwaa\nᔥ canadian syllabics sh\nᔦ canadian syllabics ye\nᔧ canadian syllabics yaai\nᔨ canadian syllabics yi\nᔩ canadian syllabics yii\nᔪ canadian syllabics yo\nᔫ canadian syllabics yoo\nᔬ canadian syllabics y-cree yoo\nᔭ canadian syllabics ya\nᔮ canadian syllabics yaa\nᔯ canadian syllabics ywe\nᔰ canadian syllabics west-cree ywe\nᔱ canadian syllabics ywi\nᔲ canadian syllabics west-cree ywi\nᔳ canadian syllabics ywii\nᔴ canadian syllabics west-cree ywii\nᔵ canadian syllabics ywo\nᔶ canadian syllabics west-cree ywo\nᔷ canadian syllabics ywoo\nᔸ canadian syllabics west-cree ywoo\nᔹ canadian syllabics ywa\nᔺ canadian syllabics west-cree ywa\nᔻ canadian syllabics ywaa\nᔼ canadian syllabics west-cree ywaa\nᔽ canadian syllabics naskapi ywaa\nᔾ canadian syllabics y\nᔿ canadian syllabics bible-cree y\nᕀ canadian syllabics west-cree y\nᕁ canadian syllabics sayisi yi\nᕂ canadian syllabics re\nᕃ canadian syllabics r-cree re\nᕄ canadian syllabics west-cree le\nᕅ canadian syllabics raai\nᕆ canadian syllabics ri\nᕇ canadian syllabics rii\nᕈ canadian syllabics ro\nᕉ canadian syllabics roo\nᕊ canadian syllabics west-cree lo\nᕋ canadian syllabics ra\nᕌ canadian syllabics raa\nᕍ canadian syllabics west-cree la\nᕎ canadian syllabics rwaa\nᕏ canadian syllabics west-cree rwaa\nᕐ canadian syllabics r\nᕑ canadian syllabics west-cree r\nᕒ canadian syllabics medial r\nᕓ canadian syllabics fe\nᕔ canadian syllabics faai\nᕕ canadian syllabics fi\nᕖ canadian syllabics fii\nᕗ canadian syllabics fo\nᕘ canadian syllabics foo\nᕙ canadian syllabics fa\nᕚ canadian syllabics faa\nᕛ canadian syllabics fwaa\nᕜ canadian syllabics west-cree fwaa\nᕝ canadian syllabics f\nᕞ canadian syllabics the\nᕟ canadian syllabics n-cree the\nᕠ canadian syllabics thi\nᕡ canadian syllabics n-cree thi\nᕢ canadian syllabics thii\nᕣ canadian syllabics n-cree thii\nᕤ canadian syllabics tho\nᕥ canadian syllabics thoo\nᕦ canadian syllabics tha\nᕧ canadian syllabics thaa\nᕨ canadian syllabics thwaa\nᕩ canadian syllabics west-cree thwaa\nᕪ canadian syllabics th\nᕫ canadian syllabics tthe\nᕬ canadian syllabics tthi\nᕭ canadian syllabics ttho\nᕮ canadian syllabics ttha\nᕯ canadian syllabics tth\nᕰ canadian syllabics tye\nᕱ canadian syllabics tyi\nᕲ canadian syllabics tyo\nᕳ canadian syllabics tya\nᕴ canadian syllabics nunavik he\nᕵ canadian syllabics nunavik hi\nᕶ canadian syllabics nunavik hii\nᕷ canadian syllabics nunavik ho\nᕸ canadian syllabics nunavik hoo\nᕹ canadian syllabics nunavik ha\nᕺ canadian syllabics nunavik haa\nᕻ canadian syllabics nunavik h\nᕼ canadian syllabics nunavut h\nᕽ canadian syllabics hk\nᕾ canadian syllabics qaai\nᕿ canadian syllabics qi\nᖀ canadian syllabics qii\nᖁ canadian syllabics qo\nᖂ canadian syllabics qoo\nᖃ canadian syllabics qa\nᖄ canadian syllabics qaa\nᖅ canadian syllabics q\nᖆ canadian syllabics tlhe\nᖇ canadian syllabics tlhi\nᖈ canadian syllabics tlho\nᖉ canadian syllabics tlha\nᖊ canadian syllabics west-cree re\nᖋ canadian syllabics west-cree ri\nᖌ canadian syllabics west-cree ro\nᖍ canadian syllabics west-cree ra\nᖎ canadian syllabics ngaai\nᖏ canadian syllabics ngi\nᖐ canadian syllabics ngii\nᖑ canadian syllabics ngo\nᖒ canadian syllabics ngoo\nᖓ canadian syllabics nga\nᖔ canadian syllabics ngaa\nᖕ canadian syllabics ng\nᖖ canadian syllabics nng\nᖗ canadian syllabics sayisi she\nᖘ canadian syllabics sayisi shi\nᖙ canadian syllabics sayisi sho\nᖚ canadian syllabics sayisi sha\nᖛ canadian syllabics woods-cree the\nᖜ canadian syllabics woods-cree thi\nᖝ canadian syllabics woods-cree tho\nᖞ canadian syllabics woods-cree tha\nᖟ canadian syllabics woods-cree th\nᖠ canadian syllabics lhi\nᖡ canadian syllabics lhii\nᖢ canadian syllabics lho\nᖣ canadian syllabics lhoo\nᖤ canadian syllabics lha\nᖥ canadian syllabics lhaa\nᖦ canadian syllabics lh\nᖧ canadian syllabics th-cree the\nᖨ canadian syllabics th-cree thi\nᖩ canadian syllabics th-cree thii\nᖪ canadian syllabics th-cree tho\nᖫ canadian syllabics th-cree thoo\nᖬ canadian syllabics th-cree tha\nᖭ canadian syllabics th-cree thaa\nᖮ canadian syllabics th-cree th\nᖯ canadian syllabics aivilik b\nᖰ canadian syllabics blackfoot e\nᖱ canadian syllabics blackfoot i\nᖲ canadian syllabics blackfoot o\nᖳ canadian syllabics blackfoot a\nᖴ canadian syllabics blackfoot we\nᖵ canadian syllabics blackfoot wi\nᖶ canadian syllabics blackfoot wo\nᖷ canadian syllabics blackfoot wa\nᖸ canadian syllabics blackfoot ne\nᖹ canadian syllabics blackfoot ni\nᖺ canadian syllabics blackfoot no\nᖻ canadian syllabics blackfoot na\nᖼ canadian syllabics blackfoot ke\nᖽ canadian syllabics blackfoot ki\nᖾ canadian syllabics blackfoot ko\nᖿ canadian syllabics blackfoot ka\nᗀ canadian syllabics sayisi he\nᗁ canadian syllabics sayisi hi\nᗂ canadian syllabics sayisi ho\nᗃ canadian syllabics sayisi ha\nᗄ canadian syllabics carrier ghu\nᗅ canadian syllabics carrier gho\nᗆ canadian syllabics carrier ghe\nᗇ canadian syllabics carrier ghee\nᗈ canadian syllabics carrier ghi\nᗉ canadian syllabics carrier gha\nᗊ canadian syllabics carrier ru\nᗋ canadian syllabics carrier ro\nᗌ canadian syllabics carrier re\nᗍ canadian syllabics carrier ree\nᗎ canadian syllabics carrier ri\nᗏ canadian syllabics carrier ra\nᗐ canadian syllabics carrier wu\nᗑ canadian syllabics carrier wo\nᗒ canadian syllabics carrier we\nᗓ canadian syllabics carrier wee\nᗔ canadian syllabics carrier wi\nᗕ canadian syllabics carrier wa\nᗖ canadian syllabics carrier hwu\nᗗ canadian syllabics carrier hwo\nᗘ canadian syllabics carrier hwe\nᗙ canadian syllabics carrier hwee\nᗚ canadian syllabics carrier hwi\nᗛ canadian syllabics carrier hwa\nᗜ canadian syllabics carrier thu\nᗝ canadian syllabics carrier tho\nᗞ canadian syllabics carrier the\nᗟ canadian syllabics carrier thee\nᗠ canadian syllabics carrier thi\nᗡ canadian syllabics carrier tha\nᗢ canadian syllabics carrier ttu\nᗣ canadian syllabics carrier tto\nᗤ canadian syllabics carrier tte\nᗥ canadian syllabics carrier ttee\nᗦ canadian syllabics carrier tti\nᗧ canadian syllabics carrier tta\nᗨ canadian syllabics carrier pu\nᗩ canadian syllabics carrier po\nᗪ canadian syllabics carrier pe\nᗫ canadian syllabics carrier pee\nᗬ canadian syllabics carrier pi\nᗭ canadian syllabics carrier pa\nᗮ canadian syllabics carrier p\nᗯ canadian syllabics carrier gu\nᗰ canadian syllabics carrier go\nᗱ canadian syllabics carrier ge\nᗲ canadian syllabics carrier gee\nᗳ canadian syllabics carrier gi\nᗴ canadian syllabics carrier ga\nᗵ canadian syllabics carrier khu\nᗶ canadian syllabics carrier kho\nᗷ canadian syllabics carrier khe\nᗸ canadian syllabics carrier khee\nᗹ canadian syllabics carrier khi\nᗺ canadian syllabics carrier kha\nᗻ canadian syllabics carrier kku\nᗼ canadian syllabics carrier kko\nᗽ canadian syllabics carrier kke\nᗾ canadian syllabics carrier kkee\nᗿ canadian syllabics carrier kki\nᘀ canadian syllabics carrier kka\nᘁ canadian syllabics carrier kk\nᘂ canadian syllabics carrier nu\nᘃ canadian syllabics carrier no\nᘄ canadian syllabics carrier ne\nᘅ canadian syllabics carrier nee\nᘆ canadian syllabics carrier ni\nᘇ canadian syllabics carrier na\nᘈ canadian syllabics carrier mu\nᘉ canadian syllabics carrier mo\nᘊ canadian syllabics carrier me\nᘋ canadian syllabics carrier mee\nᘌ canadian syllabics carrier mi\nᘍ canadian syllabics carrier ma\nᘎ canadian syllabics carrier yu\nᘏ canadian syllabics carrier yo\nᘐ canadian syllabics carrier ye\nᘑ canadian syllabics carrier yee\nᘒ canadian syllabics carrier yi\nᘓ canadian syllabics carrier ya\nᘔ canadian syllabics carrier ju\nᘕ canadian syllabics sayisi ju\nᘖ canadian syllabics carrier jo\nᘗ canadian syllabics carrier je\nᘘ canadian syllabics carrier jee\nᘙ canadian syllabics carrier ji\nᘚ canadian syllabics sayisi ji\nᘛ canadian syllabics carrier ja\nᘜ canadian syllabics carrier jju\nᘝ canadian syllabics carrier jjo\nᘞ canadian syllabics carrier jje\nᘟ canadian syllabics carrier jjee\nᘠ canadian syllabics carrier jji\nᘡ canadian syllabics carrier jja\nᘢ canadian syllabics carrier lu\nᘣ canadian syllabics carrier lo\nᘤ canadian syllabics carrier le\nᘥ canadian syllabics carrier lee\nᘦ canadian syllabics carrier li\nᘧ canadian syllabics carrier la\nᘨ canadian syllabics carrier dlu\nᘩ canadian syllabics carrier dlo\nᘪ canadian syllabics carrier dle\nᘫ canadian syllabics carrier dlee\nᘬ canadian syllabics carrier dli\nᘭ canadian syllabics carrier dla\nᘮ canadian syllabics carrier lhu\nᘯ canadian syllabics carrier lho\nᘰ canadian syllabics carrier lhe\nᘱ canadian syllabics carrier lhee\nᘲ canadian syllabics carrier lhi\nᘳ canadian syllabics carrier lha\nᘴ canadian syllabics carrier tlhu\nᘵ canadian syllabics carrier tlho\nᘶ canadian syllabics carrier tlhe\nᘷ canadian syllabics carrier tlhee\nᘸ canadian syllabics carrier tlhi\nᘹ canadian syllabics carrier tlha\nᘺ canadian syllabics carrier tlu\nᘻ canadian syllabics carrier tlo\nᘼ canadian syllabics carrier tle\nᘽ canadian syllabics carrier tlee\nᘾ canadian syllabics carrier tli\nᘿ canadian syllabics carrier tla\nᙀ canadian syllabics carrier zu\nᙁ canadian syllabics carrier zo\nᙂ canadian syllabics carrier ze\nᙃ canadian syllabics carrier zee\nᙄ canadian syllabics carrier zi\nᙅ canadian syllabics carrier za\nᙆ canadian syllabics carrier z\nᙇ canadian syllabics carrier initial z\nᙈ canadian syllabics carrier dzu\nᙉ canadian syllabics carrier dzo\nᙊ canadian syllabics carrier dze\nᙋ canadian syllabics carrier dzee\nᙌ canadian syllabics carrier dzi\nᙍ canadian syllabics carrier dza\nᙎ canadian syllabics carrier su\nᙏ canadian syllabics carrier so\nᙐ canadian syllabics carrier se\nᙑ canadian syllabics carrier see\nᙒ canadian syllabics carrier si\nᙓ canadian syllabics carrier sa\nᙔ canadian syllabics carrier shu\nᙕ canadian syllabics carrier sho\nᙖ canadian syllabics carrier she\nᙗ canadian syllabics carrier shee\nᙘ canadian syllabics carrier shi\nᙙ canadian syllabics carrier sha\nᙚ canadian syllabics carrier sh\nᙛ canadian syllabics carrier tsu\nᙜ canadian syllabics carrier tso\nᙝ canadian syllabics carrier tse\nᙞ canadian syllabics carrier tsee\nᙟ canadian syllabics carrier tsi\nᙠ canadian syllabics carrier tsa\nᙡ canadian syllabics carrier chu\nᙢ canadian syllabics carrier cho\nᙣ canadian syllabics carrier che\nᙤ canadian syllabics carrier chee\nᙥ canadian syllabics carrier chi\nᙦ canadian syllabics carrier cha\nᙧ canadian syllabics carrier ttsu\nᙨ canadian syllabics carrier ttso\nᙩ canadian syllabics carrier ttse\nᙪ canadian syllabics carrier ttsee\nᙫ canadian syllabics carrier ttsi\nᙬ canadian syllabics carrier ttsa\n᙭ canadian syllabics chi sign\n᙮ canadian syllabics full stop\nᙯ canadian syllabics qai\nᙰ canadian syllabics ngai\nᙱ canadian syllabics nngi\nᙲ canadian syllabics nngii\nᙳ canadian syllabics nngo\nᙴ canadian syllabics nngoo\nᙵ canadian syllabics nnga\nᙶ canadian syllabics nngaa\nᙷ canadian syllabics woods-cree thwee\nᙸ canadian syllabics woods-cree thwi\nᙹ canadian syllabics woods-cree thwii\nᙺ canadian syllabics woods-cree thwo\nᙻ canadian syllabics woods-cree thwoo\nᙼ canadian syllabics woods-cree thwa\nᙽ canadian syllabics woods-cree thwaa\nᙾ canadian syllabics woods-cree final th\nᙿ canadian syllabics blackfoot w\n  ogham space mark\nᚁ ogham letter beith\nᚂ ogham letter luis\nᚃ ogham letter fearn\nᚄ ogham letter sail\nᚅ ogham letter nion\nᚆ ogham letter uath\nᚇ ogham letter dair\nᚈ ogham letter tinne\nᚉ ogham letter coll\nᚊ ogham letter ceirt\nᚋ ogham letter muin\nᚌ ogham letter gort\nᚍ ogham letter ngeadal\nᚎ ogham letter straif\nᚏ ogham letter ruis\nᚐ ogham letter ailm\nᚑ ogham letter onn\nᚒ ogham letter ur\nᚓ ogham letter eadhadh\nᚔ ogham letter iodhadh\nᚕ ogham letter eabhadh\nᚖ ogham letter or\nᚗ ogham letter uilleann\nᚘ ogham letter ifin\nᚙ ogham letter eamhancholl\nᚚ ogham letter peith\n᚛ ogham feather mark\n᚜ ogham reversed feather mark\nᚠ runic letter fehu feoh fe f\nᚡ runic letter v\nᚢ runic letter uruz ur u\nᚣ runic letter yr\nᚤ runic letter y\nᚥ runic letter w\nᚦ runic letter thurisaz thurs thorn\nᚧ runic letter eth\nᚨ runic letter ansuz a\nᚩ runic letter os o\nᚪ runic letter ac a\nᚫ runic letter aesc\nᚬ runic letter long-branch-oss o\nᚭ runic letter short-twig-oss o\nᚮ runic letter o\nᚯ runic letter oe\nᚰ runic letter on\nᚱ runic letter raido rad reid r\nᚲ runic letter kauna\nᚳ runic letter cen\nᚴ runic letter kaun k\nᚵ runic letter g\nᚶ runic letter eng\nᚷ runic letter gebo gyfu g\nᚸ runic letter gar\nᚹ runic letter wunjo wynn w\nᚺ runic letter haglaz h\nᚻ runic letter haegl h\nᚼ runic letter long-branch-hagall h\nᚽ runic letter short-twig-hagall h\nᚾ runic letter naudiz nyd naud n\nᚿ runic letter short-twig-naud n\nᛀ runic letter dotted-n\nᛁ runic letter isaz is iss i\nᛂ runic letter e\nᛃ runic letter jeran j\nᛄ runic letter ger\nᛅ runic letter long-branch-ar ae\nᛆ runic letter short-twig-ar a\nᛇ runic letter iwaz eoh\nᛈ runic letter pertho peorth p\nᛉ runic letter algiz eolhx\nᛊ runic letter sowilo s\nᛋ runic letter sigel long-branch-sol s\nᛌ runic letter short-twig-sol s\nᛍ runic letter c\nᛎ runic letter z\nᛏ runic letter tiwaz tir tyr t\nᛐ runic letter short-twig-tyr t\nᛑ runic letter d\nᛒ runic letter berkanan beorc bjarkan b\nᛓ runic letter short-twig-bjarkan b\nᛔ runic letter dotted-p\nᛕ runic letter open-p\nᛖ runic letter ehwaz eh e\nᛗ runic letter mannaz man m\nᛘ runic letter long-branch-madr m\nᛙ runic letter short-twig-madr m\nᛚ runic letter laukaz lagu logr l\nᛛ runic letter dotted-l\nᛜ runic letter ingwaz\nᛝ runic letter ing\nᛞ runic letter dagaz daeg d\nᛟ runic letter othalan ethel o\nᛠ runic letter ear\nᛡ runic letter ior\nᛢ runic letter cweorth\nᛣ runic letter calc\nᛤ runic letter cealc\nᛥ runic letter stan\nᛦ runic letter long-branch-yr\nᛧ runic letter short-twig-yr\nᛨ runic letter icelandic-yr\nᛩ runic letter q\nᛪ runic letter x\n᛫ runic single punctuation\n᛬ runic multiple punctuation\n᛭ runic cross punctuation\nᛮ runic arlaug symbol\nᛯ runic tvimadur symbol\nᛰ runic belgthor symbol\nᛱ runic letter k\nᛲ runic letter sh\nᛳ runic letter oo\nᛴ runic letter franks casket os\nᛵ runic letter franks casket is\nᛶ runic letter franks casket eh\nᛷ runic letter franks casket ac\nᛸ runic letter franks casket aesc\nᜀ tagalog letter a\nᜁ tagalog letter i\nᜂ tagalog letter u\nᜃ tagalog letter ka\nᜄ tagalog letter ga\nᜅ tagalog letter nga\nᜆ tagalog letter ta\nᜇ tagalog letter da\nᜈ tagalog letter na\nᜉ tagalog letter pa\nᜊ tagalog letter ba\nᜋ tagalog letter ma\nᜌ tagalog letter ya\nᜎ tagalog letter la\nᜏ tagalog letter wa\nᜐ tagalog letter sa\nᜑ tagalog letter ha\nᜠ hanunoo letter a\nᜡ hanunoo letter i\nᜢ hanunoo letter u\nᜣ hanunoo letter ka\nᜤ hanunoo letter ga\nᜥ hanunoo letter nga\nᜦ hanunoo letter ta\nᜧ hanunoo letter da\nᜨ hanunoo letter na\nᜩ hanunoo letter pa\nᜪ hanunoo letter ba\nᜫ hanunoo letter ma\nᜬ hanunoo letter ya\nᜭ hanunoo letter ra\nᜮ hanunoo letter la\nᜯ hanunoo letter wa\nᜰ hanunoo letter sa\nᜱ hanunoo letter ha\n᜵ philippine single punctuation\n᜶ philippine double punctuation\nᝀ buhid letter a\nᝁ buhid letter i\nᝂ buhid letter u\nᝃ buhid letter ka\nᝄ buhid letter ga\nᝅ buhid letter nga\nᝆ buhid letter ta\nᝇ buhid letter da\nᝈ buhid letter na\nᝉ buhid letter pa\nᝊ buhid letter ba\nᝋ buhid letter ma\nᝌ buhid letter ya\nᝍ buhid letter ra\nᝎ buhid letter la\nᝏ buhid letter wa\nᝐ buhid letter sa\nᝑ buhid letter ha\nᝠ tagbanwa letter a\nᝡ tagbanwa letter i\nᝢ tagbanwa letter u\nᝣ tagbanwa letter ka\nᝤ tagbanwa letter ga\nᝥ tagbanwa letter nga\nᝦ tagbanwa letter ta\nᝧ tagbanwa letter da\nᝨ tagbanwa letter na\nᝩ tagbanwa letter pa\nᝪ tagbanwa letter ba\nᝫ tagbanwa letter ma\nᝬ tagbanwa letter ya\nᝮ tagbanwa letter la\nᝯ tagbanwa letter wa\nᝰ tagbanwa letter sa\nក khmer letter ka\nខ khmer letter kha\nគ khmer letter ko\nឃ khmer letter kho\nង khmer letter ngo\nច khmer letter ca\nឆ khmer letter cha\nជ khmer letter co\nឈ khmer letter cho\nញ khmer letter nyo\nដ khmer letter da\nឋ khmer letter ttha\nឌ khmer letter do\nឍ khmer letter ttho\nណ khmer letter nno\nត khmer letter ta\nថ khmer letter tha\nទ khmer letter to\nធ khmer letter tho\nន khmer letter no\nប khmer letter ba\nផ khmer letter pha\nព khmer letter po\nភ khmer letter pho\nម khmer letter mo\nយ khmer letter yo\nរ khmer letter ro\nល khmer letter lo\nវ khmer letter vo\nឝ khmer letter sha\nឞ khmer letter sso\nស khmer letter sa\nហ khmer letter ha\nឡ khmer letter la\nអ khmer letter qa\nឣ khmer independent vowel qaq\nឤ khmer independent vowel qaa\nឥ khmer independent vowel qi\nឦ khmer independent vowel qii\nឧ khmer independent vowel qu\nឨ khmer independent vowel quk\nឩ khmer independent vowel quu\nឪ khmer independent vowel quuv\nឫ khmer independent vowel ry\nឬ khmer independent vowel ryy\nឭ khmer independent vowel ly\nឮ khmer independent vowel lyy\nឯ khmer independent vowel qe\nឰ khmer independent vowel qai\nឱ khmer independent vowel qoo type one\nឲ khmer independent vowel qoo type two\nឳ khmer independent vowel qau\n។ khmer sign khan\n៕ khmer sign bariyoosan\n៖ khmer sign camnuc pii kuuh\nៗ khmer sign lek too\n៘ khmer sign beyyal\n៙ khmer sign phnaek muan\n៚ khmer sign koomuut\n៛ khmer currency symbol riel\nៜ khmer sign avakrahasanya\n០ khmer digit zero\n១ khmer digit one\n២ khmer digit two\n៣ khmer digit three\n៤ khmer digit four\n៥ khmer digit five\n៦ khmer digit six\n៧ khmer digit seven\n៨ khmer digit eight\n៩ khmer digit nine\n៰ khmer symbol lek attak son\n៱ khmer symbol lek attak muoy\n៲ khmer symbol lek attak pii\n៳ khmer symbol lek attak bei\n៴ khmer symbol lek attak buon\n៵ khmer symbol lek attak pram\n៶ khmer symbol lek attak pram-muoy\n៷ khmer symbol lek attak pram-pii\n៸ khmer symbol lek attak pram-bei\n៹ khmer symbol lek attak pram-buon\n᠀ mongolian birga\n᠁ mongolian ellipsis\n᠂ mongolian comma\n᠃ mongolian full stop\n᠄ mongolian colon\n᠅ mongolian four dots\n᠆ mongolian todo soft hyphen\n᠇ mongolian sibe syllable boundary marker\n᠈ mongolian manchu comma\n᠉ mongolian manchu full stop\n᠊ mongolian nirugu\n᠐ mongolian digit zero\n᠑ mongolian digit one\n᠒ mongolian digit two\n᠓ mongolian digit three\n᠔ mongolian digit four\n᠕ mongolian digit five\n᠖ mongolian digit six\n᠗ mongolian digit seven\n᠘ mongolian digit eight\n᠙ mongolian digit nine\nᠠ mongolian letter a\nᠡ mongolian letter e\nᠢ mongolian letter i\nᠣ mongolian letter o\nᠤ mongolian letter u\nᠥ mongolian letter oe\nᠦ mongolian letter ue\nᠧ mongolian letter ee\nᠨ mongolian letter na\nᠩ mongolian letter ang\nᠪ mongolian letter ba\nᠫ mongolian letter pa\nᠬ mongolian letter qa\nᠭ mongolian letter ga\nᠮ mongolian letter ma\nᠯ mongolian letter la\nᠰ mongolian letter sa\nᠱ mongolian letter sha\nᠲ mongolian letter ta\nᠳ mongolian letter da\nᠴ mongolian letter cha\nᠵ mongolian letter ja\nᠶ mongolian letter ya\nᠷ mongolian letter ra\nᠸ mongolian letter wa\nᠹ mongolian letter fa\nᠺ mongolian letter ka\nᠻ mongolian letter kha\nᠼ mongolian letter tsa\nᠽ mongolian letter za\nᠾ mongolian letter haa\nᠿ mongolian letter zra\nᡀ mongolian letter lha\nᡁ mongolian letter zhi\nᡂ mongolian letter chi\nᡃ mongolian letter todo long vowel sign\nᡄ mongolian letter todo e\nᡅ mongolian letter todo i\nᡆ mongolian letter todo o\nᡇ mongolian letter todo u\nᡈ mongolian letter todo oe\nᡉ mongolian letter todo ue\nᡊ mongolian letter todo ang\nᡋ mongolian letter todo ba\nᡌ mongolian letter todo pa\nᡍ mongolian letter todo qa\nᡎ mongolian letter todo ga\nᡏ mongolian letter todo ma\nᡐ mongolian letter todo ta\nᡑ mongolian letter todo da\nᡒ mongolian letter todo cha\nᡓ mongolian letter todo ja\nᡔ mongolian letter todo tsa\nᡕ mongolian letter todo ya\nᡖ mongolian letter todo wa\nᡗ mongolian letter todo ka\nᡘ mongolian letter todo gaa\nᡙ mongolian letter todo haa\nᡚ mongolian letter todo jia\nᡛ mongolian letter todo nia\nᡜ mongolian letter todo dza\nᡝ mongolian letter sibe e\nᡞ mongolian letter sibe i\nᡟ mongolian letter sibe iy\nᡠ mongolian letter sibe ue\nᡡ mongolian letter sibe u\nᡢ mongolian letter sibe ang\nᡣ mongolian letter sibe ka\nᡤ mongolian letter sibe ga\nᡥ mongolian letter sibe ha\nᡦ mongolian letter sibe pa\nᡧ mongolian letter sibe sha\nᡨ mongolian letter sibe ta\nᡩ mongolian letter sibe da\nᡪ mongolian letter sibe ja\nᡫ mongolian letter sibe fa\nᡬ mongolian letter sibe gaa\nᡭ mongolian letter sibe haa\nᡮ mongolian letter sibe tsa\nᡯ mongolian letter sibe za\nᡰ mongolian letter sibe raa\nᡱ mongolian letter sibe cha\nᡲ mongolian letter sibe zha\nᡳ mongolian letter manchu i\nᡴ mongolian letter manchu ka\nᡵ mongolian letter manchu ra\nᡶ mongolian letter manchu fa\nᡷ mongolian letter manchu zha\nᢀ mongolian letter ali gali anusvara one\nᢁ mongolian letter ali gali visarga one\nᢂ mongolian letter ali gali damaru\nᢃ mongolian letter ali gali ubadama\nᢄ mongolian letter ali gali inverted ubadama\nᢇ mongolian letter ali gali a\nᢈ mongolian letter ali gali i\nᢉ mongolian letter ali gali ka\nᢊ mongolian letter ali gali nga\nᢋ mongolian letter ali gali ca\nᢌ mongolian letter ali gali tta\nᢍ mongolian letter ali gali ttha\nᢎ mongolian letter ali gali dda\nᢏ mongolian letter ali gali nna\nᢐ mongolian letter ali gali ta\nᢑ mongolian letter ali gali da\nᢒ mongolian letter ali gali pa\nᢓ mongolian letter ali gali pha\nᢔ mongolian letter ali gali ssa\nᢕ mongolian letter ali gali zha\nᢖ mongolian letter ali gali za\nᢗ mongolian letter ali gali ah\nᢘ mongolian letter todo ali gali ta\nᢙ mongolian letter todo ali gali zha\nᢚ mongolian letter manchu ali gali gha\nᢛ mongolian letter manchu ali gali nga\nᢜ mongolian letter manchu ali gali ca\nᢝ mongolian letter manchu ali gali jha\nᢞ mongolian letter manchu ali gali tta\nᢟ mongolian letter manchu ali gali ddha\nᢠ mongolian letter manchu ali gali ta\nᢡ mongolian letter manchu ali gali dha\nᢢ mongolian letter manchu ali gali ssa\nᢣ mongolian letter manchu ali gali cya\nᢤ mongolian letter manchu ali gali zha\nᢥ mongolian letter manchu ali gali za\nᢦ mongolian letter ali gali half u\nᢧ mongolian letter ali gali half ya\nᢨ mongolian letter manchu ali gali bha\nᢪ mongolian letter manchu ali gali lha\nᢰ canadian syllabics oy\nᢱ canadian syllabics ay\nᢲ canadian syllabics aay\nᢳ canadian syllabics way\nᢴ canadian syllabics poy\nᢵ canadian syllabics pay\nᢶ canadian syllabics pwoy\nᢷ canadian syllabics tay\nᢸ canadian syllabics kay\nᢹ canadian syllabics kway\nᢺ canadian syllabics may\nᢻ canadian syllabics noy\nᢼ canadian syllabics nay\nᢽ canadian syllabics lay\nᢾ canadian syllabics soy\nᢿ canadian syllabics say\nᣀ canadian syllabics shoy\nᣁ canadian syllabics shay\nᣂ canadian syllabics shwoy\nᣃ canadian syllabics yoy\nᣄ canadian syllabics yay\nᣅ canadian syllabics ray\nᣆ canadian syllabics nwi\nᣇ canadian syllabics ojibway nwi\nᣈ canadian syllabics nwii\nᣉ canadian syllabics ojibway nwii\nᣊ canadian syllabics nwo\nᣋ canadian syllabics ojibway nwo\nᣌ canadian syllabics nwoo\nᣍ canadian syllabics ojibway nwoo\nᣎ canadian syllabics rwee\nᣏ canadian syllabics rwi\nᣐ canadian syllabics rwii\nᣑ canadian syllabics rwo\nᣒ canadian syllabics rwoo\nᣓ canadian syllabics rwa\nᣔ canadian syllabics ojibway p\nᣕ canadian syllabics ojibway t\nᣖ canadian syllabics ojibway k\nᣗ canadian syllabics ojibway c\nᣘ canadian syllabics ojibway m\nᣙ canadian syllabics ojibway n\nᣚ canadian syllabics ojibway s\nᣛ canadian syllabics ojibway sh\nᣜ canadian syllabics eastern w\nᣝ canadian syllabics western w\nᣞ canadian syllabics final small ring\nᣟ canadian syllabics final raised dot\nᣠ canadian syllabics r-cree rwe\nᣡ canadian syllabics west-cree loo\nᣢ canadian syllabics west-cree laa\nᣣ canadian syllabics thwe\nᣤ canadian syllabics thwa\nᣥ canadian syllabics tthwe\nᣦ canadian syllabics tthoo\nᣧ canadian syllabics tthaa\nᣨ canadian syllabics tlhwe\nᣩ canadian syllabics tlhoo\nᣪ canadian syllabics sayisi shwe\nᣫ canadian syllabics sayisi shoo\nᣬ canadian syllabics sayisi hoo\nᣭ canadian syllabics carrier gwu\nᣮ canadian syllabics carrier dene gee\nᣯ canadian syllabics carrier gaa\nᣰ canadian syllabics carrier gwa\nᣱ canadian syllabics sayisi juu\nᣲ canadian syllabics carrier jwa\nᣳ canadian syllabics beaver dene l\nᣴ canadian syllabics beaver dene r\nᣵ canadian syllabics carrier dental s\nᤀ limbu vowel-carrier letter\nᤁ limbu letter ka\nᤂ limbu letter kha\nᤃ limbu letter ga\nᤄ limbu letter gha\nᤅ limbu letter nga\nᤆ limbu letter ca\nᤇ limbu letter cha\nᤈ limbu letter ja\nᤉ limbu letter jha\nᤊ limbu letter yan\nᤋ limbu letter ta\nᤌ limbu letter tha\nᤍ limbu letter da\nᤎ limbu letter dha\nᤏ limbu letter na\nᤐ limbu letter pa\nᤑ limbu letter pha\nᤒ limbu letter ba\nᤓ limbu letter bha\nᤔ limbu letter ma\nᤕ limbu letter ya\nᤖ limbu letter ra\nᤗ limbu letter la\nᤘ limbu letter wa\nᤙ limbu letter sha\nᤚ limbu letter ssa\nᤛ limbu letter sa\nᤜ limbu letter ha\nᤝ limbu letter gyan\nᤞ limbu letter tra\n᥀ limbu sign loo\n᥄ limbu exclamation mark\n᥅ limbu question mark\n᥆ limbu digit zero\n᥇ limbu digit one\n᥈ limbu digit two\n᥉ limbu digit three\n᥊ limbu digit four\n᥋ limbu digit five\n᥌ limbu digit six\n᥍ limbu digit seven\n᥎ limbu digit eight\n᥏ limbu digit nine\nᥐ tai le letter ka\nᥑ tai le letter xa\nᥒ tai le letter nga\nᥓ tai le letter tsa\nᥔ tai le letter sa\nᥕ tai le letter ya\nᥖ tai le letter ta\nᥗ tai le letter tha\nᥘ tai le letter la\nᥙ tai le letter pa\nᥚ tai le letter pha\nᥛ tai le letter ma\nᥜ tai le letter fa\nᥝ tai le letter va\nᥞ tai le letter ha\nᥟ tai le letter qa\nᥠ tai le letter kha\nᥡ tai le letter tsha\nᥢ tai le letter na\nᥣ tai le letter a\nᥤ tai le letter i\nᥥ tai le letter ee\nᥦ tai le letter eh\nᥧ tai le letter u\nᥨ tai le letter oo\nᥩ tai le letter o\nᥪ tai le letter ue\nᥫ tai le letter e\nᥬ tai le letter aue\nᥭ tai le letter ai\nᥰ tai le letter tone-2\nᥱ tai le letter tone-3\nᥲ tai le letter tone-4\nᥳ tai le letter tone-5\nᥴ tai le letter tone-6\nᦀ new tai lue letter high qa\nᦁ new tai lue letter low qa\nᦂ new tai lue letter high ka\nᦃ new tai lue letter high xa\nᦄ new tai lue letter high nga\nᦅ new tai lue letter low ka\nᦆ new tai lue letter low xa\nᦇ new tai lue letter low nga\nᦈ new tai lue letter high tsa\nᦉ new tai lue letter high sa\nᦊ new tai lue letter high ya\nᦋ new tai lue letter low tsa\nᦌ new tai lue letter low sa\nᦍ new tai lue letter low ya\nᦎ new tai lue letter high ta\nᦏ new tai lue letter high tha\nᦐ new tai lue letter high na\nᦑ new tai lue letter low ta\nᦒ new tai lue letter low tha\nᦓ new tai lue letter low na\nᦔ new tai lue letter high pa\nᦕ new tai lue letter high pha\nᦖ new tai lue letter high ma\nᦗ new tai lue letter low pa\nᦘ new tai lue letter low pha\nᦙ new tai lue letter low ma\nᦚ new tai lue letter high fa\nᦛ new tai lue letter high va\nᦜ new tai lue letter high la\nᦝ new tai lue letter low fa\nᦞ new tai lue letter low va\nᦟ new tai lue letter low la\nᦠ new tai lue letter high ha\nᦡ new tai lue letter high da\nᦢ new tai lue letter high ba\nᦣ new tai lue letter low ha\nᦤ new tai lue letter low da\nᦥ new tai lue letter low ba\nᦦ new tai lue letter high kva\nᦧ new tai lue letter high xva\nᦨ new tai lue letter low kva\nᦩ new tai lue letter low xva\nᦪ new tai lue letter high sua\nᦫ new tai lue letter low sua\nᦰ new tai lue vowel sign vowel shortener\nᦱ new tai lue vowel sign aa\nᦲ new tai lue vowel sign ii\nᦳ new tai lue vowel sign u\nᦴ new tai lue vowel sign uu\nᦵ new tai lue vowel sign e\nᦶ new tai lue vowel sign ae\nᦷ new tai lue vowel sign o\nᦸ new tai lue vowel sign oa\nᦹ new tai lue vowel sign ue\nᦺ new tai lue vowel sign ay\nᦻ new tai lue vowel sign aay\nᦼ new tai lue vowel sign uy\nᦽ new tai lue vowel sign oy\nᦾ new tai lue vowel sign oay\nᦿ new tai lue vowel sign uey\nᧀ new tai lue vowel sign iy\nᧁ new tai lue letter final v\nᧂ new tai lue letter final ng\nᧃ new tai lue letter final n\nᧄ new tai lue letter final m\nᧅ new tai lue letter final k\nᧆ new tai lue letter final d\nᧇ new tai lue letter final b\nᧈ new tai lue tone mark-1\nᧉ new tai lue tone mark-2\n᧐ new tai lue digit zero\n᧑ new tai lue digit one\n᧒ new tai lue digit two\n᧓ new tai lue digit three\n᧔ new tai lue digit four\n᧕ new tai lue digit five\n᧖ new tai lue digit six\n᧗ new tai lue digit seven\n᧘ new tai lue digit eight\n᧙ new tai lue digit nine\n᧚ new tai lue tham digit one\n᧞ new tai lue sign lae\n᧟ new tai lue sign laev\n᧠ khmer symbol pathamasat\n᧡ khmer symbol muoy koet\n᧢ khmer symbol pii koet\n᧣ khmer symbol bei koet\n᧤ khmer symbol buon koet\n᧥ khmer symbol pram koet\n᧦ khmer symbol pram-muoy koet\n᧧ khmer symbol pram-pii koet\n᧨ khmer symbol pram-bei koet\n᧩ khmer symbol pram-buon koet\n᧪ khmer symbol dap koet\n᧫ khmer symbol dap-muoy koet\n᧬ khmer symbol dap-pii koet\n᧭ khmer symbol dap-bei koet\n᧮ khmer symbol dap-buon koet\n᧯ khmer symbol dap-pram koet\n᧰ khmer symbol tuteyasat\n᧱ khmer symbol muoy roc\n᧲ khmer symbol pii roc\n᧳ khmer symbol bei roc\n᧴ khmer symbol buon roc\n᧵ khmer symbol pram roc\n᧶ khmer symbol pram-muoy roc\n᧷ khmer symbol pram-pii roc\n᧸ khmer symbol pram-bei roc\n᧹ khmer symbol pram-buon roc\n᧺ khmer symbol dap roc\n᧻ khmer symbol dap-muoy roc\n᧼ khmer symbol dap-pii roc\n᧽ khmer symbol dap-bei roc\n᧾ khmer symbol dap-buon roc\n᧿ khmer symbol dap-pram roc\nᨀ buginese letter ka\nᨁ buginese letter ga\nᨂ buginese letter nga\nᨃ buginese letter ngka\nᨄ buginese letter pa\nᨅ buginese letter ba\nᨆ buginese letter ma\nᨇ buginese letter mpa\nᨈ buginese letter ta\nᨉ buginese letter da\nᨊ buginese letter na\nᨋ buginese letter nra\nᨌ buginese letter ca\nᨍ buginese letter ja\nᨎ buginese letter nya\nᨏ buginese letter nyca\nᨐ buginese letter ya\nᨑ buginese letter ra\nᨒ buginese letter la\nᨓ buginese letter va\nᨔ buginese letter sa\nᨕ buginese letter a\nᨖ buginese letter ha\n᨞ buginese pallawa\n᨟ buginese end of section\nᨠ tai tham letter high ka\nᨡ tai tham letter high kha\nᨢ tai tham letter high kxa\nᨣ tai tham letter low ka\nᨤ tai tham letter low kxa\nᨥ tai tham letter low kha\nᨦ tai tham letter nga\nᨧ tai tham letter high ca\nᨨ tai tham letter high cha\nᨩ tai tham letter low ca\nᨪ tai tham letter low sa\nᨫ tai tham letter low cha\nᨬ tai tham letter nya\nᨭ tai tham letter rata\nᨮ tai tham letter high ratha\nᨯ tai tham letter da\nᨰ tai tham letter low ratha\nᨱ tai tham letter rana\nᨲ tai tham letter high ta\nᨳ tai tham letter high tha\nᨴ tai tham letter low ta\nᨵ tai tham letter low tha\nᨶ tai tham letter na\nᨷ tai tham letter ba\nᨸ tai tham letter high pa\nᨹ tai tham letter high pha\nᨺ tai tham letter high fa\nᨻ tai tham letter low pa\nᨼ tai tham letter low fa\nᨽ tai tham letter low pha\nᨾ tai tham letter ma\nᨿ tai tham letter low ya\nᩀ tai tham letter high ya\nᩁ tai tham letter ra\nᩂ tai tham letter rue\nᩃ tai tham letter la\nᩄ tai tham letter lue\nᩅ tai tham letter wa\nᩆ tai tham letter high sha\nᩇ tai tham letter high ssa\nᩈ tai tham letter high sa\nᩉ tai tham letter high ha\nᩊ tai tham letter lla\nᩋ tai tham letter a\nᩌ tai tham letter low ha\nᩍ tai tham letter i\nᩎ tai tham letter ii\nᩏ tai tham letter u\nᩐ tai tham letter uu\nᩑ tai tham letter ee\nᩒ tai tham letter oo\nᩓ tai tham letter lae\nᩔ tai tham letter great sa\n᪀ tai tham hora digit zero\n᪁ tai tham hora digit one\n᪂ tai tham hora digit two\n᪃ tai tham hora digit three\n᪄ tai tham hora digit four\n᪅ tai tham hora digit five\n᪆ tai tham hora digit six\n᪇ tai tham hora digit seven\n᪈ tai tham hora digit eight\n᪉ tai tham hora digit nine\n᪐ tai tham tham digit zero\n᪑ tai tham tham digit one\n᪒ tai tham tham digit two\n᪓ tai tham tham digit three\n᪔ tai tham tham digit four\n᪕ tai tham tham digit five\n᪖ tai tham tham digit six\n᪗ tai tham tham digit seven\n᪘ tai tham tham digit eight\n᪙ tai tham tham digit nine\n᪠ tai tham sign wiang\n᪡ tai tham sign wiangwaak\n᪢ tai tham sign sawan\n᪣ tai tham sign keow\n᪤ tai tham sign hoy\n᪥ tai tham sign dokmai\n᪦ tai tham sign reversed rotated rana\nᪧ tai tham sign mai yamok\n᪨ tai tham sign kaan\n᪩ tai tham sign kaankuu\n᪪ tai tham sign satkaan\n᪫ tai tham sign satkaankuu\n᪬ tai tham sign hang\n᪭ tai tham sign caang\nᬅ balinese letter akara\nᬆ balinese letter akara tedung\nᬇ balinese letter ikara\nᬈ balinese letter ikara tedung\nᬉ balinese letter ukara\nᬊ balinese letter ukara tedung\nᬋ balinese letter ra repa\nᬌ balinese letter ra repa tedung\nᬍ balinese letter la lenga\nᬎ balinese letter la lenga tedung\nᬏ balinese letter ekara\nᬐ balinese letter aikara\nᬑ balinese letter okara\nᬒ balinese letter okara tedung\nᬓ balinese letter ka\nᬔ balinese letter ka mahaprana\nᬕ balinese letter ga\nᬖ balinese letter ga gora\nᬗ balinese letter nga\nᬘ balinese letter ca\nᬙ balinese letter ca laca\nᬚ balinese letter ja\nᬛ balinese letter ja jera\nᬜ balinese letter nya\nᬝ balinese letter ta latik\nᬞ balinese letter ta murda mahaprana\nᬟ balinese letter da murda alpaprana\nᬠ balinese letter da murda mahaprana\nᬡ balinese letter na rambat\nᬢ balinese letter ta\nᬣ balinese letter ta tawa\nᬤ balinese letter da\nᬥ balinese letter da madu\nᬦ balinese letter na\nᬧ balinese letter pa\nᬨ balinese letter pa kapal\nᬩ balinese letter ba\nᬪ balinese letter ba kembang\nᬫ balinese letter ma\nᬬ balinese letter ya\nᬭ balinese letter ra\nᬮ balinese letter la\nᬯ balinese letter wa\nᬰ balinese letter sa saga\nᬱ balinese letter sa sapa\nᬲ balinese letter sa\nᬳ balinese letter ha\nᭅ balinese letter kaf sasak\nᭆ balinese letter khot sasak\nᭇ balinese letter tzir sasak\nᭈ balinese letter ef sasak\nᭉ balinese letter ve sasak\nᭊ balinese letter zal sasak\nᭋ balinese letter asyura sasak\n᭐ balinese digit zero\n᭑ balinese digit one\n᭒ balinese digit two\n᭓ balinese digit three\n᭔ balinese digit four\n᭕ balinese digit five\n᭖ balinese digit six\n᭗ balinese digit seven\n᭘ balinese digit eight\n᭙ balinese digit nine\n᭚ balinese panti\n᭛ balinese pamada\n᭜ balinese windu\n᭝ balinese carik pamungkah\n᭞ balinese carik siki\n᭟ balinese carik pareren\n᭠ balinese pameneng\n᭡ balinese musical symbol dong\n᭢ balinese musical symbol deng\n᭣ balinese musical symbol dung\n᭤ balinese musical symbol dang\n᭥ balinese musical symbol dang surang\n᭦ balinese musical symbol ding\n᭧ balinese musical symbol daeng\n᭨ balinese musical symbol deung\n᭩ balinese musical symbol daing\n᭪ balinese musical symbol dang gede\n᭴ balinese musical symbol right-hand open dug\n᭵ balinese musical symbol right-hand open dag\n᭶ balinese musical symbol right-hand closed tuk\n᭷ balinese musical symbol right-hand closed tak\n᭸ balinese musical symbol left-hand open pang\n᭹ balinese musical symbol left-hand open pung\n᭺ balinese musical symbol left-hand closed plak\n᭻ balinese musical symbol left-hand closed pluk\n᭼ balinese musical symbol left-hand open ping\nᮃ sundanese letter a\nᮄ sundanese letter i\nᮅ sundanese letter u\nᮆ sundanese letter ae\nᮇ sundanese letter o\nᮈ sundanese letter e\nᮉ sundanese letter eu\nᮊ sundanese letter ka\nᮋ sundanese letter qa\nᮌ sundanese letter ga\nᮍ sundanese letter nga\nᮎ sundanese letter ca\nᮏ sundanese letter ja\nᮐ sundanese letter za\nᮑ sundanese letter nya\nᮒ sundanese letter ta\nᮓ sundanese letter da\nᮔ sundanese letter na\nᮕ sundanese letter pa\nᮖ sundanese letter fa\nᮗ sundanese letter va\nᮘ sundanese letter ba\nᮙ sundanese letter ma\nᮚ sundanese letter ya\nᮛ sundanese letter ra\nᮜ sundanese letter la\nᮝ sundanese letter wa\nᮞ sundanese letter sa\nᮟ sundanese letter xa\nᮠ sundanese letter ha\nᮮ sundanese letter kha\nᮯ sundanese letter sya\n᮰ sundanese digit zero\n᮱ sundanese digit one\n᮲ sundanese digit two\n᮳ sundanese digit three\n᮴ sundanese digit four\n᮵ sundanese digit five\n᮶ sundanese digit six\n᮷ sundanese digit seven\n᮸ sundanese digit eight\n᮹ sundanese digit nine\nᮺ sundanese avagraha\nᮻ sundanese letter reu\nᮼ sundanese letter leu\nᮽ sundanese letter bha\nᮾ sundanese letter final k\nᮿ sundanese letter final m\nᯀ batak letter a\nᯁ batak letter simalungun a\nᯂ batak letter ha\nᯃ batak letter simalungun ha\nᯄ batak letter mandailing ha\nᯅ batak letter ba\nᯆ batak letter karo ba\nᯇ batak letter pa\nᯈ batak letter simalungun pa\nᯉ batak letter na\nᯊ batak letter mandailing na\nᯋ batak letter wa\nᯌ batak letter simalungun wa\nᯍ batak letter pakpak wa\nᯎ batak letter ga\nᯏ batak letter simalungun ga\nᯐ batak letter ja\nᯑ batak letter da\nᯒ batak letter ra\nᯓ batak letter simalungun ra\nᯔ batak letter ma\nᯕ batak letter simalungun ma\nᯖ batak letter southern ta\nᯗ batak letter northern ta\nᯘ batak letter sa\nᯙ batak letter simalungun sa\nᯚ batak letter mandailing sa\nᯛ batak letter ya\nᯜ batak letter simalungun ya\nᯝ batak letter nga\nᯞ batak letter la\nᯟ batak letter simalungun la\nᯠ batak letter nya\nᯡ batak letter ca\nᯢ batak letter nda\nᯣ batak letter mba\nᯤ batak letter i\nᯥ batak letter u\n᯼ batak symbol bindu na metek\n᯽ batak symbol bindu pinarboras\n᯾ batak symbol bindu judul\n᯿ batak symbol bindu pangolat\nᰀ lepcha letter ka\nᰁ lepcha letter kla\nᰂ lepcha letter kha\nᰃ lepcha letter ga\nᰄ lepcha letter gla\nᰅ lepcha letter nga\nᰆ lepcha letter ca\nᰇ lepcha letter cha\nᰈ lepcha letter ja\nᰉ lepcha letter nya\nᰊ lepcha letter ta\nᰋ lepcha letter tha\nᰌ lepcha letter da\nᰍ lepcha letter na\nᰎ lepcha letter pa\nᰏ lepcha letter pla\nᰐ lepcha letter pha\nᰑ lepcha letter fa\nᰒ lepcha letter fla\nᰓ lepcha letter ba\nᰔ lepcha letter bla\nᰕ lepcha letter ma\nᰖ lepcha letter mla\nᰗ lepcha letter tsa\nᰘ lepcha letter tsha\nᰙ lepcha letter dza\nᰚ lepcha letter ya\nᰛ lepcha letter ra\nᰜ lepcha letter la\nᰝ lepcha letter ha\nᰞ lepcha letter hla\nᰟ lepcha letter va\nᰠ lepcha letter sa\nᰡ lepcha letter sha\nᰢ lepcha letter wa\nᰣ lepcha letter a\n᰻ lepcha punctuation ta-rol\n᰼ lepcha punctuation nyet thyoom ta-rol\n᰽ lepcha punctuation cer-wa\n᰾ lepcha punctuation tshook cer-wa\n᰿ lepcha punctuation tshook\n᱀ lepcha digit zero\n᱁ lepcha digit one\n᱂ lepcha digit two\n᱃ lepcha digit three\n᱄ lepcha digit four\n᱅ lepcha digit five\n᱆ lepcha digit six\n᱇ lepcha digit seven\n᱈ lepcha digit eight\n᱉ lepcha digit nine\nᱍ lepcha letter tta\nᱎ lepcha letter ttha\nᱏ lepcha letter dda\n᱐ ol chiki digit zero\n᱑ ol chiki digit one\n᱒ ol chiki digit two\n᱓ ol chiki digit three\n᱔ ol chiki digit four\n᱕ ol chiki digit five\n᱖ ol chiki digit six\n᱗ ol chiki digit seven\n᱘ ol chiki digit eight\n᱙ ol chiki digit nine\nᱚ ol chiki letter la\nᱛ ol chiki letter at\nᱜ ol chiki letter ag\nᱝ ol chiki letter ang\nᱞ ol chiki letter al\nᱟ ol chiki letter laa\nᱠ ol chiki letter aak\nᱡ ol chiki letter aaj\nᱢ ol chiki letter aam\nᱣ ol chiki letter aaw\nᱤ ol chiki letter li\nᱥ ol chiki letter is\nᱦ ol chiki letter ih\nᱧ ol chiki letter iny\nᱨ ol chiki letter ir\nᱩ ol chiki letter lu\nᱪ ol chiki letter uc\nᱫ ol chiki letter ud\nᱬ ol chiki letter unn\nᱭ ol chiki letter uy\nᱮ ol chiki letter le\nᱯ ol chiki letter ep\nᱰ ol chiki letter edd\nᱱ ol chiki letter en\nᱲ ol chiki letter err\nᱳ ol chiki letter lo\nᱴ ol chiki letter ott\nᱵ ol chiki letter ob\nᱶ ol chiki letter ov\nᱷ ol chiki letter oh\nᱸ ol chiki mu ttuddag\nᱹ ol chiki gaahlaa ttuddaag\nᱺ ol chiki mu-gaahlaa ttuddaag\nᱻ ol chiki relaa\nᱼ ol chiki phaarkaa\nᱽ ol chiki ahad\n᱾ ol chiki punctuation mucaad\n᱿ ol chiki punctuation double mucaad\nᲀ cyrillic small letter rounded ve\nᲁ cyrillic small letter long-legged de\nᲂ cyrillic small letter narrow o\nᲃ cyrillic small letter wide es\nᲄ cyrillic small letter tall te\nᲅ cyrillic small letter three-legged te\nᲆ cyrillic small letter tall hard sign\nᲇ cyrillic small letter tall yat\nᲈ cyrillic small letter unblended uk\n᳀ sundanese punctuation bindu surya\n᳁ sundanese punctuation bindu panglong\n᳂ sundanese punctuation bindu purnama\n᳃ sundanese punctuation bindu cakra\n᳄ sundanese punctuation bindu leu satanga\n᳅ sundanese punctuation bindu ka satanga\n᳆ sundanese punctuation bindu da satanga\n᳇ sundanese punctuation bindu ba satanga\n᳓ vedic sign nihshvasa\nᳩ vedic sign anusvara antargomukha\nᳪ vedic sign anusvara bahirgomukha\nᳫ vedic sign anusvara vamagomukha\nᳬ vedic sign anusvara vamagomukha with tail\nᳮ vedic sign hexiform long anusvara\nᳯ vedic sign long anusvara\nᳰ vedic sign rthang long anusvara\nᳱ vedic sign anusvara ubhayato mukha\nᳵ vedic sign jihvamuliya\nᳶ vedic sign upadhmaniya\nᴀ latin letter small capital a\nᴁ latin letter small capital ae\nᴂ latin small letter turned ae\nᴃ latin letter small capital barred b\nᴄ latin letter small capital c\nᴅ latin letter small capital d\nᴆ latin letter small capital eth\nᴇ latin letter small capital e\nᴈ latin small letter turned open e\nᴉ latin small letter turned i\nᴊ latin letter small capital j\nᴋ latin letter small capital k\nᴌ latin letter small capital l with stroke\nᴍ latin letter small capital m\nᴎ latin letter small capital reversed n\nᴏ latin letter small capital o\nᴐ latin letter small capital open o\nᴑ latin small letter sideways o\nᴒ latin small letter sideways open o\nᴓ latin small letter sideways o with stroke\nᴔ latin small letter turned oe\nᴕ latin letter small capital ou\nᴖ latin small letter top half o\nᴗ latin small letter bottom half o\nᴘ latin letter small capital p\nᴙ latin letter small capital reversed r\nᴚ latin letter small capital turned r\nᴛ latin letter small capital t\nᴜ latin letter small capital u\nᴝ latin small letter sideways u\nᴞ latin small letter sideways diaeresized u\nᴟ latin small letter sideways turned m\nᴠ latin letter small capital v\nᴡ latin letter small capital w\nᴢ latin letter small capital z\nᴣ latin letter small capital ezh\nᴤ latin letter voiced laryngeal spirant\nᴥ latin letter ain\nᴦ greek letter small capital gamma\nᴧ greek letter small capital lambda\nᴨ greek letter small capital pi\nᴩ greek letter small capital rho\nᴪ greek letter small capital psi\nᴫ cyrillic letter small capital el\nᴬ modifier letter capital a\nᴭ modifier letter capital ae\nᴮ modifier letter capital b\nᴯ modifier letter capital barred b\nᴰ modifier letter capital d\nᴱ modifier letter capital e\nᴲ modifier letter capital reversed e\nᴳ modifier letter capital g\nᴴ modifier letter capital h\nᴵ modifier letter capital i\nᴶ modifier letter capital j\nᴷ modifier letter capital k\nᴸ modifier letter capital l\nᴹ modifier letter capital m\nᴺ modifier letter capital n\nᴻ modifier letter capital reversed n\nᴼ modifier letter capital o\nᴽ modifier letter capital ou\nᴾ modifier letter capital p\nᴿ modifier letter capital r\nᵀ modifier letter capital t\nᵁ modifier letter capital u\nᵂ modifier letter capital w\nᵃ modifier letter small a\nᵄ modifier letter small turned a\nᵅ modifier letter small alpha\nᵆ modifier letter small turned ae\nᵇ modifier letter small b\nᵈ modifier letter small d\nᵉ modifier letter small e\nᵊ modifier letter small schwa\nᵋ modifier letter small open e\nᵌ modifier letter small turned open e\nᵍ modifier letter small g\nᵎ modifier letter small turned i\nᵏ modifier letter small k\nᵐ modifier letter small m\nᵑ modifier letter small eng\nᵒ modifier letter small o\nᵓ modifier letter small open o\nᵔ modifier letter small top half o\nᵕ modifier letter small bottom half o\nᵖ modifier letter small p\nᵗ modifier letter small t\nᵘ modifier letter small u\nᵙ modifier letter small sideways u\nᵚ modifier letter small turned m\nᵛ modifier letter small v\nᵜ modifier letter small ain\nᵝ modifier letter small beta\nᵞ modifier letter small greek gamma\nᵟ modifier letter small delta\nᵠ modifier letter small greek phi\nᵡ modifier letter small chi\nᵢ latin subscript small letter i\nᵣ latin subscript small letter r\nᵤ latin subscript small letter u\nᵥ latin subscript small letter v\nᵦ greek subscript small letter beta\nᵧ greek subscript small letter gamma\nᵨ greek subscript small letter rho\nᵩ greek subscript small letter phi\nᵪ greek subscript small letter chi\nᵫ latin small letter ue\nᵬ latin small letter b with middle tilde\nᵭ latin small letter d with middle tilde\nᵮ latin small letter f with middle tilde\nᵯ latin small letter m with middle tilde\nᵰ latin small letter n with middle tilde\nᵱ latin small letter p with middle tilde\nᵲ latin small letter r with middle tilde\nᵳ latin small letter r with fishhook and middle tilde\nᵴ latin small letter s with middle tilde\nᵵ latin small letter t with middle tilde\nᵶ latin small letter z with middle tilde\nᵷ latin small letter turned g\nᵸ modifier letter cyrillic en\nᵹ latin small letter insular g\nᵺ latin small letter th with strikethrough\nᵻ latin small capital letter i with stroke\nᵼ latin small letter iota with stroke\nᵽ latin small letter p with stroke\nᵾ latin small capital letter u with stroke\nᵿ latin small letter upsilon with stroke\nᶀ latin small letter b with palatal hook\nᶁ latin small letter d with palatal hook\nᶂ latin small letter f with palatal hook\nᶃ latin small letter g with palatal hook\nᶄ latin small letter k with palatal hook\nᶅ latin small letter l with palatal hook\nᶆ latin small letter m with palatal hook\nᶇ latin small letter n with palatal hook\nᶈ latin small letter p with palatal hook\nᶉ latin small letter r with palatal hook\nᶊ latin small letter s with palatal hook\nᶋ latin small letter esh with palatal hook\nᶌ latin small letter v with palatal hook\nᶍ latin small letter x with palatal hook\nᶎ latin small letter z with palatal hook\nᶏ latin small letter a with retroflex hook\nᶐ latin small letter alpha with retroflex hook\nᶑ latin small letter d with hook and tail\nᶒ latin small letter e with retroflex hook\nᶓ latin small letter open e with retroflex hook\nᶔ latin small letter reversed open e with retroflex hook\nᶕ latin small letter schwa with retroflex hook\nᶖ latin small letter i with retroflex hook\nᶗ latin small letter open o with retroflex hook\nᶘ latin small letter esh with retroflex hook\nᶙ latin small letter u with retroflex hook\nᶚ latin small letter ezh with retroflex hook\nᶛ modifier letter small turned alpha\nᶜ modifier letter small c\nᶝ modifier letter small c with curl\nᶞ modifier letter small eth\nᶟ modifier letter small reversed open e\nᶠ modifier letter small f\nᶡ modifier letter small dotless j with stroke\nᶢ modifier letter small script g\nᶣ modifier letter small turned h\nᶤ modifier letter small i with stroke\nᶥ modifier letter small iota\nᶦ modifier letter small capital i\nᶧ modifier letter small capital i with stroke\nᶨ modifier letter small j with crossed-tail\nᶩ modifier letter small l with retroflex hook\nᶪ modifier letter small l with palatal hook\nᶫ modifier letter small capital l\nᶬ modifier letter small m with hook\nᶭ modifier letter small turned m with long leg\nᶮ modifier letter small n with left hook\nᶯ modifier letter small n with retroflex hook\nᶰ modifier letter small capital n\nᶱ modifier letter small barred o\nᶲ modifier letter small phi\nᶳ modifier letter small s with hook\nᶴ modifier letter small esh\nᶵ modifier letter small t with palatal hook\nᶶ modifier letter small u bar\nᶷ modifier letter small upsilon\nᶸ modifier letter small capital u\nᶹ modifier letter small v with hook\nᶺ modifier letter small turned v\nᶻ modifier letter small z\nᶼ modifier letter small z with retroflex hook\nᶽ modifier letter small z with curl\nᶾ modifier letter small ezh\nᶿ modifier letter small theta\nḀ latin capital letter a with ring below\nḁ latin small letter a with ring below\nḂ latin capital letter b with dot above\nḃ latin small letter b with dot above\nḄ latin capital letter b with dot below\nḅ latin small letter b with dot below\nḆ latin capital letter b with line below\nḇ latin small letter b with line below\nḈ latin capital letter c with cedilla and acute\nḉ latin small letter c with cedilla and acute\nḊ latin capital letter d with dot above\nḋ latin small letter d with dot above\nḌ latin capital letter d with dot below\nḍ latin small letter d with dot below\nḎ latin capital letter d with line below\nḏ latin small letter d with line below\nḐ latin capital letter d with cedilla\nḑ latin small letter d with cedilla\nḒ latin capital letter d with circumflex below\nḓ latin small letter d with circumflex below\nḔ latin capital letter e with macron and grave\nḕ latin small letter e with macron and grave\nḖ latin capital letter e with macron and acute\nḗ latin small letter e with macron and acute\nḘ latin capital letter e with circumflex below\nḙ latin small letter e with circumflex below\nḚ latin capital letter e with tilde below\nḛ latin small letter e with tilde below\nḜ latin capital letter e with cedilla and breve\nḝ latin small letter e with cedilla and breve\nḞ latin capital letter f with dot above\nḟ latin small letter f with dot above\nḠ latin capital letter g with macron\nḡ latin small letter g with macron\nḢ latin capital letter h with dot above\nḣ latin small letter h with dot above\nḤ latin capital letter h with dot below\nḥ latin small letter h with dot below\nḦ latin capital letter h with diaeresis\nḧ latin small letter h with diaeresis\nḨ latin capital letter h with cedilla\nḩ latin small letter h with cedilla\nḪ latin capital letter h with breve below\nḫ latin small letter h with breve below\nḬ latin capital letter i with tilde below\nḭ latin small letter i with tilde below\nḮ latin capital letter i with diaeresis and acute\nḯ latin small letter i with diaeresis and acute\nḰ latin capital letter k with acute\nḱ latin small letter k with acute\nḲ latin capital letter k with dot below\nḳ latin small letter k with dot below\nḴ latin capital letter k with line below\nḵ latin small letter k with line below\nḶ latin capital letter l with dot below\nḷ latin small letter l with dot below\nḸ latin capital letter l with dot below and macron\nḹ latin small letter l with dot below and macron\nḺ latin capital letter l with line below\nḻ latin small letter l with line below\nḼ latin capital letter l with circumflex below\nḽ latin small letter l with circumflex below\nḾ latin capital letter m with acute\nḿ latin small letter m with acute\nṀ latin capital letter m with dot above\nṁ latin small letter m with dot above\nṂ latin capital letter m with dot below\nṃ latin small letter m with dot below\nṄ latin capital letter n with dot above\nṅ latin small letter n with dot above\nṆ latin capital letter n with dot below\nṇ latin small letter n with dot below\nṈ latin capital letter n with line below\nṉ latin small letter n with line below\nṊ latin capital letter n with circumflex below\nṋ latin small letter n with circumflex below\nṌ latin capital letter o with tilde and acute\nṍ latin small letter o with tilde and acute\nṎ latin capital letter o with tilde and diaeresis\nṏ latin small letter o with tilde and diaeresis\nṐ latin capital letter o with macron and grave\nṑ latin small letter o with macron and grave\nṒ latin capital letter o with macron and acute\nṓ latin small letter o with macron and acute\nṔ latin capital letter p with acute\nṕ latin small letter p with acute\nṖ latin capital letter p with dot above\nṗ latin small letter p with dot above\nṘ latin capital letter r with dot above\nṙ latin small letter r with dot above\nṚ latin capital letter r with dot below\nṛ latin small letter r with dot below\nṜ latin capital letter r with dot below and macron\nṝ latin small letter r with dot below and macron\nṞ latin capital letter r with line below\nṟ latin small letter r with line below\nṠ latin capital letter s with dot above\nṡ latin small letter s with dot above\nṢ latin capital letter s with dot below\nṣ latin small letter s with dot below\nṤ latin capital letter s with acute and dot above\nṥ latin small letter s with acute and dot above\nṦ latin capital letter s with caron and dot above\nṧ latin small letter s with caron and dot above\nṨ latin capital letter s with dot below and dot above\nṩ latin small letter s with dot below and dot above\nṪ latin capital letter t with dot above\nṫ latin small letter t with dot above\nṬ latin capital letter t with dot below\nṭ latin small letter t with dot below\nṮ latin capital letter t with line below\nṯ latin small letter t with line below\nṰ latin capital letter t with circumflex below\nṱ latin small letter t with circumflex below\nṲ latin capital letter u with diaeresis below\nṳ latin small letter u with diaeresis below\nṴ latin capital letter u with tilde below\nṵ latin small letter u with tilde below\nṶ latin capital letter u with circumflex below\nṷ latin small letter u with circumflex below\nṸ latin capital letter u with tilde and acute\nṹ latin small letter u with tilde and acute\nṺ latin capital letter u with macron and diaeresis\nṻ latin small letter u with macron and diaeresis\nṼ latin capital letter v with tilde\nṽ latin small letter v with tilde\nṾ latin capital letter v with dot below\nṿ latin small letter v with dot below\nẀ latin capital letter w with grave\nẁ latin small letter w with grave\nẂ latin capital letter w with acute\nẃ latin small letter w with acute\nẄ latin capital letter w with diaeresis\nẅ latin small letter w with diaeresis\nẆ latin capital letter w with dot above\nẇ latin small letter w with dot above\nẈ latin capital letter w with dot below\nẉ latin small letter w with dot below\nẊ latin capital letter x with dot above\nẋ latin small letter x with dot above\nẌ latin capital letter x with diaeresis\nẍ latin small letter x with diaeresis\nẎ latin capital letter y with dot above\nẏ latin small letter y with dot above\nẐ latin capital letter z with circumflex\nẑ latin small letter z with circumflex\nẒ latin capital letter z with dot below\nẓ latin small letter z with dot below\nẔ latin capital letter z with line below\nẕ latin small letter z with line below\nẖ latin small letter h with line below\nẗ latin small letter t with diaeresis\nẘ latin small letter w with ring above\nẙ latin small letter y with ring above\nẚ latin small letter a with right half ring\nẛ latin small letter long s with dot above\nẜ latin small letter long s with diagonal stroke\nẝ latin small letter long s with high stroke\nẞ latin capital letter sharp s\nẟ latin small letter delta\nẠ latin capital letter a with dot below\nạ latin small letter a with dot below\nẢ latin capital letter a with hook above\nả latin small letter a with hook above\nẤ latin capital letter a with circumflex and acute\nấ latin small letter a with circumflex and acute\nẦ latin capital letter a with circumflex and grave\nầ latin small letter a with circumflex and grave\nẨ latin capital letter a with circumflex and hook above\nẩ latin small letter a with circumflex and hook above\nẪ latin capital letter a with circumflex and tilde\nẫ latin small letter a with circumflex and tilde\nẬ latin capital letter a with circumflex and dot below\nậ latin small letter a with circumflex and dot below\nẮ latin capital letter a with breve and acute\nắ latin small letter a with breve and acute\nẰ latin capital letter a with breve and grave\nằ latin small letter a with breve and grave\nẲ latin capital letter a with breve and hook above\nẳ latin small letter a with breve and hook above\nẴ latin capital letter a with breve and tilde\nẵ latin small letter a with breve and tilde\nẶ latin capital letter a with breve and dot below\nặ latin small letter a with breve and dot below\nẸ latin capital letter e with dot below\nẹ latin small letter e with dot below\nẺ latin capital letter e with hook above\nẻ latin small letter e with hook above\nẼ latin capital letter e with tilde\nẽ latin small letter e with tilde\nẾ latin capital letter e with circumflex and acute\nế latin small letter e with circumflex and acute\nỀ latin capital letter e with circumflex and grave\nề latin small letter e with circumflex and grave\nỂ latin capital letter e with circumflex and hook above\nể latin small letter e with circumflex and hook above\nỄ latin capital letter e with circumflex and tilde\nễ latin small letter e with circumflex and tilde\nỆ latin capital letter e with circumflex and dot below\nệ latin small letter e with circumflex and dot below\nỈ latin capital letter i with hook above\nỉ latin small letter i with hook above\nỊ latin capital letter i with dot below\nị latin small letter i with dot below\nỌ latin capital letter o with dot below\nọ latin small letter o with dot below\nỎ latin capital letter o with hook above\nỏ latin small letter o with hook above\nỐ latin capital letter o with circumflex and acute\nố latin small letter o with circumflex and acute\nỒ latin capital letter o with circumflex and grave\nồ latin small letter o with circumflex and grave\nỔ latin capital letter o with circumflex and hook above\nổ latin small letter o with circumflex and hook above\nỖ latin capital letter o with circumflex and tilde\nỗ latin small letter o with circumflex and tilde\nỘ latin capital letter o with circumflex and dot below\nộ latin small letter o with circumflex and dot below\nỚ latin capital letter o with horn and acute\nớ latin small letter o with horn and acute\nỜ latin capital letter o with horn and grave\nờ latin small letter o with horn and grave\nỞ latin capital letter o with horn and hook above\nở latin small letter o with horn and hook above\nỠ latin capital letter o with horn and tilde\nỡ latin small letter o with horn and tilde\nỢ latin capital letter o with horn and dot below\nợ latin small letter o with horn and dot below\nỤ latin capital letter u with dot below\nụ latin small letter u with dot below\nỦ latin capital letter u with hook above\nủ latin small letter u with hook above\nỨ latin capital letter u with horn and acute\nứ latin small letter u with horn and acute\nỪ latin capital letter u with horn and grave\nừ latin small letter u with horn and grave\nỬ latin capital letter u with horn and hook above\nử latin small letter u with horn and hook above\nỮ latin capital letter u with horn and tilde\nữ latin small letter u with horn and tilde\nỰ latin capital letter u with horn and dot below\nự latin small letter u with horn and dot below\nỲ latin capital letter y with grave\nỳ latin small letter y with grave\nỴ latin capital letter y with dot below\nỵ latin small letter y with dot below\nỶ latin capital letter y with hook above\nỷ latin small letter y with hook above\nỸ latin capital letter y with tilde\nỹ latin small letter y with tilde\nỺ latin capital letter middle-welsh ll\nỻ latin small letter middle-welsh ll\nỼ latin capital letter middle-welsh v\nỽ latin small letter middle-welsh v\nỾ latin capital letter y with loop\nỿ latin small letter y with loop\nἀ greek small letter alpha with psili\nἁ greek small letter alpha with dasia\nἂ greek small letter alpha with psili and varia\nἃ greek small letter alpha with dasia and varia\nἄ greek small letter alpha with psili and oxia\nἅ greek small letter alpha with dasia and oxia\nἆ greek small letter alpha with psili and perispomeni\nἇ greek small letter alpha with dasia and perispomeni\nἈ greek capital letter alpha with psili\nἉ greek capital letter alpha with dasia\nἊ greek capital letter alpha with psili and varia\nἋ greek capital letter alpha with dasia and varia\nἌ greek capital letter alpha with psili and oxia\nἍ greek capital letter alpha with dasia and oxia\nἎ greek capital letter alpha with psili and perispomeni\nἏ greek capital letter alpha with dasia and perispomeni\nἐ greek small letter epsilon with psili\nἑ greek small letter epsilon with dasia\nἒ greek small letter epsilon with psili and varia\nἓ greek small letter epsilon with dasia and varia\nἔ greek small letter epsilon with psili and oxia\nἕ greek small letter epsilon with dasia and oxia\nἘ greek capital letter epsilon with psili\nἙ greek capital letter epsilon with dasia\nἚ greek capital letter epsilon with psili and varia\nἛ greek capital letter epsilon with dasia and varia\nἜ greek capital letter epsilon with psili and oxia\nἝ greek capital letter epsilon with dasia and oxia\nἠ greek small letter eta with psili\nἡ greek small letter eta with dasia\nἢ greek small letter eta with psili and varia\nἣ greek small letter eta with dasia and varia\nἤ greek small letter eta with psili and oxia\nἥ greek small letter eta with dasia and oxia\nἦ greek small letter eta with psili and perispomeni\nἧ greek small letter eta with dasia and perispomeni\nἨ greek capital letter eta with psili\nἩ greek capital letter eta with dasia\nἪ greek capital letter eta with psili and varia\nἫ greek capital letter eta with dasia and varia\nἬ greek capital letter eta with psili and oxia\nἭ greek capital letter eta with dasia and oxia\nἮ greek capital letter eta with psili and perispomeni\nἯ greek capital letter eta with dasia and perispomeni\nἰ greek small letter iota with psili\nἱ greek small letter iota with dasia\nἲ greek small letter iota with psili and varia\nἳ greek small letter iota with dasia and varia\nἴ greek small letter iota with psili and oxia\nἵ greek small letter iota with dasia and oxia\nἶ greek small letter iota with psili and perispomeni\nἷ greek small letter iota with dasia and perispomeni\nἸ greek capital letter iota with psili\nἹ greek capital letter iota with dasia\nἺ greek capital letter iota with psili and varia\nἻ greek capital letter iota with dasia and varia\nἼ greek capital letter iota with psili and oxia\nἽ greek capital letter iota with dasia and oxia\nἾ greek capital letter iota with psili and perispomeni\nἿ greek capital letter iota with dasia and perispomeni\nὀ greek small letter omicron with psili\nὁ greek small letter omicron with dasia\nὂ greek small letter omicron with psili and varia\nὃ greek small letter omicron with dasia and varia\nὄ greek small letter omicron with psili and oxia\nὅ greek small letter omicron with dasia and oxia\nὈ greek capital letter omicron with psili\nὉ greek capital letter omicron with dasia\nὊ greek capital letter omicron with psili and varia\nὋ greek capital letter omicron with dasia and varia\nὌ greek capital letter omicron with psili and oxia\nὍ greek capital letter omicron with dasia and oxia\nὐ greek small letter upsilon with psili\nὑ greek small letter upsilon with dasia\nὒ greek small letter upsilon with psili and varia\nὓ greek small letter upsilon with dasia and varia\nὔ greek small letter upsilon with psili and oxia\nὕ greek small letter upsilon with dasia and oxia\nὖ greek small letter upsilon with psili and perispomeni\nὗ greek small letter upsilon with dasia and perispomeni\nὙ greek capital letter upsilon with dasia\nὛ greek capital letter upsilon with dasia and varia\nὝ greek capital letter upsilon with dasia and oxia\nὟ greek capital letter upsilon with dasia and perispomeni\nὠ greek small letter omega with psili\nὡ greek small letter omega with dasia\nὢ greek small letter omega with psili and varia\nὣ greek small letter omega with dasia and varia\nὤ greek small letter omega with psili and oxia\nὥ greek small letter omega with dasia and oxia\nὦ greek small letter omega with psili and perispomeni\nὧ greek small letter omega with dasia and perispomeni\nὨ greek capital letter omega with psili\nὩ greek capital letter omega with dasia\nὪ greek capital letter omega with psili and varia\nὫ greek capital letter omega with dasia and varia\nὬ greek capital letter omega with psili and oxia\nὭ greek capital letter omega with dasia and oxia\nὮ greek capital letter omega with psili and perispomeni\nὯ greek capital letter omega with dasia and perispomeni\nὰ greek small letter alpha with varia\nά greek small letter alpha with oxia\nὲ greek small letter epsilon with varia\nέ greek small letter epsilon with oxia\nὴ greek small letter eta with varia\nή greek small letter eta with oxia\nὶ greek small letter iota with varia\nί greek small letter iota with oxia\nὸ greek small letter omicron with varia\nό greek small letter omicron with oxia\nὺ greek small letter upsilon with varia\nύ greek small letter upsilon with oxia\nὼ greek small letter omega with varia\nώ greek small letter omega with oxia\nᾀ greek small letter alpha with psili and ypogegrammeni\nᾁ greek small letter alpha with dasia and ypogegrammeni\nᾂ greek small letter alpha with psili and varia and ypogegrammeni\nᾃ greek small letter alpha with dasia and varia and ypogegrammeni\nᾄ greek small letter alpha with psili and oxia and ypogegrammeni\nᾅ greek small letter alpha with dasia and oxia and ypogegrammeni\nᾆ greek small letter alpha with psili and perispomeni and ypogegrammeni\nᾇ greek small letter alpha with dasia and perispomeni and ypogegrammeni\nᾈ greek capital letter alpha with psili and prosgegrammeni\nᾉ greek capital letter alpha with dasia and prosgegrammeni\nᾊ greek capital letter alpha with psili and varia and prosgegrammeni\nᾋ greek capital letter alpha with dasia and varia and prosgegrammeni\nᾌ greek capital letter alpha with psili and oxia and prosgegrammeni\nᾍ greek capital letter alpha with dasia and oxia and prosgegrammeni\nᾎ greek capital letter alpha with psili and perispomeni and prosgegrammeni\nᾏ greek capital letter alpha with dasia and perispomeni and prosgegrammeni\nᾐ greek small letter eta with psili and ypogegrammeni\nᾑ greek small letter eta with dasia and ypogegrammeni\nᾒ greek small letter eta with psili and varia and ypogegrammeni\nᾓ greek small letter eta with dasia and varia and ypogegrammeni\nᾔ greek small letter eta with psili and oxia and ypogegrammeni\nᾕ greek small letter eta with dasia and oxia and ypogegrammeni\nᾖ greek small letter eta with psili and perispomeni and ypogegrammeni\nᾗ greek small letter eta with dasia and perispomeni and ypogegrammeni\nᾘ greek capital letter eta with psili and prosgegrammeni\nᾙ greek capital letter eta with dasia and prosgegrammeni\nᾚ greek capital letter eta with psili and varia and prosgegrammeni\nᾛ greek capital letter eta with dasia and varia and prosgegrammeni\nᾜ greek capital letter eta with psili and oxia and prosgegrammeni\nᾝ greek capital letter eta with dasia and oxia and prosgegrammeni\nᾞ greek capital letter eta with psili and perispomeni and prosgegrammeni\nᾟ greek capital letter eta with dasia and perispomeni and prosgegrammeni\nᾠ greek small letter omega with psili and ypogegrammeni\nᾡ greek small letter omega with dasia and ypogegrammeni\nᾢ greek small letter omega with psili and varia and ypogegrammeni\nᾣ greek small letter omega with dasia and varia and ypogegrammeni\nᾤ greek small letter omega with psili and oxia and ypogegrammeni\nᾥ greek small letter omega with dasia and oxia and ypogegrammeni\nᾦ greek small letter omega with psili and perispomeni and ypogegrammeni\nᾧ greek small letter omega with dasia and perispomeni and ypogegrammeni\nᾨ greek capital letter omega with psili and prosgegrammeni\nᾩ greek capital letter omega with dasia and prosgegrammeni\nᾪ greek capital letter omega with psili and varia and prosgegrammeni\nᾫ greek capital letter omega with dasia and varia and prosgegrammeni\nᾬ greek capital letter omega with psili and oxia and prosgegrammeni\nᾭ greek capital letter omega with dasia and oxia and prosgegrammeni\nᾮ greek capital letter omega with psili and perispomeni and prosgegrammeni\nᾯ greek capital letter omega with dasia and perispomeni and prosgegrammeni\nᾰ greek small letter alpha with vrachy\nᾱ greek small letter alpha with macron\nᾲ greek small letter alpha with varia and ypogegrammeni\nᾳ greek small letter alpha with ypogegrammeni\nᾴ greek small letter alpha with oxia and ypogegrammeni\nᾶ greek small letter alpha with perispomeni\nᾷ greek small letter alpha with perispomeni and ypogegrammeni\nᾸ greek capital letter alpha with vrachy\nᾹ greek capital letter alpha with macron\nᾺ greek capital letter alpha with varia\nΆ greek capital letter alpha with oxia\nᾼ greek capital letter alpha with prosgegrammeni\n᾽ greek koronis\nι greek prosgegrammeni\n᾿ greek psili\n῀ greek perispomeni\n῁ greek dialytika and perispomeni\nῂ greek small letter eta with varia and ypogegrammeni\nῃ greek small letter eta with ypogegrammeni\nῄ greek small letter eta with oxia and ypogegrammeni\nῆ greek small letter eta with perispomeni\nῇ greek small letter eta with perispomeni and ypogegrammeni\nῈ greek capital letter epsilon with varia\nΈ greek capital letter epsilon with oxia\nῊ greek capital letter eta with varia\nΉ greek capital letter eta with oxia\nῌ greek capital letter eta with prosgegrammeni\n῍ greek psili and varia\n῎ greek psili and oxia\n῏ greek psili and perispomeni\nῐ greek small letter iota with vrachy\nῑ greek small letter iota with macron\nῒ greek small letter iota with dialytika and varia\nΐ greek small letter iota with dialytika and oxia\nῖ greek small letter iota with perispomeni\nῗ greek small letter iota with dialytika and perispomeni\nῘ greek capital letter iota with vrachy\nῙ greek capital letter iota with macron\nῚ greek capital letter iota with varia\nΊ greek capital letter iota with oxia\n῝ greek dasia and varia\n῞ greek dasia and oxia\n῟ greek dasia and perispomeni\nῠ greek small letter upsilon with vrachy\nῡ greek small letter upsilon with macron\nῢ greek small letter upsilon with dialytika and varia\nΰ greek small letter upsilon with dialytika and oxia\nῤ greek small letter rho with psili\nῥ greek small letter rho with dasia\nῦ greek small letter upsilon with perispomeni\nῧ greek small letter upsilon with dialytika and perispomeni\nῨ greek capital letter upsilon with vrachy\nῩ greek capital letter upsilon with macron\nῪ greek capital letter upsilon with varia\nΎ greek capital letter upsilon with oxia\nῬ greek capital letter rho with dasia\n῭ greek dialytika and varia\n΅ greek dialytika and oxia\n` greek varia\nῲ greek small letter omega with varia and ypogegrammeni\nῳ greek small letter omega with ypogegrammeni\nῴ greek small letter omega with oxia and ypogegrammeni\nῶ greek small letter omega with perispomeni\nῷ greek small letter omega with perispomeni and ypogegrammeni\nῸ greek capital letter omicron with varia\nΌ greek capital letter omicron with oxia\nῺ greek capital letter omega with varia\nΏ greek capital letter omega with oxia\nῼ greek capital letter omega with prosgegrammeni\n´ greek oxia\n῾ greek dasia\n  en quad\n  em quad\n  en space\n  em space\n  three-per-em space\n  four-per-em space\n  six-per-em space\n  figure space\n  punctuation space\n  thin space\n  hair space\n‐ hyphen\n‑ non-breaking hyphen\n‒ figure dash\n– en dash\n— em dash\n― horizontal bar\n‖ double vertical line\n‗ double low line\n‘ left single quotation mark\n’ right single quotation mark\n‚ single low-9 quotation mark\n‛ single high-reversed-9 quotation mark\n“ left double quotation mark\n” right double quotation mark\n„ double low-9 quotation mark\n‟ double high-reversed-9 quotation mark\n† dagger\n‡ double dagger\n• bullet\n‣ triangular bullet\n․ one dot leader\n‥ two dot leader\n… horizontal ellipsis\n‧ hyphenation point\n  line separator\n  paragraph separator\n  narrow no-break space\n‰ per mille sign\n‱ per ten thousand sign\n′ prime\n″ double prime\n‴ triple prime\n‵ reversed prime\n‶ reversed double prime\n‷ reversed triple prime\n‸ caret\n‹ single left-pointing angle quotation mark\n› single right-pointing angle quotation mark\n※ reference mark\n‼ double exclamation mark\n‽ interrobang\n‾ overline\n‿ undertie\n⁀ character tie\n⁁ caret insertion point\n⁂ asterism\n⁃ hyphen bullet\n⁄ fraction slash\n⁅ left square bracket with quill\n⁆ right square bracket with quill\n⁇ double question mark\n⁈ question exclamation mark\n⁉ exclamation question mark\n⁊ tironian sign et\n⁋ reversed pilcrow sign\n⁌ black leftwards bullet\n⁍ black rightwards bullet\n⁎ low asterisk\n⁏ reversed semicolon\n⁐ close up\n⁑ two asterisks aligned vertically\n⁒ commercial minus sign\n⁓ swung dash\n⁔ inverted undertie\n⁕ flower punctuation mark\n⁖ three dot punctuation\n⁗ quadruple prime\n⁘ four dot punctuation\n⁙ five dot punctuation\n⁚ two dot punctuation\n⁛ four dot mark\n⁜ dotted cross\n⁝ tricolon\n⁞ vertical four dots\n  medium mathematical space\n⁰ superscript zero\nⁱ superscript latin small letter i\n⁴ superscript four\n⁵ superscript five\n⁶ superscript six\n⁷ superscript seven\n⁸ superscript eight\n⁹ superscript nine\n⁺ superscript plus sign\n⁻ superscript minus\n⁼ superscript equals sign\n⁽ superscript left parenthesis\n⁾ superscript right parenthesis\nⁿ superscript latin small letter n\n₀ subscript zero\n₁ subscript one\n₂ subscript two\n₃ subscript three\n₄ subscript four\n₅ subscript five\n₆ subscript six\n₇ subscript seven\n₈ subscript eight\n₉ subscript nine\n₊ subscript plus sign\n₋ subscript minus\n₌ subscript equals sign\n₍ subscript left parenthesis\n₎ subscript right parenthesis\nₐ latin subscript small letter a\nₑ latin subscript small letter e\nₒ latin subscript small letter o\nₓ latin subscript small letter x\nₔ latin subscript small letter schwa\nₕ latin subscript small letter h\nₖ latin subscript small letter k\nₗ latin subscript small letter l\nₘ latin subscript small letter m\nₙ latin subscript small letter n\nₚ latin subscript small letter p\nₛ latin subscript small letter s\nₜ latin subscript small letter t\n₠ euro-currency sign\n₡ colon sign\n₢ cruzeiro sign\n₣ french franc sign\n₤ lira sign\n₥ mill sign\n₦ naira sign\n₧ peseta sign\n₨ rupee sign\n₩ won sign\n₪ new sheqel sign\n₫ dong sign\n€ euro sign\n₭ kip sign\n₮ tugrik sign\n₯ drachma sign\n₰ german penny sign\n₱ peso sign\n₲ guarani sign\n₳ austral sign\n₴ hryvnia sign\n₵ cedi sign\n₶ livre tournois sign\n₷ spesmilo sign\n₸ tenge sign\n₹ indian rupee sign\n₺ turkish lira sign\n₻ nordic mark sign\n₼ manat sign\n₽ ruble sign\n₾ lari sign\n℀ account of\n℁ addressed to the subject\nℂ double-struck capital c\n℃ degree celsius\n℄ centre line symbol\n℅ care of\n℆ cada una\nℇ euler constant\n℈ scruple\n℉ degree fahrenheit\nℊ script small g\nℋ script capital h\nℌ black-letter capital h\nℍ double-struck capital h\nℎ planck constant\nℏ planck constant over two pi\nℐ script capital i\nℑ black-letter capital i\nℒ script capital l\nℓ script small l\n℔ l b bar symbol\nℕ double-struck capital n\n№ numero sign\n℗ sound recording copyright\n℘ script capital p\nℙ double-struck capital p\nℚ double-struck capital q\nℛ script capital r\nℜ black-letter capital r\nℝ double-struck capital r\n℞ prescription take\n℟ response\n℠ service mark\n℡ telephone sign\n™ trade mark sign\n℣ versicle\nℤ double-struck capital z\n℥ ounce sign\nΩ ohm sign\n℧ inverted ohm sign\nℨ black-letter capital z\n℩ turned greek small letter iota\nK kelvin sign\nÅ angstrom sign\nℬ script capital b\nℭ black-letter capital c\n℮ estimated symbol\nℯ script small e\nℰ script capital e\nℱ script capital f\nℲ turned capital f\nℳ script capital m\nℴ script small o\nℵ alef symbol\nℶ bet symbol\nℷ gimel symbol\nℸ dalet symbol\nℹ information source\n℺ rotated capital q\n℻ facsimile sign\nℼ double-struck small pi\nℽ double-struck small gamma\nℾ double-struck capital gamma\nℿ double-struck capital pi\n⅀ double-struck n-ary summation\n⅁ turned sans-serif capital g\n⅂ turned sans-serif capital l\n⅃ reversed sans-serif capital l\n⅄ turned sans-serif capital y\nⅅ double-struck italic capital d\nⅆ double-struck italic small d\nⅇ double-struck italic small e\nⅈ double-struck italic small i\nⅉ double-struck italic small j\n⅊ property line\n⅋ turned ampersand\n⅌ per sign\n⅍ aktieselskab\nⅎ turned small f\n⅏ symbol for samaritan source\n⅐ vulgar fraction one seventh\n⅑ vulgar fraction one ninth\n⅒ vulgar fraction one tenth\n⅓ vulgar fraction one third\n⅔ vulgar fraction two thirds\n⅕ vulgar fraction one fifth\n⅖ vulgar fraction two fifths\n⅗ vulgar fraction three fifths\n⅘ vulgar fraction four fifths\n⅙ vulgar fraction one sixth\n⅚ vulgar fraction five sixths\n⅛ vulgar fraction one eighth\n⅜ vulgar fraction three eighths\n⅝ vulgar fraction five eighths\n⅞ vulgar fraction seven eighths\n⅟ fraction numerator one\nⅠ roman numeral one\nⅡ roman numeral two\nⅢ roman numeral three\nⅣ roman numeral four\nⅤ roman numeral five\nⅥ roman numeral six\nⅦ roman numeral seven\nⅧ roman numeral eight\nⅨ roman numeral nine\nⅩ roman numeral ten\nⅪ roman numeral eleven\nⅫ roman numeral twelve\nⅬ roman numeral fifty\nⅭ roman numeral one hundred\nⅮ roman numeral five hundred\nⅯ roman numeral one thousand\nⅰ small roman numeral one\nⅱ small roman numeral two\nⅲ small roman numeral three\nⅳ small roman numeral four\nⅴ small roman numeral five\nⅵ small roman numeral six\nⅶ small roman numeral seven\nⅷ small roman numeral eight\nⅸ small roman numeral nine\nⅹ small roman numeral ten\nⅺ small roman numeral eleven\nⅻ small roman numeral twelve\nⅼ small roman numeral fifty\nⅽ small roman numeral one hundred\nⅾ small roman numeral five hundred\nⅿ small roman numeral one thousand\nↀ roman numeral one thousand c d\nↁ roman numeral five thousand\nↂ roman numeral ten thousand\nↃ roman numeral reversed one hundred\nↄ latin small letter reversed c\nↅ roman numeral six late form\nↆ roman numeral fifty early form\nↇ roman numeral fifty thousand\nↈ roman numeral one hundred thousand\n↉ vulgar fraction zero thirds\n↊ turned digit two\n↋ turned digit three\n← leftwards arrow\n↑ upwards arrow\n→ rightwards arrow\n↓ downwards arrow\n↔ left right arrow\n↕ up down arrow\n↖ north west arrow\n↗ north east arrow\n↘ south east arrow\n↙ south west arrow\n↚ leftwards arrow with stroke\n↛ rightwards arrow with stroke\n↜ leftwards wave arrow\n↝ rightwards wave arrow\n↞ leftwards two headed arrow\n↟ upwards two headed arrow\n↠ rightwards two headed arrow\n↡ downwards two headed arrow\n↢ leftwards arrow with tail\n↣ rightwards arrow with tail\n↤ leftwards arrow from bar\n↥ upwards arrow from bar\n↦ rightwards arrow from bar\n↧ downwards arrow from bar\n↨ up down arrow with base\n↩ leftwards arrow with hook\n↪ rightwards arrow with hook\n↫ leftwards arrow with loop\n↬ rightwards arrow with loop\n↭ left right wave arrow\n↮ left right arrow with stroke\n↯ downwards zigzag arrow\n↰ upwards arrow with tip leftwards\n↱ upwards arrow with tip rightwards\n↲ downwards arrow with tip leftwards\n↳ downwards arrow with tip rightwards\n↴ rightwards arrow with corner downwards\n↵ downwards arrow with corner leftwards\n↶ anticlockwise top semicircle arrow\n↷ clockwise top semicircle arrow\n↸ north west arrow to long bar\n↹ leftwards arrow to bar over rightwards arrow to bar\n↺ anticlockwise open circle arrow\n↻ clockwise open circle arrow\n↼ leftwards harpoon with barb upwards\n↽ leftwards harpoon with barb downwards\n↾ upwards harpoon with barb rightwards\n↿ upwards harpoon with barb leftwards\n⇀ rightwards harpoon with barb upwards\n⇁ rightwards harpoon with barb downwards\n⇂ downwards harpoon with barb rightwards\n⇃ downwards harpoon with barb leftwards\n⇄ rightwards arrow over leftwards arrow\n⇅ upwards arrow leftwards of downwards arrow\n⇆ leftwards arrow over rightwards arrow\n⇇ leftwards paired arrows\n⇈ upwards paired arrows\n⇉ rightwards paired arrows\n⇊ downwards paired arrows\n⇋ leftwards harpoon over rightwards harpoon\n⇌ rightwards harpoon over leftwards harpoon\n⇍ leftwards double arrow with stroke\n⇎ left right double arrow with stroke\n⇏ rightwards double arrow with stroke\n⇐ leftwards double arrow\n⇑ upwards double arrow\n⇒ rightwards double arrow\n⇓ downwards double arrow\n⇔ left right double arrow\n⇕ up down double arrow\n⇖ north west double arrow\n⇗ north east double arrow\n⇘ south east double arrow\n⇙ south west double arrow\n⇚ leftwards triple arrow\n⇛ rightwards triple arrow\n⇜ leftwards squiggle arrow\n⇝ rightwards squiggle arrow\n⇞ upwards arrow with double stroke\n⇟ downwards arrow with double stroke\n⇠ leftwards dashed arrow\n⇡ upwards dashed arrow\n⇢ rightwards dashed arrow\n⇣ downwards dashed arrow\n⇤ leftwards arrow to bar\n⇥ rightwards arrow to bar\n⇦ leftwards white arrow\n⇧ upwards white arrow\n⇨ rightwards white arrow\n⇩ downwards white arrow\n⇪ upwards white arrow from bar\n⇫ upwards white arrow on pedestal\n⇬ upwards white arrow on pedestal with horizontal bar\n⇭ upwards white arrow on pedestal with vertical bar\n⇮ upwards white double arrow\n⇯ upwards white double arrow on pedestal\n⇰ rightwards white arrow from wall\n⇱ north west arrow to corner\n⇲ south east arrow to corner\n⇳ up down white arrow\n⇴ right arrow with small circle\n⇵ downwards arrow leftwards of upwards arrow\n⇶ three rightwards arrows\n⇷ leftwards arrow with vertical stroke\n⇸ rightwards arrow with vertical stroke\n⇹ left right arrow with vertical stroke\n⇺ leftwards arrow with double vertical stroke\n⇻ rightwards arrow with double vertical stroke\n⇼ left right arrow with double vertical stroke\n⇽ leftwards open-headed arrow\n⇾ rightwards open-headed arrow\n⇿ left right open-headed arrow\n∀ for all\n∁ complement\n∂ partial differential\n∃ there exists\n∄ there does not exist\n∅ empty set\n∆ increment\n∇ nabla\n∈ element of\n∉ not an element of\n∊ small element of\n∋ contains as member\n∌ does not contain as member\n∍ small contains as member\n∎ end of proof\n∏ n-ary product\n∐ n-ary coproduct\n∑ n-ary summation\n− minus sign\n∓ minus-or-plus sign\n∔ dot plus\n∕ division slash\n∖ set minus\n∗ asterisk operator\n∘ ring operator\n∙ bullet operator\n√ square root\n∛ cube root\n∜ fourth root\n∝ proportional to\n∞ infinity\n∟ right angle\n∠ angle\n∡ measured angle\n∢ spherical angle\n∣ divides\n∤ does not divide\n∥ parallel to\n∦ not parallel to\n∧ logical and\n∨ logical or\n∩ intersection\n∪ union\n∫ integral\n∬ double integral\n∭ triple integral\n∮ contour integral\n∯ surface integral\n∰ volume integral\n∱ clockwise integral\n∲ clockwise contour integral\n∳ anticlockwise contour integral\n∴ therefore\n∵ because\n∶ ratio\n∷ proportion\n∸ dot minus\n∹ excess\n∺ geometric proportion\n∻ homothetic\n∼ tilde operator\n∽ reversed tilde\n∾ inverted lazy s\n∿ sine wave\n≀ wreath product\n≁ not tilde\n≂ minus tilde\n≃ asymptotically equal to\n≄ not asymptotically equal to\n≅ approximately equal to\n≆ approximately but not actually equal to\n≇ neither approximately nor actually equal to\n≈ almost equal to\n≉ not almost equal to\n≊ almost equal or equal to\n≋ triple tilde\n≌ all equal to\n≍ equivalent to\n≎ geometrically equivalent to\n≏ difference between\n≐ approaches the limit\n≑ geometrically equal to\n≒ approximately equal to or the image of\n≓ image of or approximately equal to\n≔ colon equals\n≕ equals colon\n≖ ring in equal to\n≗ ring equal to\n≘ corresponds to\n≙ estimates\n≚ equiangular to\n≛ star equals\n≜ delta equal to\n≝ equal to by definition\n≞ measured by\n≟ questioned equal to\n≠ not equal to\n≡ identical to\n≢ not identical to\n≣ strictly equivalent to\n≤ less-than or equal to\n≥ greater-than or equal to\n≦ less-than over equal to\n≧ greater-than over equal to\n≨ less-than but not equal to\n≩ greater-than but not equal to\n≪ much less-than\n≫ much greater-than\n≬ between\n≭ not equivalent to\n≮ not less-than\n≯ not greater-than\n≰ neither less-than nor equal to\n≱ neither greater-than nor equal to\n≲ less-than or equivalent to\n≳ greater-than or equivalent to\n≴ neither less-than nor equivalent to\n≵ neither greater-than nor equivalent to\n≶ less-than or greater-than\n≷ greater-than or less-than\n≸ neither less-than nor greater-than\n≹ neither greater-than nor less-than\n≺ precedes\n≻ succeeds\n≼ precedes or equal to\n≽ succeeds or equal to\n≾ precedes or equivalent to\n≿ succeeds or equivalent to\n⊀ does not precede\n⊁ does not succeed\n⊂ subset of\n⊃ superset of\n⊄ not a subset of\n⊅ not a superset of\n⊆ subset of or equal to\n⊇ superset of or equal to\n⊈ neither a subset of nor equal to\n⊉ neither a superset of nor equal to\n⊊ subset of with not equal to\n⊋ superset of with not equal to\n⊌ multiset\n⊍ multiset multiplication\n⊎ multiset union\n⊏ square image of\n⊐ square original of\n⊑ square image of or equal to\n⊒ square original of or equal to\n⊓ square cap\n⊔ square cup\n⊕ circled plus\n⊖ circled minus\n⊗ circled times\n⊘ circled division slash\n⊙ circled dot operator\n⊚ circled ring operator\n⊛ circled asterisk operator\n⊜ circled equals\n⊝ circled dash\n⊞ squared plus\n⊟ squared minus\n⊠ squared times\n⊡ squared dot operator\n⊢ right tack\n⊣ left tack\n⊤ down tack\n⊥ up tack\n⊦ assertion\n⊧ models\n⊨ true\n⊩ forces\n⊪ triple vertical bar right turnstile\n⊫ double vertical bar double right turnstile\n⊬ does not prove\n⊭ not true\n⊮ does not force\n⊯ negated double vertical bar double right turnstile\n⊰ precedes under relation\n⊱ succeeds under relation\n⊲ normal subgroup of\n⊳ contains as normal subgroup\n⊴ normal subgroup of or equal to\n⊵ contains as normal subgroup or equal to\n⊶ original of\n⊷ image of\n⊸ multimap\n⊹ hermitian conjugate matrix\n⊺ intercalate\n⊻ xor\n⊼ nand\n⊽ nor\n⊾ right angle with arc\n⊿ right triangle\n⋀ n-ary logical and\n⋁ n-ary logical or\n⋂ n-ary intersection\n⋃ n-ary union\n⋄ diamond operator\n⋅ dot operator\n⋆ star operator\n⋇ division times\n⋈ bowtie\n⋉ left normal factor semidirect product\n⋊ right normal factor semidirect product\n⋋ left semidirect product\n⋌ right semidirect product\n⋍ reversed tilde equals\n⋎ curly logical or\n⋏ curly logical and\n⋐ double subset\n⋑ double superset\n⋒ double intersection\n⋓ double union\n⋔ pitchfork\n⋕ equal and parallel to\n⋖ less-than with dot\n⋗ greater-than with dot\n⋘ very much less-than\n⋙ very much greater-than\n⋚ less-than equal to or greater-than\n⋛ greater-than equal to or less-than\n⋜ equal to or less-than\n⋝ equal to or greater-than\n⋞ equal to or precedes\n⋟ equal to or succeeds\n⋠ does not precede or equal\n⋡ does not succeed or equal\n⋢ not square image of or equal to\n⋣ not square original of or equal to\n⋤ square image of or not equal to\n⋥ square original of or not equal to\n⋦ less-than but not equivalent to\n⋧ greater-than but not equivalent to\n⋨ precedes but not equivalent to\n⋩ succeeds but not equivalent to\n⋪ not normal subgroup of\n⋫ does not contain as normal subgroup\n⋬ not normal subgroup of or equal to\n⋭ does not contain as normal subgroup or equal\n⋮ vertical ellipsis\n⋯ midline horizontal ellipsis\n⋰ up right diagonal ellipsis\n⋱ down right diagonal ellipsis\n⋲ element of with long horizontal stroke\n⋳ element of with vertical bar at end of horizontal stroke\n⋴ small element of with vertical bar at end of horizontal stroke\n⋵ element of with dot above\n⋶ element of with overbar\n⋷ small element of with overbar\n⋸ element of with underbar\n⋹ element of with two horizontal strokes\n⋺ contains with long horizontal stroke\n⋻ contains with vertical bar at end of horizontal stroke\n⋼ small contains with vertical bar at end of horizontal stroke\n⋽ contains with overbar\n⋾ small contains with overbar\n⋿ z notation bag membership\n⌀ diameter sign\n⌁ electric arrow\n⌂ house\n⌃ up arrowhead\n⌄ down arrowhead\n⌅ projective\n⌆ perspective\n⌇ wavy line\n⌈ left ceiling\n⌉ right ceiling\n⌊ left floor\n⌋ right floor\n⌌ bottom right crop\n⌍ bottom left crop\n⌎ top right crop\n⌏ top left crop\n⌐ reversed not sign\n⌑ square lozenge\n⌒ arc\n⌓ segment\n⌔ sector\n⌕ telephone recorder\n⌖ position indicator\n⌗ viewdata square\n⌘ place of interest sign\n⌙ turned not sign\n⌚ watch\n⌛ hourglass\n⌜ top left corner\n⌝ top right corner\n⌞ bottom left corner\n⌟ bottom right corner\n⌠ top half integral\n⌡ bottom half integral\n⌢ frown\n⌣ smile\n⌤ up arrowhead between two horizontal bars\n⌥ option key\n⌦ erase to the right\n⌧ x in a rectangle box\n⌨ keyboard\n〈 left-pointing angle bracket\n〉 right-pointing angle bracket\n⌫ erase to the left\n⌬ benzene ring\n⌭ cylindricity\n⌮ all around-profile\n⌯ symmetry\n⌰ total runout\n⌱ dimension origin\n⌲ conical taper\n⌳ slope\n⌴ counterbore\n⌵ countersink\n⌶ apl functional symbol i-beam\n⌷ apl functional symbol squish quad\n⌸ apl functional symbol quad equal\n⌹ apl functional symbol quad divide\n⌺ apl functional symbol quad diamond\n⌻ apl functional symbol quad jot\n⌼ apl functional symbol quad circle\n⌽ apl functional symbol circle stile\n⌾ apl functional symbol circle jot\n⌿ apl functional symbol slash bar\n⍀ apl functional symbol backslash bar\n⍁ apl functional symbol quad slash\n⍂ apl functional symbol quad backslash\n⍃ apl functional symbol quad less-than\n⍄ apl functional symbol quad greater-than\n⍅ apl functional symbol leftwards vane\n⍆ apl functional symbol rightwards vane\n⍇ apl functional symbol quad leftwards arrow\n⍈ apl functional symbol quad rightwards arrow\n⍉ apl functional symbol circle backslash\n⍊ apl functional symbol down tack underbar\n⍋ apl functional symbol delta stile\n⍌ apl functional symbol quad down caret\n⍍ apl functional symbol quad delta\n⍎ apl functional symbol down tack jot\n⍏ apl functional symbol upwards vane\n⍐ apl functional symbol quad upwards arrow\n⍑ apl functional symbol up tack overbar\n⍒ apl functional symbol del stile\n⍓ apl functional symbol quad up caret\n⍔ apl functional symbol quad del\n⍕ apl functional symbol up tack jot\n⍖ apl functional symbol downwards vane\n⍗ apl functional symbol quad downwards arrow\n⍘ apl functional symbol quote underbar\n⍙ apl functional symbol delta underbar\n⍚ apl functional symbol diamond underbar\n⍛ apl functional symbol jot underbar\n⍜ apl functional symbol circle underbar\n⍝ apl functional symbol up shoe jot\n⍞ apl functional symbol quote quad\n⍟ apl functional symbol circle star\n⍠ apl functional symbol quad colon\n⍡ apl functional symbol up tack diaeresis\n⍢ apl functional symbol del diaeresis\n⍣ apl functional symbol star diaeresis\n⍤ apl functional symbol jot diaeresis\n⍥ apl functional symbol circle diaeresis\n⍦ apl functional symbol down shoe stile\n⍧ apl functional symbol left shoe stile\n⍨ apl functional symbol tilde diaeresis\n⍩ apl functional symbol greater-than diaeresis\n⍪ apl functional symbol comma bar\n⍫ apl functional symbol del tilde\n⍬ apl functional symbol zilde\n⍭ apl functional symbol stile tilde\n⍮ apl functional symbol semicolon underbar\n⍯ apl functional symbol quad not equal\n⍰ apl functional symbol quad question\n⍱ apl functional symbol down caret tilde\n⍲ apl functional symbol up caret tilde\n⍳ apl functional symbol iota\n⍴ apl functional symbol rho\n⍵ apl functional symbol omega\n⍶ apl functional symbol alpha underbar\n⍷ apl functional symbol epsilon underbar\n⍸ apl functional symbol iota underbar\n⍹ apl functional symbol omega underbar\n⍺ apl functional symbol alpha\n⍻ not check mark\n⍼ right angle with downwards zigzag arrow\n⍽ shouldered open box\n⍾ bell symbol\n⍿ vertical line with middle dot\n⎀ insertion symbol\n⎁ continuous underline symbol\n⎂ discontinuous underline symbol\n⎃ emphasis symbol\n⎄ composition symbol\n⎅ white square with centre vertical line\n⎆ enter symbol\n⎇ alternative key symbol\n⎈ helm symbol\n⎉ circled horizontal bar with notch\n⎊ circled triangle down\n⎋ broken circle with northwest arrow\n⎌ undo symbol\n⎍ monostable symbol\n⎎ hysteresis symbol\n⎏ open-circuit-output h-type symbol\n⎐ open-circuit-output l-type symbol\n⎑ passive-pull-down-output symbol\n⎒ passive-pull-up-output symbol\n⎓ direct current symbol form two\n⎔ software-function symbol\n⎕ apl functional symbol quad\n⎖ decimal separator key symbol\n⎗ previous page\n⎘ next page\n⎙ print screen symbol\n⎚ clear screen symbol\n⎛ left parenthesis upper hook\n⎜ left parenthesis extension\n⎝ left parenthesis lower hook\n⎞ right parenthesis upper hook\n⎟ right parenthesis extension\n⎠ right parenthesis lower hook\n⎡ left square bracket upper corner\n⎢ left square bracket extension\n⎣ left square bracket lower corner\n⎤ right square bracket upper corner\n⎥ right square bracket extension\n⎦ right square bracket lower corner\n⎧ left curly bracket upper hook\n⎨ left curly bracket middle piece\n⎩ left curly bracket lower hook\n⎪ curly bracket extension\n⎫ right curly bracket upper hook\n⎬ right curly bracket middle piece\n⎭ right curly bracket lower hook\n⎮ integral extension\n⎯ horizontal line extension\n⎰ upper left or lower right curly bracket section\n⎱ upper right or lower left curly bracket section\n⎲ summation top\n⎳ summation bottom\n⎴ top square bracket\n⎵ bottom square bracket\n⎶ bottom square bracket over top square bracket\n⎷ radical symbol bottom\n⎸ left vertical box line\n⎹ right vertical box line\n⎺ horizontal scan line-1\n⎻ horizontal scan line-3\n⎼ horizontal scan line-7\n⎽ horizontal scan line-9\n⎾ dentistry symbol light vertical and top right\n⎿ dentistry symbol light vertical and bottom right\n⏀ dentistry symbol light vertical with circle\n⏁ dentistry symbol light down and horizontal with circle\n⏂ dentistry symbol light up and horizontal with circle\n⏃ dentistry symbol light vertical with triangle\n⏄ dentistry symbol light down and horizontal with triangle\n⏅ dentistry symbol light up and horizontal with triangle\n⏆ dentistry symbol light vertical and wave\n⏇ dentistry symbol light down and horizontal with wave\n⏈ dentistry symbol light up and horizontal with wave\n⏉ dentistry symbol light down and horizontal\n⏊ dentistry symbol light up and horizontal\n⏋ dentistry symbol light vertical and top left\n⏌ dentistry symbol light vertical and bottom left\n⏍ square foot\n⏎ return symbol\n⏏ eject symbol\n⏐ vertical line extension\n⏑ metrical breve\n⏒ metrical long over short\n⏓ metrical short over long\n⏔ metrical long over two shorts\n⏕ metrical two shorts over long\n⏖ metrical two shorts joined\n⏗ metrical triseme\n⏘ metrical tetraseme\n⏙ metrical pentaseme\n⏚ earth ground\n⏛ fuse\n⏜ top parenthesis\n⏝ bottom parenthesis\n⏞ top curly bracket\n⏟ bottom curly bracket\n⏠ top tortoise shell bracket\n⏡ bottom tortoise shell bracket\n⏢ white trapezium\n⏣ benzene ring with circle\n⏤ straightness\n⏥ flatness\n⏦ ac current\n⏧ electrical intersection\n⏨ decimal exponent symbol\n⏩ black right-pointing double triangle\n⏪ black left-pointing double triangle\n⏫ black up-pointing double triangle\n⏬ black down-pointing double triangle\n⏭ black right-pointing double triangle with vertical bar\n⏮ black left-pointing double triangle with vertical bar\n⏯ black right-pointing triangle with double vertical bar\n⏰ alarm clock\n⏱ stopwatch\n⏲ timer clock\n⏳ hourglass with flowing sand\n⏴ black medium left-pointing triangle\n⏵ black medium right-pointing triangle\n⏶ black medium up-pointing triangle\n⏷ black medium down-pointing triangle\n⏸ double vertical bar\n⏹ black square for stop\n⏺ black circle for record\n⏻ power symbol\n⏼ power on-off symbol\n⏽ power on symbol\n⏾ power sleep symbol\n␀ symbol for null\n␁ symbol for start of heading\n␂ symbol for start of text\n␃ symbol for end of text\n␄ symbol for end of transmission\n␅ symbol for enquiry\n␆ symbol for acknowledge\n␇ symbol for bell\n␈ symbol for backspace\n␉ symbol for horizontal tabulation\n␊ symbol for line feed\n␋ symbol for vertical tabulation\n␌ symbol for form feed\n␍ symbol for carriage return\n␎ symbol for shift out\n␏ symbol for shift in\n␐ symbol for data link escape\n␑ symbol for device control one\n␒ symbol for device control two\n␓ symbol for device control three\n␔ symbol for device control four\n␕ symbol for negative acknowledge\n␖ symbol for synchronous idle\n␗ symbol for end of transmission block\n␘ symbol for cancel\n␙ symbol for end of medium\n␚ symbol for substitute\n␛ symbol for escape\n␜ symbol for file separator\n␝ symbol for group separator\n␞ symbol for record separator\n␟ symbol for unit separator\n␠ symbol for space\n␡ symbol for delete\n␢ blank symbol\n␣ open box\n␤ symbol for newline\n␥ symbol for delete form two\n␦ symbol for substitute form two\n⑀ ocr hook\n⑁ ocr chair\n⑂ ocr fork\n⑃ ocr inverted fork\n⑄ ocr belt buckle\n⑅ ocr bow tie\n⑆ ocr branch bank identification\n⑇ ocr amount of check\n⑈ ocr dash\n⑉ ocr customer account number\n⑊ ocr double backslash\n① circled digit one\n② circled digit two\n③ circled digit three\n④ circled digit four\n⑤ circled digit five\n⑥ circled digit six\n⑦ circled digit seven\n⑧ circled digit eight\n⑨ circled digit nine\n⑩ circled number ten\n⑪ circled number eleven\n⑫ circled number twelve\n⑬ circled number thirteen\n⑭ circled number fourteen\n⑮ circled number fifteen\n⑯ circled number sixteen\n⑰ circled number seventeen\n⑱ circled number eighteen\n⑲ circled number nineteen\n⑳ circled number twenty\n⑴ parenthesized digit one\n⑵ parenthesized digit two\n⑶ parenthesized digit three\n⑷ parenthesized digit four\n⑸ parenthesized digit five\n⑹ parenthesized digit six\n⑺ parenthesized digit seven\n⑻ parenthesized digit eight\n⑼ parenthesized digit nine\n⑽ parenthesized number ten\n⑾ parenthesized number eleven\n⑿ parenthesized number twelve\n⒀ parenthesized number thirteen\n⒁ parenthesized number fourteen\n⒂ parenthesized number fifteen\n⒃ parenthesized number sixteen\n⒄ parenthesized number seventeen\n⒅ parenthesized number eighteen\n⒆ parenthesized number nineteen\n⒇ parenthesized number twenty\n⒈ digit one full stop\n⒉ digit two full stop\n⒊ digit three full stop\n⒋ digit four full stop\n⒌ digit five full stop\n⒍ digit six full stop\n⒎ digit seven full stop\n⒏ digit eight full stop\n⒐ digit nine full stop\n⒑ number ten full stop\n⒒ number eleven full stop\n⒓ number twelve full stop\n⒔ number thirteen full stop\n⒕ number fourteen full stop\n⒖ number fifteen full stop\n⒗ number sixteen full stop\n⒘ number seventeen full stop\n⒙ number eighteen full stop\n⒚ number nineteen full stop\n⒛ number twenty full stop\n⒜ parenthesized latin small letter a\n⒝ parenthesized latin small letter b\n⒞ parenthesized latin small letter c\n⒟ parenthesized latin small letter d\n⒠ parenthesized latin small letter e\n⒡ parenthesized latin small letter f\n⒢ parenthesized latin small letter g\n⒣ parenthesized latin small letter h\n⒤ parenthesized latin small letter i\n⒥ parenthesized latin small letter j\n⒦ parenthesized latin small letter k\n⒧ parenthesized latin small letter l\n⒨ parenthesized latin small letter m\n⒩ parenthesized latin small letter n\n⒪ parenthesized latin small letter o\n⒫ parenthesized latin small letter p\n⒬ parenthesized latin small letter q\n⒭ parenthesized latin small letter r\n⒮ parenthesized latin small letter s\n⒯ parenthesized latin small letter t\n⒰ parenthesized latin small letter u\n⒱ parenthesized latin small letter v\n⒲ parenthesized latin small letter w\n⒳ parenthesized latin small letter x\n⒴ parenthesized latin small letter y\n⒵ parenthesized latin small letter z\nⒶ circled latin capital letter a\nⒷ circled latin capital letter b\nⒸ circled latin capital letter c\nⒹ circled latin capital letter d\nⒺ circled latin capital letter e\nⒻ circled latin capital letter f\nⒼ circled latin capital letter g\nⒽ circled latin capital letter h\nⒾ circled latin capital letter i\nⒿ circled latin capital letter j\nⓀ circled latin capital letter k\nⓁ circled latin capital letter l\nⓂ circled latin capital letter m\nⓃ circled latin capital letter n\nⓄ circled latin capital letter o\nⓅ circled latin capital letter p\nⓆ circled latin capital letter q\nⓇ circled latin capital letter r\nⓈ circled latin capital letter s\nⓉ circled latin capital letter t\nⓊ circled latin capital letter u\nⓋ circled latin capital letter v\nⓌ circled latin capital letter w\nⓍ circled latin capital letter x\nⓎ circled latin capital letter y\nⓏ circled latin capital letter z\nⓐ circled latin small letter a\nⓑ circled latin small letter b\nⓒ circled latin small letter c\nⓓ circled latin small letter d\nⓔ circled latin small letter e\nⓕ circled latin small letter f\nⓖ circled latin small letter g\nⓗ circled latin small letter h\nⓘ circled latin small letter i\nⓙ circled latin small letter j\nⓚ circled latin small letter k\nⓛ circled latin small letter l\nⓜ circled latin small letter m\nⓝ circled latin small letter n\nⓞ circled latin small letter o\nⓟ circled latin small letter p\nⓠ circled latin small letter q\nⓡ circled latin small letter r\nⓢ circled latin small letter s\nⓣ circled latin small letter t\nⓤ circled latin small letter u\nⓥ circled latin small letter v\nⓦ circled latin small letter w\nⓧ circled latin small letter x\nⓨ circled latin small letter y\nⓩ circled latin small letter z\n⓪ circled digit zero\n⓫ negative circled number eleven\n⓬ negative circled number twelve\n⓭ negative circled number thirteen\n⓮ negative circled number fourteen\n⓯ negative circled number fifteen\n⓰ negative circled number sixteen\n⓱ negative circled number seventeen\n⓲ negative circled number eighteen\n⓳ negative circled number nineteen\n⓴ negative circled number twenty\n⓵ double circled digit one\n⓶ double circled digit two\n⓷ double circled digit three\n⓸ double circled digit four\n⓹ double circled digit five\n⓺ double circled digit six\n⓻ double circled digit seven\n⓼ double circled digit eight\n⓽ double circled digit nine\n⓾ double circled number ten\n⓿ negative circled digit zero\n─ box drawings light horizontal\n━ box drawings heavy horizontal\n│ box drawings light vertical\n┃ box drawings heavy vertical\n┄ box drawings light triple dash horizontal\n┅ box drawings heavy triple dash horizontal\n┆ box drawings light triple dash vertical\n┇ box drawings heavy triple dash vertical\n┈ box drawings light quadruple dash horizontal\n┉ box drawings heavy quadruple dash horizontal\n┊ box drawings light quadruple dash vertical\n┋ box drawings heavy quadruple dash vertical\n┌ box drawings light down and right\n┍ box drawings down light and right heavy\n┎ box drawings down heavy and right light\n┏ box drawings heavy down and right\n┐ box drawings light down and left\n┑ box drawings down light and left heavy\n┒ box drawings down heavy and left light\n┓ box drawings heavy down and left\n└ box drawings light up and right\n┕ box drawings up light and right heavy\n┖ box drawings up heavy and right light\n┗ box drawings heavy up and right\n┘ box drawings light up and left\n┙ box drawings up light and left heavy\n┚ box drawings up heavy and left light\n┛ box drawings heavy up and left\n├ box drawings light vertical and right\n┝ box drawings vertical light and right heavy\n┞ box drawings up heavy and right down light\n┟ box drawings down heavy and right up light\n┠ box drawings vertical heavy and right light\n┡ box drawings down light and right up heavy\n┢ box drawings up light and right down heavy\n┣ box drawings heavy vertical and right\n┤ box drawings light vertical and left\n┥ box drawings vertical light and left heavy\n┦ box drawings up heavy and left down light\n┧ box drawings down heavy and left up light\n┨ box drawings vertical heavy and left light\n┩ box drawings down light and left up heavy\n┪ box drawings up light and left down heavy\n┫ box drawings heavy vertical and left\n┬ box drawings light down and horizontal\n┭ box drawings left heavy and right down light\n┮ box drawings right heavy and left down light\n┯ box drawings down light and horizontal heavy\n┰ box drawings down heavy and horizontal light\n┱ box drawings right light and left down heavy\n┲ box drawings left light and right down heavy\n┳ box drawings heavy down and horizontal\n┴ box drawings light up and horizontal\n┵ box drawings left heavy and right up light\n┶ box drawings right heavy and left up light\n┷ box drawings up light and horizontal heavy\n┸ box drawings up heavy and horizontal light\n┹ box drawings right light and left up heavy\n┺ box drawings left light and right up heavy\n┻ box drawings heavy up and horizontal\n┼ box drawings light vertical and horizontal\n┽ box drawings left heavy and right vertical light\n┾ box drawings right heavy and left vertical light\n┿ box drawings vertical light and horizontal heavy\n╀ box drawings up heavy and down horizontal light\n╁ box drawings down heavy and up horizontal light\n╂ box drawings vertical heavy and horizontal light\n╃ box drawings left up heavy and right down light\n╄ box drawings right up heavy and left down light\n╅ box drawings left down heavy and right up light\n╆ box drawings right down heavy and left up light\n╇ box drawings down light and up horizontal heavy\n╈ box drawings up light and down horizontal heavy\n╉ box drawings right light and left vertical heavy\n╊ box drawings left light and right vertical heavy\n╋ box drawings heavy vertical and horizontal\n╌ box drawings light double dash horizontal\n╍ box drawings heavy double dash horizontal\n╎ box drawings light double dash vertical\n╏ box drawings heavy double dash vertical\n═ box drawings double horizontal\n║ box drawings double vertical\n╒ box drawings down single and right double\n╓ box drawings down double and right single\n╔ box drawings double down and right\n╕ box drawings down single and left double\n╖ box drawings down double and left single\n╗ box drawings double down and left\n╘ box drawings up single and right double\n╙ box drawings up double and right single\n╚ box drawings double up and right\n╛ box drawings up single and left double\n╜ box drawings up double and left single\n╝ box drawings double up and left\n╞ box drawings vertical single and right double\n╟ box drawings vertical double and right single\n╠ box drawings double vertical and right\n╡ box drawings vertical single and left double\n╢ box drawings vertical double and left single\n╣ box drawings double vertical and left\n╤ box drawings down single and horizontal double\n╥ box drawings down double and horizontal single\n╦ box drawings double down and horizontal\n╧ box drawings up single and horizontal double\n╨ box drawings up double and horizontal single\n╩ box drawings double up and horizontal\n╪ box drawings vertical single and horizontal double\n╫ box drawings vertical double and horizontal single\n╬ box drawings double vertical and horizontal\n╭ box drawings light arc down and right\n╮ box drawings light arc down and left\n╯ box drawings light arc up and left\n╰ box drawings light arc up and right\n╱ box drawings light diagonal upper right to lower left\n╲ box drawings light diagonal upper left to lower right\n╳ box drawings light diagonal cross\n╴ box drawings light left\n╵ box drawings light up\n╶ box drawings light right\n╷ box drawings light down\n╸ box drawings heavy left\n╹ box drawings heavy up\n╺ box drawings heavy right\n╻ box drawings heavy down\n╼ box drawings light left and heavy right\n╽ box drawings light up and heavy down\n╾ box drawings heavy left and light right\n╿ box drawings heavy up and light down\n▀ upper half block\n▁ lower one eighth block\n▂ lower one quarter block\n▃ lower three eighths block\n▄ lower half block\n▅ lower five eighths block\n▆ lower three quarters block\n▇ lower seven eighths block\n█ full block\n▉ left seven eighths block\n▊ left three quarters block\n▋ left five eighths block\n▌ left half block\n▍ left three eighths block\n▎ left one quarter block\n▏ left one eighth block\n▐ right half block\n░ light shade\n▒ medium shade\n▓ dark shade\n▔ upper one eighth block\n▕ right one eighth block\n▖ quadrant lower left\n▗ quadrant lower right\n▘ quadrant upper left\n▙ quadrant upper left and lower left and lower right\n▚ quadrant upper left and lower right\n▛ quadrant upper left and upper right and lower left\n▜ quadrant upper left and upper right and lower right\n▝ quadrant upper right\n▞ quadrant upper right and lower left\n▟ quadrant upper right and lower left and lower right\n■ black square\n□ white square\n▢ white square with rounded corners\n▣ white square containing black small square\n▤ square with horizontal fill\n▥ square with vertical fill\n▦ square with orthogonal crosshatch fill\n▧ square with upper left to lower right fill\n▨ square with upper right to lower left fill\n▩ square with diagonal crosshatch fill\n▪ black small square\n▫ white small square\n▬ black rectangle\n▭ white rectangle\n▮ black vertical rectangle\n▯ white vertical rectangle\n▰ black parallelogram\n▱ white parallelogram\n▲ black up-pointing triangle\n△ white up-pointing triangle\n▴ black up-pointing small triangle\n▵ white up-pointing small triangle\n▶ black right-pointing triangle\n▷ white right-pointing triangle\n▸ black right-pointing small triangle\n▹ white right-pointing small triangle\n► black right-pointing pointer\n▻ white right-pointing pointer\n▼ black down-pointing triangle\n▽ white down-pointing triangle\n▾ black down-pointing small triangle\n▿ white down-pointing small triangle\n◀ black left-pointing triangle\n◁ white left-pointing triangle\n◂ black left-pointing small triangle\n◃ white left-pointing small triangle\n◄ black left-pointing pointer\n◅ white left-pointing pointer\n◆ black diamond\n◇ white diamond\n◈ white diamond containing black small diamond\n◉ fisheye\n◊ lozenge\n○ white circle\n◌ dotted circle\n◍ circle with vertical fill\n◎ bullseye\n● black circle\n◐ circle with left half black\n◑ circle with right half black\n◒ circle with lower half black\n◓ circle with upper half black\n◔ circle with upper right quadrant black\n◕ circle with all but upper left quadrant black\n◖ left half black circle\n◗ right half black circle\n◘ inverse bullet\n◙ inverse white circle\n◚ upper half inverse white circle\n◛ lower half inverse white circle\n◜ upper left quadrant circular arc\n◝ upper right quadrant circular arc\n◞ lower right quadrant circular arc\n◟ lower left quadrant circular arc\n◠ upper half circle\n◡ lower half circle\n◢ black lower right triangle\n◣ black lower left triangle\n◤ black upper left triangle\n◥ black upper right triangle\n◦ white bullet\n◧ square with left half black\n◨ square with right half black\n◩ square with upper left diagonal half black\n◪ square with lower right diagonal half black\n◫ white square with vertical bisecting line\n◬ white up-pointing triangle with dot\n◭ up-pointing triangle with left half black\n◮ up-pointing triangle with right half black\n◯ large circle\n◰ white square with upper left quadrant\n◱ white square with lower left quadrant\n◲ white square with lower right quadrant\n◳ white square with upper right quadrant\n◴ white circle with upper left quadrant\n◵ white circle with lower left quadrant\n◶ white circle with lower right quadrant\n◷ white circle with upper right quadrant\n◸ upper left triangle\n◹ upper right triangle\n◺ lower left triangle\n◻ white medium square\n◼ black medium square\n◽ white medium small square\n◾ black medium small square\n◿ lower right triangle\n☀ black sun with rays\n☁ cloud\n☂ umbrella\n☃ snowman\n☄ comet\n★ black star\n☆ white star\n☇ lightning\n☈ thunderstorm\n☉ sun\n☊ ascending node\n☋ descending node\n☌ conjunction\n☍ opposition\n☎ black telephone\n☏ white telephone\n☐ ballot box\n☑ ballot box with check\n☒ ballot box with x\n☓ saltire\n☔ umbrella with rain drops\n☕ hot beverage\n☖ white shogi piece\n☗ black shogi piece\n☘ shamrock\n☙ reversed rotated floral heart bullet\n☚ black left pointing index\n☛ black right pointing index\n☜ white left pointing index\n☝ white up pointing index\n☞ white right pointing index\n☟ white down pointing index\n☠ skull and crossbones\n☡ caution sign\n☢ radioactive sign\n☣ biohazard sign\n☤ caduceus\n☥ ankh\n☦ orthodox cross\n☧ chi rho\n☨ cross of lorraine\n☩ cross of jerusalem\n☪ star and crescent\n☫ farsi symbol\n☬ adi shakti\n☭ hammer and sickle\n☮ peace symbol\n☯ yin yang\n☰ trigram for heaven\n☱ trigram for lake\n☲ trigram for fire\n☳ trigram for thunder\n☴ trigram for wind\n☵ trigram for water\n☶ trigram for mountain\n☷ trigram for earth\n☸ wheel of dharma\n☹ white frowning face\n☺ white smiling face\n☻ black smiling face\n☼ white sun with rays\n☽ first quarter moon\n☾ last quarter moon\n☿ mercury\n♀ female sign\n♁ earth\n♂ male sign\n♃ jupiter\n♄ saturn\n♅ uranus\n♆ neptune\n♇ pluto\n♈ aries\n♉ taurus\n♊ gemini\n♋ cancer\n♌ leo\n♍ virgo\n♎ libra\n♏ scorpius\n♐ sagittarius\n♑ capricorn\n♒ aquarius\n♓ pisces\n♔ white chess king\n♕ white chess queen\n♖ white chess rook\n♗ white chess bishop\n♘ white chess knight\n♙ white chess pawn\n♚ black chess king\n♛ black chess queen\n♜ black chess rook\n♝ black chess bishop\n♞ black chess knight\n♟ black chess pawn\n♠ black spade suit\n♡ white heart suit\n♢ white diamond suit\n♣ black club suit\n♤ white spade suit\n♥ black heart suit\n♦ black diamond suit\n♧ white club suit\n♨ hot springs\n♩ quarter note\n♪ eighth note\n♫ beamed eighth notes\n♬ beamed sixteenth notes\n♭ music flat sign\n♮ music natural sign\n♯ music sharp sign\n♰ west syriac cross\n♱ east syriac cross\n♲ universal recycling symbol\n♳ recycling symbol for type-1 plastics\n♴ recycling symbol for type-2 plastics\n♵ recycling symbol for type-3 plastics\n♶ recycling symbol for type-4 plastics\n♷ recycling symbol for type-5 plastics\n♸ recycling symbol for type-6 plastics\n♹ recycling symbol for type-7 plastics\n♺ recycling symbol for generic materials\n♻ black universal recycling symbol\n♼ recycled paper symbol\n♽ partially-recycled paper symbol\n♾ permanent paper sign\n♿ wheelchair symbol\n⚀ die face-1\n⚁ die face-2\n⚂ die face-3\n⚃ die face-4\n⚄ die face-5\n⚅ die face-6\n⚆ white circle with dot right\n⚇ white circle with two dots\n⚈ black circle with white dot right\n⚉ black circle with two white dots\n⚊ monogram for yang\n⚋ monogram for yin\n⚌ digram for greater yang\n⚍ digram for lesser yin\n⚎ digram for lesser yang\n⚏ digram for greater yin\n⚐ white flag\n⚑ black flag\n⚒ hammer and pick\n⚓ anchor\n⚔ crossed swords\n⚕ staff of aesculapius\n⚖ scales\n⚗ alembic\n⚘ flower\n⚙ gear\n⚚ staff of hermes\n⚛ atom symbol\n⚜ fleur-de-lis\n⚝ outlined white star\n⚞ three lines converging right\n⚟ three lines converging left\n⚠ warning sign\n⚡ high voltage sign\n⚢ doubled female sign\n⚣ doubled male sign\n⚤ interlocked female and male sign\n⚥ male and female sign\n⚦ male with stroke sign\n⚧ male with stroke and male and female sign\n⚨ vertical male with stroke sign\n⚩ horizontal male with stroke sign\n⚪ medium white circle\n⚫ medium black circle\n⚬ medium small white circle\n⚭ marriage symbol\n⚮ divorce symbol\n⚯ unmarried partnership symbol\n⚰ coffin\n⚱ funeral urn\n⚲ neuter\n⚳ ceres\n⚴ pallas\n⚵ juno\n⚶ vesta\n⚷ chiron\n⚸ black moon lilith\n⚹ sextile\n⚺ semisextile\n⚻ quincunx\n⚼ sesquiquadrate\n⚽ soccer ball\n⚾ baseball\n⚿ squared key\n⛀ white draughts man\n⛁ white draughts king\n⛂ black draughts man\n⛃ black draughts king\n⛄ snowman without snow\n⛅ sun behind cloud\n⛆ rain\n⛇ black snowman\n⛈ thunder cloud and rain\n⛉ turned white shogi piece\n⛊ turned black shogi piece\n⛋ white diamond in square\n⛌ crossing lanes\n⛍ disabled car\n⛎ ophiuchus\n⛏ pick\n⛐ car sliding\n⛑ helmet with white cross\n⛒ circled crossing lanes\n⛓ chains\n⛔ no entry\n⛕ alternate one-way left way traffic\n⛖ black two-way left way traffic\n⛗ white two-way left way traffic\n⛘ black left lane merge\n⛙ white left lane merge\n⛚ drive slow sign\n⛛ heavy white down-pointing triangle\n⛜ left closed entry\n⛝ squared saltire\n⛞ falling diagonal in white circle in black square\n⛟ black truck\n⛠ restricted left entry-1\n⛡ restricted left entry-2\n⛢ astronomical symbol for uranus\n⛣ heavy circle with stroke and two dots above\n⛤ pentagram\n⛥ right-handed interlaced pentagram\n⛦ left-handed interlaced pentagram\n⛧ inverted pentagram\n⛨ black cross on shield\n⛩ shinto shrine\n⛪ church\n⛫ castle\n⛬ historic site\n⛭ gear without hub\n⛮ gear with handles\n⛯ map symbol for lighthouse\n⛰ mountain\n⛱ umbrella on ground\n⛲ fountain\n⛳ flag in hole\n⛴ ferry\n⛵ sailboat\n⛶ square four corners\n⛷ skier\n⛸ ice skate\n⛹ person with ball\n⛺ tent\n⛻ japanese bank symbol\n⛼ headstone graveyard symbol\n⛽ fuel pump\n⛾ cup on black square\n⛿ white flag with horizontal middle black stripe\n✀ black safety scissors\n✁ upper blade scissors\n✂ black scissors\n✃ lower blade scissors\n✄ white scissors\n✅ white heavy check mark\n✆ telephone location sign\n✇ tape drive\n✈ airplane\n✉ envelope\n✊ raised fist\n✋ raised hand\n✌ victory hand\n✍ writing hand\n✎ lower right pencil\n✏ pencil\n✐ upper right pencil\n✑ white nib\n✒ black nib\n✓ check mark\n✔ heavy check mark\n✕ multiplication x\n✖ heavy multiplication x\n✗ ballot x\n✘ heavy ballot x\n✙ outlined greek cross\n✚ heavy greek cross\n✛ open centre cross\n✜ heavy open centre cross\n✝ latin cross\n✞ shadowed white latin cross\n✟ outlined latin cross\n✠ maltese cross\n✡ star of david\n✢ four teardrop-spoked asterisk\n✣ four balloon-spoked asterisk\n✤ heavy four balloon-spoked asterisk\n✥ four club-spoked asterisk\n✦ black four pointed star\n✧ white four pointed star\n✨ sparkles\n✩ stress outlined white star\n✪ circled white star\n✫ open centre black star\n✬ black centre white star\n✭ outlined black star\n✮ heavy outlined black star\n✯ pinwheel star\n✰ shadowed white star\n✱ heavy asterisk\n✲ open centre asterisk\n✳ eight spoked asterisk\n✴ eight pointed black star\n✵ eight pointed pinwheel star\n✶ six pointed black star\n✷ eight pointed rectilinear black star\n✸ heavy eight pointed rectilinear black star\n✹ twelve pointed black star\n✺ sixteen pointed asterisk\n✻ teardrop-spoked asterisk\n✼ open centre teardrop-spoked asterisk\n✽ heavy teardrop-spoked asterisk\n✾ six petalled black and white florette\n✿ black florette\n❀ white florette\n❁ eight petalled outlined black florette\n❂ circled open centre eight pointed star\n❃ heavy teardrop-spoked pinwheel asterisk\n❄ snowflake\n❅ tight trifoliate snowflake\n❆ heavy chevron snowflake\n❇ sparkle\n❈ heavy sparkle\n❉ balloon-spoked asterisk\n❊ eight teardrop-spoked propeller asterisk\n❋ heavy eight teardrop-spoked propeller asterisk\n❌ cross mark\n❍ shadowed white circle\n❎ negative squared cross mark\n❏ lower right drop-shadowed white square\n❐ upper right drop-shadowed white square\n❑ lower right shadowed white square\n❒ upper right shadowed white square\n❓ black question mark ornament\n❔ white question mark ornament\n❕ white exclamation mark ornament\n❖ black diamond minus white x\n❗ heavy exclamation mark symbol\n❘ light vertical bar\n❙ medium vertical bar\n❚ heavy vertical bar\n❛ heavy single turned comma quotation mark ornament\n❜ heavy single comma quotation mark ornament\n❝ heavy double turned comma quotation mark ornament\n❞ heavy double comma quotation mark ornament\n❟ heavy low single comma quotation mark ornament\n❠ heavy low double comma quotation mark ornament\n❡ curved stem paragraph sign ornament\n❢ heavy exclamation mark ornament\n❣ heavy heart exclamation mark ornament\n❤ heavy black heart\n❥ rotated heavy black heart bullet\n❦ floral heart\n❧ rotated floral heart bullet\n❨ medium left parenthesis ornament\n❩ medium right parenthesis ornament\n❪ medium flattened left parenthesis ornament\n❫ medium flattened right parenthesis ornament\n❬ medium left-pointing angle bracket ornament\n❭ medium right-pointing angle bracket ornament\n❮ heavy left-pointing angle quotation mark ornament\n❯ heavy right-pointing angle quotation mark ornament\n❰ heavy left-pointing angle bracket ornament\n❱ heavy right-pointing angle bracket ornament\n❲ light left tortoise shell bracket ornament\n❳ light right tortoise shell bracket ornament\n❴ medium left curly bracket ornament\n❵ medium right curly bracket ornament\n❶ dingbat negative circled digit one\n❷ dingbat negative circled digit two\n❸ dingbat negative circled digit three\n❹ dingbat negative circled digit four\n❺ dingbat negative circled digit five\n❻ dingbat negative circled digit six\n❼ dingbat negative circled digit seven\n❽ dingbat negative circled digit eight\n❾ dingbat negative circled digit nine\n❿ dingbat negative circled number ten\n➀ dingbat circled sans-serif digit one\n➁ dingbat circled sans-serif digit two\n➂ dingbat circled sans-serif digit three\n➃ dingbat circled sans-serif digit four\n➄ dingbat circled sans-serif digit five\n➅ dingbat circled sans-serif digit six\n➆ dingbat circled sans-serif digit seven\n➇ dingbat circled sans-serif digit eight\n➈ dingbat circled sans-serif digit nine\n➉ dingbat circled sans-serif number ten\n➊ dingbat negative circled sans-serif digit one\n➋ dingbat negative circled sans-serif digit two\n➌ dingbat negative circled sans-serif digit three\n➍ dingbat negative circled sans-serif digit four\n➎ dingbat negative circled sans-serif digit five\n➏ dingbat negative circled sans-serif digit six\n➐ dingbat negative circled sans-serif digit seven\n➑ dingbat negative circled sans-serif digit eight\n➒ dingbat negative circled sans-serif digit nine\n➓ dingbat negative circled sans-serif number ten\n➔ heavy wide-headed rightwards arrow\n➕ heavy plus sign\n➖ heavy minus sign\n➗ heavy division sign\n➘ heavy south east arrow\n➙ heavy rightwards arrow\n➚ heavy north east arrow\n➛ drafting point rightwards arrow\n➜ heavy round-tipped rightwards arrow\n➝ triangle-headed rightwards arrow\n➞ heavy triangle-headed rightwards arrow\n➟ dashed triangle-headed rightwards arrow\n➠ heavy dashed triangle-headed rightwards arrow\n➡ black rightwards arrow\n➢ three-d top-lighted rightwards arrowhead\n➣ three-d bottom-lighted rightwards arrowhead\n➤ black rightwards arrowhead\n➥ heavy black curved downwards and rightwards arrow\n➦ heavy black curved upwards and rightwards arrow\n➧ squat black rightwards arrow\n➨ heavy concave-pointed black rightwards arrow\n➩ right-shaded white rightwards arrow\n➪ left-shaded white rightwards arrow\n➫ back-tilted shadowed white rightwards arrow\n➬ front-tilted shadowed white rightwards arrow\n➭ heavy lower right-shadowed white rightwards arrow\n➮ heavy upper right-shadowed white rightwards arrow\n➯ notched lower right-shadowed white rightwards arrow\n➰ curly loop\n➱ notched upper right-shadowed white rightwards arrow\n➲ circled heavy white rightwards arrow\n➳ white-feathered rightwards arrow\n➴ black-feathered south east arrow\n➵ black-feathered rightwards arrow\n➶ black-feathered north east arrow\n➷ heavy black-feathered south east arrow\n➸ heavy black-feathered rightwards arrow\n➹ heavy black-feathered north east arrow\n➺ teardrop-barbed rightwards arrow\n➻ heavy teardrop-shanked rightwards arrow\n➼ wedge-tailed rightwards arrow\n➽ heavy wedge-tailed rightwards arrow\n➾ open-outlined rightwards arrow\n➿ double curly loop\n⟀ three dimensional angle\n⟁ white triangle containing small white triangle\n⟂ perpendicular\n⟃ open subset\n⟄ open superset\n⟅ left s-shaped bag delimiter\n⟆ right s-shaped bag delimiter\n⟇ or with dot inside\n⟈ reverse solidus preceding subset\n⟉ superset preceding solidus\n⟊ vertical bar with horizontal stroke\n⟋ mathematical rising diagonal\n⟌ long division\n⟍ mathematical falling diagonal\n⟎ squared logical and\n⟏ squared logical or\n⟐ white diamond with centred dot\n⟑ and with dot\n⟒ element of opening upwards\n⟓ lower right corner with dot\n⟔ upper left corner with dot\n⟕ left outer join\n⟖ right outer join\n⟗ full outer join\n⟘ large up tack\n⟙ large down tack\n⟚ left and right double turnstile\n⟛ left and right tack\n⟜ left multimap\n⟝ long right tack\n⟞ long left tack\n⟟ up tack with circle above\n⟠ lozenge divided by horizontal rule\n⟡ white concave-sided diamond\n⟢ white concave-sided diamond with leftwards tick\n⟣ white concave-sided diamond with rightwards tick\n⟤ white square with leftwards tick\n⟥ white square with rightwards tick\n⟦ mathematical left white square bracket\n⟧ mathematical right white square bracket\n⟨ mathematical left angle bracket\n⟩ mathematical right angle bracket\n⟪ mathematical left double angle bracket\n⟫ mathematical right double angle bracket\n⟬ mathematical left white tortoise shell bracket\n⟭ mathematical right white tortoise shell bracket\n⟮ mathematical left flattened parenthesis\n⟯ mathematical right flattened parenthesis\n⟰ upwards quadruple arrow\n⟱ downwards quadruple arrow\n⟲ anticlockwise gapped circle arrow\n⟳ clockwise gapped circle arrow\n⟴ right arrow with circled plus\n⟵ long leftwards arrow\n⟶ long rightwards arrow\n⟷ long left right arrow\n⟸ long leftwards double arrow\n⟹ long rightwards double arrow\n⟺ long left right double arrow\n⟻ long leftwards arrow from bar\n⟼ long rightwards arrow from bar\n⟽ long leftwards double arrow from bar\n⟾ long rightwards double arrow from bar\n⟿ long rightwards squiggle arrow\n⠀ braille pattern blank\n⠁ braille pattern dots-1\n⠂ braille pattern dots-2\n⠃ braille pattern dots-12\n⠄ braille pattern dots-3\n⠅ braille pattern dots-13\n⠆ braille pattern dots-23\n⠇ braille pattern dots-123\n⠈ braille pattern dots-4\n⠉ braille pattern dots-14\n⠊ braille pattern dots-24\n⠋ braille pattern dots-124\n⠌ braille pattern dots-34\n⠍ braille pattern dots-134\n⠎ braille pattern dots-234\n⠏ braille pattern dots-1234\n⠐ braille pattern dots-5\n⠑ braille pattern dots-15\n⠒ braille pattern dots-25\n⠓ braille pattern dots-125\n⠔ braille pattern dots-35\n⠕ braille pattern dots-135\n⠖ braille pattern dots-235\n⠗ braille pattern dots-1235\n⠘ braille pattern dots-45\n⠙ braille pattern dots-145\n⠚ braille pattern dots-245\n⠛ braille pattern dots-1245\n⠜ braille pattern dots-345\n⠝ braille pattern dots-1345\n⠞ braille pattern dots-2345\n⠟ braille pattern dots-12345\n⠠ braille pattern dots-6\n⠡ braille pattern dots-16\n⠢ braille pattern dots-26\n⠣ braille pattern dots-126\n⠤ braille pattern dots-36\n⠥ braille pattern dots-136\n⠦ braille pattern dots-236\n⠧ braille pattern dots-1236\n⠨ braille pattern dots-46\n⠩ braille pattern dots-146\n⠪ braille pattern dots-246\n⠫ braille pattern dots-1246\n⠬ braille pattern dots-346\n⠭ braille pattern dots-1346\n⠮ braille pattern dots-2346\n⠯ braille pattern dots-12346\n⠰ braille pattern dots-56\n⠱ braille pattern dots-156\n⠲ braille pattern dots-256\n⠳ braille pattern dots-1256\n⠴ braille pattern dots-356\n⠵ braille pattern dots-1356\n⠶ braille pattern dots-2356\n⠷ braille pattern dots-12356\n⠸ braille pattern dots-456\n⠹ braille pattern dots-1456\n⠺ braille pattern dots-2456\n⠻ braille pattern dots-12456\n⠼ braille pattern dots-3456\n⠽ braille pattern dots-13456\n⠾ braille pattern dots-23456\n⠿ braille pattern dots-123456\n⡀ braille pattern dots-7\n⡁ braille pattern dots-17\n⡂ braille pattern dots-27\n⡃ braille pattern dots-127\n⡄ braille pattern dots-37\n⡅ braille pattern dots-137\n⡆ braille pattern dots-237\n⡇ braille pattern dots-1237\n⡈ braille pattern dots-47\n⡉ braille pattern dots-147\n⡊ braille pattern dots-247\n⡋ braille pattern dots-1247\n⡌ braille pattern dots-347\n⡍ braille pattern dots-1347\n⡎ braille pattern dots-2347\n⡏ braille pattern dots-12347\n⡐ braille pattern dots-57\n⡑ braille pattern dots-157\n⡒ braille pattern dots-257\n⡓ braille pattern dots-1257\n⡔ braille pattern dots-357\n⡕ braille pattern dots-1357\n⡖ braille pattern dots-2357\n⡗ braille pattern dots-12357\n⡘ braille pattern dots-457\n⡙ braille pattern dots-1457\n⡚ braille pattern dots-2457\n⡛ braille pattern dots-12457\n⡜ braille pattern dots-3457\n⡝ braille pattern dots-13457\n⡞ braille pattern dots-23457\n⡟ braille pattern dots-123457\n⡠ braille pattern dots-67\n⡡ braille pattern dots-167\n⡢ braille pattern dots-267\n⡣ braille pattern dots-1267\n⡤ braille pattern dots-367\n⡥ braille pattern dots-1367\n⡦ braille pattern dots-2367\n⡧ braille pattern dots-12367\n⡨ braille pattern dots-467\n⡩ braille pattern dots-1467\n⡪ braille pattern dots-2467\n⡫ braille pattern dots-12467\n⡬ braille pattern dots-3467\n⡭ braille pattern dots-13467\n⡮ braille pattern dots-23467\n⡯ braille pattern dots-123467\n⡰ braille pattern dots-567\n⡱ braille pattern dots-1567\n⡲ braille pattern dots-2567\n⡳ braille pattern dots-12567\n⡴ braille pattern dots-3567\n⡵ braille pattern dots-13567\n⡶ braille pattern dots-23567\n⡷ braille pattern dots-123567\n⡸ braille pattern dots-4567\n⡹ braille pattern dots-14567\n⡺ braille pattern dots-24567\n⡻ braille pattern dots-124567\n⡼ braille pattern dots-34567\n⡽ braille pattern dots-134567\n⡾ braille pattern dots-234567\n⡿ braille pattern dots-1234567\n⢀ braille pattern dots-8\n⢁ braille pattern dots-18\n⢂ braille pattern dots-28\n⢃ braille pattern dots-128\n⢄ braille pattern dots-38\n⢅ braille pattern dots-138\n⢆ braille pattern dots-238\n⢇ braille pattern dots-1238\n⢈ braille pattern dots-48\n⢉ braille pattern dots-148\n⢊ braille pattern dots-248\n⢋ braille pattern dots-1248\n⢌ braille pattern dots-348\n⢍ braille pattern dots-1348\n⢎ braille pattern dots-2348\n⢏ braille pattern dots-12348\n⢐ braille pattern dots-58\n⢑ braille pattern dots-158\n⢒ braille pattern dots-258\n⢓ braille pattern dots-1258\n⢔ braille pattern dots-358\n⢕ braille pattern dots-1358\n⢖ braille pattern dots-2358\n⢗ braille pattern dots-12358\n⢘ braille pattern dots-458\n⢙ braille pattern dots-1458\n⢚ braille pattern dots-2458\n⢛ braille pattern dots-12458\n⢜ braille pattern dots-3458\n⢝ braille pattern dots-13458\n⢞ braille pattern dots-23458\n⢟ braille pattern dots-123458\n⢠ braille pattern dots-68\n⢡ braille pattern dots-168\n⢢ braille pattern dots-268\n⢣ braille pattern dots-1268\n⢤ braille pattern dots-368\n⢥ braille pattern dots-1368\n⢦ braille pattern dots-2368\n⢧ braille pattern dots-12368\n⢨ braille pattern dots-468\n⢩ braille pattern dots-1468\n⢪ braille pattern dots-2468\n⢫ braille pattern dots-12468\n⢬ braille pattern dots-3468\n⢭ braille pattern dots-13468\n⢮ braille pattern dots-23468\n⢯ braille pattern dots-123468\n⢰ braille pattern dots-568\n⢱ braille pattern dots-1568\n⢲ braille pattern dots-2568\n⢳ braille pattern dots-12568\n⢴ braille pattern dots-3568\n⢵ braille pattern dots-13568\n⢶ braille pattern dots-23568\n⢷ braille pattern dots-123568\n⢸ braille pattern dots-4568\n⢹ braille pattern dots-14568\n⢺ braille pattern dots-24568\n⢻ braille pattern dots-124568\n⢼ braille pattern dots-34568\n⢽ braille pattern dots-134568\n⢾ braille pattern dots-234568\n⢿ braille pattern dots-1234568\n⣀ braille pattern dots-78\n⣁ braille pattern dots-178\n⣂ braille pattern dots-278\n⣃ braille pattern dots-1278\n⣄ braille pattern dots-378\n⣅ braille pattern dots-1378\n⣆ braille pattern dots-2378\n⣇ braille pattern dots-12378\n⣈ braille pattern dots-478\n⣉ braille pattern dots-1478\n⣊ braille pattern dots-2478\n⣋ braille pattern dots-12478\n⣌ braille pattern dots-3478\n⣍ braille pattern dots-13478\n⣎ braille pattern dots-23478\n⣏ braille pattern dots-123478\n⣐ braille pattern dots-578\n⣑ braille pattern dots-1578\n⣒ braille pattern dots-2578\n⣓ braille pattern dots-12578\n⣔ braille pattern dots-3578\n⣕ braille pattern dots-13578\n⣖ braille pattern dots-23578\n⣗ braille pattern dots-123578\n⣘ braille pattern dots-4578\n⣙ braille pattern dots-14578\n⣚ braille pattern dots-24578\n⣛ braille pattern dots-124578\n⣜ braille pattern dots-34578\n⣝ braille pattern dots-134578\n⣞ braille pattern dots-234578\n⣟ braille pattern dots-1234578\n⣠ braille pattern dots-678\n⣡ braille pattern dots-1678\n⣢ braille pattern dots-2678\n⣣ braille pattern dots-12678\n⣤ braille pattern dots-3678\n⣥ braille pattern dots-13678\n⣦ braille pattern dots-23678\n⣧ braille pattern dots-123678\n⣨ braille pattern dots-4678\n⣩ braille pattern dots-14678\n⣪ braille pattern dots-24678\n⣫ braille pattern dots-124678\n⣬ braille pattern dots-34678\n⣭ braille pattern dots-134678\n⣮ braille pattern dots-234678\n⣯ braille pattern dots-1234678\n⣰ braille pattern dots-5678\n⣱ braille pattern dots-15678\n⣲ braille pattern dots-25678\n⣳ braille pattern dots-125678\n⣴ braille pattern dots-35678\n⣵ braille pattern dots-135678\n⣶ braille pattern dots-235678\n⣷ braille pattern dots-1235678\n⣸ braille pattern dots-45678\n⣹ braille pattern dots-145678\n⣺ braille pattern dots-245678\n⣻ braille pattern dots-1245678\n⣼ braille pattern dots-345678\n⣽ braille pattern dots-1345678\n⣾ braille pattern dots-2345678\n⣿ braille pattern dots-12345678\n⤀ rightwards two-headed arrow with vertical stroke\n⤁ rightwards two-headed arrow with double vertical stroke\n⤂ leftwards double arrow with vertical stroke\n⤃ rightwards double arrow with vertical stroke\n⤄ left right double arrow with vertical stroke\n⤅ rightwards two-headed arrow from bar\n⤆ leftwards double arrow from bar\n⤇ rightwards double arrow from bar\n⤈ downwards arrow with horizontal stroke\n⤉ upwards arrow with horizontal stroke\n⤊ upwards triple arrow\n⤋ downwards triple arrow\n⤌ leftwards double dash arrow\n⤍ rightwards double dash arrow\n⤎ leftwards triple dash arrow\n⤏ rightwards triple dash arrow\n⤐ rightwards two-headed triple dash arrow\n⤑ rightwards arrow with dotted stem\n⤒ upwards arrow to bar\n⤓ downwards arrow to bar\n⤔ rightwards arrow with tail with vertical stroke\n⤕ rightwards arrow with tail with double vertical stroke\n⤖ rightwards two-headed arrow with tail\n⤗ rightwards two-headed arrow with tail with vertical stroke\n⤘ rightwards two-headed arrow with tail with double vertical stroke\n⤙ leftwards arrow-tail\n⤚ rightwards arrow-tail\n⤛ leftwards double arrow-tail\n⤜ rightwards double arrow-tail\n⤝ leftwards arrow to black diamond\n⤞ rightwards arrow to black diamond\n⤟ leftwards arrow from bar to black diamond\n⤠ rightwards arrow from bar to black diamond\n⤡ north west and south east arrow\n⤢ north east and south west arrow\n⤣ north west arrow with hook\n⤤ north east arrow with hook\n⤥ south east arrow with hook\n⤦ south west arrow with hook\n⤧ north west arrow and north east arrow\n⤨ north east arrow and south east arrow\n⤩ south east arrow and south west arrow\n⤪ south west arrow and north west arrow\n⤫ rising diagonal crossing falling diagonal\n⤬ falling diagonal crossing rising diagonal\n⤭ south east arrow crossing north east arrow\n⤮ north east arrow crossing south east arrow\n⤯ falling diagonal crossing north east arrow\n⤰ rising diagonal crossing south east arrow\n⤱ north east arrow crossing north west arrow\n⤲ north west arrow crossing north east arrow\n⤳ wave arrow pointing directly right\n⤴ arrow pointing rightwards then curving upwards\n⤵ arrow pointing rightwards then curving downwards\n⤶ arrow pointing downwards then curving leftwards\n⤷ arrow pointing downwards then curving rightwards\n⤸ right-side arc clockwise arrow\n⤹ left-side arc anticlockwise arrow\n⤺ top arc anticlockwise arrow\n⤻ bottom arc anticlockwise arrow\n⤼ top arc clockwise arrow with minus\n⤽ top arc anticlockwise arrow with plus\n⤾ lower right semicircular clockwise arrow\n⤿ lower left semicircular anticlockwise arrow\n⥀ anticlockwise closed circle arrow\n⥁ clockwise closed circle arrow\n⥂ rightwards arrow above short leftwards arrow\n⥃ leftwards arrow above short rightwards arrow\n⥄ short rightwards arrow above leftwards arrow\n⥅ rightwards arrow with plus below\n⥆ leftwards arrow with plus below\n⥇ rightwards arrow through x\n⥈ left right arrow through small circle\n⥉ upwards two-headed arrow from small circle\n⥊ left barb up right barb down harpoon\n⥋ left barb down right barb up harpoon\n⥌ up barb right down barb left harpoon\n⥍ up barb left down barb right harpoon\n⥎ left barb up right barb up harpoon\n⥏ up barb right down barb right harpoon\n⥐ left barb down right barb down harpoon\n⥑ up barb left down barb left harpoon\n⥒ leftwards harpoon with barb up to bar\n⥓ rightwards harpoon with barb up to bar\n⥔ upwards harpoon with barb right to bar\n⥕ downwards harpoon with barb right to bar\n⥖ leftwards harpoon with barb down to bar\n⥗ rightwards harpoon with barb down to bar\n⥘ upwards harpoon with barb left to bar\n⥙ downwards harpoon with barb left to bar\n⥚ leftwards harpoon with barb up from bar\n⥛ rightwards harpoon with barb up from bar\n⥜ upwards harpoon with barb right from bar\n⥝ downwards harpoon with barb right from bar\n⥞ leftwards harpoon with barb down from bar\n⥟ rightwards harpoon with barb down from bar\n⥠ upwards harpoon with barb left from bar\n⥡ downwards harpoon with barb left from bar\n⥢ leftwards harpoon with barb up above leftwards harpoon with barb down\n⥣ upwards harpoon with barb left beside upwards harpoon with barb right\n⥤ rightwards harpoon with barb up above rightwards harpoon with barb down\n⥥ downwards harpoon with barb left beside downwards harpoon with barb right\n⥦ leftwards harpoon with barb up above rightwards harpoon with barb up\n⥧ leftwards harpoon with barb down above rightwards harpoon with barb down\n⥨ rightwards harpoon with barb up above leftwards harpoon with barb up\n⥩ rightwards harpoon with barb down above leftwards harpoon with barb down\n⥪ leftwards harpoon with barb up above long dash\n⥫ leftwards harpoon with barb down below long dash\n⥬ rightwards harpoon with barb up above long dash\n⥭ rightwards harpoon with barb down below long dash\n⥮ upwards harpoon with barb left beside downwards harpoon with barb right\n⥯ downwards harpoon with barb left beside upwards harpoon with barb right\n⥰ right double arrow with rounded head\n⥱ equals sign above rightwards arrow\n⥲ tilde operator above rightwards arrow\n⥳ leftwards arrow above tilde operator\n⥴ rightwards arrow above tilde operator\n⥵ rightwards arrow above almost equal to\n⥶ less-than above leftwards arrow\n⥷ leftwards arrow through less-than\n⥸ greater-than above rightwards arrow\n⥹ subset above rightwards arrow\n⥺ leftwards arrow through subset\n⥻ superset above leftwards arrow\n⥼ left fish tail\n⥽ right fish tail\n⥾ up fish tail\n⥿ down fish tail\n⦀ triple vertical bar delimiter\n⦁ z notation spot\n⦂ z notation type colon\n⦃ left white curly bracket\n⦄ right white curly bracket\n⦅ left white parenthesis\n⦆ right white parenthesis\n⦇ z notation left image bracket\n⦈ z notation right image bracket\n⦉ z notation left binding bracket\n⦊ z notation right binding bracket\n⦋ left square bracket with underbar\n⦌ right square bracket with underbar\n⦍ left square bracket with tick in top corner\n⦎ right square bracket with tick in bottom corner\n⦏ left square bracket with tick in bottom corner\n⦐ right square bracket with tick in top corner\n⦑ left angle bracket with dot\n⦒ right angle bracket with dot\n⦓ left arc less-than bracket\n⦔ right arc greater-than bracket\n⦕ double left arc greater-than bracket\n⦖ double right arc less-than bracket\n⦗ left black tortoise shell bracket\n⦘ right black tortoise shell bracket\n⦙ dotted fence\n⦚ vertical zigzag line\n⦛ measured angle opening left\n⦜ right angle variant with square\n⦝ measured right angle with dot\n⦞ angle with s inside\n⦟ acute angle\n⦠ spherical angle opening left\n⦡ spherical angle opening up\n⦢ turned angle\n⦣ reversed angle\n⦤ angle with underbar\n⦥ reversed angle with underbar\n⦦ oblique angle opening up\n⦧ oblique angle opening down\n⦨ measured angle with open arm ending in arrow pointing up and right\n⦩ measured angle with open arm ending in arrow pointing up and left\n⦪ measured angle with open arm ending in arrow pointing down and right\n⦫ measured angle with open arm ending in arrow pointing down and left\n⦬ measured angle with open arm ending in arrow pointing right and up\n⦭ measured angle with open arm ending in arrow pointing left and up\n⦮ measured angle with open arm ending in arrow pointing right and down\n⦯ measured angle with open arm ending in arrow pointing left and down\n⦰ reversed empty set\n⦱ empty set with overbar\n⦲ empty set with small circle above\n⦳ empty set with right arrow above\n⦴ empty set with left arrow above\n⦵ circle with horizontal bar\n⦶ circled vertical bar\n⦷ circled parallel\n⦸ circled reverse solidus\n⦹ circled perpendicular\n⦺ circle divided by horizontal bar and top half divided by vertical bar\n⦻ circle with superimposed x\n⦼ circled anticlockwise-rotated division sign\n⦽ up arrow through circle\n⦾ circled white bullet\n⦿ circled bullet\n⧀ circled less-than\n⧁ circled greater-than\n⧂ circle with small circle to the right\n⧃ circle with two horizontal strokes to the right\n⧄ squared rising diagonal slash\n⧅ squared falling diagonal slash\n⧆ squared asterisk\n⧇ squared small circle\n⧈ squared square\n⧉ two joined squares\n⧊ triangle with dot above\n⧋ triangle with underbar\n⧌ s in triangle\n⧍ triangle with serifs at bottom\n⧎ right triangle above left triangle\n⧏ left triangle beside vertical bar\n⧐ vertical bar beside right triangle\n⧑ bowtie with left half black\n⧒ bowtie with right half black\n⧓ black bowtie\n⧔ times with left half black\n⧕ times with right half black\n⧖ white hourglass\n⧗ black hourglass\n⧘ left wiggly fence\n⧙ right wiggly fence\n⧚ left double wiggly fence\n⧛ right double wiggly fence\n⧜ incomplete infinity\n⧝ tie over infinity\n⧞ infinity negated with vertical bar\n⧟ double-ended multimap\n⧠ square with contoured outline\n⧡ increases as\n⧢ shuffle product\n⧣ equals sign and slanted parallel\n⧤ equals sign and slanted parallel with tilde above\n⧥ identical to and slanted parallel\n⧦ gleich stark\n⧧ thermodynamic\n⧨ down-pointing triangle with left half black\n⧩ down-pointing triangle with right half black\n⧪ black diamond with down arrow\n⧫ black lozenge\n⧬ white circle with down arrow\n⧭ black circle with down arrow\n⧮ error-barred white square\n⧯ error-barred black square\n⧰ error-barred white diamond\n⧱ error-barred black diamond\n⧲ error-barred white circle\n⧳ error-barred black circle\n⧴ rule-delayed\n⧵ reverse solidus operator\n⧶ solidus with overbar\n⧷ reverse solidus with horizontal stroke\n⧸ big solidus\n⧹ big reverse solidus\n⧺ double plus\n⧻ triple plus\n⧼ left-pointing curved angle bracket\n⧽ right-pointing curved angle bracket\n⧾ tiny\n⧿ miny\n⨀ n-ary circled dot operator\n⨁ n-ary circled plus operator\n⨂ n-ary circled times operator\n⨃ n-ary union operator with dot\n⨄ n-ary union operator with plus\n⨅ n-ary square intersection operator\n⨆ n-ary square union operator\n⨇ two logical and operator\n⨈ two logical or operator\n⨉ n-ary times operator\n⨊ modulo two sum\n⨋ summation with integral\n⨌ quadruple integral operator\n⨍ finite part integral\n⨎ integral with double stroke\n⨏ integral average with slash\n⨐ circulation function\n⨑ anticlockwise integration\n⨒ line integration with rectangular path around pole\n⨓ line integration with semicircular path around pole\n⨔ line integration not including the pole\n⨕ integral around a point operator\n⨖ quaternion integral operator\n⨗ integral with leftwards arrow with hook\n⨘ integral with times sign\n⨙ integral with intersection\n⨚ integral with union\n⨛ integral with overbar\n⨜ integral with underbar\n⨝ join\n⨞ large left triangle operator\n⨟ z notation schema composition\n⨠ z notation schema piping\n⨡ z notation schema projection\n⨢ plus sign with small circle above\n⨣ plus sign with circumflex accent above\n⨤ plus sign with tilde above\n⨥ plus sign with dot below\n⨦ plus sign with tilde below\n⨧ plus sign with subscript two\n⨨ plus sign with black triangle\n⨩ minus sign with comma above\n⨪ minus sign with dot below\n⨫ minus sign with falling dots\n⨬ minus sign with rising dots\n⨭ plus sign in left half circle\n⨮ plus sign in right half circle\n⨯ vector or cross product\n⨰ multiplication sign with dot above\n⨱ multiplication sign with underbar\n⨲ semidirect product with bottom closed\n⨳ smash product\n⨴ multiplication sign in left half circle\n⨵ multiplication sign in right half circle\n⨶ circled multiplication sign with circumflex accent\n⨷ multiplication sign in double circle\n⨸ circled division sign\n⨹ plus sign in triangle\n⨺ minus sign in triangle\n⨻ multiplication sign in triangle\n⨼ interior product\n⨽ righthand interior product\n⨾ z notation relational composition\n⨿ amalgamation or coproduct\n⩀ intersection with dot\n⩁ union with minus sign\n⩂ union with overbar\n⩃ intersection with overbar\n⩄ intersection with logical and\n⩅ union with logical or\n⩆ union above intersection\n⩇ intersection above union\n⩈ union above bar above intersection\n⩉ intersection above bar above union\n⩊ union beside and joined with union\n⩋ intersection beside and joined with intersection\n⩌ closed union with serifs\n⩍ closed intersection with serifs\n⩎ double square intersection\n⩏ double square union\n⩐ closed union with serifs and smash product\n⩑ logical and with dot above\n⩒ logical or with dot above\n⩓ double logical and\n⩔ double logical or\n⩕ two intersecting logical and\n⩖ two intersecting logical or\n⩗ sloping large or\n⩘ sloping large and\n⩙ logical or overlapping logical and\n⩚ logical and with middle stem\n⩛ logical or with middle stem\n⩜ logical and with horizontal dash\n⩝ logical or with horizontal dash\n⩞ logical and with double overbar\n⩟ logical and with underbar\n⩠ logical and with double underbar\n⩡ small vee with underbar\n⩢ logical or with double overbar\n⩣ logical or with double underbar\n⩤ z notation domain antirestriction\n⩥ z notation range antirestriction\n⩦ equals sign with dot below\n⩧ identical with dot above\n⩨ triple horizontal bar with double vertical stroke\n⩩ triple horizontal bar with triple vertical stroke\n⩪ tilde operator with dot above\n⩫ tilde operator with rising dots\n⩬ similar minus similar\n⩭ congruent with dot above\n⩮ equals with asterisk\n⩯ almost equal to with circumflex accent\n⩰ approximately equal or equal to\n⩱ equals sign above plus sign\n⩲ plus sign above equals sign\n⩳ equals sign above tilde operator\n⩴ double colon equal\n⩵ two consecutive equals signs\n⩶ three consecutive equals signs\n⩷ equals sign with two dots above and two dots below\n⩸ equivalent with four dots above\n⩹ less-than with circle inside\n⩺ greater-than with circle inside\n⩻ less-than with question mark above\n⩼ greater-than with question mark above\n⩽ less-than or slanted equal to\n⩾ greater-than or slanted equal to\n⩿ less-than or slanted equal to with dot inside\n⪀ greater-than or slanted equal to with dot inside\n⪁ less-than or slanted equal to with dot above\n⪂ greater-than or slanted equal to with dot above\n⪃ less-than or slanted equal to with dot above right\n⪄ greater-than or slanted equal to with dot above left\n⪅ less-than or approximate\n⪆ greater-than or approximate\n⪇ less-than and single-line not equal to\n⪈ greater-than and single-line not equal to\n⪉ less-than and not approximate\n⪊ greater-than and not approximate\n⪋ less-than above double-line equal above greater-than\n⪌ greater-than above double-line equal above less-than\n⪍ less-than above similar or equal\n⪎ greater-than above similar or equal\n⪏ less-than above similar above greater-than\n⪐ greater-than above similar above less-than\n⪑ less-than above greater-than above double-line equal\n⪒ greater-than above less-than above double-line equal\n⪓ less-than above slanted equal above greater-than above slanted equal\n⪔ greater-than above slanted equal above less-than above slanted equal\n⪕ slanted equal to or less-than\n⪖ slanted equal to or greater-than\n⪗ slanted equal to or less-than with dot inside\n⪘ slanted equal to or greater-than with dot inside\n⪙ double-line equal to or less-than\n⪚ double-line equal to or greater-than\n⪛ double-line slanted equal to or less-than\n⪜ double-line slanted equal to or greater-than\n⪝ similar or less-than\n⪞ similar or greater-than\n⪟ similar above less-than above equals sign\n⪠ similar above greater-than above equals sign\n⪡ double nested less-than\n⪢ double nested greater-than\n⪣ double nested less-than with underbar\n⪤ greater-than overlapping less-than\n⪥ greater-than beside less-than\n⪦ less-than closed by curve\n⪧ greater-than closed by curve\n⪨ less-than closed by curve above slanted equal\n⪩ greater-than closed by curve above slanted equal\n⪪ smaller than\n⪫ larger than\n⪬ smaller than or equal to\n⪭ larger than or equal to\n⪮ equals sign with bumpy above\n⪯ precedes above single-line equals sign\n⪰ succeeds above single-line equals sign\n⪱ precedes above single-line not equal to\n⪲ succeeds above single-line not equal to\n⪳ precedes above equals sign\n⪴ succeeds above equals sign\n⪵ precedes above not equal to\n⪶ succeeds above not equal to\n⪷ precedes above almost equal to\n⪸ succeeds above almost equal to\n⪹ precedes above not almost equal to\n⪺ succeeds above not almost equal to\n⪻ double precedes\n⪼ double succeeds\n⪽ subset with dot\n⪾ superset with dot\n⪿ subset with plus sign below\n⫀ superset with plus sign below\n⫁ subset with multiplication sign below\n⫂ superset with multiplication sign below\n⫃ subset of or equal to with dot above\n⫄ superset of or equal to with dot above\n⫅ subset of above equals sign\n⫆ superset of above equals sign\n⫇ subset of above tilde operator\n⫈ superset of above tilde operator\n⫉ subset of above almost equal to\n⫊ superset of above almost equal to\n⫋ subset of above not equal to\n⫌ superset of above not equal to\n⫍ square left open box operator\n⫎ square right open box operator\n⫏ closed subset\n⫐ closed superset\n⫑ closed subset or equal to\n⫒ closed superset or equal to\n⫓ subset above superset\n⫔ superset above subset\n⫕ subset above subset\n⫖ superset above superset\n⫗ superset beside subset\n⫘ superset beside and joined by dash with subset\n⫙ element of opening downwards\n⫚ pitchfork with tee top\n⫛ transversal intersection\n⫝̸ forking\n⫝ nonforking\n⫞ short left tack\n⫟ short down tack\n⫠ short up tack\n⫡ perpendicular with s\n⫢ vertical bar triple right turnstile\n⫣ double vertical bar left turnstile\n⫤ vertical bar double left turnstile\n⫥ double vertical bar double left turnstile\n⫦ long dash from left member of double vertical\n⫧ short down tack with overbar\n⫨ short up tack with underbar\n⫩ short up tack above short down tack\n⫪ double down tack\n⫫ double up tack\n⫬ double stroke not sign\n⫭ reversed double stroke not sign\n⫮ does not divide with reversed negation slash\n⫯ vertical line with circle above\n⫰ vertical line with circle below\n⫱ down tack with circle below\n⫲ parallel with horizontal stroke\n⫳ parallel with tilde operator\n⫴ triple vertical bar binary relation\n⫵ triple vertical bar with horizontal stroke\n⫶ triple colon operator\n⫷ triple nested less-than\n⫸ triple nested greater-than\n⫹ double-line slanted less-than or equal to\n⫺ double-line slanted greater-than or equal to\n⫻ triple solidus binary relation\n⫼ large triple vertical bar operator\n⫽ double solidus operator\n⫾ white vertical bar\n⫿ n-ary white vertical bar\n⬀ north east white arrow\n⬁ north west white arrow\n⬂ south east white arrow\n⬃ south west white arrow\n⬄ left right white arrow\n⬅ leftwards black arrow\n⬆ upwards black arrow\n⬇ downwards black arrow\n⬈ north east black arrow\n⬉ north west black arrow\n⬊ south east black arrow\n⬋ south west black arrow\n⬌ left right black arrow\n⬍ up down black arrow\n⬎ rightwards arrow with tip downwards\n⬏ rightwards arrow with tip upwards\n⬐ leftwards arrow with tip downwards\n⬑ leftwards arrow with tip upwards\n⬒ square with top half black\n⬓ square with bottom half black\n⬔ square with upper right diagonal half black\n⬕ square with lower left diagonal half black\n⬖ diamond with left half black\n⬗ diamond with right half black\n⬘ diamond with top half black\n⬙ diamond with bottom half black\n⬚ dotted square\n⬛ black large square\n⬜ white large square\n⬝ black very small square\n⬞ white very small square\n⬟ black pentagon\n⬠ white pentagon\n⬡ white hexagon\n⬢ black hexagon\n⬣ horizontal black hexagon\n⬤ black large circle\n⬥ black medium diamond\n⬦ white medium diamond\n⬧ black medium lozenge\n⬨ white medium lozenge\n⬩ black small diamond\n⬪ black small lozenge\n⬫ white small lozenge\n⬬ black horizontal ellipse\n⬭ white horizontal ellipse\n⬮ black vertical ellipse\n⬯ white vertical ellipse\n⬰ left arrow with small circle\n⬱ three leftwards arrows\n⬲ left arrow with circled plus\n⬳ long leftwards squiggle arrow\n⬴ leftwards two-headed arrow with vertical stroke\n⬵ leftwards two-headed arrow with double vertical stroke\n⬶ leftwards two-headed arrow from bar\n⬷ leftwards two-headed triple dash arrow\n⬸ leftwards arrow with dotted stem\n⬹ leftwards arrow with tail with vertical stroke\n⬺ leftwards arrow with tail with double vertical stroke\n⬻ leftwards two-headed arrow with tail\n⬼ leftwards two-headed arrow with tail with vertical stroke\n⬽ leftwards two-headed arrow with tail with double vertical stroke\n⬾ leftwards arrow through x\n⬿ wave arrow pointing directly left\n⭀ equals sign above leftwards arrow\n⭁ reverse tilde operator above leftwards arrow\n⭂ leftwards arrow above reverse almost equal to\n⭃ rightwards arrow through greater-than\n⭄ rightwards arrow through superset\n⭅ leftwards quadruple arrow\n⭆ rightwards quadruple arrow\n⭇ reverse tilde operator above rightwards arrow\n⭈ rightwards arrow above reverse almost equal to\n⭉ tilde operator above leftwards arrow\n⭊ leftwards arrow above almost equal to\n⭋ leftwards arrow above reverse tilde operator\n⭌ rightwards arrow above reverse tilde operator\n⭍ downwards triangle-headed zigzag arrow\n⭎ short slanted north arrow\n⭏ short backslanted south arrow\n⭐ white medium star\n⭑ black small star\n⭒ white small star\n⭓ black right-pointing pentagon\n⭔ white right-pointing pentagon\n⭕ heavy large circle\n⭖ heavy oval with oval inside\n⭗ heavy circle with circle inside\n⭘ heavy circle\n⭙ heavy circled saltire\n⭚ slanted north arrow with hooked head\n⭛ backslanted south arrow with hooked tail\n⭜ slanted north arrow with horizontal tail\n⭝ backslanted south arrow with horizontal tail\n⭞ bent arrow pointing downwards then north east\n⭟ short bent arrow pointing downwards then north east\n⭠ leftwards triangle-headed arrow\n⭡ upwards triangle-headed arrow\n⭢ rightwards triangle-headed arrow\n⭣ downwards triangle-headed arrow\n⭤ left right triangle-headed arrow\n⭥ up down triangle-headed arrow\n⭦ north west triangle-headed arrow\n⭧ north east triangle-headed arrow\n⭨ south east triangle-headed arrow\n⭩ south west triangle-headed arrow\n⭪ leftwards triangle-headed dashed arrow\n⭫ upwards triangle-headed dashed arrow\n⭬ rightwards triangle-headed dashed arrow\n⭭ downwards triangle-headed dashed arrow\n⭮ clockwise triangle-headed open circle arrow\n⭯ anticlockwise triangle-headed open circle arrow\n⭰ leftwards triangle-headed arrow to bar\n⭱ upwards triangle-headed arrow to bar\n⭲ rightwards triangle-headed arrow to bar\n⭳ downwards triangle-headed arrow to bar\n⭶ north west triangle-headed arrow to bar\n⭷ north east triangle-headed arrow to bar\n⭸ south east triangle-headed arrow to bar\n⭹ south west triangle-headed arrow to bar\n⭺ leftwards triangle-headed arrow with double horizontal stroke\n⭻ upwards triangle-headed arrow with double horizontal stroke\n⭼ rightwards triangle-headed arrow with double horizontal stroke\n⭽ downwards triangle-headed arrow with double horizontal stroke\n⭾ horizontal tab key\n⭿ vertical tab key\n⮀ leftwards triangle-headed arrow over rightwards triangle-headed arrow\n⮁ upwards triangle-headed arrow leftwards of downwards triangle-headed arrow\n⮂ rightwards triangle-headed arrow over leftwards triangle-headed arrow\n⮃ downwards triangle-headed arrow leftwards of upwards triangle-headed arrow\n⮄ leftwards triangle-headed paired arrows\n⮅ upwards triangle-headed paired arrows\n⮆ rightwards triangle-headed paired arrows\n⮇ downwards triangle-headed paired arrows\n⮈ leftwards black circled white arrow\n⮉ upwards black circled white arrow\n⮊ rightwards black circled white arrow\n⮋ downwards black circled white arrow\n⮌ anticlockwise triangle-headed right u-shaped arrow\n⮍ anticlockwise triangle-headed bottom u-shaped arrow\n⮎ anticlockwise triangle-headed left u-shaped arrow\n⮏ anticlockwise triangle-headed top u-shaped arrow\n⮐ return left\n⮑ return right\n⮒ newline left\n⮓ newline right\n⮔ four corner arrows circling anticlockwise\n⮕ rightwards black arrow\n⮘ three-d top-lighted leftwards equilateral arrowhead\n⮙ three-d right-lighted upwards equilateral arrowhead\n⮚ three-d top-lighted rightwards equilateral arrowhead\n⮛ three-d left-lighted downwards equilateral arrowhead\n⮜ black leftwards equilateral arrowhead\n⮝ black upwards equilateral arrowhead\n⮞ black rightwards equilateral arrowhead\n⮟ black downwards equilateral arrowhead\n⮠ downwards triangle-headed arrow with long tip leftwards\n⮡ downwards triangle-headed arrow with long tip rightwards\n⮢ upwards triangle-headed arrow with long tip leftwards\n⮣ upwards triangle-headed arrow with long tip rightwards\n⮤ leftwards triangle-headed arrow with long tip upwards\n⮥ rightwards triangle-headed arrow with long tip upwards\n⮦ leftwards triangle-headed arrow with long tip downwards\n⮧ rightwards triangle-headed arrow with long tip downwards\n⮨ black curved downwards and leftwards arrow\n⮩ black curved downwards and rightwards arrow\n⮪ black curved upwards and leftwards arrow\n⮫ black curved upwards and rightwards arrow\n⮬ black curved leftwards and upwards arrow\n⮭ black curved rightwards and upwards arrow\n⮮ black curved leftwards and downwards arrow\n⮯ black curved rightwards and downwards arrow\n⮰ ribbon arrow down left\n⮱ ribbon arrow down right\n⮲ ribbon arrow up left\n⮳ ribbon arrow up right\n⮴ ribbon arrow left up\n⮵ ribbon arrow right up\n⮶ ribbon arrow left down\n⮷ ribbon arrow right down\n⮸ upwards white arrow from bar with horizontal bar\n⮹ up arrowhead in a rectangle box\n⮽ ballot box with light x\n⮾ circled x\n⮿ circled bold x\n⯀ black square centred\n⯁ black diamond centred\n⯂ turned black pentagon\n⯃ horizontal black octagon\n⯄ black octagon\n⯅ black medium up-pointing triangle centred\n⯆ black medium down-pointing triangle centred\n⯇ black medium left-pointing triangle centred\n⯈ black medium right-pointing triangle centred\n⯊ top half black circle\n⯋ bottom half black circle\n⯌ light four pointed black cusp\n⯍ rotated light four pointed black cusp\n⯎ white four pointed cusp\n⯏ rotated white four pointed cusp\n⯐ square position indicator\n⯑ uncertainty sign\n⯬ leftwards two-headed arrow with triangle arrowheads\n⯭ upwards two-headed arrow with triangle arrowheads\n⯮ rightwards two-headed arrow with triangle arrowheads\n⯯ downwards two-headed arrow with triangle arrowheads\nⰀ glagolitic capital letter azu\nⰁ glagolitic capital letter buky\nⰂ glagolitic capital letter vede\nⰃ glagolitic capital letter glagoli\nⰄ glagolitic capital letter dobro\nⰅ glagolitic capital letter yestu\nⰆ glagolitic capital letter zhivete\nⰇ glagolitic capital letter dzelo\nⰈ glagolitic capital letter zemlja\nⰉ glagolitic capital letter izhe\nⰊ glagolitic capital letter initial izhe\nⰋ glagolitic capital letter i\nⰌ glagolitic capital letter djervi\nⰍ glagolitic capital letter kako\nⰎ glagolitic capital letter ljudije\nⰏ glagolitic capital letter myslite\nⰐ glagolitic capital letter nashi\nⰑ glagolitic capital letter onu\nⰒ glagolitic capital letter pokoji\nⰓ glagolitic capital letter ritsi\nⰔ glagolitic capital letter slovo\nⰕ glagolitic capital letter tvrido\nⰖ glagolitic capital letter uku\nⰗ glagolitic capital letter fritu\nⰘ glagolitic capital letter heru\nⰙ glagolitic capital letter otu\nⰚ glagolitic capital letter pe\nⰛ glagolitic capital letter shta\nⰜ glagolitic capital letter tsi\nⰝ glagolitic capital letter chrivi\nⰞ glagolitic capital letter sha\nⰟ glagolitic capital letter yeru\nⰠ glagolitic capital letter yeri\nⰡ glagolitic capital letter yati\nⰢ glagolitic capital letter spidery ha\nⰣ glagolitic capital letter yu\nⰤ glagolitic capital letter small yus\nⰥ glagolitic capital letter small yus with tail\nⰦ glagolitic capital letter yo\nⰧ glagolitic capital letter iotated small yus\nⰨ glagolitic capital letter big yus\nⰩ glagolitic capital letter iotated big yus\nⰪ glagolitic capital letter fita\nⰫ glagolitic capital letter izhitsa\nⰬ glagolitic capital letter shtapic\nⰭ glagolitic capital letter trokutasti a\nⰮ glagolitic capital letter latinate myslite\nⰰ glagolitic small letter azu\nⰱ glagolitic small letter buky\nⰲ glagolitic small letter vede\nⰳ glagolitic small letter glagoli\nⰴ glagolitic small letter dobro\nⰵ glagolitic small letter yestu\nⰶ glagolitic small letter zhivete\nⰷ glagolitic small letter dzelo\nⰸ glagolitic small letter zemlja\nⰹ glagolitic small letter izhe\nⰺ glagolitic small letter initial izhe\nⰻ glagolitic small letter i\nⰼ glagolitic small letter djervi\nⰽ glagolitic small letter kako\nⰾ glagolitic small letter ljudije\nⰿ glagolitic small letter myslite\nⱀ glagolitic small letter nashi\nⱁ glagolitic small letter onu\nⱂ glagolitic small letter pokoji\nⱃ glagolitic small letter ritsi\nⱄ glagolitic small letter slovo\nⱅ glagolitic small letter tvrido\nⱆ glagolitic small letter uku\nⱇ glagolitic small letter fritu\nⱈ glagolitic small letter heru\nⱉ glagolitic small letter otu\nⱊ glagolitic small letter pe\nⱋ glagolitic small letter shta\nⱌ glagolitic small letter tsi\nⱍ glagolitic small letter chrivi\nⱎ glagolitic small letter sha\nⱏ glagolitic small letter yeru\nⱐ glagolitic small letter yeri\nⱑ glagolitic small letter yati\nⱒ glagolitic small letter spidery ha\nⱓ glagolitic small letter yu\nⱔ glagolitic small letter small yus\nⱕ glagolitic small letter small yus with tail\nⱖ glagolitic small letter yo\nⱗ glagolitic small letter iotated small yus\nⱘ glagolitic small letter big yus\nⱙ glagolitic small letter iotated big yus\nⱚ glagolitic small letter fita\nⱛ glagolitic small letter izhitsa\nⱜ glagolitic small letter shtapic\nⱝ glagolitic small letter trokutasti a\nⱞ glagolitic small letter latinate myslite\nⱠ latin capital letter l with double bar\nⱡ latin small letter l with double bar\nⱢ latin capital letter l with middle tilde\nⱣ latin capital letter p with stroke\nⱤ latin capital letter r with tail\nⱥ latin small letter a with stroke\nⱦ latin small letter t with diagonal stroke\nⱧ latin capital letter h with descender\nⱨ latin small letter h with descender\nⱩ latin capital letter k with descender\nⱪ latin small letter k with descender\nⱫ latin capital letter z with descender\nⱬ latin small letter z with descender\nⱭ latin capital letter alpha\nⱮ latin capital letter m with hook\nⱯ latin capital letter turned a\nⱰ latin capital letter turned alpha\nⱱ latin small letter v with right hook\nⱲ latin capital letter w with hook\nⱳ latin small letter w with hook\nⱴ latin small letter v with curl\nⱵ latin capital letter half h\nⱶ latin small letter half h\nⱷ latin small letter tailless phi\nⱸ latin small letter e with notch\nⱹ latin small letter turned r with tail\nⱺ latin small letter o with low ring inside\nⱻ latin letter small capital turned e\nⱼ latin subscript small letter j\nⱽ modifier letter capital v\nⱾ latin capital letter s with swash tail\nⱿ latin capital letter z with swash tail\nⲀ coptic capital letter alfa\nⲁ coptic small letter alfa\nⲂ coptic capital letter vida\nⲃ coptic small letter vida\nⲄ coptic capital letter gamma\nⲅ coptic small letter gamma\nⲆ coptic capital letter dalda\nⲇ coptic small letter dalda\nⲈ coptic capital letter eie\nⲉ coptic small letter eie\nⲊ coptic capital letter sou\nⲋ coptic small letter sou\nⲌ coptic capital letter zata\nⲍ coptic small letter zata\nⲎ coptic capital letter hate\nⲏ coptic small letter hate\nⲐ coptic capital letter thethe\nⲑ coptic small letter thethe\nⲒ coptic capital letter iauda\nⲓ coptic small letter iauda\nⲔ coptic capital letter kapa\nⲕ coptic small letter kapa\nⲖ coptic capital letter laula\nⲗ coptic small letter laula\nⲘ coptic capital letter mi\nⲙ coptic small letter mi\nⲚ coptic capital letter ni\nⲛ coptic small letter ni\nⲜ coptic capital letter ksi\nⲝ coptic small letter ksi\nⲞ coptic capital letter o\nⲟ coptic small letter o\nⲠ coptic capital letter pi\nⲡ coptic small letter pi\nⲢ coptic capital letter ro\nⲣ coptic small letter ro\nⲤ coptic capital letter sima\nⲥ coptic small letter sima\nⲦ coptic capital letter tau\nⲧ coptic small letter tau\nⲨ coptic capital letter ua\nⲩ coptic small letter ua\nⲪ coptic capital letter fi\nⲫ coptic small letter fi\nⲬ coptic capital letter khi\nⲭ coptic small letter khi\nⲮ coptic capital letter psi\nⲯ coptic small letter psi\nⲰ coptic capital letter oou\nⲱ coptic small letter oou\nⲲ coptic capital letter dialect-p alef\nⲳ coptic small letter dialect-p alef\nⲴ coptic capital letter old coptic ain\nⲵ coptic small letter old coptic ain\nⲶ coptic capital letter cryptogrammic eie\nⲷ coptic small letter cryptogrammic eie\nⲸ coptic capital letter dialect-p kapa\nⲹ coptic small letter dialect-p kapa\nⲺ coptic capital letter dialect-p ni\nⲻ coptic small letter dialect-p ni\nⲼ coptic capital letter cryptogrammic ni\nⲽ coptic small letter cryptogrammic ni\nⲾ coptic capital letter old coptic oou\nⲿ coptic small letter old coptic oou\nⳀ coptic capital letter sampi\nⳁ coptic small letter sampi\nⳂ coptic capital letter crossed shei\nⳃ coptic small letter crossed shei\nⳄ coptic capital letter old coptic shei\nⳅ coptic small letter old coptic shei\nⳆ coptic capital letter old coptic esh\nⳇ coptic small letter old coptic esh\nⳈ coptic capital letter akhmimic khei\nⳉ coptic small letter akhmimic khei\nⳊ coptic capital letter dialect-p hori\nⳋ coptic small letter dialect-p hori\nⳌ coptic capital letter old coptic hori\nⳍ coptic small letter old coptic hori\nⳎ coptic capital letter old coptic ha\nⳏ coptic small letter old coptic ha\nⳐ coptic capital letter l-shaped ha\nⳑ coptic small letter l-shaped ha\nⳒ coptic capital letter old coptic hei\nⳓ coptic small letter old coptic hei\nⳔ coptic capital letter old coptic hat\nⳕ coptic small letter old coptic hat\nⳖ coptic capital letter old coptic gangia\nⳗ coptic small letter old coptic gangia\nⳘ coptic capital letter old coptic dja\nⳙ coptic small letter old coptic dja\nⳚ coptic capital letter old coptic shima\nⳛ coptic small letter old coptic shima\nⳜ coptic capital letter old nubian shima\nⳝ coptic small letter old nubian shima\nⳞ coptic capital letter old nubian ngi\nⳟ coptic small letter old nubian ngi\nⳠ coptic capital letter old nubian nyi\nⳡ coptic small letter old nubian nyi\nⳢ coptic capital letter old nubian wau\nⳣ coptic small letter old nubian wau\nⳤ coptic symbol kai\n⳥ coptic symbol mi ro\n⳦ coptic symbol pi ro\n⳧ coptic symbol stauros\n⳨ coptic symbol tau ro\n⳩ coptic symbol khi ro\n⳪ coptic symbol shima sima\nⳫ coptic capital letter cryptogrammic shei\nⳬ coptic small letter cryptogrammic shei\nⳭ coptic capital letter cryptogrammic gangia\nⳮ coptic small letter cryptogrammic gangia\nⳲ coptic capital letter bohairic khei\nⳳ coptic small letter bohairic khei\n⳹ coptic old nubian full stop\n⳺ coptic old nubian direct question mark\n⳻ coptic old nubian indirect question mark\n⳼ coptic old nubian verse divider\n⳽ coptic fraction one half\n⳾ coptic full stop\n⳿ coptic morphological divider\nⴀ georgian small letter an\nⴁ georgian small letter ban\nⴂ georgian small letter gan\nⴃ georgian small letter don\nⴄ georgian small letter en\nⴅ georgian small letter vin\nⴆ georgian small letter zen\nⴇ georgian small letter tan\nⴈ georgian small letter in\nⴉ georgian small letter kan\nⴊ georgian small letter las\nⴋ georgian small letter man\nⴌ georgian small letter nar\nⴍ georgian small letter on\nⴎ georgian small letter par\nⴏ georgian small letter zhar\nⴐ georgian small letter rae\nⴑ georgian small letter san\nⴒ georgian small letter tar\nⴓ georgian small letter un\nⴔ georgian small letter phar\nⴕ georgian small letter khar\nⴖ georgian small letter ghan\nⴗ georgian small letter qar\nⴘ georgian small letter shin\nⴙ georgian small letter chin\nⴚ georgian small letter can\nⴛ georgian small letter jil\nⴜ georgian small letter cil\nⴝ georgian small letter char\nⴞ georgian small letter xan\nⴟ georgian small letter jhan\nⴠ georgian small letter hae\nⴡ georgian small letter he\nⴢ georgian small letter hie\nⴣ georgian small letter we\nⴤ georgian small letter har\nⴥ georgian small letter hoe\nⴧ georgian small letter yn\nⴭ georgian small letter aen\nⴰ tifinagh letter ya\nⴱ tifinagh letter yab\nⴲ tifinagh letter yabh\nⴳ tifinagh letter yag\nⴴ tifinagh letter yaghh\nⴵ tifinagh letter berber academy yaj\nⴶ tifinagh letter yaj\nⴷ tifinagh letter yad\nⴸ tifinagh letter yadh\nⴹ tifinagh letter yadd\nⴺ tifinagh letter yaddh\nⴻ tifinagh letter yey\nⴼ tifinagh letter yaf\nⴽ tifinagh letter yak\nⴾ tifinagh letter tuareg yak\nⴿ tifinagh letter yakhh\nⵀ tifinagh letter yah\nⵁ tifinagh letter berber academy yah\nⵂ tifinagh letter tuareg yah\nⵃ tifinagh letter yahh\nⵄ tifinagh letter yaa\nⵅ tifinagh letter yakh\nⵆ tifinagh letter tuareg yakh\nⵇ tifinagh letter yaq\nⵈ tifinagh letter tuareg yaq\nⵉ tifinagh letter yi\nⵊ tifinagh letter yazh\nⵋ tifinagh letter ahaggar yazh\nⵌ tifinagh letter tuareg yazh\nⵍ tifinagh letter yal\nⵎ tifinagh letter yam\nⵏ tifinagh letter yan\nⵐ tifinagh letter tuareg yagn\nⵑ tifinagh letter tuareg yang\nⵒ tifinagh letter yap\nⵓ tifinagh letter yu\nⵔ tifinagh letter yar\nⵕ tifinagh letter yarr\nⵖ tifinagh letter yagh\nⵗ tifinagh letter tuareg yagh\nⵘ tifinagh letter ayer yagh\nⵙ tifinagh letter yas\nⵚ tifinagh letter yass\nⵛ tifinagh letter yash\nⵜ tifinagh letter yat\nⵝ tifinagh letter yath\nⵞ tifinagh letter yach\nⵟ tifinagh letter yatt\nⵠ tifinagh letter yav\nⵡ tifinagh letter yaw\nⵢ tifinagh letter yay\nⵣ tifinagh letter yaz\nⵤ tifinagh letter tawellemet yaz\nⵥ tifinagh letter yazz\nⵦ tifinagh letter ye\nⵧ tifinagh letter yo\nⵯ tifinagh modifier letter labialization mark\n⵰ tifinagh separator mark\nⶀ ethiopic syllable loa\nⶁ ethiopic syllable moa\nⶂ ethiopic syllable roa\nⶃ ethiopic syllable soa\nⶄ ethiopic syllable shoa\nⶅ ethiopic syllable boa\nⶆ ethiopic syllable toa\nⶇ ethiopic syllable coa\nⶈ ethiopic syllable noa\nⶉ ethiopic syllable nyoa\nⶊ ethiopic syllable glottal oa\nⶋ ethiopic syllable zoa\nⶌ ethiopic syllable doa\nⶍ ethiopic syllable ddoa\nⶎ ethiopic syllable joa\nⶏ ethiopic syllable thoa\nⶐ ethiopic syllable choa\nⶑ ethiopic syllable phoa\nⶒ ethiopic syllable poa\nⶓ ethiopic syllable ggwa\nⶔ ethiopic syllable ggwi\nⶕ ethiopic syllable ggwee\nⶖ ethiopic syllable ggwe\nⶠ ethiopic syllable ssa\nⶡ ethiopic syllable ssu\nⶢ ethiopic syllable ssi\nⶣ ethiopic syllable ssaa\nⶤ ethiopic syllable ssee\nⶥ ethiopic syllable sse\nⶦ ethiopic syllable sso\nⶨ ethiopic syllable cca\nⶩ ethiopic syllable ccu\nⶪ ethiopic syllable cci\nⶫ ethiopic syllable ccaa\nⶬ ethiopic syllable ccee\nⶭ ethiopic syllable cce\nⶮ ethiopic syllable cco\nⶰ ethiopic syllable zza\nⶱ ethiopic syllable zzu\nⶲ ethiopic syllable zzi\nⶳ ethiopic syllable zzaa\nⶴ ethiopic syllable zzee\nⶵ ethiopic syllable zze\nⶶ ethiopic syllable zzo\nⶸ ethiopic syllable ccha\nⶹ ethiopic syllable cchu\nⶺ ethiopic syllable cchi\nⶻ ethiopic syllable cchaa\nⶼ ethiopic syllable cchee\nⶽ ethiopic syllable cche\nⶾ ethiopic syllable ccho\nⷀ ethiopic syllable qya\nⷁ ethiopic syllable qyu\nⷂ ethiopic syllable qyi\nⷃ ethiopic syllable qyaa\nⷄ ethiopic syllable qyee\nⷅ ethiopic syllable qye\nⷆ ethiopic syllable qyo\nⷈ ethiopic syllable kya\nⷉ ethiopic syllable kyu\nⷊ ethiopic syllable kyi\nⷋ ethiopic syllable kyaa\nⷌ ethiopic syllable kyee\nⷍ ethiopic syllable kye\nⷎ ethiopic syllable kyo\nⷐ ethiopic syllable xya\nⷑ ethiopic syllable xyu\nⷒ ethiopic syllable xyi\nⷓ ethiopic syllable xyaa\nⷔ ethiopic syllable xyee\nⷕ ethiopic syllable xye\nⷖ ethiopic syllable xyo\nⷘ ethiopic syllable gya\nⷙ ethiopic syllable gyu\nⷚ ethiopic syllable gyi\nⷛ ethiopic syllable gyaa\nⷜ ethiopic syllable gyee\nⷝ ethiopic syllable gye\nⷞ ethiopic syllable gyo\n⸀ right angle substitution marker\n⸁ right angle dotted substitution marker\n⸂ left substitution bracket\n⸃ right substitution bracket\n⸄ left dotted substitution bracket\n⸅ right dotted substitution bracket\n⸆ raised interpolation marker\n⸇ raised dotted interpolation marker\n⸈ dotted transposition marker\n⸉ left transposition bracket\n⸊ right transposition bracket\n⸋ raised square\n⸌ left raised omission bracket\n⸍ right raised omission bracket\n⸎ editorial coronis\n⸏ paragraphos\n⸐ forked paragraphos\n⸑ reversed forked paragraphos\n⸒ hypodiastole\n⸓ dotted obelos\n⸔ downwards ancora\n⸕ upwards ancora\n⸖ dotted right-pointing angle\n⸗ double oblique hyphen\n⸘ inverted interrobang\n⸙ palm branch\n⸚ hyphen with diaeresis\n⸛ tilde with ring above\n⸜ left low paraphrase bracket\n⸝ right low paraphrase bracket\n⸞ tilde with dot above\n⸟ tilde with dot below\n⸠ left vertical bar with quill\n⸡ right vertical bar with quill\n⸢ top left half bracket\n⸣ top right half bracket\n⸤ bottom left half bracket\n⸥ bottom right half bracket\n⸦ left sideways u bracket\n⸧ right sideways u bracket\n⸨ left double parenthesis\n⸩ right double parenthesis\n⸪ two dots over one dot punctuation\n⸫ one dot over two dots punctuation\n⸬ squared four dot punctuation\n⸭ five dot mark\n⸮ reversed question mark\nⸯ vertical tilde\n⸰ ring point\n⸱ word separator middle dot\n⸲ turned comma\n⸳ raised dot\n⸴ raised comma\n⸵ turned semicolon\n⸶ dagger with left guard\n⸷ dagger with right guard\n⸸ turned dagger\n⸹ top half section sign\n⸺ two-em dash\n⸻ three-em dash\n⸼ stenographic full stop\n⸽ vertical six dots\n⸾ wiggly vertical line\n⸿ capitulum\n⹀ double hyphen\n⹁ reversed comma\n⹂ double low-reversed-9 quotation mark\n⹃ dash with left upturn\n⹄ double suspension mark\n"
  },
  {
    "path": "rofi/.config/rofi/scripts/rofi-farge.sh",
    "content": "#!/usr/bin/env bash\nfor file in $(ls -tl /tmp/farge | cut -d \" \" -f 9); do\n    hex_code=$(echo $file | cut -d\".\" -f 1) \n    echo -en \"#$hex_code\\0icon\\x1f/tmp/farge/$file\\n\" \ndone | rofi -dmenu | tr -d \"\\n\" | xclip -sel c\n"
  },
  {
    "path": "rofi/.config/rofi/scripts/rofi-finder.sh",
    "content": "selection=$(fd . --hidden --type file $HOME 2>/dev/null | \\\n    sed \"s;$HOME;~;\" | \\\n    rofi -sort -sorting-method fzf -disable-history -dmenu -theme default-no-icon -no-custom -p \"\" | \\\n    sed \"s;\\~;$HOME;\"\n)\n\nopen \"$selection\" \n"
  },
  {
    "path": "rofi/.config/rofi/scripts/rofi-picker.sh",
    "content": "#!/usr/bin/env bash\nchar_file=\"$HOME/.config/rofi/scripts/chars.txt\"\nselection=\"$(cat \"$char_file\" | rofi -dmenu -i -p '')\"\nchar=$(printf %b \"$selection\" | cut -d \" \" -f1)\nprintf %b \"$char\" | xclip -selection c\n"
  },
  {
    "path": "rofi/.config/rofi/themes/askpass.rasi",
    "content": "/*\n * by Siddharth Dushantha 2020\n * A very minimal graphical helper for sudo's askpass.\n * \n * Preview: https://0x0.st/iu4y.png\n * \n * Put the code below in a location such as ~/bin/askpass-rofi\n *    #!/usr/bin/env bash\n *    rofi -dmenu\\\n *        -password\\\n *        -i\\\n *        -no-fixed-num-lines\\\n *        -p \"Password:\"\\\n *        -theme ~/.config/rofi/themes/askpass.rasi\n *\n * Then the code below in your bashrc, zshrc, or something similar\n *    SUDO_ASKPASS=~/bin/askpass-rofi\n *\n */\n\n\n* {\n    background-color:      #111116;\n    text-color:           #D8DEE9;\n    font:            \"SF Mono 12\";\n}\n\n#window {\n    /* Change the this according to your screen width */\n    width:      380px;\n\n    /* Change this value according to your screen height */\n    y-offset: -10%;\n\n    /* This padding is given just for aesthetic purposes */\n    padding:    40px;\n\n    /* Add a border so that it is noticeable when the prompt appears.\n     * This is because the prompt blends in with my terminal color\n     */\n    border-color: #333333;\n    border: 2px;\n    border-radius: 5px;\n}\n\n\n#entry {\n    /*\n     * For some reason, without this option, a dash/hyphen appears\n     * at the end of the entry\n     */\n    expand: true;\n\n    /* Keeping using 200px so that long passwords can be typed */\n    width: 200px;\n}\n"
  },
  {
    "path": "rofi/.config/rofi/themes/default.rasi",
    "content": "configuration {\n  font: \"JetBrainsMono Nerd Font Medium 11\";\n  kb-row-up: \"Up,Alt+k\";\n  kb-row-down: \"Down,Alt+j\";\n  kb-mode-next: \"Tab\";\n  kb-element-next: \"\";\n\n  drun {\n    display-name: \"\";\n  }\n\n  run {\n    display-name: \"\";\n  }\n\n  window {\n    display-name: \"\";\n  }\n\n  clipboard {\n    display-name: \"󰅍\";\n  }\n\n  ssh {\n    display-name: \"\";\n  }\n\n  emoji {\n    display-name: \":)\";\n  }\n\n  timeout {\n    delay: 30;\n    action: \"kb-cancel\";\n  }\n}\n\n* {\n  margin: 0;\n  padding: 0;\n  spacing: 0;\n\n  /* \n    We use full transparency here so that we can simiulate the effect where\n    the height gets reduced. Difficult to explain, easier to understand when\n    the config is used.\n   */\n  background-color: #00000000;\n  text-color: #c5c8c6;\n}\n\nwindow {\n  transparency: \"real\";\n  width: 500px;\n}\n\nmainbox {\n  children: [inputbar, listview];\n}\n\ninputbar {\n  background-color: #17191d;\n  children: [prompt, entry];\n}\n\nprompt {\n  background-color: inherit;\n  padding: 12px;\n}\n\nentry {\n  background-color: inherit;\n  padding: 12px 3px;\n}\n\nlistview {\n  lines: 5;\n}\n\nelement {\n  children: [element-icon, element-text];\n  text-color: #6c6c6c;\n  background-color: #121416;\n  padding: 8px 10px 8px 10px;\n}\n\nelement run {\n  children: [element-icon, element-text];\n  text-color: #6c6c6c;\n}\nelement-icon {\n  padding: 10px 10px;\n  size: 20px;\n}\n\nelement-icon selected {\n  background-color: #17191d;\n}\n\nelement-text {\n  padding: 10px 0;\n  text-color: inherit;\n}\n\nelement-text selected {\n  text-color: #a4aeab;\n  background-color: #17191d;\n}\n"
  },
  {
    "path": "rofi/.config/rofi/themes/run.rasi",
    "content": "configuration {\n  font: \"JetBrainsMono Nerd Font Medium 11\";\n\n  dmenu {\n    display-name: \"\";\n  }\n\n  timeout {\n    delay: 30;\n    action: \"kb-cancel\";\n  }\n}\n\n* {\n  border: 3px;\n  margin: 0;\n  padding: 0;\n  spacing: 0;\n\n  background-color: #121416;\n  text-color: #c5c8c6;\n}\n\nwindow {\n  transparency: \"real\";\n  width: 500px;\n  x-offset: -5px;\n  y-offset: -280px;\n}\n\ninputbar {\n  background-color: #121416;\n  children: [prompt, entry];\n  height: 100px;\n}\n\nprompt {\n  background-color: inherit;\n  padding: 12px;\n}\n\nentry {\n  background-color: inherit;\n  padding: 12px 3px;\n}\n"
  },
  {
    "path": "vifm/.config/vifm/colors/Default.vifm",
    "content": "\" You can edit this file by hand.\n\" The \" character at the beginning of a line comments out the line.\n\" Blank lines are ignored.\n\n\" The Default color scheme is used for any directory that does not have\n\" a specified scheme and for parts of user interface like menus. A\n\" color scheme set for a base directory will also\n\" be used for the sub directories.\n\n\" The standard ncurses colors are:\n\" Default = -1 = None, can be used for transparency or default color\n\" Black = 0\n\" Red = 1\n\" Green = 2\n\" Yellow = 3\n\" Blue = 4\n\" Magenta = 5\n\" Cyan = 6\n\" White = 7\n\n\" Light versions of colors are also available (set bold attribute):\n\" LightBlack\n\" LightRed\n\" LightGreen\n\" LightYellow\n\" LightBlue\n\" LightMagenta\n\" LightCyan\n\" LightWhite\n\n\" Available attributes (some of them can be combined):\n\" bold\n\" underline\n\" reverse or inverse\n\" standout\n\" italic (on unsupported systems becomes reverse)\n\" none\n\n\" Vifm supports 256 colors you can use color numbers 0-255\n\" (requires properly set up terminal: set your TERM environment variable\n\" (directly or using resources) to some color terminal name (e.g.\n\" xterm-256color) from /usr/lib/terminfo/; you can check current number\n\" of colors in your terminal with tput colors command)\n\n\" highlight group cterm=attrs ctermfg=foreground_color ctermbg=background_color\n\nhighlight clear\n\nhighlight Win cterm=none ctermfg=white ctermbg=black\nhighlight Directory cterm=bold ctermfg=cyan ctermbg=default\nhighlight Link cterm=bold ctermfg=yellow ctermbg=default\nhighlight BrokenLink cterm=bold ctermfg=red ctermbg=default\nhighlight Socket cterm=bold ctermfg=magenta ctermbg=default\nhighlight Device cterm=bold ctermfg=red ctermbg=default\nhighlight Fifo cterm=bold ctermfg=cyan ctermbg=default\nhighlight Executable cterm=bold ctermfg=green ctermbg=default\nhighlight Selected cterm=bold ctermfg=magenta ctermbg=default\nhighlight CurrLine cterm=bold,reverse ctermfg=default ctermbg=default\nhighlight TopLine cterm=none ctermfg=black ctermbg=white\nhighlight TopLineSel cterm=bold ctermfg=black ctermbg=default\nhighlight StatusLine cterm=bold ctermfg=black ctermbg=white\nhighlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black\nhighlight CmdLine cterm=none ctermfg=white ctermbg=black\nhighlight ErrorMsg cterm=none ctermfg=red ctermbg=black\nhighlight Border cterm=none ctermfg=black ctermbg=white\nhighlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white\nhighlight SuggestBox cterm=bold ctermfg=default ctermbg=default\nhighlight CmpMismatch cterm=bold ctermfg=white ctermbg=red\nhighlight AuxWin cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\nhighlight TabLine cterm=none ctermfg=white ctermbg=black\nhighlight TabLineSel cterm=bold,reverse ctermfg=default ctermbg=default\nhighlight User1 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\nhighlight User2 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\nhighlight User3 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\nhighlight User4 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\nhighlight User5 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\nhighlight User6 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\nhighlight User7 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\nhighlight User8 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\nhighlight User9 cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\nhighlight OtherWin cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default\n"
  },
  {
    "path": "vifm/.config/vifm/colors/minimal.vifm",
    "content": "\" colortheme\nhighlight clear\n\nhighlight Win cterm=none ctermfg=default ctermbg=none\nhighlight Directory cterm=bold ctermfg=12 ctermbg=default\nhighlight Link cterm=bold ctermfg=216 ctermbg=default\nhighlight BrokenLink cterm=bold ctermfg=9 ctermbg=default\nhighlight Socket cterm=bold ctermfg=10 ctermbg=default\nhighlight Device cterm=bold ctermfg=9 ctermbg=default\nhighlight Fifo cterm=bold ctermfg=150 ctermbg=default\nhighlight Executable cterm=none ctermfg=150 ctermbg=default\nhighlight Selected cterm=none ctermfg=255 ctermbg=236\nhighlight CurrLine cterm=reverse\nhighlight TopLine cterm=none ctermfg=255 ctermbg=none\nhighlight TopLineSel cterm=bold ctermfg=110 ctermbg=none\nhighlight StatusLine cterm=none ctermfg=default ctermbg=none\nhighlight WildMenu cterm=reverse ctermfg=255 ctermbg=black\nhighlight CmdLine cterm=none ctermfg=default ctermbg=none\nhighlight ErrorMsg cterm=none ctermfg=203 ctermbg=none\nhighlight Border cterm=none ctermfg=black ctermbg=none\nhighlight JobLine cterm=bold,reverse ctermfg=black ctermbg=255\nhighlight SuggestBox cterm=bold ctermfg=255 ctermbg=default\nhighlight CmpMismatch cterm=bold ctermfg=255 ctermbg=9\nhighlight AuxWin cterm=bold,reverse ctermfg=default ctermbg=default\n"
  },
  {
    "path": "vifm/.config/vifm/scripts/README",
    "content": "This directory is dedicated for user-supplied scripts/executables.\nvifm modifies its PATH environment variable to let user run those\nscripts without specifying full path.  All subdirectories are added\nas well.  File in a subdirectory overrules file with the same name\nin parent directories.  Restart might be needed to recognize files\nin newly created or renamed subdirectories."
  },
  {
    "path": "vifm/.config/vifm/vifm-help.txt",
    "content": "VIFM(1)\t\t\t    General Commands Manual\t\t       VIFM(1)\n\n\n\nNAME\n       vifm - vi file manager\n\nSYNOPSIS\n       vifm [OPTION]...\n       vifm [OPTION]... path\n       vifm [OPTION]... path path\n\nDESCRIPTION\n       Vifm is an ncurses based file manager with vi like keybindings.\tIf you\n       use vi, vifm gives you complete keyboard control over your files\t with-\n       out having to learn a new set of commands.\n\nOPTIONS\n       vifm starts in the current directory unless it is given a different di-\n       rectory on the command line or 'vifminfo'  option  includes  \"savedirs\"\n       (in which case last visited directories are used as defaults).\n\n       -      Read list of files from standard input stream and compose custom\n\t      view out of them (see \"Custom views\" section).  Current  working\n\t      directory is used as a base for relative paths.\n\n       <path> Starts Vifm in the specified path.\n\n       <path> <path>\n\t      Starts Vifm in the specified paths.\n\n       Specifying  two\tdirectories  triggers split view even when vifm was in\n       single-view mode on finishing previous session.\tTo suppress  this  be-\n       haviour :only command can be put in the vifmrc file.\n\n       When only one path argument is found on command-line, the left/top pane\n       is automatically set as the current view.\n\n       Paths to files are also allowed in case you want\t vifm  to  start  with\n       some archive opened.\n\n       --select <path>\n\t      Open  parent  directory  of  the given path and select specified\n\t      file in it.\n\n       -f     Makes  vifm  instead  of\topening\t files\twrite\tselection   to\n\t      $VIFM/vimfiles and quit.\n\n       --choose-files <path>|-\n\t      Sets  output  file  to  write  selection into on exit instead of\n\t      opening files.  \"-\" means standard output.  Use empty  value  to\n\t      disable it.\n\n       --choose-dir <path>|-\n\t      Sets  output  file to write last visited directory into on exit.\n\t      \"-\" means standard output.  Use empty value to disable it.\n\n       --delimiter <delimiter>\n\t      Sets separator for list of  file\tpaths  written\tout  by\t vifm.\n\t      Empty  value  means null character.  Default is new line charac-\n\t      ter.\n\n       --on-choose <command>\n\t      Sets command to be executed on selected files instead of opening\n\t      them.   The  command may use any of macros described in \"Command\n\t      macros\" section below.  The command is executed once  for\t whole\n\t      selection.\n\n       --logging[=<startup log path>]\n\t      Log some operational details $VIFM/log.  If the optional startup\n\t      log path is specified and permissions allow to open it for writ-\n\t      ing, then logging of early initialization (before value of $VIFM\n\t      is determined) is put there.\n\n       --server-list\n\t      List available server names and exit.\n\n       --server-name <name>\n\t      Name of target or this instance (sequential numbers are appended\n\t      on name conflict).\n\n       --remote\n\t      Sends  the rest of the command line to another instance of vifm,\n\t      --server-name is treated just like any other argument and should\n\t      precede  --remote on the command line.  When there is no server,\n\t      quits silently.  There is no limit on how many arguments can  be\n\t      processed.  One can combine --remote with -c <command> or +<com-\n\t      mand> to execute commands in already running instance  of\t vifm.\n\t      See also \"Client-Server\" section below.\n\n       --remote-expr\n\t      passes  expression  to  vifm server and prints result.  See also\n\t      \"Client-Server\" section below.\n\n       -c <command> or +<command>\n\t      Run command-line mode <command> on startup.   Commands  in  such\n\t      arguments are executed in the order they appear in command line.\n\t      Commands with spaces or special symbols must be enclosed in dou-\n\t      ble  or  single  quotes or all special symbols should be escaped\n\t      (the exact syntax strongly depends on shell).  \"+\"  argument  is\n\t      equivalent to \"$\" and thus picks last item of of the view.\n\n       --help, -h\n\t      Show a brief command summary and exit vifm.\n\n       --version, -v\n\t      Show version information and quit.\n\n       --no-configs\n\t      Skip reading vifmrc and vifminfo.\n\n\n       See \"Startup\" section below for the explanations on $VIFM.\n\nGeneral keys\n       Ctrl-C or Escape\n\t      cancel most operations (see \"Cancellation\" section below), clear\n\t      all selected files.\n\n       Ctrl-L clear and redraw the screen.\n\nBasic Movement\n       The basic vi key bindings are used to move through the files and pop-up\n       windows.\n\n       k, gk, or Ctrl-P\n\t      move cursor up one line.\n\n       j, gj or Ctrl-N\n\t      move cursor down one line.\n\n       h      when  'lsview' is off move up one directory (moves to parent di-\n\t      rectory node in tree view), otherwise move left one file.\n\n       l      when 'lsview' is off move into a directory or launches  a\t file,\n\t      otherwise move right one file.\n\n       gg     move to the first line of the file list.\n\n       G      move to the last line in the file list.\n\n       gh     go  up one directory regardless of view representation (regular,\n\t      ls-like).\t Also can be used to leave custom views including tree\n\t      view.\n\n       gl or Enter\n\t      enter directory or launch a file.\n\n       H      move to the first file in the window.\n\n       M      move to the file in the middle of the window.\n\n       L      move to the last file in the window.\n\n       Ctrl-F or Page Down\n\t      move forward one page.\n\n       Ctrl-B or Page Up\n\t      move back one page.\n\n       Ctrl-D jump back one half page.\n\n       Ctrl-U jump forward one half page.\n\n       n%     move to the file that is n percent from the top of the list (for\n\t      example 25%).\n\n       0 or ^ move cursor to the first column.\tSee 'lsview'  option  descrip-\n\t      tion.\n\n       $      move  cursor  to\tthe last column.  See 'lsview' option descrip-\n\t      tion.\n\n       Space  switch file lists.\n\n       gt     switch to the next tab (wrapping around).\n\n       {n}gt  switch to the tab number {n} (wrapping around).\n\n       gT     switch to the previous tab (wrapping around).\n\n       {n}gT  switch to {n}-th previous tab.\n\nMovement with Count\n       Most movement commands also accept a count,  12j\t would\tmove  down  12\n       files.\n\n       [count]%\n\t      move to percent of the file list.\n\n       [count]j\n\t      move down [count] files.\n\n       [count]k\n\t      move up [count] files.\n\n       [count]G or [count]gg\n\t      move to list position [count].\n\n       [count]h\n\t      go up [count] directories.\n\nScrolling panes\n       zt     redraw pane with file in top of list.\n\n       zz     redraw pane with file in center of list.\n\n       zb     redraw pane with file in bottom of list.\n\n       Ctrl-E scroll pane one line down.\n\n       Ctrl-Y scroll pane one line up.\n\nPane manipulation\n       Second character can be entered with or without Control key.\n\n       Ctrl-W H\n\t      move the pane to the far left.\n\n       Ctrl-W J\n\t      move the pane to the very bottom.\n\n       Ctrl-W K\n\t      move the pane to the very top.\n\n       Ctrl-W L\n\t      move the pane to the far right.\n\n\n       Ctrl-W h\n\t      switch to the left pane.\n\n       Ctrl-W j\n\t      switch to the pane below.\n\n       Ctrl-W k\n\t      switch to the pane above.\n\n       Ctrl-W l\n\t      switch to the right pane.\n\n\n       Ctrl-W b\n\t      switch to bottom-right window.\n\n       Ctrl-W t\n\t      switch to top-left window.\n\n\n       Ctrl-W p\n\t      switch to previous window.\n\n       Ctrl-W w\n\t      switch to other pane.\n\n\n       Ctrl-W o\n\t      leave only one pane.\n\n       Ctrl-W s\n\t      split window horizontally.\n\n       Ctrl-W v\n\t      split window vertically.\n\n\n       Ctrl-W x\n\t      exchange panes.\n\n       Ctrl-W z\n\t      quit preview pane or view modes.\n\n\n       Ctrl-W -\n\t      decrease size of the view by count.\n\n       Ctrl-W +\n\t      increase size of the view by count.\n\n       Ctrl-W <\n\t      decrease size of the view by count.\n\n       Ctrl-W >\n\t      increase size of the view by count.\n\n\n       Ctrl-W |\n\t      set current view size to count.\n\n       Ctrl-W _\n\t      set current view size to count.\n\n       Ctrl-W =\n\t      make size of two views equal.\n\n       For  Ctrl-W +, Ctrl-W -, Ctrl-W <, Ctrl-W >, Ctrl-W | and Ctrl-W _ com-\n       mands count can be given before and/or  after  Ctrl-W.\tThe  resulting\n       count  is  a  multiplication of those two.  So \"2 Ctrl-W 2 -\" decreases\n       window size by 4 lines or columns.\n\n       Ctrl-W | and Ctrl-W _ maximise current view by default.\n\nMarks\n       Marks are set the same way as they are in vi.\n\n       You can use these characters for marks [a-z][A-Z][0-9].\n\n       m[a-z][A-Z][0-9]\n\t      set a mark for the file at the current cursor position.\n\n       '[a-z][A-Z][0-9]\n\t      navigate to the file set for the mark.\n\n\n       There are also several special marks that can't be set manually:\n\n\t - ' (single quote) - previously visited directory of the  view,  thus\n\t   hitting '' allows switching between two last locations\n\n\t - < - the first file of the last visually selected block\n\n\t - > - the last file of the last visually selected block\n\nSearching\n       /regular expression pattern\n\t      search  for  files matching regular expression in forward direc-\n\t      tion and advance cursor to next match.\n\n       /      perform forward search with top item of search pattern history.\n\n       ?regular expression pattern\n\t      search for files matching regular expression in backward\tdirec-\n\t      tion and advance cursor to previous match.\n\n       ?      perform backward search with top item of search pattern history.\n\n       Trailing\t slash\tfor directories is taken into account, so /\\/ searches\n       for directories and symbolic links to directories.  At  the  moment  //\n       works  too, but this can change in the future, so consider escaping the\n       slash if not typing pattern by hand.\n\n       Matches are automatically selected  if  'hlsearch'  is  set.   Enabling\n       'incsearch' makes search interactive.  'ignorecase' and 'smartcase' op-\n       tions affect case sensitivity of search queries.\n\n\n       [count]n\n\t      go to the next file matching last search\tpattern.   Takes  last\n\t      search direction into account.\n\n       [count]N\n\t      go  to  the  previous  file matching last search pattern.\t Takes\n\t      last search direction into account.\n\n       If 'hlsearch' option is set, hitting n/N to perform search  and\tgo  to\n       the first matching item resets current selection in normal mode.\t It is\n       not the case if search was already performed on files in the directory,\n       thus  selection\tis  not reset after clearing selection with escape key\n       and hitting n/N key again.\n\n       Note: vifm uses extended regular expressions for / and ?.\n\n\n       [count]f[character]\n\t      search forward for file with [character] as first\t character  in\n\t      name.  Search wraps around the end of the list.\n\n       [count]F[character]\n\t      search  backward for file with [character] as first character in\n\t      name.  Search wraps around the end of the list.\n\n       [count];\n\t      find the next match of f or F.\n\n       [count],\n\t      find the previous match of f or F.\n\n       Note: f, F, ; and , wrap around list beginning and end  when  they  are\n       used alone and they don't wrap when they are used as selectors.\n\nFile Filters\n       There are three basic file filters:\n\n\t - dot files filter (does not affect \".\" and \"..\" special directories,\n\t   whose appearance is controlled by the 'dotdirs' option), see\t 'dot-\n\t   files' option;\n\n\t - permanent filter;\n\n\t - local filter (see description of the \"=\" normal mode command).\n\n       Permanent  filter  essentially  allows  defining a group of files names\n       which are not desirable to be seen by default, like temporary or backup\n       files,  which  might  be\t created alongside normal ones.\t Just like you\n       don't usually need to see hidden dot files (files starting with a dot).\n       Local  filter on the other hand is for temporary immediate filtering of\n       file list at hand, to get rid of uninterested files in the view\tor  to\n       make it possible to use % range in a :command.\n\n       For  the\t purposes  of  more  deterministic editing permanent filter is\n       split into two parts:\n\n\t - one edited explicitly via :filter command;\n\n\t - another one which is edited implicitly via zf shortcut.\n\n       Files are tested against both parts and a match counts if at least  one\n       of the parts matched.\n\n\n       Each file list has its own copy of each filter.\n\n       Filtered files are not checked in / search or :commands.\n\n       Files and directories are filtered separately.  This is done by append-\n       ing a slash to a directory name before testing whether it  matches  the\n       filter. Examples:\n\n\n\t \" filter directories which names end with '.files'\n\t :filter /^.*\\.files\\/$/\n\n\t \" filter files which names end with '.d'\n\t :filter {*.d}\n\n\t \" filter files and directories which names end with '.o'\n\t :filter /^.*\\.o\\/?$/\n\n       Note: vifm uses extended regular expressions.\n\n       The basic vim folding key bindings are used for managing filters.\n\n\n       za     toggle visibility of dot files.\n\n       zo     show dot files.\n\n       zm     hide dot files.\n\n       zf     add selected files to permanent filter.\n\n       zO     reset permanent filter.\n\n       zR     save and reset all filters.\n\n       zr     clear local filter.\n\n       zM     restore all filters (undoes last zR).\n\n       zd     exclude  selection  or  current  file  from a custom view.  Does\n\t      nothing for regular view.\t For tree view excluding directory ex-\n\t      cludes that sub-tree.  For compare views zd hides group of adja-\n\t      cent identical files, count can be specified  as\t1  to  exclude\n\t      just single file or selected items instead.  Files excluded this\n\t      way are not counted as filtered out and can't be returned unless\n\t      view is reloaded.\n\n       =regular expression pattern\n\t      filter  out  files that don't match regular expression.  Whether\n\t      view is updated as regular expression is changed depends on  the\n\t      value  of\t the 'incsearch' option.  This kind of filter is auto-\n\t      matically reset when directory is changed.\n\nOther Normal Mode Keys\n       [count]:\n\t      enter command line mode.\t[count] generates range.\n\n       q:     open external editor to prompt for  command-line\tcommand.   See\n\t      \"Command line editing\" section for details.\n\n       q/     open external editor to prompt for search pattern to be searched\n\t      in forward direction.  See \"Command line\tediting\"  section  for\n\t      details.\n\n       q?     open external editor to prompt for search pattern to be searched\n\t      in backward direction.  See \"Command line editing\"  section  for\n\t      details.\n\n       q=     open external editor to prompt for filter pattern.  See \"Command\n\t      line editing\" section for details.  Unlike other\tq{x}  commands\n\t      this one doesn't work in Visual mode.\n\n       [count]!! and [count]!<selector>\n\t      enter  command  line mode with entered ! command.\t [count] modi-\n\t      fies range.\n\n       Ctrl-O go backwards through directory history of current view.\tNonex-\n\t      istent directories are automatically skipped.\n\n       Ctrl-I if  'cpoptions' contains \"t\" flag, <tab> and <c-i> switch active\n\t      pane just like <space> does, otherwise it goes  forward  through\n\t      directory\t history of current view.  Nonexistent directories are\n\t      automatically skipped.\n\n       Ctrl-G create a window showing detailed information about  the  current\n\t      file.\n\n       Shift-Tab\n\t      enters  view  mode  (works  only after activating view pane with\n\t      :view command).\n\n       ga     calculate directory size.\t Uses cached directory sizes when pos-\n\t      sible  for  better  performance.\t As a special case calculating\n\t      size of \"..\" entry results in calculation of size of current di-\n\t      rectory.\n\n       gA     like  ga,\t but  force  update.   Ignores old values of directory\n\t      sizes.\n\n       If file under cursor is selected, each selected item is processed, oth-\n       erwise only current file is updated.\n\n       gf     find  link  destination (like l with 'followlinks' off, but also\n\t      finds directories).\n\n       gr     only for MS-Windows\n\t      same as l key, but tries\tto  run\t program  with\tadministrative\n\t      privileges.\n\n       av     go  to visual mode into selection amending state preserving cur-\n\t      rent selection.\n\n       gv     go to visual mode restoring last selection.\n\n       [reg]gs\n\t      when no register is specified, restore last t selection (similar\n\t      to  what\tgv  does  for  visual mode selection).\tIf register is\n\t      present, then all files listed in that register  and  which  are\n\t      visible in current view are selected.\n\n       gu<selector>\n\t      make names of selected files lowercase.\n\n       [count]guu and [count]gugu\n\t      make names of [count] files starting from the current one lower-\n\t      case.  Without [count] only current file is affected.\n\n       gU<selector>\n\t      make names of selected files uppercase.\n\n       [count]gUU and [count]gUgU\n\t      make names of [count] files starting from the current one upper-\n\t      case.  Without [count] only current file is affected.\n\n       e      explore file in the current pane.\n\n       i      handle  file (even if it's an executable and 'runexec' option is\n\t      set).\n\n       cw     change word is used to rename a file or files.\n\n       cW     change WORD is used to change only name of file (without\texten-\n\t      sion).\n\n       cl     change link target.\n\n       co     only for *nix\n\t      change file owner.\n\n       cg     only for *nix\n\t      change file group.\n\n       [count]cp\n\t      change  file  attributes\t(permission  on *nix and properties on\n\t      Windows).\t If [count] is specified, it's\ttreated\t as  numerical\n\t      argument\t for   non-recursive  `chmod`  command\t(of  the  form\n\t      [0-7]{3,4}).\n\n       [count]C\n\t      clone file [count] times.\n\n       [count]dd or d[count]selector\n\t      move selected file or files to trash directory (if  'trash'  op-\n\t      tion  is\tset, otherwise delete).\t See \"Trash directory\" section\n\t      below.\n\n       [count]DD or D[count]selector\n\t      like dd and d<selector>, but omitting trash directory (even when\n\t      'trash' option is set).\n\n       Y, [count]yy or y[count]selector\n\t      yank selected files.\n\n       p      copy  yanked files to the current directory or move the files to\n\t      the current directory if they were deleted with dd or  :d[elete]\n\t      or  if  the  files were yanked from trash directory.  See \"Trash\n\t      directory\" section below.\n\n       P      move the last yanked files.  The advantage of using P instead of\n\t      d followed by p is that P moves files only once.\tThis isn't im-\n\t      portant in case you're moving files  in  the  same  file\tsystem\n\t      where  your home directory is, but using P to move files on some\n\t      other file system (or file systems, in case  you\twant  to  move\n\t      files  from  fs1\tto  fs2 and your home is on fs3) can save your\n\t      time.\n\n       al     put symbolic links with absolute paths.\n\n       rl     put symbolic links with relative paths.\n\n       t      select or unselect (tag) the current file.\n\n       u      undo last change.\n\n       Ctrl-R redo last change.\n\n       dp     in compare view of \"ofboth grouppaths\" kind, makes corresponding\n\t      entry of the other pane equal to the current one.\t The semantics\n\t      is as follows:\n\t       - nothing done for identical entries\n\t       - if file is missing in current view, its pair gets removed\n\t       - if file is missing or differs in other view, it's replaced\n\t       - file pairs are defined by matching relative paths\n\t      File removal obeys 'trash' option.  When the option is  enabled,\n\t      the  operation  can  be undone/redone (although results won't be\n\t      visible automatically).\n\t      Unlike in Vim, this operation is\tperformed  on  a  single  line\n\t      rather than a set of adjacent changes.\n\n       do     same as dp, but applies changes in the opposite direction.\n\n       v or V enter visual mode, clears current selection.\n\n       [count]Ctrl-A\n\t      increment first number in file name by [count] (1 by default).\n\n       [count]Ctrl-X\n\t      decrement first number in file name by [count] (1 by default).\n\n       ZQ     same as :quit!.\n\n       ZZ     same as :quit.\n\n       .      repeat  last  command-line  command (not normal mode command) of\n\t      this session (does nothing right after startup or :restart  com-\n\t      mand).   The  command doesn't depend on command-line history and\n\t      can be used with completely disabled history.\n\n       (      go to previous group.  Groups are\t defined  by  primary  sorting\n\t      key.   For  name and iname members of each group have same first\n\t      letter, for all other sorting keys vifm uses size, uid, ...\n\n       )      go to next group.\t See ( key description above.\n\n       {      speeds up navigation to closest previous entry of\t the  opposite\n\t      type  by\tmoving to the first file backwards when cursor is on a\n\t      directory and to the first directory backwards when cursor is on\n\t      a\t file.\tThis is essentially a special case of ( that is locked\n\t      on \"dirs\".\n\n       }      same as {, but in forward direction.\n\n       [c     go to previous mismatched entry in directory comparison view  or\n\t      do nothing.\n\n       ]c     go  to  next mismatched entry in directory comparison view or do\n\t      nothing.\n\n       [d     go to previous directory entry or do nothing.\n\n       ]d     go to next directory entry or do nothing.\n\n       [r     same as :siblprev.\n\n       ]r     same as :siblnext.\n\n       [R     same as :siblprev!.\n\n       ]R     same as :siblnext!.\n\n       [s     go to previous selected entry or do nothing.\n\n       ]s     go to next selected entry or do nothing.\n\n       [z     go to first sibling of current entry.\n\n       ]z     go to last sibling of current entry.\n\n       zj     go to next directory sibling of current entry or do nothing.\n\n       zk     go to previous directory sibling of current entry or do nothing.\n\nUsing Count\n       You can use count with commands like yy.\n\n       [count]yy\n\t      yank count files starting from current cursor position downward.\n\n       Or you can use count with motions passed to y, d or D.\n\n       d[count]j\n\t      delete (count + 1) files starting from current  cursor  position\n\t      upward.\n\nRegisters\n       vifm  supports  multiple registers for temporary storing list of yanked\n       or deleted files.\n\n       Registers should be specified by hitting double quote key followed by a\n       register\t name.\t Count\tis  specified after register name.  By default\n       commands use unnamed register, which has double quote as its name.\n\n       Though all commands accept registers, most  of  commands\t ignores  them\n       (for  example H or Ctrl-U).  Other commands can fill register or append\n       new files to it.\n\n       Presently vifm supports \", _, a-z and A-Z characters as register names.\n\n       As mentioned above \" is unnamed register and has special meaning of the\n       default\tregister.  Every time when you use named registers (a-z and A-\n       Z) unnamed register is updated to contain same list  of\tfiles  as  the\n       last used register.\n\n       _  is black hole register.  It can be used for writing, but its list is\n       always empty.\n\n       Registers with names from a to z and from A to Z are named ones.\t  Low-\n       ercase  registers  are cleared before adding new files, while uppercase\n       aren't and should be used to append new files to the existing file list\n       of appropriate lowercase register (A for a, B for b, ...).\n\n       Registers  can be changed on :empty command if they contain files under\n       trash directory (see \"Trash directory\" section below).\n\n       Registers do not contain one file more than once.\n\n       Example:\n\n\t \"a2yy\n\n       puts names of two files to register a (and to the unnamed register),\n\n\t \"Ad\n\n       removes one file and append its name to register a (and to the  unnamed\n       register),\n\n\t p or \"ap or \"Ap\n\n       inserts previously yanked and deleted files into current directory.\n\nSelectors\n       y,  d, D, !, gu and gU commands accept selectors.  You can combine them\n       with any of selectors below to quickly remove or yank several files.\n\n       Most of selectors are like vi motions: j, k, gg, G, H, L, M, %,\tf,  F,\n       ;, comma, ', ^, 0 and $.\t But there are some additional ones.\n\n       a      all files in current view.\n\n       s      selected files.\n\n       S      all files except selected.\n\n       Examples:\n\n\t - dj - delete file under cursor and one below;\n\n\t - d2j - delete file under cursor and two below;\n\n\t - y6gg - yank all files from cursor position to 6th file in the list.\n\n       When you pass a count to whole command and its selector they are multi-\n       plied. So:\n\n\t - 2d2j - delete file under cursor and four below;\n\n\t - 2dj - delete file under cursor and two below;\n\n\t - 2y6gg - yank all files from cursor position to  12th\t file  in  the\n\t   list.\n\nVisual Mode\n       Visual mode has to generic operating submodes:\n\n\t - plain selection as it is in Vim;\n\n\t - selection editing submode.\n\n       Both  modes  select files in range from cursor position at which visual\n       mode was entered to current cursor position (let's call\tit  \"selection\n       region\").  Each of two borders can be adjusted by swapping them via \"o\"\n       or \"O\" keys and updating cursor position\t with  regular\tcursor\tmotion\n       keys.   Obviously,  once\t initial  cursor position is altered this way,\n       real start position becomes unavailable.\n\n       Plain Vim-like visual mode starts with cleared selection, which is  not\n       restored\t on  rejecting selection (\"Escape\", \"Ctrl-C\", \"v\", \"V\").  Con-\n       trary to it, selection editing doesn't clear previously selected\t files\n       and  restores  them after reject.  Accepting selection by performing an\n       operation on selected items (e.g. yanking them via \"y\") moves cursor to\n       the  top of current selection region (not to the top most selected file\n       of the view).\n\n       In turn, selection editing supports three types\tof  editing  (look  at\n       statusbar to know which one is currently active):\n\n\t - append - amend selection by selecting elements in selection region;\n\n\t - remove  -  amend selection by deselecting elements in selection re-\n\t   gion;\n\n\t - invert - amend selection by inverting selection of elements in  se-\n\t   lection region.\n\n       No  matter  how\tyou  activate selection editing it starts in \"append\".\n       One can switch type of operation (in the order given above) via\t\"Ctrl-\n       G\" key.\n\n       Almost all normal mode keys work in visual mode, but instead of accept-\n       ing selectors they operate on selected items.\n\n       Enter  save selection and go back to normal mode not moving cursor.\n\n       av     leave visual mode if in amending mode (restores previous\tselec-\n\t      tion), otherwise switch to amending selection mode.\n\n       gv     restore previous visual selection.\n\n       v, V, Ctrl-C or Escape\n\t      leave  visual  mode if not in amending mode, otherwise switch to\n\t      normal visual selection.\n\n       Ctrl-G switch type of amending by round robin scheme: append ->\tremove\n\t      -> invert.\n\n       :      enter  command  line  mode.  Selection is cleared on leaving the\n\t      mode.\n\n       o      switch active selection bound.\n\n       O      switch active selection bound.\n\n       gu, u  make names of selected files lowercase.\n\n       gU, U  make names of selected files uppercase.\n\nView Mode\n       This mode tries to imitate the less program.  List of builtin shortcuts\n       can be found below.  Shortcuts can be customized using :qmap, :qnoremap\n       and :qunmap command-line commands.\n\n       Shift-Tab, Tab, q, Q, ZZ\n\t      return to normal mode.\n\n       [count]e, [count]Ctrl-E, [count]j, [count]Ctrl-N, [count]Enter\n\t      scroll forward one line (or [count] lines).\n\n       [count]y, [count]Ctrl-Y, [count]k, [count]Ctrl-K, [count]Ctrl-P\n\t      scroll backward one line (or [count] lines).\n\n       [count]f, [count]Ctrl-F, [count]Ctrl-V, [count]Space\n\t      scroll forward one window (or [count] lines).\n\n       [count]b, [count]Ctrl-B, [count]Alt-V\n\t      scroll backward one window (or [count] lines).\n\n       [count]z\n\t      scroll forward one window (and set window to [count]).\n\n       [count]w\n\t      scroll backward one window (and set window to [count]).\n\n       [count]Alt-Space\n\t      scroll forward one window, but don't stop at end-of-file.\n\n       [count]d, [count]Ctrl-D\n\t      scroll forward one half-window (and set half-window to [count]).\n\n       [count]u, [count]Ctrl-U\n\t      scroll  backward\tone  half-window  (and\tset   half-window   to\n\t      [count]).\n\n       r, Ctrl-R, Ctrl-L\n\t      repaint screen.\n\n       R      reload view preserving scroll position.\n\n       F      toggle  automatic\t forwarding.   Roughly\tequivalent to periodic\n\t      file reload and scrolling to the bottom.\tThe behaviour is simi-\n\t      lar to `tail -F` or F key in less.\n\n       [count]/pattern\n\t      search forward for ([count]-th) matching line.\n\n       [count]?pattern\n\t      search backward for ([count]-th) matching line.\n\n       [count]n\n\t      repeat previous search (for [count]-th occurrence).\n\n       [count]N\n\t      repeat  previous search in reverse direction (for [count]-th oc-\n\t      currence).\n\n       [count]g, [count]<, [count]Alt-<\n\t      scroll to the first line of the file (or line [count]).\n\n       [count]G, [count]>, [count]Alt->\n\t      scroll to the last line of the file (or line [count]).\n\n       [count]p, [count]%\n\t      scroll to the beginning of the file (or N percent into file).\n\n       v      invoke an editor to edit the current  file  being\t viewed.   The\n\t      command  for  editing  is taken from the 'vicmd'/'vixcmd' option\n\t      value and extended with middle line number prepended by  a  plus\n\t      sign and name of the current file.\n\n       All  \"Ctrl-W  x\" keys work the same was as in Normal mode.  Active mode\n       is automatically changed on navigating among windows.   When  less-like\n       mode  activated\ton  file preview is left using one by \"Ctrl-W x\" keys,\n       its state is stored until another file is displayed using preview (it's\n       possible\t to leave the mode, hide preview pane, do something else, then\n       get back to the file and show preview pane again with previously stored\n       state in it).\n\nCommand line Mode\n       These keys are available in all submodes of the command line mode: com-\n       mand, search, prompt and filtering.\n\n       Down, Up, Left, Right, Home, End and Delete are extended keys and  they\n       are  not available if vifm is compiled with --disable-extended-keys op-\n       tion.\n\n       Esc, Ctrl-C\n\t      leave command line mode,\tcancels\t input.\t  Cancelled  input  is\n\t      saved into appropriate history and can be recalled later.\n\n       Ctrl-M, Enter\n\t      execute command and leave command line mode.\n\n       Ctrl-I, Tab\n\t      complete command or its argument.\n\n       Shift-Tab\n\t      complete in reverse order.\n\n       Ctrl-_ stop completion and return original input.\n\n       Ctrl-B, Left\n\t      move cursor to the left.\n\n       Ctrl-F, Right\n\t      move cursor to the right.\n\n       Ctrl-A, Home\n\t      go to line beginning.\n\n       Ctrl-E, End\n\t      go to line end.\n\n       Alt-B  go to the beginning of previous word.\n\n       Alt-F  go to the end of next word.\n\n       Ctrl-U remove  characters  from\tcursor\tposition till the beginning of\n\t      line.\n\n       Ctrl-K remove characters from cursor position till the end of line.\n\n       Ctrl-H, Backspace\n\t      remove character before the cursor.\n\n       Ctrl-D, Delete\n\t      remove character under the cursor.\n\n       Ctrl-W remove characters from cursor position  till  the\t beginning  of\n\t      previous word.\n\n       Alt-D  remove  characters  from\tcursor\tposition till the beginning of\n\t      next word.\n\n       Ctrl-T swap the order of current and previous character and move cursor\n\t      forward  or,  if\tcursor past the end of line, swap the order of\n\t      two last characters in the line.\n\n       Alt-.  insert last part of previous command to current cursor position.\n\t      Each next call will insert last part of older command.\n\n       Ctrl-G edit command-line content in external editor.  See \"Command line\n\t      editing\" section for details.\n\n       Ctrl-N recall more recent command-line from history.\n\n       Ctrl-P recall older command-line from history.\n\n       Up     recall more recent command-line from history, that begins as the\n\t      current command-line.\n\n       Down   recall  older command-line from history, that begins as the cur-\n\t      rent command-line.\n\n       Ctrl-] trigger abbreviation expansion.\n\nPasting special values\n       The shortcuts listed below insert specified values into current\tcursor\n       position.  Last key of every shortcut references value that it inserts:\n\t - c - [c]urrent file\n\t - d - [d]irectory path\n\t - e - [e]xtension of a file name\n\t - r - [r]oot part of a file name\n\t - t - [t]ail part of directory path\n\n\t - a - [a]utomatic filter\n\t - m - [m]anual filter\n\t - = - local filter, which is bound to \"=\" in normal mode\n\n       Values related to filelist in current pane are available through Ctrl-X\n       prefix, while values from the other pane have  doubled  Ctrl-X  key  as\n       their  prefix  (doubled Ctrl-X is presumably easier to type than upper-\n       case letters; it's still easy to remap the keys to correspond to\t names\n       of similar macros).\n\n       Ctrl-X c\n\t      name of the current file of the active pane.\n\n       Ctrl-X d\n\t      path to the current directory of the active pane.\n\n       Ctrl-X e\n\t      extension of the current file of the active pane.\n\n       Ctrl-X r\n\t      name root of current file of the active pane.\n\n       Ctrl-X t\n\t      the  last\t component of path to the current directory of the ac-\n\t      tive pane.\n\n       Ctrl-X Ctrl-X c\n\t      name of the current file of the inactive pane.\n\n       Ctrl-X Ctrl-X d\n\t      path to the current directory of the inactive pane.\n\n       Ctrl-X Ctrl-X e\n\t      extension of the current file of the inactive pane.\n\n       Ctrl-X Ctrl-X r\n\t      name root of current file of the inactive pane.\n\n       Ctrl-X Ctrl-X t\n\t      the last component of path to the current directory of the inac-\n\t      tive pane.\n\n\n       Ctrl-X a\n\t      value of implicit permanent filter (old name \"automatic\") of the\n\t      active pane.\n\n       Ctrl-X m\n\t      value of explicit permanent filter (old name  \"manual\")  of  the\n\t      active pane.\n\n       Ctrl-X =\n\t      value of local filter of the active pane.\n\n\n       Ctrl-X /\n\t      last pattern from search history.\n\nCommand line editing\n       vifm provides a facility to edit several kinds of data, that is usually\n       edited in command-line mode, in external editor (using  command\tspeci-\n       fied  by 'vicmd' or 'vixcmd' option).  This has at least two advantages\n       over built-in command-line mode:\n\t - one can use full power of Vim to edit text;\n\t - finding and reusing history entries becomes possible.\n\n       The facility is supported by four input submodes of the command-line:\n\t - command;\n\t - forward search;\n\t - backward search;\n\t - file rename (see description of cw and cW normal mode keys).\n\n       Editing command-line using external editor is activated by  the\tCtrl-G\n       shortcut.   It's\t also  possible\t to do almost the same from Normal and\n       Visual modes using q:, q/ and q? commands.\n\n       Temporary file created for the purpose of editing the line has the fol-\n       lowing structure:\n\n\t 1. First line, which is either empty or contains text already entered\n\t    in command-line.\n\n\t 2. 2nd and all other lines with history items starting with the  most\n\t    recent  one.   Altering this lines in any way won't change history\n\t    items stored by vifm.\n\n       After editing application is finished the first line  of\t the  file  is\n       taken  as  the  result  of operation, when the application returns zero\n       exit code.  If the application returns an error (see :cquit command  in\n       Vim), all the edits made to the file are ignored, but the initial value\n       of the first line is saved in appropriate history.\n\nMore Mode\n       This is the mode that appears when status bar content is so big that it\n       doesn't\tfit  on the screen.  One can identify the mode by \"-- More --\"\n       message at the bottom.\n\n       The following keys are handled in this mode:\n\n\n       Enter, Ctrl-J, j or Down\n\t      scroll one line down.\n\n       Backspace, k or Up\n\t      scroll one line up.\n\n\n       d      scroll one page (half of a screen) down.\n\n       u      scroll one page (half of a screen) up.\n\n\n       Space, f or PageDown\n\t      scroll down a screen.\n\n       b or PageUp\n\t      scroll up a screen.\n\n\n       G      scroll to the bottom.\n\n       g      scroll to the top.\n\n\n       q, Escape or Ctrl-C\n\t      quit the mode.\n\n       :      switch to command-line mode.\n\nCommands\n       Commands are executed with :command_name<Enter>\n\n       Commented out lines should start with  the  double  quote  symbol  (\"),\n       which  may be preceded by whitespace characters intermixed with colons.\n       Inline comments can be added at the end of the line after double\t quote\n       symbol,\tonly  last  line of a multi-line command can contain such com-\n       ment.  Not all commands support inline comments as  their  syntax  con-\n       flicts  with  names of registers and fields where double quotes are al-\n       lowed.\n\n       Most of the commands have two forms: complete and the short one.\t Exam-\n       ple:\n\n\t :noh[lsearch]\n\n       This  means  the\t complete  command is nohlsearch, and the short one is\n       noh.\n\n       Most of command-line commands completely reset selection in the current\n       view.  However, there are several exceptions:\n\n\t - `:invert s` most likely leaves some files selected;\n\n\t - :normal command (when it doesn't leave command-line mode);\n\n\t - :if\tand :else commands don't affect selection on successful execu-\n\t   tion.\n\n       '|' can be used to separate commands, so you can give multiple commands\n       in  one\tline.\tIf you want to use '|' in an argument, precede it with\n       '\\'.\n\n       These commands see '|' as part of their arguments even  when  it's  es-\n       caped:\n\n\t   :[range]!\n\t   :autocmd\n\t   :cabbrev\n\t   :cmap\n\t   :cnoreabbrev\n\t   :cnoremap\n\t   :command\n\t   :dmap\n\t   :dnoremap\n\t   :filetype\n\t   :fileviewer\n\t   :filextype\n\t   :map\n\t   :mmap\n\t   :mnoremap\n\t   :nmap\n\t   :nnoremap\n\t   :noremap\n\t   :normal\n\t   :qmap\n\t   :qnoremap\n\t   :vmap\n\t   :vnoremap\n\t   :wincmd\n\t   :windo\n\t   :winrun\n\n       To  be able to use another command after one of these, wrap it with the\n       :execute command.  An example:\n\n\t if filetype('.') == 'reg' | execute '!!echo regular file' | endif\n\n       :[count]\n\n       :number\n\t      move to the file number.\n\t      :12 would move to the 12th file in the list.\n\t      :0 move to the top of the list.\n\t      :$ move to the bottom of the list.\n\n       :[count]command\n\t      The  only\t builtin  :[count]command  are\t:[count]d[elete]   and\n\t      :[count]y[ank].\n\n       :d3    would  delete  three files starting at the current file position\n\t      moving down.\n\n       :3d    would delete one file at the third line in the list.\n\n       :command [args]\n\n       :[range]!program\n\t      execute command via shell.  Accepts macros.\n\n       :[range]!command &\n\n       same as above, but the command is run in the  background\t using\tvifm's\n       means.\n\n       Programs that write to stdout like \"ls\" create an error message showing\n       partial output of the command.\n\n       Note the space before ampersand symbol, if you omit it, command will be\n       run in the background using job control of your shell.\n\n       Accepts macros.\n\n\t\t\t\t\t\t:!!\n\n       :[range]!!command\n\t      same as :!, but pauses before returning.\n\n       :!!    repeat the last command.\n\n\t\t\t\t\t\t:alink\n\n       :[range]alink[!?]\n\t      create absolute symbolic links to files in directory of inactive\n\t      view.  With \"?\"  prompts for destination file names in  an  edi-\n\t      tor.  \"!\" forces overwrite.\n\n       :[range]alink[!] path\n\t      create  absolute\tsymbolic links to files in directory specified\n\t      by the path (absolute  or\t relative  to  directory  of  inactive\n\t      view).\n\n       :[range]alink[!] name1 name2...\n\t      create  absolute\tsymbolic  links of files in directory of other\n\t      view giving each next link a corresponding name from  the\t argu-\n\t      ment list.\n\n\t\t\t\t\t\t:apropos\n\n       :apropos keyword...\n\t      create a menu of items returned by the apropos command.  Select-\n\t      ing an item in the menu opens corresponding man  page.   By  de-\n\t      fault  the  command  relies  on  the external \"apropos\" utility,\n\t      which can be customized by altering value\t of  the  'aproposprg'\n\t      option.\n\n\t\t\t\t\t\t:autocmd\n\n       :au[tocmd] {event} {pat} {cmd}\n\t      register autocommand for the {event}, which can be:\n\t\t- DirEnter - triggered after directory is changed\n\t      Event name is case insensitive.\n\n\t      {pat}  is\t a  comma-separated  list  of modified globs patterns,\n\t      which can contain tilde or environment variables.\t All paths use\n\t      slash  ('/') as directory separator.  The pattern can start with\n\t      a '!', which negates it.\tPatterns that do not  contain  slashes\n\t      are  matched  against the last item of the path only (e.g. \"dir\"\n\t      in \"/path/dir\").\tLiteral comma can be entered by\t doubling  it.\n\t      Two modifications to globs matching are as follows:\n\t\t-  *  - never matches a slash (i.e., can signify single direc-\n\t      tory level)\n\t\t- ** - matches any character (i.e., can match  path  of\t arbi-\n\t      trary depth)\n\n\t      {cmd} is a :command or several of them separated with '|'.\n\n\t      Examples of patterns:\n\t\t- conf.d      - matches conf.d directory anywhere\n\t\t- *.d\t      - matches directories ending with \".d\" anywhere\n\t\t- **.git      - matches something.git, but not .git anywhere\n\t\t- **/.git/**  - matches /path/.git/objects, but not /path/.git\n\t\t-  **/.git/**/ - matches /path/.git/ only (because of trailing\n\t      slash)\n\t\t-  /etc/*\t-  matches  /etc/conf.d/,  /etc/X11,  but  not\n\t      /etc/X11/fs\n\t\t- /etc/**/*.d - matches /etc/conf.d, /etc/X11/conf.d, etc.\n\t\t- /etc/**/*   - matches /etc/ itself and any file below it\n\t\t- /etc/**/**  - matches /etc/ itself and any file below it\n\n       :au[tocmd] [{event}] [{pat}]\n\t      list  those autocommands that match given event-pattern combina-\n\t      tion.\n\t      {event} and {pat} can be omitted to list all  autocommands.   To\n\t      list  any autocommands for specific pattern one can use * place-\n\t      holder in place of {event}.\n\n       :au[tocmd]! [{event}] [{pat}]\n\t      remove autocommands that match given event-pattern  combination.\n\t      Syntax is the same as for listing above.\n\n       :apropos\n\t      repeat last :apropos command.\n\n\t\t\t\t\t\t:bmark\n\n       :bmark tag1 [tag2 [tag3...]]\n\t      bookmark current directory with specified tags.\n\n       :bmark! path tag1 [tag2 [tag3...]]\n\t      same  as :bmark, but allows bookmarking specific path instead of\n\t      current directory.  This is for use in vifmrc and for  bookmark-\n\t      ing files.\n\n\t      Path  can contain macros that expand to single path (%c, %C, %d,\n\t      %D) or those that can expand to multiple paths, but contain only\n\t      one  (%f, %F, %rx).  The latter is done for convenience on using\n\t      the command interactively.  Complex macros that  include\tspaces\n\t      (e.g. \"%c:gs/ /_\") should be escaped.\n\n\t\t\t\t\t\t:bmarks\n\n       :bmarks\n\t      display all bookmarks in a menu.\n\n       :bmarks [tag1 [tag2...]]\n\t      display  menu  of\t bookmarks  that  include all of the specified\n\t      tags.\n\n\t\t\t\t\t\t:bmgo\n\n       :bmgo [tag1 [tag2...]]\n\t      when there are more than one match acts  exactly\tlike  :bmarks,\n\t      otherwise\t navigates  to\tsingle match immediately (and fails if\n\t      there is no match).\n\n\t\t\t\t\t\t:cabbrev\n\n       :ca[bbrev]\n\t      display menu of command-line mode abbreviations.\n\n       :ca[bbrev] lhs-prefix\n\t      display command-line mode\t abbreviations\twhich  left-hand  side\n\t      starts with specified prefix.\n\n       :ca[bbrev] lhs rhs\n\t      register\tnew  or\t overwrites existing abbreviation for command-\n\t      line mode.  rhs can contain spaces and any special sequences ac-\n\t      cepted  in  rhs of mappings (see \"Mappings\" section below).  Ab-\n\t      breviations are expanded non-recursively.\n\n\t\t\t\t\t\t:cnoreabbrev\n\n       :cnorea[bbrev]\n\t      display menu of command-line mode abbreviations.\n\n       :cnorea[bbrev] lhs-prefix\n\t      display command-line mode\t abbreviations\twhich  left-hand  side\n\t      starts with specified prefix.\n\n       :cnorea[bbrev] lhs rhs\n\t      same  as :cabbrev, but mappings in rhs are ignored during expan-\n\t      sion.\n\n\t\t\t\t\t\t:cd\n\n       :cd or :cd ~ or :cd $HOME\n\t      change to home directory.\n\n       :cd -  go to the last visited directory.\n\n       :cd ~/dir\n\t      change directory to ~/dir.\n\n       :cd /curr/dir /other/dir\n\t      change directory of the current pane to /curr/dir and  directory\n\t      of  the other pane to /other/dir.\t Relative paths are assumed to\n\t      be relative to directory of current view.\t Command won't fail if\n\t      one  of directories is invalid.  All forms of the command accept\n\t      macros.\n\n       :cd! /dir\n\t      same as :cd /dir /dir.\n\n\t\t\t\t\t\t:cds\n\n       :cds[!] pattern string\n\t      navigate to path obtained by substituting first match in current\n\t      path.   Arguments\t can include slashes, but starting first argu-\n\t      ment with a separator will activate below form of\t the  command.\n\t      Specifying \"!\"  changes directory of both panes.\n\n       Available flags:\n\n\t - i  -\t ignore case (the 'ignorecase' and 'smartcase' options are not\n\t   used)\n\n\t - I - don't ignore case (the 'ignorecase' and 'smartcase' options are\n\t   not used)\n\n       :cds[!]/pattern/string/[flags]\n\t      same as above, but with :substitute-like syntax.\tOther punctua-\n\t      tion characters can be used as separators.\n\n\t\t\t\t\t\t:change\n\n       :c[hange]\n\t      create a menu window to alter a files properties.\n\n\t\t\t\t\t\t:chmod\n\n       :[range]chmod\n\t      display file attributes (permission on *nix  and\tproperties  on\n\t      Windows) change dialog.\n\n       :[range]chmod[!] arg...\n\t      only for *nix\n\t      change permissions for files.  See `man 1 chmod` for arg format.\n\t      \"!\" means set permissions recursively.\n\n\t\t\t\t\t\t:chown\n\n       :[range]chown\n\t      only for *nix\n\t      same as co key in normal mode.\n\n       :[range]chown [user][:][group]\n\t      only for *nix\n\t      change owner and/or group of files.  Operates on directories re-\n\t      cursively.\n\n\t\t\t\t\t\t:clone\n\n       :[range]clone[!?]\n\t      clones  files  in current directory.  With \"?\" vifm will open vi\n\t      to edit file names.  \"!\" forces overwrite.  Macros are expanded.\n\n       :[range]clone[!] path\n\t      clones files to directory specified with the path\t (absolute  or\n\t      relative\tto  current directory).\t \"!\" forces overwrite.\tMacros\n\t      are expanded.\n\n       :[range]clone[!] name1 name2...\n\t      clones files in current directory giving each next clone a  cor-\n\t      responding  name\tfrom the argument list.\t \"!\" forces overwrite.\n\t      Macros are expanded.\n\n\t\t\t\t\t\t:colorscheme\n\n       :colo[rscheme]?\n\t      print current color scheme name on the status bar.\n\n       :colo[rscheme]\n\t      display a menu with a list of available color schemes.  You  can\n\t      choose primary color scheme here.\t It is used for view if no di-\n\t      rectory specific colorscheme fits current path.  It's also  used\n\t      to set border color (except view titles) and colors in menus and\n\t      dialogs.\n\n       :colo[rscheme] color_scheme_name\n\t      change primary color scheme to color_scheme_name.\t  In  case  of\n\t      errors  (e.g.  some colors are not supported by terminal) either\n\t      nothing is changed or color scheme is reset to builtin colors to\n\t      ensure that TUI is left in a usable state.\n\n       :colo[rscheme] color_scheme_name directory\n\t      associate\t directory with the color scheme.  The directory argu-\n\t      ment can be either absolute or relative path  when  :colorscheme\n\t      command  is  executed from command line, but mandatory should be\n\t      an absolute path when the command is executed in scripts\tloaded\n\t      at startup (until vifm is completely loaded).\n\n       :colo[rscheme] color_scheme_name color_scheme_name...\n\t      loads  the first color scheme in the order given that exists and\n\t      is supported by the terminal.  If none matches, current one  re-\n\t      mains unchanged.\tFor example:\n\n\t\t\" use a separate color scheme for panes which are inside FUSE mounts\n\t\texecute 'colorscheme in-fuse' &fusehome\n\n\t\t\t\t\t\t:comclear\n\n       :comc[lear]\n\t      remove all user defined commands.\n\n\t\t\t\t\t\t:command\n\n       :com[mand]\n\t      display a menu of user commands.\n\n       :com[mand] beginning\n\t      display user defined commands that start with the beginning.\n\n       :com[mand] name action\n\t      set a new user command.\n\t      Trying  to  use  a reserved command name will result in an error\n\t      message.\n\t      Use :com[mand]! to overwrite a previously set command.\n\t      Unlike vim user commands do not have to  start  with  a  capital\n\t      letter.\tUser commands are run in a shell by default.  To run a\n\t      command in the background you must set it as a  background  com-\n\t      mand with & at the end of the commands action (:com rm rm %f &).\n\t      Command name cannot contain numbers or special  symbols  (except\n\t      '?' and '!').\n\n       :com[mand] name /pattern\n\t      set search pattern.\n\n       :com[mand] name =pattern\n\t      set local filter value.\n\n       :com[mand] name filter{:filter args}\n\t      set file name filter (see :filter command description).  For ex-\n\t      ample:\n\n\t\t\" display only audio files\n\t\t:command onlyaudio filter/.+.\\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\\)$/i\n\t\t\" display everything except audio files\n\t\t:command noaudio filter!/.+.\\(mp3|wav|mp3|flac|ogg|m4a|wma|ape\\)$/i\n\n       :com[mand] cmd :commands\n\t      set kind of an alias for internal command\t (like\tin  a  shell).\n\t      Passes  range  given  to alias to an aliased command, so running\n\t      :%cp after\n\t\t:command cp :copy %a\n\t      equals\n\t\t:%copy\n\n\t\t\t\t\t\t:compare\n\n       :compare [byname |  bysize  |  bycontents  |  listall  |\t listunique  |\n       listdups | ofboth | ofone | groupids | grouppaths | skipempty]...\n\t      compare  files in one or two views according the arguments.  The\n\t      default is \"bycontents listall ofboth grouppaths\".  See \"Compare\n\t      views\"  section below for details.  Tree structure is incompati-\n\t      ble with alternative representations, so values of 'lsview'  and\n\t      'millerview' options are ignored.\n\n\t\t\t\t\t\t:copen\n\n       :cope[n]\n\t      opens menu with contents of the last displayed menu with naviga-\n\t      tion to files by default, if any.\n\n\t\t\t\t\t\t:copy\n\n       :[range]co[py][!?][ &]\n\t      copy files to directory of other view.   With  \"?\"  prompts  for\n\t      destination file names in an editor.  \"!\" forces overwrite.\n\n       :[range]co[py][!] path[ &]\n\t      copy  files  to  directory  specified with the path (absolute or\n\t      relative to directory of other view).  \"!\" forces overwrite.\n\n       :[range]co[py][!] name1 name2...[ &]\n\t      copy files to directory of other view giving each\t next  file  a\n\t      corresponding  name  from\t the  argument list.  \"!\" forces over-\n\t      write.\n\n\t\t\t\t\t\t:cquit\n\n       :cq[uit][!]\n\t      same  as\t:quit,\tbut  also  aborts   directory\tchoosing   via\n\t      --choose-dir  (empties  output  file)  and returns non-zero exit\n\t      code.\n\n\t\t\t\t\t\t:cunabbrev\n\n       :cuna[bbrev] lhs\n\t      unregister command-line mode abbreviation by its lhs.\n\n       :cuna[bbrev] rhs\n\t      unregister command-line mode abbreviation by its\trhs,  so  that\n\t      abbreviation could be removed even after expansion.\n\n\t\t\t\t\t\t:delbmarks\n\n       :delbmarks\n\t      remove bookmarks from current directory.\n\n       :delbmarks tag1 [tag2 [tag3...]]\n\t      remove set of bookmarks that include all of the specified tags.\n\n       :delbmarks!\n\t      remove all bookmarks.\n\n       :delbmarks! path1 [path2 [path3...]]\n\t      remove bookmarks of listed paths.\n\n\t\t\t\t\t\t:delcommand\n\n       :delc[ommand] user_command\n\t      remove user defined command named user_command.\n\n\t\t\t\t\t\t:delete\n\n       :[range]d[elete][!][ &]\n\t      delete  selected\tfile  or  files.   \"!\"\tmeans complete removal\n\t      (omitting trash).\n\n       :[range]d[elete][!] [reg] [count][ &]\n\t      delete selected or [count] files to the reg register.  \"!\" means\n\t      complete removal (omitting trash).\n\n\t\t\t\t\t\t:delmarks\n\n       :delm[arks]!\n\t      delete all marks.\n\n       :delm[arks] marks ...\n\t      delete  specified\t marks,\t each  argument is treated as a set of\n\t      marks.\n\n\t\t\t\t\t\t:display\n\n       :di[splay]\n\t      display menu with registers content.\n\n       :di[splay] list ...\n\t      display the contents of the numbered and\tnamed  registers  that\n\t      are  mentioned in list (for example \"az to display \"\", \"a and \"z\n\t      content).\n\n\t\t\t\t\t\t:dirs\n\n       :dirs  display directory stack.\n\n\t\t\t\t\t\t:echo\n\n       :ec[ho] [<expr>...]\n\t      evaluate each argument as an expression and  output  them\t sepa-\n\t      rated  with  a space.  See help on :let command for a definition\n\t      of <expr>.\n\n\t\t\t\t\t\t:edit\n\n       :[range]e[dit] [file...]\n\t      open selected or passed file(s) in editor.  Macros and  environ-\n\t      ment variables are expanded.\n\n\t\t\t\t\t\t:else\n\n       :el[se]\n\t      execute  commands until next matching :endif if all other condi-\n\t      tions didn't match.  See also help on :if and :endif commands.\n\n\t\t\t\t\t\t:elseif\n\n       :elsei[f] {expr1}\n\t      execute commands until next matching :elseif, :else or :endif if\n\t      conditions  of  previous :if and :elseif branches were evaluated\n\t      to zero.\tSee also help on :if and :endif commands.\n\n\t\t\t\t\t\t:empty\n\n       :empty permanently remove files from all existing non-empty  trash  di-\n\t      rectories (see \"Trash directory\" section below).\tTrash directo-\n\t      ries which are specified via %r and/or %u also get deleted  com-\n\t      pletely.\t Also remove all operations from undolist that have no\n\t      sense after :empty and remove all records\t about\tfiles  located\n\t      inside  directories from all registers.  Removal is performed as\n\t      background task with undetermined amount\tof  work  and  can  be\n\t      checked via :jobs menu.\n\n\t\t\t\t\t\t:endif\n\n       :en[dif]\n\t      end conditional block.  See also help on :if and :else commands.\n\n\t\t\t\t\t\t:execute\n\n       :exe[cute] [<expr>...]\n\t      evaluate\teach  argument as an expression and join results sepa-\n\t      rated by a space to get a single string which is\tthen  executed\n\t      as a command-line command.  See help on :let command for a defi-\n\t      nition of <expr>.\n\n\t\t\t\t\t\t:exit\n\n       :exi[t][!]\n\t      same as :quit.\n\n\t\t\t\t\t\t:file\n\n       :f[ile][ &]\n\t      display menu of programs set for the file type  of  the  current\n\t      file.  \" &\" forces running associated program in background.\n\n       :f[ile] arg[ &]\n\t      run associated command that begins with the arg skipping opening\n\t      menu.  \" &\" forces running associated program in background.\n\n\t\t\t\t\t\t:filetype\n\n       :filet[ype] pattern-list [{descr}]def_prog[ &],[{descr}]prog2[ &],...\n\t      associate given program list to each of the  patterns.   Associ-\n\t      ated  program  (command) is used by handlers of l and Enter keys\n\t      (and also in the :file menu).  If you need to insert comma  into\n\t      command  just  double it (\",,\").\tSpace followed by an ampersand\n\t      as two last characters of a command means running of the command\n\t      in  the  background.   Optional description can be given to each\n\t      command to ease understanding of what command  will  do  in  the\n\t      :file menu.  Vifm will try the rest of the programs for an asso-\n\t      ciation when  the\t default  isn't\t found.\t  When\tprogram\t entry\n\t      doesn't  contain any of vifm macros, name of current file is ap-\n\t      pended as if program entry ended with %c macro on *nix  and  %\"c\n\t      on  Windows.   On\t Windows path to executables containing spaces\n\t      can (and should be for correct work with such paths)  be\tdouble\n\t      quoted.\tSee  \"Patterns\"\t section below for pattern definition.\n\t      See also \"Automatic FUSE mounts\" section below.  Example for zip\n\t      archives and several actions:\n\n\t\tfiletype *.zip,*.jar,*.war,*.ear\n\t\t       \\ {Mount with fuse-zip}\n\t\t       \\ FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR,\n\t\t       \\ {View contents}\n\t\t       \\ zip -sf %c | less,\n\t\t       \\ {Extract here}\n\t\t       \\ tar -xf %c,\n\n\t      Note  that  on  OS X when `open` is used to call an app, vifm is\n\t      unable to check whether that app is actually available.\tSo  if\n\t      automatic\t skipping  of programs that aren't there is desirable,\n\t      `open` should be replaced with an actual command.\n\n       :filet[ype] filename\n\t      list (in menu mode) currently  registered\t patterns  that\t match\n\t      specified file name.  Same as \":filextype filename\".\n\n\t\t\t\t\t\t:filextype\n\n       :filex[type] pattern-list [{ description }] def_program,program2,...\n\t      same as :filetype, but this command is ignored if not running in\n\t      X.  In X :filextype is equal to :filetype.  See \"Patterns\"  sec-\n\t      tion  below  for\tpattern\t definition.  See also \"Automatic FUSE\n\t      mounts\" section below.\n\n\t      For example, consider the following settings  (the  order\t might\n\t      seem strange, but it's for the demonstration purpose):\n\n\t\tfiletype *.html,*.htm\n\t\t\t\\ {View in lynx}\n\t\t\t\\ lynx\n\t\tfilextype *.html,*.htm\n\t\t\t\\ {Open with dwb}\n\t\t\t\\ dwb %f %i &,\n\t\tfiletype *.html,*.htm\n\t\t\t\\ {View in links}\n\t\t\t\\ links\n\t\tfilextype *.html,*.htm\n\t\t\t\\ {Open with firefox}\n\t\t\t\\ firefox %f &,\n\t\t\t\\ {Open with uzbl}\n\t\t\t\\ uzbl-browser %f %i &,\n\n\t      If  you're using vifm inside a terminal emulator that is running\n\t      in graphical environment (when X is used on *nix; always on Win-\n\t      dows), vifm attempts to run application in this order:\n\n\t      1. lynx\n\t      2. dwb\n\t      3. links\n\t      4. firefox\n\t      5. uzbl\n\n\t      If  there is no graphical environment (checked presence of $DIS-\n\t      PLAY environment variable on *nix; never\thappens\t on  Windows),\n\t      the list will look like:\n\n\t      1. lynx\n\t      2. links\n\n\t      Just as if all :filextype commands were not there.\n\n\t      The  purpose of such differentiation is to allow comfortable use\n\t      of vifm with same settings in desktop environment/through remote\n\t      connection (SSH)/in native console.\n\n\t      Note  that  on OS X $DISPLAY isn't defined unless you define it,\n\t      so :filextype should be used only if you set  $DISPLAY  in  some\n\t      way.\n\n       :filext[ype] filename\n\t      list  (in\t menu  mode)  currently registered patterns that match\n\t      specified file name.  Same as \":filetype filename\".\n\n\t\t\t\t\t\t:fileviewer\n\n       :filev[iewer] pattern-list command1,command2,...\n\t      register specified list of commands as viewers for each  of  the\n\t      patterns.\t Viewer is a command which output is captured and dis-\n\t      played in one of the panes of vifm after pressing \"e\" or running\n\t      :view  command.\tWhen  the  command doesn't contain any of vifm\n\t      macros, name of current file is appended\tas  if\tcommand\t ended\n\t      with  %c\tmacro.\tComma escaping and missing commands processing\n\t      rules as for :filetype apply to this  command.   See  \"Patterns\"\n\t      section below for pattern definition.\n\n\t      Example for zip archives:\n\n\t\tfileviewer *.zip,*.jar,*.war,*.ear zip -sf %c, echo \"No zip to preview:\"\n\n       :filev[iewer] filename\n\t      list  (in\t menu  mode)  currently registered patterns that match\n\t      specified filename.\n\n\t\t\t\t\t\t:filter\n\n       :filter[!] {pattern}\n\t      filter files matching the pattern\t out  of  directory  listings.\n\t      '!'  controls  state  of\tfilter inversion after updating filter\n\t      value (see also 'cpoptions'  description).   Filter  is  matched\n\t      case sensitively on *nix and case insensitively on Windows.  See\n\t      \"File Filters\" and \"Patterns\" sections.\n\n\t      Example:\n\n\t\t\" filter all files ending in .o from the filelist.\n\t\t:filter /.o$/\n\n\n       :filter[!] {empty-pattern}\n\t      same as above, but use last search pattern as pattern value.\n\n\t      Example:\n\n\t\t:filter //I\n\n\n       :filter\n\t      reset filter (set it to an empty string) and show all files.\n\n       :filter!\n\t      same as :invert.\n\n       :filter?\n\t      show information on local, name and auto filters.\n\n\t\t\t\t\t\t:find\n\n       :[range]fin[d] pattern\n\t      display results of find command in the menu.  Searches among se-\n\t      lected  files  if\t any.  Accepts macros.\tBy default the command\n\t      relies on the external \"find\" utility, which can\tbe  customized\n\t      by altering value of the 'findprg' option.\n\n       :[range]fin[d] -opt...\n\t      same  as\t:find  above,  but  user  defines  all find arguments.\n\t      Searches among selected files if any.\n\n       :[range]fin[d] path -opt...\n\t      same as :find above, but user defines all find  arguments.   Ig-\n\t      nores selection and range.\n\n       :[range]fin[d]\n\t      repeat last :find command.\n\n\t\t\t\t\t\t:finish\n\n       :fini[sh]\n\t      stop  sourcing a script. Can only be used in a vifm script file.\n\t      This is a quick way to skip the rest of the file.\n\n\t\t\t\t\t\t:goto\n\n       :go[to]\n\t      change directory if necessary and put specified path  under  the\n\t      cursor.\tThe path should be existing non-root path.  Macros and\n\t      environment variables are expanded.\n\n\t\t\t\t\t\t:grep\n\n       :[range]gr[ep][!] pattern\n\t      will show results of grep command in the menu.  Add \"!\"  to  re-\n\t      quest inversion of search (look for lines that do not match pat-\n\t      tern).  Searches among selected files if any and no range given.\n\t      Ignores  binary files by default.\t By default the command relies\n\t      on the external \"grep\" utility, which can be customized  by  al-\n\t      tering value of the 'grepprg' option.\n\n       :[range]gr[ep][!] -opt...\n\t      same  as :grep above, but user defines all grep arguments, which\n\t      are not escaped.\tSearches among selected files if any.\n\n       :[range]gr[ep][!]\n\t      repeat last :grep command.  \"!\" of this command inverts  \"!\"  in\n\t      repeated command.\n\n\t\t\t\t\t\t:help\n\n       :h[elp]\n\t      show the help file.\n\n       :h[elp] argument\n\t      is the same as using ':h argument' in vim.  Use vifm-<something>\n\t      to get help on vifm (tab completion works).  This\t form  of  the\n\t      command doesn't work when 'vimhelp' option is off.\n\n\t\t\t\t\t\t:hideui\n\n       :hideui\n\t      hide interface to show previous commands' output.\n\n\t\t\t\t\t\t:highlight\n\n       :hi[ghlight]\n\t      display information about all highlight groups active at the mo-\n\t      ment.\n\n       :hi[ghlight] clear\n\t      reset all highlighting to builtin defaults and removed all file-\n\t      name-specific rules.\n\n       :hi[ghlight] clear ( {pat1,pat2,...} | /regexp/ )\n\t      remove specified rule.\n\n       :hi[ghlight] ( group-name | {pat1,pat2,...} | /regexp/ )\n\t      display  information  on given highlight group or file name pat-\n\t      tern of color scheme used in the active view.\n\n       :hi[ghlight]  (\tgroup-name  |\t{pat1,pat2,...}\t  |   /regexp/[iI]   )\n       cterm=style | ctermfg=color | ctermbg=color\n\t      set   style  (cterm),  foreground\t (ctermfg)  or/and  background\n\t      (ctermbg) parameters of highlight group or file name pattern for\n\t      color scheme used in the active view.\n\n       All style values as well as color names are case insensitive.\n\n       Available style values (some of them can be combined):\n\t- bold\n\t- underline\n\t- reverse or inverse\n\t- standout\n\t- italic (on unsupported systems becomes reverse)\n\t- none\n\n       Available group-name values:\n\t- Win - color of all windows (views, dialogs, menus) and default color\n       for their content (e.g. regular files in views)\n\t- AuxWin - color of auxiliary areas of windows\n\t- OtherWin - color of inactive pane\n\t- Border - color of vertical parts of the border\n\t- TabLine - tab line color (for 'tabscope' set to \"global\")\n\t- TabLineSel - color of the tip of selected tab (regardless  of\t 'tab-\n       scope')\n\t- TopLineSel - top line color of the current pane\n\t- TopLine - top line color of the other pane\n\t- CmdLine - the command line/status bar color\n\t- ErrorMsg - color of error messages in the status bar\n\t- StatusLine - color of the line above the status bar\n\t- JobLine - color of job line that appears above the status line\n\t- WildMenu - color of the wild menu items\n\t- SuggestBox - color of key suggestion box\n\t- CurrLine - line at cursor position in active view\n\t- OtherLine - line at cursor position in inactive view\n\t- Selected - color of selected files\n\t- Directory - color of directories\n\t- Link - color of symbolic links in the views\n\t- BrokenLink - color of broken symbolic links\n\t- Socket - color of sockets\n\t- Device - color of block and character devices\n\t- Executable - color of executable files\n\t- Fifo - color of fifo pipes\n\t-  CmpMismatch\t- color of mismatched files in side-by-side comparison\n       by path\n\t- User1..User9 - 9 colors which can be used via %* 'statusline' macro\n\n       Available colors:\n\t- -1 or default or none - default or transparent\n\t- black\t  and lightblack\n\t- red\t  and lightred\n\t- green\t  and lightgreen\n\t- yellow  and lightyellow\n\t- blue\t  and lightblue\n\t- magenta and lightmagenta\n\t- cyan\t  and lightcyan\n\t- white\t  and lightwhite\n\t- 0-255 - corresponding colors from 256-color palette\n\n       Light versions of colors are regular colors with\t bold  attribute  set.\n       So  order of arguments of :highlight command is important and it's bet-\n       ter to put \"cterm\" in front of others to prevent\t it  from  overwriting\n       attributes set by \"ctermfg\" or \"ctermbg\" arguments.\n\n       For  convenience of color scheme authors xterm-like names for 256 color\n       palette\t is   also   supported.\t   The\t mapping   is\t taken\t  from\n       http://vim.wikia.com/wiki/Xterm256_color_names_for_console_Vim\tDupli-\n       cated entries were altered by adding an underscore followed by  numeri-\n       cal suffix.\n\n\t 0 Black\t\t  86 Aquamarine1\t   172 Orange3\n\t 1 Red\t\t\t  87 DarkSlateGray2\t   173 LightSalmon3_2\n\t 2 Green\t\t  88 DarkRed_2\t\t   174 LightPink3\n\t 3 Yellow\t\t  89 DeepPink4_2\t   175 Pink3\n\t 4 Blue\t\t\t  90 DarkMagenta\t   176 Plum3\n\t 5 Magenta\t\t  91 DarkMagenta_2\t   177 Violet\n\t 6 Cyan\t\t\t  92 DarkViolet\t\t   178 Gold3_2\n\t 7 White\t\t  93 Purple\t\t   179 LightGoldenrod3\n\t 8 LightBlack\t\t  94 Orange4_2\t\t   180 Tan\n\t 9 LightRed\t\t  95 LightPink4\t\t   181 MistyRose3\n\t10 LightGreen\t\t  96 Plum4\t\t   182 Thistle3\n\t11 LightYellow\t\t  97 MediumPurple3\t   183 Plum2\n\t12 LightBlue\t\t  98 MediumPurple3_2\t   184 Yellow3_2\n\t13 LightMagenta\t\t  99 SlateBlue1\t\t   185 Khaki3\n\t14 LightCyan\t\t 100 Yellow4\t\t   186 LightGoldenrod2\n\t15 LightWhite\t\t 101 Wheat4\t\t   187 LightYellow3\n\t16 Grey0\t\t 102 Grey53\t\t   188 Grey84\n\t17 NavyBlue\t\t 103 LightSlateGrey\t   189 LightSteelBlue1\n\t18 DarkBlue\t\t 104 MediumPurple\t   190 Yellow2\n\t19 Blue3\t\t 105 LightSlateBlue\t   191 DarkOliveGreen1\n\t20  Blue3_2\t\t   106\tYellow4_2\t       192 DarkOliveG-\n       reen1_2\n\t21 Blue1\t\t 107 DarkOliveGreen3\t   193 DarkSeaGreen1_2\n\t22 DarkGreen\t\t 108 DarkSeaGreen\t   194 Honeydew2\n\t23 DeepSkyBlue4\t\t 109 LightSkyBlue3\t   195 LightCyan1\n\t24 DeepSkyBlue4_2\t 110 LightSkyBlue3_2\t   196 Red1\n\t25 DeepSkyBlue4_3\t 111 SkyBlue2\t\t   197 DeepPink2\n\t26 DodgerBlue3\t\t 112 Chartreuse2_2\t   198 DeepPink1\n\t27 DodgerBlue2\t\t 113 DarkOliveGreen3_2\t   199 DeepPink1_2\n\t28 Green4\t\t 114 PaleGreen3_2\t   200 Magenta2_2\n\t29 SpringGreen4\t\t 115 DarkSeaGreen3\t   201 Magenta1\n\t30 Turquoise4\t\t 116 DarkSlateGray3\t   202 OrangeRed1\n\t31 DeepSkyBlue3\t\t 117 SkyBlue1\t\t   203 IndianRed1\n\t32 DeepSkyBlue3_2\t 118 Chartreuse1\t   204 IndianRed1_2\n\t33 DodgerBlue1\t\t 119 LightGreen_2\t   205 HotPink\n\t34 Green3\t\t 120 LightGreen_3\t   206 HotPink_2\n\t35 SpringGreen3\t\t 121 PaleGreen1\t\t   207 MediumOrchid1_2\n\t36 DarkCyan\t\t 122 Aquamarine1_2\t   208 DarkOrange\n\t37 LightSeaGreen\t 123 DarkSlateGray1\t   209 Salmon1\n\t38 DeepSkyBlue2\t\t 124 Red3\t\t   210 LightCoral\n\t39 DeepSkyBlue1\t\t 125 DeepPink4_3\t   211 PaleVioletRed1\n\t40 Green3_2\t\t 126 MediumVioletRed\t   212 Orchid2\n\t41 SpringGreen3_2\t 127 Magenta3\t\t   213 Orchid1\n\t42 SpringGreen2\t\t 128 DarkViolet_2\t   214 Orange1\n\t43 Cyan3\t\t 129 Purple_2\t\t   215 SandyBrown\n\t44 DarkTurquoise\t 130 DarkOrange3\t   216 LightSalmon1\n\t45 Turquoise2\t\t 131 IndianRed\t\t   217 LightPink1\n\t46 Green1\t\t 132 HotPink3\t\t   218 Pink1\n\t47 SpringGreen2_2\t 133 MediumOrchid3\t   219 Plum1\n\t48 SpringGreen1\t\t 134 MediumOrchid\t   220 Gold1\n\t49 MediumSpringGreen\t 135  MediumPurple2\t     221  LightGolden-\n       rod2_2\n\t50  Cyan2\t\t   136\tDarkGoldenrod\t      222 LightGolden-\n       rod2_3\n\t51 Cyan1\t\t 137 LightSalmon3\t   223 NavajoWhite1\n\t52 DarkRed\t\t 138 RosyBrown\t\t   224 MistyRose1\n\t53 DeepPink4\t\t 139 Grey63\t\t   225 Thistle1\n\t54 Purple4\t\t 140 MediumPurple2_2\t   226 Yellow1\n\t55 Purple4_2\t\t 141 MediumPurple1\t   227 LightGoldenrod1\n\t56 Purple3\t\t 142 Gold3\t\t   228 Khaki1\n\t57 BlueViolet\t\t 143 DarkKhaki\t\t   229 Wheat1\n\t58 Orange4\t\t 144 NavajoWhite3\t   230 Cornsilk1\n\t59 Grey37\t\t 145 Grey69\t\t   231 Grey100\n\t60 MediumPurple4\t 146 LightSteelBlue3\t   232 Grey3\n\t61 SlateBlue3\t\t 147 LightSteelBlue\t   233 Grey7\n\t62 SlateBlue3_2\t\t 148 Yellow3\t\t   234 Grey11\n\t63 RoyalBlue1\t\t 149 DarkOliveGreen3_3\t   235 Grey15\n\t64 Chartreuse4\t\t 150 DarkSeaGreen3_2\t   236 Grey19\n\t65 DarkSeaGreen4\t 151 DarkSeaGreen2\t   237 Grey23\n\t66 PaleTurquoise4\t 152 LightCyan3\t\t   238 Grey27\n\t67 SteelBlue\t\t 153 LightSkyBlue1\t   239 Grey30\n\t68 SteelBlue3\t\t 154 GreenYellow\t   240 Grey35\n\t69 CornflowerBlue\t 155 DarkOliveGreen2\t   241 Grey39\n\t70 Chartreuse3\t\t 156 PaleGreen1_2\t   242 Grey42\n\t71 DarkSeaGreen4_2\t 157 DarkSeaGreen2_2\t   243 Grey46\n\t72 CadetBlue\t\t 158 DarkSeaGreen1\t   244 Grey50\n\t73 CadetBlue_2\t\t 159 PaleTurquoise1\t   245 Grey54\n\t74 SkyBlue3\t\t 160 Red3_2\t\t   246 Grey58\n\t75 SteelBlue1\t\t 161 DeepPink3\t\t   247 Grey62\n\t76 Chartreuse3_2\t 162 DeepPink3_2\t   248 Grey66\n\t77 PaleGreen3\t\t 163 Magenta3_2\t\t   249 Grey70\n\t78 SeaGreen3\t\t 164 Magenta3_3\t\t   250 Grey74\n\t79 Aquamarine3\t\t 165 Magenta2\t\t   251 Grey78\n\t80 MediumTurquoise\t 166 DarkOrange3_2\t   252 Grey82\n\t81 SteelBlue1_2\t\t 167 IndianRed_2\t   253 Grey85\n\t82 Chartreuse2\t\t 168 HotPink3_2\t\t   254 Grey89\n\t83 SeaGreen2\t\t 169 HotPink2\t\t   255 Grey93\n\t84 SeaGreen1\t\t 170 Orchid\n\t85 SeaGreen1_2\t\t 171 MediumOrchid1\n\n       There are two colors (foreground and background) and only one bold  at-\n       tribute.\t Thus single bold attribute affects both colors when \"reverse\"\n       attribute is used in vifm run inside terminal emulator.\t At  the  same\n       time  linux  native console can handle boldness of foreground and back-\n       ground colors independently, but for consistency with  terminal\temula-\n       tors  this is available only implicitly by using light versions of col-\n       ors.  This behaviour might be changed in the future.\n\n       Although vifm supports 256 colors in a sense they are supported\tby  UI\n       drawing library, whether you will be able to use all of them highly de-\n       pends on your terminal.\tTo set up terminal properly,  make  sure  that\n       $TERM  in the environment you run vifm is set to name of 256-color ter-\n       minal  (on  *nixes  it  can  also  be  set  via\tX   resources),\t  e.g.\n       xterm-256color.\tOne can find list of available terminal names by list-\n       ing /usr/lib/terminfo/.\tNumber of colors supported  by\tterminal  with\n       current settings can be checked via \"tput colors\" command.\n\n       Here  is\t the hierarchy of highlight groups, which you need to know for\n       using transparency:\n\t JobLine\n\t SuggestBox\n\t StatusLine\n\t   WildMenu\n\t   User1..User9\n\t Border\n\t CmdLine\n\t   ErrorMsg\n\t Win\n\t   OtherWin\n\t     AuxWin\n\t       File name specific highlights\n\t\t Directory\n\t\t Link\n\t\t BrokenLink\n\t\t Socket\n\t\t Device\n\t\t Fifo\n\t\t Executable\n\t\t   Selected\n\t\t     CurrLine\n\t\t     OtherLine\n\t TopLine\n\t   TopLineSel\n\t     TabLineSel (for pane tabs)\n\t TabLine\n\t   TabLineSel\n\n       \"none\" means default terminal color for highlight groups at  the\t first\n       level of the hierarchy and transparency for all others.\n\n       Here file name specific highlights mean those configured via globs ({})\n       or regular expressions (//).  At most one of them is applied  per  file\n       entry,  namely  the first that matches file name, hence order of :high-\n       light commands might be important in certain cases.\n\n\t\t\t\t\t\t:history\n\n       :his[tory]\n\t      creates a pop-up menu of directories visited.\n\n       :his[tory] x\n\t      x can be:\n\t      d[ir]\tor . show directory history.\n\t      c[md]\tor : show command line history.\n\t      s[earch]\tor / show search history and search forward on l key.\n\t      f[search] or / show search history and search forward on l key.\n\t      b[search] or ? show search history and search backward on l key.\n\t      i[nput]\tor @ show prompt history (e.g. on one file renaming).\n\t      fi[lter]\tor = show filter history (see description of  the  \"=\"\n\t      normal mode command).\n\n\t\t\t\t\t\t:histnext\n\n       :histnext\n\t      same  as\t<c-i>.\t The main use case for this command is to work\n\t      around the common pain point of <tab> and <c-i> being  the  same\n\t      ASCII  character: one could alter the terminal emulator settings\n\t      to emit, for example, the `F1` keycode when Ctrl-I  is  pressed,\n\t      then  `:noremap <f1> :histnext<cr>` in vifm, add \"t\" flag to the\n\t      'cpoptions', and thus have both <c-i> and <tab> working  as  ex-\n\t      pected.\n\n\t\t\t\t\t\t:histprev\n\n       :histprev\n\t      same as <c-o>.\n\n\t\t\t\t\t\t:if\n\n       :if {expr1}\n\t      starts  conditional  block.   Commands  are  executed until next\n\t      matching :elseif, :else or :endif command if  {expr1}  evaluates\n\t      to non-zero, otherwise they are ignored.\tSee also help on :else\n\t      and :endif commands.\n\n\t      Example:\n\n\t\tif $TERM == 'screen.linux'\n\t\t    highlight CurrLine ctermfg=lightwhite ctermbg=lightblack\n\t\telseif $TERM == 'tmux'\n\t\t    highlight CurrLine cterm=reverse ctermfg=black ctermbg=white\n\t\telse\n\t\t    highlight CurrLine cterm=bold,reverse ctermfg=black ctermbg=white\n\t\tendif\n\n\t\t\t\t\t\t:invert\n\n       :invert [f]\n\t      invert file name filter.\n\n       :invert? [f]\n\t      show current filter state.\n\n       :invert s\n\t      invert selection.\n\n       :invert o\n\t      invert sorting order of the primary sorting key.\n\n       :invert? o\n\t      show sorting order of the primary sorting key.\n\n\t\t\t\t\t\t:jobs\n\n       :jobs  shows menu of current backgrounded processes.\n\n\t\t\t\t\t\t:let\n\n       :let $ENV_VAR = <expr>\n\t      sets environment variable.  Warning: setting  environment\t vari-\n\t      able to an empty string on Windows removes it.\n\n       :let $ENV_VAR .= <expr>\n\t      append value to environment variable.\n\n       :let &[l:|g:]opt = <expr>\n\t      sets option value.\n\n       :let &[l:|g:]opt .= <expr>\n\t      append value to string option.\n\n       :let &[l:|g:]opt += <expr>\n\t      increasing option value, adding sub-values.\n\n       :let &[l:|g:]opt -= <expr>\n\t      decreasing option value, removing sub-values.\n\n       Where  <expr> could be a single-quoted string, double-quoted string, an\n       environment variable, function call or a concatanation of any  of  them\n       in any order using the '.' operator.  Any whitespace is ignored.\n\n\t\t\t\t\t\t:locate\n\n       :locate filename\n\t      use \"locate\" command to create a menu of filenames.  Selecting a\n\t      file from the menu will reload the current file list in vifm  to\n\t      show  the\t selected  file.  By default the command relies on the\n\t      external \"locate\" utility (it's assumed that its database is al-\n\t      ready  built),  which can be customized by altering value of the\n\t      'locateprg' option.\n\n       :locate\n\t      repeats last :locate command.\n\n\t\t\t\t\t\t:ls\n\n       :ls    lists windows of active terminal multiplexer (only when terminal\n\t      multiplexer  is  used).  This is achieved by issuing proper com-\n\t      mand for active terminal multiplexer, thus the list is not  han-\n\t      dled by vifm.\n\n\t\t\t\t\t\t:lstrash\n\n       :lstrash\n\t      displays\ta  menu\t with list of files in trash.  Each element of\n\t      the list is original path of a deleted file, thus the  list  can\n\t      contain duplicates.\n\n\t\t\t\t\t\t:mark\n\n       :[range]ma[rk][?] x [/full/path] [filename]\n\t      Set  mark\t x (a-zA-Z0-9) at /full/path and filename.  By default\n\t      current directory is being used.\tIf no filename was  given  and\n\t      /full/path  is  current  directory  then last file in [range] is\n\t      used.  Using of macros is allowed.  Question mark will stop com-\n\t      mand from overwriting existing marks.\n\n\t\t\t\t\t\t:marks\n\n       :marks create a pop-up menu of marks.\n\n       :marks list ...\n\t      display the contents of the marks that are mentioned in list.\n\n\t\t\t\t\t\t:media\n\n       :media only for *nix\n\t      display media management menu.  See also 'mediaprg' option.\n\n\t\t\t\t\t\t:messages\n\n       :mes[sages]\n\t      shows previously given messages (up to 50).\n\n\t\t\t\t\t\t:mkdir\n\n       :[line]mkdir[!] dir ...\n\t      create  directories  at specified paths.\tThe [line] can be used\n\t      to pick node in a tree-view.  \"!\" means make parent  directories\n\t      as needed.  Macros are expanded.\n\n\t\t\t\t\t\t:move\n\n       :[range]m[ove][!?][ &]\n\t      move  files  to  directory  of other view.  With \"?\" prompts for\n\t      destination file names in an editor.  \"!\" forces overwrite.\n\n       :[range]m[ove][!] path[ &]\n\t      move files to directory specified with  the  path\t (absolute  or\n\t      relative to directory of other view).  \"!\" forces overwrite.\n\n       :[range]m[ove][!] name1 name2...[ &]\n\t      move  files  to  directory of other view giving each next file a\n\t      corresponding name from the argument  list.   \"!\"\t forces\t over-\n\t      write.\n\n\t\t\t\t\t\t:nohlsearch\n\n       :noh[lsearch]\n\t      clear selection in current pane.\n\n\t\t\t\t\t\t:normal\n\n       :norm[al][!] commands\n\t      execute normal mode commands.  If \"!\" is used, user defined map-\n\t      pings are ignored.  Unfinished last command  is  aborted\tas  if\n\t      <esc>  or\t <c-c>\twas typed.  A \":\" should be completed as well.\n\t      Commands can't start with a space, so put a count of 1 (one) be-\n\t      fore it.\n\n\t\t\t\t\t\t:only\n\n       :on[ly]\n\t      switch to a one window view.\n\n\t\t\t\t\t\t:popd\n\n       :popd  remove pane directories from stack.\n\n\t\t\t\t\t\t:pushd\n\n       :pushd[!] /curr/dir [/other/dir]\n\t      add  pane\t directories  to  stack and process arguments like :cd\n\t      command.\n\n       :pushd exchange the top two items of the directory stack.\n\n\t\t\t\t\t\t:put\n\n       :[line]pu[t][!] [reg] [ &]\n\t      puts files from specified register (\" by default)\t into  current\n\t      directory.   The [line] can be used to pick node in a tree-view.\n\t      \"!\" moves files \"!\" moves files from their original location in-\n\t      stead  of\t copying  them.\t During this operation no confirmation\n\t      dialogs will be shown, all checks are performed beforehand.\n\n\t\t\t\t\t\t:pwd\n\n       :pw[d] show the present working directory.\n\n\t\t\t\t\t\t:qall\n\n       :qa[ll][!]\n\t      exit vifm (add ! to skip saving changes and checking for\tactive\n\t      backgrounded commands).\n\n\t\t\t\t\t\t:quit\n\n       :q[uit][!]\n\t      if  there is more than one tab, close the current one, otherwise\n\t      exit vifm (add ! to skip saving changes and checking for\tactive\n\t      backgrounded commands).\n\n\t\t\t\t\t\t:redraw\n\n       :redr[aw]\n\t      redraw the screen immediately.\n\n\t\t\t\t\t\t:registers\n\n       :reg[isters]\n\t      display menu with registers content.\n\n       :reg[isters] list ...\n\t      display  the  contents  of the numbered and named registers that\n\t      are mentioned in list (for example \"az to display \"\", \"a and  \"z\n\t      content).\n\n\t\t\t\t\t\t:regular\n\n       :regular\n\n       switch to regular view leaving custom view.\n\t\t\t\t\t\t       :rename\n\n       :[range]rename[!]\n\t      rename  files  using  vi\tto  edit names. ! means go recursively\n\t      through directories.\n\n       :[range]rename name1 name2...\n\t      rename each of selected files to a corresponding name.\n\n\t\t\t\t\t\t:restart\n\n       :restart\n\t      free  a  lot  of\tthings\t(histories,  commands,\tetc.),\treread\n\t      vifminfo and vifmrc files and run startup commands passed in the\n\t      argument list, thus losing all unsaved changes (e.g. recent his-\n\t      tory or keys mapped in current session).\n\n\t      While many things get reset, some basic UI state and current lo-\n\t      cations are preserved, including tabs.\n\n\t\t\t\t\t\t:restore\n\n       :[range]restore\n\t      restore file from trash directory, doesn't work outside  one  of\n\t      trash directories.  See \"Trash directory\" section below.\n\n\t\t\t\t\t\t:rlink\n\n       :[range]rlink[!?]\n\t      create  relative\tsymbolic  links to files in directory of other\n\t      view.  With \"?\" prompts for destination file names in an editor.\n\t      \"!\" forces overwrite.\n\n       :[range]rlink[!] path\n\t      create  relative\tsymbolic links of files in directory specified\n\t      with the path (absolute or relative to directory of other view).\n\t      \"!\" forces overwrite.\n\n       :[range]rlink[!] name1 name2...\n\t      create  relative\tsymbolic  links of files in directory of other\n\t      view giving each next link a corresponding name from  the\t argu-\n\t      ment list.  \"!\" forces overwrite.\n\n\t\t\t\t\t\t:screen\n\n       :screen\n\t      toggle whether to use the terminal multiplexer or not.\n\t      A\t terminal  multiplexer uses pseudo terminals to allow multiple\n\t      windows to be used in the console or in a single xterm.\tStart-\n\t      ing  vifm\t from  terminal\t multiplexer  with appropriate support\n\t      turned on will cause vifm to open\t a  new\t terminal  multiplexer\n\t      window for each new file edited or program launched from vifm.\n\t      This  requires  screen  version 3.9.9 or newer for the screen -X\n\t      argument or tmux (1.8 version or newer is recommended).\n\n       :screen!\n\t      enable integration with terminal multiplexers.\n\n       :screen?\n\t      display whether integration with terminal\t multiplexers  is  en-\n\t      abled.\n\n       Note:  the  command  is called screen for historical reasons (when tmux\n       wasn't yet supported) and might be changed in future releases,  or  get\n       an alias.\n\n\t\t\t\t\t\t:select\n\n       :[range]select\n\t      select  files  in\t the  given range (current file if no range is\n\t      given).\n\n       :select {pattern}\n\t      select files that match specified pattern.   Possible  {pattern}\n\t      forms are described in \"Patterns\" section below.\tTrailing slash\n\t      for directories is taken into account, so `:select! */ |\tinvert\n\t      s` selects only files.\n\n       :select //[iI]\n\t      same as item above, but reuses last search pattern.\n\n       :select !{external command}\n\t      select  files from the list supplied by external command.\t Files\n\t      are matched by full paths, relative paths are converted to abso-\n\t      lute ones beforehand.\n\n       :[range]select! [{pattern}]\n\t      same  as above, but resets previously selected items before pro-\n\t      ceeding.\n\n\t\t\t\t\t\t:set\n\n       :se[t] display all options that differ from their default value.\n\n       :se[t] all\n\t      display all options.\n\n       :se[t] opt1=val1 opt2='val2' opt3=\"val3\" ...\n\t      sets given options.  For local options both values are set.\n\t      You can use following syntax:\n\t       - for all options - option, option? and option&\n\t       - for boolean options - nooption, invoption and option!\n\t       - for integer options - option=x, option+=x and option-=x\n\t       - for string options - option=x and option+=x\n\t       - for string list options - option=x, option+=x, option-=x  and\n\t      option^=x\n\t       - for enumeration options - option=x, option+=x and option-=x\n\t       -  for  set  options  -\toption=x, option+=x, option-=x and op-\n\t      tion^=x\n\t       - for charset options - option=x, option+=x, option-=x and  op-\n\t      tion^=x\n\n\t      the meaning:\n\t       - option - turn option on (for boolean) or print its value (for\n\t      all others)\n\t       - nooption - turn option off\n\t       - invoption - invert option state\n\t       - option! - invert option state\n\t       - option? - print option value\n\t       - option& - reset option to its default value\n\t       - option=x or option:x - set option to x\n\t       - option+=x - add/append x to option\n\t       - option-=x - remove (or subtract) x from option\n\t       - option^=x - toggle x presence among values of the option\n\n\t      Option name can be prepended  and\t appended  by  any  number  of\n\t      whitespace characters.\n\n\t\t\t\t\t\t:setglobal\n\n       :setg[lobal]\n\t      display all global options that differ from their default value.\n\n       :setg[lobal] all\n\t      display all global options.\n\n       :setg[lobal] opt1=val1 opt2='val2' opt3=\"val3\" ...\n\t      same  as\t:set, but changes/prints only global options or global\n\t      values of local options.\tChanges to the\tlatter\tmight  be  not\n\t      visible until directory is changed.\n\n\t\t\t\t\t\t:setlocal\n\n       :setl[ocal]\n\t      display all local options that differ from their default value.\n\n       :setl[ocal] all\n\t      display all local options.\n\n       :setl[ocal] opt1=val1 opt2='val2' opt3=\"val3\" ...\n\t      same  as :set, but changes/prints only local values of local op-\n\t      tions.\n\n\t\t\t\t\t\t:shell\n\n       :sh[ell][!]\n\t      start a shell in current\tdirectory.   \"!\"  suppresses  spawning\n\t      dedicated\t window\t of terminal multiplexer for a shell.  To make\n\t      vifm adaptive to environment it uses  $SHELL  if\tit's  defined,\n\t      otherwise 'shell' value is used.\n\n\n\t\t\t\t\t\t:siblnext\n\n       :[count]siblnext[!]\n\n\t      change  directory to [count]th next sibling directory after cur-\n\t      rent path using value of global sort  option  of\tcurrent\t pane.\n\t      \"!\" enables wrapping.\n\n\t      For  example,  say, you're at /boot and root listing starts like\n\t      this:\n\n\t\t  bin/\n\t\t  boot/\n\t\t  dev/\n\t\t  ...\n\n\t      Issuing :siblnext will navigate to /dev.\n\n\n\t\t\t\t\t\t:siblprev\n\n       :[count]siblprev[!]\n\t      same as :siblnext, but in the opposite direction.\n\n\t\t\t\t\t\t:sort\n\n       :sor[t]\n\t      display dialog with different sorting methods, when one can  se-\n\t      lect  primary  sorting key.  When 'viewcolumns' options is empty\n\t      and 'lsview' is off, changing primary sorting key will also  af-\n\t      fect view look (in particular the second column of the view will\n\t      be changed).\n\n\t\t\t\t\t\t:source\n\n       :so[urce] file\n\t      read command-line commands from the file.\n\n\t\t\t\t\t\t:split\n\n       :sp[lit]\n\t      switch to a two window horizontal view.\n\n       :sp[lit]!\n\t      toggle horizontal window splitting.\n\n       :sp[lit] path\n\t      splits the window horizontally to show  both  file  directories.\n\t      Also changes other pane to path (absolute or relative to current\n\t      directory of active pane).\n\n\t\t\t\t\t\t:substitute\n\n       :[range]s[ubstitute]/pattern/string/[flags]\n\t      for each file in range replace a match of pattern with string.\n\n       String can contain \\0...\\9 to link to capture groups (\\0 -  all\tmatch,\n       \\1 - first group, etc.).\n\n       Pattern is stored in search history.\n\n       Available flags:\n\n\t - i  -\t ignore case (the 'ignorecase' and 'smartcase' options are not\n\t   used)\n\n\t - I - don't ignore case (the 'ignorecase' and 'smartcase' options are\n\t   not used)\n\n\t - g - substitute all matches in each file name (each g toggles this)\n\n       :[range]s[ubstitute]/pattern\n\t      substitute pattern with an empty string.\n\n       :[range]s[ubstitute]//string/[flags]\n\t      use last pattern from search history.\n\n       :[range]s[ubstitute]\n\t      repeat previous substitution command.\n\n\t\t\t\t\t\t:sync\n\n       :sync [relative path]\n\t      change  the  other pane to the current pane directory or to some\n\t      path relative to the current directory.\tUsing  macros  is  al-\n\t      lowed.\n\n       :sync! change the other pane to the current pane directory and synchro-\n\t      nize cursor position.  If current pane displays custom  list  of\n\t      files,  position\tbefore\tentering it is used (current one might\n\t      not make any sense).\n\n\n       :sync! [location | cursorpos | localopts | filters | filelist | tree  |\n       all]...\n\t      change  enumerated  properties of the other pane to match corre-\n\t      sponding properties of the current  pane.\t  Arguments  have  the\n\t      following meanings:\n\n\t\t- location - current directory of the pane;\n\n\t\t- cursorpos - cursor position (doesn't make sense without \"lo-\n\t\t  cation\");\n\n\t\t- localopts - all local options;\n\n\t\t- filters - all filters;\n\n\t\t- filelist - list of files for\tcustom\tview  (implies\t\"loca-\n\t\t  tion\");\n\n\t\t- tree - tree structure for tree view (implies \"location\");\n\n\t\t- all - all of the above.\n\n\t\t\t\t\t\t:tabclose\n\n       :tabc[lose]\n\t      close  current  tab,  unless  it's  the only one open at current\n\t      scope.\n\n\t\t\t\t\t\t:tabmove\n\n       :tabm[ove] [N]\n\t      without the argument or with `$` as the  argument,  current  tab\n\t      becomes  the  last tab.  With the argument, current tab is moved\n\t      after the tab with the specified number.\tArgument of `0`\t moves\n\t      current tab to the first position.\n\n\t\t\t\t\t\t:tabname\n\n       :tabname [name]\n\t      set,  update or reset (when no argument is provided) name of the\n\t      current tab.\n\n\t\t\t\t\t\t:tabnew\n\n       :tabnew [path]\n\t      create new tab.  Accepts optional path for the new tab.\tMacros\n\t      and environment variables are expanded.\n\n\t\t\t\t\t\t:tabnext\n\n       :tabn[ext]\n\t      switch to the next tab (wrapping around).\n\n       :tabn[ext] {n}\n\t      go to the tab number {n}.\t Tab numeration starts with 1.\n\n\t\t\t\t\t\t:tabprevious\n\n       :tabp[revious]\n\t      switch to the previous tab (wrapping around).\n\n       :tabp[revious] {n}\n\t      go  to  the {n}-th previous tab.\tNote that :tabnext handles its\n\t      argument differently.\n\n\t\t\t\t\t\t:touch\n\n       :[line]touch file...\n\t      create files at specified paths.\tAborts on errors.  Doesn't up-\n\t      date  time  of  existing\tfiles.\tThe [line] can be used to pick\n\t      node in a tree-view.  Macros are expanded.\n\n\t\t\t\t\t\t:tr\n\n       :[range]tr/pattern/string/\n\t      for each file in range transliterate the characters which appear\n\t      in  pattern  to  the  corresponding  character  in string.  When\n\t      string is shorter than pattern, it's padded with its last\t char-\n\t      acter.\n\n\t\t\t\t\t\t:trashes\n\n       :trashes\n\t      lists all valid trash directories in a menu.  Only non-empty and\n\t      writable trash directories are shown.  This is exactly the  list\n\t      of directories that are cleared when :empty command is executed.\n\n       :trashes?\n\t      same  as\t:trashes,  but also displays size of each trash direc-\n\t      tory.\n\n\t\t\t\t\t\t:tree\n\n       :tree  turn pane into tree view with current  directory\tas  its\t root.\n\t      The tree view is implemented on top of a custom view, but is au-\n\t      tomatically kept in sync with file system\t state\tand  considers\n\t      all  the\tfilters.   Thus\t the structure corresponds to what one\n\t      would see on visiting the directories manually.\tAs  a  special\n\t      case  for\t trees\tbuilt  out of custom view file-system tracking\n\t      isn't performed.\n\n\t      To leave tree view go up from its root or use gh at any level of\n\t      the  tree.   Any command that changes directory will also do, in\n\t      particular, `:cd ..`.\n\n\t      Tree structure is incompatible with alternative representations,\n\t      so values of 'lsview' and 'millerview' options are ignored.\n\n       :tree! toggle current view in and out of tree mode.\n\n\t\t\t\t\t\t:undolist\n\n       :undol[ist]\n\t      display list of latest changes.  Use \"!\" to see actual commands.\n\n\t\t\t\t\t\t:unlet\n\n       :unl[et][!] $ENV_VAR1 $ENV_VAR2 ...\n\t      remove  environment variables. Add ! to omit displaying of warn-\n\t      ings about nonexistent variables.\n\n\t\t\t\t\t\t:unselect\n\n       :[range]unselect\n\t      unselect files in the given range (current file if no  range  is\n\t      given).\n\n       :unselect {pattern}\n\t      unselect files that match specified pattern.  Possible {pattern}\n\t      forms are described in \"Patterns\" section below.\tTrailing slash\n\t      for  directories\tis taken into account, so `:unselect */` unse-\n\t      lects directories.\n\n       :unselect !{external command}\n\t      unselect files from  the\tlist  supplied\tby  external  command.\n\t      Files are matched by full paths, relative paths are converted to\n\t      absolute ones beforehand.\n\n       :unselect //[iI]\n\t      same as item above, but reuses last search pattern.\n\n\t\t\t\t\t\t:version\n\n       :ve[rsion]\n\t      show menu with version information.\n\n\t\t\t\t\t\t:vifm\n\n       :vifm  same as :version.\n\n\t\t\t\t\t\t:view\n\n       :vie[w]\n\t      toggle on and off the quick file view.  See also 'quickview' op-\n\t      tion.\n\n       :vie[w]!\n\t      turn on quick file view if it's off.\n\n\t\t\t\t\t\t:volumes\n\n       :volumes\n\t      only for MS-Windows\n\t      display  menu  with volume list.\tHitting l (or Enter) key opens\n\t      appropriate volume in the current pane.\n\n\t\t\t\t\t\t:vsplit\n\n       :vs[plit]\n\t      switch to a two window vertical view.\n\n       :vs[plit]!\n\t      toggle window vertical splitting.\n\n       :vs[plit] path\n\t      split the window vertically to show both file directories.   And\n\t      changes  other pane to path (absolute or relative to current di-\n\t      rectory of active pane).\n\n\t\t\t\t\t\t:wincmd\n\n       :[count]winc[md] {arg}\n\t      same as running Ctrl-W [count] {arg}.\n\n\t\t\t\t\t\t:windo\n\n       :windo [command...]\n\t      execute command for each pane (same as :winrun % command).\n\n\t\t\t\t\t\t:winrun\n\n       :winrun type [command...]\n\t      execute command for pane(s), which is determined by  type\t argu-\n\t      ment:\n\t\t- ^ - top-left pane\n\t\t- $ - bottom-right pane\n\t\t- % - all panes\n\t\t- . - current pane\n\t\t- , - other pane\n\n\t\t\t\t\t\t:write\n\n       :w[rite]\n\t      write vifminfo file.\n\n\t\t\t\t\t\t:wq\n\n       :wq[!] same  as\t:quit,\tbut ! only disables check of backgrounded com-\n\t      mands.\t\t\t\t\t       :wqall\n\n       :wqa[ll][!]\n\t      same as :qall, but ! only disables check\tof  backgrounded  com-\n\t      mands.\n\n\t\t\t\t\t\t:xall\n\n       :xa[ll][!]\n\t      same as :qall.\n\n\t\t\t\t\t\t:xit\n\n       :x[it][!]\n\t      same as :quit.\n\n\t\t\t\t\t\t:yank\n\n       :[range]y[ank] [reg] [count]\n\t      will yank files to the reg register.\n\n\t\t\t\t\t\t:map lhs rhs\n\n       :map lhs rhs\n\t      map lhs key sequence to rhs in normal and visual modes.\n\n       :map! lhs rhs\n\t      map lhs key sequence to rhs in command line mode.\n\n\n\t\t\t\t\t       :cmap  :dmap  :mmap :nmap :qmap\n       :vmap\n\n       :cm[ap] lhs rhs\n\t      map lhs to rhs in command line mode.\n\n       :dm[ap] lhs rhs\n\t      map lhs to rhs in dialog modes.\n\n       :mm[ap] lhs rhs\n\t      map lhs to rhs in menu mode.\n\n       :nm[ap] lhs rhs\n\t      map lhs to rhs in normal mode.\n\n       :qm[ap] lhs rhs\n\t      map lhs to rhs in view mode.\n\n       :vm[ap] lhs rhs\n\t      map lhs to rhs in visual mode.\n\n\n\t\t\t\t\t\t:*map\n\n       :cm[ap]\n\t      list all maps in command line mode.\n\n       :dm[ap]\n\t      list all maps in dialog modes.\n\n       :mm[ap]\n\t      list all maps in menu mode.\n\n       :nm[ap]\n\t      list all maps in normal mode.\n\n       :qm[ap]\n\t      list all maps in view mode.\n\n       :vm[ap]\n\t      list all maps in visual mode.\n\n\t\t\t\t\t\t:*map beginning\n\n       :cm[ap] beginning\n\t      list all maps in command line mode that start  with  the\tbegin-\n\t      ning.\n\n       :dm[ap] beginning\n\t      list all maps in dialog modes that start with the beginning.\n\n       :mm[ap] beginning\n\t      list all maps in menu mode that start with the beginning.\n\n       :nm[ap] beginning\n\t      list all maps in normal mode that start with the beginning.\n\n       :qm[ap] beginning\n\t      list all maps in view mode that start with the beginning.\n\n       :vm[ap] beginning\n\t      list all maps in visual mode that start with the beginning.\n\n\t\t\t\t\t\t:noremap\n\n       :no[remap] lhs rhs\n\t      map the key sequence lhs to rhs for normal and visual modes, but\n\t      disallow mapping of rhs.\n\n       :no[remap]! lhs rhs\n\t      map the key sequence lhs to rhs for command line mode, but  dis-\n\t      allow mapping of rhs.\n\n\t\t\t:cnoremap   :dnoremap  :mnoremap  :nnoremap  :qnoremap\n       :vnoremap\n\n       :cno[remap] lhs rhs\n\t      map the key sequence lhs to rhs for command line mode, but  dis-\n\t      allow mapping of rhs.\n\n       :dn[oremap] lhs rhs\n\t      map  the\tkey sequence lhs to rhs for dialog modes, but disallow\n\t      mapping of rhs.\n\n       :mn[oremap] lhs rhs\n\t      map the key sequence lhs to rhs for menu mode, but disallow map-\n\t      ping of rhs.\n\n       :nn[oremap] lhs rhs\n\t      map  the\tkey  sequence lhs to rhs for normal mode, but disallow\n\t      mapping of rhs.\n\n       :qn[oremap] lhs rhs\n\t      map the key sequence lhs to rhs for view mode, but disallow map-\n\t      ping of rhs.\n\n       :vn[oremap] lhs rhs\n\t      map  the\tkey  sequence lhs to rhs for visual mode, but disallow\n\t      mapping of rhs.\n\n\t\t\t\t\t\t:unmap\n\n       :unm[ap] lhs\n\t      remove user mapping of lhs from normal and visual modes.\n\n       :unm[ap]! lhs\n\t      remove user mapping of lhs from command line mode.\n\n\t\t\t\t   :cunmap  :dunmap  :munmap  :nunmap  :qunmap\n       :vunmap\n\n       :cu[nmap] lhs\n\t      remove user mapping of lhs from command line mode.\n\n       :du[nmap] lhs\n\t      remove user mapping of lhs from dialog modes.\n\n       :mu[nmap] lhs\n\t      remove user mapping of lhs from menu mode.\n\n       :nun[map] lhs\n\t      remove user mapping of lhs from normal mode.\n\n       :qun[map] lhs\n\t      remove user mapping of lhs from view mode.\n\n       :vu[nmap] lhs\n\t      remove user mapping of lhs from visual mode.\n\nRanges\n       The ranges implemented include:\n\t 2,3 - from second to third file in the list (including it)\n\t % - the entire directory.\n\t . - the current position in the filelist.\n\t $ - the end of the filelist.\n\t 't - the mark position t.\n\n       Examples:\n\n\t :%delete\n\n       would delete all files in the directory.\n\n\t :2,4delete\n\n       would delete the files in the list positions 2 through 4.\n\n\t :.,$delete\n\n       would  delete  the  files  from\tthe current position to the end of the\n       filelist.\n\n\t :3delete4\n\n       would delete the files in the list positions 3, 4, 5, 6.\n\n       If a backward range is given :4,2delete - an query message is given and\n       user can chose what to do next.\n\n       The builtin commands that accept a range are :d[elete] and :y[ank].\n\nCommand macros\n       The command macros may be used in user commands.\n\n       %a     User  arguments.\t When  user arguments contain macros, they are\n\t      expanded before preforming substitution of %a.\n\n       %c %\"c The current file under the cursor.\n\n       %C %\"C The current file under the cursor in the other directory.\n\n       %f %\"f All of the selected files.\n\n       %F %\"F All of the selected files in the other directory list.\n\n       %b %\"b Same as %f %F.\n\n       %d %\"d Full path to current directory.\n\n       %D %\"D Full path to other file list directory.\n\n       %rx %\"rx\n\t      Full paths to files in the register {x}.\t In  case  of  invalid\n\t      symbol in place of {x}, it's processed with the rest of the line\n\t      and default register is used.\n\n       %m     Show command output in a menu.\n\n       %M     Same as %m, but l (or Enter) key is handled like for :locate and\n\t      :find commands.\n\n       %u     Process  command output as list of paths and compose custom view\n\t      out of it.\n\n       %U     Same as %u, but implies less list updates inside vifm, which  is\n\t      absence of sorting at the moment.\n\n       %Iu    same  as\t%u, but gives up terminal before running external com-\n\t      mand.\n\n       %IU    same as %U, but gives up terminal before running\texternal  com-\n\t      mand.\n\n       %S     Show command output in the status bar.\n\n       %q     redirect\tcommand\t output\t to  quick view, which is activated if\n\t      disabled.\n\n       %s     Execute command in split window of active\t terminal  multiplexer\n\t      (ignored if not running inside one).\n\n       %n     Forbid using of terminal multiplexer to run the command.\n\n       %i     Completely ignore command output.\n\n\n       %pc    Marks the end of the main command and the beginning of the clear\n\t      command for graphical preview, which is invoked on closing  pre-\n\t      view of a file.\n\n       %pd    Marks  a\tpreview command as one that directly communicates with\n\t      the terminal.  Beware that this is for things like  sixel\t which\n\t      are  self-contained sequences that depend only on current cursor\n\t      position, using this with anything else is likely to mangle ter-\n\t      minal state.\n\n       The following dimensions and coordinates are in characters:\n\n       %px    x coordinate of top-left corner of preview area.\n\n       %py    y coordinate of top-left corner of preview area.\n\n       %pw    width of preview area.\n\n       %ph    height of preview area.\n\n\n       Use %% if you need to put a percent sign in your command.\n\n       Note  that %m, %M, %s, %S, %i, %u and %U macros are mutually exclusive.\n       Only the last one of them on the command will take effect.\n\n       You can use file name modifiers after %c, %C, %f, %F,  %b,  %d  and  %D\n       macros.\tSupported modifiers are:\n\n\t - :p\t\t- full path\n\n\t - :u\t\t  -   UNC   name   of\tpath   (e.g.   \"\\\\server\"   in\n\t   \"\\\\server\\share\"), Windows only.  Expands to current computer  name\n\t   for not UNC paths.\n\n\t - :~\t\t- relative to the home directory\n\n\t - :.\t\t- relative to current directory\n\n\t - :h\t\t- head of the file name\n\n\t - :t\t\t- tail of the file name\n\n\t - :r\t\t- root of the file name (without last extension)\n\n\t - :e\t\t- extension of the file name (last one)\n\n\t - :s?pat?sub?\t -  substitute\tthe  first occurrence of pat with sub.\n\t   You can use any character for '?', but it must not occur in pat  or\n\t   sub.\n\n\t - :gs?pat?sub? - like :s, but substitutes all occurrences of pat with\n\t   sub.\n\n       See ':h filename-modifiers' in Vim's documentation for the detailed de-\n       scription.\n\n       Using  %x means expand corresponding macro escaping all characters that\n       have special meaning.  And %\"x means using of double quotes and\tescape\n       only  backslash\tand  double  quote characters, which is more useful on\n       Windows systems.\n\n       Position and quantity (if there is any) of %m, %M, %S or %s  macros  in\n       the command is unimportant.  All their occurrences are removed from the\n       resulting command.\n\n       %c and %f macros are expanded to file names only, when %C  and  %F  are\n       expanded to full paths.\t%f and %F follow this in %b too.\n\n       :com move mv %f %D\n\t      set  the\t:move command to move all of the files selected in the\n\t      current directory to the other directory.\n\n       The %a macro is replaced with any arguments given to an alias  command.\n       All arguments are considered optional.\n\t      :com  lsl !!ls -l %a - set the lsl command to execute ls -l with\n\t      or without an argument.\n\n       :lsl<Enter>\n\t      will list the directory contents of the current directory.\n\n       :lsl filename<Enter>\n\t      will list only the given filename.\n\n       The macros can also be used in directly executing commands.   \":!mv  %f\n       %D\" would move the current directory selected files to the other direc-\n       tory.\n\n       Appending & to the end of a command causes it to\t be  executed  in  the\n       background.   Typically\tyou want to run two kinds of external commands\n       in the background:\n\n\t - GUI applications that doesn't fork thus block vifm (:!sxiv %f &);\n\n\t - console tools that do not work with terminal (:!mv %f %D &).\n\n       You don't want to run terminal commands, which require  terminal\t input\n       or output something in background because they will mess up vifm's TUI.\n       Anyway, if you did run such a command, you can use Ctrl-L key to update\n       vifm's TUI.\n\n       Rewriting  the example command with macros given above with background-\n       ing:\n\n       %m, %M, %s, %S, %u and %U macros cannot\tbe  combined  with  background\n       mark (\" &\") as it doesn't make much sense.\n\nCommand backgrounding\n       Copy  and move operation can take a lot of time to proceed.  That's why\n       vifm supports backgrounding of this  two\t operations.   To  run\t:copy,\n       :move  or :delete command in the background just add \" &\" at the end of\n       a command.\n\n       For each background operation a new thread is created.\tJob  cancella-\n       tion can be requested in the :jobs menu via dd shortcut.\n\n       You  can\t see  if  command  is  still running in the :jobs menu.\t Back-\n       grounded commands have progress instead of process id at the  line  be-\n       ginning.\n\n       Background operations cannot be undone.\n\nCancellation\n       Note that cancellation works somewhat different on Windows platform due\n       to different mechanism of break signal  propagation.   One  also\t might\n       need to use Ctrl-Break shortcut instead of Ctrl-C.\n\n       There are two types of operations that can be cancelled:\n\n\t - file system operations;\n\n\t - mounting  with  FUSE\t (but  not  unmounting as it can cause loss of\n\t   data);\n\n\t - calls of external applications.\n\n       Note that vifm never terminates applications, it\t sends\tSIGINT\tsignal\n       and lets the application quit normally.\n\n       When one of set of operations is cancelled (e.g. copying of 5th file of\n       10 files), further operations are cancelled too.\t  In  this  case  undo\n       history will contain only actually performed operations.\n\n       Cancelled  operations are indicated by \"(cancelled)\" suffix appended to\n       information message on statusbar.\n\n       File system operations\n\n       Currently the following commands\t can  be  cancelled:  :alink,  :chmod,\n       :chown,\t:clone,\t :copy,\t :delete,  :mkdir,  :move,  :restore,  :rlink,\n       :touch.\tFile putting (on p/P key) can be cancelled as well.  It's  not\n       hard to see that these are mainly long-running operations.\n\n       Cancelling  commands when they are repeated for undo/redo operations is\n       allowed for convenience, but is not recommended\tas  further  undo/redo\n       operations  might  get  blocked\tby side-effects of partially cancelled\n       group of operations.\n\n       These commands can't be cancelled: :empty, :rename, :substitute, :tr.\n\n       Mounting with FUSE\n\n       It's not considered to be an error, so only notification on the\tstatus\n       bar is shown.\n\n       External application calls\n\n       Each  of this operations can be cancelled: :apropos, :find, :grep, :lo-\n       cate.\n\nPatterns\n       :highlight, :filetype, :filextype, :fileviewer commands and  'classify'\n       option  support globs, regular expressions and mime types to match file\n       names or their paths.\n\n       There are six possible ways to write a single pattern:\n\n\t 1. [!]{comma-separated-name-globs}\n\n\t 2. [!]{{comma-separated-path-globs}}\n\n\t 3. [!]/name-regular-expression/[iI]\n\n\t 4. [!]//path-regular-expression//[iI]\n\n\t 5. [!]<comma-separated-mime-type-globs>\n\n\t 6. undecorated-pattern\n\n       First five forms can include leading exclamation mark that negates pat-\n       tern matching.\n\n       The  last  form is implicitly refers to one of others.  :highlight does\n       not accept undecorated form, while :filetype, :filextype,  :fileviewer,\n       :select, :unselect and 'classify' treat it as list of name globs.\n\n       Path  patterns receive absolute path of the file that includes its name\n       component as well.\n\n       To combine several patterns (AND them), make sure you're using  one  of\n       the first five forms and write patterns one after another, like this:\n\t <text/plain>{*.vifm}\n       Mind that if you make a mistake the whole string will be treated as the\n       sixth form.\n\n       :filetype, :filextype and :fileviewer commands  accept  comma-separated\n       list of patterns instead of a single pattern, thus effectively handling\n       OR operation on them:\n\t <text/plain>{*.vifm},<application/pdf>{*.pdf}\n       Forms that accept comma-separated lists of patterns also\t process  them\n       as lists of alternatives.\n\n       Patterns with regular expressions\n\n       Regular\texpression  patterns  are case insensitive by default, see de-\n       scription of commands, which might override default behaviour.\n\n       Flags of regular expressions mean the following:\n\t - \"i\" makes filter case insensitive;\n\t - \"I\" makes filter case sensitive.  They  can\tbe  repeated  multiple\n       times,  but  the later one takes precedence (e.g.  \"iiiI\" is equivalent\n       to \"I\" and \"IiIi\" is the same as \"i\").\n\n       There are no implicit `^` or `$`, so make sure to specify them  explic-\n       itly if the pattern should match the whole name or path.\n\n       Patterns with globs\n\n       \"Globs\"\tsection below provides short overview of globs and some impor-\n       tant points that one needs to know about them.\n\n       Patterns with mime-types\n\n       Mime type matching is essentially globs matching applied to  mime  type\n       of  a  file instead of its name/path.  Note: mime types aren't detected\n       on Windows.\n\n       Examples\n\n       Associate `evince` to PDF-files only inside `/home/user/downloads/` di-\n       rectory (excluding its subdirectories):\n\n\t :filextype //^/home/user/downloads/[^/]*.pdf$// evince %f\n\n\nGlobs\n       Globs are always case insensitive as it makes sense in general case.\n\n       `*`,  `?`,  `[`\tand `]` are treated as special symbols in the pattern.\n       E.g.\n\n\t :filetype * less %c\n\n       matches all files.  One can use character classes for escaping, so\n\n\t :filetype [*] less %c\n\n       matches only one file name, the one which contains only\tasterisk  sym-\n       bol.\n\n       `*`  means  any number of any characters (possibly an empty substring),\n       with one exception: asterisk at the pattern beginning doesn't match dot\n       in the first position.  E.g.\n\n\t :fileviewer *.zip,*.jar zip -sf %c\n\n       associates  using  of  `zip` program to preview all files with `zip` or\n       `jar` extensions as listing of their content, but `.file.zip` won't  be\n       matched.\n\n       `?` means any character at this position.  E.g.\n\n\t :fileviewer ?.out file %c\n\n       calls `file` tool for all files which have exactly one character before\n       their extension (e.g. a.out, b.out).\n\n       Square brackets designate character class, which means that whole char-\n       acter  class matches against any of characters listed in it.  For exam-\n       ple\n\n\t :fileviewer *.[ch] highlight -O xterm256 -s dante --syntax c %c\n\n       makes vifm call `highlight` program to colorize source and header files\n       in C language for a 256-color terminal.\tEqual command would be\n\n\t :fileviewer *.c,*.h highlight -O xterm256 -s dante --syntax c %c\n\n\n       Inside square brackets `^` or `!` can be used for symbol class negotia-\n       tion and the `-` symbol to set a range.\t `^`  and  `!`\tshould\tappear\n       right after the opening square bracket.\tFor example\n\n\t :filetype *.[!d]/ inspect_dir\n\n       associates `inspect_dir` as additional handler for all directories that\n       have one character extension unless it's \"d\" letter.  And\n\n\t :filetype [0-9].jpg sxiv\n\n       associates `sxiv` picture viewer only for JPEG-files that contain  sin-\n       gle digit in their name.\n\n:set options\n       Local options\n\t      These are kind of options that are local to a specific view.  So\n\t      you can set ascending sorting order for left pane and descending\n\t      order for right pane.\n\n\t      In  addition  to being local to views, each such option also has\n\t      two values:\n\n\t\t- local to current directory (value  associated\t with  current\n\t\t  location);\n\n\t\t- global  to  current  directory  (value  associated  with the\n\t\t  pane).\n\n\t      The idea is that current directory can be made a\ttemporary  ex-\n\t      ception  to  regular  configuration of the view, until directory\n\t      change.  Use :setlocal for that.\t:setglobal changes view\t value\n\t      not  affecting  settings\tuntil  directory change.  :set applies\n\t      changes immediately to all values.\n\n\n       'aproposprg'\n\t      type: string\n\t      default: \"apropos %a\"\n\t      Specifies format for an external command to be  invoked  by  the\n\t      :apropos command.\t The format supports expanding of macros, spe-\n\t      cific for a particular *prg option, and %% sequence for  insert-\n\t      ing  percent  sign literally.  This option should include the %a\n\t      macro to specify placement of arguments passed to\t the  :apropos\n\t      command.\t If the macro is not used, it will be implicitly added\n\t      after a space to the value of this option.\n\n       'autochpos'\n\t      type: boolean\n\t      default: true\n\t      When disabled vifm will set cursor to the first line in the view\n\t      after  :cd and :pushd commands instead of saved cursor position.\n\t      Disabling this will also make vifm clear information about  cur-\n\t      sor position in the view history on :cd and :pushd commands (and\n\t      on startup if 'autochpos' is disabled in the vifmrc).  l key  in\n\t      the  \":history .\" and \":trashes\" menus are treated like :cd com-\n\t      mand.  This option also affects marks so that  navigating\t to  a\n\t      mark doesn't restore cursor position.\n\n\t      When this option is enabled, more fine grained control over cur-\n\t      sor position is available via 'histcursor' option.\n\n       'columns' 'co'\n\t      type: integer\n\t      default: terminal width on startup\n\t      Terminal width in characters.\n\n       'caseoptions'\n\t      type: charset\n\t      default: \"\"\n\t      This option gives additional control over\t case  sensitivity  by\n\t      allowing\toverriding  default behaviour to either always be case\n\t      sensitive or always be case insensitive.\tPossible  values  form\n\t      pairs  of\t lower\tand upper case letters that configure specific\n\t      aspect of behaviour:\n\t\tp - always ignore case of paths during completion.\n\t\tP - always match case of paths during completion.\n\t\tg - always ignore case of characters for f/F/;/,.\n\t\tG - always match case of characters for f/F/;/,.\n\n\t      At most one item of each pair takes affect, if both or more  are\n\t      present,\tonly  the  last one matters.  When none of pair's ele-\n\t      ments are present, the behaviour is default (depends on  operat-\n\t      ing system for path completion and on values of 'ignorecase' and\n\t      'smartcase' options for file navigation).\n\n       'cdpath' 'cd'\n\t      type: string list\n\t      default: value of $CDPATH with commas instead of colons\n\t      Specifies locations to check on changing directory with relative\n\t      path  that  doesn't  start  with \"./\" or \"../\".  When non-empty,\n\t      current directory is examined after directories  listed  in  the\n\t      option.\n\n\t      This option doesn't affect completion of :cd command.\n\n\t      Example:\n\n\t\tset cdpath=~\n\n\t      This  way\t \":cd  bin\"  will  switch to \"~/bin\" even if directory\n\t      named \"bin\" exists in current directory, while \":cd ./bin\"  com-\n\t      mand will ignore value of 'cdpath'.\n\n       'chaselinks'\n\t      type: boolean\n\t      default: false\n\t      When  enabled path of view is always resolved to real path (with\n\t      all symbolic links expanded).\n\n       'classify'\n\t      type: string list\n\t      default: \":dir:/\"\n\t      Specifies file name prefixes and suffixes depending on file type\n\t      or name.\tThe format is either of:\n\t\t- [{prefix}]:{filetype}:[{suffix}]\n\t\t- [{prefix}]::{pattern}::[{suffix}]\n\t      Possible\t{pattern}  forms  are  described in \"Patterns\" section\n\t      above.\n\n\t      Priority rules:\n\t\t- file name patterns have priority over type patterns\n\t\t- file name patterns are matched  in  left-to-right  order  of\n\t      their appearance in this option\n\n\t      Either {prefix} or {suffix} or both can be omitted (which is the\n\t      default for all unspecified file types), this means empty\t {pre-\n\t      fix}  and/or  {suffix}.  {prefix} and {suffix} should consist of\n\t      at most eight characters.\t Elements  are\tseparated  by  commas.\n\t      Neither  prefixes\t nor  suffixes are part of file names, so they\n\t      don't affect commands which operate on file names\t in  any  way.\n\t      Comma  (',')  character can be inserted by doubling it.  List of\n\t      file type names can be found in the  description\tof  filetype()\n\t      function.\n\n       'confirm' 'cf'\n\t      type: set\n\t      default: delete,permdelete\n\t      Defines which operations require confirmation:\n\t       - delete\t    - moving files to trash (on d or :delete);\n\t       -  permdelete  -\t permanent deletion of files (on D or :delete!\n\t      command or on undo/redo operation).\n\n       'cpoptions' 'cpo'\n\t      type: charset\n\t      default: \"fst\"\n\t      Contains a sequence of single-character flags.   Each  flag  en-\n\t      ables behaviour of older versions of vifm.  Flags:\n\t       - f - when included, running :filter command results in not in-\n\t      verted (matching files are filtered out)\tand  :filter!  in  in-\n\t      verted  (matching\t files are left) filter, when omitted, meaning\n\t      of the exclamation mark changes to the opposite;\n\t       - s - when included, yy, dd and DD normal mode commands act  on\n\t      selection, otherwise they operate on current file only;\n\t       -  t  - when included, <tab> (thus <c-i>) behave as <space> and\n\t      switches active pane, otherwise <tab> and <c-i>  go  forward  in\n\t      the view history.\t It's possible to make both <tab> and <c-i> to\n\t      work as expected by setting up the terminal to emit a custom se-\n\t      quence when <c-i> is pressed; see :histnext for details.\n\n       'cvoptions'\n\t      type: set\n\t      default:\n\t      Specifies\t whether entering/leaving custom views triggers events\n\t      that normally happen on entering/leaving directories:\n\t       - autocmds    - trigger autocommands on entering/leaving custom\n\t      views;\n\t       -  localopts   - reset local options on entering/leaving custom\n\t      views;\n\t       - localfilter - reset local filter on  entering/leaving\tcustom\n\t      views.\n\n       'deleteprg'\n\t      type: string\n\t      default: \"\"\n\t      Specifies\t program to run on files that are permanently removed.\n\t      When empty, files are removed as usual, otherwise\t this  command\n\t      is  invoked  on each file by appending its name.\tIf the command\n\t      doesn't remove files, they will remain on the file system.\n\n       'dirsize'\n\t      type: enumeration\n\t      default: size\n\t      Controls how size of directories is  displayed  in  file\tviews.\n\t      The following values are possible:\n\t       -  size\t - size of directory (i.e., size used to store list of\n\t      files)\n\t       - nitems - number of entries in the directory (excluding .  and\n\t      ..)\n\n\t      Size  obtained via ga/gA overwrites this setting so seeing count\n\t      of files and occasionally size of directories is possible.\n\n       'dotdirs'\n\t      type: set\n\t      default: nonrootparent\n\t      Controls displaying of dot directories.\tThe  following\tvalues\n\t      are possible:\n\t       - rootparent    - show \"../\" in root directory of file system\n\t       -  nonrootparent\t -  show \"../\" in non-root directories of file\n\t      system\n\n\t      Note that empty directories always contain \"../\"\tentry  regard-\n\t      less of value of this option.  \"../\" disappears at the moment at\n\t      least one file is created.\n\n       'dotfiles'\n\t      type: boolean\n\t      default: false\n\t      Whether dot files are shown in the view.\tCan be controlled with\n\t      z* bindings.\n\n       'fastrun'\n\t      type: boolean\n\t      default: false\n\t      With  this  option  turned on you can run partially entered com-\n\t      mands with unambiguous beginning using :! (e.g. :!Te instead  of\n\t      :!Terminal or :!Te<tab>).\n\n       'fillchars' 'fcs'\n\t      type: string list\n\t      default: \"\"\n\t      Sets characters used to fill borders.\n\n\t\titem\t     default\tused for\n\t\tvborder:c     '\t '\t  left, middle and right vertical bor-\n\t      ders\n\n\t      If value is omitted, its default value is used.  Example:\n\n\t\tset fillchars=vborder:.\n\n       'findprg'\n\t      type: string\n\t      default: \"find %s %a -print , -type d \\( ! -readable -o !\t -exe-\n\t      cutable \\) -prune\"\n\t      Specifies\t format\t for  an external command to be invoked by the\n\t      :find command.  The format supports expansion of macros specific\n\t      for this particular option and %% sequence for inserting percent\n\t      sign literally.  The macros are:\n\n\t\tmacro\tvalue/meaning\n\t\t %s\tliteral arguments of :find or\n\t\t\tlist of paths to search in\n\n\t\t %A\tempty or\n\t\t\tliteral arguments of :find\n\t\t %a\tempty or\n\t\t\tliteral arguments of :find or\n\t\t\tpredicate followed by escaped arguments of :find\n\t\t %p\tempty or\n\t\t\tliteral arguments of :find or\n\t\t\tescaped arguments (parameters) of :find\n\n\t\t %u\tredirect output to custom view instead\tof  showing  a\n\t      menu\n\t\t %U\t redirect  output  to  unsorted custom view instead of\n\t      showing a menu\n\n\t      Predicate in %a is \"-name\" on *nix and \"-iname\" on Windows.\n\n\t      If both %u and %U are specified, %U is chosen.\n\n\t      Some macros can be added implicitly:\n\t       - if %s isn't present, it's appended\n\t       - if neither of %a, %A and %p is present, %a is appended\n\t       - if neither of %s, %a, %A and %p is present, %s and %a are ap-\n\t      pended in this order\n\n\t      The  macros slightly change their meaning depending on format of\n\t      :find's arguments:\n\t       - if the first argument points to an existing directory, %s  is\n\t      assigned all arguments while %a, %A and %p are left empty\n\t       - otherwise:\n\t\t  -  %s\t is  assigned a dot (\".\") meaning current directory or\n\t      list of selected file names, if any\n\t\t  - %a, %A and %p are assigned literal\targuments  when\t first\n\t      argument\tstarts with a dash (\"-\"), otherwise %a gets an escaped\n\t      version of the arguments with a predicate and  %p\t contains  es-\n\t      caped version of the arguments\n\n\t      Starting\twith  Windows  Server 2003 a `where` command is avail-\n\t      able.  One can configure vifm to use it in the following way:\n\n\t\t  set findprg=\"where /R %s %A\"\n\n\t      As the syntax of this command is rather limited, one  can't  use\n\t      :find  command  with selection of more than one item because the\n\t      command ignores all directory paths except for the last one.\n\n\t      When using find port on Windows,\tanother\t option\t is  to\t setup\n\t      'findprg' like this:\n\n\t\t  set findprg=\"find %s %a\"\n\n\n       'followlinks'\n\t      type: boolean\n\t      default: true\n\t      Follow  links  on\t l  or Enter.  That is navigate to destination\n\t      file instead of treating the link as if  it  were\t target\t file.\n\t      Doesn't  affects\tlinks to directories, which are always entered\n\t      (use gf key for directories).\n\n       'fusehome'\n\t      type: string\n\t      default: \"($XDG_DATA_HOME/.local/share | $VIFM)/fuse/\"\n\t      Directory to be used as a root dir for FUSE  mounts.   Value  of\n\t      the  option  can\tcontain\t environment  variables (in form \"$en-\n\t      vname\"), which will be expanded (prepend it with a slash to pre-\n\t      vent expansion).\tThe value should expand to an absolute path.\n\n\t      If  you change this option, vifm won't remount anything.\tIt af-\n\t      fects future mounts only.\t See \"Automatic FUSE  mounts\"  section\n\t      below for more information.\n\n       'gdefault' 'gd'\n\t      type: boolean\n\t      default: false\n\t      When on, 'g' flag is on for :substitute by default.\n\n       'grepprg'\n\t      type: string\n\t      default: \"grep -n -H -I -r %i %a %s\"\n\t      Specifies\t format\t for  an external command to be invoked by the\n\t      :grep command.  The format supports expanding  of\t macros,  spe-\n\t      cific  for a particular *prg option, and %% sequence for insert-\n\t      ing percent sign literally.  This option should include  the  %i\n\t      macro  to specify placement of \"-v\" string when inversion of re-\n\t      sults is requested, %a or %A macro to specify placement of argu-\n\t      ments  passed  to\t the :grep command and the %s macro to specify\n\t      placement of list of files to search in.\tIf some of the\tmacros\n\t      are not used, they will be implicitly added after a space to the\n\t      value of the 'grepprg' option in the following  order:  %i,  %a,\n\t      %s.   Note  that\twhen  neither %a nor %A are specified, it's %a\n\t      which is added implicitly.\n\n\t      Optional %u or %U macro could be used (if both specified\t%U  is\n\t      chosen)  to  force redirection to custom or unsorted custom view\n\t      respectively.\n\n\t      See 'findprg' option for description of  difference  between  %a\n\t      and %A.\n\n\t      Example  of setup to use ack (http://beyondgrep.com/) instead of\n\t      grep:\n\n\t\tset grepprg='ack -H -r %i %a %s'\n\n\t      or  The  Silver\tSearcher   (https://github.com/ggreer/the_sil-\n\t      ver_searcher):\n\n\t\tset grepprg='ag --line-numbers %i %a %s'\n\n\n\n       'histcursor'\n\t      type: set\n\t      default: startup,dirmark,direnter\n\t      Defines  situations when cursor should be moved according to di-\n\t      rectory history:\n\t       - startup  - on loading file lists during startup\n\t       - dirmark  - after navigating to a mark\tthat  doesn't  specify\n\t      file\n\t       - direnter - on opening directory from a file list\n\n\t      This option has no effect when 'autochpos' is disabled.\n\n\t      Note  that the list is not exhaustive and there are other situa-\n\t      tions when cursor is positioned automatically.\n\n       'history' 'hi'\n\t      type: integer\n\t      default: 15\n\t      Maximum number of stored items in all histories.\n\n       'hlsearch' 'hls'\n\t      type: boolean\n\t      default: true\n\t      Highlight all matches of search pattern.\n\n       'iec'  type: boolean\n\t      default: false\n\t      Use KiB, MiB, ... suffixes instead of K, M,  ...\twhen  printing\n\t      size in human-friendly format.\n\n       'ignorecase' 'ic'\n\t      type: boolean\n\t      default: false\n\t      Ignore  case  in search patterns (:substitute, / and ? commands)\n\t      and characters after f and F commands.  It doesn't  affect  file\n\t      filtering.\n\n       'incsearch' 'is'\n\t      type: boolean\n\t      default: false\n\t      When this option is set, search and view update for local filter\n\t      is be performed starting from initial cursor position each  time\n\t      search pattern is changed.\n\n       'iooptions'\n\t      type: set\n\t      default:\n\t      Controls\tdetails\t of file operations.  The following values are\n\t      available:\n\t       - fastfilecloning - perform fast file cloning  (copy-on-write),\n\t      when available\n\t\t\t\t   (available on Linux and btrfs file system).\n\n       'laststatus' 'ls'\n\t      type: boolean\n\t      default: true\n\t      Controls if status bar is visible.\n\n       'lines'\n\t      type: integer\n\t      default: terminal height on startup\n\t      Terminal height in lines.\n\n       'locateprg'\n\t      type: string\n\t      default: \"locate %a\"\n\t      Specifies\t format\t for  an external command to be invoked by the\n\t      :locate command.\tThe format supports expanding of macros,  spe-\n\t      cific  for a particular *prg option, and %% sequence for insert-\n\t      ing percent sign literally.  This option should include  the  %a\n\t      macro  to\t specify  placement of arguments passed to the :locate\n\t      command.\tIf the macro is not used, it will be implicitly\t added\n\t      after a space to the value of this option.\n\n\t      Optional\t%u  or %U macro could be used (if both specified %U is\n\t      chosen) to force redirection to custom or unsorted  custom  view\n\t      respectively.\n\n       'mediaprg'\n\t      type: string\n\t      default: path to bundled script that supports udevil, udisks and\n\t      udisks2\n\t\t       (using udisks2 requires python  with  dbus  module  in-\n\t      stalled)\n\t\t       OS X: path points to a python script that uses diskutil\n\t      {only for *nix}\n\t      Specifies\t command  to be used to manage media devices.  Used by\n\t      :media command.\n\n\t      The command can be passed the following parameters:\n\t       - list\t\t-- list media\n\t       - mount {device} -- mount a device\n\t       - unmount {path} -- unmount given mount point\n\n\t      The output of `list` subcommand is parsed\t in  search  of\t lines\n\t      that start with one of the following prefixes:\n\t       - device=      - specifies device path (e.g., \"/dev/sde\")\n\t       - label=\t      - specifies optional device label (e.g., \"Memory\n\t      card\")\n\t       - info=\t      - specifies arbitrary text to  display  next  to\n\t      device (by\n\t\t\t\tdefault\t \"[label]\"  is\tused, if label is pro-\n\t      vided)\n\t       - mount-point= - specifies a mount point (can be absent or  ap-\n\t      pear more than once)\n\n\t      All  other  lines are ignored.  Each `device=` starts a new sec-\n\t      tion describing a device which should include two other possible\n\t      prefixes.\n\n\t      `list`  subcommand is assumed to always succeed, while exit code\n\t      of `mount` and `unmount` is  taken  into\taccount\t to  determine\n\t      whether operation was performed successfully.\n\n       'lsoptions'\n\t      type: string list\n\t      default: \"\"\n\t      scope: local\n\n\t      Configures ls-like view.\n\n\t\titem\t      used for\n\t\ttransposed     filling\tview  grid  by\tcolumns rather than by\n\t      lines\n\n\n       'lsview'\n\t      type: boolean\n\t      default: false\n\t      scope: local\n\t      When this option is set, directory view  will  be\t displayed  in\n\t      multiple\tcolumns\t with  file names similar to output of `ls -x`\n\t      command.\tSee \"ls-like view\" section below for  format  descrip-\n\t      tion.  This option has no effect if 'millerview' is on.\n\n       'milleroptions'\n\t      type: string list\n\t      default: \"lsize:1,csize:1,rsize:1,rpreview:dirs\"\n\t      scope: local\n\n\t      Configures miller view.\n\n\t\titem\t      default  used for\n\t\tlsize:num     0\t       left column\n\t\tcsize:num     1\t       center column (can't be disabled)\n\t\trsize:num     0\t       right column\n\t\trpreview:str  dirs     right column\n\n\t      *size  specifies\tratios of columns.  Each ratio is in the range\n\t      from 0 to 100 and values are adjusted to fit the\tlimits.\t  Zero\n\t      disables a column, but central (main) column can't be disabled.\n\n\t      rpreview\tspecifies what file-system objects should be previewed\n\t      in the right column and can take two values: dirs (only directo-\n\t      ries)  or\t all.\tBoth  options  don't  include parent directory\n\t      (\"..\").\n\n\t      Example of two-column mode which is useful in  combination  with\n\t      :view command:\n\n\t\tset milleroptions=lsize:1,csize:2\n\n\n       'millerview'\n\t      type: boolean\n\t      default: false\n\t      scope: local\n\t      When  this  option  is  set, directory view will be displayed in\n\t      multiple cascading columns.  Ignores 'lsview'.\n\n       'mintimeoutlen'\n\t      type: integer\n\t      default: 150\n\t      The fracture of 'timeoutlen' in milliseconds that is waited  be-\n\t      tween subsequent input polls, which affects various asynchronous\n\t      operations (detecting changes  made  by  external\t applications,\n\t      monitoring  background jobs, redrawing UI).  There are no strict\n\t      guarantees, however the higher this value is, the\t less  is  CPU\n\t      load in idle mode.\n\n       'number' 'nu'\n\t      type: boolean\n\t      default: false\n\t      scope: local\n\t      Print  line  number in front of each file name when 'lsview' op-\n\t      tion is turned off.  Use 'numberwidth' to control width of  line\n\t      number.  Also see 'relativenumber'.\n\n       'numberwidth' 'nuw'\n\t      type: integer\n\t      default: 4\n\t      scope: local\n\t      Minimal number of characters for line number field.\n\n       'previewprg'\n\t      type: string\n\t      default: \"\"\n\t      scope: local\n\n\t      External\tcommand to be used instead of preview programs config-\n\t      ured via :fileviewer command.\n\n\t      Example:\n\n\t\t\" always show git log in preview of files inside some repository\n\t\tau DirEnter '~/git-repo/**/*' setl previewprg='git log --color -- %c 2>&1'\n\n       'quickview'\n\t      type: boolean\n\t      default: false\n\t      Whether quick view (:view) is currently active or not.\n\n       'relativenumber' 'rnu'\n\t      type: boolean\n\t      default: false\n\t      scope: local\n\t      Print relative line number in  front  of\teach  file  name  when\n\t      'lsview'\toption\tis  turned  off.  Use 'numberwidth' to control\n\t      width of line number.   Various  combinations  of\t 'number'  and\n\t      'relativenumber' lead to such results:\n\n\t\t\t\t      nonumber\t\t     number\n\n\t\t  norelativenumber   | first\t\t    |\t1 first\n\t\t\t\t     | second\t\t    |\t2 second\n\t\t\t\t     | third\t\t    |\t3 third\n\n\t\t    relativenumber   |\t 1 first\t    |\t1 first\n\t\t\t\t     |\t 0 second\t    |2\t  second\n\t\t\t\t     |\t 1 third\t    |\t1 third\n\n\n       'rulerformat' 'ruf'\n\t      type: string\n\t      default: \"%l/%S \"\n\t      Determines  the  content\tof the ruler.  Its minimal width is 13\n\t      characters and it's right aligned.  Following  macros  are  sup-\n\t      ported:\n\t       %=  - separation point between left and right aligned halves of\n\t      the line\n\t       %l  - file number\n\t       %L  - total number of files in  view  (including\t filtered  out\n\t      ones)\n\t       %x  - number of files excluded by filters\n\t       %0- - old name for %x macro\n\t       %S  - number of displayed files\n\t       %=  - separation point between left and right align items\n\t       %%  - percent sign\n\t       %[  - designates beginning of an optional block\n\t       %]  - designates end of an optional block\n\n\t      Percent  sign  can  be followed by optional minimum field width.\n\t      Add '-' before minimum field width if you want field to be right\n\t      aligned.\n\n\t      Example:\n\n\t\tset rulerformat='%2l-%S%[ +%x%]'\n\n       'runexec'\n\t      type: boolean\n\t      default: false\n\t      Run executable file on Enter or l.\n\n       'scrollbind' 'scb'\n\t      type: boolean\n\t      default: false\n\t      When  this  option  is  set, vifm will try to keep difference of\n\t      scrolling positions of two windows constant.\n\n       'scrolloff' 'so'\n\t      type: integer\n\t      default: 0\n\t      Minimal number of screen lines to keep above and below the  cur-\n\t      sor.   If you want cursor line to always be in the middle of the\n\t      view (except at the beginning or end of the file list), set this\n\t      option to some large value (e.g. 999).\n\n       'shell' 'sh'\n\t      type: string\n\t      default: $SHELL or \"/bin/sh\" or \"cmd\" (on MS-Windows)\n\t      Full path to the shell to use to run external commands.  On *nix\n\t      a shell argument can be supplied.\n\n       'shellcmdflag' 'shcf'\n\t      type: string\n\t      default: \"-c\" or \"/C\" (for cmd.exe on MS-Windows)\n\t      Command-line option used to pass a  command  to  'shell'.\t  It's\n\t      used in contexts where command comes from the user.\n\n       'shortmess' 'shm'\n\t      type: charset\n\t      default: \"p\"\n\t      Contains\ta  sequence  of single-character flags.\t Each flag en-\n\t      ables shortening of some message displayed by vifm in  the  TUI.\n\t      Flags:\n\t       -  L  - display only last directory in tab line instead of full\n\t      path.\n\t       - M - shorten titles in windows of terminal  multiplexers  cre-\n\t      ated by vifm down to file name instead of using full path.\n\t       -  T  -\ttruncate status-bar messages in the middle if they are\n\t      too long to fit on the command line.  \"...\" will appear  in  the\n\t      middle.\n\t       - p - use tilde shortening in view titles.\n\n\n       'showtabline' 'stal'\n\t      type: enumeration\n\t      default: multiple\n\t      Specifies when tab line should be displayed.  Possible values:\n\t       - never\t  - never display tab line\n\t       -  multiple  -  show  tab line only when there are at least two\n\t      tabs\n\t       - always\t  - display tab line always\n\n\t      Alternatively 0, 1 and 2 Vim-like values\tare also accepted  and\n\t      correspond to \"never\", \"multiple\" and \"always\" respectively.\n\n\n       'sizefmt'\n\t      type: string list\n\t      default: \"units:iec\"\n\t      Configures the way size is formatted in human-friendly way.\n\n\t\t  item\t\tvalue\t      meaning\n\t\t  units:\t iec\t\tUse 1024 byte units (K or KiB,\n\t      etc.).\n\t\t\t\t\t      See 'iec' option.\n\t\t\t\tsi\t      Use 1000 byte units (KB, etc.).\n\t\t  precision:\ti > 0\t      How many fraction digits to con-\n\t      sider.\n\t\t\t\t{not  set}     Precision of 1 for integer part\n\t      < 10,\n\t\t\t\t\t      0 otherwise (provides old behav-\n\t      iour).\n\t\t  space\t\t {present}\tInsert\tspace before unit sym-\n\t      bols.\n\t\t\t\t\t      This is the default.\n\t\t  nospace\t{present}     Do not insert space before  unit\n\t      symbols.\n\n\t      Numbers are rounded from zero.  Trailing zeros are dropped.\n\n\t      Example:\n\n\t\tset sizefmt=units:iec,precision:2,nospace\n\n\n       'slowfs'\n\t      type: string list\n\t      default: \"\"\n\t      only for *nix\n\t      A\t list of mounter fs name beginnings (first column in /etc/mtab\n\t      or /proc/mounts) or paths prefixes for fs/directories that  work\n\t      too  slow\t for  you.   This option can be used to stop vifm from\n\t      making some requests to particular kinds of  file\t systems  that\n\t      can  slow\t down file browsing.  Currently this means don't check\n\t      if directory has changed, skip check if target of symbolic links\n\t      exists,  assume  that link target located on slow fs to be a di-\n\t      rectory (allows entering directories and navigating to files via\n\t      gf).  If you set the option to \"*\", it means all the systems are\n\t      considered slow (useful for cygwin, where all the\t checks\t might\n\t      render vifm very slow if there are network mounts).\n\n\t      Example for autofs root /mnt/autofs:\n\n\t\tset slowfs+=/mnt/autofs\n\n       'smartcase' 'scs'\n\t      type: boolean\n\t      default: false\n\t      Overrides\t the  ignorecase option if the search pattern contains\n\t      at least one upper case character.  Only\tused  when  ignorecase\n\t      option is enabled.  It doesn't affect file filtering.\n\n       'sort' type: string list\n\t      default: +name on *nix and +iname on Windows\n\t      scope: local\n\t      Sets  list of sorting keys (first item is primary key, second is\n\t      secondary key, etc.):\n\t\t [+-]ext     - extension of files and directories\n\t\t [+-]fileext - extension of files only\n\t\t [+-]name    - name (including extension)\n\t\t [+-]iname   - name (including extension, ignores case)\n\t\t [+-]type\t\t -\t\tfile\t\t  type\n\t      (dir/reg/exe/link/char/block/sock/fifo)\n\t\t [+-]dir     - directory grouping (directory < file)\n\t\t [+-]gid     - group id (*nix only)\n\t\t [+-]gname   - group name (*nix only)\n\t\t [+-]mode    - file type derived from its mode (*nix only)\n\t\t [+-]perms   - permissions string (*nix only)\n\t\t [+-]uid     - owner id (*nix only)\n\t\t [+-]uname   - owner name (*nix only)\n\t\t [+-]nlinks  - number of hard links (*nix only)\n\t\t [+-]inode   - inode number (*nix only)\n\t\t [+-]size    - size\n\t\t [+-]nitems  - number of items in a directory (zero for files)\n\t\t [+-]groups  - groups extracted via regexps from 'sortgroups'\n\t\t [+-]target   -\t symbolic  link\t target\t (empty for other file\n\t      types)\n\t\t [+-]atime   - time accessed (e.g. read, executed)\n\t\t [+-]ctime   - time changed (changes in metadata, e.g. mode)\n\t\t [+-]mtime   - time modified (when file contents is changed)\n\n\t      Note: look for st_atime, st_ctime and st_mtime in \"man  2\t stat\"\n\t      for more information on time keys.\n\n\t      '+'  means ascending sort for this key, and '-' means descending\n\t      sort.\n\n\t      \"dir\" key is somewhat similar in this regard but it's added  im-\n\t      plicitly:\t when \"dir\" is not specified, sorting behaves as if it\n\t      was the first key in the list.  That's why if one wants  sorting\n\t      algorithm to mix directories and files, \"dir\" should be appended\n\t      to sorting option, for example like this:\n\n\t\tset sort+=dir\n\n\t      or\n\n\t\tset sort=-size,dir\n\n\t      Value of the option is checked to include dir  key  and  default\n\t      sorting key (name on *nix, iname on Windows).  Here is what hap-\n\t      pens if one of them is missing:\n\n\t\t- type key is added at the beginning;\n\n\t\t- default key is added at the end;\n\n\t      all other keys are left untouched (at most they are moved).\n\n\t      This option also changes view columns according to primary sort-\n\t      ing key set, unless 'viewcolumns' option is not empty.\n\n       'sortnumbers'\n\t      type: boolean\n\t      default: false\n\t      scope: local\n\t      Natural sort of (version) numbers within text.\n\n       'sortgroups'\n\t      type: string\n\t      default: \"\"\n\t      scope: local\n\t      Sets  comma-separated  list  of  regular\texpressions to use for\n\t      group sorting, double comma is literal comma.   Each  expression\n\t      should  contain  at least one group or its value will be consid-\n\t      ered to be always empty.\tOnly first match of each  regular  ex-\n\t      pression\tis  considered.\t  Groups  are considered from right to\n\t      first similar to 'sort', first group divides list of files  into\n\t      sub-groups,  each\t of which is sorted by the second group and so\n\t      on.\n\n\t      Example:\n\t\tset sortgroups=-(done|todo).*\n\t      this would put files with \"-done\" in their names above all files\n\t      with \"-todo\".\n\n       'sortorder'\n\t      type: enumeration\n\t      default: ascending\n\t      Sets sort order for primary key: ascending, descending.\n\n       'statusline' 'stl'\n\t      type: string\n\t      default: \"\"\n\t      Determines  the content of the status line (the line right above\n\t      command-line).  Empty string means use same format like in  pre-\n\t      vious versions.  Following macros are supported:\n\n\t      - %t - file name (considering value of the 'classify' option)\n\n\t      - %T - symbolic link target (empty for other filetypes)\n\n\t      - %f - file name relative to current directory (considers 'clas-\n\t\tsify')\n\n\t      - %A - file attributes (permissions on  *nix  or\tproperties  on\n\t\tWindows) %u - user name or uid (if it cannot be resolved)\n\n\t      - %g - group name or gid (if it cannot be resolved)\n\n\t      - %s - file size in human readable format\n\n\t      - %E  - size of selected files in human readable format, same as\n\t\t%s when no files are selected, except that it will never  show\n\t\tsize of ../ in visual mode, since it cannot be selected\n\n\t      - %d - file modification date (uses 'timefmt' option)\n\n\t      - %D - path of the other pane for single-pane layout\n\n\t      - %a - amount of free space available at current partition\n\n\t      - %z  -  short  tips/tricks/hints that chosen randomly after one\n\t\tminute period\n\n\t      - %{<expr>} - evaluate arbitrary vifm expression '<expr>',  e.g.\n\t\t'&sort'\n\n\t      - %*  -  resets or applies one of User1..User9 highlight groups;\n\t\treset happens when width field is 0 or not specified,  one  of\n\t\tgroups\tgets picked when width field is in the range from 1 to\n\t\t9\n\n\t      - all 'rulerformat' macros\n\n\t      Percent sign can be followed by optional\tminimum\t field\twidth.\n\t      Add '-' before minimum field width if you want field to be right\n\t      aligned.\n\n\t      On Windows file properties include the  following\t flags\t(upper\n\t      case means flag is on):\n\t       A - archive\n\t       H - hidden\n\t       I - content isn't indexed\n\t       R - readonly\n\t       S - system\n\t       C - compressed\n\t       D - directory\n\t       E - encrypted\n\t       P - reparse point (e.g. symbolic link)\n\t       Z - sparse file\n\n\t      Example without colors:\n\n\t\tset statusline=\"  %t%= %A %10u:%-7g %15s %20d %{&sort} \"\n\n\t      Example with colors:\n\n\t       highlight User1 ctermbg=yellow\n\t       highlight User2 ctermbg=blue ctermfg=white cterm=bold\n\t       set statusline=\"%1* %-26t %2* %= %1* %A %2* %7u:%-7g %1* %-5s %2* %d \"\n\n\n       'suggestoptions'\n\t      type: string list\n\t      default:\n\t      Controls\twhen, for what and how suggestions are displayed.  The\n\t      following values are available:\n\t       - normal\t\t - in normal mode;\n\t       - visual\t\t - in visual mode;\n\t       - view\t\t - in view mode;\n\t       - otherpane\t - use other pane to display suggestions, when\n\t      available;\n\t       - delay[:num]\t - display suggestions after a small delay (to\n\t      do not annoy if you just want to type a fast shortcut consisting\n\t      of  multiple  keys),  num\t specifies the delay in ms (500 by de-\n\t      fault), 'timeoutlen' at most;\n\t       - keys\t\t - include shortcuts (commands and selectors);\n\t       - foldsubkeys\t - fold multiple keys with common prefix;\n\t       - marks\t\t - include marks;\n\t       - registers[:num] - include registers, at most num files (5  by\n\t      default).\n\n       'syncregs'\n\t      type: string\n\t      default:\n\t      Specifies\t identifier of group of instances that share registers\n\t      between each other.  When several instances of  vifm  have  this\n\t      option  set  to  identical value, they automatically synchronize\n\t      contents of their registers on operations which use them.\n\n       'syscalls'\n\t      type: boolean\n\t      default: false\n\t      When disabled, vifm will rely on external applications  to  per-\n\t      form file-system operations, otherwise system calls are used in-\n\t      stead (much faster and supports progress tracking).  The\toption\n\t      should  eventually be removed.  Mostly *nix-like systems are af-\n\t      fected.\n\n       'tabscope'\n\t      type: enumeration\n\t      default: global\n\t      Picks style of tabs, which defines what a single\ttab  contains.\n\t      Possible values:\n\t       -  global - tab describes complete UI of two views and how they\n\t      are arranged\n\t       - pane\t- tab is located \"inside\" a pane and  manages  it  and\n\t      quick view\n\n       'tabstop' 'ts'\n\t      type: integer\n\t      default: value from curses library\n\t      Number of spaces that a Tab in the file counts for.\n\n       'timefmt'\n\t      type: string\n\t      default: \"%m/%d %H:%M\"\n\t      Format  of  time in file list.  See \"man 1 date\" or \"man 3 strf-\n\t      time\" for details.\n\n       'timeoutlen' 'tm'\n\t      type: integer\n\t      default: 1000\n\t      The time in milliseconds that is waited for a mapped key in case\n\t      of already typed key sequence is ambiguous.\n\n       'title'\n\t      type: boolean\n\t      default: true when title can be restored, false otherwise\n\t      When  enabled,  title  of the terminal or terminal multiplexer's\n\t      window is updated according to current  location.\t  Because  not\n\t      all  terminals support setting title, this works only if `$TERM`\n\t      value matches one of the following conditions:\n\t       - equals \"xterm\" or starts with \"xterm-\"\n\t       - equals \"rxvt\" or starts with \"rxvt-\"\n\t       - equals \"screen\" or starts with \"screen-\"\n\t       - equals \"aterm\"\n\t       - equals \"Eterm\"\n\n       'trash'\n\t      type: boolean\n\t      default: true\n\t      Use trash directory.  See \"Trash directory\" section below.\n\n       'trashdir'\n\t      type: string\n\t      default: on *nix:\n\t\t \"%r/.vifm-Trash-%u,$VIFM/Trash,%r/.vifm-Trash\"\n\t\t or if $VIFM/Trash doesn't exist\n\t\t \"%r/.vifm-Trash-%u,$XDG_DATA_HOME/vifm/Trash,%r/.vifm-Trash\"\n\t\t       on Windows:\n\t\t \"%r/.vifm-Trash,$XDG_DATA_HOME/vifm/Trash\"\n\t      List of trash directory path specifications, separated with com-\n\t      mas.   Each  list\t item either defines an absolute path to trash\n\t      directory or a path relative to a mount point root when list el-\n\t      ement  starts with \"%r/\".\t Value of the option can contain envi-\n\t      ronment variables (of form \"$envname\"), which will  be  expanded\n\t      (prepend\t$  with\t a  slash  to prevent expansion).  Environment\n\t      variables are expanded when the option is set.\n\n\t      On *nix, if element ends with \"%u\", the mark  is\treplaced  with\n\t      real  user  ID  and  permissions\tare set so that only that only\n\t      owner is able to use it.\n\t      Note that even this setup is not completely secure when combined\n\t      with  \"%r/\"  and it's overall safer to keep files in home direc-\n\t      tory, but that implies cost of copying files between partitions.\n\n\t      When new file gets cut (deleted) vifm traverses each element  of\n\t      the option in the order of their appearance and uses first trash\n\t      directory that  it  was  able  to\t create\t or  that  is  already\n\t      writable.\n\n\t      Default  value  tries to use trash directory per mount point and\n\t      falls back to ~/.vifm/Trash on failure.\n\n\t      Will attempt to create the directory if it does not exist.   See\n\t      \"Trash directory\" section below.\n\n       'tuioptions' 'to'\n\t      type: charset\n\t      default: \"ps\"\n\t      Each  flag  configures some aspect of TUI appearance.  The flags\n\t      are:\n\t      p - when included:\n\t\t* file list inside a pane  gets\t additional  single  character\n\t      padding on left and right sides;\n\t\t* quick view and view mode get single character padding.\n\t      s\t -  when included, left and right borders (side borders, hence\n\t      \"s\" character) are visible.\n\t      u - use Unicode characters in the TUI (Unicode ellipsis  instead\n\t      of \"...\").\n\n       'undolevels' 'ul'\n\t      type: integer\n\t      default: 100\n\t      Maximum  number  of  changes that can be undone.\tNote that here\n\t      single file operation is used as a  unit,\t not  operation,  i.e.\n\t      deletion of 101 files will exceed default limit.\n\n       'vicmd'\n\t      type: string\n\t      default: \"vim\"\n\t      Command  used to edit files in various contexts.\tAmpersand sign\n\t      at the end (regardless whether it's preceded by  space  or  not)\n\t      means backgrounding of command.\n\n\t      Background  flag\tis ignored in certain context where vifm waits\n\t      for the editor to finish.\t Such  contexts\t include  any  command\n\t      that  spawns  editor  to change list of file names or a command,\n\t      with :rename being one example.  `-f` is also appended  to  pre-\n\t      vent  forking  in such cases, so the command needs to handle the\n\t      flag.\n\n\t      Additionally `+{num}` and `+'call cursor()'` arguments are  used\n\t      to position cursor when location is known.\n\n       'viewcolumns'\n\t      type: string\n\t      default: \"\"\n\t      scope: local\n\t      Format string containing list of columns in the view.  When this\n\t      option is empty, view columns to show are\t chosen\t automatically\n\t      using sorting keys (see 'sort') as a base.  Value of this option\n\t      is ignored if 'lsview' is set.  See \"Column view\" section\t below\n\t      for format description.\n\n\t      An  example  of  setting the options for both panes (note :windo\n\t      command):\n\n\t\twindo set viewcolumns=-{name}..,6{size},11{perms}\n\n       'vixcmd'\n\t      type: string\n\t      default: value of 'vicmd'\n\t      Same as 'vicmd', but takes precedence over it when  running  in-\n\t      side a graphical environment.\n\n       'vifminfo'\n\t      type: set\n\t      default: bookmarks,bmarks\n\t      Controls what will be saved in the $VIFM/vifminfo file.\n\n\t\t bmarks\t   - named bookmarks\n\t\t bookmarks - marks, except special ones like '< and '>\n\t\t tui\t    -  state of the user interface (sorting, number of\n\t      windows, quick\n\t\t\t     view state, active view)\n\t\t dhistory  - directory history\n\t\t state\t   - file name and dot filters and terminal multiplex-\n\t      ers integration\n\t\t\t     state\n\t\t cs\t   - primary color scheme\n\t\t savedirs  - save last visited directory (requires dhistory)\n\t\t chistory  - command line history\n\t\t shistory  - search history (/ and ? commands)\n\t\t phistory  - prompt history\n\t\t fhistory   -  history of local filter (see description of the\n\t      \"=\" normal mode\n\t\t\t     command)\n\t\t dirstack  - directory stack overwrites previous stack, unless\n\t      stack of\n\t\t\t     current session is empty\n\t\t registers - registers content\n\t\t options   - all options that can be set with the :set command\n\t      (obsolete)\n\t\t filetypes - associated programs and viewers (obsolete)\n\t\t commands  - user defined commands (see :command  description)\n\t      (obsolete)\n\n       'vimhelp'\n\t      type: boolean\n\t      default: false\n\t      Use vim help format.\n\n       'wildmenu' 'wmnu'\n\t      type: boolean\n\t      default: false\n\t      Controls\twhether\t possible  matches of completion will be shown\n\t      above the command line.\n\n       'wildstyle'\n\t      type: enumeration\n\t      default: bar\n\t      Picks presentation style of wild menu.  Possible values:\n\t       - bar   - one-line with left-to-right cursor\n\t       - popup - multi-line with top-to-bottom cursor\n\n       'wordchars'\n\t      type: string list\n\t      default: \"1-8,14-31,33-255\" (that is all non-whitespace  charac-\n\t      ters)\n\t      Specifies\t which\tcharacters in command-line mode should be con-\n\t      sidered as part of a word.  Value of the option  is  comma-sepa-\n\t      rated  list of ranges.  If both endpoints of a range match, sin-\n\t      gle endpoint is enough (e.g. \"a\" = \"a-a\").  Both\tendpoints  are\n\t      inclusive.  There are two accepted forms: character representing\n\t      itself or number encoding character according  to\t ASCII\ttable.\n\t      In case of ambiguous characters (dash, comma, digit) use numeric\n\t      form.  Accepted characters are in the range from 0 to 255.   Any\n\t      Unicode character with code greater than 255 is considered to be\n\t      part of a word.\n\n\t      The option affects Alt-D, Alt-B and Alt-F, but not Ctrl-W.  This\n\t      is intentionally to allow two use cases:\n\n\t       - Moving by WORDS and deletion by words.\n\t       - Moving by words and deletion by WORDS.\n\n\t      To get the latter use the following mapping:\n\n\t\tcnoremap <c-w> <a-b><a-d>\n\n\t      Also used for abbreviations.\n\n       'wrap' type: boolean\n\t      default: true\n\t      Controls whether to wrap text in quick view.\n\n       'wrapscan' 'ws'\n\t      type: boolean\n\t      default: true\n\t      Searches wrap around end of the list.\n\nMappings\n       Map arguments\n\n       LHS  of\tmappings  can  be preceded by arguments which take the form of\n       special sequences:\n\n       <silent>\n\t      Postpone UI updates until RHS is completely processed.\n\n       <wait> In case of builtin mapping causing conflict for  a  user-defined\n\t      mapping  (e.g.,  `t`  builtin to a partially typed `ta` user-de-\n\t      fined mapping), ignore the builtin mapping and  wait  for\t input\n\t      indefinitely  as\topposed to default behaviour of triggering the\n\t      builtin mapping after a delay defined by 'timeoutlen'.  Example:\n\n\t\tnnoremap <wait> tw :set wrap!<cr>\n\t\tnnoremap <wait> tn :set number!<cr>\n\t\tnnoremap <wait> tr :set relativenumber!<cr>\n\n       Special sequences\n\n       Since it's not easy to enter special characters there are several  spe-\n       cial sequences that can be used in place of them.  They are:\n\n       <cr>   Enter key.\n\n       <esc>  Escape key.\n\n       <space>\n\t      Space key.\n\n       <lt>   Less-than character (<).\n\n       <nop>  provides a way to disable a mapping (by mapping it to <nop>).\n\n       <bs>   Backspace key (see key conflict description below).\n\n       <tab> <s-tab>\n\t      Tabulation and Shift+Tabulation keys.\n\n       <home> <end>\n\t      Home/End.\n\n       <left> <right> <up> <down>\n\t      Arrow keys.\n\n       <pageup> <pagedown>\n\t      PageUp/PageDown.\n\n       <del> <delete>\n\t      Delete  key.   <del>  and\t <delete>  mean\t different  codes, but\n\t      <delete> is more common.\n\n       <insert>\n\t      Insert key.\n\n       <c-a>,<c-b>,...,<c-z>,<c-[>,<c->,<c-]>,<c-^>,<c-_>\n\t      Control + some key (see key conflict description below).\n\n       <c-@>  only for *nix\n\t      Control + Space.\n\n       <a-a>,<a-b>,...,<a-z>\n\t      <m-a>,<m-b>,...,<m-z> Alt + some key.\n\n       <a-c-a>,<a-c-b>,...,<a-c-z>\n\t      <m-c-a>,<m-c-b>,...,<m-c-z> only for *nix\n\t      Alt + Ctrl + some key.\n\n       <f0> - <f63>\n\t      Functional keys.\n\n       <c-f1> - <c-f12>\n\t      only for MS-Windows\n\t      functional keys with Control key pressed.\n\n       <a-f1> - <a-f12>\n\t      only for MS-Windows\n\t      functional keys with Alt key pressed.\n\n       <s-f1> - <s-f12>\n\t      only for MS-Windows\n\t      functional keys with Shift key pressed.\n\n       Note that due to the way terminals process their\t input,\t several  key-\n       board keys might be mapped to single key code, for example:\n\n\t - <cr> and <c-m>;\n\n\t - <tab> and <c-i>;\n\n\t - <c-h> and <bs>;\n\n\t - etc.\n\n       Most  of\t the  time  they are defined consistently and don't cause sur-\n       prises, but <c-h> and <bs> are treated differently in  different\t envi-\n       ronments (although they match each other all the time), that's why they\n       correspond to different keys in vifm.  As a consequence, if you map <c-\n       h>  or <bs> be sure to repeat the mapping with the other one so that it\n       works in all environments.  Alternatively, provide your mapping in  one\n       form and add one of the following:\n\n\t \" if mappings with <c-h> in the LHS work\n\t map <c-h> <bs>\n\t \" if mappings with <bs> in the LHS work\n\t map <bs> <c-h>\n\n       Whitespace\n\n       vifm  removes  whitespace  characters  at the beginning and end of com-\n       mands.  That's why you may want to use <space> at the  end  of  rhs  in\n       mappings.  For example:\n\n\t cmap <f1> man<space>\n\n       will  put  \"man \" in line when you hit the <f1> key in the command line\n       mode.\n\nExpression syntax\n       Supported expressions is a subset of what VimL provides.\n\n       Expression syntax summary, from least to most significant:\n\n       expr1\t  expr2\n\t\t  expr2 || expr2 ..\t  logical OR\n\n       expr2\t  expr3\n\t\t  expr3 && expr3 ..\t  logical AND\n\n       expr3\t  expr4\n\t\t  expr4 == expr4\t  equal\n\t\t  expr4 != expr4\t  not equal\n\t\t  expr4 >  expr4\t  greater than\n\t\t  expr4 >= expr4\t  greater than or equal\n\t\t  expr4 <  expr4\t  smaller than\n\t\t  expr4 <= expr4\t  smaller than or equal\n\n       expr4\t  expr5\n\t\t  expr5 + expr5 ..\t  number addition\n\t\t  expr5 - expr5 ..\t  number subtraction\n\n       expr5\t  expr6\n\t\t  expr6 . expr6 ..\t  string concatenation\n\n       expr6\t  expr7\n\t\t  - expr6\t\t  unary minus\n\t\t  + expr6\t\t  unary plus\n\t\t  ! expr6\t\t  logical NOT\n\n       expr7\t  number\t\t  number constant\n\t\t  \"string\"\t\t  string constant, \\ is special\n\t\t  'string'\t\t  string constant, ' is doubled\n\t\t  &option\t\t  option value\n\t\t  $VAR\t\t\t  environment variable\n\t\t  v:var\t\t\t  builtin variable\n\t\t  function(expr1, ...)\t  function call\n\t\t  (expr1)\t\t  nested expression\n\n       \"..\" indicates that the operations in this level can be concatenated.\n\n       expr1\n       -----\n       expr2 || expr2\n\n       Arguments are converted to numbers before evaluation.\n\n       Result is non-zero if at least one of arguments is non-zero.\n\n       It's right associative and with\tshort-circuiting,  so  sub-expressions\n       are  evaluated  from  left to right until result of whole expression is\n       determined (i.e., until first non-zero) or end of the expression.\n\n       expr2\n       -----\n       expr3 && expr3\n\n       Arguments are converted to numbers before evaluation.\n\n       Result is non-zero only if both arguments are non-zero.\n\n       It's right associative and with\tshort-circuiting,  so  sub-expressions\n       are  evaluated  from  left to right until result of whole expression is\n       determined (i.e., until first zero) or end of the expression.\n\n       expr3\n       -----\n       expr4 {cmp} expr4\n\n       Compare two expr4 expressions, resulting in a  0\t if  it\t evaluates  to\n       false or 1 if it evaluates to true.\n\n       equal\t\t       ==\n       not equal\t       !=\n       greater than\t       >\n       greater than or equal   >=\n       smaller than\t       <\n       smaller than or equal   <=\n\n       Examples:\n\n\t 'a' ==\t 'a'\t     == 1\n\t 'a' >\t 'b'\t     == 1\n\t 'a' ==\t 'b'\t     == 0\n\t '2' >\t 'b'\t     == 0\n\t  2  >\t 'b'\t     == 1\n\t  2  >\t '1b'\t     == 1\n\t  2  >\t '9b'\t     == 0\n\t -1  == -'1'\t     == 1\n\t  0  ==\t '--1'\t     == 1\n\n       expr4\n       -----\n       expr5  +\t expr5 ..     number addition expr5 - expr5 ..\t   number sub-\n       traction\n\n       Examples:\n\n\t 1 + 3 - 3\t    == 1\n\t 1 + '2'\t    == 3\n\n       expr5\n       -----\n       expr6 . expr6 ..\t    string concatenation\n\n       Examples:\n\n\t 'a' . 'b'\t     == 'ab'\n\t 'aaa' . '' . 'c'    == 'aaac'\n\n       expr6\n       -----\n\n       - expr6\t\t    unary minus\n       + expr6\t\t    unary plus\n       ! expr6\t\t    logical NOT\n\n       For '-' the sign of the number is changed.\n       For '+' the number is unchanged.\n       For '!' non-zero becomes zero, zero becomes one.\n\n       A String will be converted to a Number first.\n\n       These operations can be repeated and mixed.  Examples:\n\n\t  --9\t\t     == 9\n\t ---9\t\t     == -9\n\t  -+9\t\t     == 9\n\t  !-9\t\t     == 0\n\t  !''\t\t     == 1\n\t !'x'\t\t     == 0\n\t  !!9\t\t     == 1\n\n       expr7\n       -----\n\n       number\t\t    number constant\n       -----\n\n       Decimal number.\tExamples:\n\n\t 0\t\t     == 0\n\t 0000\t\t     == 0\n\t 01\t\t     == 1\n\t 123\t\t     == 123\n\t 10000\t\t     == 10000\n\n       string\n       ------\n       \"string\"\t\t    string constant\n\n       Note that double quotes are used.\n\n       A string constant accepts these special characters:\n\t \\b\t backspace <bs>\n\t \\e\t escape <esc>\n\t \\n\t newline\n\t \\r\t return <cr>\n\t \\t\t tab <tab>\n\t \\\\\t backslash\n\t \\\"\t double quote\n\n       Examples:\n\n\t \"\\\"Hello,\\tWorld!\\\"\"\n\t \"Hi,\\nthere!\"\n\n       literal-string\n       --------------\n       'string'\t\t    string constant\n\n       Note that single quotes are used.\n\n       This string is taken as it is.  No backslashes are removed  or  have  a\n       special\tmeaning.   The only exception is that two quotes stand for one\n       quote.\n\n       Examples:\n\n\t 'All\\slashes\\are\\saved.'\n\t 'This string contains doubled single quotes ''here'''\n\n       option\n       ------\n       &option\t\t     option value (local one is preferred, if  exists)\n       &g:option\t      global  option value &l:option\t\t local\n       option value\n\n       Examples:\n\n\t echo 'Terminal size: '.&columns.'x'.&lines\n\t if &columns > 100\n\n       Any valid option name can be used here (note that \"all\" in  \":set  all\"\n       is a pseudo option).  See \":set options\" section above.\n\n       environment variable\n       --------------------\n       $VAR\t\t     environment variable\n\n       The  String value of any environment variable.  When it is not defined,\n       the result is an empty string.\n\n       Examples:\n\n\t 'This is my $PATH env: ' . $PATH\n\t 'vifmrc at ' . $MYVIFMRC . ' is used.'\n\n       builtin variable\n       --------------------\n       v:var\t\t     builtin variable\n\n       Information exposed by vifm for use in scripting.\n\n       v:count\n\t count passed to : command, 0 by default.  Can be used in mappings  to\n       pass\n\t count to a different command.\n       v:count1\n\t same as v:count, but 1 by default.\n       v:servername\n\t See below.\n\n       function call\n       -------------\n       function(expr1, ...)  function call\n\n       See \"Functions\" section below.\n\n       Examples:\n\n\t \"'\" . filetype('.') . \"'\"\n\t filetype('.') == 'reg'\n\n       expression nesting\n       ------------------\n       (expr1)\t\t     nested expression\n\n       Groups  any other expression of arbitrary complexity enforcing order in\n       which operators are applied.\n\n\nFunctions\n       USAGE\t\t     RESULT\t DESCRIPTION\n\n       chooseopt({opt})\t     String\t Queries choose parameters  passed  on\n       startup.\n       executable({expr})     Integer\t  Checks whether {expr} command avail-\n       able.\n       expand({expr})\t     String\t Expands special keywords in {expr}.\n       extcached({cache}, {path}, {extcmd})\n\t\t\t     String\t Caches output of {extcmd} per {cache}\n       and\n\t\t\t\t\t {path} combination.\n       filetype({fnum} [, {resolve}])\n\t\t\t     String\t Returns file type from position.\n       fnameescape({expr})   String\t Escapes {expr} for use in a :command.\n       getpanetype()\t     String\t Returns type of current pane.\n       has({property})\t      Integer\t   Checks  whether instance has {prop-\n       erty}.\n       layoutis({type})\t     Integer\t Checks\t whether  layout  is  of  type\n       {type}.\n       paneisat({loc})\t      Integer\t   Checks  whether  current pane is at\n       {loc}.\n       system({command})     String\t Executes shell\t command  and  returns\n       its output.\n       tabpagenr([{arg}])     Integer\t   Returns  number  of current or last\n       tab.\n       term({command})\t     String\t Like system(),\t but  for  interactive\n       commands.\n\n       chooseopt({opt})\n\n       Retrieves values of options related to file choosing.  {opt} can be one\n       of:\n\t   files      returns argument of --choose-files or empty string\n\t   dir\t      returns argument of --choose-dir or empty string\n\t   cmd\t      returns argument of --on-choose or empty string\n\t   delimiter  returns argument of --delimiter or the default one (\\n)\n\n       executable({expr})\n\n       If {expr} is absolute or relative path, checks whether path destination\n       exists  and  refers  to an executable, otherwise checks whether command\n       named {expr} is present in directories listed  in  $PATH.   Checks  for\n       various\texecutable  extensions\ton Windows.  Returns boolean value de-\n       scribing result of the check.\n\n       Example:\n\n\t \" use custom default viewer script if it's available and installed\n\t \" in predefined system directory, otherwise try to find it elsewhere\n\t if executable('/usr/local/bin/defviewer')\n\t     fileview * /usr/local/bin/defviewer %c\n\t else\n\t     if executable('defviewer')\n\t\t fileview * defviewer %c\n\t     endif\n\t endif\n\n       expand({expr})\n\n       Expands environment variables and macros in {expr} just like it's  done\n       for  command-line  commands.   Returns  a string.  See \"Command macros\"\n       section above.\n\n       Examples:\n\n\t \" percent sign\n\t :echo expand('%%')\n\t \" the last part of directory name of the other pane\n\t :echo expand('%D:t')\n\t \" $PATH environment variable (same as `:echo $PATH`)\n\t :echo expand('$PATH')\n\n       extcached({cache}, {path}, {extcmd})\n\n       Caches value of {extcmd} external command automatically updating it  as\n       necessary  based\t on  monitoring change date of a {path}.  The cache is\n       invalidated when file or its meta-data is updated.  A single  path  can\n       have multiple caches associated with it.\n\n       {path} value is normalized, but symbolic links in it aren't resolved.\n\n       Example:\n\n\t \" display number and size of blocks actually used by a file or directory\n\t set statusline+=\" Uses: %{ extcached('uses',\n\t\t\t\t\t     expand('%c'),\n\t\t\t\t\t     expand('stat --format=%%bx%%B %c')) }\"\n\n       filetype({fnum} [, {resolve}])\n\n       The  result  is\ta string, which represents file type and is one of the\n       list:\n\t   exe\t   executables\n\t   reg\t   regular files\n\t   link\t   symbolic links\n\t   broken  broken symbolic links (appears only when resolving)\n\t   dir\t   directories\n\t   char\t   character devices\n\t   block   block devices\n\t   fifo\t   pipes\n\t   sock\t   *nix domain sockets\n\t   ?\t   unknown file type (should not normally appear)\n\n       The result can also be an empty string in case of invalid argument.\n\n       Parameter {fnum} can have following values:\n\t   - '.' to get type of file under the cursor in the active pane\n\t   - numerical value base 1 to get type of file on specified line num-\n       ber\n\n       Optional\t parameter  {resolve}  is  treated  as a boolean and specifies\n       whether symbolic links should be resolved.\n\n       fnameescape({expr})\n\n       Escapes parameter to make it suitable for use as an argument of a :com-\n       mand.  List of escaped characters includes %, which is doubled.\n\n       Usage example:\n\n\t \" navigate to most recently modified file in current directory\n\t execute 'goto' fnameescape(system('ls -t | head -1'))\n\n       getpanetype()\n\n       Retrieves string describing type of current pane.  Possible return val-\n       ues:\n\t   regular\tregular file listing of some directory\n\t   custom\tcustom file list (%u)\n\t   very-custom\tvery custom file list (%U)\n\t   tree\t\ttree view\n\n       has({property})\n\n       Allows examining internal parameters from scripts to  e.g.  figure  out\n       environment  in which application is running.  Returns 1 if property is\n       true/present, otherwise 0 is returned.  Currently the following proper-\n       ties are supported (anything else will yield 0):\n\t   unix\t runs in *nix-like environment (including Cygwin)\n\t   win\t runs on Windows\n\n       Usage example:\n\n\t \" skip user/group on Windows\n\t if !has('win')\n\t     let $RIGHTS = '%10u:%-7g '\n\t endif\n\n\t execute 'set' 'statusline=\"  %t%= %A '.$RIGHTS.'%15E %20d  \"'\n\n       layoutis({type})\n\n       Checks  whether current interface layout is {type} or not, where {type}\n       can be:\n\t   only\t   single-pane mode\n\t   split   double-pane mode (either vertical or horizon split)\n\t   vsplit  vertical split (left and right panes)\n\t   hsplit  horizontal split (top and bottom panes)\n\n       Usage example:\n\n\t \" automatically split vertically before enabling preview\n\t :nnoremap w :if layoutis('only') | vsplit | endif | view!<cr>\n\n       paneisat({loc})\n\n       Checks whether position of active pane in current layout matches one of\n       the following locations:\n\t   top\t   pane reaches top border\n\t   bottom  pane reaches bottom border\n\t   left\t   pane reaches left border\n\t   right   pane reaches right border\n\n       system({command})\n\n       Runs  the command in shell and returns its output (joined standard out-\n       put and standard error streams).\t All trailing newline  characters  are\n       stripped\t to allow easy appending to command output.  Ctrl-C should in-\n       terrupt the command.\n\n       Use this function to consume output of external commands that don't re-\n       quire  user  interaction\t and term() for interactive commands that make\n       use of terminal and are capable of handling stream redirection.\n\n       Usage example:\n\n\t \" command to enter .git/ directory of git-repository (when ran inside one)\n\t command! cdgit :execute 'cd' system('git rev-parse --git-dir')\n\n       tabpagenr([{arg}])\n\n       When called without arguments returns number of current tab  page  base\n       one.\n\n       When called with \"$\" as an argument returns number of the last tab page\n       base one, which is the same as number of tabs.\n\n       term({command})\n\n       Same as system() function, but user interface is\t shutdown  during  the\n       execution  of  the  command, which makes sure that external interactive\n       applications won't affect the way terminal is used by vifm.\n\n       Usage example:\n\n\t \" command to change directory by picking it via fzf\n\t command! fzfcd :execute 'cd' \"'\".term('find -type d | fzf 2> /dev/tty').\"'\"\n\nMenus and dialogs\n       When navigating to some path from a menu there is a difference  in  end\n       location\t depending  on\twhether path has trailing slash or not.\t Files\n       normally don't have trailing slashes so \"file/\" won't work and one  can\n       only  navigate  to  a  file anyway.  On the other hand with directories\n       there are two options: navigate to a directory or inside of it.\tTo al-\n       low  both  use cases, the first one is used on paths like \"dir\" and the\n       second one for \"dir/\".\n\n       Commands\n\n       :range navigate to a menu line.\n\n       :exi[t][!] :q[uit][!] :x[it][!]\n\t      leave menu mode.\n\n       :noh[lsearch]\n\t      reset search match highlighting.\n\n       :w[rite] {dest}\n\t      write all menu lines into file specified by {dest}.\n\n       General\n\n       j, Ctrl-N - move down.\n       k, Ctrl-P - move up.\n       Enter, l - select and exit the menu.\n       Ctrl-L - redraw the menu.\n\n       Escape, Ctrl-C, ZZ, ZQ, q - quit.\n\n       In all menus\n\n       The following set of keys has the same meaning as in normal mode.\n\n       Ctrl-B, Ctrl-F\n       Ctrl-D, Ctrl-U\n       Ctrl-E, Ctrl-Y\n       /, ?\n       n, N\n       [count]G, [count]gg\n       H, M, L\n       zb, zt, zz\n\n       zh - scroll menu items [count] characters to the right.\n       zl - scroll menu items [count] characters to the left.\n       zH - scroll menu items half of screen width characters to the right.\n       zL - scroll menu items half of screen width characters to the left.\n\n       : - enter command line mode for menus (currently only :exi[t], :q[uit],\n       :x[it] and :{range} are supported).\n\n       b - interpret content of the menu as list of paths and use it to create\n       custom view in place of previously active  pane.\t  See  \"Custom\tviews\"\n       section below.\n       B - same as above, but creates unsorted view.\n\n       v  - load menu content into quickfix list of the editor (Vim compatible\n       by assumption) or if list doesn't  have\tseparators  after  file\t names\n       (colons) open each line as a file name.\n\n\n       Below  is  description of additional commands and reaction on selection\n       in some menus and dialogs.\n\n       Apropos menu\n\n       Selecting menu item runs man on a given topic.  Menu  won't  be\tclosed\n       automatically to allow view several pages one by one.\n\n       Command-line mode abbreviations menu\n\n       Type dd on an abbreviation to remove it.\n\n       c  leaves menu preserving file selection and inserts right-hand side of\n       selected command into command-line.\n\n       Color scheme menu\n\n       Selecting name of a color scheme applies it the same way as  if\t\":col-\n       orscheme <name>\" was executed on the command-line.\n\n       Commands menu\n\n       Selecting command executes it with empty arguments (%a).\n\n       dd on a command to remove.\n\n       Marks menu\n\n       Selecting mark navigates to it.\n\n       dd on a mark to remove it.\n\n       Bookmarks menu\n\n       Selecting a bookmark navigates to it.\n\n       Type dd on a bookmark to remove it.\n\n       gf and e also work to make it more convenient to bookmark files.\n\n       Trash (:lstrash) menu\n\n       r on a file name to restore it from trash.\n\n       dd deletes file under the cursor.\n\n       Trashes menu\n\n       dd empties selected trash in background.\n\n       Directory history and Trashes menus\n\n       Selecting  directory  name will change directory of the current view as\n       if :cd command was used.\n\n       Directory stack menu\n\n       Selecting directory name will rotate stack to  put  selected  directory\n       pair at the top of the stack.\n\n       Filetype menu\n\n       Commands from vifmrc or typed in command-line are displayed above empty\n       line.  All commands below empty line are from .desktop files.\n\n       c leaves menu preserving file selection and inserts command after :! in\n       command-line mode.\n\n       Grep, find, locate, bookmarks and user menu with navigation (%M macro)\n\n       gf  -  navigate\tpreviously  active  view  to  currently selected item.\n       Leaves menu mode except for grep menu.  Pressing Enter key has the same\n       effect.\n\n       e - open selected path in the editor, stays in menu mode.\n\n       c  - leave menu preserving file selection and insert file name after :!\n       in command-line mode.\n\n       User menu without navigation (%m macro)\n\n       c leaves menu preserving file selection and inserts whole line after :!\n       in command-line mode.\n\n       Grep menu\n\n       Selecting  file\t(via Enter or l key) opens it in editor set by 'vicmd'\n       at given line number.  Menu won't  be  closed  automatically  to\t allow\n       viewing more than one result.\n\n       See above for \"gf\" and \"e\" keys description.\n\n       Command-line history menu\n\n       Selecting  an item executes it as command-line command, search query or\n       local filter.\n\n       c leaves menu preserving file selection and inserts line into  command-\n       line of appropriate kind.\n\n       Volumes menu\n\n       Selecting  a drive navigates previously active pane to the root of that\n       drive.\n\n       Fileinfo dialog\n\n       Enter, q - close dialog\n\n       Sort dialog\n\n       h, Space - switch ascending/descending.\n       q - close dialog\n\n       One shortcut per sorting key (see the dialog).\n\n       Attributes (permissions or properties) dialog\n\n       h, Space - check/uncheck.\n       q - close dialog\n\n       Item states:\n\n       - * - checked flag.\n\n       - X - means that it has different value for files in selection.\n\n       - d (*nix only) - (only for execute flags) means u-x+X, g-x+X or\t o-x+X\n\t argument  for\tthe  chmod program.  If you're not on OS X and want to\n\t remove execute permission bit from all files, but preserve it for di-\n\t rectories,  set  all execute flags to 'd' and check 'Set Recursively'\n\t flag.\n\n       Jobs menu\n\n       dd requests cancellation of job under cursor.  The job won't be removed\n       from  the list, but marked as being cancelled (if cancellation was suc-\n       cessfully requested).  A message will pop up if\tthe  job  has  already\n       stopped.\t  Note\tthat on Windows cancelling external programs like this\n       might not work, because their parent shell doesn't have any windows.\n\n       e key displays errors of selected job if any were collected.  They  are\n       displayed  in a new menu, but you can get back to jobs menu by pressing\n       h.\n\n\n       Undolist menu\n\n       r - reset undo position to group under the cursor.\n\n\n       Media menu\n\n       Selecting a device either mounts (if it wasn't mounted  yet)  or\t navi-\n       gates to its first mount point.\n\n       Selecting a mount point navigates to it.\n\n       Selecting \"not mounted\" line causes mounting.\n\n       Selecting any other line does nothing.\n\n       r - reload the list.\n\n       m  -  mount/unmount  device (cursor should be positioned on lines under\n       device information).\n\n       [ - put cursor on the previous device.\n\n       ] - put cursor on the next device.\n\n\nCustom views\n       Definition\n\n       Normally file views contain list of files from a single directory,  but\n       sometimes  it's\tuseful to populate them with list of files that do not\n       belong to the same directory, which is what custom views are for.\n\n       Presentation\n\n       Custom views are still related to directory they were in before\tcustom\n       list  was  loaded.   Path to that directory (original directory) can be\n       seen in the title of a custom view.\n\n       Files in same directory have to be named differently, this doesn't hold\n       for custom views thus seeing just file names might be rather confusing.\n       In order to give an idea where files come from and when possible, rela-\n       tive  paths  to\toriginal directory of the view is displayed, otherwise\n       full path is used instead.\n\n       Custom views normally don't contain any inexistent files.\n\n       Navigation\n\n       Custom views have some differences related  to  navigation  in  regular\n       views.\n\n       gf  - acts similar to gf on symbolic links and navigates to the file at\n       its real\n\t    location.\n\n       h - go to closes parent node in tree  view,  otherwise  return  to  the\n       original directory.\n\n       gh - return to the original directory.\n\n       Opening \"..\" entry also causes return to the original directory.\n\n       History\n\n       Custom  list exists only while it's visible, once left one can't return\n       to it, so there is no appearances of it in any history.\n\n       Filters\n\n       Only local filter affects content of the view.\tThis  is  intentional,\n       presumably  if  one loads list, precisely that list should be displayed\n       (except for inexistent paths, which are ignored).\n\n       Search\n\n       Although directory names are visible in listing, they are  not  search-\n       able.   Only file names are taken into account (might be changed in fu-\n       ture, searching whole lines seems quite reasonable).\n\n       Sorting\n\n       Contrary to search sorting by name works on whole visible part of  file\n       path.\n\n       Highlight\n\n       Whole  file name is highlighted as one entity, even if there are direc-\n       tory elements.\n\n       Updates\n\n       Reloads can occur, though they are not automatic\t due  to  files\t being\n       scattered  among\t different  places.  On a reload, inexistent files are\n       removed and meta-data of all other files is updated.\n\n       Once custom view forgets about the file, it won't add it back  even  if\n       it's created again.  So not seeing file previously affected by an oper-\n       ation, which was undone is normal.\n\n       Operations\n\n       All operations that add files are forbidden for custom views.  For  ex-\n       ample,  moving/copying/putting  files  into a custom view doesn't work,\n       because it doesn't make much sense.\n\n       On the other hand, operations that use files of\ta  custom  view\t as  a\n       source  (e.g. yanking, copying, moving file from custom view, deletion)\n       and operations that modify names are all allowed.\n\nCompare views\n       Kinds\n\n       :compare can produce four different results depending on arguments:\n\t- single compare view (ofone and either listall or listdups);\n\t- single custom view (ofone and listunique);\n\t- two compare views (ofboth and either listall or listdups);\n\t- two custom views (ofboth and listunique).\n\n       The first two display files of one file system tree.   Here  duplicates\n       are  files that have at least one copy in the same tree.\t The other two\n       kinds of operation compare two trees, in\t which\tduplicates  are\t files\n       that are found in both trees.\n\n       Lists of unique files are presented in custom views because there is no\n       file grouping to preserve as all file ids are  guaranteed  to  be  dis-\n       tinct.\n\n       Creation\n\n       Arguments  passed  to  :compare\tform four categories each with its own\n       prefix and is responsible for particular property of operation.\n\n       Which files to compare:\n\t- ofboth - compares files of two panes against each other;\n\t- ofone\t - compares files of the same directory.\n\n       How files are compared:\n\t- byname     - by their name only;\n\t- bysize     - only by their size;\n\t- bycontents - by combination of size and hash of file contents.\n\n       Which files to display:\n\t- listall    - all files;\n\t- listunique - unique files only;\n\t- listdups   - only duplicated files.\n\n       How results are grouped (has no effect if \"ofone\" specified):\n\t- groupids   - files considered identical are always adjacent in  out-\n       put;\n\t-  grouppaths  -  file system ordering is preferred (this also enables\n       displaying identically named files as mismatches).\n\n       Which files to omit:\n\t- skipempty - ignore empty files.\n\n       Each argument can appear multiple times, the rightmost one of the group\n       is considered.  Arguments alter default behaviour instead of substitut-\n       ing it.\n\n       Examples\n\n       The defaults corresponds to probably the most common use case  of  com-\n       paring  files in two trees with grouping by paths, so the following are\n       equivalent:\n\n\t :compare\n\t :compare bycontents grouppaths\n\t :compare bycontents listall ofboth grouppaths\n\n       Another use case is to find duplicates in the current sub-tree:\n\n\t :compare listdups ofone\n\n       The following command lists files that are unique to each pane:\n\n\t :compare listunique\n\n       Look\n\n       The view can't switch to ls-like view as it's unable to\tdisplay\t diff-\n       like data.\n\n       Comparison  views  have\tsecond column displaying id of the file, files\n       with same id are considered to be equal.\t The view  columns  configura-\n       tion is predefined.\n\n       Behaviour\n\n       When  two  views\t are  being  compared against each other the following\n       changes to the regular behaviour apply:\n\t- views are scrolled synchronously (as if 'scrollbind' was set);\n\t- views' cursors are synchronized;\n\t- local filtering is disabled (its results wouldn't be meaningful);\n\t- zd excludes groups of adjacent identical files, 1zd gives usual  be-\n       haviour;\n\t- sorting is permanently disabled (ordering is fixed);\n\t- removed files hide their counter pairs;\n\t- exiting one of the views terminates the other immediately;\n\t- renaming files isn't blocked, but isn't taken into account and might\n       require regeneration of comparison;\n\t- entries which indicate absence of equivalent file have  empty\t names\n       and can be matched as such;\n\t-  when\t unique\t files\tof  both  views are listed custom views can be\n       empty, this absence of unique files is stated clearly.\n\n       One compare view has similar properties (those that are applicable  for\n       single pane).\n\n       Files are gathered in this way:\n\t- recursively starting at current location of the view;\n\t-  dot files are excluded if view hides them at the moment of compari-\n       son;\n\t- directories are not taken into account;\n\t- symbolic links to directories are ignored.\n\nStartup\n       On startup vifm determines several variables that are used  during  the\n       session.\t They are determined in the order they appear below.\n\n       On  *nix\t systems $HOME is normally present and used as is.  On Windows\n       systems vifm tries to find correct home directory in the following  or-\n       der:\n\t- $HOME variable;\n\t- $USERPROFILE variable (on Windows only);\n\t-  a  combination  of  $HOMEDRIVE  and $HOMEPATH variables (on Windows\n       only).\n\n       vifm tries to find correct configuration directory by checking the fol-\n       lowing places:\n\t- $VIFM variable;\n\t- parent directory of the executable file (on Windows only);\n\t- $HOME/.vifm directory;\n\t- $APPDATA/Vifm directory (on Windows only);\n\t- $XDG_CONFIG_HOME/vifm directory;\n\t- $HOME/.config/vifm directory.\n\n       vifm tries to find correct configuration file by checking the following\n       places:\n\t- $MYVIFMRC variable;\n\t- vifmrc in parent directory of the executable file (on Windows only);\n\t- $VIFM/vifmrc file.\n\nConfigure\n       See \"Startup\" section above for the explanations\t on  $VIFM  and\t $MYV-\n       IFMRC.\n\n       The  vifmrc  file  contains  commands  that  will  be  executed on vifm\n       startup.\t There are two such files: global and local.  Global one is at\n       {prefix}/etc/vifm/vifmrc,  see  $MYVIFMRC  variable description for the\n       search algorithm used to find local vifmrc.  Global  vifmrc  is\tloaded\n       before  the local one, so that the later one can redefine anything con-\n       figured globally.\n\n       Use vifmrc to set settings, mappings, filetypes etc.  To use multi line\n       commands\t precede  each next line with a slash (whitespace before slash\n       is ignored, but all spaces at the end of the lines are saved).  For ex-\n       ample:\n\n\t set\n\t     \\smartcase\n\n       equals \"setsmartcase\".  When\n\n\t set<space here>\n\t     \\ smartcase\n\n       equals \"set  smartcase\".\n\n       The  $VIFM/vifminfo file contains session settings.  You may edit it by\n       hand to change the settings, but it's not recommended to do that,  edit\n       vifmrc  instead.\t  You  can  control  what  settings  will  be saved in\n       vifminfo by setting 'vifminfo' option.  Vifm always writes this file on\n       exit  unless  'vifminfo'\t option is empty.  Marks, bookmarks, commands,\n       histories, filetypes, fileviewers and registers in the file are\tmerged\n       with vifm configuration (which has bigger priority).\n\n       Generally,  runtime  configuration  has bigger priority during merging,\n       but there are some exceptions:\n\n\t - directory stack stored in the file is not overwritten unless\t some-\n\t   thing is changed in vifm session that performs merge;\n\n\t - each\t mark  or  bookmark  is marked with a timestamp, so that newer\n\t   value is not overwritten by older one, thus no matter from where it\n\t   comes, the newer one wins.\n\n       The  $VIFM/scripts  directory can contain shell scripts.\t vifm modifies\n       its PATH environment variable to let user  run  those  scripts  without\n       specifying  full path.  All subdirectories of the $VIFM/scripts will be\n       added to PATH too.  Script in a subdirectory overlaps script  with  the\n       same name in all its parent directories.\n\n       The  $VIFM/colors/  and\t{prefix}/etc/vifm/colors/  directories contain\n       color schemes.  Available color schemes are searched in that order,  so\n       on name conflict the one in $VIFM/colors/ wins.\n\n       Each  color scheme should have \".vifm\" extension.  This wasn't the case\n       before and for this reason the following rules apply during lookup:\n\n\t - if there is no file with .vifm extension,  all  regular  files  are\n\t   listed;\n\n\t - otherwise  only files with .vifm extension are listed (with the ex-\n\t   tension being truncated).\n\nAutomatic FUSE mounts\n       vifm has a builtin support of automated FUSE file system mounts.\t It is\n       implemented  using  file\t associations  mechanism.  To enable automated\n       mounts, one needs to use a specially formatted program line in filetype\n       or  filextype  commands.\t  These\t use special macros, which differ from\n       macros in commands unrelated to FUSE.  Currently three formats are sup-\n       ported:\n\n       1)  FUSE_MOUNT  This format should be used in case when all information\n       needed for mounting all files of a particular type is the  same.\t  E.g.\n       mounting of tar files don't require any file specific options.\n\n       Format line:\n\t FUSE_MOUNT|mounter %SOURCE_FILE %DESTINATION_DIR [%FOREGROUND]\n\n       Example filetype command:\n\n\t :filetype FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR\n\n       2)  FUSE_MOUNT2 This format allows one to use specially formatted files\n       to perform mounting and is useful for mounting remotes, for example re-\n       mote file systems over ftp or ssh.\n\n       Format line:\n\t FUSE_MOUNT2|mounter %PARAM %DESTINATION_DIR [%FOREGROUND]\n\n       Example filetype command:\n\n\t :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR\n\n       Example file content:\n\n\t root@127.0.0.1:/\n\n       3) FUSE_MOUNT3\n\n       This  format  is equivalent to FUSE_MOUNT, but omits unmounting.\t It is\n       useful for cases, when unmounting isn't needed, like when using AVFS.\n\n       Example :filetype command:\n\n\t :filetype *.tar,*.tar.bz2,*.tbz2,*.tgz,*.tar.gz,*.tar.xz,*.txz,*.deb\n\t      \\ {Mount with avfs}\n\t      \\ FUSE_MOUNT3|mount-avfs %DESTINATION_DIR %SOURCE_FILE\n\n       Example `mount-avfs` helper script:\n\n\t #!/bin/sh\n\n\t dest=$1\n\t file=$2\n\n\t rmdir \"$dest\"\n\t ln -s \"$HOME/.avfs$file#/\" \"$dest\"\n\n       All % macros are expanded by vifm at runtime  and  have\tthe  following\n       meaning:\n\t - %SOURCE_FILE is replaced by full path to selected file;\n\t - %DESTINATION_DIR is replaced by full path to mount directory, which\n       is created by vifm basing on the value of 'fusehome' option;\n\t - %PARAM value is filled from the first line of  file\t(whole\tline),\n       though in the future it can be changed to whole file content;\n\t -  %FOREGROUND\t means that you want to run mount command as a regular\n       command (required to be able to provide input  for  communication  with\n       mounter in interactive way).\n\n       %FOREGROUND  is an optional macro.  Other macros are not mandatory, but\n       mount commands likely won't work without them.\n\n       %CLEAR is obsolete name of %FOREGROUND, which is still  supported,  but\n       might be removed in future.  Its use is discouraged.\n\n       Unlike  macros  elsewhere,  these are recognized only if they appear at\n       the end of a command or are followed by a space.\t There is  no  way  to\n       escape  % either.  These are historical limitations, which might be ad-\n       dressed in the future.\n\n       The mounted FUSE file systems will be automatically  unmounted  in  two\n       cases:\n\n\t - when vifm quits (with ZZ, :q, etc. or when killed by signal);\n\n\t - when you explicitly leave mount point going up to its parent direc-\n\t   tory (with h, Enter on \"../\" or \":cd ..\") and other pane is not  in\n\t   the same directory or its child directories.\n\nView look\n       vifm supports displaying of file list view in two different ways:\n\n\t - in  a  table\t mode,\twhen  multiple columns can be set using 'view-\n\t   columns' option (see \"Column view\" section below for details);\n\n\t - in a multicolumn list manner which looks almost like `ls  -x`  com-\n\t   mand output (see \"ls-like view\" section below for details).\n\n       The  look is local for each view and can be chosen by changing value of\n       the 'lsview' boolean option.\n\n       Depending on view look some of keys change their meaning to allow  more\n       natural cursor moving.  This concerns mainly h, j, k, l and other simi-\n       lar navigation keys.\n\n       Also some of options can be ignored if they don't affect view  display-\n       ing in selected look.  For example value of 'viewcolumns' when 'lsview'\n       is set.\n\nls-like view\n       When this view look is enabled by setting 'lsview' option on, vifm will\n       display\tfiles  in  multiple columns.  Number of columns depends on the\n       length of the longest file name present in  current  directory  of  the\n       view.   Whole  file list is automatically reflowed on directory change,\n       terminal or view resize.\n\n       View looks close to output of `ls -x` command, so files are listed left\n       to right in rows.\n\n       In  this\t mode file manipulation commands (e.g. d) don't work line-wise\n       like they do in Vim, since such operations would be uncommon  for  file\n       manipulation  tasks.   Thus,  for  example, dd will remove only current\n       file.\n\n       By default the view is filled by lines, 'lsoptions' can be used to  get\n       filling by columns.\n\n       Note that tree-view and compare view inhibit ls-like view.\n\nColumn view\n       View columns are described by a comma-separated list of column descrip-\n       tions, each of which has the following format\n\t   [ '-' ] [ fw ( [ '.' tw ] | '%' ) ] '{' type '}' '.'{0,3}\n       where fw stands for full width and tw stands for text width.\n\n       So it basically consists of four parts:\n\t1. Optional alignment specifier\n\t2. Optional width specifier\n\t3. Mandatory column name\n\t4. Optional cropping specifier\n\n       Alignment specifier\n\n       It's an optional minus or asterisk sign as  the\tfirst  symbol  of  the\n       string.\n\n       Specifies type of text alignment within a column.  Three types are sup-\n       ported:\n\n       - left align\n\n\t   set viewcolumns=-{name}\n\n       - right align (default)\n\n\t   set viewcolumns={name}\n\n       - dynamic align\n\n\t It's like left alignment, but when the text is bigger than  the  col-\n\t umn,  the alignment is made at the right (so the part of the field is\n\t always visible).\n\n\t   set viewcolumns=*{name}\n\n       Width specifier\n\n       It's a number followed by a  percent  sign,  two\t numbers  (second  one\n       should  be less than or equal to the first one) separated with a dot or\n       a single number.\n\n       Specifies column width and its units. There are three size types:\n\n       - absolute size - column width is specified in characters\n\n\t   set viewcolumns=-100{name},20.15{ext}\n\n\t results in two columns with lengths of 100  and  20  and  a  reserved\n\t space of five characters on the left of second column.\n\n       - relative  (percent)  size  - column width is specified in percents of\n\t view width\n\n\t   set viewcolumns=-80%{name},15%{ext},5%{mtime}\n\n\t results in three columns with lengths of 80/100, 15/100 and 5/100  of\n\t view width.\n\n       - auto size (default) - column width is automatically determined\n\n\t   set viewcolumns=-{name},{ext},{mtime}\n\n\t results  in  three  columns  with  length of one third of view width.\n\t There is no size adjustment to content, since it will slow down  ren-\n\t dering.\n\n       Columns\tof  different  sizing  types  can be freely mixed in one view.\n       Though sometimes some of columns can be seen partly  or\tbe  completely\n       invisible if there is not enough space to display them.\n\n       Column name\n\n       This is just a sort key surrounded with curly braces or {root}, e.g.\n\n\t {name},{ext},{mtime}\n\n       {name}  and  {iname} keys are the same and present both for consistency\n       with 'sort' option.\n\n       Following keys don't have corresponding sorting keys:\n\n\t - {root}     - display name without extension (as  a  complement  for\n\t   {ext})\n\n\t - {fileroot} - display name without extension for anything except for\n\t   directories and symbolic links to directories (as a complement  for\n\t   {fileext})\n\n       Empty  curly braces ({}) are replaced with the default secondary column\n       for primary sort key. So after the next command view will be  displayed\n       almost  as if 'viewcolumns' is empty, but adding ellipsis for long file\n       names:\n\n\t set viewcolumns=-{name}..,6{}.\n\n       Cropping specifier\n\n       It's from one to three dots after closing curly brace in column format.\n\n       Specifies type of text truncation if it\tdoesn't\t fit  in  the  column.\n       Currently three types are supported:\n\n\t - truncation - text is truncated\n\n\t     set viewcolumns=-{name}.\n\n\t   results  in\ttruncation  of\tnames that are too long too fit in the\n\t   view.\n\n\t - adding of ellipsis - ellipsis on the left or right are  added  when\n\t   needed\n\n\t     set viewcolumns=-{name}..\n\n\t   results  in\tthat  ellipsis\tare  added at the end of too long file\n\t   names.\n\n\t - none (default) - text can pass column boundaries\n\n\t     set viewcolumns=-{name}...,{ext}\n\n\t   results in that long file names can partially be written on the ext\n\t   column.\n\nColor schemes\n       The color schemes in vifm can be applied in two different ways:\n\n\t - as the primary color scheme;\n\n\t - as local to a pane color scheme.\n\n       Both types are set using :colorscheme command, but of different forms:\n\n\t - :colorscheme color_scheme_name - for the primary color scheme;\n\n\t - :colorscheme color_scheme_name directory - for local color schemes.\n\n       Look  of different parts of the TUI (Text User Interface) is determined\n       in this way:\n\n\t - Border, TabLine,  TabLineSel,  TopLineSel,  TopLine,\t CmdLine,  Er-\n\t   rorMsg, StatusLine, JobLine, SuggestBox and WildMenu are always de-\n\t   termined by the primary color scheme;\n\n\t - CurrLine, Selected, Directory, Link,\t BrokenLink,  Socket,  Device,\n\t   Executable,\tFifo, CmpMismatch, Win, AuxWin and OtherWin are deter-\n\t   mined by primary color scheme and a set  of\tlocal  color  schemes,\n\t   which can be empty.\n\n       There might be a set of local color schemes because they are structured\n       hierarchically according to file system structure. For example,\thaving\n       the following piece of file system:\n\n\t ~\n\t `-- bin\n\t    |\n\t    `-- my\n\n       Two color schemes:\n\n\t # ~/.vifm/colors/for_bin\n\t highlight Win cterm=none ctermfg=white ctermbg=red\n\t highlight CurrLine cterm=none ctermfg=red ctermbg=black\n\n\t # ~/.vifm/colors/for_bin_my\n\t highlight CurrLine cterm=none ctermfg=green ctermbg=black\n\n       And these three commands in the vifmrc file:\n\n\t colorscheme Default\n\t colorscheme for_bin ~/bin\n\t colorscheme for_bin_my ~/bin/my\n\n       File list will look in the following way for each level:\n\n       - ~/ - Default color scheme\n\t black background\n\t cursor with blue background\n\n       - ~/bin/ - mix of Default and for_bin color schemes\n\t red background\n\t cursor with black background and red foreground\n\n       - ~/bin/my/ - mix of Default, for_bin and for_bin_my color schemes\n\t red background\n\t cursor with black background and green foreground\n\nTrash directory\n       vifm has support of trash directory, which is used as temporary storage\n       for deleted files or files that were cut.  Using trash is controlled by\n       the  'trash'  option,  and  exact  path\tto  the\t trash can be set with\n       'trashdir' option.  Trash directory in vifm differs  from  the  system-\n       wide  one  by default, because of possible incompatibilities of storing\n       deleted\tfiles  among  different\t file  managers.   But\tone  can   set\n       'trashdir'  to  \"~/.local/share/Trash\" to use a \"standard\" trash direc-\n       tory.\n\n       There are two scenarios of using trash in vifm:\n\n\t 1. As a place for storing files that were cut by \"d\" and may  be  in-\n\t    serted to some other place in file system.\n\n\t 2. As a storage of files, that are deleted but not purged yet.\n\n       The first scenario uses deletion (\"d\") operations to put files to trash\n       and put (\"p\") operations to restore files from trash  directory.\t  Note\n       that  such operations move files to and from trash directory, which can\n       be long term operations in  case\t of  different\tpartitions  or\tremote\n       drives mounted locally.\n\n       The  second scenario uses deletion (\"d\") operations for moving files to\n       trash directory and :empty command-line command to purge all previously\n       deleted files.\n\n       Deletion\t and  put  operations  depend on registers, which can point to\n       files in trash directory.  Normally, there are no nonexistent files  in\n       registers, but vifm doesn't keep track of modifications under trash di-\n       rectory, so one shouldn't expect value of registers  to\tbe  absolutely\n       correct if trash directory was modified not by operation that are meant\n       for it.\tBut this won't lead to any issues with operations, since  they\n       ignore nonexistent files.\n\nClient-Server\n       vifm  supports  remote  execution of command-line mode commands, remote\n       changing of directories and expression evaluation.   This  is  possible\n       using --remote and --remote-expr command-line arguments.\n\n       To  execute  a command remotely combine --remote argument with -c <com-\n       mand> or +<command>.  For example:\n\n\t vifm --remote -c 'cd /'\n\t vifm --remote '+cd /'\n\n       To change directory not using command-line mode commands one can\t spec-\n       ify paths right after --remote argument, like this:\n\n\t vifm --remote /\n\t vifm --remote ~\n\t vifm --remote /usr/bin /tmp\n\n       Evaluating  expression  remotely\t might\tbe useful to query information\n       about an instance, for example its location:\n\n\t vifm --remote-expr 'expand(\"%d\")'\n\n       If there are several running instances, the  target  can\t be  specified\n       with  --server-name  option (otherwise, the first one lexicographically\n       is used):\n\n\t vifm --server-name work --remote ~/work/project\n\n       List of names of running instances can be  obtained  via\t --server-list\n       option.\tName of the current one is available via v:servername.\n\n\n       v:servername\n\t      server  name  of\tthe  running  vifm instance.  Empty if client-\n\t      server feature is disabled.\n\nPlugin\n       Plugin for using vifm in vim as a file selector.\n\n       Commands:\n\n\t :EditVifm   select a file or files to open in the current buffer.\n\t :Vifm\t     alias for :EditVifm.\n\t :SplitVifm  split buffer and select a file or files to open.\n\t :VsplitVifm vertically split buffer and select a  file\t or  files  to\n       open.\n\t :DiffVifm    select  a\t file  or files to compare to the current file\n       with\n\t\t     :vert diffsplit.\n\t :TabVifm    select a file or files to open in tabs.\n\n       Each command accepts up to two arguments: left pane directory and right\n       pane  directory.\t  After arguments are checked, vifm process is spawned\n       in a special \"file-picker\" mode.\t To pick files just open  them\teither\n       by  pressing  l,\t i  or Enter keys, or by running :edit command.\t If no\n       files are selected, file under the cursor is  opened,  otherwise\t whole\n       selection is passed to the plugin and opened in vim.\n\n       The  plugin  have  only\ttwo  settings.\t It's  a string variable named\n       g:vifm_term to let user specify command to run GUI  terminal.   By  de-\n       fault  it's  equal  to  'xterm  -e'.  And another string variable named\n       g:vifm_exec, which equals \"vifm\"\t by  default  and  specifies  path  to\n       vifm's  executable.   To\t pass  arguments to vifm use g:vifm_exec_args,\n       which is empty by default.\n\n       To use the plugin copy the vifm.vim file\t to  either  the  system  wide\n       vim/plugin directory or into ~/.vim/plugin.\n\n       If  you would prefer not to use the plugin and it is in the system wide\n       plugin directory add\n\n       let loaded_vifm=1\n\n       to your ~/.vimrc file.\n\nReserved\n       The following command names are reserved and shouldn't be used for user\n       commands.\n\n\t g[lobal]\n\t v[global]\n\nENVIRONMENT\n       VIFM   Points to main configuration directory (usually ~/.vifm/).\n\n       MYVIFMRC\n\t      Points to main configuration file (usually ~/.vifm/vifmrc).\n\n       These  environment variables are valid inside vifm and also can be used\n       to configure it by setting some of them before running vifm.\n\n       When $MYVIFMRC isn't set, it's made as $VIFM/vifmrc (exception for Win-\n       dows: vifmrc in the same directory as vifm.exe has higher priority than\n       $VIFM/vifmrc).\n\n       See \"Startup\" section above for more details.\n\n       VIFM_FUSE_FILE\n\t      On execution of external commands this variable is  set  to  the\n\t      full  path  of  file  used  to initiate FUSE mount of the closes\n\t      mount point from current pane directory up.  It's not  set  when\n\t      outside  FUSE  mount  point.   When vifm is used inside terminal\n\t      multiplexer, it tries to set this variable as well  (it  doesn't\n\t      work this way on its own).\n\nSEE ALSO\n       vifm-convert-dircolors(1), vifm-pause(1)\n\n       Website: https://vifm.info/\n       Wiki: https://wiki.vifm.info/\n\n       Esperanto translation of the documentation by Sebastian Cyprych:\n       http://cyprych.neostrada.pl/tekstoj/komputiloj/vifm-help.eo.html\n\nAUTHOR\n       Vifm was written by ksteen <ksteen@users.sourceforge.net>\n       And currently is developed by xaizek <xaizek@posteo.net>\n\n\n\nvifm 0.10.1\t\t\t July 29, 2019\t\t\t       VIFM(1)\n"
  },
  {
    "path": "vifm/.config/vifm/vifmrc",
    "content": "\n\" {{{ General config \n\" This is the actual command used to start vi.  The default is vim.\n\" If you would like to use another vi clone such as Elvis or Vile\n\" you will need to change this setting.\nset vicmd=nvim\n\n\" This makes vifm perform file operations on its own instead of relying on\n\" standard utilities like `cp`.  While using `cp` and alike is a more universal\n\" solution, it's also much slower when processing large amounts of files and\n\" doesn't support progress measuring.\nset syscalls\n\n\" Open with preview window\nview\n\n\" Trash Directory\n\" The default is to move files that are deleted with dd or :d to\n\" the trash directory.  If you change this you will not be able to move\n\" files by deleting them and then using p to put the file in the new location.\n\" I recommend not changing this until you are familiar with vifm.\n\" This probably shouldn't be an option.\nset trash\n\n\" This is how many directories to store in the directory history.\nset history=1000\n\n\" Automatically resolve symbolic links on l or Enter.\nset nofollowlinks\n\n\" Natural sort of (version) numbers within text.\nset sortnumbers\n\n\" Maximum number of changes that can be undone.\nset undolevels=100\n\n\" If you would like to run an executable file when you\n\" press return on the file name set this.\nset norunexec\n\n\" Selected color scheme\ncolorscheme minimal\n\n\" Format for displaying time in file list. For example:\n\" TIME_STAMP_FORMAT=%m/%d-%H:%M\n\" See man date or man strftime for details.\nset timefmt=%m/%d\\ %H:%M\n\n\" Show list of matches on tab completion in command-line mode\nset wildmenu\n\n\" Display completions in a form of popup with descriptions of the matches\nset wildstyle=popup\n\n\" Display suggestions in normal, visual and view modes for keys, marks and\n\" registers (at most 5 files).  In other view, when available.\nset suggestoptions=normal,visual,view,otherpane,keys,marks,registers\n\n\" Ignore case in search patterns unless it contains at least one uppercase\n\" letter\nset ignorecase\nset smartcase\n\n\" Don't highlight search results automatically\nset nohlsearch\n\n\" Use increment searching (search while typing)\nset incsearch\n\n\" Try to leave some space from cursor to upper/lower border in lists\nset scrolloff=4\n\n\" Don't do too many requests to slow file systems\nif !has('win')\n    set slowfs=curlftpfs\nendif\n\n\" Things that should be stored in vifminfo\nset vifminfo=dhistory,chistory,state,shistory,phistory,fhistory,dirstack,registers,bookmarks,bmarks\n\n\" Dont show delete confirmation\nset confirm-=delete\n\" ------------------------------------------------------------------------------\n\n\" :com[mand][!] command_name action\n\" The following macros can be used in a command\n\" %a is replaced with the user arguments.\n\" %c the current file under the cursor.\n\" %C the current file under the cursor in the other directory.\n\" %f the current selected file, or files.\n\" %F the current selected file, or files in the other directory.\n\" %b same as %f %F.\n\" %d the current directory name.\n\" %D the other window directory name.\n\" %m run the command in a menu window\n\ncommand! df df -h %m 2> /dev/null\ncommand! diff vim -d %f %F\ncommand! zip zip -r %f.zip %f\ncommand! run !! ./%f\ncommand! make !!make %a\ncommand! mkcd :mkdir %a | cd %a\ncommand! vgrep vim \"+grep %a\"\ncommand! reload :write | restart\n\n\" Empty the ruler. By default, it shows the number of directories+files.\nset rulerformat=\n\n\" Having a relative numberline makes it very easy navigate to files\nset relativenumber\nhighlight LineNr ctermbg=NONE ctermfg=243\n\ncommand! FZFfind : \n                \\| let $FZF_PICK = term('find . 2>/dev/null | fzf --reverse 2>/dev/tty')\n                \\| if $FZF_PICK != ''\n                \\|     execute 'goto' fnameescape($FZF_PICK)\n                \\| endif\n\" }}}\n\n\n\" {{{ File preview & file opening  \n\" The file type is for the default programs to be used with\n\" a file extension.\n\" :filetype pattern1,pattern2 defaultprogram,program2\n\" :fileviewer pattern1,pattern2 consoleviewer\n\" The other programs for the file type can be accessed with the :file command\n\" The command macros %f, %F, %d, %F may be used in the commands.\n\" The %a macro is ignored.  To use a % you must put %%.\n\n\" For automated FUSE mounts, you must register an extension with :file[x]type\n\" in one of following formats:\n\"\n\" :filetype extensions FUSE_MOUNT|some_mount_command using %SOURCE_FILE and %DESTINATION_DIR variables\n\" %SOURCE_FILE and %DESTINATION_DIR are filled in by vifm at runtime.\n\" A sample line might look like this:\n\" :filetype *.zip,*.jar,*.war,*.ear FUSE_MOUNT|fuse-zip %SOURCE_FILE %DESTINATION_DIR\n\"\n\" :filetype extensions FUSE_MOUNT2|some_mount_command using %PARAM and %DESTINATION_DIR variables\n\" %PARAM and %DESTINATION_DIR are filled in by vifm at runtime.\n\" A sample line might look like this:\n\" :filetype *.ssh FUSE_MOUNT2|sshfs %PARAM %DESTINATION_DIR\n\" %PARAM value is filled from the first line of file (whole line).\n\" Example first line for SshMount filetype: root@127.0.0.1:/\n\"\n\" You can also add %CLEAR if you want to clear screen before running FUSE\n\" program.\n\n\nfileviewer *.pdf\n    \\ vifmimg pdf %px %py %pw %ph %c\n    \\ %pc\n    \\ vifmimg clear\n\nfileviewer *.djvu\n    \\ vifmimg djvu %px %py %pw %ph %c\n    \\ %pc\n    \\ vifmimg clear\n\nfileviewer *.epub\n    \\ vifmimg epub %px %py %pw %ph %c\n    \\ %pc\n    \\ vifmimg clear\n\nfileviewer <video/*>\n    \\ vifmimg video %px %py %pw %ph %c\n    \\ %pc\n    \\ vifmimg clear\n\nfileviewer <image/*>\n    \\ vifmimg draw %px %py %pw %ph %c\n    \\ %pc\n    \\ vifmimg clear\n\nfileviewer <audio/*>\n    \\ vifmimg audio %px %py %pw %ph %c\n    \\ %pc\n    \\ vifmimg clear\n\nfileviewer <font/*>\n    \\ vifmimg font %px %py %pw %ph %c\n    \\ %pc\n    \\ vifmimg clear\n\n\nfileviewer *.csv sed \"s/,,,,/,,-,,/g;s/,,/ /g\" %c | column -t | sed \"s/ - /  /g\" | cut -c -%pw\n\nfileviewer *.html, *.htm, *.xhtml w3m -dump %c\n\nfileviewer <text/*> env -uCOLORTERM bat --color always --wrap never --pager never %c -p\n\n\" Archives\nfileviewer *.zip,*.jar,*.war,*.ear,*.oxt zip -sf %c\nfileviewer *.tgz,*.tar.gz tar -tzf %c\nfileviewer *.tar.bz2,*.tbz2 tar -tjf %c\nfileviewer *.tar.txz,*.txz xz --list %c\nfileviewer *.tar tar -tf %c\nfileviewer *.rar unrar v %c\nfileviewer *.7z 7z l %c\n\n\" Dont show preview on ../ as this confuses me at times\nfileview ../ echo >/dev/null\n\n\" Show ls in the preview window, it creates a similar look as ranger.\n\" The default directory tree thing is really messy\nfileviewer */ ls \nfileviewer .*/ ls \n\" Other files\n\" Using xdg-open to open the highlighted file with a compatible program and\n\" the reason why I am using \"file\" to preview other files is so that \"vifm\" \n\" does not lag when trying \"cat\" the file\nfilextype * xdg-open %c %i &\nfileviewer * file -b %c\n\" }}}\n\n\n\" {{{ Key mappings \n\" Easily quit vifm by hitting q\nnmap q ZQ\n\n\" Use comma to enter command mode\nnnoremap , : \n\n\" Set highlighted image as wallpaper and lockscreen image\nnnoremap <C-w> :!feh --bg-fill --no-fehbg %c && rm ~/pictures/current/* && cp %c ~/pictures/current/ &<cr>\n\n\" Upload highlighted file to 0x0.st and then save url to clipboard\nnnoremap 0x0 :!curl -s -F'file=@%c' https://0x0.st > /dev/null | xclip -sel clip && notify-send \"vifm\" \"File uploaded: $(xclip -o -selection clipboard)\" &<cr> \n\n\" Reverse image search with Tiney\nnnoremap re :!bash ~/bin/utils/tineye %c &<cr>\n\n\" Go to the file that is right before \"../\" for going to the top most file\nnnoremap gg ggj\n\n\" Quick shortcuts to some dirs \nnnoremap bin :cd ~/bin<cr>\nnnoremap docs :cd ~/documents<cr>\nnnoremap dls :cd ~/downloads<cr>\nnnoremap pics :cd ~/pictures<cr>\nnnoremap walls :cd ~/pictures/wallpapers<cr>\nnnoremap vids :cd ~/videos<cr>\nnnoremap dots :cd ~/dotfiles<cr>\nnnoremap shots :cd ~/pictures/screenshots<cr>\nnnoremap music :cd ~/music<cr>\nnnoremap prjs :cd ~/projects<cr>\nnnoremap cd :cd<cr>\n\n\n\" Start shell in current directory\nnnoremap s :shell<cr>\n\n\" Display sorting dialog\nnnoremap S :sort<cr>\n\n\" Toggle visibility of preview window\nnnoremap w :view<cr>\nvnoremap w :view<cr>gv\n\n\" Open file in nvim\nnnoremap o :!nvim %f<cr>\n\n\" Open file in the background using its default program\nnnoremap gb :file &<cr>l\n\n\" Yank current directory path into the clipboard\nnnoremap yd :!echo %d | xclip -i -selection clipboard %i<cr>\n\n\" Yank current file path into the clipboard\nnnoremap yf :!echo %c:p | xclip -i -selection clipboard %i<cr>\n\n\" Mappings for faster renaming\nnnoremap I cw<c-a>\nnnoremap cc cw<c-u>\nnnoremap A cw\n\n\" Extract an archive\nnnoremap x :!/home/siddharth/bin/utils/ex %f &<cr>\n\n\" Make a new directory\nnnoremap mkd :mkdir<space>\n\n\" Drag and drop files with ease\nnnoremap O :!blobdrop %f &>/dev/null & <cr>\nvnoremap O :!blobdrop %f &>/dev/null & <cr>\n\n\" Toggle showing hidden files \nnnoremap . za\n\n\" Fuzzy search files\nnnoremap F :FZFfind <cr>\n\"}}}\n\n\n\" {{{ Icons \n\" Filetypes/directories\nset classify=' :dir:, :exe:, :reg:, :link:,? :?:, ::../::'\n\n\" Specific files\nset classify+=' ::.Xdefaults,,.Xresources,,.bashprofile,,.bash_profile,,.bashrc,,.dmrc,,.d_store,,.fasd,,.gitconfig,,.gitignore,,.jack-settings,,.mime.types,,.nvidia-settings-rc,,.pam_environment,,.profile,,.recently-used,,.selected_editor,,.xinitpurc,,.zprofile,,.yarnc,,.snclirc,,.tmux.conf,,.urlview,,.config,,.ini,,.user-dirs.dirs,,.mimeapps.list,,.offlineimaprc,,.msmtprc,,.Xauthority,,config::'\nset classify+=' ::dropbox::'\nset classify+=' ::favicon.*,,README,,readme::'\nset classify+=' ::.vim,,.vimrc,,.gvimrc,,.vifm::'\nset classify+=' ::gruntfile.coffee,,gruntfile.js,,gruntfile.ls::'\nset classify+=' ::gulpfile.coffee,,gulpfile.js,,gulpfile.ls::'\nset classify+=' ::ledger::'\nset classify+=' ::license,,copyright,,copying,,LICENSE,,COPYRIGHT,,COPYING::'\nset classify+=' ::node_modules::'\nset classify+=' ::react.jsx::'\n\n\" File extensions\nset classify+='λ ::*.ml,,*.mli::'\nset classify+=' ::*.styl::'\nset classify+=' ::*.scss::'\nset classify+=' ::*.py,,*.pyc,,*.pyd,,*.pyo::'\nset classify+=' ::*.php::'\nset classify+=' ::*.markdown,,*.md::'\nset classify+=' ::*.json::'\nset classify+=' ::*.js::'\nset classify+=' ::*.bmp,,*.gif,,*.ico,,*.jpeg,,*.jpg,,*.png,,*.svg,,*.svgz,,*.tga,,*.tiff,,*.xmb,,*.xcf,,*.xpm,,*.xspf,,*.xwd,,*.cr2,,*.dng,,*.3fr,,*.ari,,*.arw,,*.bay,,*.crw,,*.cr3,,*.cap,,*.data,,*.dcs,,*.dcr,,*.drf,,*.eip,,*.erf,,*.fff,,*.gpr,,*.iiq,,*.k25,,*.kdc,,*.mdc,,*.mef,,*.mos,,*.mrw,,*.obm,,*.orf,,*.pef,,*.ptx,,*.pxn,,*.r3d,,*.raf,,*.raw,,*.rwl,,*.rw2,,*.rwz,,*.sr2,,*.srf,,*.srw,,*.tif,,*.x3f::'\nset classify+=' ::*.ejs,,*.htm,,*.html,,*.slim,,*.xml::'\nset classify+=' ::*.mustasche::'\nset classify+=' ::*.css,,*.less,,*.bat,,*.conf,,*.ini,,*.rc,,*.yml,,*.cfg::'\nset classify+=' ::*.rss::'\nset classify+=' ::*.coffee::'\nset classify+=' ::*.twig::'\nset classify+=' ::*.c++,,*.cpp,,*.cxx,,*.h::'\nset classify+=' ::*.cc,,*.c::'\nset classify+=' ::*.hs,,*.lhs::'\nset classify+=' ::*.lua::'\nset classify+=' ::*.jl::'\nset classify+=' ::*.go::'\nset classify+=' ::*.ts::'\nset classify+=' ::*.db,,*.dump,,*.sql::'\nset classify+=' ::*.sln,,*.suo::'\nset classify+=' ::*.exe::'\nset classify+=' ::*.diff,,*.sum,,*.md5,,*.sha512::'\nset classify+=' ::*.scala::'\nset classify+=' ::*.java,,*.jar::'\nset classify+=' ::*.xul::'\nset classify+=' ::*.clj,,*.cljc::'\nset classify+=' ::*.pl,,*.pm,,*.t::'\nset classify+=' ::*.cljs,,*.edn::'\nset classify+=' ::*.rb::'\nset classify+=' ::*.fish,,*.sh,,*.bash::'\nset classify+=' ::*.dart::'\nset classify+=' ::*.f#,,*.fs,,*.fsi,,*.fsscript,,*.fsx::'\nset classify+=' ::*.rlib,,*.rs::'\nset classify+=' ::*.d::'\nset classify+=' ::*.erl,,*.hrl::'\nset classify+=' ::*.ai::'\nset classify+=' ::*.psb,,*.psd::'\nset classify+=' ::*.jsx::'\nset classify+=' ::*.aac,,*.anx,,*.asf,,*.au,,*.axa,,*.flac,,*.m2a,,*.m4a,,*.mid,,*.midi,,*.mp3,,*.mpc,,*.oga,,*.ogg,,*.ogx,,*.ra,,*.ram,,*.rm,,*.spx,,*.wav,,*.wma,,*.ac3::'\nset classify+=' ::*.avi,,*.flv,,*.mkv,,*.mov,,*.mp4,,*.mpeg,,*.mpg,,*.webm::'\nset classify+=' ::*.epub,,*.pdf,,*.fb2,,*.djvu::'\nset classify+=' ::*.7z,,*.apk,,*.bz2,,*.cab,,*.cpio,,*.deb,,*.gem,,*.gz,,*.gzip,,*.lh,,*.lzh,,*.lzma,,*.rar,,*.rpm,,*.tar,,*.tgz,,*.xz,,*.zip::'\nset classify+=' ::*.cbr,,*.cbz::'\nset classify+=' ::*.log::'\nset classify+=' ::*.doc,,*.docx,,*.adoc::'\nset classify+=' ::*.xls,,*.xlsmx::'\nset classify+=' ::*.pptx,,*.ppt::'\n\"}}}\n"
  },
  {
    "path": "wget/.config/wgetrc",
    "content": "hsts-file = /home/siddharth/.cache/wget-hsts\n"
  },
  {
    "path": "zsh/.config/aliases",
    "content": "#!/usr/bin/env bash\n\n# Quick shortcuts to some dirs\nalias dls=\"cd ~/downloads\"\nalias docs=\"cd ~/documents\"\nalias prjs=\"cd ~/projects\"\nalias pics=\"cd ~/pictures\"\nalias conf=\"cd ~/.config\"\nalias vids=\"cd ~/videos\"\nalias dots=\"cd ~/dotfiles\"\nalias bin=\"cd ~/bin\"\nalias lbin=\"cd $HOME/.local/bin\"\nalias tmp=\"cd /tmp\"\nalias shots=\"cd ~/pictures/screenshots\"\nalias ..=\"cd ..\"\n\n# Quickly edit some files\nalias zshrc=\"nvim $HOME/.zshrc && source $HOME/.zshrc\"\nalias aliases=\"nvim $HOME/.config/aliases && source $HOME/.config/aliases\"\nalias i3config=\"nvim $HOME/.config/i3/config\"\nalias vimrc=\"nvim ~/.config/nvim/init.lua\"\nalias vifmrc=\"nvim $HOME/.config/vifm/vifmrc\"\n\n# Enable colors for some commands\nalias grep='grep --color=auto'\nalias fgrep='fgrep --color=auto'\nalias egrep='egrep --color=auto'\nalias tree=\"tree -C\"\nalias diff=\"diff --color\"\nalias ip=\"ip -c=always\"\n\n# Use 'eza' instead of 'ls'\nalias ls=\"eza\"\nalias ll='eza -alF'\nalias la='eza -a'\nalias l='eza -CF'\n\n# Basically, lets me know what just happened\n# --interactive     prompt before overwrite\n# --verbose         explain what is being done\nalias cp=\"cp --interactive --verbose\"\nalias mv=\"mv --interactive --verbose\"\nalias rm=\"rm --verbose\"\n\n# Aliases to prevent leaving junk in $HOME\nalias feh=\"feh --no-fehbg\"\nalias mitmproxy=\"mitmproxy --set confdir=$XDG_CONFIG_HOME/mitmproxy\"                             \nalias mitmweb=\"mitmweb --set confdir=$XDG_CONFIG_HOME/mitmproxy\"\nalias wget=\"wget --hsts-file=$XDG_DATA_HOME/wget-hsts\"\nalias svn=\"svn --config-dir $XDG_CONFIG_HOME/subversion\"\nalias yarn='yarn --use-yarnrc \"$XDG_CONFIG_HOME/yarn/config\"'\n\n# Dont show the annoying banner in ipython3\nalias ipython3=\"ipython3 --no-banner\"\n\n# Old habits and typos\nalias vim=\"nvim\"\nalias vi=\"nvim\"\nalias v=\"nvim\"\n\n# [R]aw ViM\n# Open vim with default config\nalias rvim=\"nvim -u NONE\"\nalias rvi=\"nvim -u NONE\"\n\n# The remaining storage\nalias storage=\"df -h $HOME --output=avail | tail -1 | xargs echo | sed 's/G/ GB/g'\"\n\n# cat, but with syntax highlighting\nalias cat=\"bat --theme base16 -p\"\n\n# https://www.ostechnix.com/youtube-dl-tutorial-with-ezamples-for-beginners/\nalias ytdl=\"yt-dlp -f 'bestvideo[ext=mp4]+bestaudio[ext=m4a]/best[ext=mp4]/best'\"\n\nalias gif2mp4='ffmpeg -i $1 -movflags faststart -pix_fmt yuv420p -vf \"scale=trunc(iw/2)*2:trunc(ih/2)*2\" $2'\n\n# Some git aliases\nalias ga=\"git add\"\nalias gc=\"git commit\"\nalias gp=\"git push\"\nalias gs=\"git status\"\nalias gd=\"git diff\"\n\n# Some tmux aliases\nalias tl='tmux list-sessions'\nalias tk=\"tmux kill-session -t tmux list-sessions | fzf | cut -d ':' -f1\"\nalias td='tmux detach'\n\n# Quickly blend in with the public by using a light terminal theme.\n# I always get strange looks if Im using the terminal in public with dark colors\nalias blend=\"wal -l -i $HOME/pictures/current/*\"\n\n# Launch vifm using vifmrun so that I can have file previews\nalias vifm=\"vifmrun\"\n\n# Packages I Installed\nalias pii=\"comm -23 <(pacman -Qqett | sort) <(pacman -Qqg base -g base-devel | sort | uniq)\"\n\n# Start a simple http server\nalias pyserver=\"python3 -m http.server\"\n\n# Upload python project to pypi\nalias pyup=\"python3 setup.py sdist && python3 -m twine upload dist/*\"\n\n# Open my todo list\nalias todo=\"notes && vim todo\"\n\n# Kitty terminal tends to have issues with the \"clear\" command it's terminfo files\n# are not available on the server. The alias below fixes it.\n#alias ssh=\"kitty +kitten ssh\"\n\n# Launch jupyter notebook\nalias jn=\"jupyter notebook\"\n\n# [J]ust [P]ush\n# Sometimes I just need to push the code and dont care about\n# the commit message\n# git rev-parse --show-toplevel\nalias jp=\"git add . && git commit -m \\\"$(date)\\\" && git push\"\n\n# Much quicker to just run 'o' instead of\n# typing out the whole command \nalias o=\"open\"\n\n# A nmap alias that makes me go woah!makes me go woah!\nalias woah=\"nmap -sC -sV -A -Pn\"\n\n# Launch fontpreview\nalias fp=\"fontpreview-ueberzug -b #1d1f21 -f #c5c8c6\"\n\nalias se=\"sudoedit\"\n\n# Incognito mode. Useful for when some commands must have secrets through the command\nalias anon=\"export HISTFILE='' && echo 'Incognito mode activated'\"\n\n# Connect to TryHackMe VPN\nalias thm=\"sudo openvpn ~/documents/sdushantha.ovpn\"\n\n# Get TryHackMe machine IP\nalias thmip=\"ip -o -4 addr show dev tun0 | awk '{print $4}' | cut -d/ -f1 | tr -d '[:space:]'\"\n\n# Disable splash screen for Sonic Visualiser as its annoying\nalias sonic-visualiser=\"sonic-visualiser --no-splash\"\n"
  },
  {
    "path": "zsh/.zprofile",
    "content": "# Start my graphical interface\nif [[ ! $DISPLAY && $XDG_VTNR -eq 1 ]]; then\n  exec startx > $HOME/.cache/startx.log 2>&1\nfi \n\n# Default programs:\nexport EDITOR=\"nvim\"\nexport TERMINAL=\"kitty\"\nexport BROWSER=\"firefox\"\nexport READER=\"zathura\"\nexport FILE=\"thunar\"\n\n# Clean up the $HOME directory\nexport XDG_CACHE_HOME=\"$HOME/.cache\"\nexport XDG_DATA_HOME=\"$HOME/.local/share\"\nexport XDG_CONFIG_HOME=\"$HOME/.config\"\nexport XDG_STATE_HOME=\"$HOME/.local/state\"\nexport ANDROID_SDK_HOME=\"$XDG_CONFIG_HOME\"/android\nexport ATOM_HOME=\"$XDG_DATA_HOME\"/atom\nexport ATOM_HOME=\"$XDG_DATA_HOME\"/atom \nexport BUNDLE_USER_CACHE=\"$XDG_CACHE_HOME\"/bundle\nexport BUNDLE_USER_CONFIG=\"$XDG_CONFIG_HOME\"/bundle\nexport BUNDLE_USER_PLUGIN=\"$XDG_DATA_HOME\"/bundle\nexport GOPATH=\"$XDG_DATA_HOME\"/go\nexport GRADLE_USER_HOME=\"$XDG_DATA_HOME\"/gradle \nexport GTK2_RC_FILES=\"$XDG_CONFIG_HOME\"/gtk-2.0/gtkrc\nexport IPYTHONDIR=\"${XDG_CONFIG_HOME}/ipython\"\nexport JUPYTER_CONFIG_DIR=\"$XDG_CONFIG_HOME\"/jupyter\nexport LESSHISTFILE=\"$HOME/.cache/lesshst\"\nexport NPM_CONFIG_USERCONFIG=\"$XDG_CONFIG_HOME/npm/npmrc\"\nexport PYLINTHOME=\"$XDG_CACHE_HOME\"/pylint\nexport PYTHONSTARTUP=\"$XDG_CONFIG_HOME/python/pythonrc\"\nexport RUSTUP_HOME=\"$XDG_DATA_HOME\"/rustup\nexport SQLITE_HISTORY=$XDG_DATA_HOME/sqlite_history\nexport WGETRC=\"$XDG_CONFIG_HOME/wgetrc\"\nexport XCURSOR_PATH=/usr/share/icons:${XDG_DATA_HOME}/icons\nexport _JAVA_OPTIONS=-Djava.util.prefs.userRoot=\"$XDG_CONFIG_HOME\"/java\nexport W3M_DIR=\"$XDG_DATA_HOME/w3m\"\nexport DOCKER_CONFIG=\"$XDG_CONFIG_HOME\"/docker\n\n# This lets me have a colorful man page :)\nexport LESS_TERMCAP_mb=$(printf '\\e[01;31m') # enter blinking mode - red\nexport LESS_TERMCAP_md=$(printf '\\e[01;35m') # enter double-bright mode - bold, magenta\nexport LESS_TERMCAP_me=$(printf '\\e[0m')     # turn off all appearance modes (mb, md, so, us)\nexport LESS_TERMCAP_se=$(printf '\\e[0m')     # leave standout mode\nexport LESS_TERMCAP_so=$(printf '\\e[01;33m') # enter standout mode - yellow\nexport LESS_TERMCAP_ue=$(printf '\\e[0m')     # leave underline mode\nexport LESS_TERMCAP_us=$(printf '\\e[04;36m') # enter underline mode - cyan\n\n# Other\n#export SUDO_ASKPASS=~/bin/utils/rofi-askpass\n#export FZF_DEFAULT_COMMAND='ag --hidden -g \"\" --ignore \".git\" --ignore .npm --ignore .node_modules --ignore \"*Trash*\" --ignore \".java\" --ignore \"undo\" --ignore .cpan'\nexport FZF_DEFAULT_COMMAND='fd --type f'\nexport FZF_DEFAULT_OPTS=\"--bind='alt-j:down,alt-k:up' --no-info --reverse\"\n\n# https://github.com/pypa/pip/issues/8090#issuecomment-803363268\nexport PYTHON_KEYRING_BACKEND=keyring.backends.null.Keyring\n\n# Pinch to zoom for Firefox\nexport MOZ_USE_XINPUT2=1\n\n# https://github.com/open-mpi/hwloc/issues/354                                                                                                                                                              \nexport HWLOC_HIDE_ERRORS=2 \n# https://github.com/openwall/john/issues/4765   \nexport OMPI_MCA_opal_warn_on_missing_libcuda=0\n"
  },
  {
    "path": "zsh/.zshenv",
    "content": "# Allow all files in bin and the subdirs to be in PATH\nexport PATH=$PATH$( find $HOME/bin/ -type d -printf \":%p\" )\n\n# Allows me to run scripts which are installed locally\nexport PATH=$PATH\":$HOME/.local/bin\"\n\n# Scripts installed using gem\nexport PATH=$PATH\":$HOME/.gem/ruby/2.6.0/bin\"\n\n# Scripts installed using cargo\nexport PATH=$PATH\":$HOME/.cargo/bin\"\nexport PATH=$PATH\":$HOME/.local/share/cargo/bin\"\nexport PATH=$PATH\":$GOPATH/bin\"\nexport PATH=~/.node_modules/bin:$PATH\nexport GEM_HOME=\"$(gem env user_gemhome)\"\nexport PATH=\"$PATH:$GEM_HOME/bin\"\n\nsource $HOME/.config/aliases\n"
  },
  {
    "path": "zsh/.zshrc",
    "content": "export PURE_PROMPT_SYMBOL=\"$\"\nzstyle ':prompt:*' color yellow\nexport PURE_PROMPT_VICMD_SYMBOL=\"$\"\n\n# Load my aliases \n[ -f ~/.config/aliases ] && source ~/.config/aliases\n\n# History in cache directory\nexport HISTFILE=~/.cache/zsh/zsh_history\nexport HISTORY_IGNORE=\"(clear|ls|anon)\"\nexport HISTSIZE=1000000  # How many lines of history to keep in memory\nexport SAVEHIST=1000000  # Number of history entries to save to disk \nsetopt appendhistory     # Append history to the history file (no overwriting)\nsetopt sharehistory      # Share history across terminals\nsetopt incappendhistory  # Immediately append to the history file, not just when a term is killed \n\n# Basic auto/tab complete\nautoload -U compinit\nzstyle ':completion:*' menu select\nzmodload zsh/complist\n_comp_options+=(globdots)\t\n[ ! -d \"$HOME/.cache/zsh\" ] && mkdir \"$HOME/.cache/zsh\"\ncompinit -d \"$HOME/.cache/zsh/zcompdump\"\n\n# Automatically cd into directories by just typing the directory name\nsetopt autocd\n\n# Colored GCC warnings and errors\nexport GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'\n\n### VIM mode config\n# Summery:\n#  Allows you to use press ESC and then use VIM keys to edit\n#  the command currently have in the command line.\n#  When you are in INSERT mode, the cursor is a beam and in \n#  NORMAL mode, the cursor is a BLOCK. This makes it easer for us\n#  to know what mode we are in.\n\n# Activate vim mode.\nbindkey -v\nexport KEYTIMEOUT=1\n\n# Use vim keys in tab complete menu:\nbindkey -M menuselect 'h' vi-backward-char\nbindkey -M menuselect 'k' vi-up-line-or-history\nbindkey -M menuselect 'l' vi-forward-char\nbindkey -M menuselect 'j' vi-down-line-or-history\n\n# Jump to beginning using H and the end using L in NORMAL mode\nbindkey -M vicmd 'H' beginning-of-line\nbindkey -M vicmd 'L' end-of-line\n\n# Open current command line in vim\nautoload edit-command-line; zle -N edit-command-line\nbindkey -M vicmd ' ' edit-command-line\n\n# Prevent backspace key from not working: https://git.io/J48z9\nbindkey \"^?\" backward-delete-char\n\n# This brings the cursor back to the beam instead of the block cursor\n_fix_cursor() {\n   echo -ne '\\e[5 q'\n}\n\nfunction zle-keymap-select {\n  if [[ ${KEYMAP} == vicmd ]] ||\n     [[ $1 = 'block' ]]; then\n    echo -ne '\\e[1 q'\n\n  elif [[ ${KEYMAP} == main ]] ||\n       [[ ${KEYMAP} == viins ]] ||\n       [[ ${KEYMAP} = '' ]] ||\n       [[ $1 = 'beam' ]]; then\n    echo -ne '\\e[5 q'\n  fi\n}\nzle -N zle-keymap-select\n\n# Use beam shape cursor on startup.\necho -ne '\\e[5 q'\n\nprecmd_functions+=(_fix_cursor)\n\n# Disable ctrl-s and ctrl-q because they for some reason\n# freezes my terminal\nstty -ixon \n\n# These files have some important variables\nsource $HOME/.zprofile\nsource $HOME/.zshenv\n\n# Load my ZSH plugins\nsource /usr/share/zinit/zinit.zsh\nzinit light kutsan/zsh-system-clipboard\nzinit light Aloxaf/fzf-tab\nzinit ice compile'(pure|async).zsh' pick'async.zsh' src'pure.zsh'\nzinit light sindresorhus/pure\n\n# Use fzf when doing CTRL-r\n[[ -e \"/usr/share/fzf/key-bindings.zsh\" ]] && source \"/usr/share/fzf/key-bindings.zsh\" \n\n# Search and remove packages with yay and fzf\nyr() {\n\tSELECTED_PKGS=\"$(yay -Qsq | fzf --header='Remove packages' -m --height 100% --preview 'yay -Si {1}')\"\n    [[ -n \"$SELECTED_PKGS\" ]] && yay -Rns \"$SELECTED_PKGS\"\n}\n\nexport PATH=\"/home/siddharth/perl5/bin${PATH:+:${PATH}}\"\nexport PERL5LIB=\"/home/siddharth/perl5/lib/perl5${PERL5LIB:+:${PERL5LIB}}\"\nexport PERL_LOCAL_LIB_ROOT=\"/home/siddharth/perl5${PERL_LOCAL_LIB_ROOT:+:${PERL_LOCAL_LIB_ROOT}}\"\nexport PERL_MB_OPT=\"--install_base \\\"/home/siddharth/perl5\\\"\"\nexport PERL_MM_OPT=\"INSTALL_BASE=/home/siddharth/perl5\"\n\n# The 'cnf' command is needed. Check the 'bin' directory.\ncommand_not_found_handler() {\n    mkdir -p \"/tmp/command_not_found\"\n    echo -n \"$1\" > \"/tmp/command_not_found/command\"\n\n    echo \"zsh: command not found: $1\" && exit 1\n}\n\nwhodat(){curl -s \"https://www.tekna.no/api/mobileinfo?id=$1\"  | jq -r 'to_entries[] | \"\\(.key): \\(.value)\"' 2>/dev/null}\n\n"
  }
]