#   This program is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   (at your option) any later version.
#
#   This program is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.
#
#   You should have received a copy of the GNU General Public License
#   along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
recho $'ab\x{}cd'
recho $'ab\x{41}cd'
recho $'ab\x41cd'

recho $'ab\x{4}cd'
recho $'ab\x4cd'

recho $'ab\x{cde'

recho $'ab\x{cde'
recho $'ab\x{cd}e'
recho $'ab\x{c}de'

recho $'\x{abcX'
recho $'\x{ab}cX'
recho $'\x{}X'
recho $'\x{X'
recho $'\x{01234567X'

recho $'\x{41}b'
recho $'\x{}bc'
recho $'\x{1}bcd'

recho $'\x{bde'
