<?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>47059</bug_id>
          
          <creation_ts>2010-10-03 09:40:04 -0700</creation_ts>
          <short_desc>[Qt] Handle multipart images</short_desc>
          <delta_ts>2014-02-03 03:16:49 -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>WebKit Qt</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>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>47060</blocked>
    
    <blocked>69615</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Robert Hogan">robert</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>kenneth</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>markus</cc>
    
    <cc>peter.hartmann</cc>
    
    <cc>s.mathur</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288764</commentid>
    <comment_count>0</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-10-03 09:40:04 -0700</bug_when>
    <thetext>Support multipart-responses on the assumption that they are bound to an image object, so we remove headers and boundary markers and send the raw image data only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>288782</commentid>
    <comment_count>1</comment_count>
      <attachid>69593</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-10-03 12:51:39 -0700</bug_when>
    <thetext>Created attachment 69593
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289143</commentid>
    <comment_count>2</comment_count>
      <attachid>69680</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-10-04 14:28:56 -0700</bug_when>
    <thetext>Created attachment 69680
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289806</commentid>
    <comment_count>3</comment_count>
      <attachid>69826</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-10-05 12:17:47 -0700</bug_when>
    <thetext>Created attachment 69826
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289875</commentid>
    <comment_count>4</comment_count>
      <attachid>69826</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2010-10-05 14:11:12 -0700</bug_when>
    <thetext>Comment on attachment 69826
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=69826&amp;action=review

Quick r- for somewhat superficial reasons.

Peter Hartmann (p--hartmann on IRC) has been working on multipart support for QNAM, I&apos;ve asked him to have a look at this.

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:432
&gt; +    int s = contentType.lastIndexOf(&quot;boundary=&quot;) + 9;

&quot;s&quot; is not a good variable name.

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:446
&gt; +        int bs = data-&gt;indexOf(boundary);

&quot;bs&quot; is not a good variable name.

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.h:72
&gt; +    void removeMultipartHeaders(QByteArray* data);
&gt; +    void processMultipartResponse(QByteArray* data, ResourceHandleClient* client);

None of the argument names (data, data and client) are needed here.

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.h:73
&gt; +    bool isMultipartResponse();

This method should be const.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>289890</commentid>
    <comment_count>5</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-10-05 14:31:11 -0700</bug_when>
    <thetext>I think this change can still be useful while waiting for Peter&apos;s QNAM work to land in Qt. When it does, we will still need to special-case multipart responses in QNetworkReplyHandler because of the WebCore quirks noted in the comments.

Certainly, bug 47060 will definitely need support in QNAM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290190</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Hartmann">peter.hartmann</who>
    <bug_when>2010-10-06 04:30:17 -0700</bug_when>
    <thetext>View in context: https://bugs.webkit.org/attachment.cgi?id=69826&amp;action=review

The multipart code that we plan for Qt 4.8 is for sending multipart messages only, see http://bugreports.qt.nokia.com/browse/QTBUG-6222 .

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:424
&gt; +    if (contentType.contains(&quot;multipart/x-mixed-replace&quot;))

shouldn&apos;t we check for contentType.startsWith(&quot;multipart/&quot;) ?

&gt;&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:432
&gt;&gt; +    int s = contentType.lastIndexOf(&quot;boundary=&quot;) + 9;
&gt;
&gt; &quot;s&quot; is not a good variable name.

the boundary could (and in fact, should) be quoted, recommended in RFC 2046 section 5.1.1; I think the patch should handle that use case as well

&gt;&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:446
&gt;&gt; +        int bs = data-&gt;indexOf(boundary);
&gt;
&gt; &quot;bs&quot; is not a good variable name.

maybe combine the two above lines to

while ((boundaryIndex = data-&gt;indexOf(boundary)) != -1) {

the indexOf() method could be costly for big parts

&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:450
&gt; +        data-&gt;replace(part, &quot;&quot;);

how about keeping data constant and only use the char pointer and indexing? data might be a really big byte array, so detaching should be avoided. Or how about wrapping it into a QBuffer? Or could it somehow be avoided to construct the QByteArray in the first place, and operate on some char pointer instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>290550</commentid>
    <comment_count>7</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-10-06 13:37:12 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=69826&amp;action=review
&gt; 
&gt; The multipart code that we plan for Qt 4.8 is for sending multipart messages only, see http://bugreports.qt.nokia.com/browse/QTBUG-6222 .
&gt; 
&gt; &gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:424
&gt; &gt; +    if (contentType.contains(&quot;multipart/x-mixed-replace&quot;))
&gt; 
&gt; shouldn&apos;t we check for contentType.startsWith(&quot;multipart/&quot;) ?
&gt; 

Not sure - I think we&apos;re only supporting the x-mixed-replace MIME-type here. This is what WebCore itself looks for.

&gt; &gt;&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:432
&gt; &gt;&gt; +    int s = contentType.lastIndexOf(&quot;boundary=&quot;) + 9;
&gt; &gt;
&gt; &gt; &quot;s&quot; is not a good variable name.
&gt; 
&gt; the boundary could (and in fact, should) be quoted, recommended in RFC 2046 section 5.1.1; I think the patch should handle that use case as well
&gt; 

Yes - thanks for the reference. There&apos;s quite a few cases to handle there!

&gt; &gt;&gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:446
&gt; &gt;&gt; +        int bs = data-&gt;indexOf(boundary);
&gt; &gt;
&gt; &gt; &quot;bs&quot; is not a good variable name.
&gt; 
&gt; maybe combine the two above lines to
&gt; 
&gt; while ((boundaryIndex = data-&gt;indexOf(boundary)) != -1) {
&gt; 
&gt; the indexOf() method could be costly for big parts
&gt; 
&gt; &gt; WebCore/platform/network/qt/QNetworkReplyHandler.cpp:450
&gt; &gt; +        data-&gt;replace(part, &quot;&quot;);
&gt; 
&gt; how about keeping data constant and only use the char pointer and indexing? data might be a really big byte array, so detaching should be avoided. Or how about wrapping it into a QBuffer? Or could it somehow be avoided to construct the QByteArray in the first place, and operate on some char pointer instead?

Yes, that&apos;s much better. Works well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>291839</commentid>
    <comment_count>8</comment_count>
      <attachid>70282</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-10-08 13:42:34 -0700</bug_when>
    <thetext>Created attachment 70282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>292151</commentid>
    <comment_count>9</comment_count>
      <attachid>70358</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-10-09 11:44:37 -0700</bug_when>
    <thetext>Created attachment 70358
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296126</commentid>
    <comment_count>10</comment_count>
    <who name="Markus Goetz">markus</who>
    <bug_when>2010-10-19 05:44:12 -0700</bug_when>
    <thetext>I&apos;d say it might be the wrong layer to support this here and the support should be in QNetworkAccessManager. However there is a lack of people that can handle the stuff there, so I guess this is fine for now.

Which servers send multipart images and why? I have not heard of that before.

I think there should be comments in QNetworkReplyHandler::forwardData() and QNetworkReplyHandler::sendResponseIfNeeded() explaining why the function/data flow is going like this.

m_boundariesRead should be called m_multipartBoundariesRead IMHO</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>296311</commentid>
    <comment_count>11</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2010-10-19 11:41:04 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; I&apos;d say it might be the wrong layer to support this here and the support should be in QNetworkAccessManager. However there is a lack of people that can handle the stuff there, so I guess this is fine for now.

Yeah, I&apos;m of the same opinion now. Parsing data for HTTP headers just feels wrong in QNetworkReplyHandler. QNAM should feed it the individual sections of the multipart message with the appropriate header for each.

&gt; 
&gt; Which servers send multipart images and why? I have not heard of that before.
&gt; 

http://en.wikipedia.org/wiki/Server_push#HTTP_server_push

It&apos;s a pretty old proposal/standard and ignored by IE. 

I think supporting this beyond streaming images, for which it was originally intended, may be a case of diminishing returns.

If the patch is too intrusive it may not be worth supporting at all.

I don&apos;t know who uses it in the wild.

&gt; I think there should be comments in QNetworkReplyHandler::forwardData() and QNetworkReplyHandler::sendResponseIfNeeded() explaining why the function/data flow is going like this.
&gt; 
&gt; m_boundariesRead should be called m_multipartBoundariesRead IMHO

Will do.

Before I work on this further maybe we should decide how much of this (if any) we want to support?

A simple implementation that supports a multipart/x-mixed-replace response containing nothing but image sections requires the least overhead and will be achieved by this patch.

An implementation that supports a multipart response containing sections with different mime-types requires quite a bit more code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>304779</commentid>
    <comment_count>12</comment_count>
    <who name="John Brooks">webkit</who>
    <bug_when>2010-11-04 11:45:50 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; If the patch is too intrusive it may not be worth supporting at all.
&gt; 
&gt; I don&apos;t know who uses it in the wild.
&gt; Before I work on this further maybe we should decide how much of this (if any) we want to support?
&gt; 
&gt; A simple implementation that supports a multipart/x-mixed-replace response containing nothing but image sections requires the least overhead and will be achieved by this patch.

MJPEG streams are implemented as a multipart/x-mixed-replace response with a new frame in each part. Supporting this case would be very useful - and most browsers do. Notably, many IP cameras use MJPEG streams.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>342068</commentid>
    <comment_count>13</comment_count>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-01-29 03:22:37 -0800</bug_when>
    <thetext>So, do we want this? Should I clean it up for final review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>347587</commentid>
    <comment_count>14</comment_count>
      <attachid>70358</attachid>
    <who name="Robert Hogan">robert</who>
    <bug_when>2011-02-08 12:12:57 -0800</bug_when>
    <thetext>Comment on attachment 70358
Patch

Clearing review for now, going to come back to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>975145</commentid>
    <comment_count>15</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2014-02-03 03:16:49 -0800</bug_when>
    <thetext>=== Bulk closing of Qt bugs ===

If you believe that this bug report is still relevant for a non-Qt port of webkit.org, please re-open it and remove [Qt] from the summary.

If you believe that this is still an important QtWebKit bug, please fill a new report at https://bugreports.qt-project.org and add a link to this issue. See http://qt-project.org/wiki/ReportingBugsInQt for additional guidelines.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69593</attachid>
            <date>2010-10-03 12:51:39 -0700</date>
            <delta_ts>2010-10-04 14:28:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47059-20101003205139.patch</filename>
            <type>text/plain</type>
            <size>8288</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMmU1MGZhOGI2MDYwZWQyZWM0MzkwZjI2ODg2MmFiNGM3NDVlZDk3Li4xMzk1M2Iz
NTZjNjdkMWQ3ZTM0ZTI3Y2ZmNTg3NTc2N2Y0NWU0YjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMDMgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSGFuZGxlIG11bHRp
cGFydCBpbWFnZXMKKworICAgICAgICBTdXBwb3J0IG11bHRpcGFydC1yZXNwb25zZXMgb24gdGhl
IGFzc3VtcHRpb24gdGhhdCB0aGV5IGFyZQorICAgICAgICBib3VuZCB0byBhbiBpbWFnZSBvYmpl
Y3QsIHNvIHdlIHJlbW92ZSBoZWFkZXJzIGFuZCBib3VuZGFyeQorICAgICAgICBtYXJrZXJzIGFu
ZCBzZW5kIHRoZSByYXcgaW1hZ2UgZGF0YSBvbmx5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA1OQorCisgICAgICAgICogcGxhdGZvcm0vcXQv
U2tpcHBlZDoKKwogMjAxMC0xMC0wMiAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEJ1aWxkIGZpeC4gTm90IHJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
aW5kZXggOGQ0NmNhZDkwNTZlNTBjNmFhMDQ5NmMwZWFiZDdmYzYyNjg1NDg0My4uMzFjMTQwMjA1
OTg0ZDI4MjE1ZjVhMjUyYzMyOThiYThmNzgwZTVjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CkBAIC0yMzIsOCArMjMyLDkgQEAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3RyZWRpcmVjdC1i
YXNpYy5odG1sCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWZyYW1lcy5odG1s
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWdvYmFjazEuaHRtbAogCi0jIHRp
bWUgb3V0Ci1odHRwL3Rlc3RzL211bHRpcGFydC9pbnZhbGlkLWltYWdlLWRhdGEuaHRtbAorIyBX
ZSBoYW5kbGUgbXVsdGlwYXJ0IHJlc3BvbnNlcyBub3csIGJ1dCBvbmx5IGZvciA8aW1hZ2U+IG9i
amVjdHMuCisjIFdlIG5lZWQgdG8gZmlndXJlIG91dCBtdWx0aXBhcnQgcmVzcG9uc2VzIGluIGlm
cmFtZXMgdG9vLgorIyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi80NzA2MAogaHR0cC90ZXN0cy9t
dWx0aXBhcnQvaW52YWxpZC1pbWFnZS1kYXRhLXN0YW5kYWxvbmUuaHRtbAogCiAjIGRydCBwcmlu
dHMgYWRkaXRpb25hbCBvdXRwdXQgLSBsb29rcyBoYXJtbGVzcwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNWI5Nzc1Nzc2NDA1ODAwODIy
NDJjNDcwMDNkZWFhYmY5OGUxNTcxLi4xZjY3MWY4MWY1ZWYyMzc5ZDJiNGE0YzZhY2M5MTAzNDNl
NjRkZjVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTEwLTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbUXRdIEhhbmRsZSBtdWx0aXBhcnQgaW1hZ2VzCisKKyAgICAgICAgU3VwcG9ydCBtdWx0
aXBhcnQtcmVzcG9uc2VzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhleSBhcmUKKyAgICAgICAg
Ym91bmQgdG8gYW4gaW1hZ2Ugb2JqZWN0LCBzbyB3ZSByZW1vdmUgaGVhZGVycyBhbmQgYm91bmRh
cnkKKyAgICAgICAgbWFya2VycyBhbmQgc2VuZCB0aGUgcmF3IGltYWdlIGRhdGEgb25seS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwNTkKKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjppc011bHRpcGFy
dFJlcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kTXVs
dGlwYXJ0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
Om11bHRpcGFydFJlbW92ZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmZvcndhcmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmg6CisKIDIwMTAtMTAtMDMgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNw
cAppbmRleCAwMzJkZDRjYjI0ZTVhMjA4NTQ5NmJhYjQ5ZTRhNjdjMmM1MTg2N2EwLi43NjQzNTEz
ZWVlYmUxMGZmNGE5MTJiYTBkNmYzM2IxYTAwOTkyY2IyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKQEAgLTMxNiwxNCAr
MzE2LDYgQEAgdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c2VuZFJlc3BvbnNlSWZOZWVkZWQo
KQogICAgIGlmIChtX3JlcGx5LT5lcnJvcigpICYmICFpZ25vcmVIdHRwRXJyb3IobV9yZXBseSwg
bV9yZXNwb25zZURhdGFTZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fcmVzcG9u
c2VTZW50IHx8ICFtX3Jlc291cmNlSGFuZGxlKQotICAgICAgICByZXR1cm47Ci0gICAgbV9yZXNw
b25zZVNlbnQgPSB0cnVlOwotCi0gICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IG1f
cmVzb3VyY2VIYW5kbGUtPmNsaWVudCgpOwotICAgIGlmICghY2xpZW50KQotICAgICAgICByZXR1
cm47Ci0KICAgICBXVEY6OlN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0
d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOwogICAgIFdURjo6U3Ry
aW5nIGVuY29kaW5nID0gZXh0cmFjdENoYXJzZXRGcm9tTWVkaWFUeXBlKGNvbnRlbnRUeXBlKTsK
ICAgICBXVEY6OlN0cmluZyBtaW1lVHlwZSA9IGV4dHJhY3RNSU1FVHlwZUZyb21NZWRpYVR5cGUo
Y29udGVudFR5cGUpOwpAQCAtMzM4LDYgKzMzMCwxNyBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5k
bGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX3JlcGx5LT5oZWFkZXIoUU5ldHdvcmtSZXF1ZXN0OjpDb250ZW50TGVuZ3RoSGVhZGVyKS50
b0xvbmdMb25nKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgU3Ry
aW5nKCkpOwogCisgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IG1fcmVzb3VyY2VI
YW5kbGUtPmNsaWVudCgpOworICAgIGlmICghY2xpZW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAobV9yZXNwb25zZVNlbnQgJiYgcmVzcG9uc2UuaXNNdWx0aXBhcnQoKSkKKyAgICAgICAg
Y2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UobV9yZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwor
CisgICAgaWYgKG1fcmVzcG9uc2VTZW50IHx8ICFtX3Jlc291cmNlSGFuZGxlKQorICAgICAgICBy
ZXR1cm47CisgICAgbV9yZXNwb25zZVNlbnQgPSB0cnVlOworCiAgICAgaWYgKHVybC5pc0xvY2Fs
RmlsZSgpKSB7CiAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZVJlc3BvbnNlKG1fcmVzb3VyY2VI
YW5kbGUsIHJlc3BvbnNlKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDE0LDYgKzQxNyw1MiBAQCB2
b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgY2xp
ZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UobV9yZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogfQog
Citib29sIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjppc011bHRpcGFydFJlcGx5KCkKK3sKKyAgICBR
U3RyaW5nIGNvbnRlbnRUeXBlID0gbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29u
dGVudFR5cGVIZWFkZXIpLnRvU3RyaW5nKCk7CisgICAgaWYgKGNvbnRlbnRUeXBlLmNvbnRhaW5z
KCJtdWx0aXBhcnQveC1taXhlZC1yZXBsYWNlIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAg
IHJldHVybiBmYWxzZTsKK30KKwordm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6c2VuZE11bHRp
cGFydFJlc3BvbnNlKFFCeXRlQXJyYXkqIGRhdGEsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGll
bnQpCit7CisgICAgUVN0cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29y
a1JlcXVlc3Q6OkNvbnRlbnRUeXBlSGVhZGVyKS50b1N0cmluZygpOworICAgIGludCBzID0gY29u
dGVudFR5cGUubGFzdEluZGV4T2YoImJvdW5kYXJ5PSIpICsgOTsKKyAgICBRU3RyaW5nIGJvdW5k
YXJ5ID0gICItLSIgKyBjb250ZW50VHlwZS5taWQocywgY29udGVudFR5cGUubGVuZ3RoKCkpICsg
IlxyXG4iOworCisgICAgLy8gV2hlbiBhIGNvbXBsZXRlIHBhcnQgb2YgYSBtdWx0aXBhcnQgbWVz
c2FnZSBpcyByZWFkeSwgV2ViQ29yZSBwcm9jZXNzZXMKKyAgICAvLyBpdCBpbiBkaWRSZWNlaXZl
UmVzcG9uc2UoKS4gV2UgbmVlZCB0byBwcm9jZXNzIHRoZSBwYXJ0cyBvbiBhIG9uZSBiZWZvcmUK
KyAgICAvLyBsYXN0IGJhc2lzIHNvIHRoYXQgdGhlcmUgaXMgc3RpbGwgYSBzZWN0aW9uIHRvIHBy
b2Nlc3Mgd2hlbiB0aGUgbG9hZCBmaW5pc2hlcy4KKyAgICAvLyBJZiB3ZSBkb24ndCBkbyBpdCB0
aGlzIHdheSwgdGhlcmUgd2lsbCBiZSBubyBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgICAv
LyBpbWFnZSByZXNvdXJjZSB3aGVuIHRoZSBsb2FkIGZpbmlzaGVzLCBDYWNoZWRJbWFnZSB3aWxs
IHRyeSB0byBtYWtlIGFuCisgICAgLy8gaW1hZ2UgZnJvbSBudWxsIGRhdGEsIGFuZCB0aGUgdXNl
ciB3aWxsIHNlZSBhICdicm9rZW4nIGltYWdlLgorICAgIHdoaWxlIChkYXRhLT5pbmRleE9mKGJv
dW5kYXJ5KSAhPSAtMSkgeworICAgICAgICBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOworICAgICAg
ICBpbnQgYnMgPSBkYXRhLT5pbmRleE9mKGJvdW5kYXJ5KTsKKyAgICAgICAgZGF0YS0+cmVtb3Zl
KGJzLCBib3VuZGFyeS5sZW5ndGgoKSk7CisgICAgICAgIFFCeXRlQXJyYXkgcGFydCA9IGRhdGEt
PmxlZnQoYnMpOworICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2VIYW5k
bGUsIHBhcnQuY29uc3REYXRhKCksIHBhcnQubGVuZ3RoKCksIHBhcnQubGVuZ3RoKCkgLypGaXhN
ZSovKTsKKyAgICAgICAgZGF0YS0+cmVwbGFjZShwYXJ0LCAiIik7CisgICAgfQorfQorCit2b2lk
IFFOZXR3b3JrUmVwbHlIYW5kbGVyOjptdWx0aXBhcnRSZW1vdmVIZWFkZXJzKFFCeXRlQXJyYXkq
IGRhdGEpCit7CisgICAgUVN0cmluZ0xpc3QgaGVhZGVyczsKKyAgICBoZWFkZXJzIDw8ICJDb250
ZW50LVR5cGUiIDw8ICJDb250ZW50LUxlbmd0aCIKKyAgICAgICAgICAgIDw8ICJDb250ZW50LVJh
bmdlIiA8PCAiQ29udGVudC1EaXNwb3NpdGlvbiIKKyAgICAgICAgICAgIDw8ICJSYW5nZSIgPDwg
IlNldC1Db29raWUiOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVycy5zaXplKCk7ICsr
aSkgeworICAgICAgICBRU3RyaW5nIGhlYWRlciA9IGhlYWRlcnMuYXQoaSk7CisgICAgICAgIHdo
aWxlIChkYXRhLT5pbmRleE9mKGhlYWRlcikgIT0gLTEpIHsKKyAgICAgICAgICAgIGludCBocyA9
IGRhdGEtPmluZGV4T2YoaGVhZGVyKTsKKyAgICAgICAgICAgIGludCBoZSA9IGRhdGEtPmluZGV4
T2YoIlxyXG5cclxuIiwgaHMpICsgNDsKKyAgICAgICAgICAgIGRhdGEtPnJlbW92ZShocywgaGUg
LSBocyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6
OmZvcndhcmREYXRhKCkKIHsKICAgICBtX3Nob3VsZEZvcndhcmREYXRhID0gKG1fbG9hZE1vZGUg
IT0gTG9hZE5vcm1hbCk7CkBAIC00MzAsMTUgKzQ3OSwyNSBAQCB2b2lkIFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpmb3J3YXJkRGF0YSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIFFCeXRlQXJyYXkg
ZGF0YSA9IG1fcmVwbHktPnJlYWQobV9yZXBseS0+Ynl0ZXNBdmFpbGFibGUoKSk7Ci0KICAgICBS
ZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7
CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlmICghZGF0YS5pc0Vt
cHR5KCkpIHsKLSAgICAgICAgbV9yZXNwb25zZURhdGFTZW50ID0gdHJ1ZTsKLSAgICAgICAgY2xp
ZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlSGFuZGxlLCBkYXRhLmNvbnN0RGF0YSgpLCBk
YXRhLmxlbmd0aCgpLCBkYXRhLmxlbmd0aCgpIC8qRml4TWUqLyk7CisgICAgaWYgKGRhdGEuaXNF
bXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9yZXNwb25zZURhdGFTZW50ID0gdHJ1ZTsK
KworICAgIC8vIEZvciBub3cgd2UganVzdCBzdXBwb3J0IG11bHRpcGFydC1yZXNwb25zZXMgb24g
dGhlIGFzc3VtcHRpb24KKyAgICAvLyB0aGF0IHRoZXkgYXJlIGJvdW5kIHRvIGFuIGltYWdlIG9i
amVjdCwgc28gd2UgcmVtb3ZlIGhlYWRlcnMKKyAgICAvLyBhbmQgYm91bmRhcnkgbWFya2VycyBh
bmQgc2VuZCB0aGUgcmF3IGltYWdlIGRhdGEgb25seS4KKyAgICAvLyBGSVhNRTsgV2UgbmVlZCB0
byBoYW5kbGUgbXVsdGlwYXJ0IHJlc3BvbnNlcyBib3VuZCB0byBpZnJhbWVzLgorICAgIGlmIChp
c011bHRpcGFydFJlcGx5KCkpIHsKKyAgICAgICAgbXVsdGlwYXJ0UmVtb3ZlSGVhZGVycygmZGF0
YSk7CisgICAgICAgIHNlbmRNdWx0aXBhcnRSZXNwb25zZSgmZGF0YSwgY2xpZW50KTsKKyAgICAg
ICAgaWYgKGRhdGEuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAg
IGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZUhhbmRsZSwgZGF0YS5jb25zdERhdGEo
KSwgZGF0YS5sZW5ndGgoKSwgZGF0YS5sZW5ndGgoKSAvKkZpeE1lKi8pOwogfQogCiB2b2lkIFFO
ZXR3b3JrUmVwbHlIYW5kbGVyOjp1cGxvYWRQcm9ncmVzcyhxaW50NjQgYnl0ZXNTZW50LCBxaW50
NjQgYnl0ZXNUb3RhbCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9R
TmV0d29ya1JlcGx5SGFuZGxlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3
b3JrUmVwbHlIYW5kbGVyLmgKaW5kZXggZjZiMjM1OGJiYWU3OGJjMWY1ZGVlYTAwYmUxNWMwOWJh
NjRlZDY4ZS4uNmFmNmFlMjc4YmExMzE4NWFjNjhiZmRiMTk0YTZmNjZjNDZmMjMxNyAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgK
QEAgLTM0LDYgKzM0LDcgQEAgUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKK2NsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogCiBj
bGFzcyBRTmV0d29ya1JlcGx5SGFuZGxlciA6IHB1YmxpYyBRT2JqZWN0CiB7CkBAIC02Nyw2ICs2
OCw5IEBAIHByaXZhdGUgc2xvdHM6CiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2
b2lkIHJlc2V0U3RhdGUoKTsKKyAgICB2b2lkIG11bHRpcGFydFJlbW92ZUhlYWRlcnMoUUJ5dGVB
cnJheSogZGF0YSk7CisgICAgdm9pZCBzZW5kTXVsdGlwYXJ0UmVzcG9uc2UoUUJ5dGVBcnJheSog
ZGF0YSwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCk7CisgICAgYm9vbCBpc011bHRpcGFy
dFJlcGx5KCk7CiAKICAgICBRTmV0d29ya1JlcGx5KiBtX3JlcGx5OwogICAgIFJlc291cmNlSGFu
ZGxlKiBtX3Jlc291cmNlSGFuZGxlOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69680</attachid>
            <date>2010-10-04 14:28:56 -0700</date>
            <delta_ts>2010-10-05 12:17:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47059-20101004222852.patch</filename>
            <type>text/plain</type>
            <size>9738</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMmU1MGZhOGI2MDYwZWQyZWM0MzkwZjI2ODg2MmFiNGM3NDVlZDk3Li4xMzk1M2Iz
NTZjNjdkMWQ3ZTM0ZTI3Y2ZmNTg3NTc2N2Y0NWU0YjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMDMgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSGFuZGxlIG11bHRp
cGFydCBpbWFnZXMKKworICAgICAgICBTdXBwb3J0IG11bHRpcGFydC1yZXNwb25zZXMgb24gdGhl
IGFzc3VtcHRpb24gdGhhdCB0aGV5IGFyZQorICAgICAgICBib3VuZCB0byBhbiBpbWFnZSBvYmpl
Y3QsIHNvIHdlIHJlbW92ZSBoZWFkZXJzIGFuZCBib3VuZGFyeQorICAgICAgICBtYXJrZXJzIGFu
ZCBzZW5kIHRoZSByYXcgaW1hZ2UgZGF0YSBvbmx5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA1OQorCisgICAgICAgICogcGxhdGZvcm0vcXQv
U2tpcHBlZDoKKwogMjAxMC0xMC0wMiAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEJ1aWxkIGZpeC4gTm90IHJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
aW5kZXggOGQ0NmNhZDkwNTZlNTBjNmFhMDQ5NmMwZWFiZDdmYzYyNjg1NDg0My4uMzFjMTQwMjA1
OTg0ZDI4MjE1ZjVhMjUyYzMyOThiYThmNzgwZTVjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CkBAIC0yMzIsOCArMjMyLDkgQEAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3RyZWRpcmVjdC1i
YXNpYy5odG1sCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWZyYW1lcy5odG1s
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWdvYmFjazEuaHRtbAogCi0jIHRp
bWUgb3V0Ci1odHRwL3Rlc3RzL211bHRpcGFydC9pbnZhbGlkLWltYWdlLWRhdGEuaHRtbAorIyBX
ZSBoYW5kbGUgbXVsdGlwYXJ0IHJlc3BvbnNlcyBub3csIGJ1dCBvbmx5IGZvciA8aW1hZ2U+IG9i
amVjdHMuCisjIFdlIG5lZWQgdG8gZmlndXJlIG91dCBtdWx0aXBhcnQgcmVzcG9uc2VzIGluIGlm
cmFtZXMgdG9vLgorIyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi80NzA2MAogaHR0cC90ZXN0cy9t
dWx0aXBhcnQvaW52YWxpZC1pbWFnZS1kYXRhLXN0YW5kYWxvbmUuaHRtbAogCiAjIGRydCBwcmlu
dHMgYWRkaXRpb25hbCBvdXRwdXQgLSBsb29rcyBoYXJtbGVzcwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNWI5Nzc1Nzc2NDA1ODAwODIy
NDJjNDcwMDNkZWFhYmY5OGUxNTcxLi4xZjY3MWY4MWY1ZWYyMzc5ZDJiNGE0YzZhY2M5MTAzNDNl
NjRkZjVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTEwLTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbUXRdIEhhbmRsZSBtdWx0aXBhcnQgaW1hZ2VzCisKKyAgICAgICAgU3VwcG9ydCBtdWx0
aXBhcnQtcmVzcG9uc2VzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhleSBhcmUKKyAgICAgICAg
Ym91bmQgdG8gYW4gaW1hZ2Ugb2JqZWN0LCBzbyB3ZSByZW1vdmUgaGVhZGVycyBhbmQgYm91bmRh
cnkKKyAgICAgICAgbWFya2VycyBhbmQgc2VuZCB0aGUgcmF3IGltYWdlIGRhdGEgb25seS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwNTkKKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjppc011bHRpcGFy
dFJlcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kTXVs
dGlwYXJ0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
Om11bHRpcGFydFJlbW92ZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmZvcndhcmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmg6CisKIDIwMTAtMTAtMDMgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNw
cAppbmRleCAwMzJkZDRjYjI0ZTVhMjA4NTQ5NmJhYjQ5ZTRhNjdjMmM1MTg2N2EwLi5iOWRmYzk4
ZjIwOGU3NTM4MDZhOWRkZTE3ZDllM2YxMjQ4MjI4YjRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKQEAgLTE3NCw2ICsx
NzQsNyBAQCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6UU5ldHdvcmtSZXBseUhhbmRsZXIoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgTG9hZE1vZGUgbG9hZAogICAgICwgbV9zaG91bGRTZW5kUmVzcG9u
c2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZEZvcndhcmREYXRhKGZhbHNlKQogICAgICwgbV9yZWRp
cmVjdGlvblRyaWVzKGdNYXhSZWN1cnNpb25MaW1pdCkKKyAgICAsIG1fYm91bmRhcmllc1JlYWQo
MCkKIHsKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QgJnIgPSBtX3Jlc291cmNlSGFuZGxlLT5m
aXJzdFJlcXVlc3QoKTsKIApAQCAtMzE2LDE0ICszMTcsNiBAQCB2b2lkIFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVwbHktPmVycm9yKCkg
JiYgIWlnbm9yZUh0dHBFcnJvcihtX3JlcGx5LCBtX3Jlc3BvbnNlRGF0YVNlbnQpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9yZXNwb25zZVNlbnQgfHwgIW1fcmVzb3VyY2VIYW5kbGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX3Jlc3BvbnNlU2VudCA9IHRydWU7Ci0KLSAgICBSZXNv
dXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7Ci0g
ICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybjsKLQogICAgIFdURjo6U3RyaW5nIGNvbnRl
bnRUeXBlID0gbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFk
ZXIpLnRvU3RyaW5nKCk7CiAgICAgV1RGOjpTdHJpbmcgZW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNl
dEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOwogICAgIFdURjo6U3RyaW5nIG1pbWVUeXBlID0g
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CkBAIC0zMzgsNiArMzMx
LDE3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1Jl
cXVlc3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kaW5nLCBTdHJpbmcoKSk7CiAKKyAgICBSZXNvdXJjZUhhbmRs
ZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7CisgICAgaWYgKCFj
bGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3Jlc3BvbnNlU2VudCAmJiByZXNw
b25zZS5pc011bHRpcGFydCgpKQorICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZSht
X3Jlc291cmNlSGFuZGxlLCByZXNwb25zZSk7CisKKyAgICBpZiAobV9yZXNwb25zZVNlbnQgfHwg
IW1fcmVzb3VyY2VIYW5kbGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Jlc3BvbnNlU2VudCA9
IHRydWU7CisKICAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkpIHsKICAgICAgICAgY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UobV9yZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogICAgICAgICBy
ZXR1cm47CkBAIC00MTQsMTMgKzQxOCw3MyBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpz
ZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UobV9y
ZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogfQogCitib29sIFFOZXR3b3JrUmVwbHlIYW5kbGVy
Ojppc011bHRpcGFydFJlc3BvbnNlKCkKK3sKKyAgICBRU3RyaW5nIGNvbnRlbnRUeXBlID0gbV9y
ZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFkZXIpLnRvU3RyaW5n
KCk7CisgICAgaWYgKGNvbnRlbnRUeXBlLmNvbnRhaW5zKCJtdWx0aXBhcnQveC1taXhlZC1yZXBs
YWNlIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6cHJvY2Vzc011bHRpcGFydFJlc3BvbnNlKFFCeXRlQXJy
YXkqIGRhdGEsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCit7CisgICAgUVN0cmluZyBj
b250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBl
SGVhZGVyKS50b1N0cmluZygpOworICAgIGludCBzID0gY29udGVudFR5cGUubGFzdEluZGV4T2Yo
ImJvdW5kYXJ5PSIpICsgOTsKKyAgICBRU3RyaW5nIGJvdW5kYXJ5ID0gICItLSIgKyBjb250ZW50
VHlwZS5taWQocywgY29udGVudFR5cGUubGVuZ3RoKCkpICsgIlxyXG4iOworCisgICAgLy8gV2Vi
Q29yZSBuZWVkcyBvbmUgY29tcGxldGUgc2VjdGlvbiBvZiB0aGUgbXVsdGlwYXJ0IHJlc3BvbnNl
IGF0IGEgdGltZS4KKyAgICAvLyBJdCBhbHNvIG5lZWRzIHRvIGhhdmUgb25lIGNvbXBsZXRlIHNl
Y3Rpb24gd2FpdGluZyB0byBiZSByZW5kZXJlZCB3aGVuCisgICAgLy8gdGhlIGxvYWQgZmluaXNo
ZXMgYmVjYXVzZSBpdCBjbGVhcnMgdGhlIHJlc291cmNlJ3MgZGF0YSB3aGVuIGl0CisgICAgLy8g
cHJvY2Vzc2VzIGEgc2VjdGlvbi4gVGhpcyBtZWFucyB3ZSBoYXZlIHRvIHRha2UgaW4gZWFjaCBz
ZWN0aW9uIGFuZAorICAgIC8vIG9ubHkgc2VuZCBpdCBmb3IgcHJvY2Vzc2luZyB3aGVuIHdlIGhh
dmUgcmVjZWl2ZWQgdGhlIGVudGlyZSBuZXh0IHNlY3Rpb24uCisgICAgLy8gSXQgYWxzbyBtZWFu
cyB3ZSB3aWxsIG5ldmVyIGRpc3BsYXkgdGhlIGxhc3Qgc2VjdGlvbi4gVGhpcyBjYW4gYmUgZml4
ZWQgaWYKKyAgICAvLyB3ZSBwcmV2ZW50IExvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9hZGluZygp
IGZyb20gdHJ5aW5nIHRvIGxvYWQgdGhlCisgICAgLy8gcmVzb3VyY2UncyBkYXRhIGluIHRoZSBj
YXNlIG9mIGEgbXVsdGlwYXJ0IHJlc3BvbnNlIC0gd2hpY2ggd291bGQgYWx3YXlzCisgICAgLy8g
YmUgZW1wdHkgaWYgd2Ugc2VudCBtdWx0aXBhcnQgc2VjdGlvbnMgdG8gdGhlIGxvYWRlciBhcyB3
ZSByZWNlaXZlIHRoZW0uCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzc1OSNjNAorICAgIHdoaWxlIChkYXRhLT5pbmRleE9mKGJvdW5kYXJ5KSAh
PSAtMSkgeworICAgICAgICBpbnQgYnMgPSBkYXRhLT5pbmRleE9mKGJvdW5kYXJ5KTsKKyAgICAg
ICAgZGF0YS0+cmVtb3ZlKGJzLCBib3VuZGFyeS5sZW5ndGgoKSk7CisgICAgICAgIC8vIDNyZCBi
b3VuZGFyeSBtYXJrZXIgbWVhbnMgd2UgaGF2ZSBhIHByZXZpb3VzIHNlY3Rpb24gcmVhZHkgdG8g
cmVuZGVyCisgICAgICAgIGlmICgrK21fYm91bmRhcmllc1JlYWQgPiAyKSB7CisgICAgICAgICAg
ICBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOworICAgICAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShtX3Jlc291cmNlSGFuZGxlLCBtX211bHRpUGFydFNlY3Rpb24uY29uc3REYXRhKCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbXVsdGlQYXJ0U2VjdGlvbi5sZW5n
dGgoKSwgbV9tdWx0aVBhcnRTZWN0aW9uLmxlbmd0aCgpIC8qRml4TWUqLyk7CisgICAgICAgICAg
ICBtX211bHRpUGFydFNlY3Rpb24uY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZGF0
YS0+aXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBRQnl0ZUFycmF5IHBh
cnQgPSBkYXRhLT5sZWZ0KGJzKTsKKyAgICAgICAgbV9tdWx0aVBhcnRTZWN0aW9uLmFwcGVuZChw
YXJ0KTsKKyAgICAgICAgZGF0YS0+cmVwbGFjZShwYXJ0LCAiIik7CisgICAgfQorICAgIG1fbXVs
dGlQYXJ0U2VjdGlvbi5hcHBlbmQoKmRhdGEpOworfQorCit2b2lkIFFOZXR3b3JrUmVwbHlIYW5k
bGVyOjpyZW1vdmVNdWx0aXBhcnRIZWFkZXJzKFFCeXRlQXJyYXkqIGRhdGEpCit7CisgICAgUVN0
cmluZ0xpc3QgaGVhZGVyczsKKyAgICBoZWFkZXJzIDw8ICJDb250ZW50LVR5cGUiIDw8ICJDb250
ZW50LUxlbmd0aCIKKyAgICAgICAgICAgIDw8ICJDb250ZW50LVJhbmdlIiA8PCAiQ29udGVudC1E
aXNwb3NpdGlvbiIKKyAgICAgICAgICAgIDw8ICJSYW5nZSIgPDwgIlNldC1Db29raWUiOworICAg
IGZvciAoaW50IGkgPSAwOyBpIDwgaGVhZGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBRU3Ry
aW5nIGhlYWRlciA9IGhlYWRlcnMuYXQoaSk7CisgICAgICAgIHdoaWxlIChkYXRhLT5pbmRleE9m
KGhlYWRlcikgIT0gLTEpIHsKKyAgICAgICAgICAgIGludCBocyA9IGRhdGEtPmluZGV4T2YoaGVh
ZGVyKTsKKyAgICAgICAgICAgIGludCBoZSA9IGRhdGEtPmluZGV4T2YoIlxyXG5cclxuIiwgaHMp
ICsgNDsKKyAgICAgICAgICAgIGRhdGEtPnJlbW92ZShocywgaGUgLSBocyk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OmZvcndhcmREYXRhKCkKIHsK
ICAgICBtX3Nob3VsZEZvcndhcmREYXRhID0gKG1fbG9hZE1vZGUgIT0gTG9hZE5vcm1hbCk7CiAg
ICAgaWYgKG1fc2hvdWxkRm9yd2FyZERhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmRS
ZXNwb25zZUlmTmVlZGVkKCk7CisgICAgaWYgKCFpc011bHRpcGFydFJlc3BvbnNlKCkpCisgICAg
ICAgIHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7CiAKICAgICAvLyBkb24ndCBlbWl0IHRoZSAiRG9j
dW1lbnQgaGFzIG1vdmVkIGhlcmUiIHR5cGUgb2YgSFRNTAogICAgIGlmIChtX3JlZGlyZWN0ZWQp
CkBAIC00MzAsMTUgKzQ5NCwyNCBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpmb3J3YXJk
RGF0YSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIFFCeXRlQXJyYXkgZGF0YSA9IG1fcmVwbHkt
PnJlYWQobV9yZXBseS0+Ynl0ZXNBdmFpbGFibGUoKSk7Ci0KICAgICBSZXNvdXJjZUhhbmRsZUNs
aWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7CiAgICAgaWYgKCFjbGll
bnQpCiAgICAgICAgIHJldHVybjsKLQotICAgIGlmICghZGF0YS5pc0VtcHR5KCkpIHsKLSAgICAg
ICAgbV9yZXNwb25zZURhdGFTZW50ID0gdHJ1ZTsKLSAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZl
RGF0YShtX3Jlc291cmNlSGFuZGxlLCBkYXRhLmNvbnN0RGF0YSgpLCBkYXRhLmxlbmd0aCgpLCBk
YXRhLmxlbmd0aCgpIC8qRml4TWUqLyk7CisgICAgaWYgKGRhdGEuaXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm47CisgICAgbV9yZXNwb25zZURhdGFTZW50ID0gdHJ1ZTsKKworICAgIC8vIEZvciBu
b3cgd2UganVzdCBzdXBwb3J0IG11bHRpcGFydC1yZXNwb25zZXMgb24gdGhlIGFzc3VtcHRpb24K
KyAgICAvLyB0aGF0IHRoZXkgYXJlIGJvdW5kIHRvIGFuIGltYWdlIG9iamVjdCwgc28gd2UgcmVt
b3ZlIGhlYWRlcnMKKyAgICAvLyBhbmQgYm91bmRhcnkgbWFya2VycyBhbmQgc2VuZCB0aGUgcmF3
IGltYWdlIGRhdGEgb25seS4KKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBoYW5kbGUgbXVsdGlw
YXJ0IHJlc3BvbnNlcyBib3VuZCB0byBpZnJhbWVzLgorICAgIGlmIChpc011bHRpcGFydFJlc3Bv
bnNlKCkpIHsKKyAgICAgICAgcmVtb3ZlTXVsdGlwYXJ0SGVhZGVycygmZGF0YSk7CisgICAgICAg
IHByb2Nlc3NNdWx0aXBhcnRSZXNwb25zZSgmZGF0YSwgY2xpZW50KTsKKyAgICAgICAgcmV0dXJu
OwogICAgIH0KKworICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZUhhbmRsZSwg
ZGF0YS5jb25zdERhdGEoKSwgZGF0YS5sZW5ndGgoKSwgZGF0YS5sZW5ndGgoKSAvKkZpeE1lKi8p
OwogfQogCiB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjp1cGxvYWRQcm9ncmVzcyhxaW50NjQg
Ynl0ZXNTZW50LCBxaW50NjQgYnl0ZXNUb3RhbCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKaW5kZXggZjZiMjM1OGJiYWU3OGJjMWY1
ZGVlYTAwYmUxNWMwOWJhNjRlZDY4ZS4uMjFhYjUxNWU5ZjFjZGU5OTQ5ZDkxNjQ4Y2M3MmNiMGFh
Yzc0OTA1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3Jr
UmVwbHlIYW5kbGVyLmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3Jr
UmVwbHlIYW5kbGVyLmgKQEAgLTM0LDYgKzM0LDcgQEAgUVRfRU5EX05BTUVTUEFDRQogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBSZXNvdXJjZUhhbmRsZTsKK2NsYXNzIFJlc291cmNlSGFu
ZGxlQ2xpZW50OwogCiBjbGFzcyBRTmV0d29ya1JlcGx5SGFuZGxlciA6IHB1YmxpYyBRT2JqZWN0
CiB7CkBAIC02Nyw2ICs2OCw5IEBAIHByaXZhdGUgc2xvdHM6CiBwcml2YXRlOgogICAgIHZvaWQg
c3RhcnQoKTsKICAgICB2b2lkIHJlc2V0U3RhdGUoKTsKKyAgICB2b2lkIHJlbW92ZU11bHRpcGFy
dEhlYWRlcnMoUUJ5dGVBcnJheSogZGF0YSk7CisgICAgdm9pZCBwcm9jZXNzTXVsdGlwYXJ0UmVz
cG9uc2UoUUJ5dGVBcnJheSogZGF0YSwgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCk7Cisg
ICAgYm9vbCBpc011bHRpcGFydFJlc3BvbnNlKCk7CiAKICAgICBRTmV0d29ya1JlcGx5KiBtX3Jl
cGx5OwogICAgIFJlc291cmNlSGFuZGxlKiBtX3Jlc291cmNlSGFuZGxlOwpAQCAtODMsNiArODcs
OCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9zaG91bGRTZW5kUmVzcG9uc2U7CiAgICAgYm9vbCBt
X3Nob3VsZEZvcndhcmREYXRhOwogICAgIGludCBtX3JlZGlyZWN0aW9uVHJpZXM7CisgICAgaW50
IG1fYm91bmRhcmllc1JlYWQ7CisgICAgUUJ5dGVBcnJheSBtX211bHRpUGFydFNlY3Rpb247CiB9
OwogCiAvLyBTZWxmIGRlc3RydWN0aW5nIFFJT0RldmljZSBmb3IgRm9ybURhdGEK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>69826</attachid>
            <date>2010-10-05 12:17:47 -0700</date>
            <delta_ts>2010-10-08 13:42:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47059-20101005201744.patch</filename>
            <type>text/plain</type>
            <size>9857</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMmU1MGZhOGI2MDYwZWQyZWM0MzkwZjI2ODg2MmFiNGM3NDVlZDk3Li4xMzk1M2Iz
NTZjNjdkMWQ3ZTM0ZTI3Y2ZmNTg3NTc2N2Y0NWU0YjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMDMgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSGFuZGxlIG11bHRp
cGFydCBpbWFnZXMKKworICAgICAgICBTdXBwb3J0IG11bHRpcGFydC1yZXNwb25zZXMgb24gdGhl
IGFzc3VtcHRpb24gdGhhdCB0aGV5IGFyZQorICAgICAgICBib3VuZCB0byBhbiBpbWFnZSBvYmpl
Y3QsIHNvIHdlIHJlbW92ZSBoZWFkZXJzIGFuZCBib3VuZGFyeQorICAgICAgICBtYXJrZXJzIGFu
ZCBzZW5kIHRoZSByYXcgaW1hZ2UgZGF0YSBvbmx5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA1OQorCisgICAgICAgICogcGxhdGZvcm0vcXQv
U2tpcHBlZDoKKwogMjAxMC0xMC0wMiAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEJ1aWxkIGZpeC4gTm90IHJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
aW5kZXggOGQ0NmNhZDkwNTZlNTBjNmFhMDQ5NmMwZWFiZDdmYzYyNjg1NDg0My4uMzFjMTQwMjA1
OTg0ZDI4MjE1ZjVhMjUyYzMyOThiYThmNzgwZTVjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CkBAIC0yMzIsOCArMjMyLDkgQEAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3RyZWRpcmVjdC1i
YXNpYy5odG1sCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWZyYW1lcy5odG1s
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWdvYmFjazEuaHRtbAogCi0jIHRp
bWUgb3V0Ci1odHRwL3Rlc3RzL211bHRpcGFydC9pbnZhbGlkLWltYWdlLWRhdGEuaHRtbAorIyBX
ZSBoYW5kbGUgbXVsdGlwYXJ0IHJlc3BvbnNlcyBub3csIGJ1dCBvbmx5IGZvciA8aW1hZ2U+IG9i
amVjdHMuCisjIFdlIG5lZWQgdG8gZmlndXJlIG91dCBtdWx0aXBhcnQgcmVzcG9uc2VzIGluIGlm
cmFtZXMgdG9vLgorIyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi80NzA2MAogaHR0cC90ZXN0cy9t
dWx0aXBhcnQvaW52YWxpZC1pbWFnZS1kYXRhLXN0YW5kYWxvbmUuaHRtbAogCiAjIGRydCBwcmlu
dHMgYWRkaXRpb25hbCBvdXRwdXQgLSBsb29rcyBoYXJtbGVzcwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNWI5Nzc1Nzc2NDA1ODAwODIy
NDJjNDcwMDNkZWFhYmY5OGUxNTcxLi4xZjY3MWY4MWY1ZWYyMzc5ZDJiNGE0YzZhY2M5MTAzNDNl
NjRkZjVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTEwLTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbUXRdIEhhbmRsZSBtdWx0aXBhcnQgaW1hZ2VzCisKKyAgICAgICAgU3VwcG9ydCBtdWx0
aXBhcnQtcmVzcG9uc2VzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhleSBhcmUKKyAgICAgICAg
Ym91bmQgdG8gYW4gaW1hZ2Ugb2JqZWN0LCBzbyB3ZSByZW1vdmUgaGVhZGVycyBhbmQgYm91bmRh
cnkKKyAgICAgICAgbWFya2VycyBhbmQgc2VuZCB0aGUgcmF3IGltYWdlIGRhdGEgb25seS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwNTkKKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjppc011bHRpcGFy
dFJlcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kTXVs
dGlwYXJ0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
Om11bHRpcGFydFJlbW92ZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmZvcndhcmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmg6CisKIDIwMTAtMTAtMDMgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNw
cAppbmRleCAwMzJkZDRjYjI0ZTVhMjA4NTQ5NmJhYjQ5ZTRhNjdjMmM1MTg2N2EwLi44OTg4OGZi
ZDkzYTYyZGE1YmYwYzUzYTdlNTMxMjEyNjM3NjM3ZWExIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKQEAgLTE3NCw2ICsx
NzQsNyBAQCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6UU5ldHdvcmtSZXBseUhhbmRsZXIoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgTG9hZE1vZGUgbG9hZAogICAgICwgbV9zaG91bGRTZW5kUmVzcG9u
c2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZEZvcndhcmREYXRhKGZhbHNlKQogICAgICwgbV9yZWRp
cmVjdGlvblRyaWVzKGdNYXhSZWN1cnNpb25MaW1pdCkKKyAgICAsIG1fYm91bmRhcmllc1JlYWQo
MCkKIHsKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QgJnIgPSBtX3Jlc291cmNlSGFuZGxlLT5m
aXJzdFJlcXVlc3QoKTsKIApAQCAtMzE2LDE0ICszMTcsNiBAQCB2b2lkIFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVwbHktPmVycm9yKCkg
JiYgIWlnbm9yZUh0dHBFcnJvcihtX3JlcGx5LCBtX3Jlc3BvbnNlRGF0YVNlbnQpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9yZXNwb25zZVNlbnQgfHwgIW1fcmVzb3VyY2VIYW5kbGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX3Jlc3BvbnNlU2VudCA9IHRydWU7Ci0KLSAgICBSZXNv
dXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7Ci0g
ICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybjsKLQogICAgIFdURjo6U3RyaW5nIGNvbnRl
bnRUeXBlID0gbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFk
ZXIpLnRvU3RyaW5nKCk7CiAgICAgV1RGOjpTdHJpbmcgZW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNl
dEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOwogICAgIFdURjo6U3RyaW5nIG1pbWVUeXBlID0g
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CkBAIC0zMzgsNiArMzMx
LDE3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1Jl
cXVlc3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kaW5nLCBTdHJpbmcoKSk7CiAKKyAgICBSZXNvdXJjZUhhbmRs
ZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7CisgICAgaWYgKCFj
bGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3Jlc3BvbnNlU2VudCAmJiByZXNw
b25zZS5pc011bHRpcGFydCgpKQorICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZSht
X3Jlc291cmNlSGFuZGxlLCByZXNwb25zZSk7CisKKyAgICBpZiAobV9yZXNwb25zZVNlbnQgfHwg
IW1fcmVzb3VyY2VIYW5kbGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Jlc3BvbnNlU2VudCA9
IHRydWU7CisKICAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkpIHsKICAgICAgICAgY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UobV9yZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogICAgICAgICBy
ZXR1cm47CkBAIC00MTQsMTMgKzQxOCw3NCBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpz
ZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UobV9y
ZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogfQogCitib29sIFFOZXR3b3JrUmVwbHlIYW5kbGVy
Ojppc011bHRpcGFydFJlc3BvbnNlKCkKK3sKKyAgICBRU3RyaW5nIGNvbnRlbnRUeXBlID0gbV9y
ZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFkZXIpLnRvU3RyaW5n
KCk7CisgICAgaWYgKGNvbnRlbnRUeXBlLmNvbnRhaW5zKCJtdWx0aXBhcnQveC1taXhlZC1yZXBs
YWNlIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9p
ZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6cHJvY2Vzc011bHRpcGFydFJlc3BvbnNlKFFCeXRlQXJy
YXkqIGRhdGEsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCit7CisgICAgUVN0cmluZyBj
b250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRlbnRUeXBl
SGVhZGVyKS50b1N0cmluZygpOworICAgIGludCBzID0gY29udGVudFR5cGUubGFzdEluZGV4T2Yo
ImJvdW5kYXJ5PSIpICsgOTsKKyAgICBRU3RyaW5nIGJvdW5kYXJ5ID0gICItLSIgKyBjb250ZW50
VHlwZS5taWQocywgY29udGVudFR5cGUubGVuZ3RoKCkpICsgIlxyXG4iOworCisgICAgLy8gV2Vi
Q29yZSBuZWVkcyBvbmUgY29tcGxldGUgc2VjdGlvbiBvZiB0aGUgbXVsdGlwYXJ0IHJlc3BvbnNl
IGF0IGEgdGltZS4KKyAgICAvLyBJdCBhbHNvIG5lZWRzIHRvIGhhdmUgb25lIGNvbXBsZXRlIHNl
Y3Rpb24gd2FpdGluZyB0byBiZSByZW5kZXJlZCB3aGVuCisgICAgLy8gdGhlIGxvYWQgZmluaXNo
ZXMgYmVjYXVzZSBpdCBjbGVhcnMgdGhlIHJlc291cmNlJ3MgZGF0YSB3aGVuIGl0CisgICAgLy8g
cHJvY2Vzc2VzIGEgc2VjdGlvbi4gVGhpcyBtZWFucyB3ZSBoYXZlIHRvIHRha2UgaW4gZWFjaCBz
ZWN0aW9uIGFuZAorICAgIC8vIG9ubHkgc2VuZCBpdCBmb3IgcHJvY2Vzc2luZyB3aGVuIHdlIGhh
dmUgcmVjZWl2ZWQgdGhlIGVudGlyZSBuZXh0IHNlY3Rpb24uCisgICAgLy8gSXQgYWxzbyBtZWFu
cyB3ZSB3aWxsIG5ldmVyIGRpc3BsYXkgdGhlIGxhc3Qgc2VjdGlvbi4gVGhpcyBjYW4gYmUgZml4
ZWQgaWYKKyAgICAvLyB3ZSBwcmV2ZW50IExvYWRlcjo6SG9zdDo6ZGlkRmluaXNoTG9hZGluZygp
IGZyb20gdHJ5aW5nIHRvIGxvYWQgdGhlCisgICAgLy8gcmVzb3VyY2UncyBkYXRhIGluIHRoZSBj
YXNlIG9mIGEgbXVsdGlwYXJ0IHJlc3BvbnNlIC0gd2hpY2ggd291bGQgYWx3YXlzCisgICAgLy8g
YmUgZW1wdHkgaWYgd2Ugc2VudCBtdWx0aXBhcnQgc2VjdGlvbnMgdG8gdGhlIGxvYWRlciBhcyB3
ZSByZWNlaXZlIHRoZW0uCisgICAgLy8gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMzc1OSNjNAorICAgIHdoaWxlIChkYXRhLT5pbmRleE9mKGJvdW5kYXJ5KSAh
PSAtMSkgeworICAgICAgICBpbnQgYnMgPSBkYXRhLT5pbmRleE9mKGJvdW5kYXJ5KTsKKyAgICAg
ICAgZGF0YS0+cmVtb3ZlKGJzLCBib3VuZGFyeS5sZW5ndGgoKSk7CisgICAgICAgIFFCeXRlQXJy
YXkgcGFydCA9IGRhdGEtPmxlZnQoYnMpOworICAgICAgICBtX211bHRpUGFydFNlY3Rpb24uYXBw
ZW5kKHBhcnQpOworICAgICAgICBkYXRhLT5yZXBsYWNlKHBhcnQsICIiKTsKKyAgICAgICAgaWYg
KCsrbV9ib3VuZGFyaWVzUmVhZCA8IDIpCisgICAgICAgICAgY29udGludWU7CisgICAgICAgIC8v
IDJuZCBib3VuZGFyeSBtYXJrZXIgbWVhbnMgd2UgaGF2ZSBhIHByZXZpb3VzIHNlY3Rpb24gcmVh
ZHkgdG8gcmVuZGVyCisgICAgICAgIGlmICghbV9wcmV2TXVsdGlQYXJ0U2VjdGlvbi5pc0VtcHR5
KCkpIHsKKyAgICAgICAgICAgIHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7CisgICAgICAgICAgICBj
bGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2VIYW5kbGUsIG1fcHJldk11bHRpUGFydFNl
Y3Rpb24uY29uc3REYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9w
cmV2TXVsdGlQYXJ0U2VjdGlvbi5sZW5ndGgoKSwgbV9wcmV2TXVsdGlQYXJ0U2VjdGlvbi5sZW5n
dGgoKSAvKkZpeE1lKi8pOworICAgICAgICB9CisgICAgICAgIG1fcHJldk11bHRpUGFydFNlY3Rp
b24gPSBtX211bHRpUGFydFNlY3Rpb247CisgICAgICAgIG1fbXVsdGlQYXJ0U2VjdGlvbi5jbGVh
cigpOworICAgIH0KKyAgICBtX211bHRpUGFydFNlY3Rpb24uYXBwZW5kKCpkYXRhKTsKK30KKwor
dm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6cmVtb3ZlTXVsdGlwYXJ0SGVhZGVycyhRQnl0ZUFy
cmF5KiBkYXRhKQoreworICAgIFFTdHJpbmdMaXN0IGhlYWRlcnM7CisgICAgaGVhZGVycyA8PCAi
Q29udGVudC1UeXBlIiA8PCAiQ29udGVudC1MZW5ndGgiCisgICAgICAgICAgICA8PCAiQ29udGVu
dC1SYW5nZSIgPDwgIkNvbnRlbnQtRGlzcG9zaXRpb24iCisgICAgICAgICAgICA8PCAiUmFuZ2Ui
IDw8ICJTZXQtQ29va2llIjsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlYWRlcnMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgUVN0cmluZyBoZWFkZXIgPSBoZWFkZXJzLmF0KGkpOworICAgICAg
ICB3aGlsZSAoZGF0YS0+aW5kZXhPZihoZWFkZXIpICE9IC0xKSB7CisgICAgICAgICAgICBpbnQg
aHMgPSBkYXRhLT5pbmRleE9mKGhlYWRlcik7CisgICAgICAgICAgICBpbnQgaGUgPSBkYXRhLT5p
bmRleE9mKCJcclxuXHJcbiIsIGhzKSArIDQ7CisgICAgICAgICAgICBkYXRhLT5yZW1vdmUoaHMs
IGhlIC0gaHMpOworICAgICAgICB9CisgICAgfQorfQorCiB2b2lkIFFOZXR3b3JrUmVwbHlIYW5k
bGVyOjpmb3J3YXJkRGF0YSgpCiB7CiAgICAgbV9zaG91bGRGb3J3YXJkRGF0YSA9IChtX2xvYWRN
b2RlICE9IExvYWROb3JtYWwpOwogICAgIGlmIChtX3Nob3VsZEZvcndhcmREYXRhKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOworICAgIGlmICghaXNNdWx0
aXBhcnRSZXNwb25zZSgpKQorICAgICAgICBzZW5kUmVzcG9uc2VJZk5lZWRlZCgpOwogCiAgICAg
Ly8gZG9uJ3QgZW1pdCB0aGUgIkRvY3VtZW50IGhhcyBtb3ZlZCBoZXJlIiB0eXBlIG9mIEhUTUwK
ICAgICBpZiAobV9yZWRpcmVjdGVkKQpAQCAtNDMwLDE1ICs0OTUsMjQgQEAgdm9pZCBRTmV0d29y
a1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERhdGEoKQogICAgICAgICByZXR1cm47CiAKICAgICBRQnl0
ZUFycmF5IGRhdGEgPSBtX3JlcGx5LT5yZWFkKG1fcmVwbHktPmJ5dGVzQXZhaWxhYmxlKCkpOwot
CiAgICAgUmVzb3VyY2VIYW5kbGVDbGllbnQqIGNsaWVudCA9IG1fcmVzb3VyY2VIYW5kbGUtPmNs
aWVudCgpOwogICAgIGlmICghY2xpZW50KQogICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoIWRh
dGEuaXNFbXB0eSgpKSB7Ci0gICAgICAgIG1fcmVzcG9uc2VEYXRhU2VudCA9IHRydWU7Ci0gICAg
ICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZUhhbmRsZSwgZGF0YS5jb25zdERh
dGEoKSwgZGF0YS5sZW5ndGgoKSwgZGF0YS5sZW5ndGgoKSAvKkZpeE1lKi8pOworICAgIGlmIChk
YXRhLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fcmVzcG9uc2VEYXRhU2VudCA9
IHRydWU7CisKKyAgICAvLyBGb3Igbm93IHdlIGp1c3Qgc3VwcG9ydCBtdWx0aXBhcnQtcmVzcG9u
c2VzIG9uIHRoZSBhc3N1bXB0aW9uCisgICAgLy8gdGhhdCB0aGV5IGFyZSBib3VuZCB0byBhbiBp
bWFnZSBvYmplY3QsIHNvIHdlIHJlbW92ZSBoZWFkZXJzCisgICAgLy8gYW5kIGJvdW5kYXJ5IG1h
cmtlcnMgYW5kIHNlbmQgdGhlIHJhdyBpbWFnZSBkYXRhIG9ubHkuCisgICAgLy8gRklYTUU6IFdl
IG5lZWQgdG8gaGFuZGxlIG11bHRpcGFydCByZXNwb25zZXMgYm91bmQgdG8gaWZyYW1lcy4KKyAg
ICBpZiAoaXNNdWx0aXBhcnRSZXNwb25zZSgpKSB7CisgICAgICAgIHJlbW92ZU11bHRpcGFydEhl
YWRlcnMoJmRhdGEpOworICAgICAgICBwcm9jZXNzTXVsdGlwYXJ0UmVzcG9uc2UoJmRhdGEsIGNs
aWVudCk7CisgICAgICAgIHJldHVybjsKICAgICB9CisKKyAgICBjbGllbnQtPmRpZFJlY2VpdmVE
YXRhKG1fcmVzb3VyY2VIYW5kbGUsIGRhdGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3RoKCksIGRh
dGEubGVuZ3RoKCkgLypGaXhNZSovKTsKIH0KIAogdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6
dXBsb2FkUHJvZ3Jlc3MocWludDY0IGJ5dGVzU2VudCwgcWludDY0IGJ5dGVzVG90YWwpCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIu
aCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCmlu
ZGV4IGY2YjIzNThiYmFlNzhiYzFmNWRlZWEwMGJlMTVjMDliYTY0ZWQ2OGUuLjFmMzgwNjI2Njg5
ZjFkMjU2YjcyNmJkNTdlMTgyZThmNDZmZDFhYjggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCisrKyBiL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5oCkBAIC0zNCw2ICszNCw3IEBAIFFU
X0VORF9OQU1FU1BBQ0UKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVzb3VyY2VIYW5k
bGU7CitjbGFzcyBSZXNvdXJjZUhhbmRsZUNsaWVudDsKIAogY2xhc3MgUU5ldHdvcmtSZXBseUhh
bmRsZXIgOiBwdWJsaWMgUU9iamVjdAogewpAQCAtNjcsNiArNjgsOSBAQCBwcml2YXRlIHNsb3Rz
OgogcHJpdmF0ZToKICAgICB2b2lkIHN0YXJ0KCk7CiAgICAgdm9pZCByZXNldFN0YXRlKCk7Cisg
ICAgdm9pZCByZW1vdmVNdWx0aXBhcnRIZWFkZXJzKFFCeXRlQXJyYXkqIGRhdGEpOworICAgIHZv
aWQgcHJvY2Vzc011bHRpcGFydFJlc3BvbnNlKFFCeXRlQXJyYXkqIGRhdGEsIFJlc291cmNlSGFu
ZGxlQ2xpZW50KiBjbGllbnQpOworICAgIGJvb2wgaXNNdWx0aXBhcnRSZXNwb25zZSgpOwogCiAg
ICAgUU5ldHdvcmtSZXBseSogbV9yZXBseTsKICAgICBSZXNvdXJjZUhhbmRsZSogbV9yZXNvdXJj
ZUhhbmRsZTsKQEAgLTgzLDYgKzg3LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hvdWxkU2Vu
ZFJlc3BvbnNlOwogICAgIGJvb2wgbV9zaG91bGRGb3J3YXJkRGF0YTsKICAgICBpbnQgbV9yZWRp
cmVjdGlvblRyaWVzOworICAgIGludCBtX2JvdW5kYXJpZXNSZWFkOworICAgIFFCeXRlQXJyYXkg
bV9tdWx0aVBhcnRTZWN0aW9uOworICAgIFFCeXRlQXJyYXkgbV9wcmV2TXVsdGlQYXJ0U2VjdGlv
bjsKIH07CiAKIC8vIFNlbGYgZGVzdHJ1Y3RpbmcgUUlPRGV2aWNlIGZvciBGb3JtRGF0YQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70282</attachid>
            <date>2010-10-08 13:42:34 -0700</date>
            <delta_ts>2010-10-09 11:44:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47059-20101008214232.patch</filename>
            <type>text/plain</type>
            <size>10775</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMmU1MGZhOGI2MDYwZWQyZWM0MzkwZjI2ODg2MmFiNGM3NDVlZDk3Li4xMzk1M2Iz
NTZjNjdkMWQ3ZTM0ZTI3Y2ZmNTg3NTc2N2Y0NWU0YjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMDMgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSGFuZGxlIG11bHRp
cGFydCBpbWFnZXMKKworICAgICAgICBTdXBwb3J0IG11bHRpcGFydC1yZXNwb25zZXMgb24gdGhl
IGFzc3VtcHRpb24gdGhhdCB0aGV5IGFyZQorICAgICAgICBib3VuZCB0byBhbiBpbWFnZSBvYmpl
Y3QsIHNvIHdlIHJlbW92ZSBoZWFkZXJzIGFuZCBib3VuZGFyeQorICAgICAgICBtYXJrZXJzIGFu
ZCBzZW5kIHRoZSByYXcgaW1hZ2UgZGF0YSBvbmx5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA1OQorCisgICAgICAgICogcGxhdGZvcm0vcXQv
U2tpcHBlZDoKKwogMjAxMC0xMC0wMiAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEJ1aWxkIGZpeC4gTm90IHJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
aW5kZXggOGQ0NmNhZDkwNTZlNTBjNmFhMDQ5NmMwZWFiZDdmYzYyNjg1NDg0My4uMzFjMTQwMjA1
OTg0ZDI4MjE1ZjVhMjUyYzMyOThiYThmNzgwZTVjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CkBAIC0yMzIsOCArMjMyLDkgQEAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3RyZWRpcmVjdC1i
YXNpYy5odG1sCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWZyYW1lcy5odG1s
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWdvYmFjazEuaHRtbAogCi0jIHRp
bWUgb3V0Ci1odHRwL3Rlc3RzL211bHRpcGFydC9pbnZhbGlkLWltYWdlLWRhdGEuaHRtbAorIyBX
ZSBoYW5kbGUgbXVsdGlwYXJ0IHJlc3BvbnNlcyBub3csIGJ1dCBvbmx5IGZvciA8aW1hZ2U+IG9i
amVjdHMuCisjIFdlIG5lZWQgdG8gZmlndXJlIG91dCBtdWx0aXBhcnQgcmVzcG9uc2VzIGluIGlm
cmFtZXMgdG9vLgorIyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi80NzA2MAogaHR0cC90ZXN0cy9t
dWx0aXBhcnQvaW52YWxpZC1pbWFnZS1kYXRhLXN0YW5kYWxvbmUuaHRtbAogCiAjIGRydCBwcmlu
dHMgYWRkaXRpb25hbCBvdXRwdXQgLSBsb29rcyBoYXJtbGVzcwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNWI5Nzc1Nzc2NDA1ODAwODIy
NDJjNDcwMDNkZWFhYmY5OGUxNTcxLi4xZjY3MWY4MWY1ZWYyMzc5ZDJiNGE0YzZhY2M5MTAzNDNl
NjRkZjVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTEwLTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbUXRdIEhhbmRsZSBtdWx0aXBhcnQgaW1hZ2VzCisKKyAgICAgICAgU3VwcG9ydCBtdWx0
aXBhcnQtcmVzcG9uc2VzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhleSBhcmUKKyAgICAgICAg
Ym91bmQgdG8gYW4gaW1hZ2Ugb2JqZWN0LCBzbyB3ZSByZW1vdmUgaGVhZGVycyBhbmQgYm91bmRh
cnkKKyAgICAgICAgbWFya2VycyBhbmQgc2VuZCB0aGUgcmF3IGltYWdlIGRhdGEgb25seS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwNTkKKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjppc011bHRpcGFy
dFJlcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kTXVs
dGlwYXJ0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
Om11bHRpcGFydFJlbW92ZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmZvcndhcmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmg6CisKIDIwMTAtMTAtMDMgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNw
cAppbmRleCAwMzJkZDRjYjI0ZTVhMjA4NTQ5NmJhYjQ5ZTRhNjdjMmM1MTg2N2EwLi40NTg4Yzdk
OTRlM2M3ODgzZDkwODE2NzlkNDExYmJmYzJjYzUzYTk1IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKQEAgLTE3NCw2ICsx
NzQsNyBAQCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6UU5ldHdvcmtSZXBseUhhbmRsZXIoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgTG9hZE1vZGUgbG9hZAogICAgICwgbV9zaG91bGRTZW5kUmVzcG9u
c2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZEZvcndhcmREYXRhKGZhbHNlKQogICAgICwgbV9yZWRp
cmVjdGlvblRyaWVzKGdNYXhSZWN1cnNpb25MaW1pdCkKKyAgICAsIG1fYm91bmRhcmllc1JlYWQo
MCkKIHsKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QgJnIgPSBtX3Jlc291cmNlSGFuZGxlLT5m
aXJzdFJlcXVlc3QoKTsKIApAQCAtMzE2LDE0ICszMTcsNiBAQCB2b2lkIFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVwbHktPmVycm9yKCkg
JiYgIWlnbm9yZUh0dHBFcnJvcihtX3JlcGx5LCBtX3Jlc3BvbnNlRGF0YVNlbnQpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9yZXNwb25zZVNlbnQgfHwgIW1fcmVzb3VyY2VIYW5kbGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX3Jlc3BvbnNlU2VudCA9IHRydWU7Ci0KLSAgICBSZXNv
dXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7Ci0g
ICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybjsKLQogICAgIFdURjo6U3RyaW5nIGNvbnRl
bnRUeXBlID0gbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFk
ZXIpLnRvU3RyaW5nKCk7CiAgICAgV1RGOjpTdHJpbmcgZW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNl
dEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOwogICAgIFdURjo6U3RyaW5nIG1pbWVUeXBlID0g
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CkBAIC0zMzgsNiArMzMx
LDE3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1Jl
cXVlc3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kaW5nLCBTdHJpbmcoKSk7CiAKKyAgICBSZXNvdXJjZUhhbmRs
ZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7CisgICAgaWYgKCFj
bGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3Jlc3BvbnNlU2VudCAmJiByZXNw
b25zZS5pc011bHRpcGFydCgpKQorICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZSht
X3Jlc291cmNlSGFuZGxlLCByZXNwb25zZSk7CisKKyAgICBpZiAobV9yZXNwb25zZVNlbnQgfHwg
IW1fcmVzb3VyY2VIYW5kbGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Jlc3BvbnNlU2VudCA9
IHRydWU7CisKICAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkpIHsKICAgICAgICAgY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UobV9yZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogICAgICAgICBy
ZXR1cm47CkBAIC00MTQsMTMgKzQxOCw5MSBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpz
ZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UobV9y
ZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogfQogCitib29sIFFOZXR3b3JrUmVwbHlIYW5kbGVy
Ojppc011bHRpcGFydFJlc3BvbnNlKCkgY29uc3QKK3sKKyAgICBRU3RyaW5nIGNvbnRlbnRUeXBl
ID0gbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFkZXIpLnRv
U3RyaW5nKCk7CisgICAgaWYgKGNvbnRlbnRUeXBlLmNvbnRhaW5zKCJtdWx0aXBhcnQveC1taXhl
ZC1yZXBsYWNlIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6cHJvY2Vzc011bHRpcGFydFJlc3BvbnNlKFFC
eXRlQXJyYXkqIGRhdGEsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCit7CisgICAgUVN0
cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRl
bnRUeXBlSGVhZGVyKS50b1N0cmluZygpOworICAgIGludCBzID0gY29udGVudFR5cGUubGFzdElu
ZGV4T2YoImJvdW5kYXJ5PSIpICsgOTsKKworICAgIC8vIFRoZSBib3VuZGFyeSBjb3VsZCBiZSBn
aXZlbiBpbiBhbnkgbnVtYmVyIG9mIHdheXM6IFJGQyAyMDQ2IHNlY3Rpb24gNS4xLjEKKyAgICAv
LyBXZSBzaG91bGQgdXNlIGEgUVJlZ0V4cCB3aGVuIFFCeXRlQXJyYXkgc3VwcG9ydHMgaXQKKyAg
ICBRU3RyaW5nIGJvdW5kYXJ5ID0gY29udGVudFR5cGUubWlkKHMsIGNvbnRlbnRUeXBlLmxlbmd0
aCgpKTsKKyAgICBRU3RyaW5nTGlzdCBwb3NzaWJsZUJvdW5kYXJpZXM7CisgICAgcG9zc2libGVC
b3VuZGFyaWVzIDw8ICJcclxuLS0iICsgYm91bmRhcnkgKyAiXHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIi0tIiArIGJvdW5kYXJ5ICsgIlxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcclxuLS1cIiIgKyBib3VuZGFyeSArICJcIlxyXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICItLVwiIiArIGJvdW5kYXJ5ICsgIlwiXHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIlxyXG5cIiIgKyBib3VuZGFyeSArICJcIlxyXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJcIiIgKyBib3VuZGFyeSArICJcIlxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcclxuIiArIGJvdW5kYXJ5ICsgIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICAg
IDw8IGJvdW5kYXJ5ICsgIlxyXG4iOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG9zc2libGVC
b3VuZGFyaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGJvdW5kYXJ5ID0gcG9zc2libGVCb3Vu
ZGFyaWVzLmF0KGkpOworICAgICAgICBpZiAoZGF0YS0+aW5kZXhPZihib3VuZGFyeSwgMCkgIT0g
LTEpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBXZWJDb3JlIG5lZWRzIG9u
ZSBjb21wbGV0ZSBzZWN0aW9uIG9mIHRoZSBtdWx0aXBhcnQgcmVzcG9uc2UgYXQgYSB0aW1lLgor
ICAgIC8vIEl0IGFsc28gbmVlZHMgdG8gaGF2ZSBvbmUgY29tcGxldGUgc2VjdGlvbiB3YWl0aW5n
IHRvIGJlIHJlbmRlcmVkIHdoZW4KKyAgICAvLyB0aGUgbG9hZCBmaW5pc2hlcyBiZWNhdXNlIGl0
IGNsZWFycyB0aGUgcmVzb3VyY2UncyBkYXRhIHdoZW4gaXQKKyAgICAvLyBwcm9jZXNzZXMgYSBz
ZWN0aW9uLiBUaGlzIG1lYW5zIHdlIGhhdmUgdG8gdGFrZSBpbiBlYWNoIHNlY3Rpb24gYW5kCisg
ICAgLy8gb25seSBzZW5kIGl0IGZvciBwcm9jZXNzaW5nIHdoZW4gd2UgaGF2ZSByZWNlaXZlZCB0
aGUgZW50aXJlIG5leHQgc2VjdGlvbi4KKyAgICAvLyBJdCBhbHNvIG1lYW5zIHdlIHdpbGwgbmV2
ZXIgZGlzcGxheSB0aGUgbGFzdCBzZWN0aW9uLiBUaGlzIGNhbiBiZSBmaXhlZCBpZgorICAgIC8v
IHdlIHByZXZlbnQgTG9hZGVyOjpIb3N0OjpkaWRGaW5pc2hMb2FkaW5nKCkgZnJvbSB0cnlpbmcg
dG8gbG9hZCB0aGUKKyAgICAvLyByZXNvdXJjZSdzIGRhdGEgaW4gdGhlIGNhc2Ugb2YgYSBtdWx0
aXBhcnQgcmVzcG9uc2UgLSB3aGljaCB3b3VsZCBhbHdheXMKKyAgICAvLyBiZSBlbXB0eSBpZiB3
ZSBzZW50IG11bHRpcGFydCBzZWN0aW9ucyB0byB0aGUgbG9hZGVyIGFzIHdlIHJlY2VpdmUgdGhl
bS4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NzU5I2M0CisgICAgaW50IGJvdW5kYXJ5SW5kZXggPSAwLCBwcmV2Qm91bmRhcnlJbmRleCA9IDA7
CisgICAgd2hpbGUgKCFib3VuZGFyeS5pc0VtcHR5KCkKKyAgICAgICAgICAgJiYgKGJvdW5kYXJ5
SW5kZXggPSBkYXRhLT5pbmRleE9mKGJvdW5kYXJ5LCBwcmV2Qm91bmRhcnlJbmRleCkpICE9IC0x
KSB7CisgICAgICAgIG1fbXVsdGlQYXJ0U2VjdGlvbi5hcHBlbmQoZGF0YS0+bWlkKHByZXZCb3Vu
ZGFyeUluZGV4LCBib3VuZGFyeUluZGV4KSk7CisgICAgICAgIGJvdW5kYXJ5SW5kZXggKz0gYm91
bmRhcnkubGVuZ3RoKCk7CisgICAgICAgIHByZXZCb3VuZGFyeUluZGV4ID0gYm91bmRhcnlJbmRl
eDsKKyAgICAgICAgaWYgKCsrbV9ib3VuZGFyaWVzUmVhZCA8IDIpCisgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgIC8vIDJuZCBib3VuZGFyeSBtYXJrZXIgbWVhbnMgd2UgaGF2ZSBhIHByZXZp
b3VzIHNlY3Rpb24gcmVhZHkgdG8gcmVuZGVyCisgICAgICAgIGlmICghbV9wcmV2TXVsdGlQYXJ0
U2VjdGlvbi5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7
CisgICAgICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVEYXRhKG1fcmVzb3VyY2VIYW5kbGUsIG1f
cHJldk11bHRpUGFydFNlY3Rpb24uY29uc3REYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9wcmV2TXVsdGlQYXJ0U2VjdGlvbi5sZW5ndGgoKSwgbV9wcmV2TXVsdGlQ
YXJ0U2VjdGlvbi5sZW5ndGgoKSAvKkZpeE1lKi8pOworICAgICAgICB9CisgICAgICAgIG1fcHJl
dk11bHRpUGFydFNlY3Rpb24gPSBtX211bHRpUGFydFNlY3Rpb247CisgICAgICAgIG1fbXVsdGlQ
YXJ0U2VjdGlvbi5jbGVhcigpOworICAgIH0KKyAgICBtX211bHRpUGFydFNlY3Rpb24uYXBwZW5k
KGRhdGEtPm1pZChwcmV2Qm91bmRhcnlJbmRleCwgZGF0YS0+bGVuZ3RoKCkgLSBwcmV2Qm91bmRh
cnlJbmRleCkpOworfQorCit2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpyZW1vdmVNdWx0aXBh
cnRIZWFkZXJzKFFCeXRlQXJyYXkqIGRhdGEpCit7CisgICAgUVN0cmluZ0xpc3QgaGVhZGVyczsK
KyAgICBoZWFkZXJzIDw8ICJDb250ZW50LVR5cGUiIDw8ICJDb250ZW50LUxlbmd0aCIKKyAgICAg
ICAgICAgIDw8ICJDb250ZW50LVJhbmdlIiA8PCAiQ29udGVudC1EaXNwb3NpdGlvbiIKKyAgICAg
ICAgICAgIDw8ICJSYW5nZSIgPDwgIlNldC1Db29raWUiOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgaGVhZGVycy5zaXplKCk7ICsraSkgeworICAgICAgICBRU3RyaW5nIGhlYWRlciA9IGhlYWRl
cnMuYXQoaSk7CisgICAgICAgIHdoaWxlIChkYXRhLT5pbmRleE9mKGhlYWRlcikgIT0gLTEpIHsK
KyAgICAgICAgICAgIGludCBocyA9IGRhdGEtPmluZGV4T2YoaGVhZGVyKTsKKyAgICAgICAgICAg
IGludCBoZSA9IGRhdGEtPmluZGV4T2YoIlxyXG5cclxuIiwgaHMpICsgNDsKKyAgICAgICAgICAg
IGRhdGEtPnJlbW92ZShocywgaGUgLSBocyk7CisgICAgICAgIH0KKyAgICB9Cit9CisKIHZvaWQg
UU5ldHdvcmtSZXBseUhhbmRsZXI6OmZvcndhcmREYXRhKCkKIHsKICAgICBtX3Nob3VsZEZvcndh
cmREYXRhID0gKG1fbG9hZE1vZGUgIT0gTG9hZE5vcm1hbCk7CiAgICAgaWYgKG1fc2hvdWxkRm9y
d2FyZERhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIHNlbmRSZXNwb25zZUlmTmVlZGVkKCk7
CisgICAgaWYgKCFpc011bHRpcGFydFJlc3BvbnNlKCkpCisgICAgICAgIHNlbmRSZXNwb25zZUlm
TmVlZGVkKCk7CiAKICAgICAvLyBkb24ndCBlbWl0IHRoZSAiRG9jdW1lbnQgaGFzIG1vdmVkIGhl
cmUiIHR5cGUgb2YgSFRNTAogICAgIGlmIChtX3JlZGlyZWN0ZWQpCkBAIC00MzAsMTUgKzUxMiwy
NCBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpmb3J3YXJkRGF0YSgpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFFCeXRlQXJyYXkgZGF0YSA9IG1fcmVwbHktPnJlYWQobV9yZXBseS0+Ynl0
ZXNBdmFpbGFibGUoKSk7Ci0KICAgICBSZXNvdXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9y
ZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7CiAgICAgaWYgKCFjbGllbnQpCiAgICAgICAgIHJldHVy
bjsKLQotICAgIGlmICghZGF0YS5pc0VtcHR5KCkpIHsKLSAgICAgICAgbV9yZXNwb25zZURhdGFT
ZW50ID0gdHJ1ZTsKLSAgICAgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlSGFu
ZGxlLCBkYXRhLmNvbnN0RGF0YSgpLCBkYXRhLmxlbmd0aCgpLCBkYXRhLmxlbmd0aCgpIC8qRml4
TWUqLyk7CisgICAgaWYgKGRhdGEuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAgbV9y
ZXNwb25zZURhdGFTZW50ID0gdHJ1ZTsKKworICAgIC8vIEZvciBub3cgd2UganVzdCBzdXBwb3J0
IG11bHRpcGFydC1yZXNwb25zZXMgb24gdGhlIGFzc3VtcHRpb24KKyAgICAvLyB0aGF0IHRoZXkg
YXJlIGJvdW5kIHRvIGFuIGltYWdlIG9iamVjdCwgc28gd2UgcmVtb3ZlIGhlYWRlcnMKKyAgICAv
LyBhbmQgYm91bmRhcnkgbWFya2VycyBhbmQgc2VuZCB0aGUgcmF3IGltYWdlIGRhdGEgb25seS4K
KyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBoYW5kbGUgbXVsdGlwYXJ0IHJlc3BvbnNlcyBib3Vu
ZCB0byBpZnJhbWVzLgorICAgIGlmIChpc011bHRpcGFydFJlc3BvbnNlKCkpIHsKKyAgICAgICAg
cmVtb3ZlTXVsdGlwYXJ0SGVhZGVycygmZGF0YSk7CisgICAgICAgIHByb2Nlc3NNdWx0aXBhcnRS
ZXNwb25zZSgmZGF0YSwgY2xpZW50KTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGNs
aWVudC0+ZGlkUmVjZWl2ZURhdGEobV9yZXNvdXJjZUhhbmRsZSwgZGF0YS5jb25zdERhdGEoKSwg
ZGF0YS5sZW5ndGgoKSwgZGF0YS5sZW5ndGgoKSAvKkZpeE1lKi8pOwogfQogCiB2b2lkIFFOZXR3
b3JrUmVwbHlIYW5kbGVyOjp1cGxvYWRQcm9ncmVzcyhxaW50NjQgYnl0ZXNTZW50LCBxaW50NjQg
Ynl0ZXNUb3RhbCkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9xdC9RTmV0
d29ya1JlcGx5SGFuZGxlci5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3Jr
UmVwbHlIYW5kbGVyLmgKaW5kZXggZjZiMjM1OGJiYWU3OGJjMWY1ZGVlYTAwYmUxNWMwOWJhNjRl
ZDY4ZS4uOTI1ZDA4ZjA4M2NiYzcxMzNhMDRjMTlmNTRmZGJjZGMyMTMzZjI0NCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmgKQEAg
LTM0LDYgKzM0LDcgQEAgUVRfRU5EX05BTUVTUEFDRQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBj
bGFzcyBSZXNvdXJjZUhhbmRsZTsKK2NsYXNzIFJlc291cmNlSGFuZGxlQ2xpZW50OwogCiBjbGFz
cyBRTmV0d29ya1JlcGx5SGFuZGxlciA6IHB1YmxpYyBRT2JqZWN0CiB7CkBAIC02Nyw2ICs2OCw5
IEBAIHByaXZhdGUgc2xvdHM6CiBwcml2YXRlOgogICAgIHZvaWQgc3RhcnQoKTsKICAgICB2b2lk
IHJlc2V0U3RhdGUoKTsKKyAgICB2b2lkIHJlbW92ZU11bHRpcGFydEhlYWRlcnMoUUJ5dGVBcnJh
eSopOworICAgIHZvaWQgcHJvY2Vzc011bHRpcGFydFJlc3BvbnNlKFFCeXRlQXJyYXkqLCBSZXNv
dXJjZUhhbmRsZUNsaWVudCopOworICAgIGJvb2wgaXNNdWx0aXBhcnRSZXNwb25zZSgpIGNvbnN0
OwogCiAgICAgUU5ldHdvcmtSZXBseSogbV9yZXBseTsKICAgICBSZXNvdXJjZUhhbmRsZSogbV9y
ZXNvdXJjZUhhbmRsZTsKQEAgLTgzLDYgKzg3LDkgQEAgcHJpdmF0ZToKICAgICBib29sIG1fc2hv
dWxkU2VuZFJlc3BvbnNlOwogICAgIGJvb2wgbV9zaG91bGRGb3J3YXJkRGF0YTsKICAgICBpbnQg
bV9yZWRpcmVjdGlvblRyaWVzOworICAgIGludCBtX2JvdW5kYXJpZXNSZWFkOworICAgIFFCeXRl
QXJyYXkgbV9tdWx0aVBhcnRTZWN0aW9uOworICAgIFFCeXRlQXJyYXkgbV9wcmV2TXVsdGlQYXJ0
U2VjdGlvbjsKIH07CiAKIC8vIFNlbGYgZGVzdHJ1Y3RpbmcgUUlPRGV2aWNlIGZvciBGb3JtRGF0
YQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>70358</attachid>
            <date>2010-10-09 11:44:37 -0700</date>
            <delta_ts>2011-02-08 12:12:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-47059-20101009194437.patch</filename>
            <type>text/plain</type>
            <size>10795</size>
            <attacher name="Robert Hogan">robert</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMmU1MGZhOGI2MDYwZWQyZWM0MzkwZjI2ODg2MmFiNGM3NDVlZDk3Li4xMzk1M2Iz
NTZjNjdkMWQ3ZTM0ZTI3Y2ZmNTg3NTc2N2Y0NWU0YjZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMTAtMDMgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtRdF0gSGFuZGxlIG11bHRp
cGFydCBpbWFnZXMKKworICAgICAgICBTdXBwb3J0IG11bHRpcGFydC1yZXNwb25zZXMgb24gdGhl
IGFzc3VtcHRpb24gdGhhdCB0aGV5IGFyZQorICAgICAgICBib3VuZCB0byBhbiBpbWFnZSBvYmpl
Y3QsIHNvIHdlIHJlbW92ZSBoZWFkZXJzIGFuZCBib3VuZGFyeQorICAgICAgICBtYXJrZXJzIGFu
ZCBzZW5kIHRoZSByYXcgaW1hZ2UgZGF0YSBvbmx5LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NzA1OQorCisgICAgICAgICogcGxhdGZvcm0vcXQv
U2tpcHBlZDoKKwogMjAxMC0xMC0wMiAgQWxwaGEgTGFtICA8aGNsYW1AY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIEJ1aWxkIGZpeC4gTm90IHJldmlld2VkLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQK
aW5kZXggOGQ0NmNhZDkwNTZlNTBjNmFhMDQ5NmMwZWFiZDdmYzYyNjg1NDg0My4uMzFjMTQwMjA1
OTg0ZDI4MjE1ZjVhMjUyYzMyOThiYThmNzgwZTVjZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVk
CkBAIC0yMzIsOCArMjMyLDkgQEAgaHR0cC90ZXN0cy9uYXZpZ2F0aW9uL3Bvc3RyZWRpcmVjdC1i
YXNpYy5odG1sCiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWZyYW1lcy5odG1s
CiBodHRwL3Rlc3RzL25hdmlnYXRpb24vcG9zdHJlZGlyZWN0LWdvYmFjazEuaHRtbAogCi0jIHRp
bWUgb3V0Ci1odHRwL3Rlc3RzL211bHRpcGFydC9pbnZhbGlkLWltYWdlLWRhdGEuaHRtbAorIyBX
ZSBoYW5kbGUgbXVsdGlwYXJ0IHJlc3BvbnNlcyBub3csIGJ1dCBvbmx5IGZvciA8aW1hZ2U+IG9i
amVjdHMuCisjIFdlIG5lZWQgdG8gZmlndXJlIG91dCBtdWx0aXBhcnQgcmVzcG9uc2VzIGluIGlm
cmFtZXMgdG9vLgorIyBTZWUgaHR0cDovL3dlYmtpdC5vcmcvYi80NzA2MAogaHR0cC90ZXN0cy9t
dWx0aXBhcnQvaW52YWxpZC1pbWFnZS1kYXRhLXN0YW5kYWxvbmUuaHRtbAogCiAjIGRydCBwcmlu
dHMgYWRkaXRpb25hbCBvdXRwdXQgLSBsb29rcyBoYXJtbGVzcwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwNWI5Nzc1Nzc2NDA1ODAwODIy
NDJjNDcwMDNkZWFhYmY5OGUxNTcxLi4xZjY3MWY4MWY1ZWYyMzc5ZDJiNGE0YzZhY2M5MTAzNDNl
NjRkZjVjIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTEwLTAzICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRA
d2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBbUXRdIEhhbmRsZSBtdWx0aXBhcnQgaW1hZ2VzCisKKyAgICAgICAgU3VwcG9ydCBtdWx0
aXBhcnQtcmVzcG9uc2VzIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhleSBhcmUKKyAgICAgICAg
Ym91bmQgdG8gYW4gaW1hZ2Ugb2JqZWN0LCBzbyB3ZSByZW1vdmUgaGVhZGVycyBhbmQgYm91bmRh
cnkKKyAgICAgICAgbWFya2VycyBhbmQgc2VuZCB0aGUgcmF3IGltYWdlIGRhdGEgb25seS4KKwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDcwNTkKKwor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVl
ZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjppc011bHRpcGFy
dFJlcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OlFOZXR3b3JrUmVwbHlIYW5kbGVyOjpzZW5kTXVs
dGlwYXJ0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBseUhhbmRsZXI6
Om11bHRpcGFydFJlbW92ZUhlYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6UU5ldHdvcmtSZXBs
eUhhbmRsZXI6OmZvcndhcmREYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3F0L1FO
ZXR3b3JrUmVwbHlIYW5kbGVyLmg6CisKIDIwMTAtMTAtMDMgIEFkYW0gQmFydGggIDxhYmFydGhA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBIb2xnZXIgRnJleXRoZXIuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIu
Y3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmNw
cAppbmRleCAwMzJkZDRjYjI0ZTVhMjA4NTQ5NmJhYjQ5ZTRhNjdjMmM1MTg2N2EwLi45Y2UzMjUw
NmMxY2VmZDBhODNhMjUwY2U4MTRkZWYxZTgwZWZkYTQ5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuY3BwCisrKyBiL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9xdC9RTmV0d29ya1JlcGx5SGFuZGxlci5jcHAKQEAgLTE3NCw2ICsx
NzQsNyBAQCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6UU5ldHdvcmtSZXBseUhhbmRsZXIoUmVzb3Vy
Y2VIYW5kbGUqIGhhbmRsZSwgTG9hZE1vZGUgbG9hZAogICAgICwgbV9zaG91bGRTZW5kUmVzcG9u
c2UoZmFsc2UpCiAgICAgLCBtX3Nob3VsZEZvcndhcmREYXRhKGZhbHNlKQogICAgICwgbV9yZWRp
cmVjdGlvblRyaWVzKGdNYXhSZWN1cnNpb25MaW1pdCkKKyAgICAsIG1fYm91bmRhcmllc1JlYWQo
MCkKIHsKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QgJnIgPSBtX3Jlc291cmNlSGFuZGxlLT5m
aXJzdFJlcXVlc3QoKTsKIApAQCAtMzE2LDE0ICszMTcsNiBAQCB2b2lkIFFOZXR3b3JrUmVwbHlI
YW5kbGVyOjpzZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgaWYgKG1fcmVwbHktPmVycm9yKCkg
JiYgIWlnbm9yZUh0dHBFcnJvcihtX3JlcGx5LCBtX3Jlc3BvbnNlRGF0YVNlbnQpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAobV9yZXNwb25zZVNlbnQgfHwgIW1fcmVzb3VyY2VIYW5kbGUp
Ci0gICAgICAgIHJldHVybjsKLSAgICBtX3Jlc3BvbnNlU2VudCA9IHRydWU7Ci0KLSAgICBSZXNv
dXJjZUhhbmRsZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7Ci0g
ICAgaWYgKCFjbGllbnQpCi0gICAgICAgIHJldHVybjsKLQogICAgIFdURjo6U3RyaW5nIGNvbnRl
bnRUeXBlID0gbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFk
ZXIpLnRvU3RyaW5nKCk7CiAgICAgV1RGOjpTdHJpbmcgZW5jb2RpbmcgPSBleHRyYWN0Q2hhcnNl
dEZyb21NZWRpYVR5cGUoY29udGVudFR5cGUpOwogICAgIFdURjo6U3RyaW5nIG1pbWVUeXBlID0g
ZXh0cmFjdE1JTUVUeXBlRnJvbU1lZGlhVHlwZShjb250ZW50VHlwZSk7CkBAIC0zMzgsNiArMzMx
LDE3IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnNlbmRSZXNwb25zZUlmTmVlZGVkKCkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1Jl
cXVlc3Q6OkNvbnRlbnRMZW5ndGhIZWFkZXIpLnRvTG9uZ0xvbmcoKSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGVuY29kaW5nLCBTdHJpbmcoKSk7CiAKKyAgICBSZXNvdXJjZUhhbmRs
ZUNsaWVudCogY2xpZW50ID0gbV9yZXNvdXJjZUhhbmRsZS0+Y2xpZW50KCk7CisgICAgaWYgKCFj
bGllbnQpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3Jlc3BvbnNlU2VudCAmJiByZXNw
b25zZS5pc011bHRpcGFydCgpKQorICAgICAgICBjbGllbnQtPmRpZFJlY2VpdmVSZXNwb25zZSht
X3Jlc291cmNlSGFuZGxlLCByZXNwb25zZSk7CisKKyAgICBpZiAobV9yZXNwb25zZVNlbnQgfHwg
IW1fcmVzb3VyY2VIYW5kbGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX3Jlc3BvbnNlU2VudCA9
IHRydWU7CisKICAgICBpZiAodXJsLmlzTG9jYWxGaWxlKCkpIHsKICAgICAgICAgY2xpZW50LT5k
aWRSZWNlaXZlUmVzcG9uc2UobV9yZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogICAgICAgICBy
ZXR1cm47CkBAIC00MTQsMTMgKzQxOCw5MSBAQCB2b2lkIFFOZXR3b3JrUmVwbHlIYW5kbGVyOjpz
ZW5kUmVzcG9uc2VJZk5lZWRlZCgpCiAgICAgY2xpZW50LT5kaWRSZWNlaXZlUmVzcG9uc2UobV9y
ZXNvdXJjZUhhbmRsZSwgcmVzcG9uc2UpOwogfQogCitib29sIFFOZXR3b3JrUmVwbHlIYW5kbGVy
Ojppc011bHRpcGFydFJlc3BvbnNlKCkgY29uc3QKK3sKKyAgICBRU3RyaW5nIGNvbnRlbnRUeXBl
ID0gbV9yZXBseS0+aGVhZGVyKFFOZXR3b3JrUmVxdWVzdDo6Q29udGVudFR5cGVIZWFkZXIpLnRv
U3RyaW5nKCk7CisgICAgaWYgKGNvbnRlbnRUeXBlLmNvbnRhaW5zKCJtdWx0aXBhcnQveC1taXhl
ZC1yZXBsYWNlIikpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBmYWxzZTsKK30K
Kwordm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6cHJvY2Vzc011bHRpcGFydFJlc3BvbnNlKFFC
eXRlQXJyYXkqIGRhdGEsIFJlc291cmNlSGFuZGxlQ2xpZW50KiBjbGllbnQpCit7CisgICAgUVN0
cmluZyBjb250ZW50VHlwZSA9IG1fcmVwbHktPmhlYWRlcihRTmV0d29ya1JlcXVlc3Q6OkNvbnRl
bnRUeXBlSGVhZGVyKS50b1N0cmluZygpOworICAgIGludCBzID0gY29udGVudFR5cGUubGFzdElu
ZGV4T2YoImJvdW5kYXJ5PSIpICsgOTsKKworICAgIC8vIFRoZSBib3VuZGFyeSBjb3VsZCBiZSBn
aXZlbiBpbiBhbnkgbnVtYmVyIG9mIHdheXM6IFJGQyAyMDQ2IHNlY3Rpb24gNS4xLjEKKyAgICAv
LyBXZSBzaG91bGQgdXNlIGEgUVJlZ0V4cCB3aGVuIFFCeXRlQXJyYXkgc3VwcG9ydHMgaXQKKyAg
ICBRU3RyaW5nIGJvdW5kYXJ5ID0gY29udGVudFR5cGUubWlkKHMsIGNvbnRlbnRUeXBlLmxlbmd0
aCgpKTsKKyAgICBRU3RyaW5nTGlzdCBwb3NzaWJsZUJvdW5kYXJpZXM7CisgICAgcG9zc2libGVC
b3VuZGFyaWVzIDw8ICJcclxuLS0iICsgYm91bmRhcnkgKyAiXHJcbiIKKyAgICAgICAgICAgICAg
ICAgICAgICAgPDwgIi0tIiArIGJvdW5kYXJ5ICsgIlxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcclxuLS1cIiIgKyBib3VuZGFyeSArICJcIlxyXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICItLVwiIiArIGJvdW5kYXJ5ICsgIlwiXHJcbiIKKyAgICAgICAgICAgICAgICAg
ICAgICAgPDwgIlxyXG5cIiIgKyBib3VuZGFyeSArICJcIlxyXG4iCisgICAgICAgICAgICAgICAg
ICAgICAgIDw8ICJcIiIgKyBib3VuZGFyeSArICJcIlxyXG4iCisgICAgICAgICAgICAgICAgICAg
ICAgIDw8ICJcclxuIiArIGJvdW5kYXJ5ICsgIlxyXG4iCisgICAgICAgICAgICAgICAgICAgICAg
IDw8IGJvdW5kYXJ5ICsgIlxyXG4iOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG9zc2libGVC
b3VuZGFyaWVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGJvdW5kYXJ5ID0gcG9zc2libGVCb3Vu
ZGFyaWVzLmF0KGkpOworICAgICAgICBpZiAoZGF0YS0+aW5kZXhPZihib3VuZGFyeSwgMCkgIT0g
LTEpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICAvLyBXZWJDb3JlIG5lZWRzIG9u
ZSBjb21wbGV0ZSBzZWN0aW9uIG9mIHRoZSBtdWx0aXBhcnQgcmVzcG9uc2UgYXQgYSB0aW1lLgor
ICAgIC8vIEl0IGFsc28gbmVlZHMgdG8gaGF2ZSBvbmUgY29tcGxldGUgc2VjdGlvbiB3YWl0aW5n
IHRvIGJlIHJlbmRlcmVkIHdoZW4KKyAgICAvLyB0aGUgbG9hZCBmaW5pc2hlcyBiZWNhdXNlIGl0
IGNsZWFycyB0aGUgcmVzb3VyY2UncyBkYXRhIHdoZW4gaXQKKyAgICAvLyBwcm9jZXNzZXMgYSBz
ZWN0aW9uLiBUaGlzIG1lYW5zIHdlIGhhdmUgdG8gdGFrZSBpbiBlYWNoIHNlY3Rpb24gYW5kCisg
ICAgLy8gb25seSBzZW5kIGl0IGZvciBwcm9jZXNzaW5nIHdoZW4gd2UgaGF2ZSByZWNlaXZlZCB0
aGUgZW50aXJlIG5leHQgc2VjdGlvbi4KKyAgICAvLyBJdCBhbHNvIG1lYW5zIHdlIHdpbGwgbmV2
ZXIgZGlzcGxheSB0aGUgbGFzdCBzZWN0aW9uLiBUaGlzIGNhbiBiZSBmaXhlZCBpZgorICAgIC8v
IHdlIHByZXZlbnQgTG9hZGVyOjpIb3N0OjpkaWRGaW5pc2hMb2FkaW5nKCkgZnJvbSB0cnlpbmcg
dG8gbG9hZCB0aGUKKyAgICAvLyByZXNvdXJjZSdzIGRhdGEgaW4gdGhlIGNhc2Ugb2YgYSBtdWx0
aXBhcnQgcmVzcG9uc2UgLSB3aGljaCB3b3VsZCBhbHdheXMKKyAgICAvLyBiZSBlbXB0eSBpZiB3
ZSBzZW50IG11bHRpcGFydCBzZWN0aW9ucyB0byB0aGUgbG9hZGVyIGFzIHdlIHJlY2VpdmUgdGhl
bS4KKyAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEz
NzU5I2M0CisgICAgaW50IGJvdW5kYXJ5SW5kZXggPSAwLCBwcmV2Qm91bmRhcnlJbmRleCA9IDA7
CisgICAgd2hpbGUgKCFib3VuZGFyeS5pc0VtcHR5KCkKKyAgICAgICAgICAgJiYgKGJvdW5kYXJ5
SW5kZXggPSBkYXRhLT5pbmRleE9mKGJvdW5kYXJ5LCBwcmV2Qm91bmRhcnlJbmRleCkpICE9IC0x
KSB7CisgICAgICAgIG1fbXVsdGlQYXJ0U2VjdGlvbi5hcHBlbmQoZGF0YS0+bWlkKHByZXZCb3Vu
ZGFyeUluZGV4LCBib3VuZGFyeUluZGV4IC0gcHJldkJvdW5kYXJ5SW5kZXgpKTsKKyAgICAgICAg
Ym91bmRhcnlJbmRleCArPSBib3VuZGFyeS5sZW5ndGgoKTsKKyAgICAgICAgcHJldkJvdW5kYXJ5
SW5kZXggPSBib3VuZGFyeUluZGV4OworICAgICAgICBpZiAoKyttX2JvdW5kYXJpZXNSZWFkIDwg
MikKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgLy8gMm5kIGJvdW5kYXJ5IG1hcmtlciBt
ZWFucyB3ZSBoYXZlIGEgcHJldmlvdXMgc2VjdGlvbiByZWFkeSB0byByZW5kZXIKKyAgICAgICAg
aWYgKCFtX3ByZXZNdWx0aVBhcnRTZWN0aW9uLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgc2Vu
ZFJlc3BvbnNlSWZOZWVkZWQoKTsKKyAgICAgICAgICAgIGNsaWVudC0+ZGlkUmVjZWl2ZURhdGEo
bV9yZXNvdXJjZUhhbmRsZSwgbV9wcmV2TXVsdGlQYXJ0U2VjdGlvbi5jb25zdERhdGEoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ByZXZNdWx0aVBhcnRTZWN0aW9uLmxl
bmd0aCgpLCBtX3ByZXZNdWx0aVBhcnRTZWN0aW9uLmxlbmd0aCgpIC8qRml4TWUqLyk7CisgICAg
ICAgIH0KKyAgICAgICAgbV9wcmV2TXVsdGlQYXJ0U2VjdGlvbiA9IG1fbXVsdGlQYXJ0U2VjdGlv
bjsKKyAgICAgICAgbV9tdWx0aVBhcnRTZWN0aW9uLmNsZWFyKCk7CisgICAgfQorICAgIG1fbXVs
dGlQYXJ0U2VjdGlvbi5hcHBlbmQoZGF0YS0+bWlkKHByZXZCb3VuZGFyeUluZGV4LCBkYXRhLT5s
ZW5ndGgoKSAtIHByZXZCb3VuZGFyeUluZGV4KSk7Cit9CisKK3ZvaWQgUU5ldHdvcmtSZXBseUhh
bmRsZXI6OnJlbW92ZU11bHRpcGFydEhlYWRlcnMoUUJ5dGVBcnJheSogZGF0YSkKK3sKKyAgICBR
U3RyaW5nTGlzdCBoZWFkZXJzOworICAgIGhlYWRlcnMgPDwgIkNvbnRlbnQtVHlwZSIgPDwgIkNv
bnRlbnQtTGVuZ3RoIgorICAgICAgICAgICAgPDwgIkNvbnRlbnQtUmFuZ2UiIDw8ICJDb250ZW50
LURpc3Bvc2l0aW9uIgorICAgICAgICAgICAgPDwgIlJhbmdlIiA8PCAiU2V0LUNvb2tpZSI7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWFkZXJzLnNpemUoKTsgKytpKSB7CisgICAgICAgIFFT
dHJpbmcgaGVhZGVyID0gaGVhZGVycy5hdChpKTsKKyAgICAgICAgd2hpbGUgKGRhdGEtPmluZGV4
T2YoaGVhZGVyKSAhPSAtMSkgeworICAgICAgICAgICAgaW50IGhzID0gZGF0YS0+aW5kZXhPZiho
ZWFkZXIpOworICAgICAgICAgICAgaW50IGhlID0gZGF0YS0+aW5kZXhPZigiXHJcblxyXG4iLCBo
cykgKyA0OworICAgICAgICAgICAgZGF0YS0+cmVtb3ZlKGhzLCBoZSAtIGhzKTsKKyAgICAgICAg
fQorICAgIH0KK30KKwogdm9pZCBRTmV0d29ya1JlcGx5SGFuZGxlcjo6Zm9yd2FyZERhdGEoKQog
ewogICAgIG1fc2hvdWxkRm9yd2FyZERhdGEgPSAobV9sb2FkTW9kZSAhPSBMb2FkTm9ybWFsKTsK
ICAgICBpZiAobV9zaG91bGRGb3J3YXJkRGF0YSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2Vu
ZFJlc3BvbnNlSWZOZWVkZWQoKTsKKyAgICBpZiAoIWlzTXVsdGlwYXJ0UmVzcG9uc2UoKSkKKyAg
ICAgICAgc2VuZFJlc3BvbnNlSWZOZWVkZWQoKTsKIAogICAgIC8vIGRvbid0IGVtaXQgdGhlICJE
b2N1bWVudCBoYXMgbW92ZWQgaGVyZSIgdHlwZSBvZiBIVE1MCiAgICAgaWYgKG1fcmVkaXJlY3Rl
ZCkKQEAgLTQzMCwxNSArNTEyLDI0IEBAIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OmZvcndh
cmREYXRhKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUUJ5dGVBcnJheSBkYXRhID0gbV9yZXBs
eS0+cmVhZChtX3JlcGx5LT5ieXRlc0F2YWlsYWJsZSgpKTsKLQogICAgIFJlc291cmNlSGFuZGxl
Q2xpZW50KiBjbGllbnQgPSBtX3Jlc291cmNlSGFuZGxlLT5jbGllbnQoKTsKICAgICBpZiAoIWNs
aWVudCkKICAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKCFkYXRhLmlzRW1wdHkoKSkgewotICAg
ICAgICBtX3Jlc3BvbnNlRGF0YVNlbnQgPSB0cnVlOwotICAgICAgICBjbGllbnQtPmRpZFJlY2Vp
dmVEYXRhKG1fcmVzb3VyY2VIYW5kbGUsIGRhdGEuY29uc3REYXRhKCksIGRhdGEubGVuZ3RoKCks
IGRhdGEubGVuZ3RoKCkgLypGaXhNZSovKTsKKyAgICBpZiAoZGF0YS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX3Jlc3BvbnNlRGF0YVNlbnQgPSB0cnVlOworCisgICAgLy8gRm9y
IG5vdyB3ZSBqdXN0IHN1cHBvcnQgbXVsdGlwYXJ0LXJlc3BvbnNlcyBvbiB0aGUgYXNzdW1wdGlv
bgorICAgIC8vIHRoYXQgdGhleSBhcmUgYm91bmQgdG8gYW4gaW1hZ2Ugb2JqZWN0LCBzbyB3ZSBy
ZW1vdmUgaGVhZGVycworICAgIC8vIGFuZCBib3VuZGFyeSBtYXJrZXJzIGFuZCBzZW5kIHRoZSBy
YXcgaW1hZ2UgZGF0YSBvbmx5LgorICAgIC8vIEZJWE1FOiBXZSBuZWVkIHRvIGhhbmRsZSBtdWx0
aXBhcnQgcmVzcG9uc2VzIGJvdW5kIHRvIGlmcmFtZXMuCisgICAgaWYgKGlzTXVsdGlwYXJ0UmVz
cG9uc2UoKSkgeworICAgICAgICByZW1vdmVNdWx0aXBhcnRIZWFkZXJzKCZkYXRhKTsKKyAgICAg
ICAgcHJvY2Vzc011bHRpcGFydFJlc3BvbnNlKCZkYXRhLCBjbGllbnQpOworICAgICAgICByZXR1
cm47CiAgICAgfQorCisgICAgY2xpZW50LT5kaWRSZWNlaXZlRGF0YShtX3Jlc291cmNlSGFuZGxl
LCBkYXRhLmNvbnN0RGF0YSgpLCBkYXRhLmxlbmd0aCgpLCBkYXRhLmxlbmd0aCgpIC8qRml4TWUq
Lyk7CiB9CiAKIHZvaWQgUU5ldHdvcmtSZXBseUhhbmRsZXI6OnVwbG9hZFByb2dyZXNzKHFpbnQ2
NCBieXRlc1NlbnQsIHFpbnQ2NCBieXRlc1RvdGFsKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL3F0L1FOZXR3b3JrUmVwbHlIYW5kbGVyLmggYi9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvcXQvUU5ldHdvcmtSZXBseUhhbmRsZXIuaAppbmRleCBmNmIyMzU4YmJhZTc4YmMx
ZjVkZWVhMDBiZTE1YzA5YmE2NGVkNjhlLi45MjVkMDhmMDgzY2JjNzEzM2EwNGMxOWY1NGZkYmNk
YzIxMzNmMjQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdv
cmtSZXBseUhhbmRsZXIuaAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvcXQvUU5ldHdv
cmtSZXBseUhhbmRsZXIuaApAQCAtMzQsNiArMzQsNyBAQCBRVF9FTkRfTkFNRVNQQUNFCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFJlc291cmNlSGFuZGxlOworY2xhc3MgUmVzb3VyY2VI
YW5kbGVDbGllbnQ7CiAKIGNsYXNzIFFOZXR3b3JrUmVwbHlIYW5kbGVyIDogcHVibGljIFFPYmpl
Y3QKIHsKQEAgLTY3LDYgKzY4LDkgQEAgcHJpdmF0ZSBzbG90czoKIHByaXZhdGU6CiAgICAgdm9p
ZCBzdGFydCgpOwogICAgIHZvaWQgcmVzZXRTdGF0ZSgpOworICAgIHZvaWQgcmVtb3ZlTXVsdGlw
YXJ0SGVhZGVycyhRQnl0ZUFycmF5Kik7CisgICAgdm9pZCBwcm9jZXNzTXVsdGlwYXJ0UmVzcG9u
c2UoUUJ5dGVBcnJheSosIFJlc291cmNlSGFuZGxlQ2xpZW50Kik7CisgICAgYm9vbCBpc011bHRp
cGFydFJlc3BvbnNlKCkgY29uc3Q7CiAKICAgICBRTmV0d29ya1JlcGx5KiBtX3JlcGx5OwogICAg
IFJlc291cmNlSGFuZGxlKiBtX3Jlc291cmNlSGFuZGxlOwpAQCAtODMsNiArODcsOSBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9zaG91bGRTZW5kUmVzcG9uc2U7CiAgICAgYm9vbCBtX3Nob3VsZEZv
cndhcmREYXRhOwogICAgIGludCBtX3JlZGlyZWN0aW9uVHJpZXM7CisgICAgaW50IG1fYm91bmRh
cmllc1JlYWQ7CisgICAgUUJ5dGVBcnJheSBtX211bHRpUGFydFNlY3Rpb247CisgICAgUUJ5dGVB
cnJheSBtX3ByZXZNdWx0aVBhcnRTZWN0aW9uOwogfTsKIAogLy8gU2VsZiBkZXN0cnVjdGluZyBR
SU9EZXZpY2UgZm9yIEZvcm1EYXRhCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>