A small amount of data that does not belong to any file
Ingredients: console + utf8
Inspired by: https://505e06b2.github.io/Image-to-Braille/
⣕⣮⡖⢯⢯⢜⡯⣏⣟⣎⣪⡯⡻⡟⢮⣕⣳⡏⢮⡧⢜⡯⡳⢫⢵⣮⣛⡻⣟⢯⡗⢪⣮⢷⣾⣟⢽⢽⢽⢏⣹⡗⣺⢗⡺⢿⣺⣟⢝⡾⢧⢯⣞⣗⣺⡿⢟⡻⢯⣯⢷⢝⣽⡯⣿⣪⣾⣻⡹⣻⡽⡽⢗⢾⣗⡿⢯⡽⢾⢯⣿⣗⣾⣳⣟⣞⣝⣷⣗⣷⣟⣽⣯⢷⢿⣝⣽⢿⢽⡾⡽⢽⣿⣯⣯⡽⣫⣝⣿⣷
⢝⣺⡵⡻⢓⡚⡽⢳⣎⢫⢵⡺⣎⡼⣗⡫⢣⣎⣏⢞⣫⢗⢺⣾⡷⢽⢧⡻⣳⢿⣷⢮⡛⡮⢗⣏⣹⣵⢼⣯⣝⢮⡺⣟⣹⢟⢽⣗⡽⢝⡻⡿⡯⡺⢳⢿⢺⢯⣽⡯⢯⡼⢮⣎⣺⢯⣟⡻⣿⣗⢟⡟⣽⡮⣳⡝⣽⣷⣟⢿⢽⣻⡽⢻⡯⣻⣟⢿⣯⣷⣾⣞⣺⡷⢽⣾⣟⣽⣟⣷⣾⣽⡿⣗⣾⡯⡯⣯⣽⢽
⣣⢭⡜⢎⢼⣹⣳⢷⣝⣻⣝⢭⡱⡓⢾⢽⢪⡺⣯⡫⣻⣵⡺⣝⣵⢎⡫⢪⡵⢞⡳⢽⢿⡻⢷⡝⢻⢷⡽⣻⣯⢝⢲⣎⣝⣹⡹⢿⣯⣗⣽⣺⣷⡻⢹⣮⣕⡧⣷⣿⣷⢽⡾⠽⣷⡷⣽⣿⣟⢿⢿⣿⣷⣾⣞⢵⡿⣟⣯⡿⡷⡽⡻⢽⣺⣿⣿⡾⣻⣽⣯⣳⣿⢿⣪⣮⣯⡾⣟⢯⢽⡳⡿⣿⢿⢾⣮⣞⣾⡮
⡣⢵⡓⡳⢧⡜⣳⡺⢬⣒⣹⡪⢯⣺⡮⡷⢯⢼⡷⣷⣿⡟⣺⢯⢓⢵⣟⣱⣲⢫⡺⢟⢿⢼⡟⠮⣟⡪⡳⣮⣷⣪⡽⣧⣯⣮⡽⢿⣾⣳⡻⣻⡺⢽⣳⢷⢽⣗⣿⣯⣼⢯⣯⣝⣫⡽⡾⣿⡟⡻⢗⣻⣝⣗⣿⣻⣕⣗⡻⡯⣯⣾⣣⣝⣿⣻⣿⣽⢿⢿⢟⣽⣞⣽⣿⣿⡿⣷⣿⣿⣮⣽⣪⢯⡽⢯⢿⢷⣳⣾
⡕⢕⣑⢺⣽⢻⡽⣵⢮⡼⢼⣫⡕⣻⢟⡜⣕⣗⣜⢻⡺⣝⣧⢝⣮⡽⣻⣗⣻⣻⣼⡞⡫⡵⣗⢾⢿⢝⣯⣳⠽⣻⡸⢽⢕⣹⣎⣟⢹⣝⣞⡷⢿⣿⣾⡳⣮⡳⣹⣝⣳⣻⡾⣝⢟⣽⣞⣧⡿⢾⡽⣾⡫⢷⣫⣯⣼⡯⢷⣯⣳⣝⣯⢯⢗⣽⣯⣾⡻⣞⢗⣻⣽⣽⢿⢷⣽⣿⣿⣳⣿⣿⣻⣾⣿⢷⣟⣻⣽⣻
⢻⣼⢜⠮⡘⣕⣏⡱⣷⣝⢶⣓⢼⡫⢝⡳⡕⢾⣫⣞⡫⢝⡎⣹⣟⡗⢗⡵⢟⣯⡼⡼⣫⣸⣳⣵⡺⣗⡺⢞⢳⣽⡷⣯⢮⢾⣿⣫⣝⡻⣳⣲⢺⢷⢽⣪⡗⣫⢽⣟⡻⣽⣮⣺⣎⡮⢺⡝⣽⣾⣻⣷⣯⡯⢯⣾⣽⣳⡽⣿⢗⢟⡯⣗⣿⣟⢷⣵⣯⣽⣗⢽⢯⣿⣟⢿⢞⣯⣷⣷⢽⡿⣮⡽⢯⡯⣗⢾⣻⢿
⢵⡽⡹⣵⡮⢕⢗⢺⣟⡽⢾⣇⢜⣜⡻⣮⢜⡺⠽⡽⠧⡳⣻⢕⡳⣯⡫⢜⣺⢗⣻⡳⢺⣕⡾⢗⣲⣟⣺⣺⣞⣾⢎⡪⡽⣹⢫⢟⠉⠀⠀⢀⣔⣠⠬⠄⣐⡠⠠⡀⡁⠁⠚⠓⠺⢷⢿⣪⡿⡻⣯⡻⣿⣿⣿⣞⡽⣫⣕⡹⣯⢯⣮⢷⣻⢟⣿⣷⣯⣽⣷⢾⣿⣿⣿⣟⡿⣻⡽⢾⣟⡯⣾⣮⢿⢿⢷⣻⣵⣽
⣗⡻⢯⢽⣞⣹⡮⡮⣪⠵⢏⣞⢹⡏⣪⡺⣮⡿⣟⡵⡝⢷⣺⣝⣎⢟⢧⢾⣻⡯⣻⣟⣞⣆⣺⢻⢧⣚⡲⢾⡮⡜⠝⠣⠌⠀⠀⡠⢢⡱⡇⢕⡘⡊⢹⡨⢨⠤⡰⠕⢲⠮⣐⡄⡀⠀⠁⠙⠛⣗⣻⢿⣯⣾⣿⣝⡯⢿⣺⣵⣝⣿⣽⣟⢷⣯⣿⣿⣟⢽⡽⣞⢾⢿⣟⣟⣻⣾⣗⣻⢿⣿⣿⣻⣺⣿⣾⣞⣷⣻
⣓⡾⡪⢏⢟⣛⣹⢜⡕⡺⣝⣣⡭⣳⣻⡝⢸⢿⣟⢞⣟⡣⠯⢽⣹⣻⣟⣯⢷⡿⢾⡻⡻⢯⢵⣾⣽⣯⠗⠃⠀⠁⠀⢀⢠⡔⢫⡇⡪⠵⢓⢪⣓⠕⠨⠇⢣⢎⢝⡮⢣⣘⡰⡆⢭⢵⣅⡄⠀⠀⠈⢛⣿⣻⣿⣟⡯⣻⢿⣮⣟⡽⣿⣮⣿⢽⣿⣷⣯⣻⣿⣷⢯⣟⣽⣾⣿⢷⣺⣷⣽⢯⡿⡯⣳⣽⡿⣺⣮⢷
⣳⡽⢮⢜⣞⡯⣝⡳⡝⡣⢮⣻⣎⢳⣯⢵⢞⡮⡻⡽⡯⣽⢿⡳⣣⢮⣯⣎⡚⡺⣽⡲⡺⡿⡺⠪⠊⠀⠀⠀⠀⠀⢀⡲⢅⣑⡇⡪⣝⠣⡨⡢⢜⢂⣩⡎⡅⡸⢵⡎⡱⢣⡅⣓⡜⣙⠏⢕⠅⡀⠀⠀⠈⠘⠻⣽⡽⡿⡯⣽⢽⣷⣷⣿⡽⣗⣿⣟⣻⣾⢷⢷⣮⢯⣷⣟⣞⣿⡿⣿⣾⢿⣿⣽⡯⣿⣻⣯⣯⣞
⠽⡳⢜⢝⣞⡷⢧⢾⢿⢽⢮⣧⡯⡕⣟⣻⢟⠫⣕⣾⣞⢻⢎⣝⢝⣳⢬⣞⢫⢿⡿⢳⢞⠝⠁⠀⠀⠀⢀⠀⠀⡌⡹⣪⢕⢊⠵⠮⣜⣑⣪⣪⣝⣣⣜⣮⡵⡥⣮⢭⢎⢹⡱⡡⡜⡌⡑⠣⠕⠪⢃⠀⠀⠀⠀⠈⠻⢯⣯⡽⣾⢯⣿⡻⣳⣯⣽⣞⣯⣟⢿⣷⣿⣿⣯⣾⡯⣻⣽⣽⡽⣽⣿⣿⣿⣷⣯⣿⣾⣻
⣟⡳⢯⡵⣧⢝⡕⠿⢝⣯⣝⢻⡷⢯⢼⣮⣗⣗⣗⣫⡷⠮⣝⢏⣽⣭⡎⢯⢵⣾⢾⡕⠈⠅⠀⠂⠀⠀⣀⡠⣘⢵⠪⢳⡎⢰⡌⡭⢦⢳⡯⢴⢗⢕⡩⢻⡮⣟⡯⢼⡔⡣⢜⡎⠇⢔⣪⡕⠰⠕⡃⢊⡀⠀⠀⠀⠑⠀⠊⣯⣿⣳⣿⣿⣟⣗⢿⣷⣟⡿⣿⡿⣿⡯⣟⣳⣟⣿⡿⣽⣾⡿⣯⣮⣻⣿⣽⣿⣯⣿
⡽⡾⡿⣺⡽⣞⡻⣪⡿⡽⢗⡺⣧⣇⣽⣜⣷⣝⡏⣎⡝⣮⣾⡝⣟⣳⢯⣟⢽⣯⣵⠠⠀⠀⠀⢔⡽⢮⡨⢸⣘⡨⡱⢼⡏⢅⢎⡎⢵⣇⣔⡳⢪⡳⣑⡳⡗⠫⢕⡵⢮⣆⡪⢍⢜⡊⢣⡌⢔⡆⢡⡑⢡⠂⢤⠀⠀⠀⠀⢈⣮⣻⣿⣽⣾⡻⣿⡿⡿⣿⣾⣿⣿⣻⡯⣷⣿⣿⢿⣿⣿⢾⡽⣿⡷⣾⣿⣿⣾⣿
⣗⡯⢵⢧⢼⢜⡻⣝⣗⢜⢮⢧⣵⡗⢵⡻⣷⣼⣯⡷⡾⢞⣗⡼⣗⣯⣝⣾⣺⡳⠎⠀⠀⠀⣤⡺⠹⠌⠉⢕⠨⠦⢜⡪⢝⡃⠸⣏⢜⢷⡹⡗⢮⣵⣼⣯⡮⣕⡫⢴⢪⡍⣟⡳⡪⢌⡚⡍⢥⣔⣎⢈⡍⢌⠔⢲⡤⠀⢀⢐⠻⣿⣻⣯⣟⣯⣞⣯⡽⣟⣾⣿⣿⣿⣟⣿⣻⣿⢿⣾⣯⡿⣻⡷⢿⣿⣟⣟⣟⣿
⣏⢽⡮⣝⣧⢵⢕⣾⣝⢞⡞⣿⣟⢵⣻⡞⡹⣿⣯⢽⣾⢫⢳⣺⡱⡻⣣⣎⡜⠁⠠⢗⣼⢽⡻⢗⡡⢀⢔⠳⢂⢜⡙⡡⠦⣲⣲⣚⡏⠜⡻⢧⢵⢺⡽⢜⣿⡞⣱⢣⡎⣅⠪⡪⢳⡺⢏⡵⠮⣆⡈⢔⠁⢣⡆⠨⠹⣻⣿⣝⡀⠈⢿⠻⣟⣿⣿⣻⢾⣷⣷⣿⣿⣿⣿⢿⣯⣻⣿⣾⣷⣾⣽⣿⣿⣽⣯⢷⣯⣾
⢿⣳⣪⣝⡿⢹⢾⣾⣝⣺⣻⢣⣞⢿⣯⡽⡽⣟⣫⣏⡽⡿⣽⣟⡮⢾⠪⣈⠁⠀⣰⣯⣟⢽⡻⠣⢎⠥⠒⠢⡑⢃⣂⡘⢾⡎⡪⢵⡮⡇⢮⣮⣕⣓⢿⣵⣽⣷⣽⡷⣗⡺⣷⡪⢜⡨⡺⠋⢲⢞⠪⡱⢊⠫⡈⣎⠐⢾⣿⣻⣾⣷⠀⠢⢹⢿⣿⡿⡽⣷⣿⣿⣿⣿⣿⣿⣿⣽⡿⣿⢿⣾⣿⢽⣿⣟⣯⡿⣿⣾
⢽⢿⢽⡷⢾⣷⣎⢾⡽⡯⢾⢿⡯⢽⡼⢽⡗⢮⣳⣯⣽⣟⣟⡯⣞⡝⢔⠈⠀⣜⣽⣝⢿⣻⡃⠘⢥⡰⠅⡸⠑⠕⡎⡬⢦⣣⣊⣖⡼⡜⣳⡻⡝⣼⣽⡝⡫⣟⣻⢮⢕⣵⣟⣮⣧⢮⢶⡪⠨⢆⢪⢕⠫⢇⠅⠣⠕⠌⣟⣷⣺⣷⡄⠀⠍⡈⣞⣿⣿⣿⣷⣽⣻⣷⣿⣿⣷⣿⣿⢿⣿⢿⣯⣿⡿⣿⣿⡿⣿⣿
⢾⣯⣺⣽⣯⡻⢫⣹⣳⡾⣗⣞⣗⣞⣪⣯⣽⡽⢧⣽⣾⣾⣳⣞⡿⢈⡃⠠⢝⡿⣾⢯⣟⡿⠄⡀⠢⠄⠱⢣⡱⠼⢇⣪⡪⢪⣚⠱⡹⢮⡸⡮⣹⣕⣝⢼⣶⣹⣷⣮⡹⡫⣽⡪⡳⡺⢑⡬⢌⠪⣌⢎⢌⠥⠂⠆⢕⠐⢻⣻⣿⢿⢽⡄⠈⢐⡊⣽⣿⣿⣿⣻⣿⢾⣿⣿⣽⣿⣟⣿⣿⣾⣽⣿⣽⣻⣿⣿⣻⣿
⡟⢻⣯⢞⢺⢿⣮⣵⣞⡳⣯⣯⣾⣿⣗⣯⣗⣽⣷⣿⣞⡽⣽⢯⡇⣸⠂⣸⣯⣻⣿⡻⣳⡎⡢⠂⡠⠬⡑⠣⢎⢮⣣⡕⢱⢵⣚⣱⡮⣾⣟⣫⢮⣞⡯⣧⡗⢪⣷⡗⣟⣫⢵⢓⣆⢎⠭⠬⢌⢥⣎⡒⢳⢘⠃⡂⠌⡁⡈⣟⣾⣿⣿⢿⡄⠁⡠⢞⢿⣾⡿⣿⣽⡽⡽⣟⣿⣟⣿⣻⣻⣟⢯⣻⣿⣻⣿⣿⣷⣿
⢽⣟⣳⣻⣗⢵⣽⣽⣫⣿⣷⣿⣽⣿⢯⡽⣿⣿⣿⢿⣻⣟⣝⢿⠈⡏⠀⢾⢿⣗⢿⣟⣷⡈⢠⡘⢆⡬⠅⢰⡇⣢⢮⣛⣒⠬⢕⡳⢺⣯⣝⣷⡵⢕⢿⡿⡻⢿⣮⣷⢿⢯⢹⢽⣕⢊⡊⣎⣑⠯⡳⢏⢐⡸⡢⡘⡑⢢⠔⣿⣿⣿⢿⣿⣿⠀⢘⡄⡾⢿⣷⣿⣿⣿⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣿⣿⣷⣽⣿⣿
⣿⡼⣯⢟⣞⣯⣿⣾⣿⡺⢽⣽⣳⣯⣿⣻⣿⣷⣿⣽⣟⡿⣿⡿⢤⠅⣸⡾⣿⡷⣮⣿⢿⢕⡑⠊⠄⢨⢒⢨⡼⢪⢜⣍⠵⢱⡽⡷⣞⡣⡟⢳⡇⢼⢕⣺⢧⡗⡹⡷⡕⣛⣓⢞⣝⡵⡢⠼⢳⡝⡳⢭⡨⡸⡝⢣⠥⡠⢨⣺⢯⣿⣷⣾⣿⣗⠀⠇⢪⣷⣿⣿⣻⣿⣻⣷⣿⣿⣿⣿⣿⢿⣽⣿⣿⣿⣿⣿⣿⣿
⣯⣾⣻⣮⢟⡻⡿⡳⢿⣟⣳⣷⢿⢿⣾⣿⣻⣿⣯⣟⣽⣿⣿⡇⢸⡔⢿⢿⣯⣽⣿⣿⡛⠨⡃⠱⠇⢨⢍⢪⠪⢝⡭⢣⠳⡸⡫⡎⡯⢫⡪⠹⠥⣘⠩⠽⢪⡓⢼⣳⡎⢸⢾⢮⢽⣳⢿⢔⣳⣸⡖⠏⡣⢢⢐⡔⡉⠃⢂⢩⣷⡿⣳⢯⣿⣿⠀⢪⠨⣿⣿⣿⣿⣿⣿⣿⣿⣿⣾⣿⣷⣿⣿⣿⣿⣿⣟⣟⣿⣿
⣫⣫⣽⣞⣷⣟⣽⢷⢷⣾⣽⣝⣞⣻⣟⡯⡿⣗⣽⢷⣞⣳⣿⡃⢹⢆⣿⣿⣾⣟⣿⣿⣖⡐⡨⢕⠰⢇⢙⠅⢄⢨⣔⢬⣣⡂⡂⡁⠀⡈⠐⠑⢪⢥⡘⡯⢮⣕⣎⡞⡐⠢⠢⢀⠂⡀⡠⠦⡓⢕⣓⡜⠜⢱⠢⢔⠃⠨⢅⢌⣿⣽⡾⣿⣿⣾⡧⢜⠄⡿⣿⣿⣿⣿⣽⣽⣻⢿⣿⣽⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣽⣿⣟⣝⡿⣿⣷⣺⣾⣿⣗⣽⣽⣽⣻⢽⣾⣽⢯⣽⡳⡽⡷⢇⠐⠎⢟⣟⣽⣿⣟⣟⡇⠈⠃⠸⠦⢆⢁⢐⢜⡩⠪⡉⠃⠂⠃⠄⢈⡐⠀⠠⠄⢈⡇⣱⣎⢞⡑⢒⠁⠀⠀⠐⠀⠂⠺⠹⡋⢹⡏⢌⢅⢂⣂⠬⢡⠤⠂⠃⣺⣿⣿⣿⣻⣿⡗⢑⡈⢿⣿⣻⣷⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⡿⣻⣯⣿⣻⣿⣿
⣻⣟⣿⣯⣟⣿⣮⣿⢯⣻⣷⣿⣷⣮⣽⣺⢾⣽⣷⣿⣿⣿⡿⣧⠀⡊⠐⠏⠉⠉⠁⠚⠣⠣⠢⠑⡑⠇⠂⠐⠅⠀⠂⢄⡁⠁⠈⢂⡮⡑⠔⠠⠡⡂⡅⡜⣽⡣⢌⠀⡂⢈⡌⠀⡄⠄⠖⠄⢄⡀⠒⡈⢜⠒⡓⠣⠨⠢⠅⠀⣿⡿⣿⣿⢯⢿⡯⠹⠠⣽⣿⣷⣿⣿⣟⣿⣿⣿⣿⣿⣯⡿⣷⣿⣿⣿⣿⣿⢿⣽
⡯⣟⣻⣕⢾⡿⣿⣻⣻⣾⣗⢽⡿⣻⣽⣿⣿⢿⣿⣿⢿⣾⣿⣿⢢⠀⠀⠀⠀⠀⠈⠀⠀⠊⠁⠸⡣⠬⠙⢄⡰⢂⢲⠆⢊⣔⣈⡦⢪⡭⣕⡚⢗⡎⢱⡯⢗⡮⣔⣒⡪⠅⣨⢸⡳⠅⢄⠠⢵⣂⡂⠀⡑⢢⢐⡢⡅⠡⠀⡀⠈⠀⠈⠡⢸⢹⠀⢃⠠⣿⣯⣾⣿⣻⣟⣿⣿⣿⣿⣟⡿⣿⣾⣿⣻⣿⣿⣿⡿⣿
⡯⣟⣷⣿⣿⣻⢟⣻⣯⣿⣷⢾⢷⣷⣯⣳⣽⣿⡽⣻⢿⣿⢿⣯⠃⠀⠀⠀⠀⠀⠀⠀⠀⠐⠐⠘⡱⢫⣕⡨⢍⢜⣇⡹⠳⢢⣌⡱⣚⢱⡪⡺⢍⡞⢗⡷⢝⡫⡑⣕⣹⢪⣗⢵⡭⡪⠪⣑⢎⡺⣦⡬⢬⣪⡜⢲⡃⠡⠈⠀⠀⠀⠀⠀⠀⠙⠀⠔⣵⣿⣿⣿⣿⣿⣿⣿⣯⣿⣿⣿⣾⣿⢿⢿⣿⣿⣟⣟⣿⣿
⡯⣿⣝⣝⣿⣽⢿⣷⡾⣟⣿⣾⣷⣳⣷⢷⣿⢿⣷⣻⣽⣿⡿⢧⢀⠀⠀⠀⠀⠈⠀⠁⠀⠀⠨⣕⣦⡮⢯⣎⣕⢮⢅⣎⣣⡼⣾⢧⡮⢕⣺⣞⡇⡪⡑⣳⣕⣌⡰⢵⡝⢿⡳⣗⣺⣯⣵⡻⢮⡲⠎⡨⢳⢷⡖⡊⢡⢨⠊⠀⢀⠂⠀⠀⠀⠀⠀⠄⣻⣽⣿⣷⢷⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣽⣿⣿⣿⣽
⣿⣻⣿⣽⡽⡷⢾⣻⣟⣿⣳⣷⣽⣯⣿⣟⣷⣟⡯⣞⣿⣟⣯⠆⠁⠀⠈⠐⡀⢄⠐⠀⠀⠀⢔⢨⢂⢜⡕⡼⡷⣼⣣⣞⢽⢜⣇⡕⠵⢇⡮⡺⢖⡅⡺⢮⢷⣝⠩⣜⣳⣻⣽⣎⢣⣯⣪⢟⡚⡣⢕⣵⡶⢣⢪⡠⠢⢢⠀⠀⠀⠁⠈⠀⠀⠄⠀⠄⠸⣿⣿⣿⣟⣿⣿⣿⣿⣾⣿⣿⣿⣿⣿⣝⣻⣿⣷⢿⢷⣽
⣿⣿⣯⣻⣿⣿⣗⣾⣞⣻⢽⣷⣻⣯⣽⣯⣳⣿⣿⣾⣽⣷⣽⠄⠀⠀⠀⠀⠕⠊⠄⡀⠀⠀⠐⠱⡌⣿⠏⠺⢦⣕⡣⡕⣯⣿⢯⡭⡾⢳⢕⡸⠵⡩⢦⣕⣶⡳⢕⠌⣙⢃⡽⣣⢞⣻⢯⣵⡝⡫⡝⢜⡎⣇⡨⠗⡐⢄⡀⠄⢀⠀⠂⢔⠧⠀⠀⠈⠑⣺⣿⣿⡿⣿⣯⣟⣿⣿⣿⣽⣿⢷⣿⣿⣾⡿⣯⢽⣿⣿
⢷⡿⣿⣝⣷⣿⣾⣿⣯⡿⣷⣝⣾⣿⣾⡿⣝⣾⣯⣿⣯⢿⣳⠬⠅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠘⡣⢪⢬⣕⡝⢃⡺⣳⡻⠽⢶⡝⠵⣳⢣⡦⢎⠳⡎⣕⡿⢳⡽⢒⡪⡞⣸⡪⣢⡳⣽⢳⢷⣻⡇⡲⢇⢱⢊⡠⢄⠌⠡⠄⠀⠨⠀⡂⠈⠀⠈⠠⠂⢿⢿⡺⣿⡿⣺⣿⣿⣿⣯⢿⣯⣽⣿⣿⡿⣻⣿⣾⣿⣾
⣯⣿⣻⣿⣯⣟⣻⣳⣻⣿⣿⣯⣷⡿⡿⣻⢿⣿⡿⣾⡿⣿⣿⣪⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠄⢁⠱⢒⡸⢣⢵⡵⡳⡮⢿⣝⢺⡷⣻⡮⡣⠽⢮⡙⢿⣳⠅⡨⠢⡑⢣⣕⡎⣣⠸⢎⣞⡫⣝⡑⢳⣕⡪⡘⢂⡨⠄⠀⠀⠀⠀⠀⠀⠀⠀⠁⢀⢰⣝⣻⣿⣿⣿⣿⣿⣿⣟⣽⡽⣿⣽⣿⡳⣯⣯⣿⣞⣿⣿
⡯⣻⣯⣯⣻⡻⣿⡿⣯⡽⡻⣟⡯⣺⣷⣗⣺⣿⣿⣿⣞⣿⢿⣽⡢⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠨⡃⡈⠫⠨⢎⣗⡡⣕⡪⣝⡸⢪⢳⠳⠌⡈⢂⠱⡊⢌⠢⠆⢊⠕⡨⡟⡕⢺⢯⢇⢸⡌⣜⣫⡕⢙⡱⢓⠈⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⡂⣞⣿⣿⣿⢿⣿⢿⣽⣻⣗⣗⡿⣻⣿⣿⡿⣿⣷⣿⣿⡿⣿
⣽⣿⣺⢿⣿⣿⣿⣟⡿⣾⡿⣷⣽⣿⣿⣟⣯⣮⣿⣗⣟⣯⣟⣞⡿⣅⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠘⡕⡄⡉⢁⠸⣵⢪⡜⡣⡚⢩⢽⠨⠄⠀⠠⢐⢈⠂⠀⠀⠀⡑⡲⣚⣓⢽⡪⢜⠼⢣⢕⣃⡂⠡⡌⡑⡂⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢰⡽⣻⣮⢽⡿⣿⣿⡿⣻⣿⣻⢿⣿⣿⣿⡯⣻⣿⣿⣺⣿⣽
⣽⣿⣿⣯⣷⣿⢯⣽⣿⣿⣯⣾⣿⣽⣽⣿⣿⣷⣿⣽⣿⡽⣿⢷⣯⣷⡧⠄⠀⠀⠀⠀⠀⠀⠀⠠⠅⢣⣘⡡⠀⠂⠜⡪⢸⡜⢑⣲⣕⣙⢣⣢⢎⡨⣕⡠⢔⡪⠎⠅⢑⣪⡞⢗⣜⡩⢇⠧⢢⢌⢈⢑⢱⢆⠅⠢⠪⠀⠀⠀⠀⠀⠀⠀⠀⢀⣰⡽⢿⣾⢽⣯⣟⡿⣿⡿⣽⣿⣿⡿⣿⣿⡷⣿⡾⣗⣽⣿⣿⣿
⣾⡿⢾⣿⣟⣳⣟⣟⣾⣯⡿⣾⣿⡿⣿⢾⣿⣷⣾⣯⣿⣾⣾⣟⢟⡯⣷⢿⣄⠀⠀⠀⠀⡠⣄⣺⡅⢠⠆⡃⡢⢆⢂⡎⣙⣙⣨⡞⢝⣳⡮⡒⠮⡳⣕⣣⡪⢕⢔⢒⡪⢜⣹⢝⢲⣮⡦⡘⢇⠌⡃⡜⢣⠡⠲⢊⢀⠀⠀⠀⠀⠀⠀⠀⠀⢾⣾⡷⡯⣳⡯⡽⣺⣿⣿⢿⣽⣽⣟⣿⣯⣿⣿⣿⡻⣷⣝⣽⡽⣟
⣿⣷⡾⣿⣳⣷⣿⣽⣻⣯⣾⢿⣟⡻⣻⣿⡷⣿⣯⢽⣟⣿⣿⣾⣻⣻⡺⡯⡟⢮⠂⠠⡸⡫⣕⣫⢌⠡⠠⠣⡜⠨⢇⡐⣊⢅⢧⡽⢓⣌⢝⢝⢆⡮⠇⢁⣠⡓⡪⡑⢓⡣⢋⢨⢌⢧⢎⢭⢅⢆⠪⢣⢆⠠⢂⡂⡪⢢⢄⢀⠢⠄⠀⡠⢼⣾⣟⡮⣮⣽⣳⣷⣿⣽⣽⣾⣽⣿⡿⣿⢿⢿⣽⣿⣗⣻⣟⡿⡿⢿
⣿⣯⢿⣽⡿⣞⢿⣾⣿⣟⡿⣷⡾⢽⣽⣯⢽⣟⣟⢿⡿⡯⢽⣯⣿⡳⣿⣟⣟⣳⡆⠂⣝⣽⡖⢩⡣⢌⠜⠪⠡⡎⢹⢣⡠⡥⠌⢪⠵⢑⡪⢇⡚⢳⣝⡏⡖⢍⢇⢞⢢⠞⡓⡙⠹⡸⣂⡑⢃⡡⢇⠸⡌⠃⡠⢅⢨⣃⢅⡗⠣⡐⡰⢖⡝⡺⢷⣻⣫⣽⢵⣯⣺⣻⢿⣿⣯⣿⣿⣿⣿⢾⣷⣿⡯⣻⣻⣽⣯⣟
⣻⢿⣟⣻⢿⡿⡯⡻⡻⣿⡮⡷⣝⣿⣟⡻⣟⡻⣽⣿⣿⡯⣵⢽⣞⢾⡿⢾⣧⣽⢵⠄⢩⡹⢊⢎⠳⡄⠱⢢⠓⡖⢓⣑⢣⢌⠢⢍⠐⠉⠂⠑⠠⢂⡈⠬⠊⡰⠁⡑⢊⡱⢊⡱⠅⢄⣁⠰⢆⡑⢬⣊⣌⠰⢀⠠⠅⡡⢄⢙⠀⠂⣊⢺⠷⡸⡎⡯⣸⢺⡿⢿⢯⣯⣻⢿⣷⣟⣿⡯⣿⡿⣯⣿⡿⣿⢷⢿⣿⣯
⣮⡿⣯⣿⣺⣾⢿⡿⣻⣗⡿⣿⢿⣽⢷⣿⣽⣷⡿⣷⢿⣷⡿⣯⣾⢽⢷⡯⣽⡷⡏⣔⠐⡎⠝⢈⡪⠑⠡⡨⠕⡣⡑⠧⡰⠥⡈⠀⢌⡀⠄⡈⠰⠨⢡⡔⡨⢬⢅⡨⠅⠨⡐⢈⠤⢊⢢⡔⢙⢀⡅⡥⢔⡁⠔⠄⠢⠕⠡⢌⡁⣐⢆⢄⢳⡗⢿⣯⢜⣳⣯⣗⢾⣿⣯⣿⢷⣺⣿⣟⣷⣿⣟⢿⣿⣯⣿⣿⣻⣯
⣺⣯⣿⣯⡽⣗⣽⣾⣟⣾⣟⣾⣾⣽⣽⢽⣷⢿⢾⢿⣽⣻⣗⢿⣿⡾⢧⡕⡎⠭⢮⣪⡊⠕⢊⡡⣊⠨⠂⡨⢋⠥⢘⣊⢅⢐⡊⠓⢣⠱⢑⡱⣁⡨⠼⣏⠦⢘⣇⡣⡜⠊⡃⡕⠒⢣⠜⡢⡐⢢⢑⡘⠡⠈⡀⠪⡂⠀⡐⢈⡊⡑⠨⠪⢕⡩⠵⡻⡾⣟⡳⣗⣯⣿⣾⣿⣟⣿⣿⡯⡯⣳⡿⣻⣟⣿⢯⣷⣿⣷
⣯⣿⣿⡳⣻⣿⣿⣿⣿⣿⣽⣟⣯⣟⣷⢿⣾⣻⣮⢵⢽⡷⣿⣽⣾⣾⡯⣕⣕⡝⡫⡳⠪⠌⢌⢀⠐⠡⡠⡐⠈⡓⠎⡕⡥⠎⢓⢵⢘⡣⠪⢈⠱⠠⠨⠊⠐⠈⠀⠑⡆⣒⠓⡘⡑⠸⠜⠢⠬⢇⡢⠄⡈⠂⢀⡪⠅⢈⡈⠀⠈⠅⠐⠣⢝⡝⢸⡳⢯⣻⣿⣟⣮⣾⣻⣳⣻⢿⣟⣾⣽⡽⡿⢽⣽⡷⣷⢿⣿⢯
⣷⣿⣿⣻⣽⡿⣻⣿⣽⣳⡽⢿⣟⡯⣳⢽⢾⣷⣻⣽⣺⣿⣯⡯⣷⣵⣜⣞⣜⢽⢏⡓⠬⢂⢄⠨⠒⠠⡐⢂⠠⠌⡪⡌⡃⡨⠎⡡⢅⢑⡪⠢⢢⢆⣐⣆⢔⡂⠁⢡⠪⡣⢆⡩⢬⢪⡑⠎⡃⠑⠢⠈⠐⡈⠁⠀⠄⠢⠀⠔⠀⠠⡜⠙⣉⡝⢞⡿⢝⡯⣻⣾⣯⢽⢿⡿⣯⡺⣽⣿⡿⣷⣽⣷⣿⣿⢷⡿⣽⣗
⣿⣟⣟⣗⣿⣿⣿⡵⣗⡿⣿⣾⣽⣯⣾⢿⣿⣗⡮⣳⣿⢷⣿⡿⣟⣽⣏⣵⡝⢳⡦⢾⡵⢂⠔⡅⠩⠕⢕⡐⡂⠀⠬⢃⡁⢆⡇⡱⢪⢧⣎⡽⢕⣺⡺⢵⡖⡸⡛⡧⣸⢦⠬⢢⡪⣕⠀⡨⠰⠊⢌⡀⢐⢂⠀⠢⡑⢂⢁⠐⢀⡂⠅⣝⡫⣝⣎⣧⣯⡵⣟⣻⡽⣻⣿⣿⣾⢯⣿⣽⣻⣟⣟⣺⡯⣿⢾⣯⣷⣿
⣽⢾⣿⡷⡮⣻⣻⣽⣿⣿⣗⣿⣯⢾⣻⣿⣯⡿⣳⡮⣿⡿⣿⣿⡮⣻⡹⣻⡯⢷⣨⡷⡏⢕⢑⠣⡘⡢⠪⠨⡕⠂⠄⠀⠁⡘⡆⠰⢎⡘⡒⣪⢆⡎⠵⢪⣼⣜⡲⢇⢜⡨⢹⢆⡢⠌⢈⠁⡀⠨⢂⢀⡨⠠⠁⢁⠂⠠⡠⢂⡆⢰⡈⢜⢗⢲⠲⢷⡼⢿⢯⣽⡮⢽⣿⡽⣿⣗⢯⣾⣿⣯⢯⣷⣿⣝⡿⡯⣽⡳
⡿⢗⣟⡿⣞⣮⣷⣻⣿⣿⣟⣯⣻⢷⣷⣿⣟⡷⢿⣗⢽⣷⣻⣿⣿⢿⣪⣽⣗⢽⡷⠷⡏⡕⣕⠩⣆⠠⢄⠄⠑⠨⡠⢂⠠⠁⠑⠊⠡⢸⡰⠣⠡⡕⢂⣑⣊⢕⡲⢃⠪⠄⠍⠩⠪⠀⠀⢀⠈⢄⣂⠌⠁⠀⠁⠀⡂⠅⡊⢡⠲⣒⣞⠵⢎⢜⢵⡲⣝⣪⣯⢷⣾⣞⣯⢽⡷⣻⣻⡵⢯⣿⢽⣿⣿⢿⣿⡯⣿⣝
⢾⢮⣽⣿⣗⣿⣳⣟⢾⣿⡽⣾⣿⡽⢿⢿⣻⡷⣿⣽⡿⡽⣽⣞⣾⣟⣻⣯⣽⡫⢝⢮⢕⣑⣱⢆⢪⠀⣞⢁⡆⢕⠡⡌⠂⠠⢄⠄⢀⠐⠄⠔⠂⠂⡂⠐⠅⠈⠌⢀⠠⠅⠀⠀⠄⢄⢐⠜⠑⠢⡪⢀⣼⠀⠁⠠⠁⡂⢢⡢⠦⢕⢪⡝⣫⡾⣓⡕⣞⢷⣻⡿⡿⣻⣷⣾⣻⣿⢿⣾⡯⡿⣝⣽⣿⢽⣽⣗⣮⣯
⣞⣿⣽⢯⣻⡯⣻⣿⣿⣗⣻⣯⣗⢾⡯⣯⣿⣾⣯⣟⡷⣿⣾⣺⡯⣵⡯⢷⣿⢷⣝⣽⢕⢽⢮⢌⠡⠁⢕⢯⡜⡑⠪⢐⠄⣈⠁⠂⢀⠀⠈⠄⠈⠐⠐⠄⠀⠀⠁⠀⠀⠀⡀⡁⢀⡑⠠⣀⢲⡆⠙⣳⣟⠁⠀⢊⡓⡢⠢⠳⡪⡹⡵⢞⣛⡵⢫⣼⡽⣮⢿⢯⣞⣕⣯⢯⢿⡾⣽⣷⣗⢷⣿⢾⣻⣟⣿⣷⢿⣯
⣿⣯⣿⣻⢟⣷⣟⣝⢿⡯⣽⣾⣯⣯⣮⣾⣻⢿⣽⣷⢽⡿⡷⣷⣽⣿⣗⣽⡹⡽⣝⣽⣗⣱⢽⡕⠀⢀⠐⢇⣿⣖⠣⡃⢄⡐⢂⡊⠐⢑⠢⠀⠠⡀⠀⠀⢀⠐⠂⠀⠐⠡⠄⠈⠠⠐⠱⠇⢌⢑⣿⣇⡈⠠⠀⠘⣃⢌⡕⣔⡱⡸⣍⢯⡮⢽⡵⣸⡳⣾⢮⢷⣗⣗⣻⣞⣻⣗⣗⣿⣾⣿⣽⣿⣿⢿⡻⢷⣕⡽
⡷⡾⣿⣗⣻⡾⣽⣽⡿⢿⣻⢿⣝⣿⣟⣾⡳⢽⣻⣾⡯⡿⣿⡿⢯⣝⣽⡮⣳⣞⢿⢯⡻⡮⢷⠄⡀⠀⠀⠀⢚⢻⣿⣗⣝⡔⡅⢠⠆⡐⠢⢂⡑⠅⢌⡑⢐⠠⠂⢈⢈⡈⠅⠂⠡⢪⢘⢮⣞⡳⠏⠁⠀⠀⠀⠀⠈⠁⠡⡍⣦⣆⢫⢯⣶⢼⡯⢕⣿⡿⣟⣫⡿⣿⣷⣝⡻⣯⡾⣷⡮⣿⡽⣯⣯⢷⣾⣝⣟⡷
⡽⣿⣗⢯⣟⣞⣽⡾⣮⡯⡾⢿⢽⣻⣻⢯⣽⡿⣟⡯⣺⣿⢽⢾⣗⡽⣻⣝⣾⣞⡻⠼⢋⠁⠀⠁⠀⠀⠀⠀⠀⠀⠈⠫⣟⣕⢾⣶⣪⣔⣌⠄⠰⢱⢣⡕⡂⠠⠐⡐⡈⠌⢌⢌⢥⣽⡽⢿⠹⠃⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠈⠘⢚⣮⣣⣾⡽⣵⢾⢾⣻⣞⣗⡳⣻⣿⣳⣳⢿⣟⣯⡻⢿⢿⡫⣻⡳⢻⣯
⡺⢷⣯⣻⣻⣺⣯⣝⡻⣳⣽⡿⣾⡯⣳⣽⣿⣷⢿⣾⣻⣯⣾⢿⡯⠿⠚⠓⢁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠛⢻⢷⡷⣫⣿⣳⣿⣯⣻⣿⣝⡳⣻⣽⢞⣕⡺⠽⠙⠌⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠉⠙⠫⢯⣯⢷⣟⣝⡳⣻⡯⡎⣺⣳⡿⢻⣿⡯⣻⢿⣟⡪⢽⢿
⣻⢾⣾⣳⢿⡻⣞⣽⡮⣽⣟⣿⣟⡯⣯⡿⣟⡽⣯⡿⠞⠙⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠙⢯⣿⣽⣯⢷⡽⣳⣺⣇⢼⡟⠃⠄⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠈⡉⠛⡻⢽⢕⣻⢿⢿⣾⢿⡫⡿⣽⢫⣽⢷⣿⣽⣿
⢯⣗⢻⣺⣻⡯⣕⣺⣻⡯⢽⣯⣫⢯⡛⠛⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡯⡟⣺⣮⣯⣗⢷⡯⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠩⠓⢫⢟⢾⣷⣇⢾⣺⣿⡿⢿⣽⢯
⣏⡻⢯⣽⣞⡽⣯⣟⡮⢿⠫⠉⠀⠂⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠁⠅⣜⣫⢯⣏⢝⡽⠂⠀⠠⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⡀⠀⠀⠀⠀⠀⠌⠘⠮⣵⡗⡯⣮⡺⢧
⢝⢷⢯⣫⣟⣻⠽⠋⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣺⢧⢺⣗⣪⡇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠌⢀⠄⠀⠡⠀⠀⠀⠀⠀⠀⠀⢀⠀⡀⠀⠀⠀⡀⠀⠀⠀⠀⢁⠀⠉⠮⢿⣗
⣝⢿⣏⢏⠩⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠑⡛⠓⠊⢓⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠊⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢘⢆⢰⡎⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠈⠀⠀⠀⠀⡀⠂⠈⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠐⠁⠀⠀⠀⢀⠂⠀⠀⠂⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠨⠱⠮⠇⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠌⠀⡀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠁⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠠⠐⠀⠀⠀⠂⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠠⠀⠀⠀⡀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠂⠀⠈
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⢀⠀⠀⠀⠀⠄⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠁⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠂⠀⠀⠀⠀⠀⠀
<?php
/*
______ __ __ __ _____
| __ \.----.---.-.|__| | |.-----. | \.----.-----.---.-.--------.-----*
| __ <| _| _ || | | || -__| | -- | _| -__| _ | |__ --|
|______/|__| |___._||__|__|__||_____| |_____/|__| |_____|___._|__|__|__|_____|
Convert images to unicode braille with error diffusion.
This code is a PHP script that converts an image to unicode braille using error diffusion. The
script starts by setting up the PHP environment, and then checks if the required parameters
for the image name and width are provided. It then reads the image file, scales it to the
specified width, and converts it to grayscale and increases the contrast. The script then
uses the Floyd-Steinberg error diffusion algorithm to process the image. Finally, the script
maps the image pixels to the appropriate unicode braille characters and outputs the result.
Note: braille is 4x2 pixels, but it's processed as 5x3 due to the whitespace between characters.
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿
⣿⣿⢿⣿⣿⣾⣿⣿⣿⣟⣿⣿⣿⣿⣿⣿⣿⣿⢯⣿⣿⣿⡿⣿⣿⣿⣿⣽⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⡿⣿⣿⣿⣿⣿⣿⣿⣿⣽⡿⣿⣿⣿⣿⣿⣿⣿⣷⣷⣽⣿⣿⣽⣿⣿⣿⣿⣿⣿⣞⣿⣿⣿⣿⣿⣽⣿⡿⣿⣿
⢿⣿⣿⡿⣟⣿⣿⣿⣻⣿⣿⣿⣟⣿⣿⣟⣿⣿⣿⣿⡿⣾⣿⣯⣿⡿⣿⣿⣿⣗⣟⢽⣿⣽⣷⣟⣿⣿⣾⣿⣿⣿⣿⣿⣟⣽⣷⣷⣻⣿⣿⣻⣿⣯⣿⣿⣿⣯⢿⣿⣿⣿⢿⢯⣿⣿⣿⣿⡯⡿⡷⣽⣿⣿⡿⣿⣿⣿⣿⣷
⣿⢿⣽⣯⣻⣟⣿⡾⡿⡿⣿⣿⣯⣿⣿⣿⣿⣿⡮⢾⣾⣯⣿⣿⣿⣯⣿⣿⣟⣷⡿⣿⣿⣳⣿⢿⣿⣿⣿⢿⢿⣟⣿⣿⣿⣟⢿⣿⣿⣷⢿⣷⣿⣿⣾⣿⢽⡿⢿⣿⣿⣿⡿⣟⡿⣿⣿⣿⣟⣿⡿⣿⣿⣗⣿⣻⣿⣿⣯⣿
⣯⣗⣿⣯⣷⣿⢿⣟⣟⣻⣿⢿⣿⣷⡿⢯⣽⣝⣿⡿⣾⣽⣳⡯⣟⣿⣽⡽⣿⣿⣷⣞⣞⣿⢯⣟⣿⣟⣟⣽⣻⣝⢿⣾⣾⡿⣟⣿⣿⣿⣿⣟⣺⡾⡽⣿⣷⣿⣞⣯⢿⣿⢿⣿⣯⣿⣿⣾⣿⣿⣿⣾⣷⡿⣿⣞⢷⡿⣻⣟
⢿⣿⣷⡽⣿⡯⢷⣻⡾⢿⢯⢿⣷⡿⣽⣿⣿⣿⢿⣷⡻⡷⣽⢷⣾⣯⢾⣿⣿⢿⢿⣻⣯⣽⣯⣿⣽⣿⣟⣞⣿⣟⣿⣳⡷⣯⣯⣽⢯⣿⣿⣯⣾⣺⡽⣻⣿⣷⡯⣾⣟⣿⣻⣺⢿⣷⢯⢿⣻⣿⢿⢿⣯⣻⣿⡿⣝⣗⢿⣯
⢷⢯⣿⢟⡿⣿⣫⣯⣻⡷⣻⣟⡳⢿⡾⢽⣷⡮⣺⡿⡷⣞⢯⡮⣷⢷⣝⡿⣽⣟⣾⡻⢮⣽⣽⣽⣗⣷⣽⣟⣿⣷⡿⣟⣻⣗⢯⣿⣵⣺⣳⣿⣟⣿⣺⡯⣯⡿⣝⣯⡯⣯⣻⣝⢿⣯⡷⡽⢿⢿⣽⣾⡾⢝⣿⣷⣟⣟⡮⣟
⢾⣟⣿⢿⣿⡽⢷⣻⣝⡾⢽⣮⢞⣺⢮⣻⢿⢾⣗⢿⣿⣝⡻⢿⣻⣮⣵⢳⢯⣾⣿⣟⣷⣻⢟⡫⡯⣯⣳⡿⡾⢿⣷⣞⢿⣻⣻⡽⢿⣯⣿⢗⣳⣞⣻⣯⣻⣿⣿⣿⡮⡽⣾⡿⢽⣿⢷⡿⢽⣞⣽⢷⣞⣿⣻⣽⣷⣟⣻⢯
⡽⡿⡽⣻⣳⣾⣿⣯⣷⣾⣗⣺⡿⣳⡷⣯⡾⡽⡻⣗⣮⣞⡾⣻⣟⣽⡺⣯⣯⣺⣷⡺⢾⡯⣷⡳⣽⢾⣟⢿⣯⣝⢿⢧⣞⣻⣷⡷⣮⣽⣷⣻⣿⣯⣳⡷⢯⣳⡻⣻⣵⡧⢽⢮⣺⣿⡯⣯⣻⣯⣺⣺⣽⣵⣽⣿⣽⣯⣫⡵
⡻⢿⢮⣯⣧⡽⣝⣯⡷⡺⣺⢕⣻⢞⣷⡎⢷⢾⣽⣮⣟⢮⡾⣟⢳⣼⣿⢯⡽⣯⢾⣎⣟⡻⣽⣞⡿⢪⣳⣻⣽⣗⣹⣫⡽⢿⡺⢯⣮⢷⣗⣯⣿⣾⢽⢿⣗⣷⡯⢽⡷⣻⡮⡳⣻⣧⣝⢻⣻⡟⣳⡽⢪⣿⡺⣗⣗⣯⡳⣟
⡿⡯⡯⣽⢇⡟⣫⣽⣫⣷⣗⣗⣻⡯⢻⡳⡮⣗⡗⢹⢗⣝⣺⢽⢿⣯⣞⣾⣽⣟⣵⣧⡳⣾⣳⢿⢮⢽⣷⣿⡷⢯⡝⢳⣞⡮⣳⡾⣽⡷⡷⢿⡯⢮⡻⣻⣝⢺⡞⡳⢽⣞⢱⢽⡞⢯⣮⣾⣾⣯⣏⣗⢮⡽⢻⢮⡳⢞⣲⣳
⣎⡪⢽⣳⢼⣳⢾⡗⣯⢗⢽⣫⡻⣝⡛⢮⣎⣻⣻⣷⣞⡽⡽⣻⢷⢧⣏⡽⢟⡻⡮⣱⢞⡣⣍⣾⣼⡟⢗⣻⡯⣏⢎⣏⢷⢾⡗⢽⡸⠳⣝⢸⢽⡽⢞⡽⢺⠯⣝⣻⡳⣺⢽⣝⢾⣮⡬⡵⢷⣻⢯⢾⣣⣇⣝⣗⡻⡗⡳⣮
⢇⢙⢫⣞⢗⣭⢵⣼⣵⡗⡹⢏⢭⢕⡾⡓⢮⡷⡽⢺⣏⣭⢾⢭⢝⣗⢷⢯⣺⢷⡫⢸⣜⡱⢫⢯⣙⡳⢌⡱⢗⢿⢮⡳⡵⣽⣓⣻⣽⣿⢿⡗⣯⣕⢱⢗⡮⢾⡗⡳⣝⣕⣸⡧⢸⡪⣲⡗⡸⣫⡯⢸⣻⡳⣓⢖⣖⢎⣜⣓
⡾⡮⢚⣝⡧⣵⣧⡪⡺⢎⢢⢭⡭⣝⣜⣮⣿⠯⢲⡝⡛⡓⢽⡝⢣⣜⠷⢮⢏⢮⠵⢮⡹⢜⡶⡆⢮⣻⣓⢽⡇⣾⡎⢹⣜⢾⢗⣚⡓⢽⣗⡯⠵⡺⣗⠫⡱⣕⡝⡲⢭⣕⡱⠸⣮⢮⢏⢱⣚⡙⡮⣯⡕⣎⡿⣻⡕⣳⡺⢽
⢿⢗⡨⢷⡝⡿⢭⢎⡱⢏⣻⡯⢱⡹⢕⢾⢗⣱⡭⢼⡮⡵⢳⣑⢲⡿⢗⢸⣗⡸⣵⣎⡕⢼⡏⢎⡮⢖⢧⢞⣳⡔⣚⡼⢯⣟⡝⢧⡷⣓⡽⢹⣏⠳⢱⢷⡪⢳⡮⢯⢎⢳⢜⢖⣲⡺⣍⣙⡝⠮⣵⢾⡮⠯⢽⡣⠮⠵⠽⢯
⡿⣕⣝⡟⡫⣎⣎⡍⢎⡺⠝⡢⢷⡗⢜⠕⢓⢯⡕⢓⢚⡯⠵⣪⡗⣓⣒⡭⡣⡕⢯⡗⢗⡺⢮⡞⢝⠮⢼⢕⢢⣜⣺⡝⣫⢵⣕⣍⢞⡯⢳⠮⡱⢶⣝⣫⡗⣪⢬⡼⠹⢞⡥⠪⢫⡏⣻⢑⢞⣝⡝⢜⡵⠯⢕⣚⣞⡜⢜⢔
⣚⢮⣚⣫⢔⣮⢳⢎⠹⣪⡽⢲⣗⡲⠹⣳⢯⢜⡺⢿⢗⣜⢱⢵⣮⢿⢲⠤⢽⢗⢕⢇⠧⢕⢪⠭⡽⠷⠭⣸⡕⡪⢷⡪⣍⣪⣫⡖⢻⢞⡧⢱⡚⡫⠎⠵⢒⢯⡩⢑⣸⠕⢹⢸⢽⢪⣝⡟⢾⢳⡯⡆⡪⠪⢝⢺⠽⡞⡣⢬
⢎⣹⣃⣝⢇⣎⢍⡣⣎⣎⣎⡓⠧⢕⢗⡩⢯⢝⣳⡪⡱⠼⢪⡗⡪⡕⡺⣚⡫⢎⡍⢹⡨⢪⡪⡲⠭⡸⢣⠫⣯⠕⢫⠮⢳⡎⣕⢣⢾⢯⡎⡧⢜⣂⢕⠎⢳⡪⢕⢸⢞⣣⡎⣙⢌⡹⠷⢢⡞⢒⣞⣘⡹⢯⣕⠝⣚⣕⣚⡺
⣣⡞⡩⡩⢌⢳⣊⢜⡸⣓⣎⡦⡓⠽⢏⡣⢔⢩⠭⣆⣂⡱⡕⢺⡑⢆⠵⠸⢫⡲⣎⠎⢲⢃⣘⡢⢪⡘⢮⢌⡹⣗⢕⡺⢇⢌⣕⡪⠭⢝⡓⡱⢇⢳⢎⢬⠪⢢⢗⠣⡐⢒⡑⠮⢵⡧⢍⣒⡅⢜⢳⡕⣅⠤⡙⢹⢭⡕⢏⡦
⢎⢎⡮⢗⡌⠕⢢⡝⠭⢕⠦⢁⠬⡕⠢⡪⢮⡔⢏⡇⢕⢐⢬⡩⣃⡪⢕⠮⢒⡪⢵⡣⢜⡣⡘⠥⢕⡪⠵⡻⢫⢅⣍⠼⡮⡱⡆⠖⢑⢖⣱⢗⣈⡙⠣⠹⢭⢫⠰⡖⢥⡇⠲⢇⡒⢸⢎⢕⡣⠜⢭⡵⡣⡗⢣⡬⠵⠸⢹⡜
⠮⡐⢌⠽⢓⢸⣇⡐⢌⡌⢇⢌⠝⡙⠢⡎⢑⡪⠺⡣⢕⠔⡅⢨⠽⢜⠮⡌⢬⢜⢼⢗⠬⡢⠸⡒⣢⢎⣃⡨⠱⢎⢍⡢⠇⢌⢱⡣⣨⡱⡌⡌⡸⢝⡇⠪⢊⠪⠇⡈⢜⡕⢒⢃⠎⠪⠴⡹⡗⢕⠲⢌⡅⡘⢡⡊⢜⢎⡱⣰
⠌⡱⠔⠣⠃⡈⡅⡑⡠⢜⢢⣌⠣⠬⣌⢡⠔⡪⢑⡔⢪⠮⢭⠕⠇⡃⡘⠡⠌⢈⠅⡪⢱⢹⠕⠌⢭⠒⡥⢅⡌⡜⡧⡱⢇⡒⠵⡬⢂⢒⡰⢆⣢⢆⢰⡎⠁⡅⡢⢇⡐⡧⠨⡐⡪⡂⠐⡣⢕⡎⡸⠅⠅⠪⠌⠕⢲⢎⡢⡢
⢅⡊⢹⠕⢢⠲⣕⣂⠡⠆⠱⠃⡒⣓⢢⡩⠎⠡⡅⠡⠆⡕⡒⡎⡰⡐⠎⠱⠥⡰⠔⢅⡦⡢⢔⠁⡸⡇⠑⢪⢎⡂⡂⡚⡳⢊⢥⠞⠨⡅⢘⣊⣙⡑⠎⠢⡐⢎⢨⡄⢎⡕⠱⢢⠆⡑⡆⡂⠳⡆⠢⡰⡸⠮⢃⢎⢰⢎⣈⣘
⠒⠡⠉⡸⠣⡘⡌⢰⡱⠬⡆⡸⡧⡂⠢⡬⠒⡒⡌⡢⠆⠣⠨⢥⠂⡢⠢⡕⡨⠸⠧⣑⡎⡱⡣⠌⢑⢂⢢⣔⢢⡎⢕⠪⣇⡄⡖⠆⡈⡰⢏⢊⡣⡈⢑⡃⡒⡀⠄⡸⠥⠌⡡⠔⡃⡕⡬⡐⡁⢑⢔⡳⢌⡘⣂⡨⡇⡅⢄⡪
⢕⡠⢊⡈⢌⢂⣑⠊⡐⡑⢈⠃⢐⡑⢡⡘⢰⠒⢢⠨⠡⠰⢂⠑⢎⠡⡪⠅⢁⡨⡑⡪⣄⡘⢪⠃⢐⡑⢉⠅⢐⡊⡀⡘⢀⢌⠒⢢⡡⠡⢪⢇⡈⠕⠢⡔⡅⡘⡑⢅⡂⡢⢜⢅⢌⡘⢅⡸⢢⣀⠜⡉⠡⠨⢌⡀⡐⠢⠃⢰
⡊⢣⡱⠕⠊⢘⠡⠢⠠⡐⢕⢣⠜⢕⠬⠇⠈⠡⢈⠘⢨⠢⠌⠢⠄⢢⡒⠎⢀⢘⢁⠌⡡⢔⢨⡊⡠⡃⡐⠌⡂⠂⢊⠐⠪⠒⢑⡪⢔⢆⠁⠸⢑⠊⠪⢐⠔⠁⠢⡑⢊⢅⡅⢂⠔⠢⡊⢃⢢⢢⡀⠅⡈⢨⢎⠨⠃⡠⢒⡰
⠆⠄⠜⡢⢣⡄⢌⡂⢰⠌⢨⠬⠊⠐⢐⢂⢈⢢⠎⢐⡠⢕⡑⢑⠢⡄⠬⢑⠩⠨⢈⡈⠨⢄⠜⡀⢌⠪⢢⠅⠂⡈⠂⢑⠑⢨⠂⠠⢊⡰⡅⠄⡐⢂⠨⠅⠀⠘⢈⠱⢑⠂⠡⠔⡕⡪⢅⡒⢀⠥⡂⢌⠁⠐⠢⠡⢌⠄⡑⡑
⢘⡑⡂⠎⡊⠘⡐⠜⠡⡱⠅⡈⠄⢆⢊⠀⢪⡱⠄⢂⠌⠀⡐⢨⢐⠢⠨⠅⠀⡁⡂⢌⠰⠅⢈⠪⠑⢂⡠⡊⠢⠄⠄⢅⠂⠑⠅⡨⠂⠑⢎⡠⠁⠢⠔⠂⡌⠌⠐⠠⠎⠰⠂⠘⠌⡈⠑⠌⡈⢌⡀⠔⠅⠨⡂⠨⡘⠨⡂⢐
⢐⠊⡱⠅⡀⠨⠠⠔⠢⠔⠊⢀⠑⡁⠡⠨⡐⠁⠔⠨⠄⢄⢌⠁⠠⡑⢃⠨⠅⡐⠢⠠⠀⠠⠣⡂⠕⠡⠅⠡⡐⠄⠂⢔⠠⢜⢂⡰⠢⡐⠂⠊⡁⢄⢌⠂⢑⡐⢂⢆⠅⠨⠡⠠⡀⡂⡑⠔⠁⠢⢈⠔⠁⠄⠅⢀⠄⢊⡁⠂
⠐⠑⢘⡂⡁⢐⠠⠐⡀⠈⢂⢁⠄⠐⢂⠅⠈⠐⠠⢐⠃⢁⠌⠂⡂⠑⠁⠨⠐⡠⠈⠁⠐⡐⠁⠠⡂⠄⠁⠐⡐⠊⡀⢈⢄⠌⠑⠊⢑⢈⠐⡀⢔⠔⠈⢃⠐⢁⡌⠂⠨⠀⡀⠘⠠⠂⡘⡀⠠⠠⠘⡊⢐⡈⠑⠂⠌⡂⢁⠪
⠠⠁⡈⠀⠂⡐⢄⡂⠨⠑⠄⢀⠠⢂⠀⢈⡂⠠⠢⢅⠀⢂⠠⢂⠐⠀⠂⠀⠨⠈⠅⠌⠐⢀⠐⠠⠄⠌⠂⠁⠡⠕⠁⠡⠡⠈⢁⠡⡂⡐⠐⠀⠂⠨⢂⢄⠠⢀⢐⠁⡂⠁⠠⠂⠄⠂⠁⡪⠀⠄⢈⠂⠀⢀⠨⠨⡁⡐⢁⠄
⡀⠂⠀⡀⠂⠐⠨⠡⡀⡀⠐⢈⠂⠡⠀⠀⠠⠂⠀⠀⠄⠡⡐⠌⠢⠁⠀⠀⠡⡐⠢⡐⠀⠐⠁⢂⠠⠂⠄⠠⠅⠀⢌⠑⠄⠠⠌⠀⠀⠀⠈⠅⢂⠠⢂⠡⡐⠅⠈⡑⠡⠐⠁⠈⠈⠀⢌⠨⡁⠀⠠⡂⠕⠡⡀⡂⢀⡀⠀⠐
⠀⢈⠀⠢⠐⠂⠀⠀⠀⠑⠐⡂⠀⠐⢂⠂⠀⠈⠁⠀⠅⠀⠠⡁⡀⠀⡀⠀⠀⠐⠨⡂⢀⠌⠅⠌⠀⠄⠠⠀⠀⢀⠀⠄⢂⠨⠈⠈⠀⠀⠀⢌⡐⠐⢄⠨⠨⢐⠀⠀⠑⠀⠅⡀⢂⠠⠅⡀⠐⠂⢀⠀⢂⡈⠀⠀⠀⠐⠂⠀
⠀⠈⠀⠂⠡⠅⠅⠈⠀⠀⡁⠐⠄⠀⠅⡐⠀⠀⠁⠐⠀⠠⠈⠀⠀⠁⠀⠀⠀⠀⠀⠄⢌⠀⠐⠀⠄⡀⠠⠈⠁⢀⠀⠀⠀⠂⠌⠁⠂⠀⠐⠀⠨⠠⠁⠀⢀⠨⠐⠄⠀⠠⠀⠈⠀⠄⠐⠀⠄⠠⠂⠀⠈⠀⠐⠄⡈⠠⠠⡂
⡀⠀⠀⠂⢀⠀⠐⠐⠄⠂⠠⠂⠀⠄⠡⠈⠠⠂⠀⠈⠀⠠⠐⠄⠀⠐⢀⠀⠄⠀⠐⠂⠀⠀⡀⠀⠀⠐⠠⠐⡐⠀⠀⠄⠄⠀⠀⢀⠀⠀⢁⠀⠀⠄⠁⠀⠀⠀⠀⠀⠀⠐⠠⠀⢀⠀⡀⠀⠨⡁⠠⠀⠀⠀⠀⠂⠂⢀⠀⠈
⠀⠀⠁⠈⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠐⠐⠈⠀⠀⠀⠀⠀⠐⠁⠀⠀⠠⠀⠅⠀⠀⠠⢂⠂⠈⠐⠀⠀⠀⠀⠀⠀⠀⠀⠈⠁⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⢀⠀⠀⠀⠀⠐⢂⠄⠀⠁⠐⠠⠁⠀⠄⠀⠀⠀
⠀⠀⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⢀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠀⠀⠀⠐⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡀⠀⠀⠀⠀⠀
⠀⠀⠀⠈⠁⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠄⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠂⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
Sources:
https://github.com/505e06b2/Image-to-Braille/blob/master/braille.js
https://www.ssec.wisc.edu/~tomw/java/unicode.html#x2800
https://en.wikipedia.org/wiki/Error_diffusion
https://archive.ph/71e9G#selection-356.0-356.1
https://thecodingtrain.com/challenges/90-dithering
https://editor.p5js.org/codingtrain/sketches/-YkMaf9Ea
*/
//setup php environment
ini_set("memory_limit", -1);
error_reporting(E_ERROR);
//output help
if($argc < 2) die("Usage: php {$argv[0]} <image name> [width]\n");
//process parameters
$image = file_get_contents($argv[1]);
$width = ($argv[2] ?? `tput cols`) * 3;
if(!$image = imagecreatefromstring($image)) die("Not a support file format\n");
//preprocess the image
$image = imagescale($image, $width);
imagefilter($image, IMG_FILTER_GRAYSCALE);
imagefilter($image, IMG_FILTER_CONTRAST, -10); //up the contrast to make the image a little more pretty
$height = floor(imagesy($image) / 5) * 5;
//error diffuse the image
$pixels = [];
for($y = 0; $y < $height; $y++) {
for($x = 0; $x < $width; $x++) {
$error = $pixel = imagecolorat($image, $x, $y) & 0xff;
$pixels[$y][$x] += $pixel - rand(0, 255);
if($pixels[$y][$x] >= 0) $error = $pixel - 255;
//floyd & steinberg
$pixels[$y][$x + 1] += $error * 7 / 16;
$pixels[$y + 1][$x - 1] += $error * 3 / 16;
$pixels[$y + 1][$x] += $error * 5 / 16;
$pixels[$y + 1][$x + 1] += $error * 1 / 16;
}
}
//braille subpixel translation map
$sub_pixel = [[0, 3], [1, 4], [2, 5], [6, 7]];
//generate the braille output
for($y = 0; $y < $height; $y += 5) {
for($x = 0; $x < $width; $x += 3) {
$char = 0x2800;
for($sub_x = 0; $sub_x < 2; $sub_x++)
for($sub_y = 0; $sub_y < 4; $sub_y++)
if($pixels[$y + $sub_y][$x + $sub_x] >= 0) $char += 1 << $sub_pixel[$sub_y][$sub_x];
echo mb_chr($char);
}
echo "\n";
}
?>