<?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>85965</bug_id>
          
          <creation_ts>2012-05-09 01:45:47 -0700</creation_ts>
          <short_desc>Factor HitTestPoint out of HitTestResult</short_desc>
          <delta_ts>2012-05-15 10:40:55 -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>Unspecified</rep_platform>
          <op_sys>Unspecified</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>85792</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Allan Sandfeld Jensen">allan.jensen</reporter>
          <assigned_to name="Allan Sandfeld Jensen">allan.jensen</assigned_to>
          <cc>darin</cc>
    
    <cc>eae</cc>
    
    <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>kenneth</cc>
    
    <cc>leviw</cc>
    
    <cc>mjs</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>619272</commentid>
    <comment_count>0</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-05-09 01:45:47 -0700</bug_when>
    <thetext>In preparation for handling transformations on area-based hit-testing (bug #85792), we need to factor test-point and test-area out of HitTestResult so it can be transformed independently.

To maintain the current API as closely as possible HitTestResult can inherit from HitTestPoint, representing the original untransformed hitTestPoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619276</commentid>
    <comment_count>1</comment_count>
      <attachid>140886</attachid>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-05-09 01:54:51 -0700</bug_when>
    <thetext>Created attachment 140886
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619283</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-05-09 02:00:00 -0700</bug_when>
    <thetext>I&apos;m not sure I really understand where you&apos;re going here. :)  The idea of a &quot;rect-based&quot; point with possible padding is a bit odd to me.  Do you plan to have a second subclass of HitTestPoint?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619298</commentid>
    <comment_count>3</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-05-09 02:15:34 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I&apos;m not sure I really understand where you&apos;re going here. :)  The idea of a &quot;rect-based&quot; point with possible padding is a bit odd to me.  Do you plan to have a second subclass of HitTestPoint?

No, the point can be seen in bug #85792.  The HitTestPoint class, will be used to replace the LayoutPoint argument given to all hit-test classes (usually called hitTestPoint or pointInContainer). So that hit-testing can recurse using the transformed area, and not just the transformed point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619386</commentid>
    <comment_count>4</comment_count>
      <attachid>140886</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-05-09 04:56:27 -0700</bug_when>
    <thetext>Comment on attachment 140886
Patch

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

Ping smfr or hyatt on IRC about reviewing this. Some comments (on a bus but can look more soon)

- HitTestPoint + padding = HitTestTarget? :)

&gt; Source/WebCore/rendering/HitTestResult.cpp:181
&gt; +    m_shadowContentFilterPolicy  = other.shadowContentFilterPolicy();

space

&gt; Source/WebCore/rendering/HitTestResult.h:74
&gt; +private:

make this protected , and make HitTestResult access it directly (it makes the patch a bit smaller)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>619395</commentid>
    <comment_count>5</comment_count>
    <who name="Allan Sandfeld Jensen">allan.jensen</who>
    <bug_when>2012-05-09 05:12:06 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 140886 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=140886&amp;action=review
&gt; 
&gt; Ping smfr or hyatt on IRC about reviewing this. Some comments (on a bus but can look more soon)
&gt; 
&gt; - HitTestPoint + padding = HitTestTarget? :)
&gt; 
&gt; &gt; Source/WebCore/rendering/HitTestResult.cpp:181
&gt; &gt; +    m_shadowContentFilterPolicy  = other.shadowContentFilterPolicy();
&gt; 
&gt; space
&gt; 
&gt; &gt; Source/WebCore/rendering/HitTestResult.h:74
&gt; &gt; +private:
&gt; 
&gt; make this protected , and make HitTestResult access it directly (it makes the patch a bit smaller)?

Good point, but I was hoping to separate the classes better at a later time, and using accessors instead of internals would help with that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624250</commentid>
    <comment_count>6</comment_count>
      <attachid>140886</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 10:40:50 -0700</bug_when>
    <thetext>Comment on attachment 140886
Patch

Clearing flags on attachment: 140886

Committed r117091: &lt;http://trac.webkit.org/changeset/117091&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>624251</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-15 10:40:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>140886</attachid>
            <date>2012-05-09 01:54:51 -0700</date>
            <delta_ts>2012-05-15 10:40:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85965-20120509105455.patch</filename>
            <type>text/plain</type>
            <size>19798</size>
            <attacher name="Allan Sandfeld Jensen">allan.jensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE2Mjc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmE2N2QxNzlkNTU2MDI5
NGY5YjU3NTI3ODg5MTMzZDI1NzMxZGRlNi4uZDk5MjYyMjFhOTNhYzMwNzE4N2M4YjI5MWU2NGFi
ZTMyMTk2NTUwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDEyLTA1LTA5ICBBbGxh
biBTYW5kZmVsZCBKZW5zZW4gIDxhbGxhbi5qZW5zZW5Abm9raWEuY29tPgorCisgICAgICAgIEZh
Y3RvciBIaXRUZXN0UG9pbnQgb3V0IG9mIEhpdFRlc3RSZXN1bHQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04NTk2NQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIHByZXBhcmF0aW9uIGZvciBoYW5kbGlu
ZyB0cmFuc2Zvcm1hdGlvbnMgb24gYXJlYS1iYXNlZCBoaXQtdGVzdGluZywgCisgICAgICAgIHdl
IG5lZWQgdG8gZmFjdG9yIHRlc3QtcG9pbnQgYW5kIHRlc3QtYXJlYSBvdXQgb2YgSGl0VGVzdFJl
c3VsdCBzbyB0aGF0CisgICAgICAgIGl0IGNhbiBiZSB0cmFuc2Zvcm1lZCBpbmRlcGVuZGVudGx5
LgorCisgICAgICAgIFRvIG1haW50YWluIHRoZSBjdXJyZW50IEFQSSBhcyBjbG9zZWx5IGFzIHBv
c3NpYmxlIEhpdFRlc3RSZXN1bHQgbm93CisgICAgICAgIGluaGVyaXQgZnJvbSBIaXRUZXN0UG9p
bnQsIHJlcHJlc2VudGluZyB0aGUgb3JpZ2luYWwgdW50cmFuc2Zvcm1lZAorICAgICAgICBoaXRU
ZXN0UG9pbnQuCisKKyAgICAgICAgTm8gY2hhbmdlIGluIGZ1bmN0aW9uYWxpdHkuIE5vIG5ldyB0
ZXN0cy4gCisKKyAgICAgICAgKiByZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIaXRUZXN0UG9pbnQ6OkhpdFRlc3RQb2ludCk6CisgICAgICAgIChXZWJDb3Jl
OjpIaXRUZXN0UG9pbnQ6On5IaXRUZXN0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVz
dFBvaW50OjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFBvaW50OjpyZWN0
Rm9yUG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3Vs
dCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UmVzdWx0OjpvcGVyYXRvcj0pOgorICAgICAg
ICAoV2ViQ29yZTo6SGl0VGVzdFJlc3VsdDo6aXNTZWxlY3RlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpIaXRUZXN0UmVzdWx0OjpzcGVsbGluZ1Rvb2xUaXApOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFJlc3VsdDo6cmVwbGFjZWRTdHJpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9IaXRUZXN0
UmVzdWx0Lmg6CisgICAgICAgIChIaXRUZXN0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SGl0
VGVzdFBvaW50Ojpwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UG9pbnQ6OnJvdW5k
ZWRQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UG9pbnQ6OnNldFBvaW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkhpdFRlc3RQb2ludDo6aXNSZWN0QmFzZWRUZXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkhpdFRlc3RQb2ludDo6dG9wUGFkZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpI
aXRUZXN0UG9pbnQ6OnJpZ2h0UGFkZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UG9p
bnQ6OmJvdHRvbVBhZGRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SGl0VGVzdFBvaW50OjpsZWZ0
UGFkZGluZyk6CisgICAgICAgIChIaXRUZXN0UmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6Okhp
dFRlc3RSZXN1bHQ6OmhpdFRlc3RQb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpIaXRUZXN0UG9p
bnQ6OnJlY3RGb3JQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyOjpoaXRUZXN0TGF5ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyTGF5ZXI6OmhpdFRlc3RMaXN0KToKKwogMjAxMi0wNS0wNiAgTU9SSVRB
IEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KIAogICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUyNjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9I
aXRUZXN0UmVzdWx0LmNwcAppbmRleCBjMTlmMTIyMmY5ZjlmMTU2ZWUyYTljZjg1ZjIxYzVlOTVk
NjBlMTYxLi42NmUxZGE5NmI5ODE1NzVhYzEyMDk3ODEyZTM1MjVkMzBhMjU3ZTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvSGl0VGVzdFJlc3VsdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuY3BwCkBAIC0xLDUgKzEsNiBAQAog
LyoKICAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwOCwgMjAxMSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29m
dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTQ3LDUzICs0
OCwxMDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVz
OwogCi1IaXRUZXN0UmVzdWx0OjpIaXRUZXN0UmVzdWx0KCkKLSAgICA6IG1faXNPdmVyV2lkZ2V0
KGZhbHNlKQotICAgICwgbV9pc1JlY3RCYXNlZChmYWxzZSkKLSAgICAsIG1fdG9wUGFkZGluZygw
KQorSGl0VGVzdFBvaW50OjpIaXRUZXN0UG9pbnQoKQorICAgIDogbV90b3BQYWRkaW5nKDApCiAg
ICAgLCBtX3JpZ2h0UGFkZGluZygwKQogICAgICwgbV9ib3R0b21QYWRkaW5nKDApCiAgICAgLCBt
X2xlZnRQYWRkaW5nKDApCi0gICAgLCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koRG9Ob3RB
bGxvd1NoYWRvd0NvbnRlbnQpCi0gICAgLCBtX3JlZ2lvbigwKQorICAgICwgbV9pc1JlY3RCYXNl
ZChmYWxzZSkKIHsKIH0KIAotSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlv
dXRQb2ludCYgcG9pbnQpCitIaXRUZXN0UG9pbnQ6OkhpdFRlc3RQb2ludChjb25zdCBMYXlvdXRQ
b2ludCYgcG9pbnQpCiAgICAgOiBtX3BvaW50KHBvaW50KQotICAgICwgbV9pc092ZXJXaWRnZXQo
ZmFsc2UpCi0gICAgLCBtX2lzUmVjdEJhc2VkKGZhbHNlKQogICAgICwgbV90b3BQYWRkaW5nKDAp
CiAgICAgLCBtX3JpZ2h0UGFkZGluZygwKQogICAgICwgbV9ib3R0b21QYWRkaW5nKDApCiAgICAg
LCBtX2xlZnRQYWRkaW5nKDApCi0gICAgLCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koRG9O
b3RBbGxvd1NoYWRvd0NvbnRlbnQpCi0gICAgLCBtX3JlZ2lvbigwKQorICAgICwgbV9pc1JlY3RC
YXNlZChmYWxzZSkKIHsKIH0KIAotSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBM
YXlvdXRQb2ludCYgY2VudGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJp
Z2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcs
IFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgYWxsb3dTaGFkb3dDb250ZW50KQorSGl0VGVzdFBv
aW50OjpIaXRUZXN0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25l
ZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKQogICAgIDogbV9wb2ludChjZW50ZXJQb2ludCkKLSAg
ICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQogICAgICwgbV90b3BQYWRkaW5nKHRvcFBhZGRpbmcp
CiAgICAgLCBtX3JpZ2h0UGFkZGluZyhyaWdodFBhZGRpbmcpCiAgICAgLCBtX2JvdHRvbVBhZGRp
bmcoYm90dG9tUGFkZGluZykKICAgICAsIG1fbGVmdFBhZGRpbmcobGVmdFBhZGRpbmcpCi0gICAg
LCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koYWxsb3dTaGFkb3dDb250ZW50KQotICAgICwg
bV9yZWdpb24oMCkKIHsKICAgICAvLyBJZiBhbGwgcGFkZGluZyB2YWx1ZXMgcGFzc2VkIGluIGFy
ZSB6ZXJvIHRoZW4gaXQgaXMgbm90IGEgcmVjdCBiYXNlZCBoaXQgdGVzdC4KICAgICBtX2lzUmVj
dEJhc2VkID0gdG9wUGFkZGluZyB8fCByaWdodFBhZGRpbmcgfHwgYm90dG9tUGFkZGluZyB8fCBs
ZWZ0UGFkZGluZzsKK30KKworSGl0VGVzdFBvaW50OjpIaXRUZXN0UG9pbnQoY29uc3QgSGl0VGVz
dFBvaW50JiBvdGhlcikKKyAgICA6IG1fcG9pbnQob3RoZXIubV9wb2ludCkKKyAgICAsIG1fdG9w
UGFkZGluZyhvdGhlci5tX3RvcFBhZGRpbmcpCisgICAgLCBtX3JpZ2h0UGFkZGluZyhvdGhlci5t
X3JpZ2h0UGFkZGluZykKKyAgICAsIG1fYm90dG9tUGFkZGluZyhvdGhlci5tX2JvdHRvbVBhZGRp
bmcpCisgICAgLCBtX2xlZnRQYWRkaW5nKG90aGVyLm1fbGVmdFBhZGRpbmcpCisgICAgLCBtX2lz
UmVjdEJhc2VkKG90aGVyLm1faXNSZWN0QmFzZWQpCit7Cit9CisKK0hpdFRlc3RQb2ludDo6fkhp
dFRlc3RQb2ludCgpCit7Cit9CisKK0hpdFRlc3RQb2ludCYgSGl0VGVzdFBvaW50OjpvcGVyYXRv
cj0oY29uc3QgSGl0VGVzdFBvaW50JiBvdGhlcikKK3sKKyAgICBtX3BvaW50ID0gb3RoZXIubV9w
b2ludDsKKyAgICBtX3RvcFBhZGRpbmcgPSBvdGhlci5tX3RvcFBhZGRpbmc7CisgICAgbV9yaWdo
dFBhZGRpbmcgPSBvdGhlci5tX3JpZ2h0UGFkZGluZzsKKyAgICBtX2JvdHRvbVBhZGRpbmcgPSBv
dGhlci5tX2JvdHRvbVBhZGRpbmc7CisgICAgbV9sZWZ0UGFkZGluZyA9IG90aGVyLm1fbGVmdFBh
ZGRpbmc7CisgICAgbV9pc1JlY3RCYXNlZCA9IG90aGVyLm1faXNSZWN0QmFzZWQ7CisKKyAgICBy
ZXR1cm4gKnRoaXM7Cit9CisKK0ludFJlY3QgSGl0VGVzdFBvaW50OjpyZWN0Rm9yUG9pbnQoY29u
c3QgTGF5b3V0UG9pbnQmIHBvaW50LCB1bnNpZ25lZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdo
dFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRpbmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKQor
eworICAgIEludFBvaW50IGFjdHVhbFBvaW50KHJvdW5kZWRJbnRQb2ludChwb2ludCkpOworICAg
IGFjdHVhbFBvaW50IC09IEludFNpemUobGVmdFBhZGRpbmcsIHRvcFBhZGRpbmcpOworCisgICAg
SW50U2l6ZSBhY3R1YWxQYWRkaW5nKGxlZnRQYWRkaW5nICsgcmlnaHRQYWRkaW5nLCB0b3BQYWRk
aW5nICsgYm90dG9tUGFkZGluZyk7CisgICAgLy8gQXMgSW50UmVjdCBpcyBsZWZ0IGluY2x1c2l2
ZSBhbmQgcmlnaHQgZXhjbHVzaXZlIChzZWVpbmcgSW50UmVjdDo6Y29udGFpbnMoeCwgeSkpLCBh
ZGRpbmcgIjEiLgorICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBvbmNlIG5vbi1yZWN0IGJhc2Vk
IGhpdC1kZXRlY3Rpb24gc3RvcHMgdXNpbmcgSW50UmVjdDppbnRlcnNlY3RzLgorICAgIGFjdHVh
bFBhZGRpbmcgKz0gSW50U2l6ZSgxLCAxKTsKKworICAgIHJldHVybiBJbnRSZWN0KGFjdHVhbFBv
aW50LCBhY3R1YWxQYWRkaW5nKTsKK30KIAotICAgIC8vIE1ha2Ugc3VyZSBhbGwgcGFkZGluZyB2
YWx1ZXMgYXJlIGNsYW1wZWQgdG8gemVybyBpZiBpdCBpcyBub3QgYSByZWN0IGhpdCB0ZXN0Lgot
ICAgIGlmICghbV9pc1JlY3RCYXNlZCkKLSAgICAgICAgbV90b3BQYWRkaW5nID0gbV9yaWdodFBh
ZGRpbmcgPSBtX2JvdHRvbVBhZGRpbmcgPSBtX2xlZnRQYWRkaW5nID0gMDsKK0hpdFRlc3RSZXN1
bHQ6OkhpdFRlc3RSZXN1bHQoKSA6IEhpdFRlc3RQb2ludCgpCisgICAgLCBtX2lzT3ZlcldpZGdl
dChmYWxzZSkKKyAgICAsIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeShEb05vdEFsbG93U2hh
ZG93Q29udGVudCkKKyAgICAsIG1fcmVnaW9uKDApCit7Cit9CisKK0hpdFRlc3RSZXN1bHQ6Okhp
dFRlc3RSZXN1bHQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50KSA6IEhpdFRlc3RQb2ludChwb2lu
dCkKKyAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQorICAgICwgbV9zaGFkb3dDb250ZW50Rmls
dGVyUG9saWN5KERvTm90QWxsb3dTaGFkb3dDb250ZW50KQorICAgICwgbV9yZWdpb24oMCkKK3sK
K30KKworSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2Vu
dGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5z
aWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIFNoYWRvd0NvbnRlbnRG
aWx0ZXJQb2xpY3kgYWxsb3dTaGFkb3dDb250ZW50KQorICAgIDogSGl0VGVzdFBvaW50KGNlbnRl
clBvaW50LCB0b3BQYWRkaW5nLCByaWdodFBhZGRpbmcsIGJvdHRvbVBhZGRpbmcsIGxlZnRQYWRk
aW5nKQorICAgICwgbV9pc092ZXJXaWRnZXQoZmFsc2UpCisgICAgLCBtX3NoYWRvd0NvbnRlbnRG
aWx0ZXJQb2xpY3koYWxsb3dTaGFkb3dDb250ZW50KQorICAgICwgbV9yZWdpb24oMCkKK3sKK30K
KworSGl0VGVzdFJlc3VsdDo6SGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0UG9pbnQmIG90aGVy
LCBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IGFsbG93U2hhZG93Q29udGVudCkKKyAgICA6IEhp
dFRlc3RQb2ludChvdGhlcikKKyAgICAsIG1faXNPdmVyV2lkZ2V0KGZhbHNlKQorICAgICwgbV9z
aGFkb3dDb250ZW50RmlsdGVyUG9saWN5KGFsbG93U2hhZG93Q29udGVudCkKKyAgICAsIG1fcmVn
aW9uKDApCit7CiB9CiAKIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVz
dFJlc3VsdCYgb3RoZXIpCi0gICAgOiBtX2lubmVyTm9kZShvdGhlci5pbm5lck5vZGUoKSkKKyAg
ICA6IEhpdFRlc3RQb2ludChvdGhlcikKKyAgICAsIG1faW5uZXJOb2RlKG90aGVyLmlubmVyTm9k
ZSgpKQogICAgICwgbV9pbm5lck5vblNoYXJlZE5vZGUob3RoZXIuaW5uZXJOb25TaGFyZWROb2Rl
KCkpCi0gICAgLCBtX3BvaW50KG90aGVyLnBvaW50KCkpCiAgICAgLCBtX2xvY2FsUG9pbnQob3Ro
ZXIubG9jYWxQb2ludCgpKQogICAgICwgbV9pbm5lclVSTEVsZW1lbnQob3RoZXIuVVJMRWxlbWVu
dCgpKQogICAgICwgbV9zY3JvbGxiYXIob3RoZXIuc2Nyb2xsYmFyKCkpCkBAIC0xMDEsMTYgKzE1
OCw3IEBAIEhpdFRlc3RSZXN1bHQ6OkhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFJlc3VsdCYg
b3RoZXIpCiAgICAgLCBtX3NoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kob3RoZXIuc2hhZG93Q29u
dGVudEZpbHRlclBvbGljeSgpKQogICAgICwgbV9yZWdpb24ob3RoZXIucmVnaW9uKCkpCiB7Ci0g
ICAgLy8gT25seSBjb3B5IHRoZSBwYWRkaW5nIGFuZCBOb2RlU2V0IGluIGNhc2Ugb2YgcmVjdCBo
aXQgdGVzdC4KLSAgICAvLyBDb3B5aW5nIHRoZSBsYXRlciBpcyByYXRoZXIgZXhwZW5zaXZlLgot
ICAgIGlmICgobV9pc1JlY3RCYXNlZCA9IG90aGVyLmlzUmVjdEJhc2VkVGVzdCgpKSkgewotICAg
ICAgICBtX3RvcFBhZGRpbmcgPSBvdGhlci5tX3RvcFBhZGRpbmc7Ci0gICAgICAgIG1fcmlnaHRQ
YWRkaW5nID0gb3RoZXIubV9yaWdodFBhZGRpbmc7Ci0gICAgICAgIG1fYm90dG9tUGFkZGluZyA9
IG90aGVyLm1fYm90dG9tUGFkZGluZzsKLSAgICAgICAgbV9sZWZ0UGFkZGluZyA9IG90aGVyLm1f
bGVmdFBhZGRpbmc7Ci0gICAgfSBlbHNlCi0gICAgICAgIG1fdG9wUGFkZGluZyA9IG1fcmlnaHRQ
YWRkaW5nID0gbV9ib3R0b21QYWRkaW5nID0gbV9sZWZ0UGFkZGluZyA9IDA7Ci0KKyAgICAvLyBP
bmx5IGNvcHkgdGhlIE5vZGVTZXQgaW4gY2FzZSBvZiByZWN0IGhpdCB0ZXN0LgogICAgIG1fcmVj
dEJhc2VkVGVzdFJlc3VsdCA9IGFkb3B0UHRyKG90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCA/
IG5ldyBOb2RlU2V0KCpvdGhlci5tX3JlY3RCYXNlZFRlc3RSZXN1bHQpIDogMCk7CiB9CiAKQEAg
LTEyMCwyNSArMTY4LDE3IEBAIEhpdFRlc3RSZXN1bHQ6On5IaXRUZXN0UmVzdWx0KCkKIAogSGl0
VGVzdFJlc3VsdCYgSGl0VGVzdFJlc3VsdDo6b3BlcmF0b3I9KGNvbnN0IEhpdFRlc3RSZXN1bHQm
IG90aGVyKQogeworICAgIEhpdFRlc3RQb2ludDo6b3BlcmF0b3I9KG90aGVyKTsKICAgICBtX2lu
bmVyTm9kZSA9IG90aGVyLmlubmVyTm9kZSgpOwogICAgIG1faW5uZXJOb25TaGFyZWROb2RlID0g
b3RoZXIuaW5uZXJOb25TaGFyZWROb2RlKCk7Ci0gICAgbV9wb2ludCA9IG90aGVyLnBvaW50KCk7
CiAgICAgbV9sb2NhbFBvaW50ID0gb3RoZXIubG9jYWxQb2ludCgpOwogICAgIG1faW5uZXJVUkxF
bGVtZW50ID0gb3RoZXIuVVJMRWxlbWVudCgpOwogICAgIG1fc2Nyb2xsYmFyID0gb3RoZXIuc2Ny
b2xsYmFyKCk7CiAgICAgbV9pc092ZXJXaWRnZXQgPSBvdGhlci5pc092ZXJXaWRnZXQoKTsKLSAg
ICAvLyBPbmx5IGNvcHkgdGhlIHBhZGRpbmcgYW5kIE5vZGVTZXQgaW4gY2FzZSBvZiByZWN0IGhp
dCB0ZXN0LgotICAgIC8vIENvcHlpbmcgdGhlIGxhdGVyIGlzIHJhdGhlciBleHBlbnNpdmUuCi0g
ICAgaWYgKChtX2lzUmVjdEJhc2VkID0gb3RoZXIuaXNSZWN0QmFzZWRUZXN0KCkpKSB7Ci0gICAg
ICAgIG1fdG9wUGFkZGluZyA9IG90aGVyLm1fdG9wUGFkZGluZzsKLSAgICAgICAgbV9yaWdodFBh
ZGRpbmcgPSBvdGhlci5tX3JpZ2h0UGFkZGluZzsKLSAgICAgICAgbV9ib3R0b21QYWRkaW5nID0g
b3RoZXIubV9ib3R0b21QYWRkaW5nOwotICAgICAgICBtX2xlZnRQYWRkaW5nID0gb3RoZXIubV9s
ZWZ0UGFkZGluZzsKLSAgICB9IGVsc2UKLSAgICAgICAgbV90b3BQYWRkaW5nID0gbV9yaWdodFBh
ZGRpbmcgPSBtX2JvdHRvbVBhZGRpbmcgPSBtX2xlZnRQYWRkaW5nID0gMDsKIAorICAgIC8vIE9u
bHkgY29weSB0aGUgTm9kZVNldCBpbiBjYXNlIG9mIHJlY3QgaGl0IHRlc3QuCiAgICAgbV9yZWN0
QmFzZWRUZXN0UmVzdWx0ID0gYWRvcHRQdHIob3RoZXIubV9yZWN0QmFzZWRUZXN0UmVzdWx0ID8g
bmV3IE5vZGVTZXQoKm90aGVyLm1fcmVjdEJhc2VkVGVzdFJlc3VsdCkgOiAwKTsKLSAgICBtX3No
YWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgPSBvdGhlci5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5
KCk7CisgICAgbV9zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5ICA9IG90aGVyLnNoYWRvd0NvbnRl
bnRGaWx0ZXJQb2xpY3koKTsKIAogICAgIG1fcmVnaW9uID0gb3RoZXIubV9yZWdpb247CiAKQEAg
LTE5OCw3ICsyMzgsNyBAQCBib29sIEhpdFRlc3RSZXN1bHQ6OmlzU2VsZWN0ZWQoKSBjb25zdAog
ICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBmcmFt
ZS0+c2VsZWN0aW9uKCktPmNvbnRhaW5zKG1fcG9pbnQpOworICAgIHJldHVybiBmcmFtZS0+c2Vs
ZWN0aW9uKCktPmNvbnRhaW5zKHBvaW50KCkpOwogfQogCiBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6
c3BlbGxpbmdUb29sVGlwKFRleHREaXJlY3Rpb24mIGRpcikgY29uc3QKQEAgLTIwOSw3ICsyNDks
NyBAQCBTdHJpbmcgSGl0VGVzdFJlc3VsdDo6c3BlbGxpbmdUb29sVGlwKFRleHREaXJlY3Rpb24m
IGRpcikgY29uc3QKICAgICBpZiAoIW1faW5uZXJOb25TaGFyZWROb2RlKQogICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CiAgICAgCi0gICAgRG9jdW1lbnRNYXJrZXIqIG1hcmtlciA9IG1faW5uZXJO
b25TaGFyZWROb2RlLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPm1hcmtlckNvbnRhaW5pbmdQb2lu
dChtX3BvaW50LCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CisgICAgRG9jdW1lbnRNYXJrZXIq
IG1hcmtlciA9IG1faW5uZXJOb25TaGFyZWROb2RlLT5kb2N1bWVudCgpLT5tYXJrZXJzKCktPm1h
cmtlckNvbnRhaW5pbmdQb2ludChwb2ludCgpLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CiAg
ICAgaWYgKCFtYXJrZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIApAQCAtMjI1LDcgKzI2
NSw3IEBAIFN0cmluZyBIaXRUZXN0UmVzdWx0OjpyZXBsYWNlZFN0cmluZygpIGNvbnN0CiAgICAg
aWYgKCFtX2lubmVyTm9uU2hhcmVkTm9kZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IAotICAgIERvY3VtZW50TWFya2VyKiBtYXJrZXIgPSBtX2lubmVyTm9uU2hhcmVkTm9kZS0+ZG9j
dW1lbnQoKS0+bWFya2VycygpLT5tYXJrZXJDb250YWluaW5nUG9pbnQobV9wb2ludCwgRG9jdW1l
bnRNYXJrZXI6OlJlcGxhY2VtZW50KTsKKyAgICBEb2N1bWVudE1hcmtlciogbWFya2VyID0gbV9p
bm5lck5vblNoYXJlZE5vZGUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS0+bWFya2VyQ29udGFpbmlu
Z1BvaW50KHBvaW50KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVudCk7CiAgICAgaWYgKCFt
YXJrZXIpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAKQEAgLTY1MiwxOCArNjkyLDYg
QEAgdm9pZCBIaXRUZXN0UmVzdWx0OjphcHBlbmQoY29uc3QgSGl0VGVzdFJlc3VsdCYgb3RoZXIp
CiAgICAgfQogfQogCi1JbnRSZWN0IEhpdFRlc3RSZXN1bHQ6OnJlY3RGb3JQb2ludChjb25zdCBM
YXlvdXRQb2ludCYgcG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFk
ZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcpCi17Ci0g
ICAgSW50UG9pbnQgYWN0dWFsUG9pbnQocm91bmRlZEludFBvaW50KHBvaW50KSk7Ci0gICAgYWN0
dWFsUG9pbnQgLT0gSW50U2l6ZShsZWZ0UGFkZGluZywgdG9wUGFkZGluZyk7Ci0KLSAgICBJbnRT
aXplIGFjdHVhbFBhZGRpbmcobGVmdFBhZGRpbmcgKyByaWdodFBhZGRpbmcsIHRvcFBhZGRpbmcg
KyBib3R0b21QYWRkaW5nKTsKLSAgICAvLyBBcyBJbnRSZWN0IGlzIGxlZnQgaW5jbHVzaXZlIGFu
ZCByaWdodCBleGNsdXNpdmUgKHNlZWluZyBJbnRSZWN0Ojpjb250YWlucyh4LCB5KSksIGFkZGlu
ZyAiMSIuCi0gICAgYWN0dWFsUGFkZGluZyArPSBJbnRTaXplKDEsIDEpOwotCi0gICAgcmV0dXJu
IEludFJlY3QoYWN0dWFsUG9pbnQsIGFjdHVhbFBhZGRpbmcpOwotfQotCiBjb25zdCBIaXRUZXN0
UmVzdWx0OjpOb2RlU2V0JiBIaXRUZXN0UmVzdWx0OjpyZWN0QmFzZWRUZXN0UmVzdWx0KCkgY29u
c3QKIHsKICAgICBpZiAoIW1fcmVjdEJhc2VkVGVzdFJlc3VsdCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvSGl0VGVzdFJlc3VsdC5oCmluZGV4IGU5MTk0NzJiMmMxNDdjMWMxZWQ2ZDI4OWE0NDI5
ODM2Mjk1OTM2ZjAuLmExOGZkYjVhMjU1OGU5ZWI4YzVmNTVkOTNkMTZmZGFiZWJhMTQ0OGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9IaXRUZXN0UmVzdWx0LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0hpdFRlc3RSZXN1bHQuaApAQCAtMSw1ICsxLDYgQEAK
IC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAxMiBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWll
cykKICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjMsNyBAQAogI2RlZmluZSBIaXRUZXN0
UmVzdWx0X2gKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiTGF5b3V0VHlwZXMuaCIKICNpbmNsdWRlICJUZXh0RGlyZWN0aW9u
LmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KQEAgLTQ0LDcgKzQ2LDQyIEBAIGNsYXNzIFNj
cm9sbGJhcjsKIAogZW51bSBTaGFkb3dDb250ZW50RmlsdGVyUG9saWN5IHsgRG9Ob3RBbGxvd1No
YWRvd0NvbnRlbnQsIEFsbG93U2hhZG93Q29udGVudCB9OwogCi1jbGFzcyBIaXRUZXN0UmVzdWx0
IHsKK2NsYXNzIEhpdFRlc3RQb2ludCB7CitwdWJsaWM6CisKKyAgICBIaXRUZXN0UG9pbnQoKTsK
KyAgICBIaXRUZXN0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKTsKKyAgICAvLyBQYXNzIG5vbi1u
ZWdhdGl2ZSBwYWRkaW5nIHZhbHVlcyB0byBwZXJmb3JtIGEgcmVjdC1iYXNlZCBoaXQgdGVzdC4K
KyAgICBIaXRUZXN0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIGNlbnRlclBvaW50LCB1bnNpZ25l
ZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKKyAgICBIaXRUZXN0UG9pbnQoY29uc3QgSGl0VGVz
dFBvaW50Jik7CisgICAgfkhpdFRlc3RQb2ludCgpOworICAgIEhpdFRlc3RQb2ludCYgb3BlcmF0
b3I9KGNvbnN0IEhpdFRlc3RQb2ludCYpOworCisgICAgTGF5b3V0UG9pbnQgcG9pbnQoKSBjb25z
dCB7IHJldHVybiBtX3BvaW50OyB9CisgICAgSW50UG9pbnQgcm91bmRlZFBvaW50KCkgY29uc3Qg
eyByZXR1cm4gcm91bmRlZEludFBvaW50KG1fcG9pbnQpOyB9CisKKyAgICB2b2lkIHNldFBvaW50
KGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1fcG9pbnQgPSBwOyB9CisKKyAgICAvLyBSZWN0LWJh
c2VkIGhpdCB0ZXN0IHJlbGF0ZWQgbWV0aG9kcy4KKyAgICBib29sIGlzUmVjdEJhc2VkVGVzdCgp
IGNvbnN0IHsgcmV0dXJuIG1faXNSZWN0QmFzZWQ7IH0KKyAgICBJbnRSZWN0IHJlY3RGb3JQb2lu
dChjb25zdCBMYXlvdXRQb2ludCYpIGNvbnN0OworICAgIHN0YXRpYyBJbnRSZWN0IHJlY3RGb3JQ
b2ludChjb25zdCBMYXlvdXRQb2ludCYsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJp
Z2h0UGFkZGluZywgdW5zaWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcp
OworICAgIGludCB0b3BQYWRkaW5nKCkgY29uc3QgeyByZXR1cm4gbV90b3BQYWRkaW5nOyB9Cisg
ICAgaW50IHJpZ2h0UGFkZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHRQYWRkaW5nOyB9Cisg
ICAgaW50IGJvdHRvbVBhZGRpbmcoKSBjb25zdCB7IHJldHVybiBtX2JvdHRvbVBhZGRpbmc7IH0K
KyAgICBpbnQgbGVmdFBhZGRpbmcoKSBjb25zdCB7IHJldHVybiBtX2xlZnRQYWRkaW5nOyB9CisK
K3ByaXZhdGU6CisgICAgTGF5b3V0UG9pbnQgbV9wb2ludDsKKworICAgIGludCBtX3RvcFBhZGRp
bmc7CisgICAgaW50IG1fcmlnaHRQYWRkaW5nOworICAgIGludCBtX2JvdHRvbVBhZGRpbmc7Cisg
ICAgaW50IG1fbGVmdFBhZGRpbmc7CisgICAgYm9vbCBtX2lzUmVjdEJhc2VkOworfTsKKworY2xh
c3MgSGl0VGVzdFJlc3VsdCA6IHB1YmxpYyBIaXRUZXN0UG9pbnQgewogcHVibGljOgogICAgIHR5
cGVkZWYgTGlzdEhhc2hTZXQ8UmVmUHRyPE5vZGU+ID4gTm9kZVNldDsKIApAQCAtNTIsMTQgKzg5
LDEzIEBAIHB1YmxpYzoKICAgICBIaXRUZXN0UmVzdWx0KGNvbnN0IExheW91dFBvaW50Jik7CiAg
ICAgLy8gUGFzcyBub24tbmVnYXRpdmUgcGFkZGluZyB2YWx1ZXMgdG8gcGVyZm9ybSBhIHJlY3Qt
YmFzZWQgaGl0IHRlc3QuCiAgICAgSGl0VGVzdFJlc3VsdChjb25zdCBMYXlvdXRQb2ludCYgY2Vu
dGVyUG9pbnQsIHVuc2lnbmVkIHRvcFBhZGRpbmcsIHVuc2lnbmVkIHJpZ2h0UGFkZGluZywgdW5z
aWduZWQgYm90dG9tUGFkZGluZywgdW5zaWduZWQgbGVmdFBhZGRpbmcsIFNoYWRvd0NvbnRlbnRG
aWx0ZXJQb2xpY3kpOworICAgIEhpdFRlc3RSZXN1bHQoY29uc3QgSGl0VGVzdFBvaW50JiwgU2hh
ZG93Q29udGVudEZpbHRlclBvbGljeSk7CiAgICAgSGl0VGVzdFJlc3VsdChjb25zdCBIaXRUZXN0
UmVzdWx0Jik7CiAgICAgfkhpdFRlc3RSZXN1bHQoKTsKICAgICBIaXRUZXN0UmVzdWx0JiBvcGVy
YXRvcj0oY29uc3QgSGl0VGVzdFJlc3VsdCYpOwogCiAgICAgTm9kZSogaW5uZXJOb2RlKCkgY29u
c3QgeyByZXR1cm4gbV9pbm5lck5vZGUuZ2V0KCk7IH0KICAgICBOb2RlKiBpbm5lck5vblNoYXJl
ZE5vZGUoKSBjb25zdCB7IHJldHVybiBtX2lubmVyTm9uU2hhcmVkTm9kZS5nZXQoKTsgfQotICAg
IExheW91dFBvaW50IHBvaW50KCkgY29uc3QgeyByZXR1cm4gbV9wb2ludDsgfQotICAgIEludFBv
aW50IHJvdW5kZWRQb2ludCgpIGNvbnN0IHsgcmV0dXJuIHJvdW5kZWRJbnRQb2ludChtX3BvaW50
KTsgfQogICAgIExheW91dFBvaW50IGxvY2FsUG9pbnQoKSBjb25zdCB7IHJldHVybiBtX2xvY2Fs
UG9pbnQ7IH0KICAgICBFbGVtZW50KiBVUkxFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gbV9pbm5l
clVSTEVsZW1lbnQuZ2V0KCk7IH0KICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhcigpIGNvbnN0IHsg
cmV0dXJuIG1fc2Nyb2xsYmFyLmdldCgpOyB9CkBAIC03MCwxMSArMTA2LDExIEBAIHB1YmxpYzoK
IAogICAgIHZvaWQgc2V0VG9Ob25TaGFkb3dBbmNlc3RvcigpOwogCisgICAgY29uc3QgSGl0VGVz
dFBvaW50JiBoaXRUZXN0UG9pbnQoKSBjb25zdCB7IHJldHVybiAqdGhpczsgfQogICAgIFNoYWRv
d0NvbnRlbnRGaWx0ZXJQb2xpY3kgc2hhZG93Q29udGVudEZpbHRlclBvbGljeSgpIGNvbnN0IHsg
cmV0dXJuIG1fc2hhZG93Q29udGVudEZpbHRlclBvbGljeTsgfQogCiAgICAgdm9pZCBzZXRJbm5l
ck5vZGUoTm9kZSopOwogICAgIHZvaWQgc2V0SW5uZXJOb25TaGFyZWROb2RlKE5vZGUqKTsKLSAg
ICB2b2lkIHNldFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1fcG9pbnQgPSBwOyB9CiAg
ICAgdm9pZCBzZXRMb2NhbFBvaW50KGNvbnN0IExheW91dFBvaW50JiBwKSB7IG1fbG9jYWxQb2lu
dCA9IHA7IH0KICAgICB2b2lkIHNldFVSTEVsZW1lbnQoRWxlbWVudCopOwogICAgIHZvaWQgc2V0
U2Nyb2xsYmFyKFNjcm9sbGJhciopOwpAQCAtMTEwLDE1ICsxNDYsNiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBtZWRpYU11dGVkKCkgY29uc3Q7CiAgICAgdm9pZCB0b2dnbGVNZWRpYU11dGVTdGF0ZSgp
IGNvbnN0OwogCi0gICAgLy8gUmVjdC1iYXNlZCBoaXQgdGVzdCByZWxhdGVkIG1ldGhvZHMuCi0g
ICAgYm9vbCBpc1JlY3RCYXNlZFRlc3QoKSBjb25zdCB7IHJldHVybiBtX2lzUmVjdEJhc2VkOyB9
Ci0gICAgSW50UmVjdCByZWN0Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmKSBjb25zdDsKLSAg
ICBzdGF0aWMgSW50UmVjdCByZWN0Rm9yUG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmLCB1bnNpZ25l
ZCB0b3BQYWRkaW5nLCB1bnNpZ25lZCByaWdodFBhZGRpbmcsIHVuc2lnbmVkIGJvdHRvbVBhZGRp
bmcsIHVuc2lnbmVkIGxlZnRQYWRkaW5nKTsKLSAgICBpbnQgdG9wUGFkZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fdG9wUGFkZGluZzsgfQotICAgIGludCByaWdodFBhZGRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3JpZ2h0UGFkZGluZzsgfQotICAgIGludCBib3R0b21QYWRkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9ib3R0b21QYWRkaW5nOyB9Ci0gICAgaW50IGxlZnRQYWRkaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9sZWZ0UGFkZGluZzsgfQotCiAgICAgLy8gUmV0dXJucyB0cnVlIGlmIGl0IGlzIHJl
Y3QtYmFzZWQgaGl0IHRlc3QgYW5kIG5lZWRzIHRvIGNvbnRpbnVlIHVudGlsIHRoZSByZWN0IGlz
IGZ1bGx5CiAgICAgLy8gZW5jbG9zZWQgYnkgdGhlIGJvdW5kYXJpZXMgb2YgYSBub2RlLgogICAg
IGJvb2wgYWRkTm9kZVRvUmVjdEJhc2VkVGVzdFJlc3VsdChOb2RlKiwgY29uc3QgTGF5b3V0UG9p
bnQmIHBvaW50SW5Db250YWluZXIsIGNvbnN0IEludFJlY3QmID0gSW50UmVjdCgpKTsKQEAgLTEz
OSwxOSArMTY2LDE0IEBAIHByaXZhdGU6CiAKICAgICBSZWZQdHI8Tm9kZT4gbV9pbm5lck5vZGU7
CiAgICAgUmVmUHRyPE5vZGU+IG1faW5uZXJOb25TaGFyZWROb2RlOwotICAgIExheW91dFBvaW50
IG1fcG9pbnQ7CiAgICAgTGF5b3V0UG9pbnQgbV9sb2NhbFBvaW50OyAvLyBBIHBvaW50IGluIHRo
ZSBsb2NhbCBjb29yZGluYXRlIHNwYWNlIG9mIG1faW5uZXJOb25TaGFyZWROb2RlJ3MgcmVuZGVy
ZXIuIEFsbG93cyB1cyB0byBlZmZpY2llbnRseQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgLy8gZGV0ZXJtaW5lIHdoZXJlIGluc2lkZSB0aGUgcmVuZGVyZXIgd2UgaGl0IG9uIHN1YnNl
cXVlbnQgb3BlcmF0aW9ucy4KICAgICBSZWZQdHI8RWxlbWVudD4gbV9pbm5lclVSTEVsZW1lbnQ7
CiAgICAgUmVmUHRyPFNjcm9sbGJhcj4gbV9zY3JvbGxiYXI7CiAgICAgYm9vbCBtX2lzT3Zlcldp
ZGdldDsgLy8gUmV0dXJucyB0cnVlIGlmIHdlIGFyZSBvdmVyIGEgd2lkZ2V0IChhbmQgbm90IGlu
IHRoZSBib3JkZXIvcGFkZGluZyBhcmVhIG9mIGEgUmVuZGVyV2lkZ2V0IGZvciBleGFtcGxlKS4K
LSAgICBib29sIG1faXNSZWN0QmFzZWQ7Ci0gICAgaW50IG1fdG9wUGFkZGluZzsKLSAgICBpbnQg
bV9yaWdodFBhZGRpbmc7Ci0gICAgaW50IG1fYm90dG9tUGFkZGluZzsKLSAgICBpbnQgbV9sZWZ0
UGFkZGluZzsKKwogICAgIFNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3kgbV9zaGFkb3dDb250ZW50
RmlsdGVyUG9saWN5OwotICAgIAorCiAgICAgUmVuZGVyUmVnaW9uKiBtX3JlZ2lvbjsgLy8gVGhl
IHJlZ2lvbiB3ZSdyZSBpbnNpZGUuCiAKICAgICBtdXRhYmxlIE93blB0cjxOb2RlU2V0PiBtX3Jl
Y3RCYXNlZFRlc3RSZXN1bHQ7CkBAIC0xNjIsNyArMTg0LDcgQEAgcHJpdmF0ZToKIC8vIHkgPSBw
LnkoKSAtIHRvcFBhZGRpbmcKIC8vIHdpZHRoID0gbGVmdFBhZGRpbmcgKyByaWdodFBhZGRpbmcg
KyAxCiAvLyBoZWlnaHQgPSB0b3BQYWRkaW5nICsgYm90dG9tUGFkZGluZyArIDEKLWlubGluZSBJ
bnRSZWN0IEhpdFRlc3RSZXN1bHQ6OnJlY3RGb3JQb2ludChjb25zdCBMYXlvdXRQb2ludCYgcG9p
bnQpIGNvbnN0CitpbmxpbmUgSW50UmVjdCBIaXRUZXN0UG9pbnQ6OnJlY3RGb3JQb2ludChjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnQpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlY3RGb3JQb2ludChw
b2ludCwgbV90b3BQYWRkaW5nLCBtX3JpZ2h0UGFkZGluZywgbV9ib3R0b21QYWRkaW5nLCBtX2xl
ZnRQYWRkaW5nKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCmlu
ZGV4IDMzMzc5Y2YyNDgzYjcyZTc4NzUwN2QxZWJlMTk0NTNhZjNhMGFkMjAuLjRlMzc5ZTQ0YjMw
ODA2NGE1ZGYyNGQ5YmJlNGM3N2ZhMGI1NDNjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckxheWVyLmNwcApAQCAtMzU2NSw3ICszNTY1LDcgQEAgUmVuZGVyTGF5ZXIqIFJlbmRl
ckxheWVyOjpoaXRUZXN0TGF5ZXIoUmVuZGVyTGF5ZXIqIHJvb3RMYXllciwgUmVuZGVyTGF5ZXIq
IGNvbnQKICAgICAvLyBOZXh0IHdlIHdhbnQgdG8gc2VlIGlmIHRoZSBtb3VzZSBwb3MgaXMgaW5z
aWRlIHRoZSBjaGlsZCBSZW5kZXJPYmplY3RzIG9mIHRoZSBsYXllci4KICAgICBpZiAoZmdSZWN0
LmludGVyc2VjdHMoaGl0VGVzdEFyZWEpICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewogICAg
ICAgICAvLyBIaXQgdGVzdCB3aXRoIGEgdGVtcG9yYXJ5IEhpdFRlc3RSZXN1bHQsIGJlY2F1c2Ug
d2Ugb25seSB3YW50IHRvIGNvbW1pdCB0byAncmVzdWx0JyBpZiB3ZSBrbm93IHdlJ3JlIGZyb250
bW9zdC4KLSAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCBy
ZXN1bHQudG9wUGFkZGluZygpLCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21Q
YWRkaW5nKCksIHJlc3VsdC5sZWZ0UGFkZGluZygpLCByZXN1bHQuc2hhZG93Q29udGVudEZpbHRl
clBvbGljeSgpKTsKKyAgICAgICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5oaXRU
ZXN0UG9pbnQoKSwgcmVzdWx0LnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSk7CiAgICAgICAg
IGlmIChoaXRUZXN0Q29udGVudHMocmVxdWVzdCwgdGVtcFJlc3VsdCwgbGF5ZXJCb3VuZHMsIGhp
dFRlc3RQb2ludCwgSGl0VGVzdERlc2NlbmRhbnRzKSAmJgogICAgICAgICAgICAgaXNIaXRDYW5k
aWRhdGUodGhpcywgZmFsc2UsIHpPZmZzZXRGb3JDb250ZW50c1B0ciwgdW5mbGF0dGVuZWRUcmFu
c2Zvcm1TdGF0ZS5nZXQoKSkpIHsKICAgICAgICAgICAgIGlmIChyZXN1bHQuaXNSZWN0QmFzZWRU
ZXN0KCkpCkBAIC0zNTk0LDcgKzM1OTQsNyBAQCBSZW5kZXJMYXllciogUmVuZGVyTGF5ZXI6Omhp
dFRlc3RMYXllcihSZW5kZXJMYXllciogcm9vdExheWVyLCBSZW5kZXJMYXllciogY29udAogICAg
ICAgICByZXR1cm4gY2FuZGlkYXRlTGF5ZXI7CiAKICAgICBpZiAoYmdSZWN0LmludGVyc2VjdHMo
aGl0VGVzdEFyZWEpICYmIGlzU2VsZlBhaW50aW5nTGF5ZXIoKSkgewotICAgICAgICBIaXRUZXN0
UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LnBvaW50KCksIHJlc3VsdC50b3BQYWRkaW5nKCksIHJl
c3VsdC5yaWdodFBhZGRpbmcoKSwgcmVzdWx0LmJvdHRvbVBhZGRpbmcoKSwgcmVzdWx0LmxlZnRQ
YWRkaW5nKCksIHJlc3VsdC5zaGFkb3dDb250ZW50RmlsdGVyUG9saWN5KCkpOworICAgICAgICBI
aXRUZXN0UmVzdWx0IHRlbXBSZXN1bHQocmVzdWx0LmhpdFRlc3RQb2ludCgpLCByZXN1bHQuc2hh
ZG93Q29udGVudEZpbHRlclBvbGljeSgpKTsKICAgICAgICAgaWYgKGhpdFRlc3RDb250ZW50cyhy
ZXF1ZXN0LCB0ZW1wUmVzdWx0LCBsYXllckJvdW5kcywgaGl0VGVzdFBvaW50LCBIaXRUZXN0U2Vs
ZikgJiYKICAgICAgICAgICAgIGlzSGl0Q2FuZGlkYXRlKHRoaXMsIGZhbHNlLCB6T2Zmc2V0Rm9y
Q29udGVudHNQdHIsIHVuZmxhdHRlbmVkVHJhbnNmb3JtU3RhdGUuZ2V0KCkpKSB7CiAgICAgICAg
ICAgICBpZiAocmVzdWx0LmlzUmVjdEJhc2VkVGVzdCgpKQpAQCAtMzY1MCw3ICszNjUwLDcgQEAg
UmVuZGVyTGF5ZXIqIFJlbmRlckxheWVyOjpoaXRUZXN0TGlzdChWZWN0b3I8UmVuZGVyTGF5ZXIq
PiogbGlzdCwgUmVuZGVyTGF5ZXIqIHIKICAgICBmb3IgKGludCBpID0gbGlzdC0+c2l6ZSgpIC0g
MTsgaSA+PSAwOyAtLWkpIHsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGNoaWxkTGF5ZXIgPSBsaXN0
LT5hdChpKTsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGhpdExheWVyID0gMDsKLSAgICAgICAgSGl0
VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5wb2ludCgpLCByZXN1bHQudG9wUGFkZGluZygp
LCByZXN1bHQucmlnaHRQYWRkaW5nKCksIHJlc3VsdC5ib3R0b21QYWRkaW5nKCksIHJlc3VsdC5s
ZWZ0UGFkZGluZygpLCByZXN1bHQuc2hhZG93Q29udGVudEZpbHRlclBvbGljeSgpKTsKKyAgICAg
ICAgSGl0VGVzdFJlc3VsdCB0ZW1wUmVzdWx0KHJlc3VsdC5oaXRUZXN0UG9pbnQoKSwgcmVzdWx0
LnNoYWRvd0NvbnRlbnRGaWx0ZXJQb2xpY3koKSk7CiAgICAgICAgIGlmIChjaGlsZExheWVyLT5p
c1BhZ2luYXRlZCgpKQogICAgICAgICAgICAgaGl0TGF5ZXIgPSBoaXRUZXN0UGFnaW5hdGVkQ2hp
bGRMYXllcihjaGlsZExheWVyLCByb290TGF5ZXIsIHJlcXVlc3QsIHRlbXBSZXN1bHQsIGhpdFRl
c3RSZWN0LCBoaXRUZXN0UG9pbnQsIHRyYW5zZm9ybVN0YXRlLCB6T2Zmc2V0Rm9yRGVzY2VuZGFu
dHMpOwogICAgICAgICBlbHNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>