pub struct Logo {
pub lines: &'static [&'static str],
pub colors: &'static [&'static str],
}
pub fn get(selector: &str) -> Option<Logo> {
let sel = selector.to_ascii_lowercase();
if sel == "none" || sel == "off" {
return None;
}
let name = if sel == "auto" { detect_distro() } else { sel };
Some(
known(&name)
.or_else(|| known(&detect_distro()))
.unwrap_or(Logo {
lines: TUX,
colors: TUX_COLORS,
}),
)
}
fn detect_distro() -> String {
let id = std::fs::read_to_string("/etc/os-release")
.ok()
.and_then(|s| {
s.lines().find_map(|l| {
l.strip_prefix("ID=")
.map(|v| v.trim().trim_matches('"').to_ascii_lowercase())
})
})
.unwrap_or_default();
normalize(&id)
}
fn normalize(id: &str) -> String {
if id.starts_with("opensuse") {
return "opensuse".to_string();
}
match id {
"linuxmint" => "mint",
"raspbian" | "raspberry-pi-os" => "debian",
"popos" => "pop",
"" => "tux",
other => other,
}
.to_string()
}
fn known(name: &str) -> Option<Logo> {
Some(match name {
"debian" => Logo {
lines: DEBIAN,
colors: &["31", "37"],
},
"arch" => Logo {
lines: ARCH,
colors: &["36", "36"],
},
"ubuntu" => Logo {
lines: UBUNTU,
colors: &["31", "31"],
},
"fedora" => Logo {
lines: FEDORA,
colors: &["34", "37"],
},
"mint" => Logo {
lines: MINT,
colors: &["32", "37"],
},
"manjaro" => Logo {
lines: MANJARO,
colors: &["32"],
},
"pop" => Logo {
lines: POP,
colors: &["36", "37"],
},
"opensuse" => Logo {
lines: OPENSUSE,
colors: &["32", "37"],
},
"alpine" => Logo {
lines: ALPINE,
colors: &["34"],
},
"void" => Logo {
lines: VOID,
colors: &["32", "90"],
},
"nixos" => Logo {
lines: NIXOS,
colors: &["34", "36", "34", "36", "34", "36"],
},
"gentoo" => Logo {
lines: GENTOO,
colors: &["35", "37"],
},
"endeavouros" | "endeavour" => Logo {
lines: ENDEAVOUROS,
colors: &["35", "31", "34"],
},
"kali" => Logo {
lines: KALI,
colors: &["34", "90"],
},
"elementary" => Logo {
lines: ELEMENTARY,
colors: &["39"],
},
"zorin" => Logo {
lines: ZORIN,
colors: &["34"],
},
"artix" => Logo {
lines: ARTIX,
colors: &["36"],
},
"rocky" => Logo {
lines: ROCKY,
colors: &["32"],
},
"almalinux" | "alma" => Logo {
lines: ALMALINUX,
colors: &["31", "93", "34", "92", "36"],
},
"centos" => Logo {
lines: CENTOS,
colors: &["33", "32", "34", "35", "37"],
},
"devuan" => Logo {
lines: DEVUAN,
colors: &["35"],
},
"mx" => Logo {
lines: MX,
colors: &["39"],
},
"garuda" => Logo {
lines: GARUDA,
colors: &["31"],
},
"tux" | "linux" | "generic" => Logo {
lines: TUX,
colors: TUX_COLORS,
},
_ => return None,
})
}
const TUX_COLORS: &[&str] = &["37", "90", "33"];
const DEBIAN: &[&str] = &[
" $2_,met$$$$$$$$$$gg.",
" ,g$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$P.",
" ,g$$$$P\"\" \"\"\"Y$$$$.\".",
" ,$$$$P' `$$$$$$.",
"',$$$$P ,ggs. `$$$$b:",
"`d$$$$' ,$P\"' $1.$2 $$$$$$",
" $$$$P d$' $1,$2 $$$$P",
" $$$$: $$$. $1-$2 ,d$$$$'",
" $$$$; Y$b._ _,d$P'",
" Y$$$$. $1`.$2`\"Y$$$$$$$$P\"'",
" `$$$$b $1\"-.__",
" $2`Y$$$$b",
" `Y$$$$.",
" `$$$$b.",
" `Y$$$$b.",
" `\"Y$$b._",
" `\"\"\"\"",
];
const ARCH: &[&str] = &[
" -`",
" .o+`",
" `ooo/",
" `+oooo:",
" `+oooooo:",
" -+oooooo+:",
" `/:-:++oooo+:",
" `/++++/+++++++:",
" `/++++++++++++++:",
" `/+++o$2oooooooo$1oooo/`",
" ./$2ooosssso++osssssso$1+`",
"$2 .oossssso-````/ossssss+`",
" -osssssso. :ssssssso.",
" :osssssss/ osssso+++.",
" /ossssssss/ +ssssooo/-",
" `/ossssso+/:- -:/+osssso+-",
" `+sso+:-` `.-/+oso:",
"`++:. `-/+/",
".` `/",
];
const UBUNTU: &[&str] = &[
" ....",
" $2.',:clooo: $1.:looooo:.",
" $2.;looooooooc $1.oooooooooo'",
" $2.;looooool:,''. $1:ooooooooooc",
" $2;looool;. $1'oooooooooo,",
" $2;clool' $1.cooooooc. $2,,",
" $2... $1...... $2.:oo,",
" $1.;clol:,. $2.loooo'",
" $1:ooooooooo, $2'ooool",
"$1'ooooooooooo. $2loooo.",
"$1'ooooooooool $2coooo.",
" $1,loooooooc. $2.loooo.",
" $1.,;;;'. $2;ooooc",
" $2... $2,ooool.",
" $2.cooooc. $1..',,'. $2.cooo.",
" $2;ooooo:. $1;oooooooc. $2:l.",
" $2.coooooc,.. $1coooooooooo.",
" $2.:ooooooolc:. $1.ooooooooooo'",
" $2.':loooooo; $1,oooooooooc",
" $2..';::c' $1.;loooo:'",
];
const FEDORA: &[&str] = &[
" .',;::::;,'.",
" .';:cccccccccccc:;,.",
" .;cccccccccccccccccccccc;.",
" .:cccccccccccccccccccccccccc:.",
" .;ccccccccccccc;$2.:dddl:.$1;ccccccc;.",
" .:ccccccccccccc;$2OWMKOOXMWd$1;ccccccc:.",
".:ccccccccccccc;$2KMMc$1;cc;$2xMMc$1;ccccccc:.",
",cccccccccccccc;$2MMM.$1;cc;$2;WW:$1;cccccccc,",
":cccccccccccccc;$2MMM.$1;cccccccccccccccc:",
":ccccccc;$2oxOOOo$1;$2MMM000k.$1;cccccccccccc:",
"cccccc;$20MMKxdd:$1;$2MMMkddc.$1;cccccccccccc;",
"ccccc;$2XMO'$1;cccc;$2MMM.$1;cccccccccccccccc'",
"ccccc;$2MMo$1;ccccc;$2MMW.$1;ccccccccccccccc;",
"ccccc;$20MNc.$1ccc$2.xMMd$1;ccccccccccccccc;",
"cccccc;$2dNMWXXXWM0:$1;cccccccccccccc:,",
"cccccccc;$2.:odl:.$1;cccccccccccccc:,.",
"ccccccccccccccccccccccccccccc:'.",
":ccccccccccccccccccccccc:;,..",
" ':cccccccccccccccc::;,.",
];
const MINT: &[&str] = &[
" $2_.-ppOOOOOOqq-._",
" .oOOOOPPPPPPPPPPOOOOo.",
" .oOOOO$1.=oOOOOOOOOOOo=.$2OOOOo.",
" .:OOO$1.=oOOOOOOOOOOOOOOOOo=.$2OOO:.",
" .OOO$1.OOOOOOOOOOOOOOOOOOOOOOOO.$2OOO.",
" .OOO$1.OO OOO:´ `::´ `:OOO.$2OO:",
" .OOO$1.OOO OO OOO.$2OOO:",
" OOO$1.OOOO OO oo oo OOOO.$2OOO",
":OOO$1:OOOO OO OO OO OOOO:$2OOO:",
":OOO$1:OOOO OO OO OO OOOO:$2OOO:",
"'OOO$1'OOOO OO OO OO OOOO'$2OOO'",
" OOO$1'OOOO OO____OO____OO OOOO'$2OOO'",
" 'OOO$1'OOO 'OOOOOOOOOOOO' OOOO'$2OOO",
" 'OOO$1'OOO .OOO'$2OOO'",
" 'OOO$1'OOOO:ooooooooooooooo:OOOO'$2OOO'",
" ':OOOo$1'=OOOOOOOOOOOOOOOOO='$2oOOO:'",
" ':OOOOo$1'=OOOOOOOOOOO='$2oOOOO:'",
" ``-OOOOooooooooooOOOO-´´",
" ```-=:OOOO:=-´´´",
];
const MANJARO: &[&str] = &[
"██████████████████ ████████",
"██████████████████ ████████",
"██████████████████ ████████",
"██████████████████ ████████",
"████████ ████████",
"████████ ████████ ████████",
"████████ ████████ ████████",
"████████ ████████ ████████",
"████████ ████████ ████████",
"████████ ████████ ████████",
"████████ ████████ ████████",
"████████ ████████ ████████",
"████████ ████████ ████████",
"████████ ████████ ████████",
];
const POP: &[&str] = &[
" /////////////",
" /////////////////////",
" ///////$2*767$1////////////////",
" //////$27676767676*$1//////////////",
" /////$276767$1//$27676767$1//////////////",
" /////$2767676$1///$2*76767$1///////////////",
" ///////$2767676$1///$276767$1.///$27676*$1///////",
"/////////$2767676$1//$276767$1///$2767676$1////////",
"//////////$276767676767$1////$276767$1/////////",
"///////////$276767676$1//////$27676$1//////////",
"////////////,$27676$1,///////$2767$1///////////",
"/////////////*$27676$1///////$276$1////////////",
"///////////////$27676$1////////////////////",
" ///////////////$27676$1///$2767$1////////////",
" //////////////////////$2'$1////////////",
" //////$2.7676767676767676767,$1//////",
" /////$2767676767676767676767$1/////",
" ///////////////////////////",
" /////////////////////",
" /////////////",
];
const OPENSUSE: &[&str] = &[
" $2.;ldkO0000Okdl;.",
" .;d00xl:^''''''^:ok00d;.",
" .d00l' 'o00d.",
" .d0Kd'$1 Okxol:;,. $2:O0d",
" .OK$1KKK0kOKKKKKKKKKKOxo:, $2lKO.",
" ,0K$1KKKKKKKKKKKKKKK0P^$2,,,$1^dx:$2 ;00,",
".OK$1KKKKKKKKKKKKKKKk'$2.oOPPb.$1'0k.$2 cKO.",
":KK$1KKKKKKKKKKKKKKK: $2kKx..dd $1lKd$2 'OK:",
"dKK$1KKKKKKKKKOx0KKKd $2^0KKKO' $1kKKc$2 dKd",
"dKK$1KKKKKKKKKK;.;oOKx,..$2^$1..;kKKK0.$2 dKd",
":KK$1KKKKKKKKKK0o;...^cdxxOK0O/^^' $2.0K:",
" kKK$1KKKKKKKKKKKKK0x;,,......,;od $2lKk",
" '0K$1KKKKKKKKKKKKKKKKKKKK00KKOo^ $2c00'",
" 'kK$1KKOxddxkOO00000Okxoc;'' $2.dKk'",
" l0Ko. .c00l'",
" 'l0Kk:. .;xK0l'",
" 'lkK0xl:;,,,,;:ldO0kl'",
" '^:ldxkkkkxdl:^'",
];
const ALPINE: &[&str] = &[
" .hddddddddddddddddddddddh.",
" :dddddddddddddddddddddddddd:",
" /dddddddddddddddddddddddddddd/",
" +dddddddddddddddddddddddddddddd+",
" `sdddddddddddddddddddddddddddddddds`",
" `ydddddddddddd++hdddddddddddddddddddy`",
".hddddddddddd+` `+ddddh:-sdddddddddddh.",
"hdddddddddd+` `+y: .sddddddddddh",
"ddddddddh+` `//` `.` -sddddddddd",
"ddddddh+` `/hddh/` `:s- -sddddddd",
"ddddh+` `/+/dddddh/` `+s- -sddddd",
"ddd+` `/o` :dddddddh/` `oy- .yddd",
"hdddyo+ohddyosdddddddddho+oydddy++ohdddh",
".hddddddddddddddddddddddddddddddddddddh.",
" `yddddddddddddddddddddddddddddddddddy`",
" `sdddddddddddddddddddddddddddddddds`",
" +dddddddddddddddddddddddddddddd+",
" /dddddddddddddddddddddddddddd/",
" :dddddddddddddddddddddddddd:",
" .hddddddddddddddddddddddh.",
];
const VOID: &[&str] = &[
" __.;=====;.__",
" _.=+==++=++=+=+===;.",
" -=+++=+===+=+=+++++=_",
" . -=:`` `--==+=++==.",
" _vi, ` --+=++++:",
" .uvnvi. _._ -==+==+.",
" .vvnvnI` .;==|==;. :|=||=|.",
"$2+QmQQm$1pvvnv;$2 _yYsyQQWUUQQQm #QmQ#$1:$2QQQWUV$QQm.",
" $2-QQWQW$1pvvo$2wZ?.wQQQE$1==<$2QWWQ/QWQW.QQWW$1(:$2 jQWQE",
" $2-$QQQQmmU' jQQQ$1@+=<$2QWQQ)mQQQ.mQQQC$1+;$2jWQQ@'",
" $2-$WQ8Y$1nI:$2 QWQQwgQQWV$1`$2mWQQ.jQWQQgyyWW@!",
" $1-1vvnvv. `~+++` ++|+++",
" +vnvnnv, `-|===",
" +vnvnvns. . :=-",
" -Invnvvnsi..___..=sv=. `",
" +Invnvnvnnnnnnnnvvnn;.",
" ~|Invnvnvvnvvvnnv}+`",
" -~|{*l}*|~",
];
const NIXOS: &[&str] = &[
" $1▗▄▄▄ $2▗▄▄▄▄ ▄▄▄▖",
" $1▜███▙ $2▜███▙ ▟███▛",
" $1▜███▙ $2▜███▙▟███▛",
" $1▜███▙ $2▜██████▛",
" $1▟█████████████████▙ $2▜████▛ $3▟▙",
" $1▟███████████████████▙ $2▜███▙ $3▟██▙",
" $6▄▄▄▄▖ $2▜███▙ $3▟███▛",
" $6▟███▛ $2▜██▛ $3▟███▛",
" $6▟███▛ $2▜▛ $3▟███▛",
"$6▟███████████▛ $3▟██████████▙",
"$6▜██████████▛ $3▟███████████▛",
" $6▟███▛ $5▟▙ $3▟███▛",
" $6▟███▛ $5▟██▙ $3▟███▛",
" $6▟███▛ $5▜███▙ $3▝▀▀▀▀",
" $6▜██▛ $5▜███▙ $4▜██████████████████▛",
" $6▜▛ $5▟████▙ $4▜████████████████▛",
" $5▟██████▙ $4▜███▙",
" $5▟███▛▜███▙ $4▜███▙",
" $5▟███▛ ▜███▙ $4▜███▙",
" $5▝▀▀▀ ▀▀▀▀▘ $4▀▀▀▘",
];
const GENTOO: &[&str] = &[
" -/oyddmdhs+:.",
" -o$2dNMMMMMMMMNNmhy+$1-`",
" -y$2NMMMMMMMMMMMNNNmmdhy$1+-",
" `o$2mMMMMMMMMMMMMNmdmmmmddhhy$1/`",
" om$2MMMMMMMMMMMN$1hhyyyo$2hmdddhhhd$1o`",
".y$2dMMMMMMMMMMd$1hs++so/s$2mdddhhhhdm$1+`",
" oy$2hdmNMMMMMMMN$1dyooy$2dmddddhhhhyhN$1d.",
" :o$2yhhdNNMMMMMMMNNNmmdddhhhhhyym$1Mh",
" .:$2+sydNMMMMMNNNmmmdddhhhhhhmM$1my",
" /m$2MMMMMMNNNmmmdddhhhhhmMNh$1s:",
" `o$2NMMMMMMMNNNmmmddddhhdmMNhs$1+`",
" `s$2NMMMMMMMMNNNmmmdddddmNMmhs$1/.",
" /N$2MMMMMMMMNNNNmmmdddmNMNdso$1:`",
"+M$2MMMMMMNNNNNmmmmdmNMNdso$1/-",
"yM$2MNNNNNNNmmmmmNNMmhs+/$1-`",
"/h$2MMNNNNNNNNMNdhs++/$1-`",
"`/$2ohdmmddhys+++/:$1.`",
" `-//////:--.",
];
const ENDEAVOUROS: &[&str] = &[
" $2./$1o$3.",
" $2./$1sssso$3-",
" $2`:$1osssssss+$3-",
" $2`:+$1sssssssssso$3/.",
" $2`-/o$1ssssssssssssso$3/.",
" $2`-/+$1sssssssssssssssso$3+:`",
" $2`-:/+$1sssssssssssssssssso$3+/.",
" $2`.://o$1sssssssssssssssssssso$3++-",
" $2.://+$1ssssssssssssssssssssssso$3++:",
" $2.:///o$1ssssssssssssssssssssssssso$3++:",
" $2`:////$1ssssssssssssssssssssssssssso$3+++.",
"$2`-////+$1ssssssssssssssssssssssssssso$3++++-",
" $2`..-+$1oosssssssssssssssssssssssso$3+++++/`",
" $3./++++++++++++++++++++++++++++++/:.",
" `:::::::::::::::::::::::::------``",
];
const KALI: &[&str] = &[
"..............",
" ..,;:ccc,.",
" ......''';lxO.",
".....''''..........,:ld;",
" .';;;:::;,,.x,",
" ..'''. 0Xxoc:,. ...",
" .... ,ONkc;,;cokOdc',.",
" . OMo ':$2dd$1o.",
" dMc :OO;",
" 0M. .:o.",
" ;Wd",
" ;XO,",
" ,d0Odlc;,..",
" ..',;:cdOOd::,.",
" .:d;.':;.",
" 'd, .'",
" ;l ..",
" .o",
" c",
" .'",
" .",
];
const ELEMENTARY: &[&str] = &[
" eeeeeeeeeeeeeeeee",
" eeeeeeeeeeeeeeeeeeeeeee",
" eeeee eeeeeeeeeeee eeeee",
" eeee eeeee eee eeee",
" eeee eeee eee eeee",
"eee eee eee eee",
"eee eee eee eee",
"ee eee eeee eeee",
"ee eee eeeee eeeeee",
"ee eee eeeee eeeee ee",
"eee eeee eeeeee eeeee eee",
"eee eeeeeeeeee eeeeee eee",
" eeeeeeeeeeeeeeeeeeeeeeee eeeee",
" eeeeeeee eeeeeeeeeeee eeee",
" eeeee eeeee",
" eeeeeee eeeeeee",
" eeeeeeeeeeeeeeeee",
];
const ZORIN: &[&str] = &[
" `osssssssssssssssssssso`",
" .osssssssssssssssssssssso.",
" .+oooooooooooooooooooooooo+.",
"",
"",
" `::::::::::::::::::::::. .:`",
" `+ssssssssssssssssss+:.` `.:+ssso`",
".ossssssssssssssso/. `-+ossssssso.",
"ssssssssssssso/-` `-/osssssssssssss",
".ossssssso/-` .-/ossssssssssssssso.",
" `+sss+:. `.:+ssssssssssssssssss+`",
" `:. .::::::::::::::::::::::`",
"",
"",
" .+oooooooooooooooooooooooo+.",
" -osssssssssssssssssssssso-",
" `osssssssssssssssssssso`",
];
const ARTIX: &[&str] = &[
" '",
" 'o'",
" 'ooo'",
" 'ooxoo'",
" 'ooxxxoo'",
" 'oookkxxoo'",
" 'oiioxkkxxoo'",
" ':;:iiiioxxxoo'",
" `'.;::ioxxoo'",
" '-. `':;jiooo'",
" 'oooio-.. `'i:io'",
" 'ooooxxxxoio:,. `'-;'",
" 'ooooxxxxxkkxoooIi:-. `'",
" 'ooooxxxxxkkkkxoiiiiiji'",
" 'ooooxxxxxkxxoiiii:'` .i'",
" 'ooooxxxxxoi:::'` .;ioxo'",
" 'ooooxooi::'` .:iiixkxxo'",
" 'ooooi:'` `'';ioxxo'",
" 'i:'` '':io'",
"'` `'",
];
const ROCKY: &[&str] = &[
" __wgliliiligw_,",
" _williiiiiiliilililw,",
" _%iiiiiilililiiiiiiiiiii_",
" .Qliiiililiiiiiiililililiilm.",
" _iiiiiliiiiiililiiiiiiiiiiliil,",
" .lililiiilililiiiilililililiiiii,",
"_liiiiiiliiiiiiiliiiiiF{iiiiiilili,",
"jliililiiilililiiili@` ~ililiiiiiL",
"iiiliiiiliiiiiiili>` ~liililii",
"liliiiliiilililii` -9liiiil",
"iiiiiliiliiiiii~ \"4lili",
"4ililiiiiilil~| -w, )4lf",
"-liiiiililiF' _liig, )'",
" )iiiliii@` _QIililig,",
" )iiii>` .Qliliiiililw",
" )<>~ .mliiiiiliiiiiil,",
" _gllilililiililii~",
" giliiiiiiiiiiiiT`",
" -^~$ililili@~~'",
];
const ALMALINUX: &[&str] = &[
"$1 'c:.",
"$1 lkkkx, .. $2.. ,cc,",
"$1 okkkk:ckkx' $2.lxkkx.okkkkd",
"$1 .:llcokkx' $2:kkkxkko:xkkd,",
"$1 .xkkkkdood: $2;kx, .lkxlll;",
"$1 xkkx. $2xk' xkkkkk:",
"$1 'xkx. $2xd .....,.",
"$3 .. $1:xkl' $2:c ..''..",
"$3 .dkx' $1.:ldl:'. $2' $4':lollldkkxo;",
"$3 .''lkkko' $4ckkkx.",
"$3'xkkkd:kkd. .. $5;' $4:kkxo.",
"$3,xkkkd;kk' ,d; $5ld. $4':dkd::cc,",
"$3 .,,.;xkko'.';lxo. $5dx, $4:kkk'xkkkkc",
"$3 'dkkkkkxo:. $5;kx $4.kkk:;xkkd.",
"$3 ..... $5.;dk:. $5lkk. $4:;,",
" $5:kkkkkkkdoxkkx",
" ,c,,;;;:xkkd.",
" ;kkkkl...",
" ;kkkkl",
" ,od;",
];
const CENTOS: &[&str] = &[
" ..",
" .PLTJ.",
" <><><><>",
" $2KKSSV' 4KKK $1LJ$4 KKKL.'VSSKK",
" $2KKV' 4KKKKK $1LJ$4 KKKKAL 'VKK",
" $2V' ' 'VKKKK $1LJ$4 KKKKV' ' 'V",
" $2.4MA.' 'VKK $1LJ$4 KKV' '.4Mb.",
" $4. $2KKKKKA.' 'V $1LJ$4 V' '.4KKKKK $3.",
" $4.4D $2KKKKKKKA.'' $1LJ$4 ''.4KKKKKKK $3FA.",
"$4<QDD ++++++++++++ $3++++++++++++ GFD>",
" '$4VD $3KKKKKKKK'.. $2LJ $1..'KKKKKKKK $3FV",
" $4' $3VKKKKK'. .4 $2LJ $1K. .'KKKKKV $3'",
" $3'VK'. .4KK $2LJ $1KKA. .'KV'",
" $3A. . .4KKKK $2LJ $1KKKKA. . .4",
" $3KKA. 'KKKKK $2LJ $1KKKKK' .4KK",
" $3KKSSA. VKKK $2LJ $1KKKV .4SSKK",
" $2<><><><>",
" $2'MKKM'",
" $2''",
];
const DEVUAN: &[&str] = &[
" ..,,;;;::;,..",
" `':ddd;:,.",
" `'dPPd:,.",
" `:b$$$$b`.",
" 'P$$$$$d`",
" .$$$$$$$$$`",
" ;$$$$$$$$$P",
" .:P$$$$$$$$$$$$`",
" .,:b$$$$$$$$$$$$$;'",
" .,:dP$$$$$$$$$$$$$$$$b:'",
" .,:;db$$$$$$$$$$$$$$$$$$$$Pd'`",
" ,db$$$$$$$$$$$$$$$$$$$$$$$$$$$$b:'`",
":$$$$$$$$$$$$$$$$$$$$$$$$b:'`",
" `$$$$$$$$$bd:''`",
" `'''`",
];
const MX: &[&str] = &[
"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMNMMMMMMMMM",
"MMMMMMMMMMNs..yMMMMMMMMMMMMMm: +NMMMMMMM",
"MMMMMMMMMN+ :mMMMMMMMMMNo` -dMMMMMMMM",
"MMMMMMMMMMMs. `oNMMMMMMh- `sNMMMMMMMMM",
"MMMMMMMMMMMMN/ -hMMMN+ :dMMMMMMMMMMM",
"MMMMMMMMMMMMMMh- +ms. .sMMMMMMMMMMMMM",
"MMMMMMMMMMMMMMMN+` ` +NMMMMMMMMMMMMMM",
"MMMMMMMMMMMMMMNMMd: .dMMMMMMMMMMMMMMM",
"MMMMMMMMMMMMm/-hMd- `sNMMMMMMMMMMMMM",
"MMMMMMMMMMNo` -` :h/ -dMMMMMMMMMMMM",
"MMMMMMMMMd: /NMMh- `+NMMMMMMMMMM",
"MMMMMMMNo` :mMMN+` `-hMMMMMMMM",
"MMMMMMh. `oNMMd: `/mMMMMMM",
"MMMMm/ -hMd- `sNMMMM",
"MMNs` - :dMMM",
"Mm: `oMM",
"MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM",
];
const GARUDA: &[&str] = &[
" .%;888:8898898:",
" x;XxXB%89b8:b8%b88:",
" .8Xxd 8X:.",
" .8Xx; 8x:.",
" .tt8x .d x88;",
" .@8x8; .db: xx@;",
" ,tSXX° .bbbbbbbbbbbbbbbbbbbB8x@;",
" .SXxx bBBBBBBBBBBBBBBBBBBBbSBX8;",
" ,888S pd!",
"8X88/ q",
"8X88/",
"GBB.",
" x%88 d888@8@X@X@X88X@@XX@@X@8@X.",
" dxXd dB8b8b8B8B08bB88b998888b88x.",
" dxx8o .@@;.",
" dx88 .t@x.",
" d:SS@8ba89aa67a853Sxxad.",
" .d988999889889899dd.",
];
const TUX: &[&str] = &[
" $2#####",
" $2#######",
" $2##$1O$2#$1O$2##",
" $2#$3#####$2#",
" $2##$1##$3###$1##$2##",
" $2#$1##########$2##",
" $2#$1############$2##",
" $2#$1############$2###",
" $3##$2#$1###########$2##$3#",
"$3######$2#$1#######$2#$3######",
"$3#######$2#$1#####$2#$3#######",
" $3#####$2#######$3#####",
];