<?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>66292</bug_id>
          
          <creation_ts>2011-08-16 04:37:59 -0700</creation_ts>
          <short_desc>Web Inspector: force pseudo element state when checking it in the styles sidebar.</short_desc>
          <delta_ts>2011-08-16 10:15:21 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Pavel Feldman">pfeldman</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>hyatt</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>451554</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-16 04:37:59 -0700</bug_when>
    <thetext>Today, we are only querying appropriate selectors when :hover or :active is selected in the sidebar. Element&apos;s state does not change and it is hard to master styles while in this mode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451555</commentid>
    <comment_count>1</comment_count>
      <attachid>104025</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-16 04:46:12 -0700</bug_when>
    <thetext>Created attachment 104025
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451561</commentid>
    <comment_count>2</comment_count>
      <attachid>104027</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-16 05:23:18 -0700</bug_when>
    <thetext>Created attachment 104027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451614</commentid>
    <comment_count>3</comment_count>
      <attachid>104027</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2011-08-16 08:01:02 -0700</bug_when>
    <thetext>Comment on attachment 104027
Patch

Inspector part looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451681</commentid>
    <comment_count>4</comment_count>
      <attachid>104027</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-08-16 09:48:14 -0700</bug_when>
    <thetext>Comment on attachment 104027
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>451709</commentid>
    <comment_count>5</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-08-16 10:15:21 -0700</bug_when>
    <thetext>Committed r93122: &lt;http://trac.webkit.org/changeset/93122&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104025</attachid>
            <date>2011-08-16 04:46:12 -0700</date>
            <delta_ts>2011-08-16 05:23:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66292-20110816154610.patch</filename>
            <type>text/plain</type>
            <size>30587</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwNDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMzA5ZTY1N2IwOGQxMmQ2
MDI4OWJjY2QxNmU0MWVkOGY3NDM0OWQ5Li5mMTZmMDkwZWIyM2UyNGE2ZjFjOTBkZTEwZTA1MTU5
YzdiNzhjN2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTEtMDgtMTYgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGZvcmNlIHBzZXVkbyBlbGVtZW50IHN0YXRlIHdoZW4gY2hlY2tpbmcgaXQgaW4gdGhlIHN0eWxl
cyBzaWRlYmFyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjYyOTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxl
U2VsZWN0b3I6OmluaXRGb3JTdHlsZVJlc29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5
bGVTZWxlY3Rvcjo6c3R5bGVSdWxlc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
U3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcik6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IpOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09u
ZVNlbGVjdG9yKToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21w
dXRlUHNldWRvQ2xhc3NNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50
OjpJbnNwZWN0b3JDU1NBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2Vu
dDo6Y2xlYXJGcm9udGVuZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
Zm9yY2VQc2V1ZG9TdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
Z2V0U3R5bGVzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6
ZGlkUmVtb3ZlRG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZFJlbW92ZURPTU5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6
OmNsZWFyUHNldWRvU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVuZCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGVJbXBs
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmg6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGUp
OgorCiAyMDExLTA4LTE1ICBQYXZlbCBGZWxkbWFuICA8cGZlbGRtYW5AZ29vZ2xlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBbVjhdIGNyYXNoIHVwb24gc3RlcEluIHdoaWxlIG5vdCBv
biBwYXVzZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCBmZGI3
NTQwYzZkMWY0YzEwNWMxOTY5NjllMDc2N2E4ZmUyNTBkNTk0Li45NDQ4YjBjZTExZDQ0MTc5MGU0
ZDRmYmUzODQxNTdmY2U4MGFjMjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCkBAIC02OCw2ICs2OCw3IEBACiAjaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVk
ZSAiSFRNTFByb2dyZXNzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJLZXlm
cmFtZUxpc3QuaCIKICNpbmNsdWRlICJMaW5rSGFzaC5oIgogI2luY2x1ZGUgIkxvY2FsZVRvU2Ny
aXB0TWFwcGluZy5oIgpAQCAtODkzLDggKzg5NCw2IEBAIGlubGluZSB2b2lkIENTU1N0eWxlU2Vs
ZWN0b3I6OmluaXRGb3JTdHlsZVJlc29sdmUoRWxlbWVudCogZSwgUmVuZGVyU3R5bGUqIHBhcmVu
CiAgICAgbV9ydWxlTGlzdCA9IDA7CiAKICAgICBtX2ZvbnREaXJ0eSA9IGZhbHNlOwotCi0gICAg
bV9mb3JjZVBzZXVkb0NsYXNzTWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2s7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgY29uc3QgQXRvbWljU3RyaW5nKiBsaW5rQXR0cmlidXRlKE5vZGUqIG5v
ZGUpCkBAIC0yMDMwLDEyICsyMDI5LDEyIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2FjaGVC
b3JkZXJBbmRCYWNrZ3JvdW5kKCkKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+
IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGUsIHVuc2ln
bmVkIHJ1bGVzVG9JbmNsdWRlLCB1bnNpZ25lZCBmb3JjZVBzZXVkb0NsYXNzTWFzaykKK1Bhc3NS
ZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3I6OnN0eWxlUnVsZXNGb3JFbGVtZW50
KEVsZW1lbnQqIGUsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewotICAgIHJldHVybiBwc2V1
ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlLCBOT1BTRVVETywgcnVsZXNUb0luY2x1ZGUsIGZvcmNl
UHNldWRvQ2xhc3NNYXNrKTsKKyAgICByZXR1cm4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQo
ZSwgTk9QU0VVRE8sIHJ1bGVzVG9JbmNsdWRlKTsKIH0KIAotUGFzc1JlZlB0cjxDU1NSdWxlTGlz
dD4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCog
ZSwgUHNldWRvSWQgcHNldWRvSWQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlLCB1bnNpZ25lZCBm
b3JjZVBzZXVkb0NsYXNzTWFzaykKK1Bhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2Vs
ZWN0b3I6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFBzZXVkb0lkIHBz
ZXVkb0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKIHsKICAgICBpZiAoIWUgfHwgIWUtPmRv
Y3VtZW50KCktPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKQogICAgICAgICByZXR1cm4gMDsKQEAg
LTIwNDQsNyArMjA0Myw2IEBAIFBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0
b3I6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGUsCiAKICAgICBpbml0RWxl
bWVudChlKTsKICAgICBpbml0Rm9yU3R5bGVSZXNvbHZlKGUsIDAsIHBzZXVkb0lkKTsKLSAgICBt
X2ZvcmNlUHNldWRvQ2xhc3NNYXNrID0gZm9yY2VQc2V1ZG9DbGFzc01hc2s7CiAKICAgICBpZiAo
cnVsZXNUb0luY2x1ZGUgJiBVQUFuZFVzZXJDU1NSdWxlcykgewogICAgICAgICBpbnQgZmlyc3RV
QVJ1bGUgPSAtMSwgbGFzdFVBUnVsZSA9IC0xOwpAQCAtMjA2OSw3ICsyMDY3LDYgQEAgUGFzc1Jl
ZlB0cjxDU1NSdWxlTGlzdD4gQ1NTU3R5bGVTZWxlY3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVs
ZW1lbnQoRWxlbWVudCogZSwKICAgICB9CiAKICAgICBtX2NoZWNrZXIubV9jb2xsZWN0UnVsZXNP
bmx5ID0gZmFsc2U7Ci0gICAgbV9mb3JjZVBzZXVkb0NsYXNzTWFzayA9IERvTm90Rm9yY2VQc2V1
ZG9DbGFzc01hc2s7CiAgICAKICAgICByZXR1cm4gbV9ydWxlTGlzdC5yZWxlYXNlKCk7CiB9CkBA
IC0yMDkyLDcgKzIwODksNyBAQCBpbmxpbmUgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpjaGVja1Nl
bGVjdG9yKGNvbnN0IFJ1bGVEYXRhJiBydWxlRGF0YSkKICAgICB9CiAKICAgICAvLyBTbG93IHBh
dGguCi0gICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IG1fY2hlY2tlci5jaGVja1NlbGVjdG9yKHJ1
bGVEYXRhLnNlbGVjdG9yKCksIG1fZWxlbWVudCwgbV9keW5hbWljUHNldWRvLCBmYWxzZSwgZmFs
c2UsIG1fZm9yY2VQc2V1ZG9DbGFzc01hc2ssIHN0eWxlKCksIG1fcGFyZW50Tm9kZSA/IG1fcGFy
ZW50Tm9kZS0+cmVuZGVyU3R5bGUoKSA6IDApOworICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBt
X2NoZWNrZXIuY2hlY2tTZWxlY3RvcihydWxlRGF0YS5zZWxlY3RvcigpLCBtX2VsZW1lbnQsIG1f
ZHluYW1pY1BzZXVkbywgZmFsc2UsIGZhbHNlLCBzdHlsZSgpLCBtX3BhcmVudE5vZGUgPyBtX3Bh
cmVudE5vZGUtPnJlbmRlclN0eWxlKCkgOiAwKTsKICAgICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JN
YXRjaGVzKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fY2hlY2tlci5tX3BzZXVk
b1N0eWxlICE9IE5PUFNFVURPICYmIG1fY2hlY2tlci5tX3BzZXVkb1N0eWxlICE9IG1fZHluYW1p
Y1BzZXVkbykKQEAgLTIyMjEsNyArMjIxOCw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBDU1NTZWxlY3Rvciogc2VsCiAv
LyAqIFNlbGVjdG9yTWF0Y2hlcyAgICAgICAgIC0gdGhlIHNlbGVjdG9yIG1hdGNoZXMgdGhlIGVs
ZW1lbnQgZQogLy8gKiBTZWxlY3RvckZhaWxzTG9jYWxseSAgICAtIHRoZSBzZWxlY3RvciBmYWls
cyBmb3IgdGhlIGVsZW1lbnQgZQogLy8gKiBTZWxlY3RvckZhaWxzQ29tcGxldGVseSAtIHRoZSBz
ZWxlY3RvciBmYWlscyBmb3IgZSBhbmQgYW55IHNpYmxpbmcgb3IgYW5jZXN0b3Igb2YgZQotQ1NT
U3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNo
ZWNrZXI6OmNoZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgUHNldWRv
SWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExp
bmssIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNrLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0
eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAorQ1NTU3R5bGVTZWxl
Y3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgUHNldWRvSWQmIGR5bmFt
aWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRl
clN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNv
bnN0CiB7CiAjaWYgRU5BQkxFKFNWRykKICAgICAvLyBTcGVjOiBDU1MyIHNlbGVjdG9ycyBjYW5u
b3QgYmUgYXBwbGllZCB0byB0aGUgKGNvbmNlcHR1YWxseSkgY2xvbmVkIERPTSB0cmVlCkBAIC0y
MjMxLDcgKzIyMjgsNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxl
U2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcgogI2VuZGlmCiAKICAgICAv
LyBmaXJzdCBzZWxlY3RvciBoYXMgdG8gbWF0Y2gKLSAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Io
c2VsLCBlLCBkeW5hbWljUHNldWRvLCBpc1N1YlNlbGVjdG9yLCBlbmNvdW50ZXJlZExpbmssIGZv
cmNlUHNldWRvQ2xhc3NNYXNrLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkpCisg
ICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgaXNTdWJTZWxl
Y3RvciwgZW5jb3VudGVyZWRMaW5rLCBlbGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSkp
CiAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKIAogICAgIC8vIFRoZSByZXN0
IG9mIHRoZSBzZWxlY3RvcnMgaGFzIHRvIG1hdGNoCkBAIC0yMjY1LDcgKzIyNjIsNyBAQCBDU1NT
dHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hl
Y2tlcjo6Y2hlY2tTZWxlY3RvcgogICAgICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNFbGVt
ZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBs
ZXRlbHk7CiAgICAgICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKLSAg
ICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihzZWwsIGUs
IGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmssIGZvcmNlUHNldWRvQ2xhc3NN
YXNrKTsKKyAgICAgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3Rv
cihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOwogICAgICAg
ICAgICAgICAgIGlmIChtYXRjaCAhPSBTZWxlY3RvckZhaWxzTG9jYWxseSkKICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1hdGNoOwogICAgICAgICAgICAgfQpAQCAtMjI3Niw3ICsyMjczLDcg
QEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxl
Y3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IKICAgICAgICAgICAgIGlmICghbiB8fCAhbi0+aXNF
bGVtZW50Tm9kZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxl
dGVseTsKICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAg
ICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBl
bmNvdW50ZXJlZExpbmssIGZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKKyAgICAgICAgICAgIHJldHVy
biBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVk
TGluayk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6RGlyZWN0QWRqYWNl
bnQ6CiAgICAgICAgIHsKQEAgLTIyOTIsNyArMjI4OSw3IEBAIENTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVj
dG9yCiAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwogICAgICAg
ICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKICAgICAgICAgICAgIG1fbWF0Y2hW
aXNpdGVkUHNldWRvQ2xhc3MgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVj
dG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQ
c2V1ZG9DbGFzc01hc2spOworICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBl
LCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsKICAgICAgICAgfQogICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpJbmRpcmVjdEFkamFjZW50OgogICAgICAgICAgICAgaWYg
KCFtX2NvbGxlY3RSdWxlc09ubHkgJiYgZS0+cGFyZW50Tm9kZSgpICYmIGUtPnBhcmVudE5vZGUo
KS0+aXNFbGVtZW50Tm9kZSgpKSB7CkBAIC0yMzA4LDcgKzIzMDUsNyBAQCBDU1NTdHlsZVNlbGVj
dG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tTZWxlY3RvcgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2Fs
bHk7CiAgICAgICAgICAgICAgICAgZSA9IHN0YXRpY19jYXN0PEVsZW1lbnQqPihuKTsKICAgICAg
ICAgICAgICAgICBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzID0gZmFsc2U7Ci0gICAgICAgICAg
ICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWlj
UHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzayk7Cisg
ICAgICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBl
LCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsKICAgICAgICAgICAgICAg
ICBpZiAobWF0Y2ggIT0gU2VsZWN0b3JGYWlsc0xvY2FsbHkpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBtYXRjaDsKICAgICAgICAgICAgIH07CkBAIC0yMzIwLDE0ICsyMzE3LDE0IEBAIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja1NlbGVjdG9yCiAgICAgICAgICAgICBpZiAoKGVsZW1lbnRTdHlsZSB8fCBt
X2NvbGxlY3RSdWxlc09ubHkpICYmIGR5bmFtaWNQc2V1ZG8gIT0gTk9QU0VVRE8gJiYgZHluYW1p
Y1BzZXVkbyAhPSBTRUxFQ1RJT04gJiYKICAgICAgICAgICAgICAgICAhKChSZW5kZXJTY3JvbGxi
YXI6OnNjcm9sbGJhckZvclN0eWxlUmVzb2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xM
QkFSX0NPUk5FUiB8fCBkeW5hbWljUHNldWRvID09IFJFU0laRVIpICYmIHNlbC0+bV9tYXRjaCA9
PSBDU1NTZWxlY3Rvcjo6UHNldWRvQ2xhc3MpKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxl
Y3RvckZhaWxzQ29tcGxldGVseTsKLSAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNl
bCwgZSwgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0Ns
YXNzTWFzaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpOworICAgICAgICAgICAg
cmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50
ZXJlZExpbmssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKTsKICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6U2hhZG93RGVzY2VuZGFudDoKICAgICAgICAgewogICAgICAgICAgICAg
Tm9kZSogc2hhZG93SG9zdE5vZGUgPSBlLT5zaGFkb3dBbmNlc3Rvck5vZGUoKTsKICAgICAgICAg
ICAgIGlmIChzaGFkb3dIb3N0Tm9kZSA9PSBlIHx8ICFzaGFkb3dIb3N0Tm9kZS0+aXNFbGVtZW50
Tm9kZSgpKQogICAgICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsK
ICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4oc2hhZG93SG9zdE5vZGUpOwot
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCBm
YWxzZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzayk7CisgICAgICAgICAg
ICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNv
dW50ZXJlZExpbmspOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNDg2LDcgKzI0ODMsNyBAQCBz
dGF0aWMgYm9vbCBhbnlBdHRyaWJ1dGVNYXRjaGVzKE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcywg
Q1NTU2VsZWN0b3I6Ok1hdGNoIG1hdAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0
b3IqIHNlbCwgRWxlbWVudCogZSwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJT
ZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NN
YXNrLCBSZW5kZXJTdHlsZSogZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVu
dFN0eWxlKSBjb25zdAorYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWVudCogZSwgUHNldWRvSWQmIGR5
bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJl
bmRlclN0eWxlKiBlbGVtZW50U3R5bGUsIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUp
IGNvbnN0CiB7CiAgICAgQVNTRVJUKGUpOwogICAgIGlmICghZSkKQEAgLTI1MjgsNyArMjUyNSw3
IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lCiAgICAgICAgICAgICAgICAgLy8gdGhlIHBhcnNl
ciBlbmZvcmNlcyB0aGF0IHRoaXMgbmV2ZXIgb2NjdXJzCiAgICAgICAgICAgICAgICAgQVNTRVJU
KHN1YlNlbC0+cHNldWRvVHlwZSgpICE9IENTU1NlbGVjdG9yOjpQc2V1ZG9Ob3QpOwogCi0gICAg
ICAgICAgICAgICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHN1YlNlbCwgZSwgZHluYW1pY1BzZXVk
bywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0
eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQorICAgICAgICAgICAgICAgIGlmICghY2hlY2tPbmVT
ZWxlY3RvcihzdWJTZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGluaywg
ZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChkeW5hbWljUHNl
dWRvICE9IE5PUFNFVURPICYmIChSZW5kZXJTY3JvbGxiYXI6OnNjcm9sbGJhckZvclN0eWxlUmVz
b2x2ZSgpIHx8IGR5bmFtaWNQc2V1ZG8gPT0gU0NST0xMQkFSX0NPUk5FUiB8fCBkeW5hbWljUHNl
dWRvID09IFJFU0laRVIpKSB7CkBAIC0yNTQwLDI4ICsyNTM3LDggQEAgYm9vbCBDU1NTdHlsZVNl
bGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNl
bCwgRWxlbWUKICAgICAgICAgICAgICAgICByZXR1cm4gIW1fZG9jdW1lbnQtPnBhZ2UoKS0+Zm9j
dXNDb250cm9sbGVyKCktPmlzQWN0aXZlKCk7CiAgICAgICAgIH0KIAotICAgICAgICBDU1NTZWxl
Y3Rvcjo6UHNldWRvVHlwZSBwc2V1ZG9UeXBlID0gc2VsLT5wc2V1ZG9UeXBlKCk7Ci0KLSAgICAg
ICAgLy8gQ2hlY2sgZm9yY2VkIHBzZXVkbyBjbGFzcyBtYXNrIGZpcnN0LgotICAgICAgICBpZiAo
Zm9yY2VQc2V1ZG9DbGFzc01hc2sgIT0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzaykgewotICAg
ICAgICAgICAgc3dpdGNoIChwc2V1ZG9UeXBlKSB7Ci0gICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9MaW5rOgotICAgICAgICAgICAgICAgIHJldHVybiBmb3JjZVBzZXVkb0NsYXNz
TWFzayAmIEZvcmNlTGluazsKLSAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Zp
c2l0ZWQ6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZvcmNlUHNldWRvQ2xhc3NNYXNrICYgRm9y
Y2VWaXNpdGVkOwotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRm9jdXM6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZvcmNlUHNldWRvQ2xhc3NNYXNrICYgRm9yY2VGb2N1czsK
LSAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyOgotICAgICAgICAgICAg
ICAgIHJldHVybiBmb3JjZVBzZXVkb0NsYXNzTWFzayAmIEZvcmNlSG92ZXI7Ci0gICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9BY3RpdmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGZvcmNlUHNldWRvQ2xhc3NNYXNrICYgRm9yY2VBY3RpdmU7Ci0gICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gCiAg
ICAgICAgIC8vIE5vcm1hbCBlbGVtZW50IHBzZXVkbyBjbGFzcyBjaGVja2luZy4KLSAgICAgICAg
c3dpdGNoIChwc2V1ZG9UeXBlKSB7CisgICAgICAgIHN3aXRjaCAoc2VsLT5wc2V1ZG9UeXBlKCkp
IHsKICAgICAgICAgICAgIC8vIFBzZXVkbyBjbGFzc2VzOgogICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvTm90OgogICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBBbHJlYWR5IGhh
bmRsZWQgdXAgYWJvdmUuCkBAIC0yODU3LDcgKzI4MzQsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBF
bGVtZQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvQW55OgogICAgICAgICAgICAgICAgIGZvciAoQ1NTU2VsZWN0b3IqIHNlbGVjdG9y
ID0gc2VsLT5zZWxlY3Rvckxpc3QoKS0+Zmlyc3QoKTsgc2VsZWN0b3I7IHNlbGVjdG9yID0gQ1NT
U2VsZWN0b3JMaXN0OjpuZXh0KHNlbGVjdG9yKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAo
Y2hlY2tTZWxlY3RvcihzZWxlY3RvciwgZSwgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVy
ZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50
U3R5bGUpID09IFNlbGVjdG9yTWF0Y2hlcykKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNr
U2VsZWN0b3Ioc2VsZWN0b3IsIGUsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGlu
aywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpID09IFNlbGVjdG9yTWF0Y2hlcykK
ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTI4NzgsNyArMjg1NSw3IEBAIGJvb2wgQ1NTU3R5
bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9y
KiBzZWwsIEVsZW1lCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkOgogICAgICAgICAgICAgICAgIGlmIChlICYmIGUtPmlz
TGluaygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9tYXRjaFZpc2l0ZWRQc2V1ZG9D
bGFzczsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xh
c3MgfHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGUsIENTU1Nl
bGVjdG9yOjpQc2V1ZG9WaXNpdGVkKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0RyYWc6IHsKICAgICAgICAgICAgICAgICBpZiAo
ZWxlbWVudFN0eWxlKQpAQCAtMjg5MCw3ICsyODY3LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxl
bWUKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZvY3VzOgotICAgICAgICAgICAgICAgIGlmIChlICYmIGUt
PmZvY3VzZWQoKSAmJiBlLT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIGUtPmRvY3VtZW50KCktPmZy
YW1lKCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkKKyAgICAgICAgICAgICAg
ICBpZiAoZSAmJiAoKGUtPmZvY3VzZWQoKSAmJiBlLT5kb2N1bWVudCgpLT5mcmFtZSgpICYmIGUt
PmRvY3VtZW50KCktPmZyYW1lKCktPnNlbGVjdGlvbigpLT5pc0ZvY3VzZWRBbmRBY3RpdmUoKSkg
fHwgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGUsIENTU1NlbGVj
dG9yOjpQc2V1ZG9Gb2N1cykpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0hvdmVyOiB7CkBAIC0yOTAxLDcgKzI4NzgsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVtZQog
ICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudFN0eWxlLT5zZXRBZmZlY3RlZEJ5SG92ZXJS
dWxlcyh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZS0+cmVuZGVyU3R5bGUo
KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGUtPnJlbmRlclN0eWxlKCktPnNldEFmZmVjdGVk
QnlIb3ZlclJ1bGVzKHRydWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZS0+aG92ZXJlZCgp
KQorICAgICAgICAgICAgICAgICAgICBpZiAoZS0+aG92ZXJlZCgpIHx8IEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShlLCBDU1NTZWxlY3Rvcjo6UHNldWRvSG92ZXIp
KQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjkxNCw3ICsyODkxLDcgQEAgYm9vbCBDU1NT
dHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0
b3IqIHNlbCwgRWxlbWUKICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRTdHlsZS0+c2V0
QWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKHRydWUpOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChlLT5yZW5kZXJTdHlsZSgpKQogICAgICAgICAgICAgICAgICAgICAgICAgZS0+cmVuZGVyU3R5
bGUoKS0+c2V0QWZmZWN0ZWRCeUFjdGl2ZVJ1bGVzKHRydWUpOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoZS0+YWN0aXZlKCkpCisgICAgICAgICAgICAgICAgICAgIGlmIChlLT5hY3RpdmUoKSB8
fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGUoZSwgQ1NTU2VsZWN0
b3I6OlBzZXVkb0FjdGl2ZSkpCiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oIGIvU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlU2VsZWN0b3IuaAppbmRleCBlZmUzMTY1YzA0ODNjZTA4YmQ2YTY0NDM5ODc0OGQz
ZjRmN2E2MzEzLi42YzYxODFiNjU2MTk3ZTJmYTRkNmMxYzAyNGFmM2I0NTMyYzMxNjNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgKQEAgLTEzNCwxNiArMTM0LDYgQEAgcHVi
bGljOgogICAgICAgICBQYXNzUmVmUHRyPFJlbmRlclN0eWxlPiBzdHlsZUZvcktleWZyYW1lKGNv
bnN0IFJlbmRlclN0eWxlKiwgY29uc3QgV2ViS2l0Q1NTS2V5ZnJhbWVSdWxlKiwgS2V5ZnJhbWVW
YWx1ZSYpOwogCiAgICAgcHVibGljOgotICAgICAgICBlbnVtIEZvcmNlUHNldWRvQ2xhc3NGbGFn
cyB7Ci0gICAgICAgICAgICBGb3JjZU5vbmUgPSAwLAotICAgICAgICAgICAgRG9Ob3RGb3JjZVBz
ZXVkb0NsYXNzTWFzayA9IDEgPDwgMCwKLSAgICAgICAgICAgIEZvcmNlSG92ZXIgPSAxIDw8IDEs
Ci0gICAgICAgICAgICBGb3JjZUZvY3VzID0gMSA8PCAyLAotICAgICAgICAgICAgRm9yY2VBY3Rp
dmUgPSAxIDw8IDMsCi0gICAgICAgICAgICBGb3JjZUxpbmsgPSAxIDw8IDQsCi0gICAgICAgICAg
ICBGb3JjZVZpc2l0ZWQgPSAxIDw8IDUKLSAgICAgICAgfTsKLQogICAgICAgICAvLyBUaGVzZSBt
ZXRob2RzIHdpbGwgZ2l2ZSBiYWNrIHRoZSBzZXQgb2YgcnVsZXMgdGhhdCBtYXRjaGVkIGZvciBh
IGdpdmVuIGVsZW1lbnQgKG9yIGEgcHNldWRvLWVsZW1lbnQpLgogICAgICAgICBlbnVtIENTU1J1
bGVGaWx0ZXIgewogICAgICAgICAgICAgVUFBbmRVc2VyQ1NTUnVsZXMgICA9IDEgPDwgMSwKQEAg
LTE1Myw4ICsxNDMsOCBAQCBwdWJsaWM6CiAgICAgICAgICAgICBBbGxCdXRFbXB0eUNTU1J1bGVz
ID0gVUFBbmRVc2VyQ1NTUnVsZXMgfCBBdXRob3JDU1NSdWxlcyB8IENyb3NzT3JpZ2luQ1NTUnVs
ZXMsCiAgICAgICAgICAgICBBbGxDU1NSdWxlcyAgICAgICAgID0gQWxsQnV0RW1wdHlDU1NSdWxl
cyB8IEVtcHR5Q1NTUnVsZXMsCiAgICAgICAgIH07Ci0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUnVs
ZUxpc3Q+IHN0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCB1bnNpZ25lZCBydWxlc1RvSW5j
bHVkZSA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMsIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNr
ID0gRG9Ob3RGb3JjZVBzZXVkb0NsYXNzTWFzayk7Ci0gICAgICAgIFBhc3NSZWZQdHI8Q1NTUnVs
ZUxpc3Q+IHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCBQc2V1ZG9JZCwgdW5z
aWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0eUNTU1J1bGVzLCB1bnNpZ25lZCBmb3Jj
ZVBzZXVkb0NsYXNzTWFzayA9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2spOworICAgICAgICBQ
YXNzUmVmUHRyPENTU1J1bGVMaXN0PiBzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgdW5z
aWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0eUNTU1J1bGVzKTsKKyAgICAgICAgUGFz
c1JlZlB0cjxDU1NSdWxlTGlzdD4gcHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCos
IFBzZXVkb0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMp
OwogCiAgICAgICAgIC8vIEdpdmVuIGEgQ1NTIGtleXdvcmQgaW4gdGhlIHJhbmdlICh4eC1zbWFs
bCB0byAtd2Via2l0LXh4eC1sYXJnZSksIHRoaXMgZnVuY3Rpb24gd2lsbCByZXR1cm4KICAgICAg
ICAgLy8gdGhlIGNvcnJlY3QgZm9udCBzaXplIHNjYWxlZCByZWxhdGl2ZSB0byB0aGUgdXNlcidz
IGRlZmF1bHQgKG1lZGl1bSkuCkBAIC0yODUsOCArMjc1LDggQEAgcHVibGljOgogICAgICAgICAg
ICAgU2VsZWN0b3JDaGVja2VyKERvY3VtZW50KiwgYm9vbCBzdHJpY3RQYXJzaW5nKTsKIAogICAg
ICAgICAgICAgYm9vbCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxlbWVudCopIGNvbnN0
OwotICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwg
RWxlbWVudCosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJv
b2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBmb3JjZVBzZXVkb0NsYXNzTWFzayA9IERvTm90
Rm9yY2VQc2V1ZG9DbGFzc01hc2ssIFJlbmRlclN0eWxlKiA9IDAsIFJlbmRlclN0eWxlKiBlbGVt
ZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsKLSAgICAgICAgICAgIGJvb2wgY2hlY2tPbmVTZWxl
Y3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9v
bCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgdW5zaWduZWQgZm9yY2VQc2V1
ZG9DbGFzc01hc2ssIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHls
ZSkgY29uc3Q7CisgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIGNoZWNrU2VsZWN0b3IoQ1NTU2Vs
ZWN0b3IqLCBFbGVtZW50KiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxl
Y3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRlclN0eWxlKiA9IDAsIFJlbmRlclN0eWxl
KiBlbGVtZW50UGFyZW50U3R5bGUgPSAwKSBjb25zdDsKKyAgICAgICAgICAgIGJvb2wgY2hlY2tP
bmVTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVk
bywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRlcmVkTGluaywgUmVuZGVyU3R5bGUq
LCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdDsKICAgICAgICAgICAgIGJv
b2wgY2hlY2tTY3JvbGxiYXJQc2V1ZG9DbGFzcyhDU1NTZWxlY3RvciosIFBzZXVkb0lkJiBkeW5h
bWljUHNldWRvKSBjb25zdDsKICAgICAgICAgICAgIHN0YXRpYyBib29sIGZhc3RDaGVja1NlbGVj
dG9yKGNvbnN0IENTU1NlbGVjdG9yKiwgY29uc3QgRWxlbWVudCopOwogCkBAIC0zODMsNyArMzcz
LDYgQEAgcHVibGljOgogICAgICAgICBDU1NWYWx1ZSogbV9saW5lSGVpZ2h0VmFsdWU7CiAgICAg
ICAgIGJvb2wgbV9mb250RGlydHk7CiAgICAgICAgIGJvb2wgbV9tYXRjaEF1dGhvckFuZFVzZXJT
dHlsZXM7Ci0gICAgICAgIHVuc2lnbmVkIG1fZm9yY2VQc2V1ZG9DbGFzc01hc2s7IC8vIGVudW0g
Rm9yY2VQc2V1ZG9DbGFzc0ZsYWdzCiAgICAgICAgIAogICAgICAgICBSZWZQdHI8Q1NTRm9udFNl
bGVjdG9yPiBtX2ZvbnRTZWxlY3RvcjsKICAgICAgICAgVmVjdG9yPENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKj4gbV9hZGRpdGlvbmFsQXR0cmlidXRlU3R5bGVEZWNsczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IGI0YjkwODM3OGQz
NWE0ODg3MTU5ZDExNzNlYjg0MDVlMDZmMTY4OWEuLjZiNDE3ZGRlYzYzZjRhMjgzYzY1ZDY1NDEx
Yzc2MzNiOTk0YzQ4ZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNTU0FnZW50LmNwcApAQCAtMTMwLDYgKzEzMCwxNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKK2VudW0gRm9yY2VQc2V1ZG9DbGFzc0ZsYWdzIHsKKyAgICBQc2V1ZG9Ob25lID0gMCwKKyAg
ICBQc2V1ZG9Ib3ZlciA9IDEgPDwgMCwKKyAgICBQc2V1ZG9Gb2N1cyA9IDEgPDwgMSwKKyAgICBQ
c2V1ZG9BY3RpdmUgPSAxIDw8IDIsCisgICAgUHNldWRvVmlzaXRlZCA9IDEgPDwgMworfTsKKwog
c3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soSW5zcGVjdG9yQXJyYXkqIHBz
ZXVkb0NsYXNzQXJyYXkpCiB7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGFjdGl2
ZSwgKCJhY3RpdmUiKSk7CkBAIC0xMzcsOSArMTQ1LDkgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1
dGVQc2V1ZG9DbGFzc01hc2soSW5zcGVjdG9yQXJyYXkqIHBzZXVkb0NsYXNzQXJyYXkpCiAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGZvY3VzLCAoImZvY3VzIikpOwogICAgIERFRklO
RV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB2aXNpdGVkLCAoInZpc2l0ZWQiKSk7CiAgICAgaWYgKCFw
c2V1ZG9DbGFzc0FycmF5IHx8ICFwc2V1ZG9DbGFzc0FycmF5LT5sZW5ndGgoKSkKLSAgICAgICAg
cmV0dXJuIENTU1N0eWxlU2VsZWN0b3I6OkRvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2s7CisgICAg
ICAgIHJldHVybiBQc2V1ZG9Ob25lOwogCi0gICAgdW5zaWduZWQgcmVzdWx0ID0gQ1NTU3R5bGVT
ZWxlY3Rvcjo6Rm9yY2VOb25lOworICAgIHVuc2lnbmVkIHJlc3VsdCA9IFBzZXVkb05vbmU7CiAg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwc2V1ZG9DbGFzc0FycmF5LT5sZW5ndGgoKTsgKytp
KSB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcHNldWRvQ2xhc3NWYWx1ZSA9IHBz
ZXVkb0NsYXNzQXJyYXktPmdldChpKTsKICAgICAgICAgU3RyaW5nIHBzZXVkb0NsYXNzOwpAQCAt
MTQ3LDEzICsxNTUsMTMgQEAgc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9DbGFzc01hc2so
SW5zcGVjdG9yQXJyYXkqIHBzZXVkb0NsYXNzQXJyYXkpCiAgICAgICAgIGlmICghc3VjY2VzcykK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAocHNldWRvQ2xhc3MgPT0gYWN0aXZl
KQotICAgICAgICAgICAgcmVzdWx0IHw9IENTU1N0eWxlU2VsZWN0b3I6OkZvcmNlQWN0aXZlOwor
ICAgICAgICAgICAgcmVzdWx0IHw9IFBzZXVkb0FjdGl2ZTsKICAgICAgICAgZWxzZSBpZiAocHNl
dWRvQ2xhc3MgPT0gaG92ZXIpCi0gICAgICAgICAgICByZXN1bHQgfD0gQ1NTU3R5bGVTZWxlY3Rv
cjo6Rm9yY2VIb3ZlcjsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBQc2V1ZG9Ib3ZlcjsKICAgICAg
ICAgZWxzZSBpZiAocHNldWRvQ2xhc3MgPT0gZm9jdXMpCi0gICAgICAgICAgICByZXN1bHQgfD0g
Q1NTU3R5bGVTZWxlY3Rvcjo6Rm9yY2VGb2N1czsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBQc2V1
ZG9Gb2N1czsKICAgICAgICAgZWxzZSBpZiAocHNldWRvQ2xhc3MgPT0gdmlzaXRlZCkKLSAgICAg
ICAgICAgIHJlc3VsdCB8PSBDU1NTdHlsZVNlbGVjdG9yOjpGb3JjZVZpc2l0ZWQ7CisgICAgICAg
ICAgICByZXN1bHQgfD0gUHNldWRvVmlzaXRlZDsKICAgICB9CiAKICAgICByZXR1cm4gcmVzdWx0
OwpAQCAtMTg2LDYgKzE5NCw3IEBAIENTU1N0eWxlUnVsZSogSW5zcGVjdG9yQ1NTQWdlbnQ6OmFz
Q1NTU3R5bGVSdWxlKFN0eWxlQmFzZSogc3R5bGVCYXNlKQogSW5zcGVjdG9yQ1NTQWdlbnQ6Oklu
c3BlY3RvckNTU0FnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMs
IEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCkKICAgICA6IG1faW5zdHJ1bWVudGluZ0FnZW50
cyhpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9kb21BZ2VudChkb21BZ2VudCkKKyAgICAs
IG1fbGFzdFBzZXVkb1N0YXRlKDApCiAgICAgLCBtX2xhc3RTdHlsZVNoZWV0SWQoMSkKICAgICAs
IG1fbGFzdFJ1bGVJZCgxKQogICAgICwgbV9sYXN0U3R5bGVJZCgxKQpAQCAtMjAzLDYgKzIxMiwx
MSBAQCBJbnNwZWN0b3JDU1NBZ2VudDo6fkluc3BlY3RvckNTU0FnZW50KCkKICAgICByZXNldCgp
OwogfQogCit2b2lkIEluc3BlY3RvckNTU0FnZW50OjpjbGVhckZyb250ZW5kKCkKK3sKKyAgICBj
bGVhclBzZXVkb1N0YXRlKHRydWUpOworfQorCiB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNl
dCgpCiB7CiAgICAgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldC5jbGVhcigpOwpAQCAtMjExLDYg
KzIyNSwyNSBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpyZXNldCgpCiAgICAgbV9kb2N1bWVu
dFRvSW5zcGVjdG9yU3R5bGVTaGVldC5jbGVhcigpOwogfQogCitib29sIEluc3BlY3RvckNTU0Fn
ZW50Ojpmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQqIGVsZW1lbnQsIENTU1NlbGVjdG9yOjpQc2V1
ZG9UeXBlIHBzZXVkb1R5cGUpCit7CisgICAgaWYgKG1fbGFzdEVsZW1lbnRXaXRoUHNldWRvU3Rh
dGUgIT0gZWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgc3dpdGNoIChwc2V1
ZG9UeXBlKSB7CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvQWN0aXZlOgorICAgICAgICBy
ZXR1cm4gbV9sYXN0UHNldWRvU3RhdGUgJiBQc2V1ZG9BY3RpdmU7CisgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvRm9jdXM6CisgICAgICAgIHJldHVybiBtX2xhc3RQc2V1ZG9TdGF0ZSAmIFBz
ZXVkb0ZvY3VzOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyOgorICAgICAgICBy
ZXR1cm4gbV9sYXN0UHNldWRvU3RhdGUgJiBQc2V1ZG9Ib3ZlcjsKKyAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9WaXNpdGVkOgorICAgICAgICByZXR1cm4gbV9sYXN0UHNldWRvU3RhdGUgJiBQ
c2V1ZG9WaXNpdGVkOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
Cit9CisKIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlc0Zvck5vZGUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+
KiBmb3JjZWRQc2V1ZG9DbGFzc2VzLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KQog
ewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBlbGVtZW50Rm9ySWQoZXJyb3JTdHJpbmcsIG5vZGVJ
ZCk7CkBAIC0yMjcsMTYgKzI2MCwyMiBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHls
ZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgYwogICAgIFJl
ZlB0cjxJbnNwZWN0b3JTdHlsZT4gY29tcHV0ZWRJbnNwZWN0b3JTdHlsZSA9IEluc3BlY3RvclN0
eWxlOjpjcmVhdGUoSW5zcGVjdG9yQ1NTSWQoKSwgY29tcHV0ZWRTdHlsZUluZm8sIDApOwogICAg
IHJlc3VsdE9iamVjdC0+c2V0T2JqZWN0KCJjb21wdXRlZFN0eWxlIiwgY29tcHV0ZWRJbnNwZWN0
b3JTdHlsZS0+YnVpbGRPYmplY3RGb3JTdHlsZSgpKTsKIAotICAgIHVuc2lnbmVkIGZvcmNlUHNl
dWRvQ2xhc3NNYXNrID0gY29tcHV0ZVBzZXVkb0NsYXNzTWFzayhmb3JjZWRQc2V1ZG9DbGFzc2Vz
ID8gZm9yY2VkUHNldWRvQ2xhc3Nlcy0+Z2V0KCkgOiAwKTsKKyAgICB1bnNpZ25lZCBmb3JjZVBz
ZXVkb1N0YXRlID0gY29tcHV0ZVBzZXVkb0NsYXNzTWFzayhmb3JjZWRQc2V1ZG9DbGFzc2VzID8g
Zm9yY2VkUHNldWRvQ2xhc3Nlcy0+Z2V0KCkgOiAwKTsKKyAgICBib29sIG5lZWRTdHlsZVJlY2Fs
YyA9IGVsZW1lbnQgIT0gbV9sYXN0RWxlbWVudFdpdGhQc2V1ZG9TdGF0ZSB8fCBmb3JjZVBzZXVk
b1N0YXRlICE9IG1fbGFzdFBzZXVkb1N0YXRlOworICAgIG1fbGFzdFBzZXVkb1N0YXRlID0gZm9y
Y2VQc2V1ZG9TdGF0ZTsKKyAgICBtX2xhc3RFbGVtZW50V2l0aFBzZXVkb1N0YXRlID0gZWxlbWVu
dDsKKyAgICBpZiAobmVlZFN0eWxlUmVjYWxjKQorICAgICAgICBlbGVtZW50LT5vd25lckRvY3Vt
ZW50KCktPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworCiAg
ICAgQ1NTU3R5bGVTZWxlY3Rvciogc2VsZWN0b3IgPSBlbGVtZW50LT5vd25lckRvY3VtZW50KCkt
PnN0eWxlU2VsZWN0b3IoKTsKLSAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IG1hdGNoZWRSdWxlcyA9
IHNlbGVjdG9yLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBDU1NTdHlsZVNlbGVjdG9y
OjpBbGxDU1NSdWxlcywgZm9yY2VQc2V1ZG9DbGFzc01hc2spOworICAgIFJlZlB0cjxDU1NSdWxl
TGlzdD4gbWF0Y2hlZFJ1bGVzID0gc2VsZWN0b3ItPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1l
bnQsIENTU1N0eWxlU2VsZWN0b3I6OkFsbENTU1J1bGVzKTsKICAgICByZXN1bHRPYmplY3QtPnNl
dEFycmF5KCJtYXRjaGVkQ1NTUnVsZXMiLCBidWlsZEFycmF5Rm9yUnVsZUxpc3QobWF0Y2hlZFJ1
bGVzLmdldCgpKSk7CiAKICAgICByZXN1bHRPYmplY3QtPnNldEFycmF5KCJzdHlsZUF0dHJpYnV0
ZXMiLCBidWlsZEFycmF5Rm9yQXR0cmlidXRlU3R5bGVzKGVsZW1lbnQpKTsKIAogICAgIFJlZlB0
cjxJbnNwZWN0b3JBcnJheT4gcHNldWRvRWxlbWVudHMgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRl
KCk7CiAgICAgZm9yIChQc2V1ZG9JZCBwc2V1ZG9JZCA9IEZJUlNUX1BVQkxJQ19QU0VVRE9JRDsg
cHNldWRvSWQgPCBBRlRFUl9MQVNUX0lOVEVSTkFMX1BTRVVET0lEOyBwc2V1ZG9JZCA9IHN0YXRp
Y19jYXN0PFBzZXVkb0lkPihwc2V1ZG9JZCArIDEpKSB7Ci0gICAgICAgIFJlZlB0cjxDU1NSdWxl
TGlzdD4gbWF0Y2hlZFJ1bGVzID0gc2VsZWN0b3ItPnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50
KGVsZW1lbnQsIHBzZXVkb0lkLCBDU1NTdHlsZVNlbGVjdG9yOjpBbGxDU1NSdWxlcywgZm9yY2VQ
c2V1ZG9DbGFzc01hc2spOworICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IG1hdGNoZWRSdWxl
cyA9IHNlbGVjdG9yLT5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBwc2V1ZG9J
ZCwgQ1NTU3R5bGVTZWxlY3Rvcjo6QWxsQ1NTUnVsZXMpOwogICAgICAgICBpZiAobWF0Y2hlZFJ1
bGVzICYmIG1hdGNoZWRSdWxlcy0+bGVuZ3RoKCkpIHsKICAgICAgICAgICAgIFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+IHBzZXVkb1N0eWxlcyA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7CiAg
ICAgICAgICAgICBwc2V1ZG9TdHlsZXMtPnNldE51bWJlcigicHNldWRvSWQiLCBzdGF0aWNfY2Fz
dDxpbnQ+KHBzZXVkb0lkKSk7CkBAIC01ODMsNiArNjIyLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6ZGlkUmVtb3ZlRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIGlmIChk
b2N1bWVudCkKICAgICAgICAgbV9kb2N1bWVudFRvSW5zcGVjdG9yU3R5bGVTaGVldC5yZW1vdmUo
ZG9jdW1lbnQpOworICAgIGNsZWFyUHNldWRvU3RhdGUoZmFsc2UpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCkBAIC01OTAsNiArNjMw
LDExIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlbW92ZURPTU5vZGUoTm9kZSogbm9k
ZSkKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIGlmIChtX2xhc3RFbGVt
ZW50V2l0aFBzZXVkb1N0YXRlLmdldCgpID09IG5vZGUpIHsKKyAgICAgICAgY2xlYXJQc2V1ZG9T
dGF0ZShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBOb2RlVG9JbnNwZWN0
b3JTdHlsZVNoZWV0OjppdGVyYXRvciBpdCA9IG1fbm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVldC5m
aW5kKG5vZGUpOwogICAgIGlmIChpdCA9PSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZW5k
KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTYxMCw2ICs2NTUsMTggQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6ZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50KiBlbGVtZW50KQogICAgIGl0LT5zZWNv
bmQtPmRpZE1vZGlmeUVsZW1lbnRBdHRyaWJ1dGUoKTsKIH0KIAordm9pZCBJbnNwZWN0b3JDU1NB
Z2VudDo6Y2xlYXJQc2V1ZG9TdGF0ZShib29sIHJlY2FsY1N0eWxlcykKK3sKKyAgICBFbGVtZW50
KiBlbGVtZW50ID0gbV9sYXN0RWxlbWVudFdpdGhQc2V1ZG9TdGF0ZS5nZXQoKTsKKyAgICBtX2xh
c3RFbGVtZW50V2l0aFBzZXVkb1N0YXRlID0gMDsKKyAgICBtX2xhc3RQc2V1ZG9TdGF0ZSA9IDA7
CisgICAgaWYgKHJlY2FsY1N0eWxlcyAmJiBlbGVtZW50KSB7CisgICAgICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGVsZW1lbnQtPm93bmVyRG9jdW1lbnQoKTsKKyAgICAgICAgaWYgKGRvY3VtZW50
KQorICAgICAgICAgICAgZG9jdW1lbnQtPnN0eWxlU2VsZWN0b3JDaGFuZ2VkKFJlY2FsY1N0eWxl
SW1tZWRpYXRlbHkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmgKaW5kZXggNGY4NGFmYjg2ZjJlMjNmNTI0MDVlNjIwYmQwMzYzMTE0Y2Qz
MGEyZi4uODE0N2E3NzM0Zjc2MzYxYTk1NTUwNDQ1MTZlZmJiOThhNWZmMDgzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTI1LDYgKzI1LDcg
QEAKICNpZm5kZWYgSW5zcGVjdG9yQ1NTQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JDU1NBZ2Vu
dF9oCiAKKyNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU3R5bGVTaGVldC5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvclZhbHVlcy5oIgpAQCAtNjAsNyArNjEsMTAgQEAgcHVibGljOgogICAgIEluc3BlY3RvckNT
U0FnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBJbnNwZWN0b3JET01BZ2VudCopOwogICAgIH5J
bnNwZWN0b3JDU1NBZ2VudCgpOwogCisgICAgYm9vbCBmb3JjZVBzZXVkb1N0YXRlKEVsZW1lbnQq
LCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSk7CisgICAgdm9pZCBjbGVhckZyb250ZW5kKCk7CiAg
ICAgdm9pZCByZXNldCgpOworCiAgICAgdm9pZCBnZXRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5n
KiwgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNldWRv
Q2xhc3NlcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRJ
bmxpbmVTdHlsZUZvck5vZGUoRXJyb3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Piogc3R5bGUpOwogICAgIHZvaWQgZ2V0Q29tcHV0ZWRTdHlsZUZvck5vZGUoRXJy
b3JTdHJpbmcqLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogc3R5bGUpOwpA
QCAtOTksOCArMTAzLDEyIEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlbW92ZURP
TU5vZGUoTm9kZSopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRNb2RpZnlET01BdHRyKEVsZW1lbnQq
KTsKIAorICAgIHZvaWQgY2xlYXJQc2V1ZG9TdGF0ZShib29sIHJlY2FsY1N0eWxlcyk7CisKICAg
ICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7CiAgICAgSW5zcGVj
dG9yRE9NQWdlbnQqIG1fZG9tQWdlbnQ7CisgICAgUmVmUHRyPEVsZW1lbnQ+IG1fbGFzdEVsZW1l
bnRXaXRoUHNldWRvU3RhdGU7CisgICAgdW5zaWduZWQgbV9sYXN0UHNldWRvU3RhdGU7CiAKICAg
ICBJZFRvSW5zcGVjdG9yU3R5bGVTaGVldCBtX2lkVG9JbnNwZWN0b3JTdHlsZVNoZWV0OwogICAg
IENTU1N0eWxlU2hlZXRUb0luc3BlY3RvclN0eWxlU2hlZXQgbV9jc3NTdHlsZVNoZWV0VG9JbnNw
ZWN0b3JTdHlsZVNoZWV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCmluZGV4IGVmOWJjOTA2MmZjMzBhZWE5ZWQ4NzExNzhiODMyMmYxMzQx
MWFjN2QuLjI1ODlhZWJiNzJiM2VhOWFlOWY3MGM5YTljMGIyMTJkNWY4NjM4Y2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTI5
MCw2ICsyOTAsNyBAQCB2b2lkIEluc3BlY3RvckNvbnRyb2xsZXI6OmRpc2Nvbm5lY3RGcm9udGVu
ZCgpCiAjZW5kaWYKICAgICBtX2NvbnNvbGVBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOwogICAgIG1f
ZG9tQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKKyAgICBtX2Nzc0FnZW50LT5jbGVhckZyb250ZW5k
KCk7CiAgICAgbV90aW1lbGluZUFnZW50LT5jbGVhckZyb250ZW5kKCk7CiAgICAgbV9yZXNvdXJj
ZUFnZW50LT5jbGVhckZyb250ZW5kKCk7CiAjaWYgRU5BQkxFKERBVEFCQVNFKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApp
bmRleCAwZTFhMWY1YmU2OGJmNjhkN2E3MTg5MjUwODQzOTMwYWVmOTIwNDg0Li42YjQ1ZjcyYTlm
NzkxNjJmMWVjZWZlZDgyNGVkMGQ0OWExYzhlZThjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTgxLDYgKzE4
MSwxMyBAQCBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6aGFuZGxlTW91c2VQcmVzc0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bQogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
Ym9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3RhdGVJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIEVsZW1lbnQqIGVsZW1lbnQsIENT
U1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHBzZXVkb1N0YXRlKQoreworICAgIGlmIChJbnNwZWN0b3JD
U1NBZ2VudCogY3NzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JDU1NBZ2Vu
dCgpKQorICAgICAgICByZXR1cm4gY3NzQWdlbnQtPmZvcmNlUHNldWRvU3RhdGUoZWxlbWVudCwg
cHNldWRvU3RhdGUpOworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2RpZmllZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyogaW5zdHJ1bWVudGluZ0FnZW50cywgQ2hhcmFjdGVyRGF0YSogY2hhcmFjdGVyRGF0YSkKIHsK
ICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA0OWEzOGZiYmJjZWJmMDMyOWVlZmJm
NzhhOGMxNTk5OTY2YTNjYzIxLi45YmEyMDFhZjcxNGI3ZTI3MDUwNjJjMGEzNjIwZmVlNmE2NmU5
MDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5oCkBAIC0zMSw4ICszMSwxMCBAQAogI2lmbmRlZiBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb25faAogI2RlZmluZSBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25faAogCisjaW5jbHVk
ZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIKICNpbmNsdWRlICJE
b2N1bWVudC5oIgorI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCkBAIC04
Niw2ICs4OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyB2b2lkIG1vdXNlRGlkTW92ZU92ZXJF
bGVtZW50KFBhZ2UqLCBjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9kaWZpZXJGbGFn
cyk7CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VQcmVzcyhQYWdlKik7CisgICAgc3RhdGlj
IGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUp
OwogCiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHN0YXRpYyB2b2lkIGRpZFNjaGVk
dWxlUmVzb3VyY2VSZXF1ZXN0KERvY3VtZW50KiwgY29uc3QgU3RyaW5nJiB1cmwpOwpAQCAtMjE0
LDYgKzIxNyw3IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVy
RWxlbWVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IEhpdFRlc3RSZXN1bHQmLCB1
bnNpZ25lZCBtb2RpZmllckZsYWdzKTsKICAgICBzdGF0aWMgYm9vbCBoYW5kbGVNb3VzZVByZXNz
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgc3RhdGljIGJvb2wgZm9yY2VQc2V1ZG9T
dGF0ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIEVsZW1lbnQqLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvVHlwZSk7CiAKICAgICBzdGF0aWMgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0SW1wbChJ
bnN0cnVtZW50aW5nQWdlbnRzKiwgY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHN0YXRpYyB2b2lk
IGRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiwgY29u
c3QgU3RyaW5nJiB1cmwpOwpAQCAtNDI4LDYgKzQzMiwxNiBAQCBpbmxpbmUgYm9vbCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZU1vdXNlUHJlc3MoUGFnZSogcGFnZSkKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKK2lubGluZSBib29sIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Zm9y
Y2VQc2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBw
c2V1ZG9TdGF0ZSkKK3sKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyhmYWxzZSk7CisgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3Ry
dW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yRG9jdW1lbnQoZWxlbWVudC0+
ZG9jdW1lbnQoKSkpCisgICAgICAgIHJldHVybiBmb3JjZVBzZXVkb1N0YXRlSW1wbChpbnN0cnVt
ZW50aW5nQWdlbnRzLCBlbGVtZW50LCBwc2V1ZG9TdGF0ZSk7CisjZW5kaWYKKyAgICByZXR1cm4g
ZmFsc2U7Cit9CisKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6Y2hhcmFj
dGVyRGF0YU1vZGlmaWVkKERvY3VtZW50KiBkb2N1bWVudCwgQ2hhcmFjdGVyRGF0YSogY2hhcmFj
dGVyRGF0YSkKIHsKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104027</attachid>
            <date>2011-08-16 05:23:18 -0700</date>
            <delta_ts>2011-08-16 09:48:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66292-20110816162316.patch</filename>
            <type>text/plain</type>
            <size>30861</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTMwNDIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBiMzA5ZTY1N2IwOGQxMmQ2
MDI4OWJjY2QxNmU0MWVkOGY3NDM0OWQ5Li5lMDg5NGVjM2U1ZTZjNjc1MzQxNWNjZGUyYWYzNDNk
NmIwZWQyZTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDgtMTYgIFBhdmVs
IEZlbGRtYW4gIDxwZmVsZG1hbkBnb29nbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGZvcmNlIHBzZXVkbyBlbGVtZW50IHN0YXRlIHdoZW4gY2hlY2tpbmcgaXQgaW4gdGhlIHN0eWxl
cyBzaWRlYmFyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9NjYyOTIKKworICAgICAgICBUaGlzIHJldmVydHMgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvODkxMzIgYW5kIGludHJvZHVjZXMgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCisg
ICAgICAgIGNhbGxzIGZyb20gdGhlIENTU1N0eWxlU2VsZWN0b3IgZm9yIHBzZXVkbyBzdGF0ZSBw
cm9jZXNzaW5nLiBUaGVzZSBjYWxscyBhcmUgdmVyeSBmYXN0OgorICAgICAgICB0aGV5IGFyZSBn
dWFyZGVkIHdpdGggdGhlIGlubGluZSBjaGVja3MgZm9yIHRoZSBmcm9udC1lbmQgY291bnQuCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjc3MvQ1NT
U3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpp
bml0Rm9yU3R5bGVSZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6
OnN0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0
b3I6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0
eWxlU2VsZWN0b3I6OmNoZWNrU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVT
ZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3Rvcik6
CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVBzZXVkb0Ns
YXNzTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6SW5zcGVjdG9y
Q1NTQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmNsZWFyRnJv
bnRlbmQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRv
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN0eWxlc0Zv
ck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJlbW92ZURv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVE
T01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpjbGVhclBzZXVk
b1N0YXRlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlSW1wbCk6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKToKKwogMjAxMS0w
OC0xNSAgUGF2ZWwgRmVsZG1hbiAgPHBmZWxkbWFuQGdvb2dsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogW1Y4XSBjcmFzaCB1cG9uIHN0ZXBJbiB3aGlsZSBub3Qgb24gcGF1c2UuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggZmRiNzU0MGM2ZDFmNGMx
MDVjMTk2OTY5ZTA3NjdhOGZlMjUwZDU5NC4uOTQ0OGIwY2UxMWQ0NDE3OTBlNGQ0ZmJlMzg0MTU3
ZmNlODBhYzIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAt
NjgsNiArNjgsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxQcm9n
cmVzc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEFyZWFFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVMaXN0Lmgi
CiAjaW5jbHVkZSAiTGlua0hhc2guaCIKICNpbmNsdWRlICJMb2NhbGVUb1NjcmlwdE1hcHBpbmcu
aCIKQEAgLTg5Myw4ICs4OTQsNiBAQCBpbmxpbmUgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjppbml0
Rm9yU3R5bGVSZXNvbHZlKEVsZW1lbnQqIGUsIFJlbmRlclN0eWxlKiBwYXJlbgogICAgIG1fcnVs
ZUxpc3QgPSAwOwogCiAgICAgbV9mb250RGlydHkgPSBmYWxzZTsKLQotICAgIG1fZm9yY2VQc2V1
ZG9DbGFzc01hc2sgPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrOwogfQogCiBzdGF0aWMgaW5s
aW5lIGNvbnN0IEF0b21pY1N0cmluZyogbGlua0F0dHJpYnV0ZShOb2RlKiBub2RlKQpAQCAtMjAz
MCwxMiArMjAyOSwxMiBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmNhY2hlQm9yZGVyQW5kQmFj
a2dyb3VuZCgpCiAgICAgfQogfQogCi1QYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNl
bGVjdG9yOjpzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCB1bnNpZ25lZCBydWxlc1Rv
SW5jbHVkZSwgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2spCitQYXNzUmVmUHRyPENTU1J1
bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpzdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBl
LCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSkKIHsKLSAgICByZXR1cm4gcHNldWRvU3R5bGVSdWxl
c0ZvckVsZW1lbnQoZSwgTk9QU0VVRE8sIHJ1bGVzVG9JbmNsdWRlLCBmb3JjZVBzZXVkb0NsYXNz
TWFzayk7CisgICAgcmV0dXJuIHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KGUsIE5PUFNFVURP
LCBydWxlc1RvSW5jbHVkZSk7CiB9CiAKLVBhc3NSZWZQdHI8Q1NTUnVsZUxpc3Q+IENTU1N0eWxl
U2VsZWN0b3I6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGUsIFBzZXVkb0lk
IHBzZXVkb0lkLCB1bnNpZ25lZCBydWxlc1RvSW5jbHVkZSwgdW5zaWduZWQgZm9yY2VQc2V1ZG9D
bGFzc01hc2spCitQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1
ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLCBQc2V1ZG9JZCBwc2V1ZG9JZCwgdW5z
aWduZWQgcnVsZXNUb0luY2x1ZGUpCiB7CiAgICAgaWYgKCFlIHx8ICFlLT5kb2N1bWVudCgpLT5o
YXZlU3R5bGVzaGVldHNMb2FkZWQoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yMDQ0LDcgKzIw
NDMsNiBAQCBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBDU1NTdHlsZVNlbGVjdG9yOjpwc2V1ZG9T
dHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlLAogCiAgICAgaW5pdEVsZW1lbnQoZSk7CiAg
ICAgaW5pdEZvclN0eWxlUmVzb2x2ZShlLCAwLCBwc2V1ZG9JZCk7Ci0gICAgbV9mb3JjZVBzZXVk
b0NsYXNzTWFzayA9IGZvcmNlUHNldWRvQ2xhc3NNYXNrOwogCiAgICAgaWYgKHJ1bGVzVG9JbmNs
dWRlICYgVUFBbmRVc2VyQ1NTUnVsZXMpIHsKICAgICAgICAgaW50IGZpcnN0VUFSdWxlID0gLTEs
IGxhc3RVQVJ1bGUgPSAtMTsKQEAgLTIwNjksNyArMjA2Nyw2IEBAIFBhc3NSZWZQdHI8Q1NTUnVs
ZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1l
bnQqIGUsCiAgICAgfQogCiAgICAgbV9jaGVja2VyLm1fY29sbGVjdFJ1bGVzT25seSA9IGZhbHNl
OwotICAgIG1fZm9yY2VQc2V1ZG9DbGFzc01hc2sgPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNr
OwogICAgCiAgICAgcmV0dXJuIG1fcnVsZUxpc3QucmVsZWFzZSgpOwogfQpAQCAtMjA5Miw3ICsy
MDg5LDcgQEAgaW5saW5lIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tTZWxlY3Rvcihjb25z
dCBSdWxlRGF0YSYgcnVsZURhdGEpCiAgICAgfQogCiAgICAgLy8gU2xvdyBwYXRoLgotICAgIFNl
bGVjdG9yTWF0Y2ggbWF0Y2ggPSBtX2NoZWNrZXIuY2hlY2tTZWxlY3RvcihydWxlRGF0YS5zZWxl
Y3RvcigpLCBtX2VsZW1lbnQsIG1fZHluYW1pY1BzZXVkbywgZmFsc2UsIGZhbHNlLCBtX2ZvcmNl
UHNldWRvQ2xhc3NNYXNrLCBzdHlsZSgpLCBtX3BhcmVudE5vZGUgPyBtX3BhcmVudE5vZGUtPnJl
bmRlclN0eWxlKCkgOiAwKTsKKyAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gbV9jaGVja2VyLmNo
ZWNrU2VsZWN0b3IocnVsZURhdGEuc2VsZWN0b3IoKSwgbV9lbGVtZW50LCBtX2R5bmFtaWNQc2V1
ZG8sIGZhbHNlLCBmYWxzZSwgc3R5bGUoKSwgbV9wYXJlbnROb2RlID8gbV9wYXJlbnROb2RlLT5y
ZW5kZXJTdHlsZSgpIDogMCk7CiAgICAgaWYgKG1hdGNoICE9IFNlbGVjdG9yTWF0Y2hlcykKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChtX2NoZWNrZXIubV9wc2V1ZG9TdHlsZSAhPSBO
T1BTRVVETyAmJiBtX2NoZWNrZXIubV9wc2V1ZG9TdHlsZSAhPSBtX2R5bmFtaWNQc2V1ZG8pCkBA
IC0yMjIxLDcgKzIyMTgsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tl
cjo6ZmFzdENoZWNrU2VsZWN0b3IoY29uc3QgQ1NTU2VsZWN0b3IqIHNlbAogLy8gKiBTZWxlY3Rv
ck1hdGNoZXMgICAgICAgICAtIHRoZSBzZWxlY3RvciBtYXRjaGVzIHRoZSBlbGVtZW50IGUKIC8v
ICogU2VsZWN0b3JGYWlsc0xvY2FsbHkgICAgLSB0aGUgc2VsZWN0b3IgZmFpbHMgZm9yIHRoZSBl
bGVtZW50IGUKIC8vICogU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHkgLSB0aGUgc2VsZWN0b3IgZmFp
bHMgZm9yIGUgYW5kIGFueSBzaWJsaW5nIG9yIGFuY2VzdG9yIG9mIGUKLUNTU1N0eWxlU2VsZWN0
b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVj
a1NlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIFBzZXVkb0lkJiBkeW5hbWlj
UHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25l
ZCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgUmVuZGVyU3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVy
U3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3QKK0NTU1N0eWxlU2VsZWN0b3I6OlNlbGVj
dG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9y
KENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBi
b29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogZWxl
bWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAogewogI2lm
IEVOQUJMRShTVkcpCiAgICAgLy8gU3BlYzogQ1NTMiBzZWxlY3RvcnMgY2Fubm90IGJlIGFwcGxp
ZWQgdG8gdGhlIChjb25jZXB0dWFsbHkpIGNsb25lZCBET00gdHJlZQpAQCAtMjIzMSw3ICsyMjI4
LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IKICNlbmRpZgogCiAgICAgLy8gZmlyc3Qgc2Vs
ZWN0b3IgaGFzIHRvIG1hdGNoCi0gICAgaWYgKCFjaGVja09uZVNlbGVjdG9yKHNlbCwgZSwgZHlu
YW1pY1BzZXVkbywgaXNTdWJTZWxlY3RvciwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0Ns
YXNzTWFzaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQorICAgIGlmICghY2hl
Y2tPbmVTZWxlY3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGlzU3ViU2VsZWN0b3IsIGVuY291
bnRlcmVkTGluaywgZWxlbWVudFN0eWxlLCBlbGVtZW50UGFyZW50U3R5bGUpKQogICAgICAgICBy
ZXR1cm4gU2VsZWN0b3JGYWlsc0xvY2FsbHk7CiAKICAgICAvLyBUaGUgcmVzdCBvZiB0aGUgc2Vs
ZWN0b3JzIGhhcyB0byBtYXRjaApAQCAtMjI2NSw3ICsyMjYyLDcgQEAgQ1NTU3R5bGVTZWxlY3Rv
cjo6U2VsZWN0b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNr
U2VsZWN0b3IKICAgICAgICAgICAgICAgICBpZiAoIW4gfHwgIW4tPmlzRWxlbWVudE5vZGUoKSkK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5OwogICAg
ICAgICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7Ci0gICAgICAgICAgICAg
ICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNl
dWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzayk7CisgICAg
ICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBk
eW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5rKTsKICAgICAgICAgICAgICAgICBp
ZiAobWF0Y2ggIT0gU2VsZWN0b3JGYWlsc0xvY2FsbHkpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBtYXRjaDsKICAgICAgICAgICAgIH0KQEAgLTIyNzYsNyArMjI3Myw3IEBAIENTU1N0eWxl
U2VsZWN0b3I6OlNlbGVjdG9yTWF0Y2ggQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
OjpjaGVja1NlbGVjdG9yCiAgICAgICAgICAgICBpZiAoIW4gfHwgIW4tPmlzRWxlbWVudE5vZGUo
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAg
ICAgICAgICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KG4pOwotICAgICAgICAgICAgcmV0dXJu
IGNoZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRM
aW5rLCBmb3JjZVBzZXVkb0NsYXNzTWFzayk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxl
Y3RvcihzZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmspOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgogICAgICAg
ICB7CkBAIC0yMjkyLDcgKzIyODksNyBAQCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rvck1hdGNo
IENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3RvcgogICAgICAg
ICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzTG9jYWxseTsKICAgICAgICAgICAgIGUgPSBz
dGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAgICAgICBtX21hdGNoVmlzaXRlZFBzZXVk
b0NsYXNzID0gZmFsc2U7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUs
IGR5bmFtaWNQc2V1ZG8sIGZhbHNlLCBlbmNvdW50ZXJlZExpbmssIGZvcmNlUHNldWRvQ2xhc3NN
YXNrKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1Bz
ZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBD
U1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKICAgICAgICAgICAgIGlmICghbV9jb2xsZWN0
UnVsZXNPbmx5ICYmIGUtPnBhcmVudE5vZGUoKSAmJiBlLT5wYXJlbnROb2RlKCktPmlzRWxlbWVu
dE5vZGUoKSkgewpAQCAtMjMwOCw3ICsyMzA1LDcgQEAgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0
b3JNYXRjaCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNlbGVjdG9yRmFpbHNMb2NhbGx5OwogICAgICAg
ICAgICAgICAgIGUgPSBzdGF0aWNfY2FzdDxFbGVtZW50Kj4obik7CiAgICAgICAgICAgICAgICAg
bV9tYXRjaFZpc2l0ZWRQc2V1ZG9DbGFzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIFNlbGVj
dG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgZmFs
c2UsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2spOworICAgICAgICAgICAg
ICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1Bz
ZXVkbywgZmFsc2UsIGVuY291bnRlcmVkTGluayk7CiAgICAgICAgICAgICAgICAgaWYgKG1hdGNo
ICE9IFNlbGVjdG9yRmFpbHNMb2NhbGx5KQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWF0
Y2g7CiAgICAgICAgICAgICB9OwpAQCAtMjMyMCwxNCArMjMxNywxNCBAQCBDU1NTdHlsZVNlbGVj
dG9yOjpTZWxlY3Rvck1hdGNoIENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tTZWxlY3RvcgogICAgICAgICAgICAgaWYgKChlbGVtZW50U3R5bGUgfHwgbV9jb2xsZWN0UnVs
ZXNPbmx5KSAmJiBkeW5hbWljUHNldWRvICE9IE5PUFNFVURPICYmIGR5bmFtaWNQc2V1ZG8gIT0g
U0VMRUNUSU9OICYmCiAgICAgICAgICAgICAgICAgISgoUmVuZGVyU2Nyb2xsYmFyOjpzY3JvbGxi
YXJGb3JTdHlsZVJlc29sdmUoKSB8fCBkeW5hbWljUHNldWRvID09IFNDUk9MTEJBUl9DT1JORVIg
fHwgZHluYW1pY1BzZXVkbyA9PSBSRVNJWkVSKSAmJiBzZWwtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0
b3I6OlBzZXVkb0NsYXNzKSkKICAgICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0Nv
bXBsZXRlbHk7Ci0gICAgICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihzZWwsIGUsIGR5bmFt
aWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIGVs
ZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKTsKKyAgICAgICAgICAgIHJldHVybiBjaGVj
a1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgdHJ1ZSwgZW5jb3VudGVyZWRMaW5rLCBl
bGVtZW50U3R5bGUsIGVsZW1lbnRQYXJlbnRTdHlsZSk7CiAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlNoYWRvd0Rlc2NlbmRhbnQ6CiAgICAgICAgIHsKICAgICAgICAgICAgIE5vZGUqIHNoYWRv
d0hvc3ROb2RlID0gZS0+c2hhZG93QW5jZXN0b3JOb2RlKCk7CiAgICAgICAgICAgICBpZiAoc2hh
ZG93SG9zdE5vZGUgPT0gZSB8fCAhc2hhZG93SG9zdE5vZGUtPmlzRWxlbWVudE5vZGUoKSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gU2VsZWN0b3JGYWlsc0NvbXBsZXRlbHk7CiAgICAgICAgICAg
ICBlID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHNoYWRvd0hvc3ROb2RlKTsKLSAgICAgICAgICAg
IHJldHVybiBjaGVja1NlbGVjdG9yKHNlbCwgZSwgZHluYW1pY1BzZXVkbywgZmFsc2UsIGVuY291
bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2spOworICAgICAgICAgICAgcmV0dXJuIGNo
ZWNrU2VsZWN0b3Ioc2VsLCBlLCBkeW5hbWljUHNldWRvLCBmYWxzZSwgZW5jb3VudGVyZWRMaW5r
KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjQ4Niw3ICsyNDgzLDcgQEAgc3RhdGljIGJvb2wg
YW55QXR0cmlidXRlTWF0Y2hlcyhOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMsIENTU1NlbGVjdG9y
OjpNYXRjaCBtYXQKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLWJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVs
ZW1lbnQqIGUsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJv
b2wgZW5jb3VudGVyZWRMaW5rLCB1bnNpZ25lZCBmb3JjZVBzZXVkb0NsYXNzTWFzaywgUmVuZGVy
U3R5bGUqIGVsZW1lbnRTdHlsZSwgUmVuZGVyU3R5bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29u
c3QKK2Jvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVj
dG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lbnQqIGUsIFBzZXVkb0lkJiBkeW5hbWljUHNldWRv
LCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wgZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSog
ZWxlbWVudFN0eWxlLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0eWxlKSBjb25zdAogewog
ICAgIEFTU0VSVChlKTsKICAgICBpZiAoIWUpCkBAIC0yNTI4LDcgKzI1MjUsNyBAQCBib29sIENT
U1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxl
Y3Rvciogc2VsLCBFbGVtZQogICAgICAgICAgICAgICAgIC8vIHRoZSBwYXJzZXIgZW5mb3JjZXMg
dGhhdCB0aGlzIG5ldmVyIG9jY3VycwogICAgICAgICAgICAgICAgIEFTU0VSVChzdWJTZWwtPnBz
ZXVkb1R5cGUoKSAhPSBDU1NTZWxlY3Rvcjo6UHNldWRvTm90KTsKIAotICAgICAgICAgICAgICAg
IGlmICghY2hlY2tPbmVTZWxlY3RvcihzdWJTZWwsIGUsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVu
Y291bnRlcmVkTGluaywgZm9yY2VQc2V1ZG9DbGFzc01hc2ssIGVsZW1lbnRTdHlsZSwgZWxlbWVu
dFBhcmVudFN0eWxlKSkKKyAgICAgICAgICAgICAgICBpZiAoIWNoZWNrT25lU2VsZWN0b3Ioc3Vi
U2VsLCBlLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGVsZW1lbnRTdHls
ZSwgZWxlbWVudFBhcmVudFN0eWxlKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAoZHluYW1pY1BzZXVkbyAhPSBOT1BT
RVVETyAmJiAoUmVuZGVyU2Nyb2xsYmFyOjpzY3JvbGxiYXJGb3JTdHlsZVJlc29sdmUoKSB8fCBk
eW5hbWljUHNldWRvID09IFNDUk9MTEJBUl9DT1JORVIgfHwgZHluYW1pY1BzZXVkbyA9PSBSRVNJ
WkVSKSkgewpAQCAtMjU0MCwyOCArMjUzNyw4IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2Vs
ZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lCiAg
ICAgICAgICAgICAgICAgcmV0dXJuICFtX2RvY3VtZW50LT5wYWdlKCktPmZvY3VzQ29udHJvbGxl
cigpLT5pc0FjdGl2ZSgpOwogICAgICAgICB9CiAKLSAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVk
b1R5cGUgcHNldWRvVHlwZSA9IHNlbC0+cHNldWRvVHlwZSgpOwotCi0gICAgICAgIC8vIENoZWNr
IGZvcmNlZCBwc2V1ZG8gY2xhc3MgbWFzayBmaXJzdC4KLSAgICAgICAgaWYgKGZvcmNlUHNldWRv
Q2xhc3NNYXNrICE9IERvTm90Rm9yY2VQc2V1ZG9DbGFzc01hc2spIHsKLSAgICAgICAgICAgIHN3
aXRjaCAocHNldWRvVHlwZSkgewotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
TGluazoKLSAgICAgICAgICAgICAgICByZXR1cm4gZm9yY2VQc2V1ZG9DbGFzc01hc2sgJiBGb3Jj
ZUxpbms7Ci0gICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9WaXNpdGVkOgotICAg
ICAgICAgICAgICAgIHJldHVybiBmb3JjZVBzZXVkb0NsYXNzTWFzayAmIEZvcmNlVmlzaXRlZDsK
LSAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZvY3VzOgotICAgICAgICAgICAg
ICAgIHJldHVybiBmb3JjZVBzZXVkb0NsYXNzTWFzayAmIEZvcmNlRm9jdXM7Ci0gICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlcjoKLSAgICAgICAgICAgICAgICByZXR1cm4g
Zm9yY2VQc2V1ZG9DbGFzc01hc2sgJiBGb3JjZUhvdmVyOwotICAgICAgICAgICAgY2FzZSBDU1NT
ZWxlY3Rvcjo6UHNldWRvQWN0aXZlOgotICAgICAgICAgICAgICAgIHJldHVybiBmb3JjZVBzZXVk
b0NsYXNzTWFzayAmIEZvcmNlQWN0aXZlOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotIAogICAgICAgICAvLyBO
b3JtYWwgZWxlbWVudCBwc2V1ZG8gY2xhc3MgY2hlY2tpbmcuCi0gICAgICAgIHN3aXRjaCAocHNl
dWRvVHlwZSkgeworICAgICAgICBzd2l0Y2ggKHNlbC0+cHNldWRvVHlwZSgpKSB7CiAgICAgICAg
ICAgICAvLyBQc2V1ZG8gY2xhc3NlczoKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBz
ZXVkb05vdDoKICAgICAgICAgICAgICAgICBicmVhazsgLy8gQWxyZWFkeSBoYW5kbGVkIHVwIGFi
b3ZlLgpAQCAtMjg1Nyw3ICsyODM0LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3Rv
ckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWUKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0Fu
eToKICAgICAgICAgICAgICAgICBmb3IgKENTU1NlbGVjdG9yKiBzZWxlY3RvciA9IHNlbC0+c2Vs
ZWN0b3JMaXN0KCktPmZpcnN0KCk7IHNlbGVjdG9yOyBzZWxlY3RvciA9IENTU1NlbGVjdG9yTGlz
dDo6bmV4dChzZWxlY3RvcikpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrU2VsZWN0
b3Ioc2VsZWN0b3IsIGUsIGR5bmFtaWNQc2V1ZG8sIHRydWUsIGVuY291bnRlcmVkTGluaywgZm9y
Y2VQc2V1ZG9DbGFzc01hc2ssIGVsZW1lbnRTdHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKSA9PSBT
ZWxlY3Rvck1hdGNoZXMpCisgICAgICAgICAgICAgICAgICAgIGlmIChjaGVja1NlbGVjdG9yKHNl
bGVjdG9yLCBlLCBkeW5hbWljUHNldWRvLCB0cnVlLCBlbmNvdW50ZXJlZExpbmssIGVsZW1lbnRT
dHlsZSwgZWxlbWVudFBhcmVudFN0eWxlKSA9PSBTZWxlY3Rvck1hdGNoZXMpCiAgICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CkBAIC0yODc4LDcgKzI4NTUsNyBAQCBib29sIENTU1N0eWxlU2VsZWN0b3I6
OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NTZWxlY3Rvciogc2VsLCBFbGVt
ZQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvVmlzaXRlZDoKICAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLT5pc0xpbmsoKSkKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fbWF0Y2hWaXNpdGVkUHNldWRvQ2xhc3M7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBtX21hdGNoVmlzaXRlZFBzZXVkb0NsYXNzIHx8IEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShlLCBDU1NTZWxlY3Rvcjo6UHNl
dWRvVmlzaXRlZCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENT
U1NlbGVjdG9yOjpQc2V1ZG9EcmFnOiB7CiAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnRTdHls
ZSkKQEAgLTI4OTAsNyArMjg2Nyw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JD
aGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lCiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVj
dG9yOjpQc2V1ZG9Gb2N1czoKLSAgICAgICAgICAgICAgICBpZiAoZSAmJiBlLT5mb2N1c2VkKCkg
JiYgZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBlLT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxl
Y3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCkpCisgICAgICAgICAgICAgICAgaWYgKGUgJiYg
KChlLT5mb2N1c2VkKCkgJiYgZS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAmJiBlLT5kb2N1bWVudCgp
LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+aXNGb2N1c2VkQW5kQWN0aXZlKCkpIHx8IEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6Zm9yY2VQc2V1ZG9TdGF0ZShlLCBDU1NTZWxlY3Rvcjo6UHNldWRv
Rm9jdXMpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlcjogewpA
QCAtMjkwMSw3ICsyODc4LDcgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWUKICAgICAgICAgICAg
ICAgICAgICAgICAgIGVsZW1lbnRTdHlsZS0+c2V0QWZmZWN0ZWRCeUhvdmVyUnVsZXModHJ1ZSk7
CiAgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGUtPnJlbmRlclN0eWxlKCkpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBlLT5yZW5kZXJTdHlsZSgpLT5zZXRBZmZlY3RlZEJ5SG92ZXJSdWxl
cyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGUtPmhvdmVyZWQoKSkKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGUtPmhvdmVyZWQoKSB8fCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmZvcmNlUHNldWRvU3RhdGUoZSwgQ1NTU2VsZWN0b3I6OlBzZXVkb0hvdmVyKSkKICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICBicmVhazsKQEAgLTI5MTQsNyArMjg5MSw3IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVs
ZW1lCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50U3R5bGUtPnNldEFmZmVjdGVkQnlB
Y3RpdmVSdWxlcyh0cnVlKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZS0+cmVuZGVy
U3R5bGUoKSkKICAgICAgICAgICAgICAgICAgICAgICAgIGUtPnJlbmRlclN0eWxlKCktPnNldEFm
ZmVjdGVkQnlBY3RpdmVSdWxlcyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGUtPmFj
dGl2ZSgpKQorICAgICAgICAgICAgICAgICAgICBpZiAoZS0+YWN0aXZlKCkgfHwgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlKGUsIENTU1NlbGVjdG9yOjpQc2V1ZG9B
Y3RpdmUpKQogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmgKaW5kZXggZWZlMzE2NWMwNDgzY2UwOGJkNmE2NDQzOTg3NDhkM2Y0ZjdhNjMxMy4u
NmM2MTgxYjY1NjE5N2UyZmE0ZDZjMWMwMjRhZjNiNDUzMmMzMTYzYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTU3R5bGVTZWxlY3Rvci5oCkBAIC0xMzQsMTYgKzEzNCw2IEBAIHB1YmxpYzoKICAgICAg
ICAgUGFzc1JlZlB0cjxSZW5kZXJTdHlsZT4gc3R5bGVGb3JLZXlmcmFtZShjb25zdCBSZW5kZXJT
dHlsZSosIGNvbnN0IFdlYktpdENTU0tleWZyYW1lUnVsZSosIEtleWZyYW1lVmFsdWUmKTsKIAog
ICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBGb3JjZVBzZXVkb0NsYXNzRmxhZ3MgewotICAgICAg
ICAgICAgRm9yY2VOb25lID0gMCwKLSAgICAgICAgICAgIERvTm90Rm9yY2VQc2V1ZG9DbGFzc01h
c2sgPSAxIDw8IDAsCi0gICAgICAgICAgICBGb3JjZUhvdmVyID0gMSA8PCAxLAotICAgICAgICAg
ICAgRm9yY2VGb2N1cyA9IDEgPDwgMiwKLSAgICAgICAgICAgIEZvcmNlQWN0aXZlID0gMSA8PCAz
LAotICAgICAgICAgICAgRm9yY2VMaW5rID0gMSA8PCA0LAotICAgICAgICAgICAgRm9yY2VWaXNp
dGVkID0gMSA8PCA1Ci0gICAgICAgIH07Ci0KICAgICAgICAgLy8gVGhlc2UgbWV0aG9kcyB3aWxs
IGdpdmUgYmFjayB0aGUgc2V0IG9mIHJ1bGVzIHRoYXQgbWF0Y2hlZCBmb3IgYSBnaXZlbiBlbGVt
ZW50IChvciBhIHBzZXVkby1lbGVtZW50KS4KICAgICAgICAgZW51bSBDU1NSdWxlRmlsdGVyIHsK
ICAgICAgICAgICAgIFVBQW5kVXNlckNTU1J1bGVzICAgPSAxIDw8IDEsCkBAIC0xNTMsOCArMTQz
LDggQEAgcHVibGljOgogICAgICAgICAgICAgQWxsQnV0RW1wdHlDU1NSdWxlcyA9IFVBQW5kVXNl
ckNTU1J1bGVzIHwgQXV0aG9yQ1NTUnVsZXMgfCBDcm9zc09yaWdpbkNTU1J1bGVzLAogICAgICAg
ICAgICAgQWxsQ1NTUnVsZXMgICAgICAgICA9IEFsbEJ1dEVtcHR5Q1NTUnVsZXMgfCBFbXB0eUNT
U1J1bGVzLAogICAgICAgICB9OwotICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBzdHls
ZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxC
dXRFbXB0eUNTU1J1bGVzLCB1bnNpZ25lZCBmb3JjZVBzZXVkb0NsYXNzTWFzayA9IERvTm90Rm9y
Y2VQc2V1ZG9DbGFzc01hc2spOwotICAgICAgICBQYXNzUmVmUHRyPENTU1J1bGVMaXN0PiBwc2V1
ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiwgUHNldWRvSWQsIHVuc2lnbmVkIHJ1bGVz
VG9JbmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcywgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFz
c01hc2sgPSBEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKKyAgICAgICAgUGFzc1JlZlB0cjxD
U1NSdWxlTGlzdD4gc3R5bGVSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCosIHVuc2lnbmVkIHJ1bGVz
VG9JbmNsdWRlID0gQWxsQnV0RW1wdHlDU1NSdWxlcyk7CisgICAgICAgIFBhc3NSZWZQdHI8Q1NT
UnVsZUxpc3Q+IHBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqLCBQc2V1ZG9JZCwg
dW5zaWduZWQgcnVsZXNUb0luY2x1ZGUgPSBBbGxCdXRFbXB0eUNTU1J1bGVzKTsKIAogICAgICAg
ICAvLyBHaXZlbiBhIENTUyBrZXl3b3JkIGluIHRoZSByYW5nZSAoeHgtc21hbGwgdG8gLXdlYmtp
dC14eHgtbGFyZ2UpLCB0aGlzIGZ1bmN0aW9uIHdpbGwgcmV0dXJuCiAgICAgICAgIC8vIHRoZSBj
b3JyZWN0IGZvbnQgc2l6ZSBzY2FsZWQgcmVsYXRpdmUgdG8gdGhlIHVzZXIncyBkZWZhdWx0ICht
ZWRpdW0pLgpAQCAtMjg1LDggKzI3NSw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFNlbGVjdG9y
Q2hlY2tlcihEb2N1bWVudCosIGJvb2wgc3RyaWN0UGFyc2luZyk7CiAKICAgICAgICAgICAgIGJv
b2wgY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqKSBjb25zdDsKLSAgICAgICAg
ICAgIFNlbGVjdG9yTWF0Y2ggY2hlY2tTZWxlY3RvcihDU1NTZWxlY3RvciosIEVsZW1lbnQqLCBQ
c2V1ZG9JZCYgZHluYW1pY1BzZXVkbywgYm9vbCBpc1N1YlNlbGVjdG9yLCBib29sIGVuY291bnRl
cmVkTGluaywgdW5zaWduZWQgZm9yY2VQc2V1ZG9DbGFzc01hc2sgPSBEb05vdEZvcmNlUHNldWRv
Q2xhc3NNYXNrLCBSZW5kZXJTdHlsZSogPSAwLCBSZW5kZXJTdHlsZSogZWxlbWVudFBhcmVudFN0
eWxlID0gMCkgY29uc3Q7Ci0gICAgICAgICAgICBib29sIGNoZWNrT25lU2VsZWN0b3IoQ1NTU2Vs
ZWN0b3IqLCBFbGVtZW50KiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNTdWJTZWxl
Y3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIHVuc2lnbmVkIGZvcmNlUHNldWRvQ2xhc3NNYXNr
LCBSZW5kZXJTdHlsZSosIFJlbmRlclN0eWxlKiBlbGVtZW50UGFyZW50U3R5bGUpIGNvbnN0Owor
ICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBjaGVja1NlbGVjdG9yKENTU1NlbGVjdG9yKiwgRWxl
bWVudCosIFBzZXVkb0lkJiBkeW5hbWljUHNldWRvLCBib29sIGlzU3ViU2VsZWN0b3IsIGJvb2wg
ZW5jb3VudGVyZWRMaW5rLCBSZW5kZXJTdHlsZSogPSAwLCBSZW5kZXJTdHlsZSogZWxlbWVudFBh
cmVudFN0eWxlID0gMCkgY29uc3Q7CisgICAgICAgICAgICBib29sIGNoZWNrT25lU2VsZWN0b3Io
Q1NTU2VsZWN0b3IqLCBFbGVtZW50KiwgUHNldWRvSWQmIGR5bmFtaWNQc2V1ZG8sIGJvb2wgaXNT
dWJTZWxlY3RvciwgYm9vbCBlbmNvdW50ZXJlZExpbmssIFJlbmRlclN0eWxlKiwgUmVuZGVyU3R5
bGUqIGVsZW1lbnRQYXJlbnRTdHlsZSkgY29uc3Q7CiAgICAgICAgICAgICBib29sIGNoZWNrU2Ny
b2xsYmFyUHNldWRvQ2xhc3MoQ1NTU2VsZWN0b3IqLCBQc2V1ZG9JZCYgZHluYW1pY1BzZXVkbykg
Y29uc3Q7CiAgICAgICAgICAgICBzdGF0aWMgYm9vbCBmYXN0Q2hlY2tTZWxlY3Rvcihjb25zdCBD
U1NTZWxlY3RvciosIGNvbnN0IEVsZW1lbnQqKTsKIApAQCAtMzgzLDcgKzM3Myw2IEBAIHB1Ymxp
YzoKICAgICAgICAgQ1NTVmFsdWUqIG1fbGluZUhlaWdodFZhbHVlOwogICAgICAgICBib29sIG1f
Zm9udERpcnR5OwogICAgICAgICBib29sIG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5bGVzOwotICAg
ICAgICB1bnNpZ25lZCBtX2ZvcmNlUHNldWRvQ2xhc3NNYXNrOyAvLyBlbnVtIEZvcmNlUHNldWRv
Q2xhc3NGbGFncwogICAgICAgICAKICAgICAgICAgUmVmUHRyPENTU0ZvbnRTZWxlY3Rvcj4gbV9m
b250U2VsZWN0b3I7CiAgICAgICAgIFZlY3RvcjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbio+
IG1fYWRkaXRpb25hbEF0dHJpYnV0ZVN0eWxlRGVjbHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCBiNGI5MDgzNzhkMzVhNDg4NzE1OWQx
MTczZWI4NDA1ZTA2ZjE2ODlhLi42YjQxN2RkZWM2M2Y0YTI4M2M2NWQ2NTQxMWM3NjMzYjk5NGM0
OGQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKQEAgLTEzMCw2ICsxMzAsMTQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIEZv
cmNlUHNldWRvQ2xhc3NGbGFncyB7CisgICAgUHNldWRvTm9uZSA9IDAsCisgICAgUHNldWRvSG92
ZXIgPSAxIDw8IDAsCisgICAgUHNldWRvRm9jdXMgPSAxIDw8IDEsCisgICAgUHNldWRvQWN0aXZl
ID0gMSA8PCAyLAorICAgIFBzZXVkb1Zpc2l0ZWQgPSAxIDw8IDMKK307CisKIHN0YXRpYyB1bnNp
Z25lZCBjb21wdXRlUHNldWRvQ2xhc3NNYXNrKEluc3BlY3RvckFycmF5KiBwc2V1ZG9DbGFzc0Fy
cmF5KQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBhY3RpdmUsICgiYWN0aXZl
IikpOwpAQCAtMTM3LDkgKzE0NSw5IEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlUHNldWRvQ2xh
c3NNYXNrKEluc3BlY3RvckFycmF5KiBwc2V1ZG9DbGFzc0FycmF5KQogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoU3RyaW5nLCBmb2N1cywgKCJmb2N1cyIpKTsKICAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKFN0cmluZywgdmlzaXRlZCwgKCJ2aXNpdGVkIikpOwogICAgIGlmICghcHNldWRvQ2xhc3NB
cnJheSB8fCAhcHNldWRvQ2xhc3NBcnJheS0+bGVuZ3RoKCkpCi0gICAgICAgIHJldHVybiBDU1NT
dHlsZVNlbGVjdG9yOjpEb05vdEZvcmNlUHNldWRvQ2xhc3NNYXNrOworICAgICAgICByZXR1cm4g
UHNldWRvTm9uZTsKIAotICAgIHVuc2lnbmVkIHJlc3VsdCA9IENTU1N0eWxlU2VsZWN0b3I6OkZv
cmNlTm9uZTsKKyAgICB1bnNpZ25lZCByZXN1bHQgPSBQc2V1ZG9Ob25lOwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcHNldWRvQ2xhc3NBcnJheS0+bGVuZ3RoKCk7ICsraSkgewogICAgICAg
ICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBzZXVkb0NsYXNzVmFsdWUgPSBwc2V1ZG9DbGFzc0Fy
cmF5LT5nZXQoaSk7CiAgICAgICAgIFN0cmluZyBwc2V1ZG9DbGFzczsKQEAgLTE0NywxMyArMTU1
LDEzIEBAIHN0YXRpYyB1bnNpZ25lZCBjb21wdXRlUHNldWRvQ2xhc3NNYXNrKEluc3BlY3RvckFy
cmF5KiBwc2V1ZG9DbGFzc0FycmF5KQogICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgaWYgKHBzZXVkb0NsYXNzID09IGFjdGl2ZSkKLSAgICAgICAg
ICAgIHJlc3VsdCB8PSBDU1NTdHlsZVNlbGVjdG9yOjpGb3JjZUFjdGl2ZTsKKyAgICAgICAgICAg
IHJlc3VsdCB8PSBQc2V1ZG9BY3RpdmU7CiAgICAgICAgIGVsc2UgaWYgKHBzZXVkb0NsYXNzID09
IGhvdmVyKQotICAgICAgICAgICAgcmVzdWx0IHw9IENTU1N0eWxlU2VsZWN0b3I6OkZvcmNlSG92
ZXI7CisgICAgICAgICAgICByZXN1bHQgfD0gUHNldWRvSG92ZXI7CiAgICAgICAgIGVsc2UgaWYg
KHBzZXVkb0NsYXNzID09IGZvY3VzKQotICAgICAgICAgICAgcmVzdWx0IHw9IENTU1N0eWxlU2Vs
ZWN0b3I6OkZvcmNlRm9jdXM7CisgICAgICAgICAgICByZXN1bHQgfD0gUHNldWRvRm9jdXM7CiAg
ICAgICAgIGVsc2UgaWYgKHBzZXVkb0NsYXNzID09IHZpc2l0ZWQpCi0gICAgICAgICAgICByZXN1
bHQgfD0gQ1NTU3R5bGVTZWxlY3Rvcjo6Rm9yY2VWaXNpdGVkOworICAgICAgICAgICAgcmVzdWx0
IHw9IFBzZXVkb1Zpc2l0ZWQ7CiAgICAgfQogCiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTE4Niw2
ICsxOTQsNyBAQCBDU1NTdHlsZVJ1bGUqIEluc3BlY3RvckNTU0FnZW50Ojphc0NTU1N0eWxlUnVs
ZShTdHlsZUJhc2UqIHN0eWxlQmFzZSkKIEluc3BlY3RvckNTU0FnZW50OjpJbnNwZWN0b3JDU1NB
Z2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JE
T01BZ2VudCogZG9tQWdlbnQpCiAgICAgOiBtX2luc3RydW1lbnRpbmdBZ2VudHMoaW5zdHJ1bWVu
dGluZ0FnZW50cykKICAgICAsIG1fZG9tQWdlbnQoZG9tQWdlbnQpCisgICAgLCBtX2xhc3RQc2V1
ZG9TdGF0ZSgwKQogICAgICwgbV9sYXN0U3R5bGVTaGVldElkKDEpCiAgICAgLCBtX2xhc3RSdWxl
SWQoMSkKICAgICAsIG1fbGFzdFN0eWxlSWQoMSkKQEAgLTIwMyw2ICsyMTIsMTEgQEAgSW5zcGVj
dG9yQ1NTQWdlbnQ6On5JbnNwZWN0b3JDU1NBZ2VudCgpCiAgICAgcmVzZXQoKTsKIH0KIAordm9p
ZCBJbnNwZWN0b3JDU1NBZ2VudDo6Y2xlYXJGcm9udGVuZCgpCit7CisgICAgY2xlYXJQc2V1ZG9T
dGF0ZSh0cnVlKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQoKQogewogICAg
IG1faWRUb0luc3BlY3RvclN0eWxlU2hlZXQuY2xlYXIoKTsKQEAgLTIxMSw2ICsyMjUsMjUgQEAg
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVzZXQoKQogICAgIG1fZG9jdW1lbnRUb0luc3BlY3Rv
clN0eWxlU2hlZXQuY2xlYXIoKTsKIH0KIAorYm9vbCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQ
c2V1ZG9TdGF0ZShFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBwc2V1
ZG9UeXBlKQoreworICAgIGlmIChtX2xhc3RFbGVtZW50V2l0aFBzZXVkb1N0YXRlICE9IGVsZW1l
bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHN3aXRjaCAocHNldWRvVHlwZSkgewor
ICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0FjdGl2ZToKKyAgICAgICAgcmV0dXJuIG1fbGFz
dFBzZXVkb1N0YXRlICYgUHNldWRvQWN0aXZlOworICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVk
b0ZvY3VzOgorICAgICAgICByZXR1cm4gbV9sYXN0UHNldWRvU3RhdGUgJiBQc2V1ZG9Gb2N1czsK
KyAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ib3ZlcjoKKyAgICAgICAgcmV0dXJuIG1fbGFz
dFBzZXVkb1N0YXRlICYgUHNldWRvSG92ZXI7CisgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
VmlzaXRlZDoKKyAgICAgICAgcmV0dXJuIG1fbGFzdFBzZXVkb1N0YXRlICYgUHNldWRvVmlzaXRl
ZDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCiB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpnZXRTdHlsZXNGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiogZm9yY2VkUHNl
dWRvQ2xhc3NlcywgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCkKIHsKICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gZWxlbWVudEZvcklkKGVycm9yU3RyaW5nLCBub2RlSWQpOwpAQCAtMjI3
LDE2ICsyNjAsMjIgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Z2V0U3R5bGVzRm9yTm9kZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGMKICAgICBSZWZQdHI8SW5zcGVj
dG9yU3R5bGU+IGNvbXB1dGVkSW5zcGVjdG9yU3R5bGUgPSBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRl
KEluc3BlY3RvckNTU0lkKCksIGNvbXB1dGVkU3R5bGVJbmZvLCAwKTsKICAgICByZXN1bHRPYmpl
Y3QtPnNldE9iamVjdCgiY29tcHV0ZWRTdHlsZSIsIGNvbXB1dGVkSW5zcGVjdG9yU3R5bGUtPmJ1
aWxkT2JqZWN0Rm9yU3R5bGUoKSk7CiAKLSAgICB1bnNpZ25lZCBmb3JjZVBzZXVkb0NsYXNzTWFz
ayA9IGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soZm9yY2VkUHNldWRvQ2xhc3NlcyA/IGZvcmNlZFBz
ZXVkb0NsYXNzZXMtPmdldCgpIDogMCk7CisgICAgdW5zaWduZWQgZm9yY2VQc2V1ZG9TdGF0ZSA9
IGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soZm9yY2VkUHNldWRvQ2xhc3NlcyA/IGZvcmNlZFBzZXVk
b0NsYXNzZXMtPmdldCgpIDogMCk7CisgICAgYm9vbCBuZWVkU3R5bGVSZWNhbGMgPSBlbGVtZW50
ICE9IG1fbGFzdEVsZW1lbnRXaXRoUHNldWRvU3RhdGUgfHwgZm9yY2VQc2V1ZG9TdGF0ZSAhPSBt
X2xhc3RQc2V1ZG9TdGF0ZTsKKyAgICBtX2xhc3RQc2V1ZG9TdGF0ZSA9IGZvcmNlUHNldWRvU3Rh
dGU7CisgICAgbV9sYXN0RWxlbWVudFdpdGhQc2V1ZG9TdGF0ZSA9IGVsZW1lbnQ7CisgICAgaWYg
KG5lZWRTdHlsZVJlY2FsYykKKyAgICAgICAgZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHls
ZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKwogICAgIENTU1N0eWxl
U2VsZWN0b3IqIHNlbGVjdG9yID0gZWxlbWVudC0+b3duZXJEb2N1bWVudCgpLT5zdHlsZVNlbGVj
dG9yKCk7Ci0gICAgUmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBzZWxlY3Rvci0+
c3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvcjo6QWxsQ1NTUnVs
ZXMsIGZvcmNlUHNldWRvQ2xhc3NNYXNrKTsKKyAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IG1hdGNo
ZWRSdWxlcyA9IHNlbGVjdG9yLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBDU1NTdHls
ZVNlbGVjdG9yOjpBbGxDU1NSdWxlcyk7CiAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheSgibWF0
Y2hlZENTU1J1bGVzIiwgYnVpbGRBcnJheUZvclJ1bGVMaXN0KG1hdGNoZWRSdWxlcy5nZXQoKSkp
OwogCiAgICAgcmVzdWx0T2JqZWN0LT5zZXRBcnJheSgic3R5bGVBdHRyaWJ1dGVzIiwgYnVpbGRB
cnJheUZvckF0dHJpYnV0ZVN0eWxlcyhlbGVtZW50KSk7CiAKICAgICBSZWZQdHI8SW5zcGVjdG9y
QXJyYXk+IHBzZXVkb0VsZW1lbnRzID0gSW5zcGVjdG9yQXJyYXk6OmNyZWF0ZSgpOwogICAgIGZv
ciAoUHNldWRvSWQgcHNldWRvSWQgPSBGSVJTVF9QVUJMSUNfUFNFVURPSUQ7IHBzZXVkb0lkIDwg
QUZURVJfTEFTVF9JTlRFUk5BTF9QU0VVRE9JRDsgcHNldWRvSWQgPSBzdGF0aWNfY2FzdDxQc2V1
ZG9JZD4ocHNldWRvSWQgKyAxKSkgewotICAgICAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IG1hdGNo
ZWRSdWxlcyA9IHNlbGVjdG9yLT5wc2V1ZG9TdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBw
c2V1ZG9JZCwgQ1NTU3R5bGVTZWxlY3Rvcjo6QWxsQ1NTUnVsZXMsIGZvcmNlUHNldWRvQ2xhc3NN
YXNrKTsKKyAgICAgICAgUmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBzZWxlY3Rv
ci0+cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQsIENTU1N0eWxl
U2VsZWN0b3I6OkFsbENTU1J1bGVzKTsKICAgICAgICAgaWYgKG1hdGNoZWRSdWxlcyAmJiBtYXRj
aGVkUnVsZXMtPmxlbmd0aCgpKSB7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBwc2V1ZG9TdHlsZXMgPSBJbnNwZWN0b3JPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAg
cHNldWRvU3R5bGVzLT5zZXROdW1iZXIoInBzZXVkb0lkIiwgc3RhdGljX2Nhc3Q8aW50Pihwc2V1
ZG9JZCkpOwpAQCAtNTgzLDYgKzYyMiw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFJl
bW92ZURvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBpZiAoZG9jdW1lbnQpCiAg
ICAgICAgIG1fZG9jdW1lbnRUb0luc3BlY3RvclN0eWxlU2hlZXQucmVtb3ZlKGRvY3VtZW50KTsK
KyAgICBjbGVhclBzZXVkb1N0YXRlKGZhbHNlKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6ZGlkUmVtb3ZlRE9NTm9kZShOb2RlKiBub2RlKQpAQCAtNTkwLDYgKzYzMCwxMSBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpkaWRSZW1vdmVET01Ob2RlKE5vZGUqIG5vZGUpCiAgICAgaWYg
KCFub2RlKQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9sYXN0RWxlbWVudFdpdGhQc2V1
ZG9TdGF0ZS5nZXQoKSA9PSBub2RlKSB7CisgICAgICAgIGNsZWFyUHNldWRvU3RhdGUoZmFsc2Up
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgTm9kZVRvSW5zcGVjdG9yU3R5bGVTaGVl
dDo6aXRlcmF0b3IgaXQgPSBtX25vZGVUb0luc3BlY3RvclN0eWxlU2hlZXQuZmluZChub2RlKTsK
ICAgICBpZiAoaXQgPT0gbV9ub2RlVG9JbnNwZWN0b3JTdHlsZVNoZWV0LmVuZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC02MTAsNiArNjU1LDE4IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRp
ZE1vZGlmeURPTUF0dHIoRWxlbWVudCogZWxlbWVudCkKICAgICBpdC0+c2Vjb25kLT5kaWRNb2Rp
ZnlFbGVtZW50QXR0cmlidXRlKCk7CiB9CiAKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmNsZWFy
UHNldWRvU3RhdGUoYm9vbCByZWNhbGNTdHlsZXMpCit7CisgICAgRWxlbWVudCogZWxlbWVudCA9
IG1fbGFzdEVsZW1lbnRXaXRoUHNldWRvU3RhdGUuZ2V0KCk7CisgICAgbV9sYXN0RWxlbWVudFdp
dGhQc2V1ZG9TdGF0ZSA9IDA7CisgICAgbV9sYXN0UHNldWRvU3RhdGUgPSAwOworICAgIGlmIChy
ZWNhbGNTdHlsZXMgJiYgZWxlbWVudCkgeworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBl
bGVtZW50LT5vd25lckRvY3VtZW50KCk7CisgICAgICAgIGlmIChkb2N1bWVudCkKKyAgICAgICAg
ICAgIGRvY3VtZW50LT5zdHlsZVNlbGVjdG9yQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5
KTsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5oCmluZGV4IDRmODRhZmI4NmYyZTIzZjUyNDA1ZTYyMGJkMDM2MzExNGNkMzBhMmYuLjgxNDdh
NzczNGY3NjM2MWE5NTU1MDQ0NTE2ZWZiYjk4YTVmZjA4MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaWZuZGVm
IEluc3BlY3RvckNTU0FnZW50X2gKICNkZWZpbmUgSW5zcGVjdG9yQ1NTQWdlbnRfaAogCisjaW5j
bHVkZSAiQ1NTU2VsZWN0b3IuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvclN0eWxlU2hlZXQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMu
aCIKQEAgLTYwLDcgKzYxLDEwIEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JDU1NBZ2VudChJbnN0
cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yRE9NQWdlbnQqKTsKICAgICB+SW5zcGVjdG9yQ1NT
QWdlbnQoKTsKIAorICAgIGJvb2wgZm9yY2VQc2V1ZG9TdGF0ZShFbGVtZW50KiwgQ1NTU2VsZWN0
b3I6OlBzZXVkb1R5cGUpOworICAgIHZvaWQgY2xlYXJGcm9udGVuZCgpOwogICAgIHZvaWQgcmVz
ZXQoKTsKKwogICAgIHZvaWQgZ2V0U3R5bGVzRm9yTm9kZShFcnJvclN0cmluZyosIGludCBub2Rl
SWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4qIGZvcmNlZFBzZXVkb0NsYXNzZXMsIFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiByZXN1bHQpOwogICAgIHZvaWQgZ2V0SW5saW5lU3R5bGVG
b3JOb2RlKEVycm9yU3RyaW5nKiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IHN0eWxlKTsKICAgICB2b2lkIGdldENvbXB1dGVkU3R5bGVGb3JOb2RlKEVycm9yU3RyaW5nKiwg
aW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHN0eWxlKTsKQEAgLTk5LDggKzEw
MywxMiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVET01Ob2RlKE5vZGUq
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkTW9kaWZ5RE9NQXR0cihFbGVtZW50Kik7CiAKKyAgICB2
b2lkIGNsZWFyUHNldWRvU3RhdGUoYm9vbCByZWNhbGNTdHlsZXMpOworCiAgICAgSW5zdHJ1bWVu
dGluZ0FnZW50cyogbV9pbnN0cnVtZW50aW5nQWdlbnRzOwogICAgIEluc3BlY3RvckRPTUFnZW50
KiBtX2RvbUFnZW50OworICAgIFJlZlB0cjxFbGVtZW50PiBtX2xhc3RFbGVtZW50V2l0aFBzZXVk
b1N0YXRlOworICAgIHVuc2lnbmVkIG1fbGFzdFBzZXVkb1N0YXRlOwogCiAgICAgSWRUb0luc3Bl
Y3RvclN0eWxlU2hlZXQgbV9pZFRvSW5zcGVjdG9yU3R5bGVTaGVldDsKICAgICBDU1NTdHlsZVNo
ZWV0VG9JbnNwZWN0b3JTdHlsZVNoZWV0IG1fY3NzU3R5bGVTaGVldFRvSW5zcGVjdG9yU3R5bGVT
aGVldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVy
LmNwcAppbmRleCBlZjliYzkwNjJmYzMwYWVhOWVkODcxMTc4YjgzMjJmMTM0MTFhYzdkLi4yNTg5
YWViYjcyYjNlYTlhZTlmNzBjOWE5YzBiMjEyZDVmODYzOGNjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCkBAIC0yOTAsNiArMjkwLDcg
QEAgdm9pZCBJbnNwZWN0b3JDb250cm9sbGVyOjpkaXNjb25uZWN0RnJvbnRlbmQoKQogI2VuZGlm
CiAgICAgbV9jb25zb2xlQWdlbnQtPmNsZWFyRnJvbnRlbmQoKTsKICAgICBtX2RvbUFnZW50LT5j
bGVhckZyb250ZW5kKCk7CisgICAgbV9jc3NBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOwogICAgIG1f
dGltZWxpbmVBZ2VudC0+Y2xlYXJGcm9udGVuZCgpOwogICAgIG1fcmVzb3VyY2VBZ2VudC0+Y2xl
YXJGcm9udGVuZCgpOwogI2lmIEVOQUJMRShEQVRBQkFTRSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMGUxYTFm
NWJlNjhiZjY4ZDdhNzE4OTI1MDg0MzkzMGFlZjkyMDQ4NC4uNmI0NWY3MmE5Zjc5MTYyZjFlY2Vm
ZWQ4MjRlZDBkNDlhMWM4ZWU4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTE4MSw2ICsxODEsMTMgQEAgYm9v
bCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmhhbmRsZU1vdXNlUHJlc3NJbXBsKEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpmb3JjZVBzZXVkb1N0YXRlSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFbGVtZW50KiBlbGVtZW50LCBDU1NTZWxlY3Rvcjo6
UHNldWRvVHlwZSBwc2V1ZG9TdGF0ZSkKK3sKKyAgICBpZiAoSW5zcGVjdG9yQ1NTQWdlbnQqIGNz
c0FnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ1NTQWdlbnQoKSkKKyAgICAg
ICAgcmV0dXJuIGNzc0FnZW50LT5mb3JjZVBzZXVkb1N0YXRlKGVsZW1lbnQsIHBzZXVkb1N0YXRl
KTsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpjaGFyYWN0ZXJEYXRhTW9kaWZpZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMsIENoYXJhY3RlckRhdGEqIGNoYXJhY3RlckRhdGEpCiB7CiAgICAgaWYgKElu
c3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3Rv
ckRPTUFnZW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNDlhMzhmYmJiY2ViZjAzMjllZWZiZjc4YThjMTU5OTk2
NmEzY2MyMS4uOWJhMjAxYWY3MTRiN2UyNzA1MDYyYzBhMzYyMGZlZTZhNjZlOTAxZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
aApAQCAtMzEsOCArMzEsMTAgQEAKICNpZm5kZWYgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uX2gK
ICNkZWZpbmUgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uX2gKIAorI2luY2x1ZGUgIkNTU1NlbGVj
dG9yLmgiCiAjaW5jbHVkZSAiQ29uc29sZVR5cGVzLmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIK
KyNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJQYWdl
LmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgpAQCAtODYsNiArODgsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBtb3VzZURpZE1vdmVPdmVyRWxlbWVudChQYWdl
KiwgY29uc3QgSGl0VGVzdFJlc3VsdCYsIHVuc2lnbmVkIG1vZGlmaWVyRmxhZ3MpOwogICAgIHN0
YXRpYyBib29sIGhhbmRsZU1vdXNlUHJlc3MoUGFnZSopOworICAgIHN0YXRpYyBib29sIGZvcmNl
UHNldWRvU3RhdGUoRWxlbWVudCosIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlKTsKIAogICAgIHN0
YXRpYyB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVsZVJlc291cmNl
UmVxdWVzdChEb2N1bWVudCosIGNvbnN0IFN0cmluZyYgdXJsKTsKQEAgLTIxNCw2ICsyMTcsNyBA
QCBwcml2YXRlOgogCiAgICAgc3RhdGljIHZvaWQgbW91c2VEaWRNb3ZlT3ZlckVsZW1lbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMqLCBjb25zdCBIaXRUZXN0UmVzdWx0JiwgdW5zaWduZWQgbW9k
aWZpZXJGbGFncyk7CiAgICAgc3RhdGljIGJvb2wgaGFuZGxlTW91c2VQcmVzc0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyopOworICAgIHN0YXRpYyBib29sIGZvcmNlUHNldWRvU3RhdGVJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMqLCBFbGVtZW50KiwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUpOwog
CiAgICAgc3RhdGljIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICBzdGF0aWMgdm9pZCBkaWRTY2hlZHVs
ZVJlc291cmNlUmVxdWVzdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyosIGNvbnN0IFN0cmluZyYg
dXJsKTsKQEAgLTQyOCw2ICs0MzIsMTYgQEAgaW5saW5lIGJvb2wgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpoYW5kbGVNb3VzZVByZXNzKFBhZ2UqIHBhZ2UpCiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCitpbmxpbmUgYm9vbCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZvcmNlUHNldWRvU3Rh
dGUoRWxlbWVudCogZWxlbWVudCwgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgcHNldWRvU3RhdGUp
Cit7CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVO
RFMoZmFsc2UpOworICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckRvY3VtZW50KGVsZW1lbnQtPmRvY3VtZW50KCkp
KQorICAgICAgICByZXR1cm4gZm9yY2VQc2V1ZG9TdGF0ZUltcGwoaW5zdHJ1bWVudGluZ0FnZW50
cywgZWxlbWVudCwgcHNldWRvU3RhdGUpOworI2VuZGlmCisgICAgcmV0dXJuIGZhbHNlOworfQor
CiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmNoYXJhY3RlckRhdGFNb2Rp
ZmllZChEb2N1bWVudCogZG9jdW1lbnQsIENoYXJhY3RlckRhdGEqIGNoYXJhY3RlckRhdGEpCiB7
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikK
</data>
<flag name="review"
          id="99746"
          type_id="1"
          status="+"
          setter="hyatt"
    />
          </attachment>
      

    </bug>

</bugzilla>