<?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>183341</bug_id>
          
          <creation_ts>2018-03-05 13:02:50 -0800</creation_ts>
          <short_desc>Add ChildrenAffectedByForwardPositionalRules bit for nth-child pseudo class marking</short_desc>
          <delta_ts>2018-03-05 21:59:14 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>InRadar</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>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1403714</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-03-05 13:02:50 -0800</bug_when>
    <thetext>Use it instead of AffectsNextSibling/AffectedByPreviousSibling bits, similar to ChildrenAffectedByBackwardPositionalRules bit. This is more efficient and requires way less marking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403715</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-05 13:03:36 -0800</bug_when>
    <thetext>&lt;rdar://problem/38151470&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403716</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-03-05 13:04:06 -0800</bug_when>
    <thetext>&lt;rdar://problem/38151488&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403727</commentid>
    <comment_count>3</comment_count>
      <attachid>335022</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2018-03-05 13:42:36 -0800</bug_when>
    <thetext>Created attachment 335022
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403888</commentid>
    <comment_count>4</comment_count>
      <attachid>335022</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-05 21:59:12 -0800</bug_when>
    <thetext>Comment on attachment 335022
patch

Clearing flags on attachment: 335022

Committed r229307: &lt;https://trac.webkit.org/changeset/229307&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1403889</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-03-05 21:59:14 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>335022</attachid>
            <date>2018-03-05 13:42:36 -0800</date>
            <delta_ts>2018-03-05 21:59:12 -0800</delta_ts>
            <desc>patch</desc>
            <filename>forward-positional-invalidation-3.patch</filename>
            <type>text/plain</type>
            <size>21647</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIyOTI5MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY2IEBACisyMDE4LTAzLTA1ICBBbnR0aSBL
b2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgQ2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyBiaXQgZm9yIG50aC1jaGlsZCBwc2V1ZG8gY2xhc3Mg
bWFya2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTgzMzQxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8zODE1MTQ3MD4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXQgaW5zdGVhZCBvZiBBZmZl
Y3RzTmV4dFNpYmxpbmcvQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZyBiaXRzLCBzaW1pbGFyIHRv
IENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzIGJpdC4KKyAgICAgICAg
VGhpcyBpcyBtb3JlIGVmZmljaWVudCBhbmQgcmVxdWlyZXMgd2F5IGxlc3MgbWFya2luZy4KKwor
ICAgICAgICAqIGNzcy9TZWxlY3RvckNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y291
bnRFbGVtZW50c0JlZm9yZSk6CisgICAgICAgIChXZWJDb3JlOjpjb3VudEVsZW1lbnRzT2ZUeXBl
QmVmb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmUgY29u
c3QpOgorCisgICAgICAgICAgICBNYXJrIHdpdGggQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcy4KKworICAgICAgICAqIGNzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVFbGVtZW50SXNOdGhDaGlsZCk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3Rv
ckNvbXBpbGVyOjpTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudElzTnRoQ2hp
bGRPZik6CisKKyAgICAgICAgICAgICBNYXJrIHdpdGggQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcy4KKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNoZWNrRm9yU2libGluZ1N0eWxlQ2hhbmdlcyk6CisKKyAgICAgICAgICAgIElu
dmFsaWRhdGUgc2libGluZ3MgYWZ0ZXIgYWRkZWQvcmVtb3ZlZCBlbGVtZW50LgorCisgICAgICAg
IChXZWJDb3JlOjpFbGVtZW50OjpzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25h
bFJ1bGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc0ZsYWdzU2V0RHVyaW5nU3R5
bGluZ09mQ2hpbGRyZW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cmFyZURh
dGFDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzIGNvbnN0KToKKworICAg
ICAgICAgICAgQWRkIHRoZSBuZXcgbWFya2luZyBiaXQuCisKKyAgICAgICAgKiBkb20vRWxlbWVu
dC5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphdHRy
aWJ1dGVXaXRob3V0U3luY2hyb25pemF0aW9uIGNvbnN0KToKKworICAgICAgICAgICAgUmVtb3Zl
IGFzc2VydCBzbyB3ZSBjYW4gdXNlIHRoaXMgdG8gZ2V0IHRoZSBjdXJyZW50IHVucmVzb2x2ZWQg
bGF6eSB2YWx1ZSBvZiBzdHlsZSBhdHRyYnV0ZS4KKworICAgICAgICAqIGRvbS9FbGVtZW50UmFy
ZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6Y2hpbGRyZW5BZmZl
Y3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50UmFyZURhdGE6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpFbGVtZW50UmFyZURhdGEp
OgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjpyZXNldFN0eWxlUmVsYXRpb25z
KToKKworICAgICAgICAgICAgIEFkZCB0aGUgbmV3IG1hcmtpbmcgYml0LgorCisgICAgICAgICog
ZG9tL1N0eWxlZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkRWxlbWVudDo6
aW52YWxpZGF0ZVN0eWxlQXR0cmlidXRlKToKKworICAgICAgICAgICAgSW4gc3BlY2lhbCBjYXNl
IHdoZXJlIHdlIGhhdmUgYXR0cmlidXRlIHNlbGVjdG9ycyBmb3Igc3R5bGUgYXR0cmlidXRlLCBz
eW5jaHJvbml6ZSB0aGUgYXR0cmlidXRlIGltbWVkaWF0ZWx5IHNvIHdlIGdldCBpbnZhbGlkYXRp
b24gcmlnaHQuCisgICAgICAgICAgICBUZXN0ZWQgYnkgZmFzdC9jc3Mvc3R5bGUtYXR0cmlidXRl
LWludmFsaWRhdGlvbi1wcm9wYWdhdGVzLXRvLWNvdW50ZWQtc2libGluZ3MuaHRtbCAgICAKKwor
ICAgICAgICAqIHN0eWxlL1N0eWxlUmVsYXRpb25zLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpjb21taXRSZWxhdGlvbnNUb1JlbmRlclN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlOjpjb21taXRSZWxhdGlvbnMpOgorCisgICAgICAgICAgICBDb21taXQgdGhlIG5ldyBiaXQu
CisKKyAgICAgICAgKiBzdHlsZS9TdHlsZVJlbGF0aW9ucy5oOgorCiAyMDE4LTAzLTA1ICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBpbnZhbGlkYXRl
IGFsbCBjaGlsZHJlbiB3aGVuIGRvaW5nIGluc2VydGlvbi9kZWxldGlvbiBpbiBwcmVzZW5jZSBv
ZiBiYWNrd2FyZCBwb3NpdGlvbmFsIHNlbGVjdG9ycwpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L1NlbGVjdG9yQ2hlY2tlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1Nl
bGVjdG9yQ2hlY2tlci5jcHAJKHJldmlzaW9uIDIyOTI5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
cy9TZWxlY3RvckNoZWNrZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjMsMTMgKzEyMywxMCBA
QCBzdGF0aWMgaW5saW5lIGJvb2wgaXNMYXN0T2ZUeXBlKGNvbnN0IEVsCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGNvdW50RWxlbWVudHNCZWZvcmUoU2VsZWN0b3JD
aGVja2VyOjpDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkKK3N0YXRpYyBpbmxpbmUgaW50IGNvdW50RWxlbWVudHNCZWZvcmUoY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKIHsKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZvciAoY29uc3QgRWxl
bWVudCogc2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZyhlbGVtZW50
KTsgc2libGluZzsgc2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGluZygq
c2libGluZykpIHsKLQotICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwg
KnNpYmxpbmcsIFN0eWxlOjpSZWxhdGlvbjo6QWZmZWN0c05leHRTaWJsaW5nKTsKLQogICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IHNpYmxpbmctPmNoaWxkSW5kZXgoKTsKICAgICAgICAgaWYgKGlu
ZGV4KSB7CiAgICAgICAgICAgICBjb3VudCArPSBpbmRleDsKQEAgLTE0MCwxMiArMTM3LDEwIEBA
IHN0YXRpYyBpbmxpbmUgaW50IGNvdW50RWxlbWVudHNCZWZvcmUoU2UKICAgICByZXR1cm4gY291
bnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IGNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoU2Vs
ZWN0b3JDaGVja2VyOjpDaGVja2luZ0NvbnRleHQmIGNoZWNraW5nQ29udGV4dCwgY29uc3QgRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKK3N0YXRpYyBpbmxpbmUg
aW50IGNvdW50RWxlbWVudHNPZlR5cGVCZWZvcmUoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYgdHlwZSkKIHsKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZvciAo
Y29uc3QgRWxlbWVudCogc2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3VzU2libGlu
ZyhlbGVtZW50KTsgc2libGluZzsgc2libGluZyA9IEVsZW1lbnRUcmF2ZXJzYWw6OnByZXZpb3Vz
U2libGluZygqc2libGluZykpIHsKLSAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0Nv
bnRleHQsICpzaWJsaW5nLCBTdHlsZTo6UmVsYXRpb246OkFmZmVjdHNOZXh0U2libGluZyk7Ci0K
ICAgICAgICAgaWYgKHNpYmxpbmctPmhhc1RhZ05hbWUodHlwZSkpCiAgICAgICAgICAgICArK2Nv
dW50OwogICAgIH0KQEAgLTgzNyw3ICs4MzIsOSBAQCBib29sIFNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmUoQ2hlY2tpbmdDCiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzTnRo
Q2hpbGQ6CiAgICAgICAgICAgICBpZiAoIXNlbGVjdG9yLnBhcnNlTnRoKCkpCiAgICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBpZiAoZWxlbWVudC5wYXJlbnRFbGVtZW50KCkpIHsK
KyAgICAgICAgICAgIGlmIChhdXRvKiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVt
ZW50KCkpIHsKKyAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4
dCwgKnBhcmVudEVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9y
d2FyZFBvc2l0aW9uYWxSdWxlcyk7CisKICAgICAgICAgICAgICAgICBpZiAoY29uc3QgQ1NTU2Vs
ZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci5zZWxlY3Rvckxpc3QoKSkgewogICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBzZWxlY3Rvckxpc3RTcGVjaWZpY2l0eTsKICAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtYXRjaFNlbGVjdG9yTGlzdChjaGVja2luZ0NvbnRleHQsIGNv
bnRleHQsIGVsZW1lbnQsICpzZWxlY3Rvckxpc3QsIHNlbGVjdG9yTGlzdFNwZWNpZmljaXR5KSkK
QEAgLTg0NSwxOSArODQyLDE1IEBAIGJvb2wgU2VsZWN0b3JDaGVja2VyOjpjaGVja09uZShDaGVj
a2luZ0MKICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNpdHkgPSBDU1NTZWxlY3Rvcjo6YWRk
U3BlY2lmaWNpdGllcyhzcGVjaWZpY2l0eSwgc2VsZWN0b3JMaXN0U3BlY2lmaWNpdHkpOwogICAg
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGFkZFN0eWxlUmVsYXRpb24oY2hlY2tp
bmdDb250ZXh0LCBlbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OkFmZmVjdGVkQnlQcmV2aW91c1Np
YmxpbmcpOwotCiAgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMTsKICAgICAgICAgICAgICAg
ICBpZiAoY29uc3QgQ1NTU2VsZWN0b3JMaXN0KiBzZWxlY3Rvckxpc3QgPSBzZWxlY3Rvci5zZWxl
Y3Rvckxpc3QoKSkgewogICAgICAgICAgICAgICAgICAgICBmb3IgKEVsZW1lbnQqIHNpYmxpbmcg
PSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoZWxlbWVudCk7IHNpYmxpbmc7IHNp
YmxpbmcgPSBFbGVtZW50VHJhdmVyc2FsOjpwcmV2aW91c1NpYmxpbmcoKnNpYmxpbmcpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwg
KnNpYmxpbmcsIFN0eWxlOjpSZWxhdGlvbjo6QWZmZWN0c05leHRTaWJsaW5nKTsKLQogICAgICAg
ICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaWdub3JlZFNwZWNpZmljaXR5OwogICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKG1hdGNoU2VsZWN0b3JMaXN0KGNoZWNraW5nQ29udGV4dCwgY29u
dGV4dCwgKnNpYmxpbmcsICpzZWxlY3Rvckxpc3QsIGlnbm9yZWRTcGVjaWZpY2l0eSkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKytjb3VudDsKICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvdW50ICs9IGNv
dW50RWxlbWVudHNCZWZvcmUoY2hlY2tpbmdDb250ZXh0LCBlbGVtZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgY291bnQgKz0gY291bnRFbGVtZW50c0JlZm9yZShlbGVtZW50KTsKICAgICAgICAg
ICAgICAgICAgICAgYWRkU3R5bGVSZWxhdGlvbihjaGVja2luZ0NvbnRleHQsIGVsZW1lbnQsIFN0
eWxlOjpSZWxhdGlvbjo6TnRoQ2hpbGRJbmRleCwgY291bnQpOwogICAgICAgICAgICAgICAgIH0K
IApAQCAtODY5LDEwICs4NjIsMTAgQEAgYm9vbCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lKENo
ZWNraW5nQwogICAgICAgICAgICAgaWYgKCFzZWxlY3Rvci5wYXJzZU50aCgpKQogICAgICAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICBpZiAoZWxlbWVudC5wYXJlbnRFbGVtZW50KCkp
IHsKLSAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgZWxl
bWVudCwgU3R5bGU6OlJlbGF0aW9uOjpBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nKTsKKyAgICAg
ICAgICAgIGlmIChhdXRvKiBwYXJlbnRFbGVtZW50ID0gZWxlbWVudC5wYXJlbnRFbGVtZW50KCkp
IHsKKyAgICAgICAgICAgICAgICBhZGRTdHlsZVJlbGF0aW9uKGNoZWNraW5nQ29udGV4dCwgKnBh
cmVudEVsZW1lbnQsIFN0eWxlOjpSZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcyk7CiAKLSAgICAgICAgICAgICAgICBpbnQgY291bnQgPSAxICsgY291bnRF
bGVtZW50c09mVHlwZUJlZm9yZShjaGVja2luZ0NvbnRleHQsIGVsZW1lbnQsIGVsZW1lbnQudGFn
UU5hbWUoKSk7CisgICAgICAgICAgICAgICAgaW50IGNvdW50ID0gMSArIGNvdW50RWxlbWVudHNP
ZlR5cGVCZWZvcmUoZWxlbWVudCwgZWxlbWVudC50YWdRTmFtZSgpKTsKICAgICAgICAgICAgICAg
ICBpZiAoc2VsZWN0b3IubWF0Y2hOdGgoY291bnQpKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2Vs
ZWN0b3JDb21waWxlci5jcHAJKHJldmlzaW9uIDIyOTI5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nz
c2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQ5MCw2ICszNDkw
LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbQogICAgIHsKICAg
ICAgICAgTG9jYWxSZWdpc3RlciBwYXJlbnRFbGVtZW50KG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwog
ICAgICAgICBnZW5lcmF0ZVdhbGtUb1BhcmVudEVsZW1lbnQoZmFpbHVyZUNhc2VzLCBwYXJlbnRF
bGVtZW50KTsKKyAgICAgICAgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9uSWZSZXNvbHZpbmdTdHls
ZShwYXJlbnRFbGVtZW50LCBTdHlsZTo6UmVsYXRpb246OkNoaWxkcmVuQWZmZWN0ZWRCeUZvcndh
cmRQb3NpdGlvbmFsUnVsZXMpOwogICAgIH0KIAogICAgIFZlY3RvcjxzdGQ6OnBhaXI8aW50LCBp
bnQ+LCAzMj4gdmFsaWRTdWJzZXRGaWx0ZXJzOwpAQCAtMzUwMiw5ICszNTAzLDYgQEAgdm9pZCBT
ZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbQogICAgIGlmICh2YWxpZFN1YnNldEZp
bHRlcnMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIWlzQWRqYWNlbnRS
ZWxhdGlvbihmcmFnbWVudC5yZWxhdGlvblRvUmlnaHRGcmFnbWVudCkpCi0gICAgICAgIGdlbmVy
YXRlQWRkU3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5bGUoZWxlbWVudEFkZHJlc3NSZWdpc3Rl
ciwgU3R5bGU6OlJlbGF0aW9uOjpBZmZlY3RlZEJ5UHJldmlvdXNTaWJsaW5nKTsKLQogICAgIC8v
IFNldHVwIHRoZSBjb3VudGVyIGF0IDEuCiAgICAgTG9jYWxSZWdpc3RlcldpdGhQcmVmZXJlbmNl
IGVsZW1lbnRDb3VudGVyKG1fcmVnaXN0ZXJBbGxvY2F0b3IsIEpTQzo6R1BSSW5mbzo6YXJndW1l
bnRHUFIxKTsKICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKDEp
LCBlbGVtZW50Q291bnRlcik7CkBAIC0zNTIxLDcgKzM1MTksNiBAQCB2b2lkIFNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtCiAKICAgICAgICAgQXNzZW1ibGVyOjpKdW1wTGlzdCBu
b0NhY2hlZENoaWxkSW5kZXhDYXNlczsKICAgICAgICAgZ2VuZXJhdGVXYWxrVG9QcmV2aW91c0Fk
amFjZW50RWxlbWVudChub01vcmVTaWJsaW5nc0Nhc2VzLCBwcmV2aW91c1NpYmxpbmcpOwotICAg
ICAgICBnZW5lcmF0ZUFkZFN0eWxlUmVsYXRpb25JZlJlc29sdmluZ1N0eWxlKHByZXZpb3VzU2li
bGluZywgU3R5bGU6OlJlbGF0aW9uOjpBZmZlY3RzTmV4dFNpYmxpbmcpOwogICAgICAgICBub0Nh
Y2hlZENoaWxkSW5kZXhDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoVGVzdDMyKEFzc2Vt
Ymxlcjo6WmVybywgQXNzZW1ibGVyOjpBZGRyZXNzKHByZXZpb3VzU2libGluZywgTm9kZTo6bm9k
ZUZsYWdzTWVtb3J5T2Zmc2V0KCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihOb2RlOjpmbGFn
SGFzUmFyZURhdGEoKSkpKTsKICAgICAgICAgewogICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBl
bGVtZW50UmFyZURhdGEobV9yZWdpc3RlckFsbG9jYXRvcik7CkBAIC0zNTM3LDcgKzM1MzQsNiBA
QCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtCiAKICAgICAgICAgQXNz
ZW1ibGVyOjpMYWJlbCBsb29wU3RhcnQgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOwogICAgICAgICBn
ZW5lcmF0ZVdhbGtUb1ByZXZpb3VzQWRqYWNlbnRFbGVtZW50KG5vTW9yZVNpYmxpbmdzQ2FzZXMs
IHByZXZpb3VzU2libGluZyk7Ci0gICAgICAgIGdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbklmUmVz
b2x2aW5nU3R5bGUocHJldmlvdXNTaWJsaW5nLCBTdHlsZTo6UmVsYXRpb246OkFmZmVjdHNOZXh0
U2libGluZyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLmFkZDMyKEFzc2VtYmxlcjo6VHJ1c3RlZElt
bTMyKDEpLCBlbGVtZW50Q291bnRlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLmp1bXAoKS5saW5r
VG8obG9vcFN0YXJ0LCAmbV9hc3NlbWJsZXIpOwogICAgICAgICBub01vcmVTaWJsaW5nc0Nhc2Vz
LmxpbmsoJm1fYXNzZW1ibGVyKTsKQEAgLTM1NTQsNiArMzU1MCw3IEBAIHZvaWQgU2VsZWN0b3JD
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW0KICAgICB7CiAgICAgICAgIExvY2FsUmVnaXN0ZXIg
cGFyZW50RWxlbWVudChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKICAgICAgICAgZ2VuZXJhdGVXYWxr
VG9QYXJlbnRFbGVtZW50KGZhaWx1cmVDYXNlcywgcGFyZW50RWxlbWVudCk7CisgICAgICAgIGdl
bmVyYXRlQWRkU3R5bGVSZWxhdGlvbklmUmVzb2x2aW5nU3R5bGUocGFyZW50RWxlbWVudCwgU3R5
bGU6OlJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzKTsK
ICAgICB9CiAKICAgICAvLyBUaGUgaW5pdGlhbCBlbGVtZW50IG11c3QgbWF0Y2ggdGhlIHNlbGVj
dG9yIGxpc3QuCkBAIC0zNTY5LDkgKzM1NjYsNiBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVFbGVtCiAgICAgaWYgKHZhbGlkU3Vic2V0RmlsdGVycy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmICghaXNBZGphY2VudFJlbGF0aW9uKGZyYWdtZW50LnJl
bGF0aW9uVG9SaWdodEZyYWdtZW50KSkKLSAgICAgICAgZ2VuZXJhdGVBZGRTdHlsZVJlbGF0aW9u
SWZSZXNvbHZpbmdTdHlsZShlbGVtZW50QWRkcmVzc1JlZ2lzdGVyLCBTdHlsZTo6UmVsYXRpb246
OkFmZmVjdGVkQnlQcmV2aW91c1NpYmxpbmcpOwotCiAgICAgZm9yIChjb25zdCBOdGhDaGlsZE9m
U2VsZWN0b3JJbmZvKiBudGhDaGlsZE9mU2VsZWN0b3JJbmZvIDogdmFsaWRTdWJzZXRGaWx0ZXJz
KSB7CiAgICAgICAgIC8vIFNldHVwIHRoZSBjb3VudGVyIGF0IDEuCiAgICAgICAgIExvY2FsUmVn
aXN0ZXJXaXRoUHJlZmVyZW5jZSBlbGVtZW50Q291bnRlcihtX3JlZ2lzdGVyQWxsb2NhdG9yLCBK
U0M6OkdQUkluZm86OmFyZ3VtZW50R1BSMSk7CkBAIC0zNTg3LDcgKzM1ODEsNiBAQCB2b2lkIFNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtCiAgICAgICAgICAgICBBc3NlbWJsZXI6
OkxhYmVsIGxvb3BTdGFydCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7CiAKICAgICAgICAgICAgIGdl
bmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2VudEVsZW1lbnQobm9Nb3JlU2libGluZ3NDYXNlcywg
cHJldmlvdXNTaWJsaW5nKTsKLSAgICAgICAgICAgIGdlbmVyYXRlQWRkU3R5bGVSZWxhdGlvbklm
UmVzb2x2aW5nU3R5bGUocHJldmlvdXNTaWJsaW5nLCBTdHlsZTo6UmVsYXRpb246OkFmZmVjdHNO
ZXh0U2libGluZyk7CiAKICAgICAgICAgICAgIEFzc2VtYmxlcjo6SnVtcExpc3QgbG9jYWxGYWls
dXJlQ2FzZXM7CiAgICAgICAgICAgICBnZW5lcmF0ZUVsZW1lbnRNYXRjaGVzU2VsZWN0b3JMaXN0
KGxvY2FsRmFpbHVyZUNhc2VzLCBwcmV2aW91c1NpYmxpbmcsIG50aENoaWxkT2ZTZWxlY3Rvcklu
Zm8tPnNlbGVjdG9yTGlzdCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCShyZXZpc2lvbiAy
MjkyOTApCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTIwNzMsOSArMjA3MywxMyBAQCBzdGF0aWMgdm9pZCBjaGVja0ZvclNpYmxpbmdTdHlsZUNo
YW5nZXMoCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBCYWNrd2FyZCBwb3NpdGlvbmFsIHNl
bGVjdG9ycyBpbmNsdWRlIG50aC1sYXN0LWNoaWxkLCBudGgtbGFzdC1vZi10eXBlLCBsYXN0LW9m
LXR5cGUgYW5kIG9ubHktb2YtdHlwZS4KICAgICAvLyBXZSBoYXZlIHRvIGludmFsaWRhdGUgZXZl
cnl0aGluZyBmb2xsb3dpbmcgdGhlIGluc2VydGlvbiBwb2ludCBpbiB0aGUgZm9yd2FyZCBjYXNl
LCBhbmQgZXZlcnl0aGluZyBiZWZvcmUgdGhlIGluc2VydGlvbiBwb2ludCBpbiB0aGUKICAgICAv
LyBiYWNrd2FyZCBjYXNlLgorICAgIGlmIChwYXJlbnQuY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpKSB7CisgICAgICAgIGZvciAoYXV0byogbmV4dCA9IGVsZW1lbnRB
ZnRlckNoYW5nZTsgbmV4dDsgbmV4dCA9IG5leHQtPm5leHRFbGVtZW50U2libGluZygpKQorICAg
ICAgICAgICAgbmV4dC0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOworICAgIH0KKyAgICAv
LyBCYWNrd2FyZCBwb3NpdGlvbmFsIHNlbGVjdG9ycyBpbmNsdWRlIG50aC1sYXN0LWNoaWxkLCBu
dGgtbGFzdC1vZi10eXBlLCBsYXN0LW9mLXR5cGUgYW5kIG9ubHktb2YtdHlwZS4KICAgICBpZiAo
cGFyZW50LmNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkpIHsKICAg
ICAgICAgZm9yIChhdXRvKiBwcmV2aW91cyA9IGVsZW1lbnRCZWZvcmVDaGFuZ2U7IHByZXZpb3Vz
OyBwcmV2aW91cyA9IHByZXZpb3VzLT5wcmV2aW91c0VsZW1lbnRTaWJsaW5nKCkpCiAgICAgICAg
ICAgICBwcmV2aW91cy0+aW52YWxpZGF0ZVN0eWxlRm9yU3VidHJlZSgpOwpAQCAtMjgwOSw2ICsy
ODEzLDExIEBAIHZvaWQgRWxlbWVudDo6c2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygKICAgICBl
bnN1cmVFbGVtZW50UmFyZURhdGEoKS5zZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKHRydWUpOwog
fQogCit2b2lkIEVsZW1lbnQ6OnNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMoKQoreworICAgIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLnNldENoaWxkcmVuQWZmZWN0
ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXModHJ1ZSk7Cit9CisKIHZvaWQgRWxlbWVudDo6c2V0
Q2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKQogewogICAgIGVuc3Vy
ZUVsZW1lbnRSYXJlRGF0YSgpLnNldENoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25h
bFJ1bGVzKHRydWUpOwpAQCAtMjgzNCw2ICsyODQzLDcgQEAgYm9vbCBFbGVtZW50OjpoYXNGbGFn
c1NldER1cmluZ1N0eWxpbmdPZgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHJh
cmVEYXRhU3R5bGVBZmZlY3RlZEJ5QWN0aXZlKCkKICAgICAgICAgfHwgcmFyZURhdGFDaGlsZHJl
bkFmZmVjdGVkQnlEcmFnKCkKKyAgICAgICAgfHwgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlG
b3J3YXJkUG9zaXRpb25hbFJ1bGVzKCkKICAgICAgICAgfHwgcmFyZURhdGFDaGlsZHJlbkFmZmVj
dGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpCiAgICAgICAgIHx8IHJhcmVEYXRhQ2hpbGRy
ZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiB9CkBA
IC0yODYyLDYgKzI4NzIsMTIgQEAgYm9vbCBFbGVtZW50OjpyYXJlRGF0YUNoaWxkcmVuQWZmZWN0
ZWRCeQogICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZlY3RlZEJ5RHJh
ZygpOwogfQogCitib29sIEVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2Fy
ZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0Cit7CisgICAgQVNTRVJUKGhhc1JhcmVEYXRhKCkpOwor
ICAgIHJldHVybiBlbGVtZW50UmFyZURhdGEoKS0+Y2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBv
c2l0aW9uYWxSdWxlcygpOworfQorCiBib29sIEVsZW1lbnQ6OnJhcmVEYXRhQ2hpbGRyZW5BZmZl
Y3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdAogewogICAgIEFTU0VSVChoYXNS
YXJlRGF0YSgpKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkocmV2aXNpb24gMjI5MjkwKQorKysg
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzMxLDYgKzMz
MSw3IEBAIHB1YmxpYzoKICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeURyYWcoKSBjb25zdCB7
IHJldHVybiBoYXNSYXJlRGF0YSgpICYmIHJhcmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygp
OyB9CiAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlGaXJzdENoaWxkUnVsZXMoKSBjb25zdCB7
IHJldHVybiBnZXRGbGFnKENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlc0ZsYWcpOyB9
CiAgICAgYm9vbCBjaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcygpIGNvbnN0IHsgcmV0
dXJuIGdldEZsYWcoQ2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXNGbGFnKTsgfQorICAg
IGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcygpIGNvbnN0IHsg
cmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJk
UG9zaXRpb25hbFJ1bGVzKCk7IH0KICAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gaGFzUmFyZURhdGEoKSAmJiByYXJlRGF0
YUNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7IH0KICAgICBib29s
IGNoaWxkcmVuQWZmZWN0ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygp
IGNvbnN0IHsgcmV0dXJuIGhhc1JhcmVEYXRhKCkgJiYgcmFyZURhdGFDaGlsZHJlbkFmZmVjdGVk
QnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKTsgfQogICAgIGJvb2wgYWZm
ZWN0c05leHRTaWJsaW5nRWxlbWVudFN0eWxlKCkgY29uc3QgeyByZXR1cm4gZ2V0RmxhZyhBZmZl
Y3RzTmV4dFNpYmxpbmdFbGVtZW50U3R5bGUpOyB9CkBAIC0zNDUsNiArMzQ2LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5RHJhZygpOwogICAgIHZvaWQgc2V0Q2hp
bGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzKCkgeyBzZXRGbGFnKENoaWxkcmVuQWZmZWN0
ZWRCeUZpcnN0Q2hpbGRSdWxlc0ZsYWcpOyB9CiAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVk
QnlMYXN0Q2hpbGRSdWxlcygpIHsgc2V0RmxhZyhDaGlsZHJlbkFmZmVjdGVkQnlMYXN0Q2hpbGRS
dWxlc0ZsYWcpOyB9CisgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRp
b25hbFJ1bGVzKCk7CiAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0
aW9uYWxSdWxlcygpOwogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNl
ZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCk7CiAgICAgdm9pZCBzZXRBZmZlY3RzTmV4dFNpYmxp
bmdFbGVtZW50U3R5bGUoKSB7IHNldEZsYWcoQWZmZWN0c05leHRTaWJsaW5nRWxlbWVudFN0eWxl
KTsgfQpAQCAtNjQ4LDYgKzY1MCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCByYXJlRGF0YVN0eWxl
QWZmZWN0ZWRCeUFjdGl2ZSgpIGNvbnN0OwogICAgIGJvb2wgcmFyZURhdGFDaGlsZHJlbkFmZmVj
dGVkQnlEcmFnKCkgY29uc3Q7CiAgICAgYm9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRCeUxh
c3RDaGlsZFJ1bGVzKCkgY29uc3Q7CisgICAgYm9vbCByYXJlRGF0YUNoaWxkcmVuQWZmZWN0ZWRC
eUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdDsKICAgICBib29sIHJhcmVEYXRhQ2hpbGRy
ZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoKSBjb25zdDsKICAgICBib29sIHJh
cmVEYXRhQ2hpbGRyZW5BZmZlY3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1
bGVzKCkgY29uc3Q7CiAgICAgdW5zaWduZWQgcmFyZURhdGFDaGlsZEluZGV4KCkgY29uc3Q7CkBA
IC03MDYsNyArNzA5LDYgQEAgaW5saW5lIGJvb2wgRWxlbWVudDo6aGFzQXR0cmlidXRlV2l0aG91
dAogCiBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nJiBFbGVtZW50OjphdHRyaWJ1dGVXaXRob3V0
U3luY2hyb25pemF0aW9uKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUpIGNvbnN0CiB7Ci0gICAg
QVNTRVJUKGZhc3RBdHRyaWJ1dGVMb29rdXBBbGxvd2VkKG5hbWUpKTsKICAgICBpZiAoZWxlbWVu
dERhdGEoKSkgewogICAgICAgICBpZiAoY29uc3QgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBmaW5k
QXR0cmlidXRlQnlOYW1lKG5hbWUpKQogICAgICAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZS0+dmFs
dWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgJKHJldmlzaW9uIDIy
OTI5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAkod29ya2luZyBj
b3B5KQpAQCAtNzAsNiArNzAsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIGNoaWxkcmVuQWZmZWN0
ZWRCeUxhc3RDaGlsZFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9jaGlsZHJlbkFmZmVjdGVkQnlM
YXN0Q2hpbGRSdWxlczsgfQogICAgIHZvaWQgc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxk
UnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUxhc3RDaGlsZFJ1bGVzID0g
dmFsdWU7IH0KKyAgICBib29sIGNoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVs
ZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXM7IH0KKyAgICB2b2lkIHNldENoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMoYm9vbCB2YWx1ZSkgeyBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFs
UnVsZXMgPSB2YWx1ZTsgfQogICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3Np
dGlvbmFsUnVsZXMoKSBjb25zdCB7IHJldHVybiBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJk
UG9zaXRpb25hbFJ1bGVzOyB9CiAgICAgdm9pZCBzZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2Fy
ZFBvc2l0aW9uYWxSdWxlcyhib29sIHZhbHVlKSB7IG1fY2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dh
cmRQb3NpdGlvbmFsUnVsZXMgPSB2YWx1ZTsgfQogICAgIGJvb2wgY2hpbGRyZW5BZmZlY3RlZEJ5
UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKCkgY29uc3QgeyByZXR1cm4gbV9j
aGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXM7IH0K
QEAgLTEyOCw2ICsxMzAsNyBAQCBwcml2YXRlOgogICAgIC8vIFdlIG9wdGltaXplIGZvciA6Zmly
c3QtY2hpbGQgYW5kIDpsYXN0LWNoaWxkLiBUaGUgb3RoZXIgcG9zaXRpb25hbCBjaGlsZCBzZWxl
Y3RvcnMgbGlrZSBudGgtY2hpbGQgb3IKICAgICAvLyAqLWNoaWxkLW9mLXR5cGUsIHdlIHdpbGwg
anVzdCBnaXZlIHVwIGFuZCByZS1ldmFsdWF0ZSB3aGVuZXZlciBjaGlsZHJlbiBjaGFuZ2UgYXQg
YWxsLgogICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMgOiAx
OworICAgIHVuc2lnbmVkIG1fY2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
cyA6IDE7CiAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9u
YWxSdWxlcyA6IDE7CiAgICAgdW5zaWduZWQgbV9jaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJh
c2VkQmFja3dhcmRQb3NpdGlvbmFsUnVsZXMgOiAxOwogCkBAIC0xNjgsNiArMTcxLDcgQEAgaW5s
aW5lIEVsZW1lbnRSYXJlRGF0YTo6RWxlbWVudFJhcmVEYXRhKAogICAgICwgbV9jaGlsZHJlbkFm
ZmVjdGVkQnlIb3ZlcihmYWxzZSkKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5RHJhZyhmYWxz
ZSkKICAgICAsIG1fY2hpbGRyZW5BZmZlY3RlZEJ5TGFzdENoaWxkUnVsZXMoZmFsc2UpCisgICAg
LCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUZvcndhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpCiAgICAg
LCBtX2NoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzKGZhbHNlKQogICAg
ICwgbV9jaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlvbmFsUnVs
ZXMoZmFsc2UpCiAgICAgLCBtX21pbmltdW1TaXplRm9yUmVzaXppbmcoZGVmYXVsdE1pbmltdW1T
aXplRm9yUmVzaXppbmcoKSkKQEAgLTIwNiw2ICsyMTAsNyBAQCBpbmxpbmUgdm9pZCBFbGVtZW50
UmFyZURhdGE6OnJlc2V0U3R5bGVSCiAgICAgc2V0U3R5bGVBZmZlY3RlZEJ5QWN0aXZlKGZhbHNl
KTsKICAgICBzZXRDaGlsZHJlbkFmZmVjdGVkQnlEcmFnKGZhbHNlKTsKICAgICBzZXRDaGlsZHJl
bkFmZmVjdGVkQnlMYXN0Q2hpbGRSdWxlcyhmYWxzZSk7CisgICAgc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7CiAgICAgc2V0Q2hpbGRyZW5BZmZlY3Rl
ZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMoZmFsc2UpOwogICAgIHNldENoaWxkcmVuQWZmZWN0
ZWRCeVByb3BlcnR5QmFzZWRCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcyhmYWxzZSk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZG9tL1N0eWxlZEVsZW1lbnQuY3BwCShyZXZpc2lvbiAyMjkyOTApCisrKyBT
b3VyY2UvV2ViQ29yZS9kb20vU3R5bGVkRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDYgKzI0LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJTdHlsZWRFbGVtZW50
LmgiCiAKKyNpbmNsdWRlICJBdHRyaWJ1dGVDaGFuZ2VJbnZhbGlkYXRpb24uaCIKICNpbmNsdWRl
ICJDU1NJbWFnZVZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NT
U3R5bGVTaGVldC5oIgpAQCAtMTQ1LDYgKzE0NiwxOSBAQCB2b2lkIFN0eWxlZEVsZW1lbnQ6OnN0
eWxlQXR0cmlidXRlQ2hhbmdlCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZh
bGlkYXRlU3R5bGVBdHRyKGRvY3VtZW50KCksICp0aGlzKTsKIH0KIAorc3RhdGljIGJvb2wgc2hv
dWxkU3luY2hyb25pemVTdHlsZUF0dHJpYnV0ZUltbWVkaWF0ZWx5Rm9ySW52YWxpZGF0aW9uKFN0
eWxlZEVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgLy8gSW4gcmFyZSBjYXNlIHRoZXJlIGlzIGEg
Y29tcGxleCBhdHRyaWJ1dGUgc2VsZWN0b3IgdGFyZ2V0aW5nIHN0eWxlIGF0dHJpYnV0ZSAobGlr
ZSAiW3N0eWxlXSB+IGRpdiIpIHdlIG5lZWQgdG8gc3luY2hyb25pemUgaW1tZWRpYXRlbHkuCisg
ICAgYXV0byogcnVsZVNldHMgPSBlbGVtZW50LnN0eWxlUmVzb2x2ZXIoKS5ydWxlU2V0cygpLmF0
dHJpYnV0ZUludmFsaWRhdGlvblJ1bGVTZXRzKHN0eWxlQXR0ci0+bG9jYWxOYW1lKCkpOworICAg
IGlmICghcnVsZVNldHMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKGF1dG8mIHJ1
bGVTZXQgOiAqcnVsZVNldHMpIHsKKyAgICAgICAgaWYgKHJ1bGVTZXQubWF0Y2hFbGVtZW50ICE9
IE1hdGNoRWxlbWVudDo6U3ViamVjdCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgU3R5bGVkRWxlbWVudDo6aW52YWxpZGF0ZVN0
eWxlQXR0cmlidXRlKCkKIHsKICAgICBpZiAodXNlc1N0eWxlQmFzZWRFZGl0YWJpbGl0eSgqaW5s
aW5lU3R5bGUoKSkpCkBAIC0xNTIsNiArMTY2LDE1IEBAIHZvaWQgU3R5bGVkRWxlbWVudDo6aW52
YWxpZGF0ZVN0eWxlQXR0cmkKIAogICAgIGVsZW1lbnREYXRhKCktPnNldFN0eWxlQXR0cmlidXRl
SXNEaXJ0eSh0cnVlKTsKICAgICBpbnZhbGlkYXRlU3R5bGUoKTsKKworICAgIGlmIChzaG91bGRT
eW5jaHJvbml6ZVN0eWxlQXR0cmlidXRlSW1tZWRpYXRlbHlGb3JJbnZhbGlkYXRpb24oKnRoaXMp
KSB7CisgICAgICAgIGlmIChhdXRvKiBpbmxpbmVTdHlsZSA9IHRoaXMtPmlubGluZVN0eWxlKCkp
IHsKKyAgICAgICAgICAgIGVsZW1lbnREYXRhKCktPnNldFN0eWxlQXR0cmlidXRlSXNEaXJ0eShm
YWxzZSk7CisgICAgICAgICAgICBhdXRvIG5ld1ZhbHVlID0gaW5saW5lU3R5bGUtPmFzVGV4dCgp
OworICAgICAgICAgICAgU3R5bGU6OkF0dHJpYnV0ZUNoYW5nZUludmFsaWRhdGlvbiBzdHlsZUlu
dmFsaWRhdGlvbigqdGhpcywgc3R5bGVBdHRyLCBhdHRyaWJ1dGVXaXRob3V0U3luY2hyb25pemF0
aW9uKHN0eWxlQXR0ciksIG5ld1ZhbHVlKTsKKyAgICAgICAgICAgIHNldFN5bmNocm9uaXplZExh
enlBdHRyaWJ1dGUoc3R5bGVBdHRyLCBuZXdWYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CiB9CiAK
IHZvaWQgU3R5bGVkRWxlbWVudDo6aW5saW5lU3R5bGVDaGFuZ2VkKCkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVJlbGF0aW9ucy5jcHAJKHJldmlzaW9uIDIyOTI5MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYs
NiArNzYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8UmVsYXRpb25zPiBjb21taXRSZWxhdGlvCiAgICAg
ICAgIGNhc2UgUmVsYXRpb246OkFmZmVjdGVkQnlGb2N1c1dpdGhpbjoKICAgICAgICAgY2FzZSBS
ZWxhdGlvbjo6QWZmZWN0ZWRCeVByZXZpb3VzU2libGluZzoKICAgICAgICAgY2FzZSBSZWxhdGlv
bjo6QWZmZWN0c05leHRTaWJsaW5nOgorICAgICAgICBjYXNlIFJlbGF0aW9uOjpDaGlsZHJlbkFm
ZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzOgogICAgICAgICBjYXNlIFJlbGF0aW9uOjpD
aGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlczoKICAgICAgICAgY2FzZSBS
ZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rmlyc3RDaGlsZFJ1bGVzOgogICAgICAgICBjYXNl
IFJlbGF0aW9uOjpDaGlsZHJlbkFmZmVjdGVkQnlQcm9wZXJ0eUJhc2VkQmFja3dhcmRQb3NpdGlv
bmFsUnVsZXM6CkBAIC0xMTksNiArMTIwLDkgQEAgdm9pZCBjb21taXRSZWxhdGlvbnMoc3RkOjp1
bmlxdWVfcHRyPFJlbAogICAgICAgICAgICAgICAgIHNpYmxpbmctPnNldEFmZmVjdHNOZXh0U2li
bGluZ0VsZW1lbnRTdHlsZSgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKyAgICAg
ICAgY2FzZSBSZWxhdGlvbjo6Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0aW9uYWxSdWxl
czoKKyAgICAgICAgICAgIGVsZW1lbnQuc2V0Q2hpbGRyZW5BZmZlY3RlZEJ5Rm9yd2FyZFBvc2l0
aW9uYWxSdWxlcygpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUmVsYXRpb246
OkNoaWxkcmVuQWZmZWN0ZWRCeUJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzOgogICAgICAgICAgICAg
ZWxlbWVudC5zZXRDaGlsZHJlbkFmZmVjdGVkQnlCYWNrd2FyZFBvc2l0aW9uYWxSdWxlcygpOwog
ICAgICAgICAgICAgYnJlYWs7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVJlbGF0
aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRpb25z
LmgJKHJldmlzaW9uIDIyOTI5MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlUmVsYXRp
b25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ2LDYgKzQ2LDcgQEAgc3RydWN0IFJlbGF0aW9uIHsK
ICAgICAgICAgQWZmZWN0ZWRCeVByZXZpb3VzU2libGluZywKICAgICAgICAgLy8gRm9yIEFmZmVj
dHNOZXh0U2libGluZyAndmFsdWUnIHRlbGxzIGhvdyBtYW55IGVsZW1lbnQgc2libGluZ3MgdG8g
bWFyayBzdGFydGluZyB3aXRoICdlbGVtZW50Jy4KICAgICAgICAgQWZmZWN0c05leHRTaWJsaW5n
LAorICAgICAgICBDaGlsZHJlbkFmZmVjdGVkQnlGb3J3YXJkUG9zaXRpb25hbFJ1bGVzLCAKICAg
ICAgICAgQ2hpbGRyZW5BZmZlY3RlZEJ5QmFja3dhcmRQb3NpdGlvbmFsUnVsZXMsCiAgICAgICAg
IENoaWxkcmVuQWZmZWN0ZWRCeUZpcnN0Q2hpbGRSdWxlcywKICAgICAgICAgQ2hpbGRyZW5BZmZl
Y3RlZEJ5UHJvcGVydHlCYXNlZEJhY2t3YXJkUG9zaXRpb25hbFJ1bGVzLAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>