<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>18343</bug_id>
          
          <creation_ts>2008-04-07 09:06:32 -0700</creation_ts>
          <short_desc>[GTK] Soup backend must handle upload of multiple files</short_desc>
          <delta_ts>2009-02-12 10:20:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://encodable.com/uploaddemo/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk, Soup</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Luca Bruno">lethalman88</reporter>
          <assigned_to name="Gustavo Noronha (kov)">gustavo</assigned_to>
          <cc>christian</cc>
    
    <cc>danw</cc>
    
    <cc>mrowe</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>76507</commentid>
    <comment_count>0</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-04-07 09:06:32 -0700</bug_when>
    <thetext>It&apos;s a missing feature. The curl backend currently handle this, but soup doesn&apos;t yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76513</commentid>
    <comment_count>1</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2008-04-07 09:56:45 -0700</bug_when>
    <thetext>&quot;multipart&quot; branch of libsoup git (http://gnome.org/~danw/libsoup.git) has various bits of support for multipart/form-data. (SoupMultipart, plus some new methods in soup-forms.h)

that&apos;s probably ready to merge in to libsoup svn once I branch for GNOME 2.22 later today
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76526</commentid>
    <comment_count>2</comment_count>
    <who name="Luca Bruno">lethalman88</who>
    <bug_when>2008-04-07 11:03:04 -0700</bug_when>
    <thetext>WebCore gives us already the elements with multipart headers, but not the data in case of files. In curl I just ended up by writing a function (readCallback if not mispelled) that wrote the whole contents of the form to a buffer given by curl. I think this can be done in soup too? Or do you think it&apos;s better to have the multipart API in first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>76543</commentid>
    <comment_count>3</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2008-04-07 14:07:44 -0700</bug_when>
    <thetext>ah, ok, you&apos;re right, you don&apos;t need SoupMultipart at all.

basically what you want to do is iterate over httpBody()-&gt;elements(), and
soup_message_body_append() each chunk to the request_body. (As far as I understand the C++ bits, you should be able to use SOUP_MEMORY_TEMPORARY when appending, because the pointers you pass will remain valid until after the SoupMessage is destroyed. [This avoids needing to copy the data.]) For the files to be uploaded, you can either read them into memory like in curl, or you can copy the trick from libsoup/tests/simple-httpd.c of using mmap-based SoupBuffers. You should also call &quot;soup_message_body_set_accumulate (msg-&gt;request_body, FALSE)&quot;, to tell libsoup that you don&apos;t need it to concatenate everything together into msg-&gt;request_body-&gt;data for you when it&apos;s done. (That&apos;s only available in libsoup 2.4.1, released today, so maybe forget about that for now...)
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107441</commentid>
    <comment_count>4</comment_count>
      <attachid>27134</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-28 17:41:03 -0800</bug_when>
    <thetext>Created attachment 27134
proposed patch

I implemented what Dan suggested, using the libsoup test as an example. It worked in my tests using GtkLauncher and a simple test CherryPy application, uploading a single file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107445</commentid>
    <comment_count>5</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2009-01-28 18:48:41 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I implemented what Dan suggested

I&apos;d said to skip the soup_message_body_set_accumulate call &quot;for now&quot;, since it was only available in the very-latest libsoup when I wrote the comment. But that was a long time ago, and WebKit currently depends on a much newer libsoup than that anyway, so you should definitely add that. (Though this is just a performance thing, not a correctness thing.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107497</commentid>
    <comment_count>6</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-29 02:25:14 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; I implemented what Dan suggested
&gt; 
&gt; I&apos;d said to skip the soup_message_body_set_accumulate call &quot;for now&quot;, since it
&gt; was only available in the very-latest libsoup when I wrote the comment. But
&gt; that was a long time ago, and WebKit currently depends on a much newer libsoup
&gt; than that anyway, so you should definitely add that. (Though this is just a
&gt; performance thing, not a correctness thing.)


Yeah, I considered that, actually. I tried adding the call to just before the for loop, and it caused the code to not work, I&apos;m not really sure why. I believe, though, that having soup accumulate the data to request_body may be sound, since we are thinking of providing the SoupMessage to signals fired after the request has been prepared and sent. What&apos;s your opinion on that? This might actually exhaust virtual memory, I guess?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107510</commentid>
    <comment_count>7</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2009-01-29 04:49:20 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Yeah, I considered that, actually. I tried adding the call to just before the
&gt; for loop, and it caused the code to not work, I&apos;m not really sure why.

Hm... maybe something else expects msg-&gt;request_body to be filled in later on? Actually, now that I think about it, I&apos;m not sure anyone else is using accumulate=FALSE on the *request* body, so maybe there&apos;s a bug in that code in libsoup...

&gt; I
&gt; believe, though, that having soup accumulate the data to request_body may be
&gt; sound, since we are thinking of providing the SoupMessage to signals fired
&gt; after the request has been prepared and sent. What&apos;s your opinion on that? This
&gt; might actually exhaust virtual memory, I guess?

Well, the curl backend always behaves that way, right?, so it wouldn&apos;t be any worse than that. But there&apos;s not much reason to do the mmap hack in that case.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107518</commentid>
    <comment_count>8</comment_count>
    <who name="Dan Winship">danw</who>
    <bug_when>2009-01-29 06:22:36 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; But there&apos;s not much reason to do the mmap hack in that case.

Oops, strike that part. Leaving accumulate on means it will keep the mmapped buffers around longer than it would otherwise, but it won&apos;t actually concatenate everything into a single buffer unless someone explicitly calls soup_message_body_flatten(msg-&gt;request_body), so mmapping is still probably better memory-usage-wise.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107527</commentid>
    <comment_count>9</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-29 08:52:28 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; But there&apos;s not much reason to do the mmap hack in that case.
&gt; 
&gt; Oops, strike that part. Leaving accumulate on means it will keep the mmapped
&gt; buffers around longer than it would otherwise, but it won&apos;t actually
&gt; concatenate everything into a single buffer unless someone explicitly calls
&gt; soup_message_body_flatten(msg-&gt;request_body), so mmapping is still probably
&gt; better memory-usage-wise.

Yeah, the tests I&apos;ve done show that only virtual memory and IO caches are affected, while the &quot;private&quot; memory actually allocated stays low, so I don&apos;t think a flatten is happening anywhere; using mmap is useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107528</commentid>
    <comment_count>10</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-29 08:55:19 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; Hm... maybe something else expects msg-&gt;request_body to be filled in later on?
&gt; Actually, now that I think about it, I&apos;m not sure anyone else is using
&gt; accumulate=FALSE on the *request* body, so maybe there&apos;s a bug in that code in
&gt; libsoup...

Maybe. I&apos;ll do some further testing.

&gt; &gt; believe, though, that having soup accumulate the data to request_body may be
&gt; &gt; sound, since we are thinking of providing the SoupMessage to signals fired
&gt; &gt; after the request has been prepared and sent. What&apos;s your opinion on that? This
&gt; &gt; might actually exhaust virtual memory, I guess?
&gt; 
&gt; Well, the curl backend always behaves that way, right?, so it wouldn&apos;t be any
&gt; worse than that. But there&apos;s not much reason to do the mmap hack in that case.

Yeah, we&apos;d match curl functionality, but I am afraid we may be needlessly limiting the size of uploads this way, even though the bar would be set pretty high. We can always investigate this further down the line, though, when the need actually arises. Having some form of file upload for Soup right now is a great win already IMO.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107559</commentid>
    <comment_count>11</comment_count>
      <attachid>27154</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-29 12:13:04 -0800</bug_when>
    <thetext>Created attachment 27154
updated proposed patch

This patch only adds a TODO comment regarding the usage of the accumulate flag. We would have to require a development version of libsoup, so I&apos;d rather wait &apos;till we are far enough into the future, or have ways of #ifdef&apos;ing the line before adding it. As Dan says, this would improve performance, but not setting it to FALSE doesn&apos;t make the code incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107562</commentid>
    <comment_count>12</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-29 12:22:40 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; This patch only adds a TODO comment regarding the usage of the accumulate flag.

when compared to my previous one, that is =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107673</commentid>
    <comment_count>13</comment_count>
      <attachid>27154</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-01-30 05:11:29 -0800</bug_when>
    <thetext>Comment on attachment 27154
updated proposed patch

Some brief style comments since I&apos;m not familiar with soup at all.
 
&gt; +#include &lt;fcntl.h&gt;
&gt; +#include &lt;sys/types.h&gt;
&gt; +#include &lt;sys/stat.h&gt;
&gt; +#include &lt;unistd.h&gt;
&gt; +
&gt;  #include &quot;config.h&quot;
&gt;  #include &quot;CString.h&quot;
&gt;  #include &quot;ResourceHandle.h&quot;

Per our style guidelines, config.h and ResourceHandle.h should be included first in this file and grouped together, followed by other WebCore headers, then other headers.  That is to say that the new includes should be moved down  by the exiting gio / libsoup includes, and CString.h moved down into the other WebCore includes. 

&gt; @@ -58,6 +64,20 @@ enum
&gt;      ERROR_BAD_NON_HTTP_METHOD
&gt;  };
&gt;  
&gt; +struct mapping
&gt; +{
&gt; +    gpointer ptr;
&gt; +    gsize length;
&gt; +};
&gt; +
&gt; +static void
&gt; +free_mapping(gpointer data)
&gt; +{
&gt; +    struct mapping* mapping = (struct mapping*)data;
&gt; +    munmap (mapping-&gt;ptr, mapping-&gt;length);
&gt; +    g_slice_free (struct mapping, mapping);
&gt; +}
&gt; +
&gt;  static void cleanupGioOperation(ResourceHandleInternal* handle);

Types should be named with an initial capital letter.  The name &quot;mapping&quot; is rather generic and could perhaps better describe what the type represents.  The return type and linkage specifier of a function declaration should be on the same line as the rest of the declaration.  Function names in WebCore should use camelCase rather than lower_case_with_underscores.  The extra &quot;struct&quot; qualifier when referring to the type should be omitted as it is not needed in C++.  The type cast should use a C++-style cast rather than a C-style cast.

&gt; +        gsize num_elements = httpBody-&gt;elements().size();
&gt; +

This should be of type size_t rather than gsize since it is only used to index in to a WebCore type.  It should also be named in camelCase.

&gt; +            for (gsize count = 0; count &lt; num_elements; count++) {

Should be size_t for the same reason as above.  &quot;i&quot; would probably be a more idiomatic name than count. 

&gt; +                const FormDataElement&amp; element = httpBody-&gt;elements()[count];
&gt; +
&gt; +                if (element.m_type == FormDataElement::data) {
&gt; +                    soup_message_body_append(msg-&gt;request_body, SOUP_MEMORY_TEMPORARY, element.m_data.data(), element.m_data.size());
&gt; +                } else {

The one-line body of the if should not have {}s around it.

&gt; +                    /*
&gt; +                     * mapping for uploaded files code inspired by technique used in
&gt; +                     * libsoup&apos;s simple-httpd test
&gt; +                     */
&gt; +                    SoupBuffer* soupBuffer;
&gt; +                    struct stat statbuf;

These variables should be declared immediately before they&apos;re first needed.

&gt; +                    struct mapping* mapping = g_slice_new (struct mapping);
&gt; +                    int fd = open(element.m_filename.utf8().data(), O_CLOEXEC|O_RDONLY);
&gt; +
&gt; +                    fstat(fd, &amp;statbuf);
&gt; +
&gt; +                    mapping-&gt;ptr = mmap(NULL, statbuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
&gt; +                    mapping-&gt;length = statbuf.st_size;
&gt; +
&gt; +                    close(fd);

This code really needs some error-handling.  If the file has been deleted since the user selected it in the form control, opening the file will fail and we&apos;ll probably end up segfaulting after mmap returns an error and we treat it as a pointer.

I&apos;m going to mark this as r- due to the lack of error handling and style issues.  If someone familiar with libsoup can chime in on whether the usage is correct then this can be r+&apos;d when those issues are addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107704</commentid>
    <comment_count>14</comment_count>
      <attachid>27182</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-30 09:07:10 -0800</bug_when>
    <thetext>Created attachment 27182
fixed proposed patch

Fxed style issues reported by bdash, and also added error checking for open() and mmap(). As I said on IRC, I believe we have soup covered since Dan worked with me to figure out why _set_accumulate(msg, FALSE) wasn&apos;t working, and verified the code in the process.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107865</commentid>
    <comment_count>15</comment_count>
      <attachid>27182</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-01-31 16:44:39 -0800</bug_when>
    <thetext>Comment on attachment 27182
fixed proposed patch

I&apos;m going to say r=me, though there are a few issues that should be addressed before landing.

&gt;  #if PLATFORM(GTK)
&gt;      #if GLIB_CHECK_VERSION(2,12,0)
&gt; @@ -55,9 +61,24 @@ enum
&gt;  {
&gt;      ERROR_TRANSPORT,
&gt;      ERROR_UNKNOWN_PROTOCOL,
&gt; -    ERROR_BAD_NON_HTTP_METHOD
&gt; +    ERROR_BAD_NON_HTTP_METHOD,
&gt; +    ERROR_UNABLE_TO_MAP_FILE,
&gt; +    ERROR_UNABLE_TO_OPEN_FILE,
&gt; +};

Do we need the two different error codes here?  The &quot;map file&quot; one seems like an implementation detail that adds little benefit over the &quot;open file&quot; error code.

&gt; +
&gt; +struct FileMapping
&gt; +{
&gt; +    gpointer ptr;
&gt; +    gsize length;
&gt;  };
&gt;  
&gt; +static void freeFileMapping(gpointer data)
&gt; +{
&gt; +    FileMapping* fileMapping = static_cast&lt;FileMapping*&gt;(data);
&gt; +    munmap (fileMapping-&gt;ptr, fileMapping-&gt;length);
&gt; +    g_slice_free (FileMapping, fileMapping);
&gt; +}

Shouldn&apos;t have a space between the function name and parenthesis in a function call.

&gt; +
&gt; +                    struct stat statBuf;
&gt; +                    fstat(fd, &amp;statBuf);

The struct keyword is unnecessary here.

&gt; +
&gt; +                    FileMapping* fileMapping = g_slice_new (FileMapping);

There is extra space after the function name.

&gt; +                    fileMapping-&gt;ptr = mmap(NULL, statBuf.st_size, PROT_READ, MAP_PRIVATE, fd, 0);
&gt; +                    if (fileMapping-&gt;ptr == MAP_FAILED) {
&gt; +                        ResourceError error(&quot;webkit-network-error&quot;, ERROR_UNABLE_TO_MAP_FILE, urlString, strerror(errno));
&gt; +                        d-&gt;client()-&gt;didFail(this, error);
&gt; +                        freeFileMapping(fileMapping);

Calling freeFileMapping here will attempt to munmap a pointer of MAP_FAILED.  Is that ok?

I think we also need to close the file descriptor in this error path to avoid leaking it.

&gt; +                        g_object_unref(msg);
&gt; +                        return false;
&gt; +                    }
&gt; +                    fileMapping-&gt;length = statBuf.st_size;
&gt; +
&gt; +                    close(fd);
&gt; +
&gt; +                    SoupBuffer* soupBuffer;

This declaration should be combined with the initialisation on the next line.
&gt; +
&gt; +                    soupBuffer = soup_buffer_new_with_owner(fileMapping-&gt;ptr, fileMapping-&gt;length, fileMapping, freeFileMapping);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107875</commentid>
    <comment_count>16</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-31 18:22:54 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 27182 [review])
&gt; I&apos;m going to say r=me, though there are a few issues that should be addressed
&gt; before landing.

Thanks, I&apos;ll attach a patch ready for landing in a minute.

&gt; Do we need the two different error codes here?  The &quot;map file&quot; one seems like
&gt; an implementation detail that adds little benefit over the &quot;open file&quot; error
&gt; code.

Agreed. I&apos;m removing the MAP one.

&gt; Calling freeFileMapping here will attempt to munmap a pointer of MAP_FAILED. 
&gt; Is that ok?

My understanding from reading the manpage is that it should be OK, but I have added a guard to make sure we will only munmap if it is not MAP_FAILED.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107903</commentid>
    <comment_count>17</comment_count>
      <attachid>27232</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-02-01 09:54:32 -0800</bug_when>
    <thetext>Created attachment 27232
patch ready to be committed

I&apos;m attaching a patch ready to be commited (except for ChangeLog changes). I have left struct stat as is because my C++ compiler was confusing it with the stat(2) call without the struct prefix, it seems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>109495</commentid>
    <comment_count>18</comment_count>
      <attachid>27232</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-02-12 10:19:09 -0800</bug_when>
    <thetext>Comment on attachment 27232
patch ready to be committed

        2009-02-12  Gustavo Noronha Silva  &lt;gns@gnome.org&gt;

        Reviewed by Mark Rowe.

        [GTK] Soup backend must handle upload of multiple files
        https://bugs.webkit.org/show_bug.cgi?id=18343

        * platform/network/soup/ResourceHandleSoup.cpp:
        (WebCore::):
        (WebCore::freeFileMapping):
        (WebCore::ResourceHandle::startHttp): Support multipart request bodies
        mmap&apos;ing files to be uploaded.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27134</attachid>
            <date>2009-01-28 17:41:03 -0800</date>
            <delta_ts>2009-01-29 12:13:04 -0800</delta_ts>
            <desc>proposed patch</desc>
            <filename>0001--GTK-Soup-backend-must-handle-upload-of-multiple-fi.patch</filename>
            <type>text/plain</type>
            <size>5473</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSBmZThjOTk2N2Y0MGI2MTQxYTVjMjE5OTk5ZmVhYjQxNGQ3YWY2ZWZmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGtvdkBrb3YuZXRpLmJy
PgpEYXRlOiBXZWQsIDI4IEphbiAyMDA5IDIzOjI3OjMzIC0wMjAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gU291cCBiYWNrZW5kIG11c3QgaGFuZGxlIHVwbG9hZCBvZiBtdWx0aXBsZSBmaWxlcwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzQzCgpTdXBwb3J0IG11
bHRpcGFydCByZXF1ZXN0IGJvZGllcyBtbWFwJ2luZyBmaWxlcyB0byBiZSB1cGxvYWRlZC4KLS0t
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTMgKysrKwogLi4uL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3Bw
ICAgfCAgIDc1ICsrKysrKysrKysrKysrKysrLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDc3IGluc2Vy
dGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmIzNmE3My4uODhlZTA0MSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBA
QAorMjAwOS0wMS0yOCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBTb3Vw
IGJhY2tlbmQgbXVzdCBoYW5kbGUgdXBsb2FkIG9mIG11bHRpcGxlIGZpbGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0MworCisgICAgICAgIFN1
cHBvcnQgbXVsdGlwYXJ0IHJlcXVlc3QgYm9kaWVzIG1tYXAnaW5nIGZpbGVzIHRvIGJlIHVwbG9h
ZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpmcmVlX21hcHBpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VIYW5kbGU6OnN0YXJ0SHR0cCk6CisKIDIwMDktMDEtMjggIERhdmlkIEh5YXR0
ICA8aHlhdHRAYXBwbGUuY29tPgogCiAgICAgICAgIE1vdmUgY3JlYXRlSW5saW5lQm94IG91dCBv
ZiBSZW5kZXJGbG93IGFuZCBkb3duIGludG8gUmVuZGVySW5saW5lIGFuZCBSZW5kZXJCbG9jay4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxl
U291cC5jcHAgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNv
dXAuY3BwCmluZGV4IGRhOTY4NzMuLjEyMzYxYjYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcApAQCAtMyw2ICszLDcgQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwOCBYYW4gTG9wZXogPHhhbkBnbm9tZS5vcmc+CiAgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQ29sbGFib3JhIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOSBIb2xn
ZXIgSGFucyBQZXRlciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA5IEd1c3Rhdm8gTm9y
b25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjAsNiAr
MjEsMTEgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKyNpbmNsdWRl
IDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+
CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJD
U3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKQEAgLTU4LDYgKzY0LDIwIEBA
IGVudW0KICAgICBFUlJPUl9CQURfTk9OX0hUVFBfTUVUSE9ECiB9OwogCitzdHJ1Y3QgbWFwcGlu
ZworeworICAgIGdwb2ludGVyIHB0cjsKKyAgICBnc2l6ZSBsZW5ndGg7Cit9OworCitzdGF0aWMg
dm9pZAorZnJlZV9tYXBwaW5nKGdwb2ludGVyIGRhdGEpCit7CisgICAgc3RydWN0IG1hcHBpbmcq
IG1hcHBpbmcgPSAoc3RydWN0IG1hcHBpbmcqKWRhdGE7CisgICAgbXVubWFwIChtYXBwaW5nLT5w
dHIsIG1hcHBpbmctPmxlbmd0aCk7CisgICAgZ19zbGljZV9mcmVlIChzdHJ1Y3QgbWFwcGluZywg
bWFwcGluZyk7Cit9CisKIHN0YXRpYyB2b2lkIGNsZWFudXBHaW9PcGVyYXRpb24oUmVzb3VyY2VI
YW5kbGVJbnRlcm5hbCogaGFuZGxlKTsKIAogUmVzb3VyY2VIYW5kbGVJbnRlcm5hbDo6flJlc291
cmNlSGFuZGxlSW50ZXJuYWwoKQpAQCAtMzE1LDE3ICszMzUsNTAgQEAgYm9vbCBSZXNvdXJjZUhh
bmRsZTo6c3RhcnRIdHRwKFN0cmluZyB1cmxTdHJpbmcpCiAKICAgICBGb3JtRGF0YSogaHR0cEJv
ZHkgPSBkLT5tX3JlcXVlc3QuaHR0cEJvZHkoKTsKICAgICBpZiAoaHR0cEJvZHkgJiYgIWh0dHBC
b2R5LT5pc0VtcHR5KCkpIHsKLSAgICAgICAgLy8gTWFraW5nIGEgY29weSBvZiB0aGUgcmVxdWVz
dCBib2R5IGlzbid0IHRoZSBtb3N0IGVmZmljaWVudCB3YXkgdG8KLSAgICAgICAgLy8gc2VyaWFs
aXplIGl0LCBidXQgYnkgZmFyIHRoZSBtb3N0IHNpbXBsZS4gRGVhbGluZyB3aXRoIGluZGl2aWR1
YWwKLSAgICAgICAgLy8gRm9ybURhdGEgZWxlbWVudHMgYW5kIHNoYXJlZCBidWZmZXJzIHNob3Vs
ZCBiZSBtb3JlIG1lbW9yeQotICAgICAgICAvLyBlZmZpY2llbnQuCi0gICAgICAgIC8vCi0gICAg
ICAgIC8vIFRoaXMgcG9zc2libHkgaXNuJ3QgaGFuZGxpbmcgZmlsZSB1cGxvYWRzL2F0dGFjaG1l
bnRzLCBmb3Igd2hpY2gKLSAgICAgICAgLy8gc2hhcmVkIGJ1ZmZlcnMgb3Igc3RyZWFtaW5nIHNo
b3VsZCBkZWZpbml0ZWx5IGJlIHVzZWQuCi0gICAgICAgIFZlY3RvcjxjaGFyPiBib2R5OwotICAg
ICAgICBodHRwQm9keS0+ZmxhdHRlbihib2R5KTsKLSAgICAgICAgc291cF9tZXNzYWdlX3NldF9y
ZXF1ZXN0KG1zZywgZC0+bV9yZXF1ZXN0Lmh0dHBDb250ZW50VHlwZSgpLnV0ZjgoKS5kYXRhKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1VQX01FTU9SWV9DT1BZLCBib2R5
LmRhdGEoKSwgYm9keS5zaXplKCkpOworICAgICAgICBnc2l6ZSBudW1fZWxlbWVudHMgPSBodHRw
Qm9keS0+ZWxlbWVudHMoKS5zaXplKCk7CisKKyAgICAgICAgLy8gaGFuZGxlIHRoZSBtb3N0IGNv
bW1vbiBjYXNlIChpLmUuIG5vIGZpbGUgdXBsb2FkKQorICAgICAgICBpZiAobnVtX2VsZW1lbnRz
IDwgMikgeworICAgICAgICAgICAgVmVjdG9yPGNoYXI+IGJvZHk7CisgICAgICAgICAgICBodHRw
Qm9keS0+ZmxhdHRlbihib2R5KTsKKyAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9zZXRfcmVxdWVz
dChtc2csIGQtPm1fcmVxdWVzdC5odHRwQ29udGVudFR5cGUoKS51dGY4KCkuZGF0YSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfTUVNT1JZX0NPUFksIGJvZHku
ZGF0YSgpLCBib2R5LnNpemUoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKgor
ICAgICAgICAgICAgICogd2UgaGF2ZSBtb3JlIHRoYW4gb25lIGVsZW1lbnQgdG8gdXBsb2FkLCBh
bmQgc29tZSBtYXkKKyAgICAgICAgICAgICAqIGJlIChiaWcpIGZpbGVzLCB3aGljaCB3ZSB3aWxs
IHdhbnQgdG8gbW1hcCBpbnN0ZWFkIG9mCisgICAgICAgICAgICAgKiBjb3B5aW5nIGludG8gbWVt
b3J5OyBUT0RPOiBzdXBwb3J0IHVwbG9hZCBvZiBub24tbG9jYWwKKyAgICAgICAgICAgICAqICh0
aGluayBzZnRwOi8vKSBmaWxlcyBieSB1c2luZyBHSU8/CisgICAgICAgICAgICAgKi8KKworICAg
ICAgICAgICAgZm9yIChnc2l6ZSBjb3VudCA9IDA7IGNvdW50IDwgbnVtX2VsZW1lbnRzOyBjb3Vu
dCsrKSB7CisgICAgICAgICAgICAgICAgY29uc3QgRm9ybURhdGFFbGVtZW50JiBlbGVtZW50ID0g
aHR0cEJvZHktPmVsZW1lbnRzKClbY291bnRdOworCisgICAgICAgICAgICAgICAgaWYgKGVsZW1l
bnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZGF0YSkgeworICAgICAgICAgICAgICAgICAg
ICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobXNnLT5yZXF1ZXN0X2JvZHksIFNPVVBfTUVNT1JZ
X1RFTVBPUkFSWSwgZWxlbWVudC5tX2RhdGEuZGF0YSgpLCBlbGVtZW50Lm1fZGF0YS5zaXplKCkp
OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAg
ICAgICAgICAgICAgICAgICAqIG1hcHBpbmcgZm9yIHVwbG9hZGVkIGZpbGVzIGNvZGUgaW5zcGly
ZWQgYnkgdGVjaG5pcXVlIHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICogbGlic291cCdz
IHNpbXBsZS1odHRwZCB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAg
ICAgICAgICBTb3VwQnVmZmVyKiBzb3VwQnVmZmVyOworICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc3RhdCBzdGF0YnVmOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWFwcGluZyogbWFw
cGluZyA9IGdfc2xpY2VfbmV3IChzdHJ1Y3QgbWFwcGluZyk7CisgICAgICAgICAgICAgICAgICAg
IGludCBmZCA9IG9wZW4oZWxlbWVudC5tX2ZpbGVuYW1lLnV0ZjgoKS5kYXRhKCksIE9fQ0xPRVhF
Q3xPX1JET05MWSk7CisKKyAgICAgICAgICAgICAgICAgICAgZnN0YXQoZmQsICZzdGF0YnVmKTsK
KworICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLT5wdHIgPSBtbWFwKE5VTEwsIHN0YXRidWYu
c3Rfc2l6ZSwgUFJPVF9SRUFELCBNQVBfUFJJVkFURSwgZmQsIDApOworICAgICAgICAgICAgICAg
ICAgICBtYXBwaW5nLT5sZW5ndGggPSBzdGF0YnVmLnN0X3NpemU7CisKKyAgICAgICAgICAgICAg
ICAgICAgY2xvc2UoZmQpOworCisgICAgICAgICAgICAgICAgICAgIHNvdXBCdWZmZXIgPSBzb3Vw
X2J1ZmZlcl9uZXdfd2l0aF9vd25lcihtYXBwaW5nLT5wdHIsIG1hcHBpbmctPmxlbmd0aCwgbWFw
cGluZywgZnJlZV9tYXBwaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgc291cF9tZXNzYWdlX2Jv
ZHlfYXBwZW5kX2J1ZmZlcihtc2ctPnJlcXVlc3RfYm9keSwgc291cEJ1ZmZlcik7CisgICAgICAg
ICAgICAgICAgICAgIHNvdXBfYnVmZmVyX2ZyZWUoc291cEJ1ZmZlcik7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgZC0+bV9tc2cgPSBz
dGF0aWNfY2FzdDxTb3VwTWVzc2FnZSo+KGdfb2JqZWN0X3JlZihtc2cpKTsKLS0gCjEuNS42LjUK
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27154</attachid>
            <date>2009-01-29 12:13:04 -0800</date>
            <delta_ts>2009-01-30 09:07:10 -0800</delta_ts>
            <desc>updated proposed patch</desc>
            <filename>0001--GTK-Soup-backend-must-handle-upload-of-multiple-fi.patch</filename>
            <type>text/plain</type>
            <size>5767</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSA2NjE3YzdiYzUyYTY0ODEwMGM5ZjE4MmFmYzAwZjdkMjRkZTlmMDJlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGtvdkBrb3YuZXRpLmJy
PgpEYXRlOiBXZWQsIDI4IEphbiAyMDA5IDIzOjI3OjMzIC0wMjAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gU291cCBiYWNrZW5kIG11c3QgaGFuZGxlIHVwbG9hZCBvZiBtdWx0aXBsZSBmaWxlcwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzQzCgpTdXBwb3J0IG11
bHRpcGFydCByZXF1ZXN0IGJvZGllcyBtbWFwJ2luZyBmaWxlcyB0byBiZSB1cGxvYWRlZC4KLS0t
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTMgKysrCiAuLi4vcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAg
ICB8ICAgODAgKysrKysrKysrKysrKysrKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgODIgaW5zZXJ0
aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cg
Yi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiYjM2YTczLi44OGVlMDQxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBA
CisyMDA5LTAxLTI4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtHVEtdIFNvdXAg
YmFja2VuZCBtdXN0IGhhbmRsZSB1cGxvYWQgb2YgbXVsdGlwbGUgZmlsZXMKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzQzCisKKyAgICAgICAgU3Vw
cG9ydCBtdWx0aXBhcnQgcmVxdWVzdCBib2RpZXMgbW1hcCdpbmcgZmlsZXMgdG8gYmUgdXBsb2Fk
ZWQuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3Vw
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmZyZWVfbWFwcGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUhhbmRsZTo6c3RhcnRIdHRwKToKKwogMjAwOS0wMS0yOCAgRGF2aWQgSHlhdHQg
IDxoeWF0dEBhcHBsZS5jb20+CiAKICAgICAgICAgTW92ZSBjcmVhdGVJbmxpbmVCb3ggb3V0IG9m
IFJlbmRlckZsb3cgYW5kIGRvd24gaW50byBSZW5kZXJJbmxpbmUgYW5kIFJlbmRlckJsb2NrLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVT
b3VwLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHAKaW5kZXggZGE5Njg3My4uNGE5ZjQ2NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0zLDYgKzMsNyBAQAog
ICogQ29weXJpZ2h0IChDKSAyMDA4IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAqIENvcHly
aWdodCAoQykgMjAwOCBDb2xsYWJvcmEgTHRkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdl
ciBIYW5zIFBldGVyIEZyZXl0aGVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR3VzdGF2byBOb3Jv
bmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMCw2ICsy
MSwxMSBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAorI2luY2x1ZGUg
PGZjbnRsLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4K
KyNpbmNsdWRlIDx1bmlzdGQuaD4KKwogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkNT
dHJpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhhbmRsZS5oIgpAQCAtNTgsNiArNjQsMjAgQEAg
ZW51bQogICAgIEVSUk9SX0JBRF9OT05fSFRUUF9NRVRIT0QKIH07CiAKK3N0cnVjdCBtYXBwaW5n
Cit7CisgICAgZ3BvaW50ZXIgcHRyOworICAgIGdzaXplIGxlbmd0aDsKK307CisKK3N0YXRpYyB2
b2lkCitmcmVlX21hcHBpbmcoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBzdHJ1Y3QgbWFwcGluZyog
bWFwcGluZyA9IChzdHJ1Y3QgbWFwcGluZyopZGF0YTsKKyAgICBtdW5tYXAgKG1hcHBpbmctPnB0
ciwgbWFwcGluZy0+bGVuZ3RoKTsKKyAgICBnX3NsaWNlX2ZyZWUgKHN0cnVjdCBtYXBwaW5nLCBt
YXBwaW5nKTsKK30KKwogc3RhdGljIHZvaWQgY2xlYW51cEdpb09wZXJhdGlvbihSZXNvdXJjZUhh
bmRsZUludGVybmFsKiBoYW5kbGUpOwogCiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3Vy
Y2VIYW5kbGVJbnRlcm5hbCgpCkBAIC0zMTUsMTcgKzMzNSw1NSBAQCBib29sIFJlc291cmNlSGFu
ZGxlOjpzdGFydEh0dHAoU3RyaW5nIHVybFN0cmluZykKIAogICAgIEZvcm1EYXRhKiBodHRwQm9k
eSA9IGQtPm1fcmVxdWVzdC5odHRwQm9keSgpOwogICAgIGlmIChodHRwQm9keSAmJiAhaHR0cEJv
ZHktPmlzRW1wdHkoKSkgewotICAgICAgICAvLyBNYWtpbmcgYSBjb3B5IG9mIHRoZSByZXF1ZXN0
IGJvZHkgaXNuJ3QgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0bwotICAgICAgICAvLyBzZXJpYWxp
emUgaXQsIGJ1dCBieSBmYXIgdGhlIG1vc3Qgc2ltcGxlLiBEZWFsaW5nIHdpdGggaW5kaXZpZHVh
bAotICAgICAgICAvLyBGb3JtRGF0YSBlbGVtZW50cyBhbmQgc2hhcmVkIGJ1ZmZlcnMgc2hvdWxk
IGJlIG1vcmUgbWVtb3J5Ci0gICAgICAgIC8vIGVmZmljaWVudC4KLSAgICAgICAgLy8KLSAgICAg
ICAgLy8gVGhpcyBwb3NzaWJseSBpc24ndCBoYW5kbGluZyBmaWxlIHVwbG9hZHMvYXR0YWNobWVu
dHMsIGZvciB3aGljaAotICAgICAgICAvLyBzaGFyZWQgYnVmZmVycyBvciBzdHJlYW1pbmcgc2hv
dWxkIGRlZmluaXRlbHkgYmUgdXNlZC4KLSAgICAgICAgVmVjdG9yPGNoYXI+IGJvZHk7Ci0gICAg
ICAgIGh0dHBCb2R5LT5mbGF0dGVuKGJvZHkpOwotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3Jl
cXVlc3QobXNnLCBkLT5tX3JlcXVlc3QuaHR0cENvbnRlbnRUeXBlKCkudXRmOCgpLmRhdGEoKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfTUVNT1JZX0NPUFksIGJvZHku
ZGF0YSgpLCBib2R5LnNpemUoKSk7CisgICAgICAgIGdzaXplIG51bV9lbGVtZW50cyA9IGh0dHBC
b2R5LT5lbGVtZW50cygpLnNpemUoKTsKKworICAgICAgICAvLyBoYW5kbGUgdGhlIG1vc3QgY29t
bW9uIGNhc2UgKGkuZS4gbm8gZmlsZSB1cGxvYWQpCisgICAgICAgIGlmIChudW1fZWxlbWVudHMg
PCAyKSB7CisgICAgICAgICAgICBWZWN0b3I8Y2hhcj4gYm9keTsKKyAgICAgICAgICAgIGh0dHBC
b2R5LT5mbGF0dGVuKGJvZHkpOworICAgICAgICAgICAgc291cF9tZXNzYWdlX3NldF9yZXF1ZXN0
KG1zZywgZC0+bV9yZXF1ZXN0Lmh0dHBDb250ZW50VHlwZSgpLnV0ZjgoKS5kYXRhKCksCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU09VUF9NRU1PUllfQ09QWSwgYm9keS5k
YXRhKCksIGJvZHkuc2l6ZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qCisg
ICAgICAgICAgICAgKiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgZWxlbWVudCB0byB1cGxvYWQsIGFu
ZCBzb21lIG1heQorICAgICAgICAgICAgICogYmUgKGJpZykgZmlsZXMsIHdoaWNoIHdlIHdpbGwg
d2FudCB0byBtbWFwIGluc3RlYWQgb2YKKyAgICAgICAgICAgICAqIGNvcHlpbmcgaW50byBtZW1v
cnk7IFRPRE86IHN1cHBvcnQgdXBsb2FkIG9mIG5vbi1sb2NhbAorICAgICAgICAgICAgICogKHRo
aW5rIHNmdHA6Ly8pIGZpbGVzIGJ5IHVzaW5nIEdJTz8KKyAgICAgICAgICAgICAqCisgICAgICAg
ICAgICAgKiBUT0RPOiB3ZSBjYW4gYXZvaWQgYXBwZW5kaW5nIGFsbCB0aGUgYnVmZmVycyB0byB0
aGUKKyAgICAgICAgICAgICAqIHJlcXVlc3RfYm9keSB2YXJpYWJsZSB3aXRoIHRoZSBmb2xsb3dp
bmcgY2FsbCwgYnV0IHdlCisgICAgICAgICAgICAgKiBuZWVkIHRvIGRlcGVuZCBvbiBsaWJzb3Vw
ID4gMi4yNS40CisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogc291cF9tZXNzYWdlX2Jv
ZHlfc2V0X2FjY3VtdWxhdGUobXNnLT5yZXF1ZXN0X2JvZHksIEZBTFNFKTsKKyAgICAgICAgICAg
ICAqLworICAgICAgICAgICAgZm9yIChnc2l6ZSBjb3VudCA9IDA7IGNvdW50IDwgbnVtX2VsZW1l
bnRzOyBjb3VudCsrKSB7CisgICAgICAgICAgICAgICAgY29uc3QgRm9ybURhdGFFbGVtZW50JiBl
bGVtZW50ID0gaHR0cEJvZHktPmVsZW1lbnRzKClbY291bnRdOworCisgICAgICAgICAgICAgICAg
aWYgKGVsZW1lbnQubV90eXBlID09IEZvcm1EYXRhRWxlbWVudDo6ZGF0YSkgeworICAgICAgICAg
ICAgICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmQobXNnLT5yZXF1ZXN0X2JvZHksIFNP
VVBfTUVNT1JZX1RFTVBPUkFSWSwgZWxlbWVudC5tX2RhdGEuZGF0YSgpLCBlbGVtZW50Lm1fZGF0
YS5zaXplKCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAg
IC8qCisgICAgICAgICAgICAgICAgICAgICAqIG1hcHBpbmcgZm9yIHVwbG9hZGVkIGZpbGVzIGNv
ZGUgaW5zcGlyZWQgYnkgdGVjaG5pcXVlIHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICog
bGlic291cCdzIHNpbXBsZS1odHRwZCB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAqLworICAg
ICAgICAgICAgICAgICAgICBTb3VwQnVmZmVyKiBzb3VwQnVmZmVyOworICAgICAgICAgICAgICAg
ICAgICBzdHJ1Y3Qgc3RhdCBzdGF0YnVmOworICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWFw
cGluZyogbWFwcGluZyA9IGdfc2xpY2VfbmV3IChzdHJ1Y3QgbWFwcGluZyk7CisgICAgICAgICAg
ICAgICAgICAgIGludCBmZCA9IG9wZW4oZWxlbWVudC5tX2ZpbGVuYW1lLnV0ZjgoKS5kYXRhKCks
IE9fQ0xPRVhFQ3xPX1JET05MWSk7CisKKyAgICAgICAgICAgICAgICAgICAgZnN0YXQoZmQsICZz
dGF0YnVmKTsKKworICAgICAgICAgICAgICAgICAgICBtYXBwaW5nLT5wdHIgPSBtbWFwKE5VTEws
IHN0YXRidWYuc3Rfc2l6ZSwgUFJPVF9SRUFELCBNQVBfUFJJVkFURSwgZmQsIDApOworICAgICAg
ICAgICAgICAgICAgICBtYXBwaW5nLT5sZW5ndGggPSBzdGF0YnVmLnN0X3NpemU7CisKKyAgICAg
ICAgICAgICAgICAgICAgY2xvc2UoZmQpOworCisgICAgICAgICAgICAgICAgICAgIHNvdXBCdWZm
ZXIgPSBzb3VwX2J1ZmZlcl9uZXdfd2l0aF9vd25lcihtYXBwaW5nLT5wdHIsIG1hcHBpbmctPmxl
bmd0aCwgbWFwcGluZywgZnJlZV9tYXBwaW5nKTsKKyAgICAgICAgICAgICAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfYXBwZW5kX2J1ZmZlcihtc2ctPnJlcXVlc3RfYm9keSwgc291cEJ1ZmZlcik7
CisgICAgICAgICAgICAgICAgICAgIHNvdXBfYnVmZmVyX2ZyZWUoc291cEJ1ZmZlcik7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgZC0+
bV9tc2cgPSBzdGF0aWNfY2FzdDxTb3VwTWVzc2FnZSo+KGdfb2JqZWN0X3JlZihtc2cpKTsKLS0g
CjEuNS42LjUKCg==
</data>
<flag name="review"
          id="13054"
          type_id="1"
          status="-"
          setter="mrowe"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27182</attachid>
            <date>2009-01-30 09:07:10 -0800</date>
            <delta_ts>2009-02-12 10:19:26 -0800</delta_ts>
            <desc>fixed proposed patch</desc>
            <filename>0001--GTK-Soup-backend-must-handle-upload-of-multiple-fi.patch</filename>
            <type>text/plain</type>
            <size>7013</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSBiZDZhZjc3ODM4ZWJhMThkMGVmMDQ0Njc2NmUxNTJkMjVhNjEzYmYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGtvdkBrb3YuZXRpLmJy
PgpEYXRlOiBXZWQsIDI4IEphbiAyMDA5IDIzOjI3OjMzIC0wMjAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gU291cCBiYWNrZW5kIG11c3QgaGFuZGxlIHVwbG9hZCBvZiBtdWx0aXBsZSBmaWxlcwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzQzCgpTdXBwb3J0IG11
bHRpcGFydCByZXF1ZXN0IGJvZGllcyBtbWFwJ2luZyBmaWxlcyB0byBiZSB1cGxvYWRlZC4KLS0t
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTQgKysrCiAuLi4vcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAg
ICB8ICAxMDEgKysrKysrKysrKysrKysrKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTAyIGluc2Vy
dGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZlNDAyMS4uMzliMWVlZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAwOS0wMS0zMCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBTb3Vw
IGJhY2tlbmQgbXVzdCBoYW5kbGUgdXBsb2FkIG9mIG11bHRpcGxlIGZpbGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0MworCisgICAgICAgIFN1
cHBvcnQgbXVsdGlwYXJ0IHJlcXVlc3QgYm9kaWVzIG1tYXAnaW5nIGZpbGVzIHRvIGJlIHVwbG9h
ZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6ZnJlZUZpbGVN
YXBwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydEh0dHApOgor
CiAyMDA5LTAxLTMwICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggZGE5Njg3My4u
MjI2YzUyOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4
IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJv
cmEgTHRkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUu
b3JnPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSwxMSArMjIsMTEgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCiAKICNpbmNsdWRlICJCYXNlNjQuaCIKICNpbmNsdWRlICJDb29raWVKYXJTb3Vw
LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKQEAgLTM3LDkgKzM4LDE0IEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5o
IgogCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGdp
by9naW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAtbWVzc2FnZS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0
Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgI2lmIEdM
SUJfQ0hFQ0tfVkVSU0lPTigyLDEyLDApCkBAIC01NSw5ICs2MSwyNCBAQCBlbnVtCiB7CiAgICAg
RVJST1JfVFJBTlNQT1JULAogICAgIEVSUk9SX1VOS05PV05fUFJPVE9DT0wsCi0gICAgRVJST1Jf
QkFEX05PTl9IVFRQX01FVEhPRAorICAgIEVSUk9SX0JBRF9OT05fSFRUUF9NRVRIT0QsCisgICAg
RVJST1JfVU5BQkxFX1RPX01BUF9GSUxFLAorICAgIEVSUk9SX1VOQUJMRV9UT19PUEVOX0ZJTEUs
Cit9OworCitzdHJ1Y3QgRmlsZU1hcHBpbmcKK3sKKyAgICBncG9pbnRlciBwdHI7CisgICAgZ3Np
emUgbGVuZ3RoOwogfTsKIAorc3RhdGljIHZvaWQgZnJlZUZpbGVNYXBwaW5nKGdwb2ludGVyIGRh
dGEpCit7CisgICAgRmlsZU1hcHBpbmcqIGZpbGVNYXBwaW5nID0gc3RhdGljX2Nhc3Q8RmlsZU1h
cHBpbmcqPihkYXRhKTsKKyAgICBtdW5tYXAgKGZpbGVNYXBwaW5nLT5wdHIsIGZpbGVNYXBwaW5n
LT5sZW5ndGgpOworICAgIGdfc2xpY2VfZnJlZSAoRmlsZU1hcHBpbmcsIGZpbGVNYXBwaW5nKTsK
K30KKwogc3RhdGljIHZvaWQgY2xlYW51cEdpb09wZXJhdGlvbihSZXNvdXJjZUhhbmRsZUludGVy
bmFsKiBoYW5kbGUpOwogCiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVzb3VyY2VIYW5kbGVJ
bnRlcm5hbCgpCkBAIC0zMTUsMTcgKzMzNiw3MSBAQCBib29sIFJlc291cmNlSGFuZGxlOjpzdGFy
dEh0dHAoU3RyaW5nIHVybFN0cmluZykKIAogICAgIEZvcm1EYXRhKiBodHRwQm9keSA9IGQtPm1f
cmVxdWVzdC5odHRwQm9keSgpOwogICAgIGlmIChodHRwQm9keSAmJiAhaHR0cEJvZHktPmlzRW1w
dHkoKSkgewotICAgICAgICAvLyBNYWtpbmcgYSBjb3B5IG9mIHRoZSByZXF1ZXN0IGJvZHkgaXNu
J3QgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0bwotICAgICAgICAvLyBzZXJpYWxpemUgaXQsIGJ1
dCBieSBmYXIgdGhlIG1vc3Qgc2ltcGxlLiBEZWFsaW5nIHdpdGggaW5kaXZpZHVhbAotICAgICAg
ICAvLyBGb3JtRGF0YSBlbGVtZW50cyBhbmQgc2hhcmVkIGJ1ZmZlcnMgc2hvdWxkIGJlIG1vcmUg
bWVtb3J5Ci0gICAgICAgIC8vIGVmZmljaWVudC4KLSAgICAgICAgLy8KLSAgICAgICAgLy8gVGhp
cyBwb3NzaWJseSBpc24ndCBoYW5kbGluZyBmaWxlIHVwbG9hZHMvYXR0YWNobWVudHMsIGZvciB3
aGljaAotICAgICAgICAvLyBzaGFyZWQgYnVmZmVycyBvciBzdHJlYW1pbmcgc2hvdWxkIGRlZmlu
aXRlbHkgYmUgdXNlZC4KLSAgICAgICAgVmVjdG9yPGNoYXI+IGJvZHk7Ci0gICAgICAgIGh0dHBC
b2R5LT5mbGF0dGVuKGJvZHkpOwotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3JlcXVlc3QobXNn
LCBkLT5tX3JlcXVlc3QuaHR0cENvbnRlbnRUeXBlKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfTUVNT1JZX0NPUFksIGJvZHkuZGF0YSgpLCBi
b2R5LnNpemUoKSk7CisgICAgICAgIHNpemVfdCBudW1FbGVtZW50cyA9IGh0dHBCb2R5LT5lbGVt
ZW50cygpLnNpemUoKTsKKworICAgICAgICAvLyBoYW5kbGUgdGhlIG1vc3QgY29tbW9uIGNhc2Ug
KGkuZS4gbm8gZmlsZSB1cGxvYWQpCisgICAgICAgIGlmIChudW1FbGVtZW50cyA8IDIpIHsKKyAg
ICAgICAgICAgIFZlY3RvcjxjaGFyPiBib2R5OworICAgICAgICAgICAgaHR0cEJvZHktPmZsYXR0
ZW4oYm9keSk7CisgICAgICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3JlcXVlc3QobXNnLCBkLT5t
X3JlcXVlc3QuaHR0cENvbnRlbnRUeXBlKCkudXRmOCgpLmRhdGEoKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTT1VQX01FTU9SWV9DT1BZLCBib2R5LmRhdGEoKSwgYm9k
eS5zaXplKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAg
ICAqIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBlbGVtZW50IHRvIHVwbG9hZCwgYW5kIHNvbWUgbWF5
CisgICAgICAgICAgICAgKiBiZSAoYmlnKSBmaWxlcywgd2hpY2ggd2Ugd2lsbCB3YW50IHRvIG1t
YXAgaW5zdGVhZCBvZgorICAgICAgICAgICAgICogY29weWluZyBpbnRvIG1lbW9yeTsgVE9ETzog
c3VwcG9ydCB1cGxvYWQgb2Ygbm9uLWxvY2FsCisgICAgICAgICAgICAgKiAodGhpbmsgc2Z0cDov
LykgZmlsZXMgYnkgdXNpbmcgR0lPPworICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIFRP
RE86IHdlIGNhbiBhdm9pZCBhcHBlbmRpbmcgYWxsIHRoZSBidWZmZXJzIHRvIHRoZQorICAgICAg
ICAgICAgICogcmVxdWVzdF9ib2R5IHZhcmlhYmxlIHdpdGggdGhlIGZvbGxvd2luZyBjYWxsLCBi
dXQgd2UKKyAgICAgICAgICAgICAqIG5lZWQgdG8gZGVwZW5kIG9uIGxpYnNvdXAgPiAyLjI1LjQK
KyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBzb3VwX21lc3NhZ2VfYm9keV9zZXRfYWNj
dW11bGF0ZShtc2ctPnJlcXVlc3RfYm9keSwgRkFMU0UpOworICAgICAgICAgICAgICovCisgICAg
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBpKyspIHsKKyAgICAg
ICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgPSBodHRwQm9keS0+ZWxl
bWVudHMoKVtpXTsKKworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Lm1fdHlwZSA9PSBGb3Jt
RGF0YUVsZW1lbnQ6OmRhdGEpCisgICAgICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5
X2FwcGVuZChtc2ctPnJlcXVlc3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9SQVJZLCBlbGVtZW50
Lm1fZGF0YS5kYXRhKCksIGVsZW1lbnQubV9kYXRhLnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIG1h
cHBpbmcgZm9yIHVwbG9hZGVkIGZpbGVzIGNvZGUgaW5zcGlyZWQgYnkgdGVjaG5pcXVlIHVzZWQg
aW4KKyAgICAgICAgICAgICAgICAgICAgICogbGlic291cCdzIHNpbXBsZS1odHRwZCB0ZXN0Cisg
ICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBpbnQgZmQgPSBvcGVu
KGVsZW1lbnQubV9maWxlbmFtZS51dGY4KCkuZGF0YSgpLCBPX0NMT0VYRUN8T19SRE9OTFkpOwor
CisgICAgICAgICAgICAgICAgICAgIGlmIChmZCA9PSAtMSkgeworICAgICAgICAgICAgICAgICAg
ICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcigid2Via2l0LW5ldHdvcmstZXJyb3IiLCBFUlJPUl9V
TkFCTEVfVE9fT1BFTl9GSUxFLCB1cmxTdHJpbmcsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBlcnJvcik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBnX29iamVjdF91bnJlZihtc2cpOworICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgc3RydWN0IHN0YXQgc3RhdEJ1ZjsKKyAgICAgICAgICAgICAgICAgICAgZnN0
YXQoZmQsICZzdGF0QnVmKTsKKworICAgICAgICAgICAgICAgICAgICBGaWxlTWFwcGluZyogZmls
ZU1hcHBpbmcgPSBnX3NsaWNlX25ldyAoRmlsZU1hcHBpbmcpOworCisgICAgICAgICAgICAgICAg
ICAgIGZpbGVNYXBwaW5nLT5wdHIgPSBtbWFwKE5VTEwsIHN0YXRCdWYuc3Rfc2l6ZSwgUFJPVF9S
RUFELCBNQVBfUFJJVkFURSwgZmQsIDApOworICAgICAgICAgICAgICAgICAgICBpZiAoZmlsZU1h
cHBpbmctPnB0ciA9PSBNQVBfRkFJTEVEKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZXNv
dXJjZUVycm9yIGVycm9yKCJ3ZWJraXQtbmV0d29yay1lcnJvciIsIEVSUk9SX1VOQUJMRV9UT19N
QVBfRklMRSwgdXJsU3RyaW5nLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgICAgICAg
ICAgICAgZC0+Y2xpZW50KCktPmRpZEZhaWwodGhpcywgZXJyb3IpOworICAgICAgICAgICAgICAg
ICAgICAgICAgZnJlZUZpbGVNYXBwaW5nKGZpbGVNYXBwaW5nKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGdfb2JqZWN0X3VucmVmKG1zZyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZmls
ZU1hcHBpbmctPmxlbmd0aCA9IHN0YXRCdWYuc3Rfc2l6ZTsKKworICAgICAgICAgICAgICAgICAg
ICBjbG9zZShmZCk7CisKKyAgICAgICAgICAgICAgICAgICAgU291cEJ1ZmZlciogc291cEJ1ZmZl
cjsKKworICAgICAgICAgICAgICAgICAgICBzb3VwQnVmZmVyID0gc291cF9idWZmZXJfbmV3X3dp
dGhfb3duZXIoZmlsZU1hcHBpbmctPnB0ciwgZmlsZU1hcHBpbmctPmxlbmd0aCwgZmlsZU1hcHBp
bmcsIGZyZWVGaWxlTWFwcGluZyk7CisgICAgICAgICAgICAgICAgICAgIHNvdXBfbWVzc2FnZV9i
b2R5X2FwcGVuZF9idWZmZXIobXNnLT5yZXF1ZXN0X2JvZHksIHNvdXBCdWZmZXIpOworICAgICAg
ICAgICAgICAgICAgICBzb3VwX2J1ZmZlcl9mcmVlKHNvdXBCdWZmZXIpOworICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIGQtPm1fbXNnID0g
c3RhdGljX2Nhc3Q8U291cE1lc3NhZ2UqPihnX29iamVjdF9yZWYobXNnKSk7Ci0tIAoxLjUuNi41
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27232</attachid>
            <date>2009-02-01 09:54:32 -0800</date>
            <delta_ts>2009-02-12 10:19:09 -0800</delta_ts>
            <desc>patch ready to be committed</desc>
            <filename>0001--GTK-Soup-backend-must-handle-upload-of-multiple-fi.patch</filename>
            <type>text/plain</type>
            <size>7026</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSBjODEyMWMzYjQzZWMzMjU0M2ViMTFmMTJiNjc5MjE5MTMxMzkxM2RjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGtvdkBrb3YuZXRpLmJy
PgpEYXRlOiBXZWQsIDI4IEphbiAyMDA5IDIzOjI3OjMzIC0wMjAwClN1YmplY3Q6IFtQQVRDSF0g
W0dUS10gU291cCBiYWNrZW5kIG11c3QgaGFuZGxlIHVwbG9hZCBvZiBtdWx0aXBsZSBmaWxlcwog
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MzQzCgpTdXBwb3J0IG11
bHRpcGFydCByZXF1ZXN0IGJvZGllcyBtbWFwJ2luZyBmaWxlcyB0byBiZSB1cGxvYWRlZC4KLS0t
CiBXZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAg
MTQgKysrCiAuLi4vcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAg
ICB8ICAxMDAgKysrKysrKysrKysrKysrKystLS0KIDIgZmlsZXMgY2hhbmdlZCwgMTAxIGluc2Vy
dGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTZlNDAyMS4uMzliMWVlZiAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBA
QAorMjAwOS0wMS0zMCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbR1RLXSBTb3Vw
IGJhY2tlbmQgbXVzdCBoYW5kbGUgdXBsb2FkIG9mIG11bHRpcGxlIGZpbGVzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODM0MworCisgICAgICAgIFN1
cHBvcnQgbXVsdGlwYXJ0IHJlcXVlc3QgYm9kaWVzIG1tYXAnaW5nIGZpbGVzIHRvIGJlIHVwbG9h
ZGVkLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291
cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6ZnJlZUZpbGVN
YXBwaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlSGFuZGxlOjpzdGFydEh0dHApOgor
CiAyMDA5LTAxLTMwICBEYXZpZCBMZXZpbiAgPGxldmluQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBBbGV4ZXkgUHJvc2t1cnlha292LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VIYW5kbGVTb3VwLmNwcCBiL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggZGE5Njg3My4u
Y2Y0ZWYwMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VIYW5kbGVTb3VwLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZUhhbmRsZVNvdXAuY3BwCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA4
IFhhbiBMb3BleiA8eGFuQGdub21lLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOCBDb2xsYWJv
cmEgTHRkLgogICogQ29weXJpZ2h0IChDKSAyMDA5IEhvbGdlciBIYW5zIFBldGVyIEZyZXl0aGVy
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUu
b3JnPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSwxMSArMjIsMTEgQEAKICAqLwogCiAjaW5j
bHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIlJlc291cmNl
SGFuZGxlLmgiCiAKICNpbmNsdWRlICJCYXNlNjQuaCIKICNpbmNsdWRlICJDb29raWVKYXJTb3Vw
LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkRvY0xvYWRlci5oIgogI2luY2x1
ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSFRUUFBhcnNlcnMuaCIKQEAgLTM3LDkgKzM4LDE0IEBA
CiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRleHRFbmNvZGluZy5o
IgogCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgogI2luY2x1ZGUgPGdp
by9naW8uaD4KICNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KICNpbmNsdWRlIDxsaWJzb3VwL3Nv
dXAtbWVzc2FnZS5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zdGF0
Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CiAKICNpZiBQTEFURk9STShHVEspCiAgICAgI2lmIEdM
SUJfQ0hFQ0tfVkVSU0lPTigyLDEyLDApCkBAIC01NSw5ICs2MSwyNCBAQCBlbnVtCiB7CiAgICAg
RVJST1JfVFJBTlNQT1JULAogICAgIEVSUk9SX1VOS05PV05fUFJPVE9DT0wsCi0gICAgRVJST1Jf
QkFEX05PTl9IVFRQX01FVEhPRAorICAgIEVSUk9SX0JBRF9OT05fSFRUUF9NRVRIT0QsCisgICAg
RVJST1JfVU5BQkxFX1RPX09QRU5fRklMRSwKK307CisKK3N0cnVjdCBGaWxlTWFwcGluZworewor
ICAgIGdwb2ludGVyIHB0cjsKKyAgICBnc2l6ZSBsZW5ndGg7CiB9OwogCitzdGF0aWMgdm9pZCBm
cmVlRmlsZU1hcHBpbmcoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBGaWxlTWFwcGluZyogZmlsZU1h
cHBpbmcgPSBzdGF0aWNfY2FzdDxGaWxlTWFwcGluZyo+KGRhdGEpOworICAgIGlmIChmaWxlTWFw
cGluZy0+cHRyICE9IE1BUF9GQUlMRUQpCisgICAgICAgIG11bm1hcChmaWxlTWFwcGluZy0+cHRy
LCBmaWxlTWFwcGluZy0+bGVuZ3RoKTsKKyAgICBnX3NsaWNlX2ZyZWUoRmlsZU1hcHBpbmcsIGZp
bGVNYXBwaW5nKTsKK30KKwogc3RhdGljIHZvaWQgY2xlYW51cEdpb09wZXJhdGlvbihSZXNvdXJj
ZUhhbmRsZUludGVybmFsKiBoYW5kbGUpOwogCiBSZXNvdXJjZUhhbmRsZUludGVybmFsOjp+UmVz
b3VyY2VIYW5kbGVJbnRlcm5hbCgpCkBAIC0zMTUsMTcgKzMzNiw3MCBAQCBib29sIFJlc291cmNl
SGFuZGxlOjpzdGFydEh0dHAoU3RyaW5nIHVybFN0cmluZykKIAogICAgIEZvcm1EYXRhKiBodHRw
Qm9keSA9IGQtPm1fcmVxdWVzdC5odHRwQm9keSgpOwogICAgIGlmIChodHRwQm9keSAmJiAhaHR0
cEJvZHktPmlzRW1wdHkoKSkgewotICAgICAgICAvLyBNYWtpbmcgYSBjb3B5IG9mIHRoZSByZXF1
ZXN0IGJvZHkgaXNuJ3QgdGhlIG1vc3QgZWZmaWNpZW50IHdheSB0bwotICAgICAgICAvLyBzZXJp
YWxpemUgaXQsIGJ1dCBieSBmYXIgdGhlIG1vc3Qgc2ltcGxlLiBEZWFsaW5nIHdpdGggaW5kaXZp
ZHVhbAotICAgICAgICAvLyBGb3JtRGF0YSBlbGVtZW50cyBhbmQgc2hhcmVkIGJ1ZmZlcnMgc2hv
dWxkIGJlIG1vcmUgbWVtb3J5Ci0gICAgICAgIC8vIGVmZmljaWVudC4KLSAgICAgICAgLy8KLSAg
ICAgICAgLy8gVGhpcyBwb3NzaWJseSBpc24ndCBoYW5kbGluZyBmaWxlIHVwbG9hZHMvYXR0YWNo
bWVudHMsIGZvciB3aGljaAotICAgICAgICAvLyBzaGFyZWQgYnVmZmVycyBvciBzdHJlYW1pbmcg
c2hvdWxkIGRlZmluaXRlbHkgYmUgdXNlZC4KLSAgICAgICAgVmVjdG9yPGNoYXI+IGJvZHk7Ci0g
ICAgICAgIGh0dHBCb2R5LT5mbGF0dGVuKGJvZHkpOwotICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0
X3JlcXVlc3QobXNnLCBkLT5tX3JlcXVlc3QuaHR0cENvbnRlbnRUeXBlKCkudXRmOCgpLmRhdGEo
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPVVBfTUVNT1JZX0NPUFksIGJv
ZHkuZGF0YSgpLCBib2R5LnNpemUoKSk7CisgICAgICAgIHNpemVfdCBudW1FbGVtZW50cyA9IGh0
dHBCb2R5LT5lbGVtZW50cygpLnNpemUoKTsKKworICAgICAgICAvLyBoYW5kbGUgdGhlIG1vc3Qg
Y29tbW9uIGNhc2UgKGkuZS4gbm8gZmlsZSB1cGxvYWQpCisgICAgICAgIGlmIChudW1FbGVtZW50
cyA8IDIpIHsKKyAgICAgICAgICAgIFZlY3RvcjxjaGFyPiBib2R5OworICAgICAgICAgICAgaHR0
cEJvZHktPmZsYXR0ZW4oYm9keSk7CisgICAgICAgICAgICBzb3VwX21lc3NhZ2Vfc2V0X3JlcXVl
c3QobXNnLCBkLT5tX3JlcXVlc3QuaHR0cENvbnRlbnRUeXBlKCkudXRmOCgpLmRhdGEoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT1VQX01FTU9SWV9DT1BZLCBib2R5
LmRhdGEoKSwgYm9keS5zaXplKCkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoK
KyAgICAgICAgICAgICAqIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBlbGVtZW50IHRvIHVwbG9hZCwg
YW5kIHNvbWUgbWF5CisgICAgICAgICAgICAgKiBiZSAoYmlnKSBmaWxlcywgd2hpY2ggd2Ugd2ls
bCB3YW50IHRvIG1tYXAgaW5zdGVhZCBvZgorICAgICAgICAgICAgICogY29weWluZyBpbnRvIG1l
bW9yeTsgVE9ETzogc3VwcG9ydCB1cGxvYWQgb2Ygbm9uLWxvY2FsCisgICAgICAgICAgICAgKiAo
dGhpbmsgc2Z0cDovLykgZmlsZXMgYnkgdXNpbmcgR0lPPworICAgICAgICAgICAgICoKKyAgICAg
ICAgICAgICAqIFRPRE86IHdlIGNhbiBhdm9pZCBhcHBlbmRpbmcgYWxsIHRoZSBidWZmZXJzIHRv
IHRoZQorICAgICAgICAgICAgICogcmVxdWVzdF9ib2R5IHZhcmlhYmxlIHdpdGggdGhlIGZvbGxv
d2luZyBjYWxsLCBidXQgd2UKKyAgICAgICAgICAgICAqIG5lZWQgdG8gZGVwZW5kIG9uIGxpYnNv
dXAgPiAyLjI1LjQKKyAgICAgICAgICAgICAqCisgICAgICAgICAgICAgKiBzb3VwX21lc3NhZ2Vf
Ym9keV9zZXRfYWNjdW11bGF0ZShtc2ctPnJlcXVlc3RfYm9keSwgRkFMU0UpOworICAgICAgICAg
ICAgICovCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bUVsZW1lbnRzOyBp
KyspIHsKKyAgICAgICAgICAgICAgICBjb25zdCBGb3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgPSBo
dHRwQm9keS0+ZWxlbWVudHMoKVtpXTsKKworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50Lm1f
dHlwZSA9PSBGb3JtRGF0YUVsZW1lbnQ6OmRhdGEpCisgICAgICAgICAgICAgICAgICAgIHNvdXBf
bWVzc2FnZV9ib2R5X2FwcGVuZChtc2ctPnJlcXVlc3RfYm9keSwgU09VUF9NRU1PUllfVEVNUE9S
QVJZLCBlbGVtZW50Lm1fZGF0YS5kYXRhKCksIGVsZW1lbnQubV9kYXRhLnNpemUoKSk7CisgICAg
ICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAg
ICAgICAgICAqIG1hcHBpbmcgZm9yIHVwbG9hZGVkIGZpbGVzIGNvZGUgaW5zcGlyZWQgYnkgdGVj
aG5pcXVlIHVzZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICogbGlic291cCdzIHNpbXBsZS1o
dHRwZCB0ZXN0CisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBp
bnQgZmQgPSBvcGVuKGVsZW1lbnQubV9maWxlbmFtZS51dGY4KCkuZGF0YSgpLCBPX0NMT0VYRUN8
T19SRE9OTFkpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChmZCA9PSAtMSkgeworICAgICAg
ICAgICAgICAgICAgICAgICAgUmVzb3VyY2VFcnJvciBlcnJvcigid2Via2l0LW5ldHdvcmstZXJy
b3IiLCBFUlJPUl9VTkFCTEVfVE9fT1BFTl9GSUxFLCB1cmxTdHJpbmcsIHN0cmVycm9yKGVycm5v
KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBkLT5jbGllbnQoKS0+ZGlkRmFpbCh0aGlzLCBl
cnJvcik7CisgICAgICAgICAgICAgICAgICAgICAgICBnX29iamVjdF91bnJlZihtc2cpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgc3RhdEJ1ZjsKKyAgICAgICAgICAg
ICAgICAgICAgZnN0YXQoZmQsICZzdGF0QnVmKTsKKworICAgICAgICAgICAgICAgICAgICBGaWxl
TWFwcGluZyogZmlsZU1hcHBpbmcgPSBnX3NsaWNlX25ldyhGaWxlTWFwcGluZyk7CisKKyAgICAg
ICAgICAgICAgICAgICAgZmlsZU1hcHBpbmctPnB0ciA9IG1tYXAoTlVMTCwgc3RhdEJ1Zi5zdF9z
aXplLCBQUk9UX1JFQUQsIE1BUF9QUklWQVRFLCBmZCwgMCk7CisgICAgICAgICAgICAgICAgICAg
IGlmIChmaWxlTWFwcGluZy0+cHRyID09IE1BUF9GQUlMRUQpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIFJlc291cmNlRXJyb3IgZXJyb3IoIndlYmtpdC1uZXR3b3JrLWVycm9yIiwgRVJST1Jf
VU5BQkxFX1RPX09QRU5fRklMRSwgdXJsU3RyaW5nLCBzdHJlcnJvcihlcnJubykpOworICAgICAg
ICAgICAgICAgICAgICAgICAgZC0+Y2xpZW50KCktPmRpZEZhaWwodGhpcywgZXJyb3IpOworICAg
ICAgICAgICAgICAgICAgICAgICAgZnJlZUZpbGVNYXBwaW5nKGZpbGVNYXBwaW5nKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGdfb2JqZWN0X3VucmVmKG1zZyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZmlsZU1hcHBpbmct
Pmxlbmd0aCA9IHN0YXRCdWYuc3Rfc2l6ZTsKKworICAgICAgICAgICAgICAgICAgICBjbG9zZShm
ZCk7CisKKyAgICAgICAgICAgICAgICAgICAgU291cEJ1ZmZlciogc291cEJ1ZmZlciA9IHNvdXBf
YnVmZmVyX25ld193aXRoX293bmVyKGZpbGVNYXBwaW5nLT5wdHIsIGZpbGVNYXBwaW5nLT5sZW5n
dGgsIGZpbGVNYXBwaW5nLCBmcmVlRmlsZU1hcHBpbmcpOworICAgICAgICAgICAgICAgICAgICBz
b3VwX21lc3NhZ2VfYm9keV9hcHBlbmRfYnVmZmVyKG1zZy0+cmVxdWVzdF9ib2R5LCBzb3VwQnVm
ZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgc291cF9idWZmZXJfZnJlZShzb3VwQnVmZmVyKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9CiAKICAg
ICBkLT5tX21zZyA9IHN0YXRpY19jYXN0PFNvdXBNZXNzYWdlKj4oZ19vYmplY3RfcmVmKG1zZykp
OwotLSAKMS41LjYuNQoK
</data>

          </attachment>
      

    </bug>

</bugzilla>