<?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>44563</bug_id>
          
          <creation_ts>2010-08-24 16:44:12 -0700</creation_ts>
          <short_desc>Delete HTMLElement::checkDTD</short_desc>
          <delta_ts>2010-08-24 23:56:43 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>268894</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-24 16:44:12 -0700</bug_when>
    <thetext>Delete HTMLElement::checkDTD</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268897</commentid>
    <comment_count>1</comment_count>
      <attachid>65344</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-24 16:46:35 -0700</bug_when>
    <thetext>Created attachment 65344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268914</commentid>
    <comment_count>2</comment_count>
      <attachid>65344</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-08-24 17:17:44 -0700</bug_when>
    <thetext>Comment on attachment 65344
Patch

Mind = blown.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268916</commentid>
    <comment_count>3</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-08-24 17:23:43 -0700</bug_when>
    <thetext>I presume you plan to delete tagPriority as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>268920</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-24 17:24:45 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; I presume you plan to delete tagPriority as well.

Already in the commit-queue: Bug 44557.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269042</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-08-24 23:22:02 -0700</bug_when>
    <thetext>Committed r65986: &lt;http://trac.webkit.org/changeset/65986&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>269055</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-08-24 23:56:43 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/65986 might have broken Qt Linux Release minimal, Qt Linux ARMv5 Release, and Qt Linux ARMv7 Release</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>65344</attachid>
            <date>2010-08-24 16:46:35 -0700</date>
            <delta_ts>2010-08-24 17:17:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-44563-20100824164634.patch</filename>
            <type>text/plain</type>
            <size>57632</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YTEzZGU1MGY0ZTQ2ZjJjYzQ2ODMzZjBhODYwNTRjYzcwZWQwNThjNS4uOGQyYmQ2NWQ3MmRkNzlj
ZTgwMDVkZjJiODFhMDk1OWM1MDNlZGY5NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTIsNiArMiwxMDEgQEAKIAogICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBEZWxldGUgSFRNTEVsZW1lbnQ6OmNo
ZWNrRFRECisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00
NDU2MworCisgICAgICAgIFRoaXMgZnVuY3Rpb24gZXhpc3RlZCB0byBzZXJ2aWNlIHRoZSBMZWdh
Y3lIVE1MVHJlZUJ1aWxkZXIuICBUaGUgbmV3CisgICAgICAgIEhUTUxUcmVlQnVpbGRlciBoYXMg
dGhpcyBsb2dpYyBpbnRlcm5hbGl6ZWQuICBQdWxsaW5nIG9uIHRoaXMgdGhyZWFkCisgICAgICAg
IGNhdXNlZCBtZSB0byByZW1vdmUgYSBsZWdhY3lQYXJzZXJBZGRDaGlsZCBhbmQgdG8gZGlzY292
ZXIgc29tZSBjb2RlCisgICAgICAgIHRoYXQgc2hvdWxkbid0IGJlIGNhbGxpbmcgdGhlc2UgcGFy
c2VyLXNwZWNpZmljIEFQSXMuCisKKyAgICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpwYXJzZXJBZGRDaGlsZCk6CisgICAgICAg
IChXZWJDb3JlOjpDb250YWluZXJOb2RlOjpkZXByZWNhdGVkUGFyc2VyQWRkQ2hpbGQpOgorICAg
ICAgICAqIGRvbS9Db250YWluZXJOb2RlLmg6CisgICAgICAgICogZG9tL0RPTUltcGxlbWVudGF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjpjcmVhdGVEb2N1
bWVudCk6CisgICAgICAgICogZG9tL05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Tm9kZTo6
ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorICAgICAg
ICAqIGRvbS9YTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1
bWVudFBhcnNlcjo6ZW50ZXJUZXh0KToKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXIu
aDoKKyAgICAgICAgKiBkb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpzdGFydEVsZW1lbnROcyk6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6Y2hhcmFjdGVycyk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxEb2N1bWVudFBhcnNlcjo6cHJvY2Vzc2luZ0luc3RydWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpjZGF0YUJsb2NrKToKKyAgICAgICAgKFdlYkNvcmU6
OlhNTERvY3VtZW50UGFyc2VyOjpjb21tZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3Vt
ZW50UGFyc2VyOjppbnRlcm5hbFN1YnNldCk6CisgICAgICAgICogZG9tL1hNTERvY3VtZW50UGFy
c2VyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6WE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZVN0YXJ0RWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VDaGFyYWN0ZXJzKToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZVByb2Nlc3NpbmdJbnN0
cnVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VDZGF0
YSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VDb21tZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlhNTERvY3VtZW50UGFyc2VyOjpwYXJzZUR0ZCk6CisgICAgICAg
ICogaHRtbC9IVE1MRGF0YUdyaWRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxEYXRh
R3JpZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEYXRhR3JpZFJvd0VsZW1lbnQuY3Bw
OgorICAgICAgICAqIGh0bWwvSFRNTERhdGFHcmlkUm93RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTERhdGFMaXN0RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRGF0YUxpc3RF
bGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRG9jdW1lbnQuY3BwOgorICAgICAgICAqIGh0
bWwvSFRNTERvY3VtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MRWxlbWVudC5jcHA6CisgICAg
ICAgICogaHRtbC9IVE1MRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTEZpZWxkU2V0RWxl
bWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50Lmg6CisgICAgICAg
ICogaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxGcmFt
ZVNldEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxIZWFkRWxlbWVudC5jcHA6CisgICAg
ICAgICogaHRtbC9IVE1MSGVhZEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxIZWFkaW5n
RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxIdG1sRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MSHRtbEVs
ZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxLZXlnZW5FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkhUTUxLZXlnZW5FbGVtZW50OjpIVE1MS2V5Z2VuRWxlbWVudCk6CisgICAgICAg
ICogaHRtbC9IVE1MTWFwRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWFwRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHA6CisgICAgICAgICogaHRt
bC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50
LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaDoKKyAgICAgICAgKiBo
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwOgorICAgICAgICAqIGh0bWwvSFRNTE9wdEdyb3Vw
RWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwOgorICAgICAg
ICAqIGh0bWwvSFRNTE9wdGlvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxQYXJhZ3Jh
cGhFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1M
UGx1Z0luRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFNjcmlwdEVsZW1lbnQuaDoKKyAg
ICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxT
ZWxlY3RFbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MU3R5bGVFbGVtZW50Lmg6CisgICAg
ICAgICogaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxU
YWJsZUNvbEVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwOgor
ICAgICAgICAqIGh0bWwvSFRNTFRhYmxlRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5jcHA6CisgICAgICAgICogaHRtbC9IVE1MVGFibGVSb3dFbGVtZW50Lmg6
CisgICAgICAgICogaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHA6CisgICAgICAgICog
aHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRleHRB
cmVhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFRpdGxlRWxlbWVudC5oOgorICAgICAg
ICAqIHJlbmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xFbGVtZW50OjphdHRhY2hUb1BhcmVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OmF0dGFjaFRvUGFyZW50KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRDb250cm9sSW5uZXJFbGVtZW50OjphdHRhY2hJbm5lckVsZW1lbnQpOgorCisyMDEwLTA4
LTI0ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgUmVtb3ZlIHRhZ1ByaW9yaXR5CiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00NDU1NwogCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1dlYkNvcmUvZG9tL0NvbnRhaW5l
ck5vZGUuY3BwCmluZGV4IGU5MTk0OTQ1YmM1M2JkZjc4ZDNiOWNkNGY0YmY2NTUzNzI4YjliZWYu
LmVmNjJiMzg3ZjE3YWRmZmY1ZDFhNzk4YmZlYTU1MDE1MzllZGI2MmYgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5v
ZGUuY3BwCkBAIC01ODgsNyArNTg4LDcgQEAgYm9vbCBDb250YWluZXJOb2RlOjphcHBlbmRDaGls
ZChQYXNzUmVmUHRyPE5vZGU+IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJiBlYywgYm8KICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBDb250YWluZXJOb2RlOjphZGRDaGlsZENvbW1vbihOb2Rl
KiBuZXdDaGlsZCkKK3ZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0
cjxOb2RlPiBuZXdDaGlsZCkKIHsKICAgICBBU1NFUlQobmV3Q2hpbGQpOwogICAgIEFTU0VSVCgh
bmV3Q2hpbGQtPnBhcmVudCgpKTsgLy8gVXNlIGFwcGVuZENoaWxkIGlmIHlvdSBuZWVkIHRvIGhh
bmRsZSByZXBhcmVudGluZyAoYW5kIHdhbnQgRE9NIG11dGF0aW9uIGV2ZW50cykuCkBAIC01OTYs
NyArNTk2LDcgQEAgdm9pZCBDb250YWluZXJOb2RlOjphZGRDaGlsZENvbW1vbihOb2RlKiBuZXdD
aGlsZCkKICAgICBmb3JiaWRFdmVudERpc3BhdGNoKCk7CiAgICAgTm9kZSogbGFzdCA9IG1fbGFz
dENoaWxkOwogICAgIC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQgdGFrZSBhIFBhc3NSZWZQ
dHIuCi0gICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcjxOb2RlLCBDb250YWluZXJOb2RlPihuZXdD
aGlsZCwgdGhpcyk7CisgICAgYXBwZW5kQ2hpbGRUb0NvbnRhaW5lcjxOb2RlLCBDb250YWluZXJO
b2RlPihuZXdDaGlsZC5nZXQoKSwgdGhpcyk7CiAgICAgYWxsb3dFdmVudERpc3BhdGNoKCk7CiAK
ICAgICAvLyBGSVhNRTogV2h5IGRvZXNuJ3QgdGhpcyB1c2Ugbm90aWZ5Q2hpbGRJbnNlcnRlZChu
ZXdDaGlsZCkgaW5zdGVhZD8KQEAgLTYwNiwyNSArNjA2LDkgQEAgdm9pZCBDb250YWluZXJOb2Rl
OjphZGRDaGlsZENvbW1vbihOb2RlKiBuZXdDaGlsZCkKICAgICBjaGlsZHJlbkNoYW5nZWQodHJ1
ZSwgbGFzdCwgMCwgMSk7CiB9CiAKLXZvaWQgQ29udGFpbmVyTm9kZTo6cGFyc2VyQWRkQ2hpbGQo
UGFzc1JlZlB0cjxOb2RlPiBuZXdDaGlsZCkKLXsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwotICAg
IGFkZENoaWxkQ29tbW9uKG5ld0NoaWxkLmdldCgpKTsKLX0KLQotQ29udGFpbmVyTm9kZSogQ29u
dGFpbmVyTm9kZTo6bGVnYWN5UGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBuZXdDaGls
ZCkKK3ZvaWQgQ29udGFpbmVyTm9kZTo6ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4gbm9kZSkKIHsKLSAgICBBU1NFUlQobmV3Q2hpbGQpOwotCi0gICAgLy8gQ2hlY2sg
Zm9yIGNvbnNpc3RlbmN5IHdpdGggRFRELCBidXQgb25seSB3aGVuIHBhcnNpbmcgSFRNTC4KLSAg
ICBpZiAoZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSAmJiAhY2hpbGRBbGxvd2VkKG5ld0No
aWxkLmdldCgpKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBhZGRDaGlsZENvbW1vbihuZXdD
aGlsZC5nZXQoKSk7Ci0KLSAgICBpZiAobmV3Q2hpbGQtPmlzRWxlbWVudE5vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PENvbnRhaW5lck5vZGUqPihuZXdDaGlsZC5nZXQoKSk7Ci0g
ICAgcmV0dXJuIHRoaXM7CisgICAgcGFyc2VyQWRkQ2hpbGQobm9kZSk7CiB9CiAKIHZvaWQgQ29u
dGFpbmVyTm9kZTo6c3VzcGVuZFBvc3RBdHRhY2hDYWxsYmFja3MoKQpkaWZmIC0tZ2l0IGEvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5oIGIvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5oCmlu
ZGV4IGI4NGRhMmYzZjQyNjJkNzQ1MDBmZDU0NjUxY2IzOWJkZWIzZDExNTIuLmFkMGE1NGFiNjNl
ZmQyMzc2YjQwOTE1NmE5NTA0Mzg0ODE0NWZiZWIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL0Nv
bnRhaW5lck5vZGUuaAorKysgYi9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmgKQEAgLTUxLDcg
KzUxLDYgQEAgcHVibGljOgogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIG9ubHkgdXNlZCBkdXJp
bmcgcGFyc2luZy4KICAgICAvLyBUaGV5IGRvbid0IHNlbmQgRE9NIG11dGF0aW9uIGV2ZW50cyBv
ciBoYW5kbGUgcmVwYXJlbnRpbmcuCiAgICAgLy8gSG93ZXZlciwgYXJiaXRyYXJ5IGNvZGUgbWF5
IGJlIHJ1biBieSBiZWZvcmVsb2FkIGhhbmRsZXJzLgotICAgIHZpcnR1YWwgQ29udGFpbmVyTm9k
ZSogbGVnYWN5UGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPik7CiAgICAgdm9pZCBwYXJz
ZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+KTsKICAgICB2b2lkIHBhcnNlclJlbW92ZUNoaWxk
KE5vZGUqKTsKICAgICB2b2lkIHBhcnNlckluc2VydEJlZm9yZShQYXNzUmVmUHRyPE5vZGU+IG5l
d0NoaWxkLCBOb2RlKiByZWZDaGlsZCk7CkBAIC0xMDAsOCArOTksMTIgQEAgcHJvdGVjdGVkOgog
ICAgIHZvaWQgc2V0TGFzdENoaWxkKE5vZGUqIGNoaWxkKSB7IG1fbGFzdENoaWxkID0gY2hpbGQ7
IH0KIAogcHJpdmF0ZToKLSAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgdGFrZSBhIFBhc3NSZWZQ
dHIuCi0gICAgdm9pZCBhZGRDaGlsZENvbW1vbihOb2RlKik7CisgICAgLy8gTmV2ZXIgY2FsbCB0
aGlzIGZ1bmN0aW9uIGRpcmVjdGx5LiAgSWYgeW91J3JlIHRyeWluZyB0byBjYWxsIHRoaXMKKyAg
ICAvLyBmdW5jdGlvbiwgeW91ciBjb2RlIGlzIGVpdGhlciB3cm9uZyBvciB5b3UncmUgc3VwcG9z
ZWQgdG8gY2FsbAorICAgIC8vIHBhcnNlckFkZENoaWxkLiAgUGxlYXNlIGRvIG5vdCBjYWxsIHBh
cnNlckFkZENoaWxkIHVubGVzcyB5b3UgYXJlIHRoZQorICAgIC8vIHBhcnNlciEKKyAgICB2aXJ0
dWFsIHZvaWQgZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pOworCiAg
ICAgdm9pZCByZW1vdmVCZXR3ZWVuKE5vZGUqIHByZXZpb3VzQ2hpbGQsIE5vZGUqIG5leHRDaGls
ZCwgTm9kZSogb2xkQ2hpbGQpOwogICAgIHZvaWQgaW5zZXJ0QmVmb3JlQ29tbW9uKE5vZGUqIG5l
eHRDaGlsZCwgTm9kZSogb2xkQ2hpbGQpOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9ET01J
bXBsZW1lbnRhdGlvbi5jcHAgYi9XZWJDb3JlL2RvbS9ET01JbXBsZW1lbnRhdGlvbi5jcHAKaW5k
ZXggNDY3ZjFmYzNmZjlhOTYyYjk4MjhlOTU5N2QxYmU0YmFjOTY4MGViYS4uMzBlODg5ZjhjMWYy
YWNmZmYwNWE1OTVlMTI1MzY0ZTQ1MjgyMWRkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vRE9N
SW1wbGVtZW50YXRpb24uY3BwCisrKyBiL1dlYkNvcmUvZG9tL0RPTUltcGxlbWVudGF0aW9uLmNw
cApAQCAtMjU4LDkgKzI1OCw5IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnQ+IERPTUltcGxlbWVudGF0
aW9uOjpjcmVhdGVEb2N1bWVudChjb25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSCiAKICAgICAvLyBG
SVhNRTogU2hvdWxkbid0IHRoaXMgY2FsbCBhcHBlbmRDaGlsZCBpbnN0ZWFkPwogICAgIGlmIChk
b2N0eXBlKQotICAgICAgICBkb2MtPmxlZ2FjeVBhcnNlckFkZENoaWxkKGRvY3R5cGUpOworICAg
ICAgICBkb2MtPnBhcnNlckFkZENoaWxkKGRvY3R5cGUpOwogICAgIGlmIChkb2N1bWVudEVsZW1l
bnQpCi0gICAgICAgIGRvYy0+bGVnYWN5UGFyc2VyQWRkQ2hpbGQoZG9jdW1lbnRFbGVtZW50LnJl
bGVhc2UoKSk7CisgICAgICAgIGRvYy0+cGFyc2VyQWRkQ2hpbGQoZG9jdW1lbnRFbGVtZW50LnJl
bGVhc2UoKSk7CiAKICAgICByZXR1cm4gZG9jLnJlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvZG9tL05vZGUuY3BwIGIvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggN2I1MzRjZTlm
OTY5NWZhOTE0OTY1MjJmOWY4ZTg1MWRiZjNhM2Y2MS4uZjRhODFlZDliNDM0OTc3YWZiZmJhZDVi
NjQzM2I5N2MxMGVhMzhhMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIv
V2ViQ29yZS9kb20vTm9kZS5jcHAKQEAgLTY0MSw5ICs2NDEsOCBAQCBjb25zdCBBdG9taWNTdHJp
bmcmIE5vZGU6OnZpcnR1YWxOYW1lc3BhY2VVUkkoKSBjb25zdAogICAgIHJldHVybiBudWxsQXRv
bTsKIH0KIAotQ29udGFpbmVyTm9kZSogTm9kZTo6bGVnYWN5UGFyc2VyQWRkQ2hpbGQoUGFzc1Jl
ZlB0cjxOb2RlPikKK3ZvaWQgTm9kZTo6ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKFBhc3NSZWZQ
dHI8Tm9kZT4pCiB7Ci0gICAgcmV0dXJuIDA7CiB9CiAKIGJvb2wgTm9kZTo6aXNDb250ZW50RWRp
dGFibGUoKSBjb25zdApAQCAtMTIyNSwxMSArMTIyNCw2IEBAIGJvb2wgTm9kZTo6Y29udGFpbnMo
Y29uc3QgTm9kZSogbm9kZSkgY29uc3QKICAgICByZXR1cm4gdGhpcyA9PSBub2RlIHx8IG5vZGUt
PmlzRGVzY2VuZGFudE9mKHRoaXMpOwogfQogCi1ib29sIE5vZGU6OmNoaWxkQWxsb3dlZChOb2Rl
KiBuZXdDaGlsZCkKLXsKLSAgICByZXR1cm4gY2hpbGRUeXBlQWxsb3dlZChuZXdDaGlsZC0+bm9k
ZVR5cGUoKSk7Ci19Ci0KIHZvaWQgTm9kZTo6YXR0YWNoKCkKIHsKICAgICBBU1NFUlQoIWF0dGFj
aGVkKCkpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9kb20vTm9kZS5oIGIvV2ViQ29yZS9kb20vTm9k
ZS5oCmluZGV4IDkxY2UwMzU5YjcwZmFmMWM0OTIzNjU0MTNmMDU0NDEyNjU1MzE0NGQuLjY5Nzkx
OWNhMzdkZWFkMjFiYjZiZjg3NWZjNWJlZjAzZTg4OWEwMzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
ZG9tL05vZGUuaAorKysgYi9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTI1OCwxMSArMjU4LDkgQEAg
cHVibGljOgogICAgIEVsZW1lbnQqIHJvb3RFZGl0YWJsZUVsZW1lbnQoKSBjb25zdDsKICAgICAK
ICAgICBib29sIGluU2FtZUNvbnRhaW5pbmdCbG9ja0Zsb3dFbGVtZW50KE5vZGUqKTsKLSAgICAK
LSAgICAvLyBVc2VkIGJ5IHRoZSBwYXJzZXIuIENoZWNrcyBhZ2FpbnN0IHRoZSBEVEQsIHVubGlr
ZSBET00gb3BlcmF0aW9ucyBsaWtlIGFwcGVuZENoaWxkKCkuCi0gICAgLy8gQWxzbyBkb2VzIG5v
dCBkaXNwYXRjaCBET00gbXV0YXRpb24gZXZlbnRzLgotICAgIC8vIFJldHVybnMgdGhlIGFwcHJv
cHJpYXRlIGNvbnRhaW5lciBub2RlIGZvciBmdXR1cmUgaW5zZXJ0aW9ucyBhcyB5b3UgcGFyc2Us
IG9yIDAgZm9yIGZhaWx1cmUuCi0gICAgdmlydHVhbCBDb250YWluZXJOb2RlKiBsZWdhY3lQYXJz
ZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+KTsKKworICAgIC8vIEZJWE1FOiBBbGwgY2FsbGVy
cyBvZiB0aGlzIGZ1bmN0aW9uIGFyZSBhbG1vc3QgY2VydGFpbmx5IHdyb25nIQorICAgIHZpcnR1
YWwgdm9pZCBkZXByZWNhdGVkUGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPik7CiAKICAg
ICAvLyBDYWxsZWQgYnkgdGhlIHBhcnNlciB3aGVuIHRoaXMgZWxlbWVudCdzIGNsb3NlIHRhZyBp
cyByZWFjaGVkLAogICAgIC8vIHNpZ25hbGluZyB0aGF0IGFsbCBjaGlsZCB0YWdzIGhhdmUgYmVl
biBwYXJzZWQgYW5kIGFkZGVkLgpAQCAtNDIzLDExICs0MjEsOSBAQCBwdWJsaWM6CiAgICAgYm9v
bCBpc0Rlc2NlbmRhbnRPZihjb25zdCBOb2RlKikgY29uc3Q7CiAgICAgYm9vbCBjb250YWlucyhj
b25zdCBOb2RlKikgY29uc3Q7CiAKLSAgICAvLyBUaGVzZSB0d28gbWV0aG9kcyBhcmUgbXV0dWFs
bHkgZXhjbHVzaXZlLiAgVGhlIGZvcm1lciBpcyB1c2VkIHRvIGRvIHN0cmljdCBlcnJvci1jaGVj
a2luZwotICAgIC8vIHdoZW4gYWRkaW5nIGNoaWxkcmVuIHZpYSB0aGUgcHVibGljIERPTSBBUEkg
KGUuZy4sIGFwcGVuZENoaWxkKCkpLiAgVGhlIGxhdHRlciBpcyBjYWxsZWQgb25seSB3aGVuIHBh
cnNpbmcsIAotICAgIC8vIHRvIHNhbml0eS1jaGVjayBhZ2FpbnN0IHRoZSBEVEQgZm9yIGVycm9y
IHJlY292ZXJ5LgorICAgIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZG8gc3RyaWN0IGVycm9y
LWNoZWNraW5nIHdoZW4gYWRkaW5nIGNoaWxkcmVuIHZpYQorICAgIC8vIHRoZSBwdWJsaWMgRE9N
IEFQSSAoZS5nLiwgYXBwZW5kQ2hpbGQoKSkuCiAgICAgdm9pZCBjaGVja0FkZENoaWxkKE5vZGUq
IG5ld0NoaWxkLCBFeGNlcHRpb25Db2RlJik7IC8vIEVycm9yLWNoZWNraW5nIHdoZW4gYWRkaW5n
IHZpYSB0aGUgRE9NIEFQSQotICAgIHZpcnR1YWwgYm9vbCBjaGlsZEFsbG93ZWQoTm9kZSogbmV3
Q2hpbGQpOyAgICAgICAgICAvLyBFcnJvci1jaGVja2luZyBkdXJpbmcgcGFyc2luZyB0aGF0IGNo
ZWNrcyB0aGUgRFRECiAKICAgICB2b2lkIGNoZWNrUmVwbGFjZUNoaWxkKE5vZGUqIG5ld0NoaWxk
LCBOb2RlKiBvbGRDaGlsZCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZpcnR1YWwgYm9vbCBjYW5S
ZXBsYWNlQ2hpbGQoTm9kZSogbmV3Q2hpbGQsIE5vZGUqIG9sZENoaWxkKTsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmNwcCBiL1dlYkNvcmUvZG9tL1hNTERvY3Vt
ZW50UGFyc2VyLmNwcAppbmRleCAwNTRlNGUzNTlhYmQ1OTQxMmQyMmY4NjdlMzQxNmE3MWI1Yzc2
N2RhLi40ZWM2MDkwM2M0ZGVmZjExYWE3Njc2ODAyZTVmOGZkMzRiOTk3YWIxIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1M
RG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xNzAsMTYgKzE3MCwxNCBAQCB2b2lkIFhNTERvY3VtZW50
UGFyc2VyOjpoYW5kbGVFcnJvcihFcnJvclR5cGUgdHlwZSwgY29uc3QgY2hhciogbSwgaW50IGxp
bmVOdW1iZQogICAgICAgICBzdG9wUGFyc2luZygpOwogfQogCi1ib29sIFhNTERvY3VtZW50UGFy
c2VyOjplbnRlclRleHQoKQordm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6ZW50ZXJUZXh0KCkKIHsK
ICNpZiAhVVNFKFFYTUxTVFJFQU0pCiAgICAgQVNTRVJUKG1fYnVmZmVyZWRUZXh0LnNpemUoKSA9
PSAwKTsKICNlbmRpZgogICAgIFJlZlB0cjxOb2RlPiBuZXdOb2RlID0gVGV4dDo6Y3JlYXRlKGRv
Y3VtZW50KCksICIiKTsKLSAgICBpZiAoIW1fY3VycmVudE5vZGUtPmxlZ2FjeVBhcnNlckFkZENo
aWxkKG5ld05vZGUuZ2V0KCkpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9jdXJyZW50
Tm9kZS0+ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKG5ld05vZGUuZ2V0KCkpOwogICAgIHB1c2hD
dXJyZW50Tm9kZShuZXdOb2RlLmdldCgpKTsKLSAgICByZXR1cm4gdHJ1ZTsKIH0KIAogI2lmICFV
U0UoUVhNTFNUUkVBTSkKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2Vy
LmggYi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IGJlYmFmN2NiMzZjNmU1
ZDRjZjY0MmJmMTI2NGM2ODQ5OGRmMGVmYTEuLjFmYzczNjk5Y2FiNTU3NjAxZDk5NjVkZmU2ZjEy
YjI4N2FlMDQyNTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyLmgK
KysrIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXIuaApAQCAtMTY1LDcgKzE2NSw3IEBA
IHB1YmxpYzoKIAogICAgICAgICB2b2lkIGluc2VydEVycm9yTWVzc2FnZUJsb2NrKCk7CiAKLSAg
ICAgICAgYm9vbCBlbnRlclRleHQoKTsKKyAgICAgICAgdm9pZCBlbnRlclRleHQoKTsKICAgICAg
ICAgdm9pZCBleGl0VGV4dCgpOwogCiAgICAgICAgIHZvaWQgZG9Xcml0ZShjb25zdCBTdHJpbmcm
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyTGlieG1sMi5jcHAg
Yi9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBhcnNlckxpYnhtbDIuY3BwCmluZGV4IGNlMjU5MDUy
NDk2NmI1Mzk2ZDFmZjkxNmVlZWViMzM5ZTNlNDhhNWEuLjUzY2Q5MmU0YTZhNGZlMDEzZDU0OGU4
NWNmZWFhMmMzZjkyNGE1M2UgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFy
c2VyTGlieG1sMi5jcHAKKysrIGIvV2ViQ29yZS9kb20vWE1MRG9jdW1lbnRQYXJzZXJMaWJ4bWwy
LmNwcApAQCAtNzk1LDEwICs3OTUsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpzdGFydEVs
ZW1lbnROcyhjb25zdCB4bWxDaGFyKiB4bWxMb2NhbE5hbWUsIGNvbnN0IHhtbENoYQogICAgIGlm
IChzY3JpcHRFbGVtZW50KQogICAgICAgICBtX3NjcmlwdFN0YXJ0TGluZSA9IGxpbmVOdW1iZXIo
KTsKIAotICAgIGlmICghbV9jdXJyZW50Tm9kZS0+bGVnYWN5UGFyc2VyQWRkQ2hpbGQobmV3RWxl
bWVudC5nZXQoKSkpIHsKLSAgICAgICAgc3RvcFBhcnNpbmcoKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KKyAgICBtX2N1cnJlbnROb2RlLT5kZXByZWNhdGVkUGFyc2VyQWRkQ2hpbGQobmV3RWxl
bWVudC5nZXQoKSk7CiAKICAgICBwdXNoQ3VycmVudE5vZGUobmV3RWxlbWVudC5nZXQoKSk7CiAg
ICAgaWYgKG1fdmlldyAmJiAhbmV3RWxlbWVudC0+YXR0YWNoZWQoKSkKQEAgLTg5MSw4ICs4ODgs
OSBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpjaGFyYWN0ZXJzKGNvbnN0IHhtbENoYXIqIHMs
IGludCBsZW4pCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAobV9jdXJyZW50Tm9k
ZS0+aXNUZXh0Tm9kZSgpIHx8IGVudGVyVGV4dCgpKQotICAgICAgICBtX2J1ZmZlcmVkVGV4dC5h
cHBlbmQocywgbGVuKTsKKyAgICBpZiAoIW1fY3VycmVudE5vZGUtPmlzVGV4dE5vZGUoKSkKKyAg
ICAgICAgZW50ZXJUZXh0KCk7CisgICAgbV9idWZmZXJlZFRleHQuYXBwZW5kKHMsIGxlbik7CiB9
CiAKIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmVycm9yKEVycm9yVHlwZSB0eXBlLCBjb25zdCBj
aGFyKiBtZXNzYWdlLCB2YV9saXN0IGFyZ3MpCkBAIC05NDAsOCArOTM4LDcgQEAgdm9pZCBYTUxE
b2N1bWVudFBhcnNlcjo6cHJvY2Vzc2luZ0luc3RydWN0aW9uKGNvbnN0IHhtbENoYXIqIHRhcmdl
dCwgY29uc3QgeG1sQ2gKIAogICAgIHBpLT5zZXRDcmVhdGVkQnlQYXJzZXIodHJ1ZSk7CiAKLSAg
ICBpZiAoIW1fY3VycmVudE5vZGUtPmxlZ2FjeVBhcnNlckFkZENoaWxkKHBpLmdldCgpKSkKLSAg
ICAgICAgcmV0dXJuOworICAgIG1fY3VycmVudE5vZGUtPmRlcHJlY2F0ZWRQYXJzZXJBZGRDaGls
ZChwaS5nZXQoKSk7CiAgICAgaWYgKG1fdmlldyAmJiAhcGktPmF0dGFjaGVkKCkpCiAgICAgICAg
IHBpLT5hdHRhY2goKTsKIApAQCAtOTY3LDggKzk2NCw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJz
ZXI6OmNkYXRhQmxvY2soY29uc3QgeG1sQ2hhciogcywgaW50IGxlbikKICAgICBleGl0VGV4dCgp
OwogCiAgICAgUmVmUHRyPE5vZGU+IG5ld05vZGUgPSBDREFUQVNlY3Rpb246OmNyZWF0ZShkb2N1
bWVudCgpLCB0b1N0cmluZyhzLCBsZW4pKTsKLSAgICBpZiAoIW1fY3VycmVudE5vZGUtPmxlZ2Fj
eVBhcnNlckFkZENoaWxkKG5ld05vZGUuZ2V0KCkpKQotICAgICAgICByZXR1cm47CisgICAgbV9j
dXJyZW50Tm9kZS0+ZGVwcmVjYXRlZFBhcnNlckFkZENoaWxkKG5ld05vZGUuZ2V0KCkpOwogICAg
IGlmIChtX3ZpZXcgJiYgIW5ld05vZGUtPmF0dGFjaGVkKCkpCiAgICAgICAgIG5ld05vZGUtPmF0
dGFjaCgpOwogfQpAQCAtOTg2LDcgKzk4Miw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OmNv
bW1lbnQoY29uc3QgeG1sQ2hhciogcykKICAgICBleGl0VGV4dCgpOwogCiAgICAgUmVmUHRyPE5v
ZGU+IG5ld05vZGUgPSBDb21tZW50OjpjcmVhdGUoZG9jdW1lbnQoKSwgdG9TdHJpbmcocykpOwot
ICAgIG1fY3VycmVudE5vZGUtPmxlZ2FjeVBhcnNlckFkZENoaWxkKG5ld05vZGUuZ2V0KCkpOwor
ICAgIG1fY3VycmVudE5vZGUtPmRlcHJlY2F0ZWRQYXJzZXJBZGRDaGlsZChuZXdOb2RlLmdldCgp
KTsKICAgICBpZiAobV92aWV3ICYmICFuZXdOb2RlLT5hdHRhY2hlZCgpKQogICAgICAgICBuZXdO
b2RlLT5hdHRhY2goKTsKIH0KQEAgLTEwNTAsNyArMTA0Niw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQ
YXJzZXI6OmludGVybmFsU3Vic2V0KGNvbnN0IHhtbENoYXIqIG5hbWUsIGNvbnN0IHhtbENoYXIq
IGV4dGVyCiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIGRvY3VtZW50KCktPmxlZ2FjeVBh
cnNlckFkZENoaWxkKERvY3VtZW50VHlwZTo6Y3JlYXRlKGRvY3VtZW50KCksIHRvU3RyaW5nKG5h
bWUpLCB0b1N0cmluZyhleHRlcm5hbElEKSwgdG9TdHJpbmcoc3lzdGVtSUQpKSk7CisgICAgICAg
IGRvY3VtZW50KCktPnBhcnNlckFkZENoaWxkKERvY3VtZW50VHlwZTo6Y3JlYXRlKGRvY3VtZW50
KCksIHRvU3RyaW5nKG5hbWUpLCB0b1N0cmluZyhleHRlcm5hbElEKSwgdG9TdHJpbmcoc3lzdGVt
SUQpKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2RvbS9YTUxEb2N1bWVudFBh
cnNlclF0LmNwcCBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3BwCmluZGV4IDNj
MDFjZmU3NDA2ZTA1Nzk3ODUwMzI5ZWExM2JkZGE0ZDY3NTc3ZWMuLjMxNzc1YjUyODlhNDZlNTM1
NzRjYWRjZDYxOTJhYjY3NjI4NmFhMDIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvZG9tL1hNTERvY3Vt
ZW50UGFyc2VyUXQuY3BwCisrKyBiL1dlYkNvcmUvZG9tL1hNTERvY3VtZW50UGFyc2VyUXQuY3Bw
CkBAIC00MTAsMTIgKzQxMCwxMiBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZSgpCiAg
ICAgICAgICAgICAgICApIHsKICAgICAgICAgICAgICAgICBRU3RyaW5nIGVudGl0eSA9IG1fc3Ry
ZWFtLm5hbWUoKS50b1N0cmluZygpOwogICAgICAgICAgICAgICAgIFVDaGFyIGMgPSBkZWNvZGVO
YW1lZEVudGl0eShlbnRpdHkudG9VdGY4KCkuY29uc3REYXRhKCkpOwotICAgICAgICAgICAgICAg
IGlmIChtX2N1cnJlbnROb2RlLT5pc1RleHROb2RlKCkgfHwgZW50ZXJUZXh0KCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICAgICAgICAg
IFN0cmluZyBzdHIoJmMsIDEpOwotICAgICAgICAgICAgICAgICAgICAvL3FEZWJ1ZygpPDwiIC0t
LS0tLS0gYWRkaW5nIGVudGl0eSAiPDxzdHI7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRpY19j
YXN0PFRleHQqPihtX2N1cnJlbnROb2RlKS0+YXBwZW5kRGF0YShzdHIsIGVjKTsKLSAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCFtX2N1cnJlbnROb2RlLT5pc1RleHROb2Rl
KCkpCisgICAgICAgICAgICAgICAgICAgIGVudGVyVGV4dCgpOworICAgICAgICAgICAgICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgICAgICAgICAgICAgIFN0cmluZyBzdHIoJmMsIDEpOwor
ICAgICAgICAgICAgICAgIC8vIHFEZWJ1ZygpPDwiIC0tLS0tLS0gYWRkaW5nIGVudGl0eSAiPDxz
dHI7CisgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8VGV4dCo+KG1fY3VycmVudE5vZGUpLT5h
cHBlbmREYXRhKHN0ciwgZWMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgICAg
ICBicmVhazsKQEAgLTUxOCwxMCArNTE4LDcgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFy
c2VTdGFydEVsZW1lbnQoKQogICAgIGlmIChzY3JpcHRFbGVtZW50KQogICAgICAgICBtX3Njcmlw
dFN0YXJ0TGluZSA9IGxpbmVOdW1iZXIoKTsKIAotICAgIGlmICghbV9jdXJyZW50Tm9kZS0+bGVn
YWN5UGFyc2VyQWRkQ2hpbGQobmV3RWxlbWVudC5nZXQoKSkpIHsKLSAgICAgICAgc3RvcFBhcnNp
bmcoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KKyAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJB
ZGRDaGlsZChuZXdFbGVtZW50LmdldCgpKTsKIAogICAgIHB1c2hDdXJyZW50Tm9kZShuZXdFbGVt
ZW50LmdldCgpKTsKICAgICBpZiAobV92aWV3ICYmICFuZXdFbGVtZW50LT5hdHRhY2hlZCgpKQpA
QCAtNTk5LDEwICs1OTYsMTAgQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VFbmRFbGVt
ZW50KCkKIAogdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6cGFyc2VDaGFyYWN0ZXJzKCkKIHsKLSAg
ICBpZiAobV9jdXJyZW50Tm9kZS0+aXNUZXh0Tm9kZSgpIHx8IGVudGVyVGV4dCgpKSB7Ci0gICAg
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICBzdGF0aWNfY2FzdDxUZXh0Kj4obV9j
dXJyZW50Tm9kZSktPmFwcGVuZERhdGEobV9zdHJlYW0udGV4dCgpLCBlYyk7Ci0gICAgfQorICAg
IGlmICghbV9jdXJyZW50Tm9kZS0+aXNUZXh0Tm9kZSgpKQorICAgICAgICBlbnRlclRleHQoKTsK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBzdGF0aWNfY2FzdDxUZXh0Kj4obV9jdXJy
ZW50Tm9kZSktPmFwcGVuZERhdGEobV9zdHJlYW0udGV4dCgpLCBlYyk7CiB9CiAKIHZvaWQgWE1M
RG9jdW1lbnRQYXJzZXI6OnBhcnNlUHJvY2Vzc2luZ0luc3RydWN0aW9uKCkKQEAgLTYxOSw4ICs2
MTYsNyBAQCB2b2lkIFhNTERvY3VtZW50UGFyc2VyOjpwYXJzZVByb2Nlc3NpbmdJbnN0cnVjdGlv
bigpCiAKICAgICBwaS0+c2V0Q3JlYXRlZEJ5UGFyc2VyKHRydWUpOwogCi0gICAgaWYgKCFtX2N1
cnJlbnROb2RlLT5sZWdhY3lQYXJzZXJBZGRDaGlsZChwaS5nZXQoKSkpCi0gICAgICAgIHJldHVy
bjsKKyAgICBtX2N1cnJlbnROb2RlLT5wYXJzZXJBZGRDaGlsZChwaS5nZXQoKSk7CiAgICAgaWYg
KG1fdmlldyAmJiAhcGktPmF0dGFjaGVkKCkpCiAgICAgICAgIHBpLT5hdHRhY2goKTsKIApAQCAt
NjM4LDggKzYzNCw4IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlQ2RhdGEoKQogICAg
IGV4aXRUZXh0KCk7CiAKICAgICBSZWZQdHI8Tm9kZT4gbmV3Tm9kZSA9IENEQVRBU2VjdGlvbjo6
Y3JlYXRlKGRvY3VtZW50KCksIG1fc3RyZWFtLnRleHQoKSk7Ci0gICAgaWYgKCFtX2N1cnJlbnRO
b2RlLT5sZWdhY3lQYXJzZXJBZGRDaGlsZChuZXdOb2RlLmdldCgpKSkKLSAgICAgICAgcmV0dXJu
OworCisgICAgbV9jdXJyZW50Tm9kZS0+cGFyc2VyQWRkQ2hpbGQobmV3Tm9kZS5nZXQoKSk7CiAg
ICAgaWYgKG1fdmlldyAmJiAhbmV3Tm9kZS0+YXR0YWNoZWQoKSkKICAgICAgICAgbmV3Tm9kZS0+
YXR0YWNoKCk7CiB9CkBAIC02NDksNyArNjQ1LDggQEAgdm9pZCBYTUxEb2N1bWVudFBhcnNlcjo6
cGFyc2VDb21tZW50KCkKICAgICBleGl0VGV4dCgpOwogCiAgICAgUmVmUHRyPE5vZGU+IG5ld05v
ZGUgPSBDb21tZW50OjpjcmVhdGUoZG9jdW1lbnQoKSwgbV9zdHJlYW0udGV4dCgpKTsKLSAgICBt
X2N1cnJlbnROb2RlLT5sZWdhY3lQYXJzZXJBZGRDaGlsZChuZXdOb2RlLmdldCgpKTsKKworICAg
IG1fY3VycmVudE5vZGUtPnBhcnNlckFkZENoaWxkKG5ld05vZGUuZ2V0KCkpOwogICAgIGlmICht
X3ZpZXcgJiYgIW5ld05vZGUtPmF0dGFjaGVkKCkpCiAgICAgICAgIG5ld05vZGUtPmF0dGFjaCgp
OwogfQpAQCAtNzA4LDcgKzcwNSw3IEBAIHZvaWQgWE1MRG9jdW1lbnRQYXJzZXI6OnBhcnNlRHRk
KCkKICAgICAgICAgaGFuZGxlRXJyb3IoZmF0YWwsICJJbnZhbGlkIERURCBQdWJsaWMgSUQiLCBs
aW5lTnVtYmVyKCksIGNvbHVtbk51bWJlcigpKTsKICNlbmRpZgogICAgIGlmICghbV9wYXJzaW5n
RnJhZ21lbnQpCi0gICAgICAgIGRvY3VtZW50KCktPmxlZ2FjeVBhcnNlckFkZENoaWxkKERvY3Vt
ZW50VHlwZTo6Y3JlYXRlKGRvY3VtZW50KCksIG5hbWUsIHB1YmxpY0lkLCBzeXN0ZW1JZCkpOwor
ICAgICAgICBkb2N1bWVudCgpLT5wYXJzZXJBZGRDaGlsZChEb2N1bWVudFR5cGU6OmNyZWF0ZShk
b2N1bWVudCgpLCBuYW1lLCBwdWJsaWNJZCwgc3lzdGVtSWQpKTsKIAogfQogfQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZEVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hU
TUxEYXRhR3JpZEVsZW1lbnQuY3BwCmluZGV4IDgyZWRmOGYyMzAzYWQ2NTcwMjJmZjRlMjhiM2Zl
NzhiOTNmMzUwZDguLmQ5ZmZhMjcxNjY1ZWYwYmQ0MjBhZThjYzY5NmRjMTRmMWYzODFhM2UgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRFbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTERhdGFHcmlkRWxlbWVudC5jcHAKQEAgLTU1LDEzICs1NSw2IEBAIEhUTUxE
YXRhR3JpZEVsZW1lbnQ6On5IVE1MRGF0YUdyaWRFbGVtZW50KCkKICAgICBtX2NvbHVtbnMtPmNs
ZWFyRGF0YUdyaWQoKTsKIH0KIAotYm9vbCBIVE1MRGF0YUdyaWRFbGVtZW50OjpjaGVja0RURChj
b25zdCBOb2RlKiBuZXdDaGlsZCkKLXsKLSAgICBpZiAobmV3Q2hpbGQtPmlzVGV4dE5vZGUoKSkK
LSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFRleHQqPihuZXdDaGlsZCktPmNvbnRh
aW5zT25seVdoaXRlc3BhY2UoKTsKLSAgICByZXR1cm4gbmV3Q2hpbGQtPmhhc1RhZ05hbWUoZGNv
bFRhZykgfHwgbmV3Q2hpbGQtPmhhc1RhZ05hbWUoZHJvd1RhZyk7Ci19Ci0KIFJlbmRlck9iamVj
dCogSFRNTERhdGFHcmlkRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqIGFyZW5h
LCBSZW5kZXJTdHlsZSopCiB7CiAgICAgcmV0dXJuIG5ldyAoYXJlbmEpIFJlbmRlckRhdGFHcmlk
KHRoaXMpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZEVsZW1lbnQuaCBi
L1dlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRFbGVtZW50LmgKaW5kZXggZDFlOTdjZTU0YWZhY2Zm
ODA5YTgwN2M0ODkwN2E2ZmJlMzQ3NDZkMC4uYzU5NDYyM2UyMzVjZTVkYjc4ODQyZmU2ZmE1ZjFm
MmZhMmMxMTJkZSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZEVsZW1lbnQu
aAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkRWxlbWVudC5oCkBAIC01Niw4ICs1Niw2
IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgSFRNTERhdGFHcmlkRWxlbWVudChjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChjb25z
dCBOb2RlKik7Ci0KICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCiAgICAgUmVmUHRyPERhdGFHcmlkRGF0YVNvdXJj
ZT4gbV9kYXRhU291cmNlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZFJv
d0VsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3JpZFJvd0VsZW1lbnQuY3BwCmlu
ZGV4IDhlMDhjN2MwZWVjOTY0NTZhNjQwZTdhMmI2ZDQ3MWU2YWE5ZGUwMTEuLjc0Yzg4YmE1MzJi
NjI5OTgwNGM0MmJiMzIwODc5MjcwYmQxOGM4OGQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9I
VE1MRGF0YUdyaWRSb3dFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlk
Um93RWxlbWVudC5jcHAKQEAgLTQ1LDEzICs0NSw2IEBAIFBhc3NSZWZQdHI8SFRNTERhdGFHcmlk
Um93RWxlbWVudD4gSFRNTERhdGFHcmlkUm93RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MRGF0YUdyaWRSb3dFbGVtZW50KG5hbWUsIGRv
Y3VtZW50KSk7CiB9CiAKLWJvb2wgSFRNTERhdGFHcmlkUm93RWxlbWVudDo6Y2hlY2tEVEQoY29u
c3QgTm9kZSogbmV3Q2hpbGQpCi17Ci0gICAgaWYgKG5ld0NoaWxkLT5pc1RleHROb2RlKCkpCi0g
ICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUZXh0Kj4obmV3Q2hpbGQpLT5jb250YWlu
c09ubHlXaGl0ZXNwYWNlKCk7Ci0gICAgcmV0dXJuIG5ld0NoaWxkLT5oYXNUYWdOYW1lKGRyb3dU
YWcpIHx8IG5ld0NoaWxkLT5oYXNUYWdOYW1lKGRjZWxsVGFnKTsKLX0KLQogYm9vbCBIVE1MRGF0
YUdyaWRSb3dFbGVtZW50OjpzZWxlY3RlZCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGhhc0F0dHJp
YnV0ZShzZWxlY3RlZEF0dHIpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxEYXRhR3Jp
ZFJvd0VsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUdyaWRSb3dFbGVtZW50LmgKaW5k
ZXggYTdmNDRiNjQ1NGQwM2JjYzg5OTlkMDA4MGM4ZDJmZTAyYzJmZmY0NC4uM2VlNWJjNmY1ZDIy
NmY0YzgxZDVhMWY3NDM0NWE4MzQ2YmIyM2YxZCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxEYXRhR3JpZFJvd0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTERhdGFHcmlkUm93
RWxlbWVudC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICBIVE1M
RGF0YUdyaWRSb3dFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0g
ICAgdmlydHVhbCBib29sIGNoZWNrRFREKGNvbnN0IE5vZGUqKTsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50
LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmNwcAppbmRleCAzNDA0MzQ4
NmYzZWE4NGQ5MjU4MzZmMGI3MTc1NWU5MTE3MjVjNWEzLi5iNzM2MDZkMmZjODcwODZiNzU5M2Y4
NDQzZDA2N2IxNzFmNTMzZjU3IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0
RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuY3BwCkBA
IC00NywxMSArNDcsNiBAQCBQYXNzUmVmUHRyPEhUTUxEYXRhTGlzdEVsZW1lbnQ+IEhUTUxEYXRh
TGlzdEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9w
dFJlZihuZXcgSFRNTERhdGFMaXN0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1i
b29sIEhUTUxEYXRhTGlzdEVsZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKQot
ewotICAgIHJldHVybiBuZXdDaGlsZC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6Om9wdGlvblRhZykg
fHwgSFRNTEVsZW1lbnQ6OmluSW5saW5lVGFnTGlzdChuZXdDaGlsZCk7Ci19Ci0KIFBhc3NSZWZQ
dHI8SFRNTENvbGxlY3Rpb24+IEhUTUxEYXRhTGlzdEVsZW1lbnQ6Om9wdGlvbnMoKQogewogICAg
IHJldHVybiBIVE1MQ29sbGVjdGlvbjo6Y3JlYXRlKHRoaXMsIERhdGFMaXN0T3B0aW9ucyk7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oIGIvV2ViQ29yZS9o
dG1sL0hUTUxEYXRhTGlzdEVsZW1lbnQuaAppbmRleCAzNTg3MjM0OWUzZDUxNjkwYTE5ZWVmYzE2
NzEyMzM1NThhNzIyODRkLi45N2U2MDhmNWE0ZDEyNzc5MzMzMDgyMGEyMGI4NTRhMmJjMWJkM2M5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERhdGFMaXN0RWxlbWVudC5oCisrKyBiL1dl
YkNvcmUvaHRtbC9IVE1MRGF0YUxpc3RFbGVtZW50LmgKQEAgLTQ3LDggKzQ3LDYgQEAgcHVibGlj
OgogCiBwcml2YXRlOgogICAgIEhUTUxEYXRhTGlzdEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50Kik7Ci0KLSAgICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSop
OwogfTsKIAogfSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRt
bC9IVE1MRG9jdW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKaW5kZXgg
OTg2YzUxZGNiZWU5N2Q1NDQ3MmI4NmY4NTUwMWRhZTI4MTBmYjllNS4uY2QyNjhhZTdhMGZmZWZj
ZWE2MGU0OThhMWUwNTMwYmE3YzJkNGFjZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxE
b2N1bWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5jcHAKQEAgLTI5Niwx
MSArMjk2LDYgQEAgUGFzc1JlZlB0cjxEb2N1bWVudFBhcnNlcj4gSFRNTERvY3VtZW50OjpjcmVh
dGVQYXJzZXIoKQogLy8gbm90IHBhcnQgb2YgdGhlIERPTQogLy8gLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
IAotYm9vbCBIVE1MRG9jdW1lbnQ6OmNoaWxkQWxsb3dlZChOb2RlICpuZXdDaGlsZCkKLXsKLSAg
ICByZXR1cm4gbmV3Q2hpbGQtPmhhc1RhZ05hbWUoaHRtbFRhZykgfHwgbmV3Q2hpbGQtPmlzQ29t
bWVudE5vZGUoKSB8fCAobmV3Q2hpbGQtPm5vZGVUeXBlKCkgPT0gRE9DVU1FTlRfVFlQRV9OT0RF
ICYmICFkb2N0eXBlKCkpOwotfQotCiBQYXNzUmVmUHRyPEVsZW1lbnQ+IEhUTUxEb2N1bWVudDo6
Y3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewogICAgIGlmICghaXNWYWxpZE5hbWUobmFtZSkpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
aHRtbC9IVE1MRG9jdW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MRG9jdW1lbnQuaAppbmRleCBm
OTc0NGM3NDAxMjcyNzYyM2E4OTdkYTdiNTk5NDgyNDdhMDhkMDM1Li5iMTBhNGVkZDFiMDgwYWNh
ODY4YThiZDM5NDNkMjkxZGVhNDA2YTQyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTERv
Y3VtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxEb2N1bWVudC5oCkBAIC04Myw4ICs4Myw2
IEBAIHByb3RlY3RlZDoKICAgICBIVE1MRG9jdW1lbnQoRnJhbWUqLCBjb25zdCBLVVJMJik7CiAK
IHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIGNoaWxkQWxsb3dlZChOb2RlKik7Ci0KICAgICB2
aXJ0dWFsIFBhc3NSZWZQdHI8RWxlbWVudD4gY3JlYXRlRWxlbWVudChjb25zdCBBdG9taWNTdHJp
bmcmIHRhZ05hbWUsIEV4Y2VwdGlvbkNvZGUmKTsKIAogICAgIHZpcnR1YWwgYm9vbCBpc0ZyYW1l
U2V0KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwIGIv
V2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmNwcAppbmRleCAzZTFjZWFhOTM0NDY2MWY2NWExNWZi
MjMzZGY0ODc1NjA2ZWFkZDFjLi5lMDU1YTNlZGJjYzI1NzNhYzVhYjY2ZTVlOThiNGQzNDVhZTY5
MGNmIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuY3BwCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudC5jcHAKQEAgLTc1MywzNCArNzUzLDkgQEAgUGFzc1JlZlB0cjxI
VE1MQ29sbGVjdGlvbj4gSFRNTEVsZW1lbnQ6OmNoaWxkcmVuKCkKICAgICByZXR1cm4gSFRNTENv
bGxlY3Rpb246OmNyZWF0ZSh0aGlzLCBOb2RlQ2hpbGRyZW4pOwogfQogCi0vLyBET00gU2VjdGlv
biAxLjEuMQotYm9vbCBIVE1MRWxlbWVudDo6Y2hpbGRBbGxvd2VkKE5vZGUgKm5ld0NoaWxkKQot
ewotICAgIGlmICghRWxlbWVudDo6Y2hpbGRBbGxvd2VkKG5ld0NoaWxkKSkKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotCi0gICAgLy8gRm9yIFhNTCBkb2N1bWVudHMsIHdlIGFyZSBub24tdmFsaWRh
dGluZyBhbmQgZG8gbm90IGNoZWNrIGFnYWluc3QgYSBEVEQsIGV2ZW4gZm9yIEhUTUwgZWxlbWVu
dHMuCi0gICAgaWYgKCFkb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKQotICAgICAgICByZXR1
cm4gdHJ1ZTsKLQotICAgIC8vIEZ1dHVyZS1wcm9vZiBmb3IgWE1MIGNvbnRlbnQgaW5zaWRlIEhU
TUwgZG9jdW1lbnRzICh3ZSBtYXkgYWxsb3cgdGhpcyBzb21lIGRheSkuCi0gICAgaWYgKG5ld0No
aWxkLT5pc0VsZW1lbnROb2RlKCkgJiYgIW5ld0NoaWxkLT5pc0hUTUxFbGVtZW50KCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gRWxlbWVudHMgd2l0aCBmb3JiaWRkZW4gdGFnIHN0
YXR1cyBjYW4gbmV2ZXIgaGF2ZSBjaGlsZHJlbgotICAgIGlmIChlbmRUYWdSZXF1aXJlbWVudCgp
ID09IFRhZ1N0YXR1c0ZvcmJpZGRlbikKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgLy8g
Q29tbWVudCBub2RlcyBhcmUgYWx3YXlzIGFsbG93ZWQuCi0gICAgaWYgKG5ld0NoaWxkLT5pc0Nv
bW1lbnROb2RlKCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gTm93IGNhbGwgY2hl
Y2tEVEQuCi0gICAgcmV0dXJuIGNoZWNrRFREKG5ld0NoaWxkKTsKLX0KLQogLy8gRFREIFN0dWZm
CiAvLyBUaGlzIHVuZm9ydHVuYXRlIGZ1bmN0aW9uIGlzIG9ubHkgbmVlZGVkIHdoZW4gY2hlY2tp
bmcgYWdhaW5zdCB0aGUgRFRELiAgT3RoZXIgbGFuZ3VhZ2VzIChsaWtlIFNWRykgd29uJ3QgbmVl
ZCB0aGlzLgorLy8gRklYTUU6IFJlbW92ZSBpZiBvbmx5IHVzZWQgYnkgTGVnYWN5SFRNTFRyZWVC
dWlsZGVyLgogYm9vbCBIVE1MRWxlbWVudDo6aXNSZWNvZ25pemVkVGFnTmFtZShjb25zdCBRdWFs
aWZpZWROYW1lJiB0YWdOYW1lKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxB
dG9taWNTdHJpbmdJbXBsKj4sIHRhZ0xpc3QsICgpKTsKQEAgLTk3OSwxMyArOTU0LDYgQEAgYm9v
bCBIVE1MRWxlbWVudDo6aW5CbG9ja1RhZ0xpc3QoY29uc3QgTm9kZSogbmV3Q2hpbGQpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEhUTUxFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2Rl
KiBuZXdDaGlsZCkKLXsKLSAgICBpZiAoaGFzTG9jYWxOYW1lKGFkZHJlc3NUYWcpICYmIG5ld0No
aWxkLT5oYXNUYWdOYW1lKHBUYWcpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4g
aW5FaXRoZXJUYWdMaXN0KG5ld0NoaWxkKTsKLX0KLQogYm9vbCBIVE1MRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChSZW5kZXJTdHlsZSAqc3R5bGUpCiB7CiAjaWYgIUVOQUJMRShYSFRNTE1QKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRN
TEVsZW1lbnQuaAppbmRleCBhNzlkYTMzMjM5MTVkNjhjYmJjMmU1ZDk3MjU2NGMxYmNjMTJmMDkx
Li5lMWI1NmEwYTJiYzg0NzU4OTY3NjI4YmQxMWIxZjhhMDRjM2JmNmQxIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEVsZW1lbnQu
aApAQCAtODksMTEgKzg5LDYgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBtYXBUb0Vu
dHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYg
cmVzdWx0KSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0
cmlidXRlKik7CiAKLSAgICB2aXJ0dWFsIGJvb2wgY2hpbGRBbGxvd2VkKE5vZGUqIG5ld0NoaWxk
KTsgLy8gRXJyb3ItY2hlY2tpbmcgZHVyaW5nIHBhcnNpbmcgdGhhdCBjaGVja3MgdGhlIERURAot
Ci0gICAgLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGNoZWNrIHRoZSBEVEQgZm9yIGEgZ2l2ZW4gY2hp
bGQgbm9kZS4KLSAgICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSopOwotCiAgICAg
c3RhdGljIGJvb2wgaW5FaXRoZXJUYWdMaXN0KGNvbnN0IE5vZGUqKTsKICAgICBzdGF0aWMgYm9v
bCBpbklubGluZVRhZ0xpc3QoY29uc3QgTm9kZSopOwogICAgIHN0YXRpYyBib29sIGluQmxvY2tU
YWdMaXN0KGNvbnN0IE5vZGUqKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRT
ZXRFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50LmNwcAppbmRl
eCBhZTBmOGU3ZWM1MmQ4ODM3NDNjNmZlYTE1ZTY5ZDZlNjA1ZTliYTE2Li40YjkwNDEyYmI1OWU4
N2E3ZjgzMjM2ZjNlNzI5ZTZhYzZjM2FjZTdhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1l
bnQuY3BwCkBAIC00NCwxMSArNDQsNiBAQCBQYXNzUmVmUHRyPEhUTUxGaWVsZFNldEVsZW1lbnQ+
IEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgSFRNTEZpZWxkU2V0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwg
Zm9ybSkpOwogfQogCi1ib29sIEhUTUxGaWVsZFNldEVsZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5v
ZGUqIG5ld0NoaWxkKQotewotICAgIHJldHVybiBuZXdDaGlsZC0+aGFzVGFnTmFtZShsZWdlbmRU
YWcpIHx8IEhUTUxFbGVtZW50OjpjaGVja0RURChuZXdDaGlsZCk7Ci19Ci0KIGJvb2wgSFRNTEZp
ZWxkU2V0RWxlbWVudDo6c3VwcG9ydHNGb2N1cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIEhUTUxF
bGVtZW50OjpzdXBwb3J0c0ZvY3VzKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZp
ZWxkU2V0RWxlbWVudC5oIGIvV2ViQ29yZS9odG1sL0hUTUxGaWVsZFNldEVsZW1lbnQuaAppbmRl
eCBiM2U1ODlhZGI2NzhjMWQyMzk4YjNkMGVlZDgwOTgyMTg5MTU1YjZmLi5kYjk5YTg5YzY4NTc5
OTlhZWZmYjdkOTA3ZGIwNDg5ZGFlZWZkNzllIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TEZpZWxkU2V0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MRmllbGRTZXRFbGVtZW50
LmgKQEAgLTM1LDggKzM1LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MRmllbGRTZXRF
bGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCosIEhUTUxGb3JtRWxlbWVudCop
OwogCi0gICAgdmlydHVhbCBib29sIGNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKTsKLQog
ICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKICAg
ICB2aXJ0dWFsIGNvbnN0IEF0b21pY1N0cmluZyYgZm9ybUNvbnRyb2xUeXBlKCkgY29uc3Q7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5jcHAKaW5kZXggYWVlNmUxMzRiMWY1ZDU5NWUwNjlm
ZDFkMDk4MDg5YmQyYzA1MmM2NC4uZTFjNWZkNDdlNjVlYTFiMzA2Mjc0YmUyZGVmODZiNGU1OGI0
MWQyNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVTZXRFbGVtZW50LmNwcApAQCAtNTksMTUgKzU5LDYg
QEAgUGFzc1JlZlB0cjxIVE1MRnJhbWVTZXRFbGVtZW50PiBIVE1MRnJhbWVTZXRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxG
cmFtZVNldEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MRnJhbWVT
ZXRFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKLXsKLSAgICAvLyBGSVhN
RTogT2xkIGNvZGUgaGFkIGFkamFjZW50IGRvdWJsZSByZXR1cm5zIGFuZCBzZWVtZWQgdG8gd2Fu
dCB0byBkbyBzb21ldGhpbmcgd2l0aCBOT0ZSQU1FUyAoYnV0IGRpZG4ndCkuCi0gICAgLy8gV2hh
dCBpcyB0aGUgY29ycmVjdCBiZWhhdmlvcj8KLSAgICBpZiAobmV3Q2hpbGQtPmlzVGV4dE5vZGUo
KSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFRleHQqPihuZXdDaGlsZCktPmNv
bnRhaW5zT25seVdoaXRlc3BhY2UoKTsKLSAgICByZXR1cm4gbmV3Q2hpbGQtPmhhc1RhZ05hbWUo
ZnJhbWVzZXRUYWcpIHx8IG5ld0NoaWxkLT5oYXNUYWdOYW1lKGZyYW1lVGFnKTsKLX0KLQogYm9v
bCBIVE1MRnJhbWVTZXRFbGVtZW50OjptYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lLCBNYXBwZWRBdHRyaWJ1dGVFbnRyeSYgcmVzdWx0KSBjb25zdAogewogICAgIGlmIChh
dHRyTmFtZSA9PSBib3JkZXJjb2xvckF0dHIpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9I
VE1MRnJhbWVTZXRFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTEZyYW1lU2V0RWxlbWVudC5o
CmluZGV4IGZhNjNmZDg0ODQ5ZjY5N2Y1ODRmMzAzZjIxOGE1Mzg5ZTczMDFjMWMuLmM0ODQyOGYw
ZDRkNjQwYzI4YjFkNzNmYmI5ZDJiZWFiMjUyNzJmMTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MRnJhbWVTZXRFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxGcmFtZVNldEVs
ZW1lbnQuaApAQCAtNjgsNyArNjgsNiBAQCBwcml2YXRlOgogICAgIEhUTUxGcmFtZVNldEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIEhUTUxU
YWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdTdGF0dXNSZXF1
aXJlZDsgfQotICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCk7
CiAKICAgICB2aXJ0dWFsIGJvb2wgbWFwVG9FbnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkmIHJlc3VsdCkgY29uc3Q7CiAgICAgdmlydHVhbCB2
b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxIZWFkRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50
LmNwcAppbmRleCBjNTdjYzJmYmQ3NGJkYWEwZjg1NjMyMjU3ZWE2ZDcxZmNiZGUwN2FhLi44MjE4
MzExYmU4OGViNTdjOTQwOTg4ZGRmZTliM2RjZTUwZmM3NDZiIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTEhlYWRFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVt
ZW50LmNwcApAQCAtNDcsMjEgKzQ3LDQgQEAgUGFzc1JlZlB0cjxIVE1MSGVhZEVsZW1lbnQ+IEhU
TUxIZWFkRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUKICAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxIZWFkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwog
fQogCi1ib29sIEhUTUxIZWFkRWxlbWVudDo6Y2hpbGRBbGxvd2VkKE5vZGUqIG5ld0NoaWxkKQot
ewotICAgIC8vIERvIG5vdCBhbGxvdyBub24td2hpdGVzcGFjZSB0ZXh0IG5vZGVzIGluIHRoZSBo
ZWFkCi0gICAgaWYgKG5ld0NoaWxkLT5pc1RleHROb2RlKCkpCi0gICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxUZXh0Kj4obmV3Q2hpbGQpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7Ci0gICAg
Ci0gICAgcmV0dXJuIEhUTUxFbGVtZW50OjpjaGlsZEFsbG93ZWQobmV3Q2hpbGQpOwotfQotCi1i
b29sIEhUTUxIZWFkRWxlbWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCi17Ci0g
ICAgcmV0dXJuIG5ld0NoaWxkLT5oYXNUYWdOYW1lKG5vc2NyaXB0VGFnKSB8fCBuZXdDaGlsZC0+
aGFzVGFnTmFtZSh0aXRsZVRhZykgfHwgbmV3Q2hpbGQtPmhhc1RhZ05hbWUoaXNpbmRleFRhZykg
fHwKLSAgICAgICAgICAgbmV3Q2hpbGQtPmhhc1RhZ05hbWUoYmFzZVRhZykgfHwgbmV3Q2hpbGQt
Pmhhc1RhZ05hbWUoc2NyaXB0VGFnKSB8fAotICAgICAgICAgICBuZXdDaGlsZC0+aGFzVGFnTmFt
ZShzdHlsZVRhZykgfHwgbmV3Q2hpbGQtPmhhc1RhZ05hbWUobWV0YVRhZykgfHwKLSAgICAgICAg
ICAgbmV3Q2hpbGQtPmhhc1RhZ05hbWUobGlua1RhZykgfHwgbmV3Q2hpbGQtPmlzVGV4dE5vZGUo
KTsKLX0KLQogfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5oIGIv
V2ViQ29yZS9odG1sL0hUTUxIZWFkRWxlbWVudC5oCmluZGV4IGE0MTc3ZDM3NjA5Mzg3YjQ4NDIz
ZjI5Zjk0MmM5M2U2M2MxNTU2ZDEuLmU4ZjM0OTJlMzEzNDFmNzIyNzkzZmU4YzhkMDgzMTEyMzIy
NWM1NzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MSGVhZEVsZW1lbnQuaAorKysgYi9X
ZWJDb3JlL2h0bWwvSFRNTEhlYWRFbGVtZW50LmgKQEAgLTM3LDggKzM3LDYgQEAgcHJpdmF0ZToK
ICAgICBIVE1MSGVhZEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CiAK
ICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBUYWdTdGF0dXNPcHRpb25hbDsgfQotICAgIHZpcnR1YWwgYm9vbCBjaGlsZEFsbG93ZWQo
Tm9kZSogbmV3Q2hpbGQpOwotICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChjb25zdCBOb2RlKiBu
ZXdDaGlsZCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1s
L0hUTUxIZWFkaW5nRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50
LmNwcAppbmRleCBlMmEwZjczOTBmZjFjZjAxODk3NWJhZWYzMjJmM2RkMWRhMTNkODcxLi40N2E5
ZWEzNzhmMTNkOGEyNjlmNDNlY2M2NDRhNWNiZmQzNThkZTI0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2h0bWwvSFRNTEhlYWRpbmdFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEhlYWRp
bmdFbGVtZW50LmNwcApAQCAtMjMsMTIgKzIzLDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJIVE1MSGVhZGluZ0VsZW1lbnQuaCIKIAotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgot
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7Ci0KIGlu
bGluZSBIVE1MSGVhZGluZ0VsZW1lbnQ6OkhUTUxIZWFkaW5nRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBIVE1MRWxlbWVudCh0
YWdOYW1lLCBkb2N1bWVudCkKIHsKQEAgLTM5LDE0ICszNSw0IEBAIFBhc3NSZWZQdHI8SFRNTEhl
YWRpbmdFbGVtZW50PiBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiB0CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MSGVhZGluZ0VsZW1lbnQodGFnTmFt
ZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MSGVhZGluZ0VsZW1lbnQ6OmNoZWNrRFREKGNv
bnN0IE5vZGUqIG5ld0NoaWxkKQotewotICAgIGlmIChuZXdDaGlsZC0+aGFzVGFnTmFtZShoMVRh
ZykgfHwgbmV3Q2hpbGQtPmhhc1RhZ05hbWUoaDJUYWcpIHx8Ci0gICAgICAgIG5ld0NoaWxkLT5o
YXNUYWdOYW1lKGgzVGFnKSB8fCBuZXdDaGlsZC0+aGFzVGFnTmFtZShoNFRhZykgfHwKLSAgICAg
ICAgbmV3Q2hpbGQtPmhhc1RhZ05hbWUoaDVUYWcpIHx8IG5ld0NoaWxkLT5oYXNUYWdOYW1lKGg2
VGFnKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIGluRWl0aGVyVGFnTGlz
dChuZXdDaGlsZCk7Ci19Ci0KIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGlu
Z0VsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MSGVhZGluZ0VsZW1lbnQuaAppbmRleCA5YzRi
NWI5N2QxNTI5ZjI0MDYyOGU0OTMxNWY4ZjdjODg3YzU0MjliLi44ZDgzOTA1MzFhMjc1ZTNlODdh
NjdiYzU5MzkwZTQ2ZTIyMjdlZDI4IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEhlYWRp
bmdFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxIZWFkaW5nRWxlbWVudC5oCkBAIC0z
NSw3ICszNSw2IEBAIHByaXZhdGU6CiAgICAgSFRNTEhlYWRpbmdFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRh
Z1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KLSAgICB2
aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxIdG1sRWxlbWVu
dC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmNwcAppbmRleCA5M2VkZjZjZjY1
MWE2MGZhOWNkNjgwYjQ4MDdhNjQ4NTAwMjQ4ODYxLi42MjA1ZDEwMTM0ODIwNGUxNzY2YTU0MmQz
NzIxZjFjYWZhMDI0NTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50
LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmNwcApAQCAtNTAsMTIgKzUw
LDYgQEAgUGFzc1JlZlB0cjxIVE1MSHRtbEVsZW1lbnQ+IEhUTUxIdG1sRWxlbWVudDo6Y3JlYXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhU
TUxIdG1sRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxIdG1sRWxl
bWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCi17Ci0gICAgcmV0dXJuIG5ld0No
aWxkLT5oYXNUYWdOYW1lKGhlYWRUYWcpIHx8IG5ld0NoaWxkLT5oYXNUYWdOYW1lKGJvZHlUYWcp
IHx8Ci0gICAgICAgICAgIG5ld0NoaWxkLT5oYXNUYWdOYW1lKGZyYW1lc2V0VGFnKSB8fCBuZXdD
aGlsZC0+aGFzVGFnTmFtZShub2ZyYW1lc1RhZyk7Ci19Ci0KICNpZiBFTkFCTEUoT0ZGTElORV9X
RUJfQVBQTElDQVRJT05TKQogdm9pZCBIVE1MSHRtbEVsZW1lbnQ6Omluc2VydGVkSW50b0RvY3Vt
ZW50KCkKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuaCBiL1dl
YkNvcmUvaHRtbC9IVE1MSHRtbEVsZW1lbnQuaAppbmRleCA3ZWZiOTYzZTA3ZWJjMWUwNDM5ZTNj
ZjkyNjBhMDA4ZjkxNzdjZTJhLi41YTc0YjNkYWNhYWUzZmZhZjdjNzkyZDNjMGJkMzkwZTBlYTg4
OGRjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTEh0bWxFbGVtZW50LmgKKysrIGIvV2Vi
Q29yZS9odG1sL0hUTUxIdG1sRWxlbWVudC5oCkBAIC0zNyw3ICszNyw2IEBAIHByaXZhdGU6CiAg
ICAgSFRNTEh0bWxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAg
ICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1
cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3Qg
Tm9kZSogbmV3Q2hpbGQpOwogCiAjaWYgRU5BQkxFKE9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUykK
ICAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTEtleWdl
bkVsZW1lbnQuY3BwCmluZGV4IDUxODVmNTFhOWE1NzUyYmQxM2Q1YTcyNzg5NTgxYjE1NGE2MTcx
MjcuLjg4MWEwYTgyMTM3ZGUwNWFiZGU2MmJkMjI5ZDQ0YTcwZmVjYTQxZDQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5jcHAKKysrIGIvV2ViQ29yZS9odG1sL0hU
TUxLZXlnZW5FbGVtZW50LmNwcApAQCAtNDUsMTMgKzQ1LDE0IEBAIGlubGluZSBIVE1MS2V5Z2Vu
RWxlbWVudDo6SFRNTEtleWdlbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05hbWUoa2V5Z2VuVGFnKSk7CiAKKyAgICAvLyBG
SVhNRTogVGhpcyBtYXJrdXAgc2hvdWxkIGdvIGluIHRoZSBzaGFkb3cgdHJlZS4KICAgICAvLyBB
ZGQgb25lIG9wdGlvbiBlbGVtZW50IGZvciBlYWNoIGtleSBzaXplLgogICAgIFZlY3RvcjxTdHJp
bmc+IGtleXM7CiAgICAgZ2V0U3VwcG9ydGVkS2V5U2l6ZXMoa2V5cyk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBrZXlzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIFJlZlB0cjxIVE1MT3B0
aW9uRWxlbWVudD4gb3B0aW9uID0gSFRNTE9wdGlvbkVsZW1lbnQ6OmNyZWF0ZShkb2N1bWVudCwg
dGhpcy0+Zm9ybSgpKTsKLSAgICAgICAgbGVnYWN5UGFyc2VyQWRkQ2hpbGQob3B0aW9uKTsKLSAg
ICAgICAgb3B0aW9uLT5sZWdhY3lQYXJzZXJBZGRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQs
IGtleXNbaV0pKTsKKyAgICAgICAgcGFyc2VyQWRkQ2hpbGQob3B0aW9uKTsKKyAgICAgICAgb3B0
aW9uLT5wYXJzZXJBZGRDaGlsZChUZXh0OjpjcmVhdGUoZG9jdW1lbnQsIGtleXNbaV0pKTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAgYi9X
ZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuY3BwCmluZGV4IGViYTIzY2FlOTk0OWI5YTZiZWI4
MjE4NzRlNjhmNTkwOTQ3OTAzOTMuLjg3M2E5YWI1ZGE4NDk3ZWVlOWJjZmY2YTEwNzZkZjE5MzI3
OTFmNzAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MTWFwRWxlbWVudC5jcHAKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxNYXBFbGVtZW50LmNwcApAQCAtNTgsMTIgKzU4LDYgQEAgSFRNTE1h
cEVsZW1lbnQ6On5IVE1MTWFwRWxlbWVudCgpCiB7CiB9CiAKLWJvb2wgSFRNTE1hcEVsZW1lbnQ6
OmNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKQotewotICAgIHJldHVybiBpbkVpdGhlclRh
Z0xpc3QobmV3Q2hpbGQpIHx8IG5ld0NoaWxkLT5oYXNUYWdOYW1lKGFyZWFUYWcpIC8vIEhUTUwg
NCBEVEQKLSAgICAgICAgfHwgbmV3Q2hpbGQtPmhhc1RhZ05hbWUoc2NyaXB0VGFnKTsgLy8gZXh0
ZW5zaW9ucwotfQotCiBib29sIEhUTUxNYXBFbGVtZW50OjptYXBNb3VzZUV2ZW50KGludCB4LCBp
bnQgeSwgY29uc3QgSW50U2l6ZSYgc2l6ZSwgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KQogewogICAg
IEhUTUxBcmVhRWxlbWVudCogZGVmYXVsdEFyZWEgPSAwOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxNYXBFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuaAppbmRl
eCA0NGVjNGFhZjIwOTQ3NDM3YmMyZjhkOWY4M2EzNzYwYTA0NTI0MTA1Li44ZmYzOTJmYzRiNGQ3
MDQ2MmY3Njc0OGRkNjNkZjI5NjRkZTI3ODcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRN
TE1hcEVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTE1hcEVsZW1lbnQuaApAQCAtNDgs
NyArNDgsNiBAQCBwcml2YXRlOgogICAgIEhUTUxNYXBFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVp
cmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KLSAgICB2aXJ0dWFs
IGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSopOwogCiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFw
cGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5k
ZXggNTNhODk2ODZlYTYxM2QxMGVlYjkwYmQ1ZDM2MTk1Y2M2Yzc2ZTIxMC4uMmU3ZmZjNTU1ZTEz
ZGEwYjVhZTI1MTM4MjVhMTNhZjc2M2RlODMzMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxNZWRpYUVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNw
cApAQCAtMTYyLDEyICsxNjIsNiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmRpZE1vdmVUb05l
d093bmVyRG9jdW1lbnQoKQogICAgIEhUTUxFbGVtZW50OjpkaWRNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7CiB9CiAKLQotYm9vbCBIVE1MTWVkaWFFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2Rl
KiBuZXdDaGlsZCkKLXsKLSAgICByZXR1cm4gbmV3Q2hpbGQtPmhhc1RhZ05hbWUoc291cmNlVGFn
KSB8fCBIVE1MRWxlbWVudDo6Y2hlY2tEVEQobmV3Q2hpbGQpOwotfQotCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoQXR0cmlidXRlKiBhdHRyLCBib29sIHByZXNlcnZl
RGVjbHMpCiB7CiAgICAgSFRNTEVsZW1lbnQ6OmF0dHJpYnV0ZUNoYW5nZWQoYXR0ciwgcHJlc2Vy
dmVEZWNscyk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oIGIv
V2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAppbmRleCBhNzNhYmJhNTg5ZWEwMTYxMjgx
OGFmMTA1ZGE1YWQ2YzgxZjNkNDI5Li40NzA2MTc4ZmM0MzU5MmNjMjQ3NTE5Mzg4ZTYzMGNkMWM1
NTRmZDJhIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgKQEAgLTE4Myw3ICsxODMsNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHNldERpc3BsYXlNb2RlKERpc3BsYXlNb2RlIG1vZGUp
IHsgbV9kaXNwbGF5TW9kZSA9IG1vZGU7IH0KIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wg
Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpOyAgICAKICAgICB2aXJ0dWFsIHZvaWQgYXR0
cmlidXRlQ2hhbmdlZChBdHRyaWJ1dGUqLCBib29sIHByZXNlcnZlRGVjbHMpOwogICAgIHZpcnR1
YWwgYm9vbCByZW5kZXJlcklzTmVlZGVkKFJlbmRlclN0eWxlKik7CiAgICAgdmlydHVhbCBSZW5k
ZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKZGlm
ZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmNwcCBiL1dlYkNvcmUv
aHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBmMjMyMzQwMmU5NDBkYTljZTQ2NmI5
ZDc0NzdjYjQ4ZmU4MjAzN2U0Li41YmJhMTZmOWQ0YWYzNGQ4ZjFhZGYyODEyMjNjODczMDlhNGI5
ZjZkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE5vU2NyaXB0RWxlbWVudC5jcHAKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuY3BwCkBAIC00MiwxMSArNDIsNiBA
QCBQYXNzUmVmUHRyPEhUTUxOb1NjcmlwdEVsZW1lbnQ+IEhUTUxOb1NjcmlwdEVsZW1lbnQ6OmNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJgogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTE5v
U2NyaXB0RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxOb1Njcmlw
dEVsZW1lbnQ6OmNoZWNrRFREKGNvbnN0IE5vZGUqIG5ld0NoaWxkKQotewotICAgIHJldHVybiBu
ZXdDaGlsZC0+aXNUZXh0Tm9kZSgpIHx8IGluQmxvY2tUYWdMaXN0KG5ld0NoaWxkKTsgCi19Ci0K
IHZvaWQgSFRNTE5vU2NyaXB0RWxlbWVudDo6YXR0YWNoKCkKIHsKICAgICBIVE1MRWxlbWVudDo6
YXR0YWNoKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE5vU2NyaXB0RWxlbWVudC5o
IGIvV2ViQ29yZS9odG1sL0hUTUxOb1NjcmlwdEVsZW1lbnQuaAppbmRleCA4Yjk4MjA1ODgwNTdl
OTFhMDE2NzFhOTA4ZDExMmJmNTg1YmQyZDI0Li45YTNiOTJkMzhiZDVkMDNhZDk3ZGEzN2RkYjRi
MWRmYzZmNzNmNmM2IDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTE5vU2NyaXB0RWxlbWVu
dC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MTm9TY3JpcHRFbGVtZW50LmgKQEAgLTM0LDcgKzM0
LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBIVE1MTm9TY3JpcHRFbGVtZW50KGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgdmlydHVhbCBib29sIGNoZWNrRFREKGNv
bnN0IE5vZGUqKTsKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoKCk7CiAgICAgdmlydHVhbCB2b2lk
IHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdlKTsKICAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRD
cmVhdGVSZW5kZXJlcihOb2RlKikgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRN
TE9wdEdyb3VwRWxlbWVudC5jcHAgYi9XZWJDb3JlL2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5j
cHAKaW5kZXggN2RiMDkyNDgzMzdhNGQ3MzYwYTU4YmI3NTFmMTljMWUwZTcwYjI0ZC4uMDkxZTBm
MjQxODczMmFiYmUwMGRlNTNmNjk5OTNmNDhjMTJkNTBiYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9o
dG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT3B0R3Jv
dXBFbGVtZW50LmNwcApAQCAtODYsMTIgKzg2LDYgQEAgdm9pZCBIVE1MT3B0R3JvdXBFbGVtZW50
OjpyZWNhbGNTZWxlY3RPcHRpb25zKCkKICAgICAgICAgc3RhdGljX2Nhc3Q8SFRNTFNlbGVjdEVs
ZW1lbnQqPihzZWxlY3QpLT5zZXRSZWNhbGNMaXN0SXRlbXMoKTsKIH0KIAotYm9vbCBIVE1MT3B0
R3JvdXBFbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKLXsKLSAgICAvLyBN
YWtlIHN1cmUgdG8ga2VlcCB0aGlzIGluIHN5bmMgd2l0aCA8c2VsZWN0PiAob3RoZXIgdGhhbiBu
b3QgYWxsb3dpbmcgYW4gb3B0Z3JvdXApLgotICAgIHJldHVybiBuZXdDaGlsZC0+aXNUZXh0Tm9k
ZSgpIHx8IG5ld0NoaWxkLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6b3B0aW9uVGFnKSB8fCBuZXdD
aGlsZC0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmhyVGFnKSB8fCBuZXdDaGlsZC0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OnNjcmlwdFRhZyk7Ci19Ci0KIHZvaWQgSFRNTE9wdEdyb3VwRWxlbWVudDo6
YXR0YWNoKCkKIHsKICAgICBpZiAocGFyZW50Tm9kZSgpLT5yZW5kZXJTdHlsZSgpKQpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MT3B0R3JvdXBFbGVtZW50LmgKaW5kZXggMDk1YjlkMjU4ZjVmNGFhMGM0ODIzY2IyODVkN2Ew
MjZlOTRhNTI3NS4uYTU4ZTk1NzZmMDI2MDliZjNlOGFiYWM3MTQxY2FlN2Y4NWM3YWI3NCAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxPcHRHcm91cEVsZW1lbnQuaAorKysgYi9XZWJDb3Jl
L2h0bWwvSFRNTE9wdEdyb3VwRWxlbWVudC5oCkBAIC00Miw3ICs0Miw2IEBAIHB1YmxpYzoKIHBy
aXZhdGU6CiAgICAgSFRNTE9wdEdyb3VwRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChj
b25zdCBOb2RlKik7CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9s
VHlwZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAg
ICAgdmlydHVhbCBib29sIGlzRm9jdXNhYmxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9XZWJDb3Jl
L2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxPcHRpb25FbGVt
ZW50LmNwcAppbmRleCAxOWY0MGJlY2QyZGYwNWNhZWIyY2E5YmNlODU5MmJlM2RjNzQ1OTAwLi4z
YmY1MjJjYTQyNTFjOWM4OWNkZTU4OTJmZDU3MjNlMmMxOTA1YTkwIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2h0bWwvSFRNTE9wdGlvbkVsZW1lbnQuY3BwCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT3B0
aW9uRWxlbWVudC5jcHAKQEAgLTc4LDExICs3OCw2IEBAIFBhc3NSZWZQdHI8SFRNTE9wdGlvbkVs
ZW1lbnQ+IEhUTUxPcHRpb25FbGVtZW50OjpjcmVhdGVGb3JKU0NvbnN0cnVjdG9yKERvY3VtZW50
CiAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZSgpOwogfQogCi1ib29sIEhUTUxPcHRpb25FbGVt
ZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKLXsKLSAgICByZXR1cm4gbmV3Q2hp
bGQtPmlzVGV4dE5vZGUoKSB8fCBuZXdDaGlsZC0+aGFzVGFnTmFtZShzY3JpcHRUYWcpOwotfQot
CiB2b2lkIEhUTUxPcHRpb25FbGVtZW50OjphdHRhY2goKQogewogICAgIGlmIChwYXJlbnROb2Rl
KCktPnJlbmRlclN0eWxlKCkpCmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTE9wdGlvbkVs
ZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCmluZGV4IDU3MTFkMDlm
MGIzZWM1MzUxNDQ4YmU4YzM4NjBmNzk3MTE1NmZhZWIuLmM4YjljMmFhYWQ2ZDRlYTZhMTRhOWJk
N2MzM2ExZTQ0YmI1MWMyYmMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxl
bWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MT3B0aW9uRWxlbWVudC5oCkBAIC02Nyw3ICs2
Nyw2IEBAIHByaXZhdGU6CiAgICAgSFRNTE9wdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIERvY3VtZW50KiwgSFRNTEZvcm1FbGVtZW50KiA9IDApOwogCiAgICAgdmlydHVhbCBIVE1M
VGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzT3B0
aW9uYWw7IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQp
OwogICAgIHZpcnR1YWwgYm9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGlzRm9jdXNhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVk
ZWQoUmVuZGVyU3R5bGUqKSB7IHJldHVybiBmYWxzZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MUGFyYWdyYXBo
RWxlbWVudC5jcHAKaW5kZXggNGFmNWI3N2M5YzY2MWIzMDkyYzA3Yjc4MWM4ZWVjNTdkNDZiZTEy
MS4uMGIzZTgzZjkyMDI1YWM0NDBkMzZhNzBjODgzZjAwNWU2ZDgwNjhlOSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwv
SFRNTFBhcmFncmFwaEVsZW1lbnQuY3BwCkBAIC00NCwxMSArNDQsNiBAQCBQYXNzUmVmUHRyPEhU
TUxQYXJhZ3JhcGhFbGVtZW50PiBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1
YWxpZmllZE5hbQogICAgIHJldHVybiBhZG9wdFJlZihuZXcgSFRNTFBhcmFncmFwaEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQpKTsKIH0KIAotYm9vbCBIVE1MUGFyYWdyYXBoRWxlbWVudDo6Y2hl
Y2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCi17Ci0gICAgcmV0dXJuIGluSW5saW5lVGFnTGlz
dChuZXdDaGlsZCkgfHwgKGRvY3VtZW50KCktPmluQ29tcGF0TW9kZSgpICYmIG5ld0NoaWxkLT5o
YXNUYWdOYW1lKHRhYmxlVGFnKSk7Ci19Ci0KIGJvb2wgSFRNTFBhcmFncmFwaEVsZW1lbnQ6Om1h
cFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBlZEF0dHJpYnV0ZUVu
dHJ5JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKGF0dHJOYW1lID09IGFsaWduQXR0cikgewpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxQYXJhZ3JhcGhFbGVtZW50LmggYi9XZWJDb3Jl
L2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaAppbmRleCBiZjQ3YWE0OGJlNjFjNDlhN2U2OGVj
NmViZTdiMDJlZDEyYWUyNTA4Li44ZmZmNjJkYzE3Zjg1MWFmNDM1NTRiYjk3NzQ4ZTE5NTQzNzc5
OTdjIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaAorKysg
Yi9XZWJDb3JlL2h0bWwvSFRNTFBhcmFncmFwaEVsZW1lbnQuaApAQCAtMzUsNyArMzUsNiBAQCBw
cml2YXRlOgogICAgIEhUTUxQYXJhZ3JhcGhFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBE
b2N1bWVudCopOwogCiAgICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVuZFRhZ1JlcXVpcmVtZW50
KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpOwogCiAgICAgdmlydHVhbCBib29sIG1hcFRv
RW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVudHJ5JikgY29uc3Q7
CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKaW5kZXggNmIxMTk2MWYwNjNhNzQ2NmZhN2FjMzAzMzIw
OGQ3OGVjZmZmYzJjOS4uMTg3MWI2NTg3Y2FjN2YxMzg4Nzk0ZTM0OTdiMTM4MzcwMjk1NjNkYSAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAorKysgYi9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCkBAIC0xNDMsMTEgKzE0Myw2IEBAIHZvaWQg
SFRNTFBsdWdJbkVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikK
ICAgICAgICAgSFRNTEZyYW1lT3duZXJFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShhdHRy
KTsKIH0KIAotYm9vbCBIVE1MUGx1Z0luRWxlbWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3
Q2hpbGQpCi17Ci0gICAgcmV0dXJuIG5ld0NoaWxkLT5oYXNUYWdOYW1lKHBhcmFtVGFnKSB8fCBI
VE1MRnJhbWVPd25lckVsZW1lbnQ6OmNoZWNrRFREKG5ld0NoaWxkKTsKLX0KLQogdm9pZCBIVE1M
UGx1Z0luRWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7CiAgICAg
Ly8gRmlyZWZveCBzZWVtcyB0byB1c2UgYSBmYWtlIGV2ZW50IGxpc3RlbmVyIHRvIGRpc3BhdGNo
IGV2ZW50cyB0byBwbHVnLWluICh0ZXN0ZWQgd2l0aCBtb3VzZSBldmVudHMgb25seSkuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9I
VE1MUGx1Z0luRWxlbWVudC5oCmluZGV4IGFmYTc0ZmM0NTgyMGEzMTk0ZjM3ZDcxZTg5ZmUzYjRj
M2JmNDM5MDYuLmYyZjgzNTFlMmFjNWQyOThkYzJiMjA4N2RmMDExYzcxMjk0NjFmNTYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luRWxlbWVudC5oCkBAIC02Niw3ICs2Niw2IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCBSZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldEZvckpTQmluZGluZ3MoKSBjb25zdCA9IDA7
CiAKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7
IHJldHVybiBUYWdTdGF0dXNSZXF1aXJlZDsgfQotICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChj
b25zdCBOb2RlKiBuZXdDaGlsZCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlV2lkZ2V0KCkg
eyB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU2NyaXB0RWxlbWVudC5oIGIvV2Vi
Q29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKaW5kZXggNWZjOTVkOTM4OTc5NmJmNDUxMzU4
NGUyYzg4ZGIzMTczNmE2YWQ1ZS4uMjllYjk3ZGM4MDgzYjlhNjBhMTA0MmU0ZTc0NGZlMWUyN2U4
MDQ0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKKysrIGIv
V2ViQ29yZS9odG1sL0hUTUxTY3JpcHRFbGVtZW50LmgKQEAgLTUwLDcgKzUwLDYgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIFN0cmluZyBzY3JpcHRDb250ZW50KCkgY29uc3Q7CiAKICAgICB2aXJ0
dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQoKSBjb25zdCB7IHJldHVybiBUYWdT
dGF0dXNSZXF1aXJlZDsgfQotICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChjb25zdCBOb2RlKiBu
ZXdDaGlsZCkgeyByZXR1cm4gbmV3Q2hpbGQtPmlzVGV4dE5vZGUoKTsgfQogCiAgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwogICAgIHZpcnR1YWwgdm9p
ZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxT
ZWxlY3RFbGVtZW50LmNwcCBiL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5jcHAKaW5k
ZXggNmRkY2MyZGY3YWViODdiYTY3YTQ1YjVmMmQ5ZWI3MjZhNzFhYmNiYy4uYjFiNmQyM2JlZGIz
NTM0NmY3Yjk3MDBlOGRiMjJlMDViNjY3ZDdlNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hU
TUxTZWxlY3RFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQu
Y3BwCkBAIC01OCwxMyArNTgsNiBAQCBQYXNzUmVmUHRyPEhUTUxTZWxlY3RFbGVtZW50PiBIVE1M
U2VsZWN0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZwogICAgIHJldHVy
biBhZG9wdFJlZihuZXcgSFRNTFNlbGVjdEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0p
KTsKIH0KIAotYm9vbCBIVE1MU2VsZWN0RWxlbWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3
Q2hpbGQpCi17Ci0gICAgLy8gTWFrZSBzdXJlIHRvIGtlZXAgPG9wdGdyb3VwPiBpbiBzeW5jIHdp
dGggdGhpcy4KLSAgICByZXR1cm4gbmV3Q2hpbGQtPmlzVGV4dE5vZGUoKSB8fCBuZXdDaGlsZC0+
aGFzVGFnTmFtZShvcHRpb25UYWcpIHx8IG5ld0NoaWxkLT5oYXNUYWdOYW1lKG9wdGdyb3VwVGFn
KSB8fCBuZXdDaGlsZC0+aGFzVGFnTmFtZShoclRhZykgfHwKLSAgICAgICAgICAgbmV3Q2hpbGQt
Pmhhc1RhZ05hbWUoc2NyaXB0VGFnKTsKLX0KLQogdm9pZCBIVE1MU2VsZWN0RWxlbWVudDo6cmVj
YWxjU3R5bGUoU3R5bGVDaGFuZ2UgY2hhbmdlKQogewogICAgIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnRXaXRoU3RhdGU6OnJlY2FsY1N0eWxlKGNoYW5nZSk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5o
CmluZGV4IDkxODM4M2E1MDJiYmY1ZjcwYmY1MThlYjAxYzBlMDgxN2M2MjJlYTguLjc5YjA3ODk1
M2QyNzRmODA1Y2Y4NGRkYzkwODMwM2VkZmM2MDM2ZDYgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRt
bC9IVE1MU2VsZWN0RWxlbWVudC5oCisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVu
dC5oCkBAIC04Niw4ICs4Niw2IEBAIHByb3RlY3RlZDoKICAgICBIVE1MU2VsZWN0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqLCBIVE1MRm9ybUVsZW1lbnQqKTsKIAogcHJp
dmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpOwot
CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0
OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0tleWJvYXJkRm9jdXNhYmxlKEtleWJvYXJkRXZl
bnQqKSBjb25zdDsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50Lmgg
Yi9XZWJDb3JlL2h0bWwvSFRNTFN0eWxlRWxlbWVudC5oCmluZGV4IDEzNzlmMWJiYzBkMWZhZDA3
MDQ2M2QwNzViODhmZDQ0Mjk5NGM0NTAuLmQ2OGJhYjRhNTk4NDdmZTM4OTFiNDZkYjc3OTk3ZTEy
YmEwZjE1MjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MU3R5bGVFbGVtZW50LmgKKysr
IGIvV2ViQ29yZS9odG1sL0hUTUxTdHlsZUVsZW1lbnQuaApAQCAtNDIsNyArNDIsNiBAQCBwcml2
YXRlOgogICAgIEhUTUxTdHlsZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50
KiwgYm9vbCBjcmVhdGVkQnlQYXJzZXIpOwogCiAgICAgdmlydHVhbCBIVE1MVGFnU3RhdHVzIGVu
ZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7IH0KLSAg
ICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpIHsgcmV0dXJuIG5l
d0NoaWxkLT5pc1RleHROb2RlKCk7IH0KIAogICAgIC8vIG92ZXJsb2FkIGZyb20gSFRNTEVsZW1l
bnQKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAgYi9XZWJDb3Jl
L2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5jcHAKaW5kZXggOGFlMDQwMGM1MTk3ZjFmNzJmNjA3
OGVmOTMyZjFiYmU3Y2NiMzUzZC4uNTA3MThiMDcxYzZiNzQ5NDgwNmI4MzAwOTkyOWJkOWJmZGI2
NjMzMSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUNvbEVsZW1lbnQuY3BwCisr
KyBiL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmNwcApAQCAtNTIsMTYgKzUyLDYg
QEAgSFRNTFRhZ1N0YXR1cyBIVE1MVGFibGVDb2xFbGVtZW50OjplbmRUYWdSZXF1aXJlbWVudCgp
IGNvbnN0CiAgICAgcmV0dXJuIGhhc0xvY2FsTmFtZShjb2xUYWcpID8gVGFnU3RhdHVzRm9yYmlk
ZGVuIDogVGFnU3RhdHVzT3B0aW9uYWw7CiB9CiAKLWJvb2wgSFRNTFRhYmxlQ29sRWxlbWVudDo6
Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCi17Ci0gICAgaWYgKGhhc0xvY2FsTmFtZShj
b2xUYWcpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgCi0gICAgaWYgKG5ld0NoaWxkLT5p
c1RleHROb2RlKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBUZXh0Kj4obmV3
Q2hpbGQpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7Ci0gICAgcmV0dXJuIG5ld0NoaWxkLT5o
YXNUYWdOYW1lKGNvbFRhZyk7Ci19Ci0KIGJvb2wgSFRNTFRhYmxlQ29sRWxlbWVudDo6bWFwVG9F
bnRyeShjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSwgTWFwcGVkQXR0cmlidXRlRW50cnkm
IHJlc3VsdCkgY29uc3QKIHsKICAgICBpZiAoYXR0ck5hbWUgPT0gd2lkdGhBdHRyKSB7CmRpZmYg
LS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oIGIvV2ViQ29yZS9odG1s
L0hUTUxUYWJsZUNvbEVsZW1lbnQuaAppbmRleCBkMDkzNzIxNzI5OGRkODRmZDZmNmFmOWM1ZDY3
ZTE0ZTNlMWY2ZGQ1Li4xYTczZWM2MDE1MmMyNTZhMzUxYjQyMWUwOWY0NjdhM2ZhNTA2ZDcyIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlQ29sRWxlbWVudC5oCisrKyBiL1dlYkNv
cmUvaHRtbC9IVE1MVGFibGVDb2xFbGVtZW50LmgKQEAgLTQzLDcgKzQzLDYgQEAgcHJpdmF0ZToK
ICAgICBIVE1MVGFibGVDb2xFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERv
Y3VtZW50Kik7CiAKICAgICB2aXJ0dWFsIEhUTUxUYWdTdGF0dXMgZW5kVGFnUmVxdWlyZW1lbnQo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSopOwogICAgIHZp
cnR1YWwgYm9vbCBtYXBUb0VudHJ5KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBNYXBwZWRBdHRyaWJ1
dGVFbnRyeSYpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShB
dHRyaWJ1dGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUFkZGl0aW9uYWxBdHRyaWJ1dGVT
dHlsZURlY2xzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9o
dG1sL0hUTUxUYWJsZUVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQu
Y3BwCmluZGV4IDU2Y2IzMmEyN2NmYmVmNmI5ZTg1YjAzMWVlZmY4NGUyNTY5MzU0YTAuLmVmMjli
ZjY1YjgxNGRmZjQxOTdiMzQxZTY4MjIyYTViOTNiNWRkY2IgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
aHRtbC9IVE1MVGFibGVFbGVtZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxl
bWVudC5jcHAKQEAgLTYzLDE3ICs2Myw2IEBAIFBhc3NSZWZQdHI8SFRNTFRhYmxlRWxlbWVudD4g
SFRNTFRhYmxlRWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hCiAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1MVGFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7
CiB9CiAKLWJvb2wgSFRNTFRhYmxlRWxlbWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hp
bGQpCi17Ci0gICAgaWYgKG5ld0NoaWxkLT5pc1RleHROb2RlKCkpCi0gICAgICAgIHJldHVybiBz
dGF0aWNfY2FzdDxjb25zdCBUZXh0Kj4obmV3Q2hpbGQpLT5jb250YWluc09ubHlXaGl0ZXNwYWNl
KCk7Ci0gICAgcmV0dXJuIG5ld0NoaWxkLT5oYXNUYWdOYW1lKGNhcHRpb25UYWcpIHx8Ci0gICAg
ICAgICAgIG5ld0NoaWxkLT5oYXNUYWdOYW1lKGNvbFRhZykgfHwgbmV3Q2hpbGQtPmhhc1RhZ05h
bWUoY29sZ3JvdXBUYWcpIHx8Ci0gICAgICAgICAgIG5ld0NoaWxkLT5oYXNUYWdOYW1lKHRoZWFk
VGFnKSB8fCBuZXdDaGlsZC0+aGFzVGFnTmFtZSh0Zm9vdFRhZykgfHwKLSAgICAgICAgICAgbmV3
Q2hpbGQtPmhhc1RhZ05hbWUodGJvZHlUYWcpIHx8IG5ld0NoaWxkLT5oYXNUYWdOYW1lKGZvcm1U
YWcpIHx8Ci0gICAgICAgICAgIG5ld0NoaWxkLT5oYXNUYWdOYW1lKHNjcmlwdFRhZyk7Ci19Ci0K
IEhUTUxUYWJsZUNhcHRpb25FbGVtZW50KiBIVE1MVGFibGVFbGVtZW50OjpjYXB0aW9uKCkgY29u
c3QKIHsKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gZmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkgewpAQCAtMjUxLDIwICsyNDAsNiBAQCB2b2lkIEhUTUxU
YWJsZUVsZW1lbnQ6OmRlbGV0ZVJvdyhpbnQgaW5kZXgsIEV4Y2VwdGlvbkNvZGUmIGVjKQogICAg
IHJvdy0+cmVtb3ZlKGVjKTsKIH0KIAotQ29udGFpbmVyTm9kZSogSFRNTFRhYmxlRWxlbWVudDo6
bGVnYWN5UGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBjaGlsZCkKLXsKLSAgICBpZiAo
Y2hpbGQtPmhhc1RhZ05hbWUoZm9ybVRhZykpIHsKLSAgICAgICAgLy8gRmlyc3QgYWRkIHRoZSBj
aGlsZC4KLSAgICAgICAgSFRNTEVsZW1lbnQ6OmxlZ2FjeVBhcnNlckFkZENoaWxkKGNoaWxkKTsK
LQotICAgICAgICAvLyBOb3cgc2ltcGx5IHJldHVybiBvdXJzZWx2ZXMgYXMgdGhlIGNvbnRhaW5l
ciB0byBpbnNlcnQgaW50by4KLSAgICAgICAgLy8gVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiBkZW1v
dGluZyB0aGUgZm9ybSB0byBhIGxlYWYgYW5kIG1vdmluZyBpdCBzYWZlbHkgb3V0IG9mIHRoZSB3
YXkuCi0gICAgICAgIHJldHVybiB0aGlzOwotICAgIH0KLQotICAgIHJldHVybiBIVE1MRWxlbWVu
dDo6bGVnYWN5UGFyc2VyQWRkQ2hpbGQoY2hpbGQuZ2V0KCkpOwotfQotCiBib29sIEhUTUxUYWJs
ZUVsZW1lbnQ6Om1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUsIE1hcHBl
ZEF0dHJpYnV0ZUVudHJ5JiByZXN1bHQpIGNvbnN0CiB7CiAgICAgaWYgKGF0dHJOYW1lID09IGJh
Y2tncm91bmRBdHRyKSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVu
dC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUYWJsZUVsZW1lbnQuaAppbmRleCA3Y2NjMzQ5ZGU3ZmRk
MDYxN2FhYjUwNWMwMDc1YzE5NWM1NGRlMDYzLi44MGY0YTQyNTY3ZGNjNzY5NzY5ZWRmN2UwZTRl
ODE4NzJiZjI0MDZiIDEwMDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlRWxlbWVudC5o
CisrKyBiL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVFbGVtZW50LmgKQEAgLTYzLDggKzYzLDYgQEAg
cHVibGljOgogICAgIFN0cmluZyBydWxlcygpIGNvbnN0OwogICAgIFN0cmluZyBzdW1tYXJ5KCkg
Y29uc3Q7CiAKLSAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGxlZ2FjeVBhcnNlckFkZENoaWxk
KFBhc3NSZWZQdHI8Tm9kZT4pOwotCiAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwogCiAgICAg
dm9pZCBhZGRTaGFyZWRDZWxsRGVjbHMoVmVjdG9yPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
Kj4mKTsKQEAgLTc0LDcgKzcyLDYgQEAgcHJpdmF0ZToKICAgICBIVE1MVGFibGVFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCiAgICAgdmlydHVhbCBIVE1MVGFnU3Rh
dHVzIGVuZFRhZ1JlcXVpcmVtZW50KCkgY29uc3QgeyByZXR1cm4gVGFnU3RhdHVzUmVxdWlyZWQ7
IH0KLSAgICB2aXJ0dWFsIGJvb2wgY2hlY2tEVEQoY29uc3QgTm9kZSopOwogCiAgICAgdmlydHVh
bCBib29sIG1hcFRvRW50cnkoY29uc3QgUXVhbGlmaWVkTmFtZSYsIE1hcHBlZEF0dHJpYnV0ZUVu
dHJ5JikgY29uc3Q7CiAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3Bw
IGIvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuY3BwCmluZGV4IDBiYWZiMTI2MGY0
MzU5ZjRmMTVlY2E3ZTM0YTYyYWJlZGY1NTYwNzMuLmU5YjVjZWNhM2U1NWNiMzNjZGJkZGZlYjM3
NzhiMGMzNDJiOWU2NzUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dFbGVt
ZW50LmNwcAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlUm93RWxlbWVudC5jcHAKQEAgLTU0
LDI4ICs1NCw2IEBAIFBhc3NSZWZQdHI8SFRNTFRhYmxlUm93RWxlbWVudD4gSFRNTFRhYmxlUm93
RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBIVE1MVGFibGVSb3dFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KSk7CiB9CiAKLWJvb2wg
SFRNTFRhYmxlUm93RWxlbWVudDo6Y2hlY2tEVEQoY29uc3QgTm9kZSogbmV3Q2hpbGQpCi17Ci0g
ICAgaWYgKG5ld0NoaWxkLT5pc1RleHROb2RlKCkpCi0gICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxjb25zdCBUZXh0Kj4obmV3Q2hpbGQpLT5jb250YWluc09ubHlXaGl0ZXNwYWNlKCk7Ci0gICAg
cmV0dXJuIG5ld0NoaWxkLT5oYXNUYWdOYW1lKHRkVGFnKSB8fCBuZXdDaGlsZC0+aGFzVGFnTmFt
ZSh0aFRhZykgfHwKLSAgICAgICAgICAgbmV3Q2hpbGQtPmhhc1RhZ05hbWUoZm9ybVRhZykgfHwg
bmV3Q2hpbGQtPmhhc1RhZ05hbWUoc2NyaXB0VGFnKTsKLX0KLQotQ29udGFpbmVyTm9kZSogSFRN
TFRhYmxlUm93RWxlbWVudDo6bGVnYWN5UGFyc2VyQWRkQ2hpbGQoUGFzc1JlZlB0cjxOb2RlPiBj
aGlsZCkKLXsKLSAgICBpZiAoY2hpbGQtPmhhc1RhZ05hbWUoZm9ybVRhZykpIHsKLSAgICAgICAg
Ly8gRmlyc3QgYWRkIHRoZSBjaGlsZC4KLSAgICAgICAgSFRNTFRhYmxlUGFydEVsZW1lbnQ6Omxl
Z2FjeVBhcnNlckFkZENoaWxkKGNoaWxkKTsKLQotICAgICAgICAvLyBOb3cgc2ltcGx5IHJldHVy
biBvdXJzZWx2ZXMgYXMgdGhlIGNvbnRhaW5lciB0byBpbnNlcnQgaW50by4KLSAgICAgICAgLy8g
VGhpcyBoYXMgdGhlIGVmZmVjdCBvZiBkZW1vdGluZyB0aGUgZm9ybSB0byBhIGxlYWYgYW5kIG1v
dmluZyBpdCBzYWZlbHkgb3V0IG9mIHRoZSB3YXkuCi0gICAgICAgIHJldHVybiB0aGlzOwotICAg
IH0KLQotICAgIHJldHVybiBIVE1MVGFibGVQYXJ0RWxlbWVudDo6bGVnYWN5UGFyc2VyQWRkQ2hp
bGQoY2hpbGQpOwotfQotCiBpbnQgSFRNTFRhYmxlUm93RWxlbWVudDo6cm93SW5kZXgoKSBjb25z
dAogewogICAgIE5vZGUgKnRhYmxlID0gcGFyZW50Tm9kZSgpOwpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuaCBiL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVSb3dF
bGVtZW50LmgKaW5kZXggYjc0OGZiNTc2OWIwMmYyNTA2ZDQxODk5YzI3MTYyNzU1OTkyODIzMy4u
Y2EyNDFkODY2ZDkwM2NjOGNjYmE4MmJkNDBlMzllYmVmMGYxYWIxYyAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9odG1sL0hUTUxUYWJsZVJvd0VsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0bWwvSFRNTFRh
YmxlUm93RWxlbWVudC5oCkBAIC0zNSw4ICszNSw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFz
c1JlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBjcmVhdGUoRG9jdW1lbnQqKTsKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxIVE1MVGFibGVSb3dFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGxlZ2FjeVBh
cnNlckFkZENoaWxkKFBhc3NSZWZQdHI8Tm9kZT4pOwotCiAgICAgaW50IHJvd0luZGV4KCkgY29u
c3Q7CiAgICAgdm9pZCBzZXRSb3dJbmRleChpbnQpOwogCkBAIC01Myw3ICs1MSw2IEBAIHByaXZh
dGU6CiAgICAgSFRNTFRhYmxlUm93RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKIAogICAgIHZpcnR1YWwgSFRNTFRhZ1N0YXR1cyBlbmRUYWdSZXF1aXJlbWVudCgpIGNv
bnN0IHsgcmV0dXJuIFRhZ1N0YXR1c09wdGlvbmFsOyB9Ci0gICAgdmlydHVhbCBib29sIGNoZWNr
RFREKGNvbnN0IE5vZGUqKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9XZWJD
b3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIGIvV2ViQ29yZS9odG1sL0hUTUxU
YWJsZVNlY3Rpb25FbGVtZW50LmNwcAppbmRleCA5M2JmZWYyMThmNzFhODQwZjYxMGFmNjgzYzMz
M2RhMzIzYjk4OTE3Li45ODJlMDM1YzBjZjU0ZTk3OWFjYmIwOTZlN2M0MGZlY2NkOGRiODcwIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2h0bWwvSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwCisrKyBi
L1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVudC5jcHAKQEAgLTQ3LDI4ICs0Nyw2
IEBAIFBhc3NSZWZQdHI8SFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQ+IEhUTUxUYWJsZVNlY3Rpb25F
bGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmCiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBIVE1M
VGFibGVTZWN0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkpOwogfQogCi1ib29sIEhUTUxU
YWJsZVNlY3Rpb25FbGVtZW50OjpjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkKLXsKLSAg
ICBpZiAobmV3Q2hpbGQtPmlzVGV4dE5vZGUoKSkKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PGNvbnN0IFRleHQqPihuZXdDaGlsZCktPmNvbnRhaW5zT25seVdoaXRlc3BhY2UoKTsKLSAgICBy
ZXR1cm4gbmV3Q2hpbGQtPmhhc1RhZ05hbWUodHJUYWcpIHx8IG5ld0NoaWxkLT5oYXNUYWdOYW1l
KGZvcm1UYWcpIHx8Ci0gICAgICAgICAgIG5ld0NoaWxkLT5oYXNUYWdOYW1lKHNjcmlwdFRhZyk7
Ci19Ci0KLUNvbnRhaW5lck5vZGUqIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjpsZWdhY3lQYXJz
ZXJBZGRDaGlsZChQYXNzUmVmUHRyPE5vZGU+IGNoaWxkKQotewotICAgIGlmIChjaGlsZC0+aGFz
VGFnTmFtZShmb3JtVGFnKSkgewotICAgICAgICAvLyBGaXJzdCBhZGQgdGhlIGNoaWxkLgotICAg
ICAgICBIVE1MVGFibGVQYXJ0RWxlbWVudDo6bGVnYWN5UGFyc2VyQWRkQ2hpbGQoY2hpbGQpOwot
Ci0gICAgICAgIC8vIE5vdyBzaW1wbHkgcmV0dXJuIG91cnNlbHZlcyBhcyB0aGUgY29udGFpbmVy
IHRvIGluc2VydCBpbnRvLgotICAgICAgICAvLyBUaGlzIGhhcyB0aGUgZWZmZWN0IG9mIGRlbW90
aW5nIHRoZSBmb3JtIHRvIGEgbGVhZiBhbmQgbW92aW5nIGl0IHNhZmVseSBvdXQgb2YgdGhlIHdh
eS4KLSAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotCi0gICAgcmV0dXJuIEhUTUxUYWJsZVBh
cnRFbGVtZW50OjpsZWdhY3lQYXJzZXJBZGRDaGlsZChjaGlsZCk7Ci19Ci0KIC8vIHVzZWQgYnkg
dGFibGUgcm93IGdyb3VwcyB0byBzaGFyZSBzdHlsZSBkZWNscyBjcmVhdGVkIGJ5IHRoZSBlbmNs
b3NpbmcgdGFibGUuCiB2b2lkIEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50OjphZGRpdGlvbmFsQXR0
cmlidXRlU3R5bGVEZWNscyhWZWN0b3I8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qPiYgcmVz
dWx0cykKIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGFibGVTZWN0aW9uRWxlbWVu
dC5oIGIvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50LmgKaW5kZXggNDcxZWEw
MjA4ZGY0Yjc1MDVlNWQ4YmJlZDA4NjIzYTZmZjFmNzVlYi4uMjI0OGU3MmNjNDA5OTI2MDBiNzk4
MTQ1MGQyZWMzNjgxMDgxYTE1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNl
Y3Rpb25FbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUYWJsZVNlY3Rpb25FbGVtZW50
LmgKQEAgLTM0LDggKzM0LDYgQEAgY2xhc3MgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQgOiBwdWJs
aWMgSFRNTFRhYmxlUGFydEVsZW1lbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRy
PEhUTUxUYWJsZVNlY3Rpb25FbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERv
Y3VtZW50Kik7CiAKLSAgICB2aXJ0dWFsIENvbnRhaW5lck5vZGUqIGxlZ2FjeVBhcnNlckFkZENo
aWxkKFBhc3NSZWZQdHI8Tm9kZT4pOwotCiAgICAgUGFzc1JlZlB0cjxIVE1MRWxlbWVudD4gaW5z
ZXJ0Um93KGludCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgZGVsZXRlUm93KGlu
dCBpbmRleCwgRXhjZXB0aW9uQ29kZSYpOwogCkBAIC01OSw3ICs1Nyw2IEBAIHByaXZhdGU6CiAg
ICAgSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwg
RG9jdW1lbnQqKTsKIAogICAgIHZpcnR1YWwgSFRNTFRhZ1N0YXR1cyBlbmRUYWdSZXF1aXJlbWVu
dCgpIGNvbnN0IHsgcmV0dXJuIFRhZ1N0YXR1c09wdGlvbmFsOyB9Ci0gICAgdmlydHVhbCBib29s
IGNoZWNrRFREKGNvbnN0IE5vZGUqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGF2ZUFkZGl0aW9u
YWxBdHRyaWJ1dGVTdHlsZURlY2xzKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZpcnR1
YWwgdm9pZCBhZGRpdGlvbmFsQXR0cmlidXRlU3R5bGVEZWNscyhWZWN0b3I8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24qPiYpOwogfTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmggYi9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVudC5oCmluZGV4
IDQzZmU0OTNjNjNmMWQ4YTAxMTcxMWJlNDNhNDc1ODE3YWIzN2RhNjMuLmJiMDAzOWVjZmUzY2Rh
MzM5YjM3MjM4NWZiZWFmMzNlZDA4YjQ0NDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaHRtbC9IVE1M
VGV4dEFyZWFFbGVtZW50LmgKKysrIGIvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQu
aApAQCAtNzYsOCArNzYsNiBAQCBwcml2YXRlOgogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRF
dmVudEhhbmRsZXIoRXZlbnQqKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChjb25zdCBO
b2RlKiBuZXdDaGlsZCkgeyByZXR1cm4gbmV3Q2hpbGQtPmlzVGV4dE5vZGUoKTsgfQotCiAgICAg
dmlydHVhbCBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAg
ICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGZvcm1Db250cm9sVHlwZSgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaCBiL1dlYkNvcmUvaHRt
bC9IVE1MVGl0bGVFbGVtZW50LmgKaW5kZXggYmNkNDI4MzY1NTlkMTNkMWNmZGJhYWRhNzJlYjZh
NWMwNTBkNWQ4OC4uOGI5MGY1NjRmM2FhZjE2MTAzMTQ2YWMwNTgyMmY2ZDllNmExZmFlMSAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9odG1sL0hUTUxUaXRsZUVsZW1lbnQuaAorKysgYi9XZWJDb3JlL2h0
bWwvSFRNTFRpdGxlRWxlbWVudC5oCkBAIC0zNiw4ICszNiw2IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgSFRNTFRpdGxlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsK
IAotICAgIHZpcnR1YWwgYm9vbCBjaGVja0RURChjb25zdCBOb2RlKiBuZXdDaGlsZCkgeyByZXR1
cm4gbmV3Q2hpbGQtPmlzVGV4dE5vZGUoKTsgfQotCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVk
SW50b0RvY3VtZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdlZEJ5UGFyc2VyID0g
ZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hhbmdlID0gMCwgaW50
IGNoaWxkQ291bnREZWx0YSA9IDApOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9yZW5kZXJpbmcvTWVk
aWFDb250cm9sRWxlbWVudHMuY3BwIGIvV2ViQ29yZS9yZW5kZXJpbmcvTWVkaWFDb250cm9sRWxl
bWVudHMuY3BwCmluZGV4IGQ0ZWI5YTkyY2M3MjQxM2FjY2M5NjVkMGQxMGRjYTlhMWQ3OGY0YTQu
LjNmYjcxMmZlMTA1M2E0OGRlYjAwYWQzMjM3ZTY0YWEyZmE3MmU5NDcgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvcmVuZGVyaW5nL01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAorKysgYi9XZWJDb3JlL3Jl
bmRlcmluZy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKQEAgLTEzNSw3ICsxMzUsOSBAQCBQYXNz
UmVmUHRyPE1lZGlhQ29udHJvbEVsZW1lbnQ+IE1lZGlhQ29udHJvbEVsZW1lbnQ6OmNyZWF0ZShI
VE1MTWVkaWFFbGVtZW50KiBtZQogCiB2b2lkIE1lZGlhQ29udHJvbEVsZW1lbnQ6OmF0dGFjaFRv
UGFyZW50KEVsZW1lbnQqIHBhcmVudCkKIHsKLSAgICBwYXJlbnQtPmxlZ2FjeVBhcnNlckFkZENo
aWxkKHRoaXMpOworICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2VlbXMgdmVyeSB3cm9uZy4gIFdo
eSBhcmUgd2UgbWFnaWNhbGx5IGFkZGluZyB8dGhpc3wgdG8gdGhlIERPTSBoZXJlPworICAgIC8v
ICAgICAgICBXZSBzaG91bGRuJ3QgYmUgY2FsbGluZyBwYXJzZXIgQVBJIG1ldGhvZHMgb3V0c2lk
ZSBvZiB0aGUgcGFyc2VyIQorICAgIHBhcmVudC0+cGFyc2VyQWRkQ2hpbGQodGhpcyk7CiB9CiAK
IHZvaWQgTWVkaWFDb250cm9sRWxlbWVudDo6dXBkYXRlKCkKQEAgLTM5Miw3ICszOTQsOSBAQCBN
ZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6Ok1lZGlhQ29udHJvbElucHV0RWxlbWVudChIVE1MTWVk
aWFFbGVtZW50KiBtZWRpYUVsZW1lbgogCiB2b2lkIE1lZGlhQ29udHJvbElucHV0RWxlbWVudDo6
YXR0YWNoVG9QYXJlbnQoRWxlbWVudCogcGFyZW50KQogewotICAgIHBhcmVudC0+bGVnYWN5UGFy
c2VyQWRkQ2hpbGQodGhpcyk7CisgICAgLy8gRklYTUU6IFRoaXMgY29kZSBzZWVtcyB2ZXJ5IHdy
b25nLiAgV2h5IGFyZSB3ZSBtYWdpY2FsbHkgYWRkaW5nIHx0aGlzfCB0byB0aGUgRE9NIGhlcmU/
CisgICAgLy8gICAgICAgIFdlIHNob3VsZG4ndCBiZSBjYWxsaW5nIHBhcnNlciBBUEkgbWV0aG9k
cyBvdXRzaWRlIG9mIHRoZSBwYXJzZXIhCisgICAgcGFyZW50LT5wYXJzZXJBZGRDaGlsZCh0aGlz
KTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xJbnB1dEVsZW1lbnQ6OnVwZGF0ZSgpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29udHJvbElubmVyRWxlbWVudHMuY3BwIGIvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dENvbnRyb2xJbm5lckVsZW1lbnRzLmNwcAppbmRleCA4MDkxYmI2
YWVjMmYzMGNlZDQxNTVmOTUzMjE5Yzg4MTBjZWZmZjA1Li44MmRlNWQ5ZTMyZGQ5ZWJhYzI3MDZh
M2VkOTQ5MjIyZTJlY2I2N2RmIDEwMDY0NAotLS0gYS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Q29u
dHJvbElubmVyRWxlbWVudHMuY3BwCisrKyBiL1dlYkNvcmUvcmVuZGVyaW5nL1RleHRDb250cm9s
SW5uZXJFbGVtZW50cy5jcHAKQEAgLTExMiw5ICsxMTIsMTIgQEAgdm9pZCBUZXh0Q29udHJvbElu
bmVyRWxlbWVudDo6YXR0YWNoSW5uZXJFbGVtZW50KE5vZGUqIHBhcmVudCwgUGFzc1JlZlB0cjxS
ZW5kZXIKICAgICBzZXRJbkRvY3VtZW50KCk7CiAgICAgCiAgICAgLy8gRm9yIGVsZW1lbnRzIHdp
dGhvdXQgYSBzaGFkb3cgcGFyZW50LCBhZGQgdGhlIG5vZGUgdG8gdGhlIERPTSBub3JtYWxseS4K
LSAgICBpZiAoIW1fc2hhZG93UGFyZW50KQotICAgICAgICBwYXJlbnQtPmxlZ2FjeVBhcnNlckFk
ZENoaWxkKHRoaXMpOwotICAgIAorICAgIGlmICghbV9zaGFkb3dQYXJlbnQpIHsKKyAgICAgICAg
Ly8gRklYTUU6IFRoaXMgY29kZSBzZWVtcyB2ZXJ5IHdyb25nLiAgV2h5IGFyZSB3ZSBtYWdpY2Fs
bHkgYWRkaW5nIHx0aGlzfCB0byB0aGUgRE9NIGhlcmU/CisgICAgICAgIC8vICAgICAgICBXZSBz
aG91bGRuJ3QgYmUgY2FsbGluZyBwYXJzZXIgQVBJIG1ldGhvZHMgb3V0c2lkZSBvZiB0aGUgcGFy
c2VyIQorICAgICAgICBwYXJlbnQtPmRlcHJlY2F0ZWRQYXJzZXJBZGRDaGlsZCh0aGlzKTsKKyAg
ICB9CisgCiAgICAgLy8gQWRkIHRoZSByZW5kZXJlciB0byB0aGUgcmVuZGVyIHRyZWUKICAgICBp
ZiAocmVuZGVyZXIpCiAgICAgICAgIHBhcmVudC0+cmVuZGVyZXIoKS0+YWRkQ2hpbGQocmVuZGVy
ZXIpOwo=
</data>
<flag name="review"
          id="54103"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="54104"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>