<?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>83213</bug_id>
          
          <creation_ts>2012-04-04 14:02:08 -0700</creation_ts>
          <short_desc>RenderLayer scrollbars&apos; updates should be split between layout induced and style change induced</short_desc>
          <delta_ts>2012-04-04 21:30:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>jamesr</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>595905</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-04 14:02:08 -0700</bug_when>
    <thetext>The current code in RenderLayer::updateScrollInfoAfterLayout handles the 2 types of scrollbars&apos; changes which is wrong. Several of the updates are only tied to style changes and should be done in RenderLayer::styleChanged().

This makes the code confusing to follow and adds more code to updateScrollInfoAfterLayout than necessary.

Patch forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>595938</commentid>
    <comment_count>1</comment_count>
      <attachid>135682</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-04 14:24:04 -0700</bug_when>
    <thetext>Created attachment 135682
Proposed refactoring, split the 2 concepts for better readibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596086</commentid>
    <comment_count>2</comment_count>
      <attachid>135682</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-04-04 16:34:41 -0700</bug_when>
    <thetext>Comment on attachment 135682
Proposed refactoring, split the 2 concepts for better readibility.

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

&gt; Source/WebCore/rendering/RenderLayer.cpp:2418
&gt; +    // FIXME: This works only for overflow: scroll as it removes the scrollbar from the available area.

I don&apos;t find this comment particularly clear.

&gt; Source/WebCore/rendering/RenderLayer.cpp:2507
&gt; +        // Layout may cause us to be in an invalid scroll position. In this case we need

I&apos;d say &quot;at an invalid scroll position&quot;

&gt; Source/WebCore/rendering/RenderLayer.cpp:4626
&gt; +    if (m_hBar &amp;&amp; !overflowCanHaveAScrollbar(overflowX))

Shouldn&apos;t you use the hasVerticalScrollbar() method here?

&gt; Source/WebCore/rendering/RenderLayer.cpp:4632
&gt; +    // Overflow: scroll only enables / disables scrollbars. Changing overflow: scroll
&gt; +    // to overflow: auto should re-enable the scrollbars. See bug 11985.

This comment is a bit confusing too. I think you mean that with overflow:scroll, scrollbars are always visible but might be disabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596174</commentid>
    <comment_count>3</comment_count>
      <attachid>135682</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-04 18:12:21 -0700</bug_when>
    <thetext>Comment on attachment 135682
Proposed refactoring, split the 2 concepts for better readibility.

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

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2418
&gt;&gt; +    // FIXME: This works only for overflow: scroll as it removes the scrollbar from the available area.
&gt; 
&gt; I don&apos;t find this comment particularly clear.

I will just remove it as it is not a super important comment. Overflow: scroll use this function to enable / disable scrollbars so it needs to remove the scrollbar from the available height (thus the use of client height). In other context, removing the scrollbar&apos;s size is not advisable and the cause of bug 71541 AFAICT.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:2507
&gt;&gt; +        // Layout may cause us to be in an invalid scroll position. In this case we need
&gt; 
&gt; I&apos;d say &quot;at an invalid scroll position&quot;

Sure.

&gt;&gt; Source/WebCore/rendering/RenderLayer.cpp:4632
&gt;&gt; +    // to overflow: auto should re-enable the scrollbars. See bug 11985.
&gt; 
&gt; This comment is a bit confusing too. I think you mean that with overflow:scroll, scrollbars are always visible but might be disabled.

Good call, let me rephrase that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596222</commentid>
    <comment_count>4</comment_count>
      <attachid>135744</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-04-04 19:08:16 -0700</bug_when>
    <thetext>Created attachment 135744
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596286</commentid>
    <comment_count>5</comment_count>
      <attachid>135744</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-04 21:30:42 -0700</bug_when>
    <thetext>Comment on attachment 135744
Patch for landing

Clearing flags on attachment: 135744

Committed r113289: &lt;http://trac.webkit.org/changeset/113289&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>596287</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-04 21:30:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135682</attachid>
            <date>2012-04-04 14:24:04 -0700</date>
            <delta_ts>2012-04-04 19:08:12 -0700</delta_ts>
            <desc>Proposed refactoring, split the 2 concepts for better readibility.</desc>
            <filename>bug-83213-20120404142403.patch</filename>
            <type>text/plain</type>
            <size>14677</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTU2NTFlNmY4OTFmZjg2
MWJjN2U3MGMzNzZmM2ZhNTRjN2M2ODQ4MS4uMmZlZjg1OWI2ZjBhNDkwMjVjMmRkOWRkNzIyMDY1
ODcyMTIxZDhlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA0LTA0ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmRlckxh
eWVyIHNjcm9sbGJhcnMnIHVwZGF0ZXMgc2hvdWxkIGJlIHNwbGl0IGJldHdlZW4gbGF5b3V0IGlu
ZHVjZWQgYW5kIHN0eWxlIGNoYW5nZSBpbmR1Y2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzIxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFJlZmFjdG9yaW5nIG9ubHksIG5vIGNoYW5nZSBpbiBiZWhh
dmlvci4KKworICAgICAgICBUaGlzIHBhdGNoZXMgc3BsaXRzIHVwIHRoZSAyIHJlYXNvbnMgZm9y
IG1vZGlmeWluZyB0aGUgc2Nyb2xsYmFyczoKKyAgICAgICAgLSBzdHlsZSB1cGRhdGVzLCBoYW5k
bGVkIGluIHVwZGF0ZVNjcm9sbGJhcnNBZnRlclN0eWxlQ2hhbmdlLgorICAgICAgICAtIGxheW91
dCB0aW1lLCBoYW5kbGVkIGluIHVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dC4KKworICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJMYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJM
YXllcjo6Y29udGVudHNTaXplKToKKyAgICAgICAgUmVtb3ZlZCBub3cgdW5uZWVkZWQgY29uc3Qt
Y2FzdHMuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRIYXNIb3Jpem9udGFs
U2Nyb2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzZXRIYXNWZXJ0aWNh
bFNjcm9sbGJhcik6CisgICAgICAgIFVwZGF0ZWQgdG8gdXNlIGhhc0hvcml6b250YWxTY3JvbGxi
YXIgLyBoYXNWZXJ0aWNhbFNjcm9sbGJhci4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OnNjcm9sbFdpZHRoKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzY3JvbGxI
ZWlnaHQpOgorICAgICAgICBNYWRlIHRob3NlIGZ1bmN0aW9ucyB8Y29uc3R8LgorCisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Y29tcHV0ZVNjcm9sbERpbWVuc2lvbnMpOgorICAgICAg
ICBSZW1vdmVkIHRoZSB1bm5lZWRlZCBib29sZWFucyBhbmQgbW92ZSB0aGUgZG8td2UtaGF2ZS1v
dmVyZmxvdy1sb2dpYworICAgICAgICBpbnRvIGhhc0hvcml6b250YWxPdmVyZmxvdyBhbmQgaGFz
VmVydGljYWxPdmVyZmxvdy4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhhc0hv
cml6b250YWxPdmVyZmxvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6aGFzVmVy
dGljYWxPdmVyZmxvdyk6CisgICAgICAgIEFkZGVkIHRob3NlIG5ldyBoZWxwZXIgZnVuY3Rpb25z
LgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYmFyc0FmdGVy
TGF5b3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZv
QWZ0ZXJMYXlvdXQpOgorICAgICAgICBVcGRhdGVkIHRoZSBsYXR0ZXIgdG8gY2FsbCB0aGUgZm9y
bWVyLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYmFyc0Fm
dGVyU3R5bGVDaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnN0eWxlQ2hh
bmdlZCk6CisgICAgICAgIERpdHRvLgorCisgICAgICAgIChXZWJDb3JlOjpvdmVyZmxvd0Nhbkhh
dmVBU2Nyb2xsYmFyKToKKyAgICAgICAgQWRkIHRoaXMgaGVscGVyIGZ1bmN0aW9uIGZvciB1cGRh
dGVTY3JvbGxiYXJzQWZ0ZXJTdHlsZUNoYW5nZS4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllci5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhhc0hvcml6b250YWxT
Y3JvbGxiYXIpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhhc1ZlcnRpY2FsU2Ny
b2xsYmFyKToKKyAgICAgICAgQWRkZWQgdGhvc2UgMiBuZXcgaGVscGVyIGZ1bmN0aW9ucy4KKwog
MjAxMi0wNC0wNCAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJlYmFzZWxpbmUgYmluZGluZyB0ZXN0cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuY3BwCmluZGV4IDY4ZGE0Y2RlOTAyNGZjNDZlYTE0ZTVjNTg5MGU2YjA2M2E1MTM1M2Yu
LmMwOTRlZWRhNGQ3ZGVlNmRhMDRlNGUzOThlNGY5ODE1ZmU4NzY4MDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcApAQCAtMjA1NSw3ICsyMDU1LDcgQEAgSW50UG9p
bnQgUmVuZGVyTGF5ZXI6OmNvbnZlcnRGcm9tQ29udGFpbmluZ1ZpZXdUb1Njcm9sbGJhcihjb25z
dCBTY3JvbGxiYXIqIHNjcm8KIAogSW50U2l6ZSBSZW5kZXJMYXllcjo6Y29udGVudHNTaXplKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gSW50U2l6ZShjb25zdF9jYXN0PFJlbmRlckxheWVyKj4odGhp
cyktPnNjcm9sbFdpZHRoKCksIGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIqPih0aGlzKS0+c2Nyb2xs
SGVpZ2h0KCkpOworICAgIHJldHVybiBJbnRTaXplKHNjcm9sbFdpZHRoKCksIHNjcm9sbEhlaWdo
dCgpKTsKIH0KIAogaW50IFJlbmRlckxheWVyOjp2aXNpYmxlSGVpZ2h0KCkgY29uc3QKQEAgLTIy
MDgsNyArMjIwOCw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmFsbG93c1Njcm9sbGluZygpIGNvbnN0
CiAKIHZvaWQgUmVuZGVyTGF5ZXI6OnNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoYm9vbCBoYXNT
Y3JvbGxiYXIpCiB7Ci0gICAgaWYgKGhhc1Njcm9sbGJhciA9PSAobV9oQmFyICE9IDApKQorICAg
IGlmIChoYXNTY3JvbGxiYXIgPT0gaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAoaGFzU2Nyb2xsYmFyKQpAQCAtMjIzMSw3ICsyMjMxLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29sIGhhc1Njcm9sbGJh
cikKIAogdm9pZCBSZW5kZXJMYXllcjo6c2V0SGFzVmVydGljYWxTY3JvbGxiYXIoYm9vbCBoYXNT
Y3JvbGxiYXIpCiB7Ci0gICAgaWYgKGhhc1Njcm9sbGJhciA9PSAobV92QmFyICE9IDApKQorICAg
IGlmIChoYXNTY3JvbGxiYXIgPT0gaGFzVmVydGljYWxTY3JvbGxiYXIoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKGhhc1Njcm9sbGJhcikKQEAgLTIzNDcsMTkgKzIzNDcsMTkgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6cG9zaXRpb25PdmVyZmxvd0NvbnRyb2xzKGNvbnN0IEludFNpemUmIG9m
ZnNldEZyb21MYXllcikKICAgICAgICAgbV9yZXNpemVyLT5zZXRGcmFtZVJlY3QocmVzaXplckNv
cm5lclJlY3QodGhpcywgYm9yZGVyQm94KSk7CiB9CiAKLWludCBSZW5kZXJMYXllcjo6c2Nyb2xs
V2lkdGgoKQoraW50IFJlbmRlckxheWVyOjpzY3JvbGxXaWR0aCgpIGNvbnN0CiB7CiAgICAgQVNT
RVJUKHJlbmRlckJveCgpKTsKICAgICBpZiAobV9zY3JvbGxEaW1lbnNpb25zRGlydHkpCi0gICAg
ICAgIGNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKCk7CisgICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVy
TGF5ZXIqPih0aGlzKS0+Y29tcHV0ZVNjcm9sbERpbWVuc2lvbnMoKTsKICAgICByZXR1cm4gc25h
cFNpemVUb1BpeGVsKG1fc2Nyb2xsU2l6ZS53aWR0aCgpLCByZW5kZXJCb3goKS0+Y2xpZW50TGVm
dCgpKTsKIH0KIAotaW50IFJlbmRlckxheWVyOjpzY3JvbGxIZWlnaHQoKQoraW50IFJlbmRlckxh
eWVyOjpzY3JvbGxIZWlnaHQoKSBjb25zdAogewogICAgIEFTU0VSVChyZW5kZXJCb3goKSk7CiAg
ICAgaWYgKG1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5KQotICAgICAgICBjb21wdXRlU2Nyb2xsRGlt
ZW5zaW9ucygpOworICAgICAgICBjb25zdF9jYXN0PFJlbmRlckxheWVyKj4odGhpcyktPmNvbXB1
dGVTY3JvbGxEaW1lbnNpb25zKCk7CiAgICAgcmV0dXJuIHNuYXBTaXplVG9QaXhlbChtX3Njcm9s
bFNpemUuaGVpZ2h0KCksIHJlbmRlckJveCgpLT5jbGllbnRUb3AoKSk7CiB9CiAKQEAgLTIzOTUs
NyArMjM5NSw3IEBAIExheW91dFVuaXQgUmVuZGVyTGF5ZXI6Om92ZXJmbG93UmlnaHQoKSBjb25z
dAogICAgIHJldHVybiBvdmVyZmxvd1JlY3QubWF4WCgpOwogfQogCi12b2lkIFJlbmRlckxheWVy
Ojpjb21wdXRlU2Nyb2xsRGltZW5zaW9ucyhib29sKiBuZWVkSEJhciwgYm9vbCogbmVlZFZCYXIp
Cit2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlU2Nyb2xsRGltZW5zaW9ucygpCiB7CiAgICAgUmVu
ZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKICAgICBBU1NFUlQoYm94KTsKQEAgLTI0MDksNTgg
KzI0MDksNDkgQEAgdm9pZCBSZW5kZXJMYXllcjo6Y29tcHV0ZVNjcm9sbERpbWVuc2lvbnMoYm9v
bCogbmVlZEhCYXIsIGJvb2wqIG5lZWRWQmFyKQogICAgIG1fc2Nyb2xsU2l6ZS5zZXRIZWlnaHQo
b3ZlcmZsb3dCb3R0b20oKSAtIG92ZXJmbG93VG9wKCkpOwogCiAgICAgc2V0U2Nyb2xsT3JpZ2lu
KEludFBvaW50KC1tX3Njcm9sbE92ZXJmbG93LndpZHRoKCksIC1tX3Njcm9sbE92ZXJmbG93Lmhl
aWdodCgpKSk7Cit9CisKK2Jvb2wgUmVuZGVyTGF5ZXI6Omhhc0hvcml6b250YWxPdmVyZmxvdygp
IGNvbnN0Cit7CisgICAgQVNTRVJUKCFtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSk7CiAKLSAgICBp
ZiAobmVlZEhCYXIpCi0gICAgICAgICpuZWVkSEJhciA9IHNjcm9sbFdpZHRoKCkgPiBib3gtPnBp
eGVsU25hcHBlZENsaWVudFdpZHRoKCk7Ci0gICAgaWYgKG5lZWRWQmFyKQotICAgICAgICAqbmVl
ZFZCYXIgPSBzY3JvbGxIZWlnaHQoKSA+IGJveC0+cGl4ZWxTbmFwcGVkQ2xpZW50SGVpZ2h0KCk7
CisgICAgLy8gRklYTUU6IFRoaXMgd29ya3Mgb25seSBmb3Igb3ZlcmZsb3c6IHNjcm9sbCBhcyBp
dCByZW1vdmVzIHRoZSBzY3JvbGxiYXIgZnJvbSB0aGUgYXZhaWxhYmxlIGFyZWEuCisgICAgLy8g
U2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03MTU0MS4KKyAgICBy
ZXR1cm4gc2Nyb2xsV2lkdGgoKSA+IHJlbmRlckJveCgpLT5waXhlbFNuYXBwZWRDbGllbnRXaWR0
aCgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQo
KQorYm9vbCBSZW5kZXJMYXllcjo6aGFzVmVydGljYWxPdmVyZmxvdygpIGNvbnN0CiB7Ci0gICAg
UmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKLSAgICBpZiAoIWJveCkKLSAgICAgICAgcmV0
dXJuOworICAgIEFTU0VSVCghbV9zY3JvbGxEaW1lbnNpb25zRGlydHkpOwogCi0gICAgbV9zY3Jv
bGxEaW1lbnNpb25zRGlydHkgPSB0cnVlOwotICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0T3JpZ2lu
YWwoc2Nyb2xsWE9mZnNldCgpLCBzY3JvbGxZT2Zmc2V0KCkpOworICAgIC8vIEZJWE1FOiBUaGlz
IHdvcmtzIG9ubHkgZm9yIG92ZXJmbG93OiBzY3JvbGwgYXMgaXQgcmVtb3ZlcyB0aGUgc2Nyb2xs
YmFyIGZyb20gdGhlIGF2YWlsYWJsZSBhcmVhLgorICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE1NDEuCisgICAgcmV0dXJuIHNjcm9sbEhlaWdodCgp
ID4gcmVuZGVyQm94KCktPnBpeGVsU25hcHBlZENsaWVudEhlaWdodCgpOworfQogCi0gICAgYm9v
bCBob3Jpem9udGFsT3ZlcmZsb3csIHZlcnRpY2FsT3ZlcmZsb3c7Ci0gICAgY29tcHV0ZVNjcm9s
bERpbWVuc2lvbnMoJmhvcml6b250YWxPdmVyZmxvdywgJnZlcnRpY2FsT3ZlcmZsb3cpOwordm9p
ZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsYmFyc0FmdGVyTGF5b3V0KCkKK3sKKyAgICBSZW5k
ZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOworICAgIEFTU0VSVChib3gpOwogCi0gICAgaWYgKGJv
eC0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkgIT0gT01BUlFVRUUpIHsKLSAgICAgICAgLy8gTGF5b3V0
IG1heSBjYXVzZSB1cyB0byBiZSBpbiBhbiBpbnZhbGlkIHNjcm9sbCBwb3NpdGlvbi4gIEluIHRo
aXMgY2FzZSB3ZSBuZWVkCi0gICAgICAgIC8vIHRvIHB1bGwgb3VyIHNjcm9sbCBvZmZzZXRzIGJh
Y2sgdG8gdGhlIG1heCAob3IgcHVzaCB0aGVtIHVwIHRvIHRoZSBtaW4pLgotICAgICAgICBpbnQg
bmV3WCA9IG1heCgwLCBtaW48aW50PihzY3JvbGxYT2Zmc2V0KCksIHNjcm9sbFdpZHRoKCkgLSBi
b3gtPmNsaWVudFdpZHRoKCkpKTsKLSAgICAgICAgaW50IG5ld1kgPSBtYXgoMCwgbWluPGludD4o
c2Nyb2xsWU9mZnNldCgpLCBzY3JvbGxIZWlnaHQoKSAtIGJveC0+Y2xpZW50SGVpZ2h0KCkpKTsK
LSAgICAgICAgaWYgKG5ld1ggIT0gc2Nyb2xsWE9mZnNldCgpIHx8IG5ld1kgIT0gc2Nyb2xsWU9m
ZnNldCgpKQotICAgICAgICAgICAgc2Nyb2xsVG9PZmZzZXQobmV3WCwgbmV3WSk7Ci0gICAgfQor
ICAgIGJvb2wgaGFzSG9yaXpvbnRhbE92ZXJmbG93ID0gdGhpcy0+aGFzSG9yaXpvbnRhbE92ZXJm
bG93KCk7CisgICAgYm9vbCBoYXNWZXJ0aWNhbE92ZXJmbG93ID0gdGhpcy0+aGFzVmVydGljYWxP
dmVyZmxvdygpOwogCi0gICAgYm9vbCBoYXZlSG9yaXpvbnRhbEJhciA9IG1faEJhcjsKLSAgICBi
b29sIGhhdmVWZXJ0aWNhbEJhciA9IG1fdkJhcjsKLSAgICAKICAgICAvLyBvdmVyZmxvdzpzY3Jv
bGwgc2hvdWxkIGp1c3QgZW5hYmxlL2Rpc2FibGUuCiAgICAgaWYgKG1faEJhciAmJiByZW5kZXJl
cigpLT5zdHlsZSgpLT5vdmVyZmxvd1goKSA9PSBPU0NST0xMKQotICAgICAgICBtX2hCYXItPnNl
dEVuYWJsZWQoaG9yaXpvbnRhbE92ZXJmbG93KTsKKyAgICAgICAgbV9oQmFyLT5zZXRFbmFibGVk
KGhhc0hvcml6b250YWxPdmVyZmxvdyk7CiAgICAgaWYgKG1fdkJhciAmJiByZW5kZXJlcigpLT5z
dHlsZSgpLT5vdmVyZmxvd1koKSA9PSBPU0NST0xMKQotICAgICAgICBtX3ZCYXItPnNldEVuYWJs
ZWQodmVydGljYWxPdmVyZmxvdyk7CisgICAgICAgIG1fdkJhci0+c2V0RW5hYmxlZChoYXNWZXJ0
aWNhbE92ZXJmbG93KTsKIAotICAgIC8vIEEgZHluYW1pYyBjaGFuZ2UgZnJvbSBhIHNjcm9sbGlu
ZyBvdmVyZmxvdyB0byBvdmVyZmxvdzpoaWRkZW4gbWVhbnMgd2UgbmVlZCB0byBnZXQgcmlkIG9m
IGFueQotICAgIC8vIHNjcm9sbGJhcnMgdGhhdCBtYXkgYmUgcHJlc2VudC4KLSAgICBpZiAocmVu
ZGVyZXIoKS0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkgPT0gT0hJRERFTiAmJiBoYXZlSG9yaXpvbnRh
bEJhcikKLSAgICAgICAgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihmYWxzZSk7Ci0gICAgaWYg
KHJlbmRlcmVyKCktPnN0eWxlKCktPm92ZXJmbG93WSgpID09IE9ISURERU4gJiYgaGF2ZVZlcnRp
Y2FsQmFyKQotICAgICAgICBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihmYWxzZSk7Ci0gICAgCiAg
ICAgLy8gb3ZlcmZsb3c6YXV0byBtYXkgbmVlZCB0byBsYXkgb3V0IGFnYWluIGlmIHNjcm9sbGJh
cnMgZ290IGFkZGVkL3JlbW92ZWQuCi0gICAgYm9vbCBzY3JvbGxiYXJzQ2hhbmdlZCA9IChib3gt
Pmhhc0F1dG9Ib3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgaGF2ZUhvcml6b250YWxCYXIgIT0gaG9y
aXpvbnRhbE92ZXJmbG93KSB8fCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJveC0+
aGFzQXV0b1ZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgaGF2ZVZlcnRpY2FsQmFyICE9IHZlcnRpY2Fs
T3ZlcmZsb3cpOyAgICAKLSAgICBpZiAoc2Nyb2xsYmFyc0NoYW5nZWQpIHsKKyAgICBib29sIGF1
dG9Ib3Jpem9udGFsU2Nyb2xsQmFyQ2hhbmdlZCA9IGJveC0+aGFzQXV0b0hvcml6b250YWxTY3Jv
bGxiYXIoKSAmJiAoaGFzSG9yaXpvbnRhbFNjcm9sbGJhcigpICE9IGhhc0hvcml6b250YWxPdmVy
Zmxvdyk7CisgICAgYm9vbCBhdXRvVmVydGljYWxTY3JvbGxCYXJDaGFuZ2VkID0gYm94LT5oYXNB
dXRvVmVydGljYWxTY3JvbGxiYXIoKSAmJiAoaGFzVmVydGljYWxTY3JvbGxiYXIoKSAhPSBoYXNW
ZXJ0aWNhbE92ZXJmbG93KTsKKworICAgIGlmIChhdXRvSG9yaXpvbnRhbFNjcm9sbEJhckNoYW5n
ZWQgfHwgYXV0b1ZlcnRpY2FsU2Nyb2xsQmFyQ2hhbmdlZCkgewogICAgICAgICBpZiAoYm94LT5o
YXNBdXRvSG9yaXpvbnRhbFNjcm9sbGJhcigpKQotICAgICAgICAgICAgc2V0SGFzSG9yaXpvbnRh
bFNjcm9sbGJhcihob3Jpem9udGFsT3ZlcmZsb3cpOworICAgICAgICAgICAgc2V0SGFzSG9yaXpv
bnRhbFNjcm9sbGJhcihoYXNIb3Jpem9udGFsT3ZlcmZsb3cpOwogICAgICAgICBpZiAoYm94LT5o
YXNBdXRvVmVydGljYWxTY3JvbGxiYXIoKSkKLSAgICAgICAgICAgIHNldEhhc1ZlcnRpY2FsU2Ny
b2xsYmFyKHZlcnRpY2FsT3ZlcmZsb3cpOworICAgICAgICAgICAgc2V0SGFzVmVydGljYWxTY3Jv
bGxiYXIoaGFzVmVydGljYWxPdmVyZmxvdyk7CiAKICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBP
UlQpCiAgICAgICAgIC8vIEZvcmNlIGFuIHVwZGF0ZSBzaW5jZSB3ZSBrbm93IHRoZSBzY3JvbGxi
YXJzIGhhdmUgY2hhbmdlZCB0aGluZ3MuCkBAIC0yNDc3LDggKzI0NjgsNyBAQCB2b2lkIFJlbmRl
ckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKQogICAgICAgICAgICAgICAgIHJl
bmRlcmVyKCktPnNldE5lZWRzTGF5b3V0KHRydWUsIE1hcmtPbmx5VGhpcyk7CiAgICAgICAgICAg
ICAgICAgaWYgKHJlbmRlcmVyKCktPmlzUmVuZGVyQmxvY2soKSkgewogICAgICAgICAgICAgICAg
ICAgICBSZW5kZXJCbG9jayogYmxvY2sgPSB0b1JlbmRlckJsb2NrKHJlbmRlcmVyKCkpOwotICAg
ICAgICAgICAgICAgICAgICBibG9jay0+c2Nyb2xsYmFyc0NoYW5nZWQoYm94LT5oYXNBdXRvSG9y
aXpvbnRhbFNjcm9sbGJhcigpICYmIGhhdmVIb3Jpem9udGFsQmFyICE9IGhvcml6b250YWxPdmVy
ZmxvdywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJveC0+
aGFzQXV0b1ZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgaGF2ZVZlcnRpY2FsQmFyICE9IHZlcnRpY2Fs
T3ZlcmZsb3cpOworICAgICAgICAgICAgICAgICAgICBibG9jay0+c2Nyb2xsYmFyc0NoYW5nZWQo
YXV0b0hvcml6b250YWxTY3JvbGxCYXJDaGFuZ2VkLCBhdXRvVmVydGljYWxTY3JvbGxCYXJDaGFu
Z2VkKTsKICAgICAgICAgICAgICAgICAgICAgYmxvY2stPmxheW91dEJsb2NrKHRydWUpOyAvLyBG
SVhNRTogTmVlZCB0byBoYW5kbGUgcG9zaXRpb25lZCBmbG9hdHMgdHJpZ2dlcmluZyBleHRyYSBy
ZWxheW91dHMuCiAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgIHJl
bmRlcmVyKCktPmxheW91dCgpOwpAQCAtMjQ4NiwxMiArMjQ3Niw2IEBAIHZvaWQgUmVuZGVyTGF5
ZXI6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpCiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KICAgICB9Ci0gICAgCi0gICAgLy8gSWYgb3ZlcmZsb3c6c2Nyb2xsIGlzIHR1cm5lZCBpbnRv
IG92ZXJmbG93OmF1dG8gYSBiYXIgbWlnaHQgc3RpbGwgYmUgZGlzYWJsZWQgKEJ1ZyAxMTk4NSku
Ci0gICAgaWYgKG1faEJhciAmJiBib3gtPmhhc0F1dG9Ib3Jpem9udGFsU2Nyb2xsYmFyKCkpCi0g
ICAgICAgIG1faEJhci0+c2V0RW5hYmxlZCh0cnVlKTsKLSAgICBpZiAobV92QmFyICYmIGJveC0+
aGFzQXV0b1ZlcnRpY2FsU2Nyb2xsYmFyKCkpCi0gICAgICAgIG1fdkJhci0+c2V0RW5hYmxlZCh0
cnVlKTsKIAogICAgIC8vIFNldCB1cCB0aGUgcmFuZ2UgKGFuZCBwYWdlIHN0ZXAvbGluZSBzdGVw
KS4KICAgICBpZiAobV9oQmFyKSB7CkBAIC0yNTA2LDYgKzI0OTAsMjkgQEAgdm9pZCBSZW5kZXJM
YXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCkKICAgICAgICAgbV92QmFyLT5zZXRT
dGVwcyhTY3JvbGxiYXI6OnBpeGVsc1BlckxpbmVTdGVwKCksIHBhZ2VTdGVwKTsKICAgICAgICAg
bV92QmFyLT5zZXRQcm9wb3J0aW9uKGNsaWVudEhlaWdodCwgbV9zY3JvbGxTaXplLmhlaWdodCgp
KTsKICAgICB9Cit9CisKK3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxh
eW91dCgpCit7CisgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKKyAgICBpZiAoIWJv
eCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zY3JvbGxEaW1lbnNpb25zRGlydHkgPSB0cnVl
OworICAgIEludFNpemUgc2Nyb2xsT2Zmc2V0T3JpZ2luYWwoc2Nyb2xsWE9mZnNldCgpLCBzY3Jv
bGxZT2Zmc2V0KCkpOworCisgICAgY29tcHV0ZVNjcm9sbERpbWVuc2lvbnMoKTsKKworICAgIGlm
IChib3gtPnN0eWxlKCktPm92ZXJmbG93WCgpICE9IE9NQVJRVUVFKSB7CisgICAgICAgIC8vIExh
eW91dCBtYXkgY2F1c2UgdXMgdG8gYmUgaW4gYW4gaW52YWxpZCBzY3JvbGwgcG9zaXRpb24uIElu
IHRoaXMgY2FzZSB3ZSBuZWVkCisgICAgICAgIC8vIHRvIHB1bGwgb3VyIHNjcm9sbCBvZmZzZXRz
IGJhY2sgdG8gdGhlIG1heCAob3IgcHVzaCB0aGVtIHVwIHRvIHRoZSBtaW4pLgorICAgICAgICBp
bnQgbmV3WCA9IG1heCgwLCBtaW48aW50PihzY3JvbGxYT2Zmc2V0KCksIHNjcm9sbFdpZHRoKCkg
LSBib3gtPmNsaWVudFdpZHRoKCkpKTsKKyAgICAgICAgaW50IG5ld1kgPSBtYXgoMCwgbWluPGlu
dD4oc2Nyb2xsWU9mZnNldCgpLCBzY3JvbGxIZWlnaHQoKSAtIGJveC0+Y2xpZW50SGVpZ2h0KCkp
KTsKKyAgICAgICAgaWYgKG5ld1ggIT0gc2Nyb2xsWE9mZnNldCgpIHx8IG5ld1kgIT0gc2Nyb2xs
WU9mZnNldCgpKQorICAgICAgICAgICAgc2Nyb2xsVG9PZmZzZXQobmV3WCwgbmV3WSk7CisgICAg
fQorCisgICAgdXBkYXRlU2Nyb2xsYmFyc0FmdGVyTGF5b3V0KCk7CiAKICAgICBpZiAoc2Nyb2xs
T2Zmc2V0T3JpZ2luYWwgIT0gc2Nyb2xsT2Zmc2V0KCkpCiAgICAgICAgIHNjcm9sbFRvT2Zmc2V0
V2l0aG91dEFuaW1hdGlvbihJbnRQb2ludChzY3JvbGxYT2Zmc2V0KCksIHNjcm9sbFlPZmZzZXQo
KSkpOwpAQCAtNDYwMyw2ICs0NjEwLDM3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OmlzU2VsZlBhaW50
aW5nTGF5ZXIoKSBjb25zdAogICAgICAgICB8fCByZW5kZXJlcigpLT5pc1JlbmRlcklGcmFtZSgp
OwogfQogCitzdGF0aWMgYm9vbCBvdmVyZmxvd0NhbkhhdmVBU2Nyb2xsYmFyKEVPdmVyZmxvdyBv
dmVyZmxvdykKK3sKKyAgICByZXR1cm4gb3ZlcmZsb3cgPT0gT0FVVE8gfHwgb3ZlcmZsb3cgPT0g
T1NDUk9MTCB8fCBvdmVyZmxvdyA9PSBPT1ZFUkxBWTsKK30KKwordm9pZCBSZW5kZXJMYXllcjo6
dXBkYXRlU2Nyb2xsYmFyc0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKQoreworICAgIC8vIE92ZXJmbG93IGFyZSBhIGJveCBjb25jZXB0LgorICAgIGlmICghcmVu
ZGVyQm94KCkpCisgICAgICAgIHJldHVybjsKKworICAgIEVPdmVyZmxvdyBvdmVyZmxvd1ggPSBy
ZW5kZXJCb3goKS0+c3R5bGUoKS0+b3ZlcmZsb3dYKCk7CisgICAgRU92ZXJmbG93IG92ZXJmbG93
WSA9IHJlbmRlckJveCgpLT5zdHlsZSgpLT5vdmVyZmxvd1koKTsKKyAgICBpZiAobV9oQmFyICYm
ICFvdmVyZmxvd0NhbkhhdmVBU2Nyb2xsYmFyKG92ZXJmbG93WCkpCisgICAgICAgIHNldEhhc0hv
cml6b250YWxTY3JvbGxiYXIoZmFsc2UpOworICAgIGlmIChtX3ZCYXIgJiYgIW92ZXJmbG93Q2Fu
SGF2ZUFTY3JvbGxiYXIob3ZlcmZsb3dZKSkKKyAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxi
YXIoZmFsc2UpOworCisgICAgLy8gT3ZlcmZsb3c6IHNjcm9sbCBvbmx5IGVuYWJsZXMgLyBkaXNh
YmxlcyBzY3JvbGxiYXJzLiBDaGFuZ2luZyBvdmVyZmxvdzogc2Nyb2xsCisgICAgLy8gdG8gb3Zl
cmZsb3c6IGF1dG8gc2hvdWxkIHJlLWVuYWJsZSB0aGUgc2Nyb2xsYmFycy4gU2VlIGJ1ZyAxMTk4
NS4KKyAgICBpZiAobV9oQmFyICYmIG9sZFN0eWxlLT5vdmVyZmxvd1goKSA9PSBPU0NST0xMICYm
IG92ZXJmbG93WCAhPSBPU0NST0xMKSB7CisgICAgICAgIEFTU0VSVChvdmVyZmxvd0NhbkhhdmVB
U2Nyb2xsYmFyKG92ZXJmbG93WCkpOworICAgICAgICBtX2hCYXItPnNldEVuYWJsZWQodHJ1ZSk7
CisgICAgfQorCisgICAgaWYgKG1fdkJhciAmJiBvbGRTdHlsZS0+b3ZlcmZsb3dZKCkgPT0gT1ND
Uk9MTCAmJiBvdmVyZmxvd1kgIT0gT1NDUk9MTCkgeworICAgICAgICBBU1NFUlQob3ZlcmZsb3dD
YW5IYXZlQVNjcm9sbGJhcihvdmVyZmxvd1kpKTsKKyAgICAgICAgbV92QmFyLT5zZXRFbmFibGVk
KHRydWUpOworICAgIH0KK30KKwogdm9pZCBSZW5kZXJMYXllcjo6c3R5bGVDaGFuZ2VkKFN0eWxl
RGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlKQogewogICAgIGJvb2wgaXNO
b3JtYWxGbG93T25seSA9IHNob3VsZEJlTm9ybWFsRmxvd09ubHkoKTsKQEAgLTQ2MjQsNiArNDY2
Miw4IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnN0eWxlQ2hhbmdlZChTdHlsZURpZmZlcmVuY2UsIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKICAgICAgICAgbV9tYXJxdWVlID0gMDsKICAgICB9
CiAgICAgCisgICAgdXBkYXRlU2Nyb2xsYmFyc0FmdGVyU3R5bGVDaGFuZ2Uob2xkU3R5bGUpOwor
CiAgICAgaWYgKCFoYXNSZWZsZWN0aW9uKCkgJiYgbV9yZWZsZWN0aW9uKQogICAgICAgICByZW1v
dmVSZWZsZWN0aW9uKCk7CiAgICAgZWxzZSBpZiAoaGFzUmVmbGVjdGlvbigpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCmluZGV4IDIxYzNhZDZiYTg1Yzc5YWNlYTQxZGRi
MjhjNzdiNzc0OGVkZDJiMjQuLjA1YmRhODNlZWIzODU5MTQ5MjQxMzZmOWIyMjliNjk5NTAxNDk1
ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllci5oCkBAIC0yODAsOCArMjgw
LDggQEAgcHVibGljOgogCiAgICAgTGF5b3V0UmVjdCByZWN0KCkgY29uc3QgeyByZXR1cm4gTGF5
b3V0UmVjdChsb2NhdGlvbigpLCBzaXplKCkpOyB9CiAKLSAgICBpbnQgc2Nyb2xsV2lkdGgoKTsK
LSAgICBpbnQgc2Nyb2xsSGVpZ2h0KCk7CisgICAgaW50IHNjcm9sbFdpZHRoKCkgY29uc3Q7Cisg
ICAgaW50IHNjcm9sbEhlaWdodCgpIGNvbnN0OwogCiAgICAgdm9pZCBwYW5TY3JvbGxGcm9tUG9p
bnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKIApAQCAtMzE0LDYgKzMxNCw5IEBAIHB1YmxpYzoKICAg
ICBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gY3JlYXRlU2Nyb2xsYmFyKFNjcm9sbGJhck9yaWVudGF0
aW9uKTsKICAgICB2b2lkIGRlc3Ryb3lTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24pOwog
CisgICAgYm9vbCBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gaG9yaXpv
bnRhbFNjcm9sbGJhcigpOyB9CisgICAgYm9vbCBoYXNWZXJ0aWNhbFNjcm9sbGJhcigpIGNvbnN0
IHsgcmV0dXJuIHZlcnRpY2FsU2Nyb2xsYmFyKCk7IH0KKwogICAgIC8vIFNjcm9sbGFibGVBcmVh
IG92ZXJyaWRlcwogICAgIHZpcnR1YWwgU2Nyb2xsYmFyKiBob3Jpem9udGFsU2Nyb2xsYmFyKCkg
Y29uc3QgeyByZXR1cm4gbV9oQmFyLmdldCgpOyB9CiAgICAgdmlydHVhbCBTY3JvbGxiYXIqIHZl
cnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gbV92QmFyLmdldCgpOyB9CkBAIC01ODUs
NiArNTg4LDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgc2hvdWxkUmVwYWludEFmdGVyTGF5b3V0
KCkgY29uc3Q7CiAKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnNBZnRlclN0eWxlQ2hhbmdlKGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSk7CisgICAgdm9pZCB1cGRhdGVTY3JvbGxiYXJzQWZ0
ZXJMYXlvdXQoKTsKKwogICAgIGZyaWVuZCBJbnRTaXplIFJlbmRlckJveDo6c2Nyb2xsZWRDb250
ZW50T2Zmc2V0KCkgY29uc3Q7CiAgICAgSW50U2l6ZSBzY3JvbGxlZENvbnRlbnRPZmZzZXQoKSBj
b25zdCB7IHJldHVybiBzY3JvbGxPZmZzZXQoKSArIG1fc2Nyb2xsT3ZlcmZsb3c7IH0KIApAQCAt
NjQ5LDcgKzY1NSw5IEBAIHByaXZhdGU6CiAgICAgCiAgICAgYm9vbCBoaXRUZXN0Q29udGVudHMo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3QgTGF5b3V0UmVjdCYg
bGF5ZXJCb3VuZHMsIGNvbnN0IExheW91dFBvaW50JiBoaXRUZXN0UG9pbnQsIEhpdFRlc3RGaWx0
ZXIpIGNvbnN0OwogICAgIAotICAgIHZvaWQgY29tcHV0ZVNjcm9sbERpbWVuc2lvbnMoYm9vbCog
bmVlZEhCYXIgPSAwLCBib29sKiBuZWVkVkJhciA9IDApOworICAgIHZvaWQgY29tcHV0ZVNjcm9s
bERpbWVuc2lvbnMoKTsKKyAgICBib29sIGhhc0hvcml6b250YWxPdmVyZmxvdygpIGNvbnN0Owor
ICAgIGJvb2wgaGFzVmVydGljYWxPdmVyZmxvdygpIGNvbnN0OwogCiAgICAgYm9vbCBzaG91bGRC
ZU5vcm1hbEZsb3dPbmx5KCkgY29uc3Q7IAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135744</attachid>
            <date>2012-04-04 19:08:16 -0700</date>
            <delta_ts>2012-04-04 21:30:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-83213-20120404190815.patch</filename>
            <type>text/plain</type>
            <size>14484</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEzMjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWZiMjA5MGNkYmQ4NTll
MTYxYjQxN2IyMjRhM2M4ZjczYWY0NzExNy4uMTFjZGQ1NjQ2OGRmMzMxMDZlMmFhMWFmMzdhNGJi
NWFiMjE1NDY4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA0LTA0ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIFJlbmRlckxh
eWVyIHNjcm9sbGJhcnMnIHVwZGF0ZXMgc2hvdWxkIGJlIHNwbGl0IGJldHdlZW4gbGF5b3V0IGlu
ZHVjZWQgYW5kIHN0eWxlIGNoYW5nZSBpbmR1Y2VkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD04MzIxMworCisgICAgICAgIFJldmlld2VkIGJ5IFNpbW9u
IEZyYXNlci4KKworICAgICAgICBSZWZhY3RvcmluZyBvbmx5LCBubyBjaGFuZ2UgaW4gYmVoYXZp
b3IuCisKKyAgICAgICAgVGhpcyBwYXRjaGVzIHNwbGl0cyB1cCB0aGUgMiByZWFzb25zIGZvciBt
b2RpZnlpbmcgdGhlIHNjcm9sbGJhcnM6CisgICAgICAgIC0gc3R5bGUgdXBkYXRlcywgaGFuZGxl
ZCBpbiB1cGRhdGVTY3JvbGxiYXJzQWZ0ZXJTdHlsZUNoYW5nZS4KKyAgICAgICAgLSBsYXlvdXQg
dGltZSwgaGFuZGxlZCBpbiB1cGRhdGVTY3JvbGxiYXJzQWZ0ZXJMYXlvdXQuCisKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5
ZXI6OmNvbnRlbnRzU2l6ZSk6CisgICAgICAgIFJlbW92ZWQgbm93IHVubmVlZGVkIGNvbnN0LWNh
c3RzLgorCisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0SGFzSG9yaXpvbnRhbFNj
cm9sbGJhcik6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0SGFzVmVydGljYWxT
Y3JvbGxiYXIpOgorICAgICAgICBVcGRhdGVkIHRvIHVzZSBoYXNIb3Jpem9udGFsU2Nyb2xsYmFy
IC8gaGFzVmVydGljYWxTY3JvbGxiYXIuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVy
OjpzY3JvbGxXaWR0aCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2Nyb2xsSGVp
Z2h0KToKKyAgICAgICAgTWFkZSB0aG9zZSBmdW5jdGlvbnMgfGNvbnN0fC4KKworICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKToKKyAgICAgICAg
UmVtb3ZlZCB0aGUgdW5uZWVkZWQgYm9vbGVhbnMgYW5kIG1vdmUgdGhlIGRvLXdlLWhhdmUtb3Zl
cmZsb3ctbG9naWMKKyAgICAgICAgaW50byBoYXNIb3Jpem9udGFsT3ZlcmZsb3cgYW5kIGhhc1Zl
cnRpY2FsT3ZlcmZsb3cuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoYXNIb3Jp
em9udGFsT3ZlcmZsb3cpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6Omhhc1ZlcnRp
Y2FsT3ZlcmZsb3cpOgorICAgICAgICBBZGRlZCB0aG9zZSBuZXcgaGVscGVyIGZ1bmN0aW9ucy4K
KworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlckxh
eW91dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0Fm
dGVyTGF5b3V0KToKKyAgICAgICAgVXBkYXRlZCB0aGUgbGF0dGVyIHRvIGNhbGwgdGhlIGZvcm1l
ci4KKworICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRl
clN0eWxlQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpzdHlsZUNoYW5n
ZWQpOgorICAgICAgICBEaXR0by4KKworICAgICAgICAoV2ViQ29yZTo6b3ZlcmZsb3dDYW5IYXZl
QVNjcm9sbGJhcik6CisgICAgICAgIEFkZCB0aGlzIGhlbHBlciBmdW5jdGlvbiBmb3IgdXBkYXRl
U2Nyb2xsYmFyc0FmdGVyU3R5bGVDaGFuZ2UuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
TGF5ZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoYXNIb3Jpem9udGFsU2Ny
b2xsYmFyKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoYXNWZXJ0aWNhbFNjcm9s
bGJhcik6CisgICAgICAgIEFkZGVkIHRob3NlIDIgbmV3IGhlbHBlciBmdW5jdGlvbnMuCisKIDIw
MTItMDQtMDQgIENocmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBX
YXZlVGFibGU6OndhdmVEYXRhRm9yRnVuZGFtZW50YWxGcmVxdWVuY3koKSBzaG91bGQgcHJvcGVy
bHkgaW50ZXJwcmV0IG5lZ2F0aXZlIGZyZXF1ZW5jeQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllci5jcHAKaW5kZXggZDIwNTk4MjkyYjgwZDNjZTBmNzIyZjE1OGE5NzVjZDRiM2Ji
MGU3NC4uYzVmMzMzN2RjZWRhMjZkZDI4MjUxOTJlOGNjMTVlZTJhYWIyN2EzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCkBAIC0yMDU1LDcgKzIwNTUsNyBAQCBJ
bnRQb2ludCBSZW5kZXJMYXllcjo6Y29udmVydEZyb21Db250YWluaW5nVmlld1RvU2Nyb2xsYmFy
KGNvbnN0IFNjcm9sbGJhciogc2NybwogCiBJbnRTaXplIFJlbmRlckxheWVyOjpjb250ZW50c1Np
emUoKSBjb25zdAogewotICAgIHJldHVybiBJbnRTaXplKGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIq
Pih0aGlzKS0+c2Nyb2xsV2lkdGgoKSwgY29uc3RfY2FzdDxSZW5kZXJMYXllcio+KHRoaXMpLT5z
Y3JvbGxIZWlnaHQoKSk7CisgICAgcmV0dXJuIEludFNpemUoc2Nyb2xsV2lkdGgoKSwgc2Nyb2xs
SGVpZ2h0KCkpOwogfQogCiBpbnQgUmVuZGVyTGF5ZXI6OnZpc2libGVIZWlnaHQoKSBjb25zdApA
QCAtMjIwOCw3ICsyMjA4LDcgQEAgYm9vbCBSZW5kZXJMYXllcjo6YWxsb3dzU2Nyb2xsaW5nKCkg
Y29uc3QKIAogdm9pZCBSZW5kZXJMYXllcjo6c2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29s
IGhhc1Njcm9sbGJhcikKIHsKLSAgICBpZiAoaGFzU2Nyb2xsYmFyID09IChtX2hCYXIgIT0gMCkp
CisgICAgaWYgKGhhc1Njcm9sbGJhciA9PSBoYXNIb3Jpem9udGFsU2Nyb2xsYmFyKCkpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChoYXNTY3JvbGxiYXIpCkBAIC0yMjMxLDcgKzIyMzEsNyBA
QCB2b2lkIFJlbmRlckxheWVyOjpzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGJvb2wgaGFzU2Ny
b2xsYmFyKQogCiB2b2lkIFJlbmRlckxheWVyOjpzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29s
IGhhc1Njcm9sbGJhcikKIHsKLSAgICBpZiAoaGFzU2Nyb2xsYmFyID09IChtX3ZCYXIgIT0gMCkp
CisgICAgaWYgKGhhc1Njcm9sbGJhciA9PSBoYXNWZXJ0aWNhbFNjcm9sbGJhcigpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoaGFzU2Nyb2xsYmFyKQpAQCAtMjM0NywxOSArMjM0NywxOSBA
QCB2b2lkIFJlbmRlckxheWVyOjpwb3NpdGlvbk92ZXJmbG93Q29udHJvbHMoY29uc3QgSW50U2l6
ZSYgb2Zmc2V0RnJvbUxheWVyKQogICAgICAgICBtX3Jlc2l6ZXItPnNldEZyYW1lUmVjdChyZXNp
emVyQ29ybmVyUmVjdCh0aGlzLCBib3JkZXJCb3gpKTsKIH0KIAotaW50IFJlbmRlckxheWVyOjpz
Y3JvbGxXaWR0aCgpCitpbnQgUmVuZGVyTGF5ZXI6OnNjcm9sbFdpZHRoKCkgY29uc3QKIHsKICAg
ICBBU1NFUlQocmVuZGVyQm94KCkpOwogICAgIGlmIChtX3Njcm9sbERpbWVuc2lvbnNEaXJ0eSkK
LSAgICAgICAgY29tcHV0ZVNjcm9sbERpbWVuc2lvbnMoKTsKKyAgICAgICAgY29uc3RfY2FzdDxS
ZW5kZXJMYXllcio+KHRoaXMpLT5jb21wdXRlU2Nyb2xsRGltZW5zaW9ucygpOwogICAgIHJldHVy
biBzbmFwU2l6ZVRvUGl4ZWwobV9zY3JvbGxTaXplLndpZHRoKCksIHJlbmRlckJveCgpLT5jbGll
bnRMZWZ0KCkpOwogfQogCi1pbnQgUmVuZGVyTGF5ZXI6OnNjcm9sbEhlaWdodCgpCitpbnQgUmVu
ZGVyTGF5ZXI6OnNjcm9sbEhlaWdodCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKHJlbmRlckJveCgp
KTsKICAgICBpZiAobV9zY3JvbGxEaW1lbnNpb25zRGlydHkpCi0gICAgICAgIGNvbXB1dGVTY3Jv
bGxEaW1lbnNpb25zKCk7CisgICAgICAgIGNvbnN0X2Nhc3Q8UmVuZGVyTGF5ZXIqPih0aGlzKS0+
Y29tcHV0ZVNjcm9sbERpbWVuc2lvbnMoKTsKICAgICByZXR1cm4gc25hcFNpemVUb1BpeGVsKG1f
c2Nyb2xsU2l6ZS5oZWlnaHQoKSwgcmVuZGVyQm94KCktPmNsaWVudFRvcCgpKTsKIH0KIApAQCAt
MjM5NSw3ICsyMzk1LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJMYXllcjo6b3ZlcmZsb3dSaWdodCgp
IGNvbnN0CiAgICAgcmV0dXJuIG92ZXJmbG93UmVjdC5tYXhYKCk7CiB9CiAKLXZvaWQgUmVuZGVy
TGF5ZXI6OmNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKGJvb2wqIG5lZWRIQmFyLCBib29sKiBuZWVk
VkJhcikKK3ZvaWQgUmVuZGVyTGF5ZXI6OmNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKCkKIHsKICAg
ICBSZW5kZXJCb3gqIGJveCA9IHJlbmRlckJveCgpOwogICAgIEFTU0VSVChib3gpOwpAQCAtMjQw
OSw1OCArMjQwOSw0NSBAQCB2b2lkIFJlbmRlckxheWVyOjpjb21wdXRlU2Nyb2xsRGltZW5zaW9u
cyhib29sKiBuZWVkSEJhciwgYm9vbCogbmVlZFZCYXIpCiAgICAgbV9zY3JvbGxTaXplLnNldEhl
aWdodChvdmVyZmxvd0JvdHRvbSgpIC0gb3ZlcmZsb3dUb3AoKSk7CiAKICAgICBzZXRTY3JvbGxP
cmlnaW4oSW50UG9pbnQoLW1fc2Nyb2xsT3ZlcmZsb3cud2lkdGgoKSwgLW1fc2Nyb2xsT3ZlcmZs
b3cuaGVpZ2h0KCkpKTsKK30KKworYm9vbCBSZW5kZXJMYXllcjo6aGFzSG9yaXpvbnRhbE92ZXJm
bG93KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoIW1fc2Nyb2xsRGltZW5zaW9uc0RpcnR5KTsKIAot
ICAgIGlmIChuZWVkSEJhcikKLSAgICAgICAgKm5lZWRIQmFyID0gc2Nyb2xsV2lkdGgoKSA+IGJv
eC0+cGl4ZWxTbmFwcGVkQ2xpZW50V2lkdGgoKTsKLSAgICBpZiAobmVlZFZCYXIpCi0gICAgICAg
ICpuZWVkVkJhciA9IHNjcm9sbEhlaWdodCgpID4gYm94LT5waXhlbFNuYXBwZWRDbGllbnRIZWln
aHQoKTsKKyAgICByZXR1cm4gc2Nyb2xsV2lkdGgoKSA+IHJlbmRlckJveCgpLT5waXhlbFNuYXBw
ZWRDbGllbnRXaWR0aCgpOwogfQogCi12b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZv
QWZ0ZXJMYXlvdXQoKQorYm9vbCBSZW5kZXJMYXllcjo6aGFzVmVydGljYWxPdmVyZmxvdygpIGNv
bnN0CiB7Ci0gICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKLSAgICBpZiAoIWJveCkK
LSAgICAgICAgcmV0dXJuOworICAgIEFTU0VSVCghbV9zY3JvbGxEaW1lbnNpb25zRGlydHkpOwog
Ci0gICAgbV9zY3JvbGxEaW1lbnNpb25zRGlydHkgPSB0cnVlOwotICAgIEludFNpemUgc2Nyb2xs
T2Zmc2V0T3JpZ2luYWwoc2Nyb2xsWE9mZnNldCgpLCBzY3JvbGxZT2Zmc2V0KCkpOworICAgIHJl
dHVybiBzY3JvbGxIZWlnaHQoKSA+IHJlbmRlckJveCgpLT5waXhlbFNuYXBwZWRDbGllbnRIZWln
aHQoKTsKK30KIAotICAgIGJvb2wgaG9yaXpvbnRhbE92ZXJmbG93LCB2ZXJ0aWNhbE92ZXJmbG93
OwotICAgIGNvbXB1dGVTY3JvbGxEaW1lbnNpb25zKCZob3Jpem9udGFsT3ZlcmZsb3csICZ2ZXJ0
aWNhbE92ZXJmbG93KTsKK3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlckxh
eW91dCgpCit7CisgICAgUmVuZGVyQm94KiBib3ggPSByZW5kZXJCb3goKTsKKyAgICBBU1NFUlQo
Ym94KTsKIAotICAgIGlmIChib3gtPnN0eWxlKCktPm92ZXJmbG93WCgpICE9IE9NQVJRVUVFKSB7
Ci0gICAgICAgIC8vIExheW91dCBtYXkgY2F1c2UgdXMgdG8gYmUgaW4gYW4gaW52YWxpZCBzY3Jv
bGwgcG9zaXRpb24uICBJbiB0aGlzIGNhc2Ugd2UgbmVlZAotICAgICAgICAvLyB0byBwdWxsIG91
ciBzY3JvbGwgb2Zmc2V0cyBiYWNrIHRvIHRoZSBtYXggKG9yIHB1c2ggdGhlbSB1cCB0byB0aGUg
bWluKS4KLSAgICAgICAgaW50IG5ld1ggPSBtYXgoMCwgbWluPGludD4oc2Nyb2xsWE9mZnNldCgp
LCBzY3JvbGxXaWR0aCgpIC0gYm94LT5jbGllbnRXaWR0aCgpKSk7Ci0gICAgICAgIGludCBuZXdZ
ID0gbWF4KDAsIG1pbjxpbnQ+KHNjcm9sbFlPZmZzZXQoKSwgc2Nyb2xsSGVpZ2h0KCkgLSBib3gt
PmNsaWVudEhlaWdodCgpKSk7Ci0gICAgICAgIGlmIChuZXdYICE9IHNjcm9sbFhPZmZzZXQoKSB8
fCBuZXdZICE9IHNjcm9sbFlPZmZzZXQoKSkKLSAgICAgICAgICAgIHNjcm9sbFRvT2Zmc2V0KG5l
d1gsIG5ld1kpOwotICAgIH0KKyAgICBib29sIGhhc0hvcml6b250YWxPdmVyZmxvdyA9IHRoaXMt
Pmhhc0hvcml6b250YWxPdmVyZmxvdygpOworICAgIGJvb2wgaGFzVmVydGljYWxPdmVyZmxvdyA9
IHRoaXMtPmhhc1ZlcnRpY2FsT3ZlcmZsb3coKTsKIAotICAgIGJvb2wgaGF2ZUhvcml6b250YWxC
YXIgPSBtX2hCYXI7Ci0gICAgYm9vbCBoYXZlVmVydGljYWxCYXIgPSBtX3ZCYXI7Ci0gICAgCiAg
ICAgLy8gb3ZlcmZsb3c6c2Nyb2xsIHNob3VsZCBqdXN0IGVuYWJsZS9kaXNhYmxlLgogICAgIGlm
IChtX2hCYXIgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+b3ZlcmZsb3dYKCkgPT0gT1NDUk9MTCkK
LSAgICAgICAgbV9oQmFyLT5zZXRFbmFibGVkKGhvcml6b250YWxPdmVyZmxvdyk7CisgICAgICAg
IG1faEJhci0+c2V0RW5hYmxlZChoYXNIb3Jpem9udGFsT3ZlcmZsb3cpOwogICAgIGlmIChtX3ZC
YXIgJiYgcmVuZGVyZXIoKS0+c3R5bGUoKS0+b3ZlcmZsb3dZKCkgPT0gT1NDUk9MTCkKLSAgICAg
ICAgbV92QmFyLT5zZXRFbmFibGVkKHZlcnRpY2FsT3ZlcmZsb3cpOworICAgICAgICBtX3ZCYXIt
PnNldEVuYWJsZWQoaGFzVmVydGljYWxPdmVyZmxvdyk7CiAKLSAgICAvLyBBIGR5bmFtaWMgY2hh
bmdlIGZyb20gYSBzY3JvbGxpbmcgb3ZlcmZsb3cgdG8gb3ZlcmZsb3c6aGlkZGVuIG1lYW5zIHdl
IG5lZWQgdG8gZ2V0IHJpZCBvZiBhbnkKLSAgICAvLyBzY3JvbGxiYXJzIHRoYXQgbWF5IGJlIHBy
ZXNlbnQuCi0gICAgaWYgKHJlbmRlcmVyKCktPnN0eWxlKCktPm92ZXJmbG93WCgpID09IE9ISURE
RU4gJiYgaGF2ZUhvcml6b250YWxCYXIpCi0gICAgICAgIHNldEhhc0hvcml6b250YWxTY3JvbGxi
YXIoZmFsc2UpOwotICAgIGlmIChyZW5kZXJlcigpLT5zdHlsZSgpLT5vdmVyZmxvd1koKSA9PSBP
SElEREVOICYmIGhhdmVWZXJ0aWNhbEJhcikKLSAgICAgICAgc2V0SGFzVmVydGljYWxTY3JvbGxi
YXIoZmFsc2UpOwotICAgIAogICAgIC8vIG92ZXJmbG93OmF1dG8gbWF5IG5lZWQgdG8gbGF5IG91
dCBhZ2FpbiBpZiBzY3JvbGxiYXJzIGdvdCBhZGRlZC9yZW1vdmVkLgotICAgIGJvb2wgc2Nyb2xs
YmFyc0NoYW5nZWQgPSAoYm94LT5oYXNBdXRvSG9yaXpvbnRhbFNjcm9sbGJhcigpICYmIGhhdmVI
b3Jpem9udGFsQmFyICE9IGhvcml6b250YWxPdmVyZmxvdykgfHwgCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChib3gtPmhhc0F1dG9WZXJ0aWNhbFNjcm9sbGJhcigpICYmIGhhdmVWZXJ0
aWNhbEJhciAhPSB2ZXJ0aWNhbE92ZXJmbG93KTsgICAgCi0gICAgaWYgKHNjcm9sbGJhcnNDaGFu
Z2VkKSB7CisgICAgYm9vbCBhdXRvSG9yaXpvbnRhbFNjcm9sbEJhckNoYW5nZWQgPSBib3gtPmhh
c0F1dG9Ib3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgKGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSAh
PSBoYXNIb3Jpem9udGFsT3ZlcmZsb3cpOworICAgIGJvb2wgYXV0b1ZlcnRpY2FsU2Nyb2xsQmFy
Q2hhbmdlZCA9IGJveC0+aGFzQXV0b1ZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgKGhhc1ZlcnRpY2Fs
U2Nyb2xsYmFyKCkgIT0gaGFzVmVydGljYWxPdmVyZmxvdyk7CisKKyAgICBpZiAoYXV0b0hvcml6
b250YWxTY3JvbGxCYXJDaGFuZ2VkIHx8IGF1dG9WZXJ0aWNhbFNjcm9sbEJhckNoYW5nZWQpIHsK
ICAgICAgICAgaWYgKGJveC0+aGFzQXV0b0hvcml6b250YWxTY3JvbGxiYXIoKSkKLSAgICAgICAg
ICAgIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoaG9yaXpvbnRhbE92ZXJmbG93KTsKKyAgICAg
ICAgICAgIHNldEhhc0hvcml6b250YWxTY3JvbGxiYXIoaGFzSG9yaXpvbnRhbE92ZXJmbG93KTsK
ICAgICAgICAgaWYgKGJveC0+aGFzQXV0b1ZlcnRpY2FsU2Nyb2xsYmFyKCkpCi0gICAgICAgICAg
ICBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcih2ZXJ0aWNhbE92ZXJmbG93KTsKKyAgICAgICAgICAg
IHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGhhc1ZlcnRpY2FsT3ZlcmZsb3cpOwogCiAjaWYgRU5B
QkxFKERBU0hCT0FSRF9TVVBQT1JUKQogICAgICAgICAvLyBGb3JjZSBhbiB1cGRhdGUgc2luY2Ug
d2Uga25vdyB0aGUgc2Nyb2xsYmFycyBoYXZlIGNoYW5nZWQgdGhpbmdzLgpAQCAtMjQ3Nyw4ICsy
NDY0LDcgQEAgdm9pZCBSZW5kZXJMYXllcjo6dXBkYXRlU2Nyb2xsSW5mb0FmdGVyTGF5b3V0KCkK
ICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5zZXROZWVkc0xheW91dCh0cnVlLCBNYXJrT25s
eVRoaXMpOwogICAgICAgICAgICAgICAgIGlmIChyZW5kZXJlcigpLT5pc1JlbmRlckJsb2NrKCkp
IHsKICAgICAgICAgICAgICAgICAgICAgUmVuZGVyQmxvY2sqIGJsb2NrID0gdG9SZW5kZXJCbG9j
ayhyZW5kZXJlcigpKTsKLSAgICAgICAgICAgICAgICAgICAgYmxvY2stPnNjcm9sbGJhcnNDaGFu
Z2VkKGJveC0+aGFzQXV0b0hvcml6b250YWxTY3JvbGxiYXIoKSAmJiBoYXZlSG9yaXpvbnRhbEJh
ciAhPSBob3Jpem9udGFsT3ZlcmZsb3csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBib3gtPmhhc0F1dG9WZXJ0aWNhbFNjcm9sbGJhcigpICYmIGhhdmVWZXJ0
aWNhbEJhciAhPSB2ZXJ0aWNhbE92ZXJmbG93KTsKKyAgICAgICAgICAgICAgICAgICAgYmxvY2st
PnNjcm9sbGJhcnNDaGFuZ2VkKGF1dG9Ib3Jpem9udGFsU2Nyb2xsQmFyQ2hhbmdlZCwgYXV0b1Zl
cnRpY2FsU2Nyb2xsQmFyQ2hhbmdlZCk7CiAgICAgICAgICAgICAgICAgICAgIGJsb2NrLT5sYXlv
dXRCbG9jayh0cnVlKTsgLy8gRklYTUU6IE5lZWQgdG8gaGFuZGxlIHBvc2l0aW9uZWQgZmxvYXRz
IHRyaWdnZXJpbmcgZXh0cmEgcmVsYXlvdXRzLgogICAgICAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgICAgICByZW5kZXJlcigpLT5sYXlvdXQoKTsKQEAgLTI0ODYsMTIgKzI0NzIs
NiBAQCB2b2lkIFJlbmRlckxheWVyOjp1cGRhdGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIAotICAgIC8vIElmIG92ZXJmbG93OnNj
cm9sbCBpcyB0dXJuZWQgaW50byBvdmVyZmxvdzphdXRvIGEgYmFyIG1pZ2h0IHN0aWxsIGJlIGRp
c2FibGVkIChCdWcgMTE5ODUpLgotICAgIGlmIChtX2hCYXIgJiYgYm94LT5oYXNBdXRvSG9yaXpv
bnRhbFNjcm9sbGJhcigpKQotICAgICAgICBtX2hCYXItPnNldEVuYWJsZWQodHJ1ZSk7Ci0gICAg
aWYgKG1fdkJhciAmJiBib3gtPmhhc0F1dG9WZXJ0aWNhbFNjcm9sbGJhcigpKQotICAgICAgICBt
X3ZCYXItPnNldEVuYWJsZWQodHJ1ZSk7CiAKICAgICAvLyBTZXQgdXAgdGhlIHJhbmdlIChhbmQg
cGFnZSBzdGVwL2xpbmUgc3RlcCkuCiAgICAgaWYgKG1faEJhcikgewpAQCAtMjUwNiw2ICsyNDg2
LDI5IEBAIHZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91dCgpCiAg
ICAgICAgIG1fdkJhci0+c2V0U3RlcHMoU2Nyb2xsYmFyOjpwaXhlbHNQZXJMaW5lU3RlcCgpLCBw
YWdlU3RlcCk7CiAgICAgICAgIG1fdkJhci0+c2V0UHJvcG9ydGlvbihjbGllbnRIZWlnaHQsIG1f
c2Nyb2xsU2l6ZS5oZWlnaHQoKSk7CiAgICAgfQorfQorCit2b2lkIFJlbmRlckxheWVyOjp1cGRh
dGVTY3JvbGxJbmZvQWZ0ZXJMYXlvdXQoKQoreworICAgIFJlbmRlckJveCogYm94ID0gcmVuZGVy
Qm94KCk7CisgICAgaWYgKCFib3gpCisgICAgICAgIHJldHVybjsKKworICAgIG1fc2Nyb2xsRGlt
ZW5zaW9uc0RpcnR5ID0gdHJ1ZTsKKyAgICBJbnRTaXplIHNjcm9sbE9mZnNldE9yaWdpbmFsKHNj
cm9sbFhPZmZzZXQoKSwgc2Nyb2xsWU9mZnNldCgpKTsKKworICAgIGNvbXB1dGVTY3JvbGxEaW1l
bnNpb25zKCk7CisKKyAgICBpZiAoYm94LT5zdHlsZSgpLT5vdmVyZmxvd1goKSAhPSBPTUFSUVVF
RSkgeworICAgICAgICAvLyBMYXlvdXQgbWF5IGNhdXNlIHVzIHRvIGJlIGF0IGFuIGludmFsaWQg
c2Nyb2xsIHBvc2l0aW9uLiBJbiB0aGlzIGNhc2Ugd2UgbmVlZAorICAgICAgICAvLyB0byBwdWxs
IG91ciBzY3JvbGwgb2Zmc2V0cyBiYWNrIHRvIHRoZSBtYXggKG9yIHB1c2ggdGhlbSB1cCB0byB0
aGUgbWluKS4KKyAgICAgICAgaW50IG5ld1ggPSBtYXgoMCwgbWluPGludD4oc2Nyb2xsWE9mZnNl
dCgpLCBzY3JvbGxXaWR0aCgpIC0gYm94LT5jbGllbnRXaWR0aCgpKSk7CisgICAgICAgIGludCBu
ZXdZID0gbWF4KDAsIG1pbjxpbnQ+KHNjcm9sbFlPZmZzZXQoKSwgc2Nyb2xsSGVpZ2h0KCkgLSBi
b3gtPmNsaWVudEhlaWdodCgpKSk7CisgICAgICAgIGlmIChuZXdYICE9IHNjcm9sbFhPZmZzZXQo
KSB8fCBuZXdZICE9IHNjcm9sbFlPZmZzZXQoKSkKKyAgICAgICAgICAgIHNjcm9sbFRvT2Zmc2V0
KG5ld1gsIG5ld1kpOworICAgIH0KKworICAgIHVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCgp
OwogCiAgICAgaWYgKHNjcm9sbE9mZnNldE9yaWdpbmFsICE9IHNjcm9sbE9mZnNldCgpKQogICAg
ICAgICBzY3JvbGxUb09mZnNldFdpdGhvdXRBbmltYXRpb24oSW50UG9pbnQoc2Nyb2xsWE9mZnNl
dCgpLCBzY3JvbGxZT2Zmc2V0KCkpKTsKQEAgLTQ2MDMsNiArNDYwNiwzNyBAQCBib29sIFJlbmRl
ckxheWVyOjppc1NlbGZQYWludGluZ0xheWVyKCkgY29uc3QKICAgICAgICAgfHwgcmVuZGVyZXIo
KS0+aXNSZW5kZXJJRnJhbWUoKTsKIH0KIAorc3RhdGljIGJvb2wgb3ZlcmZsb3dDYW5IYXZlQVNj
cm9sbGJhcihFT3ZlcmZsb3cgb3ZlcmZsb3cpCit7CisgICAgcmV0dXJuIG92ZXJmbG93ID09IE9B
VVRPIHx8IG92ZXJmbG93ID09IE9TQ1JPTEwgfHwgb3ZlcmZsb3cgPT0gT09WRVJMQVk7Cit9CisK
K3ZvaWQgUmVuZGVyTGF5ZXI6OnVwZGF0ZVNjcm9sbGJhcnNBZnRlclN0eWxlQ2hhbmdlKGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSkKK3sKKyAgICAvLyBPdmVyZmxvdyBhcmUgYSBib3ggY29u
Y2VwdC4KKyAgICBpZiAoIXJlbmRlckJveCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBFT3Zl
cmZsb3cgb3ZlcmZsb3dYID0gcmVuZGVyQm94KCktPnN0eWxlKCktPm92ZXJmbG93WCgpOworICAg
IEVPdmVyZmxvdyBvdmVyZmxvd1kgPSByZW5kZXJCb3goKS0+c3R5bGUoKS0+b3ZlcmZsb3dZKCk7
CisgICAgaWYgKGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSAmJiAhb3ZlcmZsb3dDYW5IYXZlQVNj
cm9sbGJhcihvdmVyZmxvd1gpKQorICAgICAgICBzZXRIYXNIb3Jpem9udGFsU2Nyb2xsYmFyKGZh
bHNlKTsKKyAgICBpZiAoaGFzVmVydGljYWxTY3JvbGxiYXIoKSAmJiAhb3ZlcmZsb3dDYW5IYXZl
QVNjcm9sbGJhcihvdmVyZmxvd1kpKQorICAgICAgICBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihm
YWxzZSk7CisKKyAgICAvLyBXaXRoIG92ZXJmbG93OiBzY3JvbGwsIHNjcm9sbGJhcnMgYXJlIGFs
d2F5cyB2aXNpYmxlIGJ1dCBtYXkgYmUgZGlzYWJsZWQuCisgICAgLy8gV2hlbiBzd2l0Y2hpbmcg
dG8gYW5vdGhlciB2YWx1ZSwgd2UgbmVlZCB0byByZS1lbmFibGUgdGhlbSAoc2VlIGJ1ZyAxMTk4
NSkuCisgICAgaWYgKGhhc0hvcml6b250YWxTY3JvbGxiYXIoKSAmJiBvbGRTdHlsZS0+b3ZlcmZs
b3dYKCkgPT0gT1NDUk9MTCAmJiBvdmVyZmxvd1ggIT0gT1NDUk9MTCkgeworICAgICAgICBBU1NF
UlQob3ZlcmZsb3dDYW5IYXZlQVNjcm9sbGJhcihvdmVyZmxvd1gpKTsKKyAgICAgICAgbV9oQmFy
LT5zZXRFbmFibGVkKHRydWUpOworICAgIH0KKworICAgIGlmIChoYXNWZXJ0aWNhbFNjcm9sbGJh
cigpICYmIG9sZFN0eWxlLT5vdmVyZmxvd1koKSA9PSBPU0NST0xMICYmIG92ZXJmbG93WSAhPSBP
U0NST0xMKSB7CisgICAgICAgIEFTU0VSVChvdmVyZmxvd0NhbkhhdmVBU2Nyb2xsYmFyKG92ZXJm
bG93WSkpOworICAgICAgICBtX3ZCYXItPnNldEVuYWJsZWQodHJ1ZSk7CisgICAgfQorfQorCiB2
b2lkIFJlbmRlckxheWVyOjpzdHlsZUNoYW5nZWQoU3R5bGVEaWZmZXJlbmNlLCBjb25zdCBSZW5k
ZXJTdHlsZSogb2xkU3R5bGUpCiB7CiAgICAgYm9vbCBpc05vcm1hbEZsb3dPbmx5ID0gc2hvdWxk
QmVOb3JtYWxGbG93T25seSgpOwpAQCAtNDYyNCw2ICs0NjU4LDggQEAgdm9pZCBSZW5kZXJMYXll
cjo6c3R5bGVDaGFuZ2VkKFN0eWxlRGlmZmVyZW5jZSwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKQogICAgICAgICBtX21hcnF1ZWUgPSAwOwogICAgIH0KICAgICAKKyAgICB1cGRhdGVTY3Jv
bGxiYXJzQWZ0ZXJTdHlsZUNoYW5nZShvbGRTdHlsZSk7CisKICAgICBpZiAoIWhhc1JlZmxlY3Rp
b24oKSAmJiBtX3JlZmxlY3Rpb24pCiAgICAgICAgIHJlbW92ZVJlZmxlY3Rpb24oKTsKICAgICBl
bHNlIGlmIChoYXNSZWZsZWN0aW9uKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyLmgKaW5kZXggMjFjM2FkNmJhODVjNzlhY2VhNDFkZGIyOGM3N2I3NzQ4ZWRkMmIyNC4uMDVi
ZGE4M2VlYjM4NTkxNDkyNDEzNmY5YjIyOWI2OTk1MDE0OTVmZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckxheWVyLmgKQEAgLTI4MCw4ICsyODAsOCBAQCBwdWJsaWM6CiAKICAgICBM
YXlvdXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBMYXlvdXRSZWN0KGxvY2F0aW9uKCksIHNp
emUoKSk7IH0KIAotICAgIGludCBzY3JvbGxXaWR0aCgpOwotICAgIGludCBzY3JvbGxIZWlnaHQo
KTsKKyAgICBpbnQgc2Nyb2xsV2lkdGgoKSBjb25zdDsKKyAgICBpbnQgc2Nyb2xsSGVpZ2h0KCkg
Y29uc3Q7CiAKICAgICB2b2lkIHBhblNjcm9sbEZyb21Qb2ludChjb25zdCBMYXlvdXRQb2ludCYp
OwogCkBAIC0zMTQsNiArMzE0LDkgQEAgcHVibGljOgogICAgIFBhc3NSZWZQdHI8U2Nyb2xsYmFy
PiBjcmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24pOwogICAgIHZvaWQgZGVzdHJv
eVNjcm9sbGJhcihTY3JvbGxiYXJPcmllbnRhdGlvbik7CiAKKyAgICBib29sIGhhc0hvcml6b250
YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBob3Jpem9udGFsU2Nyb2xsYmFyKCk7IH0KKyAg
ICBib29sIGhhc1ZlcnRpY2FsU2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gdmVydGljYWxTY3Jv
bGxiYXIoKTsgfQorCiAgICAgLy8gU2Nyb2xsYWJsZUFyZWEgb3ZlcnJpZGVzCiAgICAgdmlydHVh
bCBTY3JvbGxiYXIqIGhvcml6b250YWxTY3JvbGxiYXIoKSBjb25zdCB7IHJldHVybiBtX2hCYXIu
Z2V0KCk7IH0KICAgICB2aXJ0dWFsIFNjcm9sbGJhciogdmVydGljYWxTY3JvbGxiYXIoKSBjb25z
dCB7IHJldHVybiBtX3ZCYXIuZ2V0KCk7IH0KQEAgLTU4NSw2ICs1ODgsOSBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBzaG91bGRSZXBhaW50QWZ0ZXJMYXlvdXQoKSBjb25zdDsKIAorICAgIHZvaWQg
dXBkYXRlU2Nyb2xsYmFyc0FmdGVyU3R5bGVDaGFuZ2UoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlKTsKKyAgICB2b2lkIHVwZGF0ZVNjcm9sbGJhcnNBZnRlckxheW91dCgpOworCiAgICAgZnJp
ZW5kIEludFNpemUgUmVuZGVyQm94OjpzY3JvbGxlZENvbnRlbnRPZmZzZXQoKSBjb25zdDsKICAg
ICBJbnRTaXplIHNjcm9sbGVkQ29udGVudE9mZnNldCgpIGNvbnN0IHsgcmV0dXJuIHNjcm9sbE9m
ZnNldCgpICsgbV9zY3JvbGxPdmVyZmxvdzsgfQogCkBAIC02NDksNyArNjU1LDkgQEAgcHJpdmF0
ZToKICAgICAKICAgICBib29sIGhpdFRlc3RDb250ZW50cyhjb25zdCBIaXRUZXN0UmVxdWVzdCYs
IEhpdFRlc3RSZXN1bHQmLCBjb25zdCBMYXlvdXRSZWN0JiBsYXllckJvdW5kcywgY29uc3QgTGF5
b3V0UG9pbnQmIGhpdFRlc3RQb2ludCwgSGl0VGVzdEZpbHRlcikgY29uc3Q7CiAgICAgCi0gICAg
dm9pZCBjb21wdXRlU2Nyb2xsRGltZW5zaW9ucyhib29sKiBuZWVkSEJhciA9IDAsIGJvb2wqIG5l
ZWRWQmFyID0gMCk7CisgICAgdm9pZCBjb21wdXRlU2Nyb2xsRGltZW5zaW9ucygpOworICAgIGJv
b2wgaGFzSG9yaXpvbnRhbE92ZXJmbG93KCkgY29uc3Q7CisgICAgYm9vbCBoYXNWZXJ0aWNhbE92
ZXJmbG93KCkgY29uc3Q7CiAKICAgICBib29sIHNob3VsZEJlTm9ybWFsRmxvd09ubHkoKSBjb25z
dDsgCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>