<?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>137766</bug_id>
          
          <creation_ts>2014-10-15 20:33:28 -0700</creation_ts>
          <short_desc>Use is&lt;&gt;() / downcast&lt;&gt;() for BasicShape subclasses</short_desc>
          <delta_ts>2014-10-16 18:54:22 -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>
          <dependson>137424</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>kling</cc>
    
    <cc>mihnea</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1042054</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-15 20:33:28 -0700</bug_when>
    <thetext>Use is&lt;&gt;() / downcast&lt;&gt;() for BasicShape subclasses.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042055</commentid>
    <comment_count>1</comment_count>
      <attachid>239923</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-15 20:39:50 -0700</bug_when>
    <thetext>Created attachment 239923
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042156</commentid>
    <comment_count>2</comment_count>
      <attachid>239923</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-10-16 12:37:20 -0700</bug_when>
    <thetext>Comment on attachment 239923
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042264</commentid>
    <comment_count>3</comment_count>
      <attachid>239923</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-16 18:54:15 -0700</bug_when>
    <thetext>Comment on attachment 239923
Patch

Clearing flags on attachment: 239923

Committed r174805: &lt;http://trac.webkit.org/changeset/174805&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042265</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-10-16 18:54:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239923</attachid>
            <date>2014-10-15 20:39:50 -0700</date>
            <delta_ts>2014-10-16 18:54:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137766-20141015203955.patch</filename>
            <type>text/plain</type>
            <size>37716</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc0NzU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTM4ZmIyZjk5NjJlZTUx
MjA3OTFmMDFlZGJmMjQwMzI3MDc5YWJkMi4uOWVjOTA1NDJmYjliOGMwODU2YWMxODYzZDcyZjc4
MDA1OGUwZjE3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU3IEBACiAyMDE0LTEwLTE1ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgVXNlIGlzPD4oKSAvIGRvd25j
YXN0PD4oKSBmb3IgQmFzaWNTaGFwZSBzdWJjbGFzc2VzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzc3NjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVc2UgaXM8PigpIC8gZG93bmNhc3Q8PigpIGZvciBC
YXNpY1NoYXBlIHN1YmNsYXNzZXMgYW5kIGNsZWFuIHVwIHRoZQorICAgICAgICBzdXJyb3VuZGlu
ZyBjb2RlLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisg
ICAgICAgICogY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
dmFsdWVGb3JCYXNpY1NoYXBlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhc2ljU2hhcGVGb3JWYWx1
ZSk6CisgICAgICAgICogY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuaDoKKyAgICAgICAgKiBjc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNoYXBl
UHJvcGVydHlWYWx1ZSk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlBbmlt
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmxlbmRGdW5jKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXBlQ2xpcFBh
dGhPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIFRha2UgYSBQYXNzUmVmPEJhc2ljU2hhcGU+
IGluIGFyZ3VtZW50IHRvIG1ha2UgaXQgb2J2aW91cyBpdCBpcyBuZXZlcgorICAgICAgICBudWxs
LgorCisgICAgICAgIChXZWJDb3JlOjpTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpiYXNpY1NoYXBl
KToKKyAgICAgICAgUmV0dXJuIGEgcmVmZXJlbmNlIGluc3RlYWQgb2YgYSBwb2ludGVyIGFzIGl0
IGNhbiBuZXZlciByZXR1cm4gbnVsbC4KKworICAgICAgICAoV2ViQ29yZTo6U2hhcGVDbGlwUGF0
aE9wZXJhdGlvbjo6d2luZFJ1bGUpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcGVDbGlwUGF0aE9w
ZXJhdGlvbjo6cGF0aEZvclJlZmVyZW5jZVJlY3QpOgorICAgICAgICBNYWtlIGl0IG5vbi1jb25z
dCBkdWUgdG8gdGhlIGNvbnN0LWNvcnJlY3RuZXNzIG9mIFJlZjo6Z2V0KCkuCisKKyAgICAgICAg
KFdlYkNvcmU6OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb246OlNoYXBlQ2xpcFBhdGhPcGVyYXRpb24p
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCbG9jay5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJM
YXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6c2V0dXBDbGlwUGF0aCk6
CisgICAgICAgICogcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTaGFwZTo6Y3JlYXRlU2hhcGUpOgorICAgICAgICAqIHJlbmRlcmluZy9zaGFwZXMvU2hhcGUu
aDoKKyAgICAgICAgKiByZW5kZXJpbmcvc2hhcGVzL1NoYXBlT3V0c2lkZUluZm8uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2hhcGVPdXRzaWRlSW5mbzo6Y29tcHV0ZWRTaGFwZSk6CisgICAgICAg
ICogcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkJh
c2ljU2hhcGU6OmNhbkJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVDaXJjbGU6
OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkJhc2ljU2hhcGVFbGxpcHNlOjpibGVuZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpCYXNpY1NoYXBlUG9seWdvbjo6YmxlbmQpOgorICAgICAgICAoV2Vi
Q29yZTo6QmFzaWNTaGFwZUluc2V0OjpibGVuZCk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L0Jhc2ljU2hhcGVzLmg6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250
ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JlbmRlcmluZ0NvbnRleHQ6OnByZXBhcmVU
b1JlbmRlclNWR0NvbnRlbnQpOgorCisyMDE0LTEwLTE1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CisKICAgICAgICAgW01hY10gRml4IGluZWZmaWNpZW5jaWVzIGluIFJlc291cmNl
UmVzcG9uc2U6OnBsYXRmb3JtTGF6eUluaXQoSW5pdExldmVsKSAtIFBhcnQgMgogICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3NzIxCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmNwcAppbmRleCA0ZmNmNGNlZmIyYjkyNmE2
ZmQ1NWJkYjhhNzMwNDk4ZjAyMzVjYWQwLi45NmUxNGRhY2QwNjBjY2QwZWQ4MDRhNzVkNjZhYmRh
MjJjZTdhOWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0
aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuY3Bw
CkBAIC02NCwzOSArNjQsMzkgQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTUHJpbWl0aXZlVmFsdWU+
IGJhc2ljU2hhcGVSYWRpdXNUb0NTU1ZhbHVlKGNvbnN0IFJlbmRlclN0eWwKICAgICByZXR1cm4g
MDsKIH0KIAotUGFzc1JlZjxDU1NWYWx1ZT4gdmFsdWVGb3JCYXNpY1NoYXBlKGNvbnN0IFJlbmRl
clN0eWxlKiBzdHlsZSwgY29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFwZSkKK1Bhc3NSZWY8Q1NT
VmFsdWU+IHZhbHVlRm9yQmFzaWNTaGFwZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0
IEJhc2ljU2hhcGUmIGJhc2ljU2hhcGUpCiB7CiAgICAgQ1NTVmFsdWVQb29sJiBwb29sID0gY3Nz
VmFsdWVQb29sKCk7CiAKICAgICBSZWZQdHI8Q1NTQmFzaWNTaGFwZT4gYmFzaWNTaGFwZVZhbHVl
OwotICAgIHN3aXRjaCAoYmFzaWNTaGFwZS0+dHlwZSgpKSB7CisgICAgc3dpdGNoIChiYXNpY1No
YXBlLnR5cGUoKSkgewogICAgIGNhc2UgQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUNpcmNsZVR5cGU6
IHsKLSAgICAgICAgY29uc3QgQmFzaWNTaGFwZUNpcmNsZSogY2lyY2xlID0gdG9CYXNpY1NoYXBl
Q2lyY2xlKGJhc2ljU2hhcGUpOworICAgICAgICBjb25zdCBhdXRvJiBjaXJjbGUgPSBkb3duY2Fz
dDxCYXNpY1NoYXBlQ2lyY2xlPihiYXNpY1NoYXBlKTsKICAgICAgICAgUmVmUHRyPENTU0Jhc2lj
U2hhcGVDaXJjbGU+IGNpcmNsZVZhbHVlID0gQ1NTQmFzaWNTaGFwZUNpcmNsZTo6Y3JlYXRlKCk7
CiAKLSAgICAgICAgY2lyY2xlVmFsdWUtPnNldENlbnRlclgodmFsdWVGb3JDZW50ZXJDb29yZGlu
YXRlKHBvb2wsIHN0eWxlLCBjaXJjbGUtPmNlbnRlclgoKSwgSE9SSVpPTlRBTCkpOwotICAgICAg
ICBjaXJjbGVWYWx1ZS0+c2V0Q2VudGVyWSh2YWx1ZUZvckNlbnRlckNvb3JkaW5hdGUocG9vbCwg
c3R5bGUsIGNpcmNsZS0+Y2VudGVyWSgpLCBWRVJUSUNBTCkpOwotICAgICAgICBjaXJjbGVWYWx1
ZS0+c2V0UmFkaXVzKGJhc2ljU2hhcGVSYWRpdXNUb0NTU1ZhbHVlKHN0eWxlLCBwb29sLCBjaXJj
bGUtPnJhZGl1cygpKSk7CisgICAgICAgIGNpcmNsZVZhbHVlLT5zZXRDZW50ZXJYKHZhbHVlRm9y
Q2VudGVyQ29vcmRpbmF0ZShwb29sLCBzdHlsZSwgY2lyY2xlLmNlbnRlclgoKSwgSE9SSVpPTlRB
TCkpOworICAgICAgICBjaXJjbGVWYWx1ZS0+c2V0Q2VudGVyWSh2YWx1ZUZvckNlbnRlckNvb3Jk
aW5hdGUocG9vbCwgc3R5bGUsIGNpcmNsZS5jZW50ZXJZKCksIFZFUlRJQ0FMKSk7CisgICAgICAg
IGNpcmNsZVZhbHVlLT5zZXRSYWRpdXMoYmFzaWNTaGFwZVJhZGl1c1RvQ1NTVmFsdWUoc3R5bGUs
IHBvb2wsIGNpcmNsZS5yYWRpdXMoKSkpOwogICAgICAgICBiYXNpY1NoYXBlVmFsdWUgPSBjaXJj
bGVWYWx1ZS5yZWxlYXNlKCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEJhc2lj
U2hhcGU6OkJhc2ljU2hhcGVFbGxpcHNlVHlwZTogewotICAgICAgICBjb25zdCBCYXNpY1NoYXBl
RWxsaXBzZSogZWxsaXBzZSA9IHRvQmFzaWNTaGFwZUVsbGlwc2UoYmFzaWNTaGFwZSk7CisgICAg
ICAgIGNvbnN0IGF1dG8mIGVsbGlwc2UgPSBkb3duY2FzdDxCYXNpY1NoYXBlRWxsaXBzZT4oYmFz
aWNTaGFwZSk7CiAgICAgICAgIFJlZlB0cjxDU1NCYXNpY1NoYXBlRWxsaXBzZT4gZWxsaXBzZVZh
bHVlID0gQ1NTQmFzaWNTaGFwZUVsbGlwc2U6OmNyZWF0ZSgpOwogCi0gICAgICAgIGVsbGlwc2VW
YWx1ZS0+c2V0Q2VudGVyWCh2YWx1ZUZvckNlbnRlckNvb3JkaW5hdGUocG9vbCwgc3R5bGUsIGVs
bGlwc2UtPmNlbnRlclgoKSwgSE9SSVpPTlRBTCkpOwotICAgICAgICBlbGxpcHNlVmFsdWUtPnNl
dENlbnRlclkodmFsdWVGb3JDZW50ZXJDb29yZGluYXRlKHBvb2wsIHN0eWxlLCBlbGxpcHNlLT5j
ZW50ZXJZKCksIFZFUlRJQ0FMKSk7Ci0gICAgICAgIGVsbGlwc2VWYWx1ZS0+c2V0UmFkaXVzWChi
YXNpY1NoYXBlUmFkaXVzVG9DU1NWYWx1ZShzdHlsZSwgcG9vbCwgZWxsaXBzZS0+cmFkaXVzWCgp
KSk7Ci0gICAgICAgIGVsbGlwc2VWYWx1ZS0+c2V0UmFkaXVzWShiYXNpY1NoYXBlUmFkaXVzVG9D
U1NWYWx1ZShzdHlsZSwgcG9vbCwgZWxsaXBzZS0+cmFkaXVzWSgpKSk7CisgICAgICAgIGVsbGlw
c2VWYWx1ZS0+c2V0Q2VudGVyWCh2YWx1ZUZvckNlbnRlckNvb3JkaW5hdGUocG9vbCwgc3R5bGUs
IGVsbGlwc2UuY2VudGVyWCgpLCBIT1JJWk9OVEFMKSk7CisgICAgICAgIGVsbGlwc2VWYWx1ZS0+
c2V0Q2VudGVyWSh2YWx1ZUZvckNlbnRlckNvb3JkaW5hdGUocG9vbCwgc3R5bGUsIGVsbGlwc2Uu
Y2VudGVyWSgpLCBWRVJUSUNBTCkpOworICAgICAgICBlbGxpcHNlVmFsdWUtPnNldFJhZGl1c1go
YmFzaWNTaGFwZVJhZGl1c1RvQ1NTVmFsdWUoc3R5bGUsIHBvb2wsIGVsbGlwc2UucmFkaXVzWCgp
KSk7CisgICAgICAgIGVsbGlwc2VWYWx1ZS0+c2V0UmFkaXVzWShiYXNpY1NoYXBlUmFkaXVzVG9D
U1NWYWx1ZShzdHlsZSwgcG9vbCwgZWxsaXBzZS5yYWRpdXNZKCkpKTsKICAgICAgICAgYmFzaWNT
aGFwZVZhbHVlID0gZWxsaXBzZVZhbHVlLnJlbGVhc2UoKTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogICAgIGNhc2UgQmFzaWNTaGFwZTo6QmFzaWNTaGFwZVBvbHlnb25UeXBlOiB7Ci0gICAgICAg
IGNvbnN0IEJhc2ljU2hhcGVQb2x5Z29uKiBwb2x5Z29uID0gdG9CYXNpY1NoYXBlUG9seWdvbihi
YXNpY1NoYXBlKTsKKyAgICAgICAgY29uc3QgYXV0byYgcG9seWdvbiA9IGRvd25jYXN0PEJhc2lj
U2hhcGVQb2x5Z29uPihiYXNpY1NoYXBlKTsKICAgICAgICAgUmVmUHRyPENTU0Jhc2ljU2hhcGVQ
b2x5Z29uPiBwb2x5Z29uVmFsdWUgPSBDU1NCYXNpY1NoYXBlUG9seWdvbjo6Y3JlYXRlKCk7CiAK
LSAgICAgICAgcG9seWdvblZhbHVlLT5zZXRXaW5kUnVsZShwb2x5Z29uLT53aW5kUnVsZSgpKTsK
LSAgICAgICAgY29uc3QgVmVjdG9yPExlbmd0aD4mIHZhbHVlcyA9IHBvbHlnb24tPnZhbHVlcygp
OworICAgICAgICBwb2x5Z29uVmFsdWUtPnNldFdpbmRSdWxlKHBvbHlnb24ud2luZFJ1bGUoKSk7
CisgICAgICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+JiB2YWx1ZXMgPSBwb2x5Z29uLnZhbHVlcygp
OwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgdmFsdWVzLnNpemUoKTsgaSArPSAy
KQogICAgICAgICAgICAgcG9seWdvblZhbHVlLT5hcHBlbmRQb2ludChwb29sLmNyZWF0ZVZhbHVl
KHZhbHVlcy5hdChpKSwgc3R5bGUpLCBwb29sLmNyZWF0ZVZhbHVlKHZhbHVlcy5hdChpICsgMSks
IHN0eWxlKSk7CiAKQEAgLTEwNCwxOCArMTA0LDE4IEBAIFBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVl
Rm9yQmFzaWNTaGFwZShjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUsIGNvbnN0IEJhc2ljU2hhcGUq
CiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIEJhc2ljU2hhcGU6OkJhc2ljU2hhcGVJ
bnNldFR5cGU6IHsKLSAgICAgICAgY29uc3QgQmFzaWNTaGFwZUluc2V0KiBpbnNldCA9IHRvQmFz
aWNTaGFwZUluc2V0KGJhc2ljU2hhcGUpOworICAgICAgICBjb25zdCBhdXRvJiBpbnNldCA9IGRv
d25jYXN0PEJhc2ljU2hhcGVJbnNldD4oYmFzaWNTaGFwZSk7CiAgICAgICAgIFJlZlB0cjxDU1NC
YXNpY1NoYXBlSW5zZXQ+IGluc2V0VmFsdWUgPSBDU1NCYXNpY1NoYXBlSW5zZXQ6OmNyZWF0ZSgp
OwogCi0gICAgICAgIGluc2V0VmFsdWUtPnNldFRvcChwb29sLmNyZWF0ZVZhbHVlKGluc2V0LT50
b3AoKSwgc3R5bGUpKTsKLSAgICAgICAgaW5zZXRWYWx1ZS0+c2V0UmlnaHQocG9vbC5jcmVhdGVW
YWx1ZShpbnNldC0+cmlnaHQoKSwgc3R5bGUpKTsKLSAgICAgICAgaW5zZXRWYWx1ZS0+c2V0Qm90
dG9tKHBvb2wuY3JlYXRlVmFsdWUoaW5zZXQtPmJvdHRvbSgpLCBzdHlsZSkpOwotICAgICAgICBp
bnNldFZhbHVlLT5zZXRMZWZ0KHBvb2wuY3JlYXRlVmFsdWUoaW5zZXQtPmxlZnQoKSwgc3R5bGUp
KTsKKyAgICAgICAgaW5zZXRWYWx1ZS0+c2V0VG9wKHBvb2wuY3JlYXRlVmFsdWUoaW5zZXQudG9w
KCksIHN0eWxlKSk7CisgICAgICAgIGluc2V0VmFsdWUtPnNldFJpZ2h0KHBvb2wuY3JlYXRlVmFs
dWUoaW5zZXQucmlnaHQoKSwgc3R5bGUpKTsKKyAgICAgICAgaW5zZXRWYWx1ZS0+c2V0Qm90dG9t
KHBvb2wuY3JlYXRlVmFsdWUoaW5zZXQuYm90dG9tKCksIHN0eWxlKSk7CisgICAgICAgIGluc2V0
VmFsdWUtPnNldExlZnQocG9vbC5jcmVhdGVWYWx1ZShpbnNldC5sZWZ0KCksIHN0eWxlKSk7CiAK
LSAgICAgICAgaW5zZXRWYWx1ZS0+c2V0VG9wTGVmdFJhZGl1cyhwb29sLmNyZWF0ZVZhbHVlKGlu
c2V0LT50b3BMZWZ0UmFkaXVzKCksIHN0eWxlKSk7Ci0gICAgICAgIGluc2V0VmFsdWUtPnNldFRv
cFJpZ2h0UmFkaXVzKHBvb2wuY3JlYXRlVmFsdWUoaW5zZXQtPnRvcFJpZ2h0UmFkaXVzKCksIHN0
eWxlKSk7Ci0gICAgICAgIGluc2V0VmFsdWUtPnNldEJvdHRvbVJpZ2h0UmFkaXVzKHBvb2wuY3Jl
YXRlVmFsdWUoaW5zZXQtPmJvdHRvbVJpZ2h0UmFkaXVzKCksIHN0eWxlKSk7Ci0gICAgICAgIGlu
c2V0VmFsdWUtPnNldEJvdHRvbUxlZnRSYWRpdXMocG9vbC5jcmVhdGVWYWx1ZShpbnNldC0+Ym90
dG9tTGVmdFJhZGl1cygpLCBzdHlsZSkpOworICAgICAgICBpbnNldFZhbHVlLT5zZXRUb3BMZWZ0
UmFkaXVzKHBvb2wuY3JlYXRlVmFsdWUoaW5zZXQudG9wTGVmdFJhZGl1cygpLCBzdHlsZSkpOwor
ICAgICAgICBpbnNldFZhbHVlLT5zZXRUb3BSaWdodFJhZGl1cyhwb29sLmNyZWF0ZVZhbHVlKGlu
c2V0LnRvcFJpZ2h0UmFkaXVzKCksIHN0eWxlKSk7CisgICAgICAgIGluc2V0VmFsdWUtPnNldEJv
dHRvbVJpZ2h0UmFkaXVzKHBvb2wuY3JlYXRlVmFsdWUoaW5zZXQuYm90dG9tUmlnaHRSYWRpdXMo
KSwgc3R5bGUpKTsKKyAgICAgICAgaW5zZXRWYWx1ZS0+c2V0Qm90dG9tTGVmdFJhZGl1cyhwb29s
LmNyZWF0ZVZhbHVlKGluc2V0LmJvdHRvbUxlZnRSYWRpdXMoKSwgc3R5bGUpKTsKIAogICAgICAg
ICBiYXNpY1NoYXBlVmFsdWUgPSBpbnNldFZhbHVlLnJlbGVhc2UoKTsKICAgICAgICAgYnJlYWs7
CkBAIC0xOTksNyArMTk5LDcgQEAgc3RhdGljIEJhc2ljU2hhcGVSYWRpdXMgY3NzVmFsdWVUb0Jh
c2ljU2hhcGVSYWRpdXMoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGEKICAgICByZXR1cm4g
QmFzaWNTaGFwZVJhZGl1cyhjb252ZXJ0VG9MZW5ndGgoY29udmVyc2lvbkRhdGEsIHJhZGl1cy5n
ZXQoKSkpOwogfQogCi1QYXNzUmVmUHRyPEJhc2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1ZShj
b25zdCBDU1NUb0xlbmd0aENvbnZlcnNpb25EYXRhJiBjb252ZXJzaW9uRGF0YSwgY29uc3QgQ1NT
QmFzaWNTaGFwZSogYmFzaWNTaGFwZVZhbHVlKQorUGFzc1JlZjxCYXNpY1NoYXBlPiBiYXNpY1No
YXBlRm9yVmFsdWUoY29uc3QgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YSYgY29udmVyc2lvbkRh
dGEsIGNvbnN0IENTU0Jhc2ljU2hhcGUqIGJhc2ljU2hhcGVWYWx1ZSkKIHsKICAgICBSZWZQdHI8
QmFzaWNTaGFwZT4gYmFzaWNTaGFwZTsKIApAQCAtMjYxLDcgKzI2MSw3IEBAIFBhc3NSZWZQdHI8
QmFzaWNTaGFwZT4gYmFzaWNTaGFwZUZvclZhbHVlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEmIGNvbnZlCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIHJldHVybiBiYXNpY1No
YXBlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gYmFzaWNTaGFwZS5yZWxlYXNlTm9uTnVsbCgpOwog
fQogCiBmbG9hdCBmbG9hdFZhbHVlRm9yQ2VudGVyQ29vcmRpbmF0ZShjb25zdCBCYXNpY1NoYXBl
Q2VudGVyQ29vcmRpbmF0ZSYgY2VudGVyLCBmbG9hdCBib3hEaW1lbnNpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5oIGIvU291cmNlL1dlYkNv
cmUvY3NzL0Jhc2ljU2hhcGVGdW5jdGlvbnMuaAppbmRleCBlYWIxMGNjYmE2OThhMjc5YjkwNGNm
NjdlYzRlYzQxZGQxNWZjY2I1Li42OGNjN2E2ZTQ2YjgzNmQyNjVhNGE0NDE2ZjlkZmUyYzk2ODEz
MzdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQmFzaWNTaGFwZUZ1bmN0aW9ucy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9CYXNpY1NoYXBlRnVuY3Rpb25zLmgKQEAgLTQyLDgg
KzQyLDggQEAgY2xhc3MgQ1NTVG9MZW5ndGhDb252ZXJzaW9uRGF0YTsKIGNsYXNzIENTU1ZhbHVl
OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKLVBhc3NSZWY8Q1NTVmFsdWU+IHZhbHVlRm9yQmFzaWNT
aGFwZShjb25zdCBSZW5kZXJTdHlsZSosIGNvbnN0IEJhc2ljU2hhcGUqKTsKLVBhc3NSZWZQdHI8
QmFzaWNTaGFwZT4gYmFzaWNTaGFwZUZvclZhbHVlKGNvbnN0IENTU1RvTGVuZ3RoQ29udmVyc2lv
bkRhdGEmLCBjb25zdCBDU1NCYXNpY1NoYXBlKik7CitQYXNzUmVmPENTU1ZhbHVlPiB2YWx1ZUZv
ckJhc2ljU2hhcGUoY29uc3QgUmVuZGVyU3R5bGUqLCBjb25zdCBCYXNpY1NoYXBlJik7CitQYXNz
UmVmPEJhc2ljU2hhcGU+IGJhc2ljU2hhcGVGb3JWYWx1ZShjb25zdCBDU1NUb0xlbmd0aENvbnZl
cnNpb25EYXRhJiwgY29uc3QgQ1NTQmFzaWNTaGFwZSopOwogCiBmbG9hdCBmbG9hdFZhbHVlRm9y
Q2VudGVyQ29vcmRpbmF0ZShjb25zdCBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSYsIGZsb2F0
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbi5jcHAKaW5kZXggYjFiODg4Y2NkYTcyY2M1NjkyZmEwNmFiMGE1MzY5ZWVkMWVjYWMwZS4u
NmY4MDc2NTdlNGJhMDFkYTdhMmFlNTVlNmM5OWU0ZTQzMGRlZTM1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKQEAgLTE2OTMs
NyArMTY5Myw3IEBAIHN0YXRpYyBQYXNzUmVmPENTU1ZhbHVlPiBzaGFwZVByb3BlcnR5VmFsdWUo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlLCBjb25zdCBTaGFwCiAgICAgQVNTRVJUKHNoYXBlVmFs
dWUtPnR5cGUoKSA9PSBTaGFwZVZhbHVlOjpUeXBlOjpTaGFwZSk7CiAKICAgICBSZWZQdHI8Q1NT
VmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFyYXRlZCgpOwot
ICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckJhc2ljU2hhcGUoc3R5bGUsIHNoYXBlVmFsdWUtPnNo
YXBlKCkpKTsKKyAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JCYXNpY1NoYXBlKHN0eWxlLCAqc2hh
cGVWYWx1ZS0+c2hhcGUoKSkpOwogICAgIGlmIChzaGFwZVZhbHVlLT5jc3NCb3goKSAhPSBCb3hN
aXNzaW5nKQogICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUo
c2hhcGVWYWx1ZS0+Y3NzQm94KCkpKTsKICAgICByZXR1cm4gbGlzdC5yZWxlYXNlTm9uTnVsbCgp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQ1NTUHJvcGVydHlB
bmltYXRpb24uY3BwCmluZGV4IGJlYTg1M2VlOWU5NDE3ZTgwOTY2NDAzMTIxYzUzMWEyOTA5MDdm
ODcuLmQ0MDgyOTFiMjJiOTQxMzM0NzQ4NTBiMTE1Yjc0OGY5MjdiNTkxNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvYW5pbWF0aW9uL0NTU1Byb3BlcnR5QW5pbWF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9DU1NQcm9wZXJ0eUFuaW1hdGlvbi5j
cHAKQEAgLTEzMCwxMyArMTMwLDEzIEBAIHN0YXRpYyBpbmxpbmUgUGFzc1JlZlB0cjxDbGlwUGF0
aE9wZXJhdGlvbj4gYmxlbmRGdW5jKGNvbnN0IEFuaW1hdGlvbkJhc2UqLCBDbGlwCiAgICAgaWYg
KGZyb20tPnR5cGUoKSAhPSBDbGlwUGF0aE9wZXJhdGlvbjo6U2hhcGUgfHwgdG8tPnR5cGUoKSAh
PSBDbGlwUGF0aE9wZXJhdGlvbjo6U2hhcGUpCiAgICAgICAgIHJldHVybiB0bzsKIAotICAgIGNv
bnN0IEJhc2ljU2hhcGUqIGZyb21TaGFwZSA9IHN0YXRpY19jYXN0PFNoYXBlQ2xpcFBhdGhPcGVy
YXRpb24qPihmcm9tKS0+YmFzaWNTaGFwZSgpOwotICAgIGNvbnN0IEJhc2ljU2hhcGUqIHRvU2hh
cGUgPSBzdGF0aWNfY2FzdDxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKj4odG8pLT5iYXNpY1NoYXBl
KCk7CisgICAgY29uc3QgQmFzaWNTaGFwZSYgZnJvbVNoYXBlID0gZG93bmNhc3Q8U2hhcGVDbGlw
UGF0aE9wZXJhdGlvbj4oKmZyb20pLmJhc2ljU2hhcGUoKTsKKyAgICBjb25zdCBCYXNpY1NoYXBl
JiB0b1NoYXBlID0gZG93bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKnRvKS5iYXNpY1No
YXBlKCk7CiAKLSAgICBpZiAoIWZyb21TaGFwZS0+Y2FuQmxlbmQodG9TaGFwZSkpCisgICAgaWYg
KCFmcm9tU2hhcGUuY2FuQmxlbmQodG9TaGFwZSkpCiAgICAgICAgIHJldHVybiB0bzsKIAotICAg
IHJldHVybiBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpjcmVhdGUodG9TaGFwZS0+YmxlbmQoZnJv
bVNoYXBlLCBwcm9ncmVzcykpOworICAgIHJldHVybiBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uOjpj
cmVhdGUodG9TaGFwZS5ibGVuZChmcm9tU2hhcGUsIHByb2dyZXNzKSk7CiB9CiAKICNpZiBFTkFC
TEUoQ1NTX1NIQVBFUykKQEAgLTE1MSwxMyArMTUxLDEzIEBAIHN0YXRpYyBpbmxpbmUgUGFzc1Jl
ZlB0cjxTaGFwZVZhbHVlPiBibGVuZEZ1bmMoY29uc3QgQW5pbWF0aW9uQmFzZSosIFNoYXBlVmFs
dWUqCiAgICAgaWYgKGZyb20tPmNzc0JveCgpICE9IHRvLT5jc3NCb3goKSkKICAgICAgICAgcmV0
dXJuIHRvOwogCi0gICAgY29uc3QgQmFzaWNTaGFwZSogZnJvbVNoYXBlID0gZnJvbS0+c2hhcGUo
KTsKLSAgICBjb25zdCBCYXNpY1NoYXBlKiB0b1NoYXBlID0gdG8tPnNoYXBlKCk7CisgICAgY29u
c3QgQmFzaWNTaGFwZSYgZnJvbVNoYXBlID0gKmZyb20tPnNoYXBlKCk7CisgICAgY29uc3QgQmFz
aWNTaGFwZSYgdG9TaGFwZSA9ICp0by0+c2hhcGUoKTsKIAotICAgIGlmICghZnJvbVNoYXBlLT5j
YW5CbGVuZCh0b1NoYXBlKSkKKyAgICBpZiAoIWZyb21TaGFwZS5jYW5CbGVuZCh0b1NoYXBlKSkK
ICAgICAgICAgcmV0dXJuIHRvOwogCi0gICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZVNoYXBl
VmFsdWUodG9TaGFwZS0+YmxlbmQoZnJvbVNoYXBlLCBwcm9ncmVzcyksIHRvLT5jc3NCb3goKSk7
CisgICAgcmV0dXJuIFNoYXBlVmFsdWU6OmNyZWF0ZVNoYXBlVmFsdWUodG9TaGFwZS5ibGVuZChm
cm9tU2hhcGUsIHByb2dyZXNzKSwgdG8tPmNzc0JveCgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ2xpcFBhdGhPcGVyYXRpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9wZXJhdGlvbi5oCmluZGV4IDY3ZmU1NTk0MjNk
OWJmMDJlZDYyMjM4MTRhNzY0ZDkyODNmMTYwNmMuLjc5YjY2NWNjZmQxNmMwMjIwNjdiNTkwNmJm
OTY3MmYxMDQ3MmQxZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlw
UGF0aE9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DbGlwUGF0aE9w
ZXJhdGlvbi5oCkBAIC05NiwxOCArOTYsMTcgQEAgcHJpdmF0ZToKIAogY2xhc3MgU2hhcGVDbGlw
UGF0aE9wZXJhdGlvbiA6IHB1YmxpYyBDbGlwUGF0aE9wZXJhdGlvbiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWZQ
dHI8QmFzaWNTaGFwZT4gc2hhcGUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8U2hhcGVDbGlwUGF0
aE9wZXJhdGlvbj4gY3JlYXRlKFBhc3NSZWY8QmFzaWNTaGFwZT4gc2hhcGUpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24oc2hhcGUpKTsK
KyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKFdURjo6
bW92ZShzaGFwZSkpKTsKICAgICB9CiAKLSAgICBjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBl
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS5nZXQoKTsgfQotICAgIFdpbmRSdWxlIHdpbmRSdWxl
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFwZS0+d2luZFJ1bGUoKTsgfQotICAgIGNvbnN0IFBhdGgg
cGF0aEZvclJlZmVyZW5jZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QpIGNvbnN0
CisgICAgY29uc3QgQmFzaWNTaGFwZSYgYmFzaWNTaGFwZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
cGUuZ2V0KCk7IH0KKyAgICBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hh
cGUuZ2V0KCkud2luZFJ1bGUoKTsgfQorICAgIGNvbnN0IFBhdGggcGF0aEZvclJlZmVyZW5jZVJl
Y3QoY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ1JlY3QpCiAgICAgewotICAgICAgICBBU1NFUlQo
bV9zaGFwZSk7CiAgICAgICAgIFBhdGggcGF0aDsKLSAgICAgICAgbV9zaGFwZS0+cGF0aChwYXRo
LCBib3VuZGluZ1JlY3QpOworICAgICAgICBtX3NoYXBlLmdldCgpLnBhdGgocGF0aCwgYm91bmRp
bmdSZWN0KTsKICAgICAgICAgcmV0dXJuIHBhdGg7CiAgICAgfQogCkBAIC0xMTUsMjIgKzExNCwy
MiBAQCBwdWJsaWM6CiAgICAgQ1NTQm94VHlwZSByZWZlcmVuY2VCb3goKSBjb25zdCB7IHJldHVy
biBtX3JlZmVyZW5jZUJveDsgfQogCiBwcml2YXRlOgotICAgIHZpcnR1YWwgYm9vbCBvcGVyYXRv
cj09KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvKSBjb25zdCBvdmVycmlkZQorICAgIHZpcnR1
YWwgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENsaXBQYXRoT3BlcmF0aW9uJiBvdGhlcikgY29uc3Qg
b3ZlcnJpZGUKICAgICB7Ci0gICAgICAgIGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAgaWYg
KCFpc1NhbWVUeXBlKG90aGVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
Y29uc3QgU2hhcGVDbGlwUGF0aE9wZXJhdGlvbiogb3RoZXIgPSBzdGF0aWNfY2FzdDxjb25zdCBT
aGFwZUNsaXBQYXRoT3BlcmF0aW9uKj4oJm8pOwotICAgICAgICByZXR1cm4gbV9zaGFwZSA9PSBv
dGhlci0+bV9zaGFwZTsKKyAgICAgICAgY29uc3QgYXV0byYgc2hhcGVDbGlwID0gZG93bmNhc3Q8
U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4ob3RoZXIpOworICAgICAgICByZXR1cm4gJm1fc2hhcGUu
Z2V0KCkgPT0gJnNoYXBlQ2xpcC5tX3NoYXBlLmdldCgpOwogICAgIH0KIAotICAgIGV4cGxpY2l0
IFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24oUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBzaGFwZSkKKyAg
ICBleHBsaWNpdCBTaGFwZUNsaXBQYXRoT3BlcmF0aW9uKFBhc3NSZWY8QmFzaWNTaGFwZT4gc2hh
cGUpCiAgICAgICAgIDogQ2xpcFBhdGhPcGVyYXRpb24oU2hhcGUpCi0gICAgICAgICwgbV9zaGFw
ZShzaGFwZSkKKyAgICAgICAgLCBtX3NoYXBlKFdURjo6bW92ZShzaGFwZSkpCiAgICAgICAgICwg
bV9yZWZlcmVuY2VCb3goQm94TWlzc2luZykKICAgICB7CiAgICAgfQogCi0gICAgUmVmUHRyPEJh
c2ljU2hhcGU+IG1fc2hhcGU7CisgICAgUmVmPEJhc2ljU2hhcGU+IG1fc2hhcGU7CiAgICAgQ1NT
Qm94VHlwZSBtX3JlZmVyZW5jZUJveDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQmxvY2suY3BwCmluZGV4IGUxNGYwNGFmOWVkNzk4MTA1YWMzODI3ZTg1MDJlNDVjYzA4ZDU4
ODcuLmIxZTc3ZTE3M2ZjMGM0ZmIxMmFmMzFiMDQyYjA2ZTgyMjFlYjRiZmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcApAQCAtMjQ1Myw3ICsyNDUzLDcgQEAgYm9v
bCBSZW5kZXJCbG9jazo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3Qs
IEhpdFRlc3RSZXN1bHQmIHJlc3UKICAgICBpZiAoc3R5bGUoKS5jbGlwUGF0aCgpKSB7CiAgICAg
ICAgIHN3aXRjaCAoc3R5bGUoKS5jbGlwUGF0aCgpLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBD
bGlwUGF0aE9wZXJhdGlvbjo6U2hhcGU6IHsKLSAgICAgICAgICAgIGNvbnN0IGF1dG8mIGNsaXBQ
YXRoID0gZG93bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKnN0eWxlKCkuY2xpcFBhdGgo
KSk7CisgICAgICAgICAgICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhP
cGVyYXRpb24+KCpzdHlsZSgpLmNsaXBQYXRoKCkpOwogCiAgICAgICAgICAgICBMYXlvdXRSZWN0
IHJlZmVyZW5jZUJveFJlY3Q7CiAgICAgICAgICAgICBzd2l0Y2ggKGNsaXBQYXRoLnJlZmVyZW5j
ZUJveCgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyLmNwcAppbmRleCA4
ZDY5N2I1OWVhNmZlMTAyNzI5YmE0NDY1ZDkwZWQwYTA0MmU3YmM3Li5jMTZlNDMxNWNlNWM3ZjY3
ZTRiNjE0ZDQ5NTBjYTY5OTdiNmFjOGRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllci5jcHAKQEAgLTM5MjYsNyArMzkyNiw3IEBAIGJvb2wgUmVuZGVyTGF5ZXI6OnNldHVw
Q2xpcFBhdGgoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBMYXllclBhaW50aW5nSW5m
CiAgICAgUmVuZGVyU3R5bGUmIHN0eWxlID0gcmVuZGVyZXIoKS5zdHlsZSgpOwogICAgIEFTU0VS
VChzdHlsZS5jbGlwUGF0aCgpKTsKICAgICBpZiAoaXM8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4o
KnN0eWxlLmNsaXBQYXRoKCkpKSB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGNsaXBQYXRoID0gZG93
bmNhc3Q8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4oKnN0eWxlLmNsaXBQYXRoKCkpOworICAgICAg
ICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpzdHls
ZS5jbGlwUGF0aCgpKTsKIAogICAgICAgICBMYXlvdXRSZWN0IHJlZmVyZW5jZUJveCA9IGNvbXB1
dGVSZWZlcmVuY2VCb3gocmVuZGVyZXIoKSwgY2xpcFBhdGgsIG9mZnNldEZyb21Sb290LCByb290
UmVsYXRpdmVCb3VuZHMpOwogICAgICAgICBjb250ZXh0LT5zYXZlKCk7CkBAIC0zOTM1LDcgKzM5
MzUsNyBAQCBib29sIFJlbmRlckxheWVyOjpzZXR1cENsaXBQYXRoKEdyYXBoaWNzQ29udGV4dCog
Y29udGV4dCwgY29uc3QgTGF5ZXJQYWludGluZ0luZgogICAgIH0KIAogICAgIGlmIChpczxCb3hD
bGlwUGF0aE9wZXJhdGlvbj4oKnN0eWxlLmNsaXBQYXRoKCkpICYmIGlzPFJlbmRlckJveD4ocmVu
ZGVyZXIoKSkpIHsKLSAgICAgICAgY29uc3QgYXV0byYgY2xpcFBhdGggPSBkb3duY2FzdDxCb3hD
bGlwUGF0aE9wZXJhdGlvbj4oKnN0eWxlLmNsaXBQYXRoKCkpOworICAgICAgICBhdXRvJiBjbGlw
UGF0aCA9IGRvd25jYXN0PEJveENsaXBQYXRoT3BlcmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSk7
CiAKICAgICAgICAgUm91bmRlZFJlY3Qgc2hhcGVSZWN0ID0gY29tcHV0ZVJvdW5kZWRSZWN0Rm9y
Qm94U2hhcGUoY2xpcFBhdGgucmVmZXJlbmNlQm94KCksIGRvd25jYXN0PFJlbmRlckJveD4ocmVu
ZGVyZXIoKSkpOwogICAgICAgICBzaGFwZVJlY3QubW92ZShvZmZzZXRGcm9tUm9vdCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3BwCmluZGV4IDhjOTJhNGNjNTNmNTBh
OTgyNTkzN2FhNTIwYjgyZDgzYzI2Njc5NTcuLjZmYzhiYjNkN2U0ZWU1ZWFiYjM0NjkwOGI2MWZl
ZTBhYTQ5NzNiOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMv
U2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuY3Bw
CkBAIC05MCwyMiArOTAsMjAgQEAgc3RhdGljIGlubGluZSBGbG9hdFNpemUgcGh5c2ljYWxTaXpl
VG9Mb2dpY2FsKGNvbnN0IEZsb2F0U2l6ZSYgc2l6ZSwgV3JpdGluZ01vZGUKICAgICByZXR1cm4g
c2l6ZS50cmFuc3Bvc2VkU2l6ZSgpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBl
OjpjcmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYXlvdXRT
aXplJiBsb2dpY2FsQm94U2l6ZSwgV3JpdGluZ01vZGUgd3JpdGluZ01vZGUsIGZsb2F0IG1hcmdp
bikKK3N0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNyZWF0ZVNoYXBlKGNvbnN0IEJhc2lj
U2hhcGUmIGJhc2ljU2hhcGUsIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0
aW5nTW9kZSB3cml0aW5nTW9kZSwgZmxvYXQgbWFyZ2luKQogewotICAgIEFTU0VSVChiYXNpY1No
YXBlKTsKLQogICAgIGJvb2wgaG9yaXpvbnRhbFdyaXRpbmdNb2RlID0gaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUod3JpdGluZ01vZGUpOwogICAgIGZsb2F0IGJveFdpZHRoID0gaG9yaXpvbnRhbFdy
aXRpbmdNb2RlID8gbG9naWNhbEJveFNpemUud2lkdGgoKSA6IGxvZ2ljYWxCb3hTaXplLmhlaWdo
dCgpOwogICAgIGZsb2F0IGJveEhlaWdodCA9IGhvcml6b250YWxXcml0aW5nTW9kZSA/IGxvZ2lj
YWxCb3hTaXplLmhlaWdodCgpIDogbG9naWNhbEJveFNpemUud2lkdGgoKTsKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U2hhcGU+IHNoYXBlOwogCi0gICAgc3dpdGNoIChiYXNpY1NoYXBlLT50eXBlKCkp
IHsKKyAgICBzd2l0Y2ggKGJhc2ljU2hhcGUudHlwZSgpKSB7CiAKICAgICBjYXNlIEJhc2ljU2hh
cGU6OkJhc2ljU2hhcGVDaXJjbGVUeXBlOiB7Ci0gICAgICAgIGNvbnN0IEJhc2ljU2hhcGVDaXJj
bGUqIGNpcmNsZSA9IHRvQmFzaWNTaGFwZUNpcmNsZShiYXNpY1NoYXBlKTsKLSAgICAgICAgZmxv
YXQgY2VudGVyWCA9IGZsb2F0VmFsdWVGb3JDZW50ZXJDb29yZGluYXRlKGNpcmNsZS0+Y2VudGVy
WCgpLCBib3hXaWR0aCk7Ci0gICAgICAgIGZsb2F0IGNlbnRlclkgPSBmbG9hdFZhbHVlRm9yQ2Vu
dGVyQ29vcmRpbmF0ZShjaXJjbGUtPmNlbnRlclkoKSwgYm94SGVpZ2h0KTsKLSAgICAgICAgZmxv
YXQgcmFkaXVzID0gY2lyY2xlLT5mbG9hdFZhbHVlRm9yUmFkaXVzSW5Cb3goYm94V2lkdGgsIGJv
eEhlaWdodCk7CisgICAgICAgIGNvbnN0IGF1dG8mIGNpcmNsZSA9IGRvd25jYXN0PEJhc2ljU2hh
cGVDaXJjbGU+KGJhc2ljU2hhcGUpOworICAgICAgICBmbG9hdCBjZW50ZXJYID0gZmxvYXRWYWx1
ZUZvckNlbnRlckNvb3JkaW5hdGUoY2lyY2xlLmNlbnRlclgoKSwgYm94V2lkdGgpOworICAgICAg
ICBmbG9hdCBjZW50ZXJZID0gZmxvYXRWYWx1ZUZvckNlbnRlckNvb3JkaW5hdGUoY2lyY2xlLmNl
bnRlclkoKSwgYm94SGVpZ2h0KTsKKyAgICAgICAgZmxvYXQgcmFkaXVzID0gY2lyY2xlLmZsb2F0
VmFsdWVGb3JSYWRpdXNJbkJveChib3hXaWR0aCwgYm94SGVpZ2h0KTsKICAgICAgICAgRmxvYXRQ
b2ludCBsb2dpY2FsQ2VudGVyID0gcGh5c2ljYWxQb2ludFRvTG9naWNhbChGbG9hdFBvaW50KGNl
bnRlclgsIGNlbnRlclkpLCBsb2dpY2FsQm94U2l6ZS5oZWlnaHQoKSwgd3JpdGluZ01vZGUpOwog
CiAgICAgICAgIHNoYXBlID0gY3JlYXRlQ2lyY2xlU2hhcGUobG9naWNhbENlbnRlciwgcmFkaXVz
KTsKQEAgLTExMywxMSArMTExLDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gU2hhcGU6OmNy
ZWF0ZVNoYXBlKGNvbnN0IEJhc2ljU2hhcGUqIGJhc2ljU2hhcGUsIGNvbnN0IExhCiAgICAgfQog
CiAgICAgY2FzZSBCYXNpY1NoYXBlOjpCYXNpY1NoYXBlRWxsaXBzZVR5cGU6IHsKLSAgICAgICAg
Y29uc3QgQmFzaWNTaGFwZUVsbGlwc2UqIGVsbGlwc2UgPSB0b0Jhc2ljU2hhcGVFbGxpcHNlKGJh
c2ljU2hhcGUpOwotICAgICAgICBmbG9hdCBjZW50ZXJYID0gZmxvYXRWYWx1ZUZvckNlbnRlckNv
b3JkaW5hdGUoZWxsaXBzZS0+Y2VudGVyWCgpLCBib3hXaWR0aCk7Ci0gICAgICAgIGZsb2F0IGNl
bnRlclkgPSBmbG9hdFZhbHVlRm9yQ2VudGVyQ29vcmRpbmF0ZShlbGxpcHNlLT5jZW50ZXJZKCks
IGJveEhlaWdodCk7Ci0gICAgICAgIGZsb2F0IHJhZGl1c1ggPSBlbGxpcHNlLT5mbG9hdFZhbHVl
Rm9yUmFkaXVzSW5Cb3goZWxsaXBzZS0+cmFkaXVzWCgpLCBjZW50ZXJYLCBib3hXaWR0aCk7Ci0g
ICAgICAgIGZsb2F0IHJhZGl1c1kgPSBlbGxpcHNlLT5mbG9hdFZhbHVlRm9yUmFkaXVzSW5Cb3go
ZWxsaXBzZS0+cmFkaXVzWSgpLCBjZW50ZXJZLCBib3hIZWlnaHQpOworICAgICAgICBjb25zdCBh
dXRvJiBlbGxpcHNlID0gZG93bmNhc3Q8QmFzaWNTaGFwZUVsbGlwc2U+KGJhc2ljU2hhcGUpOwor
ICAgICAgICBmbG9hdCBjZW50ZXJYID0gZmxvYXRWYWx1ZUZvckNlbnRlckNvb3JkaW5hdGUoZWxs
aXBzZS5jZW50ZXJYKCksIGJveFdpZHRoKTsKKyAgICAgICAgZmxvYXQgY2VudGVyWSA9IGZsb2F0
VmFsdWVGb3JDZW50ZXJDb29yZGluYXRlKGVsbGlwc2UuY2VudGVyWSgpLCBib3hIZWlnaHQpOwor
ICAgICAgICBmbG9hdCByYWRpdXNYID0gZWxsaXBzZS5mbG9hdFZhbHVlRm9yUmFkaXVzSW5Cb3go
ZWxsaXBzZS5yYWRpdXNYKCksIGNlbnRlclgsIGJveFdpZHRoKTsKKyAgICAgICAgZmxvYXQgcmFk
aXVzWSA9IGVsbGlwc2UuZmxvYXRWYWx1ZUZvclJhZGl1c0luQm94KGVsbGlwc2UucmFkaXVzWSgp
LCBjZW50ZXJZLCBib3hIZWlnaHQpOwogICAgICAgICBGbG9hdFBvaW50IGxvZ2ljYWxDZW50ZXIg
PSBwaHlzaWNhbFBvaW50VG9Mb2dpY2FsKEZsb2F0UG9pbnQoY2VudGVyWCwgY2VudGVyWSksIGxv
Z2ljYWxCb3hTaXplLmhlaWdodCgpLCB3cml0aW5nTW9kZSk7CiAKICAgICAgICAgc2hhcGUgPSBj
cmVhdGVFbGxpcHNlU2hhcGUobG9naWNhbENlbnRlciwgRmxvYXRTaXplKHJhZGl1c1gsIHJhZGl1
c1kpKTsKQEAgLTEyNSw3ICsxMjMsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+IFNoYXBlOjpj
cmVhdGVTaGFwZShjb25zdCBCYXNpY1NoYXBlKiBiYXNpY1NoYXBlLCBjb25zdCBMYQogICAgIH0K
IAogICAgIGNhc2UgQmFzaWNTaGFwZTo6QmFzaWNTaGFwZVBvbHlnb25UeXBlOiB7Ci0gICAgICAg
IGNvbnN0IEJhc2ljU2hhcGVQb2x5Z29uJiBwb2x5Z29uID0gKnRvQmFzaWNTaGFwZVBvbHlnb24o
YmFzaWNTaGFwZSk7CisgICAgICAgIGNvbnN0IGF1dG8mIHBvbHlnb24gPSBkb3duY2FzdDxCYXNp
Y1NoYXBlUG9seWdvbj4oYmFzaWNTaGFwZSk7CiAgICAgICAgIGNvbnN0IFZlY3RvcjxMZW5ndGg+
JiB2YWx1ZXMgPSBwb2x5Z29uLnZhbHVlcygpOwogICAgICAgICBzaXplX3QgdmFsdWVzU2l6ZSA9
IHZhbHVlcy5zaXplKCk7CiAgICAgICAgIEFTU0VSVCghKHZhbHVlc1NpemUgJSAyKSk7CkBAIC0x
NDIsNyArMTQwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBTaGFwZTo6Y3JlYXRlU2hhcGUo
Y29uc3QgQmFzaWNTaGFwZSogYmFzaWNTaGFwZSwgY29uc3QgTGEKICAgICB9CiAKICAgICBjYXNl
IEJhc2ljU2hhcGU6OkJhc2ljU2hhcGVJbnNldFR5cGU6IHsKLSAgICAgICAgY29uc3QgQmFzaWNT
aGFwZUluc2V0JiBpbnNldCA9ICp0b0Jhc2ljU2hhcGVJbnNldChiYXNpY1NoYXBlKTsKKyAgICAg
ICAgY29uc3QgYXV0byYgaW5zZXQgPSBkb3duY2FzdDxCYXNpY1NoYXBlSW5zZXQ+KGJhc2ljU2hh
cGUpOwogICAgICAgICBmbG9hdCBsZWZ0ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChpbnNldC5sZWZ0
KCksIGJveFdpZHRoKTsKICAgICAgICAgZmxvYXQgdG9wID0gZmxvYXRWYWx1ZUZvckxlbmd0aChp
bnNldC50b3AoKSwgYm94SGVpZ2h0KTsKICAgICAgICAgRmxvYXRSZWN0IHJlY3QobGVmdCwKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGUuaAppbmRleCAwODY3MTVmN2MzMTQ2ZDU1
NWZjYzhhMGVkZTg2YjA4ODBkMzUzN2Y4Li45M2U4NzlhY2UxM2E5YmE4YjUzNjM4MDg5NzA1N2Mw
MTlhMzY4ZTJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1No
YXBlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZS5oCkBAIC03
Miw3ICs3Miw3IEBAIHB1YmxpYzoKICAgICAgICAgUGF0aCBtYXJnaW5TaGFwZTsKICAgICB9Owog
Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTaGFwZT4gY3JlYXRlU2hhcGUoY29uc3QgQmFz
aWNTaGFwZSosIGNvbnN0IExheW91dFNpemUmIGxvZ2ljYWxCb3hTaXplLCBXcml0aW5nTW9kZSwg
ZmxvYXQgbWFyZ2luKTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNoYXBlPiBjcmVhdGVT
aGFwZShjb25zdCBCYXNpY1NoYXBlJiwgY29uc3QgTGF5b3V0U2l6ZSYgbG9naWNhbEJveFNpemUs
IFdyaXRpbmdNb2RlLCBmbG9hdCBtYXJnaW4pOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8
U2hhcGU+IGNyZWF0ZVJhc3RlclNoYXBlKEltYWdlKiwgZmxvYXQgdGhyZXNob2xkLCBjb25zdCBM
YXlvdXRSZWN0JiBpbWFnZVJlY3QsIGNvbnN0IExheW91dFJlY3QmIG1hcmdpblJlY3QsIFdyaXRp
bmdNb2RlLCBmbG9hdCBtYXJnaW4pOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U2hhcGU+
IGNyZWF0ZUJveFNoYXBlKGNvbnN0IFJvdW5kZWRSZWN0JiwgV3JpdGluZ01vZGUsIGZsb2F0IG1h
cmdpbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hh
cGVPdXRzaWRlSW5mby5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc2hhcGVzL1NoYXBl
T3V0c2lkZUluZm8uY3BwCmluZGV4IGI0Y2Y2OGU1ZTQ4MDUwZGIxOWFiNzhlYWZhN2Q2YjNiMGRh
YzgxNTYuLjAxZWM4NWNkNjQ1MDU2MTU0NjJiNTZjZDIyMzVkNjhiYWZmODBiZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zaGFwZXMvU2hhcGVPdXRzaWRlSW5mby5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3NoYXBlcy9TaGFwZU91dHNpZGVJbmZvLmNw
cApAQCAtMTc3LDcgKzE3Nyw3IEBAIGNvbnN0IFNoYXBlJiBTaGFwZU91dHNpZGVJbmZvOjpjb21w
dXRlZFNoYXBlKCkgY29uc3QKICAgICBzd2l0Y2ggKHNoYXBlVmFsdWUudHlwZSgpKSB7CiAgICAg
Y2FzZSBTaGFwZVZhbHVlOjpUeXBlOjpTaGFwZToKICAgICAgICAgQVNTRVJUKHNoYXBlVmFsdWUu
c2hhcGUoKSk7Ci0gICAgICAgIG1fc2hhcGUgPSBTaGFwZTo6Y3JlYXRlU2hhcGUoc2hhcGVWYWx1
ZS5zaGFwZSgpLCBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2lu
KTsKKyAgICAgICAgbV9zaGFwZSA9IFNoYXBlOjpjcmVhdGVTaGFwZSgqc2hhcGVWYWx1ZS5zaGFw
ZSgpLCBtX3JlZmVyZW5jZUJveExvZ2ljYWxTaXplLCB3cml0aW5nTW9kZSwgbWFyZ2luKTsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBTaGFwZVZhbHVlOjpUeXBlOjpJbWFnZToKICAgICAgICAg
QVNTRVJUKHNoYXBlVmFsdWUuaXNJbWFnZVZhbGlkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hhcGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5jcHAKaW5kZXggNzVkZTE5YjcxOTQzYmI1Zjg0NGZm
OTI1N2M2YjkyMzEzMjM3MDFjMi4uNmM5ODU2ODM5MDYwN2M4NDJmZTJhYzMxM2YzMjUwNzkyN2My
ZjJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL0Jhc2ljU2hh
cGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvQmFzaWNTaGFwZXMu
Y3BwCkBAIC01OCwzNCArNTgsMzQgQEAgdm9pZCBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZTo6
dXBkYXRlQ29tcHV0ZWRMZW5ndGgoKQogICAgIG1fY29tcHV0ZWRMZW5ndGggPSBMZW5ndGgoQ2Fs
Y3VsYXRpb25WYWx1ZTo6Y3JlYXRlKFdURjo6bW92ZShvcCksIENhbGN1bGF0aW9uUmFuZ2VBbGwp
KTsKIH0KIAotYm9vbCBCYXNpY1NoYXBlOjpjYW5CbGVuZChjb25zdCBCYXNpY1NoYXBlKiBvdGhl
cikgY29uc3QKK2Jvb2wgQmFzaWNTaGFwZTo6Y2FuQmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3Ro
ZXIpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IFN1cHBvcnQgYW5pbWF0aW9ucyBiZXR3ZWVuIGRp
ZmZlcmVudCBzaGFwZXMgaW4gdGhlIGZ1dHVyZS4KLSAgICBpZiAodHlwZSgpICE9IG90aGVyLT50
eXBlKCkpCisgICAgaWYgKHR5cGUoKSAhPSBvdGhlci50eXBlKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIC8vIEp1c3QgcG9seWdvbnMgd2l0aCBzYW1lIG51bWJlciBvZiB2ZXJ0aWNl
cyBjYW4gYmUgYW5pbWF0ZWQuCi0gICAgaWYgKHR5cGUoKSA9PSBCYXNpY1NoYXBlOjpCYXNpY1No
YXBlUG9seWdvblR5cGUKLSAgICAgICAgJiYgKHRvQmFzaWNTaGFwZVBvbHlnb24odGhpcyktPnZh
bHVlcygpLnNpemUoKSAhPSB0b0Jhc2ljU2hhcGVQb2x5Z29uKG90aGVyKS0+dmFsdWVzKCkuc2l6
ZSgpCi0gICAgICAgIHx8IHRvQmFzaWNTaGFwZVBvbHlnb24odGhpcyktPndpbmRSdWxlKCkgIT0g
dG9CYXNpY1NoYXBlUG9seWdvbihvdGhlciktPndpbmRSdWxlKCkpKQorICAgIGlmIChpczxCYXNp
Y1NoYXBlUG9seWdvbj4oKnRoaXMpCisgICAgICAgICYmIChkb3duY2FzdDxCYXNpY1NoYXBlUG9s
eWdvbj4oKnRoaXMpLnZhbHVlcygpLnNpemUoKSAhPSBkb3duY2FzdDxCYXNpY1NoYXBlUG9seWdv
bj4ob3RoZXIpLnZhbHVlcygpLnNpemUoKQorICAgICAgICB8fCBkb3duY2FzdDxCYXNpY1NoYXBl
UG9seWdvbj4oKnRoaXMpLndpbmRSdWxlKCkgIT0gZG93bmNhc3Q8QmFzaWNTaGFwZVBvbHlnb24+
KG90aGVyKS53aW5kUnVsZSgpKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gQ2ly
Y2xlcyB3aXRoIGtleXdvcmRzIGZvciByYWRpaSBjb29yZGluYXRlcyBjYW5ub3QgYmUgYW5pbWF0
ZWQuCi0gICAgaWYgKHR5cGUoKSA9PSBCYXNpY1NoYXBlOjpCYXNpY1NoYXBlQ2lyY2xlVHlwZSkg
ewotICAgICAgICBjb25zdCBCYXNpY1NoYXBlQ2lyY2xlKiB0aGlzQ2lyY2xlID0gdG9CYXNpY1No
YXBlQ2lyY2xlKHRoaXMpOwotICAgICAgICBjb25zdCBCYXNpY1NoYXBlQ2lyY2xlKiBvdGhlckNp
cmNsZSA9IHRvQmFzaWNTaGFwZUNpcmNsZShvdGhlcik7Ci0gICAgICAgIGlmICghdGhpc0NpcmNs
ZS0+cmFkaXVzKCkuY2FuQmxlbmQob3RoZXJDaXJjbGUtPnJhZGl1cygpKSkKKyAgICBpZiAoaXM8
QmFzaWNTaGFwZUNpcmNsZT4oKnRoaXMpKSB7CisgICAgICAgIGNvbnN0IGF1dG8mIHRoaXNDaXJj
bGUgPSBkb3duY2FzdDxCYXNpY1NoYXBlQ2lyY2xlPigqdGhpcyk7CisgICAgICAgIGNvbnN0IGF1
dG8mIG90aGVyQ2lyY2xlID0gZG93bmNhc3Q8QmFzaWNTaGFwZUNpcmNsZT4ob3RoZXIpOworICAg
ICAgICBpZiAoIXRoaXNDaXJjbGUucmFkaXVzKCkuY2FuQmxlbmQob3RoZXJDaXJjbGUucmFkaXVz
KCkpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIC8vIEVsbGlwc2Vz
IHdpdGgga2V5d29yZHMgZm9yIHJhZGlpIGNvb3JkaW5hdGVzIGNhbm5vdCBiZSBhbmltYXRlZC4K
LSAgICBpZiAodHlwZSgpICE9IEJhc2ljU2hhcGU6OkJhc2ljU2hhcGVFbGxpcHNlVHlwZSkKKyAg
ICBpZiAoIWlzPEJhc2ljU2hhcGVFbGxpcHNlPigqdGhpcykpCiAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgY29uc3QgQmFzaWNTaGFwZUVsbGlwc2UqIHRoaXNFbGxpcHNlID0gdG9CYXNpY1No
YXBlRWxsaXBzZSh0aGlzKTsKLSAgICBjb25zdCBCYXNpY1NoYXBlRWxsaXBzZSogb3RoZXJFbGxp
cHNlID0gdG9CYXNpY1NoYXBlRWxsaXBzZShvdGhlcik7Ci0gICAgcmV0dXJuICh0aGlzRWxsaXBz
ZS0+cmFkaXVzWCgpLmNhbkJsZW5kKG90aGVyRWxsaXBzZS0+cmFkaXVzWCgpKQotICAgICAgICAm
JiB0aGlzRWxsaXBzZS0+cmFkaXVzWSgpLmNhbkJsZW5kKG90aGVyRWxsaXBzZS0+cmFkaXVzWSgp
KSk7CisgICAgY29uc3QgYXV0byYgdGhpc0VsbGlwc2UgPSBkb3duY2FzdDxCYXNpY1NoYXBlRWxs
aXBzZT4oKnRoaXMpOworICAgIGNvbnN0IGF1dG8mIG90aGVyRWxsaXBzZSA9IGRvd25jYXN0PEJh
c2ljU2hhcGVFbGxpcHNlPihvdGhlcik7CisgICAgcmV0dXJuICh0aGlzRWxsaXBzZS5yYWRpdXNY
KCkuY2FuQmxlbmQob3RoZXJFbGxpcHNlLnJhZGl1c1goKSkKKyAgICAgICAgJiYgdGhpc0VsbGlw
c2UucmFkaXVzWSgpLmNhbkJsZW5kKG90aGVyRWxsaXBzZS5yYWRpdXNZKCkpKTsKIH0KIAogZmxv
YXQgQmFzaWNTaGFwZUNpcmNsZTo6ZmxvYXRWYWx1ZUZvclJhZGl1c0luQm94KGZsb2F0IGJveFdp
ZHRoLCBmbG9hdCBib3hIZWlnaHQpIGNvbnN0CkBAIC0xMTgsMTYgKzExOCwxNiBAQCB2b2lkIEJh
c2ljU2hhcGVDaXJjbGU6OnBhdGgoUGF0aCYgcGF0aCwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGlu
Z0JveCkKICAgICApKTsKIH0KIAotUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlQ2ly
Y2xlOjpibGVuZChjb25zdCBCYXNpY1NoYXBlKiBvdGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25z
dAorUGFzc1JlZjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlQ2lyY2xlOjpibGVuZChjb25zdCBCYXNp
Y1NoYXBlJiBvdGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogewotICAgIEFTU0VSVCh0eXBl
KCkgPT0gb3RoZXItPnR5cGUoKSk7Ci0gICAgY29uc3QgQmFzaWNTaGFwZUNpcmNsZSogbyA9IHRv
QmFzaWNTaGFwZUNpcmNsZShvdGhlcik7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBvdGhlci50eXBl
KCkpOworICAgIGNvbnN0IGF1dG8mIG90aGVyQ2lyY2xlID0gZG93bmNhc3Q8QmFzaWNTaGFwZUNp
cmNsZT4ob3RoZXIpOwogICAgIFJlZlB0cjxCYXNpY1NoYXBlQ2lyY2xlPiByZXN1bHQgPSAgQmFz
aWNTaGFwZUNpcmNsZTo6Y3JlYXRlKCk7CiAKLSAgICByZXN1bHQtPnNldENlbnRlclgobV9jZW50
ZXJYLmJsZW5kKG8tPmNlbnRlclgoKSwgcHJvZ3Jlc3MpKTsKLSAgICByZXN1bHQtPnNldENlbnRl
clkobV9jZW50ZXJZLmJsZW5kKG8tPmNlbnRlclkoKSwgcHJvZ3Jlc3MpKTsKLSAgICByZXN1bHQt
PnNldFJhZGl1cyhtX3JhZGl1cy5ibGVuZChvLT5yYWRpdXMoKSwgcHJvZ3Jlc3MpKTsKLSAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXN1bHQtPnNldENlbnRlclgobV9jZW50ZXJY
LmJsZW5kKG90aGVyQ2lyY2xlLmNlbnRlclgoKSwgcHJvZ3Jlc3MpKTsKKyAgICByZXN1bHQtPnNl
dENlbnRlclkobV9jZW50ZXJZLmJsZW5kKG90aGVyQ2lyY2xlLmNlbnRlclkoKSwgcHJvZ3Jlc3Mp
KTsKKyAgICByZXN1bHQtPnNldFJhZGl1cyhtX3JhZGl1cy5ibGVuZChvdGhlckNpcmNsZS5yYWRp
dXMoKSwgcHJvZ3Jlc3MpKTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2VOb25OdWxsKCk7CiB9
CiAKIGZsb2F0IEJhc2ljU2hhcGVFbGxpcHNlOjpmbG9hdFZhbHVlRm9yUmFkaXVzSW5Cb3goY29u
c3QgQmFzaWNTaGFwZVJhZGl1cyYgcmFkaXVzLCBmbG9hdCBjZW50ZXIsIGZsb2F0IGJveFdpZHRo
T3JIZWlnaHQpIGNvbnN0CkBAIC0xNTcsMjYgKzE1NywyNiBAQCB2b2lkIEJhc2ljU2hhcGVFbGxp
cHNlOjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiAgICAg
ICAgIHJhZGl1c1kgKiAyKSk7CiB9CiAKLVBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gQmFzaWNTaGFw
ZUVsbGlwc2U6OmJsZW5kKGNvbnN0IEJhc2ljU2hhcGUqIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3Mp
IGNvbnN0CitQYXNzUmVmPEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVFbGxpcHNlOjpibGVuZChjb25z
dCBCYXNpY1NoYXBlJiBvdGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogewotICAgIEFTU0VS
VCh0eXBlKCkgPT0gb3RoZXItPnR5cGUoKSk7Ci0gICAgY29uc3QgQmFzaWNTaGFwZUVsbGlwc2Uq
IG8gPSB0b0Jhc2ljU2hhcGVFbGxpcHNlKG90aGVyKTsKKyAgICBBU1NFUlQodHlwZSgpID09IG90
aGVyLnR5cGUoKSk7CisgICAgY29uc3QgYXV0byYgb3RoZXJFbGxpcHNlID0gZG93bmNhc3Q8QmFz
aWNTaGFwZUVsbGlwc2U+KG90aGVyKTsKICAgICBSZWZQdHI8QmFzaWNTaGFwZUVsbGlwc2U+IHJl
c3VsdCA9IEJhc2ljU2hhcGVFbGxpcHNlOjpjcmVhdGUoKTsKIAotICAgIGlmIChtX3JhZGl1c1gu
dHlwZSgpICE9IEJhc2ljU2hhcGVSYWRpdXM6OlZhbHVlIHx8IG8tPnJhZGl1c1goKS50eXBlKCkg
IT0gQmFzaWNTaGFwZVJhZGl1czo6VmFsdWUKLSAgICAgICAgfHwgbV9yYWRpdXNZLnR5cGUoKSAh
PSBCYXNpY1NoYXBlUmFkaXVzOjpWYWx1ZSB8fCBvLT5yYWRpdXNZKCkudHlwZSgpICE9IEJhc2lj
U2hhcGVSYWRpdXM6OlZhbHVlKSB7Ci0gICAgICAgIHJlc3VsdC0+c2V0Q2VudGVyWChvLT5jZW50
ZXJYKCkpOwotICAgICAgICByZXN1bHQtPnNldENlbnRlclkoby0+Y2VudGVyWSgpKTsKLSAgICAg
ICAgcmVzdWx0LT5zZXRSYWRpdXNYKG8tPnJhZGl1c1goKSk7Ci0gICAgICAgIHJlc3VsdC0+c2V0
UmFkaXVzWShvLT5yYWRpdXNZKCkpOwotICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIGlmICht
X3JhZGl1c1gudHlwZSgpICE9IEJhc2ljU2hhcGVSYWRpdXM6OlZhbHVlIHx8IG90aGVyRWxsaXBz
ZS5yYWRpdXNYKCkudHlwZSgpICE9IEJhc2ljU2hhcGVSYWRpdXM6OlZhbHVlCisgICAgICAgIHx8
IG1fcmFkaXVzWS50eXBlKCkgIT0gQmFzaWNTaGFwZVJhZGl1czo6VmFsdWUgfHwgb3RoZXJFbGxp
cHNlLnJhZGl1c1koKS50eXBlKCkgIT0gQmFzaWNTaGFwZVJhZGl1czo6VmFsdWUpIHsKKyAgICAg
ICAgcmVzdWx0LT5zZXRDZW50ZXJYKG90aGVyRWxsaXBzZS5jZW50ZXJYKCkpOworICAgICAgICBy
ZXN1bHQtPnNldENlbnRlclkob3RoZXJFbGxpcHNlLmNlbnRlclkoKSk7CisgICAgICAgIHJlc3Vs
dC0+c2V0UmFkaXVzWChvdGhlckVsbGlwc2UucmFkaXVzWCgpKTsKKyAgICAgICAgcmVzdWx0LT5z
ZXRSYWRpdXNZKG90aGVyRWxsaXBzZS5yYWRpdXNZKCkpOworICAgICAgICByZXR1cm4gcmVzdWx0
LnJlbGVhc2VOb25OdWxsKCk7CiAgICAgfQogCi0gICAgcmVzdWx0LT5zZXRDZW50ZXJYKG1fY2Vu
dGVyWC5ibGVuZChvLT5jZW50ZXJYKCksIHByb2dyZXNzKSk7Ci0gICAgcmVzdWx0LT5zZXRDZW50
ZXJZKG1fY2VudGVyWS5ibGVuZChvLT5jZW50ZXJZKCksIHByb2dyZXNzKSk7Ci0gICAgcmVzdWx0
LT5zZXRSYWRpdXNYKG1fcmFkaXVzWC5ibGVuZChvLT5yYWRpdXNYKCksIHByb2dyZXNzKSk7Ci0g
ICAgcmVzdWx0LT5zZXRSYWRpdXNZKG1fcmFkaXVzWS5ibGVuZChvLT5yYWRpdXNZKCksIHByb2dy
ZXNzKSk7Ci0gICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmVzdWx0LT5zZXRDZW50
ZXJYKG1fY2VudGVyWC5ibGVuZChvdGhlckVsbGlwc2UuY2VudGVyWCgpLCBwcm9ncmVzcykpOwor
ICAgIHJlc3VsdC0+c2V0Q2VudGVyWShtX2NlbnRlclkuYmxlbmQob3RoZXJFbGxpcHNlLmNlbnRl
clkoKSwgcHJvZ3Jlc3MpKTsKKyAgICByZXN1bHQtPnNldFJhZGl1c1gobV9yYWRpdXNYLmJsZW5k
KG90aGVyRWxsaXBzZS5yYWRpdXNYKCksIHByb2dyZXNzKSk7CisgICAgcmVzdWx0LT5zZXRSYWRp
dXNZKG1fcmFkaXVzWS5ibGVuZChvdGhlckVsbGlwc2UucmFkaXVzWSgpLCBwcm9ncmVzcykpOwor
ICAgIHJldHVybiByZXN1bHQucmVsZWFzZU5vbk51bGwoKTsKIH0KIAogdm9pZCBCYXNpY1NoYXBl
UG9seWdvbjo6cGF0aChQYXRoJiBwYXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQpA
QCAtMTk3LDI3ICsxOTcsMjcgQEAgdm9pZCBCYXNpY1NoYXBlUG9seWdvbjo6cGF0aChQYXRoJiBw
YXRoLCBjb25zdCBGbG9hdFJlY3QmIGJvdW5kaW5nQm94KQogICAgIHBhdGguY2xvc2VTdWJwYXRo
KCk7CiB9CiAKLVBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gQmFzaWNTaGFwZVBvbHlnb246OmJsZW5k
KGNvbnN0IEJhc2ljU2hhcGUqIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CitQYXNzUmVm
PEJhc2ljU2hhcGU+IEJhc2ljU2hhcGVQb2x5Z29uOjpibGVuZChjb25zdCBCYXNpY1NoYXBlJiBv
dGhlciwgZG91YmxlIHByb2dyZXNzKSBjb25zdAogewotICAgIEFTU0VSVCh0eXBlKCkgPT0gb3Ro
ZXItPnR5cGUoKSk7CisgICAgQVNTRVJUKHR5cGUoKSA9PSBvdGhlci50eXBlKCkpOwogCi0gICAg
Y29uc3QgQmFzaWNTaGFwZVBvbHlnb24qIG8gPSB0b0Jhc2ljU2hhcGVQb2x5Z29uKG90aGVyKTsK
LSAgICBBU1NFUlQobV92YWx1ZXMuc2l6ZSgpID09IG8tPnZhbHVlcygpLnNpemUoKSk7CisgICAg
Y29uc3QgYXV0byYgb3RoZXJQb2x5Z29uID0gZG93bmNhc3Q8QmFzaWNTaGFwZVBvbHlnb24+KG90
aGVyKTsKKyAgICBBU1NFUlQobV92YWx1ZXMuc2l6ZSgpID09IG90aGVyUG9seWdvbi52YWx1ZXMo
KS5zaXplKCkpOwogICAgIEFTU0VSVCghKG1fdmFsdWVzLnNpemUoKSAlIDIpKTsKIAogICAgIHNp
emVfdCBsZW5ndGggPSBtX3ZhbHVlcy5zaXplKCk7CiAgICAgUmVmUHRyPEJhc2ljU2hhcGVQb2x5
Z29uPiByZXN1bHQgPSBCYXNpY1NoYXBlUG9seWdvbjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFsZW5n
dGgpCi0gICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAgICAgICByZXR1cm4gcmVz
dWx0LnJlbGVhc2VOb25OdWxsKCk7CiAKLSAgICByZXN1bHQtPnNldFdpbmRSdWxlKG8tPndpbmRS
dWxlKCkpOworICAgIHJlc3VsdC0+c2V0V2luZFJ1bGUob3RoZXJQb2x5Z29uLndpbmRSdWxlKCkp
OwogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGg7IGkgPSBpICsgMikgewotICAg
ICAgICByZXN1bHQtPmFwcGVuZFBvaW50KG1fdmFsdWVzLmF0KGkpLmJsZW5kKG8tPnZhbHVlcygp
LmF0KGkpLCBwcm9ncmVzcyksCi0gICAgICAgICAgICBtX3ZhbHVlcy5hdChpICsgMSkuYmxlbmQo
by0+dmFsdWVzKCkuYXQoaSArIDEpLCBwcm9ncmVzcykpOworICAgICAgICByZXN1bHQtPmFwcGVu
ZFBvaW50KG1fdmFsdWVzLmF0KGkpLmJsZW5kKG90aGVyUG9seWdvbi52YWx1ZXMoKS5hdChpKSwg
cHJvZ3Jlc3MpLAorICAgICAgICAgICAgbV92YWx1ZXMuYXQoaSArIDEpLmJsZW5kKG90aGVyUG9s
eWdvbi52YWx1ZXMoKS5hdChpICsgMSksIHByb2dyZXNzKSk7CiAgICAgfQogCi0gICAgcmV0dXJu
IHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlTm9uTnVsbCgpOwog
fQogCiBzdGF0aWMgRmxvYXRTaXplIGZsb2F0U2l6ZUZvckxlbmd0aFNpemUoY29uc3QgTGVuZ3Ro
U2l6ZSYgbGVuZ3RoU2l6ZSwgY29uc3QgRmxvYXRSZWN0JiBib3VuZGluZ0JveCkKQEAgLTI0Niwy
MiArMjQ2LDIyIEBAIHZvaWQgQmFzaWNTaGFwZUluc2V0OjpwYXRoKFBhdGgmIHBhdGgsIGNvbnN0
IEZsb2F0UmVjdCYgYm91bmRpbmdCb3gpCiAgICAgcGF0aC5hZGRSb3VuZGVkUmVjdChyKTsKIH0K
IAotUGFzc1JlZlB0cjxCYXNpY1NoYXBlPiBCYXNpY1NoYXBlSW5zZXQ6OmJsZW5kKGNvbnN0IEJh
c2ljU2hhcGUqIG90aGVyLCBkb3VibGUgcHJvZ3Jlc3MpIGNvbnN0CitQYXNzUmVmPEJhc2ljU2hh
cGU+IEJhc2ljU2hhcGVJbnNldDo6YmxlbmQoY29uc3QgQmFzaWNTaGFwZSYgb3RoZXIsIGRvdWJs
ZSBwcm9ncmVzcykgY29uc3QKIHsKLSAgICBBU1NFUlQodHlwZSgpID09IG90aGVyLT50eXBlKCkp
OworICAgIEFTU0VSVCh0eXBlKCkgPT0gb3RoZXIudHlwZSgpKTsKIAotICAgIGNvbnN0IEJhc2lj
U2hhcGVJbnNldCogbyA9IHRvQmFzaWNTaGFwZUluc2V0KG90aGVyKTsKKyAgICBjb25zdCBhdXRv
JiBvdGhlckluc2V0ID0gZG93bmNhc3Q8QmFzaWNTaGFwZUluc2V0PihvdGhlcik7CiAgICAgUmVm
UHRyPEJhc2ljU2hhcGVJbnNldD4gcmVzdWx0ID0gIEJhc2ljU2hhcGVJbnNldDo6Y3JlYXRlKCk7
Ci0gICAgcmVzdWx0LT5zZXRUb3AobV90b3AuYmxlbmQoby0+dG9wKCksIHByb2dyZXNzKSk7Ci0g
ICAgcmVzdWx0LT5zZXRSaWdodChtX3JpZ2h0LmJsZW5kKG8tPnJpZ2h0KCksIHByb2dyZXNzKSk7
Ci0gICAgcmVzdWx0LT5zZXRCb3R0b20obV9ib3R0b20uYmxlbmQoby0+Ym90dG9tKCksIHByb2dy
ZXNzKSk7Ci0gICAgcmVzdWx0LT5zZXRMZWZ0KG1fbGVmdC5ibGVuZChvLT5sZWZ0KCksIHByb2dy
ZXNzKSk7CisgICAgcmVzdWx0LT5zZXRUb3AobV90b3AuYmxlbmQob3RoZXJJbnNldC50b3AoKSwg
cHJvZ3Jlc3MpKTsKKyAgICByZXN1bHQtPnNldFJpZ2h0KG1fcmlnaHQuYmxlbmQob3RoZXJJbnNl
dC5yaWdodCgpLCBwcm9ncmVzcykpOworICAgIHJlc3VsdC0+c2V0Qm90dG9tKG1fYm90dG9tLmJs
ZW5kKG90aGVySW5zZXQuYm90dG9tKCksIHByb2dyZXNzKSk7CisgICAgcmVzdWx0LT5zZXRMZWZ0
KG1fbGVmdC5ibGVuZChvdGhlckluc2V0LmxlZnQoKSwgcHJvZ3Jlc3MpKTsKIAotICAgIHJlc3Vs
dC0+c2V0VG9wTGVmdFJhZGl1cyhtX3RvcExlZnRSYWRpdXMuYmxlbmQoby0+dG9wTGVmdFJhZGl1
cygpLCBwcm9ncmVzcykpOwotICAgIHJlc3VsdC0+c2V0VG9wUmlnaHRSYWRpdXMobV90b3BSaWdo
dFJhZGl1cy5ibGVuZChvLT50b3BSaWdodFJhZGl1cygpLCBwcm9ncmVzcykpOwotICAgIHJlc3Vs
dC0+c2V0Qm90dG9tUmlnaHRSYWRpdXMobV9ib3R0b21SaWdodFJhZGl1cy5ibGVuZChvLT5ib3R0
b21SaWdodFJhZGl1cygpLCBwcm9ncmVzcykpOwotICAgIHJlc3VsdC0+c2V0Qm90dG9tTGVmdFJh
ZGl1cyhtX2JvdHRvbUxlZnRSYWRpdXMuYmxlbmQoby0+Ym90dG9tTGVmdFJhZGl1cygpLCBwcm9n
cmVzcykpOworICAgIHJlc3VsdC0+c2V0VG9wTGVmdFJhZGl1cyhtX3RvcExlZnRSYWRpdXMuYmxl
bmQob3RoZXJJbnNldC50b3BMZWZ0UmFkaXVzKCksIHByb2dyZXNzKSk7CisgICAgcmVzdWx0LT5z
ZXRUb3BSaWdodFJhZGl1cyhtX3RvcFJpZ2h0UmFkaXVzLmJsZW5kKG90aGVySW5zZXQudG9wUmln
aHRSYWRpdXMoKSwgcHJvZ3Jlc3MpKTsKKyAgICByZXN1bHQtPnNldEJvdHRvbVJpZ2h0UmFkaXVz
KG1fYm90dG9tUmlnaHRSYWRpdXMuYmxlbmQob3RoZXJJbnNldC5ib3R0b21SaWdodFJhZGl1cygp
LCBwcm9ncmVzcykpOworICAgIHJlc3VsdC0+c2V0Qm90dG9tTGVmdFJhZGl1cyhtX2JvdHRvbUxl
ZnRSYWRpdXMuYmxlbmQob3RoZXJJbnNldC5ib3R0b21MZWZ0UmFkaXVzKCksIHByb2dyZXNzKSk7
CiAKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2VOb25OdWxsKCk7CiB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvQmFzaWNTaGFwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNp
Y1NoYXBlcy5oCmluZGV4IDc1ZmE5MDQ0YWVjNDQ2MTdhYjljOGRiN2NjOTc1N2VmNmQzNDY5ZTAu
LmNiNzdjY2U2NmFjYmZjY2NjMDc5OGJlZmU2NDlmOGUwNjIxOWIzZWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9CYXNpY1NoYXBlcy5oCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiV2luZFJ1bGUuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01NSwxOCArNTYsMTUgQEAg
cHVibGljOgogICAgICAgICBCYXNpY1NoYXBlSW5zZXRUeXBlCiAgICAgfTsKIAotICAgIGJvb2wg
Y2FuQmxlbmQoY29uc3QgQmFzaWNTaGFwZSopIGNvbnN0OworICAgIGJvb2wgY2FuQmxlbmQoY29u
c3QgQmFzaWNTaGFwZSYpIGNvbnN0OwogCiAgICAgdmlydHVhbCB2b2lkIHBhdGgoUGF0aCYsIGNv
bnN0IEZsb2F0UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIFdpbmRSdWxlIHdpbmRSdWxlKCkgY29u
c3QgeyByZXR1cm4gUlVMRV9OT05aRVJPOyB9Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEJhc2lj
U2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUqLCBkb3VibGUpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFBhc3NSZWY8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSYsIGRvdWJs
ZSkgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBUeXBlIHR5cGUoKSBjb25zdCA9IDA7CiB9Owog
Ci0jZGVmaW5lIEJBU0lDX1NIQVBFU19UWVBFX0NBU1RTKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGlj
YXRlKSBcCi0gICAgVFlQRV9DQVNUU19CQVNFKFRvVmFsdWVUeXBlTmFtZSwgQmFzaWNTaGFwZSwg
YmFzaWNTaGFwZSwgYmFzaWNTaGFwZS0+dHlwZSgpID09IHByZWRpY2F0ZSwgYmFzaWNTaGFwZS50
eXBlKCkgPT0gcHJlZGljYXRlKQotCiBjbGFzcyBCYXNpY1NoYXBlQ2VudGVyQ29vcmRpbmF0ZSB7
CiBwdWJsaWM6CiAgICAgZW51bSBEaXJlY3Rpb24gewpAQCAtMTYxLDcgKzE1OSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldFJhZGl1cyhCYXNpY1NoYXBlUmFkaXVzIHJhZGl1cykgeyBtX3JhZGl1
cyA9IFdURjo6bW92ZShyYWRpdXMpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwg
Y29uc3QgRmxvYXRSZWN0Jikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEJhc2lj
U2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUqLCBkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgUGFzc1JlZjxCYXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwg
ZG91YmxlKSBjb25zdCBvdmVycmlkZTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gQmFzaWNTaGFwZUNpcmNsZVR5cGU7IH0KIHByaXZhdGU6CkBAIC0x
NzIsOCArMTcwLDYgQEAgcHJpdmF0ZToKICAgICBCYXNpY1NoYXBlUmFkaXVzIG1fcmFkaXVzOwog
fTsKIAotQkFTSUNfU0hBUEVTX1RZUEVfQ0FTVFMoQmFzaWNTaGFwZUNpcmNsZSwgQmFzaWNTaGFw
ZTo6QmFzaWNTaGFwZUNpcmNsZVR5cGUpCi0KIGNsYXNzIEJhc2ljU2hhcGVFbGxpcHNlIDogcHVi
bGljIEJhc2ljU2hhcGUgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJhc2ljU2hh
cGVFbGxpcHNlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQmFzaWNTaGFwZUVsbGlw
c2UpOyB9CkBAIC0xOTAsNyArMTg2LDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UmFkaXVzWShC
YXNpY1NoYXBlUmFkaXVzIHJhZGl1c1kpIHsgbV9yYWRpdXNZID0gV1RGOjptb3ZlKHJhZGl1c1kp
OyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgcGF0aChQYXRoJiwgY29uc3QgRmxvYXRSZWN0Jikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJh
c2ljU2hhcGUqLCBkb3VibGUpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgUGFzc1JlZjxC
YXNpY1NoYXBlPiBibGVuZChjb25zdCBCYXNpY1NoYXBlJiwgZG91YmxlKSBjb25zdCBvdmVycmlk
ZTsKIAogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gQmFz
aWNTaGFwZUVsbGlwc2VUeXBlOyB9CiBwcml2YXRlOgpAQCAtMjAyLDggKzE5OCw2IEBAIHByaXZh
dGU6CiAgICAgQmFzaWNTaGFwZVJhZGl1cyBtX3JhZGl1c1k7CiB9OwogCi1CQVNJQ19TSEFQRVNf
VFlQRV9DQVNUUyhCYXNpY1NoYXBlRWxsaXBzZSwgQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUVsbGlw
c2VUeXBlKQotCiBjbGFzcyBCYXNpY1NoYXBlUG9seWdvbiA6IHB1YmxpYyBCYXNpY1NoYXBlIHsK
IHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxCYXNpY1NoYXBlUG9seWdvbj4gY3JlYXRl
KCkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEJhc2ljU2hhcGVQb2x5Z29uKTsgfQpAQCAtMjE2LDcg
KzIxMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZFBvaW50KExlbmd0aCB4LCBMZW5ndGgg
eSkgeyBtX3ZhbHVlcy5hcHBlbmQoV1RGOjptb3ZlKHgpKTsgbV92YWx1ZXMuYXBwZW5kKFdURjo6
bW92ZSh5KSk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJl
Y3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gYmxlbmQo
Y29uc3QgQmFzaWNTaGFwZSosIGRvdWJsZSkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQ
YXNzUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNvbnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0
IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBXaW5kUnVsZSB3aW5kUnVsZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIG1fd2luZFJ1bGU7IH0KIApAQCAtMjMwLDggKzIyNCw2IEBAIHByaXZhdGU6
CiAgICAgVmVjdG9yPExlbmd0aD4gbV92YWx1ZXM7CiB9OwogCi1CQVNJQ19TSEFQRVNfVFlQRV9D
QVNUUyhCYXNpY1NoYXBlUG9seWdvbiwgQmFzaWNTaGFwZTo6QmFzaWNTaGFwZVBvbHlnb25UeXBl
KQotCiBjbGFzcyBCYXNpY1NoYXBlSW5zZXQgOiBwdWJsaWMgQmFzaWNTaGFwZSB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8QmFzaWNTaGFwZUluc2V0PiBjcmVhdGUoKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgQmFzaWNTaGFwZUluc2V0KTsgfQpAQCAtMjU3LDcgKzI0OSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEJvdHRvbUxlZnRSYWRpdXMoTGVuZ3RoU2l6ZSByYWRpdXMpIHsg
bV9ib3R0b21MZWZ0UmFkaXVzID0gV1RGOjptb3ZlKHJhZGl1cyk7IH0KIAogICAgIHZpcnR1YWwg
dm9pZCBwYXRoKFBhdGgmLCBjb25zdCBGbG9hdFJlY3QmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8QmFzaWNTaGFwZT4gYmxlbmQoY29uc3QgQmFzaWNTaGFwZSosIGRvdWJsZSkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBQYXNzUmVmPEJhc2ljU2hhcGU+IGJsZW5kKGNv
bnN0IEJhc2ljU2hhcGUmLCBkb3VibGUpIGNvbnN0IG92ZXJyaWRlOwogCiAgICAgdmlydHVhbCBU
eXBlIHR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBCYXNpY1NoYXBlSW5zZXRUeXBlOyB9
CiBwcml2YXRlOgpAQCAtMjc0LDcgKzI2NiwxNiBAQCBwcml2YXRlOgogICAgIExlbmd0aFNpemUg
bV9ib3R0b21MZWZ0UmFkaXVzOwogfTsKIAotQkFTSUNfU0hBUEVTX1RZUEVfQ0FTVFMoQmFzaWNT
aGFwZUluc2V0LCBCYXNpY1NoYXBlOjpCYXNpY1NoYXBlSW5zZXRUeXBlKQorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUo
VG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVH
SU4oV2ViQ29yZTo6VG9WYWx1ZVR5cGVOYW1lKSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNv
bnN0IFdlYkNvcmU6OkJhc2ljU2hhcGUmIGJhc2ljU2hhcGUpIHsgcmV0dXJuIGJhc2ljU2hhcGUu
dHlwZSgpID09IFdlYkNvcmU6OnByZWRpY2F0ZTsgfSBcCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRT
X0VORCgpCisKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkFTSUNfU0hBUEUoQmFzaWNTaGFwZUNp
cmNsZSwgQmFzaWNTaGFwZTo6QmFzaWNTaGFwZUNpcmNsZVR5cGUpCitTUEVDSUFMSVpFX1RZUEVf
VFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVFbGxpcHNlLCBCYXNpY1NoYXBlOjpCYXNpY1No
YXBlRWxsaXBzZVR5cGUpCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2lj
U2hhcGVQb2x5Z29uLCBCYXNpY1NoYXBlOjpCYXNpY1NoYXBlUG9seWdvblR5cGUpCitTUEVDSUFM
SVpFX1RZUEVfVFJBSVRTX0JBU0lDX1NIQVBFKEJhc2ljU2hhcGVJbnNldCwgQmFzaWNTaGFwZTo6
QmFzaWNTaGFwZUluc2V0VHlwZSkKIAotfQotI2VuZGlmCisjZW5kaWYgLy8gQmFzaWNTaGFwZXNf
aApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdD
b250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyaW5nQ29u
dGV4dC5jcHAKaW5kZXggMTc2OGE2MDQ4YzI0Y2E3NWFiYWNlNzA2NWVhZWI5NzM5NzFmNWFmOS4u
NzY2MDcwNjhlMDc1NDhlOWUzZTM3NTZhZTFiZWE0M2M3ZjI3YWNiMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC0x
MzcsNyArMTM3LDcgQEAgdm9pZCBTVkdSZW5kZXJpbmdDb250ZXh0OjpwcmVwYXJlVG9SZW5kZXJT
VkdDb250ZW50KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBQYWkKIAogICAgIENsaXBQYXRoT3Bl
cmF0aW9uKiBjbGlwUGF0aE9wZXJhdGlvbiA9IHN0eWxlLmNsaXBQYXRoKCk7CiAgICAgaWYgKGlz
PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkgewotICAgICAgICBj
b25zdCBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFNoYXBlQ2xpcFBhdGhPcGVyYXRpb24+KCpj
bGlwUGF0aE9wZXJhdGlvbik7CisgICAgICAgIGF1dG8mIGNsaXBQYXRoID0gZG93bmNhc3Q8U2hh
cGVDbGlwUGF0aE9wZXJhdGlvbj4oKmNsaXBQYXRoT3BlcmF0aW9uKTsKICAgICAgICAgRmxvYXRS
ZWN0IHJlZmVyZW5jZUJveDsKICAgICAgICAgaWYgKGNsaXBQYXRoLnJlZmVyZW5jZUJveCgpID09
IFN0cm9rZSkKICAgICAgICAgICAgIC8vIEZJWE1FOiBzdHJva2VCb3VuZGluZ0JveCgpIHRha2Vz
IGRhc2hhcnJheSBpbnRvIGFjY291bnQgYnV0IHNob3VsZG4ndC4K
</data>

          </attachment>
      

    </bug>

</bugzilla>