<?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>24089</bug_id>
          
          <creation_ts>2009-02-23 01:58:34 -0800</creation_ts>
          <short_desc>ThreadableLoader::loadResourceSynchronously should do callbacks like the async code.</short_desc>
          <delta_ts>2009-02-25 10:10:54 -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>Page Loading</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>22720</blocked>
    
    <blocked>23688</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="David Levin">levin</assigned_to>
          <cc>ap</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110556</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-23 01:58:34 -0800</bug_when>
    <thetext>The xhr sync send code path needs to be fixed up to allow it to work the same for both Documents and Workers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110561</commentid>
    <comment_count>1</comment_count>
      <attachid>27876</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-23 02:13:51 -0800</bug_when>
    <thetext>Created attachment 27876
Proposed fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110572</commentid>
    <comment_count>2</comment_count>
      <attachid>27876</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-23 06:36:24 -0800</bug_when>
    <thetext>Comment on attachment 27876
Proposed fix.

I don&apos;t see where identifier changes from std::numeric_limits&lt;unsigned long&gt;::max() to a real one now. I think that the fix is just to assign the return value of FrameLoader::loadResourceSynchronously() to it.

+ function log(htmlMessage)

This looks like overkill. You don&apos;t ever pass HTML-formatted messages to this function, do you?

r=me with two conditions:
1) Please test that Web Inspector still displays XHR responses correctly.
2) Please verify that the change in behavior matches other browsers, not just the spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110688</commentid>
    <comment_count>3</comment_count>
      <attachid>27876</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-23 22:21:40 -0800</bug_when>
    <thetext>Comment on attachment 27876
Proposed fix.

The behavior doesn&apos;t match other browsers (namely Firefox), so I&apos;ll revise it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110798</commentid>
    <comment_count>4</comment_count>
      <attachid>27928</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-24 13:27:07 -0800</bug_when>
    <thetext>Created attachment 27928
Proposed fix.

For now, I&apos;ve change the patch to not throw an exception when there is a redirect failure due to a security issue which seemed consistent with IE and FF, but I&apos;ve sent an email about this issue and can easy change this aspect of the behavior in the future.


I left the log message as html format not because I needed it but because it seemed simpler.  (I didn&apos;t find a built in js function to escape text and (to my memory) innerText didn&apos;t work in FF.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110800</commentid>
    <comment_count>5</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-24 13:31:59 -0800</bug_when>
    <thetext>btw, I also verified:  Please test that Web Inspector still displays XHR responses correctly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110809</commentid>
    <comment_count>6</comment_count>
      <attachid>27928</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-24 13:40:58 -0800</bug_when>
    <thetext>Comment on attachment 27928
Proposed fix.

ap suggested &quot;You can use document.createTextNode() and appendChild() to add text to the newly created span.&quot;  
So I&apos;ll fix that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110918</commentid>
    <comment_count>7</comment_count>
      <attachid>27961</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-24 23:49:36 -0800</bug_when>
    <thetext>Created attachment 27961
Proposed fix.

After further review, FF3 doesn&apos;t throw an exception in the sync redirect failed case, but the nightlies of FF do.  Also IE throw an exception as well (I made a mistake in my previous testing of IE because the test didn&apos;t work in IE for reasons I&apos;d rather not discuss here.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110931</commentid>
    <comment_count>8</comment_count>
      <attachid>27961</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2009-02-25 03:16:33 -0800</bug_when>
    <thetext>Comment on attachment 27961
Proposed fix.

&gt; +    var logElement = document.getElementById(&apos;log&apos;);
&gt; +    logElement.appendChild(document.createTextNode(message));
&gt; +    logElement.appendChild(document.createElement(&quot;p&quot;));

My suggestion was actually a bit different:

  var p = document.createElement(&quot;p&quot;);
  p.appendChild(document.createTextNode(message));
  logElement.appendChild(p);

But let&apos;s keep it as is - regression tests are all about testing unusual coding practices and edge cases ;)

&gt; +        Changes the behavior of sync xhr for insecure redirects in two ways:
&gt; +        + Sends an error event instead of an abort event (which is the same as async xhr&apos;s behavior).
&gt; +        + Throws a network exception which is what the spec says to do (http://www.w3.org/TR/XMLHttpRequest/).

Please mention that it&apos;s what other browsers do.

&gt; -    changeState(HEADERS_RECEIVED);

Does this happen in didFinishLoading()? I&apos;m worried that this (not just this change, but refactoring in general) may subtly clash with work Julien Chaffraix is doing in bug 22475.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110980</commentid>
    <comment_count>9</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-02-25 10:10:54 -0800</bug_when>
    <thetext>Commited in r41215.


&gt; &gt; -    changeState(HEADERS_RECEIVED);
&gt; Does this happen in didFinishLoading()? 
Yep, both didReceiveData and didFinishLoading advance the state to HEADERS_RECEIVED (if needed).

&gt; I&apos;m worried that this (not just this change, but refactoring in general) may subtly clash with
&gt; work Julien Chaffraix is doing in bug 22475.
I looked at that patch and as far as this change is concerned, it should be fine.

I did notice differences in readyStateChange between WebKit and other browsers.  However, in this patch I didn&apos;t change WebKit&apos;s behavior for readyStateChange, so the differences in this regard remained the same with this change.

&gt; My suggestion was actually a bit different...
Thanks for the info!


</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27876</attachid>
            <date>2009-02-23 02:13:51 -0800</date>
            <delta_ts>2009-02-23 22:21:40 -0800</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug24089.txt</filename>
            <type>text/plain</type>
            <size>13708</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhYWZiYTNlLi5mYTNhOTk5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMDktMDIt
MjMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyNDA4OTogVGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSBzaG91bGQgZG8gY2FsbGJhY2tzIGxpa2UgdGhl
IGFzeW5jIGNvZGUuCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQwODk+CisKKyAgICAgICAgU3luYyB4aHIgdG8gdGhyb3cgYSBuZXR3b3JrIGV4Y2Vw
dGlvbiBvbiBhIHJlZGlyZWN0IHRoYXQgZmFpbGVkCisgICAgICAgIGR1ZSB0byBhIHNlY3VyaXR5
IGNoZWNrLCB3aGljaCB3aGF0IHRoZSBzcGVjIChodHRwOi8vd3d3LnczLm9yZy9UUi9YTUxIdHRw
UmVxdWVzdC8pCisgICAgICAgIHNheXMgdG8gZG8gaW4gdGhpcyBjYXNlLgorCisgICAgICAgICog
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC11bnNhZmUtcmVkaXJlY3Qt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0
cHJlcXVlc3QtdW5zYWZlLXJlZGlyZWN0Lmh0bWw6CisKIDIwMDktMDItMjEgIEhpcm9ub3JpIEJv
bm8gIDxoYm9ub0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWxleGV5IFBy
b3NrdXJ5YWtvdi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3QtdW5zYWZlLXJlZGlyZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtdW5zYWZlLXJl
ZGlyZWN0LWV4cGVjdGVkLnR4dAppbmRleCBkODRmYTkxLi5hMmQ4NWQzIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXVuc2Fm
ZS1yZWRpcmVjdC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxo
dHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC11bnNhZmUtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CkBA
IC0xLDIgKzEsNSBAQAogVGhpcyB0ZXN0cyB0aGF0IHVuc2FmZSByZWRpcmVjdHMgd29uJ3QgYmUg
YWxsb3dlZCB3aGVuIG1ha2luZyBhbiBYTUxIdHRwUmVxdWVzdC4KK3JlYWR5U3RhdGUgY2hhbmdl
IDEKK0Vycm9yOiBORVRXT1JLX0VSUjogWE1MSHR0cFJlcXVlc3QgRXhjZXB0aW9uIDEwMQorcmVh
ZHlTdGF0ZSBjaGFuZ2UgMQogU1VDQ0VTUzogRXJyb3IgaGFuZGxlciB3YXMgY2FsbGVkIHdpdGgg
cmVhZHlTdGF0ZSAxCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHBy
ZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXVuc2FmZS1yZWRpcmVjdC5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC11bnNhZmUtcmVkaXJlY3Qu
aHRtbAppbmRleCAzM2NhNzFjLi4wM2JjZTg0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXVuc2FmZS1yZWRpcmVjdC5odG1s
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVl
c3QtdW5zYWZlLXJlZGlyZWN0Lmh0bWwKQEAgLTgsOCArOCwxNiBAQCBmdW5jdGlvbiBkaWRSZWFk
RmlsZSgpCiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgICAgCiB9
CiAKK2Z1bmN0aW9uIGxvZyhodG1sTWVzc2FnZSkKK3sKKyAgICB2YXIgc3BhbiA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICBzcGFuLmlubmVySFRNTCA9IGh0bWxNZXNzYWdl
ICsgJzxwLz4nOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS5hcHBlbmRDaGls
ZChzcGFuKTsKK30KKwogZnVuY3Rpb24gb25SZXFyZWFkeXN0YXRlY2hhbmdlKCkKIHsKKyAgICBs
b2coJ3JlYWR5U3RhdGUgY2hhbmdlICcgKyAgcmVxLnJlYWR5U3RhdGUpOwogICAgIGlmIChyZXEu
cmVhZHlTdGF0ZSA9PSA0KQogICAgICAgICBkaWRSZWFkRmlsZSgpOwogfQpAQCAtMjksMTMgKzM3
LDE5IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgCiAgICAgLy8gRmlyc3QsIG1ha2UgYSBz
eW5jIHJlcXVlc3QuCiAgICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxLm9u
cmVhZHlzdGF0ZWNoYW5nZSA9IG9uUmVxcmVhZHlzdGF0ZWNoYW5nZTsKICAgICByZXEub3Blbign
R0VUJywgJy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8v
bG9jYWxob3N0OjgwODAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2ZvcmJpZGRlbi50eHQnLCBm
YWxzZSk7Ci0gICAgcmVxLnNlbmQobnVsbCk7CisgICAgdHJ5IHsKKyAgICAgICAgcmVxLnNlbmQo
bnVsbCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2coZS5kZXNjcmlwdGlvbiA/IGUu
ZGVzY3JpcHRpb24gOiBlKTsKKyAgICB9CisKICAgICBpZiAocmVxLnJlc3BvbnNlVGV4dCAhPSAn
JykgewogICAgICAgICBkaWRSZWFkRmlsZSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCiAgICAgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgcmVxLm9ucmVhZHlzdGF0
ZWNoYW5nZSA9IG9uUmVxcmVhZHlzdGF0ZWNoYW5nZTsKICAgICByZXEub25lcnJvciA9IG9uUmVx
RXJyb3I7CkBAIC00NSw2ICs1OSw3IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiA8L3NjcmlwdD4K
IDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KIDxkaXY+VGhpcyB0ZXN0cyB0aGF0IHVuc2FmZSBy
ZWRpcmVjdHMgd29uJ3QgYmUgYWxsb3dlZCB3aGVuIG1ha2luZyBhbiBYTUxIdHRwUmVxdWVzdC48
L2Rpdj4KKzxkaXYgaWQ9ImxvZyI+PC9kaXY+CiA8ZGl2IGlkPSJyZXN1bHQiPkZBSUxVUkU8L2Rp
dj4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKaW5kZXggY2M0NWYxNi4uMjUwYzZlNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwzMiBAQAogCiAg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIEJ1ZyAyNDA4OTog
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSBzaG91bGQgZG8gY2Fs
bGJhY2tzIGxpa2UgdGhlIGFzeW5jIGNvZGUuCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwODk+CisKKyAgICAgICAgVGhpcyBtb3N0bHkgbW92ZXMg
Y29kZSBmcm9tIHRoZSBYSFIgaW50byBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkKKyAgICAgICAgdG8gYWxsb3cgdGhlIGNhbGxiYWNrcyB0byBoYXBw
ZW4gZHVyaW5nIHRoZSBzeW5jIGxvYWQgY2FsbC4KKworICAgICAgICBBbHNvLCB0aGlzIHBhdGNo
IGNoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHN5bmMgeGhyIHRvIHRocm93IGEgbmV0d29yaworICAg
ICAgICBleGNlcHRpb24gb24gYSByZWRpcmVjdCB0aGF0IGZhaWxlZCAoZHVlIHRvIGEgc2VjdXJp
dHkgY2hlY2spIHdoaWNoIGlzCisgICAgICAgIHdoYXQgaXMgc3VwcG9ydCB0byBoYXBwZW4gYWNj
b3JkaW5nIHRvIHRoZSBzcGVjLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJs
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJv
bm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6WE1MSHR0cFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6Omxv
YWRSZXF1ZXN0U3luY2hyb25vdXNseSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6ZGlkRmFpbCk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0Lmg6CisKKzIwMDktMDIt
MjMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEJ1ZyAyNDA4ODogVGhyZWFkYWJsZUxvYWRl
ckNsaWVudDo6ZGlkRmFpbFdpbGxTZW5kUmVxdWVzdENoZWNrIGlzbid0IHdpcmVkIHVwIGNvbXBs
ZXRlbHkgZm9yIHdvcmtlcnMgYW5kIGNvdWxkIHVzZSBhIGJldHRlciBuYW1lLgogICAgICAgICA8
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDg4PgogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBkNTE5MDY5Li5jZThi
MTRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
Y3BwCisrKyBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAg
LTMzLDYgKzMzLDkgQEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVk
ZSAiUmVzb3VyY2VSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNs
dWRlICJTdWJyZXNvdXJjZUxvYWRlci5oIgpAQCAtNDAsNiArNDMsNDAgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50KQoreworICAgIGJvb2wgc2Ft
ZU9yaWdpblJlcXVlc3QgPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChy
ZXF1ZXN0LnVybCgpKTsKKworICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIFJlc291cmNlRXJy
b3IgZXJyb3I7CisgICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICB1bnNpZ25lZCBs
b25nIGlkZW50aWZpZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+OjptYXgo
KTsKKyAgICBpZiAoZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIGRvY3VtZW50LT5mcmFtZSgp
LT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1ZXN0LCBlcnJvciwgcmVz
cG9uc2UsIGRhdGEpOworCisgICAgLy8gTm8gZXhjZXB0aW9uIGZvciBmaWxlOi8vLyByZXNvdXJj
ZXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDk2MjI5OD4uCisgICAgLy8gQWxzbywgaWYgd2UgaGF2
ZSBhbiBIVFRQIHJlc3BvbnNlLCB0aGVuIGl0IHdhc24ndCBhIG5ldHdvcmsgZXJyb3IgaW4gZmFj
dC4KKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpICYmICFyZXF1ZXN0LnVybCgpLmlzTG9jYWxGaWxl
KCkgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA8PSAwKSB7CisgICAgICAgIGNsaWVudC5k
aWRGYWlsKGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1FOiAg
VGhpcyBjaGVjayBhbG9uZyB3aXRoIHRoZSBvbmUgaW4gd2lsbFNlbmRSZXF1ZXN0IGlzIHNwZWNp
ZmljIHRvIHhociBhbmQKKyAgICAvLyBzaG91bGQgYmUgbWFkZSBtb3JlIGdlbmVyaWMuCisgICAg
aWYgKHNhbWVPcmlnaW5SZXF1ZXN0ICYmICFkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
UmVxdWVzdChyZXNwb25zZS51cmwoKSkpIHsKKyAgICAgICAgY2xpZW50LmRpZEZhaWxSZWRpcmVj
dENoZWNrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjbGllbnQuZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKKworICAgIGNvbnN0IGNoYXIqIGJ5dGVzID0gc3RhdGljX2Nh
c3Q8Y29uc3QgY2hhcio+KGRhdGEuZGF0YSgpKTsKKyAgICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8
aW50PihkYXRhLnNpemUoKSk7CisgICAgY2xpZW50LmRpZFJlY2VpdmVEYXRhKGJ5dGVzLCBsZW4p
OworCisgICAgY2xpZW50LmRpZEZpbmlzaExvYWRpbmcoaWRlbnRpZmllcik7Cit9CisKIFBhc3NS
ZWZQdHI8RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyPiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6
OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIFRocmVhZGFibGVMb2FkZXJDbGllbnQqIGNsaWVu
dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkQ2FsbGJhY2tzIGNhbGxiYWNr
c1NldHRpbmcsIENvbnRlbnRTbmlmZiBjb250ZW50U25pZmYpCiB7CiAgICAgQVNTRVJUKGRvY3Vt
ZW50KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgKaW5kZXggOWZk
NjRhMC4uYTA4NTY0NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
LmgKQEAgLTQ0LDYgKzQ0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyIDogcHVibGljIFJlZkNvdW50ZWQ8RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyPiwgcHVibGljIFRocmVhZGFibGVMb2FkZXIsIHByaXZhdGUgU3VicmVzb3VyY2VM
b2FkZXJDbGllbnQgIHsKICAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyB2b2lkIGxvYWRSZXNv
dXJjZVN5bmNocm9ub3VzbHkoRG9jdW1lbnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBUaHJl
YWRhYmxlTG9hZGVyQ2xpZW50Jik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPERvY3VtZW50
VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKERvY3VtZW50KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVu
dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRDYWxsYmFja3MsIENvbnRlbnRTbmlmZik7
CiAgICAgICAgIHZpcnR1YWwgfkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlcigpOwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IDE3YjUxZTUuLmJmMDBmZDYgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXIuY3BwCkBAIC0zMSwxMSArMzEsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKIAotI2luY2x1ZGUgIkRvY3VtZW50
VGhyZWFkYWJsZUxvYWRlci5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRnJh
bWUuaCIKLSNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIlNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQuaCIKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50VGhy
ZWFkYWJsZUxvYWRlci5oIgogI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKICNpbmNsdWRlICJX
b3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCiAKQEAgLTU1LDE1ICs1MywxMSBAQCBQYXNzUmVmUHRy
PFRocmVhZGFibGVMb2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBjbwogICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmNyZWF0
ZShzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpLCBjbGllbnQsIHJlcXVlc3QsIGNhbGxi
YWNrc1NldHRpbmcsIGNvbnRlbnRTbmlmZik7CiB9CiAKLXVuc2lnbmVkIGxvbmcgVGhyZWFkYWJs
ZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFJlc291cmNlRXJyb3Im
IGVycm9yLCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQor
dm9pZCBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
VGhyZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50KQogewogICAgIEFTU0VSVChjb250ZXh0KTsK
ICAgICBBU1NFUlQoY29udGV4dC0+aXNEb2N1bWVudCgpKTsKLQotICAgIERvY3VtZW50KiBkb2N1
bWVudCA9IHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCk7Ci0gICAgaWYgKCFkb2N1bWVu
dC0+ZnJhbWUoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQg
bG9uZz46Om1heCgpOwotICAgIHJldHVybiBkb2N1bWVudC0+ZnJhbWUoKS0+bG9hZGVyKCktPmxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRhKTsK
KyAgICBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHko
c3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSwgcmVxdWVzdCwgY2xpZW50KTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvVGhyZWFk
YWJsZUxvYWRlci5oIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDRi
OTM5ZjAuLmY1MTYyZTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgKQEAgLTU3LDggKzU3
LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIC8vIGp1c3QgYWJsZSB0byBydW4gb24gdGhy
ZWFkcyBvdGhlciB0aGFuIHRoZSBtYWluIHRocmVhZCkuCiAgICAgY2xhc3MgVGhyZWFkYWJsZUxv
YWRlciA6IE5vbmNvcHlhYmxlIHsKICAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyB2b2lkIGxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmKTsKICAgICAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9h
ZENhbGxiYWNrcywgQ29udGVudFNuaWZmKTsKLSAgICAgICAgc3RhdGljIHVuc2lnbmVkIGxvbmcg
bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiwgUmVzb3VyY2VFcnJvciYsIFJlc291cmNlUmVzcG9uc2UmLCBWZWN0
b3I8Y2hhcj4mIGRhdGEpOwogCiAgICAgICAgIHZpcnR1YWwgdm9pZCBjYW5jZWwoKSA9IDA7CiAg
ICAgICAgIHZvaWQgcmVmKCkgeyByZWZUaHJlYWRhYmxlTG9hZGVyKCk7IH0KZGlmZiAtLWdpdCBh
L1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1
ZXN0LmNwcAppbmRleCBhYWQwNzI1Li4xYTg5YmQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9Y
TUxIdHRwUmVxdWVzdC5jcHAKKysrIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCkBA
IC0zMzEsNiArMzMxLDcgQEAgWE1MSHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCiAgICAgLCBtX2luUHJlZmxpZ2h0KGZhbHNlKQogICAg
ICwgbV9yZWNlaXZlZExlbmd0aCgwKQogICAgICwgbV9sYXN0U2VuZExpbmVOdW1iZXIoMCkKKyAg
ICAsIG1fZXhjZXB0aW9uQ29kZSgwKQogewogICAgIGluaXRpYWxpemVYTUxIdHRwUmVxdWVzdFN0
YXRpY0RhdGEoKTsKIH0KQEAgLTgwOCwzMSArODA5LDE1IEBAIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OmhhbmRsZUFzeW5jaHJvbm91c1ByZWZsaWdodFJlc3VsdCgpCiB2b2lkIFhNTEh0dHBSZXF1ZXN0
Ojpsb2FkUmVxdWVzdFN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBFeGNl
cHRpb25Db2RlJiBlYykKIHsKICAgICBBU1NFUlQoIW1fYXN5bmMpOwotICAgIFZlY3RvcjxjaGFy
PiBkYXRhOwotICAgIFJlc291cmNlRXJyb3IgZXJyb3I7Ci0gICAgUmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZTsKIAotICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciA9IFRocmVhZGFibGVMb2Fk
ZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBy
ZXF1ZXN0LCBlcnJvciwgcmVzcG9uc2UsIGRhdGEpOwogICAgIG1fbG9hZGVyID0gMDsKLQotICAg
IC8vIE5vIGV4Y2VwdGlvbiBmb3IgZmlsZTovLy8gcmVzb3VyY2VzLCBzZWUgPHJkYXI6Ly9wcm9i
bGVtLzQ5NjIyOTg+LgotICAgIC8vIEFsc28sIGlmIHdlIGhhdmUgYW4gSFRUUCByZXNwb25zZSwg
dGhlbiBpdCB3YXNuJ3QgYSBuZXR3b3JrIGVycm9yIGluIGZhY3QuCi0gICAgaWYgKGVycm9yLmlz
TnVsbCgpIHx8IHJlcXVlc3QudXJsKCkuaXNMb2NhbEZpbGUoKSB8fCByZXNwb25zZS5odHRwU3Rh
dHVzQ29kZSgpID4gMCkgewotICAgICAgICBwcm9jZXNzU3luY0xvYWRSZXN1bHRzKGlkZW50aWZp
ZXIsIGRhdGEsIHJlc3BvbnNlLCBlYyk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoZXJyb3IuaXNDYW5jZWxsYXRpb24oKSkgewotICAgICAgICBhYm9ydEVycm9yKCk7Ci0gICAg
ICAgIGVjID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246OkFCT1JUX0VSUjsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIG5ldHdvcmtFcnJvcigpOwotICAgIGVjID0gWE1MSHR0cFJlcXVl
c3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOworICAgIG1fZXhjZXB0aW9uQ29kZSA9IDA7CisgICAg
VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShzY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIHJlcXVlc3QsICp0aGlzKTsKKyAgICBpZiAoIW1fZXhjZXB0aW9uQ29kZSAm
JiBtX2Vycm9yKQorICAgICAgICBtX2V4Y2VwdGlvbkNvZGUgPSBYTUxIdHRwUmVxdWVzdEV4Y2Vw
dGlvbjo6TkVUV09SS19FUlI7CisgICAgZWMgPSBtX2V4Y2VwdGlvbkNvZGU7CiB9CiAKLQogdm9p
ZCBYTUxIdHRwUmVxdWVzdDo6bG9hZFJlcXVlc3RBc3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QpCiB7CiAgICAgQVNTRVJUKG1fYXN5bmMpOwpAQCAtMTEzNSwyNSArMTEyMCw2
IEBAIFN0cmluZyBYTUxIdHRwUmVxdWVzdDo6c3RhdHVzVGV4dChFeGNlcHRpb25Db2RlJiBlYykg
Y29uc3QKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OnBy
b2Nlc3NTeW5jTG9hZFJlc3VsdHModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBWZWN0
b3I8Y2hhcj4mIGRhdGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBFeGNlcHRp
b25Db2RlJiBlYykKLXsKLSAgICBpZiAobV9zYW1lT3JpZ2luUmVxdWVzdCAmJiAhc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlc3BvbnNlLnVy
bCgpKSkgewotICAgICAgICBhYm9ydCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAot
ICAgIGRpZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgY2hhbmdlU3RhdGUoSEVBREVS
U19SRUNFSVZFRCk7Ci0KLSAgICBjb25zdCBjaGFyKiBieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0
IGNoYXIqPihkYXRhLmRhdGEoKSk7Ci0gICAgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4oZGF0
YS5zaXplKCkpOwotICAgIGRpZFJlY2VpdmVEYXRhKGJ5dGVzLCBsZW4pOwotCi0gICAgZGlkRmlu
aXNoTG9hZGluZyhpZGVudGlmaWVyKTsKLSAgICBpZiAobV9lcnJvcikKLSAgICAgICAgZWMgPSBY
TUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6TkVUV09SS19FUlI7Ci19Ci0KIHZvaWQgWE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYg
d2UgYXJlIGFscmVhZHkgaW4gYW4gZXJyb3Igc3RhdGUsIGZvciBpbnN0YW5jZSB3ZSBjYWxsZWQg
YWJvcnQoKSwgYmFpbCBvdXQgZWFybHkuCkBAIC0xMTYxLDEwICsxMTI3LDEyIEBAIHZvaWQgWE1M
SHR0cFJlcXVlc3Q6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAg
IHJldHVybjsKIAogICAgIGlmIChlcnJvci5pc0NhbmNlbGxhdGlvbigpKSB7CisgICAgICAgIG1f
ZXhjZXB0aW9uQ29kZSA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpBQk9SVF9FUlI7CiAgICAg
ICAgIGFib3J0RXJyb3IoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIG1fZXhjZXB0
aW9uQ29kZSA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpORVRXT1JLX0VSUjsKICAgICBuZXR3
b3JrRXJyb3IoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3Qu
aCBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMDg4MmRkYy4uMDUwNzliNSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3ht
bC9YTUxIdHRwUmVxdWVzdC5oCkBAIC0xMzcsNyArMTM3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGRpZFJlY2VpdmVSZXNwb25zZVByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAg
ICAgdm9pZCBkaWRGaW5pc2hMb2FkaW5nUHJlZmxpZ2h0KCk7CiAKLSAgICB2b2lkIHByb2Nlc3NT
eW5jTG9hZFJlc3VsdHModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8Y2hh
cj4mIGRhdGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBFeGNlcHRpb25Db2RlJik7CiAgICAg
dm9pZCB1cGRhdGVBbmREaXNwYXRjaE9uUHJvZ3Jlc3ModW5zaWduZWQgaW50IGxlbik7CiAKICAg
ICBTdHJpbmcgcmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0OwpAQCAtMjM1LDYgKzIzNCw3IEBAIHBy
aXZhdGU6CiAgICAgCiAgICAgdW5zaWduZWQgbV9sYXN0U2VuZExpbmVOdW1iZXI7CiAgICAgU3Ry
aW5nIG1fbGFzdFNlbmRVUkw7CisgICAgRXhjZXB0aW9uQ29kZSBtX2V4Y2VwdGlvbkNvZGU7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="13564"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27928</attachid>
            <date>2009-02-24 13:27:07 -0800</date>
            <delta_ts>2009-02-24 13:40:58 -0800</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug24089.txt</filename>
            <type>text/plain</type>
            <size>14769</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5YzM0NjNhLi5mYzNlNTA4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDIt
MjMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyNDA4OTogVGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSBzaG91bGQgZG8gY2FsbGJhY2tzIGxpa2UgdGhl
IGFzeW5jIGNvZGUuCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQwODk+CisKKyAgICAgICAgTW9kaWZpZWQgdGhlIHRlc3QgdG8gb3V0cHV0IG1vcmUg
aW5mb3JtYXRpb24gdG8gYmV0dGVyIGRldGVjdCBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAg
ICAgICogaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC11bnNhZmUtcmVk
aXJlY3QtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3Qv
eG1saHR0cHJlcXVlc3QtdW5zYWZlLXJlZGlyZWN0Lmh0bWw6CisKIDIwMDktMDItMjQgIEFkYW0g
VHJlYXQgIDxhZGFtLnRyZWF0QHRvcmNobW9iaWxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBDYW1lcm9uIFp3YXJpY2guCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3ht
bGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXVuc2FmZS1yZWRpcmVjdC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXVu
c2FmZS1yZWRpcmVjdC1leHBlY3RlZC50eHQKaW5kZXggZDg0ZmE5MS4uNjRhNTBmNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVz
dC11bnNhZmUtcmVkaXJlY3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtdW5zYWZlLXJlZGlyZWN0LWV4cGVjdGVk
LnR4dApAQCAtMSwyICsxLDcgQEAKIFRoaXMgdGVzdHMgdGhhdCB1bnNhZmUgcmVkaXJlY3RzIHdv
bid0IGJlIGFsbG93ZWQgd2hlbiBtYWtpbmcgYW4gWE1MSHR0cFJlcXVlc3QuCitTeW5jIFhIUiBz
dGFydGVkLgorcmVhZHlTdGF0ZSBjaGFuZ2UgMQorRXJyb3IgZXZlbnQuCitBc3luYyBYSFIgc3Rh
cnRlZC4KK3JlYWR5U3RhdGUgY2hhbmdlIDEKIFNVQ0NFU1M6IEVycm9yIGhhbmRsZXIgd2FzIGNh
bGxlZCB3aXRoIHJlYWR5U3RhdGUgMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC11bnNhZmUtcmVkaXJlY3QuaHRtbCBiL0xh
eW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtdW5zYWZl
LXJlZGlyZWN0Lmh0bWwKaW5kZXggMzNjYTcxYy4uZGUxMTlmNCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC11bnNhZmUtcmVk
aXJlY3QuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3ht
bGh0dHByZXF1ZXN0LXVuc2FmZS1yZWRpcmVjdC5odG1sCkBAIC04LDEzICs4LDMxIEBAIGZ1bmN0
aW9uIGRpZFJlYWRGaWxlKCkKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9u
ZSgpOyAgICAKIH0KIAorZnVuY3Rpb24gbG9nKGh0bWxNZXNzYWdlKQoreworICAgIHZhciBzcGFu
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworICAgIHNwYW4uaW5uZXJIVE1MID0g
aHRtbE1lc3NhZ2UgKyAnPHAvPic7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycp
LmFwcGVuZENoaWxkKHNwYW4pOworfQorCiBmdW5jdGlvbiBvblJlcXJlYWR5c3RhdGVjaGFuZ2Uo
KQogeworICAgIGxvZygncmVhZHlTdGF0ZSBjaGFuZ2UgJyArICByZXEucmVhZHlTdGF0ZSk7CiAg
ICAgaWYgKHJlcS5yZWFkeVN0YXRlID09IDQpCiAgICAgICAgIGRpZFJlYWRGaWxlKCk7CiB9CiAK
LWZ1bmN0aW9uIG9uUmVxRXJyb3IoKSAKK2Z1bmN0aW9uIG9uUmVxQWJvcnQoKQoreworICAgIGxv
ZygnQWJvcnQgZXZlbnQuJyk7Cit9CisKK2Z1bmN0aW9uIG9uU3luY1JlcUVycm9yKCkKK3sKKyAg
ICBsb2coJ0Vycm9yIGV2ZW50LicpOworfQorCitmdW5jdGlvbiBvblJlcUVycm9yKGUpCiB7CiAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jlc3VsdCcpLmlubmVySFRNTCA9ICdTVUNDRVNT
OiBFcnJvciBoYW5kbGVyIHdhcyBjYWxsZWQgd2l0aCByZWFkeVN0YXRlICcgKyByZXEucmVhZHlT
dGF0ZTsKICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQpAQCAtMjgsMjMgKzQ2
LDM1IEBAIGZ1bmN0aW9uIHJ1blRlc3QoKSB7CiAgICAgfQogICAgIAogICAgIC8vIEZpcnN0LCBt
YWtlIGEgc3luYyByZXF1ZXN0LgorICAgIGxvZyAoJ1N5bmMgWEhSIHN0YXJ0ZWQuJyk7CiAgICAg
cmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CisgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9
IG9uUmVxcmVhZHlzdGF0ZWNoYW5nZTsKKyAgICByZXEub25lcnJvciA9IG9uU3luY1JlcUVycm9y
OworICAgIHJlcS5vbmFib3J0ID0gb25SZXFBYm9ydDsKICAgICByZXEub3BlbignR0VUJywgJy94
bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9jYWxob3N0
OjgwODAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2ZvcmJpZGRlbi50eHQnLCBmYWxzZSk7Ci0g
ICAgcmVxLnNlbmQobnVsbCk7CisgICAgdHJ5IHsKKyAgICAgICAgcmVxLnNlbmQobnVsbCk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBsb2coJ0V4Y2VwdGlvbjogJyArIChlLmRlc2NyaXB0
aW9uID8gZS5kZXNjcmlwdGlvbiA6IGUpKTsKKyAgICB9CisKICAgICBpZiAocmVxLnJlc3BvbnNl
VGV4dCAhPSAnJykgewogICAgICAgICBkaWRSZWFkRmlsZSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIAorCisgICAgbG9nICgnQXN5bmMgWEhSIHN0YXJ0ZWQuJyk7CiAgICAgcmVxID0g
bmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgcmVxLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG9uUmVx
cmVhZHlzdGF0ZWNoYW5nZTsKICAgICByZXEub25lcnJvciA9IG9uUmVxRXJyb3I7CisgICAgcmVx
Lm9uYWJvcnQgPSBvblJlcUFib3J0OwogICAgIHJlcS5vcGVuKCdHRVQnLCAnL3htbGh0dHByZXF1
ZXN0L3Jlc291cmNlcy9yZWRpcmVjdC5waHA/dXJsPWh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC94bWxo
dHRwcmVxdWVzdC9yZXNvdXJjZXMvZm9yYmlkZGVuLnR4dCcpOwogICAgIHJlcS5zZW5kKG51bGwp
OwogfQogPC9zY3JpcHQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+CiA8ZGl2PlRoaXMgdGVz
dHMgdGhhdCB1bnNhZmUgcmVkaXJlY3RzIHdvbid0IGJlIGFsbG93ZWQgd2hlbiBtYWtpbmcgYW4g
WE1MSHR0cFJlcXVlc3QuPC9kaXY+Cis8ZGl2IGlkPSJsb2ciPjwvZGl2PgogPGRpdiBpZD0icmVz
dWx0Ij5GQUlMVVJFPC9kaXY+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDEyMTRiMzYuLjc0ZjYxMjcgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzAgQEAKKzIwMDktMDItMjMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAy
NDA4OTogVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSBzaG91bGQg
ZG8gY2FsbGJhY2tzIGxpa2UgdGhlIGFzeW5jIGNvZGUuCisgICAgICAgIDxodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQwODk+CisKKyAgICAgICAgVGhpcyBtb3N0bHkg
bW92ZXMgY29kZSBmcm9tIHRoZSBYSFIgaW50byBEb2N1bWVudFRocmVhZGFibGVMb2FkZXI6Omxv
YWRSZXNvdXJjZVN5bmNocm9ub3VzbHkKKyAgICAgICAgdG8gYWxsb3cgdGhlIGNhbGxiYWNrcyB0
byBoYXBwZW4gZHVyaW5nIHRoZSBzeW5jIGxvYWQgY2FsbC4KKworICAgICAgICBUaGlzIGFsc28g
Y2hhbmdlcyB0aGUgYmVoYXZpb3Igb2Ygc3luYyB4aHIgdG8gZG8gYW4gZXJyb3IgZXZlbnQgaW5z
dGVhZCBvZiBhbiBhYm9ydCBldmVudAorICAgICAgICBmb3IgaW5zZWN1cmUgcmVkaXJlY3RzICh3
aGljaCBpcyB3aGF0IGFzeW5jIHhociBkb2VzKS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRh
YmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVM
b2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaDoK
KyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBS
ZXF1ZXN0Ojpsb2FkUmVxdWVzdFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1M
SHR0cFJlcXVlc3Q6OmxvYWRSZXF1ZXN0QXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29y
ZTo6WE1MSHR0cFJlcXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWxSZWRpcmVjdENoZWNrKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVl
c3QuaDoKKwogMjAwOS0wMi0yNCAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCBkNTE5MDY5Li42YWMyNjM5IDEwMDY0NAot
LS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTMzLDYgKzMzLDkg
QEAKIAogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNsdWRl
ICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VS
ZXF1ZXN0LmgiCiAjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTdWJyZXNv
dXJjZUxvYWRlci5oIgpAQCAtNDAsNiArNDMsNDAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Cit2b2lkIERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNs
eShEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCYgY2xpZW50KQoreworICAgIGJvb2wgc2FtZU9yaWdpblJlcXVl
c3QgPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChyZXF1ZXN0LnVybCgp
KTsKKworICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIFJlc291cmNlRXJyb3IgZXJyb3I7Cisg
ICAgUmVzb3VyY2VSZXNwb25zZSByZXNwb25zZTsKKyAgICB1bnNpZ25lZCBsb25nIGlkZW50aWZp
ZXIgPSBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+OjptYXgoKTsKKyAgICBpZiAo
ZG9jdW1lbnQtPmZyYW1lKCkpCisgICAgICAgIGlkZW50aWZpZXIgPSBkb2N1bWVudC0+ZnJhbWUo
KS0+bG9hZGVyKCktPmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkocmVxdWVzdCwgZXJyb3IsIHJl
c3BvbnNlLCBkYXRhKTsKKworICAgIC8vIE5vIGV4Y2VwdGlvbiBmb3IgZmlsZTovLy8gcmVzb3Vy
Y2VzLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5NjIyOTg+LgorICAgIC8vIEFsc28sIGlmIHdlIGhh
dmUgYW4gSFRUUCByZXNwb25zZSwgdGhlbiBpdCB3YXNuJ3QgYSBuZXR3b3JrIGVycm9yIGluIGZh
Y3QuCisgICAgaWYgKCFlcnJvci5pc051bGwoKSAmJiAhcmVxdWVzdC51cmwoKS5pc0xvY2FsRmls
ZSgpICYmIHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgPD0gMCkgeworICAgICAgICBjbGllbnQu
ZGlkRmFpbChlcnJvcik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBGSVhNRTog
IFRoaXMgY2hlY2sgYWxvbmcgd2l0aCB0aGUgb25lIGluIHdpbGxTZW5kUmVxdWVzdCBpcyBzcGVj
aWZpYyB0byB4aHIgYW5kCisgICAgLy8gc2hvdWxkIGJlIG1hZGUgbW9yZSBnZW5lcmljLgorICAg
IGlmIChzYW1lT3JpZ2luUmVxdWVzdCAmJiAhZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmNh
blJlcXVlc3QocmVzcG9uc2UudXJsKCkpKSB7CisgICAgICAgIGNsaWVudC5kaWRGYWlsUmVkaXJl
Y3RDaGVjaygpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2xpZW50LmRpZFJlY2Vp
dmVSZXNwb25zZShyZXNwb25zZSk7CisKKyAgICBjb25zdCBjaGFyKiBieXRlcyA9IHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihkYXRhLmRhdGEoKSk7CisgICAgaW50IGxlbiA9IHN0YXRpY19jYXN0
PGludD4oZGF0YS5zaXplKCkpOworICAgIGNsaWVudC5kaWRSZWNlaXZlRGF0YShieXRlcywgbGVu
KTsKKworICAgIGNsaWVudC5kaWRGaW5pc2hMb2FkaW5nKGlkZW50aWZpZXIpOworfQorCiBQYXNz
UmVmUHRyPERvY3VtZW50VGhyZWFkYWJsZUxvYWRlcj4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgTG9hZENhbGxiYWNrcyBjYWxsYmFj
a3NTZXR0aW5nLCBDb250ZW50U25pZmYgY29udGVudFNuaWZmKQogewogICAgIEFTU0VSVChkb2N1
bWVudCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaCBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oCmluZGV4IDlm
ZDY0YTAuLmEwODU2NDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFk
YWJsZUxvYWRlci5oCisrKyBiL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRl
ci5oCkBAIC00NCw2ICs0NCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIERv
Y3VtZW50VGhyZWFkYWJsZUxvYWRlciA6IHB1YmxpYyBSZWZDb3VudGVkPERvY3VtZW50VGhyZWFk
YWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9hZGVyLCBwcml2YXRlIFN1YnJlc291cmNl
TG9hZGVyQ2xpZW50ICB7CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVz
b3VyY2VTeW5jaHJvbm91c2x5KERvY3VtZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgVGhy
ZWFkYWJsZUxvYWRlckNsaWVudCYpOwogICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShEb2N1bWVudCosIFRocmVhZGFibGVMb2FkZXJDbGll
bnQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBMb2FkQ2FsbGJhY2tzLCBDb250ZW50U25pZmYp
OwogICAgICAgICB2aXJ0dWFsIH5Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIoKTsKIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAxN2I1MWU1Li5iZjAwZmQ2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAorKysgYi9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzEsMTEgKzMxLDkgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJUaHJlYWRhYmxlTG9hZGVyLmgiCiAKLSNpbmNsdWRlICJEb2N1bWVu
dFRocmVhZGFibGVMb2FkZXIuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgotI2luY2x1ZGUgIkZy
YW1lLmgiCi0jaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJEb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuaCIKICNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V29ya2VyVGhyZWFkYWJsZUxvYWRlci5oIgogCkBAIC01NSwxNSArNTMsMTEgQEAgUGFzc1JlZlB0
cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCogY28KICAgICByZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250ZXh0KSwgY2xpZW50LCByZXF1ZXN0LCBjYWxs
YmFja3NTZXR0aW5nLCBjb250ZW50U25pZmYpOwogfQogCi11bnNpZ25lZCBsb25nIFRocmVhZGFi
bGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9y
JiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkK
K3ZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7
CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1lbnQoKSk7Ci0KLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+KGNvbnRleHQpOwotICAgIGlmICghZG9jdW1l
bnQtPmZyYW1lKCkpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
IGxvbmc+OjptYXgoKTsKLSAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5s
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVlc3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7
CisgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4dCksIHJlcXVlc3QsIGNsaWVudCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RocmVh
ZGFibGVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaAppbmRleCA0
YjkzOWYwLi5mNTE2MmUxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9h
ZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5oCkBAIC01Nyw4ICs1
Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAvLyBqdXN0IGFibGUgdG8gcnVuIG9uIHRo
cmVhZHMgb3RoZXIgdGhhbiB0aGUgbWFpbiB0aHJlYWQpLgogICAgIGNsYXNzIFRocmVhZGFibGVM
b2FkZXIgOiBOb25jb3B5YWJsZSB7CiAgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgdm9pZCBs
b2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmLCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50Jik7CiAgICAgICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExv
YWRDYWxsYmFja3MsIENvbnRlbnRTbmlmZik7Ci0gICAgICAgIHN0YXRpYyB1bnNpZ25lZCBsb25n
IGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJyb3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVj
dG9yPGNoYXI+JiBkYXRhKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOwog
ICAgICAgICB2b2lkIHJlZigpIHsgcmVmVGhyZWFkYWJsZUxvYWRlcigpOyB9CmRpZmYgLS1naXQg
YS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVx
dWVzdC5jcHAKaW5kZXggYWFkMDcyNS4uNzFmNDU1OCAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwv
WE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dlYkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApA
QCAtMzMxLDYgKzMzMSw4IEBAIFhNTEh0dHBSZXF1ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAgICwgbV9pblByZWZsaWdodChmYWxzZSkKICAg
ICAsIG1fcmVjZWl2ZWRMZW5ndGgoMCkKICAgICAsIG1fbGFzdFNlbmRMaW5lTnVtYmVyKDApCisg
ICAgLCBtX2V4Y2VwdGlvbkNvZGUoMCkKKyAgICAsIG1fZmFpbGVkUmVkaXJlY3RDaGVjayhmYWxz
ZSkKIHsKICAgICBpbml0aWFsaXplWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRhKCk7CiB9CkBAIC04
MDgsMzQgKzgxMCwyMSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpoYW5kbGVBc3luY2hyb25vdXNQ
cmVmbGlnaHRSZXN1bHQoKQogdm9pZCBYTUxIdHRwUmVxdWVzdDo6bG9hZFJlcXVlc3RTeW5jaHJv
bm91c2x5KFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAg
ICAgQVNTRVJUKCFtX2FzeW5jKTsKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBSZXNvdXJj
ZUVycm9yIGVycm9yOwotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICB1bnNp
Z25lZCBsb25nIGlkZW50aWZpZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5j
aHJvbm91c2x5KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVxdWVzdCwgZXJyb3IsIHJlc3Bv
bnNlLCBkYXRhKTsKICAgICBtX2xvYWRlciA9IDA7Ci0KLSAgICAvLyBObyBleGNlcHRpb24gZm9y
IGZpbGU6Ly8vIHJlc291cmNlcywgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTYyMjk4Pi4KLSAgICAv
LyBBbHNvLCBpZiB3ZSBoYXZlIGFuIEhUVFAgcmVzcG9uc2UsIHRoZW4gaXQgd2Fzbid0IGEgbmV0
d29yayBlcnJvciBpbiBmYWN0LgotICAgIGlmIChlcnJvci5pc051bGwoKSB8fCByZXF1ZXN0LnVy
bCgpLmlzTG9jYWxGaWxlKCkgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+IDApIHsKLSAg
ICAgICAgcHJvY2Vzc1N5bmNMb2FkUmVzdWx0cyhpZGVudGlmaWVyLCBkYXRhLCByZXNwb25zZSwg
ZWMpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGVycm9yLmlzQ2FuY2VsbGF0
aW9uKCkpIHsKLSAgICAgICAgYWJvcnRFcnJvcigpOwotICAgICAgICBlYyA9IFhNTEh0dHBSZXF1
ZXN0RXhjZXB0aW9uOjpBQk9SVF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBu
ZXR3b3JrRXJyb3IoKTsKLSAgICBlYyA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpORVRXT1JL
X0VSUjsKKyAgICBtX2V4Y2VwdGlvbkNvZGUgPSAwOworICAgIG1fZmFpbGVkUmVkaXJlY3RDaGVj
ayA9IGZhbHNlOworICAgIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3Vz
bHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0LCAqdGhpcyk7CisgICAgaWYgKCFt
X2ZhaWxlZFJlZGlyZWN0Q2hlY2sgJiYgIW1fZXhjZXB0aW9uQ29kZSAmJiBtX2Vycm9yKQorICAg
ICAgICBtX2V4Y2VwdGlvbkNvZGUgPSBYTUxIdHRwUmVxdWVzdEV4Y2VwdGlvbjo6TkVUV09SS19F
UlI7CisgICAgZWMgPSBtX2V4Y2VwdGlvbkNvZGU7CiB9CiAKLQogdm9pZCBYTUxIdHRwUmVxdWVz
dDo6bG9hZFJlcXVlc3RBc3luY2hyb25vdXNseShSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7
CiAgICAgQVNTRVJUKG1fYXN5bmMpOworICAgIG1fZXhjZXB0aW9uQ29kZSA9IDA7CisgICAgbV9m
YWlsZWRSZWRpcmVjdENoZWNrID0gZmFsc2U7CiAgICAgLy8gU3VicmVzb3VyY2VMb2FkZXI6OmNy
ZWF0ZSBjYW4gcmV0dXJuIG51bGwgaGVyZSwgZm9yIGV4YW1wbGUgaWYgd2UncmUgbm8gbG9uZ2Vy
IGF0dGFjaGVkIHRvIGEgcGFnZS4KICAgICAvLyBUaGlzIGlzIHRydWUgd2hpbGUgcnVubmluZyBv
bnVubG9hZCBoYW5kbGVycy4KICAgICAvLyBGSVhNRTogV2UgbmVlZCB0byBiZSBhYmxlIHRvIHNl
bmQgWE1MSHR0cFJlcXVlc3RzIGZyb20gb251bmxvYWQsIDxodHRwOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDkwND4uCkBAIC0xMTM1LDI1ICsxMTI0LDYgQEAgU3RyaW5nIFhN
TEh0dHBSZXF1ZXN0OjpzdGF0dXNUZXh0KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25zdAogICAgIHJl
dHVybiBTdHJpbmcoKTsKIH0KIAotdm9pZCBYTUxIdHRwUmVxdWVzdDo6cHJvY2Vzc1N5bmNMb2Fk
UmVzdWx0cyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFZlY3RvcjxjaGFyPiYgZGF0
YSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIEV4Y2VwdGlvbkNvZGUmIGVjKQot
ewotICAgIGlmIChtX3NhbWVPcmlnaW5SZXF1ZXN0ICYmICFzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QocmVzcG9uc2UudXJsKCkpKSB7Ci0gICAg
ICAgIGFib3J0KCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0gICAgZGlkUmVjZWl2
ZVJlc3BvbnNlKHJlc3BvbnNlKTsKLSAgICBjaGFuZ2VTdGF0ZShIRUFERVJTX1JFQ0VJVkVEKTsK
LQotICAgIGNvbnN0IGNoYXIqIGJ5dGVzID0gc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KGRhdGEu
ZGF0YSgpKTsKLSAgICBpbnQgbGVuID0gc3RhdGljX2Nhc3Q8aW50PihkYXRhLnNpemUoKSk7Ci0g
ICAgZGlkUmVjZWl2ZURhdGEoYnl0ZXMsIGxlbik7Ci0KLSAgICBkaWRGaW5pc2hMb2FkaW5nKGlk
ZW50aWZpZXIpOwotICAgIGlmIChtX2Vycm9yKQotICAgICAgICBlYyA9IFhNTEh0dHBSZXF1ZXN0
RXhjZXB0aW9uOjpORVRXT1JLX0VSUjsKLX0KLQogdm9pZCBYTUxIdHRwUmVxdWVzdDo6ZGlkRmFp
bChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKICAgICAvLyBJZiB3ZSBhcmUgYWxyZWFk
eSBpbiBhbiBlcnJvciBzdGF0ZSwgZm9yIGluc3RhbmNlIHdlIGNhbGxlZCBhYm9ydCgpLCBiYWls
IG91dCBlYXJseS4KQEAgLTExNjEsMTUgKzExMzEsMTggQEAgdm9pZCBYTUxIdHRwUmVxdWVzdDo6
ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpIHsKKyAgICAgICAgbV9leGNlcHRpb25Db2Rl
ID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246OkFCT1JUX0VSUjsKICAgICAgICAgYWJvcnRFcnJv
cigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgbV9leGNlcHRpb25Db2RlID0gWE1M
SHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOwogICAgIG5ldHdvcmtFcnJvcigpOwog
fQogCiB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpkaWRGYWlsUmVkaXJlY3RDaGVjaygpCiB7CisgICAg
bV9mYWlsZWRSZWRpcmVjdENoZWNrID0gdHJ1ZTsKICAgICBpbnRlcm5hbEFib3J0KCk7CiAgICAg
bmV0d29ya0Vycm9yKCk7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVz
dC5oIGIvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAppbmRleCAwODgyZGRjLi5kYjFhNDUx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5oCisrKyBiL1dlYkNvcmUv
eG1sL1hNTEh0dHBSZXF1ZXN0LmgKQEAgLTEzNyw3ICsxMzcsNiBAQCBwcml2YXRlOgogICAgIHZv
aWQgZGlkUmVjZWl2ZVJlc3BvbnNlUHJlZmxpZ2h0KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmKTsK
ICAgICB2b2lkIGRpZEZpbmlzaExvYWRpbmdQcmVmbGlnaHQoKTsKIAotICAgIHZvaWQgcHJvY2Vz
c1N5bmNMb2FkUmVzdWx0cyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIGNvbnN0IFZlY3Rvcjxj
aGFyPiYgZGF0YSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYsIEV4Y2VwdGlvbkNvZGUmKTsKICAg
ICB2b2lkIHVwZGF0ZUFuZERpc3BhdGNoT25Qcm9ncmVzcyh1bnNpZ25lZCBpbnQgbGVuKTsKIAog
ICAgIFN0cmluZyByZXNwb25zZU1JTUVUeXBlKCkgY29uc3Q7CkBAIC0yMzUsNiArMjM0LDggQEAg
cHJpdmF0ZToKICAgICAKICAgICB1bnNpZ25lZCBtX2xhc3RTZW5kTGluZU51bWJlcjsKICAgICBT
dHJpbmcgbV9sYXN0U2VuZFVSTDsKKyAgICBFeGNlcHRpb25Db2RlIG1fZXhjZXB0aW9uQ29kZTsK
KyAgICBib29sIG1fZmFpbGVkUmVkaXJlY3RDaGVjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27961</attachid>
            <date>2009-02-24 23:49:36 -0800</date>
            <delta_ts>2009-02-25 03:16:33 -0800</delta_ts>
            <desc>Proposed fix.</desc>
            <filename>bug24089.txt</filename>
            <type>text/plain</type>
            <size>14671</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NDg3M2Q3Li45MjZlNjIzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDktMDIt
MjQgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ1ZyAyNDA4OTogVGhyZWFkYWJsZUxvYWRl
cjo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSBzaG91bGQgZG8gY2FsbGJhY2tzIGxpa2UgdGhl
IGFzeW5jIGNvZGUuCisgICAgICAgIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjQwODk+CisKKyAgICAgICAgTW9kaWZpZWQgdGhlIHRlc3QgdG8gYWNjb3VudCBmb3Ig
YmVoYXZpb3IgY2hhbmdlIGFuZCBvdXRwdXQgbW9yZSBpbmZvcm1hdGlvbiB0byBiZXR0ZXIgZGV0
ZWN0CisgICAgICAgIGZ1dHVyZSBjaGFuZ2VzIGluIGJlaGF2aW9yLgorCisgICAgICAgICogaHR0
cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC11bnNhZmUtcmVkaXJlY3QtZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGh0dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJl
cXVlc3QtdW5zYWZlLXJlZGlyZWN0Lmh0bWw6CisKIDIwMDktMDItMjQgIFNpbW9uIEZyYXNlciAg
PHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENh
cmxzc29uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0
L3htbGh0dHByZXF1ZXN0LXVuc2FmZS1yZWRpcmVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXVuc2FmZS1yZWRpcmVj
dC1leHBlY3RlZC50eHQKaW5kZXggZDg0ZmE5MS4uOThjNTUxMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVxdWVzdC11bnNhZmUtcmVk
aXJlY3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0cHJl
cXVlc3QveG1saHR0cHJlcXVlc3QtdW5zYWZlLXJlZGlyZWN0LWV4cGVjdGVkLnR4dApAQCAtMSwy
ICsxLDggQEAKIFRoaXMgdGVzdHMgdGhhdCB1bnNhZmUgcmVkaXJlY3RzIHdvbid0IGJlIGFsbG93
ZWQgd2hlbiBtYWtpbmcgYW4gWE1MSHR0cFJlcXVlc3QuCitTeW5jIFhIUiBzdGFydGVkLgorcmVh
ZHlTdGF0ZSBjaGFuZ2UgMQorRXJyb3IgZXZlbnQuCitFeGNlcHRpb246IEVycm9yOiBORVRXT1JL
X0VSUjogWE1MSHR0cFJlcXVlc3QgRXhjZXB0aW9uIDEwMQorQXN5bmMgWEhSIHN0YXJ0ZWQuCity
ZWFkeVN0YXRlIGNoYW5nZSAxCiBTVUNDRVNTOiBFcnJvciBoYW5kbGVyIHdhcyBjYWxsZWQgd2l0
aCByZWFkeVN0YXRlIDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMveG1saHR0
cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtdW5zYWZlLXJlZGlyZWN0Lmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL3htbGh0dHByZXF1ZXN0L3htbGh0dHByZXF1ZXN0LXVuc2FmZS1yZWRpcmVj
dC5odG1sCmluZGV4IDMzY2E3MWMuLmFmYzhiNTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMveG1saHR0cHJlcXVlc3QveG1saHR0cHJlcXVlc3QtdW5zYWZlLXJlZGlyZWN0Lmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy94bWxodHRwcmVxdWVzdC94bWxodHRwcmVx
dWVzdC11bnNhZmUtcmVkaXJlY3QuaHRtbApAQCAtOCwxMyArOCwzMSBAQCBmdW5jdGlvbiBkaWRS
ZWFkRmlsZSgpCiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgICAg
CiB9CiAKK2Z1bmN0aW9uIGxvZyhtZXNzYWdlKQoreworICAgIHZhciBsb2dFbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOworICAgIGxvZ0VsZW1lbnQuYXBwZW5kQ2hpbGQo
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobWVzc2FnZSkpOworICAgIGxvZ0VsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicCIpKTsKK30KKwogZnVuY3Rpb24gb25SZXFy
ZWFkeXN0YXRlY2hhbmdlKCkKIHsKKyAgICBsb2coJ3JlYWR5U3RhdGUgY2hhbmdlICcgKyAgcmVx
LnJlYWR5U3RhdGUpOwogICAgIGlmIChyZXEucmVhZHlTdGF0ZSA9PSA0KQogICAgICAgICBkaWRS
ZWFkRmlsZSgpOwogfQogCi1mdW5jdGlvbiBvblJlcUVycm9yKCkgCitmdW5jdGlvbiBvblJlcUFi
b3J0KCkKK3sKKyAgICBsb2coJ0Fib3J0IGV2ZW50LicpOworfQorCitmdW5jdGlvbiBvblN5bmNS
ZXFFcnJvcigpCit7CisgICAgbG9nKCdFcnJvciBldmVudC4nKTsKK30KKworZnVuY3Rpb24gb25S
ZXFFcnJvcihlKQogewogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyZXN1bHQnKS5pbm5l
ckhUTUwgPSAnU1VDQ0VTUzogRXJyb3IgaGFuZGxlciB3YXMgY2FsbGVkIHdpdGggcmVhZHlTdGF0
ZSAnICsgcmVxLnJlYWR5U3RhdGU7CiAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKQEAgLTI4LDIzICs0NiwzNSBAQCBmdW5jdGlvbiBydW5UZXN0KCkgewogICAgIH0KICAgICAK
ICAgICAvLyBGaXJzdCwgbWFrZSBhIHN5bmMgcmVxdWVzdC4KKyAgICBsb2cgKCdTeW5jIFhIUiBz
dGFydGVkLicpOwogICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworICAgIHJlcS5vbnJl
YWR5c3RhdGVjaGFuZ2UgPSBvblJlcXJlYWR5c3RhdGVjaGFuZ2U7CisgICAgcmVxLm9uZXJyb3Ig
PSBvblN5bmNSZXFFcnJvcjsKKyAgICByZXEub25hYm9ydCA9IG9uUmVxQWJvcnQ7CiAgICAgcmVx
Lm9wZW4oJ0dFVCcsICcveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL3JlZGlyZWN0LnBocD91cmw9
aHR0cDovL2xvY2FsaG9zdDo4MDgwL3htbGh0dHByZXF1ZXN0L3Jlc291cmNlcy9mb3JiaWRkZW4u
dHh0JywgZmFsc2UpOwotICAgIHJlcS5zZW5kKG51bGwpOworICAgIHRyeSB7CisgICAgICAgIHJl
cS5zZW5kKG51bGwpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgbG9nKCdFeGNlcHRpb246
ICcgKyAoZS5kZXNjcmlwdGlvbiA/IGUuZGVzY3JpcHRpb24gOiBlKSk7CisgICAgfQorCiAgICAg
aWYgKHJlcS5yZXNwb25zZVRleHQgIT0gJycpIHsKICAgICAgICAgZGlkUmVhZEZpbGUoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKworICAgIGxvZyAoJ0FzeW5jIFhIUiBzdGFydGVk
LicpOwogICAgIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOwogICAgIHJlcS5vbnJlYWR5c3Rh
dGVjaGFuZ2UgPSBvblJlcXJlYWR5c3RhdGVjaGFuZ2U7CiAgICAgcmVxLm9uZXJyb3IgPSBvblJl
cUVycm9yOworICAgIHJlcS5vbmFib3J0ID0gb25SZXFBYm9ydDsKICAgICByZXEub3BlbignR0VU
JywgJy94bWxodHRwcmVxdWVzdC9yZXNvdXJjZXMvcmVkaXJlY3QucGhwP3VybD1odHRwOi8vbG9j
YWxob3N0OjgwODAveG1saHR0cHJlcXVlc3QvcmVzb3VyY2VzL2ZvcmJpZGRlbi50eHQnKTsKICAg
ICByZXEuc2VuZChudWxsKTsKIH0KIDwvc2NyaXB0PgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCki
PgogPGRpdj5UaGlzIHRlc3RzIHRoYXQgdW5zYWZlIHJlZGlyZWN0cyB3b24ndCBiZSBhbGxvd2Vk
IHdoZW4gbWFraW5nIGFuIFhNTEh0dHBSZXF1ZXN0LjwvZGl2PgorPGRpdiBpZD0ibG9nIj48L2Rp
dj4KIDxkaXYgaWQ9InJlc3VsdCI+RkFJTFVSRTwvZGl2PgogPC9ib2R5PgogPC9odG1sPgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkOTRl
ODVkLi5jODBjYWIyIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDA5LTAyLTIzICBEYXZpZCBMZXZpbiAgPGxl
dmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBCdWcgMjQwODk6IFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNo
cm9ub3VzbHkgc2hvdWxkIGRvIGNhbGxiYWNrcyBsaWtlIHRoZSBhc3luYyBjb2RlLgorICAgICAg
ICA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDg5PgorCisgICAg
ICAgIE1ha2UgdGhyZWFkYWJsZSBsb2FkZXIgY2FsbGJhY2tzIHRvIGhhcHBlbiBkdXJpbmcgdGhl
IHN5bmMgbG9hZCBjYWxsLgorCisgICAgICAgIENoYW5nZXMgdGhlIGJlaGF2aW9yIG9mIHN5bmMg
eGhyIGZvciBpbnNlY3VyZSByZWRpcmVjdHMgaW4gdHdvIHdheXM6CisgICAgICAgICsgU2VuZHMg
YW4gZXJyb3IgZXZlbnQgaW5zdGVhZCBvZiBhbiBhYm9ydCBldmVudCAod2hpY2ggaXMgdGhlIHNh
bWUgYXMgYXN5bmMgeGhyJ3MgYmVoYXZpb3IpLgorICAgICAgICArIFRocm93cyBhIG5ldHdvcmsg
ZXhjZXB0aW9uIHdoaWNoIGlzIHdoYXQgdGhlIHNwZWMgc2F5cyB0byBkbyAoaHR0cDovL3d3dy53
My5vcmcvVFIvWE1MSHR0cFJlcXVlc3QvKS4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFRo
cmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaHJlYWRhYmxl
TG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJlc291cmNl
U3luY2hyb25vdXNseSk6CisgICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaDoKKyAg
ICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OlhNTEh0dHBSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1
ZXN0Ojpsb2FkUmVxdWVzdFN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0
cFJlcXVlc3Q6OmxvYWRSZXF1ZXN0QXN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6
WE1MSHR0cFJlcXVlc3Q6OmRpZEZhaWwpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVl
c3Q6OmRpZEZhaWxSZWRpcmVjdENoZWNrKToKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3Qu
aDoKKwogMjAwOS0wMi0yNCAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBbmRlcnMgQ2FybHNzb24KZGlmZiAtLWdpdCBhL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAgYi9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCmluZGV4IGQ1MTkwNjkuLjY4NWRiOGMgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIv
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMzMsNiArMzMs
OSBAQAogCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVuZ2UuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkRvY3VtZW50VGhyZWFkYWJsZUxvYWRlci5oIgorI2luY2x1
ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJSZXNvdXJj
ZVJlcXVlc3QuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1ZGUgIlN1YnJl
c291cmNlTG9hZGVyLmgiCkBAIC00MCw2ICs0Myw0MCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK3ZvaWQgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91
c2x5KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBU
aHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQpCit7CisgICAgYm9vbCBzYW1lT3JpZ2luUmVx
dWVzdCA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlcXVlc3QudXJs
KCkpOworCisgICAgVmVjdG9yPGNoYXI+IGRhdGE7CisgICAgUmVzb3VyY2VFcnJvciBlcnJvcjsK
KyAgICBSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgIHVuc2lnbmVkIGxvbmcgaWRlbnRp
ZmllciA9IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQgbG9uZz46Om1heCgpOworICAgIGlm
IChkb2N1bWVudC0+ZnJhbWUoKSkKKyAgICAgICAgaWRlbnRpZmllciA9IGRvY3VtZW50LT5mcmFt
ZSgpLT5sb2FkZXIoKS0+bG9hZFJlc291cmNlU3luY2hyb25vdXNseShyZXF1ZXN0LCBlcnJvciwg
cmVzcG9uc2UsIGRhdGEpOworCisgICAgLy8gTm8gZXhjZXB0aW9uIGZvciBmaWxlOi8vLyByZXNv
dXJjZXMsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDk2MjI5OD4uCisgICAgLy8gQWxzbywgaWYgd2Ug
aGF2ZSBhbiBIVFRQIHJlc3BvbnNlLCB0aGVuIGl0IHdhc24ndCBhIG5ldHdvcmsgZXJyb3IgaW4g
ZmFjdC4KKyAgICBpZiAoIWVycm9yLmlzTnVsbCgpICYmICFyZXF1ZXN0LnVybCgpLmlzTG9jYWxG
aWxlKCkgJiYgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA8PSAwKSB7CisgICAgICAgIGNsaWVu
dC5kaWRGYWlsKGVycm9yKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEZJWE1F
OiBUaGlzIGNoZWNrIGFsb25nIHdpdGggdGhlIG9uZSBpbiB3aWxsU2VuZFJlcXVlc3QgaXMgc3Bl
Y2lmaWMgdG8geGhyIGFuZAorICAgIC8vIHNob3VsZCBiZSBtYWRlIG1vcmUgZ2VuZXJpYy4KKyAg
ICBpZiAoc2FtZU9yaWdpblJlcXVlc3QgJiYgIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLT5j
YW5SZXF1ZXN0KHJlc3BvbnNlLnVybCgpKSkgeworICAgICAgICBjbGllbnQuZGlkRmFpbFJlZGly
ZWN0Q2hlY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNsaWVudC5kaWRSZWNl
aXZlUmVzcG9uc2UocmVzcG9uc2UpOworCisgICAgY29uc3QgY2hhciogYnl0ZXMgPSBzdGF0aWNf
Y2FzdDxjb25zdCBjaGFyKj4oZGF0YS5kYXRhKCkpOworICAgIGludCBsZW4gPSBzdGF0aWNfY2Fz
dDxpbnQ+KGRhdGEuc2l6ZSgpKTsKKyAgICBjbGllbnQuZGlkUmVjZWl2ZURhdGEoYnl0ZXMsIGxl
bik7CisKKyAgICBjbGllbnQuZGlkRmluaXNoTG9hZGluZyhpZGVudGlmaWVyKTsKK30KKwogUGFz
c1JlZlB0cjxEb2N1bWVudFRocmVhZGFibGVMb2FkZXI+IERvY3VtZW50VGhyZWFkYWJsZUxvYWRl
cjo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCogY2xp
ZW50LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRDYWxsYmFja3MgY2FsbGJh
Y2tzU2V0dGluZywgQ29udGVudFNuaWZmIGNvbnRlbnRTbmlmZikKIHsKICAgICBBU1NFUlQoZG9j
dW1lbnQpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyLmggYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuaAppbmRleCA5
ZmQ2NGEwLi5hMDg1NjQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVh
ZGFibGVMb2FkZXIuaAorKysgYi9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2Fk
ZXIuaApAQCAtNDQsNiArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBE
b2N1bWVudFRocmVhZGFibGVMb2FkZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxEb2N1bWVudFRocmVh
ZGFibGVMb2FkZXI+LCBwdWJsaWMgVGhyZWFkYWJsZUxvYWRlciwgcHJpdmF0ZSBTdWJyZXNvdXJj
ZUxvYWRlckNsaWVudCAgewogICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIHZvaWQgbG9hZFJl
c291cmNlU3luY2hyb25vdXNseShEb2N1bWVudCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFRo
cmVhZGFibGVMb2FkZXJDbGllbnQmKTsKICAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8RG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyPiBjcmVhdGUoRG9jdW1lbnQqLCBUaHJlYWRhYmxlTG9hZGVyQ2xp
ZW50KiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiwgTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZm
KTsKICAgICAgICAgdmlydHVhbCB+RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyKCk7CiAKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwIGIvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKaW5kZXggOTkzOWJjZS4uMmNkY2E3YiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKKysrIGIvV2ViQ29yZS9sb2Fk
ZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAKQEAgLTMxLDExICszMSw5IEBACiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAjaW5jbHVkZSAiVGhyZWFkYWJsZUxvYWRlci5oIgogCi0jaW5jbHVkZSAiRG9jdW1l
bnRUaHJlYWRhYmxlTG9hZGVyLmgiCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJG
cmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0
aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVkZSAiRG9jdW1lbnRU
aHJlYWRhYmxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IldvcmtlclJ1bkxvb3AuaCIKICNpbmNsdWRlICJXb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgiCkBA
IC01NiwxNSArNTQsMTEgQEAgUGFzc1JlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBUaHJlYWRhYmxl
TG9hZGVyOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY28KICAgICByZXR1cm4gRG9j
dW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8RG9jdW1lbnQqPihjb250
ZXh0KSwgY2xpZW50LCByZXF1ZXN0LCBjYWxsYmFja3NTZXR0aW5nLCBjb250ZW50U25pZmYpOwog
fQogCi11bnNpZ25lZCBsb25nIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJjZVN5bmNocm9u
b3VzbHkoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYgcmVz
cG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3ZvaWQgVGhyZWFkYWJsZUxvYWRlcjo6bG9hZFJl
c291cmNlU3luY2hyb25vdXNseShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFRocmVhZGFibGVMb2FkZXJDbGllbnQmIGNsaWVu
dCkKIHsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgQVNTRVJUKGNvbnRleHQtPmlzRG9jdW1l
bnQoKSk7Ci0KLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxEb2N1bWVudCo+
KGNvbnRleHQpOwotICAgIGlmICghZG9jdW1lbnQtPmZyYW1lKCkpCi0gICAgICAgIHJldHVybiBz
dGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkIGxvbmc+OjptYXgoKTsKLSAgICByZXR1cm4gZG9j
dW1lbnQtPmZyYW1lKCktPmxvYWRlcigpLT5sb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHJlcXVl
c3QsIGVycm9yLCByZXNwb25zZSwgZGF0YSk7CisgICAgRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVy
Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KHN0YXRpY19jYXN0PERvY3VtZW50Kj4oY29udGV4
dCksIHJlcXVlc3QsIGNsaWVudCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuaCBiL1dlYkNvcmUvbG9hZGVy
L1RocmVhZGFibGVMb2FkZXIuaAppbmRleCA0YjkzOWYwLi5mNTE2MmUxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvV2ViQ29yZS9sb2FkZXIvVGhy
ZWFkYWJsZUxvYWRlci5oCkBAIC01Nyw4ICs1Nyw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAvLyBqdXN0IGFibGUgdG8gcnVuIG9uIHRocmVhZHMgb3RoZXIgdGhhbiB0aGUgbWFpbiB0aHJl
YWQpLgogICAgIGNsYXNzIFRocmVhZGFibGVMb2FkZXIgOiBOb25jb3B5YWJsZSB7CiAgICAgcHVi
bGljOgorICAgICAgICBzdGF0aWMgdm9pZCBsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBUaHJlYWRhYmxlTG9h
ZGVyQ2xpZW50Jik7CiAgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRocmVhZGFibGVMb2FkZXI+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgVGhyZWFkYWJsZUxvYWRlckNsaWVudCos
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIExvYWRDYWxsYmFja3MsIENvbnRlbnRTbmlmZik7Ci0g
ICAgICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIGxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIFJlc291cmNlRXJy
b3ImLCBSZXNvdXJjZVJlc3BvbnNlJiwgVmVjdG9yPGNoYXI+JiBkYXRhKTsKIAogICAgICAgICB2
aXJ0dWFsIHZvaWQgY2FuY2VsKCkgPSAwOwogICAgICAgICB2b2lkIHJlZigpIHsgcmVmVGhyZWFk
YWJsZUxvYWRlcigpOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5j
cHAgYi9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKaW5kZXggYWFkMDcyNS4uMzRlYzU4
NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBiL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcApAQCAtMzMxLDYgKzMzMSw3IEBAIFhNTEh0dHBSZXF1
ZXN0OjpYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQogICAg
ICwgbV9pblByZWZsaWdodChmYWxzZSkKICAgICAsIG1fcmVjZWl2ZWRMZW5ndGgoMCkKICAgICAs
IG1fbGFzdFNlbmRMaW5lTnVtYmVyKDApCisgICAgLCBtX2V4Y2VwdGlvbkNvZGUoMCkKIHsKICAg
ICBpbml0aWFsaXplWE1MSHR0cFJlcXVlc3RTdGF0aWNEYXRhKCk7CiB9CkBAIC04MDgsMzQgKzgw
OSwxOSBAQCB2b2lkIFhNTEh0dHBSZXF1ZXN0OjpoYW5kbGVBc3luY2hyb25vdXNQcmVmbGlnaHRS
ZXN1bHQoKQogdm9pZCBYTUxIdHRwUmVxdWVzdDo6bG9hZFJlcXVlc3RTeW5jaHJvbm91c2x5KFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgQVNTRVJU
KCFtX2FzeW5jKTsKLSAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKLSAgICBSZXNvdXJjZUVycm9yIGVy
cm9yOwotICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CiAKLSAgICB1bnNpZ25lZCBsb25n
IGlkZW50aWZpZXIgPSBUaHJlYWRhYmxlTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgcmVxdWVzdCwgZXJyb3IsIHJlc3BvbnNlLCBkYXRh
KTsKICAgICBtX2xvYWRlciA9IDA7Ci0KLSAgICAvLyBObyBleGNlcHRpb24gZm9yIGZpbGU6Ly8v
IHJlc291cmNlcywgc2VlIDxyZGFyOi8vcHJvYmxlbS80OTYyMjk4Pi4KLSAgICAvLyBBbHNvLCBp
ZiB3ZSBoYXZlIGFuIEhUVFAgcmVzcG9uc2UsIHRoZW4gaXQgd2Fzbid0IGEgbmV0d29yayBlcnJv
ciBpbiBmYWN0LgotICAgIGlmIChlcnJvci5pc051bGwoKSB8fCByZXF1ZXN0LnVybCgpLmlzTG9j
YWxGaWxlKCkgfHwgcmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSA+IDApIHsKLSAgICAgICAgcHJv
Y2Vzc1N5bmNMb2FkUmVzdWx0cyhpZGVudGlmaWVyLCBkYXRhLCByZXNwb25zZSwgZWMpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGVycm9yLmlzQ2FuY2VsbGF0aW9uKCkpIHsK
LSAgICAgICAgYWJvcnRFcnJvcigpOwotICAgICAgICBlYyA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0
aW9uOjpBQk9SVF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBuZXR3b3JrRXJy
b3IoKTsKLSAgICBlYyA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpORVRXT1JLX0VSUjsKKyAg
ICBtX2V4Y2VwdGlvbkNvZGUgPSAwOworICAgIFRocmVhZGFibGVMb2FkZXI6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCByZXF1ZXN0LCAqdGhpcyk7
CisgICAgaWYgKCFtX2V4Y2VwdGlvbkNvZGUgJiYgbV9lcnJvcikKKyAgICAgICAgbV9leGNlcHRp
b25Db2RlID0gWE1MSHR0cFJlcXVlc3RFeGNlcHRpb246Ok5FVFdPUktfRVJSOworICAgIGVjID0g
bV9leGNlcHRpb25Db2RlOwogfQogCi0KIHZvaWQgWE1MSHR0cFJlcXVlc3Q6OmxvYWRSZXF1ZXN0
QXN5bmNocm9ub3VzbHkoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewogICAgIEFTU0VSVCht
X2FzeW5jKTsKKyAgICBtX2V4Y2VwdGlvbkNvZGUgPSAwOwogICAgIC8vIFN1YnJlc291cmNlTG9h
ZGVyOjpjcmVhdGUgY2FuIHJldHVybiBudWxsIGhlcmUsIGZvciBleGFtcGxlIGlmIHdlJ3JlIG5v
IGxvbmdlciBhdHRhY2hlZCB0byBhIHBhZ2UuCiAgICAgLy8gVGhpcyBpcyB0cnVlIHdoaWxlIHJ1
bm5pbmcgb251bmxvYWQgaGFuZGxlcnMuCiAgICAgLy8gRklYTUU6IFdlIG5lZWQgdG8gYmUgYWJs
ZSB0byBzZW5kIFhNTEh0dHBSZXF1ZXN0cyBmcm9tIG9udW5sb2FkLCA8aHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5MDQ+LgpAQCAtMTEzNSwyNSArMTEyMSw2IEBAIFN0
cmluZyBYTUxIdHRwUmVxdWVzdDo6c3RhdHVzVGV4dChFeGNlcHRpb25Db2RlJiBlYykgY29uc3QK
ICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKLXZvaWQgWE1MSHR0cFJlcXVlc3Q6OnByb2Nlc3NT
eW5jTG9hZFJlc3VsdHModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8Y2hh
cj4mIGRhdGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBFeGNlcHRpb25Db2Rl
JiBlYykKLXsKLSAgICBpZiAobV9zYW1lT3JpZ2luUmVxdWVzdCAmJiAhc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KHJlc3BvbnNlLnVybCgpKSkg
ewotICAgICAgICBhYm9ydCgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIGRp
ZFJlY2VpdmVSZXNwb25zZShyZXNwb25zZSk7Ci0gICAgY2hhbmdlU3RhdGUoSEVBREVSU19SRUNF
SVZFRCk7Ci0KLSAgICBjb25zdCBjaGFyKiBieXRlcyA9IHN0YXRpY19jYXN0PGNvbnN0IGNoYXIq
PihkYXRhLmRhdGEoKSk7Ci0gICAgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4oZGF0YS5zaXpl
KCkpOwotICAgIGRpZFJlY2VpdmVEYXRhKGJ5dGVzLCBsZW4pOwotCi0gICAgZGlkRmluaXNoTG9h
ZGluZyhpZGVudGlmaWVyKTsKLSAgICBpZiAobV9lcnJvcikKLSAgICAgICAgZWMgPSBYTUxIdHRw
UmVxdWVzdEV4Y2VwdGlvbjo6TkVUV09SS19FUlI7Ci19Ci0KIHZvaWQgWE1MSHR0cFJlcXVlc3Q6
OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7CiAgICAgLy8gSWYgd2UgYXJl
IGFscmVhZHkgaW4gYW4gZXJyb3Igc3RhdGUsIGZvciBpbnN0YW5jZSB3ZSBjYWxsZWQgYWJvcnQo
KSwgYmFpbCBvdXQgZWFybHkuCkBAIC0xMTYxLDEwICsxMTI4LDEyIEBAIHZvaWQgWE1MSHR0cFJl
cXVlc3Q6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIGlmIChlcnJvci5pc0NhbmNlbGxhdGlvbigpKSB7CisgICAgICAgIG1fZXhjZXB0
aW9uQ29kZSA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpBQk9SVF9FUlI7CiAgICAgICAgIGFi
b3J0RXJyb3IoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIG1fZXhjZXB0aW9uQ29k
ZSA9IFhNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uOjpORVRXT1JLX0VSUjsKICAgICBuZXR3b3JrRXJy
b3IoKTsKIH0KIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaCBiL1dl
YkNvcmUveG1sL1hNTEh0dHBSZXF1ZXN0LmgKaW5kZXggMDg4MmRkYy4uMDUwNzliNSAxMDA2NDQK
LS0tIGEvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuaAorKysgYi9XZWJDb3JlL3htbC9YTUxI
dHRwUmVxdWVzdC5oCkBAIC0xMzcsNyArMTM3LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGRpZFJl
Y2VpdmVSZXNwb25zZVByZWZsaWdodChjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CiAgICAgdm9p
ZCBkaWRGaW5pc2hMb2FkaW5nUHJlZmxpZ2h0KCk7CiAKLSAgICB2b2lkIHByb2Nlc3NTeW5jTG9h
ZFJlc3VsdHModW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBjb25zdCBWZWN0b3I8Y2hhcj4mIGRh
dGEsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCB1
cGRhdGVBbmREaXNwYXRjaE9uUHJvZ3Jlc3ModW5zaWduZWQgaW50IGxlbik7CiAKICAgICBTdHJp
bmcgcmVzcG9uc2VNSU1FVHlwZSgpIGNvbnN0OwpAQCAtMjM1LDYgKzIzNCw3IEBAIHByaXZhdGU6
CiAgICAgCiAgICAgdW5zaWduZWQgbV9sYXN0U2VuZExpbmVOdW1iZXI7CiAgICAgU3RyaW5nIG1f
bGFzdFNlbmRVUkw7CisgICAgRXhjZXB0aW9uQ29kZSBtX2V4Y2VwdGlvbkNvZGU7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="13622"
          type_id="1"
          status="+"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>