<?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>206979</bug_id>
          
          <creation_ts>2020-01-29 18:57:31 -0800</creation_ts>
          <short_desc>Add WKNavigationDelegate SPI to disable TLS 1.0 and 1.1</short_desc>
          <delta_ts>2020-01-30 14:53:37 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1612809</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-29 18:57:31 -0800</bug_when>
    <thetext>Add WKNavigationDelegate SPI to disable TLS 1.0 and 1.1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612811</commentid>
    <comment_count>1</comment_count>
      <attachid>389216</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-29 18:58:50 -0800</bug_when>
    <thetext>Created attachment 389216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1612995</commentid>
    <comment_count>2</comment_count>
      <attachid>389257</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-30 09:38:41 -0800</bug_when>
    <thetext>Created attachment 389257
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613000</commentid>
    <comment_count>3</comment_count>
      <attachid>389258</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-30 09:46:52 -0800</bug_when>
    <thetext>Created attachment 389258
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613002</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-30 09:50:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/59031444&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613115</commentid>
    <comment_count>5</comment_count>
      <attachid>389258</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-30 13:29:34 -0800</bug_when>
    <thetext>Comment on attachment 389258
Patch

enum instead of a bool?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613150</commentid>
    <comment_count>6</comment_count>
      <attachid>389289</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-30 14:37:06 -0800</bug_when>
    <thetext>Created attachment 389289
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1613160</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-30 14:53:37 -0800</bug_when>
    <thetext>http://trac.webkit.org/r255461</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389216</attachid>
            <date>2020-01-29 18:58:50 -0800</date>
            <delta_ts>2020-01-30 09:38:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206979-20200129185850.patch</filename>
            <type>text/plain</type>
            <size>62868</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAx
LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRlIFNQSSB0byBkaXNhYmxlIFRMUyAxLjAgYW5kIDEu
MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oOgorCiAyMDIwLTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bm5lZWRlZCBkZWZpbml0aW9ucyBm
cm9tIFBsYXRmb3JtLmggZmFtaWx5IGhlYWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA4LDYgKzEwOCwxMCBAQCB0eXBlZGVmIHZvaWQgKF5DRkNhY2hlZFVSTFJlc3BvbnNlQ2FsbEJh
CiAKICNpZiBkZWZpbmVkKF9fT0JKQ19fKQogCitAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2sg
KCkKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIHJldGFpbikgTlNVUkxTZXNzaW9uVGFza01ldHJpY3Mq
IF9pbmNvbXBsZXRlVGFza01ldHJpY3M7CitAZW5kCisKIEBpbnRlcmZhY2UgTlNVUkxDYWNoZSAo
KQogLSAoQ0ZVUkxDYWNoZVJlZilfQ0ZVUkxDYWNoZTsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTUyMTUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDY0IEBACisyMDIwLTAxLTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRlIFNQSSB0
byBkaXNhYmxlIFRMUyAxLjAgYW5kIDEuMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6
OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVu
Z2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2Vzc0NvY29hKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1YXRp
b24pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNr
OmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2Up
OgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaG91bGRB
bGxvd0xlZ2FjeVRMUyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUp
OgorICAgICAgICAoV2ViS2l0OjpzeXN0ZW1BbGxvd3NMZWdhY3lUTFNGb3IpOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNob3VsZEFsbG93TGVn
YWN5VExTKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6
CisKIDIwMjAtMDEtMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGlkYXRlIFVJUHJvY2Vzcy9XZWJQcm9jZXNzIGZpbGVz
IGludG8gSW5zcGVjdG9yIGZvbGRlcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJl
dmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCB2
b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6d2lsbFBlCiAgICAgbV9jb21wbGV0aW9u
Q2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1f
cGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksICJQcmVmbGlnaHQgcmVzcG9uc2UgaXMg
bm90IHN1Y2Nlc3NmdWwiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7
CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQ2hhbGxlbmdlLCBhdXRoZW50aWNhdGlvbiBz
Y2hlbWU6ICV1IiwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2No
ZW1lKCkpOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXI6OmRpZFJlYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+YXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbiA/ICZtX3BhcmFtZXRlcnMudG9wT3JpZ2luLT5kYXRh
KCkgOiBudWxscHRyLCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UobV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VQcm94eUlELCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1ldGVycy50
b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRM
UywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBib29sLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRl
V2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNyArNjAsNyBAQCB1c2luZyBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxl
CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBA
QCB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjCiAgICAgbV9jbGllbnQu
Z2V0KCkud2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKG9sZFJlcXVlc3QpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKIH0KIAotdm9pZCBOZXR3
b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNo
YWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2NsaWVudC5nZXQo
KS5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2
b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1CiAgICAgaWYgKGF1dG8qIHBl
bmRpbmdEb3dubG9hZCA9IG1fdGFzay0+cGVuZGluZ0Rvd25sb2FkKCkpCiAgICAgICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgqcGVuZGluZ0Rvd25sb2FkLCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhl
bnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rh
c2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVy
cy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwg
Y2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0
YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBA
QCBwcml2YXRlOgogCiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50CiAgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwg
Ym9vbCwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVu
Y29kZXIgPDwgZW5hYmxlQWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlOwogICAgIGVuY29kZXIg
PDwgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBoc3RzU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBlbmNvZGVyIDw8IGVuYWJsZUxlZ2FjeVRMUzsKIH0K
IAogYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHJlc3VsdCkK
QEAgLTE3OSw5ICsxNzgsNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oc3RzU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5lbmFibGVMZWdhY3lUTFMpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
OTcsNyArOTcsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgCiAg
ICAgYm9vbCBlbmFibGVBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGUgeyBmYWxzZSB9OwogICAg
IFN0cmluZyBoc3RzU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgYm9vbCBlbmFibGVM
ZWdhY3lUTFMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIgPDwgbG9hZFRocm90dGxlTGF0ZW5j
eTsKICAgICBlbmNvZGVyIDw8IGh0dHBQcm94eTsKICAgICBlbmNvZGVyIDw8IGh0dHBzUHJveHk7
Ci0gICAgZW5jb2RlciA8PCBlbmFibGVMZWdhY3lUTFM7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkK
ICAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKQEAgLTEzOCwxMSAr
MTM3LDYgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcgogICAgIGRl
Y29kZXIgPj4gaHR0cHNQcm94eTsKICAgICBpZiAoIWh0dHBzUHJveHkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxib29sPiBlbmFibGVMZWdhY3lUTFM7Ci0g
ICAgZGVjb2RlciA+PiBlbmFibGVMZWdhY3lUTFM7Ci0gICAgaWYgKCFlbmFibGVMZWdhY3lUTFMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpA
QCAtMjg4LDcgKzI4Miw2IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXIKICAgICAgICAgLCBXVEZNb3ZlKCpsb2FkVGhyb3R0bGVMYXRlbmN5KQogICAgICAgICAsIFdU
Rk1vdmUoKmh0dHBQcm94eSkKICAgICAgICAgLCBXVEZNb3ZlKCpodHRwc1Byb3h5KQotICAgICAg
ICAsIFdURk1vdmUoKmVuYWJsZUxlZ2FjeVRMUykKICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAg
ICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMgCiAgICAgU2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5OwogICAgIFVSTCBo
dHRwUHJveHk7CiAgICAgVVJMIGh0dHBzUHJveHk7Ci0gICAgYm9vbCBlbmFibGVMZWdhY3lUTFMg
eyBmYWxzZSB9OwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgU3RyaW5nIGNvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlUGF0aDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDExICsxNDYsMTEgQEAgdm9p
ZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3RpbwogICAgIH0pOwogfQogCi12b2lk
IFBpbmdMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYg
Y2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmIGNoYWxsZW5nZSwgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVDaGFsbGVuZ2UiKTsKICAgICBpZiAoY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0gUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQpIHsKLSAgICAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPm5ldHdvcmtQcm9jZXNzKCkuYXV0aGVudGljYXRpb25N
YW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fc2Vzc2lvbklELCBt
X3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsICBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1f
cGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+bmV0
d29ya1Byb2Nlc3MoKS5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UobV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwg
IG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgp
IDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogCiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgYm9v
bCwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyNTUwOTIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHVzaW5n
IFRhc2tJZGVudGlmaWVyID0gdWludDY0X3Q7CiAKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2
NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgYm9vbCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjU1MDkyKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTIsMTMgKzUyLDYgQEAKICNpbXBvcnQgPENGTmV0d29yay9DRk5T
VVJMQ29ubmVjdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBfX2hhc19pbmNsdWRlKDxXZWJLaXRBZGRp
dGlvbnMvTmV0d29ya0RhdGFUYXNrQ29jb2FBZGRpdGlvbnMuaD4pCi0jaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL05ldHdvcmtEYXRhVGFza0NvY29hQWRkaXRpb25zLmg+Ci0jZWxzZQotI2RlZmlu
ZSBORVRXT1JLX0RBVEFfVEFTS19DT0NPQV9BRERJVElPTlNfMQotI2RlZmluZSBORVRXT1JLX0RB
VEFfVEFTS19DT0NPQV9BRERJVElPTlNfMgotI2VuZGlmCi0KICNpZiBIQVZFKE9TX1NJR05QT1NU
KQogCiAjaW1wb3J0IDxvcy9zaWducG9zdC5oPgpAQCAtMjg1LDggKzI3OCw2IEBAIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2MKICAgICBhcHBseVNuaWZmaW5nUG9saWNp
ZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250
ZW50U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQg
JiYgIXVybC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJD
b3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCiAgICAgbV90YXNr
ID0gW21fc2Vzc2lvbldyYXBwZXIuc2Vzc2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVz
dF07Ci0gICAgCi0gICAgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05TXzE7CiAKICAg
ICBCRUdJTl9TSUdOUE9TVChtX3Rhc2ssICIle3B1YmxpY31zIHByaTogJWYgcHJlY29ubmVjdDog
JWQiLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIHRvTlNVUkxTZXNzaW9uVGFza1ByaW9y
aXR5KHJlcXVlc3QucHJpb3JpdHkoKSksIHNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5l
Y3RPbmx5OjpZZXMpOwogCkBAIC0zNDgsNyArMzM5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkU2VuZERhdGEodQogICAgICAgICBtX2NsaWVudC0+ZGlkU2VuZERhdGEodG90YWxC
eXRlc1NlbnQsIHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBib29sIG5l
Z290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgRU1JVF9TSUdOUE9TVChtX3Rhc2ssICJyZWNlaXZlZCBjaGFsbGVu
Z2UiKTsKIApAQCAtMzU2LDcgKzM0Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRp
ZFJlY2VpdmVDaGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2xpZW50KQotICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZNb3ZlKGNoYWxsZW5nZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDaGFs
bGVuZ2UoV1RGTW92ZShjaGFsbGVuZ2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCB7IH0pOwpAQCAtNDYwLDkgKzQ1MSw2
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFQKICAgICAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgIGlmICghcmVx
dWVzdC5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXN0cmljdFJlcXVlc3RSZWZlcnJlclRv
T3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7Ci0KLSAgICAgICAgICAgIE5FVFdPUktfREFUQV9UQVNL
X0NPQ09BX0FERElUSU9OU18yOwotCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsKICAgICAgICAgfSk7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcw
LDYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtTZXR0aW5ncygpCiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6c2V0TGVnYWN5VExTRW5hYmxlZChwYXJhbWV0
ZXJzLmVuYWJsZUxlZ2FjeVRMUyk7Ci0KICAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICAgICBX
ZWJDb3JlOjpzZXRBcHBsaWNhdGlvblNES1ZlcnNpb24ocGFyYW1ldGVycy51aVByb2Nlc3NTREtW
ZXJzaW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29s
IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAotICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlQ2hh
bGxlbmdlKFNlc3Npb25XcmFwcGVyJiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRh
VGFza0NvY29hKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJik7Cisg
ICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2UoU2Vzc2lvbldyYXBwZXImLCBjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGJvb2wgbmVnb3RpYXRlZExlZ2Fj
eVRMUywgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRh
c2tDb2NvYSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYpOwogCiAg
ICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkgeyByZXR1cm4g
bV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0JKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTk2LDkgKzU5Niw5
IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKIH0KIAogI2lmIEhB
VkUoQ0ZORVRXT1JLX05TVVJMU0VTU0lPTl9TVFJJQ1RSVVNURVZBTFVBVEUpCi1zdGF0aWMgaW5s
aW5lIHZvaWQgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihOZXR3b3JrU2Vzc2lvbkNvY29h
ICpzZXNzaW9uLCBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXIsIE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVu
dGlmaWVyIHRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSogbmV0d29ya0RhdGFU
YXNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBwcm9jZXNzU2VydmVyVHJ1c3RFdmFs
dWF0aW9uKE5ldHdvcmtTZXNzaW9uQ29jb2EmIHNlc3Npb24sIFNlc3Npb25XcmFwcGVyJiBzZXNz
aW9uV3JhcHBlciwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBib29s
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmll
ciB0YXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqIG5ldHdvcmtEYXRhVGFzaywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgc2Vzc2lvbi0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKHNl
c3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2ss
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZWNUcnVz
dCA9IHJldGFpblB0cihjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0KV0gKFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29u
c3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgbXV0YWJsZSB7CisgICAgc2Vzc2lv
bi5jb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2Uoc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwg
bmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzaywgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlY1RydXN0ID0g
cmV0YWluUHRyKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3QpXSAoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklY
TUU6IFVJUHJvY2VzcyBzaG91bGQgc2VuZCB1cyBiYWNrIG5vbiBuaWwgY3JlZGVudGlhbHMgYnV0
IHRoZSBjcmVkZW50aWFsIElQQyBlbmNvZGVyIGN1cnJlbnRseSBvbmx5IHNlcmlhbGl6ZXMgbnMg
Y3JlZGVudGlhbHMgZm9yIHVzZXJuYW1lL3Bhc3N3b3JkLgogICAgICAgICBpZiAoZGlzcG9zaXRp
b24gPT0gV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVk
ZW50aWFsICYmICFjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05T
VVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6IHNlY1RydXN0LmdldCgpXSk7CkBAIC02
MjgsMTYgKzYyOCwyNSBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Np
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMg
PSBmYWxzZTsKKwogICAgIGlmIChbY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNh
dGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZl
clRydXN0XSkgewogICAgICAgICBpZiAoTmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjaGFsbGVuZ2UpKQogICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFs
LCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlLnNlcnZlclRydXN0XSk7CiAKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1Qp
CisgICAgICAgIE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKm1ldHJpY3MgPSB0
YXNrLl9pbmNvbXBsZXRlVGFza01ldHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7
CisgICAgICAgIGF1dG8gdGxzVmVyc2lvbiA9ICh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KW1ldHJp
Y3MubmVnb3RpYXRlZFRMU1Byb3RvY29sVmVyc2lvbi51bnNpZ25lZFNob3J0VmFsdWU7CisgICAg
ICAgIGlmICh0bHNWZXJzaW9uID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0bHNW
ZXJzaW9uID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMSkKKyAgICAgICAgICAgIG5lZ290
aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOworI2VuZGlmCisKICAgICAgICAgLy8gSGFuZGxlIHNlcnZl
ciB0cnVzdCBldmFsdWF0aW9uIGF0IHBsYXRmb3JtLWxldmVsIGlmIHJlcXVlc3RlZCwgZm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMgYW5kIHRvIHVzZSBBVFMgZGVmYXVsdHMuCi0gICAgICAgIGlmIChz
ZXNzaW9uQ29jb2EtPmZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkKCkpIHsKKyAgICAg
ICAgaWYgKHNlc3Npb25Db2NvYS0+ZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQoKSAm
JiAhbmVnb3RpYXRlZExlZ2FjeVRMUykgewogI2lmIEhBVkUoQ0ZORVRXT1JLX05TVVJMU0VTU0lP
Tl9TVFJJQ1RSVVNURVZBTFVBVEUpCiAgICAgICAgICAgICBhdXRvKiBuZXR3b3JrRGF0YVRhc2sg
PSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza107CiAgICAgICAgICAgICBBU1NFUlQobmV0d29ya0Rh
dGFUYXNrKTsKLSAgICAgICAgICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4oc2VsZiks
IHNlc3Npb25Db2NvYSA9IG1ha2VXZWFrUHRyKHNlc3Npb25Db2NvYSksIGNvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFza0lkZW50aWZpZXIsIG5l
dHdvcmtEYXRhVGFzayA9IFJlZlB0cjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4obmV0d29ya0RhdGFU
YXNrKV0oTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBPU1N0YXR1cyB0
cnVzdFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS05ldHdvcmtTZXNzaW9uRGVs
ZWdhdGU+KHNlbGYpLCBzZXNzaW9uQ29jb2EgPSBtYWtlV2Vha1B0cihzZXNzaW9uQ29jb2EpLCBj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIHRhc2tJ
ZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2sgPSBtYWtlUmVmUHRyKG5ldHdvcmtEYXRhVGFzayks
IG5lZ290aWF0ZWRMZWdhY3lUTFNdKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxs
ZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGF1
dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwogICAgICAgICAgICAgICAgIGlmICghc3Ry
b25nU2VsZikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmls
KTsKQEAgLTY0Nyw3ICs2NTYsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAq
KXNlc3NpCiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHByb2Nl
c3NTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oc2Vzc2lvbiwgKnN0cm9uZ1NlbGYtPl9zZXNzaW9uV3Jh
cHBlciwgY2hhbGxlbmdlLCB0YXNrSWRlbnRpZmllciwgdGFzay5nZXQoKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24oKnNlc3Npb24sICpzdHJvbmdTZWxmLT5fc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwg
bmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIHRhc2suZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgW05TVVJM
U2Vzc2lvbiBfc3RyaWN0VHJ1c3RFdmFsdWF0ZTpjaGFsbGVuZ2UgcXVldWU6W05TT3BlcmF0aW9u
UXVldWUgbWFpblF1ZXVlXS51bmRlcmx5aW5nUXVldWUgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNp
b25IYW5kbGVyLmdldCgpXTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY1Niw3ICs2NjUsNyBA
QCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAjZW5kaWYKICAgICAg
ICAgfQogICAgIH0KLSAgICBzZXNzaW9uQ29jb2EtPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5n
ZSgqX3Nlc3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBbc2VsZiBleGlz
dGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFi
bGUgeworICAgIHNlc3Npb25Db2NvYS0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKCpfc2Vz
c2lvbldyYXBwZXIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZp
ZXIsIFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3Jl
ZGVudGlhbCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0Ny
ZWRlbnRpYWwoKSk7CiAgICAgfSk7CiB9CkBAIC0xMDE5LDE0ICsxMDI4LDYgQEAgTmV0d29ya1Nl
c3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYQogCiAgICAgTlNVUkxTZXNzaW9uQ29uZmln
dXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25Gb3JTZXNzaW9uSUQobV9zZXNz
aW9uSUQpOwogCi0gICAgaWYgKCFwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUykgewotI2lmIEhB
VkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKLSAgICAgICAgY29uZmlndXJhdGlvbi5UTFNNaW5p
bXVtU3VwcG9ydGVkUHJvdG9jb2xWZXJzaW9uID0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEy
OwotI2Vsc2UKLSAgICAgICAgY29uZmlndXJhdGlvbi5UTFNNaW5pbXVtU3VwcG9ydGVkUHJvdG9j
b2wgPSBrVExTUHJvdG9jb2wxMjsKLSNlbmRpZgotICAgIH0KLQogI2lmIEhBVkUoQVBQX1NTTykK
ICAgICBjb25maWd1cmF0aW9uLl9wcmV2ZW50c0FwcFNTTyA9IHRydWU7CiAjZW5kaWYKQEAgLTEy
OTcsNyArMTI5OCw3IEBAIGJvb2wgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lmaWMK
ICAgICByZXR1cm4gY2VydGlmaWNhdGVzTWF0Y2godHJ1c3QuZ2V0KCksIGNoYWxsZW5nZS5uc1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0KTsK
IH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlY2VpdmVDaGFsbGVu
Z2UoU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lk
ZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKiBuZXR3b3JrRGF0
YVRhc2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNvbnRpbnVlRGlkUmVjZWl2ZUNo
YWxsZW5nZShTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXIsIGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRM
UywgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBO
ZXR3b3JrRGF0YVRhc2tDb2NvYSogbmV0d29ya0RhdGFUYXNrLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2Vi
Q29yZTo6Q3JlZGVudGlhbCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbmV0
d29ya0RhdGFUYXNrKSB7CiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQpAQCAtMTM0
OSw3ICsxMzUwLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlYwog
I2VuZGlmCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRpc3Bvc2l0aW9uLCBjcmVkZW50aWFs
KTsKICAgICB9OwotICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZN
b3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlcikpOworICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZN
b3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92
ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiBETUZXZWJzaXRlUG9saWN5TW9u
aXRvciAqTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGV2aWNlTWFuYWdlbWVudFBvbGljeU1vbml0b3Io
KQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRp
b25NYW5hZ2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50
aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIuY3BwCShyZXZpc2lvbiAyNTUwOTIpCisrKyBT
b3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNyArMTA5LDcgQEAgVmVjdG9yPHVpbnQ2NF90PiBB
dXRoZW50aWNhdGlvbk1hbmFnZXI6OgogICAgIHJldHVybiBjaGFsbGVuZ2VzVG9Db2FsZXNjZTsK
IH0KIAotdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIgcGFnZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEqIHRvcE9yaWdpbiwgY29uc3QgQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VD
b21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBBdXRoZW50aWNhdGlv
bk1hbmFnZXI6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25J
RCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBTZWN1cml0
eU9yaWdpbkRhdGEqIHRvcE9yaWdpbiwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgaWYgKCFwYWdl
SUQpCiAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCB7IH0pOwpAQCAtMTIzLDcg
KzEyMyw3IEBAIHZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXUKICAgICBP
cHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+IHRvcE9yaWdpbkRhdGE7CiAgICAgaWYgKHRvcE9y
aWdpbikKICAgICAgICAgdG9wT3JpZ2luRGF0YSA9ICp0b3BPcmlnaW47Ci0gICAgbV9wcm9jZXNz
LnNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShzZXNzaW9uSUQsIHBhZ2VJRCwgdG9wT3JpZ2luRGF0YSwgYXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UsIGNoYWxsZW5nZUlEKSk7CisgICAgbV9wcm9jZXNzLnNlbmQoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OkRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShzZXNzaW9uSUQsIHBhZ2VJRCwgdG9wT3JpZ2luRGF0YSwgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UsIG5lZ290aWF0ZWRMZWdhY3lUTFMsIGNoYWxsZW5nZUlEKSk7CiB9CiAKIHZvaWQgQXV0aGVu
dGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpN
ZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxl
ciYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVu
dGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgJKHJldmlz
aW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHB1Ymxp
YzoKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlBh
Z2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSogLCBj
b25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRp
b25IYW5kbGVyJiYpOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEqICwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmLCBib29sLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2Fk
LCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdm9pZCBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKHVpbnQ2NF90IGNoYWxsZW5nZUlELCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0
aW9uLCBXZWJDb3JlOjpDcmVkZW50aWFsJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NjY2LDggKzc2NjYs
MTcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmdhbWVwYWRBY3Rpdml0eShjb25zdAogCiAjZW5kaWYK
IAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5KFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5KFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLCBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMpCiB7CisgICAgaWYgKG5lZ290
aWF0ZWRMZWdhY3lUTFMpIHsKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5zaG91bGRBbGxv
d0xlZ2FjeVRMUygqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0g
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY29weVJlZigpXSAoYm9vbCBzaG91bGRBbGxvd0xlZ2Fj
eVRMUykgeworICAgICAgICAgICAgaWYgKHNob3VsZEFsbG93TGVnYWN5VExTKQorICAgICAgICAg
ICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UtPmxpc3RlbmVyKCku
Y29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbjo6Q2Fu
Y2VsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgbV9uYXZpZ2F0
aW9uQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzI3LDcgKzEzMjcsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRzKGNv
bnN0IFdlYkNvcmU6OkludFNpemUmKTsKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdwb3J0U2l6
ZUZvckNTU1ZpZXdwb3J0VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZUZvckNT
U1ZpZXdwb3J0VW5pdHMudmFsdWVPcihXZWJDb3JlOjpJbnRTaXplKCkpOyB9CiAKLSAgICB2b2lk
IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KFJlZjxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5PiYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KFJlZjxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiYmLCBib29sKTsK
IAogICAgIFNwZWxsRG9jdW1lbnRUYWcgc3BlbGxEb2N1bWVudFRhZygpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHJl
dmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0
aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDYgKzk2LDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCByZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSYsIE9wdGlvblNldDxXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmU+KSB7IH0KIAogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmIGNoYWxsZW5n
ZSkgeyBjaGFsbGVuZ2UubGlzdGVuZXIoKS5jb21wbGV0ZUNoYWxsZW5nZShXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcpOyB9
CisgICAgdmlydHVhbCB2b2lkIHNob3VsZEFsbG93TGVnYWN5VExTKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikgeyBjb21wbGV0aW9uSGFuZGxl
cih0cnVlKTsgfQogICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCeXBhc3NDb250ZW50TW9kZVNhZmVn
dWFyZHMoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCiAgICAgLy8gRklYTUU6IFRoZXNlIGZ1
bmN0aW9uIHNob3VsZCBub3QgYmUgcGFydCBvZiB0aGlzIGNsaWVudC4KSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtODYsNiArODYsOCBAQCBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3kgCiAKIC0gKE5TRGF0YSAqKV93ZWJDcnlwdG9NYXN0ZXJLZXlGb3JXZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3OwogCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
ICopY2hhbGxlbmdlIHNob3VsZEFsbG93TGVnYWN5VExTOih2b2lkICheKShCT09MKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworCiAtICh2b2lkKV93ZWJWaWV3RGlkQmVnaW5OYXZpZ2F0aW9uR2VzdHVyZTooV0tX
ZWJWaWV3ICopd2ViVmlldzsKIC8vIEl0ZW0gaXMgbmlsIGlmIHRoZSBnZXN0dXJlIGVuZGVkIHdp
dGhvdXQgbmF2aWdhdGlvbi4KIC0gKHZvaWQpX3dlYlZpZXdEaWRFbmROYXZpZ2F0aW9uR2VzdHVy
ZTooV0tXZWJWaWV3ICopd2ViVmlldyB3aXRoTmF2aWdhdGlvblRvQmFja0ZvcndhcmRMaXN0SXRl
bTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oCShyZXZpc2lvbiAyNTUwOTIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTEyLDYgKzExMiw3IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgc2hvdWxk
QnlwYXNzQ29udGVudE1vZGVTYWZlZ3VhcmRzKCkgY29uc3QgZmluYWw7CiAKICAgICAgICAgdm9p
ZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV2ViUGFnZVByb3h5JiwgQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eSYpIG92ZXJyaWRlOworICAgICAgICB2b2lkIHNob3VsZEFs
bG93TGVnYWN5VExTKFdlYlBhZ2VQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICAgICAgYm9vbCBw
cm9jZXNzRGlkVGVybWluYXRlKFdlYlBhZ2VQcm94eSYsIFByb2Nlc3NUZXJtaW5hdGlvblJlYXNv
bikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoV2Vi
UGFnZVByb3h5Jikgb3ZlcnJpZGU7CiAgICAgICAgIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVz
cG9uc2l2ZShXZWJQYWdlUHJveHkmKSBvdmVycmlkZTsKQEAgLTIxNSw2ICsyMTYsNyBAQCBwcml2
YXRlOgogCiAgICAgICAgIGJvb2wgd2ViVmlld1JlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlIDog
MTsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXIgOiAxOworICAgICAgICBib29sIHdlYlZpZXdBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVNob3VsZEFsbG93TGVnYWN5VExTIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3
V2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGUgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdX
ZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZVdpdGhSZWFzb24gOiAxOwogICAgICAgICBib29s
IHdlYlZpZXdXZWJQcm9jZXNzRGlkQ3Jhc2ggOiAxOwpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2aXNpb24gMjU1MDkyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNjYsNiArMTY2LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OnNldE5h
dmlnYXRpb25EZWxlZwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3TmF2
aWdhdGlvbkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb24gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1Nl
bGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpuYXZpZ2F0aW9uOmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb246KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZW5kZXJp
bmdQcm9ncmVzc0RpZENoYW5nZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3OnJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hhbmdlOildOwogICAgIG1fbmF2aWdh
dGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxl
Y3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9u
SGFuZGxlcjopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0F1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlU2hvdWxkQWxsb3dMZWdhY3lUTFMgPSBbZGVsZWdhdGUgcmVzcG9u
ZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzphdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpz
aG91bGRBbGxvd0xlZ2FjeVRMUzopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlID0gW2RlbGVnYXRlIHJlc3BvbmRz
VG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlld1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRl
OildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViQ29udGVudFBy
b2Nlc3NEaWRUZXJtaW5hdGVXaXRoUmVhc29uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3Rv
cjpAc2VsZWN0b3IoX3dlYlZpZXc6d2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGVXaXRoUmVh
c29uOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3V2ViUHJvY2Vz
c0RpZENyYXNoID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXdXZWJQcm9jZXNzRGlkQ3Jhc2g6KV07CkBAIC05NzMsNiArOTc0LDM5IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKICAgICB9KS5nZXQoKV07CiB9CiAKK3N0YXRp
YyBib29sIHN5c3RlbUFsbG93c0xlZ2FjeVRMU0ZvcihXZWJQYWdlUHJveHkmIHBhZ2UpCit7Cisg
ICAgYm9vbCBlbmFibGVMZWdhY3lUTFMgPSBwYWdlLndlYnNpdGVEYXRhU3RvcmUoKS5jb25maWd1
cmF0aW9uKCkubGVnYWN5VExTRW5hYmxlZCgpOworICAgIGlmIChpZCB2YWx1ZSA9IFtbTlNVc2Vy
RGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIG9iamVjdEZvcktleTpAIldlYktpdEVuYWJs
ZUxlZ2FjeVRMUyJdKQorICAgICAgICBlbmFibGVMZWdhY3lUTFMgPSBbdmFsdWUgYm9vbFZhbHVl
XTsKKyAgICBpZiAoIWVuYWJsZUxlZ2FjeVRMUykgeworI2lmIFBMQVRGT1JNKElPU19GQU1JTFkp
ICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKKyAgICAgICAgZW5hYmxlTGVnYWN5VExTID0gW1tQ
QUw6OmdldE1DUHJvZmlsZUNvbm5lY3Rpb25DbGFzcygpIHNoYXJlZENvbm5lY3Rpb25dIGVmZmVj
dGl2ZUJvb2xWYWx1ZUZvclNldHRpbmc6QCJhbGxvd0RlcHJlY2F0ZWRXZWJLaXRUTFMiXSA9PSBN
Q1Jlc3RyaWN0ZWRCb29sRXhwbGljaXRZZXM7CisjZWxpZiBQTEFURk9STShNQUMpCisgICAgICAg
IGVuYWJsZUxlZ2FjeVRMUyA9IENGUHJlZmVyZW5jZXNHZXRBcHBCb29sZWFuVmFsdWUoQ0ZTVFIo
ImFsbG93RGVwcmVjYXRlZFdlYktpdFRMUyIpLCBDRlNUUigiY29tLmFwcGxlLmFwcGxpY2F0aW9u
YWNjZXNzIiksIG51bGxwdHIpOworI2VuZGlmCisgICAgfQorICAgIHJldHVybiBlbmFibGVMZWdh
Y3lUTFM7Cit9CisKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaG91
bGRBbGxvd0xlZ2FjeVRMUyhXZWJQYWdlUHJveHkmIHBhZ2UsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkmIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGlmICghbV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVNob3VsZEFsbG93TGVnYWN5VExTKQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoc3lzdGVtQWxsb3dzTGVnYWN5VExTRm9yKHBhZ2UpKTsKKworICAgIGF1dG8gbmF2aWdhdGlv
bkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCk7
CisgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCisgICAgICAgIHJldHVybiBjb21wbGV0aW9u
SGFuZGxlcihzeXN0ZW1BbGxvd3NMZWdhY3lUTFNGb3IocGFnZSkpOworCisgICAgYXV0byBjaGVj
a2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG5hdmlnYXRpb25EZWxl
Z2F0ZS5nZXQoKSwgQHNlbGVjdG9yKF93ZWJWaWV3OmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOnNo
b3VsZEFsbG93TGVnYWN5VExTOikpOworICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgYXV0aGVudGljYXRpb25DaGFsbGVuZ2U6d3JhcHBlcihh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgc2hvdWxkQWxsb3dMZWdhY3lUTFM6bWFrZUJsb2NrUHRy
KFtjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oQk9PTCBzaG91bGRBbGxvdykgbXV0YWJsZSB7CisgICAgICAg
IGlmIChjaGVja2VyLT5jb21wbGV0aW9uSGFuZGxlckhhc0JlZW5DYWxsZWQoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgY2hlY2tlci0+ZGlkQ2FsbENvbXBsZXRpb25IYW5kbGVyKCk7
CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHNob3VsZEFsbG93KTsKKyAgICB9KS5nZXQoKV07
Cit9CisKIHN0YXRpYyBfV0tQcm9jZXNzVGVybWluYXRpb25SZWFzb24gd2tQcm9jZXNzVGVybWlu
YXRpb25SZWFzb24oUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHJlYXNvbikKIHsKICAgICBzd2l0
Y2ggKHJlYXNvbikgewpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zODEsMTggKzM4MSw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZU4KICAgICAgICAgfQogICAgIH0KIAotICAgIHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5
VExTID0gZmFsc2U7Ci0gICAgaWYgKGlkIHZhbHVlID0gW2RlZmF1bHRzIG9iamVjdEZvcktleTpA
IldlYktpdEVuYWJsZUxlZ2FjeVRMUyJdKQotICAgICAgICBwYXJhbWV0ZXJzLmVuYWJsZUxlZ2Fj
eVRMUyA9IFt2YWx1ZSBib29sVmFsdWVdOwotICAgIGlmICghcGFyYW1ldGVycy5lbmFibGVMZWdh
Y3lUTFMpIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZ
U1QpCi0gICAgICAgIHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5VExTID0gW1tQQUw6OmdldE1DUHJv
ZmlsZUNvbm5lY3Rpb25DbGFzcygpIHNoYXJlZENvbm5lY3Rpb25dIGVmZmVjdGl2ZUJvb2xWYWx1
ZUZvclNldHRpbmc6QCJhbGxvd0RlcHJlY2F0ZWRXZWJLaXRUTFMiXSA9PSBNQ1Jlc3RyaWN0ZWRC
b29sRXhwbGljaXRZZXM7Ci0jZWxpZiBQTEFURk9STShNQUMpCi0gICAgICAgIHBhcmFtZXRlcnMu
ZW5hYmxlTGVnYWN5VExTID0gQ0ZQcmVmZXJlbmNlc0dldEFwcEJvb2xlYW5WYWx1ZShDRlNUUigi
YWxsb3dEZXByZWNhdGVkV2ViS2l0VExTIiksIENGU1RSKCJjb20uYXBwbGUuYXBwbGljYXRpb25h
Y2Nlc3MiKSwgbnVsbHB0cik7Ci0jZW5kaWYKLSAgICB9Ci0gICAgcGFyYW1ldGVycy5kZWZhdWx0
RGF0YVN0b3JlUGFyYW1ldGVycy5uZXR3b3JrU2Vzc2lvblBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5
VExTID0gcGFyYW1ldGVycy5lbmFibGVMZWdhY3lUTFM7Ci0KICAgICBwYXJhbWV0ZXJzLm5ldHdv
cmtBVFNDb250ZXh0ID0gYWRvcHRDRihfQ0ZOZXR3b3JrQ29weUFUU0NvbnRleHQoKSk7CiAKICAg
ICBwYXJhbWV0ZXJzLnNob3VsZFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5kbGVyID0gW2RlZmF1
bHRzIGJvb2xGb3JLZXk6V2ViS2l0U3VwcHJlc3NNZW1vcnlQcmVzc3VyZUhhbmRsZXJEZWZhdWx0
c0tleV07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMyNiw3ICszMjYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nl
c3NBdXRoZW50CiAgICAgc3RvcmUtPmNsaWVudCgpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSk7CiB9CiAKLXZvaWQgTmV0
d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0
IE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHRvcE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkK
K3ZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdl
SUQsIGNvbnN0IE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4mIHRvcE9yaWdpbiwgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjb3JlQ2hhbGxlbmdlLCBib29sIG5lZ290aWF0
ZWRMZWdhY3lUTFMsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogewogI2lmIEhBVkUoU0VDX0tFWV9Q
Uk9YWSkKICAgICBXZWFrUHRyPFNlY0tleVByb3h5U3RvcmU+IHNlY0tleVByb3h5U3RvcmU7CkBA
IC0zNDcsNyArMzQ3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0
aAogICAgICAgICBwYWdlID0gV2ViUHJvY2Vzc1Byb3h5Ojp3ZWJQYWdlKHBhZ2VJRCk7CiAKICAg
ICBpZiAocGFnZSkgewotICAgICAgICBwYWdlLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eShXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSk7CisgICAgICAgIHBh
Z2UtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KFdURk1vdmUoYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMzU2LDEyICszNTYsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpkaWRSZWNlaXZlQXV0aAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV2ViUGFnZVBy
b3h5Ojpmb3JNb3N0VmlzaWJsZVdlYlBhZ2VJZkFueShzZXNzaW9uSUQsICp0b3BPcmlnaW4sIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpLCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlID0gV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSldKGF1dG8qIHBh
Z2UpIG11dGFibGUgeworICAgIFdlYlBhZ2VQcm94eTo6Zm9yTW9zdFZpc2libGVXZWJQYWdlSWZB
bnkoc2Vzc2lvbklELCAqdG9wT3JpZ2luLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0
aGlzKSwgc2Vzc2lvbklELCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IFdURk1vdmUoYXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTXShhdXRvKiBwYWdlKSBtdXRh
YmxlIHsKICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICBpZiAocGFnZSkgewotICAgICAgICAgICAgcGFnZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkoV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOworICAg
ICAgICAgICAgcGFnZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoV1RG
TW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMpOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHByb2Nlc3NBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShzZXNzaW9uSUQsIFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjM1
LDcgKzIzNSw3IEBAIHByaXZhdGU6CiAKICAgICAvLyBNZXNzYWdlIGhhbmRsZXJzCiAgICAgdm9p
ZCBkaWRSZWNlaXZlTmV0d29ya1Byb2Nlc3NQcm94eU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwg
SVBDOjpEZWNvZGVyJik7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0IE9wdGlvbmFs
PFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZp
ZXIsIGNvbnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mLCBXZWJDb3Jl
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBib29sLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCk7
CiAgICAgdm9pZCBkaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIGNvbnN0
IFdlYnNpdGVEYXRhJik7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBj
YWxsYmFja0lEKTsKICAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50
NjRfdCBjYWxsYmFja0lEKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHJl
dmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29y
a1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEsNyBA
QAogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogCiBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2Vzc1Byb3h5IExlZ2Fj
eVJlY2VpdmVyIE5vdFJlZkNvdW50ZWQgewotICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRl
bnRpZmllciBwYWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdG9w
T3JpZ2luLCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIHVpbnQ2
NF90IGNoYWxsZW5nZUlEKQorICAgIERpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYktpdDo6V2ViUGFnZVByb3h5SWRlbnRpZmllciBw
YWdlSUQsIE9wdGlvbmFsPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luLCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRl
ZExlZ2FjeVRMUywgdWludDY0X3QgY2hhbGxlbmdlSUQpCiAKICAgICBEaWRGZXRjaFdlYnNpdGVE
YXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNp
dGVEYXRhKQogICAgIERpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDI1NTA5
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4NCw3ICsxODQsNyBAQCBwcml2
YXRlOgogICAgIGJvb2wgbV9kZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRW5hYmxlZCB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2FsbExvYWRzQmxvY2tlZEJ5RGV2aWNlTWFuYWdlbWVudFJlc3Ry
aWN0aW9uc0ZvclRlc3RpbmcgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxvd3NDZWxsdWxhckFj
Y2VzcyB7IHRydWUgfTsKLSAgICBib29sIG1fbGVnYWN5VExTRW5hYmxlZCB7IGZhbHNlIH07Cisg
ICAgYm9vbCBtX2xlZ2FjeVRMU0VuYWJsZWQgeyB0cnVlIH07CiAgICAgYm9vbCBtX2Zhc3RTZXJ2
ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2VydmljZVdv
cmtlclByb2Nlc3NUZXJtaW5hdGlvbkRlbGF5RW5hYmxlZCB7IHRydWUgfTsKICAgICBib29sIG1f
dGVzdGluZ1Nlc3Npb25FbmFibGVkIHsgZmFsc2UgfTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRl
RGF0YVN0b3JlQ29jb2EubW0JKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtODUsMTYgKzg1LDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vi
c2l0ZURhdGFTdAogICAgIGJvb2wgc2hvdWxkTG9nQ29va2llSW5mb3JtYXRpb24gPSBmYWxzZTsK
ICAgICBib29sIGVuYWJsZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBmYWxzZTsK
ICAgICBhdXRvIGZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlID0gV2ViQ29yZTo6Rmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGU6OkFsbEJ1dENvb2tpZXM7Ci0gICAgYm9vbCBl
bmFibGVMZWdhY3lUTFMgPSBjb25maWd1cmF0aW9uKCkubGVnYWN5VExTRW5hYmxlZCgpOwotICAg
IGlmIChpZCB2YWx1ZSA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdh
Y3lUTFMiXSkKLSAgICAgICAgZW5hYmxlTGVnYWN5VExTID0gW3ZhbHVlIGJvb2xWYWx1ZV07Ci0g
ICAgaWYgKCFlbmFibGVMZWdhY3lUTFMpIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAh
UExBVEZPUk0oTUFDQ0FUQUxZU1QpCi0gICAgICAgIGVuYWJsZUxlZ2FjeVRMUyA9IFtbUEFMOjpn
ZXRNQ1Byb2ZpbGVDb25uZWN0aW9uQ2xhc3MoKSBzaGFyZWRDb25uZWN0aW9uXSBlZmZlY3RpdmVC
b29sVmFsdWVGb3JTZXR0aW5nOkAiYWxsb3dEZXByZWNhdGVkV2ViS2l0VExTIl0gPT0gTUNSZXN0
cmljdGVkQm9vbEV4cGxpY2l0WWVzOwotI2VsaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBlbmFi
bGVMZWdhY3lUTFMgPSBDRlByZWZlcmVuY2VzR2V0QXBwQm9vbGVhblZhbHVlKENGU1RSKCJhbGxv
d0RlcHJlY2F0ZWRXZWJLaXRUTFMiKSwgQ0ZTVFIoImNvbS5hcHBsZS5hcHBsaWNhdGlvbmFjY2Vz
cyIpLCBudWxscHRyKTsKLSNlbmRpZgotICAgIH0KICAgICBXZWJDb3JlOjpSZWdpc3RyYWJsZURv
bWFpbiByZXNvdXJjZUxvYWRTdGF0aXN0aWNzTWFudWFsUHJldmFsZW50UmVzb3VyY2UgeyB9Owog
I2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCiAgICAgZW5hYmxlUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IFtkZWZhdWx0cyBib29sRm9yS2V5OkAiSVRQRGVidWdN
b2RlIl07CkBAIC0xNjQsNyArMTU0LDYgQEAgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMgV2Vi
c2l0ZURhdGFTdAogICAgICAgICBTZWNvbmRzIHsgW2RlZmF1bHRzIGludGVnZXJGb3JLZXk6V2Vi
S2l0TmV0d29ya0xvYWRUaHJvdHRsZUxhdGVuY3lNaWxsaXNlY29uZHNEZWZhdWx0c0tleV0gLyAx
MDAwLiB9LAogICAgICAgICBXVEZNb3ZlKGh0dHBQcm94eSksCiAgICAgICAgIFdURk1vdmUoaHR0
cHNQcm94eSksCi0gICAgICAgIGVuYWJsZUxlZ2FjeVRMUywKICAgICAgICAgV1RGTW92ZShyZXNv
dXJjZUxvYWRTdGF0aXN0aWNzRGlyZWN0b3J5KSwKICAgICAgICAgV1RGTW92ZShyZXNvdXJjZUxv
YWRTdGF0aXN0aWNzRGlyZWN0b3J5SGFuZGxlKSwKICAgICAgICAgcmVzb3VyY2VMb2FkU3RhdGlz
dGljc0VuYWJsZWQoKSwKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTAxLTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNo
cmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRl
IFNQSSB0byBkaXNhYmxlIFRMUyAxLjAgYW5kIDEuMQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgt
W1dlYlZpZXcgX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6
CisKIDIwMjAtMDEtMjIgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAg
ICAgIExlZ2FjeSBXZWJLaXQ6IEFkZCBTUEkgdmFyaWFudCBvZiAtc2V0U2VsZWN0ZWRET01SYW5n
ZSB0aGF0IGNhbiBwZXJmb3JtIHRoZSBzZWxlY3Rpb24gYXMgaWYgdHJpZ2dlcmVkIGJ5IHRoZSB1
c2VyCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShy
ZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZp
ZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTE0MjEsMTkgKzE0MjEsNiBAQCAtICh2b2lkKV9jb21t
b25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hCiAgICAgICAgIGlmIChXZWJDb3JlOjpJT1NBcHBs
aWNhdGlvbjo6aXNNb2JpbGVTYWZhcmkoKSkKICAgICAgICAgICAgIFdlYkNvcmU6OkRlcHJlY2F0
ZWRHbG9iYWxTZXR0aW5nczo6c2V0U2hvdWxkTWFuYWdlQXVkaW9TZXNzaW9uQ2F0ZWdvcnkodHJ1
ZSk7CiAjZW5kaWYKLQotICAgICAgICBib29sIGVuYWJsZUxlZ2FjeVRMUyA9IGZhbHNlOwotICAg
ICAgICBpZiAoaWQgdmFsdWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiXSkKLSAgICAgICAgICAgIGVu
YWJsZUxlZ2FjeVRMUyA9IFt2YWx1ZSBib29sVmFsdWVdOwotICAgICAgICBpZiAoIWVuYWJsZUxl
Z2FjeVRMUykgewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRB
TFlTVCkKLSAgICAgICAgICAgIGVuYWJsZUxlZ2FjeVRMUyA9IFtbUEFMOjpnZXRNQ1Byb2ZpbGVD
b25uZWN0aW9uQ2xhc3MoKSBzaGFyZWRDb25uZWN0aW9uXSBlZmZlY3RpdmVCb29sVmFsdWVGb3JT
ZXR0aW5nOkAiYWxsb3dEZXByZWNhdGVkV2ViS2l0VExTIl0gPT0gTUNSZXN0cmljdGVkQm9vbEV4
cGxpY2l0WWVzOwotI2VsaWYgUExBVEZPUk0oTUFDKQotICAgICAgICAgICAgZW5hYmxlTGVnYWN5
VExTID0gQ0ZQcmVmZXJlbmNlc0dldEFwcEJvb2xlYW5WYWx1ZShDRlNUUigiYWxsb3dEZXByZWNh
dGVkV2ViS2l0VExTIiksIENGU1RSKCJjb20uYXBwbGUuYXBwbGljYXRpb25hY2Nlc3MiKSwgbnVs
bHB0cik7Ci0jZW5kaWYKLSAgICAgICAgfQotICAgICAgICBXZWJDb3JlOjpTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsOjpzZXRMZWdhY3lUTFNFbmFibGVkKGVuYWJsZUxlZ2FjeVRMUyk7Ci0KICAgICAg
ICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CiAKSW5kZXg6IFRvb2xz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTQx
MCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisy
MDIwLTAxLTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRlIFNQSSB0byBkaXNhYmxlIFRMUyAxLjAg
YW5kIDEuMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjA2OTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiBNaW5pQnJvd3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm06CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbToKKyAgICAgICAgKC1b
VExTTmF2aWdhdGlvbkRlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXSk6CisgICAg
ICAgICgtW1RMU05hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbl0pOgorICAgICAgICAoLVtUTFNOYXZpZ2F0aW9uRGVsZWdhdGUgcmVjZWl2ZWRTaG91
bGRBbGxvd0xlZ2FjeVRMU10pOgorICAgICAgICAoLVtUTFNOYXZpZ2F0aW9uRGVsZWdhdGUgd2Vi
VmlldzpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6
XSk6CisgICAgICAgICgtW1RMU05hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5h
dmlnYXRpb246XSk6CisgICAgICAgICgtW1RMU05hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRp
ZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2l0aEVycm9yOl0pOgorICAgICAgICAoLVtUTFNO
YXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6YXV0aGVudGljYXRpb25DaGFsbGVuZ2U6c2hvdWxk
QWxsb3dMZWdhY3lUTFM6XSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAy
MC0wMS0yOSAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAgICAg
cnVuLXNhZmFyaSAvIHJ1bi13ZWJraXQtdGVzdHMgLS1pb3Mtc2ltdWxhdG9yIG5vdCB3b3JraW5n
IHdpdGggWENvZGUgMTMuMy4xICgxMUM1MDQpCkluZGV4OiBUb29scy9NaW5pQnJvd3Nlci9tYWMv
U2V0dGluZ3NDb250cm9sbGVyLm0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvTWluaUJyb3dzZXIvbWFj
L1NldHRpbmdzQ29udHJvbGxlci5tCShyZXZpc2lvbiAyNTUwOTIpCisrKyBUb29scy9NaW5pQnJv
d3Nlci9tYWMvU2V0dGluZ3NDb250cm9sbGVyLm0JKHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMz
LDcgQEAKIAogTlNTdHJpbmcgKiBjb25zdCBrVXNlckFnZW50Q2hhbmdlZE5vdGlmaWNhdGlvbk5h
bWUgPSBAIlVzZXJBZ2VudENoYW5nZWROb3RpZmljYXRpb24iOwogCi1zdGF0aWMgTlNTdHJpbmcg
KiBjb25zdCBkZWZhdWx0VVJMID0gQCJodHRwOi8vd3d3LndlYmtpdC5vcmcvIjsKK3N0YXRpYyBO
U1N0cmluZyAqIGNvbnN0IGRlZmF1bHRVUkwgPSBAImh0dHA6Ly9lbi53aWtpcGVkaWEub3JnLyI7
CiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBEZWZhdWx0VVJMUHJlZmVyZW5jZUtleSA9IEAiRGVm
YXVsdFVSTCI7CiAKIHN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IEN1c3RvbVVzZXJBZ2VudFByZWZl
cmVuY2VLZXkgPSBAIkN1c3RvbVVzZXJBZ2VudElkZW50aWZpZXIiOwpJbmRleDogVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9u
Lm1tCShyZXZpc2lvbiAyNTUwOTIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MSwxOSArNzEsNzQg
QEAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bkphdgogCiBAZW5kCiAKK0Bp
bnRlcmZhY2UgVExTTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlPgorLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbjsKKy0gKHZvaWQpd2Fp
dEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb247CistIChib29sKXJlY2VpdmVkU2hvdWxk
QWxsb3dMZWdhY3lUTFM7CitAcHJvcGVydHkgKG5vbmF0b21pYykgYm9vbCBzaG91bGRBbGxvd0xl
Z2FjeVRMUzsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFRMU05hdmlnYXRpb25EZWxlZ2F0ZSB7
CisgICAgYm9vbCBfbmF2aWdhdGlvbkZpbmlzaGVkOworICAgIGJvb2wgX25hdmlnYXRpb25GYWls
ZWQ7CisgICAgYm9vbCBfcmVjZWl2ZWRTaG91bGRBbGxvd0xlZ2FjeVRMUzsKK30KKworLSAodm9p
ZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbgoreworICAgIHdoaWxlICghX25hdmlnYXRpb25G
aW5pc2hlZCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKK30K
KworLSAodm9pZCl3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgoreworICAgIHdo
aWxlICghX25hdmlnYXRpb25GYWlsZWQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNw
aW5SdW5Mb29wKCk7Cit9CisKKy0gKGJvb2wpcmVjZWl2ZWRTaG91bGRBbGxvd0xlZ2FjeVRMUwor
eworICAgIHJldHVybiBfcmVjZWl2ZWRTaG91bGRBbGxvd0xlZ2FjeVRMUzsKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9u
IGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKiBjcmVkZW50aWFsKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1
dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3Qp
OworICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVk
ZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJv
dGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0
aW9uCit7CisgICAgX25hdmlnYXRpb25GaW5pc2hlZCA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOihX
S05hdmlnYXRpb24gKiluYXZpZ2F0aW9uIHdpdGhFcnJvcjooTlNFcnJvciAqKWVycm9yCit7Cisg
ICAgX25hdmlnYXRpb25GYWlsZWQgPSB0cnVlOworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dl
YlZpZXcgKil3ZWJWaWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIHNob3VsZEFsbG93TGVnYWN5VExTOih2b2lkICheKShC
T09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9yZWNlaXZlZFNob3VsZEFsbG93TGVnYWN5
VExTID0gdHJ1ZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihbc2VsZiBzaG91bGRBbGxvd0xlZ2Fj
eVRMU10pOworfQorCitAZW5kCisKKwogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewogCiBjb25z
dCB1aW50MTZfdCB0bHMxXzEgPSAweDAzMDI7CiBzdGF0aWMgTlNTdHJpbmcgKmRlZmF1bHRzS2V5
ID0gQCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiOwogCi1URVNUKFdlYktpdCwgVExTVmVyc2lvbldl
YlNvY2tldCkKK1RFU1QoVExTVmVyc2lvbiwgV2ViU29ja2V0KQogewogICAgIGF1dG8gZ2V0V2Vi
U29ja2V0RXZlbnQgPSBbXSAoYm9vbCBjbGllbnRBbGxvd0RlcHJlY2F0ZWRUTFMsIGJvb2wgc2Vy
dmVyTGltaXRUTFMpIHsKICAgICAgICAgT3B0aW9uYWw8dWludDE2X3Q+IG1heFNlcnZlclRMU1Zl
cnNpb247CiAgICAgICAgIGlmIChzZXJ2ZXJMaW1pdFRMUykKICAgICAgICAgICAgIG1heFNlcnZl
clRMU1ZlcnNpb24gPSB0bHMxXzE7CiAgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVy
OjpQcm90b2NvbDo6SFRUUFMsIFs9XShTU0wgKnNzbCkgewotICAgICAgICAgICAgRVhQRUNUX1RS
VUUoIXNzbCA9PSAoY2xpZW50QWxsb3dEZXByZWNhdGVkVExTICE9IHNlcnZlckxpbWl0VExTKSk7
CisgICAgICAgICAgICBFWFBFQ1RfVFJVRSghc3NsID09IHNlcnZlckxpbWl0VExTKTsKICAgICAg
ICAgfSwgbWF4U2VydmVyVExTVmVyc2lvbik7CiAKICAgICAgICAgaWYgKGNsaWVudEFsbG93RGVw
cmVjYXRlZFRMUykKQEAgLTEwOCw3ICsxNjMsNyBAQCBURVNUKFdlYktpdCwgVExTVmVyc2lvbldl
YlNvY2tldCkKICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7CiAgICAgfTsKIAotICAgIEVYUEVDVF9X
S19TVFJFUShnZXRXZWJTb2NrZXRFdmVudCh0cnVlLCB0cnVlKSwgImNsb3NlIik7CisgICAgRVhQ
RUNUX1dLX1NUUkVRKGdldFdlYlNvY2tldEV2ZW50KHRydWUsIHRydWUpLCAiZXJyb3I6IHVuZGVm
aW5lZCIpOwogICAgIE5TU3RyaW5nICptZXNzYWdlID0gZ2V0V2ViU29ja2V0RXZlbnQoZmFsc2Us
IHRydWUpOwogICAgIEVYUEVDVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAImVycm9y
OiB1bmRlZmluZWQiXSB8fCBbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJjbG9zZSJdKTsKICAg
ICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZlbnQoZmFsc2UsIGZhbHNlKSwgImNsb3Nl
Iik7CkBAIC0xNDgsMTIgKzIwMywxMiBAQCBOU1N0cmluZyAqZ2V0V2ViU29ja2V0RXZlbnRXZWJL
aXRMZWdhY3koCiAgICAgcmV0dXJuIG1lc3NhZ2U7CiB9CiAKLVRFU1QoV2ViS2l0LCBUTFNWZXJz
aW9uV2ViU29ja2V0V2ViS2l0TGVnYWN5MSkKK1RFU1QoVExTVmVyc2lvbiwgV2ViU29ja2V0V2Vi
S2l0TGVnYWN5MSkKIHsKICAgICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZlbnRXZWJL
aXRMZWdhY3kodHJ1ZSwgdHJ1ZSksICJjbG9zZSIpOwogfQogCi1URVNUKFdlYktpdCwgVExTVmVy
c2lvbldlYlNvY2tldFdlYktpdExlZ2FjeTIpCitURVNUKFRMU1ZlcnNpb24sIFdlYlNvY2tldFdl
YktpdExlZ2FjeTIpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb25zdCBjaGFy
KiBleHBlY3RlZCA9ICJlcnJvcjogdW5kZWZpbmVkIjsKQEAgLTE2MywxMiArMjE4LDEzIEBAIFRF
U1QoV2ViS2l0LCBUTFNWZXJzaW9uV2ViU29ja2V0V2ViS2l0TGUKICAgICBFWFBFQ1RfV0tfU1RS
RVEoZ2V0V2ViU29ja2V0RXZlbnRXZWJLaXRMZWdhY3koZmFsc2UsIHRydWUpLCBleHBlY3RlZCk7
CiB9CiAKLVRFU1QoV2ViS2l0LCBUTFNWZXJzaW9uV2ViU29ja2V0V2ViS2l0TGVnYWN5MykKK1RF
U1QoVExTVmVyc2lvbiwgV2ViU29ja2V0V2ViS2l0TGVnYWN5MykKIHsKICAgICBFWFBFQ1RfV0tf
U1RSRVEoZ2V0V2ViU29ja2V0RXZlbnRXZWJLaXRMZWdhY3koZmFsc2UsIGZhbHNlKSwgImNsb3Nl
Iik7CiB9CiAKLVRFU1QoV2ViS2l0LCBUTFNWZXJzaW9uTmV0d29ya1Nlc3Npb24pCisvLyBGSVhN
RTogVGhpcyB0ZXN0IHNob3VsZCBiZSBkaXNhYmxlZCB1bnRpbCByZGFyOi8vcHJvYmxlbS81NjUy
MjYwMSBpcyBmaXhlZC4KK1RFU1QoVExTVmVyc2lvbiwgRElTQUJMRURfTmV0d29ya1Nlc3Npb24p
CiB7CiAgICAgc3RhdGljIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlIG5ld10pOwogICAgIGF1dG8gbWFrZVdlYlZpZXdXaXRoID0gWyZdIChXS1dlYnNpdGVE
YXRhU3RvcmUgKnN0b3JlKSB7CkBAIC0xNzcsNTUgKzIzMyw4MyBAQCBURVNUKFdlYktpdCwgVExT
VmVyc2lvbk5ldHdvcmtTZXNzaW9uKQogICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtb
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgICAgICBbd2ViVmlldyBzZXROYXZp
Z2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgICAgICBbZGVsZWdhdGUgc2V0RGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAg
ICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGlj
YXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAg
ICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwg
W05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgICAgICB9XTsKICAgICAgICAgcmV0dXJuIHdlYlZpZXc7
CiAgICAgfTsKICAgICB7Ci0gICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90
b2NvbDo6SFRUUFMsIFtdKFNTTCAqc3NsKSB7Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Ns
KTsKLSAgICAgICAgfSwgdGxzMV8xKTsKKyAgICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2
ZXI6OlByb3RvY29sOjpIVFRQUywgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LLCB0bHMxXzEpOwog
ICAgICAgICBhdXRvIHdlYlZpZXcgPSBtYWtlV2ViVmlld1dpdGgoW1dLV2Vic2l0ZURhdGFTdG9y
ZSBkZWZhdWx0RGF0YVN0b3JlXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1d
XTsKLSAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
XTsKKyAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKICAgICB9
CiAgICAgewotICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhU
VFBTLCBbXShTU0wgKnNzbCkgewotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7Ci0gICAg
ICAgIH0sIHRsczFfMSk7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90
b2NvbDo6SFRUUFMsIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSywgdGxzMV8xKTsKICAgICAgICAg
YXV0byB3ZWJWaWV3ID0gbWFrZVdlYlZpZXdXaXRoKFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVy
c2lzdGVudERhdGFTdG9yZV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxS
ZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJp
bmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07
Ci0gICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07
CisgICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAgICAgfQog
ICAgIHsKLSAgICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQ
UywgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LLCB0bHMxXzEpOworICAgICAgICBUQ1BTZXJ2ZXIg
c2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXShTU0wgKnNzbCkgeworICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7CisgICAgICAgIH0sIHRsczFfMSk7CiAgICAgICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSk7Ci0gICAgICAgIFtj
b25maWd1cmF0aW9uIHNldExlZ2FjeVRMU0VuYWJsZWQ6WUVTXTsKKyAgICAgICAgW2NvbmZpZ3Vy
YXRpb24gc2V0TGVnYWN5VExTRW5hYmxlZDpOT107CiAgICAgICAgIGF1dG8gZGF0YVN0b3JlID0g
YWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlv
bjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IG1ha2VXZWJW
aWV3V2l0aChkYXRhU3RvcmUuZ2V0KCkpOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQo
KV1dXV07Ci0gICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07Cisg
ICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CiAg
ICAgfQotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6
WUVTIGZvcktleTpkZWZhdWx0c0tleV07CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gc2V0Qm9vbDpOTyBmb3JLZXk6ZGVmYXVsdHNLZXldOwogICAgIHsKICAgICAg
ICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10oU1NMICpz
c2wpIHsKLSAgICAgICAgICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyhzc2wpOworICAgICAg
ICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7CiAgICAgICAgIH0sIHRsczFfMSk7CiAgICAgICAgIGF1
dG8gd2ViVmlldyA9IG1ha2VXZWJWaWV3V2l0aChbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHRE
YXRhU3RvcmVdKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCBy
ZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOwotICAgICAg
ICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgICAgICBbZGVsZWdh
dGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOwogICAgIH0KICAgICB7CiAg
ICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtdKFNT
TCAqc3NsKSB7Ci0gICAgICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShzc2wpOwogICAgICAgICB9LCB0bHMxXzEpOwogICAgICAg
ICBhdXRvIHdlYlZpZXcgPSBtYWtlV2ViVmlld1dpdGgoW1dLV2Vic2l0ZURhdGFTdG9yZSBub25Q
ZXJzaXN0ZW50RGF0YVN0b3JlXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1d
XTsKLSAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICAg
ICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKICAgICB9
CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlT2JqZWN0
Rm9yS2V5OmRlZmF1bHRzS2V5XTsKIH0KIAorLy8gRklYTUU6IFRoaXMgdGVzdCBzaG91bGQgYmUg
ZGlzYWJsZWQgdW50aWwgcmRhcjovL3Byb2JsZW0vNTY1MjI2MDEgaXMgZml4ZWQuCitURVNUKFRM
U1ZlcnNpb24sIERJU0FCTEVEX05hdmlnYXRpb25EZWxlZ2F0ZVNQSSkKK3sKKyAgICB7CisgICAg
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUTFNOYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7
CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtd
KFNTTCAqc3NsKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBvbmx5IGlmIHdlIGhh
dmUgdGhlIG5ldyBTUEkuCisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3NsKTsKKyAgICAgICAg
fSwgdGxzMV8xKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5l
d10pOworICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0
KCldOworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RX
aXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAi
aHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAgICAgIFtkZWxl
Z2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CisgICAgICAgIEVYUEVD
VF9UUlVFKFtkZWxlZ2F0ZSByZWNlaXZlZFNob3VsZEFsbG93TGVnYWN5VExTXSk7CisgICAgfQor
ICAgIHsKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1RMU05hdmlnYXRpb25EZWxl
Z2F0ZSBuZXddKTsKKyAgICAgICAgZGVsZWdhdGUuZ2V0KCkuc2hvdWxkQWxsb3dMZWdhY3lUTFMg
PSBZRVM7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRU
UFMsIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSywgdGxzMV8xKTsKKyAgICAgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbV0tXZWJWaWV3IG5ld10pOworICAgICAgICBbd2ViVmlldyBzZXROYXZp
Z2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVy
LnBvcnQoKV1dXV07CisgICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07CisgICAgICAgIEVYUEVDVF9UUlVFKFtkZWxlZ2F0ZSByZWNlaXZlZFNob3VsZEFsbG93TGVn
YWN5VExTXSk7CisgICAgfQorfQorCisvLyBGSVhNRTogQWRkIHNvbWUgdGVzdHMgZm9yIFdLV2Vi
Vmlldy5oYXNPbmx5U2VjdXJlQ29udGVudAorCiB9CiAKICNlbmRpZiAvLyBIQVZFKFNTTCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389257</attachid>
            <date>2020-01-30 09:38:41 -0800</date>
            <delta_ts>2020-01-30 09:46:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206979-20200130093840.patch</filename>
            <type>text/plain</type>
            <size>67466</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAx
LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRlIFNQSSB0byBkaXNhYmxlIFRMUyAxLjAgYW5kIDEu
MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oOgorCiAyMDIwLTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bm5lZWRlZCBkZWZpbml0aW9ucyBm
cm9tIFBsYXRmb3JtLmggZmFtaWx5IGhlYWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA4LDYgKzEwOCwxMCBAQCB0eXBlZGVmIHZvaWQgKF5DRkNhY2hlZFVSTFJlc3BvbnNlQ2FsbEJh
CiAKICNpZiBkZWZpbmVkKF9fT0JKQ19fKQogCitAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2sg
KCkKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIHJldGFpbikgTlNVUkxTZXNzaW9uVGFza01ldHJpY3Mq
IF9pbmNvbXBsZXRlVGFza01ldHJpY3M7CitAZW5kCisKIEBpbnRlcmZhY2UgTlNVUkxDYWNoZSAo
KQogLSAoQ0ZVUkxDYWNoZVJlZilfQ0ZVUkxDYWNoZTsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTUyMTUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDY0IEBACisyMDIwLTAxLTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRlIFNQSSB0
byBkaXNhYmxlIFRMUyAxLjAgYW5kIDEuMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6
OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVu
Z2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2Vzc0NvY29hKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1YXRp
b24pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNr
OmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2Up
OgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaG91bGRB
bGxvd0xlZ2FjeVRMUyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUp
OgorICAgICAgICAoV2ViS2l0OjpzeXN0ZW1BbGxvd3NMZWdhY3lUTFNGb3IpOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNob3VsZEFsbG93TGVn
YWN5VExTKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6
CisKIDIwMjAtMDEtMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGlkYXRlIFVJUHJvY2Vzcy9XZWJQcm9jZXNzIGZpbGVz
IGludG8gSW5zcGVjdG9yIGZvbGRlcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJl
dmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCB2
b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6d2lsbFBlCiAgICAgbV9jb21wbGV0aW9u
Q2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1f
cGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksICJQcmVmbGlnaHQgcmVzcG9uc2UgaXMg
bm90IHN1Y2Nlc3NmdWwiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7
CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQ2hhbGxlbmdlLCBhdXRoZW50aWNhdGlvbiBz
Y2hlbWU6ICV1IiwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2No
ZW1lKCkpOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXI6OmRpZFJlYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+YXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbiA/ICZtX3BhcmFtZXRlcnMudG9wT3JpZ2luLT5kYXRh
KCkgOiBudWxscHRyLCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UobV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VQcm94eUlELCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1ldGVycy50
b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRM
UywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBib29sLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRl
V2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNyArNjAsNyBAQCB1c2luZyBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxl
CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBA
QCB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjCiAgICAgbV9jbGllbnQu
Z2V0KCkud2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKG9sZFJlcXVlc3QpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKIH0KIAotdm9pZCBOZXR3
b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNo
YWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2NsaWVudC5nZXQo
KS5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2
b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1CiAgICAgaWYgKGF1dG8qIHBl
bmRpbmdEb3dubG9hZCA9IG1fdGFzay0+cGVuZGluZ0Rvd25sb2FkKCkpCiAgICAgICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgqcGVuZGluZ0Rvd25sb2FkLCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhl
bnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rh
c2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVy
cy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwg
Y2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0
YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBA
QCBwcml2YXRlOgogCiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50CiAgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwg
Ym9vbCwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVu
Y29kZXIgPDwgZW5hYmxlQWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlOwogICAgIGVuY29kZXIg
PDwgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBoc3RzU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBlbmNvZGVyIDw8IGVuYWJsZUxlZ2FjeVRMUzsKIH0K
IAogYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHJlc3VsdCkK
QEAgLTE3OSw5ICsxNzgsNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oc3RzU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5lbmFibGVMZWdhY3lUTFMpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
OTcsNyArOTcsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgCiAg
ICAgYm9vbCBlbmFibGVBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGUgeyBmYWxzZSB9OwogICAg
IFN0cmluZyBoc3RzU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgYm9vbCBlbmFibGVM
ZWdhY3lUTFMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIgPDwgbG9hZFRocm90dGxlTGF0ZW5j
eTsKICAgICBlbmNvZGVyIDw8IGh0dHBQcm94eTsKICAgICBlbmNvZGVyIDw8IGh0dHBzUHJveHk7
Ci0gICAgZW5jb2RlciA8PCBlbmFibGVMZWdhY3lUTFM7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkK
ICAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKQEAgLTEzOCwxMSAr
MTM3LDYgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcgogICAgIGRl
Y29kZXIgPj4gaHR0cHNQcm94eTsKICAgICBpZiAoIWh0dHBzUHJveHkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxib29sPiBlbmFibGVMZWdhY3lUTFM7Ci0g
ICAgZGVjb2RlciA+PiBlbmFibGVMZWdhY3lUTFM7Ci0gICAgaWYgKCFlbmFibGVMZWdhY3lUTFMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpA
QCAtMjg4LDcgKzI4Miw2IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXIKICAgICAgICAgLCBXVEZNb3ZlKCpsb2FkVGhyb3R0bGVMYXRlbmN5KQogICAgICAgICAsIFdU
Rk1vdmUoKmh0dHBQcm94eSkKICAgICAgICAgLCBXVEZNb3ZlKCpodHRwc1Byb3h5KQotICAgICAg
ICAsIFdURk1vdmUoKmVuYWJsZUxlZ2FjeVRMUykKICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAg
ICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMgCiAgICAgU2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5OwogICAgIFVSTCBo
dHRwUHJveHk7CiAgICAgVVJMIGh0dHBzUHJveHk7Ci0gICAgYm9vbCBlbmFibGVMZWdhY3lUTFMg
eyBmYWxzZSB9OwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgU3RyaW5nIGNvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlUGF0aDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDExICsxNDYsMTEgQEAgdm9p
ZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3RpbwogICAgIH0pOwogfQogCi12b2lk
IFBpbmdMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYg
Y2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmIGNoYWxsZW5nZSwgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVDaGFsbGVuZ2UiKTsKICAgICBpZiAoY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0gUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQpIHsKLSAgICAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPm5ldHdvcmtQcm9jZXNzKCkuYXV0aGVudGljYXRpb25N
YW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fc2Vzc2lvbklELCBt
X3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsICBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1f
cGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+bmV0
d29ya1Byb2Nlc3MoKS5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UobV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwg
IG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgp
IDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogCiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgYm9v
bCwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyNTUwOTIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHVzaW5n
IFRhc2tJZGVudGlmaWVyID0gdWludDY0X3Q7CiAKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2
NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgYm9vbCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjU1MDkyKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTIsMTMgKzUyLDYgQEAKICNpbXBvcnQgPENGTmV0d29yay9DRk5T
VVJMQ29ubmVjdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBfX2hhc19pbmNsdWRlKDxXZWJLaXRBZGRp
dGlvbnMvTmV0d29ya0RhdGFUYXNrQ29jb2FBZGRpdGlvbnMuaD4pCi0jaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL05ldHdvcmtEYXRhVGFza0NvY29hQWRkaXRpb25zLmg+Ci0jZWxzZQotI2RlZmlu
ZSBORVRXT1JLX0RBVEFfVEFTS19DT0NPQV9BRERJVElPTlNfMQotI2RlZmluZSBORVRXT1JLX0RB
VEFfVEFTS19DT0NPQV9BRERJVElPTlNfMgotI2VuZGlmCi0KICNpZiBIQVZFKE9TX1NJR05QT1NU
KQogCiAjaW1wb3J0IDxvcy9zaWducG9zdC5oPgpAQCAtMjg1LDggKzI3OCw2IEBAIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2MKICAgICBhcHBseVNuaWZmaW5nUG9saWNp
ZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250
ZW50U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQg
JiYgIXVybC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJD
b3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCiAgICAgbV90YXNr
ID0gW21fc2Vzc2lvbldyYXBwZXIuc2Vzc2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVz
dF07Ci0gICAgCi0gICAgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05TXzE7CiAKICAg
ICBCRUdJTl9TSUdOUE9TVChtX3Rhc2ssICIle3B1YmxpY31zIHByaTogJWYgcHJlY29ubmVjdDog
JWQiLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIHRvTlNVUkxTZXNzaW9uVGFza1ByaW9y
aXR5KHJlcXVlc3QucHJpb3JpdHkoKSksIHNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5l
Y3RPbmx5OjpZZXMpOwogCkBAIC0zNDgsNyArMzM5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkU2VuZERhdGEodQogICAgICAgICBtX2NsaWVudC0+ZGlkU2VuZERhdGEodG90YWxC
eXRlc1NlbnQsIHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBib29sIG5l
Z290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgRU1JVF9TSUdOUE9TVChtX3Rhc2ssICJyZWNlaXZlZCBjaGFsbGVu
Z2UiKTsKIApAQCAtMzU2LDcgKzM0Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRp
ZFJlY2VpdmVDaGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2xpZW50KQotICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZNb3ZlKGNoYWxsZW5nZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDaGFs
bGVuZ2UoV1RGTW92ZShjaGFsbGVuZ2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCB7IH0pOwpAQCAtNDYwLDkgKzQ1MSw2
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFQKICAgICAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgIGlmICghcmVx
dWVzdC5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXN0cmljdFJlcXVlc3RSZWZlcnJlclRv
T3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7Ci0KLSAgICAgICAgICAgIE5FVFdPUktfREFUQV9UQVNL
X0NPQ09BX0FERElUSU9OU18yOwotCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsKICAgICAgICAgfSk7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcw
LDYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtTZXR0aW5ncygpCiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6c2V0TGVnYWN5VExTRW5hYmxlZChwYXJhbWV0
ZXJzLmVuYWJsZUxlZ2FjeVRMUyk7Ci0KICAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICAgICBX
ZWJDb3JlOjpzZXRBcHBsaWNhdGlvblNES1ZlcnNpb24ocGFyYW1ldGVycy51aVByb2Nlc3NTREtW
ZXJzaW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29s
IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAotICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlQ2hh
bGxlbmdlKFNlc3Npb25XcmFwcGVyJiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRh
VGFza0NvY29hKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJik7Cisg
ICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2UoU2Vzc2lvbldyYXBwZXImLCBjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGJvb2wgbmVnb3RpYXRlZExlZ2Fj
eVRMUywgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRh
c2tDb2NvYSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYpOwogCiAg
ICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkgeyByZXR1cm4g
bV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0JKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTk2LDkgKzU5Niw5
IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKIH0KIAogI2lmIEhB
VkUoQ0ZORVRXT1JLX05TVVJMU0VTU0lPTl9TVFJJQ1RSVVNURVZBTFVBVEUpCi1zdGF0aWMgaW5s
aW5lIHZvaWQgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihOZXR3b3JrU2Vzc2lvbkNvY29h
ICpzZXNzaW9uLCBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXIsIE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVu
dGlmaWVyIHRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSogbmV0d29ya0RhdGFU
YXNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBwcm9jZXNzU2VydmVyVHJ1c3RFdmFs
dWF0aW9uKE5ldHdvcmtTZXNzaW9uQ29jb2EmIHNlc3Npb24sIFNlc3Npb25XcmFwcGVyJiBzZXNz
aW9uV3JhcHBlciwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBib29s
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmll
ciB0YXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqIG5ldHdvcmtEYXRhVGFzaywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgc2Vzc2lvbi0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKHNl
c3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2ss
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZWNUcnVz
dCA9IHJldGFpblB0cihjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0KV0gKFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29u
c3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgbXV0YWJsZSB7CisgICAgc2Vzc2lv
bi5jb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2Uoc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwg
bmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzaywgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlY1RydXN0ID0g
cmV0YWluUHRyKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3QpXSAoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklY
TUU6IFVJUHJvY2VzcyBzaG91bGQgc2VuZCB1cyBiYWNrIG5vbiBuaWwgY3JlZGVudGlhbHMgYnV0
IHRoZSBjcmVkZW50aWFsIElQQyBlbmNvZGVyIGN1cnJlbnRseSBvbmx5IHNlcmlhbGl6ZXMgbnMg
Y3JlZGVudGlhbHMgZm9yIHVzZXJuYW1lL3Bhc3N3b3JkLgogICAgICAgICBpZiAoZGlzcG9zaXRp
b24gPT0gV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVk
ZW50aWFsICYmICFjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05T
VVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6IHNlY1RydXN0LmdldCgpXSk7CkBAIC02
MjgsMTYgKzYyOCwyNSBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Np
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMg
PSBmYWxzZTsKKwogICAgIGlmIChbY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNh
dGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZl
clRydXN0XSkgewogICAgICAgICBpZiAoTmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjaGFsbGVuZ2UpKQogICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFs
LCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlLnNlcnZlclRydXN0XSk7CiAKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1Qp
CisgICAgICAgIE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKm1ldHJpY3MgPSB0
YXNrLl9pbmNvbXBsZXRlVGFza01ldHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7
CisgICAgICAgIGF1dG8gdGxzVmVyc2lvbiA9ICh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KW1ldHJp
Y3MubmVnb3RpYXRlZFRMU1Byb3RvY29sVmVyc2lvbi51bnNpZ25lZFNob3J0VmFsdWU7CisgICAg
ICAgIGlmICh0bHNWZXJzaW9uID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0bHNW
ZXJzaW9uID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMSkKKyAgICAgICAgICAgIG5lZ290
aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOworI2VuZGlmCisKICAgICAgICAgLy8gSGFuZGxlIHNlcnZl
ciB0cnVzdCBldmFsdWF0aW9uIGF0IHBsYXRmb3JtLWxldmVsIGlmIHJlcXVlc3RlZCwgZm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMgYW5kIHRvIHVzZSBBVFMgZGVmYXVsdHMuCi0gICAgICAgIGlmIChz
ZXNzaW9uQ29jb2EtPmZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkKCkpIHsKKyAgICAg
ICAgaWYgKHNlc3Npb25Db2NvYS0+ZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQoKSAm
JiAhbmVnb3RpYXRlZExlZ2FjeVRMUykgewogI2lmIEhBVkUoQ0ZORVRXT1JLX05TVVJMU0VTU0lP
Tl9TVFJJQ1RSVVNURVZBTFVBVEUpCiAgICAgICAgICAgICBhdXRvKiBuZXR3b3JrRGF0YVRhc2sg
PSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza107CiAgICAgICAgICAgICBBU1NFUlQobmV0d29ya0Rh
dGFUYXNrKTsKLSAgICAgICAgICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4oc2VsZiks
IHNlc3Npb25Db2NvYSA9IG1ha2VXZWFrUHRyKHNlc3Npb25Db2NvYSksIGNvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFza0lkZW50aWZpZXIsIG5l
dHdvcmtEYXRhVGFzayA9IFJlZlB0cjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4obmV0d29ya0RhdGFU
YXNrKV0oTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBPU1N0YXR1cyB0
cnVzdFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS05ldHdvcmtTZXNzaW9uRGVs
ZWdhdGU+KHNlbGYpLCBzZXNzaW9uQ29jb2EgPSBtYWtlV2Vha1B0cihzZXNzaW9uQ29jb2EpLCBj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIHRhc2tJ
ZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2sgPSBtYWtlUmVmUHRyKG5ldHdvcmtEYXRhVGFzayks
IG5lZ290aWF0ZWRMZWdhY3lUTFNdKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxs
ZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGF1
dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwogICAgICAgICAgICAgICAgIGlmICghc3Ry
b25nU2VsZikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmls
KTsKQEAgLTY0Nyw3ICs2NTYsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAq
KXNlc3NpCiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHByb2Nl
c3NTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oc2Vzc2lvbiwgKnN0cm9uZ1NlbGYtPl9zZXNzaW9uV3Jh
cHBlciwgY2hhbGxlbmdlLCB0YXNrSWRlbnRpZmllciwgdGFzay5nZXQoKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24oKnNlc3Npb24sICpzdHJvbmdTZWxmLT5fc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwg
bmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIHRhc2suZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgW05TVVJM
U2Vzc2lvbiBfc3RyaWN0VHJ1c3RFdmFsdWF0ZTpjaGFsbGVuZ2UgcXVldWU6W05TT3BlcmF0aW9u
UXVldWUgbWFpblF1ZXVlXS51bmRlcmx5aW5nUXVldWUgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNp
b25IYW5kbGVyLmdldCgpXTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY1Niw3ICs2NjUsNyBA
QCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAjZW5kaWYKICAgICAg
ICAgfQogICAgIH0KLSAgICBzZXNzaW9uQ29jb2EtPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5n
ZSgqX3Nlc3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBbc2VsZiBleGlz
dGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFi
bGUgeworICAgIHNlc3Npb25Db2NvYS0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKCpfc2Vz
c2lvbldyYXBwZXIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZp
ZXIsIFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3Jl
ZGVudGlhbCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0Ny
ZWRlbnRpYWwoKSk7CiAgICAgfSk7CiB9CkBAIC0xMDE5LDE0ICsxMDI4LDYgQEAgTmV0d29ya1Nl
c3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYQogCiAgICAgTlNVUkxTZXNzaW9uQ29uZmln
dXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25Gb3JTZXNzaW9uSUQobV9zZXNz
aW9uSUQpOwogCi0gICAgaWYgKCFwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUykgewotI2lmIEhB
VkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKLSAgICAgICAgY29uZmlndXJhdGlvbi5UTFNNaW5p
bXVtU3VwcG9ydGVkUHJvdG9jb2xWZXJzaW9uID0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEy
OwotI2Vsc2UKLSAgICAgICAgY29uZmlndXJhdGlvbi5UTFNNaW5pbXVtU3VwcG9ydGVkUHJvdG9j
b2wgPSBrVExTUHJvdG9jb2wxMjsKLSNlbmRpZgotICAgIH0KLQogI2lmIEhBVkUoQVBQX1NTTykK
ICAgICBjb25maWd1cmF0aW9uLl9wcmV2ZW50c0FwcFNTTyA9IHRydWU7CiAjZW5kaWYKQEAgLTEy
OTcsNyArMTI5OCw3IEBAIGJvb2wgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lmaWMK
ICAgICByZXR1cm4gY2VydGlmaWNhdGVzTWF0Y2godHJ1c3QuZ2V0KCksIGNoYWxsZW5nZS5uc1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0KTsK
IH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlY2VpdmVDaGFsbGVu
Z2UoU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lk
ZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKiBuZXR3b3JrRGF0
YVRhc2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNvbnRpbnVlRGlkUmVjZWl2ZUNo
YWxsZW5nZShTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXIsIGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRM
UywgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBO
ZXR3b3JrRGF0YVRhc2tDb2NvYSogbmV0d29ya0RhdGFUYXNrLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2Vi
Q29yZTo6Q3JlZGVudGlhbCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbmV0
d29ya0RhdGFUYXNrKSB7CiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQpAQCAtMTM0
OSw3ICsxMzUwLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlYwog
I2VuZGlmCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRpc3Bvc2l0aW9uLCBjcmVkZW50aWFs
KTsKICAgICB9OwotICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZN
b3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlcikpOworICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZN
b3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92
ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiBETUZXZWJzaXRlUG9saWN5TW9u
aXRvciAqTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGV2aWNlTWFuYWdlbWVudFBvbGljeU1vbml0b3Io
KQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp0cnlI
dHRwQXV0aGVudAogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVD
aGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2hhbGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KSB7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY2hhbGxlbmdlKSwgZmFsc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNoYWxsZW5nZV0oQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNw
b3NpdGlvbiwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkgewogICAgICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQ3VybDo6dHJ5SHR0cEF1dGhlbnQKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp0
cnlQcm94eUF1dGhlbnRpY2F0aW9uKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYg
Y2hhbGxlbmdlKQogewotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNoYWxsZW5nZV0oQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBk
aXNwb3NpdGlvbiwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkgeworICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSks
IGZhbHNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjaGFsbGVuZ2Vd
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENy
ZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNh
bmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OnRyeVBy
b3h5QXV0aGVuCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6dHJ5U2VydmVyVHJ1c3RFdmFs
dWF0aW9uKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlKQogewotICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5n
ZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNoYWxsZW5nZV0oQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgQ3JlZGVu
dGlhbCYgY3JlZGVudGlhbCkgeworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2hhbGxlbmdlKEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSksIGZhbHNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjaGFsbGVuZ2VdKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsK
ICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0
YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMxLDcgKzUz
MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6YXV0aGVudGljYXRlKEEKIAogdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUF1dGhlbnRpY2F0ZShBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmIGNoYWxsZW5nZSkKIHsKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjaGFsbGVuZ2VdKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKKyAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
aGFsbGVuZ2UpLCBmYWxzZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y2hhbGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9u
LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKSB7CiAgICAg
ICAgICAgICBjbGVhclJlcXVlc3QoKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIFZlY3Rvcjx1aW50NjRfdD4gQXV0aGVudGljYXRpb25N
YW5hZ2VyOjoKICAgICByZXR1cm4gY2hhbGxlbmdlc1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhKiB0b3BPcmlnaW4sIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhKiB0
b3BPcmlnaW4sIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghcGFnZUlEKQogICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZywgeyB9KTsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgT3B0aW9uYWw8U2VjdXJp
dHlPcmlnaW5EYXRhPiB0b3BPcmlnaW5EYXRhOwogICAgIGlmICh0b3BPcmlnaW4pCiAgICAgICAg
IHRvcE9yaWdpbkRhdGEgPSAqdG9wT3JpZ2luOwotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
c2Vzc2lvbklELCBwYWdlSUQsIHRvcE9yaWdpbkRhdGEsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCBjaGFsbGVuZ2VJRCkpOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uoc2Vzc2lvbklELCBw
YWdlSUQsIHRvcE9yaWdpbkRhdGEsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuZWdvdGlhdGVk
TGVnYWN5VExTLCBjaGFsbGVuZ2VJRCkpOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYg
ZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCShyZXZpc2lvbiAyNTUwOTIpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEqICwgY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25J
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhKiAsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgYm9vbCwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKIAogICAgIHZvaWQgY29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBj
aGFsbGVuZ2VJRCwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6
Q3JlZGVudGlhbCYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY2Niw4ICs3NjY2LDE3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnYW1lcGFkQWN0aXZpdHkoY29uc3QKIAogI2VuZGlmCiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
Ym9vbCBuZWdvdGlhdGVkTGVnYWN5VExTKQogeworICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExT
KSB7CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+c2hvdWxkQWxsb3dMZWdhY3lUTFMoKnRo
aXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmNvcHlSZWYoKV0gKGJvb2wgc2hvdWxkQWxsb3dMZWdhY3lUTFMpIHsKKyAgICAg
ICAgICAgIGlmIChzaG91bGRBbGxvd0xlZ2FjeVRMUykKKyAgICAgICAgICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxl
bmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7CisgICAgICAg
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyNyw3ICsxMzI3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJik7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
LnZhbHVlT3IoV2ViQ29yZTo6SW50U2l6ZSgpKTsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eT4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShS
ZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiwgYm9vbCk7CiAKICAgICBTcGVsbERv
Y3VtZW50VGFnIHNwZWxsRG9jdW1lbnRUYWcoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCShyZXZpc2lvbiAyNTUwOTIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hhbGxlbmdl
Lmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQnlwYXNzQ29udGVudE1vZGVTYWZlZ3VhcmRzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEZJWE1FOiBUaGVzZSBmdW5jdGlvbiBzaG91bGQg
bm90IGJlIHBhcnQgb2YgdGhpcyBjbGllbnQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDYgKzg2LDggQEAgc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IAogCiAt
IChOU0RhdGEgKilfd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldzsKIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBz
aG91bGRBbGxvd0xlZ2FjeVRMUzoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAo
dm9pZClfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6KFdLV2ViVmlldyAqKXdlYlZp
ZXc7CiAvLyBJdGVtIGlzIG5pbCBpZiB0aGUgZ2VzdHVyZSBlbmRlZCB3aXRob3V0IG5hdmlnYXRp
b24uCiAtICh2b2lkKV93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6KFdLV2ViVmlldyAq
KXdlYlZpZXcgd2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0Zvcndh
cmRMaXN0SXRlbSAqKWl0ZW07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
Miw2ICsxMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHNob3VsZEJ5cGFzc0NvbnRlbnRN
b2RlU2FmZWd1YXJkcygpIGNvbnN0IGZpbmFsOwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhX
ZWJQYWdlUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgICAgIGJvb2wgcHJvY2Vzc0RpZFRlcm1p
bmF0ZShXZWJQYWdlUHJveHkmLCBQcm9jZXNzVGVybWluYXRpb25SZWFzb24pIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKFdlYlBhZ2VQcm94eSYpIG92
ZXJyaWRlOwogICAgICAgICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoV2ViUGFn
ZVByb3h5Jikgb3ZlcnJpZGU7CkBAIC0yMTUsNiArMjE2LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBib29sIHdlYlZpZXdSZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSA6IDE7CiAgICAgICAgIGJv
b2wgd2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyIDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTaG91
bGRBbGxvd0xlZ2FjeVRMUyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dlYkNvbnRlbnRQcm9j
ZXNzRGlkVGVybWluYXRlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViQ29udGVudFByb2Nl
c3NEaWRUZXJtaW5hdGVXaXRoUmVhc29uIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJv
Y2Vzc0RpZENyYXNoIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
NzksNiArNzksMTEgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8
d3RmL1VSTC5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorI2ltcG9ydCA8cGFsL2lvcy9NYW5hZ2VkQ29uZmlndXJhdGlvblNvZnRMaW5rLmg+
CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9NYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oPgorI2VuZGlm
CisKICNpZiBIQVZFKEFQUF9MSU5LUykKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2Vy
dmljZXNTUEkuaD4KICNlbmRpZgpAQCAtMTY2LDYgKzE3MSw3IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWcKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld05hdmlnYXRpb25EaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bmF2aWdhdGlvbjpkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3UmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZTopXTsKICAg
ICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndl
YlZpZXdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNob3VsZEFsbG93TGVnYWN5VExTID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6YXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6c2hvdWxkQWxsb3dMZWdhY3lUTFM6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZSA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0Rp
ZFRlcm1pbmF0ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dl
YkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlV2l0aFJlYXNvbiA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWlu
YXRlV2l0aFJlYXNvbjopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1dlYlByb2Nlc3NEaWRDcmFzaCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoOildOwpAQCAtOTczLDYgKzk3OSwzOSBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgfSkuZ2V0KCldOwog
fQogCitzdGF0aWMgYm9vbCBzeXN0ZW1BbGxvd3NMZWdhY3lUTFNGb3IoV2ViUGFnZVByb3h5JiBw
YWdlKQoreworICAgIGJvb2wgZW5hYmxlTGVnYWN5VExTID0gcGFnZS53ZWJzaXRlRGF0YVN0b3Jl
KCkuY29uZmlndXJhdGlvbigpLmxlZ2FjeVRMU0VuYWJsZWQoKTsKKyAgICBpZiAoaWQgdmFsdWUg
PSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJX
ZWJLaXRFbmFibGVMZWdhY3lUTFMiXSkKKyAgICAgICAgZW5hYmxlTGVnYWN5VExTID0gW3ZhbHVl
IGJvb2xWYWx1ZV07CisgICAgaWYgKCFlbmFibGVMZWdhY3lUTFMpIHsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgICAgIGVuYWJsZUxlZ2Fj
eVRMUyA9IFtbUEFMOjpnZXRNQ1Byb2ZpbGVDb25uZWN0aW9uQ2xhc3MoKSBzaGFyZWRDb25uZWN0
aW9uXSBlZmZlY3RpdmVCb29sVmFsdWVGb3JTZXR0aW5nOkAiYWxsb3dEZXByZWNhdGVkV2ViS2l0
VExTIl0gPT0gTUNSZXN0cmljdGVkQm9vbEV4cGxpY2l0WWVzOworI2VsaWYgUExBVEZPUk0oTUFD
KQorICAgICAgICBlbmFibGVMZWdhY3lUTFMgPSBDRlByZWZlcmVuY2VzR2V0QXBwQm9vbGVhblZh
bHVlKENGU1RSKCJhbGxvd0RlcHJlY2F0ZWRXZWJLaXRUTFMiKSwgQ0ZTVFIoImNvbS5hcHBsZS5h
cHBsaWNhdGlvbmFjY2VzcyIpLCBudWxscHRyKTsKKyNlbmRpZgorICAgIH0KKyAgICByZXR1cm4g
ZW5hYmxlTGVnYWN5VExTOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6c2hvdWxkQWxsb3dMZWdhY3lUTFMoV2ViUGFnZVByb3h5JiBwYWdlLCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTaG91bGRBbGxvd0xlZ2FjeVRMUykKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHN5c3RlbUFsbG93c0xlZ2FjeVRMU0ZvcihwYWdlKSk7CisKKyAgICBhdXRv
IG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVn
YXRlLmdldCgpOworICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoc3lzdGVtQWxsb3dzTGVnYWN5VExTRm9yKHBhZ2UpKTsKKworICAg
IGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzphdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTpzaG91bGRBbGxvd0xlZ2FjeVRMUzopKTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OndyYXBwZXIoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIHNob3VsZEFsbG93TGVnYWN5VExTOm1h
a2VCbG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgc2hvdWxkQWxsb3cpIG11dGFibGUg
eworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzaG91bGRBbGxvdyk7CisgICAg
fSkuZ2V0KCldOworfQorCiBzdGF0aWMgX1dLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHdrUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7
CiAgICAgc3dpdGNoIChyZWFzb24pIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjU1MDkyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzgxLDE4ICszODEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybUluaXRpYWxpemVOCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwYXJhbWV0ZXJzLmVu
YWJsZUxlZ2FjeVRMUyA9IGZhbHNlOwotICAgIGlmIChpZCB2YWx1ZSA9IFtkZWZhdWx0cyBvYmpl
Y3RGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiXSkKLSAgICAgICAgcGFyYW1ldGVycy5l
bmFibGVMZWdhY3lUTFMgPSBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBpZiAoIXBhcmFtZXRlcnMu
ZW5hYmxlTGVnYWN5VExTKSB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQotICAgICAgICBwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUyA9IFtbUEFM
OjpnZXRNQ1Byb2ZpbGVDb25uZWN0aW9uQ2xhc3MoKSBzaGFyZWRDb25uZWN0aW9uXSBlZmZlY3Rp
dmVCb29sVmFsdWVGb3JTZXR0aW5nOkAiYWxsb3dEZXByZWNhdGVkV2ViS2l0VExTIl0gPT0gTUNS
ZXN0cmljdGVkQm9vbEV4cGxpY2l0WWVzOwotI2VsaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBw
YXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUyA9IENGUHJlZmVyZW5jZXNHZXRBcHBCb29sZWFuVmFs
dWUoQ0ZTVFIoImFsbG93RGVwcmVjYXRlZFdlYktpdFRMUyIpLCBDRlNUUigiY29tLmFwcGxlLmFw
cGxpY2F0aW9uYWNjZXNzIiksIG51bGxwdHIpOwotI2VuZGlmCi0gICAgfQotICAgIHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVu
YWJsZUxlZ2FjeVRMUyA9IHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5VExTOwotCiAgICAgcGFyYW1l
dGVycy5uZXR3b3JrQVRTQ29udGV4dCA9IGFkb3B0Q0YoX0NGTmV0d29ya0NvcHlBVFNDb250ZXh0
KCkpOwogCiAgICAgcGFyYW1ldGVycy5zaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxl
ciA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5k
bGVyRGVmYXVsdHNLZXldOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNTUwOTIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzQXV0aGVudAogICAgIHN0b3JlLT5jbGllbnQoKS5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCBjb25zdCBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+JiB0b3BPcmlnaW4sIFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hh
bGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+JiB0b3BPcmln
aW4sIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgYm9v
bCBuZWdvdGlhdGVkTGVnYWN5VExTLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKIHsKICNpZiBIQVZF
KFNFQ19LRVlfUFJPWFkpCiAgICAgV2Vha1B0cjxTZWNLZXlQcm94eVN0b3JlPiBzZWNLZXlQcm94
eVN0b3JlOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZUF1dGgKICAgICAgICAgcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdl
SUQpOwogCiAgICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgcGFnZS0+ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkoV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOwor
ICAgICAgICBwYWdlLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShXVEZN
b3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1NiwxMiArMzU2LDEyIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFdlYlBhZ2VQcm94eTo6Zm9yTW9zdFZpc2libGVXZWJQYWdlSWZBbnkoc2Vzc2lvbklELCAqdG9w
T3JpZ2luLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
XShhdXRvKiBwYWdlKSBtdXRhYmxlIHsKKyAgICBXZWJQYWdlUHJveHk6OmZvck1vc3RWaXNpYmxl
V2ViUGFnZUlmQW55KHNlc3Npb25JRCwgKnRvcE9yaWdpbiwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIHNlc3Npb25JRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBXVEZN
b3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgbmVnb3RpYXRlZExlZ2FjeVRMU10oYXV0byog
cGFnZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgICAgIHBhZ2UtPmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpKTsKKyAgICAgICAgICAgIHBhZ2UtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5KFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBuZWdvdGlhdGVkTGVnYWN5
VExTKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzQXV0
aGVudGljYXRpb25DaGFsbGVuZ2Uoc2Vzc2lvbklELCBXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzNSw3ICsyMzUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOworICAgIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgYm9vbCwgdWludDY0X3QgY2hh
bGxlbmdlSUQpOwogICAgIHZvaWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFj
a0lELCBjb25zdCBXZWJzaXRlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEo
dWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9y
aWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIx
LDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQ
cm94eSBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKLSAgICBEaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+IHRvcE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxl
bmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKKyAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRv
cE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCBib29s
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogCiAgICAgRGlkRmV0
Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRl
RGF0YSB3ZWJzaXRlRGF0YSkKICAgICBEaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxs
YmFja0lEKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZp
c2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Vu
YWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFn
ZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dz
Q2VsbHVsYXJBY2Nlc3MgeyB0cnVlIH07Ci0gICAgYm9vbCBtX2xlZ2FjeVRMU0VuYWJsZWQgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9sZWdhY3lUTFNFbmFibGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgeyB0cnVlIH07CiAg
ICAgYm9vbCBtX3Rlc3RpbmdTZXNzaW9uRW5hYmxlZCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTg1LDE2ICs4NSw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
ID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
ID0gZmFsc2U7CiAgICAgYXV0byBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOwot
ICAgIGJvb2wgZW5hYmxlTGVnYWN5VExTID0gY29uZmlndXJhdGlvbigpLmxlZ2FjeVRMU0VuYWJs
ZWQoKTsKLSAgICBpZiAoaWQgdmFsdWUgPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OkAiV2ViS2l0
RW5hYmxlTGVnYWN5VExTIl0pCi0gICAgICAgIGVuYWJsZUxlZ2FjeVRMUyA9IFt2YWx1ZSBib29s
VmFsdWVdOwotICAgIGlmICghZW5hYmxlTGVnYWN5VExTKSB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgICAgICBlbmFibGVMZWdhY3lUTFMg
PSBbW1BBTDo6Z2V0TUNQcm9maWxlQ29ubmVjdGlvbkNsYXNzKCkgc2hhcmVkQ29ubmVjdGlvbl0g
ZWZmZWN0aXZlQm9vbFZhbHVlRm9yU2V0dGluZzpAImFsbG93RGVwcmVjYXRlZFdlYktpdFRMUyJd
ID09IE1DUmVzdHJpY3RlZEJvb2xFeHBsaWNpdFllczsKLSNlbGlmIFBMQVRGT1JNKE1BQykKLSAg
ICAgICAgZW5hYmxlTGVnYWN5VExTID0gQ0ZQcmVmZXJlbmNlc0dldEFwcEJvb2xlYW5WYWx1ZShD
RlNUUigiYWxsb3dEZXByZWNhdGVkV2ViS2l0VExTIiksIENGU1RSKCJjb20uYXBwbGUuYXBwbGlj
YXRpb25hY2Nlc3MiKSwgbnVsbHB0cik7Ci0jZW5kaWYKLSAgICB9CiAgICAgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291
cmNlIHsgfTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpA
IklUUERlYnVnTW9kZSJdOwpAQCAtMTY0LDcgKzE1NCw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICAgICAgU2Vjb25kcyB7IFtkZWZhdWx0cyBpbnRlZ2Vy
Rm9yS2V5OldlYktpdE5ldHdvcmtMb2FkVGhyb3R0bGVMYXRlbmN5TWlsbGlzZWNvbmRzRGVmYXVs
dHNLZXldIC8gMTAwMC4gfSwKICAgICAgICAgV1RGTW92ZShodHRwUHJveHkpLAogICAgICAgICBX
VEZNb3ZlKGh0dHBzUHJveHkpLAotICAgICAgICBlbmFibGVMZWdhY3lUTFMsCiAgICAgICAgIFdU
Rk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUo
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZSksCiAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCksCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMS0yOSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBXS05hdmlnYXRp
b25EZWxlZ2F0ZSBTUEkgdG8gZGlzYWJsZSBUTFMgMS4wIGFuZCAxLjEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjk3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3Jv
dXBOYW1lOl0pOgorCiAyMDIwLTAxLTIyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBMZWdhY3kgV2ViS2l0OiBBZGQgU1BJIHZhcmlhbnQgb2YgLXNldFNlbGVj
dGVkRE9NUmFuZ2UgdGhhdCBjYW4gcGVyZm9ybSB0aGUgc2VsZWN0aW9uIGFzIGlmIHRyaWdnZXJl
ZCBieSB0aGUgdXNlcgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIxLDE5ICsxNDIxLDYgQEAgLSAo
dm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgICAgICBpZiAoV2ViQ29y
ZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCiAgICAgICAgICAgICBXZWJDb3Jl
OjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNh
dGVnb3J5KHRydWUpOwogI2VuZGlmCi0KLSAgICAgICAgYm9vbCBlbmFibGVMZWdhY3lUTFMgPSBm
YWxzZTsKLSAgICAgICAgaWYgKGlkIHZhbHVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OkAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIl0pCi0gICAg
ICAgICAgICBlbmFibGVMZWdhY3lUTFMgPSBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICAgICAgaWYg
KCFlbmFibGVMZWdhY3lUTFMpIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCi0gICAgICAgICAgICBlbmFibGVMZWdhY3lUTFMgPSBbW1BBTDo6Z2V0
TUNQcm9maWxlQ29ubmVjdGlvbkNsYXNzKCkgc2hhcmVkQ29ubmVjdGlvbl0gZWZmZWN0aXZlQm9v
bFZhbHVlRm9yU2V0dGluZzpAImFsbG93RGVwcmVjYXRlZFdlYktpdFRMUyJdID09IE1DUmVzdHJp
Y3RlZEJvb2xFeHBsaWNpdFllczsKLSNlbGlmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgICAgIGVu
YWJsZUxlZ2FjeVRMUyA9IENGUHJlZmVyZW5jZXNHZXRBcHBCb29sZWFuVmFsdWUoQ0ZTVFIoImFs
bG93RGVwcmVjYXRlZFdlYktpdFRMUyIpLCBDRlNUUigiY29tLmFwcGxlLmFwcGxpY2F0aW9uYWNj
ZXNzIiksIG51bGxwdHIpOwotI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6c2V0TGVnYWN5VExTRW5hYmxlZChlbmFibGVMZWdhY3lUTFMp
OwotCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAgfQogCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTU0MTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMSBAQAorMjAyMC0wMS0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIEFkZCBXS05hdmlnYXRpb25EZWxlZ2F0ZSBTUEkgdG8gZGlzYWJs
ZSBUTFMgMS4wIGFuZCAxLjEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNjk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW06Cisg
ICAgICAgICgtW1RMU05hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl0pOgorICAgICAgICAoLVtUTFNOYXZpZ2F0aW9uRGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92
aXNpb25hbE5hdmlnYXRpb25dKToKKyAgICAgICAgKC1bVExTTmF2aWdhdGlvbkRlbGVnYXRlIHJl
Y2VpdmVkU2hvdWxkQWxsb3dMZWdhY3lUTFNdKToKKyAgICAgICAgKC1bVExTTmF2aWdhdGlvbkRl
bGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUTFNOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpk
aWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtUTFNOYXZpZ2F0aW9uRGVsZWdhdGUg
d2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndpdGhFcnJvcjpdKToKKyAgICAg
ICAgKC1bVExTTmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOnNob3VsZEFsbG93TGVnYWN5VExTOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisKIDIwMjAtMDEtMjkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIHJ1bi1zYWZhcmkgLyBydW4td2Via2l0LXRlc3RzIC0taW9zLXNpbXVsYXRvciBu
b3Qgd29ya2luZyB3aXRoIFhDb2RlIDEzLjMuMSAoMTFDNTA0KQpJbmRleDogVG9vbHMvTWluaUJy
b3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL01pbmlC
cm93c2VyL21hYy9TZXR0aW5nc0NvbnRyb2xsZXIubQkocmV2aXNpb24gMjU1MDkyKQorKysgVG9v
bHMvTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tCSh3b3JraW5nIGNvcHkpCkBA
IC0zMyw3ICszMyw3IEBACiAKIE5TU3RyaW5nICogY29uc3Qga1VzZXJBZ2VudENoYW5nZWROb3Rp
ZmljYXRpb25OYW1lID0gQCJVc2VyQWdlbnRDaGFuZ2VkTm90aWZpY2F0aW9uIjsKIAotc3RhdGlj
IE5TU3RyaW5nICogY29uc3QgZGVmYXVsdFVSTCA9IEAiaHR0cDovL3d3dy53ZWJraXQub3JnLyI7
CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBkZWZhdWx0VVJMID0gQCJodHRwOi8vZW4ud2lraXBl
ZGlhLm9yZy8iOwogc3RhdGljIE5TU3RyaW5nICogY29uc3QgRGVmYXVsdFVSTFByZWZlcmVuY2VL
ZXkgPSBAIkRlZmF1bHRVUkwiOwogCiBzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBDdXN0b21Vc2Vy
QWdlbnRQcmVmZXJlbmNlS2V5ID0gQCJDdXN0b21Vc2VyQWdlbnRJZGVudGlmaWVyIjsKSW5kZXg6
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNE
ZXByZWNhdGlvbi5tbQkocmV2aXNpb24gMjU1MDkyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNzEs
MTkgKzcxLDc0IEBAIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBydW5KYXYKIAog
QGVuZAogCitAaW50ZXJmYWNlIFRMU05hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05h
dmlnYXRpb25EZWxlZ2F0ZT4KKy0gKHZvaWQpd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb247Cist
ICh2b2lkKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOworLSAoYm9vbClyZWNl
aXZlZFNob3VsZEFsbG93TGVnYWN5VExTOworQHByb3BlcnR5IChub25hdG9taWMpIGJvb2wgc2hv
dWxkQWxsb3dMZWdhY3lUTFM7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBUTFNOYXZpZ2F0aW9u
RGVsZWdhdGUgeworICAgIGJvb2wgX25hdmlnYXRpb25GaW5pc2hlZDsKKyAgICBib29sIF9uYXZp
Z2F0aW9uRmFpbGVkOworICAgIGJvb2wgX3JlY2VpdmVkU2hvdWxkQWxsb3dMZWdhY3lUTFM7Cit9
CisKKy0gKHZvaWQpd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb24KK3sKKyAgICB3aGlsZSAoIV9u
YXZpZ2F0aW9uRmluaXNoZWQpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5M
b29wKCk7Cit9CisKKy0gKHZvaWQpd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24K
K3sKKyAgICB3aGlsZSAoIV9uYXZpZ2F0aW9uRmFpbGVkKQorICAgICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpzcGluUnVuTG9vcCgpOworfQorCistIChib29sKXJlY2VpdmVkU2hvdWxkQWxsb3dM
ZWdhY3lUTFMKK3sKKyAgICByZXR1cm4gX3JlY2VpdmVkU2hvdWxkQWxsb3dMZWdhY3lUTFM7Cit9
CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKiljaGFsbGVu
Z2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VE
aXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICogY3JlZGVudGlhbCkpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNl
cnZlclRydXN0KTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxl
bmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hh
bGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOworfQorCistICh2b2lkKXdlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9u
ICopbmF2aWdhdGlvbgoreworICAgIF9uYXZpZ2F0aW9uRmluaXNoZWQgPSB0cnVlOworfQorCist
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3IgKill
cnJvcgoreworICAgIF9uYXZpZ2F0aW9uRmFpbGVkID0gdHJ1ZTsKK30KKworLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBzaG91bGRBbGxvd0xlZ2FjeVRMUzoo
dm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfcmVjZWl2ZWRTaG91bGRB
bGxvd0xlZ2FjeVRMUyA9IHRydWU7CisgICAgY29tcGxldGlvbkhhbmRsZXIoW3NlbGYgc2hvdWxk
QWxsb3dMZWdhY3lUTFNdKTsKK30KKworQGVuZAorCisKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIAogY29uc3QgdWludDE2X3QgdGxzMV8xID0gMHgwMzAyOwogc3RhdGljIE5TU3RyaW5nICpk
ZWZhdWx0c0tleSA9IEAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIjsKIAotVEVTVChXZWJLaXQsIFRM
U1ZlcnNpb25XZWJTb2NrZXQpCitURVNUKFRMU1ZlcnNpb24sIFdlYlNvY2tldCkKIHsKICAgICBh
dXRvIGdldFdlYlNvY2tldEV2ZW50ID0gW10gKGJvb2wgY2xpZW50QWxsb3dEZXByZWNhdGVkVExT
LCBib29sIHNlcnZlckxpbWl0VExTKSB7CiAgICAgICAgIE9wdGlvbmFsPHVpbnQxNl90PiBtYXhT
ZXJ2ZXJUTFNWZXJzaW9uOwogICAgICAgICBpZiAoc2VydmVyTGltaXRUTFMpCiAgICAgICAgICAg
ICBtYXhTZXJ2ZXJUTFNWZXJzaW9uID0gdGxzMV8xOwogICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVy
KFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbPV0oU1NMICpzc2wpIHsKLSAgICAgICAgICAg
IEVYUEVDVF9UUlVFKCFzc2wgPT0gKGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUyAhPSBzZXJ2ZXJM
aW1pdFRMUykpOworICAgICAgICAgICAgRVhQRUNUX1RSVUUoIXNzbCA9PSBzZXJ2ZXJMaW1pdFRM
Uyk7CiAgICAgICAgIH0sIG1heFNlcnZlclRMU1ZlcnNpb24pOwogCiAgICAgICAgIGlmIChjbGll
bnRBbGxvd0RlcHJlY2F0ZWRUTFMpCkBAIC0xMDgsNjcgKzE2MywxNCBAQCBURVNUKFdlYktpdCwg
VExTVmVyc2lvbldlYlNvY2tldCkKICAgICAgICAgcmV0dXJuIG1lc3NhZ2U7CiAgICAgfTsKIAot
ICAgIEVYUEVDVF9XS19TVFJFUShnZXRXZWJTb2NrZXRFdmVudCh0cnVlLCB0cnVlKSwgImNsb3Nl
Iik7CisgICAgRVhQRUNUX1dLX1NUUkVRKGdldFdlYlNvY2tldEV2ZW50KHRydWUsIHRydWUpLCAi
ZXJyb3I6IHVuZGVmaW5lZCIpOwogICAgIE5TU3RyaW5nICptZXNzYWdlID0gZ2V0V2ViU29ja2V0
RXZlbnQoZmFsc2UsIHRydWUpOwogICAgIEVYUEVDVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0
cmluZzpAImVycm9yOiB1bmRlZmluZWQiXSB8fCBbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJj
bG9zZSJdKTsKICAgICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZlbnQoZmFsc2UsIGZh
bHNlKSwgImNsb3NlIik7CiB9CiAKLU5TU3RyaW5nICpnZXRXZWJTb2NrZXRFdmVudFdlYktpdExl
Z2FjeShib29sIGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUywgYm9vbCBzZXJ2ZXJMaW1pdFRMUykK
LXsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdlYktpdEluaXRpYWxpemUoKTsKLSAg
ICBXZWJUaHJlYWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gbWF4U2Vy
dmVyVExTVmVyc2lvbjsKLSAgICBpZiAoc2VydmVyTGltaXRUTFMpCi0gICAgICAgIG1heFNlcnZl
clRMU1ZlcnNpb24gPSB0bHMxXzE7Ci0gICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlBy
b3RvY29sOjpIVFRQUywgWz1dKFNTTCAqc3NsKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCFzc2wg
PT0gKGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUyAhPSBzZXJ2ZXJMaW1pdFRMUykpOwotICAgIH0s
IG1heFNlcnZlclRMU1ZlcnNpb24pOwotCi0gICAgaWYgKGNsaWVudEFsbG93RGVwcmVjYXRlZFRM
UykKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9v
bDpZRVMgZm9yS2V5OmRlZmF1bHRzS2V5XTsKLSAgICAKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtXZWJWaWV3IG5ld10pOwotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtXZWJTb2Nr
ZXREZWxlZ2F0ZSBuZXddKTsKLSAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKLSAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRl
KHRydWUpOwotICAgIFtbd2ViVmlldyBtYWluRnJhbWVdIGxvYWRIVE1MU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OgotICAgICAgICBAIjxzY3JpcHQ+IgotICAgICAgICAiY29uc3Qg
c29ja2V0ID0gbmV3IFdlYlNvY2tldCgnd3NzOi8vbG9jYWxob3N0OiVkJyk7IgotICAgICAgICAi
c29ja2V0Lm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCl7IGFsZXJ0KCdjbG9zZScpOyB9OyIKLSAg
ICAgICAgInNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBhbGVydCgnZXJyb3I6ICcg
KyBldmVudC5kYXRhKTsgfTsiCi0gICAgICAgICI8L3NjcmlwdD4iLCBzZXJ2ZXIucG9ydCgpXSBi
YXNlVVJMOm5pbF07Ci0gICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbZGVsZWdhdGUgd2FpdEZvck1l
c3NhZ2VdOwotCi0gICAgaWYgKGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUykKLSAgICAgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlT2JqZWN0Rm9yS2V5OmRl
ZmF1bHRzS2V5XTsKLQotICAgIHJldHVybiBtZXNzYWdlOwotfQotCi1URVNUKFdlYktpdCwgVExT
VmVyc2lvbldlYlNvY2tldFdlYktpdExlZ2FjeTEpCi17Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGdl
dFdlYlNvY2tldEV2ZW50V2ViS2l0TGVnYWN5KHRydWUsIHRydWUpLCAiY2xvc2UiKTsKLX0KLQot
VEVTVChXZWJLaXQsIFRMU1ZlcnNpb25XZWJTb2NrZXRXZWJLaXRMZWdhY3kyKQotewotI2lmIFBM
QVRGT1JNKElPU19GQU1JTFkpCi0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiZXJyb3I6IHVu
ZGVmaW5lZCI7Ci0jZWxzZQotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gImNsb3NlIjsKLSNl
bmRpZgotICAgIEVYUEVDVF9XS19TVFJFUShnZXRXZWJTb2NrZXRFdmVudFdlYktpdExlZ2FjeShm
YWxzZSwgdHJ1ZSksIGV4cGVjdGVkKTsKLX0KLQotVEVTVChXZWJLaXQsIFRMU1ZlcnNpb25XZWJT
b2NrZXRXZWJLaXRMZWdhY3kzKQotewotICAgIEVYUEVDVF9XS19TVFJFUShnZXRXZWJTb2NrZXRF
dmVudFdlYktpdExlZ2FjeShmYWxzZSwgZmFsc2UpLCAiY2xvc2UiKTsKLX0KLQotVEVTVChXZWJL
aXQsIFRMU1ZlcnNpb25OZXR3b3JrU2Vzc2lvbikKKy8vIEZJWE1FOiBUaGlzIHRlc3Qgc2hvdWxk
IGJlIGRpc2FibGVkIHVudGlsIHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxIGlzIGZpeGVkLgorVEVT
VChUTFNWZXJzaW9uLCBESVNBQkxFRF9OZXR3b3JrU2Vzc2lvbikKIHsKICAgICBzdGF0aWMgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CiAgICAg
YXV0byBtYWtlV2ViVmlld1dpdGggPSBbJl0gKFdLV2Vic2l0ZURhdGFTdG9yZSAqc3RvcmUpIHsK
QEAgLTE3Nyw1NSArMTc5LDgzIEBAIFRFU1QoV2ViS2l0LCBUTFNWZXJzaW9uTmV0d29ya1Nlc3Np
b24pCiAgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGlu
aXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uXSk7CiAgICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CiAgICAgICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAq
Y2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxB
dXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKICAgICAgICAgICAgIGNhbGxiYWNrKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNy
ZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7
CiAgICAgICAgIH1dOwogICAgICAgICByZXR1cm4gd2ViVmlldzsKICAgICB9OwogICAgIHsKLSAg
ICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10oU1NM
ICpzc2wpIHsKLSAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzc2wpOwotICAgICAgICB9LCB0bHMx
XzEpOworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBT
LCBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0ssIHRsczFfMSk7CiAgICAgICAgIGF1dG8gd2ViVmll
dyA9IG1ha2VXZWJWaWV3V2l0aChbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVd
KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0
dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOwotICAgICAgICBbZGVsZWdh
dGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworICAgICAgICBbZGVsZWdh
dGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwogICAgIH0KICAgICB7Ci0gICAgICAgIFRD
UFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtdKFNTTCAqc3NsKSB7
Ci0gICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3NsKTsKLSAgICAgICAgfSwgdGxzMV8xKTsKKyAg
ICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgVENQU2Vy
dmVyOjpyZXNwb25kV2l0aE9LLCB0bHMxXzEpOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBtYWtl
V2ViVmlld1dpdGgoW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXSk7
CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhV
Ukw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRw
czovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKLSAgICAgICAgW2RlbGVnYXRl
IHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKKyAgICAgICAgW2RlbGVnYXRl
IHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKICAgICB9CiAgICAgewotICAgICAgICBUQ1BT
ZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBUQ1BTZXJ2ZXI6OnJlc3Bv
bmRXaXRoT0ssIHRsczFfMSk7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQ
cm90b2NvbDo6SFRUUFMsIFtdKFNTTCAqc3NsKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3NsKTsKKyAgICAgICAgfSwgdGxzMV8xKTsKICAgICAgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0Tm9u
UGVyc2lzdGVudENvbmZpZ3VyYXRpb25dKTsKLSAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGVn
YWN5VExTRW5hYmxlZDpZRVNdOworICAgICAgICBbY29uZmlndXJhdGlvbiBzZXRMZWdhY3lUTFNF
bmFibGVkOk5PXTsKICAgICAgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRl
RGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0
KCldKTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gbWFrZVdlYlZpZXdXaXRoKGRhdGFTdG9yZS5n
ZXQoKSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVz
dFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6
QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKLSAgICAgICAgW2Rl
bGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICAgICAgW2RlbGVnYXRlIHdh
aXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKICAgICB9Ci0gICAgW1tOU1VzZXJE
ZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpZRVMgZm9yS2V5OmRlZmF1bHRz
S2V5XTsKKyAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBzZXRCb29s
Ok5PIGZvcktleTpkZWZhdWx0c0tleV07CiAgICAgewogICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVy
KFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXShTU0wgKnNzbCkgewotICAgICAgICAgICAg
VENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNzbCk7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uo
c3NsKTsKICAgICAgICAgfSwgdGxzMV8xKTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gbWFrZVdl
YlZpZXdXaXRoKFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0pOwogICAgICAg
ICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VS
TCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcu
MC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07Ci0gICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9y
RGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFBy
b3Zpc2lvbmFsTmF2aWdhdGlvbl07CiAgICAgfQogICAgIHsKICAgICAgICAgVENQU2VydmVyIHNl
cnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10oU1NMICpzc2wpIHsKLSAgICAgICAg
ICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyhzc2wpOworICAgICAgICAgICAgRVhQRUNUX0ZB
TFNFKHNzbCk7CiAgICAgICAgIH0sIHRsczFfMSk7CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IG1h
a2VXZWJWaWV3V2l0aChbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRhU3RvcmVd
KTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0
aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0
dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOwotICAgICAgICBbZGVsZWdh
dGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgICAgICBbZGVsZWdhdGUgd2FpdEZv
ckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOwogICAgIH0KICAgICBbW05TVXNlckRlZmF1
bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVPYmplY3RGb3JLZXk6ZGVmYXVsdHNLZXld
OwogfQogCisvLyBGSVhNRTogVGhpcyB0ZXN0IHNob3VsZCBiZSBkaXNhYmxlZCB1bnRpbCByZGFy
Oi8vcHJvYmxlbS81NjUyMjYwMSBpcyBmaXhlZC4KK1RFU1QoVExTVmVyc2lvbiwgRElTQUJMRURf
TmF2aWdhdGlvbkRlbGVnYXRlU1BJKQoreworICAgIHsKKyAgICAgICAgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1RMU05hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICAgICAgVENQU2VydmVy
IHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10oU1NMICpzc2wpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG9ubHkgaWYgd2UgaGF2ZSB0aGUgbmV3IFNQSS4KKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShzc2wpOworICAgICAgICB9LCB0bHMxXzEpOworICAgICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgICAgIFt3ZWJW
aWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIFt3ZWJW
aWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdp
dGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTol
ZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKKyAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWls
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW2RlbGVnYXRlIHJl
Y2VpdmVkU2hvdWxkQWxsb3dMZWdhY3lUTFNdKTsKKyAgICB9CisgICAgeworICAgICAgICBhdXRv
IGRlbGVnYXRlID0gYWRvcHROUyhbVExTTmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgICAg
ICBkZWxlZ2F0ZS5nZXQoKS5zaG91bGRBbGxvd0xlZ2FjeVRMUyA9IFlFUzsKKyAgICAgICAgVENQ
U2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgVENQU2VydmVyOjpyZXNw
b25kV2l0aE9LLCB0bHMxXzEpOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dl
YlZpZXcgbmV3XSk7CisgICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxl
Z2F0ZS5nZXQoKV07CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3Qg
cmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKKyAgICAg
ICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoW2RlbGVnYXRlIHJlY2VpdmVkU2hvdWxkQWxsb3dMZWdhY3lUTFNdKTsKKyAgICB9Cit9
CisKKy8vIEZJWE1FOiBBZGQgc29tZSB0ZXN0cyBmb3IgV0tXZWJWaWV3Lmhhc09ubHlTZWN1cmVD
b250ZW50CisKIH0KIAogI2VuZGlmIC8vIEhBVkUoU1NMKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389258</attachid>
            <date>2020-01-30 09:46:52 -0800</date>
            <delta_ts>2020-01-30 14:37:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206979-20200130094651.patch</filename>
            <type>text/plain</type>
            <size>69262</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAx
LTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRlIFNQSSB0byBkaXNhYmxlIFRMUyAxLjAgYW5kIDEu
MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwYWwv
c3BpL2NmL0NGTmV0d29ya1NQSS5oOgorCiAyMDIwLTAxLTIyICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB1bm5lZWRlZCBkZWZpbml0aW9ucyBm
cm9tIFBsYXRmb3JtLmggZmFtaWx5IGhlYWRlcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9w
YWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BB
TC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2Uv
V2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA4LDYgKzEwOCwxMCBAQCB0eXBlZGVmIHZvaWQgKF5DRkNhY2hlZFVSTFJlc3BvbnNlQ2FsbEJh
CiAKICNpZiBkZWZpbmVkKF9fT0JKQ19fKQogCitAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2sg
KCkKK0Bwcm9wZXJ0eSAocmVhZG9ubHksIHJldGFpbikgTlNVUkxTZXNzaW9uVGFza01ldHJpY3Mq
IF9pbmNvbXBsZXRlVGFza01ldHJpY3M7CitAZW5kCisKIEBpbnRlcmZhY2UgTlNVUkxDYWNoZSAo
KQogLSAoQ0ZVUkxDYWNoZVJlZilfQ0ZVUkxDYWNoZTsKIEBlbmQKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTUyMTUpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDY0IEBACisyMDIwLTAxLTI5ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRlIFNQSSB0
byBkaXNhYmxlIFRMUyAxLjAgYW5kIDEuMQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTc5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6
OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtE
YXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAg
ICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1l
dGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
U2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVu
Z2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAgICAgKiBOZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1IVFRQUmVkaXJl
Y3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29j
b2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxp
emVOZXR3b3JrUHJvY2Vzc0NvY29hKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0
d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1YXRp
b24pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vzc2lvbjp0YXNr
OmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2Up
OgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFnZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogU2hhcmVkL0F1dGhlbnRpY2F0aW9u
L0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpzaG91bGRB
bGxvd0xlZ2FjeVRMUyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRp
b25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlv
blN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUp
OgorICAgICAgICAoV2ViS2l0OjpzeXN0ZW1BbGxvd3NMZWdhY3lUTFNGb3IpOgorICAgICAgICAo
V2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNob3VsZEFsbG93TGVn
YWN5VExTKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vz
c1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29y
ay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6CisgICAgICAg
ICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg6
CisKIDIwMjAtMDEtMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAg
ICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGlkYXRlIFVJUHJvY2Vzcy9XZWJQcm9jZXNzIGZpbGVz
IGludG8gSW5zcGVjdG9yIGZvbGRlcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5jcHAJKHJl
dmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0NP
UlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyArODgsNyBAQCB2
b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6d2lsbFBlCiAgICAgbV9jb21wbGV0aW9u
Q2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIG1f
cGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksICJQcmVmbGlnaHQgcmVzcG9uc2UgaXMg
bm90IHN1Y2Nlc3NmdWwiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wgfSk7
CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDaGFsbGVu
Z2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBOZXR3b3JrQ09S
U1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQ2hhbGxlbmdlLCBhdXRoZW50aWNhdGlvbiBz
Y2hlbWU6ICV1IiwgY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2No
ZW1lKCkpOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBOZXR3b3JrQ09SU1ByZWZsaWdodENo
ZWNrZXI6OmRpZFJlYwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9uZXR3b3JrUHJv
Y2Vzcy0+YXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJ
RCwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbiA/ICZtX3BhcmFtZXRlcnMudG9wT3JpZ2luLT5kYXRh
KCkgOiBudWxscHRyLCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAg
ICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UobV9wYXJhbWV0ZXJzLnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJz
LndlYlBhZ2VQcm94eUlELCBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1ldGVycy50
b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRM
UywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIE5ldHdvcmtDT1JTUHJl
ZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5k
bGVyKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZs
aWdodENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Um
JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXIm
JikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlJiYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwor
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBib29sLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3Bv
bnNlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShS
ZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRl
V2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpO
ZXR3b3JrTG9hZE1ldHJpY3MmKSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya0RhdGFUYXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpA
QCAtNjAsNyArNjAsNyBAQCB1c2luZyBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxl
CiBjbGFzcyBOZXR3b3JrRGF0YVRhc2tDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgdm9p
ZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYs
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UmJiwgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25z
ZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIm
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiYmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9y
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9h
ZE1ldHJpY3MmKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtMb2FkLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtMb2FkLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrTG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBA
QCB2b2lkIE5ldHdvcmtMb2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjCiAgICAgbV9jbGllbnQu
Z2V0KCkud2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKG9sZFJlcXVlc3QpLCBXVEZN
b3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKIH0KIAotdm9pZCBOZXR3
b3JrTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNo
YWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2NsaWVudC5nZXQo
KS5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2
b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1CiAgICAgaWYgKGF1dG8qIHBl
bmRpbmdEb3dubG9hZCA9IG1fdGFzay0+cGVuZGluZ0Rvd25sb2FkKCkpCiAgICAgICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgqcGVuZGluZ0Rvd25sb2FkLCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhl
bnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rh
c2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVy
cy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwg
Y2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0
YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBA
QCBwcml2YXRlOgogCiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50CiAgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwg
Ym9vbCwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRS
ZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJv
cihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xv
YWRNZXRyaWNzJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc3LDcg
Kzc3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVu
Y29kZXIgPDwgZW5hYmxlQWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlOwogICAgIGVuY29kZXIg
PDwgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBoc3RzU3RvcmFnZURpcmVj
dG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBlbmNvZGVyIDw8IGVuYWJsZUxlZ2FjeVRMUzsKIH0K
IAogYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6RGVj
b2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHJlc3VsdCkK
QEAgLTE3OSw5ICsxNzgsNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oc3RzU3RvcmFnZURpcmVjdG9y
eUV4dGVuc2lvbkhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAKLSAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHJlc3VsdC5lbmFibGVMZWdhY3lUTFMpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAt
OTcsNyArOTcsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgCiAg
ICAgYm9vbCBlbmFibGVBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGUgeyBmYWxzZSB9OwogICAg
IFN0cmluZyBoc3RzU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5k
bGUgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0gICAgYm9vbCBlbmFibGVM
ZWdhY3lUTFMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVy
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lv
bkNyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIgPDwgbG9hZFRocm90dGxlTGF0ZW5j
eTsKICAgICBlbmNvZGVyIDw8IGh0dHBQcm94eTsKICAgICBlbmNvZGVyIDw8IGh0dHBzUHJveHk7
Ci0gICAgZW5jb2RlciA8PCBlbmFibGVMZWdhY3lUTFM7CiAjZW5kaWYKICNpZiBVU0UoU09VUCkK
ICAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKQEAgLTEzOCwxMSAr
MTM3LDYgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcgogICAgIGRl
Y29kZXIgPj4gaHR0cHNQcm94eTsKICAgICBpZiAoIWh0dHBzUHJveHkpCiAgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxib29sPiBlbmFibGVMZWdhY3lUTFM7Ci0g
ICAgZGVjb2RlciA+PiBlbmFibGVMZWdhY3lUTFM7Ci0gICAgaWYgKCFlbmFibGVMZWdhY3lUTFMp
Ci0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAogI2lmIFVTRShTT1VQKQpA
QCAtMjg4LDcgKzI4Miw2IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0
ZXIKICAgICAgICAgLCBXVEZNb3ZlKCpsb2FkVGhyb3R0bGVMYXRlbmN5KQogICAgICAgICAsIFdU
Rk1vdmUoKmh0dHBQcm94eSkKICAgICAgICAgLCBXVEZNb3ZlKCpodHRwc1Byb3h5KQotICAgICAg
ICAsIFdURk1vdmUoKmVuYWJsZUxlZ2FjeVRMUykKICNlbmRpZgogI2lmIFVTRShTT1VQKQogICAg
ICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aCkKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNz
aW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBzdHJ1Y3QgTmV0d29ya1Nlc3Npb25DcmVhdGlv
blBhcmFtZXRlcnMgCiAgICAgU2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRlbmN5OwogICAgIFVSTCBo
dHRwUHJveHk7CiAgICAgVVJMIGh0dHBzUHJveHk7Ci0gICAgYm9vbCBlbmFibGVMZWdhY3lUTFMg
eyBmYWxzZSB9OwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgU3RyaW5nIGNvb2tpZVBlcnNp
c3RlbnRTdG9yYWdlUGF0aDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGlu
Z0xvYWQuY3BwCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL1BpbmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDExICsxNDYsMTEgQEAgdm9p
ZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3RpbwogICAgIH0pOwogfQogCi12b2lk
IFBpbmdMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYg
Y2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmIGNoYWxsZW5nZSwgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21w
bGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVDaGFsbGVuZ2UiKTsKICAgICBpZiAoY2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkgPT0gUHJvdGVjdGlvblNwYWNlQXV0
aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVzdEV2YWx1YXRpb25SZXF1ZXN0ZWQpIHsKLSAgICAg
ICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPm5ldHdvcmtQcm9jZXNzKCkuYXV0aGVudGljYXRpb25N
YW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fc2Vzc2lvbklELCBt
X3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsICBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1f
cGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+bmV0
d29ya1Byb2Nlc3MoKS5hdXRoZW50aWNhdGlvbk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UobV9zZXNzaW9uSUQsIG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwg
IG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgp
IDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgYXV0byB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRl
OgogICAgIGNvbnN0IFVSTCYgY3VycmVudFVSTCgpIGNvbnN0OwogCiAgICAgdm9pZCB3aWxsUGVy
Zm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgYm9v
bCwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNl
aXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRp
b25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRN
ZXRyaWNzJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29h
L05ldHdvcmtEYXRhVGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyNTUwOTIp
CisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0Nv
Y29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHVzaW5n
IFRhc2tJZGVudGlmaWVyID0gdWludDY0X3Q7CiAKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2
NF90IHRvdGFsQnl0ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpOwot
ICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2Vp
dmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgYm9vbCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lk
IGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25z
dCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
PiYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQkocmV2aXNpb24gMjU1MDkyKQorKysgU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNTIsMTMgKzUyLDYgQEAKICNpbXBvcnQgPENGTmV0d29yay9DRk5T
VVJMQ29ubmVjdGlvbi5oPgogI2VuZGlmCiAKLSNpZiBfX2hhc19pbmNsdWRlKDxXZWJLaXRBZGRp
dGlvbnMvTmV0d29ya0RhdGFUYXNrQ29jb2FBZGRpdGlvbnMuaD4pCi0jaW5jbHVkZSA8V2ViS2l0
QWRkaXRpb25zL05ldHdvcmtEYXRhVGFza0NvY29hQWRkaXRpb25zLmg+Ci0jZWxzZQotI2RlZmlu
ZSBORVRXT1JLX0RBVEFfVEFTS19DT0NPQV9BRERJVElPTlNfMQotI2RlZmluZSBORVRXT1JLX0RB
VEFfVEFTS19DT0NPQV9BRERJVElPTlNfMgotI2VuZGlmCi0KICNpZiBIQVZFKE9TX1NJR05QT1NU
KQogCiAjaW1wb3J0IDxvcy9zaWducG9zdC5oPgpAQCAtMjg1LDggKzI3OCw2IEBAIE5ldHdvcmtE
YXRhVGFza0NvY29hOjpOZXR3b3JrRGF0YVRhc2tDb2MKICAgICBhcHBseVNuaWZmaW5nUG9saWNp
ZXNBbmRCaW5kUmVxdWVzdFRvSW5mZXJmYWNlSWZOZWVkZWQobnNSZXF1ZXN0LCBzaG91bGRDb250
ZW50U25pZmYgPT0gV2ViQ29yZTo6Q29udGVudFNuaWZmaW5nUG9saWN5OjpTbmlmZkNvbnRlbnQg
JiYgIXVybC5pc0xvY2FsRmlsZSgpLCBzaG91bGRDb250ZW50RW5jb2RpbmdTbmlmZiA9PSBXZWJD
b3JlOjpDb250ZW50RW5jb2RpbmdTbmlmZmluZ1BvbGljeTo6U25pZmYpOwogCiAgICAgbV90YXNr
ID0gW21fc2Vzc2lvbldyYXBwZXIuc2Vzc2lvbiBkYXRhVGFza1dpdGhSZXF1ZXN0Om5zUmVxdWVz
dF07Ci0gICAgCi0gICAgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURESVRJT05TXzE7CiAKICAg
ICBCRUdJTl9TSUdOUE9TVChtX3Rhc2ssICIle3B1YmxpY31zIHByaTogJWYgcHJlY29ubmVjdDog
JWQiLCB1cmwuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIHRvTlNVUkxTZXNzaW9uVGFza1ByaW9y
aXR5KHJlcXVlc3QucHJpb3JpdHkoKSksIHNob3VsZFByZWNvbm5lY3RPbmx5ID09IFByZWNvbm5l
Y3RPbmx5OjpZZXMpOwogCkBAIC0zNDgsNyArMzM5LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tD
b2NvYTo6ZGlkU2VuZERhdGEodQogICAgICAgICBtX2NsaWVudC0+ZGlkU2VuZERhdGEodG90YWxC
eXRlc1NlbnQsIHRvdGFsQnl0ZXNFeHBlY3RlZFRvU2VuZCk7CiB9CiAKLXZvaWQgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25D
aGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRSZWNlaXZlQ2hhbGxl
bmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBib29sIG5l
Z290aWF0ZWRMZWdhY3lUTFMsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CiAgICAgRU1JVF9TSUdOUE9TVChtX3Rhc2ssICJyZWNlaXZlZCBjaGFsbGVu
Z2UiKTsKIApAQCAtMzU2LDcgKzM0Nyw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRp
ZFJlY2VpdmVDaGEKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fY2xpZW50KQotICAgICAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZNb3ZlKGNoYWxsZW5nZSksIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICAgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDaGFs
bGVuZ2UoV1RGTW92ZShjaGFsbGVuZ2UpLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCB7IH0pOwpAQCAtNDYwLDkgKzQ1MSw2
IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OndpbGxQZXJmb3JtSFQKICAgICAgICAgICAg
ICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgIGlmICghcmVx
dWVzdC5pc051bGwoKSkKICAgICAgICAgICAgICAgICByZXN0cmljdFJlcXVlc3RSZWZlcnJlclRv
T3JpZ2luSWZOZWVkZWQocmVxdWVzdCk7Ci0KLSAgICAgICAgICAgIE5FVFdPUktfREFUQV9UQVNL
X0NPQ09BX0FERElUSU9OU18yOwotCiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsKICAgICAgICAgfSk7CiAgICAgZWxzZSB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtQcm9jZXNzQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcw
LDYgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZU5ldHdvcmtTZXR0aW5ncygpCiAKIHZvaWQgTmV0
d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3Qg
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0gICAgV2Vi
Q29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6c2V0TGVnYWN5VExTRW5hYmxlZChwYXJhbWV0
ZXJzLmVuYWJsZUxlZ2FjeVRMUyk7Ci0KICAgICBXZWJDb3JlOjpzZXRBcHBsaWNhdGlvbkJ1bmRs
ZUlkZW50aWZpZXIocGFyYW1ldGVycy51aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyKTsKICAgICBX
ZWJDb3JlOjpzZXRBcHBsaWNhdGlvblNES1ZlcnNpb24ocGFyYW1ldGVycy51aVByb2Nlc3NTREtW
ZXJzaW9uKTsKIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrU2Vzc2lvbkNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCSh3
b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBib29s
IGFsbG93c1NwZWNpZmljSFRUUFNDZXJ0aWZpY2F0ZUZvckhvc3QoY29uc3QgV2ViQ29yZTo6QXV0
aGVudGljYXRpb25DaGFsbGVuZ2UmKTsKIAotICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlQ2hh
bGxlbmdlKFNlc3Npb25XcmFwcGVyJiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmLCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRh
VGFza0NvY29hKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT4mJik7Cisg
ICAgdm9pZCBjb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2UoU2Vzc2lvbldyYXBwZXImLCBjb25z
dCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIGJvb2wgbmVnb3RpYXRlZExlZ2Fj
eVRMUywgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRh
c2tDb2NvYSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYpOwogCiAg
ICAgU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyRm9yRG93bmxvYWRzKCkgeyByZXR1cm4g
bV9zZXNzaW9uV2l0aENyZWRlbnRpYWxTdG9yYWdlOyB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
bW0JKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29j
b2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtNTk2LDkgKzU5Niw5
IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKIH0KIAogI2lmIEhB
VkUoQ0ZORVRXT1JLX05TVVJMU0VTU0lPTl9TVFJJQ1RSVVNURVZBTFVBVEUpCi1zdGF0aWMgaW5s
aW5lIHZvaWQgcHJvY2Vzc1NlcnZlclRydXN0RXZhbHVhdGlvbihOZXR3b3JrU2Vzc2lvbkNvY29h
ICpzZXNzaW9uLCBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXIsIE5TVVJMQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVu
dGlmaWVyIHRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSogbmV0d29ya0RhdGFU
YXNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VEaXNw
b3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICpjcmVkZW50aWFsKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKK3N0YXRpYyBpbmxpbmUgdm9pZCBwcm9jZXNzU2VydmVyVHJ1c3RFdmFs
dWF0aW9uKE5ldHdvcmtTZXNzaW9uQ29jb2EmIHNlc3Npb24sIFNlc3Npb25XcmFwcGVyJiBzZXNz
aW9uV3JhcHBlciwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBib29s
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmll
ciB0YXNrSWRlbnRpZmllciwgTmV0d29ya0RhdGFUYXNrQ29jb2EqIG5ldHdvcmtEYXRhVGFzaywg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRp
b24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqY3JlZGVudGlhbCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgc2Vzc2lvbi0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKHNl
c3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2ss
IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBzZWNUcnVz
dCA9IHJldGFpblB0cihjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0KV0gKFdl
YktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29u
c3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3JlZGVudGlhbCkgbXV0YWJsZSB7CisgICAgc2Vzc2lv
bi5jb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2Uoc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwg
bmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzaywgW2Nv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHNlY1RydXN0ID0g
cmV0YWluUHRyKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3QpXSAoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBX
ZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKICAgICAgICAgLy8gRklY
TUU6IFVJUHJvY2VzcyBzaG91bGQgc2VuZCB1cyBiYWNrIG5vbiBuaWwgY3JlZGVudGlhbHMgYnV0
IHRoZSBjcmVkZW50aWFsIElQQyBlbmNvZGVyIGN1cnJlbnRseSBvbmx5IHNlcmlhbGl6ZXMgbnMg
Y3JlZGVudGlhbHMgZm9yIHVzZXJuYW1lL3Bhc3N3b3JkLgogICAgICAgICBpZiAoZGlzcG9zaXRp
b24gPT0gV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpVc2VDcmVk
ZW50aWFsICYmICFjcmVkZW50aWFsLm5zQ3JlZGVudGlhbCgpKSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05T
VVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6IHNlY1RydXN0LmdldCgpXSk7CkBAIC02
MjgsMTYgKzYyOCwyNSBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3Np
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBib29sIG5lZ290aWF0ZWRMZWdhY3lUTFMg
PSBmYWxzZTsKKwogICAgIGlmIChbY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNh
dGlvbk1ldGhvZCBpc0VxdWFsVG9TdHJpbmc6TlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNlcnZl
clRydXN0XSkgewogICAgICAgICBpZiAoTmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lm
aWNIVFRQU0NlcnRpZmljYXRlRm9ySG9zdChjaGFsbGVuZ2UpKQogICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFs
LCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlv
blNwYWNlLnNlcnZlclRydXN0XSk7CiAKKyNpZiBIQVZFKFRMU19QUk9UT0NPTF9WRVJTSU9OX1Qp
CisgICAgICAgIE5TVVJMU2Vzc2lvblRhc2tUcmFuc2FjdGlvbk1ldHJpY3MgKm1ldHJpY3MgPSB0
YXNrLl9pbmNvbXBsZXRlVGFza01ldHJpY3MudHJhbnNhY3Rpb25NZXRyaWNzLmxhc3RPYmplY3Q7
CisgICAgICAgIGF1dG8gdGxzVmVyc2lvbiA9ICh0bHNfcHJvdG9jb2xfdmVyc2lvbl90KW1ldHJp
Y3MubmVnb3RpYXRlZFRMU1Byb3RvY29sVmVyc2lvbi51bnNpZ25lZFNob3J0VmFsdWU7CisgICAg
ICAgIGlmICh0bHNWZXJzaW9uID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMCB8fCB0bHNW
ZXJzaW9uID09IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMSkKKyAgICAgICAgICAgIG5lZ290
aWF0ZWRMZWdhY3lUTFMgPSB0cnVlOworI2VuZGlmCisKICAgICAgICAgLy8gSGFuZGxlIHNlcnZl
ciB0cnVzdCBldmFsdWF0aW9uIGF0IHBsYXRmb3JtLWxldmVsIGlmIHJlcXVlc3RlZCwgZm9yIHBl
cmZvcm1hbmNlIHJlYXNvbnMgYW5kIHRvIHVzZSBBVFMgZGVmYXVsdHMuCi0gICAgICAgIGlmIChz
ZXNzaW9uQ29jb2EtPmZhc3RTZXJ2ZXJUcnVzdEV2YWx1YXRpb25FbmFibGVkKCkpIHsKKyAgICAg
ICAgaWYgKHNlc3Npb25Db2NvYS0+ZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJsZWQoKSAm
JiAhbmVnb3RpYXRlZExlZ2FjeVRMUykgewogI2lmIEhBVkUoQ0ZORVRXT1JLX05TVVJMU0VTU0lP
Tl9TVFJJQ1RSVVNURVZBTFVBVEUpCiAgICAgICAgICAgICBhdXRvKiBuZXR3b3JrRGF0YVRhc2sg
PSBbc2VsZiBleGlzdGluZ1Rhc2s6dGFza107CiAgICAgICAgICAgICBBU1NFUlQobmV0d29ya0Rh
dGFUYXNrKTsKLSAgICAgICAgICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRy
KFt3ZWFrU2VsZiA9IFdlYWtPYmpDUHRyPFdLTmV0d29ya1Nlc3Npb25EZWxlZ2F0ZT4oc2VsZiks
IHNlc3Npb25Db2NvYSA9IG1ha2VXZWFrUHRyKHNlc3Npb25Db2NvYSksIGNvbXBsZXRpb25IYW5k
bGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKSwgdGFza0lkZW50aWZpZXIsIG5l
dHdvcmtEYXRhVGFzayA9IFJlZlB0cjxOZXR3b3JrRGF0YVRhc2tDb2NvYT4obmV0d29ya0RhdGFU
YXNrKV0oTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBPU1N0YXR1cyB0
cnVzdFJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9
IG1ha2VCbG9ja1B0cihbd2Vha1NlbGYgPSBXZWFrT2JqQ1B0cjxXS05ldHdvcmtTZXNzaW9uRGVs
ZWdhdGU+KHNlbGYpLCBzZXNzaW9uQ29jb2EgPSBtYWtlV2Vha1B0cihzZXNzaW9uQ29jb2EpLCBj
b21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlciksIHRhc2tJ
ZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2sgPSBtYWtlUmVmUHRyKG5ldHdvcmtEYXRhVGFzayks
IG5lZ290aWF0ZWRMZWdhY3lUTFNdKE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxs
ZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQpIG11dGFibGUgewogICAgICAgICAgICAgICAgIGF1
dG8gc3Ryb25nU2VsZiA9IHdlYWtTZWxmLmdldCgpOwogICAgICAgICAgICAgICAgIGlmICghc3Ry
b25nU2VsZikKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKE5T
VVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VDYW5jZWxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgbmls
KTsKQEAgLTY0Nyw3ICs2NTYsNyBAQCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAq
KXNlc3NpCiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lv
bkF1dGhDaGFsbGVuZ2VQZXJmb3JtRGVmYXVsdEhhbmRsaW5nLCBuaWwpOwogICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHByb2Nl
c3NTZXJ2ZXJUcnVzdEV2YWx1YXRpb24oc2Vzc2lvbiwgKnN0cm9uZ1NlbGYtPl9zZXNzaW9uV3Jh
cHBlciwgY2hhbGxlbmdlLCB0YXNrSWRlbnRpZmllciwgdGFzay5nZXQoKSwgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIHByb2Nlc3NTZXJ2ZXJUcnVzdEV2YWx1
YXRpb24oKnNlc3Npb24sICpzdHJvbmdTZWxmLT5fc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwg
bmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZpZXIsIHRhc2suZ2V0KCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgW05TVVJM
U2Vzc2lvbiBfc3RyaWN0VHJ1c3RFdmFsdWF0ZTpjaGFsbGVuZ2UgcXVldWU6W05TT3BlcmF0aW9u
UXVldWUgbWFpblF1ZXVlXS51bmRlcmx5aW5nUXVldWUgY29tcGxldGlvbkhhbmRsZXI6ZGVjaXNp
b25IYW5kbGVyLmdldCgpXTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTY1Niw3ICs2NjUsNyBA
QCAtICh2b2lkKVVSTFNlc3Npb246KE5TVVJMU2Vzc2lvbiAqKXNlc3NpCiAjZW5kaWYKICAgICAg
ICAgfQogICAgIH0KLSAgICBzZXNzaW9uQ29jb2EtPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5n
ZSgqX3Nlc3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIHRhc2tJZGVudGlmaWVyLCBbc2VsZiBleGlz
dGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFi
bGUgeworICAgIHNlc3Npb25Db2NvYS0+Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKCpfc2Vz
c2lvbldyYXBwZXIsIGNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgdGFza0lkZW50aWZp
ZXIsIFtzZWxmIGV4aXN0aW5nVGFzazp0YXNrXSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJs
b2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYgY3Jl
ZGVudGlhbCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHRvTlNVUkxTZXNz
aW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0aW9uKGRpc3Bvc2l0aW9uKSwgY3JlZGVudGlhbC5uc0Ny
ZWRlbnRpYWwoKSk7CiAgICAgfSk7CiB9CkBAIC0xMDE5LDE0ICsxMDI4LDYgQEAgTmV0d29ya1Nl
c3Npb25Db2NvYTo6TmV0d29ya1Nlc3Npb25Db2NvYQogCiAgICAgTlNVUkxTZXNzaW9uQ29uZmln
dXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IGNvbmZpZ3VyYXRpb25Gb3JTZXNzaW9uSUQobV9zZXNz
aW9uSUQpOwogCi0gICAgaWYgKCFwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUykgewotI2lmIEhB
VkUoVExTX1BST1RPQ09MX1ZFUlNJT05fVCkKLSAgICAgICAgY29uZmlndXJhdGlvbi5UTFNNaW5p
bXVtU3VwcG9ydGVkUHJvdG9jb2xWZXJzaW9uID0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEy
OwotI2Vsc2UKLSAgICAgICAgY29uZmlndXJhdGlvbi5UTFNNaW5pbXVtU3VwcG9ydGVkUHJvdG9j
b2wgPSBrVExTUHJvdG9jb2wxMjsKLSNlbmRpZgotICAgIH0KLQogI2lmIEhBVkUoQVBQX1NTTykK
ICAgICBjb25maWd1cmF0aW9uLl9wcmV2ZW50c0FwcFNTTyA9IHRydWU7CiAjZW5kaWYKQEAgLTEy
OTcsNyArMTI5OCw3IEBAIGJvb2wgTmV0d29ya1Nlc3Npb25Db2NvYTo6YWxsb3dzU3BlY2lmaWMK
ICAgICByZXR1cm4gY2VydGlmaWNhdGVzTWF0Y2godHJ1c3QuZ2V0KCksIGNoYWxsZW5nZS5uc1VS
TEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCkucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0KTsK
IH0KIAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlY2VpdmVDaGFsbGVu
Z2UoU2Vzc2lvbldyYXBwZXImIHNlc3Npb25XcmFwcGVyLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYgY2hhbGxlbmdlLCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lk
ZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKiBuZXR3b3JrRGF0
YVRhc2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmNvbnRpbnVlRGlkUmVjZWl2ZUNo
YWxsZW5nZShTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXIsIGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBjaGFsbGVuZ2UsIGJvb2wgbmVnb3RpYXRlZExlZ2FjeVRM
UywgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBO
ZXR3b3JrRGF0YVRhc2tDb2NvYSogbmV0d29ya0RhdGFUYXNrLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgY29uc3QgV2Vi
Q29yZTo6Q3JlZGVudGlhbCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghbmV0
d29ya0RhdGFUYXNrKSB7CiAjaWYgSEFWRShOU1VSTFNFU1NJT05fV0VCU09DS0VUKQpAQCAtMTM0
OSw3ICsxMzUwLDcgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlYwog
I2VuZGlmCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRpc3Bvc2l0aW9uLCBjcmVkZW50aWFs
KTsKICAgICB9OwotICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZN
b3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgV1RGTW92ZShjaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlcikpOworICAgIG5ldHdvcmtEYXRhVGFzay0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShXVEZN
b3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92
ZShjaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiBETUZXZWJzaXRlUG9saWN5TW9u
aXRvciAqTmV0d29ya1Nlc3Npb25Db2NvYTo6ZGV2aWNlTWFuYWdlbWVudFBvbGljeU1vbml0b3Io
KQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFz
a0N1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3Vy
bC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtEYXRhVGFza0N1cmwuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTQsNyArMzU0LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp0cnlI
dHRwQXV0aGVudAogICAgICAgICB9CiAgICAgfQogCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVD
aGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKSwgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2hhbGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KSB7CisgICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UoY2hhbGxlbmdlKSwgZmFsc2UsIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNoYWxsZW5nZV0oQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNw
b3NpdGlvbiwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkgewogICAgICAgICBpZiAobV9z
dGF0ZSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNvbXBsZXRlZCkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMzgwLDcgKzM4MCw3IEBAIHZvaWQgTmV0d29ya0Rh
dGFUYXNrQ3VybDo6dHJ5SHR0cEF1dGhlbnQKIAogdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp0
cnlQcm94eUF1dGhlbnRpY2F0aW9uKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYg
Y2hhbGxlbmdlKQogewotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNoYWxsZW5nZV0oQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBk
aXNwb3NpdGlvbiwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkgeworICAgIG1fY2xpZW50
LT5kaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSks
IGZhbHNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjaGFsbGVuZ2Vd
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENy
ZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNh
bmNlbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAgICByZXR1
cm47CiAKQEAgLTQwNSw3ICs0MDUsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OnRyeVBy
b3h5QXV0aGVuCiAKIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6dHJ5U2VydmVyVHJ1c3RFdmFs
dWF0aW9uKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlKQogewotICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5n
ZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNoYWxsZW5nZV0oQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgQ3JlZGVu
dGlhbCYgY3JlZGVudGlhbCkgeworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2hhbGxlbmdlKEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSksIGZhbHNlLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjaGFsbGVuZ2VdKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsK
ICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09IFN0
YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291
cC5jcHAJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
c291cC9OZXR3b3JrRGF0YVRhc2tTb3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMxLDcgKzUz
MSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrU291cDo6YXV0aGVudGljYXRlKEEKIAogdm9pZCBO
ZXR3b3JrRGF0YVRhc2tTb3VwOjpjb250aW51ZUF1dGhlbnRpY2F0ZShBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmIGNoYWxsZW5nZSkKIHsKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5n
ZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjaGFsbGVuZ2VdKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlz
cG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsKKyAg
ICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShj
aGFsbGVuZ2UpLCBmYWxzZSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y2hhbGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9u
LCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09
IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6Q29tcGxldGVkKSB7CiAgICAg
ICAgICAgICBjbGVhclJlcXVlc3QoKTsKICAgICAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVu
dGljYXRpb25NYW5hZ2VyLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9T
aGFyZWQvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIFZlY3Rvcjx1aW50NjRfdD4gQXV0aGVudGljYXRpb25N
YW5hZ2VyOjoKICAgICByZXR1cm4gY2hhbGxlbmdlc1RvQ29hbGVzY2U7CiB9CiAKLXZvaWQgQXV0
aGVudGljYXRpb25NYW5hZ2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhKiB0b3BPcmlnaW4sIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgQXV0aGVudGljYXRpb25NYW5hZ2VyOjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBX
ZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhKiB0
b3BPcmlnaW4sIGNvbnN0IEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSwgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFu
ZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICghcGFnZUlEKQogICAgICAgICBy
ZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
bjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZywgeyB9KTsKQEAgLTEyMyw3ICsxMjMsNyBAQCB2b2lk
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1CiAgICAgT3B0aW9uYWw8U2VjdXJp
dHlPcmlnaW5EYXRhPiB0b3BPcmlnaW5EYXRhOwogICAgIGlmICh0b3BPcmlnaW4pCiAgICAgICAg
IHRvcE9yaWdpbkRhdGEgPSAqdG9wT3JpZ2luOwotICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
c2Vzc2lvbklELCBwYWdlSUQsIHRvcE9yaWdpbkRhdGEsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LCBjaGFsbGVuZ2VJRCkpOworICAgIG1fcHJvY2Vzcy5zZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzc1Byb3h5OjpEaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uoc2Vzc2lvbklELCBw
YWdlSUQsIHRvcE9yaWdpbkRhdGEsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLCBuZWdvdGlhdGVk
TGVnYWN5VExTLCBjaGFsbGVuZ2VJRCkpOwogfQogCiB2b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdl
cjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKElQQzo6TWVzc2FnZVNlbmRlciYg
ZG93bmxvYWQsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiBhdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSwgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9u
SGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhl
bnRpY2F0aW9uTWFuYWdlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1
dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oCShyZXZpc2lvbiAyNTUwOTIpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbk1hbmFn
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0
aWMgY29uc3QgY2hhciogc3VwcGxlbWVudE5hbWUoKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEqICwgY29uc3QgV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsK
KyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25J
RCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhKiAsIGNvbnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgYm9vbCwgQ2hh
bGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVyJiBkb3dubG9hZCwgY29uc3QgV2ViQ29y
ZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KTsKIAogICAgIHZvaWQgY29tcGxldGVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh1aW50NjRfdCBj
aGFsbGVuZ2VJRCwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlvbiwgV2ViQ29yZTo6
Q3JlZGVudGlhbCYmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzY2Niw4ICs3NjY2LDE3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpnYW1lcGFkQWN0aXZpdHkoY29uc3QKIAogI2VuZGlmCiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3ZvaWQg
V2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwg
Ym9vbCBuZWdvdGlhdGVkTGVnYWN5VExTKQogeworICAgIGlmIChuZWdvdGlhdGVkTGVnYWN5VExT
KSB7CisgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+c2hvdWxkQWxsb3dMZWdhY3lUTFMoKnRo
aXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmNvcHlSZWYoKV0gKGJvb2wgc2hvdWxkQWxsb3dMZWdhY3lUTFMpIHsKKyAgICAg
ICAgICAgIGlmIChzaG91bGRBbGxvd0xlZ2FjeVRMUykKKyAgICAgICAgICAgICAgICBtX25hdmln
YXRpb25DbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSgqdGhpcywgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UuZ2V0KCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLT5saXN0ZW5lcigpLmNvbXBsZXRlQ2hhbGxl
bmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OkNhbmNlbCk7CisgICAgICAg
IH0pOworICAgICAgICByZXR1cm47CisgICAgfQogICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZS5nZXQoKSk7CiB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTMyNyw3ICsxMzI3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBXZWJDb3JlOjpJ
bnRTaXplJik7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9y
dFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVuaXRz
LnZhbHVlT3IoV2ViQ29yZTo6SW50U2l6ZSgpKTsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eT4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShS
ZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiwgYm9vbCk7CiAKICAgICBTcGVsbERv
Y3VtZW50VGFnIHNwZWxsRG9jdW1lbnRUYWcoKTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCShyZXZpc2lvbiAyNTUwOTIp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
cmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBPcHRpb25T
ZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFsbGVuZ2UpIHsgY2hhbGxlbmdl
Lmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5nKTsgfQorICAgIHZpcnR1YWwg
dm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhhbmRsZXIodHJ1ZSk7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgc2hvdWxkQnlwYXNzQ29udGVudE1vZGVTYWZlZ3VhcmRzKCkgY29uc3Qg
eyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEZJWE1FOiBUaGVzZSBmdW5jdGlvbiBzaG91bGQg
bm90IGJlIHBhcnQgb2YgdGhpcyBjbGllbnQuCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg2
LDYgKzg2LDggQEAgc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IAogCiAt
IChOU0RhdGEgKilfd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldzsKIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBhdXRoZW50aWNh
dGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBz
aG91bGRBbGxvd0xlZ2FjeVRMUzoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLSAo
dm9pZClfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6KFdLV2ViVmlldyAqKXdlYlZp
ZXc7CiAvLyBJdGVtIGlzIG5pbCBpZiB0aGUgZ2VzdHVyZSBlbmRlZCB3aXRob3V0IG5hdmlnYXRp
b24uCiAtICh2b2lkKV93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdlc3R1cmU6KFdLV2ViVmlldyAq
KXdlYlZpZXcgd2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0Zvcndh
cmRMaXN0SXRlbSAqKWl0ZW07CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9O
YXZpZ2F0aW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEx
Miw2ICsxMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHNob3VsZEJ5cGFzc0NvbnRlbnRN
b2RlU2FmZWd1YXJkcygpIGNvbnN0IGZpbmFsOwogCiAgICAgICAgIHZvaWQgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhX
ZWJQYWdlUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgICAgIGJvb2wgcHJvY2Vzc0RpZFRlcm1p
bmF0ZShXZWJQYWdlUHJveHkmLCBQcm9jZXNzVGVybWluYXRpb25SZWFzb24pIG92ZXJyaWRlOwog
ICAgICAgICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKFdlYlBhZ2VQcm94eSYpIG92
ZXJyaWRlOwogICAgICAgICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUoV2ViUGFn
ZVByb3h5Jikgb3ZlcnJpZGU7CkBAIC0yMTUsNiArMjE2LDcgQEAgcHJpdmF0ZToKIAogICAgICAg
ICBib29sIHdlYlZpZXdSZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSA6IDE7CiAgICAgICAgIGJv
b2wgd2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyIDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTaG91
bGRBbGxvd0xlZ2FjeVRMUyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld1dlYkNvbnRlbnRQcm9j
ZXNzRGlkVGVybWluYXRlIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViQ29udGVudFByb2Nl
c3NEaWRUZXJtaW5hdGVXaXRoUmVhc29uIDogMTsKICAgICAgICAgYm9vbCB3ZWJWaWV3V2ViUHJv
Y2Vzc0RpZENyYXNoIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAt
NzksNiArNzksMTEgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgogI2ltcG9ydCA8
d3RmL1VSTC5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NB
VEFMWVNUKQorI2ltcG9ydCA8cGFsL2lvcy9NYW5hZ2VkQ29uZmlndXJhdGlvblNvZnRMaW5rLmg+
CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9NYW5hZ2VkQ29uZmlndXJhdGlvblNQSS5oPgorI2VuZGlm
CisKICNpZiBIQVZFKEFQUF9MSU5LUykKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvTGF1bmNoU2Vy
dmljZXNTUEkuaD4KICNlbmRpZgpAQCAtMTY2LDYgKzE3MSw3IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWcKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld05hdmlnYXRpb25EaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bmF2aWdhdGlvbjpkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uOildOwogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3UmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZTopXTsKICAg
ICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6
Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndl
YlZpZXdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNob3VsZEFsbG93TGVnYWN5VExTID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6YXV0aGVudGljYXRpb25D
aGFsbGVuZ2U6c2hvdWxkQWxsb3dMZWdhY3lUTFM6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZSA9IFtkZWxlZ2F0
ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0Rp
ZFRlcm1pbmF0ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld1dl
YkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlV2l0aFJlYXNvbiA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWlu
YXRlV2l0aFJlYXNvbjopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d1dlYlByb2Nlc3NEaWRDcmFzaCA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVj
dG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoOildOwpAQCAtOTczLDYgKzk3OSwzOSBAQCB2
b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgfSkuZ2V0KCldOwog
fQogCitzdGF0aWMgYm9vbCBzeXN0ZW1BbGxvd3NMZWdhY3lUTFNGb3IoV2ViUGFnZVByb3h5JiBw
YWdlKQoreworICAgIGJvb2wgZW5hYmxlTGVnYWN5VExTID0gcGFnZS53ZWJzaXRlRGF0YVN0b3Jl
KCkuY29uZmlndXJhdGlvbigpLmxlZ2FjeVRMU0VuYWJsZWQoKTsKKyAgICBpZiAoaWQgdmFsdWUg
PSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJX
ZWJLaXRFbmFibGVMZWdhY3lUTFMiXSkKKyAgICAgICAgZW5hYmxlTGVnYWN5VExTID0gW3ZhbHVl
IGJvb2xWYWx1ZV07CisgICAgaWYgKCFlbmFibGVMZWdhY3lUTFMpIHsKKyNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisgICAgICAgIGVuYWJsZUxlZ2Fj
eVRMUyA9IFtbUEFMOjpnZXRNQ1Byb2ZpbGVDb25uZWN0aW9uQ2xhc3MoKSBzaGFyZWRDb25uZWN0
aW9uXSBlZmZlY3RpdmVCb29sVmFsdWVGb3JTZXR0aW5nOkAiYWxsb3dEZXByZWNhdGVkV2ViS2l0
VExTIl0gPT0gTUNSZXN0cmljdGVkQm9vbEV4cGxpY2l0WWVzOworI2VsaWYgUExBVEZPUk0oTUFD
KQorICAgICAgICBlbmFibGVMZWdhY3lUTFMgPSBDRlByZWZlcmVuY2VzR2V0QXBwQm9vbGVhblZh
bHVlKENGU1RSKCJhbGxvd0RlcHJlY2F0ZWRXZWJLaXRUTFMiKSwgQ0ZTVFIoImNvbS5hcHBsZS5h
cHBsaWNhdGlvbmFjY2VzcyIpLCBudWxscHRyKTsKKyNlbmRpZgorICAgIH0KKyAgICByZXR1cm4g
ZW5hYmxlTGVnYWN5VExTOworfQorCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNs
aWVudDo6c2hvdWxkQWxsb3dMZWdhY3lUTFMoV2ViUGFnZVByb3h5JiBwYWdlLCBBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBpZiAoIW1fbmF2
aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTaG91bGRBbGxvd0xlZ2FjeVRMUykKKyAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKHN5c3RlbUFsbG93c0xlZ2FjeVRMU0ZvcihwYWdlKSk7CisKKyAgICBhdXRv
IG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVn
YXRlLmdldCgpOworICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRlKQorICAgICAgICByZXR1cm4g
Y29tcGxldGlvbkhhbmRsZXIoc3lzdGVtQWxsb3dzTGVnYWN5VExTRm9yKHBhZ2UpKTsKKworICAg
IGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmlldzphdXRoZW50aWNhdGlvbkNo
YWxsZW5nZTpzaG91bGRBbGxvd0xlZ2FjeVRMUzopKTsKKyAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
OndyYXBwZXIoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIHNob3VsZEFsbG93TGVnYWN5VExTOm1h
a2VCbG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgc2hvdWxkQWxsb3cpIG11dGFibGUg
eworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRsZXJIYXNCZWVuQ2FsbGVkKCkp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXItPmRpZENhbGxDb21wbGV0aW9u
SGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihzaG91bGRBbGxvdyk7CisgICAg
fSkuZ2V0KCldOworfQorCiBzdGF0aWMgX1dLUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uIHdrUHJv
Y2Vzc1Rlcm1pbmF0aW9uUmVhc29uKFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbiByZWFzb24pCiB7
CiAgICAgc3dpdGNoIChyZWFzb24pIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjU1MDkyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzgxLDE4ICszODEsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29sOjpw
bGF0Zm9ybUluaXRpYWxpemVOCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwYXJhbWV0ZXJzLmVu
YWJsZUxlZ2FjeVRMUyA9IGZhbHNlOwotICAgIGlmIChpZCB2YWx1ZSA9IFtkZWZhdWx0cyBvYmpl
Y3RGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiXSkKLSAgICAgICAgcGFyYW1ldGVycy5l
bmFibGVMZWdhY3lUTFMgPSBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBpZiAoIXBhcmFtZXRlcnMu
ZW5hYmxlTGVnYWN5VExTKSB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgIVBMQVRGT1JN
KE1BQ0NBVEFMWVNUKQotICAgICAgICBwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUyA9IFtbUEFM
OjpnZXRNQ1Byb2ZpbGVDb25uZWN0aW9uQ2xhc3MoKSBzaGFyZWRDb25uZWN0aW9uXSBlZmZlY3Rp
dmVCb29sVmFsdWVGb3JTZXR0aW5nOkAiYWxsb3dEZXByZWNhdGVkV2ViS2l0VExTIl0gPT0gTUNS
ZXN0cmljdGVkQm9vbEV4cGxpY2l0WWVzOwotI2VsaWYgUExBVEZPUk0oTUFDKQotICAgICAgICBw
YXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUyA9IENGUHJlZmVyZW5jZXNHZXRBcHBCb29sZWFuVmFs
dWUoQ0ZTVFIoImFsbG93RGVwcmVjYXRlZFdlYktpdFRMUyIpLCBDRlNUUigiY29tLmFwcGxlLmFw
cGxpY2F0aW9uYWNjZXNzIiksIG51bGxwdHIpOwotI2VuZGlmCi0gICAgfQotICAgIHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVu
YWJsZUxlZ2FjeVRMUyA9IHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5VExTOwotCiAgICAgcGFyYW1l
dGVycy5uZXR3b3JrQVRTQ29udGV4dCA9IGFkb3B0Q0YoX0NGTmV0d29ya0NvcHlBVFNDb250ZXh0
KCkpOwogCiAgICAgcGFyYW1ldGVycy5zaG91bGRTdXBwcmVzc01lbW9yeVByZXNzdXJlSGFuZGxl
ciA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdFN1cHByZXNzTWVtb3J5UHJlc3N1cmVIYW5k
bGVyRGVmYXVsdHNLZXldOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9O
ZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShyZXZpc2lvbiAyNTUwOTIpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMjYsNyArMzI2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5Ojpwcm9jZXNzQXV0aGVudAogICAgIHN0b3JlLT5jbGllbnQoKS5kaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOwogfQog
Ci12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFn
ZUlELCBjb25zdCBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+JiB0b3BPcmlnaW4sIFdlYkNv
cmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hh
bGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50
aWZpZXIgcGFnZUlELCBjb25zdCBPcHRpb25hbDxTZWN1cml0eU9yaWdpbkRhdGE+JiB0b3BPcmln
aW4sIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgYm9v
bCBuZWdvdGlhdGVkTGVnYWN5VExTLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKIHsKICNpZiBIQVZF
KFNFQ19LRVlfUFJPWFkpCiAgICAgV2Vha1B0cjxTZWNLZXlQcm94eVN0b3JlPiBzZWNLZXlQcm94
eVN0b3JlOwpAQCAtMzQ3LDcgKzM0Nyw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlk
UmVjZWl2ZUF1dGgKICAgICAgICAgcGFnZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdl
SUQpOwogCiAgICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgcGFnZS0+ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlUHJveHkoV1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOwor
ICAgICAgICBwYWdlLT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShXVEZN
b3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUyk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1NiwxMiArMzU2LDEyIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGgKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IFdlYlBhZ2VQcm94eTo6Zm9yTW9zdFZpc2libGVXZWJQYWdlSWZBbnkoc2Vzc2lvbklELCAqdG9w
T3JpZ2luLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
XShhdXRvKiBwYWdlKSBtdXRhYmxlIHsKKyAgICBXZWJQYWdlUHJveHk6OmZvck1vc3RWaXNpYmxl
V2ViUGFnZUlmQW55KHNlc3Npb25JRCwgKnRvcE9yaWdpbiwgW3RoaXMsIHdlYWtUaGlzID0gbWFr
ZVdlYWtQdHIodGhpcyksIHNlc3Npb25JRCwgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UgPSBXVEZN
b3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKSwgbmVnb3RpYXRlZExlZ2FjeVRMU10oYXV0byog
cGFnZSkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgaWYgKHBhZ2UpIHsKLSAgICAgICAgICAgIHBhZ2UtPmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UpKTsKKyAgICAgICAgICAgIHBhZ2UtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5KFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBuZWdvdGlhdGVkTGVnYWN5
VExTKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBwcm9jZXNzQXV0
aGVudGljYXRpb25DaGFsbGVuZ2Uoc2Vzc2lvbklELCBXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIzNSw3ICsyMzUsNyBAQCBwcml2YXRlOgogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVy
cwogICAgIHZvaWQgZGlkUmVjZWl2ZU5ldHdvcmtQcm9jZXNzUHJveHlNZXNzYWdlKElQQzo6Q29u
bmVjdGlvbiYsIElQQzo6RGVjb2RlciYpOwotICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJveHlJZGVudGlmaWVyLCBjb25z
dCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+JiwgV2ViQ29yZTo6QXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UmJiwgdWludDY0X3QgY2hhbGxlbmdlSUQpOworICAgIHZvaWQgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdlUHJv
eHlJZGVudGlmaWVyLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+
JiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgYm9vbCwgdWludDY0X3QgY2hh
bGxlbmdlSUQpOwogICAgIHZvaWQgZGlkRmV0Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFj
a0lELCBjb25zdCBXZWJzaXRlRGF0YSYpOwogICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGEo
dWludDY0X3QgY2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWREZWxldGVXZWJzaXRlRGF0YUZvck9y
aWdpbnModWludDY0X3QgY2FsbGJhY2tJRCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3Nh
Z2VzLmluCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTIx
LDcgKzIxLDcgQEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAogbWVzc2FnZXMgLT4gTmV0d29ya1Byb2Nlc3NQ
cm94eSBMZWdhY3lSZWNlaXZlciBOb3RSZWZDb3VudGVkIHsKLSAgICBEaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBh
Z2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGE+IHRvcE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxl
bmdlLCB1aW50NjRfdCBjaGFsbGVuZ2VJRCkKKyAgICBEaWRSZWNlaXZlQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJLaXQ6OldlYlBhZ2VQcm94eUlk
ZW50aWZpZXIgcGFnZUlELCBPcHRpb25hbDxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+IHRv
cE9yaWdpbiwgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgY2hhbGxlbmdlLCBib29s
IG5lZ290aWF0ZWRMZWdhY3lUTFMsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQogCiAgICAgRGlkRmV0
Y2hXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lELCBzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRl
RGF0YSB3ZWJzaXRlRGF0YSkKICAgICBEaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxs
YmFja0lEKQpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCShyZXZp
c2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJz
aXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNyArMTg0
LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZGV2aWNlTWFuYWdlbWVudFJlc3RyaWN0aW9uc0Vu
YWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9hbGxMb2Fkc0Jsb2NrZWRCeURldmljZU1hbmFn
ZW1lbnRSZXN0cmljdGlvbnNGb3JUZXN0aW5nIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxsb3dz
Q2VsbHVsYXJBY2Nlc3MgeyB0cnVlIH07Ci0gICAgYm9vbCBtX2xlZ2FjeVRMU0VuYWJsZWQgeyBm
YWxzZSB9OworICAgIGJvb2wgbV9sZWdhY3lUTFNFbmFibGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wg
bV9mYXN0U2VydmVyVHJ1c3RFdmFsdWF0aW9uRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBt
X3NlcnZpY2VXb3JrZXJQcm9jZXNzVGVybWluYXRpb25EZWxheUVuYWJsZWQgeyB0cnVlIH07CiAg
ICAgYm9vbCBtX3Rlc3RpbmdTZXNzaW9uRW5hYmxlZCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9Db2NvYS9XZWJzaXRlRGF0YVN0b3JlQ29jb2Eu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTg1LDE2ICs4NSw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICBib29sIHNob3VsZExvZ0Nvb2tpZUluZm9ybWF0aW9u
ID0gZmFsc2U7CiAgICAgYm9vbCBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
ID0gZmFsc2U7CiAgICAgYXV0byBmaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZSA9IFdl
YkNvcmU6OkZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlOjpBbGxCdXRDb29raWVzOwot
ICAgIGJvb2wgZW5hYmxlTGVnYWN5VExTID0gY29uZmlndXJhdGlvbigpLmxlZ2FjeVRMU0VuYWJs
ZWQoKTsKLSAgICBpZiAoaWQgdmFsdWUgPSBbZGVmYXVsdHMgb2JqZWN0Rm9yS2V5OkAiV2ViS2l0
RW5hYmxlTGVnYWN5VExTIl0pCi0gICAgICAgIGVuYWJsZUxlZ2FjeVRMUyA9IFt2YWx1ZSBib29s
VmFsdWVdOwotICAgIGlmICghZW5hYmxlTGVnYWN5VExTKSB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgICAgICBlbmFibGVMZWdhY3lUTFMg
PSBbW1BBTDo6Z2V0TUNQcm9maWxlQ29ubmVjdGlvbkNsYXNzKCkgc2hhcmVkQ29ubmVjdGlvbl0g
ZWZmZWN0aXZlQm9vbFZhbHVlRm9yU2V0dGluZzpAImFsbG93RGVwcmVjYXRlZFdlYktpdFRMUyJd
ID09IE1DUmVzdHJpY3RlZEJvb2xFeHBsaWNpdFllczsKLSNlbGlmIFBMQVRGT1JNKE1BQykKLSAg
ICAgICAgZW5hYmxlTGVnYWN5VExTID0gQ0ZQcmVmZXJlbmNlc0dldEFwcEJvb2xlYW5WYWx1ZShD
RlNUUigiYWxsb3dEZXByZWNhdGVkV2ViS2l0VExTIiksIENGU1RSKCJjb20uYXBwbGUuYXBwbGlj
YXRpb25hY2Nlc3MiKSwgbnVsbHB0cik7Ci0jZW5kaWYKLSAgICB9CiAgICAgV2ViQ29yZTo6UmVn
aXN0cmFibGVEb21haW4gcmVzb3VyY2VMb2FkU3RhdGlzdGljc01hbnVhbFByZXZhbGVudFJlc291
cmNlIHsgfTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGVuYWJs
ZVJlc291cmNlTG9hZFN0YXRpc3RpY3NEZWJ1Z01vZGUgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpA
IklUUERlYnVnTW9kZSJdOwpAQCAtMTY0LDcgKzE1NCw2IEBAIFdlYnNpdGVEYXRhU3RvcmVQYXJh
bWV0ZXJzIFdlYnNpdGVEYXRhU3QKICAgICAgICAgU2Vjb25kcyB7IFtkZWZhdWx0cyBpbnRlZ2Vy
Rm9yS2V5OldlYktpdE5ldHdvcmtMb2FkVGhyb3R0bGVMYXRlbmN5TWlsbGlzZWNvbmRzRGVmYXVs
dHNLZXldIC8gMTAwMC4gfSwKICAgICAgICAgV1RGTW92ZShodHRwUHJveHkpLAogICAgICAgICBX
VEZNb3ZlKGh0dHBzUHJveHkpLAotICAgICAgICBlbmFibGVMZWdhY3lUTFMsCiAgICAgICAgIFdU
Rk1vdmUocmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeSksCiAgICAgICAgIFdURk1vdmUo
cmVzb3VyY2VMb2FkU3RhdGlzdGljc0RpcmVjdG9yeUhhbmRsZSksCiAgICAgICAgIHJlc291cmNl
TG9hZFN0YXRpc3RpY3NFbmFibGVkKCksCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJ
KHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAyMC0wMS0yOSAgQWxleCBDaHJpc3Rl
bnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBXS05hdmlnYXRp
b25EZWxlZ2F0ZSBTUEkgdG8gZGlzYWJsZSBUTFMgMS4wIGFuZCAxLjEKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjk3OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViVmlldy9XZWJWaWV3Lm1tOgor
ICAgICAgICAoLVtXZWJWaWV3IF9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFtZU5hbWU6Z3Jv
dXBOYW1lOl0pOgorCiAyMDIwLTAxLTIyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBMZWdhY3kgV2ViS2l0OiBBZGQgU1BJIHZhcmlhbnQgb2YgLXNldFNlbGVj
dGVkRE9NUmFuZ2UgdGhhdCBjYW4gcGVyZm9ybSB0aGUgc2VsZWN0aW9uIGFzIGlmIHRyaWdnZXJl
ZCBieSB0aGUgdXNlcgpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJW
aWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL1dlYlZpZXcvV2Vi
Vmlldy5tbQkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2Vi
Vmlldy9XZWJWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIxLDE5ICsxNDIxLDYgQEAgLSAo
dm9pZClfY29tbW9uSW5pdGlhbGl6YXRpb25XaXRoRnJhbWVOYQogICAgICAgICBpZiAoV2ViQ29y
ZTo6SU9TQXBwbGljYXRpb246OmlzTW9iaWxlU2FmYXJpKCkpCiAgICAgICAgICAgICBXZWJDb3Jl
OjpEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OnNldFNob3VsZE1hbmFnZUF1ZGlvU2Vzc2lvbkNh
dGVnb3J5KHRydWUpOwogI2VuZGlmCi0KLSAgICAgICAgYm9vbCBlbmFibGVMZWdhY3lUTFMgPSBm
YWxzZTsKLSAgICAgICAgaWYgKGlkIHZhbHVlID0gW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVz
ZXJEZWZhdWx0c10gb2JqZWN0Rm9yS2V5OkAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIl0pCi0gICAg
ICAgICAgICBlbmFibGVMZWdhY3lUTFMgPSBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICAgICAgaWYg
KCFlbmFibGVMZWdhY3lUTFMpIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZP
Uk0oTUFDQ0FUQUxZU1QpCi0gICAgICAgICAgICBlbmFibGVMZWdhY3lUTFMgPSBbW1BBTDo6Z2V0
TUNQcm9maWxlQ29ubmVjdGlvbkNsYXNzKCkgc2hhcmVkQ29ubmVjdGlvbl0gZWZmZWN0aXZlQm9v
bFZhbHVlRm9yU2V0dGluZzpAImFsbG93RGVwcmVjYXRlZFdlYktpdFRMUyJdID09IE1DUmVzdHJp
Y3RlZEJvb2xFeHBsaWNpdFllczsKLSNlbGlmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgICAgIGVu
YWJsZUxlZ2FjeVRMUyA9IENGUHJlZmVyZW5jZXNHZXRBcHBCb29sZWFuVmFsdWUoQ0ZTVFIoImFs
bG93RGVwcmVjYXRlZFdlYktpdFRMUyIpLCBDRlNUUigiY29tLmFwcGxlLmFwcGxpY2F0aW9uYWNj
ZXNzIiksIG51bGxwdHIpOwotI2VuZGlmCi0gICAgICAgIH0KLSAgICAgICAgV2ViQ29yZTo6U29j
a2V0U3RyZWFtSGFuZGxlSW1wbDo6c2V0TGVnYWN5VExTRW5hYmxlZChlbmFibGVMZWdhY3lUTFMp
OwotCiAgICAgICAgIGRpZE9uZVRpbWVJbml0aWFsaXphdGlvbiA9IHRydWU7CiAgICAgfQogCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyNTU0MTApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwyMSBAQAorMjAyMC0wMS0yOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIEFkZCBXS05hdmlnYXRpb25EZWxlZ2F0ZSBTUEkgdG8gZGlzYWJs
ZSBUTFMgMS4wIGFuZCAxLjEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNjk3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdzQ29udHJvbGxlci5tOgorICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW06Cisg
ICAgICAgICgtW1RMU05hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl0pOgorICAgICAgICAoLVtUTFNOYXZpZ2F0aW9uRGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92
aXNpb25hbE5hdmlnYXRpb25dKToKKyAgICAgICAgKC1bVExTTmF2aWdhdGlvbkRlbGVnYXRlIHJl
Y2VpdmVkU2hvdWxkQWxsb3dMZWdhY3lUTFNdKToKKyAgICAgICAgKC1bVExTTmF2aWdhdGlvbkRl
bGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUTFNOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpk
aWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtUTFNOYXZpZ2F0aW9uRGVsZWdhdGUg
d2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndpdGhFcnJvcjpdKToKKyAgICAg
ICAgKC1bVExTTmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3OmF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlOnNob3VsZEFsbG93TGVnYWN5VExTOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisKIDIwMjAtMDEtMjkgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBwbGUuY29tPgog
CiAgICAgICAgIHJ1bi1zYWZhcmkgLyBydW4td2Via2l0LXRlc3RzIC0taW9zLXNpbXVsYXRvciBu
b3Qgd29ya2luZyB3aXRoIFhDb2RlIDEzLjMuMSAoMTFDNTA0KQpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1t
CShyZXZpc2lvbiAyNTUwOTIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1RMU0RlcHJlY2F0aW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC00MywxMzIgKzQzLDgyIEBA
CiAjaW1wb3J0IDxXZWJLaXQvV2ViQ29yZVRocmVhZC5oPgogI2VuZGlmCiAKLUBpbnRlcmZhY2Ug
V2ViU29ja2V0RGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlLCBXZWJVSURlbGVnYXRl
PgotLSAoTlNTdHJpbmcgKil3YWl0Rm9yTWVzc2FnZTsKK0BpbnRlcmZhY2UgVExTTmF2aWdhdGlv
bkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlPgorLSAodm9pZCl3YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbjsKKy0gKHZvaWQpd2FpdEZvckRpZEZhaWxQcm92aXNpb25h
bE5hdmlnYXRpb247CistIChib29sKXJlY2VpdmVkU2hvdWxkQWxsb3dMZWdhY3lUTFM7CitAcHJv
cGVydHkgKG5vbmF0b21pYykgYm9vbCBzaG91bGRBbGxvd0xlZ2FjeVRMUzsKIEBlbmQKIAotQGlt
cGxlbWVudGF0aW9uIFdlYlNvY2tldERlbGVnYXRlIHsKLSAgICBSZXRhaW5QdHI8TlNTdHJpbmc+
IF9tZXNzYWdlOworQGltcGxlbWVudGF0aW9uIFRMU05hdmlnYXRpb25EZWxlZ2F0ZSB7CisgICAg
Ym9vbCBfbmF2aWdhdGlvbkZpbmlzaGVkOworICAgIGJvb2wgX25hdmlnYXRpb25GYWlsZWQ7Cisg
ICAgYm9vbCBfcmVjZWl2ZWRTaG91bGRBbGxvd0xlZ2FjeVRMUzsKIH0KIAotLSAoTlNTdHJpbmcg
Kil3YWl0Rm9yTWVzc2FnZQorLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbgogewot
ICAgIHdoaWxlICghX21lc3NhZ2UpCisgICAgd2hpbGUgKCFfbmF2aWdhdGlvbkZpbmlzaGVkKQog
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVuTG9vcCgpOwotICAgIHJldHVybiBf
bWVzc2FnZS5hdXRvcmVsZWFzZSgpOwogfQogCi0tICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKilt
ZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKXdhaXRGb3JE
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCiB7Ci0gICAgX21lc3NhZ2UgPSBtZXNzYWdlOwot
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgd2hpbGUgKCFfbmF2aWdhdGlvbkZhaWxlZCkK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKIH0KIAotLSAodm9p
ZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1l
c3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZy
YW1lCistIChib29sKXJlY2VpdmVkU2hvdWxkQWxsb3dMZWdhY3lUTFMKIHsKLSAgICBfbWVzc2Fn
ZSA9IG1lc3NhZ2U7CisgICAgcmV0dXJuIF9yZWNlaXZlZFNob3VsZEFsbG93TGVnYWN5VExTOwog
fQogCi1AZW5kCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKLQotY29uc3QgdWludDE2X3Qg
dGxzMV8xID0gMHgwMzAyOwotc3RhdGljIE5TU3RyaW5nICpkZWZhdWx0c0tleSA9IEAiV2ViS2l0
RW5hYmxlTGVnYWN5VExTIjsKLQotVEVTVChXZWJLaXQsIFRMU1ZlcnNpb25XZWJTb2NrZXQpCist
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICopY2hhbGxlbmdlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9z
aXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqIGNyZWRlbnRpYWwpKWNvbXBsZXRp
b25IYW5kbGVyCiB7Ci0gICAgYXV0byBnZXRXZWJTb2NrZXRFdmVudCA9IFtdIChib29sIGNsaWVu
dEFsbG93RGVwcmVjYXRlZFRMUywgYm9vbCBzZXJ2ZXJMaW1pdFRMUykgewotICAgICAgICBPcHRp
b25hbDx1aW50MTZfdD4gbWF4U2VydmVyVExTVmVyc2lvbjsKLSAgICAgICAgaWYgKHNlcnZlckxp
bWl0VExTKQotICAgICAgICAgICAgbWF4U2VydmVyVExTVmVyc2lvbiA9IHRsczFfMTsKLSAgICAg
ICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgWz1dKFNTTCAq
c3NsKSB7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRSghc3NsID09IChjbGllbnRBbGxvd0RlcHJl
Y2F0ZWRUTFMgIT0gc2VydmVyTGltaXRUTFMpKTsKLSAgICAgICAgfSwgbWF4U2VydmVyVExTVmVy
c2lvbik7Ci0KLSAgICAgICAgaWYgKGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUykKLSAgICAgICAg
ICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6WUVTIGZv
cktleTpkZWZhdWx0c0tleV07Ci0gICAgICAgIAotICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOwotICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbV2ViU29ja2V0RGVsZWdhdGUgbmV3XSk7Ci0gICAgICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhU
TUxTdHJpbmc6QCJzdGFydCBuZXR3b3JrIHByb2Nlc3MiXTsKLSAgICAgICAgW1t3ZWJWaWV3IGNv
bmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9hbGxvd0FueVRMU0NlcnRpZmljYXRlRm9yV2ViU29j
a2V0VGVzdGluZ107Ci0gICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKLSAgICAgICAgICAgIEAiPHNjcmlwdD4iCi0g
ICAgICAgICAgICAiY29uc3Qgc29ja2V0ID0gbmV3IFdlYlNvY2tldCgnd3NzOi8vbG9jYWxob3N0
OiVkJyk7IgotICAgICAgICAgICAgInNvY2tldC5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpeyBh
bGVydCgnY2xvc2UnKTsgfTsiCi0gICAgICAgICAgICAic29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlv
bihldmVudCl7IGFsZXJ0KCdlcnJvcjogJyArIGV2ZW50LmRhdGEpOyB9OyIKLSAgICAgICAgICAg
ICI8L3NjcmlwdD4iLCBzZXJ2ZXIucG9ydCgpXV07Ci0gICAgICAgIE5TU3RyaW5nICptZXNzYWdl
ID0gW2RlbGVnYXRlIHdhaXRGb3JNZXNzYWdlXTsKLSAgICAgICAgCi0gICAgICAgIGlmIChjbGll
bnRBbGxvd0RlcHJlY2F0ZWRUTFMpCi0gICAgICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5k
YXJkVXNlckRlZmF1bHRzXSByZW1vdmVPYmplY3RGb3JLZXk6ZGVmYXVsdHNLZXldOworICAgIEVY
UEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRpY2F0aW9uTWV0
aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVyVHJ1c3QpOworICAgIGNvbXBsZXRp
b25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxD
cmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNl
cnZlclRydXN0XSk7Cit9CiAKLSAgICAgICAgcmV0dXJuIG1lc3NhZ2U7Ci0gICAgfTsKKy0gKHZv
aWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05h
dmlnYXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgX25hdmlnYXRpb25GaW5pc2hlZCA9IHRydWU7
Cit9CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZlbnQodHJ1ZSwgdHJ1ZSks
ICJjbG9zZSIpOwotICAgIE5TU3RyaW5nICptZXNzYWdlID0gZ2V0V2ViU29ja2V0RXZlbnQoZmFs
c2UsIHRydWUpOwotICAgIEVYUEVDVF9UUlVFKFttZXNzYWdlIGlzRXF1YWxUb1N0cmluZzpAImVy
cm9yOiB1bmRlZmluZWQiXSB8fCBbbWVzc2FnZSBpc0VxdWFsVG9TdHJpbmc6QCJjbG9zZSJdKTsK
LSAgICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZlbnQoZmFsc2UsIGZhbHNlKSwgImNs
b3NlIik7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlkRmFpbFByb3Zp
c2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbiB3aXRoRXJyb3I6KE5T
RXJyb3IgKillcnJvcgoreworICAgIF9uYXZpZ2F0aW9uRmFpbGVkID0gdHJ1ZTsKIH0KIAotTlNT
dHJpbmcgKmdldFdlYlNvY2tldEV2ZW50V2ViS2l0TGVnYWN5KGJvb2wgY2xpZW50QWxsb3dEZXBy
ZWNhdGVkVExTLCBib29sIHNlcnZlckxpbWl0VExTKQorLSAodm9pZClfd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBzaG91bGRBbGxvd0xlZ2FjeVRMUzoodm9pZCAoXikoQk9P
TCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSNpZiBQTEFURk9STShJT1NfRkFNSUxZKQotICAgIFdl
YktpdEluaXRpYWxpemUoKTsKLSAgICBXZWJUaHJlYWRMb2NrKCk7Ci0jZW5kaWYKLSAgICBPcHRp
b25hbDx1aW50MTZfdD4gbWF4U2VydmVyVExTVmVyc2lvbjsKLSAgICBpZiAoc2VydmVyTGltaXRU
TFMpCi0gICAgICAgIG1heFNlcnZlclRMU1ZlcnNpb24gPSB0bHMxXzE7Ci0gICAgVENQU2VydmVy
IHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgWz1dKFNTTCAqc3NsKSB7Ci0gICAg
ICAgIEVYUEVDVF9UUlVFKCFzc2wgPT0gKGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUyAhPSBzZXJ2
ZXJMaW1pdFRMUykpOwotICAgIH0sIG1heFNlcnZlclRMU1ZlcnNpb24pOwotCi0gICAgaWYgKGNs
aWVudEFsbG93RGVwcmVjYXRlZFRMUykKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpZRVMgZm9yS2V5OmRlZmF1bHRzS2V5XTsKLSAgICAKLSAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXZWJWaWV3IG5ld10pOwotICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtXZWJTb2NrZXREZWxlZ2F0ZSBuZXddKTsKLSAgICBbd2ViVmlldyBzZXRV
SURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBXZWJDb3JlVGVzdFN1cHBvcnQ6OnNldEFs
bG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwotICAgIFtbd2ViVmlldyBtYWluRnJhbWVdIGxv
YWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OgotICAgICAgICBAIjxzY3Jp
cHQ+IgotICAgICAgICAiY29uc3Qgc29ja2V0ID0gbmV3IFdlYlNvY2tldCgnd3NzOi8vbG9jYWxo
b3N0OiVkJyk7IgotICAgICAgICAic29ja2V0Lm9uY2xvc2UgPSBmdW5jdGlvbihldmVudCl7IGFs
ZXJ0KCdjbG9zZScpOyB9OyIKLSAgICAgICAgInNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24oZXZl
bnQpeyBhbGVydCgnZXJyb3I6ICcgKyBldmVudC5kYXRhKTsgfTsiCi0gICAgICAgICI8L3Njcmlw
dD4iLCBzZXJ2ZXIucG9ydCgpXSBiYXNlVVJMOm5pbF07Ci0gICAgTlNTdHJpbmcgKm1lc3NhZ2Ug
PSBbZGVsZWdhdGUgd2FpdEZvck1lc3NhZ2VdOwotCi0gICAgaWYgKGNsaWVudEFsbG93RGVwcmVj
YXRlZFRMUykKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10g
cmVtb3ZlT2JqZWN0Rm9yS2V5OmRlZmF1bHRzS2V5XTsKLQotICAgIHJldHVybiBtZXNzYWdlOwot
fQotCi1URVNUKFdlYktpdCwgVExTVmVyc2lvbldlYlNvY2tldFdlYktpdExlZ2FjeTEpCi17Ci0g
ICAgRVhQRUNUX1dLX1NUUkVRKGdldFdlYlNvY2tldEV2ZW50V2ViS2l0TGVnYWN5KHRydWUsIHRy
dWUpLCAiY2xvc2UiKTsKLX0KLQotVEVTVChXZWJLaXQsIFRMU1ZlcnNpb25XZWJTb2NrZXRXZWJL
aXRMZWdhY3kyKQotewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCi0gICAgY29uc3QgY2hhciog
ZXhwZWN0ZWQgPSAiZXJyb3I6IHVuZGVmaW5lZCI7Ci0jZWxzZQotICAgIGNvbnN0IGNoYXIqIGV4
cGVjdGVkID0gImNsb3NlIjsKLSNlbmRpZgotICAgIEVYUEVDVF9XS19TVFJFUShnZXRXZWJTb2Nr
ZXRFdmVudFdlYktpdExlZ2FjeShmYWxzZSwgdHJ1ZSksIGV4cGVjdGVkKTsKKyAgICBfcmVjZWl2
ZWRTaG91bGRBbGxvd0xlZ2FjeVRMUyA9IHRydWU7CisgICAgY29tcGxldGlvbkhhbmRsZXIoW3Nl
bGYgc2hvdWxkQWxsb3dMZWdhY3lUTFNdKTsKIH0KIAotVEVTVChXZWJLaXQsIFRMU1ZlcnNpb25X
ZWJTb2NrZXRXZWJLaXRMZWdhY3kzKQorQGVuZAorCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKKworY29uc3QgdWludDE2X3QgdGxzMV8xID0gMHgwMzAyOworc3RhdGljIE5TU3RyaW5nICpk
ZWZhdWx0c0tleSA9IEAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIjsKKworVEVTVChUTFNWZXJzaW9u
LCBEZWZhdWx0QmVoYXZpb3IpCiB7Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGdldFdlYlNvY2tldEV2
ZW50V2ViS2l0TGVnYWN5KGZhbHNlLCBmYWxzZSksICJjbG9zZSIpOworICAgIFRDUFNlcnZlciBz
ZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhP
SywgdGxzMV8xKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXS1dlYlZpZXcgbmV3
XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsK
KyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tX
ZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAo
XmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3Jl
ZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoY2hhbGxlbmdlLnByb3RlY3Rp
b25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxBdXRoZW50aWNhdGlvbk1ldGhvZFNl
cnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVz
ZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAgICB9XTsKKyAgICBbd2ViVmlldyBs
b2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3Ry
aW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwg
c2VydmVyLnBvcnQoKV1dXV07CisgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0
aW9uXTsKIH0KIAotVEVTVChXZWJLaXQsIFRMU1ZlcnNpb25OZXR3b3JrU2Vzc2lvbikKKy8vIEZJ
WE1FOiBUaGlzIHRlc3Qgc2hvdWxkIHJlbWFpbiBkaXNhYmxlZCB1bnRpbCByZGFyOi8vcHJvYmxl
bS81NjUyMjYwMSBpcyBmaXhlZC4KK1RFU1QoVExTVmVyc2lvbiwgRElTQUJMRURfTmV0d29ya1Nl
c3Npb24pCiB7CiAgICAgc3RhdGljIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlIG5ld10pOwogICAgIGF1dG8gbWFrZVdlYlZpZXdXaXRoID0gWyZdIChXS1dl
YnNpdGVEYXRhU3RvcmUgKnN0b3JlKSB7CkBAIC0xNzcsNTUgKzEyNyw4MyBAQCBURVNUKFdlYktp
dCwgVExTVmVyc2lvbk5ldHdvcmtTZXNzaW9uKQogICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOwogICAgICAgICBbd2ViVmlldyBz
ZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwogICAgICAgICBbZGVsZWdhdGUg
c2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJM
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VS
TFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgewor
ICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2UuYXV0
aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRpb25NZXRob2RTZXJ2ZXJUcnVzdCk7
CiAgICAgICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVu
dGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3Rl
Y3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgICAgICB9XTsKICAgICAgICAgcmV0dXJuIHdl
YlZpZXc7CiAgICAgfTsKICAgICB7Ci0gICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVy
OjpQcm90b2NvbDo6SFRUUFMsIFtdKFNTTCAqc3NsKSB7Ci0gICAgICAgICAgICBFWFBFQ1RfRkFM
U0Uoc3NsKTsKLSAgICAgICAgfSwgdGxzMV8xKTsKKyAgICAgICAgVENQU2VydmVyIHNlcnZlcihU
Q1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LLCB0bHMx
XzEpOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBtYWtlV2ViVmlld1dpdGgoW1dLV2Vic2l0ZURh
dGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9y
dCgpXV1dXTsKLSAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZp
Z2F0aW9uXTsKKyAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
ICAgICB9CiAgICAgewotICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9j
b2w6OkhUVFBTLCBbXShTU0wgKnNzbCkgewotICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7
Ci0gICAgICAgIH0sIHRsczFfMSk7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVy
OjpQcm90b2NvbDo6SFRUUFMsIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSywgdGxzMV8xKTsKICAg
ICAgICAgYXV0byB3ZWJWaWV3ID0gbWFrZVdlYlZpZXdXaXRoKFtXS1dlYnNpdGVEYXRhU3RvcmUg
bm9uUGVyc2lzdGVudERhdGFTdG9yZV0pOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmlu
ZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQo
KV1dXV07Ci0gICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdh
dGlvbl07CisgICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CiAg
ICAgfQogICAgIHsKLSAgICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29s
OjpIVFRQUywgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LLCB0bHMxXzEpOworICAgICAgICBUQ1BT
ZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXShTU0wgKnNzbCkgewor
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7CisgICAgICAgIH0sIHRsczFfMSk7CiAgICAg
ICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tfV0tXZWJzaXRlRGF0YVN0b3JlQ29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRDb25maWd1cmF0aW9uXSk7Ci0gICAg
ICAgIFtjb25maWd1cmF0aW9uIHNldExlZ2FjeVRMU0VuYWJsZWQ6WUVTXTsKKyAgICAgICAgW2Nv
bmZpZ3VyYXRpb24gc2V0TGVnYWN5VExTRW5hYmxlZDpOT107CiAgICAgICAgIGF1dG8gZGF0YVN0
b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBhbGxvY10gX2luaXRXaXRoQ29uZmln
dXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IG1h
a2VXZWJWaWV3V2l0aChkYXRhU3RvcmUuZ2V0KCkpOwogICAgICAgICBbd2ViVmlldyBsb2FkUmVx
dWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltO
U1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVy
LnBvcnQoKV1dXV07Ci0gICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bl07CisgICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlv
bl07CiAgICAgfQotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNl
dEJvb2w6WUVTIGZvcktleTpkZWZhdWx0c0tleV07CisgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFu
ZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpOTyBmb3JLZXk6ZGVmYXVsdHNLZXldOwogICAgIHsK
ICAgICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10o
U1NMICpzc2wpIHsKLSAgICAgICAgICAgIFRDUFNlcnZlcjo6cmVzcG9uZFdpdGhPSyhzc2wpOwor
ICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7CiAgICAgICAgIH0sIHRsczFfMSk7CiAgICAg
ICAgIGF1dG8gd2ViVmlldyA9IG1ha2VXZWJWaWV3V2l0aChbV0tXZWJzaXRlRGF0YVN0b3JlIGRl
ZmF1bHREYXRhU3RvcmVdKTsKICAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5n
V2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOwot
ICAgICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgICAgICBb
ZGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOwogICAgIH0KICAg
ICB7CiAgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMs
IFtdKFNTTCAqc3NsKSB7Ci0gICAgICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3Ns
KTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzc2wpOwogICAgICAgICB9LCB0bHMxXzEpOwog
ICAgICAgICBhdXRvIHdlYlZpZXcgPSBtYWtlV2ViVmlld1dpdGgoW1dLV2Vic2l0ZURhdGFTdG9y
ZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXSk7CiAgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0
OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3Ry
aW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9y
dCgpXV1dXTsKLSAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsK
KyAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsK
ICAgICB9CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3Zl
T2JqZWN0Rm9yS2V5OmRlZmF1bHRzS2V5XTsKIH0KIAorLy8gRklYTUU6IFRoaXMgdGVzdCBzaG91
bGQgcmVtYWluIGRpc2FibGVkIHVudGlsIHJkYXI6Ly9wcm9ibGVtLzU2NTIyNjAxIGlzIGZpeGVk
LgorVEVTVChUTFNWZXJzaW9uLCBESVNBQkxFRF9OYXZpZ2F0aW9uRGVsZWdhdGVTUEkpCit7Cisg
ICAgeworICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVExTTmF2aWdhdGlvbkRlbGVn
YXRlIG5ld10pOworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6
OkhUVFBTLCBbXShTU0wgKnNzbCkgeworICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgb25s
eSBpZiB3ZSBoYXZlIHRoZSBuZXcgU1BJLgorICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7
CisgICAgICAgIH0sIHRsczFfMSk7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dL
V2ViVmlldyBuZXddKTsKKyAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRl
bGVnYXRlLmdldCgpXTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOworICAg
ICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworICAg
ICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgcmVjZWl2ZWRTaG91bGRBbGxvd0xlZ2FjeVRMU10p
OworICAgIH0KKyAgICB7CisgICAgICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtUTFNOYXZp
Z2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgICAgIGRlbGVnYXRlLmdldCgpLnNob3VsZEFsbG93
TGVnYWN5VExTID0gWUVTOworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJv
dG9jb2w6OkhUVFBTLCBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0ssIHRsczFfMSk7CisgICAgICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICAgICAgW3dlYlZp
ZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgW3dlYlZp
ZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0
aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVk
LyIsIHNlcnZlci5wb3J0KCldXV1dOworICAgICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlz
aE5hdmlnYXRpb25dOworICAgICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgcmVjZWl2ZWRTaG91
bGRBbGxvd0xlZ2FjeVRMU10pOworICAgIH0KK30KKworLy8gRklYTUU6IEFkZCBzb21lIHRlc3Rz
IGZvciBXS1dlYlZpZXcuaGFzT25seVNlY3VyZUNvbnRlbnQKKwogfQogCiAjZW5kaWYgLy8gSEFW
RShTU0wpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>389289</attachid>
            <date>2020-01-30 14:37:06 -0800</date>
            <delta_ts>2020-01-30 14:39:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206979-20200130143704.patch</filename>
            <type>text/plain</type>
            <size>72133</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYkNv
cmUvUEFML0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDIwLTAx
LTMwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgQWRkIFdLTmF2aWdhdGlvbkRlbGVnYXRlIFNQSSB0byBkaXNhYmxlIFRMUyAxLjAgYW5kIDEu
MQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTc5
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICogcGFsL3Nw
aS9jZi9DRk5ldHdvcmtTUEkuaDoKKwogMjAyMC0wMS0yMiAgRGFyaW4gQWRsZXIgIDxkYXJpbkBh
cHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHNvbWUgdW5uZWVkZWQgZGVmaW5pdGlvbnMgZnJv
bSBQbGF0Zm9ybS5oIGZhbWlseSBoZWFkZXJzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9QQUwvcGFs
L3NwaS9jZi9DRk5ldHdvcmtTUEkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dl
YkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgJKHdvcmtpbmcgY29weSkKQEAgLTEw
OCw2ICsxMDgsMTAgQEAgdHlwZWRlZiB2b2lkICheQ0ZDYWNoZWRVUkxSZXNwb25zZUNhbGxCYQog
CiAjaWYgZGVmaW5lZChfX09CSkNfXykKIAorQGludGVyZmFjZSBOU1VSTFNlc3Npb25UYXNrICgp
CitAcHJvcGVydHkgKHJlYWRvbmx5LCByZXRhaW4pIE5TVVJMU2Vzc2lvblRhc2tNZXRyaWNzKiBf
aW5jb21wbGV0ZVRhc2tNZXRyaWNzOworQGVuZAorCiBAaW50ZXJmYWNlIE5TVVJMQ2FjaGUgKCkK
IC0gKENGVVJMQ2FjaGVSZWYpX0NGVVJMQ2FjaGU7CiBAZW5kCkBAIC00MDAsNiArNDA0LDcgQEAg
V1RGX0VYVEVSTl9DX0VORAogCiBAaW50ZXJmYWNlIE5TVVJMU2Vzc2lvblRhc2sgKCkKIC0gKHZv
aWQpX3NldEV4cGxpY2l0Q29va2llU3RvcmFnZTooQ0ZIVFRQQ29va2llU3RvcmFnZVJlZilzdG9y
YWdlOworQHByb3BlcnR5IChyZWFkb25seSkgU1NMUHJvdG9jb2wgX1RMU05lZ290aWF0ZWRQcm90
b2NvbFZlcnNpb247CiBAZW5kCiAKICNlbmRpZiAvLyBkZWZpbmVkKF9fT0JKQ19fKQpJbmRleDog
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI1NTIxNSkKKysrIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsNjQgQEAKKzIwMjAtMDEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgV0tOYXZpZ2F0aW9uRGVs
ZWdhdGUgU1BJIHRvIGRpc2FibGUgVExTIDEuMCBhbmQgMS4xCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDY5NzkKKworICAgICAgICBSZXZpZXdlZCBi
eSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrQ09SU1By
ZWZsaWdodENoZWNrZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ09SU1ByZWZsaWdo
dENoZWNrZXI6OmRpZFJlY2VpdmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtEYXRhVGFzay5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2Fk
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2Up
OgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmg6CisgICAgICAgICogTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRl
Y29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBh
cmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNyZWF0
aW9uUGFyYW1ldGVycy5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vz
c2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAgICAgICAqIE5ldHdvcmtQ
cm9jZXNzL1BpbmdMb2FkLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGluZ0xvYWQ6OmRpZFJlY2Vp
dmVDaGFsbGVuZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg6CisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EuaDoKKyAgICAg
ICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5tbToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6Ok5ldHdvcmtEYXRhVGFza0NvY29hKToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFJlY2VpdmVDaGFsbGVu
Z2UpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrRGF0YVRhc2tDb2NvYTo6d2lsbFBlcmZvcm1I
VFRQUmVkaXJlY3Rpb24pOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9y
bUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
Y29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbToKKyAgICAgICAgKHByb2Nlc3NTZXJ2ZXJUcnVz
dEV2YWx1YXRpb24pOgorICAgICAgICAoLVtXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGUgVVJMU2Vz
c2lvbjp0YXNrOmRpZFJlY2VpdmVDaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlY2VpdmVD
aGFsbGVuZ2UpOgorICAgICAgICAqIFNoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlv
bk1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSk6CisgICAgICAgICogU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50
OjpzaG91bGRBbGxvd0xlZ2FjeVRMUyk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25T
dGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9u
RGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0OjpzeXN0ZW1BbGxvd3NMZWdhY3lUTFNGb3IpOgor
ICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OnNob3Vs
ZEFsbG93TGVnYWN5VExTKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bv
b2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5p
dGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94
eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVD
b2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZURhdGFTdG9yZTo6cGFyYW1ldGVycyk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmg6CisKIDIwMjAtMDEtMjcgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IGNvbnNvbGlkYXRlIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzIGZpbGVzIGludG8gSW5zcGVjdG9yIGZvbGRlcnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tl
ci5jcHAJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgsNyAr
ODgsNyBAQCB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6d2lsbFBlCiAgICAgbV9j
b21wbGV0aW9uQ2FsbGJhY2soUmVzb3VyY2VFcnJvciB7IGVycm9yRG9tYWluV2ViS2l0SW50ZXJu
YWwsIDAsIG1fcGFyYW1ldGVycy5vcmlnaW5hbFJlcXVlc3QudXJsKCksICJQcmVmbGlnaHQgcmVz
cG9uc2UgaXMgbm90IHN1Y2Nlc3NmdWwiX3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0Nv
bnRyb2wgfSk7CiB9CiAKLXZvaWQgTmV0d29ya0NPUlNQcmVmbGlnaHRDaGVja2VyOjpkaWRSZWNl
aXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdl
LCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBO
ZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVuZ2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMg
bmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlQ2hh
bGxlbmdlLCBhdXRoZW50aWNhdGlvbiBzY2hlbWU6ICV1IiwgY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZSgpLmF1dGhlbnRpY2F0aW9uU2NoZW1lKCkpOwogCkBAIC0xMDEsNyArMTAxLDcgQEAgdm9p
ZCBOZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXI6OmRpZFJlYwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgbV9uZXR3b3JrUHJvY2Vzcy0+YXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKG1fcGFyYW1ldGVycy5zZXNzaW9uSUQsIG1f
cGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbiA/ICZtX3Bh
cmFtZXRlcnMudG9wT3JpZ2luLT5kYXRhKCkgOiBudWxscHRyLCBjaGFsbGVuZ2UsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBtX25ldHdvcmtQcm9jZXNzLT5hdXRoZW50aWNhdGlv
bk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9wYXJhbWV0ZXJz
LnNlc3Npb25JRCwgbV9wYXJhbWV0ZXJzLndlYlBhZ2VQcm94eUlELCBtX3BhcmFtZXRlcnMudG9w
T3JpZ2luID8gJm1fcGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEoKSA6IG51bGxwdHIsIGNoYWxs
ZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIE5ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlcjo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zZSwgUmVzcG9uc2VDb21wbGV0aW9u
SGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrQ09SU1ByZWZsaWdodENoZWNrZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtDT1JTUHJlZmxpZ2h0Q2hlY2tlci5oCShy
ZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtD
T1JTUHJlZmxpZ2h0Q2hlY2tlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw3ICs2OCw3IEBAIHB1
YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHdpbGxQZXJmb3JtSFRUUFJlZGlyZWN0aW9uKFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFJl
ZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7Ci0gICAgdm9pZCBkaWRSZWNlaXZlQ2hh
bGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIENoYWxsZW5nZUNvbXBs
ZXRpb25IYW5kbGVyJiYpIGZpbmFsOworICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJD
b3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVSZXNw
b25zZShXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3Mm
KSBmaW5hbDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya0RhdGFU
YXNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
RGF0YVRhc2suaAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrRGF0YVRhc2suaAkod29ya2luZyBjb3B5KQpAQCAtNTIsNiArNTIsNyBAQCBj
bGFzcyBOZXR3b3JrTG9hZFBhcmFtZXRlcnM7CiBjbGFzcyBOZXR3b3JrU2Vzc2lvbjsKIGNsYXNz
IFBlbmRpbmdEb3dubG9hZDsKIGVudW0gY2xhc3MgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbiA6IHVpbnQ4X3Q7CitlbnVtIGNsYXNzIE5lZ290aWF0ZWRMZWdhY3lUTFMgOiBib29s
OwogCiB1c2luZyBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik+OwogdXNpbmcgQ2hhbGxlbmdlQ29tcGxl
dGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmKT47CkBAIC02MCw3ICs2
MSw3IEBAIHVzaW5nIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGUKIGNsYXNzIE5l
dHdvcmtEYXRhVGFza0NsaWVudCB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxQZXJm
b3JtSFRUUFJlZGlyZWN0aW9uKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmJiwgV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0JiYsIFJlZGlyZWN0Q29tcGxldGlvbkhhbmRsZXImJikgPSAwOwotICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlJiYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSYmLCBOZWdvdGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYm
KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRsZXImJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmKSA9
IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENvbXBsZXRlV2l0aEVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImLCBjb25zdCBXZWJDb3JlOjpOZXR3b3JrTG9hZE1ldHJpY3MmKSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtMb2FkLmNwcAko
cmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3Jr
TG9hZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lkIE5ldHdvcmtM
b2FkOjp3aWxsUGVyZm9ybUhUVFBSZWRpcmVjCiAgICAgbV9jbGllbnQuZ2V0KCkud2lsbFNlbmRS
ZWRpcmVjdGVkUmVxdWVzdChXVEZNb3ZlKG9sZFJlcXVlc3QpLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKHJlZGlyZWN0UmVzcG9uc2UpKTsKIH0KIAotdm9pZCBOZXR3b3JrTG9hZDo6ZGlkUmVj
ZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgQ2hhbGxl
bmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgTmV0d29ya0xv
YWQ6OmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiBjaGFsbGVu
Z2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29t
cGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBtX2NsaWVudC5nZXQo
KS5kaWRSZWNlaXZlQ2hhbGxlbmdlKGNoYWxsZW5nZSk7CiAKQEAgLTIwMyw3ICsyMDMsNyBAQCB2
b2lkIE5ldHdvcmtMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1CiAgICAgaWYgKGF1dG8qIHBl
bmRpbmdEb3dubG9hZCA9IG1fdGFzay0+cGVuZGluZ0Rvd25sb2FkKCkpCiAgICAgICAgIG1fbmV0
d29ya1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSgqcGVuZGluZ0Rvd25sb2FkLCBjaGFsbGVuZ2UsIFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKICAgICBlbHNlCi0gICAgICAgIG1fbmV0d29ya1Byb2Nlc3MtPmF1dGhl
bnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShtX3Rh
c2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQsIG1fcGFyYW1ldGVy
cy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwg
Y2hhbGxlbmdlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fbmV0d29y
a1Byb2Nlc3MtPmF1dGhlbnRpY2F0aW9uTWFuYWdlcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZShtX3Rhc2stPnNlc3Npb25JRCgpLCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5
SUQsIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAmbV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0
YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya0xvYWQ6OmRpZFJlY2VpdmVSZXNw
b25zZShSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9uc2UsIFJlc3BvbnNlQ29tcGxldGlvbkhhbmRs
ZXImJiBjb21wbGV0aW9uSGFuZGxlcikKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya0xvYWQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtMb2FkLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya0xvYWQuaAkod29ya2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBA
QCBwcml2YXRlOgogCiAgICAgLy8gTmV0d29ya0RhdGFUYXNrQ2xpZW50CiAgICAgdm9pZCB3aWxs
UGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVjdENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFs
OwotICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lk
IGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwg
TmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7
CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYm
LCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2
ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRD
b21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2Vi
Q29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTc3LDcgKzc3LDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVyczo6ZQogICAgIGVuY29kZXIgPDwgZW5hYmxlQWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2Rl
OwogICAgIGVuY29kZXIgPDwgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBo
c3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAgICBlbmNvZGVyIDw8IGVuYWJs
ZUxlZ2FjeVRMUzsKIH0KIAogYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6
ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMmIHJlc3VsdCkKQEAgLTE3OSw5ICsxNzgsNiBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzOjpkCiAKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oc3Rz
U3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5lbmFibGVMZWdhY3lUTFMpKQot
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAkod29y
a2luZyBjb3B5KQpAQCAtOTcsNyArOTcsNiBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMgCiAgICAgYm9vbCBlbmFibGVBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGUg
eyBmYWxzZSB9OwogICAgIFN0cmluZyBoc3RzU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7Ci0g
ICAgYm9vbCBlbmFibGVMZWdhY3lUTFMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2aXNpb24g
MjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrU2Vzc2lvbkNy
ZWF0aW9uUGFyYW1ldGVycy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDcgKzUxLDYgQEAgdm9p
ZCBOZXR3b3JrU2Vzc2lvbkNyZWF0aW9uUGFyYW1ldGVyczo6ZQogICAgIGVuY29kZXIgPDwgbG9h
ZFRocm90dGxlTGF0ZW5jeTsKICAgICBlbmNvZGVyIDw8IGh0dHBQcm94eTsKICAgICBlbmNvZGVy
IDw8IGh0dHBzUHJveHk7Ci0gICAgZW5jb2RlciA8PCBlbmFibGVMZWdhY3lUTFM7CiAjZW5kaWYK
ICNpZiBVU0UoU09VUCkKICAgICBlbmNvZGVyIDw8IGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0
aDsKQEAgLTEzOCwxMSArMTM3LDYgQEAgT3B0aW9uYWw8TmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcgogICAgIGRlY29kZXIgPj4gaHR0cHNQcm94eTsKICAgICBpZiAoIWh0dHBzUHJveHkp
CiAgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Ci0KLSAgICBPcHRpb25hbDxib29sPiBlbmFi
bGVMZWdhY3lUTFM7Ci0gICAgZGVjb2RlciA+PiBlbmFibGVMZWdhY3lUTFM7Ci0gICAgaWYgKCFl
bmFibGVMZWdhY3lUTFMpCi0gICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiAjZW5kaWYKIAog
I2lmIFVTRShTT1VQKQpAQCAtMjg4LDcgKzI4Miw2IEBAIE9wdGlvbmFsPE5ldHdvcmtTZXNzaW9u
Q3JlYXRpb25QYXJhbWV0ZXIKICAgICAgICAgLCBXVEZNb3ZlKCpsb2FkVGhyb3R0bGVMYXRlbmN5
KQogICAgICAgICAsIFdURk1vdmUoKmh0dHBQcm94eSkKICAgICAgICAgLCBXVEZNb3ZlKCpodHRw
c1Byb3h5KQotICAgICAgICAsIFdURk1vdmUoKmVuYWJsZUxlZ2FjeVRMUykKICNlbmRpZgogI2lm
IFVTRShTT1VQKQogICAgICAgICAsIFdURk1vdmUoKmNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0
aCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVh
dGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtTZXNzaW9uQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDI1NTA5MikK
KysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMuaAkod29ya2luZyBjb3B5KQpAQCAtNzAsNyArNzAsNiBAQCBzdHJ1Y3QgTmV0d29y
a1Nlc3Npb25DcmVhdGlvblBhcmFtZXRlcnMgCiAgICAgU2Vjb25kcyBsb2FkVGhyb3R0bGVMYXRl
bmN5OwogICAgIFVSTCBodHRwUHJveHk7CiAgICAgVVJMIGh0dHBzUHJveHk7Ci0gICAgYm9vbCBl
bmFibGVMZWdhY3lUTFMgeyBmYWxzZSB9OwogI2VuZGlmCiAjaWYgVVNFKFNPVVApCiAgICAgU3Ry
aW5nIGNvb2tpZVBlcnNpc3RlbnRTdG9yYWdlUGF0aDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvUGluZ0xvYWQuY3BwCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2LDEx
ICsxNDYsMTEgQEAgdm9pZCBQaW5nTG9hZDo6d2lsbFBlcmZvcm1IVFRQUmVkaXJlY3RpbwogICAg
IH0pOwogfQogCi12b2lkIFBpbmdMb2FkOjpkaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiYgY2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBQaW5nTG9hZDo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVDaGFsbGVu
Z2UiKTsKICAgICBpZiAoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZSgpLmF1dGhlbnRpY2F0aW9u
U2NoZW1lKCkgPT0gUHJvdGVjdGlvblNwYWNlQXV0aGVudGljYXRpb25TY2hlbWVTZXJ2ZXJUcnVz
dEV2YWx1YXRpb25SZXF1ZXN0ZWQpIHsKLSAgICAgICAgbV9uZXR3b3JrTG9hZENoZWNrZXItPm5l
dHdvcmtQcm9jZXNzKCkuYXV0aGVudGljYXRpb25NYW5hZ2VyKCkuZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKG1fc2Vzc2lvbklELCBtX3BhcmFtZXRlcnMud2ViUGFnZVByb3h5SUQs
ICBtX3BhcmFtZXRlcnMudG9wT3JpZ2luID8gJm1fcGFyYW1ldGVycy50b3BPcmlnaW4tPmRhdGEo
KSA6IG51bGxwdHIsIGNoYWxsZW5nZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAg
ICAgICBtX25ldHdvcmtMb2FkQ2hlY2tlci0+bmV0d29ya1Byb2Nlc3MoKS5hdXRoZW50aWNhdGlv
bk1hbmFnZXIoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UobV9zZXNzaW9uSUQs
IG1fcGFyYW1ldGVycy53ZWJQYWdlUHJveHlJRCwgIG1fcGFyYW1ldGVycy50b3BPcmlnaW4gPyAm
bV9wYXJhbWV0ZXJzLnRvcE9yaWdpbi0+ZGF0YSgpIDogbnVsbHB0ciwgY2hhbGxlbmdlLCBuZWdv
dGlhdGVkTGVnYWN5VExTLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgYXV0byB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmgJKHJldmlzaW9uIDI1NTA5
MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvUGluZ0xvYWQuaAkod29ya2luZyBj
b3B5KQpAQCAtNTIsNyArNTIsNyBAQCBwcml2YXRlOgogICAgIGNvbnN0IFVSTCYgY3VycmVudFVS
TCgpIGNvbnN0OwogCiAgICAgdm9pZCB3aWxsUGVyZm9ybUhUVFBSZWRpcmVjdGlvbihXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiYsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCBSZWRpcmVj
dENvbXBsZXRpb25IYW5kbGVyJiYpIGZpbmFsOwotICAgIHZvaWQgZGlkUmVjZWl2ZUNoYWxsZW5n
ZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFsbGVuZ2VDb21wbGV0aW9u
SGFuZGxlciYmKSBmaW5hbDsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2UoV2ViQ29yZTo6
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywgQ2hhbGxlbmdl
Q29tcGxldGlvbkhhbmRsZXImJikgZmluYWw7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2Uo
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYp
IGZpbmFsOwogICAgIHZvaWQgZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJikgZmluYWw7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29ya0xvYWRNZXRyaWNzJikgZmlu
YWw7CkluZGV4OiBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRh
VGFza0NvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrRGF0YVRhc2tDb2NvYS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLmgJKHdvcmtp
bmcgY29weSkKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHVzaW5nIFRhc2tJZGVudGlm
aWVyID0gdWludDY0X3Q7CiAKICAgICB2b2lkIGRpZFNlbmREYXRhKHVpbnQ2NF90IHRvdGFsQnl0
ZXNTZW50LCB1aW50NjRfdCB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQpOwotICAgIHZvaWQgZGlk
UmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYmLCBDaGFs
bGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVDaGFsbGVuZ2Uo
V2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmJiwgTmVnb3RpYXRlZExlZ2FjeVRMUywg
Q2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBkaWRDb21wbGV0ZVdpdGhF
cnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgY29uc3QgV2ViQ29yZTo6TmV0d29y
a0xvYWRNZXRyaWNzJik7CiAgICAgdm9pZCBkaWRSZWNlaXZlUmVzcG9uc2UoV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSYmLCBSZXNwb25zZUNvbXBsZXRpb25IYW5kbGVyJiYpOwogICAgIHZvaWQg
ZGlkUmVjZWl2ZURhdGEoUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJik7CkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya0Rh
dGFUYXNrQ29jb2EubW0JKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY29jb2EvTmV0d29ya0RhdGFUYXNrQ29jb2EubW0JKHdvcmtpbmcgY29weSkKQEAg
LTUyLDEzICs1Miw2IEBACiAjaW1wb3J0IDxDRk5ldHdvcmsvQ0ZOU1VSTENvbm5lY3Rpb24uaD4K
ICNlbmRpZgogCi0jaWYgX19oYXNfaW5jbHVkZSg8V2ViS2l0QWRkaXRpb25zL05ldHdvcmtEYXRh
VGFza0NvY29hQWRkaXRpb25zLmg+KQotI2luY2x1ZGUgPFdlYktpdEFkZGl0aW9ucy9OZXR3b3Jr
RGF0YVRhc2tDb2NvYUFkZGl0aW9ucy5oPgotI2Vsc2UKLSNkZWZpbmUgTkVUV09SS19EQVRBX1RB
U0tfQ09DT0FfQURESVRJT05TXzEKLSNkZWZpbmUgTkVUV09SS19EQVRBX1RBU0tfQ09DT0FfQURE
SVRJT05TXzIKLSNlbmRpZgotCiAjaWYgSEFWRShPU19TSUdOUE9TVCkKIAogI2ltcG9ydCA8b3Mv
c2lnbnBvc3QuaD4KQEAgLTI4NSw4ICsyNzgsNiBAQCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6TmV0
d29ya0RhdGFUYXNrQ29jCiAgICAgYXBwbHlTbmlmZmluZ1BvbGljaWVzQW5kQmluZFJlcXVlc3RU
b0luZmVyZmFjZUlmTmVlZGVkKG5zUmVxdWVzdCwgc2hvdWxkQ29udGVudFNuaWZmID09IFdlYkNv
cmU6OkNvbnRlbnRTbmlmZmluZ1BvbGljeTo6U25pZmZDb250ZW50ICYmICF1cmwuaXNMb2NhbEZp
bGUoKSwgc2hvdWxkQ29udGVudEVuY29kaW5nU25pZmYgPT0gV2ViQ29yZTo6Q29udGVudEVuY29k
aW5nU25pZmZpbmdQb2xpY3k6OlNuaWZmKTsKIAogICAgIG1fdGFzayA9IFttX3Nlc3Npb25XcmFw
cGVyLnNlc3Npb24gZGF0YVRhc2tXaXRoUmVxdWVzdDpuc1JlcXVlc3RdOwotICAgIAotICAgIE5F
VFdPUktfREFUQV9UQVNLX0NPQ09BX0FERElUSU9OU18xOwogCiAgICAgQkVHSU5fU0lHTlBPU1Qo
bV90YXNrLCAiJXtwdWJsaWN9cyBwcmk6ICVmIHByZWNvbm5lY3Q6ICVkIiwgdXJsLnN0cmluZygp
LmFzY2lpKCkuZGF0YSgpLCB0b05TVVJMU2Vzc2lvblRhc2tQcmlvcml0eShyZXF1ZXN0LnByaW9y
aXR5KCkpLCBzaG91bGRQcmVjb25uZWN0T25seSA9PSBQcmVjb25uZWN0T25seTo6WWVzKTsKIApA
QCAtMzQ4LDcgKzMzOSw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ29jb2E6OmRpZFNlbmREYXRh
KHUKICAgICAgICAgbV9jbGllbnQtPmRpZFNlbmREYXRhKHRvdGFsQnl0ZXNTZW50LCB0b3RhbEJ5
dGVzRXhwZWN0ZWRUb1NlbmQpOwogfQogCi12b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRS
ZWNlaXZlQ2hhbGxlbmdlKFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYgY2hhbGxl
bmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6ZGlkUmVjZWl2ZUNoYWxsZW5nZShXZWJDb3JlOjpBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSwgTmVnb3RpYXRlZExlZ2FjeVRMUyBuZWdv
dGlhdGVkTGVnYWN5VExTLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25I
YW5kbGVyKQogewogICAgIEVNSVRfU0lHTlBPU1QobV90YXNrLCAicmVjZWl2ZWQgY2hhbGxlbmdl
Iik7CiAKQEAgLTM1Niw3ICszNDcsNyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjpkaWRS
ZWNlaXZlQ2hhCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX2NsaWVudCkKLSAgICAgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoV1RGTW92ZShjaGFsbGVuZ2UpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2hhbGxl
bmdlKFdURk1vdmUoY2hhbGxlbmdlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUywgV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UgewogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNw
b3NpdGlvbjo6UGVyZm9ybURlZmF1bHRIYW5kbGluZywgeyB9KTsKQEAgLTQ2MCw5ICs0NTEsNiBA
QCB2b2lkIE5ldHdvcmtEYXRhVGFza0NvY29hOjp3aWxsUGVyZm9ybUhUCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgICAgICBpZiAoIXJlcXVl
c3QuaXNOdWxsKCkpCiAgICAgICAgICAgICAgICAgcmVzdHJpY3RSZXF1ZXN0UmVmZXJyZXJUb09y
aWdpbklmTmVlZGVkKHJlcXVlc3QpOwotCi0gICAgICAgICAgICBORVRXT1JLX0RBVEFfVEFTS19D
T0NPQV9BRERJVElPTlNfMjsKLQogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92
ZShyZXF1ZXN0KSk7CiAgICAgICAgIH0pOwogICAgIGVsc2UgewpJbmRleDogU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2Nv
YS5tbQkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
b2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03MCw4ICs3MCw2
IEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVOZXR3b3JrU2V0dGluZ3MoKQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5l
dHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQogewotICAgIFdlYkNv
cmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnNldExlZ2FjeVRMU0VuYWJsZWQocGFyYW1ldGVy
cy5lbmFibGVMZWdhY3lUTFMpOwotCiAgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25CdW5kbGVJ
ZGVudGlmaWVyKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllcik7CiAgICAgV2Vi
Q29yZTo6c2V0QXBwbGljYXRpb25TREtWZXJzaW9uKHBhcmFtZXRlcnMudWlQcm9jZXNzU0RLVmVy
c2lvbik7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Nlc3Npb25Db2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EuaAkod29y
a2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBPQkpDX0NMQVNTIFdLTmV0d29ya1Nlc3Npb25X
ZWJTb2NrZXREZWxlCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCitlbnVtIGNsYXNzIE5lZ290aWF0
ZWRMZWdhY3lUTFMgOiBib29sOwogY2xhc3MgTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyOwog
Y2xhc3MgTmV0d29ya1Nlc3Npb25Db2NvYTsKIApAQCAtNzgsNyArNzksNyBAQCBwdWJsaWM6CiAK
ICAgICBzdGF0aWMgYm9vbCBhbGxvd3NTcGVjaWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNv
bnN0IFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJik7CiAKLSAgICB2b2lkIGNvbnRp
bnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShTZXNzaW9uV3JhcHBlciYsIGNvbnN0IFdlYkNvcmU6OkF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiwgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlm
aWVyLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0
OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVk
ZW50aWFsJik+JiYpOworICAgIHZvaWQgY29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKFNlc3Np
b25XcmFwcGVyJiwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBOZWdv
dGlhdGVkTGVnYWN5VExTLCBOZXR3b3JrRGF0YVRhc2tDb2NvYTo6VGFza0lkZW50aWZpZXIsIE5l
dHdvcmtEYXRhVGFza0NvY29hKiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwm
KT4mJik7CiAKICAgICBTZXNzaW9uV3JhcHBlciYgc2Vzc2lvbldyYXBwZXJGb3JEb3dubG9hZHMo
KSB7IHJldHVybiBtX3Nlc3Npb25XaXRoQ3JlZGVudGlhbFN0b3JhZ2U7IH0KIApJbmRleDogU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nl
c3Npb25Db2NvYS5tbQkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC01
OTYsOSArNTk2LDkgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQog
fQogCiAjaWYgSEFWRShDRk5FVFdPUktfTlNVUkxTRVNTSU9OX1NUUklDVFJVU1RFVkFMVUFURSkK
LXN0YXRpYyBpbmxpbmUgdm9pZCBwcm9jZXNzU2VydmVyVHJ1c3RFdmFsdWF0aW9uKE5ldHdvcmtT
ZXNzaW9uQ29jb2EgKnNlc3Npb24sIFNlc3Npb25XcmFwcGVyJiBzZXNzaW9uV3JhcHBlciwgTlNV
UkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCBOZXR3b3JrRGF0YVRhc2tDb2Nv
YTo6VGFza0lkZW50aWZpZXIgdGFza0lkZW50aWZpZXIsIE5ldHdvcmtEYXRhVGFza0NvY29hKiBu
ZXR3b3JrRGF0YVRhc2ssIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTlNVUkxTZXNzaW9uQXV0aENo
YWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKmNyZWRlbnRp
YWwpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorc3RhdGljIGlubGluZSB2b2lkIHByb2Nlc3NTZXJ2
ZXJUcnVzdEV2YWx1YXRpb24oTmV0d29ya1Nlc3Npb25Db2NvYSYgc2Vzc2lvbiwgU2Vzc2lvbldy
YXBwZXImIHNlc3Npb25XcmFwcGVyLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFs
bGVuZ2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUywgTmV0d29ya0Rh
dGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRh
c2tDb2NvYSogbmV0d29ya0RhdGFUYXNrLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFs
ICpjcmVkZW50aWFsKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZXNzaW9uLT5jb250
aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2Uoc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5nZSwgdGFza0lk
ZW50aWZpZXIsIG5ldHdvcmtEYXRhVGFzaywgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlciksIHNlY1RydXN0ID0gcmV0YWluUHRyKGNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2Uuc2VydmVyVHJ1c3QpXSAoV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50
aWFsKSBtdXRhYmxlIHsKKyAgICBzZXNzaW9uLmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZShz
ZXNzaW9uV3JhcHBlciwgY2hhbGxlbmdlLCBuZWdvdGlhdGVkTGVnYWN5VExTLCB0YXNrSWRlbnRp
ZmllciwgbmV0d29ya0RhdGFUYXNrLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgc2VjVHJ1c3QgPSByZXRhaW5QdHIoY2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5zZXJ2ZXJUcnVzdCldIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9z
aXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwp
IG11dGFibGUgewogICAgICAgICAvLyBGSVhNRTogVUlQcm9jZXNzIHNob3VsZCBzZW5kIHVzIGJh
Y2sgbm9uIG5pbCBjcmVkZW50aWFscyBidXQgdGhlIGNyZWRlbnRpYWwgSVBDIGVuY29kZXIgY3Vy
cmVudGx5IG9ubHkgc2VyaWFsaXplcyBucyBjcmVkZW50aWFscyBmb3IgdXNlcm5hbWUvcGFzc3dv
cmQuCiAgICAgICAgIGlmIChkaXNwb3NpdGlvbiA9PSBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb246OlVzZUNyZWRlbnRpYWwgJiYgIWNyZWRlbnRpYWwubnNDcmVkZW50
aWFsKCkpIHsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhD
aGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVz
dDogc2VjVHJ1c3QuZ2V0KCldKTsKQEAgLTYyOCwxNiArNjI4LDMyIEBAIC0gKHZvaWQpVVJMU2Vz
c2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAg
IE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdh
Y3lUTFM6Ok5vOworCiAgICAgaWYgKFtjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLmF1dGhlbnRp
Y2F0aW9uTWV0aG9kIGlzRXF1YWxUb1N0cmluZzpOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2Vy
dmVyVHJ1c3RdKSB7CiAgICAgICAgIGlmIChOZXR3b3JrU2Vzc2lvbkNvY29hOjphbGxvd3NTcGVj
aWZpY0hUVFBTQ2VydGlmaWNhdGVGb3JIb3N0KGNoYWxsZW5nZSkpCiAgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRp
YWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVudGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0
aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKIAorI2lmIEhBVkUoVExTX1BST1RPQ09MX1ZFUlNJT05f
VCkKKyAgICAgICAgTlNVUkxTZXNzaW9uVGFza1RyYW5zYWN0aW9uTWV0cmljcyAqbWV0cmljcyA9
IHRhc2suX2luY29tcGxldGVUYXNrTWV0cmljcy50cmFuc2FjdGlvbk1ldHJpY3MubGFzdE9iamVj
dDsKKyAgICAgICAgYXV0byB0bHNWZXJzaW9uID0gKHRsc19wcm90b2NvbF92ZXJzaW9uX3QpbWV0
cmljcy5uZWdvdGlhdGVkVExTUHJvdG9jb2xWZXJzaW9uLnVuc2lnbmVkU2hvcnRWYWx1ZTsKKyAg
ICAgICAgaWYgKHRsc1ZlcnNpb24gPT0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjEwIHx8IHRs
c1ZlcnNpb24gPT0gdGxzX3Byb3RvY29sX3ZlcnNpb25fVExTdjExKQorICAgICAgICAgICAgbmVn
b3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllczsKKyNlbmRpZgorICAg
ICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19CRUdJTgorICAgICAgICBpZiAobmVn
b3RpYXRlZExlZ2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVnYWN5VExTOjpObyAmJiBbdGFzayByZXNw
b25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF9UTFNOZWdvdGlhdGVkUHJvdG9jb2xWZXJzaW9uKV0p
IHsKKyAgICAgICAgICAgIFNTTFByb3RvY29sIHRsc1ZlcnNpb24gPSBbdGFzayBfVExTTmVnb3Rp
YXRlZFByb3RvY29sVmVyc2lvbl07CisgICAgICAgICAgICBpZiAodGxzVmVyc2lvbiA9PSBrVExT
UHJvdG9jb2wxMSB8fCB0bHNWZXJzaW9uID09IGtUTFNQcm90b2NvbDEpCisgICAgICAgICAgICAg
ICAgbmVnb3RpYXRlZExlZ2FjeVRMUyA9IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllczsKKyAgICAg
ICAgfQorICAgICAgICBBTExPV19ERVBSRUNBVEVEX0RFQ0xBUkFUSU9OU19FTkQKKwogICAgICAg
ICAvLyBIYW5kbGUgc2VydmVyIHRydXN0IGV2YWx1YXRpb24gYXQgcGxhdGZvcm0tbGV2ZWwgaWYg
cmVxdWVzdGVkLCBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucyBhbmQgdG8gdXNlIEFUUyBkZWZhdWx0
cy4KLSAgICAgICAgaWYgKHNlc3Npb25Db2NvYS0+ZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVu
YWJsZWQoKSkgeworICAgICAgICBpZiAoc2Vzc2lvbkNvY29hLT5mYXN0U2VydmVyVHJ1c3RFdmFs
dWF0aW9uRW5hYmxlZCgpICYmIG5lZ290aWF0ZWRMZWdhY3lUTFMgPT0gTmVnb3RpYXRlZExlZ2Fj
eVRMUzo6Tm8pIHsKICNpZiBIQVZFKENGTkVUV09SS19OU1VSTFNFU1NJT05fU1RSSUNUUlVTVEVW
QUxVQVRFKQogICAgICAgICAgICAgYXV0byogbmV0d29ya0RhdGFUYXNrID0gW3NlbGYgZXhpc3Rp
bmdUYXNrOnRhc2tdOwogICAgICAgICAgICAgQVNTRVJUKG5ldHdvcmtEYXRhVGFzayk7Ci0gICAg
ICAgICAgICBhdXRvIGRlY2lzaW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihbd2Vha1NlbGYgPSBX
ZWFrT2JqQ1B0cjxXS05ldHdvcmtTZXNzaW9uRGVsZWdhdGU+KHNlbGYpLCBzZXNzaW9uQ29jb2Eg
PSBtYWtlV2Vha1B0cihzZXNzaW9uQ29jb2EpLCBjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9j
a1B0cihjb21wbGV0aW9uSGFuZGxlciksIHRhc2tJZGVudGlmaWVyLCBuZXR3b3JrRGF0YVRhc2sg
PSBSZWZQdHI8TmV0d29ya0RhdGFUYXNrQ29jb2E+KG5ldHdvcmtEYXRhVGFzayldKE5TVVJMQXV0
aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwgT1NTdGF0dXMgdHJ1c3RSZXN1bHQpIG11
dGFibGUgeworICAgICAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIo
W3dlYWtTZWxmID0gV2Vha09iakNQdHI8V0tOZXR3b3JrU2Vzc2lvbkRlbGVnYXRlPihzZWxmKSwg
c2Vzc2lvbkNvY29hID0gbWFrZVdlYWtQdHIoc2Vzc2lvbkNvY29hKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpLCB0YXNrSWRlbnRpZmllciwgbmV0
d29ya0RhdGFUYXNrID0gbWFrZVJlZlB0cihuZXR3b3JrRGF0YVRhc2spLCBuZWdvdGlhdGVkTGVn
YWN5VExTXShOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlICpjaGFsbGVuZ2UsIE9TU3RhdHVz
IHRydXN0UmVzdWx0KSBtdXRhYmxlIHsKICAgICAgICAgICAgICAgICBhdXRvIHN0cm9uZ1NlbGYg
PSB3ZWFrU2VsZi5nZXQoKTsKICAgICAgICAgICAgICAgICBpZiAoIXN0cm9uZ1NlbGYpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlQ2FuY2VsQXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIG5pbCk7CkBAIC02NDcsNyAr
NjYzLDcgQEAgLSAodm9pZClVUkxTZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogICAgICAg
ICAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
UGVyZm9ybURlZmF1bHRIYW5kbGluZywgbmlsKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBwcm9jZXNzU2VydmVyVHJ1c3RF
dmFsdWF0aW9uKHNlc3Npb24sICpzdHJvbmdTZWxmLT5fc2Vzc2lvbldyYXBwZXIsIGNoYWxsZW5n
ZSwgdGFza0lkZW50aWZpZXIsIHRhc2suZ2V0KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgICAgICAgICBwcm9jZXNzU2VydmVyVHJ1c3RFdmFsdWF0aW9uKCpzZXNzaW9u
LCAqc3Ryb25nU2VsZi0+X3Nlc3Npb25XcmFwcGVyLCBjaGFsbGVuZ2UsIG5lZ290aWF0ZWRMZWdh
Y3lUTFMsIHRhc2tJZGVudGlmaWVyLCB0YXNrLmdldCgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIFtOU1VSTFNlc3Npb24gX3N0cmlj
dFRydXN0RXZhbHVhdGU6Y2hhbGxlbmdlIHF1ZXVlOltOU09wZXJhdGlvblF1ZXVlIG1haW5RdWV1
ZV0udW5kZXJseWluZ1F1ZXVlIGNvbXBsZXRpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlci5nZXQo
KV07CiAgICAgICAgICAgICByZXR1cm47CkBAIC02NTYsNyArNjcyLDcgQEAgLSAodm9pZClVUkxT
ZXNzaW9uOihOU1VSTFNlc3Npb24gKilzZXNzaQogI2VuZGlmCiAgICAgICAgIH0KICAgICB9Ci0g
ICAgc2Vzc2lvbkNvY29hLT5jb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2UoKl9zZXNzaW9uV3Jh
cHBlciwgY2hhbGxlbmdlLCB0YXNrSWRlbnRpZmllciwgW3NlbGYgZXhpc3RpbmdUYXNrOnRhc2td
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
V2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBj
b25zdCBXZWJDb3JlOjpDcmVkZW50aWFsJiBjcmVkZW50aWFsKSBtdXRhYmxlIHsKKyAgICBzZXNz
aW9uQ29jb2EtPmNvbnRpbnVlRGlkUmVjZWl2ZUNoYWxsZW5nZSgqX3Nlc3Npb25XcmFwcGVyLCBj
aGFsbGVuZ2UsIG5lZ290aWF0ZWRMZWdhY3lUTFMsIHRhc2tJZGVudGlmaWVyLCBbc2VsZiBleGlz
dGluZ1Rhc2s6dGFza10sIFtjb21wbGV0aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0
aW9uSGFuZGxlcildIChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24g
ZGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIG11dGFi
bGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih0b05TVVJMU2Vzc2lvbkF1dGhDaGFsbGVu
Z2VEaXNwb3NpdGlvbihkaXNwb3NpdGlvbiksIGNyZWRlbnRpYWwubnNDcmVkZW50aWFsKCkpOwog
ICAgIH0pOwogfQpAQCAtMTAxOSwxNCArMTAzNSw2IEBAIE5ldHdvcmtTZXNzaW9uQ29jb2E6Ok5l
dHdvcmtTZXNzaW9uQ29jb2EKIAogICAgIE5TVVJMU2Vzc2lvbkNvbmZpZ3VyYXRpb24gKmNvbmZp
Z3VyYXRpb24gPSBjb25maWd1cmF0aW9uRm9yU2Vzc2lvbklEKG1fc2Vzc2lvbklEKTsKIAotICAg
IGlmICghcGFyYW1ldGVycy5lbmFibGVMZWdhY3lUTFMpIHsKLSNpZiBIQVZFKFRMU19QUk9UT0NP
TF9WRVJTSU9OX1QpCi0gICAgICAgIGNvbmZpZ3VyYXRpb24uVExTTWluaW11bVN1cHBvcnRlZFBy
b3RvY29sVmVyc2lvbiA9IHRsc19wcm90b2NvbF92ZXJzaW9uX1RMU3YxMjsKLSNlbHNlCi0gICAg
ICAgIGNvbmZpZ3VyYXRpb24uVExTTWluaW11bVN1cHBvcnRlZFByb3RvY29sID0ga1RMU1Byb3Rv
Y29sMTI7Ci0jZW5kaWYKLSAgICB9Ci0KICNpZiBIQVZFKEFQUF9TU08pCiAgICAgY29uZmlndXJh
dGlvbi5fcHJldmVudHNBcHBTU08gPSB0cnVlOwogI2VuZGlmCkBAIC0xMjk3LDcgKzEzMDUsNyBA
QCBib29sIE5ldHdvcmtTZXNzaW9uQ29jb2E6OmFsbG93c1NwZWNpZmljCiAgICAgcmV0dXJuIGNl
cnRpZmljYXRlc01hdGNoKHRydXN0LmdldCgpLCBjaGFsbGVuZ2UubnNVUkxBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSgpLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdCk7CiB9CiAKLXZvaWQgTmV0
d29ya1Nlc3Npb25Db2NvYTo6Y29udGludWVEaWRSZWNlaXZlQ2hhbGxlbmdlKFNlc3Npb25XcmFw
cGVyJiBzZXNzaW9uV3JhcHBlciwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVu
Z2UmIGNoYWxsZW5nZSwgTmV0d29ya0RhdGFUYXNrQ29jb2E6OlRhc2tJZGVudGlmaWVyIHRhc2tJ
ZGVudGlmaWVyLCBOZXR3b3JrRGF0YVRhc2tDb2NvYSogbmV0d29ya0RhdGFUYXNrLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3NpdGlv
biwgY29uc3QgV2ViQ29yZTo6Q3JlZGVudGlhbCYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQordm9p
ZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpjb250aW51ZURpZFJlY2VpdmVDaGFsbGVuZ2UoU2Vzc2lv
bldyYXBwZXImIHNlc3Npb25XcmFwcGVyLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSYgY2hhbGxlbmdlLCBOZWdvdGlhdGVkTGVnYWN5VExTIG5lZ290aWF0ZWRMZWdhY3lU
TFMsIE5ldHdvcmtEYXRhVGFza0NvY29hOjpUYXNrSWRlbnRpZmllciB0YXNrSWRlbnRpZmllciwg
TmV0d29ya0RhdGFUYXNrQ29jb2EqIG5ldHdvcmtEYXRhVGFzaywgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdl
YkNvcmU6OkNyZWRlbnRpYWwmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW5l
dHdvcmtEYXRhVGFzaykgewogI2lmIEhBVkUoTlNVUkxTRVNTSU9OX1dFQlNPQ0tFVCkKQEAgLTEz
NDksNyArMTM1Nyw3IEBAIHZvaWQgTmV0d29ya1Nlc3Npb25Db2NvYTo6Y29udGludWVEaWRSZWMK
ICNlbmRpZgogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkaXNwb3NpdGlvbiwgY3JlZGVudGlh
bCk7CiAgICAgfTsKLSAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVDaGFsbGVuZ2UoV1RG
TW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIFdURk1vdmUoY2hhbGxlbmdlQ29tcGxldGlv
bkhhbmRsZXIpKTsKKyAgICBuZXR3b3JrRGF0YVRhc2stPmRpZFJlY2VpdmVDaGFsbGVuZ2UoV1RG
TW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMsIFdURk1v
dmUoY2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogRE1GV2Vic2l0ZVBvbGljeU1v
bml0b3IgKk5ldHdvcmtTZXNzaW9uQ29jb2E6OmRldmljZU1hbmFnZW1lbnRQb2xpY3lNb25pdG9y
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRh
c2tDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2N1
cmwvTmV0d29ya0RhdGFUYXNrQ3VybC5jcHAJKHJldmlzaW9uIDI1NTA5MikKKysrIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrRGF0YVRhc2tDdXJsLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMzU0LDcgKzM1NCw3IEBAIHZvaWQgTmV0d29ya0RhdGFUYXNrQ3VybDo6dHJ5
SHR0cEF1dGhlbnQKICAgICAgICAgfQogICAgIH0KIAotICAgIG1fY2xpZW50LT5kaWRSZWNlaXZl
Q2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNoYWxsZW5nZSksIFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNoYWxsZW5nZV0oQXV0aGVudGljYXRpb25DaGFs
bGVuZ2VEaXNwb3NpdGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlh
bCkgeworICAgIG1fY2xpZW50LT5kaWRSZWNlaXZlQ2hhbGxlbmdlKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKGNoYWxsZW5nZSksIE5lZ290aWF0ZWRMZWdhY3lUTFM6Ok5vLCBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjaGFsbGVuZ2VdKEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwp
IHsKICAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6OkNhbmNlbGluZyB8fCBtX3N0YXRlID09
IFN0YXRlOjpDb21wbGV0ZWQpCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTM4MCw3ICszODAs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza0N1cmw6OnRyeUh0dHBBdXRoZW50CiAKIHZvaWQgTmV0
d29ya0RhdGFUYXNrQ3VybDo6dHJ5UHJveHlBdXRoZW50aWNhdGlvbihXZWJDb3JlOjpBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSYmIGNoYWxsZW5nZSkKIHsKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2
ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjaGFsbGVuZ2VdKEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRp
YWwpIHsKKyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZShjaGFsbGVuZ2UpLCBOZWdvdGlhdGVkTGVnYWN5VExTOjpObywgW3RoaXMsIHByb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2hhbGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZURpc3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFs
KSB7CiAgICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9
PSBTdGF0ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC00MDUsNyArNDA1
LDcgQEAgdm9pZCBOZXR3b3JrRGF0YVRhc2tDdXJsOjp0cnlQcm94eUF1dGhlbgogCiB2b2lkIE5l
dHdvcmtEYXRhVGFza0N1cmw6OnRyeVNlcnZlclRydXN0RXZhbHVhdGlvbihBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSYmIGNoYWxsZW5nZSkKIHsKLSAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxs
ZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShjaGFsbGVuZ2UpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjaGFsbGVuZ2VdKEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
RGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIGNvbnN0IENyZWRlbnRpYWwmIGNyZWRlbnRpYWwpIHsK
KyAgICBtX2NsaWVudC0+ZGlkUmVjZWl2ZUNoYWxsZW5nZShBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZShjaGFsbGVuZ2UpLCBOZWdvdGlhdGVkTGVnYWN5VExTOjpObywgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2hhbGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURp
c3Bvc2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CiAg
ICAgICAgIGlmIChtX3N0YXRlID09IFN0YXRlOjpDYW5jZWxpbmcgfHwgbV9zdGF0ZSA9PSBTdGF0
ZTo6Q29tcGxldGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL3NvdXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtEYXRhVGFza1NvdXAu
Y3BwCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL3Nv
dXAvTmV0d29ya0RhdGFUYXNrU291cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUzMSw3ICs1MzEs
NyBAQCB2b2lkIE5ldHdvcmtEYXRhVGFza1NvdXA6OmF1dGhlbnRpY2F0ZShBCiAKIHZvaWQgTmV0
d29ya0RhdGFUYXNrU291cDo6Y29udGludWVBdXRoZW50aWNhdGUoQXV0aGVudGljYXRpb25DaGFs
bGVuZ2UmJiBjaGFsbGVuZ2UpCiB7Ci0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVDaGFsbGVuZ2Uo
QXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hhbGxlbmdlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgY2hhbGxlbmdlXShBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bv
c2l0aW9uIGRpc3Bvc2l0aW9uLCBjb25zdCBDcmVkZW50aWFsJiBjcmVkZW50aWFsKSB7CisgICAg
bV9jbGllbnQtPmRpZFJlY2VpdmVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY2hh
bGxlbmdlKSwgTmVnb3RpYXRlZExlZ2FjeVRMUzo6Tm8sIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNoYWxsZW5nZV0oQXV0aGVudGljYXRpb25DaGFsbGVuZ2VEaXNwb3Np
dGlvbiBkaXNwb3NpdGlvbiwgY29uc3QgQ3JlZGVudGlhbCYgY3JlZGVudGlhbCkgewogICAgICAg
ICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6Q2FuY2VsaW5nIHx8IG1fc3RhdGUgPT0gU3RhdGU6OkNv
bXBsZXRlZCkgewogICAgICAgICAgICAgY2xlYXJSZXF1ZXN0KCk7CiAgICAgICAgICAgICByZXR1
cm47CkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNh
dGlvbk1hbmFnZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhl
bnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdlci5jcHAJKHJldmlzaW9uIDI1NTA5MikKKysr
IFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFuYWdl
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBAQCBWZWN0b3I8dWludDY0X3Q+
IEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6CiAgICAgcmV0dXJuIGNoYWxsZW5nZXNUb0NvYWxlc2Nl
OwogfQogCi12b2lkIEF1dGhlbnRpY2F0aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRp
ZmllciBwYWdlSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSogdG9wT3JpZ2luLCBjb25zdCBB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIENoYWxsZW5n
ZUNvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIEF1dGhlbnRpY2F0
aW9uTWFuYWdlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciBwYWdlSUQsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSogdG9wT3JpZ2luLCBjb25zdCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYg
YXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIE5lZ290aWF0ZWRMZWdhY3lUTFMgbmVnb3RpYXRlZExl
Z2FjeVRMUywgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
IHsKICAgICBpZiAoIXBhZ2VJRCkKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb246OlBlcmZvcm1EZWZhdWx0SGFuZGxpbmcs
IHsgfSk7CkBAIC0xMjMsNyArMTIzLDcgQEAgdm9pZCBBdXRoZW50aWNhdGlvbk1hbmFnZXI6OmRp
ZFJlY2VpdmVBdQogICAgIE9wdGlvbmFsPFNlY3VyaXR5T3JpZ2luRGF0YT4gdG9wT3JpZ2luRGF0
YTsKICAgICBpZiAodG9wT3JpZ2luKQogICAgICAgICB0b3BPcmlnaW5EYXRhID0gKnRvcE9yaWdp
bjsKLSAgICBtX3Byb2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHNlc3Npb25JRCwgcGFnZUlELCB0b3BPcmln
aW5EYXRhLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSwgY2hhbGxlbmdlSUQpKTsKKyAgICBtX3By
b2Nlc3Muc2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6RGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKHNlc3Npb25JRCwgcGFnZUlELCB0b3BPcmlnaW5EYXRhLCBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSwgbmVnb3RpYXRlZExlZ2FjeVRMUyA9PSBOZWdvdGlhdGVkTGVn
YWN5VExTOjpZZXMsIGNoYWxsZW5nZUlEKSk7CiB9CiAKIHZvaWQgQXV0aGVudGljYXRpb25NYW5h
Z2VyOjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoSVBDOjpNZXNzYWdlU2VuZGVy
JiBkb3dubG9hZCwgY29uc3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlLCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRp
b25IYW5kbGVyKQpJbmRleDogU291cmNlL1dlYktpdC9TaGFyZWQvQXV0aGVudGljYXRpb24vQXV0
aGVudGljYXRpb25NYW5hZ2VyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQv
QXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmgJKHJldmlzaW9uIDI1NTA5MikK
KysrIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0F1dGhlbnRpY2F0aW9uL0F1dGhlbnRpY2F0aW9uTWFu
YWdlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01Nyw2ICs1Nyw3IEBAIGNsYXNzIERvd25sb2FkOwog
Y2xhc3MgRG93bmxvYWRJRDsKIGNsYXNzIE5ldHdvcmtQcm9jZXNzOwogY2xhc3MgV2ViRnJhbWU7
CitlbnVtIGNsYXNzIE5lZ290aWF0ZWRMZWdhY3lUTFMgOiBib29sIHsgTm8sIFllcyB9OwogCiBl
bnVtIGNsYXNzIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24gOiB1aW50OF90Owog
dXNpbmcgQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIgPSBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlRGlzcG9zaXRpb24sIGNvbnN0IFdlYkNvcmU6OkNyZWRl
bnRpYWwmKT47CkBAIC02OSw3ICs3MCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBjb25zdCBj
aGFyKiBzdXBwbGVtZW50TmFtZSgpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSogLCBjb25zdCBXZWJDb3JlOjpBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyJiYpOworICAgIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklELCBXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEqICwgY29u
c3QgV2ViQ29yZTo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2UmLCBOZWdvdGlhdGVkTGVnYWN5VExT
LCBDaGFsbGVuZ2VDb21wbGV0aW9uSGFuZGxlciYmKTsKICAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZShJUEM6Ok1lc3NhZ2VTZW5kZXImIGRvd25sb2FkLCBjb25zdCBX
ZWJDb3JlOjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSYsIENoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyJiYpOwogCiAgICAgdm9pZCBjb21wbGV0ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHVpbnQ2
NF90IGNoYWxsZW5nZUlELCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uLCBXZWJD
b3JlOjpDcmVkZW50aWFsJiYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBACiAjaW5jbHVk
ZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eS5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lci5oIgor
I2luY2x1ZGUgIkF1dGhlbnRpY2F0aW9uTWFuYWdlci5oIgogI2luY2x1ZGUgIkF1dGhlbnRpY2F0
b3JNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIkRvd25s
b2FkUHJveHkuaCIKQEAgLTc2NjYsOCArNzY2NywxNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Z2Ft
ZXBhZEFjdGl2aXR5KGNvbnN0CiAKICNlbmRpZgogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHk+JiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCit2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoUmVmPEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHk+JiYgYXV0aGVudGljYXRpb25DaGFsbGVuZ2UsIE5lZ290aWF0ZWRMZWdh
Y3lUTFMgbmVnb3RpYXRlZExlZ2FjeVRMUykKIHsKKyAgICBpZiAobmVnb3RpYXRlZExlZ2FjeVRM
UyA9PSBOZWdvdGlhdGVkTGVnYWN5VExTOjpZZXMpIHsKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT5zaG91bGRBbGxvd0xlZ2FjeVRMUygqdGhpcywgYXV0aGVudGljYXRpb25DaGFsbGVuZ2Uu
Z2V0KCksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlID0gYXV0aGVudGljYXRpb25DaGFsbGVuZ2UuY29weVJlZigpXSAoYm9vbCBz
aG91bGRBbGxvd0xlZ2FjeVRMUykgeworICAgICAgICAgICAgaWYgKHNob3VsZEFsbG93TGVnYWN5
VExTKQorICAgICAgICAgICAgICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgYXV0aGVudGljYXRpb25DaGFsbGVu
Z2UtPmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoQXV0aGVudGljYXRpb25DaGFsbGVuZ2VE
aXNwb3NpdGlvbjo6Q2FuY2VsKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CiAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UoKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKIH0KIApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDI1NTA5MikKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzYsNiArMzM2LDcgQEAgc3RydWN0IFdlYlNwZWVjaFN5bnRoZXNpc1ZvaWNlOwogc3RydWN0IFVS
TFNjaGVtZVRhc2tQYXJhbWV0ZXJzOwogc3RydWN0IFVzZXJNZXNzYWdlOwogCitlbnVtIGNsYXNz
IE5lZ290aWF0ZWRMZWdhY3lUTFMgOiBib29sOwogZW51bSBjbGFzcyBQcm9jZXNzU3dhcFJlcXVl
c3RlZEJ5Q2xpZW50OwogZW51bSBjbGFzcyBVbmRvT3JSZWRvIDogYm9vbDsKIGVudW0gY2xhc3Mg
V2ViQ29udGVudE1vZGUgOiB1aW50OF90OwpAQCAtMTMyNyw3ICsxMzI4LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0Vmlld3BvcnRTaXplRm9yQ1NTVmlld3BvcnRVbml0cyhjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJik7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3cG9ydFNpemVGb3JDU1NWaWV3
cG9ydFVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydFNpemVGb3JDU1NWaWV3cG9ydFVu
aXRzLnZhbHVlT3IoV2ViQ29yZTo6SW50U2l6ZSgpKTsgfQogCi0gICAgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQ
cm94eT4mJik7CisgICAgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94
eShSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiwgTmVnb3RpYXRlZExlZ2FjeVRM
Uyk7CiAKICAgICBTcGVsbERvY3VtZW50VGFnIHNwZWxsRG9jdW1lbnRUYWcoKTsKIApJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5o
CShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJTmF2
aWdhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw2ICs5Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQ
YWdlUHJveHkmLCBPcHRpb25TZXQ8V2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lPikgeyB9CiAKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBjaGFs
bGVuZ2UpIHsgY2hhbGxlbmdlLmxpc3RlbmVyKCkuY29tcGxldGVDaGFsbGVuZ2UoV2ViS2l0OjpB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZURpc3Bvc2l0aW9uOjpQZXJmb3JtRGVmYXVsdEhhbmRsaW5n
KTsgfQorICAgIHZpcnR1YWwgdm9pZCBzaG91bGRBbGxvd0xlZ2FjeVRMUyhXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSYsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIpIHsgY29tcGxldGlvbkhh
bmRsZXIodHJ1ZSk7IH0KICAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQnlwYXNzQ29udGVudE1vZGVT
YWZlZ3VhcmRzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIEZJWE1FOiBUaGVz
ZSBmdW5jdGlvbiBzaG91bGQgbm90IGJlIHBhcnQgb2YgdGhpcyBjbGllbnQuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2
aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTg2LDYgKzg2LDggQEAgc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvblJl
c3BvbnNlUG9saWN5IAogCiAtIChOU0RhdGEgKilfd2ViQ3J5cHRvTWFzdGVyS2V5Rm9yV2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldzsKIAorLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSAqKWNoYWxsZW5nZSBzaG91bGRBbGxvd0xlZ2FjeVRMUzoodm9pZCAoXikoQk9PTCkpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKKwogLSAodm9pZClfd2ViVmlld0RpZEJlZ2luTmF2aWdhdGlvbkdlc3R1cmU6
KFdLV2ViVmlldyAqKXdlYlZpZXc7CiAvLyBJdGVtIGlzIG5pbCBpZiB0aGUgZ2VzdHVyZSBlbmRl
ZCB3aXRob3V0IG5hdmlnYXRpb24uCiAtICh2b2lkKV93ZWJWaWV3RGlkRW5kTmF2aWdhdGlvbkdl
c3R1cmU6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlz
dEl0ZW06KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW07CkluZGV4OiBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAkocmV2aXNpb24gMjU1MDky
KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHdv
cmtpbmcgY29weSkKQEAgLTExMiw2ICsxMTIsNyBAQCBwcml2YXRlOgogICAgICAgICBib29sIHNo
b3VsZEJ5cGFzc0NvbnRlbnRNb2RlU2FmZWd1YXJkcygpIGNvbnN0IGZpbmFsOwogCiAgICAgICAg
IHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFdlYlBhZ2VQcm94eSYsIEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkmKSBvdmVycmlkZTsKKyAgICAgICAgdm9pZCBzaG91
bGRBbGxvd0xlZ2FjeVRMUyhXZWJQYWdlUHJveHkmLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVBy
b3h5JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAgICAgICAgIGJv
b2wgcHJvY2Vzc0RpZFRlcm1pbmF0ZShXZWJQYWdlUHJveHkmLCBQcm9jZXNzVGVybWluYXRpb25S
ZWFzb24pIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZl
KFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRlOwogICAgICAgICB2b2lkIHByb2Nlc3NEaWRCZWNvbWVV
bnJlc3BvbnNpdmUoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CkBAIC0yMTUsNiArMjE2LDcgQEAg
cHJpdmF0ZToKIAogICAgICAgICBib29sIHdlYlZpZXdSZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5n
ZSA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZUNvbXBsZXRpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VTaG91bGRBbGxvd0xlZ2FjeVRMUyA6IDE7CiAgICAgICAgIGJvb2wgd2Vi
Vmlld1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlIDogMTsKICAgICAgICAgYm9vbCB3ZWJW
aWV3V2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5hdGVXaXRoUmVhc29uIDogMTsKICAgICAgICAg
Ym9vbCB3ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0JKHJldmlzaW9uIDI1NTA5
MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQko
d29ya2luZyBjb3B5KQpAQCAtNzksNiArNzksMTEgQEAKICNpbXBvcnQgPHd0Zi9OZXZlckRlc3Ry
b3llZC5oPgogI2ltcG9ydCA8d3RmL1VSTC5oPgogCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkg
JiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQorI2ltcG9ydCA8cGFsL2lvcy9NYW5hZ2VkQ29uZmln
dXJhdGlvblNvZnRMaW5rLmg+CisjaW1wb3J0IDxwYWwvc3BpL2lvcy9NYW5hZ2VkQ29uZmlndXJh
dGlvblNQSS5oPgorI2VuZGlmCisKICNpZiBIQVZFKEFQUF9MSU5LUykKICNpbXBvcnQgPHBhbC9z
cGkvY29jb2EvTGF1bmNoU2VydmljZXNTUEkuaD4KICNlbmRpZgpAQCAtMTY2LDYgKzE3MSw3IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWcKICAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25EaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6bmF2
aWdhdGlvbjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uOildOwogICAgIG1fbmF2aWdhdGlvbkRl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3UmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2UgPSBbZGVsZWdh
dGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpyZW5kZXJpbmdQcm9ncmVz
c0RpZENoYW5nZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5kbGVyID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2U6Y29tcGxldGlvbkhhbmRsZXI6KV07CisgICAgbV9uYXZpZ2F0aW9u
RGVsZWdhdGVNZXRob2RzLndlYlZpZXdBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVNob3VsZEFsbG93
TGVnYWN5VExTID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZp
ZXc6YXV0aGVudGljYXRpb25DaGFsbGVuZ2U6c2hvdWxkQWxsb3dMZWdhY3lUTFM6KV07CiAgICAg
bV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdXZWJDb250ZW50UHJvY2Vzc0RpZFRl
cm1pbmF0ZSA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXdX
ZWJDb250ZW50UHJvY2Vzc0RpZFRlcm1pbmF0ZTopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld1dlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlV2l0aFJlYXNvbiA9
IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3OndlYkNvbnRl
bnRQcm9jZXNzRGlkVGVybWluYXRlV2l0aFJlYXNvbjopXTsKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld1dlYlByb2Nlc3NEaWRDcmFzaCA9IFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKF93ZWJWaWV3V2ViUHJvY2Vzc0RpZENyYXNoOildOwpAQCAt
OTczLDYgKzk3OSwzOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6
CiAgICAgfSkuZ2V0KCldOwogfQogCitzdGF0aWMgYm9vbCBzeXN0ZW1BbGxvd3NMZWdhY3lUTFNG
b3IoV2ViUGFnZVByb3h5JiBwYWdlKQoreworICAgIGJvb2wgZW5hYmxlTGVnYWN5VExTID0gcGFn
ZS53ZWJzaXRlRGF0YVN0b3JlKCkuY29uZmlndXJhdGlvbigpLmxlZ2FjeVRMU0VuYWJsZWQoKTsK
KyAgICBpZiAoaWQgdmFsdWUgPSBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRz
XSBvYmplY3RGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiXSkKKyAgICAgICAgZW5hYmxl
TGVnYWN5VExTID0gW3ZhbHVlIGJvb2xWYWx1ZV07CisgICAgaWYgKCFlbmFibGVMZWdhY3lUTFMp
IHsKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAhUExBVEZPUk0oTUFDQ0FUQUxZU1QpCisg
ICAgICAgIGVuYWJsZUxlZ2FjeVRMUyA9IFtbUEFMOjpnZXRNQ1Byb2ZpbGVDb25uZWN0aW9uQ2xh
c3MoKSBzaGFyZWRDb25uZWN0aW9uXSBlZmZlY3RpdmVCb29sVmFsdWVGb3JTZXR0aW5nOkAiYWxs
b3dEZXByZWNhdGVkV2ViS2l0VExTIl0gPT0gTUNSZXN0cmljdGVkQm9vbEV4cGxpY2l0WWVzOwor
I2VsaWYgUExBVEZPUk0oTUFDKQorICAgICAgICBlbmFibGVMZWdhY3lUTFMgPSBDRlByZWZlcmVu
Y2VzR2V0QXBwQm9vbGVhblZhbHVlKENGU1RSKCJhbGxvd0RlcHJlY2F0ZWRXZWJLaXRUTFMiKSwg
Q0ZTVFIoImNvbS5hcHBsZS5hcHBsaWNhdGlvbmFjY2VzcyIpLCBudWxscHRyKTsKKyNlbmRpZgor
ICAgIH0KKyAgICByZXR1cm4gZW5hYmxlTGVnYWN5VExTOworfQorCit2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6c2hvdWxkQWxsb3dMZWdhY3lUTFMoV2ViUGFnZVByb3h5
JiBwYWdlLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5JiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3sKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3QXV0aGVudGljYXRpb25DaGFsbGVuZ2VTaG91bGRBbGxvd0xlZ2FjeVRMUykKKyAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHN5c3RlbUFsbG93c0xlZ2FjeVRMU0Zvcihw
YWdlKSk7CisKKyAgICBhdXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IG1fbmF2aWdhdGlvblN0YXRl
Lm1fbmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpOworICAgIGlmICghbmF2aWdhdGlvbkRlbGVnYXRl
KQorICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoc3lzdGVtQWxsb3dzTGVnYWN5VExT
Rm9yKHBhZ2UpKTsKKworICAgIGF1dG8gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENo
ZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcihfd2ViVmll
dzphdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpzaG91bGRBbGxvd0xlZ2FjeVRMUzopKTsKKyAgICBb
c3RhdGljX2Nhc3Q8aWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25E
ZWxlZ2F0ZS5nZXQoKSkgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpIHNob3Vs
ZEFsbG93TGVnYWN5VExTOm1ha2VCbG9ja1B0cihbY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKEJPT0wgc2hv
dWxkQWxsb3cpIG11dGFibGUgeworICAgICAgICBpZiAoY2hlY2tlci0+Y29tcGxldGlvbkhhbmRs
ZXJIYXNCZWVuQ2FsbGVkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGNoZWNrZXIt
PmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihz
aG91bGRBbGxvdyk7CisgICAgfSkuZ2V0KCldOworfQorCiBzdGF0aWMgX1dLUHJvY2Vzc1Rlcm1p
bmF0aW9uUmVhc29uIHdrUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uKFByb2Nlc3NUZXJtaW5hdGlv
blJlYXNvbiByZWFzb24pCiB7CiAgICAgc3dpdGNoIChyZWFzb24pIHsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQko
cmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMzgxLDE4ICszODEsNiBAQCB2b2lk
IFdlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVOCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUyA9IGZhbHNlOwotICAgIGlmIChpZCB2YWx1
ZSA9IFtkZWZhdWx0cyBvYmplY3RGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiXSkKLSAg
ICAgICAgcGFyYW1ldGVycy5lbmFibGVMZWdhY3lUTFMgPSBbdmFsdWUgYm9vbFZhbHVlXTsKLSAg
ICBpZiAoIXBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5VExTKSB7Ci0jaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkgJiYgIVBMQVRGT1JNKE1BQ0NBVEFMWVNUKQotICAgICAgICBwYXJhbWV0ZXJzLmVuYWJs
ZUxlZ2FjeVRMUyA9IFtbUEFMOjpnZXRNQ1Byb2ZpbGVDb25uZWN0aW9uQ2xhc3MoKSBzaGFyZWRD
b25uZWN0aW9uXSBlZmZlY3RpdmVCb29sVmFsdWVGb3JTZXR0aW5nOkAiYWxsb3dEZXByZWNhdGVk
V2ViS2l0VExTIl0gPT0gTUNSZXN0cmljdGVkQm9vbEV4cGxpY2l0WWVzOwotI2VsaWYgUExBVEZP
Uk0oTUFDKQotICAgICAgICBwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUyA9IENGUHJlZmVyZW5j
ZXNHZXRBcHBCb29sZWFuVmFsdWUoQ0ZTVFIoImFsbG93RGVwcmVjYXRlZFdlYktpdFRMUyIpLCBD
RlNUUigiY29tLmFwcGxlLmFwcGxpY2F0aW9uYWNjZXNzIiksIG51bGxwdHIpOwotI2VuZGlmCi0g
ICAgfQotICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nl
c3Npb25QYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUyA9IHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5
VExTOwotCiAgICAgcGFyYW1ldGVycy5uZXR3b3JrQVRTQ29udGV4dCA9IGFkb3B0Q0YoX0NGTmV0
d29ya0NvcHlBVFNDb250ZXh0KCkpOwogCiAgICAgcGFyYW1ldGVycy5zaG91bGRTdXBwcmVzc01l
bW9yeVByZXNzdXJlSGFuZGxlciA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdFN1cHByZXNz
TWVtb3J5UHJlc3N1cmVIYW5kbGVyRGVmYXVsdHNLZXldOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCShy
ZXZpc2lvbiAyNTUwOTIpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCw3IEBACiAKICNp
bmNsdWRlICJBUElDb250ZW50UnVsZUxpc3QuaCIKICNpbmNsdWRlICJBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5LmgiCisjaW5jbHVkZSAiQXV0aGVudGljYXRpb25NYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiRG93bmxvYWRQcm94eU1hcC5oIgogI2luY2x1ZGUgIkRvd25sb2FkUHJveHlNZXNzYWdl
cy5oIgogI2lmIEVOQUJMRShMRUdBQ1lfQ1VTVE9NX1BST1RPQ09MX01BTkFHRVIpCkBAIC0zMjYs
NyArMzI3LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzQXV0aGVudAogICAg
IHN0b3JlLT5jbGllbnQoKS5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoV1RGTW92
ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJv
eHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBPcHRpb25hbDxTZWN1
cml0eU9yaWdpbkRhdGE+JiB0b3BPcmlnaW4sIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiYgY29yZUNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIFdlYlBhZ2VQcm94eUlkZW50aWZpZXIgcGFnZUlELCBjb25zdCBPcHRp
b25hbDxTZWN1cml0eU9yaWdpbkRhdGE+JiB0b3BPcmlnaW4sIFdlYkNvcmU6OkF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlJiYgY29yZUNoYWxsZW5nZSwgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTLCB1
aW50NjRfdCBjaGFsbGVuZ2VJRCkKIHsKICNpZiBIQVZFKFNFQ19LRVlfUFJPWFkpCiAgICAgV2Vh
a1B0cjxTZWNLZXlQcm94eVN0b3JlPiBzZWNLZXlQcm94eVN0b3JlOwpAQCAtMzQ3LDcgKzM0OCw3
IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZUF1dGgKICAgICAgICAgcGFn
ZSA9IFdlYlByb2Nlc3NQcm94eTo6d2ViUGFnZShwYWdlSUQpOwogCiAgICAgaWYgKHBhZ2UpIHsK
LSAgICAgICAgcGFnZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoV1RG
TW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOworICAgICAgICBwYWdlLT5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eShXVEZNb3ZlKGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlKSwgbmVnb3RpYXRlZExlZ2FjeVRMUyA/IE5lZ290aWF0ZWRMZWdhY3lUTFM6OlllcyA6IE5l
Z290aWF0ZWRMZWdhY3lUTFM6Ok5vKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzU2
LDEyICszNTcsMTIgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlQXV0aAog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgV2ViUGFnZVByb3h5Ojpmb3JNb3N0VmlzaWJs
ZVdlYlBhZ2VJZkFueShzZXNzaW9uSUQsICp0b3BPcmlnaW4sIFt0aGlzLCB3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKHRoaXMpLCBzZXNzaW9uSUQsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gV1RG
TW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSldKGF1dG8qIHBhZ2UpIG11dGFibGUgeworICAg
IFdlYlBhZ2VQcm94eTo6Zm9yTW9zdFZpc2libGVXZWJQYWdlSWZBbnkoc2Vzc2lvbklELCAqdG9w
T3JpZ2luLCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgc2Vzc2lvbklELCBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IFdURk1vdmUoYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
LCBuZWdvdGlhdGVkTGVnYWN5VExTXShhdXRvKiBwYWdlKSBtdXRhYmxlIHsKICAgICAgICAgaWYg
KCF3ZWFrVGhpcykKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAocGFnZSkgewot
ICAgICAgICAgICAgcGFnZS0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHko
V1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOworICAgICAgICAgICAgcGFnZS0+ZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkoV1RGTW92ZShhdXRoZW50aWNhdGlv
bkNoYWxsZW5nZSksIG5lZ290aWF0ZWRMZWdhY3lUTFMgPyBOZWdvdGlhdGVkTGVnYWN5VExTOjpZ
ZXMgOiBOZWdvdGlhdGVkTGVnYWN5VExTOjpObyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgcHJvY2Vzc0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHNlc3Npb25JRCwg
V1RGTW92ZShhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkpOwpJbmRleDogU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgJKHJldmlz
aW9uIDI1NTA5MikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMzUsNyArMjM1LDcgQEAgcHJpdmF0ZToK
IAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZFJlY2VpdmVOZXR3b3JrUHJv
Y2Vzc1Byb3h5TWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKTsKLSAgICB2
b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQQUw6OlNlc3Npb25JRCwgV2Vi
UGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlJiYsIHVpbnQ2NF90IGNo
YWxsZW5nZUlEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZShQ
QUw6OlNlc3Npb25JRCwgV2ViUGFnZVByb3h5SWRlbnRpZmllciwgY29uc3QgT3B0aW9uYWw8V2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYsIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlJiYsIGJvb2wsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKTsKICAgICB2b2lkIGRpZEZldGNoV2Vi
c2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmKTsKICAgICB2
b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogICAgIHZvaWQg
ZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwpJbmRl
eDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjU1MDkyKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lm1lc3NhZ2Vz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw3ICsyMSw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIG1l
c3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgTm90UmVmQ291bnRl
ZCB7Ci0gICAgRGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9u
YWw8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW4sIFdlYkNvcmU6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlIGNoYWxsZW5nZSwgdWludDY0X3QgY2hhbGxlbmdlSUQpCisgICAg
RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViS2l0OjpXZWJQYWdlUHJveHlJZGVudGlmaWVyIHBhZ2VJRCwgT3B0aW9uYWw8V2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiB0b3BPcmlnaW4sIFdlYkNvcmU6OkF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlIGNoYWxsZW5nZSwgYm9vbCBuZWdvdGlhdGVkTGVnYWN5VExTLCB1aW50NjRfdCBj
aGFsbGVuZ2VJRCkKIAogICAgIERpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJ
RCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZURhdGEgd2Vic2l0ZURhdGEpCiAgICAgRGlkRGVsZXRl
V2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFT
dG9yZUNvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMTg0LDcgKzE4NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2Rldmlj
ZU1hbmFnZW1lbnRSZXN0cmljdGlvbnNFbmFibGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fYWxs
TG9hZHNCbG9ja2VkQnlEZXZpY2VNYW5hZ2VtZW50UmVzdHJpY3Rpb25zRm9yVGVzdGluZyB7IGZh
bHNlIH07CiAgICAgYm9vbCBtX2FsbG93c0NlbGx1bGFyQWNjZXNzIHsgdHJ1ZSB9OwotICAgIGJv
b2wgbV9sZWdhY3lUTFNFbmFibGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fbGVnYWN5VExTRW5h
YmxlZCB7IHRydWUgfTsKICAgICBib29sIG1fZmFzdFNlcnZlclRydXN0RXZhbHVhdGlvbkVuYWJs
ZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9zZXJ2aWNlV29ya2VyUHJvY2Vzc1Rlcm1pbmF0aW9u
RGVsYXlFbmFibGVkIHsgdHJ1ZSB9OwogICAgIGJvb2wgbV90ZXN0aW5nU2Vzc2lvbkVuYWJsZWQg
eyBmYWxzZSB9OwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYnNpdGVEYXRhL0NvY29hL1dlYnNpdGVEYXRhU3RvcmVDb2NvYS5tbQkocmV2
aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvQ29j
b2EvV2Vic2l0ZURhdGFTdG9yZUNvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBAIC04NSwxNiArODUs
NiBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgYm9vbCBz
aG91bGRMb2dDb29raWVJbmZvcm1hdGlvbiA9IGZhbHNlOwogICAgIGJvb2wgZW5hYmxlUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0RlYnVnTW9kZSA9IGZhbHNlOwogICAgIGF1dG8gZmlyc3RQYXJ0eVdl
YnNpdGVEYXRhUmVtb3ZhbE1vZGUgPSBXZWJDb3JlOjpGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZTo6QWxsQnV0Q29va2llczsKLSAgICBib29sIGVuYWJsZUxlZ2FjeVRMUyA9IGNvbmZp
Z3VyYXRpb24oKS5sZWdhY3lUTFNFbmFibGVkKCk7Ci0gICAgaWYgKGlkIHZhbHVlID0gW2RlZmF1
bHRzIG9iamVjdEZvcktleTpAIldlYktpdEVuYWJsZUxlZ2FjeVRMUyJdKQotICAgICAgICBlbmFi
bGVMZWdhY3lUTFMgPSBbdmFsdWUgYm9vbFZhbHVlXTsKLSAgICBpZiAoIWVuYWJsZUxlZ2FjeVRM
UykgewotI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkK
LSAgICAgICAgZW5hYmxlTGVnYWN5VExTID0gW1tQQUw6OmdldE1DUHJvZmlsZUNvbm5lY3Rpb25D
bGFzcygpIHNoYXJlZENvbm5lY3Rpb25dIGVmZmVjdGl2ZUJvb2xWYWx1ZUZvclNldHRpbmc6QCJh
bGxvd0RlcHJlY2F0ZWRXZWJLaXRUTFMiXSA9PSBNQ1Jlc3RyaWN0ZWRCb29sRXhwbGljaXRZZXM7
Ci0jZWxpZiBQTEFURk9STShNQUMpCi0gICAgICAgIGVuYWJsZUxlZ2FjeVRMUyA9IENGUHJlZmVy
ZW5jZXNHZXRBcHBCb29sZWFuVmFsdWUoQ0ZTVFIoImFsbG93RGVwcmVjYXRlZFdlYktpdFRMUyIp
LCBDRlNUUigiY29tLmFwcGxlLmFwcGxpY2F0aW9uYWNjZXNzIiksIG51bGxwdHIpOwotI2VuZGlm
Ci0gICAgfQogICAgIFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tYWluIHJlc291cmNlTG9hZFN0YXRp
c3RpY3NNYW51YWxQcmV2YWxlbnRSZXNvdXJjZSB7IH07CiAjaWYgRU5BQkxFKFJFU09VUkNFX0xP
QURfU1RBVElTVElDUykKICAgICBlbmFibGVSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRGVidWdNb2Rl
ID0gW2RlZmF1bHRzIGJvb2xGb3JLZXk6QCJJVFBEZWJ1Z01vZGUiXTsKQEAgLTE2NCw3ICsxNTQs
NiBAQCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycyBXZWJzaXRlRGF0YVN0CiAgICAgICAgIFNl
Y29uZHMgeyBbZGVmYXVsdHMgaW50ZWdlckZvcktleTpXZWJLaXROZXR3b3JrTG9hZFRocm90dGxl
TGF0ZW5jeU1pbGxpc2Vjb25kc0RlZmF1bHRzS2V5XSAvIDEwMDAuIH0sCiAgICAgICAgIFdURk1v
dmUoaHR0cFByb3h5KSwKICAgICAgICAgV1RGTW92ZShodHRwc1Byb3h5KSwKLSAgICAgICAgZW5h
YmxlTGVnYWN5VExTLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJl
Y3RvcnkpLAogICAgICAgICBXVEZNb3ZlKHJlc291cmNlTG9hZFN0YXRpc3RpY3NEaXJlY3RvcnlI
YW5kbGUpLAogICAgICAgICByZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZCgpLApJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjU1MDkyKQorKysgU291cmNlL1dl
YktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAK
KzIwMjAtMDEtMzAgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBBZGQgV0tOYXZpZ2F0aW9uRGVsZWdhdGUgU1BJIHRvIGRpc2FibGUgVExTIDEu
MCBhbmQgMS4xCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDY5NzkKKworICAgICAgICBSZXZpZXdlZCBieSBCcmFkeSBFaWRzb24uCisKKyAgICAgICAg
KiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2NvbW1vbkluaXRpYWxp
emF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisKIDIwMjAtMDEtMjIgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIExlZ2FjeSBXZWJLaXQ6IEFkZCBT
UEkgdmFyaWFudCBvZiAtc2V0U2VsZWN0ZWRET01SYW5nZSB0aGF0IGNhbiBwZXJmb3JtIHRoZSBz
ZWxlY3Rpb24gYXMgaWYgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyCkluZGV4OiBTb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCShyZXZpc2lvbiAyNTUwOTIpCisrKyBTb3Vy
Y2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTE0MjEsMTkgKzE0MjEsNiBAQCAtICh2b2lkKV9jb21tb25Jbml0aWFsaXphdGlvbldpdGhGcmFt
ZU5hCiAgICAgICAgIGlmIChXZWJDb3JlOjpJT1NBcHBsaWNhdGlvbjo6aXNNb2JpbGVTYWZhcmko
KSkKICAgICAgICAgICAgIFdlYkNvcmU6OkRlcHJlY2F0ZWRHbG9iYWxTZXR0aW5nczo6c2V0U2hv
dWxkTWFuYWdlQXVkaW9TZXNzaW9uQ2F0ZWdvcnkodHJ1ZSk7CiAjZW5kaWYKLQotICAgICAgICBi
b29sIGVuYWJsZUxlZ2FjeVRMUyA9IGZhbHNlOwotICAgICAgICBpZiAoaWQgdmFsdWUgPSBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSBvYmplY3RGb3JLZXk6QCJXZWJLaXRF
bmFibGVMZWdhY3lUTFMiXSkKLSAgICAgICAgICAgIGVuYWJsZUxlZ2FjeVRMUyA9IFt2YWx1ZSBi
b29sVmFsdWVdOwotICAgICAgICBpZiAoIWVuYWJsZUxlZ2FjeVRMUykgewotI2lmIFBMQVRGT1JN
KElPU19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKLSAgICAgICAgICAgIGVuYWJs
ZUxlZ2FjeVRMUyA9IFtbUEFMOjpnZXRNQ1Byb2ZpbGVDb25uZWN0aW9uQ2xhc3MoKSBzaGFyZWRD
b25uZWN0aW9uXSBlZmZlY3RpdmVCb29sVmFsdWVGb3JTZXR0aW5nOkAiYWxsb3dEZXByZWNhdGVk
V2ViS2l0VExTIl0gPT0gTUNSZXN0cmljdGVkQm9vbEV4cGxpY2l0WWVzOwotI2VsaWYgUExBVEZP
Uk0oTUFDKQotICAgICAgICAgICAgZW5hYmxlTGVnYWN5VExTID0gQ0ZQcmVmZXJlbmNlc0dldEFw
cEJvb2xlYW5WYWx1ZShDRlNUUigiYWxsb3dEZXByZWNhdGVkV2ViS2l0VExTIiksIENGU1RSKCJj
b20uYXBwbGUuYXBwbGljYXRpb25hY2Nlc3MiKSwgbnVsbHB0cik7Ci0jZW5kaWYKLSAgICAgICAg
fQotICAgICAgICBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzZXRMZWdhY3lUTFNF
bmFibGVkKGVuYWJsZUxlZ2FjeVRMUyk7Ci0KICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0
aW9uID0gdHJ1ZTsKICAgICB9CiAKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI1NTQxMCkKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDIwLTAxLTMwICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFdLTmF2aWdhdGlv
bkRlbGVnYXRlIFNQSSB0byBkaXNhYmxlIFRMUyAxLjAgYW5kIDEuMQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA2OTc5CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQnJhZHkgRWlkc29uLgorCisgICAgICAgICogTWluaUJyb3dzZXIvbWFjL1NldHRpbmdz
Q29udHJvbGxlci5tOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
VExTRGVwcmVjYXRpb24ubW06CisgICAgICAgICgtW1RMU05hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl0pOgorICAgICAgICAoLVtUTFNOYXZpZ2F0aW9uRGVsZWdh
dGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dKToKKyAgICAgICAgKC1bVExT
TmF2aWdhdGlvbkRlbGVnYXRlIHJlY2VpdmVkU2hvdWxkQWxsb3dMZWdhY3lUTFNdKToKKyAgICAg
ICAgKC1bVExTTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUTFNOYXZpZ2F0
aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtU
TFNOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
OndpdGhFcnJvcjpdKToKKyAgICAgICAgKC1bVExTTmF2aWdhdGlvbkRlbGVnYXRlIF93ZWJWaWV3
OmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOnNob3VsZEFsbG93TGVnYWN5VExTOl0pOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjAtMDEtMjkgIEpvbmF0aGFuIEJlZGFyZCAg
PGpiZWRhcmRAYXBwbGUuY29tPgogCiAgICAgICAgIHJ1bi1zYWZhcmkgLyBydW4td2Via2l0LXRl
c3RzIC0taW9zLXNpbXVsYXRvciBub3Qgd29ya2luZyB3aXRoIFhDb2RlIDEzLjMuMSAoMTFDNTA0
KQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNh
dGlvbi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1RMU0RlcHJlY2F0aW9uLm1tCShyZXZpc2lvbiAyNTUwOTIpCisrKyBUb29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC00MywxMzIgKzQzLDgyIEBACiAjaW1wb3J0IDxXZWJLaXQvV2ViQ29yZVRocmVhZC5oPgog
I2VuZGlmCiAKLUBpbnRlcmZhY2UgV2ViU29ja2V0RGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURl
bGVnYXRlLCBXZWJVSURlbGVnYXRlPgotLSAoTlNTdHJpbmcgKil3YWl0Rm9yTWVzc2FnZTsKK0Bp
bnRlcmZhY2UgVExTTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRl
bGVnYXRlPgorLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbjsKKy0gKHZvaWQpd2Fp
dEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb247CistIChib29sKXJlY2VpdmVkU2hvdWxk
QWxsb3dMZWdhY3lUTFM7CitAcHJvcGVydHkgKG5vbmF0b21pYykgYm9vbCBzaG91bGRBbGxvd0xl
Z2FjeVRMUzsKIEBlbmQKIAotQGltcGxlbWVudGF0aW9uIFdlYlNvY2tldERlbGVnYXRlIHsKLSAg
ICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9tZXNzYWdlOworQGltcGxlbWVudGF0aW9uIFRMU05hdmln
YXRpb25EZWxlZ2F0ZSB7CisgICAgYm9vbCBfbmF2aWdhdGlvbkZpbmlzaGVkOworICAgIGJvb2wg
X25hdmlnYXRpb25GYWlsZWQ7CisgICAgYm9vbCBfcmVjZWl2ZWRTaG91bGRBbGxvd0xlZ2FjeVRM
UzsKIH0KIAotLSAoTlNTdHJpbmcgKil3YWl0Rm9yTWVzc2FnZQorLSAodm9pZCl3YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbgogewotICAgIHdoaWxlICghX21lc3NhZ2UpCisgICAgd2hpbGUgKCFf
bmF2aWdhdGlvbkZpbmlzaGVkKQogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpzcGluUnVu
TG9vcCgpOwotICAgIHJldHVybiBfbWVzc2FnZS5hdXRvcmVsZWFzZSgpOwogfQogCi0tICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRo
TWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZv
ICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5k
bGVyCistICh2b2lkKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCiB7Ci0gICAg
X21lc3NhZ2UgPSBtZXNzYWdlOwotICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CisgICAgd2hpbGUg
KCFfbmF2aWdhdGlvbkZhaWxlZCkKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1
bkxvb3AoKTsKIH0KIAotLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1bkphdmFT
Y3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0aWF0ZWRC
eUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCistIChib29sKXJlY2VpdmVkU2hvdWxkQWxsb3dMZWdh
Y3lUTFMKIHsKLSAgICBfbWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgcmV0dXJuIF9yZWNlaXZlZFNo
b3VsZEFsbG93TGVnYWN5VExTOwogfQogCi1AZW5kCi0KLW5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKLQotY29uc3QgdWludDE2X3QgdGxzMV8xID0gMHgwMzAyOwotc3RhdGljIE5TU3RyaW5nICpk
ZWZhdWx0c0tleSA9IEAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIjsKLQotVEVTVChXZWJLaXQsIFRM
U1ZlcnNpb25XZWJTb2NrZXQpCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Np
b25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24gZGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAq
IGNyZWRlbnRpYWwpKWNvbXBsZXRpb25IYW5kbGVyCiB7Ci0gICAgYXV0byBnZXRXZWJTb2NrZXRF
dmVudCA9IFtdIChib29sIGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUywgYm9vbCBzZXJ2ZXJMaW1p
dFRMUykgewotICAgICAgICBPcHRpb25hbDx1aW50MTZfdD4gbWF4U2VydmVyVExTVmVyc2lvbjsK
LSAgICAgICAgaWYgKHNlcnZlckxpbWl0VExTKQotICAgICAgICAgICAgbWF4U2VydmVyVExTVmVy
c2lvbiA9IHRsczFfMTsKLSAgICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3Rv
Y29sOjpIVFRQUywgWz1dKFNTTCAqc3NsKSB7Ci0gICAgICAgICAgICBFWFBFQ1RfVFJVRSghc3Ns
ID09IChjbGllbnRBbGxvd0RlcHJlY2F0ZWRUTFMgIT0gc2VydmVyTGltaXRUTFMpKTsKLSAgICAg
ICAgfSwgbWF4U2VydmVyVExTVmVyc2lvbik7Ci0KLSAgICAgICAgaWYgKGNsaWVudEFsbG93RGVw
cmVjYXRlZFRMUykKLSAgICAgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVm
YXVsdHNdIHNldEJvb2w6WUVTIGZvcktleTpkZWZhdWx0c0tleV07Ci0gICAgICAgIAotICAgICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOwotICAgICAgICBh
dXRvIGRlbGVnYXRlID0gYWRvcHROUyhbV2ViU29ja2V0RGVsZWdhdGUgbmV3XSk7Ci0gICAgICAg
IFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOwotICAgICAgICBbd2ViVmll
dyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBuZXR3b3JrIHByb2Nlc3MiXTsK
LSAgICAgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9hbGxvd0FueVRM
U0NlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZ107Ci0gICAgICAgIFt3ZWJWaWV3IHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKLSAgICAg
ICAgICAgIEAiPHNjcmlwdD4iCi0gICAgICAgICAgICAiY29uc3Qgc29ja2V0ID0gbmV3IFdlYlNv
Y2tldCgnd3NzOi8vbG9jYWxob3N0OiVkJyk7IgotICAgICAgICAgICAgInNvY2tldC5vbmNsb3Nl
ID0gZnVuY3Rpb24oZXZlbnQpeyBhbGVydCgnY2xvc2UnKTsgfTsiCi0gICAgICAgICAgICAic29j
a2V0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGFsZXJ0KCdlcnJvcjogJyArIGV2ZW50LmRh
dGEpOyB9OyIKLSAgICAgICAgICAgICI8L3NjcmlwdD4iLCBzZXJ2ZXIucG9ydCgpXV07Ci0gICAg
ICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2RlbGVnYXRlIHdhaXRGb3JNZXNzYWdlXTsKLSAgICAg
ICAgCi0gICAgICAgIGlmIChjbGllbnRBbGxvd0RlcHJlY2F0ZWRUTFMpCi0gICAgICAgICAgICBb
W05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVPYmplY3RGb3JLZXk6
ZGVmYXVsdHNLZXldOworICAgIEVYUEVDVF9XS19TVFJFUShjaGFsbGVuZ2UucHJvdGVjdGlvblNw
YWNlLmF1dGhlbnRpY2F0aW9uTWV0aG9kLCBOU1VSTEF1dGhlbnRpY2F0aW9uTWV0aG9kU2VydmVy
VHJ1c3QpOworICAgIGNvbXBsZXRpb25IYW5kbGVyKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VV
c2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVu
Z2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRydXN0XSk7Cit9CiAKLSAgICAgICAgcmV0dXJuIG1l
c3NhZ2U7Ci0gICAgfTsKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRG
aW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7CisgICAgX25hdmln
YXRpb25GaW5pc2hlZCA9IHRydWU7Cit9CiAKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29j
a2V0RXZlbnQodHJ1ZSwgdHJ1ZSksICJjbG9zZSIpOwotICAgIE5TU3RyaW5nICptZXNzYWdlID0g
Z2V0V2ViU29ja2V0RXZlbnQoZmFsc2UsIHRydWUpOwotICAgIEVYUEVDVF9UUlVFKFttZXNzYWdl
IGlzRXF1YWxUb1N0cmluZzpAImVycm9yOiB1bmRlZmluZWQiXSB8fCBbbWVzc2FnZSBpc0VxdWFs
VG9TdHJpbmc6QCJjbG9zZSJdKTsKLSAgICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZl
bnQoZmFsc2UsIGZhbHNlKSwgImNsb3NlIik7CistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2
aWdhdGlvbiB3aXRoRXJyb3I6KE5TRXJyb3IgKillcnJvcgoreworICAgIF9uYXZpZ2F0aW9uRmFp
bGVkID0gdHJ1ZTsKIH0KIAotTlNTdHJpbmcgKmdldFdlYlNvY2tldEV2ZW50V2ViS2l0TGVnYWN5
KGJvb2wgY2xpZW50QWxsb3dEZXByZWNhdGVkVExTLCBib29sIHNlcnZlckxpbWl0VExTKQorLSAo
dm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZTooTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqKWNoYWxsZW5nZSBzaG91bGRBbGxvd0xl
Z2FjeVRMUzoodm9pZCAoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIKIHsKLSNpZiBQTEFURk9S
TShJT1NfRkFNSUxZKQotICAgIFdlYktpdEluaXRpYWxpemUoKTsKLSAgICBXZWJUaHJlYWRMb2Nr
KCk7Ci0jZW5kaWYKLSAgICBPcHRpb25hbDx1aW50MTZfdD4gbWF4U2VydmVyVExTVmVyc2lvbjsK
LSAgICBpZiAoc2VydmVyTGltaXRUTFMpCi0gICAgICAgIG1heFNlcnZlclRMU1ZlcnNpb24gPSB0
bHMxXzE7Ci0gICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywg
Wz1dKFNTTCAqc3NsKSB7Ci0gICAgICAgIEVYUEVDVF9UUlVFKCFzc2wgPT0gKGNsaWVudEFsbG93
RGVwcmVjYXRlZFRMUyAhPSBzZXJ2ZXJMaW1pdFRMUykpOwotICAgIH0sIG1heFNlcnZlclRMU1Zl
cnNpb24pOwotCi0gICAgaWYgKGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUykKLSAgICAgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpZRVMgZm9yS2V5OmRl
ZmF1bHRzS2V5XTsKLSAgICAKLSAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtXZWJWaWV3IG5l
d10pOwotICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtXZWJTb2NrZXREZWxlZ2F0ZSBuZXdd
KTsKLSAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKLSAgICBXZWJD
b3JlVGVzdFN1cHBvcnQ6OnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlKHRydWUpOwotICAgIFtb
d2ViVmlldyBtYWluRnJhbWVdIGxvYWRIVE1MU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9y
bWF0OgotICAgICAgICBAIjxzY3JpcHQ+IgotICAgICAgICAiY29uc3Qgc29ja2V0ID0gbmV3IFdl
YlNvY2tldCgnd3NzOi8vbG9jYWxob3N0OiVkJyk7IgotICAgICAgICAic29ja2V0Lm9uY2xvc2Ug
PSBmdW5jdGlvbihldmVudCl7IGFsZXJ0KCdjbG9zZScpOyB9OyIKLSAgICAgICAgInNvY2tldC5v
bmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBhbGVydCgnZXJyb3I6ICcgKyBldmVudC5kYXRhKTsg
fTsiCi0gICAgICAgICI8L3NjcmlwdD4iLCBzZXJ2ZXIucG9ydCgpXSBiYXNlVVJMOm5pbF07Ci0g
ICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbZGVsZWdhdGUgd2FpdEZvck1lc3NhZ2VdOwotCi0gICAg
aWYgKGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUykKLSAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBz
dGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlT2JqZWN0Rm9yS2V5OmRlZmF1bHRzS2V5XTsKLQot
ICAgIHJldHVybiBtZXNzYWdlOwotfQotCi1URVNUKFdlYktpdCwgVExTVmVyc2lvbldlYlNvY2tl
dFdlYktpdExlZ2FjeTEpCi17Ci0gICAgRVhQRUNUX1dLX1NUUkVRKGdldFdlYlNvY2tldEV2ZW50
V2ViS2l0TGVnYWN5KHRydWUsIHRydWUpLCAiY2xvc2UiKTsKLX0KLQotVEVTVChXZWJLaXQsIFRM
U1ZlcnNpb25XZWJTb2NrZXRXZWJLaXRMZWdhY3kyKQotewotI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCi0gICAgY29uc3QgY2hhciogZXhwZWN0ZWQgPSAiZXJyb3I6IHVuZGVmaW5lZCI7Ci0jZWxz
ZQotICAgIGNvbnN0IGNoYXIqIGV4cGVjdGVkID0gImNsb3NlIjsKLSNlbmRpZgotICAgIEVYUEVD
VF9XS19TVFJFUShnZXRXZWJTb2NrZXRFdmVudFdlYktpdExlZ2FjeShmYWxzZSwgdHJ1ZSksIGV4
cGVjdGVkKTsKKyAgICBfcmVjZWl2ZWRTaG91bGRBbGxvd0xlZ2FjeVRMUyA9IHRydWU7CisgICAg
Y29tcGxldGlvbkhhbmRsZXIoW3NlbGYgc2hvdWxkQWxsb3dMZWdhY3lUTFNdKTsKIH0KIAotVEVT
VChXZWJLaXQsIFRMU1ZlcnNpb25XZWJTb2NrZXRXZWJLaXRMZWdhY3kzKQorQGVuZAorCisKK25h
bWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY29uc3QgdWludDE2X3QgdGxzMV8xID0gMHgwMzAy
Oworc3RhdGljIE5TU3RyaW5nICpkZWZhdWx0c0tleSA9IEAiV2ViS2l0RW5hYmxlTGVnYWN5VExT
IjsKKworVEVTVChUTFNWZXJzaW9uLCBEZWZhdWx0QmVoYXZpb3IpCiB7Ci0gICAgRVhQRUNUX1dL
X1NUUkVRKGdldFdlYlNvY2tldEV2ZW50V2ViS2l0TGVnYWN5KGZhbHNlLCBmYWxzZSksICJjbG9z
ZSIpOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFRD
UFNlcnZlcjo6cmVzcG9uZFdpdGhPSywgdGxzMV8xKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRv
cHROUyhbVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtXS1dlYlZpZXcgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlOl4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKmNoYWxsZW5nZSwgdm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdl
RGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICBFWFBFQ1RfV0tfU1RS
RVEoY2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5hdXRoZW50aWNhdGlvbk1ldGhvZCwgTlNVUkxB
dXRoZW50aWNhdGlvbk1ldGhvZFNlcnZlclRydXN0KTsKKyAgICAgICAgY2FsbGJhY2soTlNVUkxT
ZXNzaW9uQXV0aENoYWxsZW5nZVVzZUNyZWRlbnRpYWwsIFtOU1VSTENyZWRlbnRpYWwgY3JlZGVu
dGlhbEZvclRydXN0OmNoYWxsZW5nZS5wcm90ZWN0aW9uU3BhY2Uuc2VydmVyVHJ1c3RdKTsKKyAg
ICB9XTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRo
VVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0
cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAgW2RlbGVnYXRlIHdh
aXRGb3JEaWRGaW5pc2hOYXZpZ2F0aW9uXTsKIH0KIAotVEVTVChXZWJLaXQsIFRMU1ZlcnNpb25O
ZXR3b3JrU2Vzc2lvbikKKy8vIEZJWE1FOiBUaGlzIHRlc3Qgc2hvdWxkIHJlbWFpbiBkaXNhYmxl
ZCB1bnRpbCByZGFyOi8vcHJvYmxlbS81NjUyMjYwMSBpcyBmaXhlZC4KK1RFU1QoVExTVmVyc2lv
biwgRElTQUJMRURfTmV0d29ya1Nlc3Npb24pCiB7CiAgICAgc3RhdGljIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOwogICAgIGF1dG8gbWFrZVdl
YlZpZXdXaXRoID0gWyZdIChXS1dlYnNpdGVEYXRhU3RvcmUgKnN0b3JlKSB7CkBAIC0xNzcsNTUg
KzEyNyw4MyBAQCBURVNUKFdlYktpdCwgVExTVmVyc2lvbk5ldHdvcmtTZXNzaW9uKQogICAgICAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1l
Ok5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0p
OwogICAgICAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OwogICAgICAgICBbZGVsZWdhdGUgc2V0RGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
Ol4oV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVuZ2UgKmNoYWxsZW5nZSwg
dm9pZCAoXmNhbGxiYWNrKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5T
VVJMQ3JlZGVudGlhbCAqKSkgeworICAgICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGNoYWxsZW5n
ZS5wcm90ZWN0aW9uU3BhY2UuYXV0aGVudGljYXRpb25NZXRob2QsIE5TVVJMQXV0aGVudGljYXRp
b25NZXRob2RTZXJ2ZXJUcnVzdCk7CiAgICAgICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9y
VHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0pOwogICAgICAgICB9
XTsKICAgICAgICAgcmV0dXJuIHdlYlZpZXc7CiAgICAgfTsKICAgICB7Ci0gICAgICAgIFRDUFNl
cnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtdKFNTTCAqc3NsKSB7Ci0g
ICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3NsKTsKLSAgICAgICAgfSwgdGxzMV8xKTsKKyAgICAg
ICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgVENQU2VydmVy
OjpyZXNwb25kV2l0aE9LLCB0bHMxXzEpOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBtYWtlV2Vi
Vmlld1dpdGgoW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk7CiAgICAgICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4w
LjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKLSAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JE
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKKyAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JE
aWRGaW5pc2hOYXZpZ2F0aW9uXTsKICAgICB9CiAgICAgewotICAgICAgICBUQ1BTZXJ2ZXIgc2Vy
dmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXShTU0wgKnNzbCkgewotICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKHNzbCk7Ci0gICAgICAgIH0sIHRsczFfMSk7CisgICAgICAgIFRDUFNl
cnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFRDUFNlcnZlcjo6cmVzcG9u
ZFdpdGhPSywgdGxzMV8xKTsKICAgICAgICAgYXV0byB3ZWJWaWV3ID0gbWFrZVdlYlZpZXdXaXRo
KFtXS1dlYnNpdGVEYXRhU3RvcmUgbm9uUGVyc2lzdGVudERhdGFTdG9yZV0pOwogICAgICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4w
LjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07Ci0gICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CisgICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlk
RmluaXNoTmF2aWdhdGlvbl07CiAgICAgfQogICAgIHsKLSAgICAgICAgVENQU2VydmVyIHNlcnZl
cihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LLCB0
bHMxXzEpOworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhU
VFBTLCBbXShTU0wgKnNzbCkgeworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7CisgICAg
ICAgIH0sIHRsczFfMSk7CiAgICAgICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdE5vblBlcnNpc3RlbnRD
b25maWd1cmF0aW9uXSk7Ci0gICAgICAgIFtjb25maWd1cmF0aW9uIHNldExlZ2FjeVRMU0VuYWJs
ZWQ6WUVTXTsKKyAgICAgICAgW2NvbmZpZ3VyYXRpb24gc2V0TGVnYWN5VExTRW5hYmxlZDpOT107
CiAgICAgICAgIGF1dG8gZGF0YVN0b3JlID0gYWRvcHROUyhbW1dLV2Vic2l0ZURhdGFTdG9yZSBh
bGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CiAgICAg
ICAgIGF1dG8gd2ViVmlldyA9IG1ha2VXZWJWaWV3V2l0aChkYXRhU3RvcmUuZ2V0KCkpOwogICAg
ICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltO
U1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8x
MjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07Ci0gICAgICAgIFtkZWxlZ2F0ZSB3YWl0
Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CiAgICAgfQotICAgIFtbTlNVc2VyRGVmYXVsdHMgc3Rh
bmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6WUVTIGZvcktleTpkZWZhdWx0c0tleV07CisgICAg
W1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpOTyBmb3JLZXk6
ZGVmYXVsdHNLZXldOwogICAgIHsKICAgICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6
OlByb3RvY29sOjpIVFRQUywgW10oU1NMICpzc2wpIHsKLSAgICAgICAgICAgIFRDUFNlcnZlcjo6
cmVzcG9uZFdpdGhPSyhzc2wpOworICAgICAgICAgICAgRVhQRUNUX0ZBTFNFKHNzbCk7CiAgICAg
ICAgIH0sIHRsczFfMSk7CiAgICAgICAgIGF1dG8gd2ViVmlldyA9IG1ha2VXZWJWaWV3V2l0aChb
V0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKTsKICAgICAgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0
cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIs
IHNlcnZlci5wb3J0KCldXV1dOwotICAgICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5h
dmlnYXRpb25dOworICAgICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5h
dmlnYXRpb25dOwogICAgIH0KICAgICB7CiAgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2Vy
dmVyOjpQcm90b2NvbDo6SFRUUFMsIFtdKFNTTCAqc3NsKSB7Ci0gICAgICAgICAgICBUQ1BTZXJ2
ZXI6OnJlc3BvbmRXaXRoT0soc3NsKTsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzc2wpOwog
ICAgICAgICB9LCB0bHMxXzEpOwogICAgICAgICBhdXRvIHdlYlZpZXcgPSBtYWtlV2ViVmlld1dp
dGgoW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3JlXSk7CiAgICAgICAg
IFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJM
IFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4w
LjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKLSAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JE
aWRGaW5pc2hOYXZpZ2F0aW9uXTsKKyAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJv
dmlzaW9uYWxOYXZpZ2F0aW9uXTsKICAgICB9CiAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gcmVtb3ZlT2JqZWN0Rm9yS2V5OmRlZmF1bHRzS2V5XTsKIH0KIAorLy8g
RklYTUU6IFRoaXMgdGVzdCBzaG91bGQgcmVtYWluIGRpc2FibGVkIHVudGlsIHJkYXI6Ly9wcm9i
bGVtLzU2NTIyNjAxIGlzIGZpeGVkLgorVEVTVChUTFNWZXJzaW9uLCBESVNBQkxFRF9OYXZpZ2F0
aW9uRGVsZWdhdGVTUEkpCit7CisgICAgeworICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbVExTTmF2aWdhdGlvbkRlbGVnYXRlIG5ld10pOworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVy
KFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXShTU0wgKnNzbCkgeworICAgICAgICAgICAg
Ly8gRklYTUU6IFRoaXMgaXMgb25seSBpZiB3ZSBoYXZlIHRoZSBuZXcgU1BJLgorICAgICAgICAg
ICAgRVhQRUNUX0ZBTFNFKHNzbCk7CisgICAgICAgIH0sIHRsczFfMSk7CisgICAgICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKTsKKyAgICAgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgW3dlYlZpZXcgbG9h
ZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNl
cnZlci5wb3J0KCldXV1dOworICAgICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNp
b25hbE5hdmlnYXRpb25dOworICAgICAgICBFWFBFQ1RfVFJVRShbZGVsZWdhdGUgcmVjZWl2ZWRT
aG91bGRBbGxvd0xlZ2FjeVRMU10pOworICAgIH0KKyAgICB7CisgICAgICAgIGF1dG8gZGVsZWdh
dGUgPSBhZG9wdE5TKFtUTFNOYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgICAgIGRlbGVn
YXRlLmdldCgpLnNob3VsZEFsbG93TGVnYWN5VExTID0gWUVTOworICAgICAgICBUQ1BTZXJ2ZXIg
c2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRo
T0ssIHRsczFfMSk7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1dLV2ViVmlldyBu
ZXddKTsKKyAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVnYXRlOmRlbGVnYXRlLmdl
dCgpXTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0
V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpA
Imh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOworICAgICAgICBbZGVs
ZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgICAgICBFWFBFQ1RfVFJVRShb
ZGVsZWdhdGUgcmVjZWl2ZWRTaG91bGRBbGxvd0xlZ2FjeVRMU10pOworICAgIH0KK30KKworLy8g
RklYTUU6IEFkZCBzb21lIHRlc3RzIGZvciBXS1dlYlZpZXcuaGFzT25seVNlY3VyZUNvbnRlbnQK
KwogfQogCiAjZW5kaWYgLy8gSEFWRShTU0wpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>