<?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>29679</bug_id>
          
          <creation_ts>2009-09-23 06:08:15 -0700</creation_ts>
          <short_desc>[Qt] Improve current &quot;load failed&quot; report mechanism in QtWebKit</short_desc>
          <delta_ts>2009-09-29 07:11:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>29731</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antonio Gomes">tonikitoo</reporter>
          <assigned_to name="Antonio Gomes">tonikitoo</assigned_to>
          <cc>ariya.hidayat</cc>
    
    <cc>benjamin</cc>
    
    <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>vestbo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>149370</commentid>
    <comment_count>0</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-09-23 06:08:15 -0700</bug_when>
    <thetext>Currently our &quot;load failed&quot; report is very poor: a &quot;loadFinished&quot; signal that has a bool paramater &quot;success&quot;.

It is not enough for example in the case client-app wants to load error pages and such to notify the user about the non-successful load. People usually do it by either: 

1) listening to QNAM&apos;s &quot;finish&quot; signal, and from the slot code they get the current error code (if any), and handle it afterward in the application side:

(...)
    connect(view-&gt;page()-&gt;networkAccessManager(), SIGNAL(finished(QNetworkReply*)),
            this, SLOT(onNetworkFinished(QNetworkReply*)));
    connect(view, SIGNAL(loadFinished(bool)),this, SLOT(onLoadFinished(bool)));
(...)

void myBrowser::onNetworkFinished(QNetworkReply *reply)
{
    m_networkError = reply-&gt;error();
    m_httpStatusCode = reply-&gt;attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
}

(...)

void myBrowser::onLoadFinished(bool success)
{
    // handle m_networkError and m_httpStatusCode here 
}

2) Listen to QWebPage&apos;s &quot;unsupportedContent&quot; signal (like the Arora browser), which is not explicitely documented to be used to handle load errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149371</commentid>
    <comment_count>1</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-09-23 06:08:39 -0700</bug_when>
    <thetext>In WebCore/loader/FrameLoader.cpp, we get a exactly point where the loader detects a frame has failed to load and expects an error page to be loaded. See quote below:

void FrameLoader::checkLoadCompleteForThisFrame()
(...)
    // If we&apos;ve received any errors we may be stuck in the provisional
    // state and actually complete.
    const ResourceError&amp; error = pdl-&gt;mainDocumentError();
    if (error.isNull())
        return;

   ...
   m_delegateIsHandlingProvisionalLoadError = true;
   m_client-&gt;dispatchDidFailProvisionalLoad(error); &lt;----- during this call WebCore reports
                                                           the error to the frameloaderClient
                                                           and expects an error page to be
                                                           loaded
   m_delegateIsHandlingProvisionalLoadError = false;

   // Finish resetting the load state, but only if another load hasn&apos;t been started by the
   // delegate callback.
(...)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149373</commentid>
    <comment_count>2</comment_count>
      <attachid>39992</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-09-23 06:10:48 -0700</bug_when>
    <thetext>Created attachment 39992
patch 0.1 - add loadFailed signal to the API

patch adds a loadFailed signal to QtWebKit API, and introduces a new QWebFrame::LoadError class (passed a parameter).

it has m_failingUrl and m_errorCode member fields, which is enough to a better error handling in client app side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149380</commentid>
    <comment_count>3</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-09-23 06:33:34 -0700</bug_when>
    <thetext>What about situations where an error occoured and the server already shows an error page?

I don&apos;t like the variable name &quot;errorCode&quot;. Shouldn&apos;t it be made more clear that there is talk of http errors?

What is someone wants to receive the success codes? 

Also, what about errors due to no connection etc. that are not http errors?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149390</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2009-09-23 07:23:39 -0700</bug_when>
    <thetext>I really like the idea but I think we can got further in the implementation.

There is at least two kind of errors, those from the protocol (http/ftp codes), and the error from the system (connection lost, no dns, (no memory left?)).

Instead of having a only an error code, we could have an enum describing the type of error (no connection, no dns, server hang, http error, etc).

I am not sure how to represent the errors from the protocol.

An error string would be necessary too. Otherwise each user will have to write the same kind of switch() to generate an error message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149391</commentid>
    <comment_count>5</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-09-23 07:31:20 -0700</bug_when>
    <thetext>
&gt; An error string would be necessary too. Otherwise each user will have to write
&gt; the same kind of switch() to generate an error message.

They would need that for translations anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149392</commentid>
    <comment_count>6</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-09-23 07:34:26 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; I really like the idea but I think we can got further in the implementation.
&gt; 
&gt; There is at least two kind of errors, those from the protocol (http/ftp codes),
&gt; and the error from the system (connection lost, no dns, (no memory left?)).
&gt; 
&gt; Instead of having a only an error code, we could have an enum describing the
&gt; type of error (no connection, no dns, server hang, http error, etc).

We probably need to separate this into Client and Server HTTP errors? And we need to know if the server handled it or not, like if the server already showed another error page, or if we have to do it.

Maybe it is enough to tell that a ClientHttpError or ServerHttpError occoured (and whether it was handled or not), and make it very easy to get the httpCode, as I might be interested in that httpCode even for success, so I don&apos;t think it should be restricted to errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149393</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2009-09-23 07:44:05 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; An error string would be necessary too. Otherwise each user will have to write
&gt; &gt; the same kind of switch() to generate an error message.
&gt; 
&gt; They would need that for translations anyway.

I am not sure to understand. We can tr() the strings as usual. See QIODevice::errorString().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149394</commentid>
    <comment_count>8</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2009-09-23 07:46:04 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; &gt; An error string would be necessary too. Otherwise each user will have to write
&gt; &gt; &gt; the same kind of switch() to generate an error message.
&gt; &gt; 
&gt; &gt; They would need that for translations anyway.
&gt; 
&gt; I am not sure to understand. We can tr() the strings as usual. See
&gt; QIODevice::errorString().

You mean that the default translations will be distributes with QtWebKit. That is an option I guess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149395</commentid>
    <comment_count>9</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-09-23 07:50:00 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; An error string would be necessary too. Otherwise each user will have to write
&gt; &gt; &gt; &gt; the same kind of switch() to generate an error message.
&gt; &gt; &gt; 
&gt; &gt; &gt; They would need that for translations anyway.
&gt; &gt; 
&gt; &gt; I am not sure to understand. We can tr() the strings as usual. See
&gt; &gt; QIODevice::errorString().
&gt; 
&gt; You mean that the default translations will be distributes with QtWebKit. That
&gt; is an option I guess.

qnetworkreply already provides such text as well as we errorCode, but it is a poor description of the error. Probably browsers will want to customize the content and its presetation (?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149476</commentid>
    <comment_count>10</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-09-23 12:24:13 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; What about situations where an error occoured and the server already shows an
&gt; error page?

when an redirect occurs internally in the server side (e.g. custom error page provided by the server), WebCore does not even notify frameLoaderClientQt of the &quot;error&quot;. after debugging this case a bit, it seems like this case is treated as a normal redirection by WebCore/loader.

e.g:
1) go to
2) then go to http://globo.com/xxxx

note: globo.com exist, and /xxxx folder does not. the server redirects us to an internal default error page.

&gt; I don&apos;t like the variable name &quot;errorCode&quot;. Shouldn&apos;t it be made more clear
&gt; that there is talk of http errors?

here we are talking about qnetworkreply errors in fact, whereas protocol specifc errors are properly mapped to the same &quot;language&quot;.

although I agree that server response codes are also important.

&gt; What is someone wants to receive the success codes? 

well, it can be out of the scope of this load failed error thing, and in this case it might make sense to listen to qnam signals.

&gt; Also, what about errors due to no connection etc. that are not http errors?

yes, http errors are actually the errors we are not handling in patch 0.1

&gt; Instead of having a only an error code, we could have an enum describing the
&gt; type of error (no connection, no dns, server hang, http error, etc).

right, i am considering the following for now.

QUrl m_failingUrl;
int m_networkCodeError;
int m_serverCodeError;

what do you think ?


&gt; I am not sure how to represent the errors from the protocol.

i am not sure if we need to pass the string error as well. i have not seen any browser show a not custom message, but it is be be discussed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149650</commentid>
    <comment_count>11</comment_count>
      <attachid>40044</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-09-23 21:26:01 -0700</bug_when>
    <thetext>Created attachment 40044
patch 0.2 - add loadFailed signal to the API 

second try. better patch (previous patch in a better shape).

Changes:

1) QWebFrame::LoadError class w/ the following fields (and respective getter methods):
        QUrl m_failingUrl;
        int m_networkCodeError;
        QString m_localizedDescription;
        bool m_isNull;
2) m_localizedDescription is the error string reported by QNAM.

patch still does not add support for server errors, and I am also starting to think we could not
do it. Reason: most of the pages i tested w/ server errors handle the error in the server side, serving
the browser w/ the appropriated error page themselves. Also Google Chrome and Firefox do not load
custom error pages in case of server errors.

e.g: 

* http://globo.com/xxxxx
* http://localhost/this_does_not_exist (if apache is installed).

in both case and many others, error page is loaded by the servers, so client app could not care about them (?)

same for http auth pages and friends.

thoughts ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150599</commentid>
    <comment_count>12</comment_count>
      <attachid>40044</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-09-28 12:28:01 -0700</bug_when>
    <thetext>Comment on attachment 40044
patch 0.2 - add loadFailed signal to the API 

kenneth will come up w/ something more robust</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>150900</commentid>
    <comment_count>13</comment_count>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2009-09-29 07:11:22 -0700</bug_when>
    <thetext>kenneth, landed his patch in http://trac.webkit.org/projects/webkit/changeset/48870

it probably addresses the main concerns of this bug. then i will close this as &apos;fixed&apos;

great work</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39992</attachid>
            <date>2009-09-23 06:10:48 -0700</date>
            <delta_ts>2009-09-23 21:26:01 -0700</delta_ts>
            <desc>patch 0.1 - add loadFailed signal to the API</desc>
            <filename>0001-2009-09-22-Antonio-Gomes-antonio.gomes-openbossa.patch</filename>
            <type>text/plain</type>
            <size>6167</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSAwYjhhMmQzYmY2N2FkNmQzNTBmZDU4NTE4NTY0ZTNiZmQyMTNhYzA3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzICh0b25pa2l0b28pIDxhbnRvbmlvLmdv
bWVzQG9wZW5ib3NzYS5vcmc+CkRhdGU6IFR1ZSwgMjIgU2VwIDIwMDkgMDk6NTk6MzkgLTA0MDAK
U3ViamVjdDogW1BBVENIXSAyMDA5LTA5LTIyICBBbnRvbmlvIEdvbWVzICAgPGFudG9uaW8uZ29t
ZXNAb3BlbmJvc3NhLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgog
ICAgICAgIEFkZGVkIGEgYmV0dGVyIGxvYWQgZXJyb3IgbWVjaGFuaXNtIHRvIFF0IEFQSTogbG9h
ZEZhaWxlZCBzaWduYWwuCgogICAgICAgICogQXBpL3F3ZWJmcmFtZS5oOgogICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CiAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRvd25sb2FkKToKLS0tCiBXZWJLaXQv
cXQvQXBpL3F3ZWJmcmFtZS5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEzICsrKysrKysr
KysrKysKIFdlYktpdC9xdC9BcGkvcXdlYmdyYXBoaWNzaXRlbS5jcHAgICAgICAgICAgICAgICB8
ICAgIDUgKy0tLS0KIFdlYktpdC9xdC9BcGkvcXdlYmdyYXBoaWNzaXRlbS5oICAgICAgICAgICAg
ICAgICB8ICAgIDMgKy0tCiBXZWJLaXQvcXQvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDExICsrKysrKysrKysrCiBXZWJLaXQvcXQvUUdWTGF1bmNoZXIvbWFpbi5j
cHAgICAgICAgICAgICAgICAgICAgfCAgICA0ICsrLS0KIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcCB8ICAgIDcgKysrKysrKwogV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaCAgIHwgICAgMSArCiA3IGZpbGVzIGNoYW5n
ZWQsIDM2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L3F0L0FwaS9xd2ViZnJhbWUuaCBiL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmgKaW5kZXggOTky
OWQ2ZS4uNzBkOWVjYyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAorKysg
Yi9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCkBAIC0yMzMsNiArMjMzLDE4IEBAIHB1YmxpYzoK
IAogICAgIFFXZWJTZWN1cml0eU9yaWdpbiBzZWN1cml0eU9yaWdpbigpIGNvbnN0OwogCisgICAg
Y2xhc3MgTG9hZEVycm9yIHsKKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgUVVybCBtX2Zh
aWxpbmdVcmw7CisgICAgICAgICAgICBpbnQgbV9lcnJvckNvZGU7CisKKyAgICAgICAgTG9hZEVy
cm9yKGNvbnN0IFFVcmwmIGZhaWxpbmdVUkwsIGludCBlcnJvckNvZGUpCisgICAgICAgICAgICA6
IG1fZmFpbGluZ1VybChmYWlsaW5nVVJMKQorICAgICAgICAgICAgLCBtX2Vycm9yQ29kZShlcnJv
ckNvZGUpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgIH07CisKIHB1YmxpYyBRX1NMT1RTOgog
ICAgIFFWYXJpYW50IGV2YWx1YXRlSmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHRTb3Vy
Y2UpOwogI2lmbmRlZiBRVF9OT19QUklOVEVSCkBAIC0yNTQsNiArMjY2LDcgQEAgUV9TSUdOQUxT
OgogCiAgICAgdm9pZCBsb2FkU3RhcnRlZCgpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGJvb2wg
b2spOworICAgIHZvaWQgbG9hZEZhaWxlZChjb25zdCBRV2ViRnJhbWU6OkxvYWRFcnJvciYpOwog
CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZTsKZGlmZiAtLWdpdCBhL1dlYktp
dC9xdC9BcGkvcXdlYmdyYXBoaWNzaXRlbS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJncmFwaGlj
c2l0ZW0uY3BwCmluZGV4IDY4MDE4ZjQuLmQ1YzVhOWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9B
cGkvcXdlYmdyYXBoaWNzaXRlbS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZ3JhcGhpY3Np
dGVtLmNwcApAQCAtNzcsMTAgKzc3LDcgQEAgdm9pZCBRV2ViR3JhcGhpY3NJdGVtUHJpdmF0ZTo6
X3FfZG9Mb2FkRmluaXNoZWQoYm9vbCBzdWNjZXNzKQogICAgIGlmIChxLT50aXRsZSgpLmlzRW1w
dHkoKSkKICAgICAgICAgZW1pdCBxLT51cmxDaGFuZ2VkKHEtPnVybCgpKTsKIAotICAgIGlmIChz
dWNjZXNzKQotICAgICAgICBlbWl0IHEtPmxvYWRGaW5pc2hlZCgpOwotICAgIGVsc2UKLSAgICAg
ICAgZW1pdCBxLT5sb2FkRmFpbGVkKCk7CisgICAgZW1pdCBxLT5sb2FkRmluaXNoZWQoc3VjY2Vz
cyk7CiB9CiAKIHZvaWQgUVdlYkdyYXBoaWNzSXRlbVByaXZhdGU6OnNjcm9sbChpbnQgZHgsIGlu
dCBkeSwgY29uc3QgUVJlY3QmIHJlY3RUb1Njcm9sbCkKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9B
cGkvcXdlYmdyYXBoaWNzaXRlbS5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZ3JhcGhpY3NpdGVtLmgK
aW5kZXggMmM2ODE3YS4uNWM5NjAwMyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZ3Jh
cGhpY3NpdGVtLmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZ3JhcGhpY3NpdGVtLmgKQEAgLTk1
LDggKzk1LDcgQEAgcHVibGljIFFfU0xPVFM6CiAKIFFfU0lHTkFMUzoKICAgICB2b2lkIGxvYWRT
dGFydGVkKCk7Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIGxvYWRGYWlsZWQo
KTsKKyAgICB2b2lkIGxvYWRGaW5pc2hlZChib29sIHN1Y2Nlc3MpOwogCiAgICAgdm9pZCBwcm9n
cmVzc0NoYW5nZWQocXJlYWwpOwogICAgIHZvaWQgaW50ZXJhY3Rpdml0eUNoYW5nZWQoKTsKZGlm
ZiAtLWdpdCBhL1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4
IDczNTA5MDMuLjE3MzZjZjggMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIv
V2ViS2l0L3F0L0NoYW5nZUxvZwpAQCAtMiw2ICsyLDE3IEBACiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAgQWRkZWQgYSBiZXR0ZXIgbG9hZCBlcnJvciBt
ZWNoYW5pc20gdG8gUXQgQVBJOiBsb2FkRmFpbGVkIHNpZ25hbC4KKworICAgICAgICAqIEFwaS9x
d2ViZnJhbWUuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlk
RmFpbFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVu
dFF0Ojpkb3dubG9hZCk6CisKKzIwMDktMDktMjIgIEFudG9uaW8gR29tZXMgICA8YW50b25pby5n
b21lc0BvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCiAgICAgICAgIEFkZGVkIGEgUVdlYkZyYW1lOjpsb2FkIG1ldGhvZCByZWNlaXZpbmcgYSBR
V2ViTG9hZFJlcXVlc3QgcGFyYW1ldGVyLgogCiAgICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6
CmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvUUdWTGF1bmNoZXIvbWFpbi5jcHAgYi9XZWJLaXQvcXQv
UUdWTGF1bmNoZXIvbWFpbi5jcHAKaW5kZXggOWQ0NzQyYS4uZTExMzQ0NiAxMDA2NDQKLS0tIGEv
V2ViS2l0L3F0L1FHVkxhdW5jaGVyL21haW4uY3BwCisrKyBiL1dlYktpdC9xdC9RR1ZMYXVuY2hl
ci9tYWluLmNwcApAQCAtMTYwLDcgKzE2MCw3IEBAIHB1YmxpYzoKIAogICAgICAgICB2aWV3LT5z
ZXRNYWluV2lkZ2V0KHNjZW5lLT53ZWJJdGVtKCkpOwogCi0gICAgICAgIGNvbm5lY3Qoc2NlbmUt
PndlYkl0ZW0oKSwgU0lHTkFMKGxvYWRGaW5pc2hlZCgpKSwgdGhpcywgU0xPVChsb2FkRmluaXNo
ZWQoKSkpOworICAgICAgICBjb25uZWN0KHNjZW5lLT53ZWJJdGVtKCksIFNJR05BTChsb2FkRmlu
aXNoZWQoYm9vbCkpLCB0aGlzLCBTTE9UKGxvYWRGaW5pc2hlZChib29sKSkpOwogICAgICAgICBj
b25uZWN0KHNjZW5lLT53ZWJJdGVtKCksIFNJR05BTCh0aXRsZUNoYW5nZWQoY29uc3QgUVN0cmlu
ZyYpKSwgdGhpcywgU0xPVChzZXRXaW5kb3dUaXRsZShjb25zdCBRU3RyaW5nJikpKTsKICAgICAg
ICAgY29ubmVjdChzY2VuZS0+d2ViSXRlbSgpLT5wYWdlKCksIFNJR05BTCh3aW5kb3dDbG9zZVJl
cXVlc3RlZCgpKSwgdGhpcywgU0xPVChjbG9zZSgpKSk7CiAKQEAgLTIwMCw3ICsyMDAsNyBAQCBw
cm90ZWN0ZWQgc2xvdHM6CiAgICAgICAgIGxvYWQodXJsRWRpdC0+dGV4dCgpKTsKICAgICB9CiAK
LSAgICB2b2lkIGxvYWRGaW5pc2hlZCgpCisgICAgdm9pZCBsb2FkRmluaXNoZWQoYm9vbCBzdWNj
ZXNzKQogICAgIHsKICAgICAgICAgUVVybCB1cmwgPSBzY2VuZS0+d2ViSXRlbSgpLT51cmwoKTsK
ICAgICAgICAgdXJsRWRpdC0+c2V0VGV4dCh1cmwudG9TdHJpbmcoKSk7CmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAgYi9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKaW5kZXggMGM2MzZmNi4u
NmI1MWRiOCAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0LmNwcApAQCAtNzc3LDYgKzc3Nyw5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
ZG93bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgV2ViQ29yCiAg
ICAgUU5ldHdvcmtSZXBseUhhbmRsZXIqIGhhbmRsZXIgPSBoYW5kbGUtPmdldEludGVybmFsKCkt
Pm1fam9iOwogICAgIFFOZXR3b3JrUmVwbHkqIHJlcGx5ID0gaGFuZGxlci0+cmVsZWFzZSgpOwog
ICAgIGlmIChyZXBseSkgeworICAgICAgICAvLyBsZXRzIGtlZXAgdGhlIGxhc3QgZXJyb3IgY29k
ZSBoYW5keSBzbyB3ZSBjYW4gcHJvcGVybHkKKyAgICAgICAgLy8gcmVwb3J0IGl0IGZvciBjbGll
bnQgYXBwcy4KKyAgICAgICAgbV9sYXN0TG9hZENvZGVFcnJvciA9IHJlcGx5LT5lcnJvcigpOwog
ICAgICAgICBRV2ViUGFnZSAqcGFnZSA9IG1fd2ViRnJhbWUtPnBhZ2UoKTsKICAgICAgICAgaWYg
KHBhZ2UtPmZvcndhcmRVbnN1cHBvcnRlZENvbnRlbnQoKSkKICAgICAgICAgICAgIGVtaXQgbV93
ZWJGcmFtZS0+cGFnZSgpLT51bnN1cHBvcnRlZENvbnRlbnQocmVwbHkpOwpAQCAtODY2LDYgKzg2
OSwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZQogICAgICAgICBwcmludGYoIiVzIC0gZGlk
RmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvclxuIiwgcVByaW50YWJsZShkcnREZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOwogCiAgICAgbV9sb2FkRXJyb3IgPSBl
cnJvcjsKKworICAgIC8vIGxvYWQgZXJyb3IgZW1pc3Npb24KKyAgICBRV2ViRnJhbWU6OkxvYWRF
cnJvciBxZXJyb3IgKFFXZWJGcmFtZTo6TG9hZEVycm9yKFFVcmwoZXJyb3IuZmFpbGluZ1VSTCgp
KSwgbV9sYXN0TG9hZENvZGVFcnJvcikpOworICAgIGVtaXQgbV93ZWJGcmFtZS0+bG9hZEZhaWxl
ZChxZXJyb3IpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkRmFp
bExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IpCmRpZmYgLS1naXQgYS9X
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oIGIvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAppbmRleCA4YTdlNDI4Li5iZTAy
YzFiIDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5oCisrKyBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmgKQEAgLTIxNSw2ICsyMTUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
bV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbjsKIAogICAgICAgICBSZXNvdXJjZUVycm9yIG1fbG9h
ZEVycm9yOworICAgICAgICBpbnQgbV9sYXN0TG9hZENvZGVFcnJvcjsKICAgICB9OwogCiB9Ci0t
IAoxLjYuMC40Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40044</attachid>
            <date>2009-09-23 21:26:01 -0700</date>
            <delta_ts>2009-09-28 12:28:01 -0700</delta_ts>
            <desc>patch 0.2 - add loadFailed signal to the API </desc>
            <filename>0001-2009-09-23-Antonio-Gomes-antonio.gomes-openbossa.patch</filename>
            <type>text/plain</type>
            <size>9707</size>
            <attacher name="Antonio Gomes">tonikitoo</attacher>
            
              <data encoding="base64">RnJvbSA3YjZhYmFiYWE4NzJlNzMxNDBiNGMxOWVlNWQ1NTZkNzY5Njk2YjY2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbnRvbmlvIEdvbWVzICh0b25pa2l0b28pIDxhbnRvbmlvLmdv
bWVzQG9wZW5ib3NzYS5vcmc+CkRhdGU6IFRodSwgMjQgU2VwIDIwMDkgMDA6MDc6MjcgLTA0MDAK
U3ViamVjdDogW1BBVENIXSAyMDA5LTA5LTIzICBBbnRvbmlvIEdvbWVzICAgPGFudG9uaW8uZ29t
ZXNAb3BlbmJvc3NhLm9yZz4KCiAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgog
ICAgICAgIFtRdF0gSW1wcm92ZSBjdXJyZW50ICJsb2FkIGZhaWxlZCIgcmVwb3J0IG1lY2hhbmlz
bSBpbiBRdFdlYktpdAogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yOTY3OQoKICAgICAgICBBZGRlZCBoZWxwZXIgYSBRV2ViRnJhbWU6OkxvYWRFcnJvciBj
bGFzcyBhbmQgYSBsb2FkRmFpbGVkIHNpZ25hbCB0byB0aGUgQVBJLgoKICAgICAgICBUaGUgbmV3
ICdsb2FkRmFpbGVkJyBzaWduYWwgaXMgZW1pdHRlZCBhdCB0aGUgbW9tZW50IFdlYkNvcmUgcmVw
b3J0cyBhbiBuZXR3b3JrCiAgICAgICAgZXJyb3IgaW4gdGhlIGN1cnJlbnQgbG9hZCBwcm9jZXNz
LCBleHBlY3RpbmcgYW4gZXJyb3IgcGFnZSB0byBiZSBzZXQgYnkgdGhlCiAgICAgICAgY2xpZW50
IGFwcGxpY2F0aW9uLgoKICAgICAgICBQYXRjaCBhbHNvIHJlbW92ZXMgdGhlIHVzZWxlc3MgJ2xv
YWRGYWlsZWQnIHNpZ25hbCBmcm9tIFFXZWJHcmFwaGljc0l0ZW0sIGFuZAogICAgICAgIG1ha2Ug
aXRzICdsb2FkRmluaXNoZWQnIHNpZ25hbCBjb21wYXRpYmxlIHRvIFFXZWJWaWV3J3MgdmVyc2lv
bi4KCiAgICAgICAgKiBBcGkvcXdlYmZyYW1lLmg6CiAgICAgICAgKiBBcGkvcXdlYmdyYXBoaWNz
aXRlbS5jcHA6CiAgICAgICAgKFFXZWJHcmFwaGljc0l0ZW1Qcml2YXRlOjpfcV9kb0xvYWRGaW5p
c2hlZCk6CiAgICAgICAgKiBBcGkvcXdlYmdyYXBoaWNzaXRlbS5oOgogICAgICAgICogUUdWTGF1
bmNoZXIvbWFpbi5jcHA6CiAgICAgICAgKE1haW5XaW5kb3c6OmluaXQpOgogICAgICAgIChNYWlu
V2luZG93Ojpsb2FkRmluaXNoZWQpOgogICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHA6CiAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkRmluaXNoTG9hZCk6CiAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmRvd25sb2FkKToKICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKToKICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaDoKLS0tCiBXZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oICAgICAg
ICAgICAgICAgICAgICAgICAgfCAgIDMxICsrKysrKysrKysrKysrKysrKysrCiBXZWJLaXQvcXQv
QXBpL3F3ZWJncmFwaGljc2l0ZW0uY3BwICAgICAgICAgICAgICAgfCAgICA1ICstLQogV2ViS2l0
L3F0L0FwaS9xd2ViZ3JhcGhpY3NpdGVtLmggICAgICAgICAgICAgICAgIHwgICAgMyArLQogV2Vi
S2l0L3F0L0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzMyArKysr
KysrKysrKysrKystLS0tLS0KIFdlYktpdC9xdC9RR1ZMYXVuY2hlci9tYWluLmNwcCAgICAgICAg
ICAgICAgICAgICB8ICAgIDQgKy0KIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcCB8ICAgMTcgKysrKysrKysrKy0KIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmggICB8ICAgIDIgKwogNyBmaWxlcyBjaGFuZ2VkLCA3NiBp
bnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJLaXQvcXQvQXBp
L3F3ZWJmcmFtZS5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZnJhbWUuaAppbmRleCA1NWM3M2I0Li42
ODMzYjA1IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvQXBpL3F3ZWJmcmFtZS5oCisrKyBiL1dlYktp
dC9xdC9BcGkvcXdlYmZyYW1lLmgKQEAgLTE5Myw2ICsxOTMsMzYgQEAgcHVibGljOgogCiAgICAg
UVdlYlNlY3VyaXR5T3JpZ2luIHNlY3VyaXR5T3JpZ2luKCkgY29uc3Q7CiAKKyAgICBjbGFzcyBM
b2FkRXJyb3IgeworICAgIHB1YmxpYzoKKyAgICAgICAgTG9hZEVycm9yKCkKKyAgICAgICAgICAg
IDogbV9uZXR3b3JrQ29kZUVycm9yKDApCisgICAgICAgICAgICAsIG1faXNOdWxsKHRydWUpCisg
ICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIExvYWRFcnJvcihjb25zdCBRVXJsJiBmYWls
aW5nVVJMLAorICAgICAgICAgICAgICAgICAgaW50IG5ldHdvcmtFcnJvciwKKyAgICAgICAgICAg
ICAgICAgIGNvbnN0IFFTdHJpbmcmIGxvY2FsaXplZERlc2NyaXB0aW9uKQorICAgICAgICAgICAg
OiBtX2ZhaWxpbmdVcmwoZmFpbGluZ1VSTCkKKyAgICAgICAgICAgICwgbV9uZXR3b3JrQ29kZUVy
cm9yKG5ldHdvcmtFcnJvcikKKyAgICAgICAgICAgICwgbV9sb2NhbGl6ZWREZXNjcmlwdGlvbihs
b2NhbGl6ZWREZXNjcmlwdGlvbikKKyAgICAgICAgICAgICwgbV9pc051bGwoZmFsc2UpCisgICAg
ICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIFFVcmwgZmFpbGluZ1VybCgpIGNvbnN0IHsgcmV0
dXJuIG1fZmFpbGluZ1VybDsgfQorICAgICAgICBpbnQgbmV0d29ya0NvZGVFcnJvcigpIGNvbnN0
IHsgcmV0dXJuIG1fbmV0d29ya0NvZGVFcnJvcjsgfQorICAgICAgICBRU3RyaW5nIGxvY2FsaXpl
ZERlc2NyaXB0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sb2NhbGl6ZWREZXNjcmlwdGlvbjsgfQor
ICAgICAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOdWxsOyB9CisKKyAgICBw
cml2YXRlOgorICAgICAgICBRVXJsIG1fZmFpbGluZ1VybDsKKyAgICAgICAgaW50IG1fbmV0d29y
a0NvZGVFcnJvcjsKKyAgICAgICAgUVN0cmluZyBtX2xvY2FsaXplZERlc2NyaXB0aW9uOworICAg
ICAgICBib29sIG1faXNOdWxsOworICAgIH07CisKIHB1YmxpYyBRX1NMT1RTOgogICAgIFFWYXJp
YW50IGV2YWx1YXRlSmF2YVNjcmlwdChjb25zdCBRU3RyaW5nJiBzY3JpcHRTb3VyY2UpOwogI2lm
bmRlZiBRVF9OT19QUklOVEVSCkBAIC0yMTQsNiArMjQ0LDcgQEAgUV9TSUdOQUxTOgogCiAgICAg
dm9pZCBsb2FkU3RhcnRlZCgpOwogICAgIHZvaWQgbG9hZEZpbmlzaGVkKGJvb2wgb2spOworICAg
IHZvaWQgbG9hZEZhaWxlZChjb25zdCBRV2ViRnJhbWU6OkxvYWRFcnJvciYpOwogCiBwcml2YXRl
OgogICAgIGZyaWVuZCBjbGFzcyBRV2ViUGFnZTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkv
cXdlYmdyYXBoaWNzaXRlbS5jcHAgYi9XZWJLaXQvcXQvQXBpL3F3ZWJncmFwaGljc2l0ZW0uY3Bw
CmluZGV4IDY4MDE4ZjQuLmQ1YzVhOWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9BcGkvcXdlYmdy
YXBoaWNzaXRlbS5jcHAKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZ3JhcGhpY3NpdGVtLmNwcApA
QCAtNzcsMTAgKzc3LDcgQEAgdm9pZCBRV2ViR3JhcGhpY3NJdGVtUHJpdmF0ZTo6X3FfZG9Mb2Fk
RmluaXNoZWQoYm9vbCBzdWNjZXNzKQogICAgIGlmIChxLT50aXRsZSgpLmlzRW1wdHkoKSkKICAg
ICAgICAgZW1pdCBxLT51cmxDaGFuZ2VkKHEtPnVybCgpKTsKIAotICAgIGlmIChzdWNjZXNzKQot
ICAgICAgICBlbWl0IHEtPmxvYWRGaW5pc2hlZCgpOwotICAgIGVsc2UKLSAgICAgICAgZW1pdCBx
LT5sb2FkRmFpbGVkKCk7CisgICAgZW1pdCBxLT5sb2FkRmluaXNoZWQoc3VjY2Vzcyk7CiB9CiAK
IHZvaWQgUVdlYkdyYXBoaWNzSXRlbVByaXZhdGU6OnNjcm9sbChpbnQgZHgsIGludCBkeSwgY29u
c3QgUVJlY3QmIHJlY3RUb1Njcm9sbCkKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9BcGkvcXdlYmdy
YXBoaWNzaXRlbS5oIGIvV2ViS2l0L3F0L0FwaS9xd2ViZ3JhcGhpY3NpdGVtLmgKaW5kZXggMmM2
ODE3YS4uNWM5NjAwMyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L0FwaS9xd2ViZ3JhcGhpY3NpdGVt
LmgKKysrIGIvV2ViS2l0L3F0L0FwaS9xd2ViZ3JhcGhpY3NpdGVtLmgKQEAgLTk1LDggKzk1LDcg
QEAgcHVibGljIFFfU0xPVFM6CiAKIFFfU0lHTkFMUzoKICAgICB2b2lkIGxvYWRTdGFydGVkKCk7
Ci0gICAgdm9pZCBsb2FkRmluaXNoZWQoKTsKLSAgICB2b2lkIGxvYWRGYWlsZWQoKTsKKyAgICB2
b2lkIGxvYWRGaW5pc2hlZChib29sIHN1Y2Nlc3MpOwogCiAgICAgdm9pZCBwcm9ncmVzc0NoYW5n
ZWQocXJlYWwpOwogICAgIHZvaWQgaW50ZXJhY3Rpdml0eUNoYW5nZWQoKTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9xdC9DaGFuZ2VMb2cgYi9XZWJLaXQvcXQvQ2hhbmdlTG9nCmluZGV4IDUyM2JlOWMu
LmM3ODg3ODQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L3F0
L0NoYW5nZUxvZwpAQCAtMSwxOCArMSwzMSBAQAotMjAwOS0wOS0yMiAgQW50b25pbyBHb21lcyAg
IDxhbnRvbmlvLmdvbWVzQG9wZW5ib3NzYS5vcmc+CisyMDA5LTA5LTIzICBBbnRvbmlvIEdvbWVz
ICAgPGFudG9uaW8uZ29tZXNAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KIAotICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjkyNDgKLSAgICAgICAgW1F0XSBbQVBJXSBNYWtlIGl0IHBvc3NpYmxlIHRvIGhh
dmUgJ2ludmlzaWJsZScgbG9hZHMKKyAgICAgICAgW1F0XSBJbXByb3ZlIGN1cnJlbnQgImxvYWQg
ZmFpbGVkIiByZXBvcnQgbWVjaGFuaXNtIGluIFF0V2ViS2l0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY3OQogCi0gICAgICAgIE1ha2UgUVdlYkZy
YW1lJ3Mgc2V0SHRtbCBhbmQgc2V0Q29udGVudCBtZXRob2RzIHRvIG5vdCBjaGFuZ2UKLSAgICAg
ICAgc2Vzc2lvbiBhbmQgZ2xvYmFsIGhpc3RvcnkgYXQgYWxsLgorICAgICAgICBBZGRlZCBoZWxw
ZXIgYSBRV2ViRnJhbWU6OkxvYWRFcnJvciBjbGFzcyBhbmQgYSBsb2FkRmFpbGVkIHNpZ25hbCB0
byB0aGUgQVBJLgogCi0gICAgICAgICogQXBpL3F3ZWJmcmFtZS5jcHA6Ci0gICAgICAgIChRV2Vi
RnJhbWU6OnNldEh0bWwpOgotICAgICAgICAoUVdlYkZyYW1lOjpzZXRDb250ZW50KToKLSAgICAg
ICAgKiB0ZXN0cy9xd2ViZnJhbWUvcXdlYmZyYW1lLnBybzoKLSAgICAgICAgKiB0ZXN0cy9xd2Vi
ZnJhbWUvdHN0X3F3ZWJmcmFtZS5jcHA6CisgICAgICAgIFRoZSBuZXcgJ2xvYWRGYWlsZWQnIHNp
Z25hbCBpcyBlbWl0dGVkIGF0IHRoZSBtb21lbnQgV2ViQ29yZSByZXBvcnRzIGFuIG5ldHdvcmsK
KyAgICAgICAgZXJyb3IgaW4gdGhlIGN1cnJlbnQgbG9hZCBwcm9jZXNzLCBleHBlY3RpbmcgYW4g
ZXJyb3IgcGFnZSB0byBiZSBzZXQgYnkgdGhlCisgICAgICAgIGNsaWVudCBhcHBsaWNhdGlvbi4K
KworICAgICAgICBQYXRjaCBhbHNvIHJlbW92ZXMgdGhlIHVzZWxlc3MgJ2xvYWRGYWlsZWQnIHNp
Z25hbCBmcm9tIFFXZWJHcmFwaGljc0l0ZW0sIGFuZAorICAgICAgICBtYWtlIGl0cyAnbG9hZEZp
bmlzaGVkJyBzaWduYWwgY29tcGF0aWJsZSB0byBRV2ViVmlldydzIHZlcnNpb24uCisKKyAgICAg
ICAgKiBBcGkvcXdlYmZyYW1lLmg6CisgICAgICAgICogQXBpL3F3ZWJncmFwaGljc2l0ZW0uY3Bw
OgorICAgICAgICAoUVdlYkdyYXBoaWNzSXRlbVByaXZhdGU6Ol9xX2RvTG9hZEZpbmlzaGVkKToK
KyAgICAgICAgKiBBcGkvcXdlYmdyYXBoaWNzaXRlbS5oOgorICAgICAgICAqIFFHVkxhdW5jaGVy
L21haW4uY3BwOgorICAgICAgICAoTWFpbldpbmRvdzo6aW5pdCk6CisgICAgICAgIChNYWluV2lu
ZG93Ojpsb2FkRmluaXNoZWQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEaWRGaW5pc2hMb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmRvd25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oOgogCiAyMDA5LTA5LTIyICBKb2NlbHluIFR1cmNvdHRlICA8
am9jZWx5bi50dXJjb3R0ZUBub2tpYS5jb20+CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9RR1ZM
YXVuY2hlci9tYWluLmNwcCBiL1dlYktpdC9xdC9RR1ZMYXVuY2hlci9tYWluLmNwcAppbmRleCA5
ZDQ3NDJhLi5lMTEzNDQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvcXQvUUdWTGF1bmNoZXIvbWFpbi5j
cHAKKysrIGIvV2ViS2l0L3F0L1FHVkxhdW5jaGVyL21haW4uY3BwCkBAIC0xNjAsNyArMTYwLDcg
QEAgcHVibGljOgogCiAgICAgICAgIHZpZXctPnNldE1haW5XaWRnZXQoc2NlbmUtPndlYkl0ZW0o
KSk7CiAKLSAgICAgICAgY29ubmVjdChzY2VuZS0+d2ViSXRlbSgpLCBTSUdOQUwobG9hZEZpbmlz
aGVkKCkpLCB0aGlzLCBTTE9UKGxvYWRGaW5pc2hlZCgpKSk7CisgICAgICAgIGNvbm5lY3Qoc2Nl
bmUtPndlYkl0ZW0oKSwgU0lHTkFMKGxvYWRGaW5pc2hlZChib29sKSksIHRoaXMsIFNMT1QobG9h
ZEZpbmlzaGVkKGJvb2wpKSk7CiAgICAgICAgIGNvbm5lY3Qoc2NlbmUtPndlYkl0ZW0oKSwgU0lH
TkFMKHRpdGxlQ2hhbmdlZChjb25zdCBRU3RyaW5nJikpLCB0aGlzLCBTTE9UKHNldFdpbmRvd1Rp
dGxlKGNvbnN0IFFTdHJpbmcmKSkpOwogICAgICAgICBjb25uZWN0KHNjZW5lLT53ZWJJdGVtKCkt
PnBhZ2UoKSwgU0lHTkFMKHdpbmRvd0Nsb3NlUmVxdWVzdGVkKCkpLCB0aGlzLCBTTE9UKGNsb3Nl
KCkpKTsKIApAQCAtMjAwLDcgKzIwMCw3IEBAIHByb3RlY3RlZCBzbG90czoKICAgICAgICAgbG9h
ZCh1cmxFZGl0LT50ZXh0KCkpOwogICAgIH0KIAotICAgIHZvaWQgbG9hZEZpbmlzaGVkKCkKKyAg
ICB2b2lkIGxvYWRGaW5pc2hlZChib29sIHN1Y2Nlc3MpCiAgICAgewogICAgICAgICBRVXJsIHVy
bCA9IHNjZW5lLT53ZWJJdGVtKCktPnVybCgpOwogICAgICAgICB1cmxFZGl0LT5zZXRUZXh0KHVy
bC50b1N0cmluZygpKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudFF0LmNwcCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmNwcAppbmRleCAwYzYzNmY2Li41ZGY1Mjg4IDEwMDY0NAotLS0gYS9XZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKKysrIGIvV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCkBAIC0zNzYsNyArMzc2LDkg
QEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZpbmlzaExvYWQoKQogICAg
IGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCiAgICAgICAgIHByaW50ZigiJXMgLSBkaWRG
aW5pc2hMb2FkRm9yRnJhbWVcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZv
clRlc3RSZXN1bHQobV9mcmFtZSkpKTsKIAotICAgIG1fbG9hZEVycm9yID0gUmVzb3VyY2VFcnJv
cigpOyAvLyBjbGVhcnMgdGhlIHByZXZpb3VzIGVycm9yCisgICAgLy8gY2xlYXJzIHRoZSBwcmV2
aW91cyBkYXRhLgorICAgIG1fbG9hZEVycm9yID0gUmVzb3VyY2VFcnJvcigpOworICAgIG1fbGFz
dFVuc3VwcG9ydGVkUmVwbHkgPSAwOwogCiAgICAgaWYgKCFtX3dlYkZyYW1lKQogICAgICAgICBy
ZXR1cm47CkBAIC03NzcsNiArNzc5LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZG93
bmxvYWQoV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgV2ViQ29yCiAgICAg
UU5ldHdvcmtSZXBseUhhbmRsZXIqIGhhbmRsZXIgPSBoYW5kbGUtPmdldEludGVybmFsKCktPm1f
am9iOwogICAgIFFOZXR3b3JrUmVwbHkqIHJlcGx5ID0gaGFuZGxlci0+cmVsZWFzZSgpOwogICAg
IGlmIChyZXBseSkgeworICAgICAgICAvLyBsZXRzIGtlZXAgdGhlIGxhc3QgZXJyb25lb3VzIHJl
cGx5IGhhbmR5IHNvIHdlIGNhbiBwcm9wZXJseQorICAgICAgICAvLyByZXBvcnQgaXQgZm9yIGNs
aWVudCBhcHBzLgorICAgICAgICBtX2xhc3RVbnN1cHBvcnRlZFJlcGx5ID0gcmVwbHk7CisKICAg
ICAgICAgUVdlYlBhZ2UgKnBhZ2UgPSBtX3dlYkZyYW1lLT5wYWdlKCk7CiAgICAgICAgIGlmIChw
YWdlLT5mb3J3YXJkVW5zdXBwb3J0ZWRDb250ZW50KCkpCiAgICAgICAgICAgICBlbWl0IG1fd2Vi
RnJhbWUtPnBhZ2UoKS0+dW5zdXBwb3J0ZWRDb250ZW50KHJlcGx5KTsKQEAgLTg2Niw2ICs4NzIs
MTUgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2UKICAgICAgICAgcHJpbnRmKCIlcyAtIGRpZEZh
aWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25T
dWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKIAogICAgIG1fbG9hZEVycm9yID0gZXJy
b3I7CisKKyAgICBpZiAoIW1fbGFzdFVuc3VwcG9ydGVkUmVwbHkpCisgICAgICAgIHJldHVybjsK
KworICAgIC8vIGxvYWQgZXJyb3IgZW1pc3Npb24KKyAgICAvLyBOT1RFOiBDYW5jZWxsYXRpb24g
cmVzb3VyY2UgZXJyb3JzIGNhbiBob2xkIG5vbi1hY2N1cmF0ZSBlcnJvckNvZGUgYW5kIGVycm9y
U3RyaW5nIHZhbHVlcywKKyAgICAvLyB0aGVuIHdlIHVzZSB0aGUgbGFzdCBuZXR3b3JrcmVwbHkg
dG8gZ2V0IHRoZWlyIHZhbHVlcy4KKyAgICBRV2ViRnJhbWU6OkxvYWRFcnJvciBxZXJyb3IoUVVy
bChlcnJvci5mYWlsaW5nVVJMKCkpLCBtX2xhc3RVbnN1cHBvcnRlZFJlcGx5LT5lcnJvcigpLCBt
X2xhc3RVbnN1cHBvcnRlZFJlcGx5LT5lcnJvclN0cmluZygpKTsKKyAgICBlbWl0IG1fd2ViRnJh
bWUtPmxvYWRGYWlsZWQocWVycm9yKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImIGVycm9yKQpk
aWZmIC0tZ2l0IGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
aCBiL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKaW5kZXgg
OGE3ZTQyOC4uMDZlOTc2MyAxMDA2NDQKLS0tIGEvV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50UXQuaAorKysgYi9XZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRRdC5oCkBAIC0zMSw2ICszMSw3IEBACiAjZGVmaW5lIEZyYW1lTG9hZGVyQ2xp
ZW50UXRfSAogCiAjaW5jbHVkZSA8cW9iamVjdC5oPgorI2luY2x1ZGUgPFFOZXR3b3JrUmVwbHk+
CiAjaW5jbHVkZSA8UVVybD4KIAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCkBAIC0y
MTUsNiArMjE2LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIG1faGFzU2Vu
dFJlc3BvbnNlVG9QbHVnaW47CiAKICAgICAgICAgUmVzb3VyY2VFcnJvciBtX2xvYWRFcnJvcjsK
KyAgICAgICAgUU5ldHdvcmtSZXBseSogbV9sYXN0VW5zdXBwb3J0ZWRSZXBseTsKICAgICB9Owog
CiB9Ci0tIAoxLjYuMC40Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>