<?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>162876</bug_id>
          
          <creation_ts>2016-10-03 12:47:12 -0700</creation_ts>
          <short_desc>Remove Document::elementSheet()</short_desc>
          <delta_ts>2016-10-03 14:55:10 -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>DOM</component>
          <version>WebKit 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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1235861</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-10-03 12:47:12 -0700</bug_when>
    <thetext>This is a Document owned stylesheet that exists as a context for parsing element inline style. It never contains any rules and is generally confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235878</commentid>
    <comment_count>1</comment_count>
      <attachid>290511</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2016-10-03 13:23:49 -0700</bug_when>
    <thetext>Created attachment 290511
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235887</commentid>
    <comment_count>2</comment_count>
      <attachid>290511</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2016-10-03 13:36:12 -0700</bug_when>
    <thetext>Comment on attachment 290511
patch

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

r=me, looks good, very 2011

&gt; Source/WebCore/dom/StyledElement.cpp:201
&gt; +    if (usesStyleBasedEditability(*inlineStyle))
&gt; +        document().setHasElementUsingStyleBasedEditability();

So this is really &quot;has *ever* used style based editability&quot; huh.
I wonder if this optimization is even useful.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235932</commentid>
    <comment_count>3</comment_count>
      <attachid>290511</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-03 14:55:05 -0700</bug_when>
    <thetext>Comment on attachment 290511
patch

Clearing flags on attachment: 290511

Committed r206753: &lt;http://trac.webkit.org/changeset/206753&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1235933</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-10-03 14:55:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290511</attachid>
            <date>2016-10-03 13:23:49 -0700</date>
            <delta_ts>2016-10-03 14:55:05 -0700</delta_ts>
            <desc>patch</desc>
            <filename>remove-elementsheet-3.patch</filename>
            <type>text/plain</type>
            <size>30114</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNjc0MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDE2LTEwLTAzICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBSZW1vdmUgRG9jdW1lbnQ6OmVs
ZW1lbnRTaGVldCgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjI4NzYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIGlzIGEgRG9jdW1lbnQgb3duZWQgc3R5bGVzaGVldCB0aGF0IGV4aXN0cyBhcyBh
IGNvbnRleHQgZm9yIHBhcnNpbmcgZWxlbWVudCBpbmxpbmUgc3R5bGUuCisgICAgICAgIEl0IG5l
dmVyIGNvbnRhaW5zIGFueSBydWxlcyBhbmQgaXMgZ2VuZXJhbGx5IGNvbmZ1c2luZy4KKworICAg
ICAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIHJlcXVpcmVtZW50IGZvciBhIHN0eWxlc2hlZXQg
dG8gYmUgcHJlc2VudCBmb3IgQ1NTUGFyc2VyIHRvIG9wZXJhdGUgaW4KKyAgICAgICAgdGhlIGNv
cnJlY3QgY29udGV4dC4gSW5saW5lIHN0eWxlIGlzIG5vdyBwYXJzZWQgd2l0aG91dCBzdHlsZXNo
ZWV0IGFuZCBhIGNvbnRleHQgb2JqZWN0IGlzCisgICAgICAgIHBhc3NlZCBpbnN0ZWFkLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OnJvb3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVE
ZWNsYXJhdGlvbkN1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6cm9vdCk6IERlbGV0ZWQuCisg
ICAgICAgICogY3NzL1Byb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OnNldENzc1RleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXRQcm9w
ZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246
OnNldFByb3BlcnR5SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJvcGVydHlTZXRDU1NT
dHlsZURlY2xhcmF0aW9uOjpjc3NQYXJzZXJDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUnVsZUNTU1N0eWxlRGVjbGFyYXRpb246OnBhcmVudFN0eWxlU2hlZXQpOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVSdWxlQ1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3NzUGFyc2VyQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpJbmxpbmVDU1NTdHlsZURlY2xhcmF0aW9uOjpwYXJlbnRTdHls
ZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OklubGluZUNTU1N0eWxlRGVjbGFyYXRpb246OmNz
c1BhcnNlckNvbnRleHQpOgorICAgICAgICAqIGNzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlv
bjo6ZGlkTXV0YXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5
KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1c3RvbVBy
b3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVTdHlsZVByb3BlcnRpZXM6OnBhcnNl
RGVjbGFyYXRpb24pOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1BhcnNlcjo6cGFyc2VWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlQ3VzdG9tUHJvcGVydHlWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlSW5saW5lU3R5bGVEZWNsYXJhdGlvbik6CisgICAgICAgICogY3NzL3Bh
cnNlci9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1BhcnNlckltcGwuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VySW1wbDo6cGFyc2VJbmxpbmVTdHlsZURlY2xh
cmF0aW9uKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RG9jdW1lbnQ6On5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXBkYXRl
QmFzZVVSTCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6dXNlc1N0eWxlQmFzZWRFZGl0
YWJpbGl0eSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SGFzRWxlbWVudFVzaW5n
U3R5bGVCYXNlZEVkaXRhYmlsaXR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjplbGVt
ZW50U2hlZXQpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAq
IGRvbS9TdHlsZWRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6
OnNldElubGluZVN0eWxlRnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRFbGVt
ZW50OjppbnZhbGlkYXRlU3R5bGVBdHRyaWJ1dGUpOgorCisgICAgICAgICAgICBUaGUgdXNlc1N0
eWxlQmFzZWRFZGl0YWJpbGl0eSBiaXQgdXNlZCB0byBiZSBzZXQgdmlhIHRoZSBlbGVtZW50U2hl
ZXQuIEluc3RlYWQgY2hlY2sgZm9yIGl0IGFmdGVyIGlubGluZSBzdHlsZSBtdXRhdGlvbnMuCisK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWxlUHJvcGVydHkp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb1ByZXNlbnRh
dGlvbkF0dHJpYnV0ZVN0eWxlKToKKyAgICAgICAgKiBkb20vU3R5bGVkRWxlbWVudC5oOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6aW52YWxpZGF0ZVN0eWxlQXR0cmlidXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmdldFN0
eWxlQXR0cmlidXRlUmFuZ2VzKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnRCYXNl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmFwcGx5Q1NTUHJvcGVydHlUb1RhcmdldCk6CisKIDIw
MTYtMTAtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtTT1VQXSBSZW1vdmUgdW51c2VkIG1ldGhvZHMgdG9Tb3VwTWVzc2FnZSBmcm9tIFJl
c291cmNlUmVxdWVzdC9SZXNwb25zZQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCShyZXZpc2lv
biAyMDY2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksMTUgQEAKICNpbmNs
dWRlICJDU1NQYXJzZXIuaCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1
ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKKyNpbmNsdWRlICJDU1NSdWxlLmgiCisjaW5jbHVkZSAi
Q1NTU3R5bGVEZWNsYXJhdGlvbi5oIgorI2luY2x1ZGUgIkNTU1N0eWxlU2hlZXQuaCIKICNpbmNs
dWRlICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgIkhhc2hUb29scy5oIgorI2luY2x1ZGUgIkpTQ1NT
U3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkpTQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJK
U05vZGUuaCIKKyNpbmNsdWRlICJKU1N0eWxlU2hlZXRDdXN0b20uaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJT
dHlsZVByb3BlcnRpZXMuaCIKQEAgLTQ4LDYgKzUzLDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAordm9pZCogcm9vdChDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSkKK3sKKyAgICBpZiAoYXV0byogcGFyZW50UnVsZSA9IHN0eWxlLT5wYXJlbnRSdWxl
KCkpCisgICAgICAgIHJldHVybiByb290KHBhcmVudFJ1bGUpOworICAgIGlmIChhdXRvKiBzdHls
ZVNoZWV0ID0gc3R5bGUtPnBhcmVudFN0eWxlU2hlZXQoKSkKKyAgICAgICAgcmV0dXJuIHJvb3Qo
c3R5bGVTaGVldCk7CisgICAgaWYgKGF1dG8qIHBhcmVudEVsZW1lbnQgPSBzdHlsZS0+cGFyZW50
RWxlbWVudCgpKQorICAgICAgICByZXR1cm4gcm9vdChwYXJlbnRFbGVtZW50KTsKKyAgICByZXR1
cm4gc3R5bGU7Cit9CisKIHZvaWQgSlNDU1NTdHlsZURlY2xhcmF0aW9uOjp2aXNpdEFkZGl0aW9u
YWxDaGlsZHJlbihTbG90VmlzaXRvciYgdmlzaXRvcikKIHsKICAgICB2aXNpdG9yLmFkZE9wYXF1
ZVJvb3Qocm9vdCgmd3JhcHBlZCgpKSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uaAkocmV2aXNpb24g
MjA2NjQyKQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmgJKHdvcmtpbmcgY29weSkKQEAgLTI2LDIyICsyNiwxMSBAQAogI2lmbmRlZiBK
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b21faAogI2RlZmluZSBKU0NTU1N0eWxlRGVjbGFyYXRp
b25DdXN0b21faAogCi0jaW5jbHVkZSAiQ1NTUnVsZS5oIgotI2luY2x1ZGUgIkNTU1N0eWxlRGVj
bGFyYXRpb24uaCIKLSNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCi0jaW5jbHVkZSAiSlNDU1NT
dHlsZURlY2xhcmF0aW9uLmgiCi0jaW5jbHVkZSAiSlNTdHlsZVNoZWV0Q3VzdG9tLmgiCi0KIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHZvaWQqIHJvb3QoQ1NTU3R5bGVEZWNsYXJhdGlv
biogc3R5bGUpCi17Ci0gICAgaWYgKENTU1J1bGUqIHBhcmVudFJ1bGUgPSBzdHlsZS0+cGFyZW50
UnVsZSgpKQotICAgICAgICByZXR1cm4gcm9vdChwYXJlbnRSdWxlKTsKLSAgICBpZiAoQ1NTU3R5
bGVTaGVldCogc3R5bGVTaGVldCA9IHN0eWxlLT5wYXJlbnRTdHlsZVNoZWV0KCkpCi0gICAgICAg
IHJldHVybiByb290KHN0eWxlU2hlZXQpOwotICAgIHJldHVybiBzdHlsZTsKLX0KK2NsYXNzIENT
U1N0eWxlRGVjbGFyYXRpb247CisKK3ZvaWQqIHJvb3QoQ1NTU3R5bGVEZWNsYXJhdGlvbiopOwog
CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFy
YXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiAyMDY2NDIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9jc3MvUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIk11dGF0aW9uT2JzZXJ2ZXJJbnRlcmVzdEdyb3Vw
LmgiCiAjaW5jbHVkZSAiTXV0YXRpb25SZWNvcmQuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRp
ZXMuaCIKKyNpbmNsdWRlICJTdHlsZVNoZWV0Q29udGVudHMuaCIKICNpbmNsdWRlICJTdHlsZWRF
bGVtZW50LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1Myw3ICsxNTQsNyBAQCB2b2lk
IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6c2V0CiAgICAgaWYgKCF3aWxsTXV0YXRl
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQt
PnBhcnNlRGVjbGFyYXRpb24odGV4dCwgY29udGV4dFN0eWxlU2hlZXQoKSk7CisgICAgYm9vbCBj
aGFuZ2VkID0gbV9wcm9wZXJ0eVNldC0+cGFyc2VEZWNsYXJhdGlvbih0ZXh0LCBjc3NQYXJzZXJD
b250ZXh0KCksIGNvbnRleHRTdHlsZVNoZWV0KCkpOwogCiAgICAgZGlkTXV0YXRlKGNoYW5nZWQg
PyBQcm9wZXJ0eUNoYW5nZWQgOiBOb0NoYW5nZXMpOwogCkBAIC0yMzEsNyArMjMyLDEyIEBAIHZv
aWQgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICAgICAgcmV0dXJuOwog
CiAgICAgZWMgPSAwOwotICAgIGJvb2wgY2hhbmdlZCA9IHByb3BlcnR5SUQgIT0gQ1NTUHJvcGVy
dHlDdXN0b20gPyBtX3Byb3BlcnR5U2V0LT5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwg
aW1wb3J0YW50LCBjb250ZXh0U3R5bGVTaGVldCgpKSA6IG1fcHJvcGVydHlTZXQtPnNldEN1c3Rv
bVByb3BlcnR5KHByb3BlcnR5TmFtZSwgdmFsdWUsIGltcG9ydGFudCwgY29udGV4dFN0eWxlU2hl
ZXQoKSk7CisKKyAgICBib29sIGNoYW5nZWQ7CisgICAgaWYgKHByb3BlcnR5SUQgPT0gQ1NTUHJv
cGVydHlDdXN0b20pCisgICAgICAgIGNoYW5nZWQgPSBtX3Byb3BlcnR5U2V0LT5zZXRDdXN0b21Q
cm9wZXJ0eShwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQo
KSwgY29udGV4dFN0eWxlU2hlZXQoKSk7CisgICAgZWxzZQorICAgICAgICBjaGFuZ2VkID0gbV9w
cm9wZXJ0eVNldC0+c2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgY3Nz
UGFyc2VyQ29udGV4dCgpLCBjb250ZXh0U3R5bGVTaGVldCgpKTsKIAogICAgIGRpZE11dGF0ZShj
aGFuZ2VkID8gUHJvcGVydHlDaGFuZ2VkIDogTm9DaGFuZ2VzKTsKIApAQCAtMjkwLDcgKzI5Niw3
IEBAIGJvb2wgUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uOjpzZXQKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgZWMgPSAwOwotICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVydHlT
ZXQtPnNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNvbnRleHRTdHls
ZVNoZWV0KCkpOworICAgIGJvb2wgY2hhbmdlZCA9IG1fcHJvcGVydHlTZXQtPnNldFByb3BlcnR5
KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlckNvbnRleHQoKSwgY29udGV4
dFN0eWxlU2hlZXQoKSk7CiAKICAgICBkaWRNdXRhdGUoY2hhbmdlZCA/IFByb3BlcnR5Q2hhbmdl
ZCA6IE5vQ2hhbmdlcyk7CiAKQEAgLTMyMSw2ICszMjcsMTEgQEAgU3R5bGVTaGVldENvbnRlbnRz
KiBQcm9wZXJ0eVNldENTU1N0eWxlRAogICAgIHJldHVybiBjc3NTdHlsZVNoZWV0ID8gJmNzc1N0
eWxlU2hlZXQtPmNvbnRlbnRzKCkgOiAwOwogfQogCitDU1NQYXJzZXJDb250ZXh0IFByb3BlcnR5
U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbjo6Y3NzUGFyc2VyQ29udGV4dCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIENTU1BhcnNlckNvbnRleHQobV9wcm9wZXJ0eVNldC0+Y3NzUGFyc2VyTW9kZSgpKTsK
K30KKwogUmVmPE11dGFibGVTdHlsZVByb3BlcnRpZXM+IFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNs
YXJhdGlvbjo6Y29weVByb3BlcnRpZXMoKSBjb25zdAogewogICAgIHJldHVybiBtX3Byb3BlcnR5
U2V0LT5tdXRhYmxlQ29weSgpOwpAQCAtMzczLDcgKzM4NCwxNiBAQCB2b2lkIFN0eWxlUnVsZUNT
U1N0eWxlRGVjbGFyYXRpb246OmRpZE11CiAKIENTU1N0eWxlU2hlZXQqIFN0eWxlUnVsZUNTU1N0
eWxlRGVjbGFyYXRpb246OnBhcmVudFN0eWxlU2hlZXQoKSBjb25zdAogewotICAgIHJldHVybiBt
X3BhcmVudFJ1bGUgPyBtX3BhcmVudFJ1bGUtPnBhcmVudFN0eWxlU2hlZXQoKSA6IDA7CisgICAg
cmV0dXJuIG1fcGFyZW50UnVsZSA/IG1fcGFyZW50UnVsZS0+cGFyZW50U3R5bGVTaGVldCgpIDog
bnVsbHB0cjsKK30KKworQ1NTUGFyc2VyQ29udGV4dCBTdHlsZVJ1bGVDU1NTdHlsZURlY2xhcmF0
aW9uOjpjc3NQYXJzZXJDb250ZXh0KCkgY29uc3QKK3sKKyAgICBhdXRvKiBzdHlsZVNoZWV0ID0g
Y29udGV4dFN0eWxlU2hlZXQoKTsKKyAgICBpZiAoIXN0eWxlU2hlZXQpCisgICAgICAgIHJldHVy
biBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb246OmNzc1BhcnNlckNvbnRleHQoKTsKKwor
ICAgIHJldHVybiBzdHlsZVNoZWV0LT5wYXJzZXJDb250ZXh0KCk7CiB9CiAKIHZvaWQgU3R5bGVS
dWxlQ1NTU3R5bGVEZWNsYXJhdGlvbjo6cmVhdHRhY2goTXV0YWJsZVN0eWxlUHJvcGVydGllcyYg
cHJvcGVydHlTZXQpCkBAIC0zOTksNyArNDE5LDE3IEBAIHZvaWQgSW5saW5lQ1NTU3R5bGVEZWNs
YXJhdGlvbjo6ZGlkTXV0YXQKIAogQ1NTU3R5bGVTaGVldCogSW5saW5lQ1NTU3R5bGVEZWNsYXJh
dGlvbjo6cGFyZW50U3R5bGVTaGVldCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fcGFyZW50RWxl
bWVudCA/ICZtX3BhcmVudEVsZW1lbnQtPmRvY3VtZW50KCkuZWxlbWVudFNoZWV0KCkgOiAwOwor
ICAgIHJldHVybiBudWxscHRyOworfQorCitDU1NQYXJzZXJDb250ZXh0IElubGluZUNTU1N0eWxl
RGVjbGFyYXRpb246OmNzc1BhcnNlckNvbnRleHQoKSBjb25zdAoreworICAgIGlmICghbV9wYXJl
bnRFbGVtZW50KQorICAgICAgICByZXR1cm4gUHJvcGVydHlTZXRDU1NTdHlsZURlY2xhcmF0aW9u
Ojpjc3NQYXJzZXJDb250ZXh0KCk7CisKKyAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQobV9w
YXJlbnRFbGVtZW50LT5kb2N1bWVudCgpKTsKKyAgICBjb250ZXh0Lm1vZGUgPSBtX3Byb3BlcnR5
U2V0LT5jc3NQYXJzZXJNb2RlKCk7CisgICAgcmV0dXJuIGNvbnRleHQ7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0
eWxlRGVjbGFyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvUHJvcGVy
dHlTZXRDU1NTdHlsZURlY2xhcmF0aW9uLmgJKHJldmlzaW9uIDIwNjY0MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9Qcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogI2lmbmRlZiBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRp
b25faAogI2RlZmluZSBQcm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb25faAogCisjaW5jbHVk
ZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlRGVjbGFyYXRpb24uaCIKICNp
bmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTc1LDYgKzc2LDcg
QEAgcHJvdGVjdGVkOgogICAgIGVudW0gTXV0YXRpb25UeXBlIHsgTm9DaGFuZ2VzLCBQcm9wZXJ0
eUNoYW5nZWQgfTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbE11dGF0ZSgpIFdBUk5fVU5VU0VEX1JF
VFVSTiB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZE11dGF0ZShNdXRhdGlv
blR5cGUpIHsgfQorICAgIHZpcnR1YWwgQ1NTUGFyc2VyQ29udGV4dCBjc3NQYXJzZXJDb250ZXh0
KCkgY29uc3Q7CiAKICAgICBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzKiBtX3Byb3BlcnR5U2V0Owog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxIYXNoTWFwPENTU1ZhbHVlKiwgUmVmUHRyPENTU1ZhbHVlPj4+
IG1fY3Nzb21DU1NWYWx1ZUNsb25lczsKQEAgLTEwNSw2ICsxMDcsNyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCB3aWxsTXV0YXRlKCkgZmluYWwgV0FSTl9VTlVTRURfUkVUVVJOOwogICAgIHZvaWQg
ZGlkTXV0YXRlKE11dGF0aW9uVHlwZSkgZmluYWw7CisgICAgQ1NTUGFyc2VyQ29udGV4dCBjc3NQ
YXJzZXJDb250ZXh0KCkgY29uc3QgZmluYWw7CiAKICAgICB1bnNpZ25lZCBtX3JlZkNvdW50Owog
ICAgIENTU1J1bGUqIG1fcGFyZW50UnVsZTsKQEAgLTEyNSw2ICsxMjgsNyBAQCBwcml2YXRlOgog
ICAgIHZvaWQgY2xlYXJQYXJlbnRFbGVtZW50KCkgZmluYWwgeyBtX3BhcmVudEVsZW1lbnQgPSAw
OyB9CiAKICAgICB2b2lkIGRpZE11dGF0ZShNdXRhdGlvblR5cGUpIGZpbmFsOworICAgIENTU1Bh
cnNlckNvbnRleHQgY3NzUGFyc2VyQ29udGV4dCgpIGNvbnN0IGZpbmFsOwogCiAgICAgU3R5bGVk
RWxlbWVudCogbV9wYXJlbnRFbGVtZW50OwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9T
dHlsZVByb3BlcnRpZXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHls
ZVByb3BlcnRpZXMuY3BwCShyZXZpc2lvbiAyMDY2NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
U3R5bGVQcm9wZXJ0aWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI1LDI4ICs3MjUsMzcgQEAg
Ym9vbCBTdHlsZVByb3BlcnRpZXM6OmlzUHJvcGVydHlJbXBsaWNpdAogICAgIHJldHVybiBwcm9w
ZXJ0eUF0KGZvdW5kUHJvcGVydHlJbmRleCkuaXNJbXBsaWNpdCgpOwogfQogCi1ib29sIE11dGFi
bGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwg
Y29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQsIFN0eWxlU2hlZXRDb250ZW50cyog
Y29udGV4dFN0eWxlU2hlZXQpCitib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3Bl
cnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBp
bXBvcnRhbnQsIENTU1BhcnNlckNvbnRleHQgcGFyc2VyQ29udGV4dCwgU3R5bGVTaGVldENvbnRl
bnRzKiBjb250ZXh0U3R5bGVTaGVldCkKIHsKICAgICAvLyBTZXR0aW5nIHRoZSB2YWx1ZSB0byBh
biBlbXB0eSBzdHJpbmcganVzdCByZW1vdmVzIHRoZSBwcm9wZXJ0eSBpbiBib3RoIElFIGFuZCBH
ZWNrby4KICAgICAvLyBTZXR0aW5nIGl0IHRvIG51bGwgc2VlbXMgdG8gcHJvZHVjZSBsZXNzIGNv
bnNpc3RlbnQgcmVzdWx0cywgYnV0IHdlIHRyZWF0IGl0IGp1c3QgdGhlIHNhbWUuCiAgICAgaWYg
KHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlbW92ZVByb3BlcnR5KHByb3BlcnR5
SUQpOwogCisgICAgcGFyc2VyQ29udGV4dC5tb2RlID0gY3NzUGFyc2VyTW9kZSgpOworCiAgICAg
Ly8gV2hlbiByZXBsYWNpbmcgYW4gZXhpc3RpbmcgcHJvcGVydHkgdmFsdWUsIHRoaXMgbW92ZXMg
dGhlIHByb3BlcnR5IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCiAgICAgLy8gRmlyZWZveCBwcmVz
ZXJ2ZXMgdGhlIHBvc2l0aW9uLCBhbmQgTVNJRSBtb3ZlcyB0aGUgcHJvcGVydHkgdG8gdGhlIGJl
Z2lubmluZy4KLSAgICByZXR1cm4gQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKCp0aGlzLCBwcm9wZXJ0
eUlELCB2YWx1ZSwgaW1wb3J0YW50LCBjc3NQYXJzZXJNb2RlKCksIGNvbnRleHRTdHlsZVNoZWV0
KSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpDaGFuZ2VkOworICAgIHJldHVybiBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoKnRoaXMsIHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQsIHBhcnNl
ckNvbnRleHQsIGNvbnRleHRTdHlsZVNoZWV0KSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpD
aGFuZ2VkOworfQorCitib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KENT
U1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRh
bnQpCit7CisgICAgQ1NTUGFyc2VyQ29udGV4dCBwYXJzZXJDb250ZXh0KGNzc1BhcnNlck1vZGUo
KSk7CisgICAgcmV0dXJuIHNldFByb3BlcnR5KHByb3BlcnR5SUQsIHZhbHVlLCBpbXBvcnRhbnQs
IHBhcnNlckNvbnRleHQpOwogfQogCi1ib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnNldEN1
c3RvbVByb3BlcnR5KGNvbnN0IFN0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBib29sIGltcG9ydGFudCwgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVl
dCkKK2Jvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0Q3VzdG9tUHJvcGVydHkoY29uc3Qg
U3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0YW50
LCBDU1NQYXJzZXJDb250ZXh0IHBhcnNlckNvbnRleHQsIFN0eWxlU2hlZXRDb250ZW50cyogY29u
dGV4dFN0eWxlU2hlZXQpCiB7CiAgICAgLy8gU2V0dGluZyB0aGUgdmFsdWUgdG8gYW4gZW1wdHkg
c3RyaW5nIGp1c3QgcmVtb3ZlcyB0aGUgcHJvcGVydHkgaW4gYm90aCBJRSBhbmQgR2Vja28uCiAg
ICAgLy8gU2V0dGluZyBpdCB0byBudWxsIHNlZW1zIHRvIHByb2R1Y2UgbGVzcyBjb25zaXN0ZW50
IHJlc3VsdHMsIGJ1dCB3ZSB0cmVhdCBpdCBqdXN0IHRoZSBzYW1lLgogICAgIGlmICh2YWx1ZS5p
c0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByZW1vdmVDdXN0b21Qcm9wZXJ0eShwcm9wZXJ0eU5h
bWUpOwogCisgICAgcGFyc2VyQ29udGV4dC5tb2RlID0gY3NzUGFyc2VyTW9kZSgpOwogICAgIC8v
IFdoZW4gcmVwbGFjaW5nIGFuIGV4aXN0aW5nIHByb3BlcnR5IHZhbHVlLCB0aGlzIG1vdmVzIHRo
ZSBwcm9wZXJ0eSB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgogICAgIC8vIEZpcmVmb3ggcHJlc2Vy
dmVzIHRoZSBwb3NpdGlvbiwgYW5kIE1TSUUgbW92ZXMgdGhlIHByb3BlcnR5IHRvIHRoZSBiZWdp
bm5pbmcuCi0gICAgcmV0dXJuIENTU1BhcnNlcjo6cGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlKCp0
aGlzLCBwcm9wZXJ0eU5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUoKSwgY29u
dGV4dFN0eWxlU2hlZXQpID09IENTU1BhcnNlcjo6UGFyc2VSZXN1bHQ6OkNoYW5nZWQ7CisgICAg
cmV0dXJuIENTU1BhcnNlcjo6cGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlKCp0aGlzLCBwcm9wZXJ0
eU5hbWUsIHZhbHVlLCBpbXBvcnRhbnQsIHBhcnNlckNvbnRleHQsIGNvbnRleHRTdHlsZVNoZWV0
KSA9PSBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0OjpDaGFuZ2VkOwogfQogCiB2b2lkIE11dGFibGVT
dHlsZVByb3BlcnRpZXM6OnNldFByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgUmVm
UHRyPENTU1ZhbHVlPiYmIHZhbHVlLCBib29sIGltcG9ydGFudCkKQEAgLTc5OCwxNiArODA3LDEz
IEBAIGJvb2wgTXV0YWJsZVN0eWxlUHJvcGVydGllczo6c2V0UHJvcGVydHkKICAgICByZXR1cm4g
c2V0UHJvcGVydHkoQ1NTUHJvcGVydHkocHJvcGVydHlJRCwgQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoaWRlbnRpZmllciksIGltcG9ydGFudCkpOwogfQog
Ci1ib29sIE11dGFibGVTdHlsZVByb3BlcnRpZXM6OnBhcnNlRGVjbGFyYXRpb24oY29uc3QgU3Ry
aW5nJiBzdHlsZURlY2xhcmF0aW9uLCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNo
ZWV0KQorYm9vbCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzOjpwYXJzZURlY2xhcmF0aW9uKGNvbnN0
IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbiwgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0LCBTdHls
ZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KQogewogICAgIGF1dG8gb2xkUHJvcGVy
dGllcyA9IFdURk1vdmUobV9wcm9wZXJ0eVZlY3Rvcik7CiAgICAgbV9wcm9wZXJ0eVZlY3Rvci5j
bGVhcigpOwogCi0gICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0KGNzc1BhcnNlck1vZGUoKSk7
Ci0gICAgaWYgKGNvbnRleHRTdHlsZVNoZWV0KSB7Ci0gICAgICAgIGNvbnRleHQgPSBjb250ZXh0
U3R5bGVTaGVldC0+cGFyc2VyQ29udGV4dCgpOwotICAgICAgICBjb250ZXh0Lm1vZGUgPSBjc3NQ
YXJzZXJNb2RlKCk7Ci0gICAgfQorICAgIGNvbnRleHQubW9kZSA9IGNzc1BhcnNlck1vZGUoKTsK
KwogICAgIENTU1BhcnNlciBwYXJzZXIoY29udGV4dCk7CiAgICAgcGFyc2VyLnBhcnNlRGVjbGFy
YXRpb24oKnRoaXMsIHN0eWxlRGVjbGFyYXRpb24sIDAsIGNvbnRleHRTdHlsZVNoZWV0KTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVByb3BlcnRpZXMuaAkocmV2aXNpb24gMjA2NjQyKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUHJvcGVydGllcy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTksNyArMTk5LDggQEAgcHVibGljOgogICAgIGJvb2wgYWRkUGFyc2VkUHJvcGVydHkoY29u
c3QgQ1NTUHJvcGVydHkmKTsKIAogICAgIC8vIFRoZXNlIGV4cGFuZCBzaG9ydGhhbmQgcHJvcGVy
dGllcyBpbnRvIG11bHRpcGxlIHByb3BlcnRpZXMuCi0gICAgYm9vbCBzZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFudCA9IGZhbHNlLCBT
dHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0ID0gMCk7CisgICAgYm9vbCBzZXRQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmIHZhbHVlLCBib29sIGltcG9ydGFu
dCwgQ1NTUGFyc2VyQ29udGV4dCwgU3R5bGVTaGVldENvbnRlbnRzKiA9IG51bGxwdHIpOworICAg
IGJvb2wgc2V0UHJvcGVydHkoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgYm9v
bCBpbXBvcnRhbnQgPSBmYWxzZSk7CiAgICAgdm9pZCBzZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
LCBSZWZQdHI8Q1NTVmFsdWU+JiYsIGJvb2wgaW1wb3J0YW50ID0gZmFsc2UpOwogCiAgICAgLy8g
VGhlc2UgZG8gbm90LiBGSVhNRTogVGhpcyBpcyB0b28gbWVzc3ksIHdlIGNhbiBkbyBiZXR0ZXIu
CkBAIC0yMTQsNyArMjE1LDcgQEAgcHVibGljOgogICAgIHZvaWQgbWVyZ2VBbmRPdmVycmlkZU9u
Q29uZmxpY3QoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJik7CiAKICAgICB2b2lkIGNsZWFyKCk7Ci0g
ICAgYm9vbCBwYXJzZURlY2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbiwg
U3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVldCk7CisgICAgYm9vbCBwYXJzZURl
Y2xhcmF0aW9uKGNvbnN0IFN0cmluZyYgc3R5bGVEZWNsYXJhdGlvbiwgQ1NTUGFyc2VyQ29udGV4
dCwgU3R5bGVTaGVldENvbnRlbnRzKiA9IG51bGxwdHIpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
Q1NTU3R5bGVEZWNsYXJhdGlvbiogZW5zdXJlQ1NTU3R5bGVEZWNsYXJhdGlvbigpOwogICAgIENT
U1N0eWxlRGVjbGFyYXRpb24qIGVuc3VyZUlubGluZUNTU1N0eWxlRGVjbGFyYXRpb24oU3R5bGVk
RWxlbWVudCogcGFyZW50RWxlbWVudCk7CkBAIC0yMjUsNyArMjI2LDcgQEAgcHVibGljOgogICAg
IFZlY3RvcjxDU1NQcm9wZXJ0eSwgND4gbV9wcm9wZXJ0eVZlY3RvcjsKIAogICAgIC8vIE1ldGhv
ZHMgZm9yIHF1ZXJ5aW5nIGFuZCBhbHRlcmluZyBDU1MgY3VzdG9tIHByb3BlcnRpZXMuCi0gICAg
Ym9vbCBzZXRDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3Qg
U3RyaW5nJiB2YWx1ZSwgYm9vbCBpbXBvcnRhbnQgPSBmYWxzZSwgU3R5bGVTaGVldENvbnRlbnRz
KiBjb250ZXh0U3R5bGVTaGVldCA9IDApOworICAgIGJvb2wgc2V0Q3VzdG9tUHJvcGVydHkoY29u
c3QgU3RyaW5nJiBwcm9wZXJ0eU5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIGJvb2wgaW1wb3J0
YW50LCBDU1NQYXJzZXJDb250ZXh0LCBTdHlsZVNoZWV0Q29udGVudHMqID0gbnVsbHB0cik7CiAg
ICAgYm9vbCByZW1vdmVDdXN0b21Qcm9wZXJ0eShjb25zdCBTdHJpbmcmIHByb3BlcnR5TmFtZSwg
U3RyaW5nKiByZXR1cm5UZXh0ID0gbnVsbHB0cik7CiAKIHByaXZhdGU6CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuY3BwCShyZXZpc2lvbiAyMDY2NDIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEz
MDksMjMgKzEzMDksMTcgQEAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gQ1NTUGFyc2VyOjpwYXJzZUZv
bgogICAgIHJldHVybiBXVEZNb3ZlKHZhbHVlTGlzdCk7CiB9CiAKLUNTU1BhcnNlcjo6UGFyc2VS
ZXN1bHQgQ1NTUGFyc2VyOjpwYXJzZVZhbHVlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIGRlY2xh
cmF0aW9uLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBi
b29sIGltcG9ydGFudCwgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlLCBTdHlsZVNoZWV0Q29u
dGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KQorQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdCBDU1NQYXJz
ZXI6OnBhcnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYgZGVjbGFyYXRpb24sIENTU1By
b3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50
LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0JiBjb250ZXh0LCBTdHlsZVNoZWV0Q29udGVudHMqIGNv
bnRleHRTdHlsZVNoZWV0KQogewogICAgIEFTU0VSVCghc3RyaW5nLmlzRW1wdHkoKSk7Ci0gICAg
Q1NTUGFyc2VyOjpQYXJzZVJlc3VsdCByZXN1bHQgPSBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKGRl
Y2xhcmF0aW9uLCBwcm9wZXJ0eUlELCBzdHJpbmcsIGltcG9ydGFudCwgY3NzUGFyc2VyTW9kZSk7
CisgICAgQ1NTUGFyc2VyOjpQYXJzZVJlc3VsdCByZXN1bHQgPSBwYXJzZVNpbXBsZUxlbmd0aFZh
bHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlELCBzdHJpbmcsIGltcG9ydGFudCwgY29udGV4dC5t
b2RlKTsKICAgICBpZiAocmVzdWx0ICE9IFBhcnNlUmVzdWx0OjpFcnJvcikKICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKIAotICAgIHJlc3VsdCA9IHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwg
cHJvcGVydHlJRCwgc3RyaW5nLCBpbXBvcnRhbnQsIGNzc1BhcnNlck1vZGUpOworICAgIHJlc3Vs
dCA9IHBhcnNlQ29sb3JWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJRCwgc3RyaW5nLCBpbXBv
cnRhbnQsICBjb250ZXh0Lm1vZGUpOwogICAgIGlmIChyZXN1bHQgIT0gUGFyc2VSZXN1bHQ6OkVy
cm9yKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgQ1NTUGFyc2VyQ29udGV4dCBjb250
ZXh0KGNzc1BhcnNlck1vZGUpOwotICAgIGlmIChjb250ZXh0U3R5bGVTaGVldCkgewotICAgICAg
ICBjb250ZXh0ID0gY29udGV4dFN0eWxlU2hlZXQtPnBhcnNlckNvbnRleHQoKTsKLSAgICAgICAg
Y29udGV4dC5tb2RlID0gY3NzUGFyc2VyTW9kZTsKLSAgICB9Ci0KICAgICByZXN1bHQgPSBwYXJz
ZUtleXdvcmRWYWx1ZShkZWNsYXJhdGlvbiwgcHJvcGVydHlJRCwgc3RyaW5nLCBpbXBvcnRhbnQs
IGNvbnRleHQsIGNvbnRleHRTdHlsZVNoZWV0KTsKICAgICBpZiAocmVzdWx0ICE9IFBhcnNlUmVz
dWx0OjpFcnJvcikKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTEzMzgsMTQgKzEzMzIsOCBA
QCBDU1NQYXJzZXI6OlBhcnNlUmVzdWx0IENTU1BhcnNlcjo6cGFyc2VWCiAgICAgcmV0dXJuIHBh
cnNlci5wYXJzZVZhbHVlKGRlY2xhcmF0aW9uLCBwcm9wZXJ0eUlELCBzdHJpbmcsIGltcG9ydGFu
dCwgY29udGV4dFN0eWxlU2hlZXQpOwogfQogCi1DU1NQYXJzZXI6OlBhcnNlUmVzdWx0IENTU1Bh
cnNlcjo6cGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIGRl
Y2xhcmF0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5n
JiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUsIFN0
eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpCitDU1NQYXJzZXI6OlBhcnNlUmVz
dWx0IENTU1BhcnNlcjo6cGFyc2VDdXN0b21Qcm9wZXJ0eVZhbHVlKE11dGFibGVTdHlsZVByb3Bl
cnRpZXMmIGRlY2xhcmF0aW9uLCBjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSwgY29u
c3QgU3RyaW5nJiBzdHJpbmcsIGJvb2wgaW1wb3J0YW50LCBjb25zdCBDU1NQYXJzZXJDb250ZXh0
JiBjb250ZXh0LCBTdHlsZVNoZWV0Q29udGVudHMqIGNvbnRleHRTdHlsZVNoZWV0KQogewotICAg
IENTU1BhcnNlckNvbnRleHQgY29udGV4dChjc3NQYXJzZXJNb2RlKTsKLSAgICBpZiAoY29udGV4
dFN0eWxlU2hlZXQpIHsKLSAgICAgICAgY29udGV4dCA9IGNvbnRleHRTdHlsZVNoZWV0LT5wYXJz
ZXJDb250ZXh0KCk7Ci0gICAgICAgIGNvbnRleHQubW9kZSA9IGNzc1BhcnNlck1vZGU7Ci0gICAg
fQotCiAgICAgQ1NTUGFyc2VyIHBhcnNlcihjb250ZXh0KTsKICAgICBwYXJzZXIuc2V0Q3VzdG9t
UHJvcGVydHlOYW1lKHByb3BlcnR5TmFtZSk7CiAgICAgcmV0dXJuIHBhcnNlci5wYXJzZVZhbHVl
KGRlY2xhcmF0aW9uLCBDU1NQcm9wZXJ0eUN1c3RvbSwgc3RyaW5nLCBpbXBvcnRhbnQsIGNvbnRl
eHRTdHlsZVNoZWV0KTsKQEAgLTE0NDQsOSArMTQzMiw5IEBAIHZvaWQgQ1NTUGFyc2VyOjpwYXJz
ZVNlbGVjdG9yKGNvbnN0IFN0cmkKIAogUmVmPEltbXV0YWJsZVN0eWxlUHJvcGVydGllcz4gQ1NT
UGFyc2VyOjpwYXJzZUlubGluZVN0eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHJpbmcs
IEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgQ1NTUGFyc2VyQ29udGV4dCBjb250ZXh0ID0gZWxl
bWVudC0+ZG9jdW1lbnQoKS5lbGVtZW50U2hlZXQoKS5jb250ZW50cygpLnBhcnNlckNvbnRleHQo
KTsKKyAgICBDU1NQYXJzZXJDb250ZXh0IGNvbnRleHQoZWxlbWVudC0+ZG9jdW1lbnQoKSk7CiAg
ICAgY29udGV4dC5tb2RlID0gc3RyaWN0VG9DU1NQYXJzZXJNb2RlKGVsZW1lbnQtPmlzSFRNTEVs
ZW1lbnQoKSAmJiAhZWxlbWVudC0+ZG9jdW1lbnQoKS5pblF1aXJrc01vZGUoKSk7Ci0gICAgcmV0
dXJuIENTU1BhcnNlcihjb250ZXh0KS5wYXJzZURlY2xhcmF0aW9uKHN0cmluZywgJmVsZW1lbnQt
PmRvY3VtZW50KCkuZWxlbWVudFNoZWV0KCkuY29udGVudHMoKSk7CisgICAgcmV0dXJuIENTU1Bh
cnNlcihjb250ZXh0KS5wYXJzZURlY2xhcmF0aW9uKHN0cmluZywgbnVsbHB0cik7CiB9CiAKIFJl
ZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IENTU1BhcnNlcjo6cGFyc2VEZWNsYXJhdGlvbihj
b25zdCBTdHJpbmcmIHN0cmluZywgU3R5bGVTaGVldENvbnRlbnRzKiBjb250ZXh0U3R5bGVTaGVl
dCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkocmV2aXNpb24gMjA2
NjQyKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtMTMxLDggKzEzMSw4IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8U3R5bGVLZXlmcmFt
ZT4gcGFyc2VLZXlmcmFtZVJ1bGUoU3R5bGVTaGVldENvbnRlbnRzKiwgY29uc3QgU3RyaW5nJik7
CiAgICAgYm9vbCBwYXJzZVN1cHBvcnRzQ29uZGl0aW9uKGNvbnN0IFN0cmluZyYpOwogCi0gICAg
c3RhdGljIFBhcnNlUmVzdWx0IHBhcnNlVmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIENT
U1Byb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYsIGJvb2wgaW1wb3J0YW50LCBDU1NQYXJzZXJNb2Rl
LCBTdHlsZVNoZWV0Q29udGVudHMqKTsKLSAgICBzdGF0aWMgUGFyc2VSZXN1bHQgcGFyc2VDdXN0
b21Qcm9wZXJ0eVZhbHVlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmLCBjb25zdCBBdG9taWNTdHJp
bmcmIHByb3BlcnR5TmFtZSwgY29uc3QgU3RyaW5nJiwgYm9vbCBpbXBvcnRhbnQsIENTU1BhcnNl
ck1vZGUsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hlZXQpOworICAgIHN0YXRp
YyBQYXJzZVJlc3VsdCBwYXJzZVZhbHVlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmLCBDU1NQcm9w
ZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCwgY29uc3QgQ1NTUGFyc2VyQ29u
dGV4dCYsIFN0eWxlU2hlZXRDb250ZW50cyopOworICAgIHN0YXRpYyBQYXJzZVJlc3VsdCBwYXJz
ZUN1c3RvbVByb3BlcnR5VmFsdWUoTXV0YWJsZVN0eWxlUHJvcGVydGllcyYsIGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJvcGVydHlOYW1lLCBjb25zdCBTdHJpbmcmLCBib29sIGltcG9ydGFudCwgY29u
c3QgQ1NTUGFyc2VyQ29udGV4dCYsIFN0eWxlU2hlZXRDb250ZW50cyogY29udGV4dFN0eWxlU2hl
ZXQpOwogCiAgICAgc3RhdGljIGJvb2wgcGFyc2VDb2xvcihSR0JBMzImIGNvbG9yLCBjb25zdCBT
dHJpbmcmLCBib29sIHN0cmljdCA9IGZhbHNlKTsKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkU3lz
dGVtQ29sb3JWYWx1ZShDU1NWYWx1ZUlEKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VySW1wbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJJbXBsLmNwcAkocmV2aXNpb24gMjA2NjQyKQorKysgU291cmNlL1dlYkNv
cmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDE0
ICsxMzUsMTMgQEAgc3RhdGljIFJlZjxJbW11dGFibGVTdHlsZVByb3BlcnRpZXM+IGNyZQogCiBS
ZWY8SW1tdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBDU1NQYXJzZXJJbXBsOjpwYXJzZUlubGluZVN0
eWxlRGVjbGFyYXRpb24oY29uc3QgU3RyaW5nJiBzdHJpbmcsIEVsZW1lbnQqIGVsZW1lbnQpCiB7
Ci0gICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZWxlbWVudC0+ZG9jdW1lbnQoKTsKLSAgICBDU1NQ
YXJzZXJDb250ZXh0IGNvbnRleHQgPSBDU1NQYXJzZXJDb250ZXh0KGRvY3VtZW50LmVsZW1lbnRT
aGVldCgpLmNvbnRlbnRzKCkucGFyc2VyQ29udGV4dCgpKTsKLSAgICBDU1NQYXJzZXJNb2RlIG1v
ZGUgPSBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgIWRvY3VtZW50LmluUXVpcmtzTW9kZSgp
ID8gSFRNTFN0YW5kYXJkTW9kZSA6IEhUTUxRdWlya3NNb2RlOwotICAgIGNvbnRleHQubW9kZSA9
IG1vZGU7Ci0gICAgQ1NTUGFyc2VySW1wbCBwYXJzZXIoY29udGV4dCwgJmRvY3VtZW50LmVsZW1l
bnRTaGVldCgpLmNvbnRlbnRzKCkpOworICAgIENTU1BhcnNlckNvbnRleHQgY29udGV4dChlbGVt
ZW50LT5kb2N1bWVudCgpKTsKKyAgICBjb250ZXh0Lm1vZGUgPSBzdHJpY3RUb0NTU1BhcnNlck1v
ZGUoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmICFlbGVtZW50LT5kb2N1bWVudCgpLmluUXVp
cmtzTW9kZSgpKTsKKworICAgIENTU1BhcnNlckltcGwgcGFyc2VyKGNvbnRleHQpOwogICAgIENT
U1Rva2VuaXplcjo6U2NvcGUgc2NvcGUoc3RyaW5nKTsKICAgICBwYXJzZXIuY29uc3VtZURlY2xh
cmF0aW9uTGlzdChzY29wZS50b2tlblJhbmdlKCksIFN0eWxlUnVsZTo6U3R5bGUpOwotICAgIHJl
dHVybiBjcmVhdGVTdHlsZVByb3BlcnRpZXMocGFyc2VyLm1fcGFyc2VkUHJvcGVydGllcywgbW9k
ZSk7CisgICAgcmV0dXJuIGNyZWF0ZVN0eWxlUHJvcGVydGllcyhwYXJzZXIubV9wYXJzZWRQcm9w
ZXJ0aWVzLCBjb250ZXh0Lm1vZGUpOwogfQogCiBib29sIENTU1BhcnNlckltcGw6OnBhcnNlRGVj
bGFyYXRpb25MaXN0KE11dGFibGVTdHlsZVByb3BlcnRpZXMqIGRlY2xhcmF0aW9uLCBjb25zdCBT
dHJpbmcmIHN0cmluZywgY29uc3QgQ1NTUGFyc2VyQ29udGV4dCYgY29udGV4dCkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjA2NjQyKQorKysgU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjI5LDggKzYyOSw2IEBAIERvY3Vt
ZW50Ojp+RG9jdW1lbnQoKQogICAgIGlmIChtX3N0eWxlU2hlZXRMaXN0KQogICAgICAgICBtX3N0
eWxlU2hlZXRMaXN0LT5kZXRhY2hGcm9tRG9jdW1lbnQoKTsKIAotICAgIGlmIChtX2VsZW1lbnRT
aGVldCkKLSAgICAgICAgbV9lbGVtZW50U2hlZXQtPmRldGFjaEZyb21Eb2N1bWVudCgpOwogICAg
IGV4dGVuc2lvblN0eWxlU2hlZXRzKCkuZGV0YWNoRnJvbURvY3VtZW50KCk7CiAKICAgICBjbGVh
clN0eWxlUmVzb2x2ZXIoKTsgLy8gV2UgbmVlZCB0byBkZXN0cm95IENTU0ZvbnRTZWxlY3RvciBi
ZWZvcmUgZGVzdHJveWluZyBtX2NhY2hlZFJlc291cmNlTG9hZGVyLgpAQCAtMjk2MywxNiArMjk2
MSw2IEBAIHZvaWQgRG9jdW1lbnQ6OnVwZGF0ZUJhc2VVUkwoKQogICAgIGlmICghbV9iYXNlVVJM
LmlzVmFsaWQoKSkKICAgICAgICAgbV9iYXNlVVJMID0gVVJMKCk7CiAKLSAgICBpZiAobV9lbGVt
ZW50U2hlZXQpIHsKLSAgICAgICAgLy8gRWxlbWVudCBzaGVldCBpcyBzaWxseS4gSXQgbmV2ZXIg
Y29udGFpbnMgYW55dGhpbmcuCi0gICAgICAgIEFTU0VSVCghbV9lbGVtZW50U2hlZXQtPmNvbnRl
bnRzKCkucnVsZUNvdW50KCkpOwotICAgICAgICBib29sIHVzZXNTdHlsZUJhc2VkRWRpdGFiaWxp
dHkgPSBtX2VsZW1lbnRTaGVldC0+Y29udGVudHMoKS51c2VzU3R5bGVCYXNlZEVkaXRhYmlsaXR5
KCk7Ci0gICAgICAgIG1fZWxlbWVudFNoZWV0ID0gQ1NTU3R5bGVTaGVldDo6Y3JlYXRlSW5saW5l
KCp0aGlzLCBtX2Jhc2VVUkwpOwotICAgICAgICAvLyBGSVhNRTogU28gd2UgYXJlIG5vdCByZWFs
bHkgdGhlIHBhcnNlci4gVGhlIHJpZ2h0IGZpeCBpcyB0byBlbGltaW5hdGUgdGhlIGVsZW1lbnQg
c2hlZXQgY29tcGxldGVseS4KLSAgICAgICAgaWYgKHVzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkp
Ci0gICAgICAgICAgICBtX2VsZW1lbnRTaGVldC0+Y29udGVudHMoKS5wYXJzZXJTZXRVc2VzU3R5
bGVCYXNlZEVkaXRhYmlsaXR5KCk7Ci0gICAgfQotCiAgICAgaWYgKCFlcXVhbElnbm9yaW5nRnJh
Z21lbnRJZGVudGlmaWVyKG9sZEJhc2VVUkwsIG1fYmFzZVVSTCkpIHsKICAgICAgICAgLy8gQmFz
ZSBVUkwgY2hhbmdlIGNoYW5nZXMgYW55IHJlbGF0aXZlIHZpc2l0ZWQgbGlua3MuCiAgICAgICAg
IC8vIEZJWE1FOiBUaGVyZSBhcmUgb3RoZXIgVVJMcyBpbiB0aGUgdHJlZSB0aGF0IHdvdWxkIG5l
ZWQgdG8gYmUgcmUtZXZhbHVhdGVkIG9uIGR5bmFtaWMgYmFzZSBVUkwgY2hhbmdlLiBTdHlsZSBz
aG91bGQgYmUgaW52YWxpZGF0ZWQgdG9vLgpAQCAtMzE1OCwxNiArMzE0Niw5IEBAIHZvaWQgRG9j
dW1lbnQ6OmRpZFJlbW92ZUFsbFBlbmRpbmdTdHlsZXMKICAgICAgICAgdmlldygpLT5zY3JvbGxU
b0ZyYWdtZW50KG1fdXJsKTsKIH0KIAotQ1NTU3R5bGVTaGVldCYgRG9jdW1lbnQ6OmVsZW1lbnRT
aGVldCgpCi17Ci0gICAgaWYgKCFtX2VsZW1lbnRTaGVldCkKLSAgICAgICAgbV9lbGVtZW50U2hl
ZXQgPSBDU1NTdHlsZVNoZWV0OjpjcmVhdGVJbmxpbmUoKnRoaXMsIG1fYmFzZVVSTCk7Ci0gICAg
cmV0dXJuICptX2VsZW1lbnRTaGVldDsKLX0KLQogYm9vbCBEb2N1bWVudDo6dXNlc1N0eWxlQmFz
ZWRFZGl0YWJpbGl0eSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fZWxlbWVudFNoZWV0ICYmIG1fZWxl
bWVudFNoZWV0LT5jb250ZW50cygpLnVzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkoKSkKKyAgICBp
ZiAobV9oYXNFbGVtZW50VXNpbmdTdHlsZUJhc2VkRWRpdGFiaWxpdHkpCiAgICAgICAgIHJldHVy
biB0cnVlOwogCiAgICAgQVNTRVJUKCFtX3JlbmRlclZpZXcgfHwgIW1fcmVuZGVyVmlldy0+ZnJh
bWVWaWV3KCkuaXNQYWludGluZygpKTsKQEAgLTMxNzgsNiArMzE1OSwxMSBAQCBib29sIERvY3Vt
ZW50Ojp1c2VzU3R5bGVCYXNlZEVkaXRhYmlsaXR5CiAgICAgcmV0dXJuIGF1dGhvclNoZWV0cy51
c2VzU3R5bGVCYXNlZEVkaXRhYmlsaXR5KCk7CiB9CiAKK3ZvaWQgRG9jdW1lbnQ6OnNldEhhc0Vs
ZW1lbnRVc2luZ1N0eWxlQmFzZWRFZGl0YWJpbGl0eSgpCit7CisgICAgbV9oYXNFbGVtZW50VXNp
bmdTdHlsZUJhc2VkRWRpdGFiaWxpdHkgPSB0cnVlOworfQorCiB2b2lkIERvY3VtZW50Ojpwcm9j
ZXNzSHR0cEVxdWl2KGNvbnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCwg
Ym9vbCBpc0luRG9jdW1lbnRIZWFkKQogewogICAgIEFTU0VSVCghZXF1aXYuaXNOdWxsKCkpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIwNjY0MikKKysrIFNvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC02NDgsOCArNjQ4LDggQEAgcHVi
bGljOgogICAgIGJvb2wgY2FuTmF2aWdhdGUoRnJhbWUqIHRhcmdldEZyYW1lKTsKICAgICBGcmFt
ZSogZmluZFVuc2FmZVBhcmVudFNjcm9sbFByb3BhZ2F0aW9uQm91bmRhcnkoKTsKIAotICAgIENT
U1N0eWxlU2hlZXQmIGVsZW1lbnRTaGVldCgpOwogICAgIGJvb2wgdXNlc1N0eWxlQmFzZWRFZGl0
YWJpbGl0eSgpIGNvbnN0OworICAgIHZvaWQgc2V0SGFzRWxlbWVudFVzaW5nU3R5bGVCYXNlZEVk
aXRhYmlsaXR5KCk7CiAgICAgCiAgICAgdmlydHVhbCBSZWY8RG9jdW1lbnRQYXJzZXI+IGNyZWF0
ZVBhcnNlcigpOwogICAgIERvY3VtZW50UGFyc2VyKiBwYXJzZXIoKSBjb25zdCB7IHJldHVybiBt
X3BhcnNlci5nZXQoKTsgfQpAQCAtMTQ0Niw3ICsxNDQ2LDcgQEAgcHJpdmF0ZToKIAogICAgIHN0
ZDo6dW5pcXVlX3B0cjxET01JbXBsZW1lbnRhdGlvbj4gbV9pbXBsZW1lbnRhdGlvbjsKIAotICAg
IFJlZlB0cjxDU1NTdHlsZVNoZWV0PiBtX2VsZW1lbnRTaGVldDsKKyAgICBib29sIG1faGFzRWxl
bWVudFVzaW5nU3R5bGVCYXNlZEVkaXRhYmlsaXR5IHsgZmFsc2UgfTsKIAogICAgIGJvb2wgbV9w
cmludGluZzsKICAgICBib29sIG1fcGFnaW5hdGVkRm9yU2NyZWVuOwpJbmRleDogU291cmNlL1dl
YkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmNwcAkocmV2aXNpb24gMjA2NjQyKQorKysgU291cmNlL1dlYkNv
cmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzQsNyArMTc0LDEy
IEBAIFByb3BlcnR5U2V0Q1NTU3R5bGVEZWNsYXJhdGlvbiogU3R5bGVkRWwKICAgICByZXR1cm4g
Y3Nzb21XcmFwcGVyOwogfQogCi1pbmxpbmUgdm9pZCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVT
dHlsZUZyb21TdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdTdHlsZVN0cmluZykKK3N0YXRp
YyBib29sIHVzZXNTdHlsZUJhc2VkRWRpdGFiaWxpdHkoY29uc3QgU3R5bGVQcm9wZXJ0aWVzJiBw
cm9wZXJ0aWVzKQoreworICAgIHJldHVybiBwcm9wZXJ0aWVzLmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5KTsKK30KKwordm9pZCBTdHlsZWRFbGVtZW50Ojpz
ZXRJbmxpbmVTdHlsZUZyb21TdHJpbmcoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdTdHlsZVN0cmlu
ZykKIHsKICAgICBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiYgaW5saW5lU3R5bGUgPSBlbGVtZW50
RGF0YSgpLT5tX2lubGluZVN0eWxlOwogCkBAIC0xOTAsNyArMTk1LDEwIEBAIGlubGluZSB2b2lk
IFN0eWxlZEVsZW1lbnQ6OnNldElubGluZVN0eWwKICAgICBpZiAoIWlubGluZVN0eWxlKQogICAg
ICAgICBpbmxpbmVTdHlsZSA9IENTU1BhcnNlcjo6cGFyc2VJbmxpbmVTdHlsZURlY2xhcmF0aW9u
KG5ld1N0eWxlU3RyaW5nLCB0aGlzKTsKICAgICBlbHNlCi0gICAgICAgIGRvd25jYXN0PE11dGFi
bGVTdHlsZVByb3BlcnRpZXM+KCppbmxpbmVTdHlsZSkucGFyc2VEZWNsYXJhdGlvbihuZXdTdHls
ZVN0cmluZywgJmRvY3VtZW50KCkuZWxlbWVudFNoZWV0KCkuY29udGVudHMoKSk7CisgICAgICAg
IGRvd25jYXN0PE11dGFibGVTdHlsZVByb3BlcnRpZXM+KCppbmxpbmVTdHlsZSkucGFyc2VEZWNs
YXJhdGlvbihuZXdTdHlsZVN0cmluZywgZG9jdW1lbnQoKSk7CisKKyAgICBpZiAodXNlc1N0eWxl
QmFzZWRFZGl0YWJpbGl0eSgqaW5saW5lU3R5bGUpKQorICAgICAgICBkb2N1bWVudCgpLnNldEhh
c0VsZW1lbnRVc2luZ1N0eWxlQmFzZWRFZGl0YWJpbGl0eSgpOwogfQogCiB2b2lkIFN0eWxlZEVs
ZW1lbnQ6OnN0eWxlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcmIG5ld1N0eWxl
U3RyaW5nLCBBdHRyaWJ1dGVNb2RpZmljYXRpb25SZWFzb24gcmVhc29uKQpAQCAtMjEyLDYgKzIy
MCwxNSBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnN0eWxlQXR0cmlidXRlQ2hhbmdlCiAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKGRvY3VtZW50KCks
ICp0aGlzKTsKIH0KIAordm9pZCBTdHlsZWRFbGVtZW50OjppbnZhbGlkYXRlU3R5bGVBdHRyaWJ1
dGUoKQoreworICAgIGlmICh1c2VzU3R5bGVCYXNlZEVkaXRhYmlsaXR5KCppbmxpbmVTdHlsZSgp
KSkKKyAgICAgICAgZG9jdW1lbnQoKS5zZXRIYXNFbGVtZW50VXNpbmdTdHlsZUJhc2VkRWRpdGFi
aWxpdHkoKTsKKworICAgIGVsZW1lbnREYXRhKCktPnNldFN0eWxlQXR0cmlidXRlSXNEaXJ0eSh0
cnVlKTsKKyAgICBzZXROZWVkc1N0eWxlUmVjYWxjKElubGluZVN0eWxlQ2hhbmdlKTsKK30KKwog
dm9pZCBTdHlsZWRFbGVtZW50OjppbmxpbmVTdHlsZUNoYW5nZWQoKQogewogICAgIGludmFsaWRh
dGVTdHlsZUF0dHJpYnV0ZSgpOwpAQCAtMjQxLDcgKzI1OCw3IEBAIGJvb2wgU3R5bGVkRWxlbWVu
dDo6c2V0SW5saW5lU3R5bGVQcm9wZXIKIAogYm9vbCBTdHlsZWRFbGVtZW50OjpzZXRJbmxpbmVT
dHlsZVByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiB2YWx1
ZSwgYm9vbCBpbXBvcnRhbnQpCiB7Ci0gICAgYm9vbCBjaGFuZ2VzID0gZW5zdXJlTXV0YWJsZUlu
bGluZVN0eWxlKCkuc2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUsIGltcG9ydGFudCwgJmRv
Y3VtZW50KCkuZWxlbWVudFNoZWV0KCkuY29udGVudHMoKSk7CisgICAgYm9vbCBjaGFuZ2VzID0g
ZW5zdXJlTXV0YWJsZUlubGluZVN0eWxlKCkuc2V0UHJvcGVydHkocHJvcGVydHlJRCwgdmFsdWUs
IGltcG9ydGFudCwgQ1NTUGFyc2VyQ29udGV4dChkb2N1bWVudCgpKSk7CiAgICAgaWYgKGNoYW5n
ZXMpCiAgICAgICAgIGlubGluZVN0eWxlQ2hhbmdlZCgpOwogICAgIHJldHVybiBjaGFuZ2VzOwpA
QCAtMzc2LDcgKzM5Myw3IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb1ByZXNl
bnQKICAgICAKIHZvaWQgU3R5bGVkRWxlbWVudDo6YWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbkF0
dHJpYnV0ZVN0eWxlKE11dGFibGVTdHlsZVByb3BlcnRpZXMmIHN0eWxlLCBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgc3R5bGUuc2V0UHJvcGVy
dHkocHJvcGVydHlJRCwgdmFsdWUsIGZhbHNlLCAmZG9jdW1lbnQoKS5lbGVtZW50U2hlZXQoKS5j
b250ZW50cygpKTsKKyAgICBzdHlsZS5zZXRQcm9wZXJ0eShwcm9wZXJ0eUlELCB2YWx1ZSwgZmFs
c2UsIENTU1BhcnNlckNvbnRleHQoZG9jdW1lbnQoKSkpOwogfQogCiB9CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmgJKHJldmlzaW9uIDIwNjY0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9TdHlsZWRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTkzLDEzICs5Myw2IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCByZWJ1aWxkUHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKTsKIH07
CiAKLWlubGluZSB2b2lkIFN0eWxlZEVsZW1lbnQ6OmludmFsaWRhdGVTdHlsZUF0dHJpYnV0ZSgp
Ci17Ci0gICAgQVNTRVJUKGVsZW1lbnREYXRhKCkpOwotICAgIGVsZW1lbnREYXRhKCktPnNldFN0
eWxlQXR0cmlidXRlSXNEaXJ0eSh0cnVlKTsKLSAgICBzZXROZWVkc1N0eWxlUmVjYWxjKElubGlu
ZVN0eWxlQ2hhbmdlKTsKLX0KLQogaW5saW5lIGNvbnN0IFN0eWxlUHJvcGVydGllcyogU3R5bGVk
RWxlbWVudDo6cHJlc2VudGF0aW9uQXR0cmlidXRlU3R5bGUoKSBjb25zdAogewogICAgIGlmICgh
ZWxlbWVudERhdGEoKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5jcHAJKHJldmlzaW9uIDIwNjY0MikKKysrIFNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
Niw3ICsxMzY2LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6Ogog
ICAgIH0KIAogICAgIGF1dG8gdGVtcERlY2xhcmF0aW9uID0gTXV0YWJsZVN0eWxlUHJvcGVydGll
czo6Y3JlYXRlKCk7Ci0gICAgY3JlYXRlQ1NTUGFyc2VyKCZtX2VsZW1lbnQtPmRvY3VtZW50KCkp
LT5wYXJzZURlY2xhcmF0aW9uKHRlbXBEZWNsYXJhdGlvbiwgbV9zdHlsZVRleHQsIHJlc3VsdCwg
Jm1fZWxlbWVudC0+ZG9jdW1lbnQoKS5lbGVtZW50U2hlZXQoKS5jb250ZW50cygpKTsKKyAgICBj
cmVhdGVDU1NQYXJzZXIoJm1fZWxlbWVudC0+ZG9jdW1lbnQoKSktPnBhcnNlRGVjbGFyYXRpb24o
dGVtcERlY2xhcmF0aW9uLCBtX3N0eWxlVGV4dCwgcmVzdWx0LCBudWxscHRyKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50
QmFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVt
ZW50QmFzZS5jcHAJKHJldmlzaW9uIDIwNjY0MikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlRWxlbWVudEJhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzYsNyArMjM2LDcgQEAg
c3RhdGljIGlubGluZSB2b2lkIGFwcGx5Q1NTUHJvcGVydHlUb1RhcgogewogICAgIEFTU0VSVCgh
dGFyZ2V0RWxlbWVudC5tX2RlbGV0aW9uSGFzQmVndW4pOwogCi0gICAgaWYgKCF0YXJnZXRFbGVt
ZW50LmVuc3VyZUFuaW1hdGVkU01JTFN0eWxlUHJvcGVydGllcygpLnNldFByb3BlcnR5KGlkLCB2
YWx1ZSwgZmFsc2UsIDApKQorICAgIGlmICghdGFyZ2V0RWxlbWVudC5lbnN1cmVBbmltYXRlZFNN
SUxTdHlsZVByb3BlcnRpZXMoKS5zZXRQcm9wZXJ0eShpZCwgdmFsdWUsIGZhbHNlKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgdGFyZ2V0RWxlbWVudC5zZXROZWVkc1N0eWxlUmVjYWxjKFN5bnRo
ZXRpY1N0eWxlQ2hhbmdlKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>