<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:posterous="http://posterous.com/help/rss/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Przemoc's techblog</title>
    <link>http://blog.przemoc.net</link>
    <description>cross-site thinking</description>
    <generator>posterous.com</generator>
    <link xmlns="http://www.w3.org/2005/Atom" type="application/json" href="http://posterous.com/api/sup_update#60ecf9e2f" rel="http://api.friendfeed.com/2008/03#sup" />
    
    
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PrzemocTechblog" /><feedburner:info uri="przemoctechblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://posterous.superfeedr.com/" /><item>
      <pubDate>Mon, 19 Jul 2010 11:05:00 -0700</pubDate>
      <title>Fibonacci in x86 assembler and the scene</title>
      <link>http://feedproxy.google.com/~r/PrzemocTechblog/~3/U_Yvq7_ARss/fibonacci-in-x86-assembler-and-the-scene</link>
      <guid isPermaLink="false">http://blog.przemoc.net/fibonacci-in-x86-assembler-and-the-scene</guid>
      <description>&lt;p&gt;
	&lt;p&gt;My friend gave me once (long time ago) a programming task. Write as
short as possible function (in terms of binary form) in x86 32-bit
assembler for finding n-th Fibonacci number. No particular calling
convention was required. I&amp;rsquo;ve quite easily found satisfactory 16 bytes
&lt;a href="https://gist.github.com/481446/46a2019637adca2c4178a1cb4d42494a02215aa2"&gt;solution&lt;/a&gt;.
I&amp;rsquo;ve used &lt;code&gt;xadd&lt;/code&gt; instruction for conciseness (as a name suggest, its
result is identical to &lt;code&gt;xchg&lt;/code&gt; + &lt;code&gt;add&lt;/code&gt;), but losing portability (486+
required). He saved one more byte by using &lt;code&gt;cdq&lt;/code&gt; instruction (that
converts signed &lt;code&gt;eax&lt;/code&gt; to signed &lt;code&gt;edx:eax&lt;/code&gt;) for zeroing &lt;code&gt;edx&lt;/code&gt; register
in one byte. Funny thing is that his first version, which was sent for
asmpak inclusion, was exactly like my final one.&lt;/p&gt;

&lt;p&gt;&lt;div class="data type-assembly"&gt;
    
      &lt;table class="lines" cellspacing="0" cellpadding="0"&gt;
        &lt;tr&gt;
          &lt;td&gt;
            &lt;pre class="line_numbers"&gt;&lt;span rel="#L1" id="L1"&gt;1&lt;/span&gt;
&lt;span rel="#L2" id="L2"&gt;2&lt;/span&gt;
&lt;span rel="#L3" id="L3"&gt;3&lt;/span&gt;
&lt;span rel="#L4" id="L4"&gt;4&lt;/span&gt;
&lt;span rel="#L5" id="L5"&gt;5&lt;/span&gt;
&lt;span rel="#L6" id="L6"&gt;6&lt;/span&gt;
&lt;span rel="#L7" id="L7"&gt;7&lt;/span&gt;
&lt;span rel="#L8" id="L8"&gt;8&lt;/span&gt;
&lt;span rel="#L9" id="L9"&gt;9&lt;/span&gt;
&lt;span rel="#L10" id="L10"&gt;10&lt;/span&gt;
&lt;span rel="#L11" id="L11"&gt;11&lt;/span&gt;
&lt;span rel="#L12" id="L12"&gt;12&lt;/span&gt;
&lt;span rel="#L13" id="L13"&gt;13&lt;/span&gt;
&lt;span rel="#L14" id="L14"&gt;14&lt;/span&gt;
&lt;span rel="#L15" id="L15"&gt;15&lt;/span&gt;
&lt;span rel="#L16" id="L16"&gt;16&lt;/span&gt;
&lt;span rel="#L17" id="L17"&gt;17&lt;/span&gt;
&lt;span rel="#L18" id="L18"&gt;18&lt;/span&gt;
&lt;span rel="#L19" id="L19"&gt;19&lt;/span&gt;
&lt;span rel="#L20" id="L20"&gt;20&lt;/span&gt;
&lt;span rel="#L21" id="L21"&gt;21&lt;/span&gt;
&lt;span rel="#L22" id="L22"&gt;22&lt;/span&gt;
&lt;span rel="#L23" id="L23"&gt;23&lt;/span&gt;
&lt;span rel="#L24" id="L24"&gt;24&lt;/span&gt;
&lt;span rel="#L25" id="L25"&gt;25&lt;/span&gt;
&lt;span rel="#L26" id="L26"&gt;26&lt;/span&gt;
&lt;/pre&gt;
          &lt;/td&gt;
          &lt;td width="100%"&gt;
            
              
                &lt;div class="highlight"&gt;&lt;pre /&gt;&lt;div class="line" id="LC1"&gt;&lt;span class="c1"&gt;; Fibonacci n-th number (modulo 2^32)&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC2"&gt;&lt;span class="c1"&gt;;&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC3"&gt;&lt;span class="c1"&gt;; input:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC4"&gt;&lt;span class="c1"&gt;; 	ecx = n&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC5"&gt;&lt;span class="c1"&gt;; modifies:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC6"&gt;&lt;span class="c1"&gt;; 	eax, ecx, edx&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC7"&gt;&lt;span class="c1"&gt;; ouput:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC8"&gt;&lt;span class="c1"&gt;; 	eax = number&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC9"&gt;&lt;span class="c1"&gt;; size:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC10"&gt;&lt;span class="c1"&gt;; 	15 bytes&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC11"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC12"&gt;&lt;span class="k"&gt;use32&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC13"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="line" id="LC14"&gt;&lt;span class="nl"&gt;_fibonacci:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC15"&gt;	&lt;span class="nf"&gt;xor&lt;/span&gt;    &lt;span class="nb"&gt;eax&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;eax&lt;/span&gt;           &lt;span class="c1"&gt;; 31 c0&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC16"&gt;	&lt;span class="nf"&gt;jecxz&lt;/span&gt;  &lt;span class="nv"&gt;_fibonacci_end&lt;/span&gt;     &lt;span class="c1"&gt;; e3 0a&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC17"&gt;	&lt;span class="nf"&gt;dec&lt;/span&gt;    &lt;span class="nb"&gt;ecx&lt;/span&gt;                &lt;span class="c1"&gt;; 49&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC18"&gt;	&lt;span class="nf"&gt;inc&lt;/span&gt;    &lt;span class="nb"&gt;eax&lt;/span&gt;                &lt;span class="c1"&gt;; 40&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC19"&gt;	&lt;span class="nf"&gt;jecxz&lt;/span&gt;  &lt;span class="nv"&gt;_fibonacci_end&lt;/span&gt;     &lt;span class="c1"&gt;; e3 06&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC20"&gt;	&lt;span class="nf"&gt;cdq&lt;/span&gt;                       &lt;span class="c1"&gt;; 99&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC21"&gt;&lt;span class="nl"&gt;_fibonacci_loop:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC22"&gt;	&lt;span class="nf"&gt;xchg&lt;/span&gt;   &lt;span class="nb"&gt;eax&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;edx&lt;/span&gt;           &lt;span class="c1"&gt;; 92&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC23"&gt;	&lt;span class="nf"&gt;add&lt;/span&gt;    &lt;span class="nb"&gt;eax&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nb"&gt;edx&lt;/span&gt;           &lt;span class="c1"&gt;; 01 d0&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC24"&gt;	&lt;span class="nf"&gt;loop&lt;/span&gt;   &lt;span class="nv"&gt;_fibonacci_loop&lt;/span&gt;    &lt;span class="c1"&gt;; e2 fb&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC25"&gt;&lt;span class="nl"&gt;_fibonacci_end:&lt;/span&gt;&lt;/div&gt;&lt;div class="line" id="LC26"&gt;	&lt;span class="nf"&gt;ret&lt;/span&gt;                       &lt;span class="c1"&gt;; c3&lt;/span&gt;&lt;/div&gt;&lt;/pre&gt;&lt;/div&gt;
              
            
          &lt;/td&gt;
        &lt;/tr&gt;
      &lt;/table&gt;
    
  &lt;/div&gt;&lt;/p&gt;

&lt;p&gt;Above &lt;a href="http://www.nasm.us/"&gt;nasm&lt;/a&gt;-compatible snippet is pretty
self-explanatory. There is a good reason for not using &lt;code&gt;ebx&lt;/code&gt; that I
didn&amp;rsquo;t know then. According to &lt;a href="http://refspecs.freestandards.org/elf/abi386-4.pdf"&gt;System V Application Binary Interface
Intel386 Architecture Processor
Supplment&lt;/a&gt; it is
one of five registers (&lt;code&gt;ebp&lt;/code&gt;, &lt;code&gt;ebx&lt;/code&gt;, &lt;code&gt;edi&lt;/code&gt;, &lt;code&gt;esi&lt;/code&gt;, &lt;code&gt;esp&lt;/code&gt;) belonging to
the calling function, i.e. called function must preserve them. But to
conform it further to &lt;a href="http://en.wikipedia.org/wiki/X86_calling_conventions#cdecl"&gt;&lt;em&gt;cdecl&lt;/em&gt; calling
convention&lt;/a&gt;
you would have to add &lt;code&gt;pop ecx&lt;/code&gt; and &lt;code&gt;push ecx&lt;/code&gt; (2 bytes: &lt;code&gt;59 51&lt;/code&gt;) at
the beginning of the function, because arguments are pushed onto the
stack.&lt;/p&gt;

&lt;p&gt;I like assembler for its low-level capabilities. It&amp;rsquo;s the only
language giving you the full control over what instructions will be
executed in CPU. It is also the third language I&amp;rsquo;ve ever touched in my
whole programming career. Back then (15 years ago?) assembly language wasn&amp;rsquo;t
the best target after Basic and Pascal, but it required me to think
almost like a processor which was refreshing, entertaining and of
course educational.&lt;/p&gt;

&lt;p&gt;Nowadays assembler is rarely used to create applications for
x86/x86-64 architecture. It is still useful for fine-tuning hot code
paths (e.g. compression, especially optimized for different CPUs)
though. Deep understanding of assembly language is also crucial for reverse
engineering of viruses, rootkits, malware and other software pests.
There is also a crack scene and surroundings, tightly connected with
RE along with many wise, intelligent and clever people. Cracking per
se is not an evil act. It really requires many skills, thorough
software (and often hardware) knowledge and analytical thinking. But
evil can be further action, i.e. what you do afterward. There are
always white hats and black hats. Even if one group is more noticeable
than the other one, it doesn&amp;rsquo;t mean you can treat them all as thugs&amp;hellip;&lt;/p&gt;

&lt;p&gt;Polish crack scene seems dead. This is sad, because it gathered many
skilled RE-oriented guys (and girls?) in its time of glory. Once I
started a &lt;a href="http://forum.jakilinux.org/viewtopic.php?id=15061"&gt;thread&lt;/a&gt;
in &lt;a href="http://osnews.pl/"&gt;OSnews.pl&lt;/a&gt;
&lt;a href="http://forum.jakilinux.org/viewforum.php?id=16"&gt;forum&lt;/a&gt; (sorry, Polish
only) asking readers-potential-(ex)crackers/reverse-engineers what is
going on with all these great people. One month ago (but I spotted it
a few hours ago) somebody impersonating ex-AAoCG member (AAoCG was one
of the most widely known Polish cracking teams) responded with his
theory of why the scene is dead. To make this short, lack of social
work to promote its values and some mix of egoism, vanity and
omnipresent commercialism. Sounds likely, isn&amp;rsquo;t it? But one thing
shocked me. I wanted to believe, due to my infant naivety w.r.t. this
subject, that black hats have their own ideals too and, while we may
not understand (or rather disagree with) their way of life, they&amp;rsquo;re
just giving results of their work for free. If it&amp;rsquo;s not true for all
of them, then which behavior is more common? Are black sheep among
them actually gray?&lt;/p&gt;

&lt;p&gt;Polish cracking scene had &lt;a href="http://woodmann.com/bart/"&gt;ctrl-d&lt;/a&gt; &amp;ndash; Polish
page with cracking and RE news. There was also an asmpak &amp;ndash; nice set of
assembler snippets &amp;ndash; which is no longer available. Don&amp;rsquo;t worry, I have
a copy of its last version from 2004.05.01.&lt;/p&gt;

&lt;p&gt;asmpak 000Ch: &lt;a href="http://download.przemoc.net/asmpak000Ch.rar"&gt;asmpak000Ch.rar&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rule #0 of the internet: you have to constantly backup it!&lt;/strong&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.przemoc.net/fibonacci-in-x86-assembler-and-the-scene"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.przemoc.net/fibonacci-in-x86-assembler-and-the-scene#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PrzemocTechblog/~4/U_Yvq7_ARss" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/602848/przemoc.png</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Aqscs4gdJm1</posterous:profileUrl>
        <posterous:firstName>Przemysław</posterous:firstName>
        <posterous:lastName>Pawełczyk</posterous:lastName>
        <posterous:nickName>przemoc</posterous:nickName>
        <posterous:displayName>Przemysław Pawełczyk</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.przemoc.net/fibonacci-in-x86-assembler-and-the-scene</feedburner:origLink></item>
    <item>
      <pubDate>Fri, 16 Jul 2010 17:35:00 -0700</pubDate>
      <title>Rouse e by post, i.e. why I am here at Posterous?</title>
      <link>http://feedproxy.google.com/~r/PrzemocTechblog/~3/67lPnl7p3Ho/rouse-e-by-post-ie-why-i-am-here-at-posterous</link>
      <guid isPermaLink="false">http://blog.przemoc.net/rouse-e-by-post-ie-why-i-am-here-at-posterous</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Posterous is getting more and more attention lately. It&amp;rsquo;s not that
surprising. Why? This might be the best blogging platform in the near
future. Remember my words. So what about the present time? No need to
worry, because Posterous is already a top-notch product. That&amp;rsquo;s why
I&amp;rsquo;ve chosen it for my techblog. Details? Sure, have a look at some.&lt;/p&gt;

&lt;p&gt;Nowadays blogging via email is nothing special. There are some
plug-ins for common blog software, there is tumblr beside Posterous
and possibly some other services capable of email-driven communication
but unknown to me. Who was the first with the great idea of posting
using emails? I have no clue, but it doesn&amp;rsquo;t matter. Important thing
is that Posterous focuses &lt;a href="http://posterous.com/faq/"&gt;&amp;ldquo;on the best email
experience&amp;rdquo;&lt;/a&gt; and the team behind it thinks,
just like me, &lt;a href="http://posterous.com/help/email_tips"&gt;&amp;ldquo;email is &lt;em&gt;the best&lt;/em&gt; way to publish
online&amp;rdquo;&lt;/a&gt;. It&amp;rsquo;s not an add-on,
it&amp;rsquo;s the main feature. I like mail much better than any
IMs/chats/microblogs, because usually it ends with well-rounded text,
at least often better than by using other ways of writing. Quality is
an important part of the communication and I hate when it is forgotten
or silently ignored.&lt;/p&gt;

&lt;p&gt;I really dislike HTML formatted emails and I am not the only one with
such attitude. Lack of proper formatting in plain-text was big problem
of Posterous. It has been resolved with &lt;a href="http://blog.posterous.com/announcing-markdown-support"&gt;introducing markdown
support&lt;/a&gt;, so
one obstacle less. Another one was lack of static pages, but it is
also a past already &amp;ndash; thanks to &lt;a href="http://blog.posterous.com/posterous-unveils-pages"&gt;unveiling the
pages&lt;/a&gt; (with recent
&lt;a href="http://blog.posterous.com/pages-20-add-links-to-your-sidebar"&gt;improvements&lt;/a&gt;).
Techblog usually requires some syntax highlighting. Posterous chose
&lt;a href="http://coderay.rubychan.de/"&gt;CodeRay&lt;/a&gt; and it is not the best possible
choice, but still a good one. It is &lt;a href="http://posterous.com/help/markdown"&gt;wisely
integrated&lt;/a&gt; into markdown syntax.
There is also automatic embedding of &lt;a href="http://gist.github.com/"&gt;GitHub
Gist&lt;/a&gt; &amp;ndash; just use the URL of snippet. Nice,
isn&amp;rsquo;t it?&lt;/p&gt;

&lt;p&gt;Users have here a lot more useful features. &lt;a href="http://blog.posterous.com/new-feature-schedule-your-posts-for-the-futur"&gt;Scheduling posts for the
future&lt;/a&gt;,
&lt;a href="http://blog.posterous.com/new-private-posts-on-posterous"&gt;private posts&lt;/a&gt;,
&lt;a href="http://blog.posterous.com/custom-domain-name-support-for"&gt;custom domain name
support&lt;/a&gt;,
&lt;a href="http://blog.posterous.com/now-supporting-more-audio-form"&gt;easy video sharing&lt;/a&gt;,
&lt;a href="http://blog.posterous.com/post-an-image-gallery-by-email"&gt;posting an image gallery by emailing a zip
file&lt;/a&gt;,
&lt;a href="http://blog.posterous.com/new-on-posterous-control-your"&gt;control over download
links&lt;/a&gt;,
&lt;a href="http://blog.posterous.com/introducing-commenting-via-ema"&gt;commenting via
email&lt;/a&gt; and
bunch of other options related to working with other sites. If you
have a blog already and want to migrate, then visit &lt;a href="http://posterous.com/switch"&gt;switch
page&lt;/a&gt;. Importing from many blog and posting services is
supported to smooth your transition.&lt;/p&gt;

&lt;p&gt;There are still some small potatoes though. Markdown has syntax for
embedding images in-place:&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;![alt-text](link-to-image title-of-image alignment)&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Posterous should support using images attached to emails by placing
their names in link-to-image part. Allowing defining how big the
thumbnail should be used (e.g. by adding 4th parameter:
thumbnail-width) and preventing resizing by
default if image is put alone in its own paragraph also would be very
useful. I think it should not require
&lt;a href="http://blog.posterous.com/posterous-tip-post-multiple-images-inline-wit"&gt;((nogallery))&lt;/a&gt;,
because not all images are always intended to be used inline. They
could be used to create usual gallery at the end if there is no
((nogallery)) in mail subject or just be placed one after the other at
the end if ((nogallery)) is present.&lt;/p&gt;

&lt;p&gt;Another thing is the commenting system. It is not the most important
feature and Posterous crew is all the time concerned about overall
system, so current engine is not polished as it could be. Supporting
use of dedicated solution,
&lt;a href="http://intensedebate.com/features"&gt;IntenseDebate&lt;/a&gt; to be precise,
would be another big improvement. At the same time it would allow the
team moving to polishing other elements of this great blogging
service. Simple win-win, right?&lt;/p&gt;

&lt;p&gt;I sent these (and one more) proposals to &lt;a href="mailto:help@posterous.com"&gt;help@posterous.com&lt;/a&gt; and
received information that some of my suggestions will be passed to the
team.&lt;/p&gt;

&lt;blockquote class="posterous_medium_quote"&gt;&lt;p&gt;We&amp;rsquo;re looking into improving the commenting system and working on polishing things up. Look for a few updates soon! To stay up to date on our happenings, check out the official Posterous blog at &lt;a href="http://blog.posterous.com"&gt;http://blog.posterous.com&lt;/a&gt;.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;I will, definitely! And you? In the meantime:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rouse electrons by post with bloody brilliant Posterous!&lt;/strong&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.przemoc.net/rouse-e-by-post-ie-why-i-am-here-at-posterous"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.przemoc.net/rouse-e-by-post-ie-why-i-am-here-at-posterous#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/PrzemocTechblog/~4/67lPnl7p3Ho" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/602848/przemoc.png</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/5Aqscs4gdJm1</posterous:profileUrl>
        <posterous:firstName>Przemysław</posterous:firstName>
        <posterous:lastName>Pawełczyk</posterous:lastName>
        <posterous:nickName>przemoc</posterous:nickName>
        <posterous:displayName>Przemysław Pawełczyk</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.przemoc.net/rouse-e-by-post-ie-why-i-am-here-at-posterous</feedburner:origLink></item>
  </channel>
</rss>

