From 68fb93c4fa315f225c12d0abd19791b3093868f6 Mon Sep 17 00:00:00 2001 From: Andrea Zoppi Date: Wed, 6 Mar 2024 23:39:30 +0100 Subject: [PATCH] Added `xxd` example tests from original manual Signed-off-by: Andrea Zoppi --- src/hexrec/cli.py | 8 +- src/hexrec/xxd.py | 31 +- tests/test_xxd.py | 31 +- tests/test_xxd/A.bin | 1 + tests/test_xxd/A.xxd | 1 + tests/test_xxd/file | 373 ++++++++ tests/test_xxd/file.65537 | Bin 0 -> 65537 bytes tests/test_xxd/file.xxd | 624 +++++++++++++ tests/test_xxd/hex_copy | 624 +++++++++++++ tests/test_xxd/hex_snippet | 608 +++++++++++++ tests/test_xxd/plain_copy | 373 ++++++++ tests/test_xxd/plain_snippet | 43 + .../test_xxd/test_xxd_-a_-c_12_file.65537.xxd | 3 + tests/test_xxd/test_xxd_-i_file.xxd | 834 ++++++++++++++++++ .../test_xxd/test_xxd_-l_120_-c_12_xxd.1.xxd | 10 + .../test_xxd_-l_120_-p_-c_20_xxd.1.xxd | 6 + .../test_xxd_-r_-s_-0x10000_A.xxd.bin | 1 + .../test_xxd/test_xxd_-r_-s_100_file.xxd.bin | Bin 0 -> 10072 bytes .../test_xxd/test_xxd_-r_xxd.1.patch.xxd.bin | 373 ++++++++ tests/test_xxd/test_xxd_-s_-0x30_file.xxd | 3 + tests/test_xxd/test_xxd_-s_0x30_file.xxd | 621 +++++++++++++ .../test_xxd_-s_0x36_-l_13_-c_13_xxd.1.xxd | 1 + ..._xxd_-s_0x36_-l_13_-c_13_xxd.patched.1.xxd | 1 + tests/test_xxd/xxd.1 | 373 ++++++++ tests/test_xxd/xxd.1.patch.xxd | 1 + tests/test_xxd/xxd.patched.1 | 373 ++++++++ tests/test_xxd/xxd_-i_STDIN_file.c | 831 +++++++++++++++++ 27 files changed, 6130 insertions(+), 18 deletions(-) create mode 100644 tests/test_xxd/A.bin create mode 100644 tests/test_xxd/A.xxd create mode 100644 tests/test_xxd/file create mode 100644 tests/test_xxd/file.65537 create mode 100644 tests/test_xxd/file.xxd create mode 100644 tests/test_xxd/hex_copy create mode 100644 tests/test_xxd/hex_snippet create mode 100644 tests/test_xxd/plain_copy create mode 100644 tests/test_xxd/plain_snippet create mode 100644 tests/test_xxd/test_xxd_-a_-c_12_file.65537.xxd create mode 100644 tests/test_xxd/test_xxd_-i_file.xxd create mode 100644 tests/test_xxd/test_xxd_-l_120_-c_12_xxd.1.xxd create mode 100644 tests/test_xxd/test_xxd_-l_120_-p_-c_20_xxd.1.xxd create mode 100644 tests/test_xxd/test_xxd_-r_-s_-0x10000_A.xxd.bin create mode 100644 tests/test_xxd/test_xxd_-r_-s_100_file.xxd.bin create mode 100644 tests/test_xxd/test_xxd_-r_xxd.1.patch.xxd.bin create mode 100644 tests/test_xxd/test_xxd_-s_-0x30_file.xxd create mode 100644 tests/test_xxd/test_xxd_-s_0x30_file.xxd create mode 100644 tests/test_xxd/test_xxd_-s_0x36_-l_13_-c_13_xxd.1.xxd create mode 100644 tests/test_xxd/test_xxd_-s_0x36_-l_13_-c_13_xxd.patched.1.xxd create mode 100644 tests/test_xxd/xxd.1 create mode 100644 tests/test_xxd/xxd.1.patch.xxd create mode 100644 tests/test_xxd/xxd.patched.1 create mode 100644 tests/test_xxd/xxd_-i_STDIN_file.c diff --git a/src/hexrec/cli.py b/src/hexrec/cli.py index 4366bdd..ecf88b0 100644 --- a/src/hexrec/cli.py +++ b/src/hexrec/cli.py @@ -681,7 +681,7 @@ def flood( expose_value=False, callback=print_hexdump_version, help=""" Print version and exit. """) -@click.argument('infile', type=FILE_PATH_IN) +@click.argument('infile', type=FILE_PATH_IN, required=False) def hexdump( infile: str, one_byte_octal: Sequence[bool], @@ -812,7 +812,7 @@ def hexdump( expose_value=False, callback=print_hexdump_version, help=""" Print version and exit. """) -@click.argument('infile', type=FILE_PATH_IN) +@click.argument('infile', type=FILE_PATH_IN, required=False) def hd( infile: str, one_byte_octal: Sequence[bool], @@ -1219,8 +1219,8 @@ def del_header( expose_value=False, callback=print_version, help=""" Prints the package version number. """) -@click.argument('infile', type=FILE_PATH_IN) -@click.argument('outfile', type=FILE_PATH_OUT) +@click.argument('infile', type=FILE_PATH_IN, required=False) +@click.argument('outfile', type=FILE_PATH_OUT, required=False) def xxd( autoskip: bool, bits: bool, diff --git a/src/hexrec/xxd.py b/src/hexrec/xxd.py index 1d5e7ae..075bb00 100644 --- a/src/hexrec/xxd.py +++ b/src/hexrec/xxd.py @@ -48,8 +48,8 @@ _SEEKING_REGEX = re.compile(r'^(?P\+?-?)-?(?P\w+)$') _REVERSE_REGEX = re.compile(b'^\\s*(?P
[A-Fa-f0-9]+)\\s*:\\s*' - b'(?P([A-Fa-f0-9]{2}\\s*)+)' - b'[ ]{2}(?P.*)$') + b'(?P([A-Fa-f0-9]{2}\\s?)+)' + b'(\\s.*)?$') ZERO_BLOCK_SIZE = 1 << 20 # 1 MiB @@ -344,7 +344,8 @@ def xxd_core( outfile = None outstream = sys.stdout.buffer elif isinstance(outfile, str): - outstream = open(outfile, 'w+b' if revert and oseek else 'wb') + mode = 'r+b' if revert and os.path.exists(outfile) else 'wb' + outstream = open(outfile, mode) elif isinstance(outfile, MutableMemory): outstream = SparseMemoryIO(memory=outfile) outsparse = True @@ -357,14 +358,20 @@ def xxd_core( if iseek is not None: ss, sv = parse_seek(str(iseek)) - if ss == '+': - instream.seek(sv, io.SEEK_CUR) - elif ss == '+-': - instream.seek(-sv, io.SEEK_CUR) - elif ss == '-': - instream.seek(-sv, io.SEEK_END) - else: # elif ss == '': - instream.seek(sv, io.SEEK_SET) + if revert: + if '-' in ss: + sv = -sv + iseek = sv + + else: + if ss == '+': + instream.seek(sv, io.SEEK_CUR) + elif ss == '+-': + instream.seek(-sv, io.SEEK_CUR) + elif ss == '-': + instream.seek(-sv, io.SEEK_END) + else: # elif ss == '': + instream.seek(sv, io.SEEK_SET) offset += instream.tell() @@ -391,7 +398,7 @@ def xxd_core( if match: # Interpret line contents groups = match.groupdict() - address = (oseek or 0) + int(groups['address'], 16) + address = (oseek or 0) + (iseek or 0) + int(groups['address'], 16) data = _unhexlify(groups['data']) data = data[:cols] diff --git a/tests/test_xxd.py b/tests/test_xxd.py index 0bf1937..9c904f8 100644 --- a/tests/test_xxd.py +++ b/tests/test_xxd.py @@ -1,6 +1,7 @@ import glob import io import os +import shutil import sys from pathlib import Path from typing import Any @@ -72,7 +73,7 @@ def test_by_filename_text(tmppath, datapath): for filename in test_filenames: filename = os.path.basename(filename) - print(filename) + print('@', filename, file=sys.stderr) path_out = tmppath / filename path_ref = datapath / filename @@ -92,12 +93,20 @@ def test_by_filename_text(tmppath, datapath): def test_by_filename_bytes(tmppath, datapath): + copy_filenames = [ + (r'xxd.1', r'test_xxd_-r_xxd.1.patch.xxd.bin'), + ] + for path_ref, path_out in copy_filenames: + path_ref = str(datapath / path_ref) + path_out = str(tmppath / path_out) + shutil.copy(path_ref, path_out) + prefix = 'test_xxd_' test_filenames = glob.glob(str(datapath / (prefix + '*.bin'))) for filename in test_filenames: filename = os.path.basename(filename) - print(filename) + print('@', filename, file=sys.stderr) path_out = tmppath / filename path_ref = datapath / filename @@ -240,6 +249,24 @@ def test_xxd_include_stdin(datapath): assert text_out == text_ref +def test_xxd_include_stdin_cli(tmppath, datapath): + filename = 'xxd_-i_STDIN_file.c' + path_out = tmppath / filename + path_ref = datapath / filename + path_in = datapath / 'file' + + args = 'xxd -i - '.split() + [str(path_out)] + + runner = CliRunner() + data_in = read_bytes(path_in) + result = runner.invoke(_cast(Any, cli_main), args, input=data_in) + assert result.exit_code == 0 + + ans_out = read_text(path_out) + ans_ref = read_text(path_ref) + assert ans_out == ans_ref + + def test_xxd_none(datapath): with open(str(datapath / 'test_xxd_bytes.bin.xxd'), 'rb') as stream: text_ref = stream.read().replace(b'\r\n', b'\n') diff --git a/tests/test_xxd/A.bin b/tests/test_xxd/A.bin new file mode 100644 index 0000000..8c7e5a6 --- /dev/null +++ b/tests/test_xxd/A.bin @@ -0,0 +1 @@ +A \ No newline at end of file diff --git a/tests/test_xxd/A.xxd b/tests/test_xxd/A.xxd new file mode 100644 index 0000000..dca0dd8 --- /dev/null +++ b/tests/test_xxd/A.xxd @@ -0,0 +1 @@ +010000: 41 diff --git a/tests/test_xxd/file b/tests/test_xxd/file new file mode 100644 index 0000000..fba0521 --- /dev/null +++ b/tests/test_xxd/file @@ -0,0 +1,373 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH NAME +.I xxd +\- make a hexdump or do the reverse. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH DESCRIPTION +.I xxd +creates a hex dump of a given file or standard input. +It can also convert a hex dump back to its original binary form. +Like +.BR uuencode(1) +and +.BR uudecode(1) +it allows the transmission of binary data in a `mail-safe' ASCII representation, +but has the advantage of decoding to standard output. +Moreover, it can be used to perform binary file patching. +.SH OPTIONS +If no +.I infile +is given, standard input is read. +If +.I infile +is specified as a +.RB \` \- ' +character, then input is taken from standard input. +If no +.I outfile +is given (or a +.RB \` \- ' +character is in its place), results are sent to standard output. +.PP +Note that a "lazy" parser is used which does not check for more than the first +option letter, unless the option is followed by a parameter. +Spaces between a single option letter and its parameter are optional. +Parameters to options can be specified in decimal, hexadecimal or octal +notation. +Thus +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +and +.B \-cols 8 +are all equivalent. +.PP +.TP +.IR \-a " | " \-autoskip +toggle autoskip: A single '*' replaces nul-lines. Default off. +.TP +.IR \-b " | " \-bits +Switch to bits (binary digits) dump, rather than hexdump. +This option writes octets as eight digits "1"s and "0"s instead of a normal +hexacecimal dump. Each line is preceded by a line number in hexadecimal and +followed by an ascii (or ebcdic) representation. The command line switches +\-r, \-p, \-i do not work with this mode. +.TP +.IR "\-c cols " | " \-cols cols" +.IR "\-c cols " | " \-cols cols" +format +.RI < cols > +octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. +.TP +.IR \-E " | " \-EBCDIC +Change the character encoding in the righthand column from ASCII to EBCDIC. +This does not change the hexadecimal representation. The option is +meaningless in combinations with \-r, \-p or \-i. +.TP +.IR "\-g bytes " | " \-groupsize bytes" +seperate the output of every +.RI < bytes > +bytes (two hex characters or eight bit-digits each) by a whitespace. +Specify +.I \-g 0 +to suppress grouping. +.RI < Bytes "> defaults to " 2 +in normal mode and \fI1\fP in bits mode. +Grouping does not apply to postscript or include style. +.TP +.IR \-h " | " \-help +print a summary of available commands and exit. No hex dumping is performed. +.TP +.IR \-i " | " \-include +output in C include file style. A complete static array definition is written +(named after the input file), unless xxd reads from stdin. +.TP +.IR "\-l len " | " \-len len" +stop after writing +.RI < len > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +output in postscript continuous hexdump style. Also known as plain hexdump +style. +.TP +.IR \-r " | " \-revert +reverse operation: convert (or patch) hexdump into binary. +If not writing to stdout, xxd writes into its output file without truncating +it. Use the combination +.I \-r \-p +to read plain hexadecimal dumps without line number information and without a +particular column layout. Additional Whitespace and line-breaks are allowed +anywhere. +.TP +.I \-seek offset +When used after +.I \-r +: revert with +.RI < offset > +added to file positions found in hexdump. +.TP +.I \-s [\+][\-]seek +start at +.RI < seek > +bytes abs. (or rel.) infile offset. +\fI\+ \fRindicates that the seek is relative to the current stdin file position +(meaningless when not reading from stdin). \fI\- \fRindicates that the seek +should be that many characters from the end of the input (or if combined with +\fI \+ \fR: before the current stdin file position). +Without \-s option, xxd starts at the current file position. +.TP +.I \-u +use upper case hex letters. Default is lower case. +.TP +.IR \-v " | " \-version +show version string. +.SH CAVEATS +.PP +.I xxd \-r +has some builtin magic while evaluating line number information. +If the ouput file is seekable, then the linenumbers at the start of each +hexdump line may be out of order, lines may be missing, or overlapping. In +these cases xxd will lseek(2) to the next position. If the output file is not +seekable, only gaps are allowed, which will be filled by null-bytes. +.PP +.I xxd \-r +never generates parse errors. Garbage is silently skipped. +.PP +When editing hexdumps, please note that +.I xxd \-r +skips everything on the input line after reading enough columns of hexadecimal +data (see option \-c). This also means, that changes to the printable ascii (or +ebcdic) columns are always ignored. Reverting a plain (or postscript) style +hexdump with xxd \-r \-p does not depend on the correct number of columns. Here an thing that looks like a pair of hex-digits is interpreted. +.PP +Note the difference between +.br +\fI% xxd \-i file\fR +.br +and +.br +\fI% xxd \-i \< file\fR +.PP +.I xxd \-s \+seek +may be different from +.I xxd \-s seek +, as lseek(2) is used to "rewind" input. A '+' +makes a difference if the input source is stdin, and if stdin's file position +is not at the start of the file by the time xxd is started and given its input. +The following examples may help to clarify (or further confuse!)... +.PP +Rewind stdin before reading; needed because the `cat' has already read to the +end of stdin. +.br +\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file +.PP +Hexdump from file position 0x480 (=1024+128) onwards. +The `+' sign means "relative to the current position", thus the `128' adds to +the 1k where dd left off. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file +.PP +Hexdump from file position 0x100 ( = 1024-768) on. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file +.PP +However, this is a rare situation and the use of `+' is rarely needed. +the author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. +.SH EXAMPLES +.PP +.br +Print everything but the first three lines (hex 0x30 bytes) of +.B file +\. +.br +\fI% xxd \-s 0x30 file +.PP +.br +Print 3 lines (hex 0x30 bytes) from the end of +.B file +\. +.br +\fI% xxd \-s \-0x30 file +.PP +.br +Print 120 bytes as continuous hexdump with 40 octets per line. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e544820585844203120224d616e75616c207061 +.br +676520666f7220787864220a2e5c220a2e5c2220 +.br +32317374204d617920313939360a2e5c22204d61 +.br +6e207061676520617574686f723a0a2e5c222020 +.br +2020546f6e79204e7567656e74203c746f6e7940 +.br +7363746e7567656e2e7070702e67752e6564752e +.br + +.br +Hexdump the first 120 bytes of this man page with 12 octets per line. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +.br +000000c: 616e 7561 6c20 7061 6765 2066 anual page f +.br +0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\". +.br +0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May +.br +0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma +.br +000003c: 6e20 7061 6765 2061 7574 686f n page autho +.br +0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To +.br +0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent output_file\fR +.br + +.br +Patch the date in the file xxd.1 +.br +\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +.br +0000028: 3235 7468 204d 6179 2031 3939 25th May 199 +.PP +.br +Create a 65537 byte file with all bytes 0x00, +except for the last one which is 'A' (hex 0x41). +.br +\fI% echo '010000: 41' | xxd \-r \> file\fR +.PP +.br +Hexdump this file with autoskip. +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Create a 1 byte file containing a single 'A' character. +The number after '\-r \-s' adds to the linenumbers found in the file; +in effect, the leading bytes are suppressed. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to hexdump a region marked between `a' and `z'. +.br +\fI:'a,'z!xxd\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover a binary hexdump marked between `a' and `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover one line of a hexdump. Move the cursor over the line and type: +.br +\fI!!xxd \-r\fR +.PP +Read single characters from a serial line +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH "RETURN VALUES" +The following error values are returned: +.TP +0 +no errors encountered. +.TP +\-1 +operation not supported ( +.I xxd \-r \-i +still impossible). +.TP +1 +error while parsing options. +.TP +2 +problems with input file. +.TP +3 +problems with output file. +.TP +4,5 +desired seek position is unreachable. +.SH "SEE ALSO" +uuencode(1), uudecode(1), patch(1) +.br +.SH WARNINGS +The tools weirdness matches its creators brain. +Use entirely at your own risk. Copy files. Trace it. Become a wizard. +.br +.SH VERSION +This manual page documents xxd version 1.7 +.SH AUTHOR +.br +(c) 1990-1997 by Juergen Weigert +.br + +.LP +Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me. +.PP +Manual page started by Tony Nugent +.br + +.br +Small changes by Bram Moolenaar. +Edited by Juergen Weigert. +.PP diff --git a/tests/test_xxd/file.65537 b/tests/test_xxd/file.65537 new file mode 100644 index 0000000000000000000000000000000000000000..445caac7c785f357166721462d5d030365feb747 GIT binary patch literal 65537 zcmeIufdBvi0K=fE-Cyb=g-~I@fB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj wFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RskV2LMq3LI3~& literal 0 HcmV?d00001 diff --git a/tests/test_xxd/file.xxd b/tests/test_xxd/file.xxd new file mode 100644 index 0000000..64def89 --- /dev/null +++ b/tests/test_xxd/file.xxd @@ -0,0 +1,624 @@ +00000000: 2e54 4820 5858 4420 3120 2241 7567 7573 .TH XXD 1 "Augus +00000010: 7420 3139 3936 2220 224d 616e 7561 6c20 t 1996" "Manual +00000020: 7061 6765 2066 6f72 2078 7864 220a 2e5c page for xxd"..\ +00000030: 220a 2e5c 2220 3231 7374 204d 6179 2031 "..\" 21st May 1 +00000040: 3939 360a 2e5c 2220 4d61 6e20 7061 6765 996..\" Man page +00000050: 2061 7574 686f 723a 0a2e 5c22 2020 2020 author:..\" +00000060: 546f 6e79 204e 7567 656e 7420 3c74 6f6e Tony Nugent ..\" Change +000000b0: 7320 6279 2042 7261 6d20 4d6f 6f6c 656e s by Bram Moolen +000000c0: 6161 7220 3c42 7261 6d40 7669 6d2e 6f72 aar ..SH NAME..I x +000000e0: 7864 0a5c 2d20 6d61 6b65 2061 2068 6578 xd.\- make a hex +000000f0: 6475 6d70 206f 7220 646f 2074 6865 2072 dump or do the r +00000100: 6576 6572 7365 2e0a 2e53 4820 5359 4e4f everse...SH SYNO +00000110: 5053 4953 0a2e 4220 7878 640a 5c2d 685b PSIS..B xxd.\-h[ +00000120: 656c 705d 0a2e 6272 0a2e 4220 7878 640a elp]..br..B xxd. +00000130: 5b6f 7074 696f 6e73 5d20 5b69 6e66 696c [options] [infil +00000140: 6520 5b6f 7574 6669 6c65 5d5d 0a2e 6272 e [outfile]]..br +00000150: 0a2e 4220 7878 640a 5c2d 725b 6576 6572 ..B xxd.\-r[ever +00000160: 745d 205b 6f70 7469 6f6e 735d 205b 696e t] [options] [in +00000170: 6669 6c65 205b 6f75 7466 696c 655d 5d0a file [outfile]]. +00000180: 2e53 4820 4445 5343 5249 5054 494f 4e0a .SH DESCRIPTION. +00000190: 2e49 2078 7864 0a63 7265 6174 6573 2061 .I xxd.creates a +000001a0: 2068 6578 2064 756d 7020 6f66 2061 2067 hex dump of a g +000001b0: 6976 656e 2066 696c 6520 6f72 2073 7461 iven file or sta +000001c0: 6e64 6172 6420 696e 7075 742e 0a49 7420 ndard input..It +000001d0: 6361 6e20 616c 736f 2063 6f6e 7665 7274 can also convert +000001e0: 2061 2068 6578 2064 756d 7020 6261 636b a hex dump back +000001f0: 2074 6f20 6974 7320 6f72 6967 696e 616c to its original +00000200: 2062 696e 6172 7920 666f 726d 2e0a 4c69 binary form..Li +00000210: 6b65 0a2e 4252 2075 7565 6e63 6f64 6528 ke..BR uuencode( +00000220: 3129 0a61 6e64 0a2e 4252 2075 7564 6563 1).and..BR uudec +00000230: 6f64 6528 3129 0a69 7420 616c 6c6f 7773 ode(1).it allows +00000240: 2074 6865 2074 7261 6e73 6d69 7373 696f the transmissio +00000250: 6e20 6f66 2062 696e 6172 7920 6461 7461 n of binary data +00000260: 2069 6e20 6120 606d 6169 6c2d 7361 6665 in a `mail-safe +00000270: 2720 4153 4349 4920 7265 7072 6573 656e ' ASCII represen +00000280: 7461 7469 6f6e 2c0a 6275 7420 6861 7320 tation,.but has +00000290: 7468 6520 6164 7661 6e74 6167 6520 6f66 the advantage of +000002a0: 2064 6563 6f64 696e 6720 746f 2073 7461 decoding to sta +000002b0: 6e64 6172 6420 6f75 7470 7574 2e0a 4d6f ndard output..Mo +000002c0: 7265 6f76 6572 2c20 6974 2063 616e 2062 reover, it can b +000002d0: 6520 7573 6564 2074 6f20 7065 7266 6f72 e used to perfor +000002e0: 6d20 6269 6e61 7279 2066 696c 6520 7061 m binary file pa +000002f0: 7463 6869 6e67 2e0a 2e53 4820 4f50 5449 tching...SH OPTI +00000300: 4f4e 530a 4966 206e 6f0a 2e49 2069 6e66 ONS.If no..I inf +00000310: 696c 650a 6973 2067 6976 656e 2c20 7374 ile.is given, st +00000320: 616e 6461 7264 2069 6e70 7574 2069 7320 andard input is +00000330: 7265 6164 2e0a 4966 0a2e 4920 696e 6669 read..If..I infi +00000340: 6c65 0a69 7320 7370 6563 6966 6965 6420 le.is specified +00000350: 6173 2061 0a2e 5242 205c 6020 5c2d 2027 as a..RB \` \- ' +00000360: 0a63 6861 7261 6374 6572 2c20 7468 656e .character, then +00000370: 2069 6e70 7574 2069 7320 7461 6b65 6e20 input is taken +00000380: 6672 6f6d 2073 7461 6e64 6172 6420 696e from standard in +00000390: 7075 742e 0a49 6620 6e6f 0a2e 4920 6f75 put..If no..I ou +000003a0: 7466 696c 650a 6973 2067 6976 656e 2028 tfile.is given ( +000003b0: 6f72 2061 0a2e 5242 205c 6020 5c2d 2027 or a..RB \` \- ' +000003c0: 0a63 6861 7261 6374 6572 2069 7320 696e .character is in +000003d0: 2069 7473 2070 6c61 6365 292c 2072 6573 its place), res +000003e0: 756c 7473 2061 7265 2073 656e 7420 746f ults are sent to +000003f0: 2073 7461 6e64 6172 6420 6f75 7470 7574 standard output +00000400: 2e0a 2e50 500a 4e6f 7465 2074 6861 7420 ...PP.Note that +00000410: 6120 226c 617a 7922 2070 6172 7365 7220 a "lazy" parser +00000420: 6973 2075 7365 6420 7768 6963 6820 646f is used which do +00000430: 6573 206e 6f74 2063 6865 636b 2066 6f72 es not check for +00000440: 206d 6f72 6520 7468 616e 2074 6865 2066 more than the f +00000450: 6972 7374 0a6f 7074 696f 6e20 6c65 7474 irst.option lett +00000460: 6572 2c20 756e 6c65 7373 2074 6865 206f er, unless the o +00000470: 7074 696f 6e20 6973 2066 6f6c 6c6f 7765 ption is followe +00000480: 6420 6279 2061 2070 6172 616d 6574 6572 d by a parameter +00000490: 2e0a 5370 6163 6573 2062 6574 7765 656e ..Spaces between +000004a0: 2061 2073 696e 676c 6520 6f70 7469 6f6e a single option +000004b0: 206c 6574 7465 7220 616e 6420 6974 7320 letter and its +000004c0: 7061 7261 6d65 7465 7220 6172 6520 6f70 parameter are op +000004d0: 7469 6f6e 616c 2e0a 5061 7261 6d65 7465 tional..Paramete +000004e0: 7273 2074 6f20 6f70 7469 6f6e 7320 6361 rs to options ca +000004f0: 6e20 6265 2073 7065 6369 6669 6564 2069 n be specified i +00000500: 6e20 6465 6369 6d61 6c2c 2068 6578 6164 n decimal, hexad +00000510: 6563 696d 616c 206f 7220 6f63 7461 6c0a ecimal or octal. +00000520: 6e6f 7461 7469 6f6e 2e0a 5468 7573 0a2e notation..Thus.. +00000530: 4252 205c 2d63 3820 2c0a 2e42 5220 225c BR \-c8 ,..BR "\ +00000540: 2d63 2038 2220 2c0a 2e42 205c 2d63 2030 -c 8" ,..B \-c 0 +00000550: 3130 0a61 6e64 0a2e 4220 5c2d 636f 6c73 10.and..B \-cols +00000560: 2038 0a61 7265 2061 6c6c 2065 7175 6976 8.are all equiv +00000570: 616c 656e 742e 0a2e 5050 0a2e 5450 0a2e alent...PP..TP.. +00000580: 4952 205c 2d61 2022 207c 2022 205c 2d61 IR \-a " | " \-a +00000590: 7574 6f73 6b69 700a 746f 6767 6c65 2061 utoskip.toggle a +000005a0: 7574 6f73 6b69 703a 2041 2073 696e 676c utoskip: A singl +000005b0: 6520 272a 2720 7265 706c 6163 6573 206e e '*' replaces n +000005c0: 756c 2d6c 696e 6573 2e20 2044 6566 6175 ul-lines. Defau +000005d0: 6c74 206f 6666 2e0a 2e54 500a 2e49 5220 lt off...TP..IR +000005e0: 5c2d 6220 2220 7c20 2220 5c2d 6269 7473 \-b " | " \-bits +000005f0: 0a53 7769 7463 6820 746f 2062 6974 7320 .Switch to bits +00000600: 2862 696e 6172 7920 6469 6769 7473 2920 (binary digits) +00000610: 6475 6d70 2c20 7261 7468 6572 2074 6861 dump, rather tha +00000620: 6e20 6865 7864 756d 702e 0a54 6869 7320 n hexdump..This +00000630: 6f70 7469 6f6e 2077 7269 7465 7320 6f63 option writes oc +00000640: 7465 7473 2061 7320 6569 6768 7420 6469 tets as eight di +00000650: 6769 7473 2022 3122 7320 616e 6420 2230 gits "1"s and "0 +00000660: 2273 2069 6e73 7465 6164 206f 6620 6120 "s instead of a +00000670: 6e6f 726d 616c 0a68 6578 6163 6563 696d normal.hexacecim +00000680: 616c 2064 756d 702e 2045 6163 6820 6c69 al dump. Each li +00000690: 6e65 2069 7320 7072 6563 6564 6564 2062 ne is preceded b +000006a0: 7920 6120 6c69 6e65 206e 756d 6265 7220 y a line number +000006b0: 696e 2068 6578 6164 6563 696d 616c 2061 in hexadecimal a +000006c0: 6e64 0a66 6f6c 6c6f 7765 6420 6279 2061 nd.followed by a +000006d0: 6e20 6173 6369 6920 286f 7220 6562 6364 n ascii (or ebcd +000006e0: 6963 2920 7265 7072 6573 656e 7461 7469 ic) representati +000006f0: 6f6e 2e20 5468 6520 636f 6d6d 616e 6420 on. The command +00000700: 6c69 6e65 2073 7769 7463 6865 730a 5c2d line switches.\- +00000710: 722c 205c 2d70 2c20 5c2d 6920 646f 206e r, \-p, \-i do n +00000720: 6f74 2077 6f72 6b20 7769 7468 2074 6869 ot work with thi +00000730: 7320 6d6f 6465 2e0a 2e54 500a 2e49 5220 s mode...TP..IR +00000740: 225c 2d63 2063 6f6c 7320 2220 7c20 2220 "\-c cols " | " +00000750: 5c2d 636f 6c73 2063 6f6c 7322 0a2e 4952 \-cols cols"..IR +00000760: 2022 5c2d 6320 636f 6c73 2022 207c 2022 "\-c cols " | " +00000770: 205c 2d63 6f6c 7320 636f 6c73 220a 666f \-cols cols".fo +00000780: 726d 6174 0a2e 5249 203c 2063 6f6c 7320 rmat..RI < cols +00000790: 3e0a 6f63 7465 7473 2070 6572 206c 696e >.octets per lin +000007a0: 652e 2044 6566 6175 6c74 2031 3620 285c e. Default 16 (\ +000007b0: 2d69 3a20 3132 2c20 5c2d 7073 3a20 3330 -i: 12, \-ps: 30 +000007c0: 2c20 5c2d 623a 2036 292e 204d 6178 2032 , \-b: 6). Max 2 +000007d0: 3536 2e0a 2e54 500a 2e49 5220 5c2d 4520 56...TP..IR \-E +000007e0: 2220 7c20 2220 5c2d 4542 4344 4943 0a43 " | " \-EBCDIC.C +000007f0: 6861 6e67 6520 7468 6520 6368 6172 6163 hange the charac +00000800: 7465 7220 656e 636f 6469 6e67 2069 6e20 ter encoding in +00000810: 7468 6520 7269 6768 7468 616e 6420 636f the righthand co +00000820: 6c75 6d6e 2066 726f 6d20 4153 4349 4920 lumn from ASCII +00000830: 746f 2045 4243 4449 432e 0a54 6869 7320 to EBCDIC..This +00000840: 646f 6573 206e 6f74 2063 6861 6e67 6520 does not change +00000850: 7468 6520 6865 7861 6465 6369 6d61 6c20 the hexadecimal +00000860: 7265 7072 6573 656e 7461 7469 6f6e 2e20 representation. +00000870: 5468 6520 6f70 7469 6f6e 2069 730a 6d65 The option is.me +00000880: 616e 696e 676c 6573 7320 696e 2063 6f6d aningless in com +00000890: 6269 6e61 7469 6f6e 7320 7769 7468 205c binations with \ +000008a0: 2d72 2c20 5c2d 7020 6f72 205c 2d69 2e0a -r, \-p or \-i.. +000008b0: 2e54 500a 2e49 5220 225c 2d67 2062 7974 .TP..IR "\-g byt +000008c0: 6573 2022 207c 2022 205c 2d67 726f 7570 es " | " \-group +000008d0: 7369 7a65 2062 7974 6573 220a 7365 7065 size bytes".sepe +000008e0: 7261 7465 2074 6865 206f 7574 7075 7420 rate the output +000008f0: 6f66 2065 7665 7279 0a2e 5249 203c 2062 of every..RI < b +00000900: 7974 6573 203e 0a62 7974 6573 2028 7477 ytes >.bytes (tw +00000910: 6f20 6865 7820 6368 6172 6163 7465 7273 o hex characters +00000920: 206f 7220 6569 6768 7420 6269 742d 6469 or eight bit-di +00000930: 6769 7473 2065 6163 6829 2062 7920 6120 gits each) by a +00000940: 7768 6974 6573 7061 6365 2e0a 5370 6563 whitespace..Spec +00000950: 6966 790a 2e49 205c 2d67 2030 0a74 6f20 ify..I \-g 0.to +00000960: 7375 7070 7265 7373 2067 726f 7570 696e suppress groupin +00000970: 672e 0a2e 5249 203c 2042 7974 6573 2022 g...RI < Bytes " +00000980: 3e20 6465 6661 756c 7473 2074 6f20 2220 > defaults to " +00000990: 320a 696e 206e 6f72 6d61 6c20 6d6f 6465 2.in normal mode +000009a0: 2061 6e64 205c 6649 315c 6650 2069 6e20 and \fI1\fP in +000009b0: 6269 7473 206d 6f64 652e 0a47 726f 7570 bits mode..Group +000009c0: 696e 6720 646f 6573 206e 6f74 2061 7070 ing does not app +000009d0: 6c79 2074 6f20 706f 7374 7363 7269 7074 ly to postscript +000009e0: 206f 7220 696e 636c 7564 6520 7374 796c or include styl +000009f0: 652e 0a2e 5450 0a2e 4952 205c 2d68 2022 e...TP..IR \-h " +00000a00: 207c 2022 205c 2d68 656c 700a 7072 696e | " \-help.prin +00000a10: 7420 6120 7375 6d6d 6172 7920 6f66 2061 t a summary of a +00000a20: 7661 696c 6162 6c65 2063 6f6d 6d61 6e64 vailable command +00000a30: 7320 616e 6420 6578 6974 2e20 204e 6f20 s and exit. No +00000a40: 6865 7820 6475 6d70 696e 6720 6973 2070 hex dumping is p +00000a50: 6572 666f 726d 6564 2e0a 2e54 500a 2e49 erformed...TP..I +00000a60: 5220 5c2d 6920 2220 7c20 2220 5c2d 696e R \-i " | " \-in +00000a70: 636c 7564 650a 6f75 7470 7574 2069 6e20 clude.output in +00000a80: 4320 696e 636c 7564 6520 6669 6c65 2073 C include file s +00000a90: 7479 6c65 2e20 4120 636f 6d70 6c65 7465 tyle. A complete +00000aa0: 2073 7461 7469 6320 6172 7261 7920 6465 static array de +00000ab0: 6669 6e69 7469 6f6e 2069 7320 7772 6974 finition is writ +00000ac0: 7465 6e0a 286e 616d 6564 2061 6674 6572 ten.(named after +00000ad0: 2074 6865 2069 6e70 7574 2066 696c 6529 the input file) +00000ae0: 2c20 756e 6c65 7373 2078 7864 2072 6561 , unless xxd rea +00000af0: 6473 2066 726f 6d20 7374 6469 6e2e 0a2e ds from stdin... +00000b00: 5450 0a2e 4952 2022 5c2d 6c20 6c65 6e20 TP..IR "\-l len +00000b10: 2220 7c20 2220 5c2d 6c65 6e20 6c65 6e22 " | " \-len len" +00000b20: 0a73 746f 7020 6166 7465 7220 7772 6974 .stop after writ +00000b30: 696e 670a 2e52 4920 203c 206c 656e 203e ing..RI < len > +00000b40: 0a6f 6374 6574 732e 0a2e 5450 0a2e 4952 .octets...TP..IR +00000b50: 205c 2d70 2022 207c 2022 205c 2d70 7320 \-p " | " \-ps +00000b60: 2220 7c20 2220 5c2d 706f 7374 7363 7269 " | " \-postscri +00000b70: 7074 2022 207c 2022 205c 2d70 6c61 696e pt " | " \-plain +00000b80: 0a6f 7574 7075 7420 696e 2070 6f73 7473 .output in posts +00000b90: 6372 6970 7420 636f 6e74 696e 756f 7573 cript continuous +00000ba0: 2068 6578 6475 6d70 2073 7479 6c65 2e20 hexdump style. +00000bb0: 416c 736f 206b 6e6f 776e 2061 7320 706c Also known as pl +00000bc0: 6169 6e20 6865 7864 756d 700a 7374 796c ain hexdump.styl +00000bd0: 652e 0a2e 5450 0a2e 4952 205c 2d72 2022 e...TP..IR \-r " +00000be0: 207c 2022 205c 2d72 6576 6572 740a 7265 | " \-revert.re +00000bf0: 7665 7273 6520 6f70 6572 6174 696f 6e3a verse operation: +00000c00: 2063 6f6e 7665 7274 2028 6f72 2070 6174 convert (or pat +00000c10: 6368 2920 6865 7864 756d 7020 696e 746f ch) hexdump into +00000c20: 2062 696e 6172 792e 0a49 6620 6e6f 7420 binary..If not +00000c30: 7772 6974 696e 6720 746f 2073 7464 6f75 writing to stdou +00000c40: 742c 2078 7864 2077 7269 7465 7320 696e t, xxd writes in +00000c50: 746f 2069 7473 206f 7574 7075 7420 6669 to its output fi +00000c60: 6c65 2077 6974 686f 7574 2074 7275 6e63 le without trunc +00000c70: 6174 696e 670a 6974 2e20 5573 6520 7468 ating.it. Use th +00000c80: 6520 636f 6d62 696e 6174 696f 6e0a 2e49 e combination..I +00000c90: 205c 2d72 205c 2d70 0a74 6f20 7265 6164 \-r \-p.to read +00000ca0: 2070 6c61 696e 2068 6578 6164 6563 696d plain hexadecim +00000cb0: 616c 2064 756d 7073 2077 6974 686f 7574 al dumps without +00000cc0: 206c 696e 6520 6e75 6d62 6572 2069 6e66 line number inf +00000cd0: 6f72 6d61 7469 6f6e 2061 6e64 2077 6974 ormation and wit +00000ce0: 686f 7574 2061 0a70 6172 7469 6375 6c61 hout a.particula +00000cf0: 7220 636f 6c75 6d6e 206c 6179 6f75 742e r column layout. +00000d00: 2041 6464 6974 696f 6e61 6c20 5768 6974 Additional Whit +00000d10: 6573 7061 6365 2061 6e64 206c 696e 652d espace and line- +00000d20: 6272 6561 6b73 2061 7265 2061 6c6c 6f77 breaks are allow +00000d30: 6564 0a61 6e79 7768 6572 652e 0a2e 5450 ed.anywhere...TP +00000d40: 0a2e 4920 5c2d 7365 656b 206f 6666 7365 ..I \-seek offse +00000d50: 740a 5768 656e 2075 7365 6420 6166 7465 t.When used afte +00000d60: 720a 2e49 205c 2d72 0a3a 2072 6576 6572 r..I \-r.: rever +00000d70: 7420 7769 7468 0a2e 5249 203c 206f 6666 t with..RI < off +00000d80: 7365 7420 3e0a 6164 6465 6420 746f 2066 set >.added to f +00000d90: 696c 6520 706f 7369 7469 6f6e 7320 666f ile positions fo +00000da0: 756e 6420 696e 2068 6578 6475 6d70 2e0a und in hexdump.. +00000db0: 2e54 500a 2e49 205c 2d73 205b 5c2b 5d5b .TP..I \-s [\+][ +00000dc0: 5c2d 5d73 6565 6b0a 7374 6172 7420 6174 \-]seek.start at +00000dd0: 0a2e 5249 203c 2073 6565 6b20 3e0a 6279 ..RI < seek >.by +00000de0: 7465 7320 6162 732e 2028 6f72 2072 656c tes abs. (or rel +00000df0: 2e29 2069 6e66 696c 6520 6f66 6673 6574 .) infile offset +00000e00: 2e0a 5c66 495c 2b20 5c66 5269 6e64 6963 ..\fI\+ \fRindic +00000e10: 6174 6573 2074 6861 7420 7468 6520 7365 ates that the se +00000e20: 656b 2069 7320 7265 6c61 7469 7665 2074 ek is relative t +00000e30: 6f20 7468 6520 6375 7272 656e 7420 7374 o the current st +00000e40: 6469 6e20 6669 6c65 2070 6f73 6974 696f din file positio +00000e50: 6e0a 286d 6561 6e69 6e67 6c65 7373 2077 n.(meaningless w +00000e60: 6865 6e20 6e6f 7420 7265 6164 696e 6720 hen not reading +00000e70: 6672 6f6d 2073 7464 696e 292e 2020 5c66 from stdin). \f +00000e80: 495c 2d20 5c66 5269 6e64 6963 6174 6573 I\- \fRindicates +00000e90: 2074 6861 7420 7468 6520 7365 656b 0a73 that the seek.s +00000ea0: 686f 756c 6420 6265 2074 6861 7420 6d61 hould be that ma +00000eb0: 6e79 2063 6861 7261 6374 6572 7320 6672 ny characters fr +00000ec0: 6f6d 2074 6865 2065 6e64 206f 6620 7468 om the end of th +00000ed0: 6520 696e 7075 7420 286f 7220 6966 2063 e input (or if c +00000ee0: 6f6d 6269 6e65 6420 7769 7468 0a5c 6649 ombined with.\fI +00000ef0: 205c 2b20 5c66 523a 2062 6566 6f72 6520 \+ \fR: before +00000f00: 7468 6520 6375 7272 656e 7420 7374 6469 the current stdi +00000f10: 6e20 6669 6c65 2070 6f73 6974 696f 6e29 n file position) +00000f20: 2e0a 5769 7468 6f75 7420 5c2d 7320 6f70 ..Without \-s op +00000f30: 7469 6f6e 2c20 7878 6420 7374 6172 7473 tion, xxd starts +00000f40: 2061 7420 7468 6520 6375 7272 656e 7420 at the current +00000f50: 6669 6c65 2070 6f73 6974 696f 6e2e 0a2e file position... +00000f60: 5450 0a2e 4920 5c2d 750a 7573 6520 7570 TP..I \-u.use up +00000f70: 7065 7220 6361 7365 2068 6578 206c 6574 per case hex let +00000f80: 7465 7273 2e20 4465 6661 756c 7420 6973 ters. Default is +00000f90: 206c 6f77 6572 2063 6173 652e 0a2e 5450 lower case...TP +00000fa0: 0a2e 4952 205c 2d76 2022 207c 2022 205c ..IR \-v " | " \ +00000fb0: 2d76 6572 7369 6f6e 0a73 686f 7720 7665 -version.show ve +00000fc0: 7273 696f 6e20 7374 7269 6e67 2e0a 2e53 rsion string...S +00000fd0: 4820 4341 5645 4154 530a 2e50 500a 2e49 H CAVEATS..PP..I +00000fe0: 2078 7864 205c 2d72 0a68 6173 2073 6f6d xxd \-r.has som +00000ff0: 6520 6275 696c 7469 6e20 6d61 6769 6320 e builtin magic +00001000: 7768 696c 6520 6576 616c 7561 7469 6e67 while evaluating +00001010: 206c 696e 6520 6e75 6d62 6572 2069 6e66 line number inf +00001020: 6f72 6d61 7469 6f6e 2e0a 4966 2074 6865 ormation..If the +00001030: 206f 7570 7574 2066 696c 6520 6973 2073 ouput file is s +00001040: 6565 6b61 626c 652c 2074 6865 6e20 7468 eekable, then th +00001050: 6520 6c69 6e65 6e75 6d62 6572 7320 6174 e linenumbers at +00001060: 2074 6865 2073 7461 7274 206f 6620 6561 the start of ea +00001070: 6368 0a68 6578 6475 6d70 206c 696e 6520 ch.hexdump line +00001080: 6d61 7920 6265 206f 7574 206f 6620 6f72 may be out of or +00001090: 6465 722c 206c 696e 6573 206d 6179 2062 der, lines may b +000010a0: 6520 6d69 7373 696e 672c 206f 7220 6f76 e missing, or ov +000010b0: 6572 6c61 7070 696e 672e 2049 6e0a 7468 erlapping. In.th +000010c0: 6573 6520 6361 7365 7320 7878 6420 7769 ese cases xxd wi +000010d0: 6c6c 206c 7365 656b 2832 2920 746f 2074 ll lseek(2) to t +000010e0: 6865 206e 6578 7420 706f 7369 7469 6f6e he next position +000010f0: 2e20 4966 2074 6865 206f 7574 7075 7420 . If the output +00001100: 6669 6c65 2069 7320 6e6f 740a 7365 656b file is not.seek +00001110: 6162 6c65 2c20 6f6e 6c79 2067 6170 7320 able, only gaps +00001120: 6172 6520 616c 6c6f 7765 642c 2077 6869 are allowed, whi +00001130: 6368 2077 696c 6c20 6265 2066 696c 6c65 ch will be fille +00001140: 6420 6279 206e 756c 6c2d 6279 7465 732e d by null-bytes. +00001150: 0a2e 5050 0a2e 4920 7878 6420 5c2d 720a ..PP..I xxd \-r. +00001160: 6e65 7665 7220 6765 6e65 7261 7465 7320 never generates +00001170: 7061 7273 6520 6572 726f 7273 2e20 4761 parse errors. Ga +00001180: 7262 6167 6520 6973 2073 696c 656e 746c rbage is silentl +00001190: 7920 736b 6970 7065 642e 0a2e 5050 0a57 y skipped...PP.W +000011a0: 6865 6e20 6564 6974 696e 6720 6865 7864 hen editing hexd +000011b0: 756d 7073 2c20 706c 6561 7365 206e 6f74 umps, please not +000011c0: 6520 7468 6174 0a2e 4920 7878 6420 5c2d e that..I xxd \- +000011d0: 720a 736b 6970 7320 6576 6572 7974 6869 r.skips everythi +000011e0: 6e67 206f 6e20 7468 6520 696e 7075 7420 ng on the input +000011f0: 6c69 6e65 2061 6674 6572 2072 6561 6469 line after readi +00001200: 6e67 2065 6e6f 7567 6820 636f 6c75 6d6e ng enough column +00001210: 7320 6f66 2068 6578 6164 6563 696d 616c s of hexadecimal +00001220: 0a64 6174 6120 2873 6565 206f 7074 696f .data (see optio +00001230: 6e20 5c2d 6329 2e20 5468 6973 2061 6c73 n \-c). This als +00001240: 6f20 6d65 616e 732c 2074 6861 7420 6368 o means, that ch +00001250: 616e 6765 7320 746f 2074 6865 2070 7269 anges to the pri +00001260: 6e74 6162 6c65 2061 7363 6969 2028 6f72 ntable ascii (or +00001270: 0a65 6263 6469 6329 2063 6f6c 756d 6e73 .ebcdic) columns +00001280: 2061 7265 2061 6c77 6179 7320 6967 6e6f are always igno +00001290: 7265 642e 2052 6576 6572 7469 6e67 2061 red. Reverting a +000012a0: 2070 6c61 696e 2028 6f72 2070 6f73 7473 plain (or posts +000012b0: 6372 6970 7429 2073 7479 6c65 0a68 6578 cript) style.hex +000012c0: 6475 6d70 2077 6974 6820 7878 6420 5c2d dump with xxd \- +000012d0: 7220 5c2d 7020 646f 6573 206e 6f74 2064 r \-p does not d +000012e0: 6570 656e 6420 6f6e 2074 6865 2063 6f72 epend on the cor +000012f0: 7265 6374 206e 756d 6265 7220 6f66 2063 rect number of c +00001300: 6f6c 756d 6e73 2e20 4865 7265 2061 6e20 olumns. Here an +00001310: 7468 696e 6720 7468 6174 206c 6f6f 6b73 thing that looks +00001320: 206c 696b 6520 6120 7061 6972 206f 6620 like a pair of +00001330: 6865 782d 6469 6769 7473 2069 7320 696e hex-digits is in +00001340: 7465 7270 7265 7465 642e 0a2e 5050 0a4e terpreted...PP.N +00001350: 6f74 6520 7468 6520 6469 6666 6572 656e ote the differen +00001360: 6365 2062 6574 7765 656e 0a2e 6272 0a5c ce between..br.\ +00001370: 6649 2520 7878 6420 5c2d 6920 6669 6c65 fI% xxd \-i file +00001380: 5c66 520a 2e62 720a 616e 640a 2e62 720a \fR..br.and..br. +00001390: 5c66 4925 2078 7864 205c 2d69 205c 3c20 \fI% xxd \-i \< +000013a0: 6669 6c65 5c66 520a 2e50 500a 2e49 2078 file\fR..PP..I x +000013b0: 7864 205c 2d73 205c 2b73 6565 6b0a 6d61 xd \-s \+seek.ma +000013c0: 7920 6265 2064 6966 6665 7265 6e74 2066 y be different f +000013d0: 726f 6d0a 2e49 2078 7864 205c 2d73 2073 rom..I xxd \-s s +000013e0: 6565 6b0a 2c20 6173 206c 7365 656b 2832 eek., as lseek(2 +000013f0: 2920 6973 2075 7365 6420 746f 2022 7265 ) is used to "re +00001400: 7769 6e64 2220 696e 7075 742e 2020 4120 wind" input. A +00001410: 272b 270a 6d61 6b65 7320 6120 6469 6666 '+'.makes a diff +00001420: 6572 656e 6365 2069 6620 7468 6520 696e erence if the in +00001430: 7075 7420 736f 7572 6365 2069 7320 7374 put source is st +00001440: 6469 6e2c 2061 6e64 2069 6620 7374 6469 din, and if stdi +00001450: 6e27 7320 6669 6c65 2070 6f73 6974 696f n's file positio +00001460: 6e0a 6973 206e 6f74 2061 7420 7468 6520 n.is not at the +00001470: 7374 6172 7420 6f66 2074 6865 2066 696c start of the fil +00001480: 6520 6279 2074 6865 2074 696d 6520 7878 e by the time xx +00001490: 6420 6973 2073 7461 7274 6564 2061 6e64 d is started and +000014a0: 2067 6976 656e 2069 7473 2069 6e70 7574 given its input +000014b0: 2e0a 5468 6520 666f 6c6c 6f77 696e 6720 ..The following +000014c0: 6578 616d 706c 6573 206d 6179 2068 656c examples may hel +000014d0: 7020 746f 2063 6c61 7269 6679 2028 6f72 p to clarify (or +000014e0: 2066 7572 7468 6572 2063 6f6e 6675 7365 further confuse +000014f0: 2129 2e2e 2e0a 2e50 500a 5265 7769 6e64 !).....PP.Rewind +00001500: 2073 7464 696e 2062 6566 6f72 6520 7265 stdin before re +00001510: 6164 696e 673b 206e 6565 6465 6420 6265 ading; needed be +00001520: 6361 7573 6520 7468 6520 6063 6174 2720 cause the `cat' +00001530: 6861 7320 616c 7265 6164 7920 7265 6164 has already read +00001540: 2074 6f20 7468 650a 656e 6420 6f66 2073 to the.end of s +00001550: 7464 696e 2e0a 2e62 720a 5c66 4925 2073 tdin...br.\fI% s +00001560: 6820 5c2d 6320 2763 6174 203e 2070 6c61 h \-c 'cat > pla +00001570: 696e 5f63 6f70 793b 2078 7864 205c 2d73 in_copy; xxd \-s +00001580: 2030 203e 2068 6578 5f63 6f70 7927 203c 0 > hex_copy' < +00001590: 2066 696c 650a 2e50 500a 4865 7864 756d file..PP.Hexdum +000015a0: 7020 6672 6f6d 2066 696c 6520 706f 7369 p from file posi +000015b0: 7469 6f6e 2030 7834 3830 2028 3d31 3032 tion 0x480 (=102 +000015c0: 342b 3132 3829 206f 6e77 6172 6473 2e0a 4+128) onwards.. +000015d0: 5468 6520 602b 2720 7369 676e 206d 6561 The `+' sign mea +000015e0: 6e73 2022 7265 6c61 7469 7665 2074 6f20 ns "relative to +000015f0: 7468 6520 6375 7272 656e 7420 706f 7369 the current posi +00001600: 7469 6f6e 222c 2074 6875 7320 7468 6520 tion", thus the +00001610: 6031 3238 2720 6164 6473 2074 6f0a 7468 `128' adds to.th +00001620: 6520 316b 2077 6865 7265 2064 6420 6c65 e 1k where dd le +00001630: 6674 206f 6666 2e0a 2e62 720a 5c66 4925 ft off...br.\fI% +00001640: 2073 6820 5c2d 6320 2764 6420 6f66 3d70 sh \-c 'dd of=p +00001650: 6c61 696e 5f73 6e69 7070 6574 2062 733d lain_snippet bs= +00001660: 316b 2063 6f75 6e74 3d31 3b20 7878 6420 1k count=1; xxd +00001670: 5c2d 7320 2b31 3238 203e 2068 6578 5f73 \-s +128 > hex_s +00001680: 6e69 7070 6574 2720 3c20 6669 6c65 0a2e nippet' < file.. +00001690: 5050 0a48 6578 6475 6d70 2066 726f 6d20 PP.Hexdump from +000016a0: 6669 6c65 2070 6f73 6974 696f 6e20 3078 file position 0x +000016b0: 3130 3020 2820 3d20 3130 3234 2d37 3638 100 ( = 1024-768 +000016c0: 2920 6f6e 2e0a 2e62 720a 5c66 4925 2073 ) on...br.\fI% s +000016d0: 6820 5c2d 6320 2764 6420 6f66 3d70 6c61 h \-c 'dd of=pla +000016e0: 696e 5f73 6e69 7070 6574 2062 733d 316b in_snippet bs=1k +000016f0: 2063 6f75 6e74 3d31 3b20 7878 6420 5c2d count=1; xxd \- +00001700: 7320 2b2d 3736 3820 3e20 6865 785f 736e s +-768 > hex_sn +00001710: 6970 7065 7427 203c 2066 696c 650a 2e50 ippet' < file..P +00001720: 500a 486f 7765 7665 722c 2074 6869 7320 P.However, this +00001730: 6973 2061 2072 6172 6520 7369 7475 6174 is a rare situat +00001740: 696f 6e20 616e 6420 7468 6520 7573 6520 ion and the use +00001750: 6f66 2060 2b27 2069 7320 7261 7265 6c79 of `+' is rarely +00001760: 206e 6565 6465 642e 0a74 6865 2061 7574 needed..the aut +00001770: 686f 7220 7072 6566 6572 7320 746f 206d hor prefers to m +00001780: 6f6e 6974 6f72 2074 6865 2065 6666 6563 onitor the effec +00001790: 7420 6f66 2078 7864 2077 6974 6820 7374 t of xxd with st +000017a0: 7261 6365 2831 2920 6f72 2074 7275 7373 race(1) or truss +000017b0: 2831 292c 2077 6865 6e65 7665 7220 5c2d (1), whenever \- +000017c0: 7320 6973 2075 7365 642e 0a2e 5348 2045 s is used...SH E +000017d0: 5841 4d50 4c45 530a 2e50 500a 2e62 720a XAMPLES..PP..br. +000017e0: 5072 696e 7420 6576 6572 7974 6869 6e67 Print everything +000017f0: 2062 7574 2074 6865 2066 6972 7374 2074 but the first t +00001800: 6872 6565 206c 696e 6573 2028 6865 7820 hree lines (hex +00001810: 3078 3330 2062 7974 6573 2920 6f66 0a2e 0x30 bytes) of.. +00001820: 4220 6669 6c65 0a5c 2e0a 2e62 720a 5c66 B file.\...br.\f +00001830: 4925 2078 7864 205c 2d73 2030 7833 3020 I% xxd \-s 0x30 +00001840: 6669 6c65 0a2e 5050 0a2e 6272 0a50 7269 file..PP..br.Pri +00001850: 6e74 2033 206c 696e 6573 2028 6865 7820 nt 3 lines (hex +00001860: 3078 3330 2062 7974 6573 2920 6672 6f6d 0x30 bytes) from +00001870: 2074 6865 2065 6e64 206f 660a 2e42 2066 the end of..B f +00001880: 696c 650a 5c2e 0a2e 6272 0a5c 6649 2520 ile.\...br.\fI% +00001890: 7878 6420 5c2d 7320 5c2d 3078 3330 2066 xxd \-s \-0x30 f +000018a0: 696c 650a 2e50 500a 2e62 720a 5072 696e ile..PP..br.Prin +000018b0: 7420 3132 3020 6279 7465 7320 6173 2063 t 120 bytes as c +000018c0: 6f6e 7469 6e75 6f75 7320 6865 7864 756d ontinuous hexdum +000018d0: 7020 7769 7468 2034 3020 6f63 7465 7473 p with 40 octets +000018e0: 2070 6572 206c 696e 652e 0a2e 6272 0a5c per line...br.\ +000018f0: 6649 2520 7878 6420 5c2d 6c20 3132 3020 fI% xxd \-l 120 +00001900: 5c2d 7073 205c 2d63 2032 3020 7878 642e \-ps \-c 20 xxd. +00001910: 315c 6652 0a2e 6272 0a32 6535 3434 3832 1\fR..br.2e54482 +00001920: 3035 3835 3834 3432 3033 3132 3032 3234 0585844203120224 +00001930: 6436 3136 6537 3536 3136 6332 3037 3036 d616e75616c20706 +00001940: 310a 2e62 720a 3637 3635 3230 3636 3666 1..br.676520666f +00001950: 3732 3230 3738 3738 3634 3232 3061 3265 7220787864220a2e +00001960: 3563 3232 3061 3265 3563 3232 3230 0a2e 5c220a2e5c2220.. +00001970: 6272 0a33 3233 3137 3337 3432 3034 6436 br.32317374204d6 +00001980: 3137 3932 3033 3133 3933 3933 3630 6132 17920313939360a2 +00001990: 6535 6332 3232 3034 6436 310a 2e62 720a e5c22204d61..br. +000019a0: 3665 3230 3730 3631 3637 3635 3230 3631 6e20706167652061 +000019b0: 3735 3734 3638 3666 3732 3361 3061 3265 7574686f723a0a2e +000019c0: 3563 3232 3230 3230 0a2e 6272 0a32 3032 5c222020..br.202 +000019d0: 3035 3436 6636 6537 3932 3034 6537 3536 0546f6e79204e756 +000019e0: 3736 3536 6537 3432 3033 6337 3436 6636 7656e74203c746f6 +000019f0: 6537 3934 300a 2e62 720a 3733 3633 3734 e7940..br.736374 +00001a00: 3665 3735 3637 3635 3665 3265 3730 3730 6e7567656e2e7070 +00001a10: 3730 3265 3637 3735 3265 3635 3634 3735 702e67752e656475 +00001a20: 3265 0a2e 6272 0a0a 2e62 720a 4865 7864 2e..br...br.Hexd +00001a30: 756d 7020 7468 6520 6669 7273 7420 3132 ump the first 12 +00001a40: 3020 6279 7465 7320 6f66 2074 6869 7320 0 bytes of this +00001a50: 6d61 6e20 7061 6765 2077 6974 6820 3132 man page with 12 +00001a60: 206f 6374 6574 7320 7065 7220 6c69 6e65 octets per line +00001a70: 2e0a 2e62 720a 5c66 4925 2078 7864 205c ...br.\fI% xxd \ +00001a80: 2d6c 2031 3230 205c 2d63 2031 3220 7878 -l 120 \-c 12 xx +00001a90: 642e 315c 6652 0a2e 6272 0a30 3030 3030 d.1\fR..br.00000 +00001aa0: 3030 3a20 3265 3534 2034 3832 3020 3538 00: 2e54 4820 58 +00001ab0: 3538 2034 3432 3020 3331 3230 2032 3234 58 4420 3120 224 +00001ac0: 6420 202e 5448 2058 5844 2031 2022 4d0a d .TH XXD 1 "M. +00001ad0: 2e62 720a 3030 3030 3030 633a 2036 3136 .br.000000c: 616 +00001ae0: 6520 3735 3631 2036 6332 3020 3730 3631 e 7561 6c20 7061 +00001af0: 2036 3736 3520 3230 3636 2020 616e 7561 6765 2066 anua +00001b00: 6c20 7061 6765 2066 0a2e 6272 0a30 3030 l page f..br.000 +00001b10: 3030 3138 3a20 3666 3732 2032 3037 3820 0018: 6f72 2078 +00001b20: 3738 3634 2032 3230 6120 3265 3563 2032 7864 220a 2e5c 2 +00001b30: 3230 6120 206f 7220 7878 6422 2e2e 5c5c 20a or xxd"..\\ +00001b40: 222e 0a2e 6272 0a30 3030 3030 3234 3a20 "...br.0000024: +00001b50: 3265 3563 2032 3232 3020 3332 3331 2037 2e5c 2220 3231 7 +00001b60: 3337 3420 3230 3464 2036 3137 3920 202e 374 204d 6179 . +00001b70: 5c5c 2220 3231 7374 204d 6179 0a2e 6272 \\" 21st May..br +00001b80: 0a30 3030 3030 3330 3a20 3230 3331 2033 .0000030: 2031 3 +00001b90: 3933 3920 3336 3061 2032 6535 6320 3232 939 360a 2e5c 22 +00001ba0: 3230 2034 6436 3120 2020 3139 3936 2e2e 20 4d61 1996.. +00001bb0: 5c5c 2220 4d61 0a2e 6272 0a30 3030 3030 \\" Ma..br.00000 +00001bc0: 3363 3a20 3665 3230 2037 3036 3120 3637 3c: 6e20 7061 67 +00001bd0: 3635 2032 3036 3120 3735 3734 2036 3836 65 2061 7574 686 +00001be0: 6620 206e 2070 6167 6520 6175 7468 6f0a f n page autho. +00001bf0: 2e62 720a 3030 3030 3034 383a 2037 3233 .br.0000048: 723 +00001c00: 6120 3061 3265 2035 6332 3220 3230 3230 a 0a2e 5c22 2020 +00001c10: 2032 3032 3020 3534 3666 2020 723a 2e2e 2020 546f r:.. +00001c20: 5c5c 2220 2020 2054 6f0a 2e62 720a 3030 \\" To..br.00 +00001c30: 3030 3035 343a 2036 6537 3920 3230 3465 00054: 6e79 204e +00001c40: 2037 3536 3720 3635 3665 2037 3432 3020 7567 656e 7420 +00001c50: 3363 3734 2020 6e79 204e 7567 656e 7420 3c74 ny Nugent +00001c60: 3c74 0a2e 6272 0a30 3030 3030 3630 3a20 outp +00001df0: 7574 5f66 696c 655c 6652 0a2e 6272 0a0a ut_file\fR..br.. +00001e00: 2e62 720a 5061 7463 6820 7468 6520 6461 .br.Patch the da +00001e10: 7465 2069 6e20 7468 6520 6669 6c65 2078 te in the file x +00001e20: 7864 2e31 0a2e 6272 0a5c 6649 2520 6563 xd.1..br.\fI% ec +00001e30: 686f 2027 3030 3030 3032 393a 2033 3537 ho '0000029: 357 +00001e40: 3420 3638 2720 7c20 7878 6420 5c2d 7220 4 68' | xxd \-r +00001e50: 5c2d 2078 7864 2e31 5c66 520a 2e62 720a \- xxd.1\fR..br. +00001e60: 5c66 4925 2078 7864 205c 2d73 2030 7832 \fI% xxd \-s 0x2 +00001e70: 3820 5c2d 6c20 3132 205c 2d63 2031 3220 8 \-l 12 \-c 12 +00001e80: 7878 642e 315c 6652 0a2e 6272 0a30 3030 xxd.1\fR..br.000 +00001e90: 3030 3238 3a20 3332 3335 2037 3436 3820 0028: 3235 7468 +00001ea0: 3230 3464 2036 3137 3920 3230 3331 2033 204d 6179 2031 3 +00001eb0: 3933 3920 2032 3574 6820 4d61 7920 3139 939 25th May 19 +00001ec0: 390a 2e50 500a 2e62 720a 4372 6561 7465 9..PP..br.Create +00001ed0: 2061 2036 3535 3337 2062 7974 6520 6669 a 65537 byte fi +00001ee0: 6c65 2077 6974 6820 616c 6c20 6279 7465 le with all byte +00001ef0: 7320 3078 3030 2c0a 6578 6365 7074 2066 s 0x00,.except f +00001f00: 6f72 2074 6865 206c 6173 7420 6f6e 6520 or the last one +00001f10: 7768 6963 6820 6973 2027 4127 2028 6865 which is 'A' (he +00001f20: 7820 3078 3431 292e 0a2e 6272 0a5c 6649 x 0x41)...br.\fI +00001f30: 2520 6563 686f 2027 3031 3030 3030 3a20 % echo '010000: +00001f40: 3431 2720 7c20 7878 6420 5c2d 7220 5c3e 41' | xxd \-r \> +00001f50: 2066 696c 655c 6652 0a2e 5050 0a2e 6272 file\fR..PP..br +00001f60: 0a48 6578 6475 6d70 2074 6869 7320 6669 .Hexdump this fi +00001f70: 6c65 2077 6974 6820 6175 746f 736b 6970 le with autoskip +00001f80: 2e0a 2e62 720a 5c66 4925 2078 7864 205c ...br.\fI% xxd \ +00001f90: 2d61 205c 2d63 2031 3220 6669 6c65 5c66 -a \-c 12 file\f +00001fa0: 520a 2e62 720a 3030 3030 3030 303a 2030 R..br.0000000: 0 +00001fb0: 3030 3020 3030 3030 2030 3030 3020 3030 000 0000 0000 00 +00001fc0: 3030 2030 3030 3020 3030 3030 2020 2e2e 00 0000 0000 .. +00001fd0: 2e2e 2e2e 2e2e 2e2e 2e2e 0a2e 6272 0a2a ............br.* +00001fe0: 0a2e 6272 0a30 3030 6666 6663 3a20 3030 ..br.000fffc: 00 +00001ff0: 3030 2030 3030 3020 3430 2020 2020 2020 00 0000 40 +00002000: 2020 2020 2020 2020 2020 2020 202e 2e2e ... +00002010: 2e41 0a2e 5050 0a43 7265 6174 6520 6120 .A..PP.Create a +00002020: 3120 6279 7465 2066 696c 6520 636f 6e74 1 byte file cont +00002030: 6169 6e69 6e67 2061 2073 696e 676c 6520 aining a single +00002040: 2741 2720 6368 6172 6163 7465 722e 0a54 'A' character..T +00002050: 6865 206e 756d 6265 7220 6166 7465 7220 he number after +00002060: 275c 2d72 205c 2d73 2720 6164 6473 2074 '\-r \-s' adds t +00002070: 6f20 7468 6520 6c69 6e65 6e75 6d62 6572 o the linenumber +00002080: 7320 666f 756e 6420 696e 2074 6865 2066 s found in the f +00002090: 696c 653b 0a69 6e20 6566 6665 6374 2c20 ile;.in effect, +000020a0: 7468 6520 6c65 6164 696e 6720 6279 7465 the leading byte +000020b0: 7320 6172 6520 7375 7070 7265 7373 6564 s are suppressed +000020c0: 2e0a 2e62 720a 5c66 4925 2065 6368 6f20 ...br.\fI% echo +000020d0: 2730 3130 3030 303a 2034 3127 207c 2078 '010000: 41' | x +000020e0: 7864 205c 2d72 205c 2d73 205c 2d30 7831 xd \-r \-s \-0x1 +000020f0: 3030 3030 205c 3e20 6669 6c65 5c66 520a 0000 \> file\fR. +00002100: 2e50 500a 5573 6520 7878 6420 6173 2061 .PP.Use xxd as a +00002110: 2066 696c 7465 7220 7769 7468 696e 2061 filter within a +00002120: 6e20 6564 6974 6f72 2073 7563 6820 6173 n editor such as +00002130: 0a2e 4220 7669 6d28 3129 0a74 6f20 6865 ..B vim(1).to he +00002140: 7864 756d 7020 6120 7265 6769 6f6e 206d xdump a region m +00002150: 6172 6b65 6420 6265 7477 6565 6e20 6061 arked between `a +00002160: 2720 616e 6420 607a 272e 0a2e 6272 0a5c ' and `z'...br.\ +00002170: 6649 3a27 612c 277a 2178 7864 5c66 520a fI:'a,'z!xxd\fR. +00002180: 2e50 500a 5573 6520 7878 6420 6173 2061 .PP.Use xxd as a +00002190: 2066 696c 7465 7220 7769 7468 696e 2061 filter within a +000021a0: 6e20 6564 6974 6f72 2073 7563 6820 6173 n editor such as +000021b0: 0a2e 4220 7669 6d28 3129 0a74 6f20 7265 ..B vim(1).to re +000021c0: 636f 7665 7220 6120 6269 6e61 7279 2068 cover a binary h +000021d0: 6578 6475 6d70 206d 6172 6b65 6420 6265 exdump marked be +000021e0: 7477 6565 6e20 6061 2720 616e 6420 607a tween `a' and `z +000021f0: 272e 0a2e 6272 0a5c 6649 3a27 612c 277a '...br.\fI:'a,'z +00002200: 2178 7864 205c 2d72 5c66 520a 2e50 500a !xxd \-r\fR..PP. +00002210: 5573 6520 7878 6420 6173 2061 2066 696c Use xxd as a fil +00002220: 7465 7220 7769 7468 696e 2061 6e20 6564 ter within an ed +00002230: 6974 6f72 2073 7563 6820 6173 0a2e 4220 itor such as..B +00002240: 7669 6d28 3129 0a74 6f20 7265 636f 7665 vim(1).to recove +00002250: 7220 6f6e 6520 6c69 6e65 206f 6620 6120 r one line of a +00002260: 6865 7864 756d 702e 2020 4d6f 7665 2074 hexdump. Move t +00002270: 6865 2063 7572 736f 7220 6f76 6572 2074 he cursor over t +00002280: 6865 206c 696e 6520 616e 6420 7479 7065 he line and type +00002290: 3a0a 2e62 720a 5c66 4921 2178 7864 205c :..br.\fI!!xxd \ +000022a0: 2d72 5c66 520a 2e50 500a 5265 6164 2073 -r\fR..PP.Read s +000022b0: 696e 676c 6520 6368 6172 6163 7465 7273 ingle characters +000022c0: 2066 726f 6d20 6120 7365 7269 616c 206c from a serial l +000022d0: 696e 650a 2e62 720a 5c66 4925 2078 7864 ine..br.\fI% xxd +000022e0: 205c 2d63 3120 3c20 2f64 6576 2f74 6572 \-c1 < /dev/ter +000022f0: 6d2f 6220 265c 6652 0a2e 6272 0a5c 6649 m/b &\fR..br.\fI +00002300: 2520 7374 7479 203c 202f 6465 762f 7465 % stty < /dev/te +00002310: 726d 2f62 205c 2d65 6368 6f20 5c2d 6f70 rm/b \-echo \-op +00002320: 6f73 7420 5c2d 6973 6967 205c 2d69 6361 ost \-isig \-ica +00002330: 6e6f 6e20 6d69 6e20 315c 6652 0a2e 6272 non min 1\fR..br +00002340: 0a5c 6649 2520 6563 686f 205c 2d6e 2066 .\fI% echo \-n f +00002350: 6f6f 203e 202f 6465 762f 7465 726d 2f62 oo > /dev/term/b +00002360: 5c66 520a 2e50 500a 2e53 4820 2252 4554 \fR..PP..SH "RET +00002370: 5552 4e20 5641 4c55 4553 220a 5468 6520 URN VALUES".The +00002380: 666f 6c6c 6f77 696e 6720 6572 726f 7220 following error +00002390: 7661 6c75 6573 2061 7265 2072 6574 7572 values are retur +000023a0: 6e65 643a 0a2e 5450 0a30 0a6e 6f20 6572 ned:..TP.0.no er +000023b0: 726f 7273 2065 6e63 6f75 6e74 6572 6564 rors encountered +000023c0: 2e0a 2e54 500a 5c2d 310a 6f70 6572 6174 ...TP.\-1.operat +000023d0: 696f 6e20 6e6f 7420 7375 7070 6f72 7465 ion not supporte +000023e0: 6420 280a 2e49 2078 7864 205c 2d72 205c d (..I xxd \-r \ +000023f0: 2d69 0a73 7469 6c6c 2069 6d70 6f73 7369 -i.still impossi +00002400: 626c 6529 2e0a 2e54 500a 310a 6572 726f ble)...TP.1.erro +00002410: 7220 7768 696c 6520 7061 7273 696e 6720 r while parsing +00002420: 6f70 7469 6f6e 732e 0a2e 5450 0a32 0a70 options...TP.2.p +00002430: 726f 626c 656d 7320 7769 7468 2069 6e70 roblems with inp +00002440: 7574 2066 696c 652e 0a2e 5450 0a33 0a70 ut file...TP.3.p +00002450: 726f 626c 656d 7320 7769 7468 206f 7574 roblems with out +00002460: 7075 7420 6669 6c65 2e0a 2e54 500a 342c put file...TP.4, +00002470: 350a 6465 7369 7265 6420 7365 656b 2070 5.desired seek p +00002480: 6f73 6974 696f 6e20 6973 2075 6e72 6561 osition is unrea +00002490: 6368 6162 6c65 2e0a 2e53 4820 2253 4545 chable...SH "SEE +000024a0: 2041 4c53 4f22 0a75 7565 6e63 6f64 6528 ALSO".uuencode( +000024b0: 3129 2c20 7575 6465 636f 6465 2831 292c 1), uudecode(1), +000024c0: 2070 6174 6368 2831 290a 2e62 720a 2e53 patch(1)..br..S +000024d0: 4820 5741 524e 494e 4753 0a54 6865 2074 H WARNINGS.The t +000024e0: 6f6f 6c73 2077 6569 7264 6e65 7373 206d ools weirdness m +000024f0: 6174 6368 6573 2069 7473 2063 7265 6174 atches its creat +00002500: 6f72 7320 6272 6169 6e2e 0a55 7365 2065 ors brain..Use e +00002510: 6e74 6972 656c 7920 6174 2079 6f75 7220 ntirely at your +00002520: 6f77 6e20 7269 736b 2e20 436f 7079 2066 own risk. Copy f +00002530: 696c 6573 2e20 5472 6163 6520 6974 2e20 iles. Trace it. +00002540: 4265 636f 6d65 2061 2077 697a 6172 642e Become a wizard. +00002550: 0a2e 6272 0a2e 5348 2056 4552 5349 4f4e ..br..SH VERSION +00002560: 0a54 6869 7320 6d61 6e75 616c 2070 6167 .This manual pag +00002570: 6520 646f 6375 6d65 6e74 7320 7878 6420 e documents xxd +00002580: 7665 7273 696f 6e20 312e 370a 2e53 4820 version 1.7..SH +00002590: 4155 5448 4f52 0a2e 6272 0a28 6329 2031 AUTHOR..br.(c) 1 +000025a0: 3939 302d 3139 3937 2062 7920 4a75 6572 990-1997 by Juer +000025b0: 6765 6e20 5765 6967 6572 740a 2e62 720a gen Weigert..br. +000025c0: 3c6a 6e77 6569 6765 7240 696e 666f 726d ..LP.Distri +000025f0: 6275 7465 2066 7265 656c 7920 616e 6420 bute freely and +00002600: 6372 6564 6974 206d 652c 0a2e 6272 0a6d credit me,..br.m +00002610: 616b 6520 6d6f 6e65 7920 616e 6420 7368 ake money and sh +00002620: 6172 6520 7769 7468 206d 652c 0a2e 6272 are with me,..br +00002630: 0a6c 6f73 6520 6d6f 6e65 7920 616e 6420 .lose money and +00002640: 646f 6e27 7420 6173 6b20 6d65 2e0a 2e50 don't ask me...P +00002650: 500a 4d61 6e75 616c 2070 6167 6520 7374 P.Manual page st +00002660: 6172 7465 6420 6279 2054 6f6e 7920 4e75 arted by Tony Nu +00002670: 6765 6e74 0a2e 6272 0a3c 746f 6e79 4073 gent..br. . +000026b0: 2e62 720a 536d 616c 6c20 6368 616e 6765 .br.Small change +000026c0: 7320 6279 2042 7261 6d20 4d6f 6f6c 656e s by Bram Moolen +000026d0: 6161 722e 0a45 6469 7465 6420 6279 204a aar..Edited by J +000026e0: 7565 7267 656e 2057 6569 6765 7274 2e0a uergen Weigert.. +000026f0: 2e50 500a .PP. diff --git a/tests/test_xxd/hex_copy b/tests/test_xxd/hex_copy new file mode 100644 index 0000000..64def89 --- /dev/null +++ b/tests/test_xxd/hex_copy @@ -0,0 +1,624 @@ +00000000: 2e54 4820 5858 4420 3120 2241 7567 7573 .TH XXD 1 "Augus +00000010: 7420 3139 3936 2220 224d 616e 7561 6c20 t 1996" "Manual +00000020: 7061 6765 2066 6f72 2078 7864 220a 2e5c page for xxd"..\ +00000030: 220a 2e5c 2220 3231 7374 204d 6179 2031 "..\" 21st May 1 +00000040: 3939 360a 2e5c 2220 4d61 6e20 7061 6765 996..\" Man page +00000050: 2061 7574 686f 723a 0a2e 5c22 2020 2020 author:..\" +00000060: 546f 6e79 204e 7567 656e 7420 3c74 6f6e Tony Nugent ..\" Change +000000b0: 7320 6279 2042 7261 6d20 4d6f 6f6c 656e s by Bram Moolen +000000c0: 6161 7220 3c42 7261 6d40 7669 6d2e 6f72 aar ..SH NAME..I x +000000e0: 7864 0a5c 2d20 6d61 6b65 2061 2068 6578 xd.\- make a hex +000000f0: 6475 6d70 206f 7220 646f 2074 6865 2072 dump or do the r +00000100: 6576 6572 7365 2e0a 2e53 4820 5359 4e4f everse...SH SYNO +00000110: 5053 4953 0a2e 4220 7878 640a 5c2d 685b PSIS..B xxd.\-h[ +00000120: 656c 705d 0a2e 6272 0a2e 4220 7878 640a elp]..br..B xxd. +00000130: 5b6f 7074 696f 6e73 5d20 5b69 6e66 696c [options] [infil +00000140: 6520 5b6f 7574 6669 6c65 5d5d 0a2e 6272 e [outfile]]..br +00000150: 0a2e 4220 7878 640a 5c2d 725b 6576 6572 ..B xxd.\-r[ever +00000160: 745d 205b 6f70 7469 6f6e 735d 205b 696e t] [options] [in +00000170: 6669 6c65 205b 6f75 7466 696c 655d 5d0a file [outfile]]. +00000180: 2e53 4820 4445 5343 5249 5054 494f 4e0a .SH DESCRIPTION. +00000190: 2e49 2078 7864 0a63 7265 6174 6573 2061 .I xxd.creates a +000001a0: 2068 6578 2064 756d 7020 6f66 2061 2067 hex dump of a g +000001b0: 6976 656e 2066 696c 6520 6f72 2073 7461 iven file or sta +000001c0: 6e64 6172 6420 696e 7075 742e 0a49 7420 ndard input..It +000001d0: 6361 6e20 616c 736f 2063 6f6e 7665 7274 can also convert +000001e0: 2061 2068 6578 2064 756d 7020 6261 636b a hex dump back +000001f0: 2074 6f20 6974 7320 6f72 6967 696e 616c to its original +00000200: 2062 696e 6172 7920 666f 726d 2e0a 4c69 binary form..Li +00000210: 6b65 0a2e 4252 2075 7565 6e63 6f64 6528 ke..BR uuencode( +00000220: 3129 0a61 6e64 0a2e 4252 2075 7564 6563 1).and..BR uudec +00000230: 6f64 6528 3129 0a69 7420 616c 6c6f 7773 ode(1).it allows +00000240: 2074 6865 2074 7261 6e73 6d69 7373 696f the transmissio +00000250: 6e20 6f66 2062 696e 6172 7920 6461 7461 n of binary data +00000260: 2069 6e20 6120 606d 6169 6c2d 7361 6665 in a `mail-safe +00000270: 2720 4153 4349 4920 7265 7072 6573 656e ' ASCII represen +00000280: 7461 7469 6f6e 2c0a 6275 7420 6861 7320 tation,.but has +00000290: 7468 6520 6164 7661 6e74 6167 6520 6f66 the advantage of +000002a0: 2064 6563 6f64 696e 6720 746f 2073 7461 decoding to sta +000002b0: 6e64 6172 6420 6f75 7470 7574 2e0a 4d6f ndard output..Mo +000002c0: 7265 6f76 6572 2c20 6974 2063 616e 2062 reover, it can b +000002d0: 6520 7573 6564 2074 6f20 7065 7266 6f72 e used to perfor +000002e0: 6d20 6269 6e61 7279 2066 696c 6520 7061 m binary file pa +000002f0: 7463 6869 6e67 2e0a 2e53 4820 4f50 5449 tching...SH OPTI +00000300: 4f4e 530a 4966 206e 6f0a 2e49 2069 6e66 ONS.If no..I inf +00000310: 696c 650a 6973 2067 6976 656e 2c20 7374 ile.is given, st +00000320: 616e 6461 7264 2069 6e70 7574 2069 7320 andard input is +00000330: 7265 6164 2e0a 4966 0a2e 4920 696e 6669 read..If..I infi +00000340: 6c65 0a69 7320 7370 6563 6966 6965 6420 le.is specified +00000350: 6173 2061 0a2e 5242 205c 6020 5c2d 2027 as a..RB \` \- ' +00000360: 0a63 6861 7261 6374 6572 2c20 7468 656e .character, then +00000370: 2069 6e70 7574 2069 7320 7461 6b65 6e20 input is taken +00000380: 6672 6f6d 2073 7461 6e64 6172 6420 696e from standard in +00000390: 7075 742e 0a49 6620 6e6f 0a2e 4920 6f75 put..If no..I ou +000003a0: 7466 696c 650a 6973 2067 6976 656e 2028 tfile.is given ( +000003b0: 6f72 2061 0a2e 5242 205c 6020 5c2d 2027 or a..RB \` \- ' +000003c0: 0a63 6861 7261 6374 6572 2069 7320 696e .character is in +000003d0: 2069 7473 2070 6c61 6365 292c 2072 6573 its place), res +000003e0: 756c 7473 2061 7265 2073 656e 7420 746f ults are sent to +000003f0: 2073 7461 6e64 6172 6420 6f75 7470 7574 standard output +00000400: 2e0a 2e50 500a 4e6f 7465 2074 6861 7420 ...PP.Note that +00000410: 6120 226c 617a 7922 2070 6172 7365 7220 a "lazy" parser +00000420: 6973 2075 7365 6420 7768 6963 6820 646f is used which do +00000430: 6573 206e 6f74 2063 6865 636b 2066 6f72 es not check for +00000440: 206d 6f72 6520 7468 616e 2074 6865 2066 more than the f +00000450: 6972 7374 0a6f 7074 696f 6e20 6c65 7474 irst.option lett +00000460: 6572 2c20 756e 6c65 7373 2074 6865 206f er, unless the o +00000470: 7074 696f 6e20 6973 2066 6f6c 6c6f 7765 ption is followe +00000480: 6420 6279 2061 2070 6172 616d 6574 6572 d by a parameter +00000490: 2e0a 5370 6163 6573 2062 6574 7765 656e ..Spaces between +000004a0: 2061 2073 696e 676c 6520 6f70 7469 6f6e a single option +000004b0: 206c 6574 7465 7220 616e 6420 6974 7320 letter and its +000004c0: 7061 7261 6d65 7465 7220 6172 6520 6f70 parameter are op +000004d0: 7469 6f6e 616c 2e0a 5061 7261 6d65 7465 tional..Paramete +000004e0: 7273 2074 6f20 6f70 7469 6f6e 7320 6361 rs to options ca +000004f0: 6e20 6265 2073 7065 6369 6669 6564 2069 n be specified i +00000500: 6e20 6465 6369 6d61 6c2c 2068 6578 6164 n decimal, hexad +00000510: 6563 696d 616c 206f 7220 6f63 7461 6c0a ecimal or octal. +00000520: 6e6f 7461 7469 6f6e 2e0a 5468 7573 0a2e notation..Thus.. +00000530: 4252 205c 2d63 3820 2c0a 2e42 5220 225c BR \-c8 ,..BR "\ +00000540: 2d63 2038 2220 2c0a 2e42 205c 2d63 2030 -c 8" ,..B \-c 0 +00000550: 3130 0a61 6e64 0a2e 4220 5c2d 636f 6c73 10.and..B \-cols +00000560: 2038 0a61 7265 2061 6c6c 2065 7175 6976 8.are all equiv +00000570: 616c 656e 742e 0a2e 5050 0a2e 5450 0a2e alent...PP..TP.. +00000580: 4952 205c 2d61 2022 207c 2022 205c 2d61 IR \-a " | " \-a +00000590: 7574 6f73 6b69 700a 746f 6767 6c65 2061 utoskip.toggle a +000005a0: 7574 6f73 6b69 703a 2041 2073 696e 676c utoskip: A singl +000005b0: 6520 272a 2720 7265 706c 6163 6573 206e e '*' replaces n +000005c0: 756c 2d6c 696e 6573 2e20 2044 6566 6175 ul-lines. Defau +000005d0: 6c74 206f 6666 2e0a 2e54 500a 2e49 5220 lt off...TP..IR +000005e0: 5c2d 6220 2220 7c20 2220 5c2d 6269 7473 \-b " | " \-bits +000005f0: 0a53 7769 7463 6820 746f 2062 6974 7320 .Switch to bits +00000600: 2862 696e 6172 7920 6469 6769 7473 2920 (binary digits) +00000610: 6475 6d70 2c20 7261 7468 6572 2074 6861 dump, rather tha +00000620: 6e20 6865 7864 756d 702e 0a54 6869 7320 n hexdump..This +00000630: 6f70 7469 6f6e 2077 7269 7465 7320 6f63 option writes oc +00000640: 7465 7473 2061 7320 6569 6768 7420 6469 tets as eight di +00000650: 6769 7473 2022 3122 7320 616e 6420 2230 gits "1"s and "0 +00000660: 2273 2069 6e73 7465 6164 206f 6620 6120 "s instead of a +00000670: 6e6f 726d 616c 0a68 6578 6163 6563 696d normal.hexacecim +00000680: 616c 2064 756d 702e 2045 6163 6820 6c69 al dump. Each li +00000690: 6e65 2069 7320 7072 6563 6564 6564 2062 ne is preceded b +000006a0: 7920 6120 6c69 6e65 206e 756d 6265 7220 y a line number +000006b0: 696e 2068 6578 6164 6563 696d 616c 2061 in hexadecimal a +000006c0: 6e64 0a66 6f6c 6c6f 7765 6420 6279 2061 nd.followed by a +000006d0: 6e20 6173 6369 6920 286f 7220 6562 6364 n ascii (or ebcd +000006e0: 6963 2920 7265 7072 6573 656e 7461 7469 ic) representati +000006f0: 6f6e 2e20 5468 6520 636f 6d6d 616e 6420 on. The command +00000700: 6c69 6e65 2073 7769 7463 6865 730a 5c2d line switches.\- +00000710: 722c 205c 2d70 2c20 5c2d 6920 646f 206e r, \-p, \-i do n +00000720: 6f74 2077 6f72 6b20 7769 7468 2074 6869 ot work with thi +00000730: 7320 6d6f 6465 2e0a 2e54 500a 2e49 5220 s mode...TP..IR +00000740: 225c 2d63 2063 6f6c 7320 2220 7c20 2220 "\-c cols " | " +00000750: 5c2d 636f 6c73 2063 6f6c 7322 0a2e 4952 \-cols cols"..IR +00000760: 2022 5c2d 6320 636f 6c73 2022 207c 2022 "\-c cols " | " +00000770: 205c 2d63 6f6c 7320 636f 6c73 220a 666f \-cols cols".fo +00000780: 726d 6174 0a2e 5249 203c 2063 6f6c 7320 rmat..RI < cols +00000790: 3e0a 6f63 7465 7473 2070 6572 206c 696e >.octets per lin +000007a0: 652e 2044 6566 6175 6c74 2031 3620 285c e. Default 16 (\ +000007b0: 2d69 3a20 3132 2c20 5c2d 7073 3a20 3330 -i: 12, \-ps: 30 +000007c0: 2c20 5c2d 623a 2036 292e 204d 6178 2032 , \-b: 6). Max 2 +000007d0: 3536 2e0a 2e54 500a 2e49 5220 5c2d 4520 56...TP..IR \-E +000007e0: 2220 7c20 2220 5c2d 4542 4344 4943 0a43 " | " \-EBCDIC.C +000007f0: 6861 6e67 6520 7468 6520 6368 6172 6163 hange the charac +00000800: 7465 7220 656e 636f 6469 6e67 2069 6e20 ter encoding in +00000810: 7468 6520 7269 6768 7468 616e 6420 636f the righthand co +00000820: 6c75 6d6e 2066 726f 6d20 4153 4349 4920 lumn from ASCII +00000830: 746f 2045 4243 4449 432e 0a54 6869 7320 to EBCDIC..This +00000840: 646f 6573 206e 6f74 2063 6861 6e67 6520 does not change +00000850: 7468 6520 6865 7861 6465 6369 6d61 6c20 the hexadecimal +00000860: 7265 7072 6573 656e 7461 7469 6f6e 2e20 representation. +00000870: 5468 6520 6f70 7469 6f6e 2069 730a 6d65 The option is.me +00000880: 616e 696e 676c 6573 7320 696e 2063 6f6d aningless in com +00000890: 6269 6e61 7469 6f6e 7320 7769 7468 205c binations with \ +000008a0: 2d72 2c20 5c2d 7020 6f72 205c 2d69 2e0a -r, \-p or \-i.. +000008b0: 2e54 500a 2e49 5220 225c 2d67 2062 7974 .TP..IR "\-g byt +000008c0: 6573 2022 207c 2022 205c 2d67 726f 7570 es " | " \-group +000008d0: 7369 7a65 2062 7974 6573 220a 7365 7065 size bytes".sepe +000008e0: 7261 7465 2074 6865 206f 7574 7075 7420 rate the output +000008f0: 6f66 2065 7665 7279 0a2e 5249 203c 2062 of every..RI < b +00000900: 7974 6573 203e 0a62 7974 6573 2028 7477 ytes >.bytes (tw +00000910: 6f20 6865 7820 6368 6172 6163 7465 7273 o hex characters +00000920: 206f 7220 6569 6768 7420 6269 742d 6469 or eight bit-di +00000930: 6769 7473 2065 6163 6829 2062 7920 6120 gits each) by a +00000940: 7768 6974 6573 7061 6365 2e0a 5370 6563 whitespace..Spec +00000950: 6966 790a 2e49 205c 2d67 2030 0a74 6f20 ify..I \-g 0.to +00000960: 7375 7070 7265 7373 2067 726f 7570 696e suppress groupin +00000970: 672e 0a2e 5249 203c 2042 7974 6573 2022 g...RI < Bytes " +00000980: 3e20 6465 6661 756c 7473 2074 6f20 2220 > defaults to " +00000990: 320a 696e 206e 6f72 6d61 6c20 6d6f 6465 2.in normal mode +000009a0: 2061 6e64 205c 6649 315c 6650 2069 6e20 and \fI1\fP in +000009b0: 6269 7473 206d 6f64 652e 0a47 726f 7570 bits mode..Group +000009c0: 696e 6720 646f 6573 206e 6f74 2061 7070 ing does not app +000009d0: 6c79 2074 6f20 706f 7374 7363 7269 7074 ly to postscript +000009e0: 206f 7220 696e 636c 7564 6520 7374 796c or include styl +000009f0: 652e 0a2e 5450 0a2e 4952 205c 2d68 2022 e...TP..IR \-h " +00000a00: 207c 2022 205c 2d68 656c 700a 7072 696e | " \-help.prin +00000a10: 7420 6120 7375 6d6d 6172 7920 6f66 2061 t a summary of a +00000a20: 7661 696c 6162 6c65 2063 6f6d 6d61 6e64 vailable command +00000a30: 7320 616e 6420 6578 6974 2e20 204e 6f20 s and exit. No +00000a40: 6865 7820 6475 6d70 696e 6720 6973 2070 hex dumping is p +00000a50: 6572 666f 726d 6564 2e0a 2e54 500a 2e49 erformed...TP..I +00000a60: 5220 5c2d 6920 2220 7c20 2220 5c2d 696e R \-i " | " \-in +00000a70: 636c 7564 650a 6f75 7470 7574 2069 6e20 clude.output in +00000a80: 4320 696e 636c 7564 6520 6669 6c65 2073 C include file s +00000a90: 7479 6c65 2e20 4120 636f 6d70 6c65 7465 tyle. A complete +00000aa0: 2073 7461 7469 6320 6172 7261 7920 6465 static array de +00000ab0: 6669 6e69 7469 6f6e 2069 7320 7772 6974 finition is writ +00000ac0: 7465 6e0a 286e 616d 6564 2061 6674 6572 ten.(named after +00000ad0: 2074 6865 2069 6e70 7574 2066 696c 6529 the input file) +00000ae0: 2c20 756e 6c65 7373 2078 7864 2072 6561 , unless xxd rea +00000af0: 6473 2066 726f 6d20 7374 6469 6e2e 0a2e ds from stdin... +00000b00: 5450 0a2e 4952 2022 5c2d 6c20 6c65 6e20 TP..IR "\-l len +00000b10: 2220 7c20 2220 5c2d 6c65 6e20 6c65 6e22 " | " \-len len" +00000b20: 0a73 746f 7020 6166 7465 7220 7772 6974 .stop after writ +00000b30: 696e 670a 2e52 4920 203c 206c 656e 203e ing..RI < len > +00000b40: 0a6f 6374 6574 732e 0a2e 5450 0a2e 4952 .octets...TP..IR +00000b50: 205c 2d70 2022 207c 2022 205c 2d70 7320 \-p " | " \-ps +00000b60: 2220 7c20 2220 5c2d 706f 7374 7363 7269 " | " \-postscri +00000b70: 7074 2022 207c 2022 205c 2d70 6c61 696e pt " | " \-plain +00000b80: 0a6f 7574 7075 7420 696e 2070 6f73 7473 .output in posts +00000b90: 6372 6970 7420 636f 6e74 696e 756f 7573 cript continuous +00000ba0: 2068 6578 6475 6d70 2073 7479 6c65 2e20 hexdump style. +00000bb0: 416c 736f 206b 6e6f 776e 2061 7320 706c Also known as pl +00000bc0: 6169 6e20 6865 7864 756d 700a 7374 796c ain hexdump.styl +00000bd0: 652e 0a2e 5450 0a2e 4952 205c 2d72 2022 e...TP..IR \-r " +00000be0: 207c 2022 205c 2d72 6576 6572 740a 7265 | " \-revert.re +00000bf0: 7665 7273 6520 6f70 6572 6174 696f 6e3a verse operation: +00000c00: 2063 6f6e 7665 7274 2028 6f72 2070 6174 convert (or pat +00000c10: 6368 2920 6865 7864 756d 7020 696e 746f ch) hexdump into +00000c20: 2062 696e 6172 792e 0a49 6620 6e6f 7420 binary..If not +00000c30: 7772 6974 696e 6720 746f 2073 7464 6f75 writing to stdou +00000c40: 742c 2078 7864 2077 7269 7465 7320 696e t, xxd writes in +00000c50: 746f 2069 7473 206f 7574 7075 7420 6669 to its output fi +00000c60: 6c65 2077 6974 686f 7574 2074 7275 6e63 le without trunc +00000c70: 6174 696e 670a 6974 2e20 5573 6520 7468 ating.it. Use th +00000c80: 6520 636f 6d62 696e 6174 696f 6e0a 2e49 e combination..I +00000c90: 205c 2d72 205c 2d70 0a74 6f20 7265 6164 \-r \-p.to read +00000ca0: 2070 6c61 696e 2068 6578 6164 6563 696d plain hexadecim +00000cb0: 616c 2064 756d 7073 2077 6974 686f 7574 al dumps without +00000cc0: 206c 696e 6520 6e75 6d62 6572 2069 6e66 line number inf +00000cd0: 6f72 6d61 7469 6f6e 2061 6e64 2077 6974 ormation and wit +00000ce0: 686f 7574 2061 0a70 6172 7469 6375 6c61 hout a.particula +00000cf0: 7220 636f 6c75 6d6e 206c 6179 6f75 742e r column layout. +00000d00: 2041 6464 6974 696f 6e61 6c20 5768 6974 Additional Whit +00000d10: 6573 7061 6365 2061 6e64 206c 696e 652d espace and line- +00000d20: 6272 6561 6b73 2061 7265 2061 6c6c 6f77 breaks are allow +00000d30: 6564 0a61 6e79 7768 6572 652e 0a2e 5450 ed.anywhere...TP +00000d40: 0a2e 4920 5c2d 7365 656b 206f 6666 7365 ..I \-seek offse +00000d50: 740a 5768 656e 2075 7365 6420 6166 7465 t.When used afte +00000d60: 720a 2e49 205c 2d72 0a3a 2072 6576 6572 r..I \-r.: rever +00000d70: 7420 7769 7468 0a2e 5249 203c 206f 6666 t with..RI < off +00000d80: 7365 7420 3e0a 6164 6465 6420 746f 2066 set >.added to f +00000d90: 696c 6520 706f 7369 7469 6f6e 7320 666f ile positions fo +00000da0: 756e 6420 696e 2068 6578 6475 6d70 2e0a und in hexdump.. +00000db0: 2e54 500a 2e49 205c 2d73 205b 5c2b 5d5b .TP..I \-s [\+][ +00000dc0: 5c2d 5d73 6565 6b0a 7374 6172 7420 6174 \-]seek.start at +00000dd0: 0a2e 5249 203c 2073 6565 6b20 3e0a 6279 ..RI < seek >.by +00000de0: 7465 7320 6162 732e 2028 6f72 2072 656c tes abs. (or rel +00000df0: 2e29 2069 6e66 696c 6520 6f66 6673 6574 .) infile offset +00000e00: 2e0a 5c66 495c 2b20 5c66 5269 6e64 6963 ..\fI\+ \fRindic +00000e10: 6174 6573 2074 6861 7420 7468 6520 7365 ates that the se +00000e20: 656b 2069 7320 7265 6c61 7469 7665 2074 ek is relative t +00000e30: 6f20 7468 6520 6375 7272 656e 7420 7374 o the current st +00000e40: 6469 6e20 6669 6c65 2070 6f73 6974 696f din file positio +00000e50: 6e0a 286d 6561 6e69 6e67 6c65 7373 2077 n.(meaningless w +00000e60: 6865 6e20 6e6f 7420 7265 6164 696e 6720 hen not reading +00000e70: 6672 6f6d 2073 7464 696e 292e 2020 5c66 from stdin). \f +00000e80: 495c 2d20 5c66 5269 6e64 6963 6174 6573 I\- \fRindicates +00000e90: 2074 6861 7420 7468 6520 7365 656b 0a73 that the seek.s +00000ea0: 686f 756c 6420 6265 2074 6861 7420 6d61 hould be that ma +00000eb0: 6e79 2063 6861 7261 6374 6572 7320 6672 ny characters fr +00000ec0: 6f6d 2074 6865 2065 6e64 206f 6620 7468 om the end of th +00000ed0: 6520 696e 7075 7420 286f 7220 6966 2063 e input (or if c +00000ee0: 6f6d 6269 6e65 6420 7769 7468 0a5c 6649 ombined with.\fI +00000ef0: 205c 2b20 5c66 523a 2062 6566 6f72 6520 \+ \fR: before +00000f00: 7468 6520 6375 7272 656e 7420 7374 6469 the current stdi +00000f10: 6e20 6669 6c65 2070 6f73 6974 696f 6e29 n file position) +00000f20: 2e0a 5769 7468 6f75 7420 5c2d 7320 6f70 ..Without \-s op +00000f30: 7469 6f6e 2c20 7878 6420 7374 6172 7473 tion, xxd starts +00000f40: 2061 7420 7468 6520 6375 7272 656e 7420 at the current +00000f50: 6669 6c65 2070 6f73 6974 696f 6e2e 0a2e file position... +00000f60: 5450 0a2e 4920 5c2d 750a 7573 6520 7570 TP..I \-u.use up +00000f70: 7065 7220 6361 7365 2068 6578 206c 6574 per case hex let +00000f80: 7465 7273 2e20 4465 6661 756c 7420 6973 ters. Default is +00000f90: 206c 6f77 6572 2063 6173 652e 0a2e 5450 lower case...TP +00000fa0: 0a2e 4952 205c 2d76 2022 207c 2022 205c ..IR \-v " | " \ +00000fb0: 2d76 6572 7369 6f6e 0a73 686f 7720 7665 -version.show ve +00000fc0: 7273 696f 6e20 7374 7269 6e67 2e0a 2e53 rsion string...S +00000fd0: 4820 4341 5645 4154 530a 2e50 500a 2e49 H CAVEATS..PP..I +00000fe0: 2078 7864 205c 2d72 0a68 6173 2073 6f6d xxd \-r.has som +00000ff0: 6520 6275 696c 7469 6e20 6d61 6769 6320 e builtin magic +00001000: 7768 696c 6520 6576 616c 7561 7469 6e67 while evaluating +00001010: 206c 696e 6520 6e75 6d62 6572 2069 6e66 line number inf +00001020: 6f72 6d61 7469 6f6e 2e0a 4966 2074 6865 ormation..If the +00001030: 206f 7570 7574 2066 696c 6520 6973 2073 ouput file is s +00001040: 6565 6b61 626c 652c 2074 6865 6e20 7468 eekable, then th +00001050: 6520 6c69 6e65 6e75 6d62 6572 7320 6174 e linenumbers at +00001060: 2074 6865 2073 7461 7274 206f 6620 6561 the start of ea +00001070: 6368 0a68 6578 6475 6d70 206c 696e 6520 ch.hexdump line +00001080: 6d61 7920 6265 206f 7574 206f 6620 6f72 may be out of or +00001090: 6465 722c 206c 696e 6573 206d 6179 2062 der, lines may b +000010a0: 6520 6d69 7373 696e 672c 206f 7220 6f76 e missing, or ov +000010b0: 6572 6c61 7070 696e 672e 2049 6e0a 7468 erlapping. In.th +000010c0: 6573 6520 6361 7365 7320 7878 6420 7769 ese cases xxd wi +000010d0: 6c6c 206c 7365 656b 2832 2920 746f 2074 ll lseek(2) to t +000010e0: 6865 206e 6578 7420 706f 7369 7469 6f6e he next position +000010f0: 2e20 4966 2074 6865 206f 7574 7075 7420 . If the output +00001100: 6669 6c65 2069 7320 6e6f 740a 7365 656b file is not.seek +00001110: 6162 6c65 2c20 6f6e 6c79 2067 6170 7320 able, only gaps +00001120: 6172 6520 616c 6c6f 7765 642c 2077 6869 are allowed, whi +00001130: 6368 2077 696c 6c20 6265 2066 696c 6c65 ch will be fille +00001140: 6420 6279 206e 756c 6c2d 6279 7465 732e d by null-bytes. +00001150: 0a2e 5050 0a2e 4920 7878 6420 5c2d 720a ..PP..I xxd \-r. +00001160: 6e65 7665 7220 6765 6e65 7261 7465 7320 never generates +00001170: 7061 7273 6520 6572 726f 7273 2e20 4761 parse errors. Ga +00001180: 7262 6167 6520 6973 2073 696c 656e 746c rbage is silentl +00001190: 7920 736b 6970 7065 642e 0a2e 5050 0a57 y skipped...PP.W +000011a0: 6865 6e20 6564 6974 696e 6720 6865 7864 hen editing hexd +000011b0: 756d 7073 2c20 706c 6561 7365 206e 6f74 umps, please not +000011c0: 6520 7468 6174 0a2e 4920 7878 6420 5c2d e that..I xxd \- +000011d0: 720a 736b 6970 7320 6576 6572 7974 6869 r.skips everythi +000011e0: 6e67 206f 6e20 7468 6520 696e 7075 7420 ng on the input +000011f0: 6c69 6e65 2061 6674 6572 2072 6561 6469 line after readi +00001200: 6e67 2065 6e6f 7567 6820 636f 6c75 6d6e ng enough column +00001210: 7320 6f66 2068 6578 6164 6563 696d 616c s of hexadecimal +00001220: 0a64 6174 6120 2873 6565 206f 7074 696f .data (see optio +00001230: 6e20 5c2d 6329 2e20 5468 6973 2061 6c73 n \-c). This als +00001240: 6f20 6d65 616e 732c 2074 6861 7420 6368 o means, that ch +00001250: 616e 6765 7320 746f 2074 6865 2070 7269 anges to the pri +00001260: 6e74 6162 6c65 2061 7363 6969 2028 6f72 ntable ascii (or +00001270: 0a65 6263 6469 6329 2063 6f6c 756d 6e73 .ebcdic) columns +00001280: 2061 7265 2061 6c77 6179 7320 6967 6e6f are always igno +00001290: 7265 642e 2052 6576 6572 7469 6e67 2061 red. Reverting a +000012a0: 2070 6c61 696e 2028 6f72 2070 6f73 7473 plain (or posts +000012b0: 6372 6970 7429 2073 7479 6c65 0a68 6578 cript) style.hex +000012c0: 6475 6d70 2077 6974 6820 7878 6420 5c2d dump with xxd \- +000012d0: 7220 5c2d 7020 646f 6573 206e 6f74 2064 r \-p does not d +000012e0: 6570 656e 6420 6f6e 2074 6865 2063 6f72 epend on the cor +000012f0: 7265 6374 206e 756d 6265 7220 6f66 2063 rect number of c +00001300: 6f6c 756d 6e73 2e20 4865 7265 2061 6e20 olumns. Here an +00001310: 7468 696e 6720 7468 6174 206c 6f6f 6b73 thing that looks +00001320: 206c 696b 6520 6120 7061 6972 206f 6620 like a pair of +00001330: 6865 782d 6469 6769 7473 2069 7320 696e hex-digits is in +00001340: 7465 7270 7265 7465 642e 0a2e 5050 0a4e terpreted...PP.N +00001350: 6f74 6520 7468 6520 6469 6666 6572 656e ote the differen +00001360: 6365 2062 6574 7765 656e 0a2e 6272 0a5c ce between..br.\ +00001370: 6649 2520 7878 6420 5c2d 6920 6669 6c65 fI% xxd \-i file +00001380: 5c66 520a 2e62 720a 616e 640a 2e62 720a \fR..br.and..br. +00001390: 5c66 4925 2078 7864 205c 2d69 205c 3c20 \fI% xxd \-i \< +000013a0: 6669 6c65 5c66 520a 2e50 500a 2e49 2078 file\fR..PP..I x +000013b0: 7864 205c 2d73 205c 2b73 6565 6b0a 6d61 xd \-s \+seek.ma +000013c0: 7920 6265 2064 6966 6665 7265 6e74 2066 y be different f +000013d0: 726f 6d0a 2e49 2078 7864 205c 2d73 2073 rom..I xxd \-s s +000013e0: 6565 6b0a 2c20 6173 206c 7365 656b 2832 eek., as lseek(2 +000013f0: 2920 6973 2075 7365 6420 746f 2022 7265 ) is used to "re +00001400: 7769 6e64 2220 696e 7075 742e 2020 4120 wind" input. A +00001410: 272b 270a 6d61 6b65 7320 6120 6469 6666 '+'.makes a diff +00001420: 6572 656e 6365 2069 6620 7468 6520 696e erence if the in +00001430: 7075 7420 736f 7572 6365 2069 7320 7374 put source is st +00001440: 6469 6e2c 2061 6e64 2069 6620 7374 6469 din, and if stdi +00001450: 6e27 7320 6669 6c65 2070 6f73 6974 696f n's file positio +00001460: 6e0a 6973 206e 6f74 2061 7420 7468 6520 n.is not at the +00001470: 7374 6172 7420 6f66 2074 6865 2066 696c start of the fil +00001480: 6520 6279 2074 6865 2074 696d 6520 7878 e by the time xx +00001490: 6420 6973 2073 7461 7274 6564 2061 6e64 d is started and +000014a0: 2067 6976 656e 2069 7473 2069 6e70 7574 given its input +000014b0: 2e0a 5468 6520 666f 6c6c 6f77 696e 6720 ..The following +000014c0: 6578 616d 706c 6573 206d 6179 2068 656c examples may hel +000014d0: 7020 746f 2063 6c61 7269 6679 2028 6f72 p to clarify (or +000014e0: 2066 7572 7468 6572 2063 6f6e 6675 7365 further confuse +000014f0: 2129 2e2e 2e0a 2e50 500a 5265 7769 6e64 !).....PP.Rewind +00001500: 2073 7464 696e 2062 6566 6f72 6520 7265 stdin before re +00001510: 6164 696e 673b 206e 6565 6465 6420 6265 ading; needed be +00001520: 6361 7573 6520 7468 6520 6063 6174 2720 cause the `cat' +00001530: 6861 7320 616c 7265 6164 7920 7265 6164 has already read +00001540: 2074 6f20 7468 650a 656e 6420 6f66 2073 to the.end of s +00001550: 7464 696e 2e0a 2e62 720a 5c66 4925 2073 tdin...br.\fI% s +00001560: 6820 5c2d 6320 2763 6174 203e 2070 6c61 h \-c 'cat > pla +00001570: 696e 5f63 6f70 793b 2078 7864 205c 2d73 in_copy; xxd \-s +00001580: 2030 203e 2068 6578 5f63 6f70 7927 203c 0 > hex_copy' < +00001590: 2066 696c 650a 2e50 500a 4865 7864 756d file..PP.Hexdum +000015a0: 7020 6672 6f6d 2066 696c 6520 706f 7369 p from file posi +000015b0: 7469 6f6e 2030 7834 3830 2028 3d31 3032 tion 0x480 (=102 +000015c0: 342b 3132 3829 206f 6e77 6172 6473 2e0a 4+128) onwards.. +000015d0: 5468 6520 602b 2720 7369 676e 206d 6561 The `+' sign mea +000015e0: 6e73 2022 7265 6c61 7469 7665 2074 6f20 ns "relative to +000015f0: 7468 6520 6375 7272 656e 7420 706f 7369 the current posi +00001600: 7469 6f6e 222c 2074 6875 7320 7468 6520 tion", thus the +00001610: 6031 3238 2720 6164 6473 2074 6f0a 7468 `128' adds to.th +00001620: 6520 316b 2077 6865 7265 2064 6420 6c65 e 1k where dd le +00001630: 6674 206f 6666 2e0a 2e62 720a 5c66 4925 ft off...br.\fI% +00001640: 2073 6820 5c2d 6320 2764 6420 6f66 3d70 sh \-c 'dd of=p +00001650: 6c61 696e 5f73 6e69 7070 6574 2062 733d lain_snippet bs= +00001660: 316b 2063 6f75 6e74 3d31 3b20 7878 6420 1k count=1; xxd +00001670: 5c2d 7320 2b31 3238 203e 2068 6578 5f73 \-s +128 > hex_s +00001680: 6e69 7070 6574 2720 3c20 6669 6c65 0a2e nippet' < file.. +00001690: 5050 0a48 6578 6475 6d70 2066 726f 6d20 PP.Hexdump from +000016a0: 6669 6c65 2070 6f73 6974 696f 6e20 3078 file position 0x +000016b0: 3130 3020 2820 3d20 3130 3234 2d37 3638 100 ( = 1024-768 +000016c0: 2920 6f6e 2e0a 2e62 720a 5c66 4925 2073 ) on...br.\fI% s +000016d0: 6820 5c2d 6320 2764 6420 6f66 3d70 6c61 h \-c 'dd of=pla +000016e0: 696e 5f73 6e69 7070 6574 2062 733d 316b in_snippet bs=1k +000016f0: 2063 6f75 6e74 3d31 3b20 7878 6420 5c2d count=1; xxd \- +00001700: 7320 2b2d 3736 3820 3e20 6865 785f 736e s +-768 > hex_sn +00001710: 6970 7065 7427 203c 2066 696c 650a 2e50 ippet' < file..P +00001720: 500a 486f 7765 7665 722c 2074 6869 7320 P.However, this +00001730: 6973 2061 2072 6172 6520 7369 7475 6174 is a rare situat +00001740: 696f 6e20 616e 6420 7468 6520 7573 6520 ion and the use +00001750: 6f66 2060 2b27 2069 7320 7261 7265 6c79 of `+' is rarely +00001760: 206e 6565 6465 642e 0a74 6865 2061 7574 needed..the aut +00001770: 686f 7220 7072 6566 6572 7320 746f 206d hor prefers to m +00001780: 6f6e 6974 6f72 2074 6865 2065 6666 6563 onitor the effec +00001790: 7420 6f66 2078 7864 2077 6974 6820 7374 t of xxd with st +000017a0: 7261 6365 2831 2920 6f72 2074 7275 7373 race(1) or truss +000017b0: 2831 292c 2077 6865 6e65 7665 7220 5c2d (1), whenever \- +000017c0: 7320 6973 2075 7365 642e 0a2e 5348 2045 s is used...SH E +000017d0: 5841 4d50 4c45 530a 2e50 500a 2e62 720a XAMPLES..PP..br. +000017e0: 5072 696e 7420 6576 6572 7974 6869 6e67 Print everything +000017f0: 2062 7574 2074 6865 2066 6972 7374 2074 but the first t +00001800: 6872 6565 206c 696e 6573 2028 6865 7820 hree lines (hex +00001810: 3078 3330 2062 7974 6573 2920 6f66 0a2e 0x30 bytes) of.. +00001820: 4220 6669 6c65 0a5c 2e0a 2e62 720a 5c66 B file.\...br.\f +00001830: 4925 2078 7864 205c 2d73 2030 7833 3020 I% xxd \-s 0x30 +00001840: 6669 6c65 0a2e 5050 0a2e 6272 0a50 7269 file..PP..br.Pri +00001850: 6e74 2033 206c 696e 6573 2028 6865 7820 nt 3 lines (hex +00001860: 3078 3330 2062 7974 6573 2920 6672 6f6d 0x30 bytes) from +00001870: 2074 6865 2065 6e64 206f 660a 2e42 2066 the end of..B f +00001880: 696c 650a 5c2e 0a2e 6272 0a5c 6649 2520 ile.\...br.\fI% +00001890: 7878 6420 5c2d 7320 5c2d 3078 3330 2066 xxd \-s \-0x30 f +000018a0: 696c 650a 2e50 500a 2e62 720a 5072 696e ile..PP..br.Prin +000018b0: 7420 3132 3020 6279 7465 7320 6173 2063 t 120 bytes as c +000018c0: 6f6e 7469 6e75 6f75 7320 6865 7864 756d ontinuous hexdum +000018d0: 7020 7769 7468 2034 3020 6f63 7465 7473 p with 40 octets +000018e0: 2070 6572 206c 696e 652e 0a2e 6272 0a5c per line...br.\ +000018f0: 6649 2520 7878 6420 5c2d 6c20 3132 3020 fI% xxd \-l 120 +00001900: 5c2d 7073 205c 2d63 2032 3020 7878 642e \-ps \-c 20 xxd. +00001910: 315c 6652 0a2e 6272 0a32 6535 3434 3832 1\fR..br.2e54482 +00001920: 3035 3835 3834 3432 3033 3132 3032 3234 0585844203120224 +00001930: 6436 3136 6537 3536 3136 6332 3037 3036 d616e75616c20706 +00001940: 310a 2e62 720a 3637 3635 3230 3636 3666 1..br.676520666f +00001950: 3732 3230 3738 3738 3634 3232 3061 3265 7220787864220a2e +00001960: 3563 3232 3061 3265 3563 3232 3230 0a2e 5c220a2e5c2220.. +00001970: 6272 0a33 3233 3137 3337 3432 3034 6436 br.32317374204d6 +00001980: 3137 3932 3033 3133 3933 3933 3630 6132 17920313939360a2 +00001990: 6535 6332 3232 3034 6436 310a 2e62 720a e5c22204d61..br. +000019a0: 3665 3230 3730 3631 3637 3635 3230 3631 6e20706167652061 +000019b0: 3735 3734 3638 3666 3732 3361 3061 3265 7574686f723a0a2e +000019c0: 3563 3232 3230 3230 0a2e 6272 0a32 3032 5c222020..br.202 +000019d0: 3035 3436 6636 6537 3932 3034 6537 3536 0546f6e79204e756 +000019e0: 3736 3536 6537 3432 3033 6337 3436 6636 7656e74203c746f6 +000019f0: 6537 3934 300a 2e62 720a 3733 3633 3734 e7940..br.736374 +00001a00: 3665 3735 3637 3635 3665 3265 3730 3730 6e7567656e2e7070 +00001a10: 3730 3265 3637 3735 3265 3635 3634 3735 702e67752e656475 +00001a20: 3265 0a2e 6272 0a0a 2e62 720a 4865 7864 2e..br...br.Hexd +00001a30: 756d 7020 7468 6520 6669 7273 7420 3132 ump the first 12 +00001a40: 3020 6279 7465 7320 6f66 2074 6869 7320 0 bytes of this +00001a50: 6d61 6e20 7061 6765 2077 6974 6820 3132 man page with 12 +00001a60: 206f 6374 6574 7320 7065 7220 6c69 6e65 octets per line +00001a70: 2e0a 2e62 720a 5c66 4925 2078 7864 205c ...br.\fI% xxd \ +00001a80: 2d6c 2031 3230 205c 2d63 2031 3220 7878 -l 120 \-c 12 xx +00001a90: 642e 315c 6652 0a2e 6272 0a30 3030 3030 d.1\fR..br.00000 +00001aa0: 3030 3a20 3265 3534 2034 3832 3020 3538 00: 2e54 4820 58 +00001ab0: 3538 2034 3432 3020 3331 3230 2032 3234 58 4420 3120 224 +00001ac0: 6420 202e 5448 2058 5844 2031 2022 4d0a d .TH XXD 1 "M. +00001ad0: 2e62 720a 3030 3030 3030 633a 2036 3136 .br.000000c: 616 +00001ae0: 6520 3735 3631 2036 6332 3020 3730 3631 e 7561 6c20 7061 +00001af0: 2036 3736 3520 3230 3636 2020 616e 7561 6765 2066 anua +00001b00: 6c20 7061 6765 2066 0a2e 6272 0a30 3030 l page f..br.000 +00001b10: 3030 3138 3a20 3666 3732 2032 3037 3820 0018: 6f72 2078 +00001b20: 3738 3634 2032 3230 6120 3265 3563 2032 7864 220a 2e5c 2 +00001b30: 3230 6120 206f 7220 7878 6422 2e2e 5c5c 20a or xxd"..\\ +00001b40: 222e 0a2e 6272 0a30 3030 3030 3234 3a20 "...br.0000024: +00001b50: 3265 3563 2032 3232 3020 3332 3331 2037 2e5c 2220 3231 7 +00001b60: 3337 3420 3230 3464 2036 3137 3920 202e 374 204d 6179 . +00001b70: 5c5c 2220 3231 7374 204d 6179 0a2e 6272 \\" 21st May..br +00001b80: 0a30 3030 3030 3330 3a20 3230 3331 2033 .0000030: 2031 3 +00001b90: 3933 3920 3336 3061 2032 6535 6320 3232 939 360a 2e5c 22 +00001ba0: 3230 2034 6436 3120 2020 3139 3936 2e2e 20 4d61 1996.. +00001bb0: 5c5c 2220 4d61 0a2e 6272 0a30 3030 3030 \\" Ma..br.00000 +00001bc0: 3363 3a20 3665 3230 2037 3036 3120 3637 3c: 6e20 7061 67 +00001bd0: 3635 2032 3036 3120 3735 3734 2036 3836 65 2061 7574 686 +00001be0: 6620 206e 2070 6167 6520 6175 7468 6f0a f n page autho. +00001bf0: 2e62 720a 3030 3030 3034 383a 2037 3233 .br.0000048: 723 +00001c00: 6120 3061 3265 2035 6332 3220 3230 3230 a 0a2e 5c22 2020 +00001c10: 2032 3032 3020 3534 3666 2020 723a 2e2e 2020 546f r:.. +00001c20: 5c5c 2220 2020 2054 6f0a 2e62 720a 3030 \\" To..br.00 +00001c30: 3030 3035 343a 2036 6537 3920 3230 3465 00054: 6e79 204e +00001c40: 2037 3536 3720 3635 3665 2037 3432 3020 7567 656e 7420 +00001c50: 3363 3734 2020 6e79 204e 7567 656e 7420 3c74 ny Nugent +00001c60: 3c74 0a2e 6272 0a30 3030 3030 3630 3a20 outp +00001df0: 7574 5f66 696c 655c 6652 0a2e 6272 0a0a ut_file\fR..br.. +00001e00: 2e62 720a 5061 7463 6820 7468 6520 6461 .br.Patch the da +00001e10: 7465 2069 6e20 7468 6520 6669 6c65 2078 te in the file x +00001e20: 7864 2e31 0a2e 6272 0a5c 6649 2520 6563 xd.1..br.\fI% ec +00001e30: 686f 2027 3030 3030 3032 393a 2033 3537 ho '0000029: 357 +00001e40: 3420 3638 2720 7c20 7878 6420 5c2d 7220 4 68' | xxd \-r +00001e50: 5c2d 2078 7864 2e31 5c66 520a 2e62 720a \- xxd.1\fR..br. +00001e60: 5c66 4925 2078 7864 205c 2d73 2030 7832 \fI% xxd \-s 0x2 +00001e70: 3820 5c2d 6c20 3132 205c 2d63 2031 3220 8 \-l 12 \-c 12 +00001e80: 7878 642e 315c 6652 0a2e 6272 0a30 3030 xxd.1\fR..br.000 +00001e90: 3030 3238 3a20 3332 3335 2037 3436 3820 0028: 3235 7468 +00001ea0: 3230 3464 2036 3137 3920 3230 3331 2033 204d 6179 2031 3 +00001eb0: 3933 3920 2032 3574 6820 4d61 7920 3139 939 25th May 19 +00001ec0: 390a 2e50 500a 2e62 720a 4372 6561 7465 9..PP..br.Create +00001ed0: 2061 2036 3535 3337 2062 7974 6520 6669 a 65537 byte fi +00001ee0: 6c65 2077 6974 6820 616c 6c20 6279 7465 le with all byte +00001ef0: 7320 3078 3030 2c0a 6578 6365 7074 2066 s 0x00,.except f +00001f00: 6f72 2074 6865 206c 6173 7420 6f6e 6520 or the last one +00001f10: 7768 6963 6820 6973 2027 4127 2028 6865 which is 'A' (he +00001f20: 7820 3078 3431 292e 0a2e 6272 0a5c 6649 x 0x41)...br.\fI +00001f30: 2520 6563 686f 2027 3031 3030 3030 3a20 % echo '010000: +00001f40: 3431 2720 7c20 7878 6420 5c2d 7220 5c3e 41' | xxd \-r \> +00001f50: 2066 696c 655c 6652 0a2e 5050 0a2e 6272 file\fR..PP..br +00001f60: 0a48 6578 6475 6d70 2074 6869 7320 6669 .Hexdump this fi +00001f70: 6c65 2077 6974 6820 6175 746f 736b 6970 le with autoskip +00001f80: 2e0a 2e62 720a 5c66 4925 2078 7864 205c ...br.\fI% xxd \ +00001f90: 2d61 205c 2d63 2031 3220 6669 6c65 5c66 -a \-c 12 file\f +00001fa0: 520a 2e62 720a 3030 3030 3030 303a 2030 R..br.0000000: 0 +00001fb0: 3030 3020 3030 3030 2030 3030 3020 3030 000 0000 0000 00 +00001fc0: 3030 2030 3030 3020 3030 3030 2020 2e2e 00 0000 0000 .. +00001fd0: 2e2e 2e2e 2e2e 2e2e 2e2e 0a2e 6272 0a2a ............br.* +00001fe0: 0a2e 6272 0a30 3030 6666 6663 3a20 3030 ..br.000fffc: 00 +00001ff0: 3030 2030 3030 3020 3430 2020 2020 2020 00 0000 40 +00002000: 2020 2020 2020 2020 2020 2020 202e 2e2e ... +00002010: 2e41 0a2e 5050 0a43 7265 6174 6520 6120 .A..PP.Create a +00002020: 3120 6279 7465 2066 696c 6520 636f 6e74 1 byte file cont +00002030: 6169 6e69 6e67 2061 2073 696e 676c 6520 aining a single +00002040: 2741 2720 6368 6172 6163 7465 722e 0a54 'A' character..T +00002050: 6865 206e 756d 6265 7220 6166 7465 7220 he number after +00002060: 275c 2d72 205c 2d73 2720 6164 6473 2074 '\-r \-s' adds t +00002070: 6f20 7468 6520 6c69 6e65 6e75 6d62 6572 o the linenumber +00002080: 7320 666f 756e 6420 696e 2074 6865 2066 s found in the f +00002090: 696c 653b 0a69 6e20 6566 6665 6374 2c20 ile;.in effect, +000020a0: 7468 6520 6c65 6164 696e 6720 6279 7465 the leading byte +000020b0: 7320 6172 6520 7375 7070 7265 7373 6564 s are suppressed +000020c0: 2e0a 2e62 720a 5c66 4925 2065 6368 6f20 ...br.\fI% echo +000020d0: 2730 3130 3030 303a 2034 3127 207c 2078 '010000: 41' | x +000020e0: 7864 205c 2d72 205c 2d73 205c 2d30 7831 xd \-r \-s \-0x1 +000020f0: 3030 3030 205c 3e20 6669 6c65 5c66 520a 0000 \> file\fR. +00002100: 2e50 500a 5573 6520 7878 6420 6173 2061 .PP.Use xxd as a +00002110: 2066 696c 7465 7220 7769 7468 696e 2061 filter within a +00002120: 6e20 6564 6974 6f72 2073 7563 6820 6173 n editor such as +00002130: 0a2e 4220 7669 6d28 3129 0a74 6f20 6865 ..B vim(1).to he +00002140: 7864 756d 7020 6120 7265 6769 6f6e 206d xdump a region m +00002150: 6172 6b65 6420 6265 7477 6565 6e20 6061 arked between `a +00002160: 2720 616e 6420 607a 272e 0a2e 6272 0a5c ' and `z'...br.\ +00002170: 6649 3a27 612c 277a 2178 7864 5c66 520a fI:'a,'z!xxd\fR. +00002180: 2e50 500a 5573 6520 7878 6420 6173 2061 .PP.Use xxd as a +00002190: 2066 696c 7465 7220 7769 7468 696e 2061 filter within a +000021a0: 6e20 6564 6974 6f72 2073 7563 6820 6173 n editor such as +000021b0: 0a2e 4220 7669 6d28 3129 0a74 6f20 7265 ..B vim(1).to re +000021c0: 636f 7665 7220 6120 6269 6e61 7279 2068 cover a binary h +000021d0: 6578 6475 6d70 206d 6172 6b65 6420 6265 exdump marked be +000021e0: 7477 6565 6e20 6061 2720 616e 6420 607a tween `a' and `z +000021f0: 272e 0a2e 6272 0a5c 6649 3a27 612c 277a '...br.\fI:'a,'z +00002200: 2178 7864 205c 2d72 5c66 520a 2e50 500a !xxd \-r\fR..PP. +00002210: 5573 6520 7878 6420 6173 2061 2066 696c Use xxd as a fil +00002220: 7465 7220 7769 7468 696e 2061 6e20 6564 ter within an ed +00002230: 6974 6f72 2073 7563 6820 6173 0a2e 4220 itor such as..B +00002240: 7669 6d28 3129 0a74 6f20 7265 636f 7665 vim(1).to recove +00002250: 7220 6f6e 6520 6c69 6e65 206f 6620 6120 r one line of a +00002260: 6865 7864 756d 702e 2020 4d6f 7665 2074 hexdump. Move t +00002270: 6865 2063 7572 736f 7220 6f76 6572 2074 he cursor over t +00002280: 6865 206c 696e 6520 616e 6420 7479 7065 he line and type +00002290: 3a0a 2e62 720a 5c66 4921 2178 7864 205c :..br.\fI!!xxd \ +000022a0: 2d72 5c66 520a 2e50 500a 5265 6164 2073 -r\fR..PP.Read s +000022b0: 696e 676c 6520 6368 6172 6163 7465 7273 ingle characters +000022c0: 2066 726f 6d20 6120 7365 7269 616c 206c from a serial l +000022d0: 696e 650a 2e62 720a 5c66 4925 2078 7864 ine..br.\fI% xxd +000022e0: 205c 2d63 3120 3c20 2f64 6576 2f74 6572 \-c1 < /dev/ter +000022f0: 6d2f 6220 265c 6652 0a2e 6272 0a5c 6649 m/b &\fR..br.\fI +00002300: 2520 7374 7479 203c 202f 6465 762f 7465 % stty < /dev/te +00002310: 726d 2f62 205c 2d65 6368 6f20 5c2d 6f70 rm/b \-echo \-op +00002320: 6f73 7420 5c2d 6973 6967 205c 2d69 6361 ost \-isig \-ica +00002330: 6e6f 6e20 6d69 6e20 315c 6652 0a2e 6272 non min 1\fR..br +00002340: 0a5c 6649 2520 6563 686f 205c 2d6e 2066 .\fI% echo \-n f +00002350: 6f6f 203e 202f 6465 762f 7465 726d 2f62 oo > /dev/term/b +00002360: 5c66 520a 2e50 500a 2e53 4820 2252 4554 \fR..PP..SH "RET +00002370: 5552 4e20 5641 4c55 4553 220a 5468 6520 URN VALUES".The +00002380: 666f 6c6c 6f77 696e 6720 6572 726f 7220 following error +00002390: 7661 6c75 6573 2061 7265 2072 6574 7572 values are retur +000023a0: 6e65 643a 0a2e 5450 0a30 0a6e 6f20 6572 ned:..TP.0.no er +000023b0: 726f 7273 2065 6e63 6f75 6e74 6572 6564 rors encountered +000023c0: 2e0a 2e54 500a 5c2d 310a 6f70 6572 6174 ...TP.\-1.operat +000023d0: 696f 6e20 6e6f 7420 7375 7070 6f72 7465 ion not supporte +000023e0: 6420 280a 2e49 2078 7864 205c 2d72 205c d (..I xxd \-r \ +000023f0: 2d69 0a73 7469 6c6c 2069 6d70 6f73 7369 -i.still impossi +00002400: 626c 6529 2e0a 2e54 500a 310a 6572 726f ble)...TP.1.erro +00002410: 7220 7768 696c 6520 7061 7273 696e 6720 r while parsing +00002420: 6f70 7469 6f6e 732e 0a2e 5450 0a32 0a70 options...TP.2.p +00002430: 726f 626c 656d 7320 7769 7468 2069 6e70 roblems with inp +00002440: 7574 2066 696c 652e 0a2e 5450 0a33 0a70 ut file...TP.3.p +00002450: 726f 626c 656d 7320 7769 7468 206f 7574 roblems with out +00002460: 7075 7420 6669 6c65 2e0a 2e54 500a 342c put file...TP.4, +00002470: 350a 6465 7369 7265 6420 7365 656b 2070 5.desired seek p +00002480: 6f73 6974 696f 6e20 6973 2075 6e72 6561 osition is unrea +00002490: 6368 6162 6c65 2e0a 2e53 4820 2253 4545 chable...SH "SEE +000024a0: 2041 4c53 4f22 0a75 7565 6e63 6f64 6528 ALSO".uuencode( +000024b0: 3129 2c20 7575 6465 636f 6465 2831 292c 1), uudecode(1), +000024c0: 2070 6174 6368 2831 290a 2e62 720a 2e53 patch(1)..br..S +000024d0: 4820 5741 524e 494e 4753 0a54 6865 2074 H WARNINGS.The t +000024e0: 6f6f 6c73 2077 6569 7264 6e65 7373 206d ools weirdness m +000024f0: 6174 6368 6573 2069 7473 2063 7265 6174 atches its creat +00002500: 6f72 7320 6272 6169 6e2e 0a55 7365 2065 ors brain..Use e +00002510: 6e74 6972 656c 7920 6174 2079 6f75 7220 ntirely at your +00002520: 6f77 6e20 7269 736b 2e20 436f 7079 2066 own risk. Copy f +00002530: 696c 6573 2e20 5472 6163 6520 6974 2e20 iles. Trace it. +00002540: 4265 636f 6d65 2061 2077 697a 6172 642e Become a wizard. +00002550: 0a2e 6272 0a2e 5348 2056 4552 5349 4f4e ..br..SH VERSION +00002560: 0a54 6869 7320 6d61 6e75 616c 2070 6167 .This manual pag +00002570: 6520 646f 6375 6d65 6e74 7320 7878 6420 e documents xxd +00002580: 7665 7273 696f 6e20 312e 370a 2e53 4820 version 1.7..SH +00002590: 4155 5448 4f52 0a2e 6272 0a28 6329 2031 AUTHOR..br.(c) 1 +000025a0: 3939 302d 3139 3937 2062 7920 4a75 6572 990-1997 by Juer +000025b0: 6765 6e20 5765 6967 6572 740a 2e62 720a gen Weigert..br. +000025c0: 3c6a 6e77 6569 6765 7240 696e 666f 726d ..LP.Distri +000025f0: 6275 7465 2066 7265 656c 7920 616e 6420 bute freely and +00002600: 6372 6564 6974 206d 652c 0a2e 6272 0a6d credit me,..br.m +00002610: 616b 6520 6d6f 6e65 7920 616e 6420 7368 ake money and sh +00002620: 6172 6520 7769 7468 206d 652c 0a2e 6272 are with me,..br +00002630: 0a6c 6f73 6520 6d6f 6e65 7920 616e 6420 .lose money and +00002640: 646f 6e27 7420 6173 6b20 6d65 2e0a 2e50 don't ask me...P +00002650: 500a 4d61 6e75 616c 2070 6167 6520 7374 P.Manual page st +00002660: 6172 7465 6420 6279 2054 6f6e 7920 4e75 arted by Tony Nu +00002670: 6765 6e74 0a2e 6272 0a3c 746f 6e79 4073 gent..br. . +000026b0: 2e62 720a 536d 616c 6c20 6368 616e 6765 .br.Small change +000026c0: 7320 6279 2042 7261 6d20 4d6f 6f6c 656e s by Bram Moolen +000026d0: 6161 722e 0a45 6469 7465 6420 6279 204a aar..Edited by J +000026e0: 7565 7267 656e 2057 6569 6765 7274 2e0a uergen Weigert.. +000026f0: 2e50 500a .PP. diff --git a/tests/test_xxd/hex_snippet b/tests/test_xxd/hex_snippet new file mode 100644 index 0000000..1a25703 --- /dev/null +++ b/tests/test_xxd/hex_snippet @@ -0,0 +1,608 @@ +00000100: 6576 6572 7365 2e0a 2e53 4820 5359 4e4f everse...SH SYNO +00000110: 5053 4953 0a2e 4220 7878 640a 5c2d 685b PSIS..B xxd.\-h[ +00000120: 656c 705d 0a2e 6272 0a2e 4220 7878 640a elp]..br..B xxd. +00000130: 5b6f 7074 696f 6e73 5d20 5b69 6e66 696c [options] [infil +00000140: 6520 5b6f 7574 6669 6c65 5d5d 0a2e 6272 e [outfile]]..br +00000150: 0a2e 4220 7878 640a 5c2d 725b 6576 6572 ..B xxd.\-r[ever +00000160: 745d 205b 6f70 7469 6f6e 735d 205b 696e t] [options] [in +00000170: 6669 6c65 205b 6f75 7466 696c 655d 5d0a file [outfile]]. +00000180: 2e53 4820 4445 5343 5249 5054 494f 4e0a .SH DESCRIPTION. +00000190: 2e49 2078 7864 0a63 7265 6174 6573 2061 .I xxd.creates a +000001a0: 2068 6578 2064 756d 7020 6f66 2061 2067 hex dump of a g +000001b0: 6976 656e 2066 696c 6520 6f72 2073 7461 iven file or sta +000001c0: 6e64 6172 6420 696e 7075 742e 0a49 7420 ndard input..It +000001d0: 6361 6e20 616c 736f 2063 6f6e 7665 7274 can also convert +000001e0: 2061 2068 6578 2064 756d 7020 6261 636b a hex dump back +000001f0: 2074 6f20 6974 7320 6f72 6967 696e 616c to its original +00000200: 2062 696e 6172 7920 666f 726d 2e0a 4c69 binary form..Li +00000210: 6b65 0a2e 4252 2075 7565 6e63 6f64 6528 ke..BR uuencode( +00000220: 3129 0a61 6e64 0a2e 4252 2075 7564 6563 1).and..BR uudec +00000230: 6f64 6528 3129 0a69 7420 616c 6c6f 7773 ode(1).it allows +00000240: 2074 6865 2074 7261 6e73 6d69 7373 696f the transmissio +00000250: 6e20 6f66 2062 696e 6172 7920 6461 7461 n of binary data +00000260: 2069 6e20 6120 606d 6169 6c2d 7361 6665 in a `mail-safe +00000270: 2720 4153 4349 4920 7265 7072 6573 656e ' ASCII represen +00000280: 7461 7469 6f6e 2c0a 6275 7420 6861 7320 tation,.but has +00000290: 7468 6520 6164 7661 6e74 6167 6520 6f66 the advantage of +000002a0: 2064 6563 6f64 696e 6720 746f 2073 7461 decoding to sta +000002b0: 6e64 6172 6420 6f75 7470 7574 2e0a 4d6f ndard output..Mo +000002c0: 7265 6f76 6572 2c20 6974 2063 616e 2062 reover, it can b +000002d0: 6520 7573 6564 2074 6f20 7065 7266 6f72 e used to perfor +000002e0: 6d20 6269 6e61 7279 2066 696c 6520 7061 m binary file pa +000002f0: 7463 6869 6e67 2e0a 2e53 4820 4f50 5449 tching...SH OPTI +00000300: 4f4e 530a 4966 206e 6f0a 2e49 2069 6e66 ONS.If no..I inf +00000310: 696c 650a 6973 2067 6976 656e 2c20 7374 ile.is given, st +00000320: 616e 6461 7264 2069 6e70 7574 2069 7320 andard input is +00000330: 7265 6164 2e0a 4966 0a2e 4920 696e 6669 read..If..I infi +00000340: 6c65 0a69 7320 7370 6563 6966 6965 6420 le.is specified +00000350: 6173 2061 0a2e 5242 205c 6020 5c2d 2027 as a..RB \` \- ' +00000360: 0a63 6861 7261 6374 6572 2c20 7468 656e .character, then +00000370: 2069 6e70 7574 2069 7320 7461 6b65 6e20 input is taken +00000380: 6672 6f6d 2073 7461 6e64 6172 6420 696e from standard in +00000390: 7075 742e 0a49 6620 6e6f 0a2e 4920 6f75 put..If no..I ou +000003a0: 7466 696c 650a 6973 2067 6976 656e 2028 tfile.is given ( +000003b0: 6f72 2061 0a2e 5242 205c 6020 5c2d 2027 or a..RB \` \- ' +000003c0: 0a63 6861 7261 6374 6572 2069 7320 696e .character is in +000003d0: 2069 7473 2070 6c61 6365 292c 2072 6573 its place), res +000003e0: 756c 7473 2061 7265 2073 656e 7420 746f ults are sent to +000003f0: 2073 7461 6e64 6172 6420 6f75 7470 7574 standard output +00000400: 2e0a 2e50 500a 4e6f 7465 2074 6861 7420 ...PP.Note that +00000410: 6120 226c 617a 7922 2070 6172 7365 7220 a "lazy" parser +00000420: 6973 2075 7365 6420 7768 6963 6820 646f is used which do +00000430: 6573 206e 6f74 2063 6865 636b 2066 6f72 es not check for +00000440: 206d 6f72 6520 7468 616e 2074 6865 2066 more than the f +00000450: 6972 7374 0a6f 7074 696f 6e20 6c65 7474 irst.option lett +00000460: 6572 2c20 756e 6c65 7373 2074 6865 206f er, unless the o +00000470: 7074 696f 6e20 6973 2066 6f6c 6c6f 7765 ption is followe +00000480: 6420 6279 2061 2070 6172 616d 6574 6572 d by a parameter +00000490: 2e0a 5370 6163 6573 2062 6574 7765 656e ..Spaces between +000004a0: 2061 2073 696e 676c 6520 6f70 7469 6f6e a single option +000004b0: 206c 6574 7465 7220 616e 6420 6974 7320 letter and its +000004c0: 7061 7261 6d65 7465 7220 6172 6520 6f70 parameter are op +000004d0: 7469 6f6e 616c 2e0a 5061 7261 6d65 7465 tional..Paramete +000004e0: 7273 2074 6f20 6f70 7469 6f6e 7320 6361 rs to options ca +000004f0: 6e20 6265 2073 7065 6369 6669 6564 2069 n be specified i +00000500: 6e20 6465 6369 6d61 6c2c 2068 6578 6164 n decimal, hexad +00000510: 6563 696d 616c 206f 7220 6f63 7461 6c0a ecimal or octal. +00000520: 6e6f 7461 7469 6f6e 2e0a 5468 7573 0a2e notation..Thus.. +00000530: 4252 205c 2d63 3820 2c0a 2e42 5220 225c BR \-c8 ,..BR "\ +00000540: 2d63 2038 2220 2c0a 2e42 205c 2d63 2030 -c 8" ,..B \-c 0 +00000550: 3130 0a61 6e64 0a2e 4220 5c2d 636f 6c73 10.and..B \-cols +00000560: 2038 0a61 7265 2061 6c6c 2065 7175 6976 8.are all equiv +00000570: 616c 656e 742e 0a2e 5050 0a2e 5450 0a2e alent...PP..TP.. +00000580: 4952 205c 2d61 2022 207c 2022 205c 2d61 IR \-a " | " \-a +00000590: 7574 6f73 6b69 700a 746f 6767 6c65 2061 utoskip.toggle a +000005a0: 7574 6f73 6b69 703a 2041 2073 696e 676c utoskip: A singl +000005b0: 6520 272a 2720 7265 706c 6163 6573 206e e '*' replaces n +000005c0: 756c 2d6c 696e 6573 2e20 2044 6566 6175 ul-lines. Defau +000005d0: 6c74 206f 6666 2e0a 2e54 500a 2e49 5220 lt off...TP..IR +000005e0: 5c2d 6220 2220 7c20 2220 5c2d 6269 7473 \-b " | " \-bits +000005f0: 0a53 7769 7463 6820 746f 2062 6974 7320 .Switch to bits +00000600: 2862 696e 6172 7920 6469 6769 7473 2920 (binary digits) +00000610: 6475 6d70 2c20 7261 7468 6572 2074 6861 dump, rather tha +00000620: 6e20 6865 7864 756d 702e 0a54 6869 7320 n hexdump..This +00000630: 6f70 7469 6f6e 2077 7269 7465 7320 6f63 option writes oc +00000640: 7465 7473 2061 7320 6569 6768 7420 6469 tets as eight di +00000650: 6769 7473 2022 3122 7320 616e 6420 2230 gits "1"s and "0 +00000660: 2273 2069 6e73 7465 6164 206f 6620 6120 "s instead of a +00000670: 6e6f 726d 616c 0a68 6578 6163 6563 696d normal.hexacecim +00000680: 616c 2064 756d 702e 2045 6163 6820 6c69 al dump. Each li +00000690: 6e65 2069 7320 7072 6563 6564 6564 2062 ne is preceded b +000006a0: 7920 6120 6c69 6e65 206e 756d 6265 7220 y a line number +000006b0: 696e 2068 6578 6164 6563 696d 616c 2061 in hexadecimal a +000006c0: 6e64 0a66 6f6c 6c6f 7765 6420 6279 2061 nd.followed by a +000006d0: 6e20 6173 6369 6920 286f 7220 6562 6364 n ascii (or ebcd +000006e0: 6963 2920 7265 7072 6573 656e 7461 7469 ic) representati +000006f0: 6f6e 2e20 5468 6520 636f 6d6d 616e 6420 on. The command +00000700: 6c69 6e65 2073 7769 7463 6865 730a 5c2d line switches.\- +00000710: 722c 205c 2d70 2c20 5c2d 6920 646f 206e r, \-p, \-i do n +00000720: 6f74 2077 6f72 6b20 7769 7468 2074 6869 ot work with thi +00000730: 7320 6d6f 6465 2e0a 2e54 500a 2e49 5220 s mode...TP..IR +00000740: 225c 2d63 2063 6f6c 7320 2220 7c20 2220 "\-c cols " | " +00000750: 5c2d 636f 6c73 2063 6f6c 7322 0a2e 4952 \-cols cols"..IR +00000760: 2022 5c2d 6320 636f 6c73 2022 207c 2022 "\-c cols " | " +00000770: 205c 2d63 6f6c 7320 636f 6c73 220a 666f \-cols cols".fo +00000780: 726d 6174 0a2e 5249 203c 2063 6f6c 7320 rmat..RI < cols +00000790: 3e0a 6f63 7465 7473 2070 6572 206c 696e >.octets per lin +000007a0: 652e 2044 6566 6175 6c74 2031 3620 285c e. Default 16 (\ +000007b0: 2d69 3a20 3132 2c20 5c2d 7073 3a20 3330 -i: 12, \-ps: 30 +000007c0: 2c20 5c2d 623a 2036 292e 204d 6178 2032 , \-b: 6). Max 2 +000007d0: 3536 2e0a 2e54 500a 2e49 5220 5c2d 4520 56...TP..IR \-E +000007e0: 2220 7c20 2220 5c2d 4542 4344 4943 0a43 " | " \-EBCDIC.C +000007f0: 6861 6e67 6520 7468 6520 6368 6172 6163 hange the charac +00000800: 7465 7220 656e 636f 6469 6e67 2069 6e20 ter encoding in +00000810: 7468 6520 7269 6768 7468 616e 6420 636f the righthand co +00000820: 6c75 6d6e 2066 726f 6d20 4153 4349 4920 lumn from ASCII +00000830: 746f 2045 4243 4449 432e 0a54 6869 7320 to EBCDIC..This +00000840: 646f 6573 206e 6f74 2063 6861 6e67 6520 does not change +00000850: 7468 6520 6865 7861 6465 6369 6d61 6c20 the hexadecimal +00000860: 7265 7072 6573 656e 7461 7469 6f6e 2e20 representation. +00000870: 5468 6520 6f70 7469 6f6e 2069 730a 6d65 The option is.me +00000880: 616e 696e 676c 6573 7320 696e 2063 6f6d aningless in com +00000890: 6269 6e61 7469 6f6e 7320 7769 7468 205c binations with \ +000008a0: 2d72 2c20 5c2d 7020 6f72 205c 2d69 2e0a -r, \-p or \-i.. +000008b0: 2e54 500a 2e49 5220 225c 2d67 2062 7974 .TP..IR "\-g byt +000008c0: 6573 2022 207c 2022 205c 2d67 726f 7570 es " | " \-group +000008d0: 7369 7a65 2062 7974 6573 220a 7365 7065 size bytes".sepe +000008e0: 7261 7465 2074 6865 206f 7574 7075 7420 rate the output +000008f0: 6f66 2065 7665 7279 0a2e 5249 203c 2062 of every..RI < b +00000900: 7974 6573 203e 0a62 7974 6573 2028 7477 ytes >.bytes (tw +00000910: 6f20 6865 7820 6368 6172 6163 7465 7273 o hex characters +00000920: 206f 7220 6569 6768 7420 6269 742d 6469 or eight bit-di +00000930: 6769 7473 2065 6163 6829 2062 7920 6120 gits each) by a +00000940: 7768 6974 6573 7061 6365 2e0a 5370 6563 whitespace..Spec +00000950: 6966 790a 2e49 205c 2d67 2030 0a74 6f20 ify..I \-g 0.to +00000960: 7375 7070 7265 7373 2067 726f 7570 696e suppress groupin +00000970: 672e 0a2e 5249 203c 2042 7974 6573 2022 g...RI < Bytes " +00000980: 3e20 6465 6661 756c 7473 2074 6f20 2220 > defaults to " +00000990: 320a 696e 206e 6f72 6d61 6c20 6d6f 6465 2.in normal mode +000009a0: 2061 6e64 205c 6649 315c 6650 2069 6e20 and \fI1\fP in +000009b0: 6269 7473 206d 6f64 652e 0a47 726f 7570 bits mode..Group +000009c0: 696e 6720 646f 6573 206e 6f74 2061 7070 ing does not app +000009d0: 6c79 2074 6f20 706f 7374 7363 7269 7074 ly to postscript +000009e0: 206f 7220 696e 636c 7564 6520 7374 796c or include styl +000009f0: 652e 0a2e 5450 0a2e 4952 205c 2d68 2022 e...TP..IR \-h " +00000a00: 207c 2022 205c 2d68 656c 700a 7072 696e | " \-help.prin +00000a10: 7420 6120 7375 6d6d 6172 7920 6f66 2061 t a summary of a +00000a20: 7661 696c 6162 6c65 2063 6f6d 6d61 6e64 vailable command +00000a30: 7320 616e 6420 6578 6974 2e20 204e 6f20 s and exit. No +00000a40: 6865 7820 6475 6d70 696e 6720 6973 2070 hex dumping is p +00000a50: 6572 666f 726d 6564 2e0a 2e54 500a 2e49 erformed...TP..I +00000a60: 5220 5c2d 6920 2220 7c20 2220 5c2d 696e R \-i " | " \-in +00000a70: 636c 7564 650a 6f75 7470 7574 2069 6e20 clude.output in +00000a80: 4320 696e 636c 7564 6520 6669 6c65 2073 C include file s +00000a90: 7479 6c65 2e20 4120 636f 6d70 6c65 7465 tyle. A complete +00000aa0: 2073 7461 7469 6320 6172 7261 7920 6465 static array de +00000ab0: 6669 6e69 7469 6f6e 2069 7320 7772 6974 finition is writ +00000ac0: 7465 6e0a 286e 616d 6564 2061 6674 6572 ten.(named after +00000ad0: 2074 6865 2069 6e70 7574 2066 696c 6529 the input file) +00000ae0: 2c20 756e 6c65 7373 2078 7864 2072 6561 , unless xxd rea +00000af0: 6473 2066 726f 6d20 7374 6469 6e2e 0a2e ds from stdin... +00000b00: 5450 0a2e 4952 2022 5c2d 6c20 6c65 6e20 TP..IR "\-l len +00000b10: 2220 7c20 2220 5c2d 6c65 6e20 6c65 6e22 " | " \-len len" +00000b20: 0a73 746f 7020 6166 7465 7220 7772 6974 .stop after writ +00000b30: 696e 670a 2e52 4920 203c 206c 656e 203e ing..RI < len > +00000b40: 0a6f 6374 6574 732e 0a2e 5450 0a2e 4952 .octets...TP..IR +00000b50: 205c 2d70 2022 207c 2022 205c 2d70 7320 \-p " | " \-ps +00000b60: 2220 7c20 2220 5c2d 706f 7374 7363 7269 " | " \-postscri +00000b70: 7074 2022 207c 2022 205c 2d70 6c61 696e pt " | " \-plain +00000b80: 0a6f 7574 7075 7420 696e 2070 6f73 7473 .output in posts +00000b90: 6372 6970 7420 636f 6e74 696e 756f 7573 cript continuous +00000ba0: 2068 6578 6475 6d70 2073 7479 6c65 2e20 hexdump style. +00000bb0: 416c 736f 206b 6e6f 776e 2061 7320 706c Also known as pl +00000bc0: 6169 6e20 6865 7864 756d 700a 7374 796c ain hexdump.styl +00000bd0: 652e 0a2e 5450 0a2e 4952 205c 2d72 2022 e...TP..IR \-r " +00000be0: 207c 2022 205c 2d72 6576 6572 740a 7265 | " \-revert.re +00000bf0: 7665 7273 6520 6f70 6572 6174 696f 6e3a verse operation: +00000c00: 2063 6f6e 7665 7274 2028 6f72 2070 6174 convert (or pat +00000c10: 6368 2920 6865 7864 756d 7020 696e 746f ch) hexdump into +00000c20: 2062 696e 6172 792e 0a49 6620 6e6f 7420 binary..If not +00000c30: 7772 6974 696e 6720 746f 2073 7464 6f75 writing to stdou +00000c40: 742c 2078 7864 2077 7269 7465 7320 696e t, xxd writes in +00000c50: 746f 2069 7473 206f 7574 7075 7420 6669 to its output fi +00000c60: 6c65 2077 6974 686f 7574 2074 7275 6e63 le without trunc +00000c70: 6174 696e 670a 6974 2e20 5573 6520 7468 ating.it. Use th +00000c80: 6520 636f 6d62 696e 6174 696f 6e0a 2e49 e combination..I +00000c90: 205c 2d72 205c 2d70 0a74 6f20 7265 6164 \-r \-p.to read +00000ca0: 2070 6c61 696e 2068 6578 6164 6563 696d plain hexadecim +00000cb0: 616c 2064 756d 7073 2077 6974 686f 7574 al dumps without +00000cc0: 206c 696e 6520 6e75 6d62 6572 2069 6e66 line number inf +00000cd0: 6f72 6d61 7469 6f6e 2061 6e64 2077 6974 ormation and wit +00000ce0: 686f 7574 2061 0a70 6172 7469 6375 6c61 hout a.particula +00000cf0: 7220 636f 6c75 6d6e 206c 6179 6f75 742e r column layout. +00000d00: 2041 6464 6974 696f 6e61 6c20 5768 6974 Additional Whit +00000d10: 6573 7061 6365 2061 6e64 206c 696e 652d espace and line- +00000d20: 6272 6561 6b73 2061 7265 2061 6c6c 6f77 breaks are allow +00000d30: 6564 0a61 6e79 7768 6572 652e 0a2e 5450 ed.anywhere...TP +00000d40: 0a2e 4920 5c2d 7365 656b 206f 6666 7365 ..I \-seek offse +00000d50: 740a 5768 656e 2075 7365 6420 6166 7465 t.When used afte +00000d60: 720a 2e49 205c 2d72 0a3a 2072 6576 6572 r..I \-r.: rever +00000d70: 7420 7769 7468 0a2e 5249 203c 206f 6666 t with..RI < off +00000d80: 7365 7420 3e0a 6164 6465 6420 746f 2066 set >.added to f +00000d90: 696c 6520 706f 7369 7469 6f6e 7320 666f ile positions fo +00000da0: 756e 6420 696e 2068 6578 6475 6d70 2e0a und in hexdump.. +00000db0: 2e54 500a 2e49 205c 2d73 205b 5c2b 5d5b .TP..I \-s [\+][ +00000dc0: 5c2d 5d73 6565 6b0a 7374 6172 7420 6174 \-]seek.start at +00000dd0: 0a2e 5249 203c 2073 6565 6b20 3e0a 6279 ..RI < seek >.by +00000de0: 7465 7320 6162 732e 2028 6f72 2072 656c tes abs. (or rel +00000df0: 2e29 2069 6e66 696c 6520 6f66 6673 6574 .) infile offset +00000e00: 2e0a 5c66 495c 2b20 5c66 5269 6e64 6963 ..\fI\+ \fRindic +00000e10: 6174 6573 2074 6861 7420 7468 6520 7365 ates that the se +00000e20: 656b 2069 7320 7265 6c61 7469 7665 2074 ek is relative t +00000e30: 6f20 7468 6520 6375 7272 656e 7420 7374 o the current st +00000e40: 6469 6e20 6669 6c65 2070 6f73 6974 696f din file positio +00000e50: 6e0a 286d 6561 6e69 6e67 6c65 7373 2077 n.(meaningless w +00000e60: 6865 6e20 6e6f 7420 7265 6164 696e 6720 hen not reading +00000e70: 6672 6f6d 2073 7464 696e 292e 2020 5c66 from stdin). \f +00000e80: 495c 2d20 5c66 5269 6e64 6963 6174 6573 I\- \fRindicates +00000e90: 2074 6861 7420 7468 6520 7365 656b 0a73 that the seek.s +00000ea0: 686f 756c 6420 6265 2074 6861 7420 6d61 hould be that ma +00000eb0: 6e79 2063 6861 7261 6374 6572 7320 6672 ny characters fr +00000ec0: 6f6d 2074 6865 2065 6e64 206f 6620 7468 om the end of th +00000ed0: 6520 696e 7075 7420 286f 7220 6966 2063 e input (or if c +00000ee0: 6f6d 6269 6e65 6420 7769 7468 0a5c 6649 ombined with.\fI +00000ef0: 205c 2b20 5c66 523a 2062 6566 6f72 6520 \+ \fR: before +00000f00: 7468 6520 6375 7272 656e 7420 7374 6469 the current stdi +00000f10: 6e20 6669 6c65 2070 6f73 6974 696f 6e29 n file position) +00000f20: 2e0a 5769 7468 6f75 7420 5c2d 7320 6f70 ..Without \-s op +00000f30: 7469 6f6e 2c20 7878 6420 7374 6172 7473 tion, xxd starts +00000f40: 2061 7420 7468 6520 6375 7272 656e 7420 at the current +00000f50: 6669 6c65 2070 6f73 6974 696f 6e2e 0a2e file position... +00000f60: 5450 0a2e 4920 5c2d 750a 7573 6520 7570 TP..I \-u.use up +00000f70: 7065 7220 6361 7365 2068 6578 206c 6574 per case hex let +00000f80: 7465 7273 2e20 4465 6661 756c 7420 6973 ters. Default is +00000f90: 206c 6f77 6572 2063 6173 652e 0a2e 5450 lower case...TP +00000fa0: 0a2e 4952 205c 2d76 2022 207c 2022 205c ..IR \-v " | " \ +00000fb0: 2d76 6572 7369 6f6e 0a73 686f 7720 7665 -version.show ve +00000fc0: 7273 696f 6e20 7374 7269 6e67 2e0a 2e53 rsion string...S +00000fd0: 4820 4341 5645 4154 530a 2e50 500a 2e49 H CAVEATS..PP..I +00000fe0: 2078 7864 205c 2d72 0a68 6173 2073 6f6d xxd \-r.has som +00000ff0: 6520 6275 696c 7469 6e20 6d61 6769 6320 e builtin magic +00001000: 7768 696c 6520 6576 616c 7561 7469 6e67 while evaluating +00001010: 206c 696e 6520 6e75 6d62 6572 2069 6e66 line number inf +00001020: 6f72 6d61 7469 6f6e 2e0a 4966 2074 6865 ormation..If the +00001030: 206f 7570 7574 2066 696c 6520 6973 2073 ouput file is s +00001040: 6565 6b61 626c 652c 2074 6865 6e20 7468 eekable, then th +00001050: 6520 6c69 6e65 6e75 6d62 6572 7320 6174 e linenumbers at +00001060: 2074 6865 2073 7461 7274 206f 6620 6561 the start of ea +00001070: 6368 0a68 6578 6475 6d70 206c 696e 6520 ch.hexdump line +00001080: 6d61 7920 6265 206f 7574 206f 6620 6f72 may be out of or +00001090: 6465 722c 206c 696e 6573 206d 6179 2062 der, lines may b +000010a0: 6520 6d69 7373 696e 672c 206f 7220 6f76 e missing, or ov +000010b0: 6572 6c61 7070 696e 672e 2049 6e0a 7468 erlapping. In.th +000010c0: 6573 6520 6361 7365 7320 7878 6420 7769 ese cases xxd wi +000010d0: 6c6c 206c 7365 656b 2832 2920 746f 2074 ll lseek(2) to t +000010e0: 6865 206e 6578 7420 706f 7369 7469 6f6e he next position +000010f0: 2e20 4966 2074 6865 206f 7574 7075 7420 . If the output +00001100: 6669 6c65 2069 7320 6e6f 740a 7365 656b file is not.seek +00001110: 6162 6c65 2c20 6f6e 6c79 2067 6170 7320 able, only gaps +00001120: 6172 6520 616c 6c6f 7765 642c 2077 6869 are allowed, whi +00001130: 6368 2077 696c 6c20 6265 2066 696c 6c65 ch will be fille +00001140: 6420 6279 206e 756c 6c2d 6279 7465 732e d by null-bytes. +00001150: 0a2e 5050 0a2e 4920 7878 6420 5c2d 720a ..PP..I xxd \-r. +00001160: 6e65 7665 7220 6765 6e65 7261 7465 7320 never generates +00001170: 7061 7273 6520 6572 726f 7273 2e20 4761 parse errors. Ga +00001180: 7262 6167 6520 6973 2073 696c 656e 746c rbage is silentl +00001190: 7920 736b 6970 7065 642e 0a2e 5050 0a57 y skipped...PP.W +000011a0: 6865 6e20 6564 6974 696e 6720 6865 7864 hen editing hexd +000011b0: 756d 7073 2c20 706c 6561 7365 206e 6f74 umps, please not +000011c0: 6520 7468 6174 0a2e 4920 7878 6420 5c2d e that..I xxd \- +000011d0: 720a 736b 6970 7320 6576 6572 7974 6869 r.skips everythi +000011e0: 6e67 206f 6e20 7468 6520 696e 7075 7420 ng on the input +000011f0: 6c69 6e65 2061 6674 6572 2072 6561 6469 line after readi +00001200: 6e67 2065 6e6f 7567 6820 636f 6c75 6d6e ng enough column +00001210: 7320 6f66 2068 6578 6164 6563 696d 616c s of hexadecimal +00001220: 0a64 6174 6120 2873 6565 206f 7074 696f .data (see optio +00001230: 6e20 5c2d 6329 2e20 5468 6973 2061 6c73 n \-c). This als +00001240: 6f20 6d65 616e 732c 2074 6861 7420 6368 o means, that ch +00001250: 616e 6765 7320 746f 2074 6865 2070 7269 anges to the pri +00001260: 6e74 6162 6c65 2061 7363 6969 2028 6f72 ntable ascii (or +00001270: 0a65 6263 6469 6329 2063 6f6c 756d 6e73 .ebcdic) columns +00001280: 2061 7265 2061 6c77 6179 7320 6967 6e6f are always igno +00001290: 7265 642e 2052 6576 6572 7469 6e67 2061 red. Reverting a +000012a0: 2070 6c61 696e 2028 6f72 2070 6f73 7473 plain (or posts +000012b0: 6372 6970 7429 2073 7479 6c65 0a68 6578 cript) style.hex +000012c0: 6475 6d70 2077 6974 6820 7878 6420 5c2d dump with xxd \- +000012d0: 7220 5c2d 7020 646f 6573 206e 6f74 2064 r \-p does not d +000012e0: 6570 656e 6420 6f6e 2074 6865 2063 6f72 epend on the cor +000012f0: 7265 6374 206e 756d 6265 7220 6f66 2063 rect number of c +00001300: 6f6c 756d 6e73 2e20 4865 7265 2061 6e20 olumns. Here an +00001310: 7468 696e 6720 7468 6174 206c 6f6f 6b73 thing that looks +00001320: 206c 696b 6520 6120 7061 6972 206f 6620 like a pair of +00001330: 6865 782d 6469 6769 7473 2069 7320 696e hex-digits is in +00001340: 7465 7270 7265 7465 642e 0a2e 5050 0a4e terpreted...PP.N +00001350: 6f74 6520 7468 6520 6469 6666 6572 656e ote the differen +00001360: 6365 2062 6574 7765 656e 0a2e 6272 0a5c ce between..br.\ +00001370: 6649 2520 7878 6420 5c2d 6920 6669 6c65 fI% xxd \-i file +00001380: 5c66 520a 2e62 720a 616e 640a 2e62 720a \fR..br.and..br. +00001390: 5c66 4925 2078 7864 205c 2d69 205c 3c20 \fI% xxd \-i \< +000013a0: 6669 6c65 5c66 520a 2e50 500a 2e49 2078 file\fR..PP..I x +000013b0: 7864 205c 2d73 205c 2b73 6565 6b0a 6d61 xd \-s \+seek.ma +000013c0: 7920 6265 2064 6966 6665 7265 6e74 2066 y be different f +000013d0: 726f 6d0a 2e49 2078 7864 205c 2d73 2073 rom..I xxd \-s s +000013e0: 6565 6b0a 2c20 6173 206c 7365 656b 2832 eek., as lseek(2 +000013f0: 2920 6973 2075 7365 6420 746f 2022 7265 ) is used to "re +00001400: 7769 6e64 2220 696e 7075 742e 2020 4120 wind" input. A +00001410: 272b 270a 6d61 6b65 7320 6120 6469 6666 '+'.makes a diff +00001420: 6572 656e 6365 2069 6620 7468 6520 696e erence if the in +00001430: 7075 7420 736f 7572 6365 2069 7320 7374 put source is st +00001440: 6469 6e2c 2061 6e64 2069 6620 7374 6469 din, and if stdi +00001450: 6e27 7320 6669 6c65 2070 6f73 6974 696f n's file positio +00001460: 6e0a 6973 206e 6f74 2061 7420 7468 6520 n.is not at the +00001470: 7374 6172 7420 6f66 2074 6865 2066 696c start of the fil +00001480: 6520 6279 2074 6865 2074 696d 6520 7878 e by the time xx +00001490: 6420 6973 2073 7461 7274 6564 2061 6e64 d is started and +000014a0: 2067 6976 656e 2069 7473 2069 6e70 7574 given its input +000014b0: 2e0a 5468 6520 666f 6c6c 6f77 696e 6720 ..The following +000014c0: 6578 616d 706c 6573 206d 6179 2068 656c examples may hel +000014d0: 7020 746f 2063 6c61 7269 6679 2028 6f72 p to clarify (or +000014e0: 2066 7572 7468 6572 2063 6f6e 6675 7365 further confuse +000014f0: 2129 2e2e 2e0a 2e50 500a 5265 7769 6e64 !).....PP.Rewind +00001500: 2073 7464 696e 2062 6566 6f72 6520 7265 stdin before re +00001510: 6164 696e 673b 206e 6565 6465 6420 6265 ading; needed be +00001520: 6361 7573 6520 7468 6520 6063 6174 2720 cause the `cat' +00001530: 6861 7320 616c 7265 6164 7920 7265 6164 has already read +00001540: 2074 6f20 7468 650a 656e 6420 6f66 2073 to the.end of s +00001550: 7464 696e 2e0a 2e62 720a 5c66 4925 2073 tdin...br.\fI% s +00001560: 6820 5c2d 6320 2763 6174 203e 2070 6c61 h \-c 'cat > pla +00001570: 696e 5f63 6f70 793b 2078 7864 205c 2d73 in_copy; xxd \-s +00001580: 2030 203e 2068 6578 5f63 6f70 7927 203c 0 > hex_copy' < +00001590: 2066 696c 650a 2e50 500a 4865 7864 756d file..PP.Hexdum +000015a0: 7020 6672 6f6d 2066 696c 6520 706f 7369 p from file posi +000015b0: 7469 6f6e 2030 7834 3830 2028 3d31 3032 tion 0x480 (=102 +000015c0: 342b 3132 3829 206f 6e77 6172 6473 2e0a 4+128) onwards.. +000015d0: 5468 6520 602b 2720 7369 676e 206d 6561 The `+' sign mea +000015e0: 6e73 2022 7265 6c61 7469 7665 2074 6f20 ns "relative to +000015f0: 7468 6520 6375 7272 656e 7420 706f 7369 the current posi +00001600: 7469 6f6e 222c 2074 6875 7320 7468 6520 tion", thus the +00001610: 6031 3238 2720 6164 6473 2074 6f0a 7468 `128' adds to.th +00001620: 6520 316b 2077 6865 7265 2064 6420 6c65 e 1k where dd le +00001630: 6674 206f 6666 2e0a 2e62 720a 5c66 4925 ft off...br.\fI% +00001640: 2073 6820 5c2d 6320 2764 6420 6f66 3d70 sh \-c 'dd of=p +00001650: 6c61 696e 5f73 6e69 7070 6574 2062 733d lain_snippet bs= +00001660: 316b 2063 6f75 6e74 3d31 3b20 7878 6420 1k count=1; xxd +00001670: 5c2d 7320 2b31 3238 203e 2068 6578 5f73 \-s +128 > hex_s +00001680: 6e69 7070 6574 2720 3c20 6669 6c65 0a2e nippet' < file.. +00001690: 5050 0a48 6578 6475 6d70 2066 726f 6d20 PP.Hexdump from +000016a0: 6669 6c65 2070 6f73 6974 696f 6e20 3078 file position 0x +000016b0: 3130 3020 2820 3d20 3130 3234 2d37 3638 100 ( = 1024-768 +000016c0: 2920 6f6e 2e0a 2e62 720a 5c66 4925 2073 ) on...br.\fI% s +000016d0: 6820 5c2d 6320 2764 6420 6f66 3d70 6c61 h \-c 'dd of=pla +000016e0: 696e 5f73 6e69 7070 6574 2062 733d 316b in_snippet bs=1k +000016f0: 2063 6f75 6e74 3d31 3b20 7878 6420 5c2d count=1; xxd \- +00001700: 7320 2b2d 3736 3820 3e20 6865 785f 736e s +-768 > hex_sn +00001710: 6970 7065 7427 203c 2066 696c 650a 2e50 ippet' < file..P +00001720: 500a 486f 7765 7665 722c 2074 6869 7320 P.However, this +00001730: 6973 2061 2072 6172 6520 7369 7475 6174 is a rare situat +00001740: 696f 6e20 616e 6420 7468 6520 7573 6520 ion and the use +00001750: 6f66 2060 2b27 2069 7320 7261 7265 6c79 of `+' is rarely +00001760: 206e 6565 6465 642e 0a74 6865 2061 7574 needed..the aut +00001770: 686f 7220 7072 6566 6572 7320 746f 206d hor prefers to m +00001780: 6f6e 6974 6f72 2074 6865 2065 6666 6563 onitor the effec +00001790: 7420 6f66 2078 7864 2077 6974 6820 7374 t of xxd with st +000017a0: 7261 6365 2831 2920 6f72 2074 7275 7373 race(1) or truss +000017b0: 2831 292c 2077 6865 6e65 7665 7220 5c2d (1), whenever \- +000017c0: 7320 6973 2075 7365 642e 0a2e 5348 2045 s is used...SH E +000017d0: 5841 4d50 4c45 530a 2e50 500a 2e62 720a XAMPLES..PP..br. +000017e0: 5072 696e 7420 6576 6572 7974 6869 6e67 Print everything +000017f0: 2062 7574 2074 6865 2066 6972 7374 2074 but the first t +00001800: 6872 6565 206c 696e 6573 2028 6865 7820 hree lines (hex +00001810: 3078 3330 2062 7974 6573 2920 6f66 0a2e 0x30 bytes) of.. +00001820: 4220 6669 6c65 0a5c 2e0a 2e62 720a 5c66 B file.\...br.\f +00001830: 4925 2078 7864 205c 2d73 2030 7833 3020 I% xxd \-s 0x30 +00001840: 6669 6c65 0a2e 5050 0a2e 6272 0a50 7269 file..PP..br.Pri +00001850: 6e74 2033 206c 696e 6573 2028 6865 7820 nt 3 lines (hex +00001860: 3078 3330 2062 7974 6573 2920 6672 6f6d 0x30 bytes) from +00001870: 2074 6865 2065 6e64 206f 660a 2e42 2066 the end of..B f +00001880: 696c 650a 5c2e 0a2e 6272 0a5c 6649 2520 ile.\...br.\fI% +00001890: 7878 6420 5c2d 7320 5c2d 3078 3330 2066 xxd \-s \-0x30 f +000018a0: 696c 650a 2e50 500a 2e62 720a 5072 696e ile..PP..br.Prin +000018b0: 7420 3132 3020 6279 7465 7320 6173 2063 t 120 bytes as c +000018c0: 6f6e 7469 6e75 6f75 7320 6865 7864 756d ontinuous hexdum +000018d0: 7020 7769 7468 2034 3020 6f63 7465 7473 p with 40 octets +000018e0: 2070 6572 206c 696e 652e 0a2e 6272 0a5c per line...br.\ +000018f0: 6649 2520 7878 6420 5c2d 6c20 3132 3020 fI% xxd \-l 120 +00001900: 5c2d 7073 205c 2d63 2032 3020 7878 642e \-ps \-c 20 xxd. +00001910: 315c 6652 0a2e 6272 0a32 6535 3434 3832 1\fR..br.2e54482 +00001920: 3035 3835 3834 3432 3033 3132 3032 3234 0585844203120224 +00001930: 6436 3136 6537 3536 3136 6332 3037 3036 d616e75616c20706 +00001940: 310a 2e62 720a 3637 3635 3230 3636 3666 1..br.676520666f +00001950: 3732 3230 3738 3738 3634 3232 3061 3265 7220787864220a2e +00001960: 3563 3232 3061 3265 3563 3232 3230 0a2e 5c220a2e5c2220.. +00001970: 6272 0a33 3233 3137 3337 3432 3034 6436 br.32317374204d6 +00001980: 3137 3932 3033 3133 3933 3933 3630 6132 17920313939360a2 +00001990: 6535 6332 3232 3034 6436 310a 2e62 720a e5c22204d61..br. +000019a0: 3665 3230 3730 3631 3637 3635 3230 3631 6e20706167652061 +000019b0: 3735 3734 3638 3666 3732 3361 3061 3265 7574686f723a0a2e +000019c0: 3563 3232 3230 3230 0a2e 6272 0a32 3032 5c222020..br.202 +000019d0: 3035 3436 6636 6537 3932 3034 6537 3536 0546f6e79204e756 +000019e0: 3736 3536 6537 3432 3033 6337 3436 6636 7656e74203c746f6 +000019f0: 6537 3934 300a 2e62 720a 3733 3633 3734 e7940..br.736374 +00001a00: 3665 3735 3637 3635 3665 3265 3730 3730 6e7567656e2e7070 +00001a10: 3730 3265 3637 3735 3265 3635 3634 3735 702e67752e656475 +00001a20: 3265 0a2e 6272 0a0a 2e62 720a 4865 7864 2e..br...br.Hexd +00001a30: 756d 7020 7468 6520 6669 7273 7420 3132 ump the first 12 +00001a40: 3020 6279 7465 7320 6f66 2074 6869 7320 0 bytes of this +00001a50: 6d61 6e20 7061 6765 2077 6974 6820 3132 man page with 12 +00001a60: 206f 6374 6574 7320 7065 7220 6c69 6e65 octets per line +00001a70: 2e0a 2e62 720a 5c66 4925 2078 7864 205c ...br.\fI% xxd \ +00001a80: 2d6c 2031 3230 205c 2d63 2031 3220 7878 -l 120 \-c 12 xx +00001a90: 642e 315c 6652 0a2e 6272 0a30 3030 3030 d.1\fR..br.00000 +00001aa0: 3030 3a20 3265 3534 2034 3832 3020 3538 00: 2e54 4820 58 +00001ab0: 3538 2034 3432 3020 3331 3230 2032 3234 58 4420 3120 224 +00001ac0: 6420 202e 5448 2058 5844 2031 2022 4d0a d .TH XXD 1 "M. +00001ad0: 2e62 720a 3030 3030 3030 633a 2036 3136 .br.000000c: 616 +00001ae0: 6520 3735 3631 2036 6332 3020 3730 3631 e 7561 6c20 7061 +00001af0: 2036 3736 3520 3230 3636 2020 616e 7561 6765 2066 anua +00001b00: 6c20 7061 6765 2066 0a2e 6272 0a30 3030 l page f..br.000 +00001b10: 3030 3138 3a20 3666 3732 2032 3037 3820 0018: 6f72 2078 +00001b20: 3738 3634 2032 3230 6120 3265 3563 2032 7864 220a 2e5c 2 +00001b30: 3230 6120 206f 7220 7878 6422 2e2e 5c5c 20a or xxd"..\\ +00001b40: 222e 0a2e 6272 0a30 3030 3030 3234 3a20 "...br.0000024: +00001b50: 3265 3563 2032 3232 3020 3332 3331 2037 2e5c 2220 3231 7 +00001b60: 3337 3420 3230 3464 2036 3137 3920 202e 374 204d 6179 . +00001b70: 5c5c 2220 3231 7374 204d 6179 0a2e 6272 \\" 21st May..br +00001b80: 0a30 3030 3030 3330 3a20 3230 3331 2033 .0000030: 2031 3 +00001b90: 3933 3920 3336 3061 2032 6535 6320 3232 939 360a 2e5c 22 +00001ba0: 3230 2034 6436 3120 2020 3139 3936 2e2e 20 4d61 1996.. +00001bb0: 5c5c 2220 4d61 0a2e 6272 0a30 3030 3030 \\" Ma..br.00000 +00001bc0: 3363 3a20 3665 3230 2037 3036 3120 3637 3c: 6e20 7061 67 +00001bd0: 3635 2032 3036 3120 3735 3734 2036 3836 65 2061 7574 686 +00001be0: 6620 206e 2070 6167 6520 6175 7468 6f0a f n page autho. +00001bf0: 2e62 720a 3030 3030 3034 383a 2037 3233 .br.0000048: 723 +00001c00: 6120 3061 3265 2035 6332 3220 3230 3230 a 0a2e 5c22 2020 +00001c10: 2032 3032 3020 3534 3666 2020 723a 2e2e 2020 546f r:.. +00001c20: 5c5c 2220 2020 2054 6f0a 2e62 720a 3030 \\" To..br.00 +00001c30: 3030 3035 343a 2036 6537 3920 3230 3465 00054: 6e79 204e +00001c40: 2037 3536 3720 3635 3665 2037 3432 3020 7567 656e 7420 +00001c50: 3363 3734 2020 6e79 204e 7567 656e 7420 3c74 ny Nugent +00001c60: 3c74 0a2e 6272 0a30 3030 3030 3630 3a20 outp +00001df0: 7574 5f66 696c 655c 6652 0a2e 6272 0a0a ut_file\fR..br.. +00001e00: 2e62 720a 5061 7463 6820 7468 6520 6461 .br.Patch the da +00001e10: 7465 2069 6e20 7468 6520 6669 6c65 2078 te in the file x +00001e20: 7864 2e31 0a2e 6272 0a5c 6649 2520 6563 xd.1..br.\fI% ec +00001e30: 686f 2027 3030 3030 3032 393a 2033 3537 ho '0000029: 357 +00001e40: 3420 3638 2720 7c20 7878 6420 5c2d 7220 4 68' | xxd \-r +00001e50: 5c2d 2078 7864 2e31 5c66 520a 2e62 720a \- xxd.1\fR..br. +00001e60: 5c66 4925 2078 7864 205c 2d73 2030 7832 \fI% xxd \-s 0x2 +00001e70: 3820 5c2d 6c20 3132 205c 2d63 2031 3220 8 \-l 12 \-c 12 +00001e80: 7878 642e 315c 6652 0a2e 6272 0a30 3030 xxd.1\fR..br.000 +00001e90: 3030 3238 3a20 3332 3335 2037 3436 3820 0028: 3235 7468 +00001ea0: 3230 3464 2036 3137 3920 3230 3331 2033 204d 6179 2031 3 +00001eb0: 3933 3920 2032 3574 6820 4d61 7920 3139 939 25th May 19 +00001ec0: 390a 2e50 500a 2e62 720a 4372 6561 7465 9..PP..br.Create +00001ed0: 2061 2036 3535 3337 2062 7974 6520 6669 a 65537 byte fi +00001ee0: 6c65 2077 6974 6820 616c 6c20 6279 7465 le with all byte +00001ef0: 7320 3078 3030 2c0a 6578 6365 7074 2066 s 0x00,.except f +00001f00: 6f72 2074 6865 206c 6173 7420 6f6e 6520 or the last one +00001f10: 7768 6963 6820 6973 2027 4127 2028 6865 which is 'A' (he +00001f20: 7820 3078 3431 292e 0a2e 6272 0a5c 6649 x 0x41)...br.\fI +00001f30: 2520 6563 686f 2027 3031 3030 3030 3a20 % echo '010000: +00001f40: 3431 2720 7c20 7878 6420 5c2d 7220 5c3e 41' | xxd \-r \> +00001f50: 2066 696c 655c 6652 0a2e 5050 0a2e 6272 file\fR..PP..br +00001f60: 0a48 6578 6475 6d70 2074 6869 7320 6669 .Hexdump this fi +00001f70: 6c65 2077 6974 6820 6175 746f 736b 6970 le with autoskip +00001f80: 2e0a 2e62 720a 5c66 4925 2078 7864 205c ...br.\fI% xxd \ +00001f90: 2d61 205c 2d63 2031 3220 6669 6c65 5c66 -a \-c 12 file\f +00001fa0: 520a 2e62 720a 3030 3030 3030 303a 2030 R..br.0000000: 0 +00001fb0: 3030 3020 3030 3030 2030 3030 3020 3030 000 0000 0000 00 +00001fc0: 3030 2030 3030 3020 3030 3030 2020 2e2e 00 0000 0000 .. +00001fd0: 2e2e 2e2e 2e2e 2e2e 2e2e 0a2e 6272 0a2a ............br.* +00001fe0: 0a2e 6272 0a30 3030 6666 6663 3a20 3030 ..br.000fffc: 00 +00001ff0: 3030 2030 3030 3020 3430 2020 2020 2020 00 0000 40 +00002000: 2020 2020 2020 2020 2020 2020 202e 2e2e ... +00002010: 2e41 0a2e 5050 0a43 7265 6174 6520 6120 .A..PP.Create a +00002020: 3120 6279 7465 2066 696c 6520 636f 6e74 1 byte file cont +00002030: 6169 6e69 6e67 2061 2073 696e 676c 6520 aining a single +00002040: 2741 2720 6368 6172 6163 7465 722e 0a54 'A' character..T +00002050: 6865 206e 756d 6265 7220 6166 7465 7220 he number after +00002060: 275c 2d72 205c 2d73 2720 6164 6473 2074 '\-r \-s' adds t +00002070: 6f20 7468 6520 6c69 6e65 6e75 6d62 6572 o the linenumber +00002080: 7320 666f 756e 6420 696e 2074 6865 2066 s found in the f +00002090: 696c 653b 0a69 6e20 6566 6665 6374 2c20 ile;.in effect, +000020a0: 7468 6520 6c65 6164 696e 6720 6279 7465 the leading byte +000020b0: 7320 6172 6520 7375 7070 7265 7373 6564 s are suppressed +000020c0: 2e0a 2e62 720a 5c66 4925 2065 6368 6f20 ...br.\fI% echo +000020d0: 2730 3130 3030 303a 2034 3127 207c 2078 '010000: 41' | x +000020e0: 7864 205c 2d72 205c 2d73 205c 2d30 7831 xd \-r \-s \-0x1 +000020f0: 3030 3030 205c 3e20 6669 6c65 5c66 520a 0000 \> file\fR. +00002100: 2e50 500a 5573 6520 7878 6420 6173 2061 .PP.Use xxd as a +00002110: 2066 696c 7465 7220 7769 7468 696e 2061 filter within a +00002120: 6e20 6564 6974 6f72 2073 7563 6820 6173 n editor such as +00002130: 0a2e 4220 7669 6d28 3129 0a74 6f20 6865 ..B vim(1).to he +00002140: 7864 756d 7020 6120 7265 6769 6f6e 206d xdump a region m +00002150: 6172 6b65 6420 6265 7477 6565 6e20 6061 arked between `a +00002160: 2720 616e 6420 607a 272e 0a2e 6272 0a5c ' and `z'...br.\ +00002170: 6649 3a27 612c 277a 2178 7864 5c66 520a fI:'a,'z!xxd\fR. +00002180: 2e50 500a 5573 6520 7878 6420 6173 2061 .PP.Use xxd as a +00002190: 2066 696c 7465 7220 7769 7468 696e 2061 filter within a +000021a0: 6e20 6564 6974 6f72 2073 7563 6820 6173 n editor such as +000021b0: 0a2e 4220 7669 6d28 3129 0a74 6f20 7265 ..B vim(1).to re +000021c0: 636f 7665 7220 6120 6269 6e61 7279 2068 cover a binary h +000021d0: 6578 6475 6d70 206d 6172 6b65 6420 6265 exdump marked be +000021e0: 7477 6565 6e20 6061 2720 616e 6420 607a tween `a' and `z +000021f0: 272e 0a2e 6272 0a5c 6649 3a27 612c 277a '...br.\fI:'a,'z +00002200: 2178 7864 205c 2d72 5c66 520a 2e50 500a !xxd \-r\fR..PP. +00002210: 5573 6520 7878 6420 6173 2061 2066 696c Use xxd as a fil +00002220: 7465 7220 7769 7468 696e 2061 6e20 6564 ter within an ed +00002230: 6974 6f72 2073 7563 6820 6173 0a2e 4220 itor such as..B +00002240: 7669 6d28 3129 0a74 6f20 7265 636f 7665 vim(1).to recove +00002250: 7220 6f6e 6520 6c69 6e65 206f 6620 6120 r one line of a +00002260: 6865 7864 756d 702e 2020 4d6f 7665 2074 hexdump. Move t +00002270: 6865 2063 7572 736f 7220 6f76 6572 2074 he cursor over t +00002280: 6865 206c 696e 6520 616e 6420 7479 7065 he line and type +00002290: 3a0a 2e62 720a 5c66 4921 2178 7864 205c :..br.\fI!!xxd \ +000022a0: 2d72 5c66 520a 2e50 500a 5265 6164 2073 -r\fR..PP.Read s +000022b0: 696e 676c 6520 6368 6172 6163 7465 7273 ingle characters +000022c0: 2066 726f 6d20 6120 7365 7269 616c 206c from a serial l +000022d0: 696e 650a 2e62 720a 5c66 4925 2078 7864 ine..br.\fI% xxd +000022e0: 205c 2d63 3120 3c20 2f64 6576 2f74 6572 \-c1 < /dev/ter +000022f0: 6d2f 6220 265c 6652 0a2e 6272 0a5c 6649 m/b &\fR..br.\fI +00002300: 2520 7374 7479 203c 202f 6465 762f 7465 % stty < /dev/te +00002310: 726d 2f62 205c 2d65 6368 6f20 5c2d 6f70 rm/b \-echo \-op +00002320: 6f73 7420 5c2d 6973 6967 205c 2d69 6361 ost \-isig \-ica +00002330: 6e6f 6e20 6d69 6e20 315c 6652 0a2e 6272 non min 1\fR..br +00002340: 0a5c 6649 2520 6563 686f 205c 2d6e 2066 .\fI% echo \-n f +00002350: 6f6f 203e 202f 6465 762f 7465 726d 2f62 oo > /dev/term/b +00002360: 5c66 520a 2e50 500a 2e53 4820 2252 4554 \fR..PP..SH "RET +00002370: 5552 4e20 5641 4c55 4553 220a 5468 6520 URN VALUES".The +00002380: 666f 6c6c 6f77 696e 6720 6572 726f 7220 following error +00002390: 7661 6c75 6573 2061 7265 2072 6574 7572 values are retur +000023a0: 6e65 643a 0a2e 5450 0a30 0a6e 6f20 6572 ned:..TP.0.no er +000023b0: 726f 7273 2065 6e63 6f75 6e74 6572 6564 rors encountered +000023c0: 2e0a 2e54 500a 5c2d 310a 6f70 6572 6174 ...TP.\-1.operat +000023d0: 696f 6e20 6e6f 7420 7375 7070 6f72 7465 ion not supporte +000023e0: 6420 280a 2e49 2078 7864 205c 2d72 205c d (..I xxd \-r \ +000023f0: 2d69 0a73 7469 6c6c 2069 6d70 6f73 7369 -i.still impossi +00002400: 626c 6529 2e0a 2e54 500a 310a 6572 726f ble)...TP.1.erro +00002410: 7220 7768 696c 6520 7061 7273 696e 6720 r while parsing +00002420: 6f70 7469 6f6e 732e 0a2e 5450 0a32 0a70 options...TP.2.p +00002430: 726f 626c 656d 7320 7769 7468 2069 6e70 roblems with inp +00002440: 7574 2066 696c 652e 0a2e 5450 0a33 0a70 ut file...TP.3.p +00002450: 726f 626c 656d 7320 7769 7468 206f 7574 roblems with out +00002460: 7075 7420 6669 6c65 2e0a 2e54 500a 342c put file...TP.4, +00002470: 350a 6465 7369 7265 6420 7365 656b 2070 5.desired seek p +00002480: 6f73 6974 696f 6e20 6973 2075 6e72 6561 osition is unrea +00002490: 6368 6162 6c65 2e0a 2e53 4820 2253 4545 chable...SH "SEE +000024a0: 2041 4c53 4f22 0a75 7565 6e63 6f64 6528 ALSO".uuencode( +000024b0: 3129 2c20 7575 6465 636f 6465 2831 292c 1), uudecode(1), +000024c0: 2070 6174 6368 2831 290a 2e62 720a 2e53 patch(1)..br..S +000024d0: 4820 5741 524e 494e 4753 0a54 6865 2074 H WARNINGS.The t +000024e0: 6f6f 6c73 2077 6569 7264 6e65 7373 206d ools weirdness m +000024f0: 6174 6368 6573 2069 7473 2063 7265 6174 atches its creat +00002500: 6f72 7320 6272 6169 6e2e 0a55 7365 2065 ors brain..Use e +00002510: 6e74 6972 656c 7920 6174 2079 6f75 7220 ntirely at your +00002520: 6f77 6e20 7269 736b 2e20 436f 7079 2066 own risk. Copy f +00002530: 696c 6573 2e20 5472 6163 6520 6974 2e20 iles. Trace it. +00002540: 4265 636f 6d65 2061 2077 697a 6172 642e Become a wizard. +00002550: 0a2e 6272 0a2e 5348 2056 4552 5349 4f4e ..br..SH VERSION +00002560: 0a54 6869 7320 6d61 6e75 616c 2070 6167 .This manual pag +00002570: 6520 646f 6375 6d65 6e74 7320 7878 6420 e documents xxd +00002580: 7665 7273 696f 6e20 312e 370a 2e53 4820 version 1.7..SH +00002590: 4155 5448 4f52 0a2e 6272 0a28 6329 2031 AUTHOR..br.(c) 1 +000025a0: 3939 302d 3139 3937 2062 7920 4a75 6572 990-1997 by Juer +000025b0: 6765 6e20 5765 6967 6572 740a 2e62 720a gen Weigert..br. +000025c0: 3c6a 6e77 6569 6765 7240 696e 666f 726d ..LP.Distri +000025f0: 6275 7465 2066 7265 656c 7920 616e 6420 bute freely and +00002600: 6372 6564 6974 206d 652c 0a2e 6272 0a6d credit me,..br.m +00002610: 616b 6520 6d6f 6e65 7920 616e 6420 7368 ake money and sh +00002620: 6172 6520 7769 7468 206d 652c 0a2e 6272 are with me,..br +00002630: 0a6c 6f73 6520 6d6f 6e65 7920 616e 6420 .lose money and +00002640: 646f 6e27 7420 6173 6b20 6d65 2e0a 2e50 don't ask me...P +00002650: 500a 4d61 6e75 616c 2070 6167 6520 7374 P.Manual page st +00002660: 6172 7465 6420 6279 2054 6f6e 7920 4e75 arted by Tony Nu +00002670: 6765 6e74 0a2e 6272 0a3c 746f 6e79 4073 gent..br. . +000026b0: 2e62 720a 536d 616c 6c20 6368 616e 6765 .br.Small change +000026c0: 7320 6279 2042 7261 6d20 4d6f 6f6c 656e s by Bram Moolen +000026d0: 6161 722e 0a45 6469 7465 6420 6279 204a aar..Edited by J +000026e0: 7565 7267 656e 2057 6569 6765 7274 2e0a uergen Weigert.. +000026f0: 2e50 500a .PP. diff --git a/tests/test_xxd/plain_copy b/tests/test_xxd/plain_copy new file mode 100644 index 0000000..fba0521 --- /dev/null +++ b/tests/test_xxd/plain_copy @@ -0,0 +1,373 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH NAME +.I xxd +\- make a hexdump or do the reverse. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH DESCRIPTION +.I xxd +creates a hex dump of a given file or standard input. +It can also convert a hex dump back to its original binary form. +Like +.BR uuencode(1) +and +.BR uudecode(1) +it allows the transmission of binary data in a `mail-safe' ASCII representation, +but has the advantage of decoding to standard output. +Moreover, it can be used to perform binary file patching. +.SH OPTIONS +If no +.I infile +is given, standard input is read. +If +.I infile +is specified as a +.RB \` \- ' +character, then input is taken from standard input. +If no +.I outfile +is given (or a +.RB \` \- ' +character is in its place), results are sent to standard output. +.PP +Note that a "lazy" parser is used which does not check for more than the first +option letter, unless the option is followed by a parameter. +Spaces between a single option letter and its parameter are optional. +Parameters to options can be specified in decimal, hexadecimal or octal +notation. +Thus +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +and +.B \-cols 8 +are all equivalent. +.PP +.TP +.IR \-a " | " \-autoskip +toggle autoskip: A single '*' replaces nul-lines. Default off. +.TP +.IR \-b " | " \-bits +Switch to bits (binary digits) dump, rather than hexdump. +This option writes octets as eight digits "1"s and "0"s instead of a normal +hexacecimal dump. Each line is preceded by a line number in hexadecimal and +followed by an ascii (or ebcdic) representation. The command line switches +\-r, \-p, \-i do not work with this mode. +.TP +.IR "\-c cols " | " \-cols cols" +.IR "\-c cols " | " \-cols cols" +format +.RI < cols > +octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. +.TP +.IR \-E " | " \-EBCDIC +Change the character encoding in the righthand column from ASCII to EBCDIC. +This does not change the hexadecimal representation. The option is +meaningless in combinations with \-r, \-p or \-i. +.TP +.IR "\-g bytes " | " \-groupsize bytes" +seperate the output of every +.RI < bytes > +bytes (two hex characters or eight bit-digits each) by a whitespace. +Specify +.I \-g 0 +to suppress grouping. +.RI < Bytes "> defaults to " 2 +in normal mode and \fI1\fP in bits mode. +Grouping does not apply to postscript or include style. +.TP +.IR \-h " | " \-help +print a summary of available commands and exit. No hex dumping is performed. +.TP +.IR \-i " | " \-include +output in C include file style. A complete static array definition is written +(named after the input file), unless xxd reads from stdin. +.TP +.IR "\-l len " | " \-len len" +stop after writing +.RI < len > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +output in postscript continuous hexdump style. Also known as plain hexdump +style. +.TP +.IR \-r " | " \-revert +reverse operation: convert (or patch) hexdump into binary. +If not writing to stdout, xxd writes into its output file without truncating +it. Use the combination +.I \-r \-p +to read plain hexadecimal dumps without line number information and without a +particular column layout. Additional Whitespace and line-breaks are allowed +anywhere. +.TP +.I \-seek offset +When used after +.I \-r +: revert with +.RI < offset > +added to file positions found in hexdump. +.TP +.I \-s [\+][\-]seek +start at +.RI < seek > +bytes abs. (or rel.) infile offset. +\fI\+ \fRindicates that the seek is relative to the current stdin file position +(meaningless when not reading from stdin). \fI\- \fRindicates that the seek +should be that many characters from the end of the input (or if combined with +\fI \+ \fR: before the current stdin file position). +Without \-s option, xxd starts at the current file position. +.TP +.I \-u +use upper case hex letters. Default is lower case. +.TP +.IR \-v " | " \-version +show version string. +.SH CAVEATS +.PP +.I xxd \-r +has some builtin magic while evaluating line number information. +If the ouput file is seekable, then the linenumbers at the start of each +hexdump line may be out of order, lines may be missing, or overlapping. In +these cases xxd will lseek(2) to the next position. If the output file is not +seekable, only gaps are allowed, which will be filled by null-bytes. +.PP +.I xxd \-r +never generates parse errors. Garbage is silently skipped. +.PP +When editing hexdumps, please note that +.I xxd \-r +skips everything on the input line after reading enough columns of hexadecimal +data (see option \-c). This also means, that changes to the printable ascii (or +ebcdic) columns are always ignored. Reverting a plain (or postscript) style +hexdump with xxd \-r \-p does not depend on the correct number of columns. Here an thing that looks like a pair of hex-digits is interpreted. +.PP +Note the difference between +.br +\fI% xxd \-i file\fR +.br +and +.br +\fI% xxd \-i \< file\fR +.PP +.I xxd \-s \+seek +may be different from +.I xxd \-s seek +, as lseek(2) is used to "rewind" input. A '+' +makes a difference if the input source is stdin, and if stdin's file position +is not at the start of the file by the time xxd is started and given its input. +The following examples may help to clarify (or further confuse!)... +.PP +Rewind stdin before reading; needed because the `cat' has already read to the +end of stdin. +.br +\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file +.PP +Hexdump from file position 0x480 (=1024+128) onwards. +The `+' sign means "relative to the current position", thus the `128' adds to +the 1k where dd left off. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file +.PP +Hexdump from file position 0x100 ( = 1024-768) on. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file +.PP +However, this is a rare situation and the use of `+' is rarely needed. +the author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. +.SH EXAMPLES +.PP +.br +Print everything but the first three lines (hex 0x30 bytes) of +.B file +\. +.br +\fI% xxd \-s 0x30 file +.PP +.br +Print 3 lines (hex 0x30 bytes) from the end of +.B file +\. +.br +\fI% xxd \-s \-0x30 file +.PP +.br +Print 120 bytes as continuous hexdump with 40 octets per line. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e544820585844203120224d616e75616c207061 +.br +676520666f7220787864220a2e5c220a2e5c2220 +.br +32317374204d617920313939360a2e5c22204d61 +.br +6e207061676520617574686f723a0a2e5c222020 +.br +2020546f6e79204e7567656e74203c746f6e7940 +.br +7363746e7567656e2e7070702e67752e6564752e +.br + +.br +Hexdump the first 120 bytes of this man page with 12 octets per line. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +.br +000000c: 616e 7561 6c20 7061 6765 2066 anual page f +.br +0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\". +.br +0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May +.br +0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma +.br +000003c: 6e20 7061 6765 2061 7574 686f n page autho +.br +0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To +.br +0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent output_file\fR +.br + +.br +Patch the date in the file xxd.1 +.br +\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +.br +0000028: 3235 7468 204d 6179 2031 3939 25th May 199 +.PP +.br +Create a 65537 byte file with all bytes 0x00, +except for the last one which is 'A' (hex 0x41). +.br +\fI% echo '010000: 41' | xxd \-r \> file\fR +.PP +.br +Hexdump this file with autoskip. +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Create a 1 byte file containing a single 'A' character. +The number after '\-r \-s' adds to the linenumbers found in the file; +in effect, the leading bytes are suppressed. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to hexdump a region marked between `a' and `z'. +.br +\fI:'a,'z!xxd\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover a binary hexdump marked between `a' and `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover one line of a hexdump. Move the cursor over the line and type: +.br +\fI!!xxd \-r\fR +.PP +Read single characters from a serial line +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH "RETURN VALUES" +The following error values are returned: +.TP +0 +no errors encountered. +.TP +\-1 +operation not supported ( +.I xxd \-r \-i +still impossible). +.TP +1 +error while parsing options. +.TP +2 +problems with input file. +.TP +3 +problems with output file. +.TP +4,5 +desired seek position is unreachable. +.SH "SEE ALSO" +uuencode(1), uudecode(1), patch(1) +.br +.SH WARNINGS +The tools weirdness matches its creators brain. +Use entirely at your own risk. Copy files. Trace it. Become a wizard. +.br +.SH VERSION +This manual page documents xxd version 1.7 +.SH AUTHOR +.br +(c) 1990-1997 by Juergen Weigert +.br + +.LP +Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me. +.PP +Manual page started by Tony Nugent +.br + +.br +Small changes by Bram Moolenaar. +Edited by Juergen Weigert. +.PP diff --git a/tests/test_xxd/plain_snippet b/tests/test_xxd/plain_snippet new file mode 100644 index 0000000..28c6fc3 --- /dev/null +++ b/tests/test_xxd/plain_snippet @@ -0,0 +1,43 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH NAME +.I xxd +\- make a hexdump or do the reverse. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH DESCRIPTION +.I xxd +creates a hex dump of a given file or standard input. +It can also convert a hex dump back to its original binary form. +Like +.BR uuencode(1) +and +.BR uudecode(1) +it allows the transmission of binary data in a `mail-safe' ASCII representation, +but has the advantage of decoding to standard output. +Moreover, it can be used to perform binary file patching. +.SH OPTIONS +If no +.I infile +is given, standard input is read. +If +.I infile +is specified as a +.RB \` \- ' +character, then input is taken from standard input. +If no +.I outfile +is given (or a +.RB \` \- ' +character is in its place), results are sent to standard output \ No newline at end of file diff --git a/tests/test_xxd/test_xxd_-a_-c_12_file.65537.xxd b/tests/test_xxd/test_xxd_-a_-c_12_file.65537.xxd new file mode 100644 index 0000000..b0a0ef8 --- /dev/null +++ b/tests/test_xxd/test_xxd_-a_-c_12_file.65537.xxd @@ -0,0 +1,3 @@ +00000000: 0000 0000 0000 0000 0000 0000 ............ +* +0000fffc: 0000 0000 41 ....A diff --git a/tests/test_xxd/test_xxd_-i_file.xxd b/tests/test_xxd/test_xxd_-i_file.xxd new file mode 100644 index 0000000..6d50e50 --- /dev/null +++ b/tests/test_xxd/test_xxd_-i_file.xxd @@ -0,0 +1,834 @@ +unsigned char file[] = { + 0x2e, 0x54, 0x48, 0x20, 0x58, 0x58, 0x44, 0x20, 0x31, 0x20, 0x22, 0x41, + 0x75, 0x67, 0x75, 0x73, 0x74, 0x20, 0x31, 0x39, 0x39, 0x36, 0x22, 0x20, + 0x22, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x20, 0x70, 0x61, 0x67, 0x65, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x78, 0x78, 0x64, 0x22, 0x0a, 0x2e, 0x5c, + 0x22, 0x0a, 0x2e, 0x5c, 0x22, 0x20, 0x32, 0x31, 0x73, 0x74, 0x20, 0x4d, + 0x61, 0x79, 0x20, 0x31, 0x39, 0x39, 0x36, 0x0a, 0x2e, 0x5c, 0x22, 0x20, + 0x4d, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x3a, 0x0a, 0x2e, 0x5c, 0x22, 0x20, 0x20, 0x20, 0x20, + 0x54, 0x6f, 0x6e, 0x79, 0x20, 0x4e, 0x75, 0x67, 0x65, 0x6e, 0x74, 0x20, + 0x3c, 0x74, 0x6f, 0x6e, 0x79, 0x40, 0x73, 0x63, 0x74, 0x6e, 0x75, 0x67, + 0x65, 0x6e, 0x2e, 0x70, 0x70, 0x70, 0x2e, 0x67, 0x75, 0x2e, 0x65, 0x64, + 0x75, 0x2e, 0x61, 0x75, 0x3e, 0x20, 0x3c, 0x54, 0x2e, 0x4e, 0x75, 0x67, + 0x65, 0x6e, 0x74, 0x40, 0x73, 0x63, 0x74, 0x2e, 0x67, 0x75, 0x2e, 0x65, + 0x64, 0x75, 0x2e, 0x61, 0x75, 0x3e, 0x0a, 0x2e, 0x5c, 0x22, 0x20, 0x20, + 0x20, 0x20, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x62, 0x79, + 0x20, 0x42, 0x72, 0x61, 0x6d, 0x20, 0x4d, 0x6f, 0x6f, 0x6c, 0x65, 0x6e, + 0x61, 0x61, 0x72, 0x20, 0x3c, 0x42, 0x72, 0x61, 0x6d, 0x40, 0x76, 0x69, + 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x3e, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x4e, + 0x41, 0x4d, 0x45, 0x0a, 0x2e, 0x49, 0x20, 0x78, 0x78, 0x64, 0x0a, 0x5c, + 0x2d, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x61, 0x20, 0x68, 0x65, 0x78, + 0x64, 0x75, 0x6d, 0x70, 0x20, 0x6f, 0x72, 0x20, 0x64, 0x6f, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2e, 0x0a, + 0x2e, 0x53, 0x48, 0x20, 0x53, 0x59, 0x4e, 0x4f, 0x50, 0x53, 0x49, 0x53, + 0x0a, 0x2e, 0x42, 0x20, 0x78, 0x78, 0x64, 0x0a, 0x5c, 0x2d, 0x68, 0x5b, + 0x65, 0x6c, 0x70, 0x5d, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x2e, 0x42, 0x20, + 0x78, 0x78, 0x64, 0x0a, 0x5b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x5d, 0x20, 0x5b, 0x69, 0x6e, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x5b, 0x6f, + 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x5d, 0x5d, 0x0a, 0x2e, 0x62, 0x72, + 0x0a, 0x2e, 0x42, 0x20, 0x78, 0x78, 0x64, 0x0a, 0x5c, 0x2d, 0x72, 0x5b, + 0x65, 0x76, 0x65, 0x72, 0x74, 0x5d, 0x20, 0x5b, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5d, 0x20, 0x5b, 0x69, 0x6e, 0x66, 0x69, 0x6c, 0x65, + 0x20, 0x5b, 0x6f, 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x5d, 0x5d, 0x0a, + 0x2e, 0x53, 0x48, 0x20, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x0a, 0x2e, 0x49, 0x20, 0x78, 0x78, 0x64, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x68, 0x65, 0x78, + 0x20, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x67, + 0x69, 0x76, 0x65, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6f, 0x72, + 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x2e, 0x0a, 0x49, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, + 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x20, 0x61, 0x20, 0x68, 0x65, 0x78, 0x20, 0x64, 0x75, 0x6d, 0x70, 0x20, + 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x74, 0x73, 0x20, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x62, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x0a, 0x4c, 0x69, + 0x6b, 0x65, 0x0a, 0x2e, 0x42, 0x52, 0x20, 0x75, 0x75, 0x65, 0x6e, 0x63, + 0x6f, 0x64, 0x65, 0x28, 0x31, 0x29, 0x0a, 0x61, 0x6e, 0x64, 0x0a, 0x2e, + 0x42, 0x52, 0x20, 0x75, 0x75, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, + 0x31, 0x29, 0x0a, 0x69, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x62, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x69, 0x6e, 0x20, + 0x61, 0x20, 0x60, 0x6d, 0x61, 0x69, 0x6c, 0x2d, 0x73, 0x61, 0x66, 0x65, + 0x27, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x20, 0x72, 0x65, 0x70, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x0a, + 0x62, 0x75, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x61, 0x64, 0x76, 0x61, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, + 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x2e, 0x0a, 0x4d, 0x6f, 0x72, 0x65, 0x6f, 0x76, + 0x65, 0x72, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, + 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x65, + 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x70, 0x61, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2e, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x4f, 0x50, 0x54, 0x49, + 0x4f, 0x4e, 0x53, 0x0a, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x0a, 0x2e, 0x49, + 0x20, 0x69, 0x6e, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x69, 0x73, 0x20, 0x67, + 0x69, 0x76, 0x65, 0x6e, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, + 0x72, 0x64, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x73, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x2e, 0x0a, 0x49, 0x66, 0x0a, 0x2e, 0x49, 0x20, + 0x69, 0x6e, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x69, 0x73, 0x20, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, + 0x0a, 0x2e, 0x52, 0x42, 0x20, 0x5c, 0x60, 0x20, 0x5c, 0x2d, 0x20, 0x27, + 0x0a, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2c, 0x20, + 0x74, 0x68, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, + 0x73, 0x20, 0x74, 0x61, 0x6b, 0x65, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, + 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x2e, 0x0a, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x0a, 0x2e, + 0x49, 0x20, 0x6f, 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x69, 0x73, + 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x28, 0x6f, 0x72, 0x20, 0x61, + 0x0a, 0x2e, 0x52, 0x42, 0x20, 0x5c, 0x60, 0x20, 0x5c, 0x2d, 0x20, 0x27, + 0x0a, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, + 0x73, 0x20, 0x69, 0x6e, 0x20, 0x69, 0x74, 0x73, 0x20, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x29, 0x2c, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, + 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x4e, 0x6f, + 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x20, 0x22, 0x6c, + 0x61, 0x7a, 0x79, 0x22, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, + 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x69, 0x63, + 0x68, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, + 0x65, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x0a, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6c, 0x65, 0x74, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x75, 0x6e, 0x6c, 0x65, + 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x2e, 0x0a, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x73, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x6c, 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x69, 0x74, 0x73, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x2e, 0x0a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x64, 0x65, + 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2c, 0x20, 0x68, 0x65, 0x78, 0x61, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x6f, 0x72, 0x20, 0x6f, 0x63, + 0x74, 0x61, 0x6c, 0x0a, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x0a, 0x54, 0x68, 0x75, 0x73, 0x0a, 0x2e, 0x42, 0x52, 0x20, 0x5c, + 0x2d, 0x63, 0x38, 0x20, 0x2c, 0x0a, 0x2e, 0x42, 0x52, 0x20, 0x22, 0x5c, + 0x2d, 0x63, 0x20, 0x38, 0x22, 0x20, 0x2c, 0x0a, 0x2e, 0x42, 0x20, 0x5c, + 0x2d, 0x63, 0x20, 0x30, 0x31, 0x30, 0x0a, 0x61, 0x6e, 0x64, 0x0a, 0x2e, + 0x42, 0x20, 0x5c, 0x2d, 0x63, 0x6f, 0x6c, 0x73, 0x20, 0x38, 0x0a, 0x61, + 0x72, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x65, 0x71, 0x75, 0x69, 0x76, + 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, + 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x61, 0x20, 0x22, + 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x61, 0x75, 0x74, 0x6f, 0x73, + 0x6b, 0x69, 0x70, 0x0a, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x20, 0x61, + 0x75, 0x74, 0x6f, 0x73, 0x6b, 0x69, 0x70, 0x3a, 0x20, 0x41, 0x20, 0x73, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x27, 0x2a, 0x27, 0x20, 0x72, 0x65, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x20, 0x6e, 0x75, 0x6c, 0x2d, 0x6c, + 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x20, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, + 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x62, 0x20, 0x22, 0x20, 0x7c, 0x20, + 0x22, 0x20, 0x5c, 0x2d, 0x62, 0x69, 0x74, 0x73, 0x0a, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x69, 0x74, 0x73, 0x20, + 0x28, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x20, 0x64, 0x69, 0x67, 0x69, + 0x74, 0x73, 0x29, 0x20, 0x64, 0x75, 0x6d, 0x70, 0x2c, 0x20, 0x72, 0x61, + 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x68, 0x65, + 0x78, 0x64, 0x75, 0x6d, 0x70, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x73, 0x20, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73, + 0x20, 0x22, 0x31, 0x22, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x22, 0x30, + 0x22, 0x73, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6f, + 0x66, 0x20, 0x61, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x0a, 0x68, + 0x65, 0x78, 0x61, 0x63, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x64, + 0x75, 0x6d, 0x70, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x6c, 0x69, + 0x6e, 0x65, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, + 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x6e, 0x65, + 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x68, + 0x65, 0x78, 0x61, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x61, + 0x6e, 0x64, 0x0a, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, + 0x62, 0x79, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x73, 0x63, 0x69, 0x69, 0x20, + 0x28, 0x6f, 0x72, 0x20, 0x65, 0x62, 0x63, 0x64, 0x69, 0x63, 0x29, 0x20, + 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x73, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x65, 0x73, 0x0a, 0x5c, 0x2d, 0x72, 0x2c, 0x20, 0x5c, + 0x2d, 0x70, 0x2c, 0x20, 0x5c, 0x2d, 0x69, 0x20, 0x64, 0x6f, 0x20, 0x6e, + 0x6f, 0x74, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x0a, + 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x22, 0x5c, 0x2d, 0x63, + 0x20, 0x63, 0x6f, 0x6c, 0x73, 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, + 0x5c, 0x2d, 0x63, 0x6f, 0x6c, 0x73, 0x20, 0x63, 0x6f, 0x6c, 0x73, 0x22, + 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x22, 0x5c, 0x2d, 0x63, 0x20, 0x63, 0x6f, + 0x6c, 0x73, 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x63, + 0x6f, 0x6c, 0x73, 0x20, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0x0a, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x2e, 0x52, 0x49, 0x20, 0x3c, 0x20, 0x63, + 0x6f, 0x6c, 0x73, 0x20, 0x3e, 0x0a, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, + 0x20, 0x70, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x20, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x31, 0x36, 0x20, 0x28, 0x5c, + 0x2d, 0x69, 0x3a, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x5c, 0x2d, 0x70, 0x73, + 0x3a, 0x20, 0x33, 0x30, 0x2c, 0x20, 0x5c, 0x2d, 0x62, 0x3a, 0x20, 0x36, + 0x29, 0x2e, 0x20, 0x4d, 0x61, 0x78, 0x20, 0x32, 0x35, 0x36, 0x2e, 0x0a, + 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x45, 0x20, + 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x45, 0x42, 0x43, 0x44, + 0x49, 0x43, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, + 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x68, 0x61, 0x6e, + 0x64, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x20, 0x66, 0x72, 0x6f, + 0x6d, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x20, 0x74, 0x6f, 0x20, 0x45, + 0x42, 0x43, 0x44, 0x49, 0x43, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, + 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x78, 0x61, + 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x70, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, + 0x73, 0x0a, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x73, + 0x73, 0x20, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x5c, + 0x2d, 0x72, 0x2c, 0x20, 0x5c, 0x2d, 0x70, 0x20, 0x6f, 0x72, 0x20, 0x5c, + 0x2d, 0x69, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, + 0x22, 0x5c, 0x2d, 0x67, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x22, + 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x69, 0x7a, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x0a, + 0x73, 0x65, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x65, + 0x76, 0x65, 0x72, 0x79, 0x0a, 0x2e, 0x52, 0x49, 0x20, 0x3c, 0x20, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x20, 0x3e, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x20, 0x28, 0x74, 0x77, 0x6f, 0x20, 0x68, 0x65, 0x78, 0x20, 0x63, 0x68, + 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x6f, 0x72, 0x20, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x69, 0x74, 0x2d, 0x64, 0x69, + 0x67, 0x69, 0x74, 0x73, 0x20, 0x65, 0x61, 0x63, 0x68, 0x29, 0x20, 0x62, + 0x79, 0x20, 0x61, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x2e, 0x0a, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x0a, + 0x2e, 0x49, 0x20, 0x5c, 0x2d, 0x67, 0x20, 0x30, 0x0a, 0x74, 0x6f, 0x20, + 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x2e, 0x52, 0x49, 0x20, 0x3c, + 0x20, 0x42, 0x79, 0x74, 0x65, 0x73, 0x20, 0x22, 0x3e, 0x20, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x22, 0x20, + 0x32, 0x0a, 0x69, 0x6e, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, + 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x5c, 0x66, 0x49, + 0x31, 0x5c, 0x66, 0x50, 0x20, 0x69, 0x6e, 0x20, 0x62, 0x69, 0x74, 0x73, + 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x69, 0x6e, 0x67, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x6f, + 0x73, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6f, 0x72, 0x20, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, + 0x2d, 0x68, 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x68, + 0x65, 0x6c, 0x70, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x20, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x78, + 0x69, 0x74, 0x2e, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x68, 0x65, 0x78, 0x20, + 0x64, 0x75, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x73, 0x20, 0x70, + 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x54, + 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x69, 0x20, 0x22, 0x20, + 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x20, + 0x43, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x20, 0x41, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, + 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x0a, 0x28, 0x6e, 0x61, 0x6d, + 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x29, + 0x2c, 0x20, 0x75, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x78, 0x78, 0x64, + 0x20, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, + 0x73, 0x74, 0x64, 0x69, 0x6e, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, + 0x49, 0x52, 0x20, 0x22, 0x5c, 0x2d, 0x6c, 0x20, 0x6c, 0x65, 0x6e, 0x20, + 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x6c, 0x65, 0x6e, 0x20, + 0x6c, 0x65, 0x6e, 0x22, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x61, 0x66, + 0x74, 0x65, 0x72, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x0a, + 0x2e, 0x52, 0x49, 0x20, 0x20, 0x3c, 0x20, 0x6c, 0x65, 0x6e, 0x20, 0x3e, + 0x0a, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x2e, 0x0a, 0x2e, 0x54, 0x50, + 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x70, 0x20, 0x22, 0x20, 0x7c, + 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x70, 0x73, 0x20, 0x22, 0x20, 0x7c, 0x20, + 0x22, 0x20, 0x5c, 0x2d, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x70, + 0x6c, 0x61, 0x69, 0x6e, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, + 0x69, 0x6e, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, + 0x20, 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x73, 0x74, 0x79, + 0x6c, 0x65, 0x2e, 0x20, 0x41, 0x6c, 0x73, 0x6f, 0x20, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, + 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x0a, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, + 0x2d, 0x72, 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x72, + 0x65, 0x76, 0x65, 0x72, 0x74, 0x0a, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, + 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, + 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x28, 0x6f, 0x72, + 0x20, 0x70, 0x61, 0x74, 0x63, 0x68, 0x29, 0x20, 0x68, 0x65, 0x78, 0x64, + 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x62, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x2e, 0x0a, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x73, + 0x74, 0x64, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x78, 0x78, 0x64, 0x20, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x69, + 0x74, 0x73, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x74, + 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x0a, 0x69, 0x74, + 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, + 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x2e, 0x49, + 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x2d, 0x70, 0x0a, 0x74, 0x6f, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, 0x68, + 0x65, 0x78, 0x61, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x64, + 0x75, 0x6d, 0x70, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, + 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, + 0x20, 0x61, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, + 0x72, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x20, 0x6c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x2e, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x20, 0x57, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x2d, + 0x62, 0x72, 0x65, 0x61, 0x6b, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x0a, 0x61, 0x6e, 0x79, 0x77, 0x68, + 0x65, 0x72, 0x65, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x20, + 0x5c, 0x2d, 0x73, 0x65, 0x65, 0x6b, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x0a, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, + 0x61, 0x66, 0x74, 0x65, 0x72, 0x0a, 0x2e, 0x49, 0x20, 0x5c, 0x2d, 0x72, + 0x0a, 0x3a, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x0a, 0x2e, 0x52, 0x49, 0x20, 0x3c, 0x20, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x20, 0x3e, 0x0a, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, + 0x69, 0x6e, 0x20, 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x2e, 0x0a, + 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x5b, + 0x5c, 0x2b, 0x5d, 0x5b, 0x5c, 0x2d, 0x5d, 0x73, 0x65, 0x65, 0x6b, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x74, 0x0a, 0x2e, 0x52, 0x49, + 0x20, 0x3c, 0x20, 0x73, 0x65, 0x65, 0x6b, 0x20, 0x3e, 0x0a, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x20, 0x61, 0x62, 0x73, 0x2e, 0x20, 0x28, 0x6f, 0x72, + 0x20, 0x72, 0x65, 0x6c, 0x2e, 0x29, 0x20, 0x69, 0x6e, 0x66, 0x69, 0x6c, + 0x65, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2e, 0x0a, 0x5c, 0x66, + 0x49, 0x5c, 0x2b, 0x20, 0x5c, 0x66, 0x52, 0x69, 0x6e, 0x64, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x65, 0x65, 0x6b, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x74, + 0x64, 0x69, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x28, 0x6d, 0x65, 0x61, 0x6e, 0x69, + 0x6e, 0x67, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x29, 0x2e, + 0x20, 0x20, 0x5c, 0x66, 0x49, 0x5c, 0x2d, 0x20, 0x5c, 0x66, 0x52, 0x69, + 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x65, 0x6b, 0x0a, 0x73, + 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, + 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x28, 0x6f, 0x72, 0x20, + 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x64, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x0a, 0x5c, 0x66, 0x49, 0x20, 0x5c, 0x2b, 0x20, + 0x5c, 0x66, 0x52, 0x3a, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, + 0x73, 0x74, 0x64, 0x69, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x2e, 0x0a, 0x57, 0x69, + 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x78, 0x78, 0x64, 0x20, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x73, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x2e, + 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x20, 0x5c, 0x2d, 0x75, 0x0a, 0x75, 0x73, + 0x65, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, + 0x20, 0x68, 0x65, 0x78, 0x20, 0x6c, 0x65, 0x74, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x69, 0x73, + 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, + 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x76, + 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x20, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x43, 0x41, 0x56, 0x45, 0x41, 0x54, + 0x53, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x49, 0x20, 0x78, 0x78, 0x64, + 0x20, 0x5c, 0x2d, 0x72, 0x0a, 0x68, 0x61, 0x73, 0x20, 0x73, 0x6f, 0x6d, + 0x65, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x20, 0x6d, 0x61, + 0x67, 0x69, 0x63, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x65, 0x76, + 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x69, 0x6e, + 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x49, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x75, 0x70, 0x75, 0x74, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x65, 0x6b, 0x61, + 0x62, 0x6c, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x0a, 0x68, + 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, + 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x6f, + 0x66, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2c, 0x20, 0x6c, 0x69, 0x6e, + 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x6f, 0x76, + 0x65, 0x72, 0x6c, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x20, 0x49, + 0x6e, 0x0a, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, + 0x73, 0x20, 0x78, 0x78, 0x64, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6c, + 0x73, 0x65, 0x65, 0x6b, 0x28, 0x32, 0x29, 0x20, 0x74, 0x6f, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x0a, 0x73, 0x65, 0x65, 0x6b, + 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x67, + 0x61, 0x70, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x6c, 0x65, + 0x64, 0x20, 0x62, 0x79, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x2d, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x49, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x0a, 0x6e, 0x65, 0x76, 0x65, + 0x72, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x2e, 0x20, 0x47, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x73, 0x6b, + 0x69, 0x70, 0x70, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x57, + 0x68, 0x65, 0x6e, 0x20, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x73, 0x2c, 0x20, 0x70, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x0a, 0x2e, 0x49, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, + 0x72, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x73, 0x20, 0x65, 0x76, 0x65, 0x72, + 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x6c, 0x69, 0x6e, 0x65, + 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, + 0x6e, 0x67, 0x20, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x68, 0x65, 0x78, + 0x61, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x0a, 0x64, 0x61, 0x74, + 0x61, 0x20, 0x28, 0x73, 0x65, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x5c, 0x2d, 0x63, 0x29, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, + 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x2c, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x73, 0x63, 0x69, 0x69, + 0x20, 0x28, 0x6f, 0x72, 0x0a, 0x65, 0x62, 0x63, 0x64, 0x69, 0x63, 0x29, + 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x20, 0x61, 0x72, 0x65, + 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x69, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x64, 0x2e, 0x20, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x61, 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, 0x28, + 0x6f, 0x72, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x29, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x0a, 0x68, 0x65, 0x78, + 0x64, 0x75, 0x6d, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x78, 0x78, + 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x2d, 0x70, 0x20, 0x64, 0x6f, + 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x72, + 0x72, 0x65, 0x63, 0x74, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, + 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x2e, 0x20, + 0x48, 0x65, 0x72, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, + 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x61, 0x20, 0x70, 0x61, 0x69, 0x72, + 0x20, 0x6f, 0x66, 0x20, 0x68, 0x65, 0x78, 0x2d, 0x64, 0x69, 0x67, 0x69, + 0x74, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x4e, + 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x66, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, + 0x65, 0x6e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x69, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x61, 0x6e, 0x64, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, + 0x20, 0x5c, 0x2d, 0x69, 0x20, 0x5c, 0x3c, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x49, 0x20, 0x78, + 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x5c, 0x2b, 0x73, 0x65, 0x65, + 0x6b, 0x0a, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x64, 0x69, 0x66, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x0a, + 0x2e, 0x49, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x73, + 0x65, 0x65, 0x6b, 0x0a, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x6c, 0x73, 0x65, + 0x65, 0x6b, 0x28, 0x32, 0x29, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, + 0x64, 0x20, 0x74, 0x6f, 0x20, 0x22, 0x72, 0x65, 0x77, 0x69, 0x6e, 0x64, + 0x22, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x20, 0x20, 0x41, 0x20, + 0x27, 0x2b, 0x27, 0x0a, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x61, 0x20, + 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x69, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, + 0x64, 0x69, 0x6e, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x66, 0x20, + 0x73, 0x74, 0x64, 0x69, 0x6e, 0x27, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x69, 0x73, + 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x78, 0x78, 0x64, 0x20, 0x69, 0x73, + 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x69, 0x74, 0x73, 0x20, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6f, + 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x65, 0x6c, + 0x70, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x61, 0x72, 0x69, 0x66, 0x79, + 0x20, 0x28, 0x6f, 0x72, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, + 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x75, 0x73, 0x65, 0x21, 0x29, 0x2e, 0x2e, + 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, + 0x20, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, + 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x3b, 0x20, 0x6e, + 0x65, 0x65, 0x64, 0x65, 0x64, 0x20, 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, + 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x63, 0x61, 0x74, 0x27, 0x20, + 0x68, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x0a, + 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6e, + 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x73, + 0x68, 0x20, 0x5c, 0x2d, 0x63, 0x20, 0x27, 0x63, 0x61, 0x74, 0x20, 0x3e, + 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x3b, + 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x30, 0x20, 0x3e, + 0x20, 0x68, 0x65, 0x78, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x27, 0x20, 0x3c, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x48, 0x65, + 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x30, 0x78, 0x34, 0x38, 0x30, 0x20, 0x28, 0x3d, 0x31, 0x30, 0x32, + 0x34, 0x2b, 0x31, 0x32, 0x38, 0x29, 0x20, 0x6f, 0x6e, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x60, 0x2b, 0x27, 0x20, + 0x73, 0x69, 0x67, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x22, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0x20, 0x74, + 0x68, 0x75, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x31, 0x32, 0x38, + 0x27, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x0a, 0x74, 0x68, + 0x65, 0x20, 0x31, 0x6b, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x64, + 0x64, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x2e, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x73, 0x68, 0x20, + 0x5c, 0x2d, 0x63, 0x20, 0x27, 0x64, 0x64, 0x20, 0x6f, 0x66, 0x3d, 0x70, + 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, + 0x20, 0x62, 0x73, 0x3d, 0x31, 0x6b, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x3d, 0x31, 0x3b, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, + 0x2b, 0x31, 0x32, 0x38, 0x20, 0x3e, 0x20, 0x68, 0x65, 0x78, 0x5f, 0x73, + 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x27, 0x20, 0x3c, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x48, 0x65, 0x78, 0x64, 0x75, + 0x6d, 0x70, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x30, 0x78, + 0x31, 0x30, 0x30, 0x20, 0x28, 0x20, 0x3d, 0x20, 0x31, 0x30, 0x32, 0x34, + 0x2d, 0x37, 0x36, 0x38, 0x29, 0x20, 0x6f, 0x6e, 0x2e, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x73, 0x68, 0x20, 0x5c, 0x2d, + 0x63, 0x20, 0x27, 0x64, 0x64, 0x20, 0x6f, 0x66, 0x3d, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x5f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x20, 0x62, + 0x73, 0x3d, 0x31, 0x6b, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3d, 0x31, + 0x3b, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x2b, 0x2d, + 0x37, 0x36, 0x38, 0x20, 0x3e, 0x20, 0x68, 0x65, 0x78, 0x5f, 0x73, 0x6e, + 0x69, 0x70, 0x70, 0x65, 0x74, 0x27, 0x20, 0x3c, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x48, 0x6f, 0x77, 0x65, 0x76, 0x65, + 0x72, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, + 0x20, 0x72, 0x61, 0x72, 0x65, 0x20, 0x73, 0x69, 0x74, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x60, 0x2b, 0x27, 0x20, 0x69, + 0x73, 0x20, 0x72, 0x61, 0x72, 0x65, 0x6c, 0x79, 0x20, 0x6e, 0x65, 0x65, + 0x64, 0x65, 0x64, 0x2e, 0x0a, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x73, 0x20, + 0x74, 0x6f, 0x20, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x78, 0x78, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x28, 0x31, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x74, + 0x72, 0x75, 0x73, 0x73, 0x28, 0x31, 0x29, 0x2c, 0x20, 0x77, 0x68, 0x65, + 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x69, 0x73, + 0x20, 0x75, 0x73, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x45, + 0x58, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x0a, 0x2e, 0x50, 0x50, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x65, 0x76, + 0x65, 0x72, 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x75, 0x74, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, + 0x68, 0x72, 0x65, 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x28, + 0x68, 0x65, 0x78, 0x20, 0x30, 0x78, 0x33, 0x30, 0x20, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x29, 0x20, 0x6f, 0x66, 0x0a, 0x2e, 0x42, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x0a, 0x5c, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, + 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x30, + 0x78, 0x33, 0x30, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x2e, 0x50, 0x50, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x33, + 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x28, 0x68, 0x65, 0x78, 0x20, + 0x30, 0x78, 0x33, 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64, + 0x20, 0x6f, 0x66, 0x0a, 0x2e, 0x42, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, + 0x5c, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x5c, 0x2d, 0x30, 0x78, + 0x33, 0x30, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x2e, 0x50, 0x50, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x31, 0x32, + 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x20, 0x68, 0x65, + 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x34, + 0x30, 0x20, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x20, 0x70, 0x65, 0x72, + 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, + 0x66, 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x6c, 0x20, + 0x31, 0x32, 0x30, 0x20, 0x5c, 0x2d, 0x70, 0x73, 0x20, 0x5c, 0x2d, 0x63, + 0x20, 0x32, 0x30, 0x20, 0x78, 0x78, 0x64, 0x2e, 0x31, 0x5c, 0x66, 0x52, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x32, 0x65, 0x35, 0x34, 0x34, 0x38, 0x32, + 0x30, 0x35, 0x38, 0x35, 0x38, 0x34, 0x34, 0x32, 0x30, 0x33, 0x31, 0x32, + 0x30, 0x32, 0x32, 0x34, 0x64, 0x36, 0x31, 0x36, 0x65, 0x37, 0x35, 0x36, + 0x31, 0x36, 0x63, 0x32, 0x30, 0x37, 0x30, 0x36, 0x31, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x36, 0x37, 0x36, 0x35, 0x32, 0x30, 0x36, 0x36, 0x36, 0x66, + 0x37, 0x32, 0x32, 0x30, 0x37, 0x38, 0x37, 0x38, 0x36, 0x34, 0x32, 0x32, + 0x30, 0x61, 0x32, 0x65, 0x35, 0x63, 0x32, 0x32, 0x30, 0x61, 0x32, 0x65, + 0x35, 0x63, 0x32, 0x32, 0x32, 0x30, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x33, + 0x32, 0x33, 0x31, 0x37, 0x33, 0x37, 0x34, 0x32, 0x30, 0x34, 0x64, 0x36, + 0x31, 0x37, 0x39, 0x32, 0x30, 0x33, 0x31, 0x33, 0x39, 0x33, 0x39, 0x33, + 0x36, 0x30, 0x61, 0x32, 0x65, 0x35, 0x63, 0x32, 0x32, 0x32, 0x30, 0x34, + 0x64, 0x36, 0x31, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x36, 0x65, 0x32, 0x30, + 0x37, 0x30, 0x36, 0x31, 0x36, 0x37, 0x36, 0x35, 0x32, 0x30, 0x36, 0x31, + 0x37, 0x35, 0x37, 0x34, 0x36, 0x38, 0x36, 0x66, 0x37, 0x32, 0x33, 0x61, + 0x30, 0x61, 0x32, 0x65, 0x35, 0x63, 0x32, 0x32, 0x32, 0x30, 0x32, 0x30, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x32, 0x30, 0x32, 0x30, 0x35, 0x34, 0x36, + 0x66, 0x36, 0x65, 0x37, 0x39, 0x32, 0x30, 0x34, 0x65, 0x37, 0x35, 0x36, + 0x37, 0x36, 0x35, 0x36, 0x65, 0x37, 0x34, 0x32, 0x30, 0x33, 0x63, 0x37, + 0x34, 0x36, 0x66, 0x36, 0x65, 0x37, 0x39, 0x34, 0x30, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x37, 0x33, 0x36, 0x33, 0x37, 0x34, 0x36, 0x65, 0x37, 0x35, + 0x36, 0x37, 0x36, 0x35, 0x36, 0x65, 0x32, 0x65, 0x37, 0x30, 0x37, 0x30, + 0x37, 0x30, 0x32, 0x65, 0x36, 0x37, 0x37, 0x35, 0x32, 0x65, 0x36, 0x35, + 0x36, 0x34, 0x37, 0x35, 0x32, 0x65, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x48, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x31, 0x32, + 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x6d, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x67, 0x65, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x31, 0x32, 0x20, 0x6f, 0x63, 0x74, + 0x65, 0x74, 0x73, 0x20, 0x70, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x6e, 0x65, + 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x78, + 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x6c, 0x20, 0x31, 0x32, 0x30, 0x20, 0x5c, + 0x2d, 0x63, 0x20, 0x31, 0x32, 0x20, 0x78, 0x78, 0x64, 0x2e, 0x31, 0x5c, + 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x3a, 0x20, 0x32, 0x65, 0x35, 0x34, 0x20, 0x34, 0x38, 0x32, + 0x30, 0x20, 0x35, 0x38, 0x35, 0x38, 0x20, 0x34, 0x34, 0x32, 0x30, 0x20, + 0x33, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x34, 0x64, 0x20, 0x20, 0x2e, + 0x54, 0x48, 0x20, 0x58, 0x58, 0x44, 0x20, 0x31, 0x20, 0x22, 0x4d, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x63, 0x3a, + 0x20, 0x36, 0x31, 0x36, 0x65, 0x20, 0x37, 0x35, 0x36, 0x31, 0x20, 0x36, + 0x63, 0x32, 0x30, 0x20, 0x37, 0x30, 0x36, 0x31, 0x20, 0x36, 0x37, 0x36, + 0x35, 0x20, 0x32, 0x30, 0x36, 0x36, 0x20, 0x20, 0x61, 0x6e, 0x75, 0x61, + 0x6c, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x66, 0x0a, 0x2e, 0x62, 0x72, + 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x38, 0x3a, 0x20, 0x36, 0x66, + 0x37, 0x32, 0x20, 0x32, 0x30, 0x37, 0x38, 0x20, 0x37, 0x38, 0x36, 0x34, + 0x20, 0x32, 0x32, 0x30, 0x61, 0x20, 0x32, 0x65, 0x35, 0x63, 0x20, 0x32, + 0x32, 0x30, 0x61, 0x20, 0x20, 0x6f, 0x72, 0x20, 0x78, 0x78, 0x64, 0x22, + 0x2e, 0x2e, 0x5c, 0x5c, 0x22, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x32, 0x34, 0x3a, 0x20, 0x32, 0x65, 0x35, 0x63, + 0x20, 0x32, 0x32, 0x32, 0x30, 0x20, 0x33, 0x32, 0x33, 0x31, 0x20, 0x37, + 0x33, 0x37, 0x34, 0x20, 0x32, 0x30, 0x34, 0x64, 0x20, 0x36, 0x31, 0x37, + 0x39, 0x20, 0x20, 0x2e, 0x5c, 0x5c, 0x22, 0x20, 0x32, 0x31, 0x73, 0x74, + 0x20, 0x4d, 0x61, 0x79, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x33, 0x30, 0x3a, 0x20, 0x32, 0x30, 0x33, 0x31, 0x20, 0x33, + 0x39, 0x33, 0x39, 0x20, 0x33, 0x36, 0x30, 0x61, 0x20, 0x32, 0x65, 0x35, + 0x63, 0x20, 0x32, 0x32, 0x32, 0x30, 0x20, 0x34, 0x64, 0x36, 0x31, 0x20, + 0x20, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2e, 0x2e, 0x5c, 0x5c, 0x22, 0x20, + 0x4d, 0x61, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x33, 0x63, 0x3a, 0x20, 0x36, 0x65, 0x32, 0x30, 0x20, 0x37, 0x30, 0x36, + 0x31, 0x20, 0x36, 0x37, 0x36, 0x35, 0x20, 0x32, 0x30, 0x36, 0x31, 0x20, + 0x37, 0x35, 0x37, 0x34, 0x20, 0x36, 0x38, 0x36, 0x66, 0x20, 0x20, 0x6e, + 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x38, 0x3a, + 0x20, 0x37, 0x32, 0x33, 0x61, 0x20, 0x30, 0x61, 0x32, 0x65, 0x20, 0x35, + 0x63, 0x32, 0x32, 0x20, 0x32, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x32, + 0x30, 0x20, 0x35, 0x34, 0x36, 0x66, 0x20, 0x20, 0x72, 0x3a, 0x2e, 0x2e, + 0x5c, 0x5c, 0x22, 0x20, 0x20, 0x20, 0x20, 0x54, 0x6f, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x34, 0x3a, 0x20, 0x36, + 0x65, 0x37, 0x39, 0x20, 0x32, 0x30, 0x34, 0x65, 0x20, 0x37, 0x35, 0x36, + 0x37, 0x20, 0x36, 0x35, 0x36, 0x65, 0x20, 0x37, 0x34, 0x32, 0x30, 0x20, + 0x33, 0x63, 0x37, 0x34, 0x20, 0x20, 0x6e, 0x79, 0x20, 0x4e, 0x75, 0x67, + 0x65, 0x6e, 0x74, 0x20, 0x3c, 0x74, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x36, 0x30, 0x3a, 0x20, 0x36, 0x66, 0x36, 0x65, + 0x20, 0x37, 0x39, 0x34, 0x30, 0x20, 0x37, 0x33, 0x36, 0x33, 0x20, 0x37, + 0x34, 0x36, 0x65, 0x20, 0x37, 0x35, 0x36, 0x37, 0x20, 0x36, 0x35, 0x36, + 0x65, 0x20, 0x20, 0x6f, 0x6e, 0x79, 0x40, 0x73, 0x63, 0x74, 0x6e, 0x75, + 0x67, 0x65, 0x6e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x36, 0x63, 0x3a, 0x20, 0x32, 0x65, 0x37, 0x30, 0x20, 0x37, 0x30, + 0x37, 0x30, 0x20, 0x32, 0x65, 0x36, 0x37, 0x20, 0x37, 0x35, 0x32, 0x65, + 0x20, 0x36, 0x35, 0x36, 0x34, 0x20, 0x37, 0x35, 0x32, 0x65, 0x20, 0x20, + 0x2e, 0x70, 0x70, 0x70, 0x2e, 0x67, 0x75, 0x2e, 0x65, 0x64, 0x75, 0x2e, + 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x44, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6a, 0x75, 0x73, 0x74, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x78, 0x78, 0x64, + 0x2e, 0x31, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x30, 0x78, 0x32, 0x38, + 0x20, 0x5c, 0x2d, 0x6c, 0x20, 0x31, 0x32, 0x20, 0x5c, 0x2d, 0x63, 0x20, + 0x31, 0x32, 0x20, 0x78, 0x78, 0x64, 0x2e, 0x31, 0x5c, 0x66, 0x52, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 0x38, 0x3a, + 0x20, 0x33, 0x32, 0x33, 0x31, 0x20, 0x37, 0x33, 0x37, 0x34, 0x20, 0x32, + 0x30, 0x34, 0x64, 0x20, 0x36, 0x31, 0x37, 0x39, 0x20, 0x32, 0x30, 0x33, + 0x31, 0x20, 0x33, 0x39, 0x33, 0x39, 0x20, 0x20, 0x32, 0x31, 0x73, 0x74, + 0x20, 0x4d, 0x61, 0x79, 0x20, 0x31, 0x39, 0x39, 0x0a, 0x2e, 0x50, 0x50, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x0a, 0x2e, 0x42, + 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x0a, + 0x74, 0x6f, 0x0a, 0x2e, 0x42, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x72, + 0x65, 0x70, 0x65, 0x6e, 0x64, 0x20, 0x31, 0x30, 0x30, 0x20, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x20, 0x30, 0x78, 0x30, 0x30, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, + 0x66, 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, 0x20, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x7c, 0x20, 0x78, 0x78, 0x64, + 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x31, 0x30, 0x30, + 0x20, 0x5c, 0x3e, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, + 0x69, 0x6c, 0x65, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x50, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x78, 0x78, 0x64, 0x2e, 0x31, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x65, 0x63, + 0x68, 0x6f, 0x20, 0x27, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 0x39, 0x3a, + 0x20, 0x33, 0x35, 0x37, 0x34, 0x20, 0x36, 0x38, 0x27, 0x20, 0x7c, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x2d, 0x20, 0x78, + 0x78, 0x64, 0x2e, 0x31, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, 0x0a, + 0x5c, 0x66, 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, + 0x20, 0x30, 0x78, 0x32, 0x38, 0x20, 0x5c, 0x2d, 0x6c, 0x20, 0x31, 0x32, + 0x20, 0x5c, 0x2d, 0x63, 0x20, 0x31, 0x32, 0x20, 0x78, 0x78, 0x64, 0x2e, + 0x31, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x32, 0x38, 0x3a, 0x20, 0x33, 0x32, 0x33, 0x35, 0x20, 0x37, + 0x34, 0x36, 0x38, 0x20, 0x32, 0x30, 0x34, 0x64, 0x20, 0x36, 0x31, 0x37, + 0x39, 0x20, 0x32, 0x30, 0x33, 0x31, 0x20, 0x33, 0x39, 0x33, 0x39, 0x20, + 0x20, 0x32, 0x35, 0x74, 0x68, 0x20, 0x4d, 0x61, 0x79, 0x20, 0x31, 0x39, + 0x39, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x36, 0x35, 0x35, 0x33, 0x37, + 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x20, 0x30, 0x78, 0x30, 0x30, 0x2c, 0x0a, 0x65, 0x78, 0x63, 0x65, + 0x70, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, + 0x61, 0x73, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x77, 0x68, 0x69, 0x63, + 0x68, 0x20, 0x69, 0x73, 0x20, 0x27, 0x41, 0x27, 0x20, 0x28, 0x68, 0x65, + 0x78, 0x20, 0x30, 0x78, 0x34, 0x31, 0x29, 0x2e, 0x0a, 0x2e, 0x62, 0x72, + 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x27, + 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x20, 0x34, 0x31, 0x27, 0x20, + 0x7c, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x3e, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x50, 0x50, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x48, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, + 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x6b, 0x69, 0x70, + 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x78, + 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x61, 0x20, 0x5c, 0x2d, 0x63, 0x20, 0x31, + 0x32, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x20, 0x30, + 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, 0x30, + 0x30, 0x20, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, 0x30, 0x30, 0x20, + 0x30, 0x30, 0x30, 0x30, 0x20, 0x20, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x2a, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x66, 0x66, 0x66, 0x63, + 0x3a, 0x20, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, 0x30, 0x30, 0x20, + 0x34, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x2e, 0x2e, + 0x2e, 0x41, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x20, 0x61, 0x20, 0x31, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, + 0x27, 0x41, 0x27, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, + 0x72, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x27, 0x5c, 0x2d, 0x72, + 0x20, 0x5c, 0x2d, 0x73, 0x27, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, + 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x3b, + 0x0a, 0x69, 0x6e, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2c, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x75, + 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, + 0x27, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x20, 0x34, 0x31, 0x27, + 0x20, 0x7c, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, + 0x2d, 0x73, 0x20, 0x5c, 0x2d, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x30, + 0x20, 0x5c, 0x3e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x66, 0x52, 0x0a, + 0x2e, 0x50, 0x50, 0x0a, 0x55, 0x73, 0x65, 0x20, 0x78, 0x78, 0x64, 0x20, + 0x61, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, + 0x0a, 0x2e, 0x42, 0x20, 0x76, 0x69, 0x6d, 0x28, 0x31, 0x29, 0x0a, 0x74, + 0x6f, 0x20, 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x61, 0x20, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x64, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x60, 0x61, + 0x27, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x7a, 0x27, 0x2e, 0x0a, 0x2e, + 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x3a, 0x27, 0x61, 0x2c, 0x27, 0x7a, + 0x21, 0x78, 0x78, 0x64, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x50, 0x50, 0x0a, + 0x55, 0x73, 0x65, 0x20, 0x78, 0x78, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, + 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, + 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x0a, 0x2e, 0x42, 0x20, + 0x76, 0x69, 0x6d, 0x28, 0x31, 0x29, 0x0a, 0x74, 0x6f, 0x20, 0x72, 0x65, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x20, 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, + 0x6e, 0x20, 0x60, 0x61, 0x27, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x7a, + 0x27, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x3a, 0x27, + 0x61, 0x2c, 0x27, 0x7a, 0x21, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, + 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x55, 0x73, 0x65, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, + 0x6e, 0x20, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x63, + 0x68, 0x20, 0x61, 0x73, 0x0a, 0x2e, 0x42, 0x20, 0x76, 0x69, 0x6d, 0x28, + 0x31, 0x29, 0x0a, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6f, + 0x66, 0x20, 0x61, 0x20, 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x2e, + 0x20, 0x20, 0x4d, 0x6f, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x3a, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, + 0x49, 0x21, 0x21, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x5c, 0x66, + 0x52, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x52, 0x65, 0x61, 0x64, 0x20, 0x73, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, + 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, + 0x20, 0x5c, 0x2d, 0x63, 0x31, 0x20, 0x3c, 0x20, 0x2f, 0x64, 0x65, 0x76, + 0x2f, 0x74, 0x65, 0x72, 0x6d, 0x2f, 0x62, 0x20, 0x26, 0x5c, 0x66, 0x52, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x73, 0x74, + 0x74, 0x79, 0x20, 0x3c, 0x20, 0x2f, 0x64, 0x65, 0x76, 0x2f, 0x74, 0x65, + 0x72, 0x6d, 0x2f, 0x62, 0x20, 0x5c, 0x2d, 0x65, 0x63, 0x68, 0x6f, 0x20, + 0x5c, 0x2d, 0x6f, 0x70, 0x6f, 0x73, 0x74, 0x20, 0x5c, 0x2d, 0x69, 0x73, + 0x69, 0x67, 0x20, 0x5c, 0x2d, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x20, + 0x6d, 0x69, 0x6e, 0x20, 0x31, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, + 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x5c, + 0x2d, 0x6e, 0x20, 0x66, 0x6f, 0x6f, 0x20, 0x3e, 0x20, 0x2f, 0x64, 0x65, + 0x76, 0x2f, 0x74, 0x65, 0x72, 0x6d, 0x2f, 0x62, 0x5c, 0x66, 0x52, 0x0a, + 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x22, 0x52, 0x45, 0x54, + 0x55, 0x52, 0x4e, 0x20, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x53, 0x22, 0x0a, + 0x54, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, + 0x67, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x65, 0x64, 0x3a, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x30, 0x0a, 0x6e, + 0x6f, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x65, 0x6e, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x54, + 0x50, 0x0a, 0x5c, 0x2d, 0x31, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x28, 0x0a, 0x2e, 0x49, 0x20, 0x78, + 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x2d, 0x69, 0x0a, 0x73, + 0x74, 0x69, 0x6c, 0x6c, 0x20, 0x69, 0x6d, 0x70, 0x6f, 0x73, 0x73, 0x69, + 0x62, 0x6c, 0x65, 0x29, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x31, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, + 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x32, 0x0a, 0x70, + 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, + 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x33, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x6c, + 0x65, 0x6d, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x0a, 0x2e, 0x54, + 0x50, 0x0a, 0x34, 0x2c, 0x35, 0x0a, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, + 0x64, 0x20, 0x73, 0x65, 0x65, 0x6b, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x75, 0x6e, 0x72, 0x65, 0x61, + 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x2e, 0x53, 0x48, 0x20, + 0x22, 0x53, 0x45, 0x45, 0x20, 0x41, 0x4c, 0x53, 0x4f, 0x22, 0x0a, 0x75, + 0x75, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x31, 0x29, 0x2c, 0x20, + 0x75, 0x75, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x31, 0x29, 0x2c, + 0x20, 0x70, 0x61, 0x74, 0x63, 0x68, 0x28, 0x31, 0x29, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, + 0x47, 0x53, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x73, + 0x20, 0x77, 0x65, 0x69, 0x72, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x69, 0x74, 0x73, 0x20, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x20, 0x62, 0x72, 0x61, 0x69, + 0x6e, 0x2e, 0x0a, 0x55, 0x73, 0x65, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x72, + 0x65, 0x6c, 0x79, 0x20, 0x61, 0x74, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, + 0x6f, 0x77, 0x6e, 0x20, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x20, 0x43, 0x6f, + 0x70, 0x79, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x20, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x20, 0x69, 0x74, 0x2e, 0x20, 0x42, 0x65, 0x63, 0x6f, + 0x6d, 0x65, 0x20, 0x61, 0x20, 0x77, 0x69, 0x7a, 0x61, 0x72, 0x64, 0x2e, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x56, 0x45, 0x52, + 0x53, 0x49, 0x4f, 0x4e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x61, + 0x6e, 0x75, 0x61, 0x6c, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x64, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x78, 0x78, 0x64, 0x20, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x2e, 0x37, 0x0a, + 0x2e, 0x53, 0x48, 0x20, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x0a, 0x2e, + 0x62, 0x72, 0x0a, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x30, 0x2d, + 0x31, 0x39, 0x39, 0x37, 0x20, 0x62, 0x79, 0x20, 0x4a, 0x75, 0x65, 0x72, + 0x67, 0x65, 0x6e, 0x20, 0x57, 0x65, 0x69, 0x67, 0x65, 0x72, 0x74, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x3c, 0x6a, 0x6e, 0x77, 0x65, 0x69, 0x67, 0x65, + 0x72, 0x40, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6b, + 0x2e, 0x75, 0x6e, 0x69, 0x2d, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x67, 0x65, + 0x6e, 0x2e, 0x64, 0x65, 0x3e, 0x0a, 0x2e, 0x4c, 0x50, 0x0a, 0x44, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x66, 0x72, 0x65, + 0x65, 0x6c, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x20, 0x6d, 0x65, 0x2c, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x6d, + 0x61, 0x6b, 0x65, 0x20, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x6d, 0x65, 0x2c, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x6c, 0x6f, 0x73, + 0x65, 0x20, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x64, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x61, 0x73, 0x6b, 0x20, 0x6d, 0x65, + 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, + 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x20, 0x62, 0x79, 0x20, 0x54, 0x6f, 0x6e, 0x79, 0x20, 0x4e, 0x75, + 0x67, 0x65, 0x6e, 0x74, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x3c, 0x74, 0x6f, + 0x6e, 0x79, 0x40, 0x73, 0x63, 0x74, 0x6e, 0x75, 0x67, 0x65, 0x6e, 0x2e, + 0x70, 0x70, 0x70, 0x2e, 0x67, 0x75, 0x2e, 0x65, 0x64, 0x75, 0x2e, 0x61, + 0x75, 0x3e, 0x20, 0x3c, 0x54, 0x2e, 0x4e, 0x75, 0x67, 0x65, 0x6e, 0x74, + 0x40, 0x73, 0x63, 0x74, 0x2e, 0x67, 0x75, 0x2e, 0x65, 0x64, 0x75, 0x2e, + 0x61, 0x75, 0x3e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x53, 0x6d, 0x61, 0x6c, + 0x6c, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x62, 0x79, + 0x20, 0x42, 0x72, 0x61, 0x6d, 0x20, 0x4d, 0x6f, 0x6f, 0x6c, 0x65, 0x6e, + 0x61, 0x61, 0x72, 0x2e, 0x0a, 0x45, 0x64, 0x69, 0x74, 0x65, 0x64, 0x20, + 0x62, 0x79, 0x20, 0x4a, 0x75, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x20, 0x57, + 0x65, 0x69, 0x67, 0x65, 0x72, 0x74, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a +}; +unsigned int file_len = 9972; diff --git a/tests/test_xxd/test_xxd_-l_120_-c_12_xxd.1.xxd b/tests/test_xxd/test_xxd_-l_120_-c_12_xxd.1.xxd new file mode 100644 index 0000000..9a56b52 --- /dev/null +++ b/tests/test_xxd/test_xxd_-l_120_-c_12_xxd.1.xxd @@ -0,0 +1,10 @@ +00000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A +0000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" +00000018: 224d 616e 7561 6c20 7061 6765 "Manual page +00000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\ +00000030: 220a 2e5c 2220 3231 7374 204d "..\" 21st M +0000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\" +00000048: 4d61 6e20 7061 6765 2061 7574 Man page aut +00000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\" +00000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent +0000006c: 3c74 6f6e 7940 7363 746e 7567 T`C5Ma?Uf9qb672^qLjhYr{j)v-kP*B ziLA}S$~?>E?rzoz!m0k1;Q#~QntL70Z}A~@V@*{qv;0866p_m;y_eH!VbfBcmH6;; z5tS)FhwJq^TvVZ*RiUX~$g|7PjpK-oAL^BkmL^@;Lay%RWo}mTHp>#58k5U2e*XC; zUWHk{coBpbujTac?QsyEQ0idXla;x)Vq|IWX4PsfP-m7&xwMko8=Dt4)JYfrclz$^ z;^ZO-U;2s5k2YC<3c{>LiiCNb7iHi8FNrNx?0{M@33Nb4>b3;>H)CfOl782^C`kwv9R0w}8p z4TH;NRcIVcd(pn^=-Uq7%YH{c!QGMc2Ynwe{Fo($><6?yf<^27w@VvE3V^pP-Y7%U4K51!`cqrzjhftbTNEUCA}n0Z4rvRvU3A>BWUK> zpjrH?S^Nsv2rh18!~l)LkFw?Ce+D`zi*2PE0LK8UxpS*0O&S1h^Io{kW6~3BWQngr zY`j>O;#QH)po1^rp-vxf;OdKwC%7@VaFv#|BbS6+#Z&5ZPG`4*fQ* zR#(Jh`oK@*rUys@V2UV?HBjtTG>fC{M_d!iC5S)DRx3)VYZq!0TOd^+OsBmyUt;D6 zV*NJDuLUDuG+JNcSSO+o~s*uHj?DqNY>OjWZAyV+24EM&ZY}4Lx6N3Twf0+&QJR2yOvrFv2< zjH^kJzC=XNC{nfZB;|M;xN%E)JZvxm)3eUs45WuV?`+?YK(MkV)#wI2U~@QyaMT3r zEM7Z=0SVn(-C))QsDmJ^4Zp~HLf)(x7z^{Kc=>va(sPlY7m5Sy2{I9ZxsZizZ4Sm!Zv1PHf6Y@jA!z}_Hnn=3Gp4;UBM_AV~LIH%59 zEKd|Z2wazREplYbKykB;mn87cfIdf!bef=@h#)&`w?_V;(7;0kcF$36!d7t_6CY#= zl2B>WU@JxLK((PRUP0k;x?zfqAt>IkQCD9PGn`F<k~;BO%DhS=>WUwB8QRA1gP$6RcvxI;RfgX zRUak?N2tUH>8l=N0@N2kQI+7d;5jWZ_Yf+S!`Vy$g;MxK6U#cAEBCHY@LjtKN(){) zLw>)%MRsf=3E~#kUNi3&whTV7%F~)j0qJ!L4xo+}5=~OvM3Qn4}}i4Hc1_ZBAu1$OL9aTe8^bX z^#n!oxAzVTASXeMNT{GXMasV4BxhZXf?Ajfbj7zW_^EC@CygMZz_x02Y$s0F11t%w zcm#f1o9!_8;DJVyyUgVvuNDU~0BqJ1evJnX+;CSF01|>^0E&tX-ZIU&0vXP!OE;LB zMX?)F&t`>q(?l{b#A6mMb1VJ>`~d3qr<$X~UylzjafoG!sV88}&jTK=ifo1CSj7o~ z5Vl-^SCPL!?iO`vrJ?BxqNdnt;z)mG{Al^CGA-_8j4Y8 zClqRHxLt!awRfd}Ts5XJ&B0`op`Zvbih7||CQFe=7X~!ri+7$>c4#aVskht&GQ$Rm zD^XE}Cp|48;IoHjPZ{)rc869XU~C?%#O8UH!|%VC{EFvXS`vOpOKi*Xf2|1=D=C>+ zG8AIR8?M*^DOzF(Lc74&bTsFq9>=!#s8=x!WJtfbxKN|JOv$4xf46B?EtZ}af$=#v zs@XQsL;My@Q5eeE20@nKvIJO07pq<)p3J5WpwbpYMONj|i=ZX{V|ga2x%<>b)*_|U z0mt426M*N*h6=cx4#fGN@5>n6#8N_+MKWVWhjm@Yi#3G;n8yw_B-uPr@ZK2~ijFN< z#WLz6e71VLJ?6ke;jVPUt!t_>lNXQtOVNHZtUG3iuhhv8z2Q zlW^R<<}^<-flokc5UgK&vRDF-k#sRvUN|iO9%bwMpF9W(>EnCEn||9xRY{vDiM;kS zsX6X}Nu_@`+V9KO^Fe<&dNLU9Zv)`B=mQqcI-j3(K_?4PJVTRS{(APVUDRRpqSRC^ zv0PVBkMKM~ew6_ZzbtoThSRd0*ZqaZ8sgV%{#>K=_aY^Qm2y=)$Lt72O!<7!s!Wl+ z)_&xFuK1u2#pStB_1y5L!0dCL(-zvj#28oT+Ef@pjgcY=+CZ{2<<79~@ER!GV=c2%S z<{{)0<`vc?*oyHCBcPRh{M+H%vp2^+`@=_PdZydR25hu)H|^BnT@Ge<`F0C11hjVh z?);2B(dB&U06E>TF{R_iI<$c+A@4TZ{nmPqs|6885-<2fY6sw2t?!SIRlN0_L;jGP#g-7$nv zWpvQcPN2}FKeXe?WDl=<;}QQ=G4!Qoq!vD{FMwK&4^-&Ll_+V{4TIr-?1l*Lc<6z? z`*R?4h0qs5X9&F^bcfI%A{$p&Z&gk=FG5!gz7jf1=q;hUgcgCb$74ZyX>YjNiGzJi zgncn+vM=-`_URi+0hI6^gArKigyD4Bak$bgha;7hqbMQVEc7!Lf|&F)WW|i;_N?7= zw~v{Cfe;5mAk^DoA)*8~X}p)y9nt99m`OE(k%!7*W8g#x6p_t~xpv|RY7#_36bWGp z39yd75JV#Rf!j~7@!FYtP?HFwUTWTn5M)A>31NmUH}3q}iDPI<2+HIs;*5-$WO^n=udsCy@yw~4L>2OqtP3nZj_`8)45iCPr1U_SPL9EMS+ zXwd6c8>JV?4LOQUA)u1<@KtaQVZ*PvxpigZYr3zI>j)J9*-tB)-<3j6C6vs6v64!7n`fsET@W}@m8$056*_)vW|_G znRFf4pF(#BvhIWJ9tQCrHtHU+u}_To*x5Ad9&)3{z0o6RdR#T= zeqsyU6+_xqK-K9Es?L8}d-<-qmOU`CqU^hlLA}C~LcPXVXsio2y+_?fhAsy%EQszjPZ% zA9T%5_sb91u!hMW-yf%0wnQMdzs9Qt`mf}GW%B=>EQ})UGJvX@M=o%-d<#j{`Dm3D zFsKSnpSzX>tW@5wEgl?k{``R!+LY{^cZeQ!4dQ$^A9ofukI};ATJ;L`K|31YSoPz~ z-uwv1u713dztmx+uqn#&{?UMGPq8%ZW$ejAh#1Ey{)4A0=wtw+sS{i1O?zmCW*LqW z8=KX3WpUm)KfZi_ek#8nzIlIq(RqB5WlzYFyX%Uetx)CYUBV=|%v5a+PMIE}x7vOHvq6kjF&kL%3c3|BdUqr@Y%mD4D@6w6@g03C z2DPSpcTgC#c(8UIP1gV`RU2&FBfXw5)TPMSR3av zv=rGTz-V*}*iVSaacINIRSs4Ql?Kp)gK#*u;k=If0iYBYEqPpAhr*<-x}tA)$zvH7 z3FRduLF2-JFuvdf4#B+`zaF1o@PVF7y))h@HD_5=t+0>lSR#7$shL4IQRxrgU%r0l zP9R&jx<=K|@8N~{O#W8c9Gyh@fXj9~+M`=N`+ExQ@bPD~_4PJ6z7DH2?y*sdUR)Z^ zEFOt^bH-u_U1A*nSOHnp5itiNfZxz5zyl4CTpyIeq13_x__e@2s4wN~5lIHNY)8zp zw2S6Wag8OQJlGUZf;DBec6(fpbmKuVC-@(H7z{#Q;0c0+S?BA|gN4B{RC2pMGMSU` EU*`yOvj6}9 literal 0 HcmV?d00001 diff --git a/tests/test_xxd/test_xxd_-r_xxd.1.patch.xxd.bin b/tests/test_xxd/test_xxd_-r_xxd.1.patch.xxd.bin new file mode 100644 index 0000000..101507d --- /dev/null +++ b/tests/test_xxd/test_xxd_-r_xxd.1.patch.xxd.bin @@ -0,0 +1,373 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 25th May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH NAME +.I xxd +\- make a hexdump or do the reverse. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH DESCRIPTION +.I xxd +creates a hex dump of a given file or standard input. +It can also convert a hex dump back to its original binary form. +Like +.BR uuencode(1) +and +.BR uudecode(1) +it allows the transmission of binary data in a `mail-safe' ASCII representation, +but has the advantage of decoding to standard output. +Moreover, it can be used to perform binary file patching. +.SH OPTIONS +If no +.I infile +is given, standard input is read. +If +.I infile +is specified as a +.RB \` \- ' +character, then input is taken from standard input. +If no +.I outfile +is given (or a +.RB \` \- ' +character is in its place), results are sent to standard output. +.PP +Note that a "lazy" parser is used which does not check for more than the first +option letter, unless the option is followed by a parameter. +Spaces between a single option letter and its parameter are optional. +Parameters to options can be specified in decimal, hexadecimal or octal +notation. +Thus +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +and +.B \-cols 8 +are all equivalent. +.PP +.TP +.IR \-a " | " \-autoskip +toggle autoskip: A single '*' replaces nul-lines. Default off. +.TP +.IR \-b " | " \-bits +Switch to bits (binary digits) dump, rather than hexdump. +This option writes octets as eight digits "1"s and "0"s instead of a normal +hexacecimal dump. Each line is preceded by a line number in hexadecimal and +followed by an ascii (or ebcdic) representation. The command line switches +\-r, \-p, \-i do not work with this mode. +.TP +.IR "\-c cols " | " \-cols cols" +.IR "\-c cols " | " \-cols cols" +format +.RI < cols > +octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. +.TP +.IR \-E " | " \-EBCDIC +Change the character encoding in the righthand column from ASCII to EBCDIC. +This does not change the hexadecimal representation. The option is +meaningless in combinations with \-r, \-p or \-i. +.TP +.IR "\-g bytes " | " \-groupsize bytes" +seperate the output of every +.RI < bytes > +bytes (two hex characters or eight bit-digits each) by a whitespace. +Specify +.I \-g 0 +to suppress grouping. +.RI < Bytes "> defaults to " 2 +in normal mode and \fI1\fP in bits mode. +Grouping does not apply to postscript or include style. +.TP +.IR \-h " | " \-help +print a summary of available commands and exit. No hex dumping is performed. +.TP +.IR \-i " | " \-include +output in C include file style. A complete static array definition is written +(named after the input file), unless xxd reads from stdin. +.TP +.IR "\-l len " | " \-len len" +stop after writing +.RI < len > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +output in postscript continuous hexdump style. Also known as plain hexdump +style. +.TP +.IR \-r " | " \-revert +reverse operation: convert (or patch) hexdump into binary. +If not writing to stdout, xxd writes into its output file without truncating +it. Use the combination +.I \-r \-p +to read plain hexadecimal dumps without line number information and without a +particular column layout. Additional Whitespace and line-breaks are allowed +anywhere. +.TP +.I \-seek offset +When used after +.I \-r +: revert with +.RI < offset > +added to file positions found in hexdump. +.TP +.I \-s [\+][\-]seek +start at +.RI < seek > +bytes abs. (or rel.) infile offset. +\fI\+ \fRindicates that the seek is relative to the current stdin file position +(meaningless when not reading from stdin). \fI\- \fRindicates that the seek +should be that many characters from the end of the input (or if combined with +\fI \+ \fR: before the current stdin file position). +Without \-s option, xxd starts at the current file position. +.TP +.I \-u +use upper case hex letters. Default is lower case. +.TP +.IR \-v " | " \-version +show version string. +.SH CAVEATS +.PP +.I xxd \-r +has some builtin magic while evaluating line number information. +If the ouput file is seekable, then the linenumbers at the start of each +hexdump line may be out of order, lines may be missing, or overlapping. In +these cases xxd will lseek(2) to the next position. If the output file is not +seekable, only gaps are allowed, which will be filled by null-bytes. +.PP +.I xxd \-r +never generates parse errors. Garbage is silently skipped. +.PP +When editing hexdumps, please note that +.I xxd \-r +skips everything on the input line after reading enough columns of hexadecimal +data (see option \-c). This also means, that changes to the printable ascii (or +ebcdic) columns are always ignored. Reverting a plain (or postscript) style +hexdump with xxd \-r \-p does not depend on the correct number of columns. Here an thing that looks like a pair of hex-digits is interpreted. +.PP +Note the difference between +.br +\fI% xxd \-i file\fR +.br +and +.br +\fI% xxd \-i \< file\fR +.PP +.I xxd \-s \+seek +may be different from +.I xxd \-s seek +, as lseek(2) is used to "rewind" input. A '+' +makes a difference if the input source is stdin, and if stdin's file position +is not at the start of the file by the time xxd is started and given its input. +The following examples may help to clarify (or further confuse!)... +.PP +Rewind stdin before reading; needed because the `cat' has already read to the +end of stdin. +.br +\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file +.PP +Hexdump from file position 0x480 (=1024+128) onwards. +The `+' sign means "relative to the current position", thus the `128' adds to +the 1k where dd left off. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file +.PP +Hexdump from file position 0x100 ( = 1024-768) on. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file +.PP +However, this is a rare situation and the use of `+' is rarely needed. +the author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. +.SH EXAMPLES +.PP +.br +Print everything but the first three lines (hex 0x30 bytes) of +.B file +\. +.br +\fI% xxd \-s 0x30 file +.PP +.br +Print 3 lines (hex 0x30 bytes) from the end of +.B file +\. +.br +\fI% xxd \-s \-0x30 file +.PP +.br +Print 120 bytes as continuous hexdump with 40 octets per line. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e544820585844203120224d616e75616c207061 +.br +676520666f7220787864220a2e5c220a2e5c2220 +.br +32317374204d617920313939360a2e5c22204d61 +.br +6e207061676520617574686f723a0a2e5c222020 +.br +2020546f6e79204e7567656e74203c746f6e7940 +.br +7363746e7567656e2e7070702e67752e6564752e +.br + +.br +Hexdump the first 120 bytes of this man page with 12 octets per line. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +.br +000000c: 616e 7561 6c20 7061 6765 2066 anual page f +.br +0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\". +.br +0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May +.br +0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma +.br +000003c: 6e20 7061 6765 2061 7574 686f n page autho +.br +0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To +.br +0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent output_file\fR +.br + +.br +Patch the date in the file xxd.1 +.br +\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +.br +0000028: 3235 7468 204d 6179 2031 3939 25th May 199 +.PP +.br +Create a 65537 byte file with all bytes 0x00, +except for the last one which is 'A' (hex 0x41). +.br +\fI% echo '010000: 41' | xxd \-r \> file\fR +.PP +.br +Hexdump this file with autoskip. +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Create a 1 byte file containing a single 'A' character. +The number after '\-r \-s' adds to the linenumbers found in the file; +in effect, the leading bytes are suppressed. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to hexdump a region marked between `a' and `z'. +.br +\fI:'a,'z!xxd\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover a binary hexdump marked between `a' and `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover one line of a hexdump. Move the cursor over the line and type: +.br +\fI!!xxd \-r\fR +.PP +Read single characters from a serial line +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH "RETURN VALUES" +The following error values are returned: +.TP +0 +no errors encountered. +.TP +\-1 +operation not supported ( +.I xxd \-r \-i +still impossible). +.TP +1 +error while parsing options. +.TP +2 +problems with input file. +.TP +3 +problems with output file. +.TP +4,5 +desired seek position is unreachable. +.SH "SEE ALSO" +uuencode(1), uudecode(1), patch(1) +.br +.SH WARNINGS +The tools weirdness matches its creators brain. +Use entirely at your own risk. Copy files. Trace it. Become a wizard. +.br +.SH VERSION +This manual page documents xxd version 1.7 +.SH AUTHOR +.br +(c) 1990-1997 by Juergen Weigert +.br + +.LP +Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me. +.PP +Manual page started by Tony Nugent +.br + +.br +Small changes by Bram Moolenaar. +Edited by Juergen Weigert. +.PP diff --git a/tests/test_xxd/test_xxd_-s_-0x30_file.xxd b/tests/test_xxd/test_xxd_-s_-0x30_file.xxd new file mode 100644 index 0000000..c55e3ec --- /dev/null +++ b/tests/test_xxd/test_xxd_-s_-0x30_file.xxd @@ -0,0 +1,3 @@ +000026c4: 2042 7261 6d20 4d6f 6f6c 656e 6161 722e Bram Moolenaar. +000026d4: 0a45 6469 7465 6420 6279 204a 7565 7267 .Edited by Juerg +000026e4: 656e 2057 6569 6765 7274 2e0a 2e50 500a en Weigert...PP. diff --git a/tests/test_xxd/test_xxd_-s_0x30_file.xxd b/tests/test_xxd/test_xxd_-s_0x30_file.xxd new file mode 100644 index 0000000..a105341 --- /dev/null +++ b/tests/test_xxd/test_xxd_-s_0x30_file.xxd @@ -0,0 +1,621 @@ +00000030: 220a 2e5c 2220 3231 7374 204d 6179 2031 "..\" 21st May 1 +00000040: 3939 360a 2e5c 2220 4d61 6e20 7061 6765 996..\" Man page +00000050: 2061 7574 686f 723a 0a2e 5c22 2020 2020 author:..\" +00000060: 546f 6e79 204e 7567 656e 7420 3c74 6f6e Tony Nugent ..\" Change +000000b0: 7320 6279 2042 7261 6d20 4d6f 6f6c 656e s by Bram Moolen +000000c0: 6161 7220 3c42 7261 6d40 7669 6d2e 6f72 aar ..SH NAME..I x +000000e0: 7864 0a5c 2d20 6d61 6b65 2061 2068 6578 xd.\- make a hex +000000f0: 6475 6d70 206f 7220 646f 2074 6865 2072 dump or do the r +00000100: 6576 6572 7365 2e0a 2e53 4820 5359 4e4f everse...SH SYNO +00000110: 5053 4953 0a2e 4220 7878 640a 5c2d 685b PSIS..B xxd.\-h[ +00000120: 656c 705d 0a2e 6272 0a2e 4220 7878 640a elp]..br..B xxd. +00000130: 5b6f 7074 696f 6e73 5d20 5b69 6e66 696c [options] [infil +00000140: 6520 5b6f 7574 6669 6c65 5d5d 0a2e 6272 e [outfile]]..br +00000150: 0a2e 4220 7878 640a 5c2d 725b 6576 6572 ..B xxd.\-r[ever +00000160: 745d 205b 6f70 7469 6f6e 735d 205b 696e t] [options] [in +00000170: 6669 6c65 205b 6f75 7466 696c 655d 5d0a file [outfile]]. +00000180: 2e53 4820 4445 5343 5249 5054 494f 4e0a .SH DESCRIPTION. +00000190: 2e49 2078 7864 0a63 7265 6174 6573 2061 .I xxd.creates a +000001a0: 2068 6578 2064 756d 7020 6f66 2061 2067 hex dump of a g +000001b0: 6976 656e 2066 696c 6520 6f72 2073 7461 iven file or sta +000001c0: 6e64 6172 6420 696e 7075 742e 0a49 7420 ndard input..It +000001d0: 6361 6e20 616c 736f 2063 6f6e 7665 7274 can also convert +000001e0: 2061 2068 6578 2064 756d 7020 6261 636b a hex dump back +000001f0: 2074 6f20 6974 7320 6f72 6967 696e 616c to its original +00000200: 2062 696e 6172 7920 666f 726d 2e0a 4c69 binary form..Li +00000210: 6b65 0a2e 4252 2075 7565 6e63 6f64 6528 ke..BR uuencode( +00000220: 3129 0a61 6e64 0a2e 4252 2075 7564 6563 1).and..BR uudec +00000230: 6f64 6528 3129 0a69 7420 616c 6c6f 7773 ode(1).it allows +00000240: 2074 6865 2074 7261 6e73 6d69 7373 696f the transmissio +00000250: 6e20 6f66 2062 696e 6172 7920 6461 7461 n of binary data +00000260: 2069 6e20 6120 606d 6169 6c2d 7361 6665 in a `mail-safe +00000270: 2720 4153 4349 4920 7265 7072 6573 656e ' ASCII represen +00000280: 7461 7469 6f6e 2c0a 6275 7420 6861 7320 tation,.but has +00000290: 7468 6520 6164 7661 6e74 6167 6520 6f66 the advantage of +000002a0: 2064 6563 6f64 696e 6720 746f 2073 7461 decoding to sta +000002b0: 6e64 6172 6420 6f75 7470 7574 2e0a 4d6f ndard output..Mo +000002c0: 7265 6f76 6572 2c20 6974 2063 616e 2062 reover, it can b +000002d0: 6520 7573 6564 2074 6f20 7065 7266 6f72 e used to perfor +000002e0: 6d20 6269 6e61 7279 2066 696c 6520 7061 m binary file pa +000002f0: 7463 6869 6e67 2e0a 2e53 4820 4f50 5449 tching...SH OPTI +00000300: 4f4e 530a 4966 206e 6f0a 2e49 2069 6e66 ONS.If no..I inf +00000310: 696c 650a 6973 2067 6976 656e 2c20 7374 ile.is given, st +00000320: 616e 6461 7264 2069 6e70 7574 2069 7320 andard input is +00000330: 7265 6164 2e0a 4966 0a2e 4920 696e 6669 read..If..I infi +00000340: 6c65 0a69 7320 7370 6563 6966 6965 6420 le.is specified +00000350: 6173 2061 0a2e 5242 205c 6020 5c2d 2027 as a..RB \` \- ' +00000360: 0a63 6861 7261 6374 6572 2c20 7468 656e .character, then +00000370: 2069 6e70 7574 2069 7320 7461 6b65 6e20 input is taken +00000380: 6672 6f6d 2073 7461 6e64 6172 6420 696e from standard in +00000390: 7075 742e 0a49 6620 6e6f 0a2e 4920 6f75 put..If no..I ou +000003a0: 7466 696c 650a 6973 2067 6976 656e 2028 tfile.is given ( +000003b0: 6f72 2061 0a2e 5242 205c 6020 5c2d 2027 or a..RB \` \- ' +000003c0: 0a63 6861 7261 6374 6572 2069 7320 696e .character is in +000003d0: 2069 7473 2070 6c61 6365 292c 2072 6573 its place), res +000003e0: 756c 7473 2061 7265 2073 656e 7420 746f ults are sent to +000003f0: 2073 7461 6e64 6172 6420 6f75 7470 7574 standard output +00000400: 2e0a 2e50 500a 4e6f 7465 2074 6861 7420 ...PP.Note that +00000410: 6120 226c 617a 7922 2070 6172 7365 7220 a "lazy" parser +00000420: 6973 2075 7365 6420 7768 6963 6820 646f is used which do +00000430: 6573 206e 6f74 2063 6865 636b 2066 6f72 es not check for +00000440: 206d 6f72 6520 7468 616e 2074 6865 2066 more than the f +00000450: 6972 7374 0a6f 7074 696f 6e20 6c65 7474 irst.option lett +00000460: 6572 2c20 756e 6c65 7373 2074 6865 206f er, unless the o +00000470: 7074 696f 6e20 6973 2066 6f6c 6c6f 7765 ption is followe +00000480: 6420 6279 2061 2070 6172 616d 6574 6572 d by a parameter +00000490: 2e0a 5370 6163 6573 2062 6574 7765 656e ..Spaces between +000004a0: 2061 2073 696e 676c 6520 6f70 7469 6f6e a single option +000004b0: 206c 6574 7465 7220 616e 6420 6974 7320 letter and its +000004c0: 7061 7261 6d65 7465 7220 6172 6520 6f70 parameter are op +000004d0: 7469 6f6e 616c 2e0a 5061 7261 6d65 7465 tional..Paramete +000004e0: 7273 2074 6f20 6f70 7469 6f6e 7320 6361 rs to options ca +000004f0: 6e20 6265 2073 7065 6369 6669 6564 2069 n be specified i +00000500: 6e20 6465 6369 6d61 6c2c 2068 6578 6164 n decimal, hexad +00000510: 6563 696d 616c 206f 7220 6f63 7461 6c0a ecimal or octal. +00000520: 6e6f 7461 7469 6f6e 2e0a 5468 7573 0a2e notation..Thus.. +00000530: 4252 205c 2d63 3820 2c0a 2e42 5220 225c BR \-c8 ,..BR "\ +00000540: 2d63 2038 2220 2c0a 2e42 205c 2d63 2030 -c 8" ,..B \-c 0 +00000550: 3130 0a61 6e64 0a2e 4220 5c2d 636f 6c73 10.and..B \-cols +00000560: 2038 0a61 7265 2061 6c6c 2065 7175 6976 8.are all equiv +00000570: 616c 656e 742e 0a2e 5050 0a2e 5450 0a2e alent...PP..TP.. +00000580: 4952 205c 2d61 2022 207c 2022 205c 2d61 IR \-a " | " \-a +00000590: 7574 6f73 6b69 700a 746f 6767 6c65 2061 utoskip.toggle a +000005a0: 7574 6f73 6b69 703a 2041 2073 696e 676c utoskip: A singl +000005b0: 6520 272a 2720 7265 706c 6163 6573 206e e '*' replaces n +000005c0: 756c 2d6c 696e 6573 2e20 2044 6566 6175 ul-lines. Defau +000005d0: 6c74 206f 6666 2e0a 2e54 500a 2e49 5220 lt off...TP..IR +000005e0: 5c2d 6220 2220 7c20 2220 5c2d 6269 7473 \-b " | " \-bits +000005f0: 0a53 7769 7463 6820 746f 2062 6974 7320 .Switch to bits +00000600: 2862 696e 6172 7920 6469 6769 7473 2920 (binary digits) +00000610: 6475 6d70 2c20 7261 7468 6572 2074 6861 dump, rather tha +00000620: 6e20 6865 7864 756d 702e 0a54 6869 7320 n hexdump..This +00000630: 6f70 7469 6f6e 2077 7269 7465 7320 6f63 option writes oc +00000640: 7465 7473 2061 7320 6569 6768 7420 6469 tets as eight di +00000650: 6769 7473 2022 3122 7320 616e 6420 2230 gits "1"s and "0 +00000660: 2273 2069 6e73 7465 6164 206f 6620 6120 "s instead of a +00000670: 6e6f 726d 616c 0a68 6578 6163 6563 696d normal.hexacecim +00000680: 616c 2064 756d 702e 2045 6163 6820 6c69 al dump. Each li +00000690: 6e65 2069 7320 7072 6563 6564 6564 2062 ne is preceded b +000006a0: 7920 6120 6c69 6e65 206e 756d 6265 7220 y a line number +000006b0: 696e 2068 6578 6164 6563 696d 616c 2061 in hexadecimal a +000006c0: 6e64 0a66 6f6c 6c6f 7765 6420 6279 2061 nd.followed by a +000006d0: 6e20 6173 6369 6920 286f 7220 6562 6364 n ascii (or ebcd +000006e0: 6963 2920 7265 7072 6573 656e 7461 7469 ic) representati +000006f0: 6f6e 2e20 5468 6520 636f 6d6d 616e 6420 on. The command +00000700: 6c69 6e65 2073 7769 7463 6865 730a 5c2d line switches.\- +00000710: 722c 205c 2d70 2c20 5c2d 6920 646f 206e r, \-p, \-i do n +00000720: 6f74 2077 6f72 6b20 7769 7468 2074 6869 ot work with thi +00000730: 7320 6d6f 6465 2e0a 2e54 500a 2e49 5220 s mode...TP..IR +00000740: 225c 2d63 2063 6f6c 7320 2220 7c20 2220 "\-c cols " | " +00000750: 5c2d 636f 6c73 2063 6f6c 7322 0a2e 4952 \-cols cols"..IR +00000760: 2022 5c2d 6320 636f 6c73 2022 207c 2022 "\-c cols " | " +00000770: 205c 2d63 6f6c 7320 636f 6c73 220a 666f \-cols cols".fo +00000780: 726d 6174 0a2e 5249 203c 2063 6f6c 7320 rmat..RI < cols +00000790: 3e0a 6f63 7465 7473 2070 6572 206c 696e >.octets per lin +000007a0: 652e 2044 6566 6175 6c74 2031 3620 285c e. Default 16 (\ +000007b0: 2d69 3a20 3132 2c20 5c2d 7073 3a20 3330 -i: 12, \-ps: 30 +000007c0: 2c20 5c2d 623a 2036 292e 204d 6178 2032 , \-b: 6). Max 2 +000007d0: 3536 2e0a 2e54 500a 2e49 5220 5c2d 4520 56...TP..IR \-E +000007e0: 2220 7c20 2220 5c2d 4542 4344 4943 0a43 " | " \-EBCDIC.C +000007f0: 6861 6e67 6520 7468 6520 6368 6172 6163 hange the charac +00000800: 7465 7220 656e 636f 6469 6e67 2069 6e20 ter encoding in +00000810: 7468 6520 7269 6768 7468 616e 6420 636f the righthand co +00000820: 6c75 6d6e 2066 726f 6d20 4153 4349 4920 lumn from ASCII +00000830: 746f 2045 4243 4449 432e 0a54 6869 7320 to EBCDIC..This +00000840: 646f 6573 206e 6f74 2063 6861 6e67 6520 does not change +00000850: 7468 6520 6865 7861 6465 6369 6d61 6c20 the hexadecimal +00000860: 7265 7072 6573 656e 7461 7469 6f6e 2e20 representation. +00000870: 5468 6520 6f70 7469 6f6e 2069 730a 6d65 The option is.me +00000880: 616e 696e 676c 6573 7320 696e 2063 6f6d aningless in com +00000890: 6269 6e61 7469 6f6e 7320 7769 7468 205c binations with \ +000008a0: 2d72 2c20 5c2d 7020 6f72 205c 2d69 2e0a -r, \-p or \-i.. +000008b0: 2e54 500a 2e49 5220 225c 2d67 2062 7974 .TP..IR "\-g byt +000008c0: 6573 2022 207c 2022 205c 2d67 726f 7570 es " | " \-group +000008d0: 7369 7a65 2062 7974 6573 220a 7365 7065 size bytes".sepe +000008e0: 7261 7465 2074 6865 206f 7574 7075 7420 rate the output +000008f0: 6f66 2065 7665 7279 0a2e 5249 203c 2062 of every..RI < b +00000900: 7974 6573 203e 0a62 7974 6573 2028 7477 ytes >.bytes (tw +00000910: 6f20 6865 7820 6368 6172 6163 7465 7273 o hex characters +00000920: 206f 7220 6569 6768 7420 6269 742d 6469 or eight bit-di +00000930: 6769 7473 2065 6163 6829 2062 7920 6120 gits each) by a +00000940: 7768 6974 6573 7061 6365 2e0a 5370 6563 whitespace..Spec +00000950: 6966 790a 2e49 205c 2d67 2030 0a74 6f20 ify..I \-g 0.to +00000960: 7375 7070 7265 7373 2067 726f 7570 696e suppress groupin +00000970: 672e 0a2e 5249 203c 2042 7974 6573 2022 g...RI < Bytes " +00000980: 3e20 6465 6661 756c 7473 2074 6f20 2220 > defaults to " +00000990: 320a 696e 206e 6f72 6d61 6c20 6d6f 6465 2.in normal mode +000009a0: 2061 6e64 205c 6649 315c 6650 2069 6e20 and \fI1\fP in +000009b0: 6269 7473 206d 6f64 652e 0a47 726f 7570 bits mode..Group +000009c0: 696e 6720 646f 6573 206e 6f74 2061 7070 ing does not app +000009d0: 6c79 2074 6f20 706f 7374 7363 7269 7074 ly to postscript +000009e0: 206f 7220 696e 636c 7564 6520 7374 796c or include styl +000009f0: 652e 0a2e 5450 0a2e 4952 205c 2d68 2022 e...TP..IR \-h " +00000a00: 207c 2022 205c 2d68 656c 700a 7072 696e | " \-help.prin +00000a10: 7420 6120 7375 6d6d 6172 7920 6f66 2061 t a summary of a +00000a20: 7661 696c 6162 6c65 2063 6f6d 6d61 6e64 vailable command +00000a30: 7320 616e 6420 6578 6974 2e20 204e 6f20 s and exit. No +00000a40: 6865 7820 6475 6d70 696e 6720 6973 2070 hex dumping is p +00000a50: 6572 666f 726d 6564 2e0a 2e54 500a 2e49 erformed...TP..I +00000a60: 5220 5c2d 6920 2220 7c20 2220 5c2d 696e R \-i " | " \-in +00000a70: 636c 7564 650a 6f75 7470 7574 2069 6e20 clude.output in +00000a80: 4320 696e 636c 7564 6520 6669 6c65 2073 C include file s +00000a90: 7479 6c65 2e20 4120 636f 6d70 6c65 7465 tyle. A complete +00000aa0: 2073 7461 7469 6320 6172 7261 7920 6465 static array de +00000ab0: 6669 6e69 7469 6f6e 2069 7320 7772 6974 finition is writ +00000ac0: 7465 6e0a 286e 616d 6564 2061 6674 6572 ten.(named after +00000ad0: 2074 6865 2069 6e70 7574 2066 696c 6529 the input file) +00000ae0: 2c20 756e 6c65 7373 2078 7864 2072 6561 , unless xxd rea +00000af0: 6473 2066 726f 6d20 7374 6469 6e2e 0a2e ds from stdin... +00000b00: 5450 0a2e 4952 2022 5c2d 6c20 6c65 6e20 TP..IR "\-l len +00000b10: 2220 7c20 2220 5c2d 6c65 6e20 6c65 6e22 " | " \-len len" +00000b20: 0a73 746f 7020 6166 7465 7220 7772 6974 .stop after writ +00000b30: 696e 670a 2e52 4920 203c 206c 656e 203e ing..RI < len > +00000b40: 0a6f 6374 6574 732e 0a2e 5450 0a2e 4952 .octets...TP..IR +00000b50: 205c 2d70 2022 207c 2022 205c 2d70 7320 \-p " | " \-ps +00000b60: 2220 7c20 2220 5c2d 706f 7374 7363 7269 " | " \-postscri +00000b70: 7074 2022 207c 2022 205c 2d70 6c61 696e pt " | " \-plain +00000b80: 0a6f 7574 7075 7420 696e 2070 6f73 7473 .output in posts +00000b90: 6372 6970 7420 636f 6e74 696e 756f 7573 cript continuous +00000ba0: 2068 6578 6475 6d70 2073 7479 6c65 2e20 hexdump style. +00000bb0: 416c 736f 206b 6e6f 776e 2061 7320 706c Also known as pl +00000bc0: 6169 6e20 6865 7864 756d 700a 7374 796c ain hexdump.styl +00000bd0: 652e 0a2e 5450 0a2e 4952 205c 2d72 2022 e...TP..IR \-r " +00000be0: 207c 2022 205c 2d72 6576 6572 740a 7265 | " \-revert.re +00000bf0: 7665 7273 6520 6f70 6572 6174 696f 6e3a verse operation: +00000c00: 2063 6f6e 7665 7274 2028 6f72 2070 6174 convert (or pat +00000c10: 6368 2920 6865 7864 756d 7020 696e 746f ch) hexdump into +00000c20: 2062 696e 6172 792e 0a49 6620 6e6f 7420 binary..If not +00000c30: 7772 6974 696e 6720 746f 2073 7464 6f75 writing to stdou +00000c40: 742c 2078 7864 2077 7269 7465 7320 696e t, xxd writes in +00000c50: 746f 2069 7473 206f 7574 7075 7420 6669 to its output fi +00000c60: 6c65 2077 6974 686f 7574 2074 7275 6e63 le without trunc +00000c70: 6174 696e 670a 6974 2e20 5573 6520 7468 ating.it. Use th +00000c80: 6520 636f 6d62 696e 6174 696f 6e0a 2e49 e combination..I +00000c90: 205c 2d72 205c 2d70 0a74 6f20 7265 6164 \-r \-p.to read +00000ca0: 2070 6c61 696e 2068 6578 6164 6563 696d plain hexadecim +00000cb0: 616c 2064 756d 7073 2077 6974 686f 7574 al dumps without +00000cc0: 206c 696e 6520 6e75 6d62 6572 2069 6e66 line number inf +00000cd0: 6f72 6d61 7469 6f6e 2061 6e64 2077 6974 ormation and wit +00000ce0: 686f 7574 2061 0a70 6172 7469 6375 6c61 hout a.particula +00000cf0: 7220 636f 6c75 6d6e 206c 6179 6f75 742e r column layout. +00000d00: 2041 6464 6974 696f 6e61 6c20 5768 6974 Additional Whit +00000d10: 6573 7061 6365 2061 6e64 206c 696e 652d espace and line- +00000d20: 6272 6561 6b73 2061 7265 2061 6c6c 6f77 breaks are allow +00000d30: 6564 0a61 6e79 7768 6572 652e 0a2e 5450 ed.anywhere...TP +00000d40: 0a2e 4920 5c2d 7365 656b 206f 6666 7365 ..I \-seek offse +00000d50: 740a 5768 656e 2075 7365 6420 6166 7465 t.When used afte +00000d60: 720a 2e49 205c 2d72 0a3a 2072 6576 6572 r..I \-r.: rever +00000d70: 7420 7769 7468 0a2e 5249 203c 206f 6666 t with..RI < off +00000d80: 7365 7420 3e0a 6164 6465 6420 746f 2066 set >.added to f +00000d90: 696c 6520 706f 7369 7469 6f6e 7320 666f ile positions fo +00000da0: 756e 6420 696e 2068 6578 6475 6d70 2e0a und in hexdump.. +00000db0: 2e54 500a 2e49 205c 2d73 205b 5c2b 5d5b .TP..I \-s [\+][ +00000dc0: 5c2d 5d73 6565 6b0a 7374 6172 7420 6174 \-]seek.start at +00000dd0: 0a2e 5249 203c 2073 6565 6b20 3e0a 6279 ..RI < seek >.by +00000de0: 7465 7320 6162 732e 2028 6f72 2072 656c tes abs. (or rel +00000df0: 2e29 2069 6e66 696c 6520 6f66 6673 6574 .) infile offset +00000e00: 2e0a 5c66 495c 2b20 5c66 5269 6e64 6963 ..\fI\+ \fRindic +00000e10: 6174 6573 2074 6861 7420 7468 6520 7365 ates that the se +00000e20: 656b 2069 7320 7265 6c61 7469 7665 2074 ek is relative t +00000e30: 6f20 7468 6520 6375 7272 656e 7420 7374 o the current st +00000e40: 6469 6e20 6669 6c65 2070 6f73 6974 696f din file positio +00000e50: 6e0a 286d 6561 6e69 6e67 6c65 7373 2077 n.(meaningless w +00000e60: 6865 6e20 6e6f 7420 7265 6164 696e 6720 hen not reading +00000e70: 6672 6f6d 2073 7464 696e 292e 2020 5c66 from stdin). \f +00000e80: 495c 2d20 5c66 5269 6e64 6963 6174 6573 I\- \fRindicates +00000e90: 2074 6861 7420 7468 6520 7365 656b 0a73 that the seek.s +00000ea0: 686f 756c 6420 6265 2074 6861 7420 6d61 hould be that ma +00000eb0: 6e79 2063 6861 7261 6374 6572 7320 6672 ny characters fr +00000ec0: 6f6d 2074 6865 2065 6e64 206f 6620 7468 om the end of th +00000ed0: 6520 696e 7075 7420 286f 7220 6966 2063 e input (or if c +00000ee0: 6f6d 6269 6e65 6420 7769 7468 0a5c 6649 ombined with.\fI +00000ef0: 205c 2b20 5c66 523a 2062 6566 6f72 6520 \+ \fR: before +00000f00: 7468 6520 6375 7272 656e 7420 7374 6469 the current stdi +00000f10: 6e20 6669 6c65 2070 6f73 6974 696f 6e29 n file position) +00000f20: 2e0a 5769 7468 6f75 7420 5c2d 7320 6f70 ..Without \-s op +00000f30: 7469 6f6e 2c20 7878 6420 7374 6172 7473 tion, xxd starts +00000f40: 2061 7420 7468 6520 6375 7272 656e 7420 at the current +00000f50: 6669 6c65 2070 6f73 6974 696f 6e2e 0a2e file position... +00000f60: 5450 0a2e 4920 5c2d 750a 7573 6520 7570 TP..I \-u.use up +00000f70: 7065 7220 6361 7365 2068 6578 206c 6574 per case hex let +00000f80: 7465 7273 2e20 4465 6661 756c 7420 6973 ters. Default is +00000f90: 206c 6f77 6572 2063 6173 652e 0a2e 5450 lower case...TP +00000fa0: 0a2e 4952 205c 2d76 2022 207c 2022 205c ..IR \-v " | " \ +00000fb0: 2d76 6572 7369 6f6e 0a73 686f 7720 7665 -version.show ve +00000fc0: 7273 696f 6e20 7374 7269 6e67 2e0a 2e53 rsion string...S +00000fd0: 4820 4341 5645 4154 530a 2e50 500a 2e49 H CAVEATS..PP..I +00000fe0: 2078 7864 205c 2d72 0a68 6173 2073 6f6d xxd \-r.has som +00000ff0: 6520 6275 696c 7469 6e20 6d61 6769 6320 e builtin magic +00001000: 7768 696c 6520 6576 616c 7561 7469 6e67 while evaluating +00001010: 206c 696e 6520 6e75 6d62 6572 2069 6e66 line number inf +00001020: 6f72 6d61 7469 6f6e 2e0a 4966 2074 6865 ormation..If the +00001030: 206f 7570 7574 2066 696c 6520 6973 2073 ouput file is s +00001040: 6565 6b61 626c 652c 2074 6865 6e20 7468 eekable, then th +00001050: 6520 6c69 6e65 6e75 6d62 6572 7320 6174 e linenumbers at +00001060: 2074 6865 2073 7461 7274 206f 6620 6561 the start of ea +00001070: 6368 0a68 6578 6475 6d70 206c 696e 6520 ch.hexdump line +00001080: 6d61 7920 6265 206f 7574 206f 6620 6f72 may be out of or +00001090: 6465 722c 206c 696e 6573 206d 6179 2062 der, lines may b +000010a0: 6520 6d69 7373 696e 672c 206f 7220 6f76 e missing, or ov +000010b0: 6572 6c61 7070 696e 672e 2049 6e0a 7468 erlapping. In.th +000010c0: 6573 6520 6361 7365 7320 7878 6420 7769 ese cases xxd wi +000010d0: 6c6c 206c 7365 656b 2832 2920 746f 2074 ll lseek(2) to t +000010e0: 6865 206e 6578 7420 706f 7369 7469 6f6e he next position +000010f0: 2e20 4966 2074 6865 206f 7574 7075 7420 . If the output +00001100: 6669 6c65 2069 7320 6e6f 740a 7365 656b file is not.seek +00001110: 6162 6c65 2c20 6f6e 6c79 2067 6170 7320 able, only gaps +00001120: 6172 6520 616c 6c6f 7765 642c 2077 6869 are allowed, whi +00001130: 6368 2077 696c 6c20 6265 2066 696c 6c65 ch will be fille +00001140: 6420 6279 206e 756c 6c2d 6279 7465 732e d by null-bytes. +00001150: 0a2e 5050 0a2e 4920 7878 6420 5c2d 720a ..PP..I xxd \-r. +00001160: 6e65 7665 7220 6765 6e65 7261 7465 7320 never generates +00001170: 7061 7273 6520 6572 726f 7273 2e20 4761 parse errors. Ga +00001180: 7262 6167 6520 6973 2073 696c 656e 746c rbage is silentl +00001190: 7920 736b 6970 7065 642e 0a2e 5050 0a57 y skipped...PP.W +000011a0: 6865 6e20 6564 6974 696e 6720 6865 7864 hen editing hexd +000011b0: 756d 7073 2c20 706c 6561 7365 206e 6f74 umps, please not +000011c0: 6520 7468 6174 0a2e 4920 7878 6420 5c2d e that..I xxd \- +000011d0: 720a 736b 6970 7320 6576 6572 7974 6869 r.skips everythi +000011e0: 6e67 206f 6e20 7468 6520 696e 7075 7420 ng on the input +000011f0: 6c69 6e65 2061 6674 6572 2072 6561 6469 line after readi +00001200: 6e67 2065 6e6f 7567 6820 636f 6c75 6d6e ng enough column +00001210: 7320 6f66 2068 6578 6164 6563 696d 616c s of hexadecimal +00001220: 0a64 6174 6120 2873 6565 206f 7074 696f .data (see optio +00001230: 6e20 5c2d 6329 2e20 5468 6973 2061 6c73 n \-c). This als +00001240: 6f20 6d65 616e 732c 2074 6861 7420 6368 o means, that ch +00001250: 616e 6765 7320 746f 2074 6865 2070 7269 anges to the pri +00001260: 6e74 6162 6c65 2061 7363 6969 2028 6f72 ntable ascii (or +00001270: 0a65 6263 6469 6329 2063 6f6c 756d 6e73 .ebcdic) columns +00001280: 2061 7265 2061 6c77 6179 7320 6967 6e6f are always igno +00001290: 7265 642e 2052 6576 6572 7469 6e67 2061 red. Reverting a +000012a0: 2070 6c61 696e 2028 6f72 2070 6f73 7473 plain (or posts +000012b0: 6372 6970 7429 2073 7479 6c65 0a68 6578 cript) style.hex +000012c0: 6475 6d70 2077 6974 6820 7878 6420 5c2d dump with xxd \- +000012d0: 7220 5c2d 7020 646f 6573 206e 6f74 2064 r \-p does not d +000012e0: 6570 656e 6420 6f6e 2074 6865 2063 6f72 epend on the cor +000012f0: 7265 6374 206e 756d 6265 7220 6f66 2063 rect number of c +00001300: 6f6c 756d 6e73 2e20 4865 7265 2061 6e20 olumns. Here an +00001310: 7468 696e 6720 7468 6174 206c 6f6f 6b73 thing that looks +00001320: 206c 696b 6520 6120 7061 6972 206f 6620 like a pair of +00001330: 6865 782d 6469 6769 7473 2069 7320 696e hex-digits is in +00001340: 7465 7270 7265 7465 642e 0a2e 5050 0a4e terpreted...PP.N +00001350: 6f74 6520 7468 6520 6469 6666 6572 656e ote the differen +00001360: 6365 2062 6574 7765 656e 0a2e 6272 0a5c ce between..br.\ +00001370: 6649 2520 7878 6420 5c2d 6920 6669 6c65 fI% xxd \-i file +00001380: 5c66 520a 2e62 720a 616e 640a 2e62 720a \fR..br.and..br. +00001390: 5c66 4925 2078 7864 205c 2d69 205c 3c20 \fI% xxd \-i \< +000013a0: 6669 6c65 5c66 520a 2e50 500a 2e49 2078 file\fR..PP..I x +000013b0: 7864 205c 2d73 205c 2b73 6565 6b0a 6d61 xd \-s \+seek.ma +000013c0: 7920 6265 2064 6966 6665 7265 6e74 2066 y be different f +000013d0: 726f 6d0a 2e49 2078 7864 205c 2d73 2073 rom..I xxd \-s s +000013e0: 6565 6b0a 2c20 6173 206c 7365 656b 2832 eek., as lseek(2 +000013f0: 2920 6973 2075 7365 6420 746f 2022 7265 ) is used to "re +00001400: 7769 6e64 2220 696e 7075 742e 2020 4120 wind" input. A +00001410: 272b 270a 6d61 6b65 7320 6120 6469 6666 '+'.makes a diff +00001420: 6572 656e 6365 2069 6620 7468 6520 696e erence if the in +00001430: 7075 7420 736f 7572 6365 2069 7320 7374 put source is st +00001440: 6469 6e2c 2061 6e64 2069 6620 7374 6469 din, and if stdi +00001450: 6e27 7320 6669 6c65 2070 6f73 6974 696f n's file positio +00001460: 6e0a 6973 206e 6f74 2061 7420 7468 6520 n.is not at the +00001470: 7374 6172 7420 6f66 2074 6865 2066 696c start of the fil +00001480: 6520 6279 2074 6865 2074 696d 6520 7878 e by the time xx +00001490: 6420 6973 2073 7461 7274 6564 2061 6e64 d is started and +000014a0: 2067 6976 656e 2069 7473 2069 6e70 7574 given its input +000014b0: 2e0a 5468 6520 666f 6c6c 6f77 696e 6720 ..The following +000014c0: 6578 616d 706c 6573 206d 6179 2068 656c examples may hel +000014d0: 7020 746f 2063 6c61 7269 6679 2028 6f72 p to clarify (or +000014e0: 2066 7572 7468 6572 2063 6f6e 6675 7365 further confuse +000014f0: 2129 2e2e 2e0a 2e50 500a 5265 7769 6e64 !).....PP.Rewind +00001500: 2073 7464 696e 2062 6566 6f72 6520 7265 stdin before re +00001510: 6164 696e 673b 206e 6565 6465 6420 6265 ading; needed be +00001520: 6361 7573 6520 7468 6520 6063 6174 2720 cause the `cat' +00001530: 6861 7320 616c 7265 6164 7920 7265 6164 has already read +00001540: 2074 6f20 7468 650a 656e 6420 6f66 2073 to the.end of s +00001550: 7464 696e 2e0a 2e62 720a 5c66 4925 2073 tdin...br.\fI% s +00001560: 6820 5c2d 6320 2763 6174 203e 2070 6c61 h \-c 'cat > pla +00001570: 696e 5f63 6f70 793b 2078 7864 205c 2d73 in_copy; xxd \-s +00001580: 2030 203e 2068 6578 5f63 6f70 7927 203c 0 > hex_copy' < +00001590: 2066 696c 650a 2e50 500a 4865 7864 756d file..PP.Hexdum +000015a0: 7020 6672 6f6d 2066 696c 6520 706f 7369 p from file posi +000015b0: 7469 6f6e 2030 7834 3830 2028 3d31 3032 tion 0x480 (=102 +000015c0: 342b 3132 3829 206f 6e77 6172 6473 2e0a 4+128) onwards.. +000015d0: 5468 6520 602b 2720 7369 676e 206d 6561 The `+' sign mea +000015e0: 6e73 2022 7265 6c61 7469 7665 2074 6f20 ns "relative to +000015f0: 7468 6520 6375 7272 656e 7420 706f 7369 the current posi +00001600: 7469 6f6e 222c 2074 6875 7320 7468 6520 tion", thus the +00001610: 6031 3238 2720 6164 6473 2074 6f0a 7468 `128' adds to.th +00001620: 6520 316b 2077 6865 7265 2064 6420 6c65 e 1k where dd le +00001630: 6674 206f 6666 2e0a 2e62 720a 5c66 4925 ft off...br.\fI% +00001640: 2073 6820 5c2d 6320 2764 6420 6f66 3d70 sh \-c 'dd of=p +00001650: 6c61 696e 5f73 6e69 7070 6574 2062 733d lain_snippet bs= +00001660: 316b 2063 6f75 6e74 3d31 3b20 7878 6420 1k count=1; xxd +00001670: 5c2d 7320 2b31 3238 203e 2068 6578 5f73 \-s +128 > hex_s +00001680: 6e69 7070 6574 2720 3c20 6669 6c65 0a2e nippet' < file.. +00001690: 5050 0a48 6578 6475 6d70 2066 726f 6d20 PP.Hexdump from +000016a0: 6669 6c65 2070 6f73 6974 696f 6e20 3078 file position 0x +000016b0: 3130 3020 2820 3d20 3130 3234 2d37 3638 100 ( = 1024-768 +000016c0: 2920 6f6e 2e0a 2e62 720a 5c66 4925 2073 ) on...br.\fI% s +000016d0: 6820 5c2d 6320 2764 6420 6f66 3d70 6c61 h \-c 'dd of=pla +000016e0: 696e 5f73 6e69 7070 6574 2062 733d 316b in_snippet bs=1k +000016f0: 2063 6f75 6e74 3d31 3b20 7878 6420 5c2d count=1; xxd \- +00001700: 7320 2b2d 3736 3820 3e20 6865 785f 736e s +-768 > hex_sn +00001710: 6970 7065 7427 203c 2066 696c 650a 2e50 ippet' < file..P +00001720: 500a 486f 7765 7665 722c 2074 6869 7320 P.However, this +00001730: 6973 2061 2072 6172 6520 7369 7475 6174 is a rare situat +00001740: 696f 6e20 616e 6420 7468 6520 7573 6520 ion and the use +00001750: 6f66 2060 2b27 2069 7320 7261 7265 6c79 of `+' is rarely +00001760: 206e 6565 6465 642e 0a74 6865 2061 7574 needed..the aut +00001770: 686f 7220 7072 6566 6572 7320 746f 206d hor prefers to m +00001780: 6f6e 6974 6f72 2074 6865 2065 6666 6563 onitor the effec +00001790: 7420 6f66 2078 7864 2077 6974 6820 7374 t of xxd with st +000017a0: 7261 6365 2831 2920 6f72 2074 7275 7373 race(1) or truss +000017b0: 2831 292c 2077 6865 6e65 7665 7220 5c2d (1), whenever \- +000017c0: 7320 6973 2075 7365 642e 0a2e 5348 2045 s is used...SH E +000017d0: 5841 4d50 4c45 530a 2e50 500a 2e62 720a XAMPLES..PP..br. +000017e0: 5072 696e 7420 6576 6572 7974 6869 6e67 Print everything +000017f0: 2062 7574 2074 6865 2066 6972 7374 2074 but the first t +00001800: 6872 6565 206c 696e 6573 2028 6865 7820 hree lines (hex +00001810: 3078 3330 2062 7974 6573 2920 6f66 0a2e 0x30 bytes) of.. +00001820: 4220 6669 6c65 0a5c 2e0a 2e62 720a 5c66 B file.\...br.\f +00001830: 4925 2078 7864 205c 2d73 2030 7833 3020 I% xxd \-s 0x30 +00001840: 6669 6c65 0a2e 5050 0a2e 6272 0a50 7269 file..PP..br.Pri +00001850: 6e74 2033 206c 696e 6573 2028 6865 7820 nt 3 lines (hex +00001860: 3078 3330 2062 7974 6573 2920 6672 6f6d 0x30 bytes) from +00001870: 2074 6865 2065 6e64 206f 660a 2e42 2066 the end of..B f +00001880: 696c 650a 5c2e 0a2e 6272 0a5c 6649 2520 ile.\...br.\fI% +00001890: 7878 6420 5c2d 7320 5c2d 3078 3330 2066 xxd \-s \-0x30 f +000018a0: 696c 650a 2e50 500a 2e62 720a 5072 696e ile..PP..br.Prin +000018b0: 7420 3132 3020 6279 7465 7320 6173 2063 t 120 bytes as c +000018c0: 6f6e 7469 6e75 6f75 7320 6865 7864 756d ontinuous hexdum +000018d0: 7020 7769 7468 2034 3020 6f63 7465 7473 p with 40 octets +000018e0: 2070 6572 206c 696e 652e 0a2e 6272 0a5c per line...br.\ +000018f0: 6649 2520 7878 6420 5c2d 6c20 3132 3020 fI% xxd \-l 120 +00001900: 5c2d 7073 205c 2d63 2032 3020 7878 642e \-ps \-c 20 xxd. +00001910: 315c 6652 0a2e 6272 0a32 6535 3434 3832 1\fR..br.2e54482 +00001920: 3035 3835 3834 3432 3033 3132 3032 3234 0585844203120224 +00001930: 6436 3136 6537 3536 3136 6332 3037 3036 d616e75616c20706 +00001940: 310a 2e62 720a 3637 3635 3230 3636 3666 1..br.676520666f +00001950: 3732 3230 3738 3738 3634 3232 3061 3265 7220787864220a2e +00001960: 3563 3232 3061 3265 3563 3232 3230 0a2e 5c220a2e5c2220.. +00001970: 6272 0a33 3233 3137 3337 3432 3034 6436 br.32317374204d6 +00001980: 3137 3932 3033 3133 3933 3933 3630 6132 17920313939360a2 +00001990: 6535 6332 3232 3034 6436 310a 2e62 720a e5c22204d61..br. +000019a0: 3665 3230 3730 3631 3637 3635 3230 3631 6e20706167652061 +000019b0: 3735 3734 3638 3666 3732 3361 3061 3265 7574686f723a0a2e +000019c0: 3563 3232 3230 3230 0a2e 6272 0a32 3032 5c222020..br.202 +000019d0: 3035 3436 6636 6537 3932 3034 6537 3536 0546f6e79204e756 +000019e0: 3736 3536 6537 3432 3033 6337 3436 6636 7656e74203c746f6 +000019f0: 6537 3934 300a 2e62 720a 3733 3633 3734 e7940..br.736374 +00001a00: 3665 3735 3637 3635 3665 3265 3730 3730 6e7567656e2e7070 +00001a10: 3730 3265 3637 3735 3265 3635 3634 3735 702e67752e656475 +00001a20: 3265 0a2e 6272 0a0a 2e62 720a 4865 7864 2e..br...br.Hexd +00001a30: 756d 7020 7468 6520 6669 7273 7420 3132 ump the first 12 +00001a40: 3020 6279 7465 7320 6f66 2074 6869 7320 0 bytes of this +00001a50: 6d61 6e20 7061 6765 2077 6974 6820 3132 man page with 12 +00001a60: 206f 6374 6574 7320 7065 7220 6c69 6e65 octets per line +00001a70: 2e0a 2e62 720a 5c66 4925 2078 7864 205c ...br.\fI% xxd \ +00001a80: 2d6c 2031 3230 205c 2d63 2031 3220 7878 -l 120 \-c 12 xx +00001a90: 642e 315c 6652 0a2e 6272 0a30 3030 3030 d.1\fR..br.00000 +00001aa0: 3030 3a20 3265 3534 2034 3832 3020 3538 00: 2e54 4820 58 +00001ab0: 3538 2034 3432 3020 3331 3230 2032 3234 58 4420 3120 224 +00001ac0: 6420 202e 5448 2058 5844 2031 2022 4d0a d .TH XXD 1 "M. +00001ad0: 2e62 720a 3030 3030 3030 633a 2036 3136 .br.000000c: 616 +00001ae0: 6520 3735 3631 2036 6332 3020 3730 3631 e 7561 6c20 7061 +00001af0: 2036 3736 3520 3230 3636 2020 616e 7561 6765 2066 anua +00001b00: 6c20 7061 6765 2066 0a2e 6272 0a30 3030 l page f..br.000 +00001b10: 3030 3138 3a20 3666 3732 2032 3037 3820 0018: 6f72 2078 +00001b20: 3738 3634 2032 3230 6120 3265 3563 2032 7864 220a 2e5c 2 +00001b30: 3230 6120 206f 7220 7878 6422 2e2e 5c5c 20a or xxd"..\\ +00001b40: 222e 0a2e 6272 0a30 3030 3030 3234 3a20 "...br.0000024: +00001b50: 3265 3563 2032 3232 3020 3332 3331 2037 2e5c 2220 3231 7 +00001b60: 3337 3420 3230 3464 2036 3137 3920 202e 374 204d 6179 . +00001b70: 5c5c 2220 3231 7374 204d 6179 0a2e 6272 \\" 21st May..br +00001b80: 0a30 3030 3030 3330 3a20 3230 3331 2033 .0000030: 2031 3 +00001b90: 3933 3920 3336 3061 2032 6535 6320 3232 939 360a 2e5c 22 +00001ba0: 3230 2034 6436 3120 2020 3139 3936 2e2e 20 4d61 1996.. +00001bb0: 5c5c 2220 4d61 0a2e 6272 0a30 3030 3030 \\" Ma..br.00000 +00001bc0: 3363 3a20 3665 3230 2037 3036 3120 3637 3c: 6e20 7061 67 +00001bd0: 3635 2032 3036 3120 3735 3734 2036 3836 65 2061 7574 686 +00001be0: 6620 206e 2070 6167 6520 6175 7468 6f0a f n page autho. +00001bf0: 2e62 720a 3030 3030 3034 383a 2037 3233 .br.0000048: 723 +00001c00: 6120 3061 3265 2035 6332 3220 3230 3230 a 0a2e 5c22 2020 +00001c10: 2032 3032 3020 3534 3666 2020 723a 2e2e 2020 546f r:.. +00001c20: 5c5c 2220 2020 2054 6f0a 2e62 720a 3030 \\" To..br.00 +00001c30: 3030 3035 343a 2036 6537 3920 3230 3465 00054: 6e79 204e +00001c40: 2037 3536 3720 3635 3665 2037 3432 3020 7567 656e 7420 +00001c50: 3363 3734 2020 6e79 204e 7567 656e 7420 3c74 ny Nugent +00001c60: 3c74 0a2e 6272 0a30 3030 3030 3630 3a20 outp +00001df0: 7574 5f66 696c 655c 6652 0a2e 6272 0a0a ut_file\fR..br.. +00001e00: 2e62 720a 5061 7463 6820 7468 6520 6461 .br.Patch the da +00001e10: 7465 2069 6e20 7468 6520 6669 6c65 2078 te in the file x +00001e20: 7864 2e31 0a2e 6272 0a5c 6649 2520 6563 xd.1..br.\fI% ec +00001e30: 686f 2027 3030 3030 3032 393a 2033 3537 ho '0000029: 357 +00001e40: 3420 3638 2720 7c20 7878 6420 5c2d 7220 4 68' | xxd \-r +00001e50: 5c2d 2078 7864 2e31 5c66 520a 2e62 720a \- xxd.1\fR..br. +00001e60: 5c66 4925 2078 7864 205c 2d73 2030 7832 \fI% xxd \-s 0x2 +00001e70: 3820 5c2d 6c20 3132 205c 2d63 2031 3220 8 \-l 12 \-c 12 +00001e80: 7878 642e 315c 6652 0a2e 6272 0a30 3030 xxd.1\fR..br.000 +00001e90: 3030 3238 3a20 3332 3335 2037 3436 3820 0028: 3235 7468 +00001ea0: 3230 3464 2036 3137 3920 3230 3331 2033 204d 6179 2031 3 +00001eb0: 3933 3920 2032 3574 6820 4d61 7920 3139 939 25th May 19 +00001ec0: 390a 2e50 500a 2e62 720a 4372 6561 7465 9..PP..br.Create +00001ed0: 2061 2036 3535 3337 2062 7974 6520 6669 a 65537 byte fi +00001ee0: 6c65 2077 6974 6820 616c 6c20 6279 7465 le with all byte +00001ef0: 7320 3078 3030 2c0a 6578 6365 7074 2066 s 0x00,.except f +00001f00: 6f72 2074 6865 206c 6173 7420 6f6e 6520 or the last one +00001f10: 7768 6963 6820 6973 2027 4127 2028 6865 which is 'A' (he +00001f20: 7820 3078 3431 292e 0a2e 6272 0a5c 6649 x 0x41)...br.\fI +00001f30: 2520 6563 686f 2027 3031 3030 3030 3a20 % echo '010000: +00001f40: 3431 2720 7c20 7878 6420 5c2d 7220 5c3e 41' | xxd \-r \> +00001f50: 2066 696c 655c 6652 0a2e 5050 0a2e 6272 file\fR..PP..br +00001f60: 0a48 6578 6475 6d70 2074 6869 7320 6669 .Hexdump this fi +00001f70: 6c65 2077 6974 6820 6175 746f 736b 6970 le with autoskip +00001f80: 2e0a 2e62 720a 5c66 4925 2078 7864 205c ...br.\fI% xxd \ +00001f90: 2d61 205c 2d63 2031 3220 6669 6c65 5c66 -a \-c 12 file\f +00001fa0: 520a 2e62 720a 3030 3030 3030 303a 2030 R..br.0000000: 0 +00001fb0: 3030 3020 3030 3030 2030 3030 3020 3030 000 0000 0000 00 +00001fc0: 3030 2030 3030 3020 3030 3030 2020 2e2e 00 0000 0000 .. +00001fd0: 2e2e 2e2e 2e2e 2e2e 2e2e 0a2e 6272 0a2a ............br.* +00001fe0: 0a2e 6272 0a30 3030 6666 6663 3a20 3030 ..br.000fffc: 00 +00001ff0: 3030 2030 3030 3020 3430 2020 2020 2020 00 0000 40 +00002000: 2020 2020 2020 2020 2020 2020 202e 2e2e ... +00002010: 2e41 0a2e 5050 0a43 7265 6174 6520 6120 .A..PP.Create a +00002020: 3120 6279 7465 2066 696c 6520 636f 6e74 1 byte file cont +00002030: 6169 6e69 6e67 2061 2073 696e 676c 6520 aining a single +00002040: 2741 2720 6368 6172 6163 7465 722e 0a54 'A' character..T +00002050: 6865 206e 756d 6265 7220 6166 7465 7220 he number after +00002060: 275c 2d72 205c 2d73 2720 6164 6473 2074 '\-r \-s' adds t +00002070: 6f20 7468 6520 6c69 6e65 6e75 6d62 6572 o the linenumber +00002080: 7320 666f 756e 6420 696e 2074 6865 2066 s found in the f +00002090: 696c 653b 0a69 6e20 6566 6665 6374 2c20 ile;.in effect, +000020a0: 7468 6520 6c65 6164 696e 6720 6279 7465 the leading byte +000020b0: 7320 6172 6520 7375 7070 7265 7373 6564 s are suppressed +000020c0: 2e0a 2e62 720a 5c66 4925 2065 6368 6f20 ...br.\fI% echo +000020d0: 2730 3130 3030 303a 2034 3127 207c 2078 '010000: 41' | x +000020e0: 7864 205c 2d72 205c 2d73 205c 2d30 7831 xd \-r \-s \-0x1 +000020f0: 3030 3030 205c 3e20 6669 6c65 5c66 520a 0000 \> file\fR. +00002100: 2e50 500a 5573 6520 7878 6420 6173 2061 .PP.Use xxd as a +00002110: 2066 696c 7465 7220 7769 7468 696e 2061 filter within a +00002120: 6e20 6564 6974 6f72 2073 7563 6820 6173 n editor such as +00002130: 0a2e 4220 7669 6d28 3129 0a74 6f20 6865 ..B vim(1).to he +00002140: 7864 756d 7020 6120 7265 6769 6f6e 206d xdump a region m +00002150: 6172 6b65 6420 6265 7477 6565 6e20 6061 arked between `a +00002160: 2720 616e 6420 607a 272e 0a2e 6272 0a5c ' and `z'...br.\ +00002170: 6649 3a27 612c 277a 2178 7864 5c66 520a fI:'a,'z!xxd\fR. +00002180: 2e50 500a 5573 6520 7878 6420 6173 2061 .PP.Use xxd as a +00002190: 2066 696c 7465 7220 7769 7468 696e 2061 filter within a +000021a0: 6e20 6564 6974 6f72 2073 7563 6820 6173 n editor such as +000021b0: 0a2e 4220 7669 6d28 3129 0a74 6f20 7265 ..B vim(1).to re +000021c0: 636f 7665 7220 6120 6269 6e61 7279 2068 cover a binary h +000021d0: 6578 6475 6d70 206d 6172 6b65 6420 6265 exdump marked be +000021e0: 7477 6565 6e20 6061 2720 616e 6420 607a tween `a' and `z +000021f0: 272e 0a2e 6272 0a5c 6649 3a27 612c 277a '...br.\fI:'a,'z +00002200: 2178 7864 205c 2d72 5c66 520a 2e50 500a !xxd \-r\fR..PP. +00002210: 5573 6520 7878 6420 6173 2061 2066 696c Use xxd as a fil +00002220: 7465 7220 7769 7468 696e 2061 6e20 6564 ter within an ed +00002230: 6974 6f72 2073 7563 6820 6173 0a2e 4220 itor such as..B +00002240: 7669 6d28 3129 0a74 6f20 7265 636f 7665 vim(1).to recove +00002250: 7220 6f6e 6520 6c69 6e65 206f 6620 6120 r one line of a +00002260: 6865 7864 756d 702e 2020 4d6f 7665 2074 hexdump. Move t +00002270: 6865 2063 7572 736f 7220 6f76 6572 2074 he cursor over t +00002280: 6865 206c 696e 6520 616e 6420 7479 7065 he line and type +00002290: 3a0a 2e62 720a 5c66 4921 2178 7864 205c :..br.\fI!!xxd \ +000022a0: 2d72 5c66 520a 2e50 500a 5265 6164 2073 -r\fR..PP.Read s +000022b0: 696e 676c 6520 6368 6172 6163 7465 7273 ingle characters +000022c0: 2066 726f 6d20 6120 7365 7269 616c 206c from a serial l +000022d0: 696e 650a 2e62 720a 5c66 4925 2078 7864 ine..br.\fI% xxd +000022e0: 205c 2d63 3120 3c20 2f64 6576 2f74 6572 \-c1 < /dev/ter +000022f0: 6d2f 6220 265c 6652 0a2e 6272 0a5c 6649 m/b &\fR..br.\fI +00002300: 2520 7374 7479 203c 202f 6465 762f 7465 % stty < /dev/te +00002310: 726d 2f62 205c 2d65 6368 6f20 5c2d 6f70 rm/b \-echo \-op +00002320: 6f73 7420 5c2d 6973 6967 205c 2d69 6361 ost \-isig \-ica +00002330: 6e6f 6e20 6d69 6e20 315c 6652 0a2e 6272 non min 1\fR..br +00002340: 0a5c 6649 2520 6563 686f 205c 2d6e 2066 .\fI% echo \-n f +00002350: 6f6f 203e 202f 6465 762f 7465 726d 2f62 oo > /dev/term/b +00002360: 5c66 520a 2e50 500a 2e53 4820 2252 4554 \fR..PP..SH "RET +00002370: 5552 4e20 5641 4c55 4553 220a 5468 6520 URN VALUES".The +00002380: 666f 6c6c 6f77 696e 6720 6572 726f 7220 following error +00002390: 7661 6c75 6573 2061 7265 2072 6574 7572 values are retur +000023a0: 6e65 643a 0a2e 5450 0a30 0a6e 6f20 6572 ned:..TP.0.no er +000023b0: 726f 7273 2065 6e63 6f75 6e74 6572 6564 rors encountered +000023c0: 2e0a 2e54 500a 5c2d 310a 6f70 6572 6174 ...TP.\-1.operat +000023d0: 696f 6e20 6e6f 7420 7375 7070 6f72 7465 ion not supporte +000023e0: 6420 280a 2e49 2078 7864 205c 2d72 205c d (..I xxd \-r \ +000023f0: 2d69 0a73 7469 6c6c 2069 6d70 6f73 7369 -i.still impossi +00002400: 626c 6529 2e0a 2e54 500a 310a 6572 726f ble)...TP.1.erro +00002410: 7220 7768 696c 6520 7061 7273 696e 6720 r while parsing +00002420: 6f70 7469 6f6e 732e 0a2e 5450 0a32 0a70 options...TP.2.p +00002430: 726f 626c 656d 7320 7769 7468 2069 6e70 roblems with inp +00002440: 7574 2066 696c 652e 0a2e 5450 0a33 0a70 ut file...TP.3.p +00002450: 726f 626c 656d 7320 7769 7468 206f 7574 roblems with out +00002460: 7075 7420 6669 6c65 2e0a 2e54 500a 342c put file...TP.4, +00002470: 350a 6465 7369 7265 6420 7365 656b 2070 5.desired seek p +00002480: 6f73 6974 696f 6e20 6973 2075 6e72 6561 osition is unrea +00002490: 6368 6162 6c65 2e0a 2e53 4820 2253 4545 chable...SH "SEE +000024a0: 2041 4c53 4f22 0a75 7565 6e63 6f64 6528 ALSO".uuencode( +000024b0: 3129 2c20 7575 6465 636f 6465 2831 292c 1), uudecode(1), +000024c0: 2070 6174 6368 2831 290a 2e62 720a 2e53 patch(1)..br..S +000024d0: 4820 5741 524e 494e 4753 0a54 6865 2074 H WARNINGS.The t +000024e0: 6f6f 6c73 2077 6569 7264 6e65 7373 206d ools weirdness m +000024f0: 6174 6368 6573 2069 7473 2063 7265 6174 atches its creat +00002500: 6f72 7320 6272 6169 6e2e 0a55 7365 2065 ors brain..Use e +00002510: 6e74 6972 656c 7920 6174 2079 6f75 7220 ntirely at your +00002520: 6f77 6e20 7269 736b 2e20 436f 7079 2066 own risk. Copy f +00002530: 696c 6573 2e20 5472 6163 6520 6974 2e20 iles. Trace it. +00002540: 4265 636f 6d65 2061 2077 697a 6172 642e Become a wizard. +00002550: 0a2e 6272 0a2e 5348 2056 4552 5349 4f4e ..br..SH VERSION +00002560: 0a54 6869 7320 6d61 6e75 616c 2070 6167 .This manual pag +00002570: 6520 646f 6375 6d65 6e74 7320 7878 6420 e documents xxd +00002580: 7665 7273 696f 6e20 312e 370a 2e53 4820 version 1.7..SH +00002590: 4155 5448 4f52 0a2e 6272 0a28 6329 2031 AUTHOR..br.(c) 1 +000025a0: 3939 302d 3139 3937 2062 7920 4a75 6572 990-1997 by Juer +000025b0: 6765 6e20 5765 6967 6572 740a 2e62 720a gen Weigert..br. +000025c0: 3c6a 6e77 6569 6765 7240 696e 666f 726d ..LP.Distri +000025f0: 6275 7465 2066 7265 656c 7920 616e 6420 bute freely and +00002600: 6372 6564 6974 206d 652c 0a2e 6272 0a6d credit me,..br.m +00002610: 616b 6520 6d6f 6e65 7920 616e 6420 7368 ake money and sh +00002620: 6172 6520 7769 7468 206d 652c 0a2e 6272 are with me,..br +00002630: 0a6c 6f73 6520 6d6f 6e65 7920 616e 6420 .lose money and +00002640: 646f 6e27 7420 6173 6b20 6d65 2e0a 2e50 don't ask me...P +00002650: 500a 4d61 6e75 616c 2070 6167 6520 7374 P.Manual page st +00002660: 6172 7465 6420 6279 2054 6f6e 7920 4e75 arted by Tony Nu +00002670: 6765 6e74 0a2e 6272 0a3c 746f 6e79 4073 gent..br. . +000026b0: 2e62 720a 536d 616c 6c20 6368 616e 6765 .br.Small change +000026c0: 7320 6279 2042 7261 6d20 4d6f 6f6c 656e s by Bram Moolen +000026d0: 6161 722e 0a45 6469 7465 6420 6279 204a aar..Edited by J +000026e0: 7565 7267 656e 2057 6569 6765 7274 2e0a uergen Weigert.. +000026f0: 2e50 500a .PP. diff --git a/tests/test_xxd/test_xxd_-s_0x36_-l_13_-c_13_xxd.1.xxd b/tests/test_xxd/test_xxd_-s_0x36_-l_13_-c_13_xxd.1.xxd new file mode 100644 index 0000000..1fb85dc --- /dev/null +++ b/tests/test_xxd/test_xxd_-s_0x36_-l_13_-c_13_xxd.1.xxd @@ -0,0 +1 @@ +00000036: 3231 7374 204d 6179 2031 3939 36 21st May 1996 diff --git a/tests/test_xxd/test_xxd_-s_0x36_-l_13_-c_13_xxd.patched.1.xxd b/tests/test_xxd/test_xxd_-s_0x36_-l_13_-c_13_xxd.patched.1.xxd new file mode 100644 index 0000000..7abaa8a --- /dev/null +++ b/tests/test_xxd/test_xxd_-s_0x36_-l_13_-c_13_xxd.patched.1.xxd @@ -0,0 +1 @@ +00000036: 3235 7468 204d 6179 2031 3939 36 25th May 1996 diff --git a/tests/test_xxd/xxd.1 b/tests/test_xxd/xxd.1 new file mode 100644 index 0000000..fba0521 --- /dev/null +++ b/tests/test_xxd/xxd.1 @@ -0,0 +1,373 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH NAME +.I xxd +\- make a hexdump or do the reverse. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH DESCRIPTION +.I xxd +creates a hex dump of a given file or standard input. +It can also convert a hex dump back to its original binary form. +Like +.BR uuencode(1) +and +.BR uudecode(1) +it allows the transmission of binary data in a `mail-safe' ASCII representation, +but has the advantage of decoding to standard output. +Moreover, it can be used to perform binary file patching. +.SH OPTIONS +If no +.I infile +is given, standard input is read. +If +.I infile +is specified as a +.RB \` \- ' +character, then input is taken from standard input. +If no +.I outfile +is given (or a +.RB \` \- ' +character is in its place), results are sent to standard output. +.PP +Note that a "lazy" parser is used which does not check for more than the first +option letter, unless the option is followed by a parameter. +Spaces between a single option letter and its parameter are optional. +Parameters to options can be specified in decimal, hexadecimal or octal +notation. +Thus +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +and +.B \-cols 8 +are all equivalent. +.PP +.TP +.IR \-a " | " \-autoskip +toggle autoskip: A single '*' replaces nul-lines. Default off. +.TP +.IR \-b " | " \-bits +Switch to bits (binary digits) dump, rather than hexdump. +This option writes octets as eight digits "1"s and "0"s instead of a normal +hexacecimal dump. Each line is preceded by a line number in hexadecimal and +followed by an ascii (or ebcdic) representation. The command line switches +\-r, \-p, \-i do not work with this mode. +.TP +.IR "\-c cols " | " \-cols cols" +.IR "\-c cols " | " \-cols cols" +format +.RI < cols > +octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. +.TP +.IR \-E " | " \-EBCDIC +Change the character encoding in the righthand column from ASCII to EBCDIC. +This does not change the hexadecimal representation. The option is +meaningless in combinations with \-r, \-p or \-i. +.TP +.IR "\-g bytes " | " \-groupsize bytes" +seperate the output of every +.RI < bytes > +bytes (two hex characters or eight bit-digits each) by a whitespace. +Specify +.I \-g 0 +to suppress grouping. +.RI < Bytes "> defaults to " 2 +in normal mode and \fI1\fP in bits mode. +Grouping does not apply to postscript or include style. +.TP +.IR \-h " | " \-help +print a summary of available commands and exit. No hex dumping is performed. +.TP +.IR \-i " | " \-include +output in C include file style. A complete static array definition is written +(named after the input file), unless xxd reads from stdin. +.TP +.IR "\-l len " | " \-len len" +stop after writing +.RI < len > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +output in postscript continuous hexdump style. Also known as plain hexdump +style. +.TP +.IR \-r " | " \-revert +reverse operation: convert (or patch) hexdump into binary. +If not writing to stdout, xxd writes into its output file without truncating +it. Use the combination +.I \-r \-p +to read plain hexadecimal dumps without line number information and without a +particular column layout. Additional Whitespace and line-breaks are allowed +anywhere. +.TP +.I \-seek offset +When used after +.I \-r +: revert with +.RI < offset > +added to file positions found in hexdump. +.TP +.I \-s [\+][\-]seek +start at +.RI < seek > +bytes abs. (or rel.) infile offset. +\fI\+ \fRindicates that the seek is relative to the current stdin file position +(meaningless when not reading from stdin). \fI\- \fRindicates that the seek +should be that many characters from the end of the input (or if combined with +\fI \+ \fR: before the current stdin file position). +Without \-s option, xxd starts at the current file position. +.TP +.I \-u +use upper case hex letters. Default is lower case. +.TP +.IR \-v " | " \-version +show version string. +.SH CAVEATS +.PP +.I xxd \-r +has some builtin magic while evaluating line number information. +If the ouput file is seekable, then the linenumbers at the start of each +hexdump line may be out of order, lines may be missing, or overlapping. In +these cases xxd will lseek(2) to the next position. If the output file is not +seekable, only gaps are allowed, which will be filled by null-bytes. +.PP +.I xxd \-r +never generates parse errors. Garbage is silently skipped. +.PP +When editing hexdumps, please note that +.I xxd \-r +skips everything on the input line after reading enough columns of hexadecimal +data (see option \-c). This also means, that changes to the printable ascii (or +ebcdic) columns are always ignored. Reverting a plain (or postscript) style +hexdump with xxd \-r \-p does not depend on the correct number of columns. Here an thing that looks like a pair of hex-digits is interpreted. +.PP +Note the difference between +.br +\fI% xxd \-i file\fR +.br +and +.br +\fI% xxd \-i \< file\fR +.PP +.I xxd \-s \+seek +may be different from +.I xxd \-s seek +, as lseek(2) is used to "rewind" input. A '+' +makes a difference if the input source is stdin, and if stdin's file position +is not at the start of the file by the time xxd is started and given its input. +The following examples may help to clarify (or further confuse!)... +.PP +Rewind stdin before reading; needed because the `cat' has already read to the +end of stdin. +.br +\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file +.PP +Hexdump from file position 0x480 (=1024+128) onwards. +The `+' sign means "relative to the current position", thus the `128' adds to +the 1k where dd left off. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file +.PP +Hexdump from file position 0x100 ( = 1024-768) on. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file +.PP +However, this is a rare situation and the use of `+' is rarely needed. +the author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. +.SH EXAMPLES +.PP +.br +Print everything but the first three lines (hex 0x30 bytes) of +.B file +\. +.br +\fI% xxd \-s 0x30 file +.PP +.br +Print 3 lines (hex 0x30 bytes) from the end of +.B file +\. +.br +\fI% xxd \-s \-0x30 file +.PP +.br +Print 120 bytes as continuous hexdump with 40 octets per line. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e544820585844203120224d616e75616c207061 +.br +676520666f7220787864220a2e5c220a2e5c2220 +.br +32317374204d617920313939360a2e5c22204d61 +.br +6e207061676520617574686f723a0a2e5c222020 +.br +2020546f6e79204e7567656e74203c746f6e7940 +.br +7363746e7567656e2e7070702e67752e6564752e +.br + +.br +Hexdump the first 120 bytes of this man page with 12 octets per line. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +.br +000000c: 616e 7561 6c20 7061 6765 2066 anual page f +.br +0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\". +.br +0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May +.br +0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma +.br +000003c: 6e20 7061 6765 2061 7574 686f n page autho +.br +0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To +.br +0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent output_file\fR +.br + +.br +Patch the date in the file xxd.1 +.br +\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +.br +0000028: 3235 7468 204d 6179 2031 3939 25th May 199 +.PP +.br +Create a 65537 byte file with all bytes 0x00, +except for the last one which is 'A' (hex 0x41). +.br +\fI% echo '010000: 41' | xxd \-r \> file\fR +.PP +.br +Hexdump this file with autoskip. +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Create a 1 byte file containing a single 'A' character. +The number after '\-r \-s' adds to the linenumbers found in the file; +in effect, the leading bytes are suppressed. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to hexdump a region marked between `a' and `z'. +.br +\fI:'a,'z!xxd\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover a binary hexdump marked between `a' and `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover one line of a hexdump. Move the cursor over the line and type: +.br +\fI!!xxd \-r\fR +.PP +Read single characters from a serial line +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH "RETURN VALUES" +The following error values are returned: +.TP +0 +no errors encountered. +.TP +\-1 +operation not supported ( +.I xxd \-r \-i +still impossible). +.TP +1 +error while parsing options. +.TP +2 +problems with input file. +.TP +3 +problems with output file. +.TP +4,5 +desired seek position is unreachable. +.SH "SEE ALSO" +uuencode(1), uudecode(1), patch(1) +.br +.SH WARNINGS +The tools weirdness matches its creators brain. +Use entirely at your own risk. Copy files. Trace it. Become a wizard. +.br +.SH VERSION +This manual page documents xxd version 1.7 +.SH AUTHOR +.br +(c) 1990-1997 by Juergen Weigert +.br + +.LP +Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me. +.PP +Manual page started by Tony Nugent +.br + +.br +Small changes by Bram Moolenaar. +Edited by Juergen Weigert. +.PP diff --git a/tests/test_xxd/xxd.1.patch.xxd b/tests/test_xxd/xxd.1.patch.xxd new file mode 100644 index 0000000..79cc882 --- /dev/null +++ b/tests/test_xxd/xxd.1.patch.xxd @@ -0,0 +1 @@ +0000037: 3574 68 diff --git a/tests/test_xxd/xxd.patched.1 b/tests/test_xxd/xxd.patched.1 new file mode 100644 index 0000000..101507d --- /dev/null +++ b/tests/test_xxd/xxd.patched.1 @@ -0,0 +1,373 @@ +.TH XXD 1 "August 1996" "Manual page for xxd" +.\" +.\" 25th May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH NAME +.I xxd +\- make a hexdump or do the reverse. +.SH SYNOPSIS +.B xxd +\-h[elp] +.br +.B xxd +[options] [infile [outfile]] +.br +.B xxd +\-r[evert] [options] [infile [outfile]] +.SH DESCRIPTION +.I xxd +creates a hex dump of a given file or standard input. +It can also convert a hex dump back to its original binary form. +Like +.BR uuencode(1) +and +.BR uudecode(1) +it allows the transmission of binary data in a `mail-safe' ASCII representation, +but has the advantage of decoding to standard output. +Moreover, it can be used to perform binary file patching. +.SH OPTIONS +If no +.I infile +is given, standard input is read. +If +.I infile +is specified as a +.RB \` \- ' +character, then input is taken from standard input. +If no +.I outfile +is given (or a +.RB \` \- ' +character is in its place), results are sent to standard output. +.PP +Note that a "lazy" parser is used which does not check for more than the first +option letter, unless the option is followed by a parameter. +Spaces between a single option letter and its parameter are optional. +Parameters to options can be specified in decimal, hexadecimal or octal +notation. +Thus +.BR \-c8 , +.BR "\-c 8" , +.B \-c 010 +and +.B \-cols 8 +are all equivalent. +.PP +.TP +.IR \-a " | " \-autoskip +toggle autoskip: A single '*' replaces nul-lines. Default off. +.TP +.IR \-b " | " \-bits +Switch to bits (binary digits) dump, rather than hexdump. +This option writes octets as eight digits "1"s and "0"s instead of a normal +hexacecimal dump. Each line is preceded by a line number in hexadecimal and +followed by an ascii (or ebcdic) representation. The command line switches +\-r, \-p, \-i do not work with this mode. +.TP +.IR "\-c cols " | " \-cols cols" +.IR "\-c cols " | " \-cols cols" +format +.RI < cols > +octets per line. Default 16 (\-i: 12, \-ps: 30, \-b: 6). Max 256. +.TP +.IR \-E " | " \-EBCDIC +Change the character encoding in the righthand column from ASCII to EBCDIC. +This does not change the hexadecimal representation. The option is +meaningless in combinations with \-r, \-p or \-i. +.TP +.IR "\-g bytes " | " \-groupsize bytes" +seperate the output of every +.RI < bytes > +bytes (two hex characters or eight bit-digits each) by a whitespace. +Specify +.I \-g 0 +to suppress grouping. +.RI < Bytes "> defaults to " 2 +in normal mode and \fI1\fP in bits mode. +Grouping does not apply to postscript or include style. +.TP +.IR \-h " | " \-help +print a summary of available commands and exit. No hex dumping is performed. +.TP +.IR \-i " | " \-include +output in C include file style. A complete static array definition is written +(named after the input file), unless xxd reads from stdin. +.TP +.IR "\-l len " | " \-len len" +stop after writing +.RI < len > +octets. +.TP +.IR \-p " | " \-ps " | " \-postscript " | " \-plain +output in postscript continuous hexdump style. Also known as plain hexdump +style. +.TP +.IR \-r " | " \-revert +reverse operation: convert (or patch) hexdump into binary. +If not writing to stdout, xxd writes into its output file without truncating +it. Use the combination +.I \-r \-p +to read plain hexadecimal dumps without line number information and without a +particular column layout. Additional Whitespace and line-breaks are allowed +anywhere. +.TP +.I \-seek offset +When used after +.I \-r +: revert with +.RI < offset > +added to file positions found in hexdump. +.TP +.I \-s [\+][\-]seek +start at +.RI < seek > +bytes abs. (or rel.) infile offset. +\fI\+ \fRindicates that the seek is relative to the current stdin file position +(meaningless when not reading from stdin). \fI\- \fRindicates that the seek +should be that many characters from the end of the input (or if combined with +\fI \+ \fR: before the current stdin file position). +Without \-s option, xxd starts at the current file position. +.TP +.I \-u +use upper case hex letters. Default is lower case. +.TP +.IR \-v " | " \-version +show version string. +.SH CAVEATS +.PP +.I xxd \-r +has some builtin magic while evaluating line number information. +If the ouput file is seekable, then the linenumbers at the start of each +hexdump line may be out of order, lines may be missing, or overlapping. In +these cases xxd will lseek(2) to the next position. If the output file is not +seekable, only gaps are allowed, which will be filled by null-bytes. +.PP +.I xxd \-r +never generates parse errors. Garbage is silently skipped. +.PP +When editing hexdumps, please note that +.I xxd \-r +skips everything on the input line after reading enough columns of hexadecimal +data (see option \-c). This also means, that changes to the printable ascii (or +ebcdic) columns are always ignored. Reverting a plain (or postscript) style +hexdump with xxd \-r \-p does not depend on the correct number of columns. Here an thing that looks like a pair of hex-digits is interpreted. +.PP +Note the difference between +.br +\fI% xxd \-i file\fR +.br +and +.br +\fI% xxd \-i \< file\fR +.PP +.I xxd \-s \+seek +may be different from +.I xxd \-s seek +, as lseek(2) is used to "rewind" input. A '+' +makes a difference if the input source is stdin, and if stdin's file position +is not at the start of the file by the time xxd is started and given its input. +The following examples may help to clarify (or further confuse!)... +.PP +Rewind stdin before reading; needed because the `cat' has already read to the +end of stdin. +.br +\fI% sh \-c 'cat > plain_copy; xxd \-s 0 > hex_copy' < file +.PP +Hexdump from file position 0x480 (=1024+128) onwards. +The `+' sign means "relative to the current position", thus the `128' adds to +the 1k where dd left off. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet' < file +.PP +Hexdump from file position 0x100 ( = 1024-768) on. +.br +\fI% sh \-c 'dd of=plain_snippet bs=1k count=1; xxd \-s +-768 > hex_snippet' < file +.PP +However, this is a rare situation and the use of `+' is rarely needed. +the author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever \-s is used. +.SH EXAMPLES +.PP +.br +Print everything but the first three lines (hex 0x30 bytes) of +.B file +\. +.br +\fI% xxd \-s 0x30 file +.PP +.br +Print 3 lines (hex 0x30 bytes) from the end of +.B file +\. +.br +\fI% xxd \-s \-0x30 file +.PP +.br +Print 120 bytes as continuous hexdump with 40 octets per line. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR +.br +2e544820585844203120224d616e75616c207061 +.br +676520666f7220787864220a2e5c220a2e5c2220 +.br +32317374204d617920313939360a2e5c22204d61 +.br +6e207061676520617574686f723a0a2e5c222020 +.br +2020546f6e79204e7567656e74203c746f6e7940 +.br +7363746e7567656e2e7070702e67752e6564752e +.br + +.br +Hexdump the first 120 bytes of this man page with 12 octets per line. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fR +.br +0000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +.br +000000c: 616e 7561 6c20 7061 6765 2066 anual page f +.br +0000018: 6f72 2078 7864 220a 2e5c 220a or xxd"..\\". +.br +0000024: 2e5c 2220 3231 7374 204d 6179 .\\" 21st May +.br +0000030: 2031 3939 360a 2e5c 2220 4d61 1996..\\" Ma +.br +000003c: 6e20 7061 6765 2061 7574 686f n page autho +.br +0000048: 723a 0a2e 5c22 2020 2020 546f r:..\\" To +.br +0000054: 6e79 204e 7567 656e 7420 3c74 ny Nugent output_file\fR +.br + +.br +Patch the date in the file xxd.1 +.br +\fI% echo '0000029: 3574 68' | xxd \-r \- xxd.1\fR +.br +\fI% xxd \-s 0x28 \-l 12 \-c 12 xxd.1\fR +.br +0000028: 3235 7468 204d 6179 2031 3939 25th May 199 +.PP +.br +Create a 65537 byte file with all bytes 0x00, +except for the last one which is 'A' (hex 0x41). +.br +\fI% echo '010000: 41' | xxd \-r \> file\fR +.PP +.br +Hexdump this file with autoskip. +.br +\fI% xxd \-a \-c 12 file\fR +.br +0000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +000fffc: 0000 0000 40 ....A +.PP +Create a 1 byte file containing a single 'A' character. +The number after '\-r \-s' adds to the linenumbers found in the file; +in effect, the leading bytes are suppressed. +.br +\fI% echo '010000: 41' | xxd \-r \-s \-0x10000 \> file\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to hexdump a region marked between `a' and `z'. +.br +\fI:'a,'z!xxd\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover a binary hexdump marked between `a' and `z'. +.br +\fI:'a,'z!xxd \-r\fR +.PP +Use xxd as a filter within an editor such as +.B vim(1) +to recover one line of a hexdump. Move the cursor over the line and type: +.br +\fI!!xxd \-r\fR +.PP +Read single characters from a serial line +.br +\fI% xxd \-c1 < /dev/term/b &\fR +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fR +.br +\fI% echo \-n foo > /dev/term/b\fR +.PP +.SH "RETURN VALUES" +The following error values are returned: +.TP +0 +no errors encountered. +.TP +\-1 +operation not supported ( +.I xxd \-r \-i +still impossible). +.TP +1 +error while parsing options. +.TP +2 +problems with input file. +.TP +3 +problems with output file. +.TP +4,5 +desired seek position is unreachable. +.SH "SEE ALSO" +uuencode(1), uudecode(1), patch(1) +.br +.SH WARNINGS +The tools weirdness matches its creators brain. +Use entirely at your own risk. Copy files. Trace it. Become a wizard. +.br +.SH VERSION +This manual page documents xxd version 1.7 +.SH AUTHOR +.br +(c) 1990-1997 by Juergen Weigert +.br + +.LP +Distribute freely and credit me, +.br +make money and share with me, +.br +lose money and don't ask me. +.PP +Manual page started by Tony Nugent +.br + +.br +Small changes by Bram Moolenaar. +Edited by Juergen Weigert. +.PP diff --git a/tests/test_xxd/xxd_-i_STDIN_file.c b/tests/test_xxd/xxd_-i_STDIN_file.c new file mode 100644 index 0000000..6bc472e --- /dev/null +++ b/tests/test_xxd/xxd_-i_STDIN_file.c @@ -0,0 +1,831 @@ + 0x2e, 0x54, 0x48, 0x20, 0x58, 0x58, 0x44, 0x20, 0x31, 0x20, 0x22, 0x41, + 0x75, 0x67, 0x75, 0x73, 0x74, 0x20, 0x31, 0x39, 0x39, 0x36, 0x22, 0x20, + 0x22, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, 0x20, 0x70, 0x61, 0x67, 0x65, + 0x20, 0x66, 0x6f, 0x72, 0x20, 0x78, 0x78, 0x64, 0x22, 0x0a, 0x2e, 0x5c, + 0x22, 0x0a, 0x2e, 0x5c, 0x22, 0x20, 0x32, 0x31, 0x73, 0x74, 0x20, 0x4d, + 0x61, 0x79, 0x20, 0x31, 0x39, 0x39, 0x36, 0x0a, 0x2e, 0x5c, 0x22, 0x20, + 0x4d, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x3a, 0x0a, 0x2e, 0x5c, 0x22, 0x20, 0x20, 0x20, 0x20, + 0x54, 0x6f, 0x6e, 0x79, 0x20, 0x4e, 0x75, 0x67, 0x65, 0x6e, 0x74, 0x20, + 0x3c, 0x74, 0x6f, 0x6e, 0x79, 0x40, 0x73, 0x63, 0x74, 0x6e, 0x75, 0x67, + 0x65, 0x6e, 0x2e, 0x70, 0x70, 0x70, 0x2e, 0x67, 0x75, 0x2e, 0x65, 0x64, + 0x75, 0x2e, 0x61, 0x75, 0x3e, 0x20, 0x3c, 0x54, 0x2e, 0x4e, 0x75, 0x67, + 0x65, 0x6e, 0x74, 0x40, 0x73, 0x63, 0x74, 0x2e, 0x67, 0x75, 0x2e, 0x65, + 0x64, 0x75, 0x2e, 0x61, 0x75, 0x3e, 0x0a, 0x2e, 0x5c, 0x22, 0x20, 0x20, + 0x20, 0x20, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x62, 0x79, + 0x20, 0x42, 0x72, 0x61, 0x6d, 0x20, 0x4d, 0x6f, 0x6f, 0x6c, 0x65, 0x6e, + 0x61, 0x61, 0x72, 0x20, 0x3c, 0x42, 0x72, 0x61, 0x6d, 0x40, 0x76, 0x69, + 0x6d, 0x2e, 0x6f, 0x72, 0x67, 0x3e, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x4e, + 0x41, 0x4d, 0x45, 0x0a, 0x2e, 0x49, 0x20, 0x78, 0x78, 0x64, 0x0a, 0x5c, + 0x2d, 0x20, 0x6d, 0x61, 0x6b, 0x65, 0x20, 0x61, 0x20, 0x68, 0x65, 0x78, + 0x64, 0x75, 0x6d, 0x70, 0x20, 0x6f, 0x72, 0x20, 0x64, 0x6f, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2e, 0x0a, + 0x2e, 0x53, 0x48, 0x20, 0x53, 0x59, 0x4e, 0x4f, 0x50, 0x53, 0x49, 0x53, + 0x0a, 0x2e, 0x42, 0x20, 0x78, 0x78, 0x64, 0x0a, 0x5c, 0x2d, 0x68, 0x5b, + 0x65, 0x6c, 0x70, 0x5d, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x2e, 0x42, 0x20, + 0x78, 0x78, 0x64, 0x0a, 0x5b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x5d, 0x20, 0x5b, 0x69, 0x6e, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x5b, 0x6f, + 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x5d, 0x5d, 0x0a, 0x2e, 0x62, 0x72, + 0x0a, 0x2e, 0x42, 0x20, 0x78, 0x78, 0x64, 0x0a, 0x5c, 0x2d, 0x72, 0x5b, + 0x65, 0x76, 0x65, 0x72, 0x74, 0x5d, 0x20, 0x5b, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x5d, 0x20, 0x5b, 0x69, 0x6e, 0x66, 0x69, 0x6c, 0x65, + 0x20, 0x5b, 0x6f, 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x5d, 0x5d, 0x0a, + 0x2e, 0x53, 0x48, 0x20, 0x44, 0x45, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x0a, 0x2e, 0x49, 0x20, 0x78, 0x78, 0x64, 0x0a, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x73, 0x20, 0x61, 0x20, 0x68, 0x65, 0x78, + 0x20, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x20, 0x67, + 0x69, 0x76, 0x65, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x6f, 0x72, + 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x2e, 0x0a, 0x49, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, + 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, + 0x20, 0x61, 0x20, 0x68, 0x65, 0x78, 0x20, 0x64, 0x75, 0x6d, 0x70, 0x20, + 0x62, 0x61, 0x63, 0x6b, 0x20, 0x74, 0x6f, 0x20, 0x69, 0x74, 0x73, 0x20, + 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x62, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x0a, 0x4c, 0x69, + 0x6b, 0x65, 0x0a, 0x2e, 0x42, 0x52, 0x20, 0x75, 0x75, 0x65, 0x6e, 0x63, + 0x6f, 0x64, 0x65, 0x28, 0x31, 0x29, 0x0a, 0x61, 0x6e, 0x64, 0x0a, 0x2e, + 0x42, 0x52, 0x20, 0x75, 0x75, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, + 0x31, 0x29, 0x0a, 0x69, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x73, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x6f, 0x66, 0x20, 0x62, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x69, 0x6e, 0x20, + 0x61, 0x20, 0x60, 0x6d, 0x61, 0x69, 0x6c, 0x2d, 0x73, 0x61, 0x66, 0x65, + 0x27, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x20, 0x72, 0x65, 0x70, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x0a, + 0x62, 0x75, 0x74, 0x20, 0x68, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x61, 0x64, 0x76, 0x61, 0x6e, 0x74, 0x61, 0x67, 0x65, 0x20, 0x6f, 0x66, + 0x20, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, + 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x2e, 0x0a, 0x4d, 0x6f, 0x72, 0x65, 0x6f, 0x76, + 0x65, 0x72, 0x2c, 0x20, 0x69, 0x74, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, + 0x65, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x65, + 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x20, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x70, 0x61, 0x74, 0x63, 0x68, 0x69, + 0x6e, 0x67, 0x2e, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x4f, 0x50, 0x54, 0x49, + 0x4f, 0x4e, 0x53, 0x0a, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x0a, 0x2e, 0x49, + 0x20, 0x69, 0x6e, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x69, 0x73, 0x20, 0x67, + 0x69, 0x76, 0x65, 0x6e, 0x2c, 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, + 0x72, 0x64, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, 0x73, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x2e, 0x0a, 0x49, 0x66, 0x0a, 0x2e, 0x49, 0x20, + 0x69, 0x6e, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x69, 0x73, 0x20, 0x73, 0x70, + 0x65, 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, + 0x0a, 0x2e, 0x52, 0x42, 0x20, 0x5c, 0x60, 0x20, 0x5c, 0x2d, 0x20, 0x27, + 0x0a, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2c, 0x20, + 0x74, 0x68, 0x65, 0x6e, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x69, + 0x73, 0x20, 0x74, 0x61, 0x6b, 0x65, 0x6e, 0x20, 0x66, 0x72, 0x6f, 0x6d, + 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x69, 0x6e, + 0x70, 0x75, 0x74, 0x2e, 0x0a, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x0a, 0x2e, + 0x49, 0x20, 0x6f, 0x75, 0x74, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x69, 0x73, + 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x28, 0x6f, 0x72, 0x20, 0x61, + 0x0a, 0x2e, 0x52, 0x42, 0x20, 0x5c, 0x60, 0x20, 0x5c, 0x2d, 0x20, 0x27, + 0x0a, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, 0x69, + 0x73, 0x20, 0x69, 0x6e, 0x20, 0x69, 0x74, 0x73, 0x20, 0x70, 0x6c, 0x61, + 0x63, 0x65, 0x29, 0x2c, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, + 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x65, 0x6e, 0x74, 0x20, 0x74, 0x6f, + 0x20, 0x73, 0x74, 0x61, 0x6e, 0x64, 0x61, 0x72, 0x64, 0x20, 0x6f, 0x75, + 0x74, 0x70, 0x75, 0x74, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x4e, 0x6f, + 0x74, 0x65, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x61, 0x20, 0x22, 0x6c, + 0x61, 0x7a, 0x79, 0x22, 0x20, 0x70, 0x61, 0x72, 0x73, 0x65, 0x72, 0x20, + 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, 0x77, 0x68, 0x69, 0x63, + 0x68, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, + 0x68, 0x65, 0x63, 0x6b, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x6f, 0x72, + 0x65, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, + 0x69, 0x72, 0x73, 0x74, 0x0a, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, + 0x6c, 0x65, 0x74, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x75, 0x6e, 0x6c, 0x65, + 0x73, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x69, 0x73, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, + 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, + 0x65, 0x74, 0x65, 0x72, 0x2e, 0x0a, 0x53, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x61, 0x20, 0x73, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x6c, 0x65, 0x74, 0x74, 0x65, 0x72, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x69, 0x74, 0x73, 0x20, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x20, 0x61, 0x72, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x61, 0x6c, 0x2e, 0x0a, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, + 0x72, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x62, 0x65, 0x20, 0x73, 0x70, 0x65, + 0x63, 0x69, 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x64, 0x65, + 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x2c, 0x20, 0x68, 0x65, 0x78, 0x61, 0x64, + 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x6f, 0x72, 0x20, 0x6f, 0x63, + 0x74, 0x61, 0x6c, 0x0a, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x2e, 0x0a, 0x54, 0x68, 0x75, 0x73, 0x0a, 0x2e, 0x42, 0x52, 0x20, 0x5c, + 0x2d, 0x63, 0x38, 0x20, 0x2c, 0x0a, 0x2e, 0x42, 0x52, 0x20, 0x22, 0x5c, + 0x2d, 0x63, 0x20, 0x38, 0x22, 0x20, 0x2c, 0x0a, 0x2e, 0x42, 0x20, 0x5c, + 0x2d, 0x63, 0x20, 0x30, 0x31, 0x30, 0x0a, 0x61, 0x6e, 0x64, 0x0a, 0x2e, + 0x42, 0x20, 0x5c, 0x2d, 0x63, 0x6f, 0x6c, 0x73, 0x20, 0x38, 0x0a, 0x61, + 0x72, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x65, 0x71, 0x75, 0x69, 0x76, + 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, + 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x61, 0x20, 0x22, + 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x61, 0x75, 0x74, 0x6f, 0x73, + 0x6b, 0x69, 0x70, 0x0a, 0x74, 0x6f, 0x67, 0x67, 0x6c, 0x65, 0x20, 0x61, + 0x75, 0x74, 0x6f, 0x73, 0x6b, 0x69, 0x70, 0x3a, 0x20, 0x41, 0x20, 0x73, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x27, 0x2a, 0x27, 0x20, 0x72, 0x65, + 0x70, 0x6c, 0x61, 0x63, 0x65, 0x73, 0x20, 0x6e, 0x75, 0x6c, 0x2d, 0x6c, + 0x69, 0x6e, 0x65, 0x73, 0x2e, 0x20, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, + 0x6c, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, + 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x62, 0x20, 0x22, 0x20, 0x7c, 0x20, + 0x22, 0x20, 0x5c, 0x2d, 0x62, 0x69, 0x74, 0x73, 0x0a, 0x53, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x20, 0x74, 0x6f, 0x20, 0x62, 0x69, 0x74, 0x73, 0x20, + 0x28, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x20, 0x64, 0x69, 0x67, 0x69, + 0x74, 0x73, 0x29, 0x20, 0x64, 0x75, 0x6d, 0x70, 0x2c, 0x20, 0x72, 0x61, + 0x74, 0x68, 0x65, 0x72, 0x20, 0x74, 0x68, 0x61, 0x6e, 0x20, 0x68, 0x65, + 0x78, 0x64, 0x75, 0x6d, 0x70, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, + 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x77, 0x72, 0x69, 0x74, 0x65, + 0x73, 0x20, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x20, 0x61, 0x73, 0x20, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x64, 0x69, 0x67, 0x69, 0x74, 0x73, + 0x20, 0x22, 0x31, 0x22, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x22, 0x30, + 0x22, 0x73, 0x20, 0x69, 0x6e, 0x73, 0x74, 0x65, 0x61, 0x64, 0x20, 0x6f, + 0x66, 0x20, 0x61, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x0a, 0x68, + 0x65, 0x78, 0x61, 0x63, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x64, + 0x75, 0x6d, 0x70, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x6c, 0x69, + 0x6e, 0x65, 0x20, 0x69, 0x73, 0x20, 0x70, 0x72, 0x65, 0x63, 0x65, 0x64, + 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x20, 0x6c, 0x69, 0x6e, 0x65, + 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x20, 0x68, + 0x65, 0x78, 0x61, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x61, + 0x6e, 0x64, 0x0a, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x20, + 0x62, 0x79, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x73, 0x63, 0x69, 0x69, 0x20, + 0x28, 0x6f, 0x72, 0x20, 0x65, 0x62, 0x63, 0x64, 0x69, 0x63, 0x29, 0x20, + 0x72, 0x65, 0x70, 0x72, 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6d, 0x6d, + 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x73, 0x77, 0x69, + 0x74, 0x63, 0x68, 0x65, 0x73, 0x0a, 0x5c, 0x2d, 0x72, 0x2c, 0x20, 0x5c, + 0x2d, 0x70, 0x2c, 0x20, 0x5c, 0x2d, 0x69, 0x20, 0x64, 0x6f, 0x20, 0x6e, + 0x6f, 0x74, 0x20, 0x77, 0x6f, 0x72, 0x6b, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x0a, + 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x22, 0x5c, 0x2d, 0x63, + 0x20, 0x63, 0x6f, 0x6c, 0x73, 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, + 0x5c, 0x2d, 0x63, 0x6f, 0x6c, 0x73, 0x20, 0x63, 0x6f, 0x6c, 0x73, 0x22, + 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x22, 0x5c, 0x2d, 0x63, 0x20, 0x63, 0x6f, + 0x6c, 0x73, 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x63, + 0x6f, 0x6c, 0x73, 0x20, 0x63, 0x6f, 0x6c, 0x73, 0x22, 0x0a, 0x66, 0x6f, + 0x72, 0x6d, 0x61, 0x74, 0x0a, 0x2e, 0x52, 0x49, 0x20, 0x3c, 0x20, 0x63, + 0x6f, 0x6c, 0x73, 0x20, 0x3e, 0x0a, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, + 0x20, 0x70, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x20, 0x44, + 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x31, 0x36, 0x20, 0x28, 0x5c, + 0x2d, 0x69, 0x3a, 0x20, 0x31, 0x32, 0x2c, 0x20, 0x5c, 0x2d, 0x70, 0x73, + 0x3a, 0x20, 0x33, 0x30, 0x2c, 0x20, 0x5c, 0x2d, 0x62, 0x3a, 0x20, 0x36, + 0x29, 0x2e, 0x20, 0x4d, 0x61, 0x78, 0x20, 0x32, 0x35, 0x36, 0x2e, 0x0a, + 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x45, 0x20, + 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x45, 0x42, 0x43, 0x44, + 0x49, 0x43, 0x0a, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x20, + 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x6e, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x68, 0x61, 0x6e, + 0x64, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x20, 0x66, 0x72, 0x6f, + 0x6d, 0x20, 0x41, 0x53, 0x43, 0x49, 0x49, 0x20, 0x74, 0x6f, 0x20, 0x45, + 0x42, 0x43, 0x44, 0x49, 0x43, 0x2e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, + 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x68, 0x65, 0x78, 0x61, + 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x72, 0x65, 0x70, 0x72, + 0x65, 0x73, 0x65, 0x6e, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, + 0x54, 0x68, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, + 0x73, 0x0a, 0x6d, 0x65, 0x61, 0x6e, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x73, + 0x73, 0x20, 0x69, 0x6e, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x5c, + 0x2d, 0x72, 0x2c, 0x20, 0x5c, 0x2d, 0x70, 0x20, 0x6f, 0x72, 0x20, 0x5c, + 0x2d, 0x69, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, + 0x22, 0x5c, 0x2d, 0x67, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x22, + 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x67, 0x72, 0x6f, 0x75, 0x70, + 0x73, 0x69, 0x7a, 0x65, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x22, 0x0a, + 0x73, 0x65, 0x70, 0x65, 0x72, 0x61, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x65, + 0x76, 0x65, 0x72, 0x79, 0x0a, 0x2e, 0x52, 0x49, 0x20, 0x3c, 0x20, 0x62, + 0x79, 0x74, 0x65, 0x73, 0x20, 0x3e, 0x0a, 0x62, 0x79, 0x74, 0x65, 0x73, + 0x20, 0x28, 0x74, 0x77, 0x6f, 0x20, 0x68, 0x65, 0x78, 0x20, 0x63, 0x68, + 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x6f, 0x72, 0x20, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x20, 0x62, 0x69, 0x74, 0x2d, 0x64, 0x69, + 0x67, 0x69, 0x74, 0x73, 0x20, 0x65, 0x61, 0x63, 0x68, 0x29, 0x20, 0x62, + 0x79, 0x20, 0x61, 0x20, 0x77, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x2e, 0x0a, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x0a, + 0x2e, 0x49, 0x20, 0x5c, 0x2d, 0x67, 0x20, 0x30, 0x0a, 0x74, 0x6f, 0x20, + 0x73, 0x75, 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x20, 0x67, 0x72, 0x6f, + 0x75, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x2e, 0x52, 0x49, 0x20, 0x3c, + 0x20, 0x42, 0x79, 0x74, 0x65, 0x73, 0x20, 0x22, 0x3e, 0x20, 0x64, 0x65, + 0x66, 0x61, 0x75, 0x6c, 0x74, 0x73, 0x20, 0x74, 0x6f, 0x20, 0x22, 0x20, + 0x32, 0x0a, 0x69, 0x6e, 0x20, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x20, + 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x5c, 0x66, 0x49, + 0x31, 0x5c, 0x66, 0x50, 0x20, 0x69, 0x6e, 0x20, 0x62, 0x69, 0x74, 0x73, + 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x0a, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x69, 0x6e, 0x67, 0x20, 0x64, 0x6f, 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, + 0x20, 0x61, 0x70, 0x70, 0x6c, 0x79, 0x20, 0x74, 0x6f, 0x20, 0x70, 0x6f, + 0x73, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x20, 0x6f, 0x72, 0x20, + 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, + 0x2d, 0x68, 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x68, + 0x65, 0x6c, 0x70, 0x0a, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x61, 0x20, + 0x73, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x6f, 0x66, 0x20, 0x61, + 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x63, 0x6f, 0x6d, + 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x78, + 0x69, 0x74, 0x2e, 0x20, 0x20, 0x4e, 0x6f, 0x20, 0x68, 0x65, 0x78, 0x20, + 0x64, 0x75, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x69, 0x73, 0x20, 0x70, + 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x54, + 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x69, 0x20, 0x22, 0x20, + 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, + 0x65, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x69, 0x6e, 0x20, + 0x43, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x2e, 0x20, 0x41, 0x20, + 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x73, 0x74, 0x61, + 0x74, 0x69, 0x63, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x20, 0x64, 0x65, + 0x66, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, + 0x77, 0x72, 0x69, 0x74, 0x74, 0x65, 0x6e, 0x0a, 0x28, 0x6e, 0x61, 0x6d, + 0x65, 0x64, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x29, + 0x2c, 0x20, 0x75, 0x6e, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x78, 0x78, 0x64, + 0x20, 0x72, 0x65, 0x61, 0x64, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, + 0x73, 0x74, 0x64, 0x69, 0x6e, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, + 0x49, 0x52, 0x20, 0x22, 0x5c, 0x2d, 0x6c, 0x20, 0x6c, 0x65, 0x6e, 0x20, + 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x6c, 0x65, 0x6e, 0x20, + 0x6c, 0x65, 0x6e, 0x22, 0x0a, 0x73, 0x74, 0x6f, 0x70, 0x20, 0x61, 0x66, + 0x74, 0x65, 0x72, 0x20, 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x0a, + 0x2e, 0x52, 0x49, 0x20, 0x20, 0x3c, 0x20, 0x6c, 0x65, 0x6e, 0x20, 0x3e, + 0x0a, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x2e, 0x0a, 0x2e, 0x54, 0x50, + 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x70, 0x20, 0x22, 0x20, 0x7c, + 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x70, 0x73, 0x20, 0x22, 0x20, 0x7c, 0x20, + 0x22, 0x20, 0x5c, 0x2d, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x70, + 0x6c, 0x61, 0x69, 0x6e, 0x0a, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, + 0x69, 0x6e, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, + 0x20, 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x73, 0x74, 0x79, + 0x6c, 0x65, 0x2e, 0x20, 0x41, 0x6c, 0x73, 0x6f, 0x20, 0x6b, 0x6e, 0x6f, + 0x77, 0x6e, 0x20, 0x61, 0x73, 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, + 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x0a, 0x73, 0x74, 0x79, 0x6c, + 0x65, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, + 0x2d, 0x72, 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x72, + 0x65, 0x76, 0x65, 0x72, 0x74, 0x0a, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, + 0x65, 0x20, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x3a, + 0x20, 0x63, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x20, 0x28, 0x6f, 0x72, + 0x20, 0x70, 0x61, 0x74, 0x63, 0x68, 0x29, 0x20, 0x68, 0x65, 0x78, 0x64, + 0x75, 0x6d, 0x70, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x62, 0x69, 0x6e, + 0x61, 0x72, 0x79, 0x2e, 0x0a, 0x49, 0x66, 0x20, 0x6e, 0x6f, 0x74, 0x20, + 0x77, 0x72, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x73, + 0x74, 0x64, 0x6f, 0x75, 0x74, 0x2c, 0x20, 0x78, 0x78, 0x64, 0x20, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x69, + 0x74, 0x73, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x74, + 0x72, 0x75, 0x6e, 0x63, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x0a, 0x69, 0x74, + 0x2e, 0x20, 0x55, 0x73, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, + 0x6d, 0x62, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x2e, 0x49, + 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x2d, 0x70, 0x0a, 0x74, 0x6f, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, 0x68, + 0x65, 0x78, 0x61, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x20, 0x64, + 0x75, 0x6d, 0x70, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, + 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x61, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, + 0x20, 0x61, 0x0a, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x75, 0x6c, 0x61, + 0x72, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x20, 0x6c, 0x61, 0x79, + 0x6f, 0x75, 0x74, 0x2e, 0x20, 0x41, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, + 0x6e, 0x61, 0x6c, 0x20, 0x57, 0x68, 0x69, 0x74, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x2d, + 0x62, 0x72, 0x65, 0x61, 0x6b, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, + 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x0a, 0x61, 0x6e, 0x79, 0x77, 0x68, + 0x65, 0x72, 0x65, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x20, + 0x5c, 0x2d, 0x73, 0x65, 0x65, 0x6b, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, + 0x74, 0x0a, 0x57, 0x68, 0x65, 0x6e, 0x20, 0x75, 0x73, 0x65, 0x64, 0x20, + 0x61, 0x66, 0x74, 0x65, 0x72, 0x0a, 0x2e, 0x49, 0x20, 0x5c, 0x2d, 0x72, + 0x0a, 0x3a, 0x20, 0x72, 0x65, 0x76, 0x65, 0x72, 0x74, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x0a, 0x2e, 0x52, 0x49, 0x20, 0x3c, 0x20, 0x6f, 0x66, 0x66, + 0x73, 0x65, 0x74, 0x20, 0x3e, 0x0a, 0x61, 0x64, 0x64, 0x65, 0x64, 0x20, + 0x74, 0x6f, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, + 0x69, 0x6e, 0x20, 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x2e, 0x0a, + 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x5b, + 0x5c, 0x2b, 0x5d, 0x5b, 0x5c, 0x2d, 0x5d, 0x73, 0x65, 0x65, 0x6b, 0x0a, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x61, 0x74, 0x0a, 0x2e, 0x52, 0x49, + 0x20, 0x3c, 0x20, 0x73, 0x65, 0x65, 0x6b, 0x20, 0x3e, 0x0a, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x20, 0x61, 0x62, 0x73, 0x2e, 0x20, 0x28, 0x6f, 0x72, + 0x20, 0x72, 0x65, 0x6c, 0x2e, 0x29, 0x20, 0x69, 0x6e, 0x66, 0x69, 0x6c, + 0x65, 0x20, 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x2e, 0x0a, 0x5c, 0x66, + 0x49, 0x5c, 0x2b, 0x20, 0x5c, 0x66, 0x52, 0x69, 0x6e, 0x64, 0x69, 0x63, + 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x73, 0x65, 0x65, 0x6b, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, + 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x73, 0x74, + 0x64, 0x69, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x28, 0x6d, 0x65, 0x61, 0x6e, 0x69, + 0x6e, 0x67, 0x6c, 0x65, 0x73, 0x73, 0x20, 0x77, 0x68, 0x65, 0x6e, 0x20, + 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x29, 0x2e, + 0x20, 0x20, 0x5c, 0x66, 0x49, 0x5c, 0x2d, 0x20, 0x5c, 0x66, 0x52, 0x69, + 0x6e, 0x64, 0x69, 0x63, 0x61, 0x74, 0x65, 0x73, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x65, 0x6b, 0x0a, 0x73, + 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x62, 0x65, 0x20, 0x74, 0x68, 0x61, + 0x74, 0x20, 0x6d, 0x61, 0x6e, 0x79, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, + 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x28, 0x6f, 0x72, 0x20, + 0x69, 0x66, 0x20, 0x63, 0x6f, 0x6d, 0x62, 0x69, 0x6e, 0x65, 0x64, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x0a, 0x5c, 0x66, 0x49, 0x20, 0x5c, 0x2b, 0x20, + 0x5c, 0x66, 0x52, 0x3a, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, 0x65, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, + 0x73, 0x74, 0x64, 0x69, 0x6e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x29, 0x2e, 0x0a, 0x57, 0x69, + 0x74, 0x68, 0x6f, 0x75, 0x74, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x78, 0x78, 0x64, 0x20, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x73, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x2e, + 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x20, 0x5c, 0x2d, 0x75, 0x0a, 0x75, 0x73, + 0x65, 0x20, 0x75, 0x70, 0x70, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, + 0x20, 0x68, 0x65, 0x78, 0x20, 0x6c, 0x65, 0x74, 0x74, 0x65, 0x72, 0x73, + 0x2e, 0x20, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x20, 0x69, 0x73, + 0x20, 0x6c, 0x6f, 0x77, 0x65, 0x72, 0x20, 0x63, 0x61, 0x73, 0x65, 0x2e, + 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x2e, 0x49, 0x52, 0x20, 0x5c, 0x2d, 0x76, + 0x20, 0x22, 0x20, 0x7c, 0x20, 0x22, 0x20, 0x5c, 0x2d, 0x76, 0x65, 0x72, + 0x73, 0x69, 0x6f, 0x6e, 0x0a, 0x73, 0x68, 0x6f, 0x77, 0x20, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x2e, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x43, 0x41, 0x56, 0x45, 0x41, 0x54, + 0x53, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x49, 0x20, 0x78, 0x78, 0x64, + 0x20, 0x5c, 0x2d, 0x72, 0x0a, 0x68, 0x61, 0x73, 0x20, 0x73, 0x6f, 0x6d, + 0x65, 0x20, 0x62, 0x75, 0x69, 0x6c, 0x74, 0x69, 0x6e, 0x20, 0x6d, 0x61, + 0x67, 0x69, 0x63, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, 0x65, 0x76, + 0x61, 0x6c, 0x75, 0x61, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x6c, 0x69, 0x6e, + 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, 0x69, 0x6e, 0x66, + 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x0a, 0x49, 0x66, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x6f, 0x75, 0x70, 0x75, 0x74, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x20, 0x69, 0x73, 0x20, 0x73, 0x65, 0x65, 0x6b, 0x61, + 0x62, 0x6c, 0x65, 0x2c, 0x20, 0x74, 0x68, 0x65, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, + 0x73, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x65, 0x61, 0x63, 0x68, 0x0a, 0x68, + 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, + 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x6f, 0x75, 0x74, 0x20, 0x6f, + 0x66, 0x20, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x2c, 0x20, 0x6c, 0x69, 0x6e, + 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x6d, 0x69, + 0x73, 0x73, 0x69, 0x6e, 0x67, 0x2c, 0x20, 0x6f, 0x72, 0x20, 0x6f, 0x76, + 0x65, 0x72, 0x6c, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x20, 0x49, + 0x6e, 0x0a, 0x74, 0x68, 0x65, 0x73, 0x65, 0x20, 0x63, 0x61, 0x73, 0x65, + 0x73, 0x20, 0x78, 0x78, 0x64, 0x20, 0x77, 0x69, 0x6c, 0x6c, 0x20, 0x6c, + 0x73, 0x65, 0x65, 0x6b, 0x28, 0x32, 0x29, 0x20, 0x74, 0x6f, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6e, 0x65, 0x78, 0x74, 0x20, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x20, 0x49, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x0a, 0x73, 0x65, 0x65, 0x6b, + 0x61, 0x62, 0x6c, 0x65, 0x2c, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x20, 0x67, + 0x61, 0x70, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x2c, 0x20, 0x77, 0x68, 0x69, 0x63, 0x68, 0x20, 0x77, + 0x69, 0x6c, 0x6c, 0x20, 0x62, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x6c, 0x65, + 0x64, 0x20, 0x62, 0x79, 0x20, 0x6e, 0x75, 0x6c, 0x6c, 0x2d, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x49, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x0a, 0x6e, 0x65, 0x76, 0x65, + 0x72, 0x20, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x61, 0x74, 0x65, 0x73, 0x20, + 0x70, 0x61, 0x72, 0x73, 0x65, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, + 0x2e, 0x20, 0x47, 0x61, 0x72, 0x62, 0x61, 0x67, 0x65, 0x20, 0x69, 0x73, + 0x20, 0x73, 0x69, 0x6c, 0x65, 0x6e, 0x74, 0x6c, 0x79, 0x20, 0x73, 0x6b, + 0x69, 0x70, 0x70, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x57, + 0x68, 0x65, 0x6e, 0x20, 0x65, 0x64, 0x69, 0x74, 0x69, 0x6e, 0x67, 0x20, + 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x73, 0x2c, 0x20, 0x70, 0x6c, + 0x65, 0x61, 0x73, 0x65, 0x20, 0x6e, 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, + 0x61, 0x74, 0x0a, 0x2e, 0x49, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, + 0x72, 0x0a, 0x73, 0x6b, 0x69, 0x70, 0x73, 0x20, 0x65, 0x76, 0x65, 0x72, + 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x6c, 0x69, 0x6e, 0x65, + 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, + 0x6e, 0x67, 0x20, 0x65, 0x6e, 0x6f, 0x75, 0x67, 0x68, 0x20, 0x63, 0x6f, + 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x68, 0x65, 0x78, + 0x61, 0x64, 0x65, 0x63, 0x69, 0x6d, 0x61, 0x6c, 0x0a, 0x64, 0x61, 0x74, + 0x61, 0x20, 0x28, 0x73, 0x65, 0x65, 0x20, 0x6f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x20, 0x5c, 0x2d, 0x63, 0x29, 0x2e, 0x20, 0x54, 0x68, 0x69, 0x73, + 0x20, 0x61, 0x6c, 0x73, 0x6f, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x2c, + 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x73, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x70, 0x72, 0x69, + 0x6e, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x61, 0x73, 0x63, 0x69, 0x69, + 0x20, 0x28, 0x6f, 0x72, 0x0a, 0x65, 0x62, 0x63, 0x64, 0x69, 0x63, 0x29, + 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x20, 0x61, 0x72, 0x65, + 0x20, 0x61, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x20, 0x69, 0x67, 0x6e, 0x6f, + 0x72, 0x65, 0x64, 0x2e, 0x20, 0x52, 0x65, 0x76, 0x65, 0x72, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x61, 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x20, 0x28, + 0x6f, 0x72, 0x20, 0x70, 0x6f, 0x73, 0x74, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x29, 0x20, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x0a, 0x68, 0x65, 0x78, + 0x64, 0x75, 0x6d, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x78, 0x78, + 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x2d, 0x70, 0x20, 0x64, 0x6f, + 0x65, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x64, 0x65, 0x70, 0x65, 0x6e, + 0x64, 0x20, 0x6f, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x72, + 0x72, 0x65, 0x63, 0x74, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x20, + 0x6f, 0x66, 0x20, 0x63, 0x6f, 0x6c, 0x75, 0x6d, 0x6e, 0x73, 0x2e, 0x20, + 0x48, 0x65, 0x72, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x74, 0x68, 0x69, 0x6e, + 0x67, 0x20, 0x74, 0x68, 0x61, 0x74, 0x20, 0x6c, 0x6f, 0x6f, 0x6b, 0x73, + 0x20, 0x6c, 0x69, 0x6b, 0x65, 0x20, 0x61, 0x20, 0x70, 0x61, 0x69, 0x72, + 0x20, 0x6f, 0x66, 0x20, 0x68, 0x65, 0x78, 0x2d, 0x64, 0x69, 0x67, 0x69, + 0x74, 0x73, 0x20, 0x69, 0x73, 0x20, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x70, + 0x72, 0x65, 0x74, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x4e, + 0x6f, 0x74, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x64, 0x69, 0x66, 0x66, + 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, + 0x65, 0x6e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x69, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x61, 0x6e, 0x64, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, + 0x20, 0x5c, 0x2d, 0x69, 0x20, 0x5c, 0x3c, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x49, 0x20, 0x78, + 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x5c, 0x2b, 0x73, 0x65, 0x65, + 0x6b, 0x0a, 0x6d, 0x61, 0x79, 0x20, 0x62, 0x65, 0x20, 0x64, 0x69, 0x66, + 0x66, 0x65, 0x72, 0x65, 0x6e, 0x74, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x0a, + 0x2e, 0x49, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x73, + 0x65, 0x65, 0x6b, 0x0a, 0x2c, 0x20, 0x61, 0x73, 0x20, 0x6c, 0x73, 0x65, + 0x65, 0x6b, 0x28, 0x32, 0x29, 0x20, 0x69, 0x73, 0x20, 0x75, 0x73, 0x65, + 0x64, 0x20, 0x74, 0x6f, 0x20, 0x22, 0x72, 0x65, 0x77, 0x69, 0x6e, 0x64, + 0x22, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x20, 0x20, 0x41, 0x20, + 0x27, 0x2b, 0x27, 0x0a, 0x6d, 0x61, 0x6b, 0x65, 0x73, 0x20, 0x61, 0x20, + 0x64, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x69, + 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x20, 0x69, 0x73, 0x20, 0x73, 0x74, + 0x64, 0x69, 0x6e, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x69, 0x66, 0x20, + 0x73, 0x74, 0x64, 0x69, 0x6e, 0x27, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x0a, 0x69, 0x73, + 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x74, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x62, 0x79, 0x20, 0x74, 0x68, 0x65, + 0x20, 0x74, 0x69, 0x6d, 0x65, 0x20, 0x78, 0x78, 0x64, 0x20, 0x69, 0x73, + 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x20, 0x61, 0x6e, 0x64, + 0x20, 0x67, 0x69, 0x76, 0x65, 0x6e, 0x20, 0x69, 0x74, 0x73, 0x20, 0x69, + 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x66, 0x6f, + 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x65, 0x78, 0x61, 0x6d, + 0x70, 0x6c, 0x65, 0x73, 0x20, 0x6d, 0x61, 0x79, 0x20, 0x68, 0x65, 0x6c, + 0x70, 0x20, 0x74, 0x6f, 0x20, 0x63, 0x6c, 0x61, 0x72, 0x69, 0x66, 0x79, + 0x20, 0x28, 0x6f, 0x72, 0x20, 0x66, 0x75, 0x72, 0x74, 0x68, 0x65, 0x72, + 0x20, 0x63, 0x6f, 0x6e, 0x66, 0x75, 0x73, 0x65, 0x21, 0x29, 0x2e, 0x2e, + 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x52, 0x65, 0x77, 0x69, 0x6e, 0x64, + 0x20, 0x73, 0x74, 0x64, 0x69, 0x6e, 0x20, 0x62, 0x65, 0x66, 0x6f, 0x72, + 0x65, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x3b, 0x20, 0x6e, + 0x65, 0x65, 0x64, 0x65, 0x64, 0x20, 0x62, 0x65, 0x63, 0x61, 0x75, 0x73, + 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x63, 0x61, 0x74, 0x27, 0x20, + 0x68, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61, 0x64, 0x79, 0x20, + 0x72, 0x65, 0x61, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x0a, + 0x65, 0x6e, 0x64, 0x20, 0x6f, 0x66, 0x20, 0x73, 0x74, 0x64, 0x69, 0x6e, + 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x73, + 0x68, 0x20, 0x5c, 0x2d, 0x63, 0x20, 0x27, 0x63, 0x61, 0x74, 0x20, 0x3e, + 0x20, 0x70, 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x3b, + 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x30, 0x20, 0x3e, + 0x20, 0x68, 0x65, 0x78, 0x5f, 0x63, 0x6f, 0x70, 0x79, 0x27, 0x20, 0x3c, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x48, 0x65, + 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, + 0x20, 0x30, 0x78, 0x34, 0x38, 0x30, 0x20, 0x28, 0x3d, 0x31, 0x30, 0x32, + 0x34, 0x2b, 0x31, 0x32, 0x38, 0x29, 0x20, 0x6f, 0x6e, 0x77, 0x61, 0x72, + 0x64, 0x73, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x60, 0x2b, 0x27, 0x20, + 0x73, 0x69, 0x67, 0x6e, 0x20, 0x6d, 0x65, 0x61, 0x6e, 0x73, 0x20, 0x22, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x76, 0x65, 0x20, 0x74, 0x6f, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x20, + 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2c, 0x20, 0x74, + 0x68, 0x75, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x60, 0x31, 0x32, 0x38, + 0x27, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x74, 0x6f, 0x0a, 0x74, 0x68, + 0x65, 0x20, 0x31, 0x6b, 0x20, 0x77, 0x68, 0x65, 0x72, 0x65, 0x20, 0x64, + 0x64, 0x20, 0x6c, 0x65, 0x66, 0x74, 0x20, 0x6f, 0x66, 0x66, 0x2e, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x73, 0x68, 0x20, + 0x5c, 0x2d, 0x63, 0x20, 0x27, 0x64, 0x64, 0x20, 0x6f, 0x66, 0x3d, 0x70, + 0x6c, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, + 0x20, 0x62, 0x73, 0x3d, 0x31, 0x6b, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x3d, 0x31, 0x3b, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, + 0x2b, 0x31, 0x32, 0x38, 0x20, 0x3e, 0x20, 0x68, 0x65, 0x78, 0x5f, 0x73, + 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x27, 0x20, 0x3c, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x48, 0x65, 0x78, 0x64, 0x75, + 0x6d, 0x70, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x66, 0x69, 0x6c, 0x65, + 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x30, 0x78, + 0x31, 0x30, 0x30, 0x20, 0x28, 0x20, 0x3d, 0x20, 0x31, 0x30, 0x32, 0x34, + 0x2d, 0x37, 0x36, 0x38, 0x29, 0x20, 0x6f, 0x6e, 0x2e, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x73, 0x68, 0x20, 0x5c, 0x2d, + 0x63, 0x20, 0x27, 0x64, 0x64, 0x20, 0x6f, 0x66, 0x3d, 0x70, 0x6c, 0x61, + 0x69, 0x6e, 0x5f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x20, 0x62, + 0x73, 0x3d, 0x31, 0x6b, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x3d, 0x31, + 0x3b, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x2b, 0x2d, + 0x37, 0x36, 0x38, 0x20, 0x3e, 0x20, 0x68, 0x65, 0x78, 0x5f, 0x73, 0x6e, + 0x69, 0x70, 0x70, 0x65, 0x74, 0x27, 0x20, 0x3c, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x48, 0x6f, 0x77, 0x65, 0x76, 0x65, + 0x72, 0x2c, 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x69, 0x73, 0x20, 0x61, + 0x20, 0x72, 0x61, 0x72, 0x65, 0x20, 0x73, 0x69, 0x74, 0x75, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, + 0x75, 0x73, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x60, 0x2b, 0x27, 0x20, 0x69, + 0x73, 0x20, 0x72, 0x61, 0x72, 0x65, 0x6c, 0x79, 0x20, 0x6e, 0x65, 0x65, + 0x64, 0x65, 0x64, 0x2e, 0x0a, 0x74, 0x68, 0x65, 0x20, 0x61, 0x75, 0x74, + 0x68, 0x6f, 0x72, 0x20, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x73, 0x20, + 0x74, 0x6f, 0x20, 0x6d, 0x6f, 0x6e, 0x69, 0x74, 0x6f, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x78, 0x78, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x73, 0x74, + 0x72, 0x61, 0x63, 0x65, 0x28, 0x31, 0x29, 0x20, 0x6f, 0x72, 0x20, 0x74, + 0x72, 0x75, 0x73, 0x73, 0x28, 0x31, 0x29, 0x2c, 0x20, 0x77, 0x68, 0x65, + 0x6e, 0x65, 0x76, 0x65, 0x72, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x69, 0x73, + 0x20, 0x75, 0x73, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x45, + 0x58, 0x41, 0x4d, 0x50, 0x4c, 0x45, 0x53, 0x0a, 0x2e, 0x50, 0x50, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x65, 0x76, + 0x65, 0x72, 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x75, 0x74, + 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x74, + 0x68, 0x72, 0x65, 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x28, + 0x68, 0x65, 0x78, 0x20, 0x30, 0x78, 0x33, 0x30, 0x20, 0x62, 0x79, 0x74, + 0x65, 0x73, 0x29, 0x20, 0x6f, 0x66, 0x0a, 0x2e, 0x42, 0x20, 0x66, 0x69, + 0x6c, 0x65, 0x0a, 0x5c, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, + 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x30, + 0x78, 0x33, 0x30, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x2e, 0x50, 0x50, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x33, + 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x20, 0x28, 0x68, 0x65, 0x78, 0x20, + 0x30, 0x78, 0x33, 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x29, 0x20, + 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x65, 0x6e, 0x64, + 0x20, 0x6f, 0x66, 0x0a, 0x2e, 0x42, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, + 0x5c, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x5c, 0x2d, 0x30, 0x78, + 0x33, 0x30, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x2e, 0x50, 0x50, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x20, 0x31, 0x32, + 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x73, 0x20, 0x63, + 0x6f, 0x6e, 0x74, 0x69, 0x6e, 0x75, 0x6f, 0x75, 0x73, 0x20, 0x68, 0x65, + 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x34, + 0x30, 0x20, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x73, 0x20, 0x70, 0x65, 0x72, + 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, + 0x66, 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x6c, 0x20, + 0x31, 0x32, 0x30, 0x20, 0x5c, 0x2d, 0x70, 0x73, 0x20, 0x5c, 0x2d, 0x63, + 0x20, 0x32, 0x30, 0x20, 0x78, 0x78, 0x64, 0x2e, 0x31, 0x5c, 0x66, 0x52, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x32, 0x65, 0x35, 0x34, 0x34, 0x38, 0x32, + 0x30, 0x35, 0x38, 0x35, 0x38, 0x34, 0x34, 0x32, 0x30, 0x33, 0x31, 0x32, + 0x30, 0x32, 0x32, 0x34, 0x64, 0x36, 0x31, 0x36, 0x65, 0x37, 0x35, 0x36, + 0x31, 0x36, 0x63, 0x32, 0x30, 0x37, 0x30, 0x36, 0x31, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x36, 0x37, 0x36, 0x35, 0x32, 0x30, 0x36, 0x36, 0x36, 0x66, + 0x37, 0x32, 0x32, 0x30, 0x37, 0x38, 0x37, 0x38, 0x36, 0x34, 0x32, 0x32, + 0x30, 0x61, 0x32, 0x65, 0x35, 0x63, 0x32, 0x32, 0x30, 0x61, 0x32, 0x65, + 0x35, 0x63, 0x32, 0x32, 0x32, 0x30, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x33, + 0x32, 0x33, 0x31, 0x37, 0x33, 0x37, 0x34, 0x32, 0x30, 0x34, 0x64, 0x36, + 0x31, 0x37, 0x39, 0x32, 0x30, 0x33, 0x31, 0x33, 0x39, 0x33, 0x39, 0x33, + 0x36, 0x30, 0x61, 0x32, 0x65, 0x35, 0x63, 0x32, 0x32, 0x32, 0x30, 0x34, + 0x64, 0x36, 0x31, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x36, 0x65, 0x32, 0x30, + 0x37, 0x30, 0x36, 0x31, 0x36, 0x37, 0x36, 0x35, 0x32, 0x30, 0x36, 0x31, + 0x37, 0x35, 0x37, 0x34, 0x36, 0x38, 0x36, 0x66, 0x37, 0x32, 0x33, 0x61, + 0x30, 0x61, 0x32, 0x65, 0x35, 0x63, 0x32, 0x32, 0x32, 0x30, 0x32, 0x30, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x32, 0x30, 0x32, 0x30, 0x35, 0x34, 0x36, + 0x66, 0x36, 0x65, 0x37, 0x39, 0x32, 0x30, 0x34, 0x65, 0x37, 0x35, 0x36, + 0x37, 0x36, 0x35, 0x36, 0x65, 0x37, 0x34, 0x32, 0x30, 0x33, 0x63, 0x37, + 0x34, 0x36, 0x66, 0x36, 0x65, 0x37, 0x39, 0x34, 0x30, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x37, 0x33, 0x36, 0x33, 0x37, 0x34, 0x36, 0x65, 0x37, 0x35, + 0x36, 0x37, 0x36, 0x35, 0x36, 0x65, 0x32, 0x65, 0x37, 0x30, 0x37, 0x30, + 0x37, 0x30, 0x32, 0x65, 0x36, 0x37, 0x37, 0x35, 0x32, 0x65, 0x36, 0x35, + 0x36, 0x34, 0x37, 0x35, 0x32, 0x65, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x48, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x31, 0x32, + 0x30, 0x20, 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x74, + 0x68, 0x69, 0x73, 0x20, 0x6d, 0x61, 0x6e, 0x20, 0x70, 0x61, 0x67, 0x65, + 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x31, 0x32, 0x20, 0x6f, 0x63, 0x74, + 0x65, 0x74, 0x73, 0x20, 0x70, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x6e, 0x65, + 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x78, + 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x6c, 0x20, 0x31, 0x32, 0x30, 0x20, 0x5c, + 0x2d, 0x63, 0x20, 0x31, 0x32, 0x20, 0x78, 0x78, 0x64, 0x2e, 0x31, 0x5c, + 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x3a, 0x20, 0x32, 0x65, 0x35, 0x34, 0x20, 0x34, 0x38, 0x32, + 0x30, 0x20, 0x35, 0x38, 0x35, 0x38, 0x20, 0x34, 0x34, 0x32, 0x30, 0x20, + 0x33, 0x31, 0x32, 0x30, 0x20, 0x32, 0x32, 0x34, 0x64, 0x20, 0x20, 0x2e, + 0x54, 0x48, 0x20, 0x58, 0x58, 0x44, 0x20, 0x31, 0x20, 0x22, 0x4d, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x63, 0x3a, + 0x20, 0x36, 0x31, 0x36, 0x65, 0x20, 0x37, 0x35, 0x36, 0x31, 0x20, 0x36, + 0x63, 0x32, 0x30, 0x20, 0x37, 0x30, 0x36, 0x31, 0x20, 0x36, 0x37, 0x36, + 0x35, 0x20, 0x32, 0x30, 0x36, 0x36, 0x20, 0x20, 0x61, 0x6e, 0x75, 0x61, + 0x6c, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x66, 0x0a, 0x2e, 0x62, 0x72, + 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x31, 0x38, 0x3a, 0x20, 0x36, 0x66, + 0x37, 0x32, 0x20, 0x32, 0x30, 0x37, 0x38, 0x20, 0x37, 0x38, 0x36, 0x34, + 0x20, 0x32, 0x32, 0x30, 0x61, 0x20, 0x32, 0x65, 0x35, 0x63, 0x20, 0x32, + 0x32, 0x30, 0x61, 0x20, 0x20, 0x6f, 0x72, 0x20, 0x78, 0x78, 0x64, 0x22, + 0x2e, 0x2e, 0x5c, 0x5c, 0x22, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x32, 0x34, 0x3a, 0x20, 0x32, 0x65, 0x35, 0x63, + 0x20, 0x32, 0x32, 0x32, 0x30, 0x20, 0x33, 0x32, 0x33, 0x31, 0x20, 0x37, + 0x33, 0x37, 0x34, 0x20, 0x32, 0x30, 0x34, 0x64, 0x20, 0x36, 0x31, 0x37, + 0x39, 0x20, 0x20, 0x2e, 0x5c, 0x5c, 0x22, 0x20, 0x32, 0x31, 0x73, 0x74, + 0x20, 0x4d, 0x61, 0x79, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x33, 0x30, 0x3a, 0x20, 0x32, 0x30, 0x33, 0x31, 0x20, 0x33, + 0x39, 0x33, 0x39, 0x20, 0x33, 0x36, 0x30, 0x61, 0x20, 0x32, 0x65, 0x35, + 0x63, 0x20, 0x32, 0x32, 0x32, 0x30, 0x20, 0x34, 0x64, 0x36, 0x31, 0x20, + 0x20, 0x20, 0x31, 0x39, 0x39, 0x36, 0x2e, 0x2e, 0x5c, 0x5c, 0x22, 0x20, + 0x4d, 0x61, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x33, 0x63, 0x3a, 0x20, 0x36, 0x65, 0x32, 0x30, 0x20, 0x37, 0x30, 0x36, + 0x31, 0x20, 0x36, 0x37, 0x36, 0x35, 0x20, 0x32, 0x30, 0x36, 0x31, 0x20, + 0x37, 0x35, 0x37, 0x34, 0x20, 0x36, 0x38, 0x36, 0x66, 0x20, 0x20, 0x6e, + 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x34, 0x38, 0x3a, + 0x20, 0x37, 0x32, 0x33, 0x61, 0x20, 0x30, 0x61, 0x32, 0x65, 0x20, 0x35, + 0x63, 0x32, 0x32, 0x20, 0x32, 0x30, 0x32, 0x30, 0x20, 0x32, 0x30, 0x32, + 0x30, 0x20, 0x35, 0x34, 0x36, 0x66, 0x20, 0x20, 0x72, 0x3a, 0x2e, 0x2e, + 0x5c, 0x5c, 0x22, 0x20, 0x20, 0x20, 0x20, 0x54, 0x6f, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x35, 0x34, 0x3a, 0x20, 0x36, + 0x65, 0x37, 0x39, 0x20, 0x32, 0x30, 0x34, 0x65, 0x20, 0x37, 0x35, 0x36, + 0x37, 0x20, 0x36, 0x35, 0x36, 0x65, 0x20, 0x37, 0x34, 0x32, 0x30, 0x20, + 0x33, 0x63, 0x37, 0x34, 0x20, 0x20, 0x6e, 0x79, 0x20, 0x4e, 0x75, 0x67, + 0x65, 0x6e, 0x74, 0x20, 0x3c, 0x74, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, + 0x30, 0x30, 0x30, 0x30, 0x36, 0x30, 0x3a, 0x20, 0x36, 0x66, 0x36, 0x65, + 0x20, 0x37, 0x39, 0x34, 0x30, 0x20, 0x37, 0x33, 0x36, 0x33, 0x20, 0x37, + 0x34, 0x36, 0x65, 0x20, 0x37, 0x35, 0x36, 0x37, 0x20, 0x36, 0x35, 0x36, + 0x65, 0x20, 0x20, 0x6f, 0x6e, 0x79, 0x40, 0x73, 0x63, 0x74, 0x6e, 0x75, + 0x67, 0x65, 0x6e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x36, 0x63, 0x3a, 0x20, 0x32, 0x65, 0x37, 0x30, 0x20, 0x37, 0x30, + 0x37, 0x30, 0x20, 0x32, 0x65, 0x36, 0x37, 0x20, 0x37, 0x35, 0x32, 0x65, + 0x20, 0x36, 0x35, 0x36, 0x34, 0x20, 0x37, 0x35, 0x32, 0x65, 0x20, 0x20, + 0x2e, 0x70, 0x70, 0x70, 0x2e, 0x67, 0x75, 0x2e, 0x65, 0x64, 0x75, 0x2e, + 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x44, 0x69, 0x73, + 0x70, 0x6c, 0x61, 0x79, 0x20, 0x6a, 0x75, 0x73, 0x74, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x78, 0x78, 0x64, + 0x2e, 0x31, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x30, 0x78, 0x32, 0x38, + 0x20, 0x5c, 0x2d, 0x6c, 0x20, 0x31, 0x32, 0x20, 0x5c, 0x2d, 0x63, 0x20, + 0x31, 0x32, 0x20, 0x78, 0x78, 0x64, 0x2e, 0x31, 0x5c, 0x66, 0x52, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 0x38, 0x3a, + 0x20, 0x33, 0x32, 0x33, 0x31, 0x20, 0x37, 0x33, 0x37, 0x34, 0x20, 0x32, + 0x30, 0x34, 0x64, 0x20, 0x36, 0x31, 0x37, 0x39, 0x20, 0x32, 0x30, 0x33, + 0x31, 0x20, 0x33, 0x39, 0x33, 0x39, 0x20, 0x20, 0x32, 0x31, 0x73, 0x74, + 0x20, 0x4d, 0x61, 0x79, 0x20, 0x31, 0x39, 0x39, 0x0a, 0x2e, 0x50, 0x50, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x43, 0x6f, 0x70, 0x79, 0x0a, 0x2e, 0x42, + 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x0a, + 0x74, 0x6f, 0x0a, 0x2e, 0x42, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x0a, 0x61, 0x6e, 0x64, 0x20, 0x70, 0x72, + 0x65, 0x70, 0x65, 0x6e, 0x64, 0x20, 0x31, 0x30, 0x30, 0x20, 0x62, 0x79, + 0x74, 0x65, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x20, 0x30, 0x78, 0x30, 0x30, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, + 0x66, 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, 0x20, 0x69, 0x6e, 0x70, 0x75, + 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x7c, 0x20, 0x78, 0x78, 0x64, + 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x2d, 0x73, 0x20, 0x31, 0x30, 0x30, + 0x20, 0x5c, 0x3e, 0x20, 0x6f, 0x75, 0x74, 0x70, 0x75, 0x74, 0x5f, 0x66, + 0x69, 0x6c, 0x65, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x50, 0x61, 0x74, 0x63, 0x68, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x64, 0x61, 0x74, 0x65, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x68, + 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x78, 0x78, 0x64, 0x2e, 0x31, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x65, 0x63, + 0x68, 0x6f, 0x20, 0x27, 0x30, 0x30, 0x30, 0x30, 0x30, 0x32, 0x39, 0x3a, + 0x20, 0x33, 0x35, 0x37, 0x34, 0x20, 0x36, 0x38, 0x27, 0x20, 0x7c, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x2d, 0x20, 0x78, + 0x78, 0x64, 0x2e, 0x31, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, 0x0a, + 0x5c, 0x66, 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x73, + 0x20, 0x30, 0x78, 0x32, 0x38, 0x20, 0x5c, 0x2d, 0x6c, 0x20, 0x31, 0x32, + 0x20, 0x5c, 0x2d, 0x63, 0x20, 0x31, 0x32, 0x20, 0x78, 0x78, 0x64, 0x2e, + 0x31, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x32, 0x38, 0x3a, 0x20, 0x33, 0x32, 0x33, 0x35, 0x20, 0x37, + 0x34, 0x36, 0x38, 0x20, 0x32, 0x30, 0x34, 0x64, 0x20, 0x36, 0x31, 0x37, + 0x39, 0x20, 0x32, 0x30, 0x33, 0x31, 0x20, 0x33, 0x39, 0x33, 0x39, 0x20, + 0x20, 0x32, 0x35, 0x74, 0x68, 0x20, 0x4d, 0x61, 0x79, 0x20, 0x31, 0x39, + 0x39, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x36, 0x35, 0x35, 0x33, 0x37, + 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x62, 0x79, 0x74, 0x65, + 0x73, 0x20, 0x30, 0x78, 0x30, 0x30, 0x2c, 0x0a, 0x65, 0x78, 0x63, 0x65, + 0x70, 0x74, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, + 0x61, 0x73, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x77, 0x68, 0x69, 0x63, + 0x68, 0x20, 0x69, 0x73, 0x20, 0x27, 0x41, 0x27, 0x20, 0x28, 0x68, 0x65, + 0x78, 0x20, 0x30, 0x78, 0x34, 0x31, 0x29, 0x2e, 0x0a, 0x2e, 0x62, 0x72, + 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x27, + 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x20, 0x34, 0x31, 0x27, 0x20, + 0x7c, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x3e, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x50, 0x50, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x48, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, + 0x20, 0x74, 0x68, 0x69, 0x73, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x77, + 0x69, 0x74, 0x68, 0x20, 0x61, 0x75, 0x74, 0x6f, 0x73, 0x6b, 0x69, 0x70, + 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x78, + 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x61, 0x20, 0x5c, 0x2d, 0x63, 0x20, 0x31, + 0x32, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x20, 0x30, + 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, 0x30, + 0x30, 0x20, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, 0x30, 0x30, 0x20, + 0x30, 0x30, 0x30, 0x30, 0x20, 0x20, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, + 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x2a, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x30, 0x30, 0x30, 0x66, 0x66, 0x66, 0x63, + 0x3a, 0x20, 0x30, 0x30, 0x30, 0x30, 0x20, 0x30, 0x30, 0x30, 0x30, 0x20, + 0x34, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2e, 0x2e, 0x2e, + 0x2e, 0x41, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x20, 0x61, 0x20, 0x31, 0x20, 0x62, 0x79, 0x74, 0x65, 0x20, 0x66, + 0x69, 0x6c, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x69, + 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, + 0x27, 0x41, 0x27, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, + 0x72, 0x2e, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x6e, 0x75, 0x6d, 0x62, 0x65, + 0x72, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x27, 0x5c, 0x2d, 0x72, + 0x20, 0x5c, 0x2d, 0x73, 0x27, 0x20, 0x61, 0x64, 0x64, 0x73, 0x20, 0x74, + 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x6e, 0x75, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, + 0x69, 0x6e, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x3b, + 0x0a, 0x69, 0x6e, 0x20, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x2c, 0x20, + 0x74, 0x68, 0x65, 0x20, 0x6c, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, + 0x62, 0x79, 0x74, 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x73, 0x75, + 0x70, 0x70, 0x72, 0x65, 0x73, 0x73, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, + 0x27, 0x30, 0x31, 0x30, 0x30, 0x30, 0x30, 0x3a, 0x20, 0x34, 0x31, 0x27, + 0x20, 0x7c, 0x20, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, + 0x2d, 0x73, 0x20, 0x5c, 0x2d, 0x30, 0x78, 0x31, 0x30, 0x30, 0x30, 0x30, + 0x20, 0x5c, 0x3e, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x66, 0x52, 0x0a, + 0x2e, 0x50, 0x50, 0x0a, 0x55, 0x73, 0x65, 0x20, 0x78, 0x78, 0x64, 0x20, + 0x61, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x64, + 0x69, 0x74, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, + 0x0a, 0x2e, 0x42, 0x20, 0x76, 0x69, 0x6d, 0x28, 0x31, 0x29, 0x0a, 0x74, + 0x6f, 0x20, 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x61, 0x20, + 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x20, 0x6d, 0x61, 0x72, 0x6b, 0x65, + 0x64, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, 0x6e, 0x20, 0x60, 0x61, + 0x27, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x7a, 0x27, 0x2e, 0x0a, 0x2e, + 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x3a, 0x27, 0x61, 0x2c, 0x27, 0x7a, + 0x21, 0x78, 0x78, 0x64, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x50, 0x50, 0x0a, + 0x55, 0x73, 0x65, 0x20, 0x78, 0x78, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, + 0x20, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x69, 0x6e, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, + 0x20, 0x73, 0x75, 0x63, 0x68, 0x20, 0x61, 0x73, 0x0a, 0x2e, 0x42, 0x20, + 0x76, 0x69, 0x6d, 0x28, 0x31, 0x29, 0x0a, 0x74, 0x6f, 0x20, 0x72, 0x65, + 0x63, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x61, 0x20, 0x62, 0x69, 0x6e, 0x61, + 0x72, 0x79, 0x20, 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x20, 0x6d, + 0x61, 0x72, 0x6b, 0x65, 0x64, 0x20, 0x62, 0x65, 0x74, 0x77, 0x65, 0x65, + 0x6e, 0x20, 0x60, 0x61, 0x27, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x60, 0x7a, + 0x27, 0x2e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x3a, 0x27, + 0x61, 0x2c, 0x27, 0x7a, 0x21, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, + 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x55, 0x73, 0x65, 0x20, + 0x78, 0x78, 0x64, 0x20, 0x61, 0x73, 0x20, 0x61, 0x20, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x20, 0x77, 0x69, 0x74, 0x68, 0x69, 0x6e, 0x20, 0x61, + 0x6e, 0x20, 0x65, 0x64, 0x69, 0x74, 0x6f, 0x72, 0x20, 0x73, 0x75, 0x63, + 0x68, 0x20, 0x61, 0x73, 0x0a, 0x2e, 0x42, 0x20, 0x76, 0x69, 0x6d, 0x28, + 0x31, 0x29, 0x0a, 0x74, 0x6f, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x76, 0x65, + 0x72, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x6f, + 0x66, 0x20, 0x61, 0x20, 0x68, 0x65, 0x78, 0x64, 0x75, 0x6d, 0x70, 0x2e, + 0x20, 0x20, 0x4d, 0x6f, 0x76, 0x65, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, + 0x75, 0x72, 0x73, 0x6f, 0x72, 0x20, 0x6f, 0x76, 0x65, 0x72, 0x20, 0x74, + 0x68, 0x65, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x74, 0x79, 0x70, 0x65, 0x3a, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, + 0x49, 0x21, 0x21, 0x78, 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x5c, 0x66, + 0x52, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x52, 0x65, 0x61, 0x64, 0x20, 0x73, + 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x73, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, + 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x20, 0x6c, 0x69, 0x6e, 0x65, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x78, 0x78, 0x64, + 0x20, 0x5c, 0x2d, 0x63, 0x31, 0x20, 0x3c, 0x20, 0x2f, 0x64, 0x65, 0x76, + 0x2f, 0x74, 0x65, 0x72, 0x6d, 0x2f, 0x62, 0x20, 0x26, 0x5c, 0x66, 0x52, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x73, 0x74, + 0x74, 0x79, 0x20, 0x3c, 0x20, 0x2f, 0x64, 0x65, 0x76, 0x2f, 0x74, 0x65, + 0x72, 0x6d, 0x2f, 0x62, 0x20, 0x5c, 0x2d, 0x65, 0x63, 0x68, 0x6f, 0x20, + 0x5c, 0x2d, 0x6f, 0x70, 0x6f, 0x73, 0x74, 0x20, 0x5c, 0x2d, 0x69, 0x73, + 0x69, 0x67, 0x20, 0x5c, 0x2d, 0x69, 0x63, 0x61, 0x6e, 0x6f, 0x6e, 0x20, + 0x6d, 0x69, 0x6e, 0x20, 0x31, 0x5c, 0x66, 0x52, 0x0a, 0x2e, 0x62, 0x72, + 0x0a, 0x5c, 0x66, 0x49, 0x25, 0x20, 0x65, 0x63, 0x68, 0x6f, 0x20, 0x5c, + 0x2d, 0x6e, 0x20, 0x66, 0x6f, 0x6f, 0x20, 0x3e, 0x20, 0x2f, 0x64, 0x65, + 0x76, 0x2f, 0x74, 0x65, 0x72, 0x6d, 0x2f, 0x62, 0x5c, 0x66, 0x52, 0x0a, + 0x2e, 0x50, 0x50, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x22, 0x52, 0x45, 0x54, + 0x55, 0x52, 0x4e, 0x20, 0x56, 0x41, 0x4c, 0x55, 0x45, 0x53, 0x22, 0x0a, + 0x54, 0x68, 0x65, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, + 0x67, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x20, 0x61, 0x72, 0x65, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, + 0x6e, 0x65, 0x64, 0x3a, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x30, 0x0a, 0x6e, + 0x6f, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x73, 0x20, 0x65, 0x6e, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x2e, 0x0a, 0x2e, 0x54, + 0x50, 0x0a, 0x5c, 0x2d, 0x31, 0x0a, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x73, 0x75, 0x70, 0x70, + 0x6f, 0x72, 0x74, 0x65, 0x64, 0x20, 0x28, 0x0a, 0x2e, 0x49, 0x20, 0x78, + 0x78, 0x64, 0x20, 0x5c, 0x2d, 0x72, 0x20, 0x5c, 0x2d, 0x69, 0x0a, 0x73, + 0x74, 0x69, 0x6c, 0x6c, 0x20, 0x69, 0x6d, 0x70, 0x6f, 0x73, 0x73, 0x69, + 0x62, 0x6c, 0x65, 0x29, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x31, 0x0a, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x77, 0x68, 0x69, 0x6c, 0x65, 0x20, + 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x32, 0x0a, 0x70, + 0x72, 0x6f, 0x62, 0x6c, 0x65, 0x6d, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, + 0x0a, 0x2e, 0x54, 0x50, 0x0a, 0x33, 0x0a, 0x70, 0x72, 0x6f, 0x62, 0x6c, + 0x65, 0x6d, 0x73, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x6f, 0x75, 0x74, + 0x70, 0x75, 0x74, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x0a, 0x2e, 0x54, + 0x50, 0x0a, 0x34, 0x2c, 0x35, 0x0a, 0x64, 0x65, 0x73, 0x69, 0x72, 0x65, + 0x64, 0x20, 0x73, 0x65, 0x65, 0x6b, 0x20, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x69, 0x6f, 0x6e, 0x20, 0x69, 0x73, 0x20, 0x75, 0x6e, 0x72, 0x65, 0x61, + 0x63, 0x68, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x0a, 0x2e, 0x53, 0x48, 0x20, + 0x22, 0x53, 0x45, 0x45, 0x20, 0x41, 0x4c, 0x53, 0x4f, 0x22, 0x0a, 0x75, + 0x75, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x31, 0x29, 0x2c, 0x20, + 0x75, 0x75, 0x64, 0x65, 0x63, 0x6f, 0x64, 0x65, 0x28, 0x31, 0x29, 0x2c, + 0x20, 0x70, 0x61, 0x74, 0x63, 0x68, 0x28, 0x31, 0x29, 0x0a, 0x2e, 0x62, + 0x72, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x57, 0x41, 0x52, 0x4e, 0x49, 0x4e, + 0x47, 0x53, 0x0a, 0x54, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x6f, 0x6c, 0x73, + 0x20, 0x77, 0x65, 0x69, 0x72, 0x64, 0x6e, 0x65, 0x73, 0x73, 0x20, 0x6d, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x20, 0x69, 0x74, 0x73, 0x20, 0x63, + 0x72, 0x65, 0x61, 0x74, 0x6f, 0x72, 0x73, 0x20, 0x62, 0x72, 0x61, 0x69, + 0x6e, 0x2e, 0x0a, 0x55, 0x73, 0x65, 0x20, 0x65, 0x6e, 0x74, 0x69, 0x72, + 0x65, 0x6c, 0x79, 0x20, 0x61, 0x74, 0x20, 0x79, 0x6f, 0x75, 0x72, 0x20, + 0x6f, 0x77, 0x6e, 0x20, 0x72, 0x69, 0x73, 0x6b, 0x2e, 0x20, 0x43, 0x6f, + 0x70, 0x79, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x20, 0x54, 0x72, + 0x61, 0x63, 0x65, 0x20, 0x69, 0x74, 0x2e, 0x20, 0x42, 0x65, 0x63, 0x6f, + 0x6d, 0x65, 0x20, 0x61, 0x20, 0x77, 0x69, 0x7a, 0x61, 0x72, 0x64, 0x2e, + 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x2e, 0x53, 0x48, 0x20, 0x56, 0x45, 0x52, + 0x53, 0x49, 0x4f, 0x4e, 0x0a, 0x54, 0x68, 0x69, 0x73, 0x20, 0x6d, 0x61, + 0x6e, 0x75, 0x61, 0x6c, 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x64, 0x6f, + 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x20, 0x78, 0x78, 0x64, 0x20, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, 0x2e, 0x37, 0x0a, + 0x2e, 0x53, 0x48, 0x20, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x0a, 0x2e, + 0x62, 0x72, 0x0a, 0x28, 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x30, 0x2d, + 0x31, 0x39, 0x39, 0x37, 0x20, 0x62, 0x79, 0x20, 0x4a, 0x75, 0x65, 0x72, + 0x67, 0x65, 0x6e, 0x20, 0x57, 0x65, 0x69, 0x67, 0x65, 0x72, 0x74, 0x0a, + 0x2e, 0x62, 0x72, 0x0a, 0x3c, 0x6a, 0x6e, 0x77, 0x65, 0x69, 0x67, 0x65, + 0x72, 0x40, 0x69, 0x6e, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6b, + 0x2e, 0x75, 0x6e, 0x69, 0x2d, 0x65, 0x72, 0x6c, 0x61, 0x6e, 0x67, 0x65, + 0x6e, 0x2e, 0x64, 0x65, 0x3e, 0x0a, 0x2e, 0x4c, 0x50, 0x0a, 0x44, 0x69, + 0x73, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x66, 0x72, 0x65, + 0x65, 0x6c, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x63, 0x72, 0x65, 0x64, + 0x69, 0x74, 0x20, 0x6d, 0x65, 0x2c, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x6d, + 0x61, 0x6b, 0x65, 0x20, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x20, 0x61, 0x6e, + 0x64, 0x20, 0x73, 0x68, 0x61, 0x72, 0x65, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x6d, 0x65, 0x2c, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x6c, 0x6f, 0x73, + 0x65, 0x20, 0x6d, 0x6f, 0x6e, 0x65, 0x79, 0x20, 0x61, 0x6e, 0x64, 0x20, + 0x64, 0x6f, 0x6e, 0x27, 0x74, 0x20, 0x61, 0x73, 0x6b, 0x20, 0x6d, 0x65, + 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a, 0x4d, 0x61, 0x6e, 0x75, 0x61, 0x6c, + 0x20, 0x70, 0x61, 0x67, 0x65, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, + 0x64, 0x20, 0x62, 0x79, 0x20, 0x54, 0x6f, 0x6e, 0x79, 0x20, 0x4e, 0x75, + 0x67, 0x65, 0x6e, 0x74, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x3c, 0x74, 0x6f, + 0x6e, 0x79, 0x40, 0x73, 0x63, 0x74, 0x6e, 0x75, 0x67, 0x65, 0x6e, 0x2e, + 0x70, 0x70, 0x70, 0x2e, 0x67, 0x75, 0x2e, 0x65, 0x64, 0x75, 0x2e, 0x61, + 0x75, 0x3e, 0x20, 0x3c, 0x54, 0x2e, 0x4e, 0x75, 0x67, 0x65, 0x6e, 0x74, + 0x40, 0x73, 0x63, 0x74, 0x2e, 0x67, 0x75, 0x2e, 0x65, 0x64, 0x75, 0x2e, + 0x61, 0x75, 0x3e, 0x0a, 0x2e, 0x62, 0x72, 0x0a, 0x53, 0x6d, 0x61, 0x6c, + 0x6c, 0x20, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x73, 0x20, 0x62, 0x79, + 0x20, 0x42, 0x72, 0x61, 0x6d, 0x20, 0x4d, 0x6f, 0x6f, 0x6c, 0x65, 0x6e, + 0x61, 0x61, 0x72, 0x2e, 0x0a, 0x45, 0x64, 0x69, 0x74, 0x65, 0x64, 0x20, + 0x62, 0x79, 0x20, 0x4a, 0x75, 0x65, 0x72, 0x67, 0x65, 0x6e, 0x20, 0x57, + 0x65, 0x69, 0x67, 0x65, 0x72, 0x74, 0x2e, 0x0a, 0x2e, 0x50, 0x50, 0x0a