diff options
author | Robin Jarry <robin@jarry.cc> | 2023-01-17 14:33:09 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2023-01-26 00:20:45 +0100 |
commit | 3191ee171c435a43912264b131340af66fea8112 (patch) | |
tree | 2a68c5c4a3b9975d102cb379171548e7a8937da5 /filters/vectors/wrap-quotes.expected | |
parent | a8b6693f7e7bdcc8b73c3fa0baa0ef5f51993dc7 (diff) | |
download | aerc-3191ee171c435a43912264b131340af66fea8112.tar.gz |
filters: rewrite wrap in c
This utility introduced in commit c9524d265793 ("filters: add wrap
utility written in go") allows to reflow text to view emails that have
very long lines without breaking quotes, lists and indentation.
For such a simple task, go produces a binary that is 2.0M bytes on disk.
After stripping debugging symbols, it can be reduced to 1.2M bytes. All
of this for 267 lines of source code. This is a bit ridiculous, provided
people may load this binary into memory multiple times per minute. This
tool is a small side-project that seems not suitable for golang.
Rewrite it in C. It now only depends on a POSIX libc to run. It is safe
to assume that there is one available on all *NIX systems in the world
of 2023. The resulting binary is now 27K bytes (15K after stripping).
To build it, a C compiler and libc headers are required. These should
most likely be available since they are dependencies of the go compiler
toolchain.
I have tested compilation (with clang-analyzer and gcc -fanalyzer) and
basic operation on FreeBSD, Fedora (glibc) and Alpine (musl libc). More
tests would probably be required on MacOSX and older Linux distros.
I also added test vectors to give some confidence that this works as
expected.
Update CI with aggressive gcc hardening flags and to run these tests
with valgrind --leak-check=full.
Command line options are unchanged:
usage: wrap [-h] [-w INT] [-r] [-l INT] [-f FILE]
Wrap text without messing up email quotes.
options:
-h show this help message
-w INT preferred wrap margin (default 80)
-r reflow all paragraphs even if no trailing space
-l INT minimum percentage of letters in a line to be considered
a paragaph
-f FILE read from filename (default stdin)
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
Tested-by: Maxwell G <gotmax@e.email>
Diffstat (limited to 'filters/vectors/wrap-quotes.expected')
-rw-r--r-- | filters/vectors/wrap-quotes.expected | 385 |
1 files changed, 385 insertions, 0 deletions
diff --git a/filters/vectors/wrap-quotes.expected b/filters/vectors/wrap-quotes.expected new file mode 100644 index 00000000..d76c7918 --- /dev/null +++ b/filters/vectors/wrap-quotes.expected @@ -0,0 +1,385 @@ +Pellentesque vitae maximus odio. Vestibulum ante ipsum primis in faucibus orci +luctus et ultrices posuere cubilia curae; Vestibulum dui tortor, fermentum +vitae elit nec, vulputate malesuada nisi. + +> > Aliquam blandit non ipsum quis dignissim. Vivamus rhoncus augue magna, a +> > maximus augue ultrices imperdiet. Vivamus nec nisl dolor. +> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi purus arcu, +> facilisis sit amet augue ac, scelerisque interdum enim. Interdum et malesuada +> fames ac ante ipsum primis in faucibus. + +Vestibulum lacinia dolor diam. Phasellus et consequat nisi. In laoreet sodales +velit, vitae porttitor ligula varius et. Donec non nibh mi. + +>>> Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Fusce nec blandit lectus. Morbi id dolor eu arcu tempus fermentum in quis +>> lectus. Nullam tempus orci vitae est dapibus, sit amet consectetur sapien +>> dictum. Aliquam accumsan dolor arcu, in condimentum purus dignissim nec. +> Nullam maximus ligula eget leo porttitor, sed viverra urna aliquam. Donec sed +> enim sodales, aliquam elit vel, feugiat sem. Donec sed fringilla risus, eget +> gravida lectus. Aenean vitae vulputate turpis. + +Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices +porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id +est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis +metus. Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis +sapien, ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam ve +nenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus +lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas non +mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. + +>> - Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +>> Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. +>> Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue +>> vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +>> fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +>> condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam +>> mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer +>> eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +>> ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Eti +am venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. Etiam mi mauris, lacinia iaculis +augue vitae, maximus lobortis metus. Integer eleifend ante a sem feugiat +fringilla. Maecenas non mattis sapien, ultrices porttitor urna. Phasellus +condimentum a elit ac consectetur. Etiam venenatis id est et ornare. Etiam mi +mauris, lacinia iaculis augue vitae, maximus lobortis metus. Integer eleifend +ante a sem feugiat fringilla. Maecenas non mattis sapien, ultrices porttitor +urna. Phasellus condimentum a elit ac consectetur. Etiam venenatis id est et +ornare. Etiam mi mauris, lacinia iaculis augue vitae, maximus lobortis metus. +Integer eleifend ante a sem feugiat fringilla. Maecenas non mattis sapien, +ultrices porttitor urna. Phasellus condimentum a elit ac consectetur. Etiam +venenatis id est et ornare. Etiam mi mauris, lacinia iaculis augue vitae, +maximus lobortis metus. Integer eleifend ante a sem feugiat fringilla. Maecenas +non mattis sapien, ultrices porttitor urna. Phasellus condimentum a elit ac +consectetur. Etiam venenatis id est et ornare. + +>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> tavu |